diff --git a/.gitignore b/.gitignore index 5f467d484..7e09c266f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,20 @@ +venv/ +*.swp *.py[cod] *~ +.coverage +.coveralls.yml +nosetests.xml +.tox + dist/ build/ python_chess.egg-info/ -nosetests.xml +docs/_build/ + +data/gaviota/*.gtb.cp4 +data/syzygy/*.rtbw +data/syzygy/*.rtbz + +pythonhosted.zip +release-v*.txt diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..f36fc21a8 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,35 @@ +language: python +sudo: false +python: + - "2.6" + - "2.7" + - "3.3" + - "3.4" + - "3.5" +addons: + apt: + packages: + - liblzma-dev +cache: + directories: + - data/gaviota +before_install: + - # Stockfish + - wget https://stockfish.s3.amazonaws.com/stockfish-6-linux.zip + - unzip stockfish-6-linux.zip + - mkdir -p bin + - cp stockfish-6-linux/Linux/stockfish_6_x64 bin/stockfish + - export PATH="`pwd`/bin:${PATH}" + - which stockfish || (echo $PATH && false) + - # Gaviota libgtb + - git clone https://github.com/michiguel/Gaviota-Tablebases.git --depth 1 + - cd Gaviota-Tablebases + - make + - export LD_LIBRARY_PATH="`pwd`:${LD_LIBRARY_PATH}" + - cd .. + - # Gaviota tablebases + - cd data/gaviota + - wget --no-check-certificate --no-clobber --input-file TEST-SOURCE.txt + - cd ../.. +install: pip install tox-travis +script: tox diff --git a/CHANGELOG.rst b/CHANGELOG.rst new file mode 100644 index 000000000..795cd7a91 --- /dev/null +++ b/CHANGELOG.rst @@ -0,0 +1,665 @@ +Changelog for python-chess +========================== + +This project is pretty young and maturing only slowly. At the current stage it +is more important to get things right, than to be consistent with previous +versions. Use this changelog to see what changed in a new release, because this +might include API breaking changes. + +New in v0.13.2 +-------------- + +Changes: + +* `chess.syzygy.open_tablebases()` now raises if the given directory + does not exist. + +* Allow visitors to handle invalid `FEN` tags in PGNs. + +* Gaviota tablebase probing fails faster for piece counts > 5. + +Minor new features: + +* Added `chess.pgn.Game.from_board()`. + +New in v0.13.1 +-------------- + +Changes: + +* Missing *SetUp* tags in PGNs are ignored. + +* Incompatible comparisons on `chess.Piece`, `chess.Move`, `chess.Board` + and `chess.SquareSet` now return *NotImplemented* instead of *False*. + +Minor new features: + +* Factored out basic board operations to `chess.BaseBoard`. This is inherited + by `chess.Board` and extended with the usual move generation features. + +* Added optional *claim_draw* argument to `chess.Base.is_game_over()`. + +* Added `chess.Board.result(claim_draw=False)`. + +* Allow `chess.Board.set_piece_at(square, None)`. + +* Added `chess.SquareSet.from_square(square)`. + +New in v0.13.0 +-------------- + +* `chess.pgn.Game.export()` and `chess.pgn.GameNode.export()` have been + removed and replaced with a new visitor concept. + +* `chess.pgn.read_game()` no longer takes an `error_handler` argument. Errors + are now logged. Use the new visitor concept to change this behaviour. + +New in v0.12.5 +-------------- + +Bugfixes: + +* Context manager support for pure Python Gaviota probing code. Various + documentation fixes for Gaviota probing. Thanks to Jürgen Précour for + reporting. + +* PGN variation start comments for variations on the very first move were + assigned to the game. Thanks to Norbert Räcke for reporting. + +New in v0.12.4 +-------------- + +Bugfixes: + +* Another en passant related Bugfix for pure Python Gaviota tablebase probing. + +New features: + +* Added `pgn.GameNode.is_end()`. + +Changes: + +* Big speedup for `pgn` module. Boards are cached less agressively. Board + move stacks are copied faster. + +* Added tox.ini to specify test suite and flake8 options. + +New in v0.12.3 +-------------- + +Bugfixes: + +* Some invalid castling rights were silently ignored by `Board.set_fen()`. Now + it is ensured information is stored for retrieval using `Board.status()`. + +New in v0.12.2 +-------------- + +Bugfixes: + +* Some Gaviota probe results were incorrect for positions where black could + capture en passant. + +New in v0.12.1 +-------------- + +Changes: + +* Robust handling of invalid castling rights. You can also use the new + method `Board.clean_castling_rights()` to get the subset of strictly valid + castling rights. + +New in v0.12.0 +-------------- + +New features: + +* Python 2.6 support. Patch by vdbergh. + +* Pure Python Gaviota tablebase probing. Thanks to Jean-Noël Avila. + +New in v0.11.1 +-------------- + +Bugfixes: + +* `syzygy.Tablebases.probe_dtz()` has was giving wrong results for some + positions with possible en passant capturing. This was found and fixed + upstream: https://github.com/official-stockfish/Stockfish/issues/394. + +* Ignore extra spaces in UCI `info` lines, as for example sent by the + Hakkapeliitta engine. Thanks to Jürgen Précour for reporting. + +New in v0.11.0 +-------------- + +Changes: + +* **Chess960** support and the **representation of castling moves** has been + changed. + + The constructor of board has a new `chess960` argument, defaulting to + `False`: `Board(fen=STARTING_FEN, chess960=False)`. That property is + available as `Board.chess960`. + + In Chess960 mode the behaviour is as in the previous release. Castling moves + are represented as a king move to the corresponding rook square. + + In the default standard chess mode castling moves are represented with + the standard UCI notation, e.g. `e1g1` for king-side castling. + + `Board.uci(move, chess960=None)` creates UCI representations for moves. + Unlike `Move.uci()` it can convert them in the context of the current + position. + + `Board.has_chess960_castling_rights()` has been added to test for castling + rights that are impossible in standard chess. + + The modules `chess.polyglot`, `chess.pgn` and `chess.uci` will transparently + handle both modes. + +* In a previous release `Board.fen()` has been changed to only display an + en passant square if a legal en passant move is indeed possible. This has + now also been adapted for `Board.shredder_fen()` and `Board.epd()`. + +New features: + +* Get individual FEN components: `Board.board_fen()`, `Board.castling_xfen()`, + `Board.castling_shredder_fen()`. + +* Use `Board.has_legal_en_passant()` to test if a position has a legal + en passant move. + +* Make `repr(board.legal_moves)` human readable. + +New in v0.10.1 +-------------- + +Bugfixes: + +* Fix use-after-free in Gaviota tablebase initialization. + +New in v0.10.0 +-------------- + +New dependencies: + +* If you are using Python < 3.2 you have to install `futures` in order to + use the `chess.uci` module. + +Changes: + +* There are big changes in the UCI module. Most notably in async mode multiple + commands can be executed at the same time (e.g. `go infinite` and then + `stop` or `go ponder` and then `ponderhit`). + + `go infinite` and `go ponder` will now wait for a result, i.e. you may have + to call `stop` or `ponderhit` from a different thread or run the commands + asynchronously. + + `stop` and `ponderhit` no longer have a result. + +* The values of the color constants `chess.WHITE` and `chess.BLACK` have been + changed. Previously `WHITE` was `0`, `BLACK` was `1`. Now `WHITE` is `True`, + `BLACK` is `False`. The recommended way to invert `color` is using + `not color`. + +* The pseudo piece type `chess.NONE` has been removed in favor of just using + `None`. + +* Changed the `Board(fen)` constructor. If the optional `fen` argument is not + given behavior did not change. However if `None` is passed explicitly an + empty board is created. Previously the starting position would have been + set up. + +* `Board.fen()` will now only show completely legal en passant squares. + +* `Board.set_piece_at()` and `Board.remove_piece_at()` will now clear the + move stack, because the old moves may not be valid in the changed position. + +* `Board.parse_uci()` and `Board.push_uci()` will now accept null moves. + +* Changed shebangs from `#!/usr/bin/python` to `#!/usr/bin/env python` for + better virtualenv support. + +* Removed unused game data files from repository. + +Bugfixes: + +* PGN: Prefer the game result from the game termination marker over `*` in the + header. These should be identical in standard compliant PGNs. Thanks to + Skyler Dawson for reporting this. + +* Polyglot: `minimum_weight` for `find()`, `find_all()` and `choice()` was + not respected. + +* Polyglot: Negative indexing of opening books was raising `IndexError`. + +* Various documentation fixes and improvements. + +New features: + +* Experimental probing of Gaviota tablebases via libgtb. + +* New methods to construct boards: + + .. code:: python + + >>> chess.Board.empty() + Board('8/8/8/8/8/8/8/8 w - - 0 1') + + >>> board, ops = chess.Board.from_epd("4k3/8/8/8/8/8/8/4K3 b - - fmvn 17; hmvc 13") + >>> board + Board('4k3/8/8/8/8/8/8/4K3 b - - 13 17') + >>> ops + {'fmvn': 17, 'hmvc': 13} + +* Added `Board.copy()` and hooks to let the copy module to the right thing. + +* Added `Board.has_castling_rights(color)`, + `Board.has_kingside_castling_rights(color)` and + `Board.has_queenside_castling_rights(color)`. + +* Added `Board.clear_stack()`. + +* Support common set operations on `chess.SquareSet()`. + +New in v0.9.1 +------------- + +Bugfixes: + +* UCI module could not handle castling ponder moves. Thanks to Marco Belli for + reporting. +* The initial move number in PGNs was missing, if black was to move in the + starting position. Thanks to Jürgen Précour for reporting. +* Detect more impossible en passant squares in `Board.status()`. There already + was a requirement for a pawn on the fifth rank. Now the sixth and seventh + rank must be empty, additionally. We do not do further retrograde analysis, + because these are the only cases affecting move generation. + +New in v0.8.3 +------------- + +Bugfixes: + +* The initial move number in PGNs was missing, if black was to move in the + starting position. Thanks to Jürgen Précour for reporting. +* Detect more impossible en passant squares in `Board.status()`. There already + was a requirement for a pawn on the fifth rank. Now the sixth and seventh + rank must be empty, additionally. We do not do further retrograde analysis, + because these are the only cases affecting move generation. + +New in v0.9.0 +------------- + +**This is a big update with quite a few breaking changes. Carefully review +the changes before upgrading. It's no problem if you can not update right now. +The 0.8.x branch still gets bugfixes.** + +Incompatible changes: + +* Removed castling right constants. Castling rights are now represented as a + bitmask of the rook square. For example: + + .. code:: python + + >>> board = chess.Board() + + >>> # Standard castling rights. + >>> board.castling_rights == chess.BB_A1 | chess.BB_H1 | chess.BB_A8 | chess.BB_H8 + True + + >>> # Check for the presence of a specific castling right. + >>> can_white_castle_queenside = chess.BB_A1 & board.castling_rights + + Castling moves were previously encoded as the corresponding king movement in + UCI, e.g. `e1f1` for white kingside castling. **Now castling moves are + encoded as a move to the corresponding rook square** (`UCI_Chess960`-style), + e.g. `e1a1`. + + You may use the new methods `Board.uci(move, chess960=True)`, + `Board.parse_uci(uci)` and `Board.push_uci(uci)` to handle this + transparently. + + The `uci` module takes care of converting moves when communicating with an + engine that is not in `UCI_Chess960` mode. + +* The `get_entries_for_position(board)` method of polyglot opening book readers + has been changed to `find_all(board, minimum_weight=1)`. By default entries + with weight 0 are excluded. + +* The `Board.pieces` lookup list has been removed. + +* In 0.8.1 the spelling of repetition (was repitition) was fixed. + `can_claim_threefold_repetition()` and `is_fivefold_repetition()` are the + affected method names. Aliases are now removed. + +* `Board.set_epd()` will now interpret `bm`, `am` as a list of moves for the + current position and `pv` as a variation (represented by a list of moves). + Thanks to Jordan Bray for reporting this. + +* Removed `uci.InfoHandler.pre_bestmove()` and + `uci.InfoHandler.post_bestmove()`. + +* `uci.InfoHandler().info["score"]` is now relative to multipv. Use + + .. code:: python + + >>> with info_handler as info: + ... if 1 in info["score"]: + ... cp = info["score"][1].cp + + where you were previously using + + .. code:: python + + >>> with info_handler as info: + ... if "score" in info: + ... cp = info["score"].cp + +* Clear `uci.InfoHandler()` dictionary at the start of new searches + (new `on_go()`), not at the end of searches. + +* Renamed `PseudoLegalMoveGenerator.bitboard` and `LegalMoveGenerator.bitboard` + to `PseudoLegalMoveGenerator.board` and `LegalMoveGenerator.board`, + respectively. + +* Scripts removed. + +* Python 3.2 compability dropped. Use Python 3.3 or higher. Python 2.7 support + is not affected. + +New features: + +* **Introduced Chess960 support.** `Board(fen)` and `Board.set_fen(fen)` now + support X-FENs. Added `Board.shredder_fen()`. + `Board.status(allow_chess960=True)` has an optional argument allowing to + insist on standard chess castling rules. + Added `Board.is_valid(allow_chess960=True)`. + +* **Improved move generation using** `Shatranj-style direct lookup + `_. **Removed rotated bitboards. Perft + speed has been more than doubled.** + +* Added `choice(board)` and `weighted_choice(board)` for polyglot opening book + readers. + +* Added `Board.attacks(square)` to determine attacks *from* a given square. + There already was `Board.attackers(color, square)` returning attacks *to* + a square. + +* Added `Board.is_en_passant(move)`, `Board.is_capture(move)` and + `Board.is_castling(move)`. + +* Added `Board.pin(color, square)` and `Board.is_pinned(color, square)`. + +* There is a new method `Board.pieces(piece_type, color)` to get a set of + squares with the specified pieces. + +* Do expensive Syzygy table initialization on demand. + +* Allow promotions like `e8Q` (usually `e8=Q`) in `Board.parse_san()` and + PGN files. + +* Patch by Richard C. Gerkin: Added `Board.__unicode__()` just like + `Board.__str__()` but with unicode pieces. +* Patch by Richard C. Gerkin: Added `Board.__html__()`. + +New in v0.8.2 +------------- + +Bugfixes: + +* `pgn.Game.setup()` with the standard starting position was failing when the + standard starting position was already set. Thanks to Jordan Bray for + reporting this. + +Optimizations: + +* Remove `bswap()` from Syzygy decompression hot path. Directly read integers + with the correct endianness. + +New in v0.8.1 +------------- + +* Fixed pondering mode in uci module. For example `ponderhit()` was blocking + indefinitely. Thanks to Valeriy Huz for reporting this. + +* Patch by Richard C. Gerkin: Moved searchmoves to the end of the UCI go + command, where it will not cause other command parameters to be ignored. + +* Added missing check or checkmate suffix to castling SANs, e.g. `O-O-O#`. + +* Fixed off-by-one error in polyglot opening book binary search. This would + not have caused problems for real opening books. + +* Fixed Python 3 support for reverse polyglot opening book iteration. + +* Bestmoves may be literally `(none)` in UCI protocol, for example in + checkmate positions. Fix parser and return `None` as the bestmove in this + case. + +* Fixed spelling of repetition (was repitition). + `can_claim_threefold_repetition()` and `is_fivefold_repetition()` are the + affected method names. Aliases are there for now, but will be removed in the + next release. Thanks to Jimmy Patrick for reporting this. + +* Added `SquareSet.__reversed__()`. + +* Use containerized tests on Travis CI, test against Stockfish 6, improved + test coverage amd various minor clean-ups. + +New in v0.8.0 +------------- + +* **Implement Syzygy endgame tablebase probing.** + `https://syzygy-tables.info `_ + is an example project that provides a public API using the new features. + +* The interface for aynchronous UCI command has changed to mimic + `concurrent.futures`. `is_done()` is now just `done()`. Callbacks will + receive the command object as a single argument instead of the result. + The `result` property and `wait()` have been removed in favor of a + synchronously waiting `result()` method. + +* The result of the `stop` and `go` UCI commands are now named tuples (instead + of just normal tuples). + +* Add alias `Board` for `Bitboard`. + +* Fixed race condition during UCI engine startup. Lines received during engine + startup sometimes needed to be processed before the Engine object was fully + initialized. + +New in v0.7.0 +------------- + +* **Implement UCI engine communication.** + +* Patch by Matthew Lai: `Add caching for gameNode.board()`. + +New in v0.6.0 +------------- + +* If there are comments in a game before the first move, these are now assigned + to `Game.comment` instead of `Game.starting_comment`. `Game.starting_comment` + is ignored from now on. `Game.starts_variation()` is no longer true. + The first child node of a game can no longer have a starting comment. + It is possible to have a game with `Game.comment` set, that is otherwise + completely empty. + +* Fix export of games with variations. Previously the moves were exported in + an unusual (i.e. wrong) order. + +* Install `gmpy2` or `gmpy` if you want to use slightly faster binary + operations. + +* Ignore superfluous variation opening brackets in PGN files. + +* Add `GameNode.san()`. + +* Remove `sparse_pop_count()`. Just use `pop_count()`. + +* Remove `next_bit()`. Now use `bit_scan()`. + +New in v0.5.0 +------------- + +* PGN parsing is now more robust: `read_game()` ignores invalid tokens. + Still exceptions are going to be thrown on illegal or ambiguous moves, but + this behaviour can be changed by passing an `error_handler` argument. + + .. code:: python + + >>> # Raises ValueError: + >>> game = chess.pgn.read_game(file_with_illegal_moves) + + .. code:: python + + >>> # Silently ignores errors and continues parsing: + >>> game = chess.pgn.read_game(file_with_illegal_moves, None) + + .. code:: python + + >>> # Logs the error, continues parsing: + >>> game = chess.pgn.read_game(file_with_illegal_moves, logger.exception) + + If there are too many closing brackets this is now ignored. + + Castling moves like 0-0 (with zeros) are now accepted in PGNs. + The `Bitboard.parse_san()` method remains strict as always, though. + + Previously the parser was strictly following the PGN spefification in that + empty lines terminate a game. So a game like + + :: + + [Event "?"] + + { Starting comment block } + + 1. e4 e5 2. Nf3 Nf6 * + + would have ended directly after the starting comment. To avoid this, the + parser will now look ahead until it finds at least one move or a termination + marker like `*`, `1-0`, `1/2-1/2` or `0-1`. + +* Introduce a new function `scan_headers()` to quickly scan a PGN file for + headers without having to parse the full games. + +* Minor testcoverage improvements. + +New in v0.4.2 +------------- + +* Fix bug where `pawn_moves_from()` and consequently `is_legal()` weren't + handling en passant correctly. Thanks to Norbert Naskov for reporting. + +New in v0.4.1 +------------- + +* Fix `is_fivefold_repitition()`: The new fivefold repetition rule requires + the repetitions to occur on *alternating consecutive* moves. + +* Minor testing related improvements: Close PGN files, allow running via + setuptools. + +* Add recently introduced features to README. + +New in v0.4.0 +------------- + +* Introduce `can_claim_draw()`, `can_claim_fifty_moves()` and + `can_claim_threefold_repitition()`. + +* Since the first of July 2014 a game is also over (even without claim by one + of the players) if there were 75 moves without a pawn move or capture or + a fivefold repetition. Let `is_game_over()` respect that. Introduce + `is_seventyfive_moves()` and `is_fivefold_repitition()`. Other means of + ending a game take precedence. + +* Threefold repetition checking requires efficient hashing of positions + to build the table. So performance improvements were needed there. The + default polyglot compatible zobrist hashes are now built incrementally. + +* Fix low level rotation operations `l90()`, `l45()` and `r45()`. There was + no problem in core because correct versions of the functions were inlined. + +* Fix equality and inequality operators for `Bitboard`, `Move` and `Piece`. + Also make them robust against comparisons with incompatible types. + +* Provide equality and inequality operators for `SquareSet` and + `polyglot.Entry`. + +* Fix return values of incremental arithmetical operations for `SquareSet`. + +* Make `polyglot.Entry` a `collections.namedtuple`. + +* Determine and improve test coverage. + +* Minor coding style fixes. + +New in v0.3.1 +------------- + +* `Bitboard.status()` now correctly detects `STATUS_INVALID_EP_SQUARE`, + instead of errors or false reports. + +* Polyglot opening book reader now correctly handles knight underpromotions. + +* Minor coding style fixes, including removal of unused imports. + +New in v0.3.0 +------------- + +* Rename property `half_moves` of `Bitboard` to `halfmove_clock`. + +* Rename property `ply` of `Bitboard` to `fullmove_number`. + +* Let PGN parser handle symbols like `!`, `?`, `!?` and so on by converting + them to NAGs. + +* Add a human readable string representation for Bitboards. + + .. code:: python + + >>> print(chess.Bitboard()) + r n b q k b n r + p p p p p p p p + . . . . . . . . + . . . . . . . . + . . . . . . . . + . . . . . . . . + P P P P P P P P + R N B Q K B N R + +* Various documentation improvements. + +New in v0.2.0 +------------- + +* **Implement PGN parsing and writing.** +* Hugely improve test coverage and use Travis CI for continuous integration and + testing. +* Create an API documentation. +* Improve Polyglot opening-book handling. + +New in v0.1.0 +------------- + +Apply the lessons learned from the previous releases, redesign the API and +implement it in pure Python. + +New in v0.0.4 +------------- + +Implement the basics in C++ and provide bindings for Python. Obviously +performance was a lot better - but at the expense of having to compile +code for the target platform. + +Pre v0.0.4 +---------- + +First experiments with a way too slow pure Python API, creating way too many +objects for basic operations. diff --git a/MANIFEST.in b/MANIFEST.in index 3d0f5e70b..b7e69a3d6 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,3 @@ include LICENSE include README.rst -graft libchess +include CHANGELOG.rst diff --git a/README.rst b/README.rst index 1329590b7..11dcc9621 100644 --- a/README.rst +++ b/README.rst @@ -1,100 +1,430 @@ -python-chess: a chess library -============================= +python-chess: a pure Python chess library +========================================= + +.. image:: https://travis-ci.org/niklasf/python-chess.svg?branch=master + :target: https://travis-ci.org/niklasf/python-chess + +.. image:: https://coveralls.io/repos/niklasf/python-chess/badge.png + :target: https://coveralls.io/r/niklasf/python-chess + +.. image:: https://badge.fury.io/py/python-chess.svg + :target: https://pypi.python.org/pypi/python-chess + +.. image:: https://readthedocs.org/projects/python-chess/badge/?version=latest + :target: https://python-chess.readthedocs.org/en/latest/ Introduction ------------ -This is the scholars mate in python-chess: +python-chess is a pure Python chess library with move generation and validation +and handling of common formats. This is the scholars mate in python-chess: -:: +.. code:: python + + >>> import chess + + >>> board = chess.Board() + + >>> board.push_san("e4") + Move.from_uci('e2e4') + >>> board.push_san("e5") + Move.from_uci('e7e5') + >>> board.push_san("Qh5") + Move.from_uci('d1h5') + >>> board.push_san("Nc6") + Move.from_uci('b8c6') + >>> board.push_san("Bc4") + Move.from_uci('f1c4') + >>> board.push_san("Nf6") + Move.from_uci('g8f6') + >>> board.push_san("Qxf7") + Move.from_uci('h5f7') + + >>> board.is_checkmate() + True + +Documentation +------------- + +https://python-chess.readthedocs.org/en/latest/ - pos = chess.Position() - pos.make_move_from_san("e4") - pos.make_move_from_san("e5") - pos.make_move_from_san("Qh5") - pos.make_move_from_san("Nc6") - pos.make_move_from_san("Bc4") - pos.make_move_from_san("Nf6") - pos.make_move_from_san("Qxf7") - assert pos.is_checkmate() + +* `Core `_ +* `PGN parsing and writing `_ +* `Polyglot opening book reading `_ +* `Gaviota endgame tablebase probing `_ +* `Syzygy endgame tablebase probing `_ +* `UCI engine communication `_ +* `Changelog `_ Features -------- +* Supports Python 2.6+ and Python 3.3+. + + .. code:: python + + >>> # Python 2 compability for the following examples. + >>> from __future__ import print_function + +* Supports standard chess and Chess960. + + .. code:: python + + >>> board = chess.Board(chess960=True) + * Legal move generator and move validation. This includes all castling - rules and en-passant captures. + rules and en passant captures. - :: + .. code:: python - assert not chess.Move.from_uci("a8a1") in pos.get_legal_moves() + >>> board = chess.Board() + >>> board.legal_moves # doctest: +ELLIPSIS + + >>> chess.Move.from_uci("a8a1") in board.legal_moves + False -* Detects checkmates, stalemates and draws by insufficient material. - Has a half-move clock. +* Make and unmake moves. + + .. code:: python + + >>> Nf3 = chess.Move.from_uci("g1f3") + >>> board.push(Nf3) # Make the move - :: + >>> board.pop() # Unmake the last move + Move.from_uci('g1f3') - assert not pos.is_stalemate() - assert not pos.is_insufficient_material() - assert pos.is_game_over() +* Show a simple ASCII board. -* Detects checks and can enumerate attackers and defenders of a square. + .. code:: python - :: + >>> board = chess.Board("r1bqkb1r/pppp1Qpp/2n2n2/4p3/2B1P3/8/PPPP1PPP/RNB1K1NR b KQkq - 0 4") + >>> print(board) + r . b q k b . r + p p p p . Q p p + . . n . . n . . + . . . . p . . . + . . B . P . . . + . . . . . . . . + P P P P . P P P + R N B . K . N R - assert pos.is_check() - assert chess.Square("f7") in pos.get_attackers("w", chess.Square("e8")) +* Detects checkmates, stalemates and draws by insufficient material. + + .. code:: python + + >>> board.is_stalemate() + False + >>> board.is_insufficient_material() + False + >>> board.is_game_over() + True + >>> board.halfmove_clock + 0 + +* Detects repetitions. Has a half move clock. + + .. code:: python + + >>> board.can_claim_threefold_repetition() + False + >>> board.halfmove_clock + 0 + >>> board.can_claim_fifty_moves() + False + >>> board.can_claim_draw() + False + + With the new rules from July 2014 a game ends drawn (even without a claim) + once a fivefold repetition occurs or if there are 75 moves without a pawn + push or capture. Other ways of ending a game take precedence. + + .. code:: python + + >>> board.is_fivefold_repetition() + False + >>> board.is_seventyfive_moves() + False + +* Detects checks and attacks. + + .. code:: python + + >>> board.is_check() + True + >>> board.is_attacked_by(chess.WHITE, chess.E8) + True + + >>> attackers = board.attackers(chess.WHITE, chess.F3) + >>> attackers + SquareSet(0b100000001000000) + >>> chess.G2 in attackers + True + >>> print(attackers) + . . . . . . . . + . . . . . . . . + . . . . . . . . + . . . . . . . . + . . . . . . . . + . . . . . . . . + . . . . . . 1 . + . . . . . . 1 . + +* Detects absolute pins and their directions. + + .. code:: python + + >>> board.is_pinned(chess.BLACK, chess.E8) + True + >>> pin = board.pin(chess.BLACK, chess.E8) + >>> pin + SquareSet(0b1000000100000010000001000000000000000000000000000000000000000) + >>> print(pin) + . . . . 1 . . . + . . . . . 1 . . + . . . . . . 1 . + . . . . . . . 1 + . . . . . . . . + . . . . . . . . + . . . . . . . . + . . . . . . . . * Parses and creates SAN representation of moves. - :: + .. code:: python + + >>> board = chess.Board() + >>> board.san(chess.Move(chess.E2, chess.E4)) + 'e4' + >>> board.parse_san('Nf3') + Move.from_uci('g1f3') + >>> board.variation_san([chess.Move.from_uci(m) for m in ["e2e4", "e7e5", "g1f3"]]) + '1. e4 e5 2. Nf3' + +* Parses and creates FENs, extended FENs and Shredder FENs. + + .. code:: python + + >>> board.fen() + 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1' + >>> board.shredder_fen() + 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w HAha - 0 1' + >>> board = chess.Board("8/8/8/2k5/4K3/8/8/8 w - - 4 45") + >>> board.piece_at(chess.C5) + Piece.from_symbol('k') - pos = chess.Position() - assert "e4" == pos.make_move(chess.Move("e2e4")).san +* Parses and creates EPDs. -* Parses and creates FENs. + .. code:: python - :: + >>> board = chess.Board() + >>> board.epd(bm=board.parse_uci("d2d4")) + 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - bm d4;' - assert pos.fen == "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1" - pos = chess.Position("8/8/8/2k5/4K3/8/8/8 w - - 4 45") - assert pos["c5"] == chess.Piece("k") + >>> ops = board.set_epd("1k1r4/pp1b1R2/3q2pp/4p3/2B5/4Q3/PPP2B2/2K5 b - - bm Qd1+; id \"BK.01\";") + >>> ops == {'bm': [chess.Move.from_uci('d6d1')], 'id': 'BK.01'} + True * Read Polyglot opening books. + `Docs `__. + + .. code:: python + + >>> import chess.polyglot - :: + >>> book = chess.polyglot.open_reader("data/polyglot/performance.bin") + + >>> board = chess.Board() + >>> main_entry = book.find(board) + >>> main_entry.move() + Move.from_uci('e2e4') + >>> main_entry.weight + 1 + >>> main_entry.learn + 0 - book = chess.PolyglotOpeningBook("data/opening-books/performance.bin") - pos = chess.Position() - for entry in book.get_entries_for_position(pos): - assert chess.Move.from_uci("e2e4") == entry.move - break + >>> book.close() -Peformance +* Read and write PGNs. Supports headers, comments, NAGs and a tree of + variations. + `Docs `__. + + .. code:: python + + >>> import chess.pgn + + >>> pgn = open("data/pgn/molinari-bordais-1979.pgn") + >>> first_game = chess.pgn.read_game(pgn) + >>> pgn.close() + + >>> first_game.headers["White"] + 'Molinari' + >>> first_game.headers["Black"] + 'Bordais' + + >>> # Iterate through the mainline of this embarrasingly short game. + >>> node = first_game + >>> while not node.is_end(): + ... next_node = node.variation(0) + ... print(node.board().san(next_node.move)) + ... node = next_node + e4 + c5 + c4 + Nc6 + Ne2 + Nf6 + Nbc3 + Nb4 + g3 + Nd3# + + >>> # Use a visitor to do the same task. + >>> class PrintSanVisitor(chess.pgn.BaseVisitor): + ... def visit_move(self, board, move): + ... print(board.san(move)) + ... + >>> first_game.accept(PrintSanVisitor()) + e4 + c5 + c4 + Nc6 + Ne2 + Nf6 + Nbc3 + Nb4 + g3 + Nd3# + + >>> first_game.headers["Result"] + '0-1' + +* Probe Gaviota endgame tablebases (DTM, WDL). + `Docs `__. + + .. code:: python + + >>> import chess.gaviota + + >>> tablebases = chess.gaviota.open_tablebases("data/gaviota") + + >>> # White to move mates in 31 half moves in this KRvK endgame. + >>> board = chess.Board("8/8/8/8/4k3/8/6R1/7K w - - 0 1") + >>> tablebases.probe_dtm(board) + 31 + + >>> tablebases.close() + +* Probe Syzygy endgame tablebases (DTZ, WDL). + `Docs `__. + + .. code:: python + + >>> import chess.syzygy + + >>> tablebases = chess.syzygy.open_tablebases("data/syzygy") + + >>> # Black to move is losing in 53 half moves (distance to zero) in this + >>> # KNBvK endgame. + >>> board = chess.Board("8/2K5/4B3/3N4/8/8/4k3/8 b - - 0 1") + >>> tablebases.probe_dtz(board) + -53 + + >>> tablebases.close() + +* Communicate with an UCI engine. + `Docs `__. + + .. code:: python + + >>> import chess.uci + + >>> engine = chess.uci.popen_engine("stockfish") + >>> engine.uci() + >>> engine.author + 'Tord Romstad, Marco Costalba and Joona Kiiski' + + >>> # Synchronous mode. + >>> board = chess.Board("1k1r4/pp1b1R2/3q2pp/4p3/2B5/4Q3/PPP2B2/2K5 b - - 0 1") + >>> engine.position(board) + >>> engine.go(movetime=2000) # Gets tuple of bestmove and ponder move. + BestMove(bestmove=Move.from_uci('d6d1'), ponder=Move.from_uci('c1d1')) + + >>> # Asynchronous mode. + >>> def callback(command): + ... bestmove, ponder = command.result() + ... assert bestmove == chess.Move.from_uci('d6d1') + ... + >>> command = engine.go(movetime=2000, async_callback=callback) + >>> command.done() + False + >>> command.result() + BestMove(bestmove=Move.from_uci('d6d1'), ponder=Move.from_uci('c1d1')) + >>> command.done() + True + + >>> # Quit. + >>> engine.quit() + 0 + +Bug bounty ---------- -python-chess is not intended to be used by chess engines where performance is -critical. The goal is rather to create a simple and highlevel library. -However parts like move generation are in C++ (see the libchess directory) to -improve the performance over pure Python code. +There is a **100$ bug bounty** for the first report of a critical issue in the +core module. (Most likely I'll renew the bounty.) +The bug must be reproducible in the latest release, not yet reported, +and not yet fixed in the master branch. I consider critical: -Building --------- -libboost-regex-dev and libboost-python-dev are required. +* Move generation +* Move validation +* Move making +* Parser errors that leave objects in an inconsistent state -* With easy_install: +Performance +----------- - :: +Correctness > clean interface > performance. - sudo easy_install python-chess +You can install the `gmpy2` or `gmpy` (https://pypi.python.org/pypi/gmpy2) +modules in order to get a slight performance boost on basic operations like +bitscans and population counts. -* From current source code: +python-chess only imports very basic general (non-chess-related) +operations from native libraries. All logic is pure Python. There will always +be pure Python fallbacks. - :: +Installing +---------- - python setup.py build - sudo python setup.py install +:: + + pip install python-chess + + +Featured projects +----------------- + +If you like, let me know if you are creating something intresting with +python-chess, for example: + +* a stand alone chess computer based on DGT board - http://www.picochess.org/ +* a website to probe Syzygy endgame tablebases - https://syzygy-tables.info/ +* a cross platform chess GUI - https://asdfjkl.github.io/jerry/ License ------- + python-chess is licensed under the GPL3. See the LICENSE file for the full copyright and license information. + +Thanks to Sam Tannous for publishing his approach to `avoid rotated bitboards +with direct lookup (pdf) `_ alongside +his GPL2+ engine `Shatranj `_. Some of +the bitboard move generation parts are ported from there. + +Thanks to Ronald de Man for his Syzygy endgame tablebases +(https://github.com/syzygy1/tb). The probing code in +python-chess is very directly ported from his C probing code. + +Thanks to Miguel A. Ballicora for his Gaviota tablebases +(https://github.com/michiguel/Gaviota-Tablebases). diff --git a/benchmark.py b/benchmark.py deleted file mode 100755 index 5970048cb..000000000 --- a/benchmark.py +++ /dev/null @@ -1,122 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# -# This file is part of the python-chess library. -# Copyright (C) 2013 Niklas Fiekas -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import chess -import timeit - -def play_immortal_game(): - pos = chess.Position() - - # 1.e4 e5 - pos.make_move_from_san("e4") - pos.make_move_from_san("e5") - - # 2.f4 exf4 - pos.make_move_from_san("f4") - pos.make_move_from_san("exf4") - - # 3.Bc4 Qh4+ - pos.make_move_from_san("Bc4") - pos.make_move_from_san("Qh4+") - - # 4.Kf1 b5?! - pos.make_move_from_san("Kf1") - pos.make_move_from_san("b5") - - # 5.Bxb5 Nf6 - pos.make_move_from_san("Bxb5") - pos.make_move_from_san("Nf6") - - # 6.Nf3 Qh6 - pos.make_move_from_san("Nf3") - pos.make_move_from_san("Qh6") - - # 7.d3 Nh5 - pos.make_move_from_san("d3") - pos.make_move_from_san("Nh5") - - # 8.Nh4 Qg5 - pos.make_move_from_san("Nh4") - pos.make_move_from_san("Qg5") - - # 9.Nf5 c6 - pos.make_move_from_san("Nf5") - pos.make_move_from_san("c6") - - # 10.g4 Nf6 - pos.make_move_from_san("g4") - pos.make_move_from_san("Nf6") - - # 11.Rg1! cxb5? - pos.make_move_from_san("Rg1") - pos.make_move_from_san("cxb5") - - # 12.h4! Qg6 - pos.make_move_from_san("h4") - pos.make_move_from_san("Qg6") - - # 13.h5 Qg5 - pos.make_move_from_san("h5") - pos.make_move_from_san("Qg5") - - # 14.Qf3 Ng8 - pos.make_move_from_san("Qf3") - pos.make_move_from_san("Ng8") - - # 15.Bxf4 Qf6 - pos.make_move_from_san("Bxf4") - pos.make_move_from_san("Qf6") - - # 16.Nc3 Bc5 - pos.make_move_from_san("Nc3") - pos.make_move_from_san("Bc5") - - # 17.Nd5 Qxb2 - pos.make_move_from_san("Nd5") - pos.make_move_from_san("Qxb2") - - # 18.Bd6! Bxg1? - pos.make_move_from_san("Bd6") - pos.make_move_from_san("Bxg1") - - # 19.e5! Qxa1+ - pos.make_move_from_san("e5") - pos.make_move_from_san("Qxa1+") - - # 20.Ke2 Na6 - pos.make_move_from_san("Ke2") - pos.make_move_from_san("Na6") - - # 21.Nxg7+ Kd8 - pos.make_move_from_san("Nxg7+") - pos.make_move_from_san("Kd8") - - # 22.Qf6+! Nxf6 - pos.make_move_from_san("Qf6+") - pos.make_move_from_san("Nxf6") - - # 23.Be7# 1-0 - pos.make_move_from_san("Be7#") - assert pos.is_checkmate() - -if __name__ == "__main__": - print timeit.timeit( - stmt="play_immortal_game()", - setup="from __main__ import play_immortal_game", - number=100) diff --git a/chess/__init__.py b/chess/__init__.py index bb82bb400..669eff929 100644 --- a/chess/__init__.py +++ b/chess/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # This file is part of the python-chess library. -# Copyright (C) 2012 Niklas Fiekas +# Copyright (C) 2012-2015 Niklas Fiekas # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -10,38 +10,4100 @@ # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . + +""" +A pure Python chess library with move generation and validation, Polyglot +opening book probing, PGN reading and writing, Gaviota tablebase probing, +Syzygy tablebase probing and UCI engine communication. +""" __author__ = "Niklas Fiekas" -__copyright__ = "Copyright 2013, Niklas Fiekas" -__license__ = "GPL" -__version__ = "0.0.4" -__maintainer__ = "Niklas Fiekas" -__email__ = "niklas.fiekas@tu-clausthal.de" -__status__ = "Development" - -import inspect - -# Import from libchess. -from libchess import START_FEN -from libchess import opposite_color -from libchess import Square -from libchess import Piece -from libchess import Move -from libchess import Position -from libchess import PolyglotOpeningBookEntry - -# Stable. -from chess.game_header_bag import GameHeaderBag - -# Design phase. -from chess.polyglot_opening_book import PolyglotOpeningBook -from chess.game_node import GameNode -from chess.game import Game -from chess.pgn_file import PgnFile - -__all__ = [ name for name, obj in locals().items() if not inspect.ismodule(obj) ] + +__email__ = "niklas.fiekas@backscattering.de" + +__version__ = "0.13.2" + +import copy +import re + +try: + import backport_collections as collections +except ImportError: + import collections + +COLORS = [WHITE, BLACK] = [True, False] + +PIECE_TYPES = [PAWN, KNIGHT, BISHOP, ROOK, QUEEN, KING] = range(1, 7) + +PIECE_SYMBOLS = ["", "p", "n", "b", "r", "q", "k"] + +UNICODE_PIECE_SYMBOLS = { + "R": u"♖", "r": u"♜", + "N": u"♘", "n": u"♞", + "B": u"♗", "b": u"♝", + "Q": u"♕", "q": u"♛", + "K": u"♔", "k": u"♚", + "P": u"♙", "p": u"♟", +} + +FILE_NAMES = ["a", "b", "c", "d", "e", "f", "g", "h"] + +RANK_NAMES = ["1", "2", "3", "4", "5", "6", "7", "8"] + +STARTING_FEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1" +"""The FEN of the standard chess starting position.""" + +STARTING_BOARD_FEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR" +"""The board part of the FEN of the standard chess starting position.""" + +STATUS_VALID = 0 +STATUS_NO_WHITE_KING = 1 +STATUS_NO_BLACK_KING = 2 +STATUS_TOO_MANY_KINGS = 4 +STATUS_TOO_MANY_WHITE_PAWNS = 8 +STATUS_TOO_MANY_BLACK_PAWNS = 16 +STATUS_PAWNS_ON_BACKRANK = 32 +STATUS_TOO_MANY_WHITE_PIECES = 64 +STATUS_TOO_MANY_BLACK_PIECES = 128 +STATUS_BAD_CASTLING_RIGHTS = 256 +STATUS_INVALID_EP_SQUARE = 512 +STATUS_OPPOSITE_CHECK = 1024 + + +SQUARES = [ + A1, B1, C1, D1, E1, F1, G1, H1, + A2, B2, C2, D2, E2, F2, G2, H2, + A3, B3, C3, D3, E3, F3, G3, H3, + A4, B4, C4, D4, E4, F4, G4, H4, + A5, B5, C5, D5, E5, F5, G5, H5, + A6, B6, C6, D6, E6, F6, G6, H6, + A7, B7, C7, D7, E7, F7, G7, H7, + A8, B8, C8, D8, E8, F8, G8, H8] = range(64) + +SQUARES_180 = [ + A8, B8, C8, D8, E8, F8, G8, H8, + A7, B7, C7, D7, E7, F7, G7, H7, + A6, B6, C6, D6, E6, F6, G6, H6, + A5, B5, C5, D5, E5, F5, G5, H5, + A4, B4, C4, D4, E4, F4, G4, H4, + A3, B3, C3, D3, E3, F3, G3, H3, + A2, B2, C2, D2, E2, F2, G2, H2, + A1, B1, C1, D1, E1, F1, G1, H1] + +SQUARE_NAMES = [ + "a1", "b1", "c1", "d1", "e1", "f1", "g1", "h1", + "a2", "b2", "c2", "d2", "e2", "f2", "g2", "h2", + "a3", "b3", "c3", "d3", "e3", "f3", "g3", "h3", + "a4", "b4", "c4", "d4", "e4", "f4", "g4", "h4", + "a5", "b5", "c5", "d5", "e5", "f5", "g5", "h5", + "a6", "b6", "c6", "d6", "e6", "f6", "g6", "h6", + "a7", "b7", "c7", "d7", "e7", "f7", "g7", "h7", + "a8", "b8", "c8", "d8", "e8", "f8", "g8", "h8"] + +def file_index(square): + """Gets the file index of square where ``0`` is the a file.""" + return square & 7 + +def rank_index(square): + """Gets the rank index of the square where ``0`` is the first rank.""" + return square >> 3 + +def square(file_index, rank_index): + """Gets a square number by file and rank index.""" + return rank_index * 8 + file_index + + +BB_VOID = 0b0000000000000000000000000000000000000000000000000000000000000000 + +BB_ALL = 0b1111111111111111111111111111111111111111111111111111111111111111 + +BB_SQUARES = [ + BB_A1, BB_B1, BB_C1, BB_D1, BB_E1, BB_F1, BB_G1, BB_H1, + BB_A2, BB_B2, BB_C2, BB_D2, BB_E2, BB_F2, BB_G2, BB_H2, + BB_A3, BB_B3, BB_C3, BB_D3, BB_E3, BB_F3, BB_G3, BB_H3, + BB_A4, BB_B4, BB_C4, BB_D4, BB_E4, BB_F4, BB_G4, BB_H4, + BB_A5, BB_B5, BB_C5, BB_D5, BB_E5, BB_F5, BB_G5, BB_H5, + BB_A6, BB_B6, BB_C6, BB_D6, BB_E6, BB_F6, BB_G6, BB_H6, + BB_A7, BB_B7, BB_C7, BB_D7, BB_E7, BB_F7, BB_G7, BB_H7, + BB_A8, BB_B8, BB_C8, BB_D8, BB_E8, BB_F8, BB_G8, BB_H8 +] = [1 << i for i in SQUARES] + +BB_LIGHT_SQUARES = BB_DARK_SQUARES = BB_VOID + +for square_index, mask in enumerate(BB_SQUARES): + if (file_index(square_index) + rank_index(square_index)) % 2: + BB_LIGHT_SQUARES |= mask + else: + BB_DARK_SQUARES |= mask + +BB_FILES = [ + BB_FILE_A, + BB_FILE_B, + BB_FILE_C, + BB_FILE_D, + BB_FILE_E, + BB_FILE_F, + BB_FILE_G, + BB_FILE_H +] = [ + BB_A1 | BB_A2 | BB_A3 | BB_A4 | BB_A5 | BB_A6 | BB_A7 | BB_A8, + BB_B1 | BB_B2 | BB_B3 | BB_B4 | BB_B5 | BB_B6 | BB_B7 | BB_B8, + BB_C1 | BB_C2 | BB_C3 | BB_C4 | BB_C5 | BB_C6 | BB_C7 | BB_C8, + BB_D1 | BB_D2 | BB_D3 | BB_D4 | BB_D5 | BB_D6 | BB_D7 | BB_D8, + BB_E1 | BB_E2 | BB_E3 | BB_E4 | BB_E5 | BB_E6 | BB_E7 | BB_E8, + BB_F1 | BB_F2 | BB_F3 | BB_F4 | BB_F5 | BB_F6 | BB_F7 | BB_F8, + BB_G1 | BB_G2 | BB_G3 | BB_G4 | BB_G5 | BB_G6 | BB_G7 | BB_G8, + BB_H1 | BB_H2 | BB_H3 | BB_H4 | BB_H5 | BB_H6 | BB_H7 | BB_H8 +] + +FILE_MASK = {} +FILE_MASK[0] = 0 + +for square_index, mask in enumerate(BB_SQUARES): + FILE_MASK[mask] = BB_FILES[file_index(square_index)] + +BB_RANKS = [ + BB_RANK_1, + BB_RANK_2, + BB_RANK_3, + BB_RANK_4, + BB_RANK_5, + BB_RANK_6, + BB_RANK_7, + BB_RANK_8 +] = [ + BB_A1 | BB_B1 | BB_C1 | BB_D1 | BB_E1 | BB_F1 | BB_G1 | BB_H1, + BB_A2 | BB_B2 | BB_C2 | BB_D2 | BB_E2 | BB_F2 | BB_G2 | BB_H2, + BB_A3 | BB_B3 | BB_C3 | BB_D3 | BB_E3 | BB_F3 | BB_G3 | BB_H3, + BB_A4 | BB_B4 | BB_C4 | BB_D4 | BB_E4 | BB_F4 | BB_G4 | BB_H4, + BB_A5 | BB_B5 | BB_C5 | BB_D5 | BB_E5 | BB_F5 | BB_G5 | BB_H5, + BB_A6 | BB_B6 | BB_C6 | BB_D6 | BB_E6 | BB_F6 | BB_G6 | BB_H6, + BB_A7 | BB_B7 | BB_C7 | BB_D7 | BB_E7 | BB_F7 | BB_G7 | BB_H7, + BB_A8 | BB_B8 | BB_C8 | BB_D8 | BB_E8 | BB_F8 | BB_G8 | BB_H8 +] + +RANK_MASK = {} +RANK_MASK[0] = 0 + +for square_index, mask in enumerate(BB_SQUARES): + RANK_MASK[mask] = BB_RANKS[rank_index(square_index)] + +DIAG_MASK_NW = {} +DIAG_MASK_NW[0] = 0 + +for i in range(8): + DIAG_MASK_NW[1 << i] = 0 + for j in range(i + 1): + DIAG_MASK_NW[1 << i] |= 1 << (i + 7 * j) + for j in range(i + 1): + DIAG_MASK_NW[1 << (i + 7 * j)] = DIAG_MASK_NW[1 << i] + +for i in range(63, 55, -1): + DIAG_MASK_NW[1 << i] = 0 + for j in range(64 - i): + DIAG_MASK_NW[1 << i] |= 1 << (i - 7 * j) + for j in range(64 - i): + DIAG_MASK_NW[1 << (i - 7 * j)] = DIAG_MASK_NW[1 << i] + +DIAG_MASK_NE = {} +DIAG_MASK_NE[0] = 0 + +for i in range(7, -1, -1): + DIAG_MASK_NE[1 << i] = 0 + for j in range(8 - i): + DIAG_MASK_NE[1 << i] |= 1 << (i + 9 * j) + for j in range(8 - i): + DIAG_MASK_NE[1 << (i + 9 * j)] = DIAG_MASK_NE[1 << i] + +for i in range(56, 64): + DIAG_MASK_NE[1 << i] = 0 + for j in range(i - 55): + DIAG_MASK_NE[1 << i] |= 1 << (i - 9 * j) + for j in range(i - 55): + DIAG_MASK_NE[1 << (i - 9 * j)] = DIAG_MASK_NE[1 << i] + +try: + from gmpy2 import popcount as pop_count + from gmpy2 import bit_scan1 as bit_scan +except ImportError: + try: + from gmpy import popcount as pop_count + from gmpy import scan1 as bit_scan + except ImportError: + def pop_count(b): + return bin(b).count("1") + + def bit_scan(b, n=0): + string = bin(b) + l = len(string) + r = string.rfind("1", 0, l - n) + if r == -1: + return -1 + else: + return l - r - 1 + +def shift_down(b): + return b >> 8 + +def shift_2_down(b): + return b >> 16 + +def shift_up(b): + return (b << 8) & BB_ALL + +def shift_2_up(b): + return (b << 16) & BB_ALL + +def shift_right(b): + return (b << 1) & ~BB_FILE_A + +def shift_2_right(b): + return (b << 2) & ~BB_FILE_A & ~BB_FILE_B + +def shift_left(b): + return (b >> 1) & ~BB_FILE_H + +def shift_2_left(b): + return (b >> 2) & ~BB_FILE_G & ~BB_FILE_H + +def shift_up_left(b): + return (b << 7) & ~BB_FILE_H + +def shift_up_right(b): + return (b << 9) & ~BB_FILE_A + +def shift_down_left(b): + return (b >> 9) & ~BB_FILE_H + +def shift_down_right(b): + return (b >> 7) & ~BB_FILE_A + + +BB_KNIGHT_ATTACKS = [] +KNIGHT_MOVES = {} +KNIGHT_MOVES[0] = 0 + +for bb_square in BB_SQUARES: + mask = BB_VOID + mask |= shift_left(shift_2_up(bb_square)) + mask |= shift_right(shift_2_up(bb_square)) + mask |= shift_left(shift_2_down(bb_square)) + mask |= shift_right(shift_2_down(bb_square)) + mask |= shift_2_left(shift_up(bb_square)) + mask |= shift_2_right(shift_up(bb_square)) + mask |= shift_2_left(shift_down(bb_square)) + mask |= shift_2_right(shift_down(bb_square)) + BB_KNIGHT_ATTACKS.append(mask & BB_ALL) + KNIGHT_MOVES[bb_square] = mask & BB_ALL + +BB_KING_ATTACKS = [] +KING_MOVES = {} +KING_MOVES[0] = 0 + +for bb_square in BB_SQUARES: + mask = BB_VOID + mask |= shift_left(bb_square) + mask |= shift_right(bb_square) + mask |= shift_up(bb_square) + mask |= shift_down(bb_square) + mask |= shift_up_left(bb_square) + mask |= shift_up_right(bb_square) + mask |= shift_down_left(bb_square) + mask |= shift_down_right(bb_square) + BB_KING_ATTACKS.append(mask & BB_ALL) + KING_MOVES[bb_square] = mask & BB_ALL + +def _attack_table(square_lists): + attack_table = {} + attack_table[0] = {} + attack_table[0][0] = 0 + + for square_list in square_lists: + list_size = len(square_list) + + for current_position in range(list_size): + current_bb = square_list[current_position] + attack_table[current_bb] = {} + + for occupation in range(1 << list_size): + moves = 0 + + # Loop over squares to the right of the mover. + for newsquare in range(current_position + 1, list_size): + moves |= square_list[newsquare] + if (1 << newsquare) & occupation: + break + + # Loop over squares to the left of the mover. + for newsquare in range(current_position - 1, -1, -1): + moves |= square_list[newsquare] + if (1 << newsquare) & occupation: + break + + # Convert occupation to a bitboard number. + temp_bb = 0 + while occupation: + lowest = occupation & -occupation + temp_bb |= square_list[BB_SQUARES.index(lowest)] + occupation = occupation & (occupation - 1) + + attack_table[current_bb][temp_bb] = moves + + return attack_table + +DIAG_ATTACKS_NE = _attack_table([ + [BB_H1], + [BB_H2, BB_G1], + [BB_H3, BB_G2, BB_F1], + [BB_H4, BB_G3, BB_F2, BB_E1], + [BB_H5, BB_G4, BB_F3, BB_E2, BB_D1], + [BB_H6, BB_G5, BB_F4, BB_E3, BB_D2, BB_C1], + [BB_H7, BB_G6, BB_F5, BB_E4, BB_D3, BB_C2, BB_B1], + [BB_H8, BB_G7, BB_F6, BB_E5, BB_D4, BB_C3, BB_B2, BB_A1], + [BB_G8, BB_F7, BB_E6, BB_D5, BB_C4, BB_B3, BB_A2], + [BB_F8, BB_E7, BB_D6, BB_C5, BB_B4, BB_A3], + [BB_E8, BB_D7, BB_C6, BB_B5, BB_A4], + [BB_D8, BB_C7, BB_B6, BB_A5], + [BB_C8, BB_B7, BB_A6], + [BB_B8, BB_A7], + [BB_A8], +]) + +DIAG_ATTACKS_NW = _attack_table([ + [BB_A1], + [BB_B1, BB_A2], + [BB_C1, BB_B2, BB_A3], + [BB_D1, BB_C2, BB_B3, BB_A4], + [BB_E1, BB_D2, BB_C3, BB_B4, BB_A5], + [BB_F1, BB_E2, BB_D3, BB_C4, BB_B5, BB_A6], + [BB_G1, BB_F2, BB_E3, BB_D4, BB_C5, BB_B6, BB_A7], + [BB_H1, BB_G2, BB_F3, BB_E4, BB_D5, BB_C6, BB_B7, BB_A8], + [BB_H2, BB_G3, BB_F4, BB_E5, BB_D6, BB_C7, BB_B8], + [BB_H3, BB_G4, BB_F5, BB_E6, BB_D7, BB_C8], + [BB_H4, BB_G5, BB_F6, BB_E7, BB_D8], + [BB_H5, BB_G6, BB_F7, BB_E8], + [BB_H6, BB_G7, BB_F8], + [BB_H7, BB_G8], + [BB_H8], +]) + +FILE_ATTACKS = _attack_table([ + [BB_A1, BB_A2, BB_A3, BB_A4, BB_A5, BB_A6, BB_A7, BB_A8], + [BB_B1, BB_B2, BB_B3, BB_B4, BB_B5, BB_B6, BB_B7, BB_B8], + [BB_C1, BB_C2, BB_C3, BB_C4, BB_C5, BB_C6, BB_C7, BB_C8], + [BB_D1, BB_D2, BB_D3, BB_D4, BB_D5, BB_D6, BB_D7, BB_D8], + [BB_E1, BB_E2, BB_E3, BB_E4, BB_E5, BB_E6, BB_E7, BB_E8], + [BB_F1, BB_F2, BB_F3, BB_F4, BB_F5, BB_F6, BB_F7, BB_F8], + [BB_G1, BB_G2, BB_G3, BB_G4, BB_G5, BB_G6, BB_G7, BB_G8], + [BB_H1, BB_H2, BB_H3, BB_H4, BB_H5, BB_H6, BB_H7, BB_H8], +]) + +RANK_ATTACKS = _attack_table([ + [BB_A1, BB_B1, BB_C1, BB_D1, BB_E1, BB_F1, BB_G1, BB_H1], + [BB_A2, BB_B2, BB_C2, BB_D2, BB_E2, BB_F2, BB_G2, BB_H2], + [BB_A3, BB_B3, BB_C3, BB_D3, BB_E3, BB_F3, BB_G3, BB_H3], + [BB_A4, BB_B4, BB_C4, BB_D4, BB_E4, BB_F4, BB_G4, BB_H4], + [BB_A5, BB_B5, BB_C5, BB_D5, BB_E5, BB_F5, BB_G5, BB_H5], + [BB_A6, BB_B6, BB_C6, BB_D6, BB_E6, BB_F6, BB_G6, BB_H6], + [BB_A7, BB_B7, BB_C7, BB_D7, BB_E7, BB_F7, BB_G7, BB_H7], + [BB_A8, BB_B8, BB_C8, BB_D8, BB_E8, BB_F8, BB_G8, BB_H8], +]) + + +SAN_REGEX = re.compile("^([NBKRQ])?([a-h])?([1-8])?x?([a-h][1-8])(=?[nbrqNBRQ])?(\\+|#)?$") + +FEN_CASTLING_REGEX = re.compile("^-|[KQABCDEFGH]{0,2}[kqabcdefgh]{0,2}$") + + +POLYGLOT_RANDOM_ARRAY = [ + 0x9D39247E33776D41, 0x2AF7398005AAA5C7, 0x44DB015024623547, 0x9C15F73E62A76AE2, + 0x75834465489C0C89, 0x3290AC3A203001BF, 0x0FBBAD1F61042279, 0xE83A908FF2FB60CA, + 0x0D7E765D58755C10, 0x1A083822CEAFE02D, 0x9605D5F0E25EC3B0, 0xD021FF5CD13A2ED5, + 0x40BDF15D4A672E32, 0x011355146FD56395, 0x5DB4832046F3D9E5, 0x239F8B2D7FF719CC, + 0x05D1A1AE85B49AA1, 0x679F848F6E8FC971, 0x7449BBFF801FED0B, 0x7D11CDB1C3B7ADF0, + 0x82C7709E781EB7CC, 0xF3218F1C9510786C, 0x331478F3AF51BBE6, 0x4BB38DE5E7219443, + 0xAA649C6EBCFD50FC, 0x8DBD98A352AFD40B, 0x87D2074B81D79217, 0x19F3C751D3E92AE1, + 0xB4AB30F062B19ABF, 0x7B0500AC42047AC4, 0xC9452CA81A09D85D, 0x24AA6C514DA27500, + 0x4C9F34427501B447, 0x14A68FD73C910841, 0xA71B9B83461CBD93, 0x03488B95B0F1850F, + 0x637B2B34FF93C040, 0x09D1BC9A3DD90A94, 0x3575668334A1DD3B, 0x735E2B97A4C45A23, + 0x18727070F1BD400B, 0x1FCBACD259BF02E7, 0xD310A7C2CE9B6555, 0xBF983FE0FE5D8244, + 0x9F74D14F7454A824, 0x51EBDC4AB9BA3035, 0x5C82C505DB9AB0FA, 0xFCF7FE8A3430B241, + 0x3253A729B9BA3DDE, 0x8C74C368081B3075, 0xB9BC6C87167C33E7, 0x7EF48F2B83024E20, + 0x11D505D4C351BD7F, 0x6568FCA92C76A243, 0x4DE0B0F40F32A7B8, 0x96D693460CC37E5D, + 0x42E240CB63689F2F, 0x6D2BDCDAE2919661, 0x42880B0236E4D951, 0x5F0F4A5898171BB6, + 0x39F890F579F92F88, 0x93C5B5F47356388B, 0x63DC359D8D231B78, 0xEC16CA8AEA98AD76, + 0x5355F900C2A82DC7, 0x07FB9F855A997142, 0x5093417AA8A7ED5E, 0x7BCBC38DA25A7F3C, + 0x19FC8A768CF4B6D4, 0x637A7780DECFC0D9, 0x8249A47AEE0E41F7, 0x79AD695501E7D1E8, + 0x14ACBAF4777D5776, 0xF145B6BECCDEA195, 0xDABF2AC8201752FC, 0x24C3C94DF9C8D3F6, + 0xBB6E2924F03912EA, 0x0CE26C0B95C980D9, 0xA49CD132BFBF7CC4, 0xE99D662AF4243939, + 0x27E6AD7891165C3F, 0x8535F040B9744FF1, 0x54B3F4FA5F40D873, 0x72B12C32127FED2B, + 0xEE954D3C7B411F47, 0x9A85AC909A24EAA1, 0x70AC4CD9F04F21F5, 0xF9B89D3E99A075C2, + 0x87B3E2B2B5C907B1, 0xA366E5B8C54F48B8, 0xAE4A9346CC3F7CF2, 0x1920C04D47267BBD, + 0x87BF02C6B49E2AE9, 0x092237AC237F3859, 0xFF07F64EF8ED14D0, 0x8DE8DCA9F03CC54E, + 0x9C1633264DB49C89, 0xB3F22C3D0B0B38ED, 0x390E5FB44D01144B, 0x5BFEA5B4712768E9, + 0x1E1032911FA78984, 0x9A74ACB964E78CB3, 0x4F80F7A035DAFB04, 0x6304D09A0B3738C4, + 0x2171E64683023A08, 0x5B9B63EB9CEFF80C, 0x506AACF489889342, 0x1881AFC9A3A701D6, + 0x6503080440750644, 0xDFD395339CDBF4A7, 0xEF927DBCF00C20F2, 0x7B32F7D1E03680EC, + 0xB9FD7620E7316243, 0x05A7E8A57DB91B77, 0xB5889C6E15630A75, 0x4A750A09CE9573F7, + 0xCF464CEC899A2F8A, 0xF538639CE705B824, 0x3C79A0FF5580EF7F, 0xEDE6C87F8477609D, + 0x799E81F05BC93F31, 0x86536B8CF3428A8C, 0x97D7374C60087B73, 0xA246637CFF328532, + 0x043FCAE60CC0EBA0, 0x920E449535DD359E, 0x70EB093B15B290CC, 0x73A1921916591CBD, + 0x56436C9FE1A1AA8D, 0xEFAC4B70633B8F81, 0xBB215798D45DF7AF, 0x45F20042F24F1768, + 0x930F80F4E8EB7462, 0xFF6712FFCFD75EA1, 0xAE623FD67468AA70, 0xDD2C5BC84BC8D8FC, + 0x7EED120D54CF2DD9, 0x22FE545401165F1C, 0xC91800E98FB99929, 0x808BD68E6AC10365, + 0xDEC468145B7605F6, 0x1BEDE3A3AEF53302, 0x43539603D6C55602, 0xAA969B5C691CCB7A, + 0xA87832D392EFEE56, 0x65942C7B3C7E11AE, 0xDED2D633CAD004F6, 0x21F08570F420E565, + 0xB415938D7DA94E3C, 0x91B859E59ECB6350, 0x10CFF333E0ED804A, 0x28AED140BE0BB7DD, + 0xC5CC1D89724FA456, 0x5648F680F11A2741, 0x2D255069F0B7DAB3, 0x9BC5A38EF729ABD4, + 0xEF2F054308F6A2BC, 0xAF2042F5CC5C2858, 0x480412BAB7F5BE2A, 0xAEF3AF4A563DFE43, + 0x19AFE59AE451497F, 0x52593803DFF1E840, 0xF4F076E65F2CE6F0, 0x11379625747D5AF3, + 0xBCE5D2248682C115, 0x9DA4243DE836994F, 0x066F70B33FE09017, 0x4DC4DE189B671A1C, + 0x51039AB7712457C3, 0xC07A3F80C31FB4B4, 0xB46EE9C5E64A6E7C, 0xB3819A42ABE61C87, + 0x21A007933A522A20, 0x2DF16F761598AA4F, 0x763C4A1371B368FD, 0xF793C46702E086A0, + 0xD7288E012AEB8D31, 0xDE336A2A4BC1C44B, 0x0BF692B38D079F23, 0x2C604A7A177326B3, + 0x4850E73E03EB6064, 0xCFC447F1E53C8E1B, 0xB05CA3F564268D99, 0x9AE182C8BC9474E8, + 0xA4FC4BD4FC5558CA, 0xE755178D58FC4E76, 0x69B97DB1A4C03DFE, 0xF9B5B7C4ACC67C96, + 0xFC6A82D64B8655FB, 0x9C684CB6C4D24417, 0x8EC97D2917456ED0, 0x6703DF9D2924E97E, + 0xC547F57E42A7444E, 0x78E37644E7CAD29E, 0xFE9A44E9362F05FA, 0x08BD35CC38336615, + 0x9315E5EB3A129ACE, 0x94061B871E04DF75, 0xDF1D9F9D784BA010, 0x3BBA57B68871B59D, + 0xD2B7ADEEDED1F73F, 0xF7A255D83BC373F8, 0xD7F4F2448C0CEB81, 0xD95BE88CD210FFA7, + 0x336F52F8FF4728E7, 0xA74049DAC312AC71, 0xA2F61BB6E437FDB5, 0x4F2A5CB07F6A35B3, + 0x87D380BDA5BF7859, 0x16B9F7E06C453A21, 0x7BA2484C8A0FD54E, 0xF3A678CAD9A2E38C, + 0x39B0BF7DDE437BA2, 0xFCAF55C1BF8A4424, 0x18FCF680573FA594, 0x4C0563B89F495AC3, + 0x40E087931A00930D, 0x8CFFA9412EB642C1, 0x68CA39053261169F, 0x7A1EE967D27579E2, + 0x9D1D60E5076F5B6F, 0x3810E399B6F65BA2, 0x32095B6D4AB5F9B1, 0x35CAB62109DD038A, + 0xA90B24499FCFAFB1, 0x77A225A07CC2C6BD, 0x513E5E634C70E331, 0x4361C0CA3F692F12, + 0xD941ACA44B20A45B, 0x528F7C8602C5807B, 0x52AB92BEB9613989, 0x9D1DFA2EFC557F73, + 0x722FF175F572C348, 0x1D1260A51107FE97, 0x7A249A57EC0C9BA2, 0x04208FE9E8F7F2D6, + 0x5A110C6058B920A0, 0x0CD9A497658A5698, 0x56FD23C8F9715A4C, 0x284C847B9D887AAE, + 0x04FEABFBBDB619CB, 0x742E1E651C60BA83, 0x9A9632E65904AD3C, 0x881B82A13B51B9E2, + 0x506E6744CD974924, 0xB0183DB56FFC6A79, 0x0ED9B915C66ED37E, 0x5E11E86D5873D484, + 0xF678647E3519AC6E, 0x1B85D488D0F20CC5, 0xDAB9FE6525D89021, 0x0D151D86ADB73615, + 0xA865A54EDCC0F019, 0x93C42566AEF98FFB, 0x99E7AFEABE000731, 0x48CBFF086DDF285A, + 0x7F9B6AF1EBF78BAF, 0x58627E1A149BBA21, 0x2CD16E2ABD791E33, 0xD363EFF5F0977996, + 0x0CE2A38C344A6EED, 0x1A804AADB9CFA741, 0x907F30421D78C5DE, 0x501F65EDB3034D07, + 0x37624AE5A48FA6E9, 0x957BAF61700CFF4E, 0x3A6C27934E31188A, 0xD49503536ABCA345, + 0x088E049589C432E0, 0xF943AEE7FEBF21B8, 0x6C3B8E3E336139D3, 0x364F6FFA464EE52E, + 0xD60F6DCEDC314222, 0x56963B0DCA418FC0, 0x16F50EDF91E513AF, 0xEF1955914B609F93, + 0x565601C0364E3228, 0xECB53939887E8175, 0xBAC7A9A18531294B, 0xB344C470397BBA52, + 0x65D34954DAF3CEBD, 0xB4B81B3FA97511E2, 0xB422061193D6F6A7, 0x071582401C38434D, + 0x7A13F18BBEDC4FF5, 0xBC4097B116C524D2, 0x59B97885E2F2EA28, 0x99170A5DC3115544, + 0x6F423357E7C6A9F9, 0x325928EE6E6F8794, 0xD0E4366228B03343, 0x565C31F7DE89EA27, + 0x30F5611484119414, 0xD873DB391292ED4F, 0x7BD94E1D8E17DEBC, 0xC7D9F16864A76E94, + 0x947AE053EE56E63C, 0xC8C93882F9475F5F, 0x3A9BF55BA91F81CA, 0xD9A11FBB3D9808E4, + 0x0FD22063EDC29FCA, 0xB3F256D8ACA0B0B9, 0xB03031A8B4516E84, 0x35DD37D5871448AF, + 0xE9F6082B05542E4E, 0xEBFAFA33D7254B59, 0x9255ABB50D532280, 0xB9AB4CE57F2D34F3, + 0x693501D628297551, 0xC62C58F97DD949BF, 0xCD454F8F19C5126A, 0xBBE83F4ECC2BDECB, + 0xDC842B7E2819E230, 0xBA89142E007503B8, 0xA3BC941D0A5061CB, 0xE9F6760E32CD8021, + 0x09C7E552BC76492F, 0x852F54934DA55CC9, 0x8107FCCF064FCF56, 0x098954D51FFF6580, + 0x23B70EDB1955C4BF, 0xC330DE426430F69D, 0x4715ED43E8A45C0A, 0xA8D7E4DAB780A08D, + 0x0572B974F03CE0BB, 0xB57D2E985E1419C7, 0xE8D9ECBE2CF3D73F, 0x2FE4B17170E59750, + 0x11317BA87905E790, 0x7FBF21EC8A1F45EC, 0x1725CABFCB045B00, 0x964E915CD5E2B207, + 0x3E2B8BCBF016D66D, 0xBE7444E39328A0AC, 0xF85B2B4FBCDE44B7, 0x49353FEA39BA63B1, + 0x1DD01AAFCD53486A, 0x1FCA8A92FD719F85, 0xFC7C95D827357AFA, 0x18A6A990C8B35EBD, + 0xCCCB7005C6B9C28D, 0x3BDBB92C43B17F26, 0xAA70B5B4F89695A2, 0xE94C39A54A98307F, + 0xB7A0B174CFF6F36E, 0xD4DBA84729AF48AD, 0x2E18BC1AD9704A68, 0x2DE0966DAF2F8B1C, + 0xB9C11D5B1E43A07E, 0x64972D68DEE33360, 0x94628D38D0C20584, 0xDBC0D2B6AB90A559, + 0xD2733C4335C6A72F, 0x7E75D99D94A70F4D, 0x6CED1983376FA72B, 0x97FCAACBF030BC24, + 0x7B77497B32503B12, 0x8547EDDFB81CCB94, 0x79999CDFF70902CB, 0xCFFE1939438E9B24, + 0x829626E3892D95D7, 0x92FAE24291F2B3F1, 0x63E22C147B9C3403, 0xC678B6D860284A1C, + 0x5873888850659AE7, 0x0981DCD296A8736D, 0x9F65789A6509A440, 0x9FF38FED72E9052F, + 0xE479EE5B9930578C, 0xE7F28ECD2D49EECD, 0x56C074A581EA17FE, 0x5544F7D774B14AEF, + 0x7B3F0195FC6F290F, 0x12153635B2C0CF57, 0x7F5126DBBA5E0CA7, 0x7A76956C3EAFB413, + 0x3D5774A11D31AB39, 0x8A1B083821F40CB4, 0x7B4A38E32537DF62, 0x950113646D1D6E03, + 0x4DA8979A0041E8A9, 0x3BC36E078F7515D7, 0x5D0A12F27AD310D1, 0x7F9D1A2E1EBE1327, + 0xDA3A361B1C5157B1, 0xDCDD7D20903D0C25, 0x36833336D068F707, 0xCE68341F79893389, + 0xAB9090168DD05F34, 0x43954B3252DC25E5, 0xB438C2B67F98E5E9, 0x10DCD78E3851A492, + 0xDBC27AB5447822BF, 0x9B3CDB65F82CA382, 0xB67B7896167B4C84, 0xBFCED1B0048EAC50, + 0xA9119B60369FFEBD, 0x1FFF7AC80904BF45, 0xAC12FB171817EEE7, 0xAF08DA9177DDA93D, + 0x1B0CAB936E65C744, 0xB559EB1D04E5E932, 0xC37B45B3F8D6F2BA, 0xC3A9DC228CAAC9E9, + 0xF3B8B6675A6507FF, 0x9FC477DE4ED681DA, 0x67378D8ECCEF96CB, 0x6DD856D94D259236, + 0xA319CE15B0B4DB31, 0x073973751F12DD5E, 0x8A8E849EB32781A5, 0xE1925C71285279F5, + 0x74C04BF1790C0EFE, 0x4DDA48153C94938A, 0x9D266D6A1CC0542C, 0x7440FB816508C4FE, + 0x13328503DF48229F, 0xD6BF7BAEE43CAC40, 0x4838D65F6EF6748F, 0x1E152328F3318DEA, + 0x8F8419A348F296BF, 0x72C8834A5957B511, 0xD7A023A73260B45C, 0x94EBC8ABCFB56DAE, + 0x9FC10D0F989993E0, 0xDE68A2355B93CAE6, 0xA44CFE79AE538BBE, 0x9D1D84FCCE371425, + 0x51D2B1AB2DDFB636, 0x2FD7E4B9E72CD38C, 0x65CA5B96B7552210, 0xDD69A0D8AB3B546D, + 0x604D51B25FBF70E2, 0x73AA8A564FB7AC9E, 0x1A8C1E992B941148, 0xAAC40A2703D9BEA0, + 0x764DBEAE7FA4F3A6, 0x1E99B96E70A9BE8B, 0x2C5E9DEB57EF4743, 0x3A938FEE32D29981, + 0x26E6DB8FFDF5ADFE, 0x469356C504EC9F9D, 0xC8763C5B08D1908C, 0x3F6C6AF859D80055, + 0x7F7CC39420A3A545, 0x9BFB227EBDF4C5CE, 0x89039D79D6FC5C5C, 0x8FE88B57305E2AB6, + 0xA09E8C8C35AB96DE, 0xFA7E393983325753, 0xD6B6D0ECC617C699, 0xDFEA21EA9E7557E3, + 0xB67C1FA481680AF8, 0xCA1E3785A9E724E5, 0x1CFC8BED0D681639, 0xD18D8549D140CAEA, + 0x4ED0FE7E9DC91335, 0xE4DBF0634473F5D2, 0x1761F93A44D5AEFE, 0x53898E4C3910DA55, + 0x734DE8181F6EC39A, 0x2680B122BAA28D97, 0x298AF231C85BAFAB, 0x7983EED3740847D5, + 0x66C1A2A1A60CD889, 0x9E17E49642A3E4C1, 0xEDB454E7BADC0805, 0x50B704CAB602C329, + 0x4CC317FB9CDDD023, 0x66B4835D9EAFEA22, 0x219B97E26FFC81BD, 0x261E4E4C0A333A9D, + 0x1FE2CCA76517DB90, 0xD7504DFA8816EDBB, 0xB9571FA04DC089C8, 0x1DDC0325259B27DE, + 0xCF3F4688801EB9AA, 0xF4F5D05C10CAB243, 0x38B6525C21A42B0E, 0x36F60E2BA4FA6800, + 0xEB3593803173E0CE, 0x9C4CD6257C5A3603, 0xAF0C317D32ADAA8A, 0x258E5A80C7204C4B, + 0x8B889D624D44885D, 0xF4D14597E660F855, 0xD4347F66EC8941C3, 0xE699ED85B0DFB40D, + 0x2472F6207C2D0484, 0xC2A1E7B5B459AEB5, 0xAB4F6451CC1D45EC, 0x63767572AE3D6174, + 0xA59E0BD101731A28, 0x116D0016CB948F09, 0x2CF9C8CA052F6E9F, 0x0B090A7560A968E3, + 0xABEEDDB2DDE06FF1, 0x58EFC10B06A2068D, 0xC6E57A78FBD986E0, 0x2EAB8CA63CE802D7, + 0x14A195640116F336, 0x7C0828DD624EC390, 0xD74BBE77E6116AC7, 0x804456AF10F5FB53, + 0xEBE9EA2ADF4321C7, 0x03219A39EE587A30, 0x49787FEF17AF9924, 0xA1E9300CD8520548, + 0x5B45E522E4B1B4EF, 0xB49C3B3995091A36, 0xD4490AD526F14431, 0x12A8F216AF9418C2, + 0x001F837CC7350524, 0x1877B51E57A764D5, 0xA2853B80F17F58EE, 0x993E1DE72D36D310, + 0xB3598080CE64A656, 0x252F59CF0D9F04BB, 0xD23C8E176D113600, 0x1BDA0492E7E4586E, + 0x21E0BD5026C619BF, 0x3B097ADAF088F94E, 0x8D14DEDB30BE846E, 0xF95CFFA23AF5F6F4, + 0x3871700761B3F743, 0xCA672B91E9E4FA16, 0x64C8E531BFF53B55, 0x241260ED4AD1E87D, + 0x106C09B972D2E822, 0x7FBA195410E5CA30, 0x7884D9BC6CB569D8, 0x0647DFEDCD894A29, + 0x63573FF03E224774, 0x4FC8E9560F91B123, 0x1DB956E450275779, 0xB8D91274B9E9D4FB, + 0xA2EBEE47E2FBFCE1, 0xD9F1F30CCD97FB09, 0xEFED53D75FD64E6B, 0x2E6D02C36017F67F, + 0xA9AA4D20DB084E9B, 0xB64BE8D8B25396C1, 0x70CB6AF7C2D5BCF0, 0x98F076A4F7A2322E, + 0xBF84470805E69B5F, 0x94C3251F06F90CF3, 0x3E003E616A6591E9, 0xB925A6CD0421AFF3, + 0x61BDD1307C66E300, 0xBF8D5108E27E0D48, 0x240AB57A8B888B20, 0xFC87614BAF287E07, + 0xEF02CDD06FFDB432, 0xA1082C0466DF6C0A, 0x8215E577001332C8, 0xD39BB9C3A48DB6CF, + 0x2738259634305C14, 0x61CF4F94C97DF93D, 0x1B6BACA2AE4E125B, 0x758F450C88572E0B, + 0x959F587D507A8359, 0xB063E962E045F54D, 0x60E8ED72C0DFF5D1, 0x7B64978555326F9F, + 0xFD080D236DA814BA, 0x8C90FD9B083F4558, 0x106F72FE81E2C590, 0x7976033A39F7D952, + 0xA4EC0132764CA04B, 0x733EA705FAE4FA77, 0xB4D8F77BC3E56167, 0x9E21F4F903B33FD9, + 0x9D765E419FB69F6D, 0xD30C088BA61EA5EF, 0x5D94337FBFAF7F5B, 0x1A4E4822EB4D7A59, + 0x6FFE73E81B637FB3, 0xDDF957BC36D8B9CA, 0x64D0E29EEA8838B3, 0x08DD9BDFD96B9F63, + 0x087E79E5A57D1D13, 0xE328E230E3E2B3FB, 0x1C2559E30F0946BE, 0x720BF5F26F4D2EAA, + 0xB0774D261CC609DB, 0x443F64EC5A371195, 0x4112CF68649A260E, 0xD813F2FAB7F5C5CA, + 0x660D3257380841EE, 0x59AC2C7873F910A3, 0xE846963877671A17, 0x93B633ABFA3469F8, + 0xC0C0F5A60EF4CDCF, 0xCAF21ECD4377B28C, 0x57277707199B8175, 0x506C11B9D90E8B1D, + 0xD83CC2687A19255F, 0x4A29C6465A314CD1, 0xED2DF21216235097, 0xB5635C95FF7296E2, + 0x22AF003AB672E811, 0x52E762596BF68235, 0x9AEBA33AC6ECC6B0, 0x944F6DE09134DFB6, + 0x6C47BEC883A7DE39, 0x6AD047C430A12104, 0xA5B1CFDBA0AB4067, 0x7C45D833AFF07862, + 0x5092EF950A16DA0B, 0x9338E69C052B8E7B, 0x455A4B4CFE30E3F5, 0x6B02E63195AD0CF8, + 0x6B17B224BAD6BF27, 0xD1E0CCD25BB9C169, 0xDE0C89A556B9AE70, 0x50065E535A213CF6, + 0x9C1169FA2777B874, 0x78EDEFD694AF1EED, 0x6DC93D9526A50E68, 0xEE97F453F06791ED, + 0x32AB0EDB696703D3, 0x3A6853C7E70757A7, 0x31865CED6120F37D, 0x67FEF95D92607890, + 0x1F2B1D1F15F6DC9C, 0xB69E38A8965C6B65, 0xAA9119FF184CCCF4, 0xF43C732873F24C13, + 0xFB4A3D794A9A80D2, 0x3550C2321FD6109C, 0x371F77E76BB8417E, 0x6BFA9AAE5EC05779, + 0xCD04F3FF001A4778, 0xE3273522064480CA, 0x9F91508BFFCFC14A, 0x049A7F41061A9E60, + 0xFCB6BE43A9F2FE9B, 0x08DE8A1C7797DA9B, 0x8F9887E6078735A1, 0xB5B4071DBFC73A66, + 0x230E343DFBA08D33, 0x43ED7F5A0FAE657D, 0x3A88A0FBBCB05C63, 0x21874B8B4D2DBC4F, + 0x1BDEA12E35F6A8C9, 0x53C065C6C8E63528, 0xE34A1D250E7A8D6B, 0xD6B04D3B7651DD7E, + 0x5E90277E7CB39E2D, 0x2C046F22062DC67D, 0xB10BB459132D0A26, 0x3FA9DDFB67E2F199, + 0x0E09B88E1914F7AF, 0x10E8B35AF3EEAB37, 0x9EEDECA8E272B933, 0xD4C718BC4AE8AE5F, + 0x81536D601170FC20, 0x91B534F885818A06, 0xEC8177F83F900978, 0x190E714FADA5156E, + 0xB592BF39B0364963, 0x89C350C893AE7DC1, 0xAC042E70F8B383F2, 0xB49B52E587A1EE60, + 0xFB152FE3FF26DA89, 0x3E666E6F69AE2C15, 0x3B544EBE544C19F9, 0xE805A1E290CF2456, + 0x24B33C9D7ED25117, 0xE74733427B72F0C1, 0x0A804D18B7097475, 0x57E3306D881EDB4F, + 0x4AE7D6A36EB5DBCB, 0x2D8D5432157064C8, 0xD1E649DE1E7F268B, 0x8A328A1CEDFE552C, + 0x07A3AEC79624C7DA, 0x84547DDC3E203C94, 0x990A98FD5071D263, 0x1A4FF12616EEFC89, + 0xF6F7FD1431714200, 0x30C05B1BA332F41C, 0x8D2636B81555A786, 0x46C9FEB55D120902, + 0xCCEC0A73B49C9921, 0x4E9D2827355FC492, 0x19EBB029435DCB0F, 0x4659D2B743848A2C, + 0x963EF2C96B33BE31, 0x74F85198B05A2E7D, 0x5A0F544DD2B1FB18, 0x03727073C2E134B1, + 0xC7F6AA2DE59AEA61, 0x352787BAA0D7C22F, 0x9853EAB63B5E0B35, 0xABBDCDD7ED5C0860, + 0xCF05DAF5AC8D77B0, 0x49CAD48CEBF4A71E, 0x7A4C10EC2158C4A6, 0xD9E92AA246BF719E, + 0x13AE978D09FE5557, 0x730499AF921549FF, 0x4E4B705B92903BA4, 0xFF577222C14F0A3A, + 0x55B6344CF97AAFAE, 0xB862225B055B6960, 0xCAC09AFBDDD2CDB4, 0xDAF8E9829FE96B5F, + 0xB5FDFC5D3132C498, 0x310CB380DB6F7503, 0xE87FBB46217A360E, 0x2102AE466EBB1148, + 0xF8549E1A3AA5E00D, 0x07A69AFDCC42261A, 0xC4C118BFE78FEAAE, 0xF9F4892ED96BD438, + 0x1AF3DBE25D8F45DA, 0xF5B4B0B0D2DEEEB4, 0x962ACEEFA82E1C84, 0x046E3ECAAF453CE9, + 0xF05D129681949A4C, 0x964781CE734B3C84, 0x9C2ED44081CE5FBD, 0x522E23F3925E319E, + 0x177E00F9FC32F791, 0x2BC60A63A6F3B3F2, 0x222BBFAE61725606, 0x486289DDCC3D6780, + 0x7DC7785B8EFDFC80, 0x8AF38731C02BA980, 0x1FAB64EA29A2DDF7, 0xE4D9429322CD065A, + 0x9DA058C67844F20C, 0x24C0E332B70019B0, 0x233003B5A6CFE6AD, 0xD586BD01C5C217F6, + 0x5E5637885F29BC2B, 0x7EBA726D8C94094B, 0x0A56A5F0BFE39272, 0xD79476A84EE20D06, + 0x9E4C1269BAA4BF37, 0x17EFEE45B0DEE640, 0x1D95B0A5FCF90BC6, 0x93CBE0B699C2585D, + 0x65FA4F227A2B6D79, 0xD5F9E858292504D5, 0xC2B5A03F71471A6F, 0x59300222B4561E00, + 0xCE2F8642CA0712DC, 0x7CA9723FBB2E8988, 0x2785338347F2BA08, 0xC61BB3A141E50E8C, + 0x150F361DAB9DEC26, 0x9F6A419D382595F4, 0x64A53DC924FE7AC9, 0x142DE49FFF7A7C3D, + 0x0C335248857FA9E7, 0x0A9C32D5EAE45305, 0xE6C42178C4BBB92E, 0x71F1CE2490D20B07, + 0xF1BCC3D275AFE51A, 0xE728E8C83C334074, 0x96FBF83A12884624, 0x81A1549FD6573DA5, + 0x5FA7867CAF35E149, 0x56986E2EF3ED091B, 0x917F1DD5F8886C61, 0xD20D8C88C8FFE65F, + 0x31D71DCE64B2C310, 0xF165B587DF898190, 0xA57E6339DD2CF3A0, 0x1EF6E6DBB1961EC9, + 0x70CC73D90BC26E24, 0xE21A6B35DF0C3AD7, 0x003A93D8B2806962, 0x1C99DED33CB890A1, + 0xCF3145DE0ADD4289, 0xD0E4427A5514FB72, 0x77C621CC9FB3A483, 0x67A34DAC4356550B, + 0xF8D626AAAF278509 +] + + +class Piece(object): + """A piece with type and color.""" + + def __init__(self, piece_type, color): + self.piece_type = piece_type + self.color = color + + def symbol(self): + """ + Gets the symbol ``P``, ``N``, ``B``, ``R``, ``Q`` or ``K`` for white + pieces or the lower-case variants for the black pieces. + """ + if self.color == WHITE: + return PIECE_SYMBOLS[self.piece_type].upper() + else: + return PIECE_SYMBOLS[self.piece_type] + + def unicode_symbol(self, invert_color=False): + """ + Gets the unicode character for the piece. + """ + if not invert_color: + return UNICODE_PIECE_SYMBOLS[self.symbol()] + else: + return UNICODE_PIECE_SYMBOLS[self.symbol().swapcase()] + + def __hash__(self): + return hash(self.piece_type * (self.color + 1)) + + def __repr__(self): + return "Piece.from_symbol('{0}')".format(self.symbol()) + + def __str__(self): + return self.symbol() + + def __unicode__(self, invert_color=False): + return self.unicode_symbol(invert_color) + + def __eq__(self, other): + ne = self.__ne__(other) + return NotImplemented if ne is NotImplemented else not ne + + def __ne__(self, other): + try: + if self.piece_type != other.piece_type: + return True + elif self.color != other.color: + return True + else: + return False + except AttributeError: + return NotImplemented + + @classmethod + def from_symbol(cls, symbol): + """ + Creates a piece instance from a piece symbol. + + Raises :exc:`ValueError` if the symbol is invalid. + """ + if symbol.islower(): + return cls(PIECE_SYMBOLS.index(symbol), BLACK) + else: + return cls(PIECE_SYMBOLS.index(symbol.lower()), WHITE) + + +class Move(object): + """ + Represents a move from a square to a square and possibly the promotion + piece type. + + Null moves are supported. + """ + + def __init__(self, from_square, to_square, promotion=None): + self.from_square = from_square + self.to_square = to_square + self.promotion = promotion + + def uci(self): + """ + Gets an UCI string for the move. + + For example a move from A7 to A8 would be ``a7a8`` or ``a7a8q`` if it + is a promotion to a queen. + + The UCI representatin of null moves is ``0000``. + """ + if self.promotion: + return SQUARE_NAMES[self.from_square] + SQUARE_NAMES[self.to_square] + PIECE_SYMBOLS[self.promotion] + elif self: + return SQUARE_NAMES[self.from_square] + SQUARE_NAMES[self.to_square] + else: + return "0000" + + def __bool__(self): + return bool(self.from_square or self.to_square or self.promotion) + + __nonzero__ = __bool__ + + def __eq__(self, other): + ne = self.__ne__(other) + return NotImplemented if ne is NotImplemented else not ne + + def __ne__(self, other): + try: + if self.from_square != other.from_square: + return True + elif self.to_square != other.to_square: + return True + elif self.promotion != other.promotion: + return True + else: + return False + except AttributeError: + return NotImplemented + + def __repr__(self): + return "Move.from_uci('{0}')".format(self.uci()) + + def __str__(self): + return self.uci() + + def __hash__(self): + if self.promotion: + return hash(self.to_square ^ self.from_square << 6 ^ self.promotion << 12) + else: + return hash(self.to_square ^ self.from_square << 6) + + def __copy__(self): + return type(self)(self.from_square, self.to_square, self.promotion) + + def __deepcopy__(self, memo): + move = self.__copy__() + memo[id(self)] = move + return move + + @classmethod + def from_uci(cls, uci): + """ + Parses an UCI string. + + Raises :exc:`ValueError` if the UCI string is invalid. + """ + if uci == "0000": + return cls.null() + elif len(uci) == 4: + return cls(SQUARE_NAMES.index(uci[0:2]), SQUARE_NAMES.index(uci[2:4])) + elif len(uci) == 5: + promotion = PIECE_SYMBOLS.index(uci[4]) + return cls(SQUARE_NAMES.index(uci[0:2]), SQUARE_NAMES.index(uci[2:4]), promotion) + else: + raise ValueError("expected uci string to be of length 4 or 5: {0}".format(repr(uci))) + + @classmethod + def null(cls): + """ + Gets a null move. + + A null move just passes the turn to the other side (and possibly + forfeits en passant capturing). Null moves evaluate to ``False`` in + boolean contexts. + + >>> bool(chess.Move.null()) + False + """ + return cls(0, 0, None) + + +class BaseBoard(object): + """ + A board representing the position of chess pieces. See + :class:`~chess.Board()` for a full board with move generation. + + The board is initialized to the standard chess starting position, unless + otherwise specified in the optional *board_fen* argument. If *board_fen* + is ``None`` an empty board is created. + """ + + def __init__(self, board_fen=STARTING_BOARD_FEN): + self.occupied_co = [BB_VOID, BB_VOID] + + if board_fen is None: + self._clear_board() + elif board_fen == STARTING_BOARD_FEN: + self._reset_board() + else: + self._set_board_fen(board_fen) + + def _reset_board(self): + self.pawns = BB_RANK_2 | BB_RANK_7 + self.knights = BB_B1 | BB_G1 | BB_B8 | BB_G8 + self.bishops = BB_C1 | BB_F1 | BB_C8 | BB_F8 + self.rooks = BB_A1 | BB_H1 | BB_A8 | BB_H8 + self.queens = BB_D1 | BB_D8 + self.kings = BB_E1 | BB_E8 + + self.occupied_co[WHITE] = BB_RANK_1 | BB_RANK_2 + self.occupied_co[BLACK] = BB_RANK_7 | BB_RANK_8 + self.occupied = BB_RANK_1 | BB_RANK_2 | BB_RANK_7 | BB_RANK_8 + + self.incremental_zobrist_hash = self.board_zobrist_hash(POLYGLOT_RANDOM_ARRAY) + + def reset_board(self): + self._reset_board() + + def _clear_board(self): + self.pawns = BB_VOID + self.knights = BB_VOID + self.bishops = BB_VOID + self.rooks = BB_VOID + self.queens = BB_VOID + self.kings = BB_VOID + + self.occupied_co[WHITE] = BB_VOID + self.occupied_co[BLACK] = BB_VOID + self.occupied = BB_VOID + + self.incremental_zobrist_hash = self.board_zobrist_hash(POLYGLOT_RANDOM_ARRAY) + + def clear_board(self): + """Clears the board.""" + self._clear_board() + + def pieces_mask(self, piece_type, color): + if piece_type == PAWN: + bb = self.pawns + elif piece_type == KNIGHT: + bb = self.knights + elif piece_type == BISHOP: + bb = self.bishops + elif piece_type == ROOK: + bb = self.rooks + elif piece_type == QUEEN: + bb = self.queens + elif piece_type == KING: + bb = self.kings + + return bb & self.occupied_co[color] + + def pieces(self, piece_type, color): + """ + Gets pieces of the given type and color. + + Returns a :class:`set of squares `. + """ + return SquareSet(self.pieces_mask(piece_type, color)) + + def piece_at(self, square): + """Gets the :class:`piece ` at the given square.""" + piece_type = self.piece_type_at(square) + if piece_type: + mask = BB_SQUARES[square] + color = bool(self.occupied_co[WHITE] & mask) + return Piece(piece_type, color) + + def piece_type_at(self, square): + """Gets the piece type at the given square.""" + mask = BB_SQUARES[square] + + if self.pawns & mask: + return PAWN + elif self.knights & mask: + return KNIGHT + elif self.bishops & mask: + return BISHOP + elif self.rooks & mask: + return ROOK + elif self.queens & mask: + return QUEEN + elif self.kings & mask: + return KING + else: + return None + + def _remove_piece_at(self, square): + mask = BB_SQUARES[square] + if not self.occupied & mask: + return + + piece_type = self.piece_type_at(square) + + if piece_type == PAWN: + self.pawns ^= mask + elif piece_type == KNIGHT: + self.knights ^= mask + elif piece_type == BISHOP: + self.bishops ^= mask + elif piece_type == ROOK: + self.rooks ^= mask + elif piece_type == QUEEN: + self.queens ^= mask + else: + self.kings ^= mask + + color = bool(self.occupied_co[WHITE] & mask) + + self.occupied ^= mask + self.occupied_co[color] ^= mask + + # Update incremental zobrist hash. + if color == BLACK: + piece_index = (piece_type - 1) * 2 + else: + piece_index = (piece_type - 1) * 2 + 1 + self.incremental_zobrist_hash ^= POLYGLOT_RANDOM_ARRAY[64 * piece_index + 8 * rank_index(square) + file_index(square)] + + def remove_piece_at(self, square): + """Removes a piece from the given square if present.""" + self._remove_piece_at(square) + + def _set_piece_at(self, square, piece_type, color): + self._remove_piece_at(square) + + mask = BB_SQUARES[square] + + if piece_type == PAWN: + self.pawns |= mask + elif piece_type == KNIGHT: + self.knights |= mask + elif piece_type == BISHOP: + self.bishops |= mask + elif piece_type == ROOK: + self.rooks |= mask + elif piece_type == QUEEN: + self.queens |= mask + elif piece_type == KING: + self.kings |= mask + + self.occupied ^= mask + self.occupied_co[color] ^= mask + + # Update incremental zobrist hash. + if color == BLACK: + piece_index = (piece_type - 1) * 2 + else: + piece_index = (piece_type - 1) * 2 + 1 + self.incremental_zobrist_hash ^= POLYGLOT_RANDOM_ARRAY[64 * piece_index + 8 * rank_index(square) + file_index(square)] + + def set_piece_at(self, square, piece): + """ + Sets a piece at the given square. + + An existing piece is replaced. Setting *piece* to ``None`` is + equivalent to :func:`~chess.Board.remove_piece_at()`. + """ + if piece is None: + self._remove_piece_at(square) + else: + self._set_piece_at(square, piece.piece_type, piece.color) + + def board_fen(self): + """ + Gets the board FEN. + """ + builder = [] + empty = 0 + + for square in SQUARES_180: + piece = self.piece_at(square) + + if not piece: + empty += 1 + else: + if empty: + builder.append(str(empty)) + empty = 0 + builder.append(piece.symbol()) + + if BB_SQUARES[square] & BB_FILE_H: + if empty: + builder.append(str(empty)) + empty = 0 + + if square != H1: + builder.append("/") + + return "".join(builder) + + def _set_board_fen(self, fen): + # Ensure the FEN is valid. + rows = fen.split("/") + if len(rows) != 8: + raise ValueError("expected 8 rows in position part of fen: {0}".format(repr(fen))) + + # Validate each row. + for row in rows: + field_sum = 0 + previous_was_digit = False + + for c in row: + if c in ["1", "2", "3", "4", "5", "6", "7", "8"]: + if previous_was_digit: + raise ValueError("two subsequent digits in position part of fen: {0}".format(repr(fen))) + field_sum += int(c) + previous_was_digit = True + elif c.lower() in ["p", "n", "b", "r", "q", "k"]: + field_sum += 1 + previous_was_digit = False + else: + raise ValueError("invalid character in position part of fen: {0}".format(repr(fen))) + + if field_sum != 8: + raise ValueError("expected 8 columns per row in position part of fen: {0}".format(repr(fen))) + + # Clear the board. + self._clear_board() + + # Put pieces on the board. + square_index = 0 + for c in fen: + if c in ["1", "2", "3", "4", "5", "6", "7", "8"]: + square_index += int(c) + elif c.lower() in ["p", "n", "b", "r", "q", "k"]: + piece = Piece.from_symbol(c) + self._set_piece_at(SQUARES_180[square_index], piece.piece_type, piece.color) + square_index += 1 + + def set_board_fen(self, fen): + """ + Parses a FEN and sets the board from it. + + Raises :exc:`ValueError` if the FEN string is invalid. + """ + self._set_board_fen(fen) + + def board_zobrist_hash(self, array=None): + if array is None: + return self.incremental_zobrist_hash + + zobrist_hash = 0 + + squares = self.occupied_co[BLACK] + square = bit_scan(squares) + while square != -1 and square is not None: + piece_index = (self.piece_type_at(square) - 1) * 2 + zobrist_hash ^= array[64 * piece_index + 8 * rank_index(square) + file_index(square)] + square = bit_scan(squares, square + 1) + + squares = self.occupied_co[WHITE] + square = bit_scan(squares) + while square != -1 and square is not None: + piece_index = (self.piece_type_at(square) - 1) * 2 + 1 + zobrist_hash ^= array[64 * piece_index + 8 * rank_index(square) + file_index(square)] + square = bit_scan(squares, square + 1) + + return zobrist_hash + + def __repr__(self): + return "BaseBoard('{0}')".format(self.board_fen()) + + def __str__(self): + builder = [] + + for square in SQUARES_180: + piece = self.piece_at(square) + + if piece: + builder.append(piece.symbol()) + else: + builder.append(".") + + if BB_SQUARES[square] & BB_FILE_H: + if square != H1: + builder.append("\n") + else: + builder.append(" ") + + return "".join(builder) + + def __unicode__(self, invert_color=False, borders=False): + builder = [] + for rank_index in range(7, -1, -1): + if borders: + builder.append(" ") + builder.append("-" * 17) + builder.append("\n") + + builder.append(RANK_NAMES[rank_index]) + builder.append(" ") + + for file_index in range(8): + square_index = square(file_index, rank_index) + + if borders: + builder.append("|") + elif file_index > 0: + builder.append(" ") + + piece = self.piece_at(square_index) + + if piece: + builder.append(piece.unicode_symbol(invert_color=invert_color)) + else: + builder.append(".") + + if borders: + builder.append("|") + + if borders or rank_index > 0: + builder.append("\n") + + if borders: + builder.append(" ") + builder.append("-" * 17) + builder.append("\n") + builder.append(" a b c d e f g h") + + return "".join(builder) + + def __html__(self): + """ + Returns a html-version of the board. + Can be displayed in e.g. an IPython notebook using + IPython.display.HTML(board.__html__()) + """ + tr = '' + string = '' + for rank in range(8, 0, -1): + string += tr + string += '' % rank + for i, file_ in enumerate('a b c d e f g h'.split()): + square = SQUARE_NAMES.index('%s%d' % (file_, rank)) + piece = self.piece_at(square) + char = piece.unicode_symbol() if piece else '' + if (i + rank) % 2 == 0: + string += '' % char + else: + string += '' % char + string += '' + string += '' + for file_ in 'a b c d e f g h'.split(): + string += '' % file_ + string += '
%d\ + \ + %s\ + \ + %s
%s
' + return string + + def __eq__(self, board): + ne = self.__ne__(board) + return NotImplemented if ne is NotImplemented else not ne + + def __ne__(self, board): + try: + if self.occupied != board.occupied: + return True + elif self.occupied_co[WHITE] != board.occupied_co[WHITE]: + return True + elif self.pawns != board.pawns: + return True + elif self.knights != board.knights: + return True + elif self.bishops != board.bishops: + return True + elif self.rooks != board.rooks: + return True + elif self.queens != board.queens: + return True + elif self.kings != board.kings: + return True + else: + return False + except AttributeError: + return NotImplemented + + def copy(self): + """Creates a copy of the board.""" + board = type(self)(None) + + board.pawns = self.pawns + board.knights = self.knights + board.bishops = self.bishops + board.rooks = self.rooks + board.queens = self.queens + board.kings = self.kings + + board.occupied_co[WHITE] = self.occupied_co[WHITE] + board.occupied_co[BLACK] = self.occupied_co[BLACK] + board.occupied = self.occupied + + board.incremental_zobrist_hash = self.incremental_zobrist_hash + + return board + + def __copy__(self): + return self.copy() + + def __deepcopy__(self, memo): + board = self.copy() + memo[id(self)] = board + return board + + @classmethod + def empty(cls): + """ + Creates a new empty board. Also see + :func:`~chess.BaseBoard.clear_board()`. + """ + return cls(None) + + +class Board(BaseBoard): + """ + A :class:`~chess.BaseBoard` and additional information representing + a chess position. + + Provides move generation, validation, parsing, attack generation, + game end detection, move counters and the capability to make and unmake + moves. + + The board is initialized to the starting position, unless otherwise + specified in the optional *fen* argument. If *fen* is ``None`` an empty + board is created. + + Optionally supports *chess960*. In Chess960 castling moves are encoded + by a king move to the corresponding rook square. + """ + + def __init__(self, fen=STARTING_FEN, chess960=False): + BaseBoard.__init__(self, None) + + self.chess960 = chess960 + + self.pseudo_legal_moves = PseudoLegalMoveGenerator(self) + self.legal_moves = LegalMoveGenerator(self) + + self.attacks_valid = False + self.attacks_from = collections.defaultdict(int) + self.attacks_to = collections.defaultdict(int) + self.attacks_valid_stack = collections.deque() + self.attacks_from_stack = collections.deque() + self.attacks_to_stack = collections.deque() + + self.halfmove_clock_stack = collections.deque() + self.captured_piece_stack = collections.deque() + self.castling_right_stack = collections.deque() + self.ep_square_stack = collections.deque() + self.move_stack = collections.deque() + + self.transpositions = collections.Counter() + + if fen is None: + self.clear() + elif fen == STARTING_FEN: + self.reset() + else: + self.set_fen(fen) + + def reset(self): + """Restores the starting position.""" + self.ep_square = 0 + self.castling_rights = BB_A1 | BB_H1 | BB_A8 | BB_H8 + self.turn = WHITE + self.fullmove_number = 1 + self.halfmove_clock = 0 + + self.reset_board() + + def reset_board(self): + super(Board, self).reset_board() + self.attacks_valid = False + self.clear_stack() + + def clear(self): + """ + Clears the board. + + Resets move stacks and move counters. The side to move is white. There + are no rooks or kings, so castling rights are removed. + + In order to be in a valid :func:`~chess.Board.status()` at least kings + need to be put on the board. + """ + self.ep_square = 0 + self.castling_rights = BB_VOID + self.turn = WHITE + self.fullmove_number = 1 + self.halfmove_clock = 0 + + self.clear_board() + + def clear_board(self): + super(Board, self).clear_board() + self.attacks_valid = False + self.clear_stack() + + def clear_stack(self): + """Clears the move stack and transposition table.""" + self.halfmove_clock_stack.clear() + self.captured_piece_stack.clear() + self.castling_right_stack.clear() + self.ep_square_stack.clear() + self.move_stack.clear() + + self.transpositions.clear() + self.transpositions.update((self.zobrist_hash(), )) + + self.attacks_valid_stack.clear() + self.attacks_from_stack.clear() + self.attacks_to_stack.clear() + + def remove_piece_at(self, square): + super(Board, self).remove_piece_at(square) + self.clear_stack() + self.attacks_valid = False + + def set_piece_at(self, square, piece): + super(Board, self).set_piece_at(square, piece) + self.clear_stack() + self.attacks_valid = False + + def generate_pseudo_legal_moves(self, castling=True, pawns=True, knights=True, bishops=True, rooks=True, queens=True, king=True): + self.generate_attacks() + + our_pieces = self.occupied_co[self.turn] + their_pieces = self.occupied_co[not self.turn] + + # Selective move generation. + selected_pieces = BB_VOID + if knights: + selected_pieces |= self.knights + if bishops: + selected_pieces |= self.bishops + if rooks: + selected_pieces |= self.rooks + if queens: + selected_pieces |= self.queens + if king: + selected_pieces |= self.kings + + # Generate piece moves. + non_pawns = our_pieces & selected_pieces + while non_pawns: + from_square = non_pawns & -non_pawns + from_square_index = bit_scan(from_square) + + moves = self.attacks_from[from_square] & ~our_pieces + while moves: + to_square = moves & -moves + yield Move(from_square_index, bit_scan(to_square)) + moves = moves & (moves - 1) + + non_pawns = non_pawns & (non_pawns - 1) + + # Generate castling moves. + if castling: + for move in self.generate_castling_moves(): + yield move + + # The remaining moves are all pawn moves. + if not pawns: + return + + # Generate pawn captures. + pawns = self.pawns & our_pieces + if self.turn == WHITE: + right_captures = pawns << 9 & their_pieces & ~BB_FILE_A & BB_ALL + left_captures = pawns << 7 & their_pieces & ~BB_FILE_H & BB_ALL + else: + right_captures = pawns >> 7 & their_pieces & ~BB_FILE_A + left_captures = pawns >> 9 & their_pieces & ~BB_FILE_H + + # Yield right captures. + while right_captures: + to_square = right_captures & -right_captures + to_square_index = bit_scan(to_square) + + if self.turn == WHITE: + from_square = to_square >> 9 + else: + from_square = to_square << 7 + from_square_index = bit_scan(from_square) + + if BB_RANK_1 & to_square or BB_RANK_8 & to_square: + yield Move(from_square_index, to_square_index, QUEEN) + yield Move(from_square_index, to_square_index, ROOK) + yield Move(from_square_index, to_square_index, BISHOP) + yield Move(from_square_index, to_square_index, KNIGHT) + else: + yield Move(from_square_index, to_square_index) + + right_captures = right_captures & (right_captures - 1) + + # Yield left captures. + while left_captures: + to_square = left_captures & -left_captures + to_square_index = bit_scan(to_square) + + if self.turn == WHITE: + from_square = to_square >> 7 + else: + from_square = to_square << 9 + from_square_index = bit_scan(from_square) + + if BB_RANK_1 & to_square or BB_RANK_8 & to_square: + yield Move(from_square_index, to_square_index, QUEEN) + yield Move(from_square_index, to_square_index, ROOK) + yield Move(from_square_index, to_square_index, BISHOP) + yield Move(from_square_index, to_square_index, KNIGHT) + else: + yield Move(from_square_index, to_square_index) + + left_captures = left_captures & (left_captures - 1) + + # Generate en passant captures. + ep_square_mask = BB_SQUARES[self.ep_square] if self.ep_square else BB_VOID + if ep_square_mask: + if self.turn == WHITE: + capturing_pawns = pawns & BB_RANK_5 + else: + capturing_pawns = pawns & BB_RANK_4 + + # Left side capture. + if ep_square_mask & ~BB_FILE_A: + left_file = FILE_MASK[ep_square_mask] >> 1 + capturing_pawn = capturing_pawns & left_file + if capturing_pawn: + yield Move(bit_scan(capturing_pawn), self.ep_square) + + # Right side capture. + if ep_square_mask & ~BB_FILE_H: + right_file = FILE_MASK[ep_square_mask] << 1 + capturing_pawn = capturing_pawns & right_file + if capturing_pawn: + yield Move(bit_scan(capturing_pawn), self.ep_square) + + # Prepare pawn advance generation. + if self.turn == WHITE: + single_moves = pawns << 8 & ~self.occupied + double_moves = single_moves << 8 & ~self.occupied & BB_RANK_4 + else: + single_moves = pawns >> 8 & ~self.occupied + double_moves = single_moves >> 8 & ~self.occupied & BB_RANK_5 + + # Generate single pawn moves. + while single_moves: + to_square = single_moves & -single_moves + to_square_index = bit_scan(to_square) + + if self.turn == WHITE: + from_square = to_square >> 8 + else: + from_square = to_square << 8 + from_square_index = bit_scan(from_square) + + if BB_RANK_1 & to_square or BB_RANK_8 & to_square: + yield Move(from_square_index, to_square_index, QUEEN) + yield Move(from_square_index, to_square_index, ROOK) + yield Move(from_square_index, to_square_index, BISHOP) + yield Move(from_square_index, to_square_index, KNIGHT) + else: + yield Move(from_square_index, to_square_index) + + single_moves = single_moves & (single_moves - 1) + + # Generate double pawn moves. + while double_moves: + to_square = double_moves & -double_moves + to_square_index = bit_scan(to_square) + + if self.turn == WHITE: + from_square = to_square >> 16 + else: + from_square = to_square << 16 + from_square_index = bit_scan(from_square) + + yield Move(from_square_index, to_square_index) + + double_moves = double_moves & (double_moves - 1) + + def attacker_mask(self, color, square): + self.generate_attacks() + return self.attacks_to[BB_SQUARES[square]] & self.occupied_co[color] + + def is_attacked_by(self, color, square): + """ + Checks if the given side attacks the given square. + + Pinned pieces still count as attackers. Pawns that can be captured + en passant are attacked. + """ + return bool(self.attacker_mask(color, square)) + + def attackers(self, color, square): + """ + Gets a set of attackers of the given color for the given square. + + Pinned pieces still count as attackers. Pawns that can be captured + en passant are attacked. + + Returns a :class:`set of squares `. + """ + return SquareSet(self.attacker_mask(color, square)) + + def attacks_mask(self, square): + self.generate_attacks() + return self.attacks_from[BB_SQUARES[square]] + + def attacks(self, square): + """ + Gets a set of attacked squares from a given square. + + There will be no attacks if the square is empty. Pinned pieces are + still attacking other squares. Pawns will attack pawns they could + capture en passant. + + Returns a :class:`set of squares `. + """ + return SquareSet(self.attacks_mask(square)) + + def pin_mask(self, color, square): + return self._pinned(color, BB_SQUARES[square]) + + def pin(self, color, square): + """ + Detects pins of the given square to the king of the given color. + + Returns a :class:`set of squares ` that mask the rank, + file or diagonal of the pin. If there is no pin, then a mask of the + entire board is returned. + """ + return SquareSet(self.pin_mask(color, square)) + + def is_pinned(self, color, square): + """ + Detects if the given square is pinned to the king of the given color. + """ + return self.pin_mask(color, square) != BB_ALL + + def is_check(self): + """Returns if the current side to move is in check.""" + king_square = bit_scan(self.kings & self.occupied_co[self.turn]) + if king_square is None or king_square == -1: + return False + + return self.is_attacked_by(not self.turn, king_square) + + def is_into_check(self, move): + """ + Checks if the given move would leave the king in check or put it into + check. The move must be at least pseudo legal. + """ + from_square_mask = BB_SQUARES[move.from_square] + to_square_mask = BB_SQUARES[move.to_square] + + # If already in check, look if it is an evasion. + if self.is_check(): + return move not in self.generate_evasions( + castling=False, + pawns=from_square_mask & self.pawns, + knights=from_square_mask & self.knights, + bishops=from_square_mask & self.bishops, + rooks=from_square_mask & self.rooks, + queens=from_square_mask & self.queens, + king=from_square_mask & self.kings) + + # We are assuming pseudo legality, so castling moves are always legal. + if self.is_castling(move): + return False + + # Detect uncovered check. + if not self._pinned(self.turn, from_square_mask) & to_square_mask: + return True + + # Detect king moves into check. + if from_square_mask & self.kings: + return self.attacks_to[to_square_mask] & self.occupied_co[not self.turn] + + return False + + def was_into_check(self): + """ + Checks if the king of the other side is attacked. Such a position is not + valid and could only be reached by an illegal move. + """ + king_square = bit_scan(self.kings & self.occupied_co[not self.turn]) + if king_square is None or king_square == -1: + return False + + return self.is_attacked_by(self.turn, king_square) + + def is_pseudo_legal(self, move): + # Null moves are not pseudo legal. + if not move: + return False + + # Source square must not be vacant. + piece = self.piece_type_at(move.from_square) + if not piece: + return False + + # Get square masks. + from_mask = BB_SQUARES[move.from_square] + to_mask = BB_SQUARES[move.to_square] + + # Check turn. + if not self.occupied_co[self.turn] & from_mask: + return False + + # Only pawns can promote and only on the backrank. + if move.promotion: + if piece != PAWN: + return False + + if self.turn == WHITE and rank_index(move.to_square) != 7: + return False + elif self.turn == BLACK and rank_index(move.to_square) != 0: + return False + + # Handle castling. + if piece == KING: + if move in self.generate_castling_moves(): + return True + + # Destination square can not be occupied. + if self.occupied_co[self.turn] & to_mask: + return False + + # Handle pawn moves. + if piece == PAWN: + return move in self.generate_pseudo_legal_moves(castling=False, pawns=True, knights=False, bishops=False, rooks=False, queens=False, king=False) + + # Handle all other pieces. + self.generate_attacks() + return bool(self.attacks_from[from_mask] & to_mask) + + def is_legal(self, move): + return self.is_pseudo_legal(move) and not self.is_into_check(move) + + def is_game_over(self, claim_draw=False): + """ + Checks if the game is over due to checkmate, stalemate, insufficient + mating material, the seventyfive-move rule or fivefold repetition. + + The game is not considered to be over by threefold repetition or the + fifty-move rule, unless *claim_draw* is given. + """ + # Seventyfive-move rule. + if self.halfmove_clock >= 150: + return True + + # Insufficient material. + if self.is_insufficient_material(): + return True + + # Stalemate or checkmate. + if not any(self.generate_legal_moves()): + return True + + # Fivefold repetition. + if self.is_fivefold_repetition(): + return True + + # Draw claim. + if claim_draw and self.can_claim_draw(): + return True + + return False + + def result(self, claim_draw=False): + """ + Gets the game result. + + ``1-0``, ``0-1`` or ``1/2-1/2`` if the + :func:`game is over `. Otherwise the result + is undetermined: ``*``. + """ + # Checkmate. + if self.is_checkmate(): + if self.turn == WHITE: + return "0-1" + else: + return "1-0" + + # Draw claimed. + if claim_draw and self.can_claim_draw(): + return "1/2-1/2" + + # Seventyfive-move rule or fivefold repetition. + if self.halfmove_clock >= 150 or self.is_fivefold_repetition(): + return "1/2-1/2" + + # Insufficient material. + if self.is_insufficient_material(): + return "1/2-1/2" + + # Stalemate. + if not any(self.generate_legal_moves()): + return "1/2-1/2" + + # Undetermined. + return "*" + + def is_checkmate(self): + """Checks if the current position is a checkmate.""" + if not self.is_check(): + return False + + return not any(self.generate_legal_moves()) + + def is_stalemate(self): + """Checks if the current position is a stalemate.""" + if self.is_check(): + return False + + return not any(self.generate_legal_moves()) + + def is_insufficient_material(self): + """Checks for a draw due to insufficient mating material.""" + # Enough material to mate. + if self.pawns or self.rooks or self.queens: + return False + + # A single knight or a single bishop. + if pop_count(self.occupied) <= 3: + return True + + # More than a single knight. + if self.knights: + return False + + # All bishops on the same color. + if self.bishops & BB_DARK_SQUARES == 0: + return True + elif self.bishops & BB_LIGHT_SQUARES == 0: + return True + else: + return False + + def is_seventyfive_moves(self): + """ + Since the first of July 2014 a game is automatically drawn (without + a claim by one of the players) if the half move clock since a capture + or pawn move is equal to or grather than 150. Other means to end a game + take precedence. + """ + if self.halfmove_clock >= 150: + if any(self.generate_legal_moves()): + return True + + return False + + def is_fivefold_repetition(self): + """ + Since the first of July 2014 a game is automatically drawn (without + a claim by one of the players) if a position occurs for the fifth time + on consecutive alternating moves. + """ + zobrist_hash = self.zobrist_hash() + + # A minimum amount of moves must have been played and the position + # in question must have appeared at least five times. + if len(self.move_stack) < 16 or self.transpositions[zobrist_hash] < 5: + return False + + switchyard = collections.deque() + + for _ in range(4): + # Go back two full moves, each. + for _ in range(4): + switchyard.append(self.pop()) + + # Check the position was the same before. + if self.zobrist_hash() != zobrist_hash: + while switchyard: + self.push(switchyard.pop()) + + return False + + while switchyard: + self.push(switchyard.pop()) + + return True + + def can_claim_draw(self): + """ + Checks if the side to move can claim a draw by the fifty-move rule or + by threefold repetition. + """ + return self.can_claim_fifty_moves() or self.can_claim_threefold_repetition() + + def can_claim_fifty_moves(self): + """ + Draw by the fifty-move rule can be claimed once the clock of halfmoves + since the last capture or pawn move becomes equal or greater to 100 + and the side to move still has a legal move they can make. + """ + # Fifty-move rule. + if self.halfmove_clock >= 100: + if any(self.generate_legal_moves()): + return True + + return False + + def can_claim_threefold_repetition(self): + """ + Draw by threefold repetition can be claimed if the position on the + board occured for the third time or if such a repetition is reached + with one of the possible legal moves. + """ + # Threefold repetition occured. + if self.transpositions[self.zobrist_hash()] >= 3: + return True + + # The next legal move is a threefold repetition. + for move in self.generate_legal_moves(): + self.push(move) + + if self.transpositions[self.zobrist_hash()] >= 3: + self.pop() + return True + + self.pop() + + return False + + def push(self, move): + """ + Updates the position with the given move and puts it onto a stack. + + Null moves just increment the move counters, switch turns and forfeit + en passant capturing. + + No validation is performed. For performance moves are assumed to be at + least pseudo legal. Otherwise there is no guarantee that the previous + board state can be restored. To check it yourself you can use: + + >>> move in board.pseudo_legal_moves + True + """ + move = self._to_chess960(move) + + # Increment fullmove number. + if self.turn == BLACK: + self.fullmove_number += 1 + + # Remember game state. + captured_piece = self.piece_at(move.to_square) if move else None + self.halfmove_clock_stack.append(self.halfmove_clock) + self.castling_right_stack.append(self.castling_rights) + self.captured_piece_stack.append(captured_piece) + self.ep_square_stack.append(self.ep_square) + self.move_stack.append(move) + + # Remember attacks. + self.attacks_valid_stack.append(self.attacks_valid) + self.attacks_from_stack.append(self.attacks_from) + self.attacks_to_stack.append(self.attacks_to) + + # On a null move simply swap turns and reset the en passant square. + if not move: + self.turn = not self.turn + self.halfmove_clock += 1 + + # Invalidate en passant attacks. + if self.ep_square: + self.attacks_valid = False + self.ep_square = 0 + return + + # Update half move counter. + piece_type = self.piece_type_at(move.from_square) + if piece_type == PAWN or (captured_piece and captured_piece.color != self.turn): + self.halfmove_clock = 0 + else: + self.halfmove_clock += 1 + + # Update castling rights. + self.castling_rights = self.clean_castling_rights() + self.castling_rights &= ~BB_SQUARES[move.to_square] + self.castling_rights &= ~BB_SQUARES[move.from_square] + if piece_type == KING: + if self.turn == WHITE: + self.castling_rights &= ~BB_RANK_1 + else: + self.castling_rights &= ~BB_RANK_8 + + # Promotion. + if move.promotion: + piece_type = move.promotion + + # Remove piece from original square. + self._remove_piece_at(move.from_square) + + # Handle special pawn moves. + self.ep_square = 0 + if piece_type == PAWN: + diff = abs(move.to_square - move.from_square) + + # Remove pawns captured en passant. + if diff in [7, 9] and not self.occupied & BB_SQUARES[move.to_square]: + if self.turn == WHITE: + self._remove_piece_at(move.to_square - 8) + else: + self._remove_piece_at(move.to_square + 8) + + # Set en passant square. + if diff == 16: + if self.turn == WHITE: + self.ep_square = move.to_square - 8 + else: + self.ep_square = move.to_square + 8 + + # Castling. + castling = piece_type == KING and captured_piece and captured_piece.color == self.turn + if castling: + a_side = file_index(move.to_square) < file_index(move.from_square) + + self._remove_piece_at(move.from_square) + self._remove_piece_at(move.to_square) + + if a_side: + self._set_piece_at(C1 if self.turn == WHITE else C8, KING, self.turn) + self._set_piece_at(D1 if self.turn == WHITE else D8, ROOK, self.turn) + else: + self._set_piece_at(G1 if self.turn == WHITE else G8, KING, self.turn) + self._set_piece_at(F1 if self.turn == WHITE else F8, ROOK, self.turn) + + # Put piece on target square. + if not castling: + self._set_piece_at(move.to_square, piece_type, self.turn) + + # Swap turn. + self.turn = not self.turn + + # Update transposition table. + self.transpositions.update((self.zobrist_hash(), )) + + # Invalidate attacks. + self.attacks_valid = False + + def pop(self): + """ + Restores the previous position and returns the last move from the stack. + """ + stack_move = self.move_stack.pop() + move = self._to_chess960(stack_move) + + # Update transposition table. + self.transpositions.subtract((self.zobrist_hash(), )) + + # Decrement fullmove number. + if self.turn == WHITE: + self.fullmove_number -= 1 + + # Restore state. + self.halfmove_clock = self.halfmove_clock_stack.pop() + self.castling_rights = self.castling_right_stack.pop() + self.ep_square = self.ep_square_stack.pop() + captured_piece = self.captured_piece_stack.pop() + + # Restore attacks. + try: + self.attacks_valid = self.attacks_valid_stack.pop() + self.attacks_from = self.attacks_from_stack.pop() + self.attacks_to = self.attacks_to_stack.pop() + except IndexError: + self.attacks_valid = False + + # On a null move simply swap the turn. + if not move: + self.turn = not self.turn + return move + + # Remove the rook after castling and restore the king. Castling is + # encoded as capturing our own rook. + castling = captured_piece and captured_piece.color != self.turn + if castling: + a_side = file_index(move.to_square) < file_index(move.from_square) + + if a_side: + self._remove_piece_at(C1 if self.turn == BLACK else C8) + self._remove_piece_at(D1 if self.turn == BLACK else D8) + else: + self._remove_piece_at(G1 if self.turn == BLACK else G8) + self._remove_piece_at(F1 if self.turn == BLACK else F8) + + self._set_piece_at(move.from_square, KING, not self.turn) + + piece = PAWN if move.promotion else self.piece_type_at(move.to_square) + + # Restore target square. + if captured_piece: + self._set_piece_at(move.to_square, captured_piece.piece_type, captured_piece.color) + else: + self._remove_piece_at(move.to_square) + + # Restore captured pawn after en passant. + if piece == PAWN and abs(move.from_square - move.to_square) in (7, 9): + if self.turn == WHITE: + self._set_piece_at(move.to_square + 8, PAWN, WHITE) + else: + self._set_piece_at(move.to_square - 8, PAWN, BLACK) + + # Restore the source square. + if not castling: + self._set_piece_at(move.from_square, piece, not self.turn) + + # Swap turn. + self.turn = not self.turn + + return stack_move + + def peek(self): + """Gets the last move from the move stack.""" + return self.move_stack[-1] + + def castling_shredder_fen(self): + castling_rights = self.clean_castling_rights() + if not castling_rights: + return "-" + + builder = [] + + black_castling_rights = castling_rights & BB_RANK_8 + while black_castling_rights: + mask = black_castling_rights & -black_castling_rights + builder.append(FILE_NAMES[file_index(bit_scan(mask))]) + black_castling_rights = black_castling_rights & (black_castling_rights - 1) + + white_castling_rights = castling_rights & BB_RANK_1 + while white_castling_rights: + mask = white_castling_rights & -white_castling_rights + builder.append(FILE_NAMES[file_index(bit_scan(mask))].upper()) + white_castling_rights = white_castling_rights & (white_castling_rights - 1) + + builder.reverse() + + return "".join(builder) + + def castling_xfen(self): + builder = [] + + for color in [BLACK, WHITE]: + king_mask = self.kings & self.occupied_co[color] + if not king_mask: + continue + + king_file = file_index(bit_scan(king_mask)) + backrank = BB_RANK_1 if color == WHITE else BB_RANK_8 + + castling_rights = self.clean_castling_rights() & backrank + while castling_rights: + rook = castling_rights & -castling_rights + rook_file = file_index(bit_scan(rook)) + + a_side = rook_file < king_file + + shredder = False + other_rooks = self.occupied_co[color] & self.rooks & backrank & ~rook + while other_rooks: + other_rook = other_rooks & -other_rooks + if (file_index(bit_scan(other_rook)) < rook_file) == a_side: + shredder = True + break + other_rooks = other_rooks & (other_rooks - 1) + + if shredder: + ch = FILE_NAMES[rook_file] + else: + ch = "q" if a_side else "k" + + builder.append(ch.upper() if color == WHITE else ch) + + castling_rights = castling_rights & (castling_rights - 1) + + if builder: + builder.reverse() + return "".join(builder) + else: + return "-" + + def has_legal_en_passant(self): + """Checks if there is a legal en passant capture.""" + return self.ep_square and any(self.is_en_passant(move) for move in self.generate_legal_moves(castling=False, pawns=True, knights=False, bishops=False, rooks=False, queens=False, king=False)) + + def fen(self): + """ + Gets the FEN representation of the position. + + A FEN string (e.g. + ``rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1``) consists + of the position part (:func:`~chess.Board.board_fen()`), the turn, + the castling part (:func:`~chess.Board.castling_xfen()`), a relevant + en passant square (:data:`~chess.Board.ep_square`, + :func:`~chess.Board.has_legal_en_passant()`), the halfmove clock + and the fullmove number. + """ + fen = [] + fen.append(self.board_fen()) + fen.append("w" if self.turn == WHITE else "b") + fen.append(self.castling_xfen()) + fen.append(SQUARE_NAMES[self.ep_square] if self.has_legal_en_passant() else "-") + fen.append(str(self.halfmove_clock)) + fen.append(str(self.fullmove_number)) + return " ".join(fen) + + def shredder_fen(self): + """ + Gets the Shredder FEN representation of the position. + + Castling rights are encoded by the file of the rook. The starting + castling rights in normal chess are HAha. + + Use :func:`~chess.Board.castling_shredder_fen()` to get just the + castling part. + """ + fen = [] + fen.append(self.board_fen()) + fen.append("w" if self.turn == WHITE else "b") + fen.append(self.castling_shredder_fen()) + fen.append(SQUARE_NAMES[self.ep_square] if self.has_legal_en_passant() else "-") + fen.append(str(self.halfmove_clock)) + fen.append(str(self.fullmove_number)) + return " ".join(fen) + + def set_fen(self, fen): + """ + Parses a FEN and sets the position from it. + + Raises :exc:`ValueError` if the FEN string is invalid. + """ + # Ensure there are six parts. + parts = fen.split() + if len(parts) != 6: + raise ValueError("fen string should consist of 6 parts: {0}".format(repr(fen))) + + # Check that the turn part is valid. + if not parts[1] in ["w", "b"]: + raise ValueError("expected 'w' or 'b' for turn part of fen: {0}".format(repr(fen))) + + # Check that the castling part is valid. + if not FEN_CASTLING_REGEX.match(parts[2]): + raise ValueError("invalid castling part in fen: {0}".format(repr(fen))) + + # Check that the en passant part is valid. + if parts[3] != "-": + if parts[1] == "w": + if rank_index(SQUARE_NAMES.index(parts[3])) != 5: + raise ValueError("expected ep square to be on sixth rank: {0}".format(repr(fen))) + else: + if rank_index(SQUARE_NAMES.index(parts[3])) != 2: + raise ValueError("expected ep square to be on third rank: {0}".format(repr(fen))) + + # Check that the half move part is valid. + if int(parts[4]) < 0: + raise ValueError("halfmove clock can not be negative: {0}".format(repr(fen))) + + # Check that the fullmove number part is valid. + # 0 is allowed for compability but later replaced with 1. + if int(parts[5]) < 0: + raise ValueError("fullmove number must be positive: {0}".format(repr(fen))) + + # Validate the board part and set it. + self._set_board_fen(parts[0]) + + # Set the turn. + if parts[1] == "w": + self.turn = WHITE + else: + self.turn = BLACK + + # Set castling flags. + self.castling_rights = BB_VOID + for flag in parts[2]: + if flag == "-": + break + + color = WHITE if flag.isupper() else BLACK + flag = flag.lower() + backrank = BB_RANK_1 if color == WHITE else BB_RANK_8 + rooks = self.occupied_co[color] & self.rooks & backrank + king = self.occupied_co[color] & self.kings & backrank + + if flag == "q": + # Select the leftmost rook. + mask = rooks & -rooks + + if king and bit_scan(mask) < bit_scan(king): + self.castling_rights |= mask + else: + self.castling_rights |= BB_FILE_A & backrank + elif flag == "k": + # Select the rightmost rook. + mask = BB_VOID + while rooks: + mask = rooks & -rooks + rooks = rooks & (rooks - 1) + + if king and bit_scan(king) < bit_scan(mask): + self.castling_rights |= mask + else: + self.castling_rights |= BB_FILE_H & backrank + else: + self.castling_rights |= BB_FILES[FILE_NAMES.index(flag)] & backrank + + # Set the en passant square. + if parts[3] == "-": + self.ep_square = 0 + else: + self.ep_square = SQUARE_NAMES.index(parts[3]) + + # Set the mover counters. + self.halfmove_clock = int(parts[4]) + self.fullmove_number = int(parts[5]) or 1 + + # Invalidate attacks and clear move stack. + self.attacks_valid = False + self.clear_stack() + + def set_board_fen(self, fen): + super(Board, self).set_board_fen(fen) + self.attacks_valid = False + self.clear_stack() + + def epd(self, **operations): + """ + Gets an EPD representation of the current position. + + EPD operations can be given as keyword arguments. Supported operands + are strings, integers, floats and moves and lists of moves and None. + All other operands are converted to strings. + + A list of moves for *pv* will be interpreted as a variation. All other + move lists are interpreted as a set of moves in the current position. + + *hmvc* and *fmvc* are not included by default. You can use: + + >>> board.epd(hmvc=board.halfmove_clock, fmvc=board.fullmove_number) + 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - hmvc 0; fmvc 1;' + """ + epd = [] + + # Position part. + epd.append(self.board_fen()) + epd.append(" ") + + # Side to move. + epd.append("w" if self.turn == WHITE else "b") + epd.append(" ") + + # Castling rights. + epd.append(self.castling_xfen()) + epd.append(" ") + + # En passant square. + epd.append(SQUARE_NAMES[self.ep_square] if self.has_legal_en_passant() else "-") + + # Append operations. + for opcode, operand in operations.items(): + epd.append(" ") + epd.append(opcode) + + # Value is empty. + if operand is None: + epd.append(";") + continue + + # Value is a move. + if hasattr(operand, "from_square") and hasattr(operand, "to_square") and hasattr(operand, "promotion"): + # Append SAN for moves. + epd.append(" ") + epd.append(self.san(operand)) + epd.append(";") + continue + + # Value is numeric. + if isinstance(operand, (int, float)): + # Append integer or float. + epd.append(" ") + epd.append(str(operand)) + epd.append(";") + continue + + # Value is a set of moves or a variation. + if hasattr(operand, "__iter__"): + position = Board(self.shredder_fen()) if opcode == "pv" else self + iterator = operand.__iter__() + first_move = next(iterator) + if hasattr(first_move, "from_square") and hasattr(first_move, "to_square") and hasattr(first_move, "promotion"): + epd.append(" ") + epd.append(position.san(first_move)) + if opcode == "pv": + position.push(first_move) + + for move in iterator: + epd.append(" ") + epd.append(position.san(move)) + if opcode == "pv": + position.push(move) + + epd.append(";") + continue + + # Append as escaped string. + epd.append(" \"") + epd.append(str(operand).replace("\r", "").replace("\n", " ").replace("\\", "\\\\").replace(";", "\\s")) + epd.append("\";") + + return "".join(epd) + + def set_epd(self, epd): + """ + Parses the given EPD string and uses it to set the position. + + If present the ``hmvc`` and the ``fmvn`` are used to set the half move + clock and the fullmove number. Otherwise ``0`` and ``1`` are used. + + Returns a dictionary of parsed operations. Values can be strings, + integers, floats or move objects. + + Raises :exc:`ValueError` if the EPD string is invalid. + """ + # Split into 4 or 5 parts. + parts = epd.strip().rstrip(";").split(None, 4) + if len(parts) < 4: + raise ValueError("epd should consist of at least 4 parts: {0}".format(repr(epd))) + + operations = {} + + # Parse the operations. + if len(parts) > 4: + operation_part = parts.pop() + operation_part += ";" + + opcode = "" + operand = "" + in_operand = False + in_quotes = False + escape = False + + position = None + + for c in operation_part: + if not in_operand: + if c == ";": + operations[opcode] = None + opcode = "" + elif c == " ": + if opcode: + in_operand = True + else: + opcode += c + else: + if c == "\"": + if not operand and not in_quotes: + in_quotes = True + elif escape: + operand += c + elif c == "\\": + if escape: + operand += c + else: + escape = True + elif c == "s": + if escape: + operand += ";" + else: + operand += c + elif c == ";": + if escape: + operand += "\\" + + if in_quotes: + # A string operand. + operations[opcode] = operand + else: + try: + # An integer. + operations[opcode] = int(operand) + except ValueError: + try: + # A float. + operations[opcode] = float(operand) + except ValueError: + if position is None: + position = type(self)(" ".join(parts + ["0", "1"])) + + if opcode == "pv": + # A variation. + operations[opcode] = [] + for token in operand.split(): + move = position.parse_san(token) + operations[opcode].append(move) + position.push(move) + + # Reset the position. + while position.move_stack: + position.pop() + elif opcode in ("bm", "am"): + # A set of moves. + operations[opcode] = [position.parse_san(token) for token in operand.split()] + else: + # A single move. + operations[opcode] = position.parse_san(operand) + + opcode = "" + operand = "" + in_operand = False + in_quotes = False + escape = False + else: + operand += c + + # Create a full FEN and parse it. + parts.append(str(operations["hmvc"]) if "hmvc" in operations else "0") + parts.append(str(operations["fmvn"]) if "fmvn" in operations else "1") + self.set_fen(" ".join(parts)) + + return operations + + def san(self, move): + """ + Gets the standard algebraic notation of the given move in the context of + the current position. + + There is no validation. It is only guaranteed to work if the move is + legal or a null move. + """ + if not move: + # Null move. + return "--" + + # Look ahead for check or checkmate. + self.push(move) + is_check = self.is_check() + is_checkmate = is_check and self.is_checkmate() + self.pop() + + # Castling. + if self.is_castling(move): + if file_index(move.to_square) < file_index(move.from_square): + san = "O-O-O" + else: + san = "O-O" + + if is_checkmate: + return san + "#" + elif is_check: + return san + "+" + else: + return san + + piece = self.piece_type_at(move.from_square) + + if piece == PAWN: + san = "" + else: + # Get ambigous move candidates. + if piece == KNIGHT: + san = "N" + candidates = self.generate_legal_moves(castling=False, pawns=False, knights=True, bishops=False, rooks=False, queens=False, king=False) + elif piece == BISHOP: + san = "B" + candidates = self.generate_legal_moves(castling=False, pawns=False, knights=False, bishops=True, rooks=False, queens=False, king=False) + elif piece == ROOK: + san = "R" + candidates = self.generate_legal_moves(castling=False, pawns=False, knights=False, bishops=False, rooks=True, queens=False, king=False) + elif piece == QUEEN: + san = "Q" + candidates = self.generate_legal_moves(castling=False, pawns=False, knights=False, bishops=False, rooks=False, queens=True, king=False) + elif piece == KING: + san = "K" + candidates = self.generate_legal_moves(castling=False, pawns=False, knights=False, bishops=False, rooks=False, queens=False, king=True) + else: + # Not possible with a legal move. + assert self.is_legal(move) + + # Filter relevant candidates: Not excatly the current move, but + # to the same square. + others = BB_VOID + for candidate in candidates: + if candidate.to_square == move.to_square and candidate.from_square != move.from_square: + others |= BB_SQUARES[candidate.from_square] + + # Disambiguate. + if others: + row, column = False, False + + if others & BB_RANKS[rank_index(move.from_square)]: + column = True + + if others & BB_FILES[file_index(move.from_square)]: + row = True + else: + column = True + + if column: + san += FILE_NAMES[file_index(move.from_square)] + if row: + san += RANK_NAMES[rank_index(move.from_square)] + + # Captures. + if self.is_capture(move): + if piece == PAWN: + san += FILE_NAMES[file_index(move.from_square)] + san += "x" + + # Destination square. + san += SQUARE_NAMES[move.to_square] + + # Promotion. + if move.promotion: + san += "=" + PIECE_SYMBOLS[move.promotion].upper() + + # Add check or checkmate suffix + if is_checkmate: + san += "#" + elif is_check: + san += "+" + + return san + + def variation_san(self, variation): + """ + Given a sequence of moves, return a string representing the sequence + in standard algebraic notation (e.g. "1. e4 e5 2. Nf3 Nc6" or "37...Bg6 + 38. fxg6"). + + ValueError will be thrown if any moves in the sequence are illegal. + + This board will not be modified as a result of calling this. + """ + board = self.copy() + san = [] + move_numbers = [] + first_move = True + for move in variation: + if not board.is_legal(move): + raise ValueError("illegal move {0} in position {1}".format(move, board.fen())) + san.append(board.san(move)) + if board.turn == WHITE: + move_numbers.append("{0}. ".format(board.fullmove_number)) + elif first_move: + move_numbers.append("{0}...".format(board.fullmove_number)) + else: + move_numbers.append("") + board.push(move) + first_move = False + return " ".join(["{0}{1}".format(num, s) for (num, s) in zip(move_numbers, san)]) + + def parse_san(self, san): + """ + Uses the current position as the context to parse a move in standard + algebraic notation and return the corresponding move object. + + The returned move is guaranteed to be either legal or a null move. + + Raises :exc:`ValueError` if the SAN is invalid or ambiguous. + """ + # Null moves. + if san == "--": + return Move.null() + + # Castling. + try: + if san in ("O-O", "O-O+", "O-O#"): + return next(move for move in self.generate_castling_moves() if self.is_kingside_castling(move)) + elif san in ("O-O-O", "O-O-O+", "O-O-O#"): + return next(move for move in self.generate_castling_moves() if self.is_queenside_castling(move)) + except StopIteration: + raise ValueError("illegal san: {0} in {1}".format(repr(san), self.fen())) + + # Match normal moves. + match = SAN_REGEX.match(san) + if not match: + raise ValueError("invalid san: {0}".format(repr(san))) + + # Get target square. + to_square = SQUARE_NAMES.index(match.group(4)) + + # Get the promotion type. + if not match.group(5): + promotion = None + else: + promotion = PIECE_SYMBOLS.index(match.group(5)[-1].lower()) + + # Filter by piece type. + if match.group(1) == "N": + moves = self.generate_legal_moves(castling=False, pawns=False, knights=True, bishops=False, rooks=False, queens=False, king=False) + elif match.group(1) == "B": + moves = self.generate_legal_moves(castling=False, pawns=False, knights=False, bishops=True, rooks=False, queens=False, king=False) + elif match.group(1) == "K": + moves = self.generate_legal_moves(castling=False, pawns=False, knights=False, bishops=False, rooks=False, queens=False, king=True) + elif match.group(1) == "R": + moves = self.generate_legal_moves(castling=False, pawns=False, knights=False, bishops=False, rooks=True, queens=False, king=False) + elif match.group(1) == "Q": + moves = self.generate_legal_moves(castling=False, pawns=False, knights=False, bishops=False, rooks=False, queens=True, king=False) + else: + moves = self.generate_legal_moves(castling=False, pawns=True, knights=False, bishops=False, rooks=False, queens=False, king=False) + + # Filter by source file. + from_mask = BB_ALL + if match.group(2): + from_mask &= BB_FILES[FILE_NAMES.index(match.group(2))] + + # Filter by source rank. + if match.group(3): + from_mask &= BB_RANKS[int(match.group(3)) - 1] + + # Match legal moves. + matched_move = None + for move in moves: + if move.to_square != to_square: + continue + + if move.promotion != promotion: + continue + + if not BB_SQUARES[move.from_square] & from_mask: + continue + + if matched_move: + raise ValueError("ambiguous san: {0} in {1}".format(repr(san), self.fen())) + + matched_move = move + + if not matched_move: + raise ValueError("illegal san: {0} in {1}".format(repr(san), self.fen())) + + return matched_move + + def push_san(self, san): + """ + Parses a move in standard algebraic notation, makes the move and puts + it on the the move stack. + + Raises :exc:`ValueError` if neither legal nor a null move. + + Returns the move. + """ + move = self.parse_san(san) + self.push(move) + return move + + def uci(self, move, chess960=None): + """ + Gets the UCI notation of the move. + + *chess960* defaults to the mode of the board. Pass ``True`` to force + *UCI_Chess960* mode. + """ + board_chess960 = self.chess960 + if chess960 is not None: + self.chess960 = chess960 + + move = self._to_chess960(move) + move = self._from_chess960(move.from_square, move.to_square, move.promotion) + + self.chess960 = board_chess960 + return move.uci() + + def parse_uci(self, uci): + """ + Parses the given move in UCI notation. + + Supports both UCI_Chess960 and standard UCI notation. + + The returned move is guaranteed to be either legal or a null move. + + Raises :exc:`ValueError` if the move is invalid or illegal in the + current position (but not a null move). + """ + move = Move.from_uci(uci) + + if not move: + return move + + move = self._to_chess960(move) + move = self._from_chess960(move.from_square, move.to_square, move.promotion) + + if not self.is_legal(move): + raise ValueError("illegal uci: {0} in {1}".format(repr(uci), self.fen())) + + return move + + def push_uci(self, uci): + """ + Parses a move in UCI notation and puts it on the move stack. + + Raises :exc:`ValueError` if the move is invalid or illegal in the + current position (but not a null move). + + Returns the move. + """ + move = self.parse_uci(uci) + self.push(move) + return move + + def is_en_passant(self, move): + """Checks if the given pseudo-legal move is an en passant capture.""" + diff = abs(move.to_square - move.from_square) + + if diff not in (7, 9): + return False + + if not self.pawns & BB_SQUARES[move.from_square]: + return False + + if self.occupied & BB_SQUARES[move.to_square]: + return False + + return True + + def is_capture(self, move): + """Checks if the given pseudo-legal move is a capture.""" + return BB_SQUARES[move.to_square] & self.occupied_co[not self.turn] or self.is_en_passant(move) + + def is_castling(self, move): + """Checks if the given pseudo-legal move is a castling move.""" + if BB_SQUARES[move.to_square] & self.occupied_co[self.turn] & self.rooks: + return True + + diff = file_index(move.from_square) - file_index(move.to_square) + if abs(diff) > 1 and self.piece_type_at(move.from_square) == KING: + return True + + return False + + def is_kingside_castling(self, move): + """ + Checks if the given pseudo-legal move is a kingside castling move. + """ + return self.is_castling(move) and file_index(move.to_square) > file_index(move.from_square) + + def is_queenside_castling(self, move): + """ + Checks if the given pseudo-legal move is a queenside castling move. + """ + return self.is_castling(move) and file_index(move.to_square) < file_index(move.from_square) + + def clean_castling_rights(self): + """ + Returns valid castling rights filtered from + :data:`~chess.Board.castling_rights`. + """ + castling = self.castling_rights & self.rooks + white_castling = castling & BB_RANK_1 & self.occupied_co[WHITE] + black_castling = castling & BB_RANK_8 & self.occupied_co[BLACK] + + if not self.chess960: + # The rooks must be on a1, h1, a8 or h8. + white_castling &= (BB_A1 | BB_H1) + black_castling &= (BB_A8 | BB_H8) + + # The kings must be on e1 or e8. + if not self.occupied_co[WHITE] & self.kings & BB_E1: + white_castling = 0 + if not self.occupied_co[BLACK] & self.kings & BB_E8: + black_castling = 0 + + return white_castling | black_castling + else: + # The kings must be on the backrank. + if not self.occupied_co[WHITE] & self.kings & BB_RANK_1: + white_castling = 0 + if not self.occupied_co[BLACK] & self.kings & BB_RANK_8: + black_castling = 0 + + # Find the kings. + white_king = bit_scan(self.occupied_co[WHITE] & self.kings) + black_king = bit_scan(self.occupied_co[BLACK] & self.kings) + + # Kings must be on the same file, giving preference to the e-file + # and then to white. + if white_castling and black_castling: + if file_index(white_king) != file_index(black_king): + if file_index(black_king) == 4: + white_castling = 0 + else: + black_castling = 0 + + # There are only two ways of castling, a-side and h-side, and the + # king must be between the rooks. + white_a_side = (white_castling & -white_castling) + + white_h_side = BB_VOID + while white_castling: + white_h_side = (white_castling & -white_castling) + white_castling = white_castling & (white_castling - 1) + + if white_a_side and bit_scan(white_a_side) > white_king: + white_a_side = BB_VOID + if white_h_side and bit_scan(white_h_side) < white_king: + white_h_side = BB_VOID + + black_a_side = (black_castling & -black_castling) + + black_h_side = BB_VOID + while black_castling: + black_h_side = (black_castling & -black_castling) + black_castling = black_castling & (black_castling - 1) + + if black_a_side and bit_scan(black_a_side) > black_king: + black_a_side = BB_VOID + if black_h_side and bit_scan(black_h_side) < black_king: + black_h_side = BB_VOID + + # Rooks must be on the same file, giving preference to the a or h + # file and then to white. + if black_a_side and white_a_side and file_index(bit_scan(black_a_side)) != file_index(bit_scan(white_a_side)): + if black_a_side == BB_A8: + white_a_side = BB_VOID + else: + black_a_side = BB_VOID + + if black_h_side and white_h_side and file_index(bit_scan(black_h_side)) != file_index(bit_scan(white_h_side)): + if black_h_side == BB_H8: + white_h_side = BB_VOID + else: + black_h_side = BB_VOID + + # Done. + return black_a_side | black_h_side | white_a_side | white_h_side + + def has_castling_rights(self, color): + """Checks if the given side has castling rights.""" + backrank = BB_RANK_1 if color == WHITE else BB_RANK_8 + return bool(self.clean_castling_rights() & backrank) + + def has_kingside_castling_rights(self, color): + """ + Checks if the given side has kingside (that is h-side in Chess960) + castling rights. + """ + king_mask = self.kings & self.occupied_co[color] + if not king_mask: + return False + + king_file = file_index(bit_scan(king_mask)) + backrank = BB_RANK_1 if color == WHITE else BB_RANK_8 + + castling_rights = self.clean_castling_rights() & backrank + while castling_rights: + rook = castling_rights & -castling_rights + rook_file = file_index(bit_scan(rook)) + + if rook_file > king_file: + return True + + castling_rights = castling_rights & (castling_rights - 1) + + return False + + def has_queenside_castling_rights(self, color): + """ + Checks if the given side has queenside (that is a-side in Chess960) + castling rights. + """ + king_mask = self.kings & self.occupied_co[color] + if not king_mask: + return False + + king_file = file_index(bit_scan(king_mask)) + backrank = BB_RANK_1 if color == WHITE else BB_RANK_8 + + castling_rights = self.clean_castling_rights() & backrank + while castling_rights: + rook = castling_rights & -castling_rights + rook_file = file_index(bit_scan(rook)) + + if rook_file < king_file: + return True + + castling_rights = castling_rights & (castling_rights - 1) + + return False + + def has_chess960_castling_rights(self): + """ + Checks if there are castling rights that are only possible in Chess960. + """ + # Get valid Chess960 castling rights. + chess960 = self.chess960 + self.chess960 = True + castling_rights = self.clean_castling_rights() + self.chess960 = chess960 + + # Standard chess castling rights can only be on the standard + # starting rook squares. + if castling_rights & ~(BB_A1 | BB_A8 | BB_H1 | BB_H8): + return True + + # If there are any castling rights in standard chess, the king must be + # on e1 or e8. + if castling_rights & BB_RANK_1 and not self.occupied_co[WHITE] & self.kings & BB_E1: + return True + if castling_rights & BB_RANK_8 and not self.occupied_co[BLACK] & self.kings & BB_E8: + return True + + return False + + def status(self): + """ + Gets a bitmask of possible problems with the position. + + Move making, generation and validation are only guaranteed to work on + a completely valid board. + + :data:`~chess.STATUS_VALID` for a completely valid board. + + Otherwise bitwise combinations of: + :data:`~chess.STATUS_NO_WHITE_KING`, + :data:`~chess.STATUS_NO_BLACK_KING`, + :data:`~chess.STATUS_TOO_MANY_KINGS`, + :data:`~chess.STATUS_TOO_MANY_WHITE_PAWNS`, + :data:`~chess.STATUS_TOO_MANY_BLACK_PAWNS`, + :data:`~chess.STATUS_PAWNS_ON_BACKRANK`, + :data:`~chess.STATUS_TOO_MANY_WHITE_PIECES`, + :data:`~chess.STATUS_TOO_MANY_BLACK_PIECES`, + :data:`~chess.STATUS_BAD_CASTLING_RIGHTS`, + :data:`~chess.STATUS_INVALID_EP_SQUARE`, + :data:`~chess.STATUS_OPPOSITE_CHECK`. + """ + errors = STATUS_VALID + + # There must be exactly one king of each color. + if not self.occupied_co[WHITE] & self.kings: + errors |= STATUS_NO_WHITE_KING + if not self.occupied_co[BLACK] & self.kings: + errors |= STATUS_NO_BLACK_KING + if pop_count(self.occupied & self.kings) > 2: + errors |= STATUS_TOO_MANY_KINGS + + # There can not be more than 16 pieces of any color. + if pop_count(self.occupied_co[WHITE]) > 16: + errors |= STATUS_TOO_MANY_WHITE_PIECES + if pop_count(self.occupied_co[BLACK]) > 16: + errors |= STATUS_TOO_MANY_BLACK_PIECES + + # There can not be more than eight pawns of any color. + if pop_count(self.occupied_co[WHITE] & self.pawns) > 8: + errors |= STATUS_TOO_MANY_WHITE_PAWNS + if pop_count(self.occupied_co[BLACK] & self.pawns) > 8: + errors |= STATUS_TOO_MANY_BLACK_PAWNS + + # Pawns can not be on the backrank. + if self.pawns & (BB_RANK_1 | BB_RANK_8): + errors |= STATUS_PAWNS_ON_BACKRANK + + # Castling rights. + if self.castling_rights != self.clean_castling_rights(): + errors |= STATUS_BAD_CASTLING_RIGHTS + + # En passant. + if self.ep_square: + if self.turn == WHITE: + ep_rank = 5 + pawn_mask = shift_down(BB_SQUARES[self.ep_square]) + seventh_rank_mask = shift_up(BB_SQUARES[self.ep_square]) + else: + ep_rank = 2 + pawn_mask = shift_up(BB_SQUARES[self.ep_square]) + seventh_rank_mask = shift_down(BB_SQUARES[self.ep_square]) + + # The en passant square must be on the third or sixth rank. + if rank_index(self.ep_square) != ep_rank: + errors |= STATUS_INVALID_EP_SQUARE + + # The last move must have been a double pawn push, so there must + # be a pawn of the correct color on the fourth or fifth rank. + if not self.pawns & self.occupied_co[not self.turn] & pawn_mask: + errors |= STATUS_INVALID_EP_SQUARE + + # And the en passant square must be empty. + if self.occupied & BB_SQUARES[self.ep_square]: + errors |= STATUS_INVALID_EP_SQUARE + + # And the second rank must be empty. + if self.occupied & seventh_rank_mask: + errors |= STATUS_INVALID_EP_SQUARE + + # Side to move giving check. + if self.was_into_check(): + errors |= STATUS_OPPOSITE_CHECK + + return errors + + def is_valid(self): + """ + Checks if the board is valid. + + Move making, generation and validation are only guaranteed to work on + a completely valid board. + + See :func:`~chess.Board.status()` for details. + """ + return self.status() == STATUS_VALID + + def generate_attacks(self): + if self.attacks_valid: + return + + self.attacks_from = collections.defaultdict(int) + self.attacks_to = collections.defaultdict(int) + + # Produce piece attacks. + non_pawns = self.occupied & ~self.pawns + queens_or_rooks = self.queens | self.rooks + queens_or_bishops = self.queens | self.bishops + + while non_pawns: + from_square = non_pawns & -non_pawns + rank_pieces = RANK_MASK[from_square & queens_or_rooks] & self.occupied + file_pieces = FILE_MASK[from_square & queens_or_rooks] & self.occupied + ne_pieces = DIAG_MASK_NE[from_square & queens_or_bishops] & self.occupied + nw_pieces = DIAG_MASK_NW[from_square & queens_or_bishops] & self.occupied + + moves = (KING_MOVES[from_square & self.kings] | + KNIGHT_MOVES[from_square & self.knights] | + RANK_ATTACKS[from_square & queens_or_rooks][rank_pieces] | + FILE_ATTACKS[from_square & queens_or_rooks][file_pieces] | + DIAG_ATTACKS_NE[from_square & queens_or_bishops][ne_pieces] | + DIAG_ATTACKS_NW[from_square & queens_or_bishops][nw_pieces]) + + while moves: + to_square = moves & -moves + self.attacks_from[from_square] |= to_square + self.attacks_to[to_square] |= from_square + moves = moves & (moves - 1) + + non_pawns = non_pawns & (non_pawns - 1) + + # Produce pawn attacks. + for white_to_move in [False, True]: + if white_to_move: + pawns = self.pawns & self.occupied_co[WHITE] + right_captures = pawns << 9 & ~BB_FILE_A & BB_ALL + left_captures = pawns << 7 & ~BB_FILE_H & BB_ALL + else: + pawns = self.pawns & self.occupied_co[BLACK] + right_captures = pawns >> 7 & ~BB_FILE_A + left_captures = pawns >> 9 & ~BB_FILE_H + + while right_captures: + to_square = right_captures & -right_captures + + if white_to_move: + from_square = to_square >> 9 + else: + from_square = to_square << 7 + + self.attacks_from[from_square] |= to_square + self.attacks_to[to_square] |= from_square + + right_captures = right_captures & (right_captures - 1) + + while left_captures: + to_square = left_captures & -left_captures + + if white_to_move: + from_square = to_square >> 7 + else: + from_square = to_square << 9 + + self.attacks_from[from_square] |= to_square + self.attacks_to[to_square] |= from_square + + left_captures = left_captures & (left_captures - 1) + + # Produce en passant attacks. Here we are actually targeting the + # pawn, not the en passant square. + if self.ep_square: + if self.turn == WHITE: + capturing_pawns = self.pawns & self.occupied_co[WHITE] & BB_RANK_5 + else: + capturing_pawns = self.pawns & self.occupied_co[BLACK] & BB_RANK_4 + + ep_square_mask = BB_SQUARES[self.ep_square] + double_pawn = ep_square_mask << 8 if self.turn == BLACK else ep_square_mask >> 8 + + # Left side capture. + if ep_square_mask & ~BB_FILE_A: + left_file = FILE_MASK[ep_square_mask] >> 1 + capturing_pawn = capturing_pawns & left_file + if capturing_pawn: + self.attacks_from[capturing_pawn] |= double_pawn + self.attacks_to[double_pawn] |= capturing_pawn + + # Right side capture. + if ep_square_mask & ~BB_FILE_H: + right_file = FILE_MASK[ep_square_mask] << 1 + capturing_pawn = capturing_pawns & right_file + if capturing_pawn: + self.attacks_from[capturing_pawn] |= double_pawn + self.attacks_to[double_pawn] |= capturing_pawn + + # Attacks are now valid. + self.attacks_valid = True + + def _pinned(self, color, square_mask): + self.generate_attacks() + + if color == WHITE: + king = self.kings & self.occupied_co[WHITE] + other_pieces = self.occupied_co[BLACK] + else: + king = self.kings & self.occupied_co[BLACK] + other_pieces = self.occupied_co[WHITE] + sliders = (self.rooks | self.bishops | self.queens) & other_pieces + + mask = BB_ALL + + for direction_masks, attack_table in [(FILE_MASK, FILE_ATTACKS), + (RANK_MASK, RANK_ATTACKS), + (DIAG_MASK_NW, DIAG_ATTACKS_NW), + (DIAG_MASK_NE, DIAG_ATTACKS_NE)]: + if direction_masks[square_mask] & direction_masks[king] & self.attacks_to[square_mask] & other_pieces: + attackers = direction_masks[king] & self.attacks_to[square_mask] & sliders + while attackers: + attacker = attackers & -attackers + + pieces = direction_masks[king] & self.occupied & ~square_mask + if attack_table[attacker][pieces] & king: + mask = direction_masks[king] + + attackers = attackers & (attackers - 1) + + break + + return mask + + def generate_legal_moves(self, castling=True, pawns=True, knights=True, bishops=True, rooks=True, queens=True, king=True): + if self.is_check(): + return self.generate_evasions(castling=castling, pawns=pawns, knights=knights, bishops=bishops, rooks=rooks, queens=queens, king=king) + else: + return self.generate_non_evasions(castling=castling, pawns=pawns, knights=knights, bishops=bishops, rooks=rooks, queens=queens, king=king) + + def generate_non_evasions(self, castling=True, pawns=True, knights=True, bishops=True, rooks=True, queens=True, king=True): + self.generate_attacks() + + our_pieces = self.occupied_co[self.turn] + their_pieces = self.occupied_co[not self.turn] + + # Selective move generation. + selected_pieces = BB_VOID + if knights: + selected_pieces |= self.knights + if bishops: + selected_pieces |= self.bishops + if rooks: + selected_pieces |= self.rooks + if queens: + selected_pieces |= self.queens + if king: + selected_pieces |= self.kings + + # Generate piece moves. + non_pawns = our_pieces & selected_pieces + while non_pawns: + from_square = non_pawns & -non_pawns + from_square_index = bit_scan(from_square) + + mask = self._pinned(self.turn, from_square) + moves = self.attacks_from[from_square] & ~our_pieces & mask + while moves: + to_square = moves & -moves + + if from_square & self.kings and self.attacks_to[to_square] & their_pieces: + # Do not move the king into check. + pass + else: + yield Move(from_square_index, bit_scan(to_square)) + + moves = moves & (moves - 1) + + non_pawns = non_pawns & (non_pawns - 1) + + # Generate castling moves. Since we are generating non-evasions we + # already know that we are not in check. + if castling: + for move in self.generate_castling_moves(): + yield move + + # The remaining moves are all pawn moves. + if not pawns: + return + + # Generate pawn captures. + pawns = self.pawns & our_pieces + if self.turn == WHITE: + right_captures = pawns << 9 & their_pieces & ~BB_FILE_A & BB_ALL + left_captures = pawns << 7 & their_pieces & ~BB_FILE_H & BB_ALL + else: + right_captures = pawns >> 7 & their_pieces & ~BB_FILE_A + left_captures = pawns >> 9 & their_pieces & ~BB_FILE_H + + # Yield right captures. + while right_captures: + to_square = right_captures & -right_captures + to_square_index = bit_scan(to_square) + + if self.turn == WHITE: + from_square = to_square >> 9 + else: + from_square = to_square << 7 + from_square_index = bit_scan(from_square) + + mask = self._pinned(self.turn, from_square) + if mask & to_square: + if BB_RANK_1 & to_square or BB_RANK_8 & to_square: + yield Move(from_square_index, to_square_index, QUEEN) + yield Move(from_square_index, to_square_index, ROOK) + yield Move(from_square_index, to_square_index, BISHOP) + yield Move(from_square_index, to_square_index, KNIGHT) + else: + yield Move(from_square_index, to_square_index) + + right_captures = right_captures & (right_captures - 1) + + # Yield left captures. + while left_captures: + to_square = left_captures & -left_captures + to_square_index = bit_scan(to_square) + + if self.turn == WHITE: + from_square = to_square >> 7 + else: + from_square = to_square << 9 + from_square_index = bit_scan(from_square) + + mask = self._pinned(self.turn, from_square) + if mask & to_square: + if BB_RANK_1 & to_square or BB_RANK_8 & to_square: + yield Move(from_square_index, to_square_index, QUEEN) + yield Move(from_square_index, to_square_index, ROOK) + yield Move(from_square_index, to_square_index, BISHOP) + yield Move(from_square_index, to_square_index, KNIGHT) + else: + yield Move(from_square_index, to_square_index) + + left_captures = left_captures & (left_captures - 1) + + # Generate en passant captures. + ep_square_mask = BB_SQUARES[self.ep_square] if self.ep_square else BB_VOID + if ep_square_mask: + if self.turn == WHITE: + capturing_pawns = pawns & BB_RANK_5 + else: + capturing_pawns = pawns & BB_RANK_4 + + # Left side capture. + if ep_square_mask & ~BB_FILE_A: + left_file = FILE_MASK[ep_square_mask] >> 1 + capturing_pawn = capturing_pawns & left_file + if capturing_pawn: + mask = self._pinned(self.turn, capturing_pawn) + if mask & ep_square_mask: + yield Move(bit_scan(capturing_pawn), self.ep_square) + + # Right side capture. + if ep_square_mask & ~BB_FILE_H: + right_file = FILE_MASK[ep_square_mask] << 1 + capturing_pawn = capturing_pawns & right_file + if capturing_pawn: + mask = self._pinned(self.turn, capturing_pawn) + if mask & ep_square_mask: + yield Move(bit_scan(capturing_pawn), self.ep_square) + + # Prepare pawn advance generation. + if self.turn == WHITE: + single_moves = pawns << 8 & ~self.occupied + double_moves = single_moves << 8 & ~self.occupied & BB_RANK_4 + else: + single_moves = pawns >> 8 & ~self.occupied + double_moves = single_moves >> 8 & ~self.occupied & BB_RANK_5 + + # Generate single pawn moves. + while single_moves: + to_square = single_moves & -single_moves + to_square_index = bit_scan(to_square) + + if self.turn == WHITE: + from_square = to_square >> 8 + else: + from_square = to_square << 8 + from_square_index = bit_scan(from_square) + + mask = self._pinned(self.turn, from_square) + if mask & to_square: + if BB_RANK_1 & to_square or BB_RANK_8 & to_square: + yield Move(from_square_index, to_square_index, QUEEN) + yield Move(from_square_index, to_square_index, ROOK) + yield Move(from_square_index, to_square_index, BISHOP) + yield Move(from_square_index, to_square_index, KNIGHT) + else: + yield Move(from_square_index, to_square_index) + + single_moves = single_moves & (single_moves - 1) + + # Generate double pawn moves. + while double_moves: + to_square = double_moves & -double_moves + to_square_index = bit_scan(to_square) + + if self.turn == WHITE: + from_square = to_square >> 16 + else: + from_square = to_square << 16 + from_square_index = bit_scan(from_square) + + mask = self._pinned(self.turn, from_square) + if mask & to_square: + yield Move(from_square_index, to_square_index) + + double_moves = double_moves & (double_moves - 1) + + def generate_castling_moves(self): + if self.is_check(): + return + + king = self.occupied_co[self.turn] & self.kings + king_file_index = file_index(bit_scan(king)) + backrank = BB_RANK_1 if self.turn == WHITE else BB_RANK_8 + + bb_a = BB_FILE_A & backrank + bb_c = BB_FILE_C & backrank + bb_d = BB_FILE_D & backrank + bb_f = BB_FILE_F & backrank + bb_g = BB_FILE_G & backrank + + candidates = self.clean_castling_rights() & backrank + while candidates: + rook = candidates & -candidates + rook_file_index = file_index(bit_scan(rook)) + + a_side = rook_file_index < king_file_index + + # In the special case where we castle queenside and our rook + # shielded us from an attack from a1 or a8, castling would be + # into check. + if a_side and rook & BB_FILE_B and self.occupied_co[not self.turn] & (self.queens | self.rooks) & bb_a: + candidates = candidates & (candidates - 1) + continue + + empty_for_rook = BB_VOID + empty_for_king = BB_VOID + + if a_side: + if not rook & bb_d: + empty_for_rook = ( + RANK_ATTACKS[rook][rook | bb_d] & + RANK_ATTACKS[bb_d][bb_d | rook]) + empty_for_rook |= bb_d + + if not king & bb_c: + empty_for_king = ( + RANK_ATTACKS[king][king | bb_c] & + RANK_ATTACKS[bb_c][bb_c | king]) + empty_for_king |= bb_c + else: + if not rook & bb_f: + empty_for_rook = ( + RANK_ATTACKS[rook][rook | bb_f] & + RANK_ATTACKS[bb_f][bb_f | rook]) + empty_for_rook |= bb_f + + if not king & bb_g: + empty_for_king = ( + RANK_ATTACKS[king][king | bb_g] & + RANK_ATTACKS[bb_g][bb_g | king]) + empty_for_king |= bb_g + + empty_for_rook &= ~king + empty_for_rook &= ~rook + + empty_for_king &= ~king + not_attacked_for_king = empty_for_king + empty_for_king &= ~rook + + if not self.occupied & (empty_for_king | empty_for_rook): + none_attacked = True + while not_attacked_for_king: + test_attack = not_attacked_for_king & -not_attacked_for_king + if self.attacks_to[test_attack] & self.occupied_co[not self.turn]: + none_attacked = False + break + not_attacked_for_king = not_attacked_for_king & (not_attacked_for_king - 1) + + if none_attacked: + yield self._from_chess960(bit_scan(king), bit_scan(rook)) + + candidates = candidates & (candidates - 1) + + def generate_evasions(self, castling=True, pawns=True, knights=True, bishops=True, rooks=True, queens=True, king=True): + self.generate_attacks() + + # Selective move generation. + selected_pieces = BB_VOID + if pawns: + selected_pieces |= self.pawns + if knights: + selected_pieces |= self.knights + if bishops: + selected_pieces |= self.bishops + if rooks: + selected_pieces |= self.rooks + if queens: + selected_pieces |= self.queens + if king: + selected_pieces |= self.kings + + # Prepare basic information. + our_pieces = self.occupied_co[self.turn] + their_pieces = self.occupied_co[not self.turn] + our_king = self.kings & our_pieces + + our_pawns = self.pawns & our_pieces + en_passant_mask = BB_SQUARES[self.ep_square] if self.ep_square else 0 + double_pawn_mask = BB_VOID + en_passant_capturers = BB_VOID + + if self.turn == WHITE: + forward_pawns = our_pawns << 8 & BB_ALL + double_forward_pawns = (our_pawns & BB_RANK_2) << 16 & BB_ALL + + if en_passant_mask: + double_pawn_mask = en_passant_mask >> 8 + + # Capture torward the right. + if en_passant_mask & ~BB_FILE_A: + en_passant_capturers |= our_pawns & BB_RANK_5 & FILE_MASK[en_passant_mask] >> 1 + + # Capture toward the left. + if en_passant_mask & ~BB_FILE_H: + en_passant_capturers |= our_pawns & BB_RANK_5 & FILE_MASK[en_passant_mask] << 1 + else: + forward_pawns = our_pawns >> 8 + double_forward_pawns = (our_pawns & BB_RANK_7) >> 16 + + if en_passant_mask: + double_pawn_mask = en_passant_mask << 8 + + # Capture torward the right. + if en_passant_mask & ~BB_FILE_A: + en_passant_capturers |= our_pawns & BB_RANK_4 & FILE_MASK[en_passant_mask] >> 1 + + # Capture toward the left. + if en_passant_mask & ~BB_FILE_H: + en_passant_capturers |= our_pawns & BB_RANK_4 & FILE_MASK[en_passant_mask] << 1 + + # Look up all pieces giving check. + king_attackers = self.attacks_to[our_king] & their_pieces + king_attackers_index = bit_scan(king_attackers) + assert king_attackers + num_attackers = pop_count(king_attackers) + + if num_attackers == 1: + # There is one attacker, so it can be captured. If there are more + # than one attackers we can not capture both at the same time, + # so the king would have to be moved. + attacker_attackers = self.attacks_to[king_attackers] & our_pieces & selected_pieces & ~our_king + while attacker_attackers: + attacker = attacker_attackers & -attacker_attackers + attacker_index = bit_scan(attacker) + + mask = self._pinned(self.turn, attacker) + if king_attackers & mask: + if king_attackers & double_pawn_mask and attacker & en_passant_capturers: + # Capture the attacking pawn en passant. + yield Move(attacker_index, self.ep_square) + elif attacker & our_pawns and king_attackers & (BB_RANK_8 | BB_RANK_1): + # Capture the attacker with a pawn and promote. + yield Move(attacker_index, king_attackers_index, QUEEN) + yield Move(attacker_index, king_attackers_index, ROOK) + yield Move(attacker_index, king_attackers_index, BISHOP) + yield Move(attacker_index, king_attackers_index, KNIGHT) + else: + yield Move(attacker_index, king_attackers_index) + + attacker_attackers = attacker_attackers & (attacker_attackers - 1) + + # Eliminate the sliding moves where we are still in check by the same + # piece. + attackers = king_attackers + king_rank_mask = RANK_MASK[our_king] + king_file_mask = FILE_MASK[our_king] + king_diag_ne = DIAG_MASK_NE[our_king] + king_diag_nw = DIAG_MASK_NW[our_king] + attacker_masks = 0 + while attackers: + attacker = attackers & -attackers + + if attacker & (self.queens | self.rooks | self.bishops): + if king_rank_mask == RANK_MASK[attacker]: + attacker_masks |= king_rank_mask + if king_file_mask == FILE_MASK[attacker]: + attacker_masks |= king_file_mask + if king_diag_ne == DIAG_MASK_NE[attacker]: + attacker_masks |= king_diag_ne + if king_diag_nw == DIAG_MASK_NW[attacker]: + attacker_masks |= king_diag_nw + + attackers = attackers & (attackers - 1) + + if king: + # Move the king. Capturing other pieces or even the attacker is + # allowed. + moves = KING_MOVES[our_king] & ~our_pieces + while moves: + to_square = moves & -moves + to_square_index = bit_scan(to_square) + + attacked_square = self.attacks_to[to_square] & their_pieces + + capture_attacker = to_square & attacker_masks & king_attackers + any_capture = to_square & ~attacker_masks + + if to_square & their_pieces and not attacked_square and (capture_attacker or any_capture): + yield Move(bit_scan(our_king), to_square_index) + elif to_square and not attacked_square and not (to_square & attacker_masks): + yield Move(bit_scan(our_king), to_square_index) + + moves = moves & (moves - 1) + + # Block the check. + if num_attackers == 1: + # Determine empty squares between the attacker and the king in + # order to block the check. + if king_rank_mask == RANK_MASK[king_attackers]: + rank_pieces = king_rank_mask & self.occupied + moves = RANK_ATTACKS[our_king][rank_pieces] & ~self.occupied & RANK_ATTACKS[king_attackers][rank_pieces] + elif king_file_mask == FILE_MASK[king_attackers]: + file_pieces = king_file_mask & self.occupied + moves = FILE_ATTACKS[our_king][file_pieces] & ~self.occupied & FILE_ATTACKS[king_attackers][file_pieces] + elif king_diag_ne == DIAG_MASK_NE[king_attackers]: + ne_pieces = king_diag_ne & self.occupied + moves = DIAG_ATTACKS_NE[our_king][ne_pieces] & ~self.occupied & DIAG_ATTACKS_NE[king_attackers][ne_pieces] + elif king_diag_nw == DIAG_MASK_NW[king_attackers]: + nw_pieces = king_diag_nw & self.occupied + moves = DIAG_ATTACKS_NW[our_king][nw_pieces] & ~self.occupied & DIAG_ATTACKS_NW[king_attackers][nw_pieces] + else: + moves = 0 + + # Try moving all pieces (except pawns and the king) to the empty + # squares. + while moves: + empty_square = moves & -moves + empty_square_index = bit_scan(empty_square) + + blockers = self.attacks_to[empty_square] & ~our_pawns & ~our_king & ~their_pieces & selected_pieces + while blockers: + blocker = blockers & -blockers + + mask = self._pinned(self.turn, blocker) + if mask & empty_square: + yield Move(bit_scan(blocker), empty_square_index) + + blockers = blockers & (blockers - 1) + + # The following is all about handling pawns. + if not pawns: + moves = moves & (moves - 1) + continue + + # Generate pawn advances to the empty square. + blocking_pawn = empty_square & forward_pawns + if blocking_pawn: + if self.turn == WHITE: + from_square = blocking_pawn >> 8 + else: + from_square = blocking_pawn << 8 + from_square_index = bit_scan(from_square) + + mask = self._pinned(self.turn, from_square) + if mask & empty_square: + if empty_square & BB_RANK_1 or empty_square & BB_RANK_8: + yield Move(from_square_index, empty_square_index, QUEEN) + yield Move(from_square_index, empty_square_index, ROOK) + yield Move(from_square_index, empty_square_index, BISHOP) + yield Move(from_square_index, empty_square_index, KNIGHT) + else: + yield Move(from_square_index, empty_square_index) + else: + # Generate double pawn advances to the empty square. + # Make sure the square inbetween is not occupied. + blocking_pawn = empty_square & double_forward_pawns + if blocking_pawn: + if self.turn == WHITE: + mask = self._pinned(self.turn, blocking_pawn >> 16) + if mask & empty_square and (empty_square >> 8) & ~self.occupied: + yield Move(bit_scan(blocking_pawn >> 16), empty_square_index) + else: + mask = self._pinned(self.turn, blocking_pawn << 16) + if mask & empty_square and (empty_square << 8) & ~self.occupied: + yield Move(bit_scan(blocking_pawn << 16), empty_square_index) + + moves = moves & (moves - 1) + + def _from_chess960(self, from_square, to_square, promotion=None): + if not self.chess960 and from_square in [E1, E8] and to_square in [A1, H1, A8, H8] and self.piece_type_at(from_square) == KING: + if from_square == E1: + if to_square == H1: + return Move(E1, G1) + elif to_square == A1: + return Move(E1, C1) + elif from_square == E8: + if to_square == H8: + return Move(E8, G8) + elif to_square == A8: + return Move(E8, C8) + + return Move(from_square, to_square, promotion) + + def _to_chess960(self, move): + if move.from_square in [E1, E8] and move.to_square in [C1, G1, C8, G8] and self.piece_type_at(move.from_square) == KING and self.piece_type_at(move.to_square) != ROOK: + if move.from_square == E1: + if move.to_square == G1: + return Move(E1, H1) + elif move.to_square == C1: + return Move(E1, A1) + elif move.from_square == E8: + if move.to_square == G8: + return Move(E8, H8) + elif move.to_square == C8: + return Move(E8, A8) + + return move + + def __repr__(self): + if not self.chess960: + return "Board('{0}')".format(self.fen()) + else: + return "Board('{0}', chess960=True)".format(self.fen()) + + def __ne__(self, board): + # Compare base board. + ne = super(Board, self).__ne__(board) + if ne is NotImplemented: + return NotImplemented + elif ne: + return True + + # Compare additional information. + try: + if self.chess960 != board.chess960: + return True + elif self.ep_square != board.ep_square: + return True + elif self.castling_rights != board.castling_rights: + return True + elif self.turn != board.turn: + return True + elif self.fullmove_number != board.fullmove_number: + return True + elif self.halfmove_clock != board.halfmove_clock: + return True + else: + return False + except AttributeError: + return NotImplemented + + def zobrist_hash(self, array=None): + """ + Returns a Zobrist hash of the current position. + + A zobrist hash is an exclusive or of pseudo random values picked from + an array. Which values are picked is decided by features of the + position, such as piece positions, castling rights and en passant + squares. For this implementation an array of 781 values is required. + + The default behaviour is to use values from + :data:`~chess.POLYGLOT_RANDOM_ARRAY`, which makes for hashes compatible + with polyglot opening books. + """ + # Hash in the board setup. + zobrist_hash = self.board_zobrist_hash(array) + + # Default random array is polyglot compatible. + if array is None: + array = POLYGLOT_RANDOM_ARRAY + + # Hash in the castling flags. + if self.has_kingside_castling_rights(WHITE): + zobrist_hash ^= array[768] + if self.has_queenside_castling_rights(WHITE): + zobrist_hash ^= array[768 + 1] + if self.has_kingside_castling_rights(BLACK): + zobrist_hash ^= array[768 + 2] + if self.has_queenside_castling_rights(BLACK): + zobrist_hash ^= array[768 + 3] + + # Hash in the en passant file. + if self.ep_square: + # But only if theres actually a pawn ready to capture it. Legality + # of the potential capture is irrelevant. + if self.turn == WHITE: + ep_mask = shift_down(BB_SQUARES[self.ep_square]) + else: + ep_mask = shift_up(BB_SQUARES[self.ep_square]) + ep_mask = shift_left(ep_mask) | shift_right(ep_mask) + + if ep_mask & self.pawns & self.occupied_co[self.turn]: + zobrist_hash ^= array[772 + file_index(self.ep_square)] + + # Hash in the turn. + if self.turn == WHITE: + zobrist_hash ^= array[780] + + return zobrist_hash + + def copy(self): + board = super(Board, self).copy() + + board.chess960 = self.chess960 + + board.ep_square = self.ep_square + board.castling_rights = self.castling_rights + board.turn = self.turn + board.fullmove_number = self.fullmove_number + board.halfmove_clock = self.halfmove_clock + + board.halfmove_clock_stack = copy.copy(self.halfmove_clock_stack) + board.captured_piece_stack = copy.copy(self.captured_piece_stack) + board.castling_right_stack = copy.copy(self.castling_right_stack) + board.ep_square_stack = copy.copy(self.ep_square_stack) + board.move_stack = copy.deepcopy(self.move_stack) + + board.transpositions = copy.copy(self.transpositions) + + board.attacks_valid = self.attacks_valid + board.attacks_from = copy.copy(self.attacks_from) + board.attacks_to = copy.copy(self.attacks_to) + board.attacks_valid_stack = copy.copy(self.attacks_valid_stack) + board.attacks_valid_stack = copy.copy(self.attacks_from_stack) + board.attacks_to_stack = copy.copy(self.attacks_to_stack) + + return board + + @classmethod + def empty(cls, chess960=False): + """Creates a new empty board. Also see :func:`~chess.Board.clear()`.""" + return cls(None, chess960=chess960) + + @classmethod + def from_epd(cls, epd, chess960=False): + """ + Creates a new board from an EPD string. See + :func:`~chess.Board.set_epd()`. + + Returns the board and the dictionary of parsed operations as a tuple. + """ + board = cls.empty(chess960=chess960) + return board, board.set_epd(epd) + + +class PseudoLegalMoveGenerator(object): + + def __init__(self, board): + self.board = board + + def __bool__(self): + return any(self.board.generate_pseudo_legal_moves()) + + __nonzero__ = __bool__ + + def __len__(self): + return sum(1 for _ in self.board.generate_pseudo_legal_moves()) + + def __iter__(self): + return self.board.generate_pseudo_legal_moves() + + def __contains__(self, move): + return self.board.is_pseudo_legal(move) + + def __repr__(self): + builder = [] + + for move in self: + if self.board.is_legal(move): + builder.append(self.board.san(move)) + else: + builder.append(self.board.uci(move)) + + sans = ", ".join(builder) + + return "".format(hex(id(self)), sans) + + +class LegalMoveGenerator(object): + + def __init__(self, board): + self.board = board + + def __bool__(self): + return any(self.board.generate_legal_moves()) + + __nonzero__ = __bool__ + + def __len__(self): + return sum(1 for _ in self.board.generate_legal_moves()) + + def __iter__(self): + return self.board.generate_legal_moves() + + def __contains__(self, move): + return self.board.is_legal(move) + + def __repr__(self): + sans = ", ".join(self.board.san(move) for move in self) + return "".format(hex(id(self)), sans) + + +class SquareSet(object): + """ + A set of squares. + + >>> squares = chess.SquareSet(chess.BB_B1 | chess.BB_G1) + >>> squares + SquareSet(0b1000010) + + >>> print(squares) + . . . . . . . . + . . . . . . . . + . . . . . . . . + . . . . . . . . + . . . . . . . . + . . . . . . . . + . . . . . . . . + . 1 . . . . 1 . + + >>> len(squares) + 2 + + >>> bool(squares) + True + + >>> chess.B1 in squares + True + + >>> for square in squares: + ... # 1 -- chess.B1 + ... # 6 -- chess.G1 + ... print(square) + ... + 1 + 6 + + >>> list(squares) + [1, 6] + + Square sets are internally represented by 64 bit integer masks of the + included squares. Bitwise operations can be used to compute unions, + intersections and shifts. + + >>> int(squares) + 66 + + Also supports common set operations like + :func:`~chess.SquareSet.issubset()`, :func:`~chess.SquareSet.issuperset()`, + :func:`~chess.SquareSet.union()`, :func:`~chess.SquareSet.intersection()`, + :func:`~chess.SquareSet.difference()`, + :func:`~chess.SquareSet.symmetric_difference()` and + :func:`~chess.SquareSet.copy()` as well as + :func:`~chess.SquareSet.update()`, + :func:`~chess.SquareSet.intersection_update()`, + :func:`~chess.SquareSet.difference_update()`, + :func:`~chess.SquareSet.symmetric_difference_update()` and + :func:`~chess.SquareSet.clear()`. + + :warning: Square sets can be used as dictionary keys, but do not modify + them when doing this. + """ + + def __init__(self, mask=BB_VOID): + self.mask = mask + + def issubset(self, other): + return not bool(~self & other) + + def issuperset(self, other): + return not bool(self & ~other) + + def union(self, other): + return self | other + + def intersection(self, other): + return self & other + + def difference(self, other): + return self & ~other + + def symmetric_difference(self, other): + return self ^ other + + def copy(self): + return type(self)(self.mask) + + def update(self, other): + self |= other + + def intersection_update(self, other): + self &= other + + def difference_update(self, other): + self &= ~other + + def symmetric_difference_update(self, other): + self ^= other + + def add(self, square): + """Add a square to the set.""" + self |= BB_SQUARES[square] + + def remove(self, square): + """ + Remove a square from the set. + + Raises :exc:`KeyError` if the given square was not in the set. + """ + mask = BB_SQUARES[square] + if self.mask & mask: + self.mask ^= mask + else: + raise KeyError(square) + + def discard(self, square): + """Discards a square from the set.""" + self &= ~BB_SQUARES[square] + + def pop(self): + """ + Removes a square from the set and returns it. + + Raises :exc:`KeyError` on an empty set. + """ + if not self.mask: + raise KeyError("pop from empty set") + + square_mask = self.mask & -self.mask + self.mask = self.mask & (self.mask - 1) + return bit_scan(square_mask) + + def clear(self): + self.mask = BB_VOID + + def __bool__(self): + return bool(self.mask) + + __nonzero__ = __bool__ + + def __eq__(self, other): + ne = self.__ne__(other) + return NotImplemented if ne is NotImplemented else not ne + + def __ne__(self, other): + try: + return int(self) != int(other) + except ValueError: + return NotImplemented + + def __len__(self): + return pop_count(self.mask) + + def __iter__(self): + square = bit_scan(self.mask) + while square != -1 and square is not None: + yield square + square = bit_scan(self.mask, square + 1) + + def __reversed__(self): + string = bin(self.mask) + l = len(string) + r = string.find("1", 0) + while r != -1: + yield l - r - 1 + r = string.find("1", r + 1) + + def __contains__(self, square): + return bool(BB_SQUARES[square] & self.mask) + + def __lshift__(self, shift): + return type(self)((self.mask << shift) & BB_ALL) + + def __rshift__(self, shift): + return type(self)(self.mask >> shift) + + def __and__(self, other): + try: + return type(self)(self.mask & other.mask) + except AttributeError: + return type(self)(self.mask & other) + + def __xor__(self, other): + try: + return type(self)((self.mask ^ other.mask) & BB_ALL) + except AttributeError: + return type(self)((self.mask ^ other) & BB_ALL) + + def __or__(self, other): + try: + return type(self)((self.mask | other.mask) & BB_ALL) + except AttributeError: + return type(self)((self.mask | other) & BB_ALL) + + def __ilshift__(self, shift): + self.mask = (self.mask << shift & BB_ALL) + return self + + def __irshift__(self, shift): + self.mask >>= shift + return self + + def __iand__(self, other): + try: + self.mask &= other.mask + except AttributeError: + self.mask &= other + return self + + def __ixor__(self, other): + try: + self.mask = (self.mask ^ other.mask) & BB_ALL + except AttributeError: + self.mask = (self.mask ^ other) & BB_ALL + return self + + def __ior__(self, other): + try: + self.mask = (self.mask | other.mask) & BB_ALL + except AttributeError: + self.mask = (self.mask | other) & BB_ALL + return self + + def __invert__(self): + return type(self)(~self.mask & BB_ALL) + + def __oct__(self): + return oct(self.mask) + + def __hex__(self): + return hex(self.mask) + + def __int__(self): + return self.mask + + def __index__(self): + return self.mask + + def __repr__(self): + return "SquareSet({0})".format(bin(self.mask)) + + def __str__(self): + builder = [] + + for square in SQUARES_180: + mask = BB_SQUARES[square] + + if self.mask & mask: + builder.append("1") + else: + builder.append(".") + + if mask & BB_FILE_H: + if square != H1: + builder.append("\n") + else: + builder.append(" ") + + return "".join(builder) + + def __hash__(self): + return hash(self.mask) + + @classmethod + def from_square(cls, square): + """ + Creates a SquareSet from a single square. + + >>> chess.SquareSet.from_square(chess.A1) == chess.BB_A1: + True + """ + return cls(BB_SQUARES[square]) diff --git a/chess/game.py b/chess/game.py deleted file mode 100644 index d6feeb7e1..000000000 --- a/chess/game.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# -# This file is part of the python-chess library. -# Copyright (C) 2012 Niklas Fiekas -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import chess -import re - -class Game(chess.GameNode): - """The root node of a game.""" - def __init__(self, start_comment="", headers=None): - chess.GameNode.__init__(self, None, None, (), start_comment) - - if headers is None: - self.__headers = chess.GameHeaderBag(self) - else: - if not headers.game == self: - raise ValueError("Header bag assigned to a different game.") - self.__headers = headers - - @property - def headers(self): - """A `chess.GameHeaderBag` holding the headers of the game.""" - return self.__headers - - @property - def position(self): - """A copy of the initial position of the game.""" - if "FEN" in self.__headers: - return chess.Position(self.__headers["FEN"]) - else: - return chess.Position() diff --git a/chess/game_header_bag.py b/chess/game_header_bag.py deleted file mode 100644 index a5b64af06..000000000 --- a/chess/game_header_bag.py +++ /dev/null @@ -1,253 +0,0 @@ -# -*- coding: utf-8 -*- -# -# This file is part of the python-chess library. -# Copyright (C) 2012 Niklas Fiekas -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import chess -import collections -import datetime -import itertools -import re -import types - -date_regex = re.compile(r"^(\?{4}|[0-9]{4})\.(\?\?|[0-9]{2})\.(\?\?|[0-9]{2})$") -round_regex = re.compile(r"^(\?|[0-9]+)$") -time_control_regex = re.compile(r"^([0-9]+)\/([0-9]+):([0-9]+)$") -time_regex = re.compile(r"^([0-9]{2}):([0-9]{2}):([0-9]{2})$") - -class GameHeaderBag(collections.MutableMapping): - """A glorified dictionary of game headers as used in PGNs. - - :param game: - Defaults to `None`. If bound to a game, any value set for - `"PlyCount"` is ignored and instead the real ply count of the - game is the value. - Aditionally the `"FEN"` header can not be modified if the game - already contains a move. - - These headers are required by the PGN standard and can not be - removed: - - `"Event`": - The name of the tournament or match event. Default is `"?"`. - `"Site`": - The location of the event. Default is `"?"`. - `"Date`": - The starting date of the game. Defaults to `"????.??.??"`. Must - be a valid date of the form YYYY.MM.DD. `"??"` can be used as a - placeholder for unknown month or day. `"????"` can be used as a - placeholder for an unknown year. - `"Round`": - The playing round ordinal of the game within the event. Must be - digits only or `"?"`. Defaults to `"?"`. - `"White`": - The player of the white pieces. Defaults to `"?"`. - `"Black`": - The player of the black pieces. Defaults to `"?"`. - `"Result`": - Defaults to `"*"`. Other values are `"1-0"` (white won), - `"0-1"` (black won) and `"1/2-1/2"` (drawn). - - These additional headers are known: - - `"Annotator"`: - The person providing notes to the game. - `"PlyCount"`: - The total moves played. Must be digits only. If a `game` - parameter is given any value set will be ignored and the real - ply count of the game will be used as the value. - `"TimeControl"`: - For example `"40/7200:3600"` (moves per seconds : sudden death - seconds). Validated to be of this form. - `"Time"`: - Time the game started as a valid HH:MM:SS string. - `"Termination"`: - Can be one of `"abandoned"`, `"adjudication"`, `"death"`, - `"emergency"`, `"normal"`, `"rules infraction"`, - `"time forfeit"` or `"unterminated"`. - `"Mode"`: - Can be `"OTB"` (over-the-board) or `"ICS"` (Internet chess - server). - `"FEN"`: - The initial position if the board as a FEN. If a game parameter - was given and the game already contains moves, this header can - not be set. The header will be deleted when set to the standard - chess start FEN. - `"SetUp"`: - Any value set is ignored. Instead the value is `"1"` is the - `"FEN"` header is set. Otherwise this header does not exist. - - An arbitrary amount of other headers can be set. The capitalization - of the first occurence of a new header is used to normalize all - further occurences to it. Additional headers are not validated. - - >>> import chess - >>> bag = chess.GameHeaderBag() - >>> bag["Annotator"] = "Alekhine" - >>> bag["annOTator"] - 'Alekhine' - >>> del bag["Annotator"] - >>> "Annotator" in bag - False - - `KNOWN_HEADERS`: - The known headers in the order they will appear (if set) when - iterating over the keys. - """ - - KNOWN_HEADERS = [ - "Event", "Site", "Date", "Round", "White", "Black", "Result", - "Annotator", "PlyCount", "TimeControl", "Time", "Termination", "Mode", - "FEN", "SetUp"] - - def __init__(self, game=None): - self.__game = game - self.__headers = { - "Event": "?", - "Site": "?", - "Date": "????.??.??", - "Round": "?", - "White": "?", - "Black": "?", - "Result": "*", - } - - def __normalize_key(self, key): - if not isinstance(key, basestring): - raise TypeError( - "Expected string for GameHeaderBag key, got: %s." % repr(key)) - for header in itertools.chain(GameHeaderBag.KNOWN_HEADERS, - self.__headers): - if header.lower() == key.lower(): - return header - return key - - def __len__(self): - i = 0 - for header in self: - i += 1 - return i - - def __iter__(self): - for known_header in GameHeaderBag.KNOWN_HEADERS: - if known_header in self: - yield known_header - for header in self.__headers: - if not header in GameHeaderBag.KNOWN_HEADERS: - yield header - - def __getitem__(self, key): - key = self.__normalize_key(key) - if self.__game and key == "PlyCount": - return self.__game.ply - elif key == "SetUp": - return "1" if "FEN" in self else "0" - elif key in self.__headers: - return self.__headers[key] - else: - raise KeyError(key) - - def __setitem__(self, key, value): - key = self.__normalize_key(key) - if not isinstance(value, basestring): - raise TypeError( - "Expected value to be a string, got: %s." % repr(value)) - - if key == "Date": - matches = date_regex.match(value) - if not matches: - raise ValueError( - "Invalid value for Date header: %s." % repr(value)) - year = matches.group(1) if matches.group(1) != "????" else "2000" - month = int(matches.group(2)) if matches.group(2) != "??" else "10" - day = int(matches.group(3)) if matches.group(3) != "??" else "1" - datetime.date(int(year), int(month), int(day)) - elif key == "Round": - if not round_regex.match(value): - raise ValueError( - "Invalid value for Round header: %s." % repr(value)) - elif key == "Result": - if not value in ["1-0", "0-1", "1/2-1/2", "*"]: - raise ValueError( - "Invalid value for Result header: %s." % repr(value)) - elif key == "PlyCount": - if not value.isdigit(): - raise ValueError( - "Invalid value for PlyCount header: %s." % repr(value)) - else: - value = str(int(value)) - elif key == "TimeControl": - if not time_control_regex.match(value): - raise ValueError( - "Invalid value for TimeControl header: %s." % repr(value)) - elif key == "Time": - matches = time_regex.match(value) - if (not matches or - int(matches.group(1)) < 0 or int(matches.group(1)) >= 24 or - int(matches.group(2)) < 0 or int(matches.group(2)) >= 60 or - int(matches.group(3)) < 0 or int(matches.group(3)) >= 60): - raise ValueError( - "Invalid value for Time header: %s." % repr(value)) - elif key == "Termination": - value = value.lower() - if not value in ["abandoned", "adjudication", "death", "emergency", - "normal", "rules infraction", "time forfeit", - "unterminated"]: - raise ValueError( - "Invalid value for Termination header: %s." % repr(value)) - elif key == "Mode": - value = value.upper() - if not value in ["OTB", "ICS"]: - raise ValueError( - "Invalid value for Mode header: %s." % repr(value)) - elif key == "FEN": - value = chess.Position(value).fen - - if value == chess.START_FEN: - if not "FEN" in self: - return - else: - if "FEN" in self and self["FEN"] == value: - return - - if self.__game and self.__game.ply > 0: - raise ValueError( - "FEN header can not be set, when there are already moves.") - - if value == chess.START_FEN: - del self["FEN"] - del self["SetUp"] - return - else: - self["SetUp"] = "1" - - self.__headers[key] = value - - def __delitem__(self, key): - k = self.__normalize_key(key) - if k in ["Event", "Site", "Date", "Round", "White", "Black", "Result"]: - raise KeyError( - "The %s key can not be deleted because it is required." % k) - del self.__headers[k] - - def __contains__(self, key): - key = self.__normalize_key(key) - if self.__game and key == "PlyCount": - return True - elif key == "SetUp": - return "FEN" in self - else: - return self.__normalize_key(key) in self.__headers diff --git a/chess/game_node.py b/chess/game_node.py deleted file mode 100644 index 26f2f7546..000000000 --- a/chess/game_node.py +++ /dev/null @@ -1,288 +0,0 @@ -# -*- coding: utf-8 -*- -# -# This file is part of the python-chess library. -# Copyright (C) 2012 Niklas Fiekas -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import chess -import types - -class GameNode(object): - """A node in the tree of a game. - - :param previous_node: - The parent node. - :param move: - The move that leads to the position of this node. - :param nags: - A list of numeric annotation glyphs. Defaults to no annotation - glyphs. - :param comment: - The comment that goes along with the move. Defaults to no - comment. - :param start_comment: - The first node of a variation can have a start comment. - Defaults to no start comment. - - You can read the variations of the node as a dictionary. The key - can be and index starting with `0` for the main variation or a - move. - - >>> import chess - >>> root = chess.GameNode(None, None) - >>> variation = root.add_variation(chess.Move.from_uci("e2e4")) - >>> len(root) - 1 - >>> assert root[chess.Move.from_uci("e2e4")] == variation - >>> assert root[0] == variation - >>> del root[0] - >>> variation in root - False - >>> chess.Move.from_uci("e2e4") in root - False - """ - - def __init__(self, previous_node, move, nags=[], comment="", - start_comment=""): - self.__previous_node = previous_node - self.__move = move - - if move: - self.__position = chess.Position(previous_node.position) - self.__position.make_move(move) - - self.__nags = nags - self.comment = comment - self.start_comment = start_comment - - self.__variations = [] - - @property - def previous_node(self): - """The previous node of the game.""" - return self.__previous_node - - @property - def move(self): - """The move that makes the position of this node from the - previous node. - """ - return self.__move - - @property - def position(self): - """A copy of the position.""" - return chess.Position(self.__position) - - @property - def comment(self): - """The comment. An empty string means no comment.""" - return self.__comment - - @comment.setter - def comment(self, value): - if not isinstance(value, basestring): - raise TypeError( - "Expected comment to be string, got: %s." % comment) - self.__comment = value - - @property - def start_comment(self): - """The start comment of the variation. - - If the node is not the start of a variation it can not have a - start comment. - An empty string means no comment. - """ - if self.can_have_start_comment(): - return self.__start_comment - else: - return "" - - @start_comment.setter - def start_comment(self, value): - if not isinstance(value, basestring): - raise TypeError( - "Expected start comment to be string, got: %s." % comment) - - if value != "" and not self.can_have_start_comment(): - raise ValueError("Game node can not have a start comment.") - - self.__start_comment = value - - @property - def nags(self): - """A list of numeric annotation glyphs.""" - return self.__nags - - def can_have_start_comment(self): - """:return: If the node can have a start comment. - - Only nodes that are at the start of a variation can have a - start comment. - """ - if self.__previous_node is None: - return True - else: - return self.__previous_node.index(self) != 0 - - def is_main_line(self): - """:return: If the node is in the main line of the game.""" - if self.__previous_node is None: - return True - else: - return (self.__previous_node.index(self) == 0 and - self.__previous_node.is_main_line()) - - def is_main_variation(self): - """Checks if the node is the main variation. - - :return: - If the node is the main variation looking from the previous - node. - """ - if self.__previous_node is None: - return True - else: - return self.__previous_node.index(self) == 0 - - def __len__(self): - return len(self.__variations) - - def __nonzero__(self): - return True - - def __getitem__(self, key): - if type(key) is types.IntType: - return self.__variations[key] - elif type(key) is chess.Move: - for node in self.__variations: - if node.move == key: - return node - raise KeyError(key) - else: - raise TypeError("Expected integer or move as key, got: %s." % key) - - def __delitem__(self, key): - if type(key) is chess.Move: - for i, node in enumerate(self.__variations): - if node.move == key: - key = i - break - else: - raise KeyError(key) - if type(key) is types.IntType: - del self.__variations[key] - else: - raise TypeError("Expected integer or move as key, got: %s." % key) - - def __iter__(self): - for node in self.__variations: - yield node.move - - def __contains__(self, item): - if isinstance(item, GameNode): - return item in self.__variations - else: - return item in [node.move for node in self.__variations] - - def index(self, variation): - """:return: The index of a variation. - - :param variation: - A game node or move to get the index of. - """ - for i, node in enumerate(self.__variations): - if node == variation or node.move == variation: - return i - raise ValueError("No such variation: %s." % repr(value)) - - def promote(self, variation): - """Moves a variation one up, if possible. - - :param variation: - A game node or move to promote. - """ - i = self.index(variation) - if i > 0: - old = self.__variations[i - 1] - self.__variations[i - 1] = self.__variations[i] - self.__variations[i] = old - - def demote(self, variation): - """Moves a variation one down, if possible. - - :param variation: - A game node or move to demote. - """ - i = self.index(variation) - if i < len(self._variations) - 1: - old = self.__variations[i + 1] - self.__variations[i + 1] = self.__variations[i] - self.__variations[i] = old - - def promote_to_main(self, variation): - """Makes one variation the main variation of the previous node. - - :param variation: - The game node or move to promote to the main variation. - """ - i = self.index(variation) - new_mainline = self.__variations[i] - del self.__variations[i] - self.__variations.insert(0, new_mainline) - - def __prepare_variation(self, variation): - if type(variation) is chess.Move: - variation = GameNode(self, variation) - if variation.move in self: - raise ValueError("Variation already in set: %s." % variation.move) - if variation.previous_node != self: - raise ValueError("Variation already has a parent.") - return variation - - def add_variation(self, variation): - """Appends a variation to the list of variations. - - :param variation: - The game node or move to add. - - :return: - The game node that has been added. - """ - variation = self.__prepare_variation(variation) - self.__variations.append(variation) - return variation - - def add_main_variation(self, variation): - """Adds a variation and makes it the main variation. - - :param variation: - The game node or move to add. - - :return: - The game node that has been added. - """ - variation = self.__prepare_variation(variation) - self.__variations.insert(0, variation) - return variation - - def remove_variation(self, variation): - """Removes a variation. - - :param variation: - The game node or move to remove. - """ - del self.__variations[self.index(variation)] diff --git a/chess/gaviota.py b/chess/gaviota.py new file mode 100644 index 000000000..19fa7f9a0 --- /dev/null +++ b/chess/gaviota.py @@ -0,0 +1,2276 @@ +# -*- coding: utf-8 -*- +# +# This file is part of the python-chess library. +# Copyright (C) 2015 Jean-Noël Avila +# Copyright (C) 2015 Niklas Fiekas +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import ctypes +import ctypes.util +import fnmatch +import os +import os.path +import logging +import struct +import chess + +try: + import backport_collections as collections +except ImportError: + import collections + + +LOGGER = logging.getLogger(__name__) + + +NOSQUARE = 64 +NOINDEX = -1 + +WHITES = 1 << 6 +BLACKS = 1 << 7 + +NOPIECE = 0 +PAWN = 1 +KNIGHT = 2 +BISHOP = 3 +ROOK = 4 +QUEEN = 5 +KING = 6 + +wK = KING | WHITES +wP = PAWN | WHITES +wN = KNIGHT | WHITES +wB = BISHOP | WHITES +wR = ROOK | WHITES +wQ = QUEEN | WHITES + +bK = KING | BLACKS +bP = PAWN | BLACKS +bN = KNIGHT | BLACKS +bB = BISHOP | BLACKS +bR = ROOK | BLACKS +bQ = QUEEN | BLACKS + +MAX_KKINDEX = 462 +MAX_PPINDEX = 576 +MAX_PpINDEX = 24 * 48 +MAX_AAINDEX = (63 - 62) + (62 // 2 * (127 - 62)) - 1 + 1 +MAX_AAAINDEX = 64 * 21 * 31 +MAX_PPP48_INDEX = 8648 +MAX_PP48_INDEX = 1128 + +MAX_KXK = MAX_KKINDEX * 64 +MAX_kabk = MAX_KKINDEX * 64 * 64 +MAX_kakb = MAX_KKINDEX * 64 * 64 +MAX_kpk = 24 * 64 * 64 +MAX_kakp = 24 * 64 * 64 * 64 +MAX_kapk = 24 * 64 * 64 * 64 +MAX_kppk = MAX_PPINDEX * 64 * 64 +MAX_kpkp = MAX_PpINDEX * 64 * 64 +MAX_kaak = MAX_KKINDEX * MAX_AAINDEX +MAX_kabkc = MAX_KKINDEX * 64 * 64 * 64 +MAX_kabck = MAX_KKINDEX * 64 * 64 * 64 +MAX_kaakb = MAX_KKINDEX * MAX_AAINDEX * 64 +MAX_kaabk = MAX_KKINDEX * MAX_AAINDEX * 64 +MAX_kabbk = MAX_KKINDEX * MAX_AAINDEX * 64 +MAX_kaaak = MAX_KKINDEX * MAX_AAAINDEX +MAX_kapkb = 24 * 64 * 64 * 64 * 64 +MAX_kabkp = 24 * 64 * 64 * 64 * 64 +MAX_kabpk = 24 * 64 * 64 * 64 * 64 +MAX_kppka = MAX_kppk * 64 +MAX_kappk = MAX_kppk * 64 +MAX_kapkp = MAX_kpkp * 64 +MAX_kaapk = 24 * MAX_AAINDEX * 64 * 64 +MAX_kaakp = 24 * MAX_AAINDEX * 64 * 64 +MAX_kppkp = 24 * MAX_PP48_INDEX * 64 * 64 +MAX_kpppk = MAX_PPP48_INDEX * 64 * 64 + +PLYSHIFT = 3 +INFOMASK = 7 + +WE_FLAG = 1 +NS_FLAG = 2 +NW_SE_FLAG = 4 + +ITOSQ = [ + chess.H7, chess.G7, chess.F7, chess.E7, + chess.H6, chess.G6, chess.F6, chess.E6, + chess.H5, chess.G5, chess.F5, chess.E5, + chess.H4, chess.G4, chess.F4, chess.E4, + chess.H3, chess.G3, chess.F3, chess.E3, + chess.H2, chess.G2, chess.F2, chess.E2, + chess.D7, chess.C7, chess.B7, chess.A7, + chess.D6, chess.C6, chess.B6, chess.A6, + chess.D5, chess.C5, chess.B5, chess.A5, + chess.D4, chess.C4, chess.B4, chess.A4, + chess.D3, chess.C3, chess.B3, chess.A3, + chess.D2, chess.C2, chess.B2, chess.A2, +] + +ENTRIES_PER_BLOCK = 16 * 1024 + +EGTB_MAXBLOCKSIZE = 65536 + + +def map24_b(s): + s = s - 8 + return ((s & 3) + s) >> 1 + +def in_queenside(x): + return (x & (1 << 2)) == 0 + +def flip_we(x): + return x ^ 7 + +def flip_ns(x): + return x ^ 56 + +def flip_nw_se(x): + return ((x & 7) << 3) | (x >> 3) + +def idx_is_empty(x): + return x == -1 + + +def getcol(x): + return x & 7 + +def getrow(x): + return x >> 3 + +def flip_type(x, y): + ret = 0 + + if getcol(x) > 3: + x = flip_we(x) + y = flip_we(y) + ret |= 1 + + if getrow(x) > 3: + x = flip_ns(x) + y = flip_ns(y) + ret |= 2 + + rowx = getrow(x) + colx = getcol(x) + + if rowx > colx: + x = flip_nw_se(x) + y = flip_nw_se(y) + ret |= 4 + + rowy = getrow(y) + coly = getcol(y) + if rowx == colx and rowy > coly: + x = flip_nw_se(x) + y = flip_nw_se(y) + ret |= 4 + + return ret + +def init_flipt(): + return [[flip_type(j, i) for i in range(64)] for j in range(64)] + +FLIPT = init_flipt() + + +def init_pp48_idx(): + MAX_I = 48 + MAX_J = 48 + idx = 0 + pp48_idx = [[-1] * MAX_J for i in range(MAX_I)] + pp48_sq_x = [NOSQUARE] * MAX_PP48_INDEX + pp48_sq_y = [NOSQUARE] * MAX_PP48_INDEX + + idx = 0 + for a in range(chess.H7, chess.A2 - 1, -1): + for b in range(a - 1, chess.A2 - 1, -1): + i = flip_we(flip_ns(a)) - 8 + j = flip_we(flip_ns(b)) - 8 + + if idx_is_empty(pp48_idx[i][j]): + pp48_idx[i][j] = idx + pp48_idx[j][i] = idx + pp48_sq_x[idx] = i + pp48_sq_y[idx] = j + idx += 1 + + return pp48_idx, pp48_sq_x, pp48_sq_y + +PP48_IDX, PP48_SQ_X, PP48_SQ_Y = init_pp48_idx() + + +def init_ppp48_idx(): + MAX_I = 48 + MAX_J = 48 + MAX_K = 48 + ppp48_idx = [[[-1] * MAX_I for j in range(MAX_J)] for k in range(MAX_K)] + ppp48_sq_x = [NOSQUARE] * MAX_PPP48_INDEX + ppp48_sq_y = [NOSQUARE] * MAX_PPP48_INDEX + ppp48_sq_z = [NOSQUARE] * MAX_PPP48_INDEX + + idx = 0 + for x in range(48): + for y in range(x + 1, 48): + for z in range(y + 1, 48): + a = ITOSQ[x] + b = ITOSQ[y] + c = ITOSQ[z] + if not in_queenside(b) or not in_queenside(c): + continue + + i = a - 8 + j = b - 8 + k = c - 8 + + if idx_is_empty(ppp48_idx[i][j][k]): + ppp48_idx[i][j][k] = idx + ppp48_idx[i][k][j] = idx + ppp48_idx[j][i][k] = idx + ppp48_idx[j][k][i] = idx + ppp48_idx[k][i][j] = idx + ppp48_idx[k][j][i] = idx + ppp48_sq_x[idx] = i + ppp48_sq_y[idx] = j + ppp48_sq_z[idx] = k + idx = idx + 1 + + return ppp48_idx, ppp48_sq_x, ppp48_sq_y, ppp48_sq_z + +PPP48_IDX, PPP48_SQ_X, PPP48_SQ_Y, PPP48_SQ_Z = init_ppp48_idx() + + +def init_aaidx(): + aaidx = [[-1] * 64 for y in range(64)] + aabase = [0] * MAX_AAINDEX + + idx = 0 + for x in range(64): + for y in range(x + 1, 64): + + if idx_is_empty(aaidx[x][y]): + # Still empty. + aaidx[x][y] = idx + aaidx[y][x] = idx + aabase[idx] = x + idx += 1 + + return aabase, aaidx + +AABASE, AAIDX = init_aaidx() + + +def init_aaa(): + # Get aaa_base. + comb = [a * (a - 1) // 2 for a in range(64)] + + accum = 0 + aaa_base = [0] * 64 + for a in range(64 - 1): + accum = accum + comb[a] + aaa_base[a + 1] = accum + + # Get aaa_xyz. + aaa_xyz = [[-1] * 3 for idx in range(MAX_AAAINDEX)] + + idx = 0 + for z in range(64): + for y in range(z): + for x in range(y): + aaa_xyz[idx][0] = x + aaa_xyz[idx][1] = y + aaa_xyz[idx][2] = z + idx += 1 + + return aaa_base, aaa_xyz + +AAA_BASE, AAA_XYZ = init_aaa() + + +def pp_putanchorfirst(a, b): + row_b = b & 56 + row_a = a & 56 + + # Default. + anchor = a + loosen = b + + if row_b > row_a: + anchor = b + loosen = a + elif row_b == row_a: + x = a + col = x & 7 + inv = col ^ 7 + x = (1 << col) | (1 << inv) + x &= (x - 1) + hi_a = x + + x = b + col = x & 7 + inv = col ^ 7 + x = (1 << col) | (1 << inv) + x &= (x - 1) + hi_b = x + + if hi_b > hi_a: + anchor = b + loosen = a + + if hi_b < hi_a: + anchor = a + loosen = b + + if hi_b == hi_a: + if a < b: + anchor = a + loosen = b + else: + anchor = b + loosen = a + + return anchor, loosen + +def wsq_to_pidx24(pawn): + sq = pawn + + sq = flip_ns(sq) + sq -= 8 # Down one row. + + idx24 = (sq + (sq & 3)) >> 1 + return idx24 + +def wsq_to_pidx48(pawn): + sq = pawn + + sq = flip_ns(sq) + sq -= 8 # Down one row. + + idx48 = sq + return idx48 + +def init_ppidx(): + ppidx = [[-1] * 48 for i in range(24)] + pp_hi24 = [-1] * MAX_PPINDEX + pp_lo48 = [-1] * MAX_PPINDEX + + idx = 0 + for a in range(chess.H7, chess.A2 - 1, -1): + if in_queenside(a): + continue + + for b in range(a - 1, chess.A2 - 1, -1): + anchor = 0 + loosen = 0 + + anchor, loosen = pp_putanchorfirst(a, b) + + if (anchor & 7) > 3: + # Square in the kingside. + anchor = flip_we(anchor) + loosen = flip_we(loosen) + + i = wsq_to_pidx24(anchor) + j = wsq_to_pidx48(loosen) + + if idx_is_empty(ppidx[i][j]): + ppidx[i][j] = idx + pp_hi24[idx] = i + pp_lo48[idx] = j + idx += 1 + + return ppidx, pp_hi24, pp_lo48 + +PPIDX, PP_HI24, PP_LO48 = init_ppidx() + + +def bb_isbiton(bb, bit): + return 0 != (bb >> bit) & 1 + +def map88(x): + return x + (x & 56) + +def unmap88(x): + return x + (x & 7) >> 1 + +def mapx88(x): + return ((x & 56) << 1) | (x & 7) + +BSTEP = [17, 15, -15, -17, 0] +RSTEP = [1, 16, -1, -16, 0] +NSTEP = [18, 33, 31, 14, -18, -33, -31, -14, 0] +KSTEP = [1, 17, 16, 15, -1, -17, -16, -15, 0] + +PSTEPARR = [ + None, # No piece. + None, # Pawn. + NSTEP, + BSTEP, + RSTEP, + KSTEP, # Queen. + KSTEP, # King. +] + +PSLIDER = [ + False, # No piece. + False, # Pawn. + False, + True, + True, + True, + False, +] + +def gen_rev(occ, input_piece, sq): + # Get list of reversible piece moves. Yields squares. + from_ = map88(sq) + + pc = input_piece & (PAWN | KNIGHT | BISHOP | ROOK | QUEEN | KING) + + steparr = PSTEPARR[pc] + slider = PSLIDER[pc] + + if slider: + for step in steparr: + if step == 0: + break + s = from_ + step + while 0 == (s & 0x88): + us = unmap88(s) + if 0 != (0x1 & (occ >> us)): + break + yield us + s += step + + else: + for step in steparr: + if step == 0: + break + s = from_ + step + if 0 == (s & 0x88): + us = unmap88(s) + if 0 == (0x1 & (occ >> us)): + yield us + +def reach_init(): + stp_a = [15, -15] + stp_b = [17, -17] + reach = [[-1] * 64 for _ in range(7)] + + for pc in range(KNIGHT, KING + 1): + for sq in range(64): + bb = 0 + for li in gen_rev(0, pc, sq): + bb |= 1 << li + reach[pc][sq] = bb + + for side in range(2): + index = 1 ^ side + step_a = stp_a[side] + step_b = stp_b[side] + for sq in range(64): + sq88 = map88(sq) + bb = 0 + + thelist = [] + + s = sq88 + step_a + if 0 == (s & 0x88): + us = unmap88(s) + thelist.append(us) + + s = sq88 + step_b + if 0 == (s & 0x88): + us = unmap88(s) + thelist.append(us) + + for li in thelist: + bb |= 1 << li + + reach[index][sq] = bb + + return reach + +REACH = reach_init() + +def attack_maps_init(): + attmsk = [0] * 256 + attmsk[wP] = 1 << 0 + attmsk[bP] = 1 << 1 + + attmsk[KNIGHT] = 1 << 2 + attmsk[wN] = 1 << 2 + attmsk[bN] = 1 << 2 + + attmsk[BISHOP] = 1 << 3 + attmsk[wB] = 1 << 3 + attmsk[bB] = 1 << 3 + + attmsk[ROOK] = 1 << 4 + attmsk[wR] = 1 << 4 + attmsk[bR] = 1 << 4 + + attmsk[QUEEN] = 1 << 5 + attmsk[wQ] = 1 << 5 + attmsk[bQ] = 1 << 5 + + attmsk[KING] = 1 << 6 + attmsk[wK] = 1 << 6 + attmsk[bK] = 1 << 6 + + attmap = [[0] * 64 for i in range(64)] + for to_ in range(64): + for from_ in range(64): + m = 0 + rook = REACH[ROOK][from_] + bishop = REACH[BISHOP][from_] + queen = REACH[QUEEN][from_] + knight = REACH[KNIGHT][from_] + king = REACH[KING][from_] + + if bb_isbiton(knight, to_): + m |= attmsk[wN] + if bb_isbiton(king, to_): + m |= attmsk[wK] + if bb_isbiton(rook, to_): + m |= attmsk[wR] + if bb_isbiton(bishop, to_): + m |= attmsk[wB] + if bb_isbiton(queen, to_): + m |= attmsk[wQ] + + to88 = mapx88(to_) + fr88 = mapx88(from_) + diff = to88 - fr88 + + if diff in [17, 15]: + m |= attmsk[wP] + elif diff in [-17, -15]: + m |= attmsk[bP] + + attmap[to_][from_] = m + + return attmsk, attmap + +ATTMSK, ATTMAP = attack_maps_init() + +def possible_attack(from_, to_, piece): + return 0 != ATTMAP[to_][from_] & ATTMSK[piece] + +def norm_kkindex(x, y): + if getcol(x) > 3: + x = flip_we(x) + y = flip_we(y) + + if getrow(x) > 3: + x = flip_ns(x) + y = flip_ns(y) + + rowx = getrow(x) + colx = getcol(x) + + if (rowx > colx): + x = flip_nw_se(x) + y = flip_nw_se(y) + + rowy = getrow(y) + coly = getcol(y) + + if rowx == colx and rowy > coly: + x = flip_nw_se(x) + y = flip_nw_se(y) + + return x, y + +def init_kkidx(): + kkidx = [[-1] * 64 for x in range(64)] + bksq = [-1] * MAX_KKINDEX + wksq = [-1] * MAX_KKINDEX + idx = 0 + for x in range(64): + for y in range(64): + # Check if x to y is legal. + if not possible_attack(x, y, wK) and x != y: + # Normalize. + i, j = norm_kkindex(x, y) + + if idx_is_empty(kkidx[i][j]): + kkidx[i][j] = idx + kkidx[x][y] = idx + bksq[idx] = i + wksq[idx] = j + idx += 1 + + return kkidx, wksq, bksq + +KKIDX, WKSQ, BKSQ = init_kkidx() + + +def kxk_pctoindex(c): + BLOCK_Ax = 64 + + ft = flip_type(c.black_piece_squares[0], c.white_piece_squares[0]) + + ws = c.white_piece_squares + bs = c.black_piece_squares + + if (ft & 1) != 0: + ws = [flip_we(b) for b in ws] + bs = [flip_we(b) for b in bs] + + if (ft & 2) != 0: + ws = [flip_ns(b) for b in ws] + bs = [flip_ns(b) for b in bs] + + if (ft & 4) != 0: + ws = [flip_nw_se(b) for b in ws] + bs = [flip_nw_se(b) for b in bs] + + ki = KKIDX[bs[0]][ws[0]] # KKIDX[black king][white king] + + if ki == -1: + return NOINDEX + + return ki * BLOCK_Ax + ws[1] + +def kapkb_pctoindex(c): + BLOCK_A = 64 * 64 * 64 * 64 + BLOCK_B = 64 * 64 * 64 + BLOCK_C = 64 * 64 + BLOCK_D = 64 + + pawn = c.white_piece_squares[2] + wa = c.white_piece_squares[1] + wk = c.white_piece_squares[0] + bk = c.black_piece_squares[0] + ba = c.black_piece_squares[1] + + if not (chess.A2 <= pawn < chess.A8): + return NOINDEX + + if (pawn & 7) > 3: + # Column is more than 3, i.e. e, f, g or h. + pawn = flip_we(pawn) + wk = flip_we(wk) + bk = flip_we(bk) + wa = flip_we(wa) + ba = flip_we(ba) + + sq = pawn + sq ^= 56 # flip_ns + sq -= 8 # down one row + pslice = (sq + (sq & 3)) >> 1 + + return pslice * BLOCK_A + wk * BLOCK_B + bk * BLOCK_C + wa * BLOCK_D + ba + +def kabpk_pctoindex(c): + BLOCK_A = 64 * 64 * 64 * 64 + BLOCK_B = 64 * 64 * 64 + BLOCK_C = 64 * 64 + BLOCK_D = 64 + + wk = c.white_piece_squares[0] + wa = c.white_piece_squares[1] + wb = c.white_piece_squares[2] + pawn = c.white_piece_squares[3] + bk = c.black_piece_squares[0] + + if (pawn & 7) > 3: + # Column is more than 3, i.e. e, f, g or h. + pawn = flip_we(pawn) + wk = flip_we(wk) + bk = flip_we(bk) + wa = flip_we(wa) + wb = flip_we(wb) + + pslice = wsq_to_pidx24(pawn) + + return pslice * BLOCK_A + wk * BLOCK_B + bk * BLOCK_C + wa * BLOCK_D + wb + +def kabkp_pctoindex(c): + BLOCK_A = 64 * 64 * 64 * 64 + BLOCK_B = 64 * 64 * 64 + BLOCK_C = 64 * 64 + BLOCK_D = 64 + + pawn = c.black_piece_squares[1] + wa = c.white_piece_squares[1] + wk = c.white_piece_squares[0] + bk = c.black_piece_squares[0] + wb = c.white_piece_squares[2] + + if not (chess.A2 <= pawn < chess.A8): + return NOINDEX + + if (pawn & 7) > 3: + # Column is more than 3, i.e. e, f, g or h. + pawn = flip_we(pawn) + wk = flip_we(wk) + bk = flip_we(bk) + wa = flip_we(wa) + wb = flip_we(wb) + + sq = pawn + sq -= 8 # down one row + pslice = (sq + (sq & 3)) >> 1 + + return pslice * BLOCK_A + wk * BLOCK_B + bk * BLOCK_C + wa * BLOCK_D + wb + +def kaapk_pctoindex(c): + BLOCK_C = MAX_AAINDEX + BLOCK_B = 64 * BLOCK_C + BLOCK_A = 64 * BLOCK_B + + wk = c.white_piece_squares[0] + wa = c.white_piece_squares[1] + wa2 = c.white_piece_squares[2] + pawn = c.white_piece_squares[3] + bk = c.black_piece_squares[0] + + if (pawn & 7) > 3: + # Column is more than 3, i.e. e, f, g or h. + pawn = flip_we(pawn) + wk = flip_we(wk) + bk = flip_we(bk) + wa = flip_we(wa) + wa2 = flip_we(wa2) + + pslice = wsq_to_pidx24(pawn) + + aa_combo = AAIDX[wa][wa2] + + if idx_is_empty(aa_combo): + return NOINDEX + + return pslice * BLOCK_A + wk * BLOCK_B + bk * BLOCK_C + aa_combo + +def kaakp_pctoindex(c): + BLOCK_C = MAX_AAINDEX + BLOCK_B = 64 * BLOCK_C + BLOCK_A = 64 * BLOCK_B + + wk = c.white_piece_squares[0] + wa = c.white_piece_squares[1] + wa2 = c.white_piece_squares[2] + bk = c.black_piece_squares[0] + pawn = c.black_piece_squares[1] + + if (pawn & 7) > 3: + # Column is more than 3, i.e. e, f, g or h. + pawn = flip_we(pawn) + wk = flip_we(wk) + bk = flip_we(bk) + wa = flip_we(wa) + wa2 = flip_we(wa2) + + pawn = flip_ns(pawn) + pslice = wsq_to_pidx24(pawn) + + aa_combo = AAIDX[wa][wa2] + + if idx_is_empty(aa_combo): + return NOINDEX + + return pslice * BLOCK_A + wk * BLOCK_B + bk * BLOCK_C + aa_combo + +def kapkp_pctoindex(c): + BLOCK_A = 64 * 64 * 64 + BLOCK_B = 64 * 64 + BLOCK_C = 64 + + wk = c.white_piece_squares[0] + wa = c.white_piece_squares[1] + pawn_a = c.white_piece_squares[2] + bk = c.black_piece_squares[0] + pawn_b = c.black_piece_squares[1] + + anchor = pawn_a + loosen = pawn_b + + if (anchor & 7) > 3: + # Column is more than 3, i.e. e, f, g or h. + anchor = flip_we(anchor) + loosen = flip_we(loosen) + wk = flip_we(wk) + bk = flip_we(bk) + wa = flip_we(wa) + + m = wsq_to_pidx24(anchor) + n = loosen - 8 + pp_slice = m * 48 + n + + if idx_is_empty(pp_slice): + return NOINDEX + + return pp_slice * BLOCK_A + wk * BLOCK_B + bk * BLOCK_C + wa + +def kappk_pctoindex(c): + BLOCK_A = 64 * 64 * 64 + BLOCK_B = 64 * 64 + BLOCK_C = 64 + + wk = c.white_piece_squares[0] + wa = c.white_piece_squares[1] + pawn_a = c.white_piece_squares[2] + pawn_b = c.white_piece_squares[3] + bk = c.black_piece_squares[0] + + anchor, loosen = pp_putanchorfirst(pawn_a, pawn_b) + + if (anchor & 7) > 3: + # Column is more than 3, i.e. e, f, g or h. + anchor = flip_we(anchor) + loosen = flip_we(loosen) + wk = flip_we(wk) + bk = flip_we(bk) + wa = flip_we(wa) + + i = wsq_to_pidx24(anchor) + j = wsq_to_pidx48(loosen) + + pp_slice = PPIDX[i][j] + + if idx_is_empty(pp_slice): + return NOINDEX + + return pp_slice * BLOCK_A + wk * BLOCK_B + bk * BLOCK_C + wa + +def kppka_pctoindex(c): + BLOCK_A = 64 * 64 * 64 + BLOCK_B = 64 * 64 + BLOCK_C = 64 + + wk = c.white_piece_squares[0] + pawn_a = c.white_piece_squares[1] + pawn_b = c.white_piece_squares[2] + bk = c.black_piece_squares[0] + ba = c.black_piece_squares[1] + + anchor, loosen = pp_putanchorfirst(pawn_a, pawn_b) + + if (anchor & 7) > 3: + anchor = flip_we(anchor) + loosen = flip_we(loosen) + wk = flip_we(wk) + bk = flip_we(bk) + ba = flip_we(ba) + + i = wsq_to_pidx24(anchor) + j = wsq_to_pidx48(loosen) + + pp_slice = PPIDX[i][j] + + if idx_is_empty(pp_slice): + return NOINDEX + + return pp_slice * BLOCK_A + wk * BLOCK_B + bk * BLOCK_C + ba + +def kabck_pctoindex(c): + N_WHITE = 4 + N_BLACK = 1 + BLOCK_A = 64 * 64 * 64 + BLOCK_B = 64 * 64 + BLOCK_C = 64 + + ft = FLIPT[c.black_piece_squares[0]][c.white_piece_squares[0]] + + ws = c.white_piece_squares[:N_WHITE] + bs = c.black_piece_squares[:N_BLACK] + + if (ft & WE_FLAG) != 0: + ws = [flip_we(i) for i in ws] + bs = [flip_we(i) for i in bs] + + if (ft & NS_FLAG) != 0: + ws = [flip_ns(i) for i in ws] + bs = [flip_ns(i) for i in bs] + + if (ft & NW_SE_FLAG) != 0: + ws = [flip_nw_se(i) for i in ws] + bs = [flip_nw_se(i) for i in bs] + + ki = KKIDX[bs[0]][ws[0]] # KKIDX[black king][white king] + + if idx_is_empty(ki): + return NOINDEX + + return ki * BLOCK_A + ws[1] * BLOCK_B + ws[2] * BLOCK_C + ws[3] + +def kabbk_pctoindex(c): + N_WHITE = 4 + N_BLACK = 1 + BLOCK_Bx = 64 + BLOCK_Ax = BLOCK_Bx * MAX_AAINDEX + + ft = FLIPT[c.black_piece_squares[0]][c.white_piece_squares[0]] + + ws = c.white_piece_squares[:N_WHITE] + bs = c.black_piece_squares[:N_BLACK] + + if (ft & WE_FLAG) != 0: + ws = [flip_we(i) for i in ws] + bs = [flip_we(i) for i in bs] + + if (ft & NS_FLAG) != 0: + ws = [flip_ns(i) for i in ws] + bs = [flip_ns(i) for i in bs] + + if (ft & NW_SE_FLAG) != 0: + ws = [flip_nw_se(i) for i in ws] + bs = [flip_nw_se(i) for i in bs] + + ki = KKIDX[bs[0]][ws[0]] # KKIDX[black king][white king] + ai = AAIDX[ws[2]][ws[3]] + + if idx_is_empty(ki) or idx_is_empty(ai): + return NOINDEX + + return ki * BLOCK_Ax + ai * BLOCK_Bx + ws[1] + +def kaabk_pctoindex(c): + N_WHITE = 4 + N_BLACK = 1 + BLOCK_Bx = 64 + BLOCK_Ax = BLOCK_Bx * MAX_AAINDEX + + ft = FLIPT[c.black_piece_squares[0]][c.white_piece_squares[0]] + + ws = c.white_piece_squares[:N_WHITE] + bs = c.black_piece_squares[:N_BLACK] + + if ((ft & WE_FLAG) != 0): + ws = [flip_we(i) for i in ws] + bs = [flip_we(i) for i in bs] + + if ((ft & NS_FLAG) != 0): + ws = [flip_ns(i) for i in ws] + bs = [flip_ns(i) for i in bs] + + if ((ft & NW_SE_FLAG) != 0): + ws = [flip_nw_se(i) for i in ws] + bs = [flip_nw_se(i) for i in bs] + + ki = KKIDX[bs[0]][ws[0]] # KKIDX[black king][white king] + ai = AAIDX[ws[1]][ws[2]] + + if idx_is_empty(ki) or idx_is_empty(ai): + return NOINDEX + + return ki * BLOCK_Ax + ai * BLOCK_Bx + ws[3] + +def aaa_getsubi(x, y, z): + bse = AAA_BASE[z] + calc_idx = x + (y - 1) * y // 2 + bse + return calc_idx + +def kaaak_pctoindex(c): + N_WHITE = 4 + N_BLACK = 1 + BLOCK_Ax = MAX_AAAINDEX + + ws = c.white_piece_squares[:N_WHITE] + bs = c.black_piece_squares[:N_BLACK] + + ft = FLIPT[c.black_piece_squares[0]][c.white_piece_squares[0]] + + if (ft & WE_FLAG) != 0: + ws = [flip_we(i) for i in ws] + bs = [flip_we(i) for i in bs] + + if (ft & NS_FLAG) != 0: + ws = [flip_ns(i) for i in ws] + bs = [flip_ns(i) for i in bs] + + if (ft & NW_SE_FLAG) != 0: + ws = [flip_nw_se(i) for i in ws] + bs = [flip_nw_se(i) for i in bs] + + if ws[2] < ws[1]: + tmp = ws[1] + ws[1] = ws[2] + ws[2] = tmp + if ws[3] < ws[2]: + tmp = ws[2] + ws[2] = ws[3] + ws[3] = tmp + if ws[2] < ws[1]: + tmp = ws[1] + ws[1] = ws[2] + ws[2] = tmp + + ki = KKIDX[bs[0]][ws[0]] + + if ws[1] == ws[2] or ws[1] == ws[3] or ws[2] == ws[3]: + return NOINDEX + + ai = aaa_getsubi(ws[1], ws[2], ws[3]) + + if idx_is_empty(ki) or idx_is_empty(ai): + return NOINDEX + + return ki * BLOCK_Ax + ai + +def kppkp_pctoindex(c): + BLOCK_Ax = MAX_PP48_INDEX * 64 * 64 + BLOCK_Bx = 64 * 64 + BLOCK_Cx = 64 + + wk = c.white_piece_squares[0] + pawn_a = c.white_piece_squares[1] + pawn_b = c.white_piece_squares[2] + bk = c.black_piece_squares[0] + pawn_c = c.black_piece_squares[1] + + if (pawn_c & 7) > 3: + wk = flip_we(wk) + pawn_a = flip_we(pawn_a) + pawn_b = flip_we(pawn_b) + bk = flip_we(bk) + pawn_c = flip_we(pawn_c) + + i = flip_we(flip_ns(pawn_a)) - 8 + j = flip_we(flip_ns(pawn_b)) - 8 + + # Black pawn, so low indexes mean more advanced. + k = map24_b(pawn_c) + + pp48_slice = PP48_IDX[i][j] + + if idx_is_empty(pp48_slice): + return NOINDEX + + return k * BLOCK_Ax + pp48_slice * BLOCK_Bx + wk * BLOCK_Cx + bk + +def kaakb_pctoindex(c): + N_WHITE = 3 + N_BLACK = 2 + BLOCK_Bx = 64 + BLOCK_Ax = BLOCK_Bx * MAX_AAINDEX + + ft = FLIPT[c.black_piece_squares[0]][c.white_piece_squares[0]] + + ws = c.white_piece_squares[:N_WHITE] + bs = c.black_piece_squares[:N_BLACK] + + if (ft & WE_FLAG) != 0: + ws = [flip_we(i) for i in ws] + bs = [flip_we(i) for i in bs] + + if (ft & NS_FLAG) != 0: + ws = [flip_ns(i) for i in ws] + bs = [flip_ns(i) for i in bs] + + if (ft & NW_SE_FLAG) != 0: + ws = [flip_nw_se(i) for i in ws] + bs = [flip_nw_se(i) for i in bs] + + ki = KKIDX[bs[0]][ws[0]] # KKIDX[black king][white king] + ai = AAIDX[ws[1]][ws[2]] + + if idx_is_empty(ki) or idx_is_empty(ai): + return NOINDEX + + return ki * BLOCK_Ax + ai * BLOCK_Bx + bs[1] + +def kabkc_pctoindex(c): + N_WHITE = 3 + N_BLACK = 2 + + BLOCK_Ax = 64 * 64 * 64 + BLOCK_Bx = 64 * 64 + BLOCK_Cx = 64 + + ft = FLIPT[c.black_piece_squares[0]][c.white_piece_squares[0]] + + ws = c.white_piece_squares[:N_WHITE] + bs = c.black_piece_squares[:N_BLACK] + + if (ft & WE_FLAG) != 0: + ws = [flip_we(i) for i in ws] + bs = [flip_we(i) for i in bs] + + if (ft & NS_FLAG) != 0: + ws = [flip_ns(i) for i in ws] + bs = [flip_ns(i) for i in bs] + + if (ft & NW_SE_FLAG) != 0: + ws = [flip_nw_se(i) for i in ws] + bs = [flip_nw_se(i) for i in bs] + + ki = KKIDX[bs[0]][ws[0]] # KKIDX [black king] [white king] + + if idx_is_empty(ki): + return NOINDEX + + return ki * BLOCK_Ax + ws[1] * BLOCK_Bx + ws[2] * BLOCK_Cx + bs[1] + +def kpkp_pctoindex(c): + BLOCK_Ax = 64 * 64 + BLOCK_Bx = 64 + + wk = c.white_piece_squares[0] + bk = c.black_piece_squares[0] + pawn_a = c.white_piece_squares[1] + pawn_b = c.black_piece_squares[1] + + anchor = pawn_a + loosen = pawn_b + + if (anchor & 7) > 3: + anchor = flip_we(anchor) + loosen = flip_we(loosen) + wk = flip_we(wk) + bk = flip_we(bk) + + m = wsq_to_pidx24(anchor) + n = loosen - 8 + + pp_slice = m * 48 + n + + if idx_is_empty(pp_slice): + return NOINDEX + + return pp_slice * BLOCK_Ax + wk * BLOCK_Bx + bk + +def kppk_pctoindex(c): + BLOCK_Ax = 64 * 64 + BLOCK_Bx = 64 + wk = c.white_piece_squares[0] + pawn_a = c.white_piece_squares[1] + pawn_b = c.white_piece_squares[2] + bk = c.black_piece_squares[0] + + anchor, loosen = pp_putanchorfirst(pawn_a, pawn_b) + + if (anchor & 7) > 3: + anchor = flip_we(anchor) + loosen = flip_we(loosen) + wk = flip_we(wk) + bk = flip_we(bk) + + i = wsq_to_pidx24(anchor) + j = wsq_to_pidx48(loosen) + + pp_slice = PPIDX[i][j] + + if idx_is_empty(pp_slice): + return NOINDEX + + return pp_slice * BLOCK_Ax + wk * BLOCK_Bx + bk + +def kapk_pctoindex(c): + BLOCK_Ax = 64 * 64 * 64 + BLOCK_Bx = 64 * 64 + BLOCK_Cx = 64 + + pawn = c.white_piece_squares[2] + wa = c.white_piece_squares[1] + wk = c.white_piece_squares[0] + bk = c.black_piece_squares[0] + + if not (chess.A2 <= pawn < chess.A8): + return NOINDEX + + if (pawn & 7) > 3: + pawn = flip_we(pawn) + wk = flip_we(wk) + bk = flip_we(bk) + wa = flip_we(wa) + + sq = pawn + sq ^= 56 # flip_ns + sq -= 8 # down one row + pslice = ((sq + (sq & 3)) >> 1) + + return pslice * BLOCK_Ax + wk * BLOCK_Bx + bk * BLOCK_Cx + wa + +def kabk_pctoindex(c): + BLOCK_Ax = 64 * 64 + BLOCK_Bx = 64 + + ft = flip_type(c.black_piece_squares[0], c.white_piece_squares[0]) + + ws = c.white_piece_squares + bs = c.black_piece_squares + + if (ft & 1) != 0: + ws = [flip_we(b) for b in ws] + bs = [flip_we(b) for b in bs] + + if (ft & 2) != 0: + ws = [flip_ns(b) for b in ws] + bs = [flip_ns(b) for b in bs] + + if (ft & 4) != 0: + ws = [flip_nw_se(b) for b in ws] + bs = [flip_nw_se(b) for b in bs] + + ki = KKIDX[bs[0]][ws[0]] # KKIDX[black king][white king] + + if idx_is_empty(ki): + return NOINDEX + + return ki * BLOCK_Ax + ws[1] * BLOCK_Bx + ws[2] + +def kakp_pctoindex(c): + BLOCK_Ax = 64 * 64 * 64 + BLOCK_Bx = 64 * 64 + BLOCK_Cx = 64 + + pawn = c.black_piece_squares[1] + wa = c.white_piece_squares[1] + wk = c.white_piece_squares[0] + bk = c.black_piece_squares[0] + + if not (chess.A2 <= pawn < chess.A8): + return NOINDEX + + if (pawn & 7) > 3: + pawn = flip_we(pawn) + wk = flip_we(wk) + bk = flip_we(bk) + wa = flip_we(wa) + + sq = pawn + sq -= 8 # down one row + pslice = (sq + (sq & 3)) >> 1 + + return pslice * BLOCK_Ax + wk * BLOCK_Bx + bk * BLOCK_Cx + wa + +def kaak_pctoindex(c): + N_WHITE = 3 + N_BLACK = 1 + BLOCK_Ax = MAX_AAINDEX + + ft = FLIPT[c.black_piece_squares[0]][c.white_piece_squares[0]] + + ws = c.white_piece_squares[:N_WHITE] + bs = c.black_piece_squares[:N_BLACK] + + if (ft & WE_FLAG) != 0: + ws = [flip_we(i) for i in ws] + bs = [flip_we(i) for i in bs] + + if (ft & NS_FLAG) != 0: + ws = [flip_ns(i) for i in ws] + bs = [flip_ns(i) for i in bs] + + if (ft & NW_SE_FLAG) != 0: + ws = [flip_nw_se(i) for i in ws] + bs = [flip_nw_se(i) for i in bs] + + ki = KKIDX[bs[0]][ws[0]] # KKIDX[black king][white king] + ai = AAIDX[ws[1]][ws[2]] + + if idx_is_empty(ki) or idx_is_empty(ai): + return NOINDEX + + return ki * BLOCK_Ax + ai + +def kakb_pctoindex(c): + BLOCK_Ax = 64 * 64 + BLOCK_Bx = 64 + + ft = FLIPT[c.black_piece_squares[0]][c.white_piece_squares[0]] + + ws = c.white_piece_squares[:] + bs = c.black_piece_squares[:] + + if (ft & 1) != 0: + ws[0] = flip_we(ws[0]) + ws[1] = flip_we(ws[1]) + bs[0] = flip_we(bs[0]) + bs[1] = flip_we(bs[1]) + + if (ft & 2) != 0: + ws[0] = flip_ns(ws[0]) + ws[1] = flip_ns(ws[1]) + bs[0] = flip_ns(bs[0]) + bs[1] = flip_ns(bs[1]) + + if (ft & 4) != 0: + ws[0] = flip_nw_se(ws[0]) + ws[1] = flip_nw_se(ws[1]) + bs[0] = flip_nw_se(bs[0]) + bs[1] = flip_nw_se(bs[1]) + + ki = KKIDX[bs[0]][ws[0]] # KKIDX[black king][white king] + + if idx_is_empty(ki): + return NOINDEX + + return ki * BLOCK_Ax + ws[1] * BLOCK_Bx + bs[1] + +def kpk_pctoindex(c): + BLOCK_A = 64 * 64 + BLOCK_B = 64 + + pawn = c.white_piece_squares[1] + wk = c.white_piece_squares[0] + bk = c.black_piece_squares[0] + + if not (chess.A2 <= pawn < chess.A8): + return NOINDEX + + if (pawn & 7) > 3: + pawn = flip_we(pawn) + wk = flip_we(wk) + bk = flip_we(bk) + + sq = pawn + sq ^= 56 # flip_ns + sq -= 8 # down one row + pslice = ((sq + (sq & 3)) >> 1) + + res = pslice * BLOCK_A + wk * BLOCK_B + bk + return res + +def kpppk_pctoindex(c): + BLOCK_A = 64 * 64 + BLOCK_B = 64 + + wk = c.white_piece_squares[0] + pawn_a = c.white_piece_squares[1] + pawn_b = c.white_piece_squares[2] + pawn_c = c.white_piece_squares[3] + + bk = c.black_piece_squares[0] + + i = pawn_a - 8 + j = pawn_b - 8 + k = pawn_c - 8 + + ppp48_slice = PPP48_IDX[i][j][k] + + if idx_is_empty(ppp48_slice): + wk = flip_we(wk) + pawn_a = flip_we(pawn_a) + pawn_b = flip_we(pawn_b) + pawn_c = flip_we(pawn_c) + bk = flip_we(bk) + + i = pawn_a - 8 + j = pawn_b - 8 + k = pawn_c - 8 + + ppp48_slice = PPP48_IDX[i][j][k] + + if idx_is_empty(ppp48_slice): + return NOINDEX + + return ppp48_slice * BLOCK_A + wk * BLOCK_B + bk + + +Endgamekey = collections.namedtuple("Endgamekey", ["maxindex", "slice_n", "pctoi"]) + +EGKEY = { + "kqk": Endgamekey(MAX_KXK, 1, kxk_pctoindex), + "krk": Endgamekey(MAX_KXK, 1, kxk_pctoindex), + "kbk": Endgamekey(MAX_KXK, 1, kxk_pctoindex), + "knk": Endgamekey(MAX_KXK, 1, kxk_pctoindex), + "kpk": Endgamekey(MAX_kpk, 24, kpk_pctoindex), + + "kqkq": Endgamekey(MAX_kakb, 1, kakb_pctoindex), + "kqkr": Endgamekey(MAX_kakb, 1, kakb_pctoindex), + "kqkb": Endgamekey(MAX_kakb, 1, kakb_pctoindex), + "kqkn": Endgamekey(MAX_kakb, 1, kakb_pctoindex), + + "krkr": Endgamekey(MAX_kakb, 1, kakb_pctoindex), + "krkb": Endgamekey(MAX_kakb, 1, kakb_pctoindex), + "krkn": Endgamekey(MAX_kakb, 1, kakb_pctoindex), + + "kbkb": Endgamekey(MAX_kakb, 1, kakb_pctoindex), + "kbkn": Endgamekey(MAX_kakb, 1, kakb_pctoindex), + + "knkn": Endgamekey(MAX_kakb, 1, kakb_pctoindex), + + "kqqk": Endgamekey(MAX_kaak, 1, kaak_pctoindex), + "kqrk": Endgamekey(MAX_kabk, 1, kabk_pctoindex), + "kqbk": Endgamekey(MAX_kabk, 1, kabk_pctoindex), + "kqnk": Endgamekey(MAX_kabk, 1, kabk_pctoindex), + + "krrk": Endgamekey(MAX_kaak, 1, kaak_pctoindex), + "krbk": Endgamekey(MAX_kabk, 1, kabk_pctoindex), + "krnk": Endgamekey(MAX_kabk, 1, kabk_pctoindex), + + "kbbk": Endgamekey(MAX_kaak, 1, kaak_pctoindex), + "kbnk": Endgamekey(MAX_kabk, 1, kabk_pctoindex), + + "knnk": Endgamekey(MAX_kaak, 1, kaak_pctoindex), + "kqkp": Endgamekey(MAX_kakp, 24, kakp_pctoindex), + "krkp": Endgamekey(MAX_kakp, 24, kakp_pctoindex), + "kbkp": Endgamekey(MAX_kakp, 24, kakp_pctoindex), + "knkp": Endgamekey(MAX_kakp, 24, kakp_pctoindex), + + "kqpk": Endgamekey(MAX_kapk, 24, kapk_pctoindex), + "krpk": Endgamekey(MAX_kapk, 24, kapk_pctoindex), + "kbpk": Endgamekey(MAX_kapk, 24, kapk_pctoindex), + "knpk": Endgamekey(MAX_kapk, 24, kapk_pctoindex), + + "kppk": Endgamekey(MAX_kppk, MAX_PPINDEX, kppk_pctoindex), + + "kpkp": Endgamekey(MAX_kpkp, MAX_PpINDEX, kpkp_pctoindex), + + "kppkp": Endgamekey(MAX_kppkp, 24 * MAX_PP48_INDEX, kppkp_pctoindex), + + "kbbkr": Endgamekey(MAX_kaakb, 1, kaakb_pctoindex), + "kbbkb": Endgamekey(MAX_kaakb, 1, kaakb_pctoindex), + "knnkb": Endgamekey(MAX_kaakb, 1, kaakb_pctoindex), + "knnkn": Endgamekey(MAX_kaakb, 1, kaakb_pctoindex), + + "kqqqk": Endgamekey(MAX_kaaak, 1, kaaak_pctoindex), + "kqqrk": Endgamekey(MAX_kaabk, 1, kaabk_pctoindex), + "kqqbk": Endgamekey(MAX_kaabk, 1, kaabk_pctoindex), + "kqqnk": Endgamekey(MAX_kaabk, 1, kaabk_pctoindex), + "kqrrk": Endgamekey(MAX_kabbk, 1, kabbk_pctoindex), + "kqrbk": Endgamekey(MAX_kabck, 1, kabck_pctoindex), + "kqrnk": Endgamekey(MAX_kabck, 1, kabck_pctoindex), + "kqbbk": Endgamekey(MAX_kabbk, 1, kabbk_pctoindex), + "kqbnk": Endgamekey(MAX_kabck, 1, kabck_pctoindex), + "kqnnk": Endgamekey(MAX_kabbk, 1, kabbk_pctoindex), + "krrrk": Endgamekey(MAX_kaaak, 1, kaaak_pctoindex), + "krrbk": Endgamekey(MAX_kaabk, 1, kaabk_pctoindex), + "krrnk": Endgamekey(MAX_kaabk, 1, kaabk_pctoindex), + "krbbk": Endgamekey(MAX_kabbk, 1, kabbk_pctoindex), + "krbnk": Endgamekey(MAX_kabck, 1, kabck_pctoindex), + "krnnk": Endgamekey(MAX_kabbk, 1, kabbk_pctoindex), + "kbbbk": Endgamekey(MAX_kaaak, 1, kaaak_pctoindex), + "kbbnk": Endgamekey(MAX_kaabk, 1, kaabk_pctoindex), + "kbnnk": Endgamekey(MAX_kabbk, 1, kabbk_pctoindex), + "knnnk": Endgamekey(MAX_kaaak, 1, kaaak_pctoindex), + "kqqkq": Endgamekey(MAX_kaakb, 1, kaakb_pctoindex), + "kqqkr": Endgamekey(MAX_kaakb, 1, kaakb_pctoindex), + "kqqkb": Endgamekey(MAX_kaakb, 1, kaakb_pctoindex), + "kqqkn": Endgamekey(MAX_kaakb, 1, kaakb_pctoindex), + "kqrkq": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "kqrkr": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "kqrkb": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "kqrkn": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "kqbkq": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "kqbkr": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "kqbkb": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "kqbkn": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "kqnkq": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "kqnkr": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "kqnkb": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "kqnkn": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "krrkq": Endgamekey(MAX_kaakb, 1, kaakb_pctoindex), + "krrkr": Endgamekey(MAX_kaakb, 1, kaakb_pctoindex), + "krrkb": Endgamekey(MAX_kaakb, 1, kaakb_pctoindex), + "krrkn": Endgamekey(MAX_kaakb, 1, kaakb_pctoindex), + "krbkq": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "krbkr": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "krbkb": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "krbkn": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "krnkq": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "krnkr": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "krnkb": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "krnkn": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "kbbkq": Endgamekey(MAX_kaakb, 1, kaakb_pctoindex), + "kbbkn": Endgamekey(MAX_kaakb, 1, kaakb_pctoindex), + "kbnkq": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "kbnkr": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "kbnkb": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "kbnkn": Endgamekey(MAX_kabkc, 1, kabkc_pctoindex), + "knnkq": Endgamekey(MAX_kaakb, 1, kaakb_pctoindex), + "knnkr": Endgamekey(MAX_kaakb, 1, kaakb_pctoindex), + + "kqqpk": Endgamekey(MAX_kaapk, 24, kaapk_pctoindex), + "kqrpk": Endgamekey(MAX_kabpk, 24, kabpk_pctoindex), + "kqbpk": Endgamekey(MAX_kabpk, 24, kabpk_pctoindex), + "kqnpk": Endgamekey(MAX_kabpk, 24, kabpk_pctoindex), + "krrpk": Endgamekey(MAX_kaapk, 24, kaapk_pctoindex), + "krbpk": Endgamekey(MAX_kabpk, 24, kabpk_pctoindex), + "krnpk": Endgamekey(MAX_kabpk, 24, kabpk_pctoindex), + "kbbpk": Endgamekey(MAX_kaapk, 24, kaapk_pctoindex), + "kbnpk": Endgamekey(MAX_kabpk, 24, kabpk_pctoindex), + "knnpk": Endgamekey(MAX_kaapk, 24, kaapk_pctoindex), + + "kqppk": Endgamekey(MAX_kappk, MAX_PPINDEX, kappk_pctoindex), + "krppk": Endgamekey(MAX_kappk, MAX_PPINDEX, kappk_pctoindex), + "kbppk": Endgamekey(MAX_kappk, MAX_PPINDEX, kappk_pctoindex), + "knppk": Endgamekey(MAX_kappk, MAX_PPINDEX, kappk_pctoindex), + + "kqpkq": Endgamekey(MAX_kapkb, 24, kapkb_pctoindex), + "kqpkr": Endgamekey(MAX_kapkb, 24, kapkb_pctoindex), + "kqpkb": Endgamekey(MAX_kapkb, 24, kapkb_pctoindex), + "kqpkn": Endgamekey(MAX_kapkb, 24, kapkb_pctoindex), + "krpkq": Endgamekey(MAX_kapkb, 24, kapkb_pctoindex), + "krpkr": Endgamekey(MAX_kapkb, 24, kapkb_pctoindex), + "krpkb": Endgamekey(MAX_kapkb, 24, kapkb_pctoindex), + "krpkn": Endgamekey(MAX_kapkb, 24, kapkb_pctoindex), + "kbpkq": Endgamekey(MAX_kapkb, 24, kapkb_pctoindex), + "kbpkr": Endgamekey(MAX_kapkb, 24, kapkb_pctoindex), + "kbpkb": Endgamekey(MAX_kapkb, 24, kapkb_pctoindex), + "kbpkn": Endgamekey(MAX_kapkb, 24, kapkb_pctoindex), + "knpkq": Endgamekey(MAX_kapkb, 24, kapkb_pctoindex), + "knpkr": Endgamekey(MAX_kapkb, 24, kapkb_pctoindex), + "knpkb": Endgamekey(MAX_kapkb, 24, kapkb_pctoindex), + "knpkn": Endgamekey(MAX_kapkb, 24, kapkb_pctoindex), + "kppkq": Endgamekey(MAX_kppka, MAX_PPINDEX, kppka_pctoindex), + "kppkr": Endgamekey(MAX_kppka, MAX_PPINDEX, kppka_pctoindex), + "kppkb": Endgamekey(MAX_kppka, MAX_PPINDEX, kppka_pctoindex), + "kppkn": Endgamekey(MAX_kppka, MAX_PPINDEX, kppka_pctoindex), + + "kqqkp": Endgamekey(MAX_kaakp, 24, kaakp_pctoindex), + "kqrkp": Endgamekey(MAX_kabkp, 24, kabkp_pctoindex), + "kqbkp": Endgamekey(MAX_kabkp, 24, kabkp_pctoindex), + "kqnkp": Endgamekey(MAX_kabkp, 24, kabkp_pctoindex), + "krrkp": Endgamekey(MAX_kaakp, 24, kaakp_pctoindex), + "krbkp": Endgamekey(MAX_kabkp, 24, kabkp_pctoindex), + "krnkp": Endgamekey(MAX_kabkp, 24, kabkp_pctoindex), + "kbbkp": Endgamekey(MAX_kaakp, 24, kaakp_pctoindex), + "kbnkp": Endgamekey(MAX_kabkp, 24, kabkp_pctoindex), + "knnkp": Endgamekey(MAX_kaakp, 24, kaakp_pctoindex), + + "kqpkp": Endgamekey(MAX_kapkp, MAX_PpINDEX, kapkp_pctoindex), + "krpkp": Endgamekey(MAX_kapkp, MAX_PpINDEX, kapkp_pctoindex), + "kbpkp": Endgamekey(MAX_kapkp, MAX_PpINDEX, kapkp_pctoindex), + "knpkp": Endgamekey(MAX_kapkp, MAX_PpINDEX, kapkp_pctoindex), + + "kpppk": Endgamekey(MAX_kpppk, MAX_PPP48_INDEX, kpppk_pctoindex), +} + + +def sortlists(ws, wp): + z = sorted(zip(wp, ws), key=lambda x: x[0], reverse=True) + wp2, ws2 = zip(*z) + return list(ws2), list(wp2) + +def egtb_block_unpack(side, n, bp): + try: + return [dtm_unpack(side, i) for i in bp[:n]] + except TypeError: + return [dtm_unpack(side, ord(i)) for i in bp[:n]] + +def split_index(i): + return divmod(i, ENTRIES_PER_BLOCK) + + +tb_DRAW = 0 +tb_WMATE = 1 +tb_BMATE = 2 +tb_FORBID = 3 +tb_UNKNOWN = 7 +iDRAW = tb_DRAW +iWMATE = tb_WMATE +iBMATE = tb_BMATE +iFORBID = tb_FORBID + +iDRAWt = tb_DRAW | 4 +iWMATEt = tb_WMATE | 4 +iBMATEt = tb_BMATE | 4 +iUNKNOWN = tb_UNKNOWN + +iUNKNBIT = (1 << 2) + +def removepiece(ys, yp, j): + del ys[j] + del yp[j] + +def opp(side): + return 1 if side == 0 else 0 + +def adjust_up(dist): + udist = dist + sw = udist & INFOMASK + + if sw in [iWMATE, iWMATEt, iBMATE, iBMATEt]: + udist += (1 << PLYSHIFT) + + return udist + +def bestx(side, a, b): + # 0 = selectfirst + # 1 = selectlowest + # 2 = selecthighest + # 3 = selectsecond + comparison = [ + # draw, wmate, bmate, forbid + [0, 3, 0, 0], # draw + [0, 1, 0, 0], # wmate + [3, 3, 2, 0], # bmate + [3, 3, 3, 0], # forbid + ] + + xorkey = [0, 3] + + if (a == iFORBID): + return b + if (b == iFORBID): + return a + + retu = [a, a, b, b] + + if (b < a): + retu[1] = b + retu[2] = a + + key = comparison[a & 3][b & 3] ^ xorkey[side] + return retu[key] + +def unpackdist(d): + return d >> PLYSHIFT, d & INFOMASK + +def dtm_unpack(stm, packed): + p = packed + + if p in [iDRAW, iFORBID]: + return p + + info = p & 3 + store = p >> 2 + + if stm == 0: + if info == iWMATE: + moves = store + 1 + plies = moves * 2 - 1 + prefx = info + elif info == iBMATE: + moves = store + plies = moves * 2 + prefx = info + elif info == iDRAW: + moves = store + 1 + 63 + plies = moves * 2 - 1 + prefx = iWMATE + elif info == iFORBID: + moves = store + 63 + plies = moves * 2 + prefx = iBMATE + else: + plies = 0 + prefx = 0 + + ret = prefx | (plies << 3) + else: + if info == iBMATE: + moves = store + 1 + plies = moves * 2 - 1 + prefx = info + elif info == iWMATE: + moves = store + plies = moves * 2 + prefx = info + elif info == iDRAW: + if store == 63: + # Exception: no position in the 5-man TBs needs to store 63 for + # iBMATE. It is then just used to indicate iWMATE. + store += 1 + + moves = store + 63 + plies = moves * 2 + prefx = iWMATE + else: + moves = store + 1 + 63 + plies = moves * 2 - 1 + prefx = iBMATE + elif info == iFORBID: + moves = store + 63 + plies = moves * 2 + prefx = iWMATE + else: + plies = 0 + prefx = 0 + + ret = prefx | (plies << 3) + + return ret + + +class TableBlock(object): + def __init__(self, egkey, side, offset, age): + self.egkey = egkey + self.side = side + self.offset = offset + self.age = age + self.pcache = None + + +class Request(object): + def __init__(self, white_squares, white_types, black_squares, black_types, side, epsq): + self.white_squares, self.white_types = sortlists(white_squares, white_types) + self.black_squares, self.black_types = sortlists(black_squares, black_types) + self.realside = side + self.side = side + self.epsq = epsq + + self.egkey = None + self.white_piece_squares = None + self.white_piece_types = None + self.black_piece_squares = None + self.black_piece_types = None + self.is_reversed = None + self.white_piece_squares = None + + +Zipinfo = collections.namedtuple("Zipinfo", ["extraoffset", "totalblocks", "blockindex"]) + + +class PythonTablebases(object): + """Provides access to Gaviota tablebases using pure Python code.""" + + def __init__(self, directory, lzma): + self.lzma = lzma + + self.available_tables = {} + + self.streams = {} + self.zipinfo = {} + + self.block_cache = {} + self.block_age = 0 + + if directory is not None: + self.open_directory(directory) + + def open_directory(self, directory): + """Loads *.gtb.cp4* tables from a directory.""" + if not os.path.isdir(directory): + raise IOError("not a tablebase directory: {0}".format(repr(directory))) + + for tbfile in fnmatch.filter(os.listdir(directory), "*.gtb.cp4"): + self.available_tables[os.path.basename(tbfile).replace(".gtb.cp4", "")] = os.path.join(directory, tbfile) + + def probe_dtm(self, board): + """ + Probes for depth to mate information. + + Returns ``None`` if the position was not found in any of the tables. + + Otherwise the absolute value is the number of half moves until + forced mate. The value is positive if the side to move is winning, + otherwise it is negative. + + In the example position white to move will get mated in 10 half moves: + + >>> with chess.gaviota.open_tablebases("data/gaviota") as tablebases: + ... tablebases.probe_dtm(chess.Board("8/8/8/8/8/8/8/K2kr3 w - - 0 1")) + ... + -10 + """ + # Can not probe positions with castling rights. + if board.castling_rights: + return None + + # Prepare the tablebase request. + white = [(square, board.piece_type_at(square)) for square in chess.SquareSet(board.occupied_co[chess.WHITE])] + black = [(square, board.piece_type_at(square)) for square in chess.SquareSet(board.occupied_co[chess.BLACK])] + white_squares, white_types = zip(*white) + black_squares, black_types = zip(*black) + side = 0 if (board.turn == chess.WHITE) else 1 + epsq = board.ep_square if board.ep_square else NOSQUARE + req = Request(white_squares, white_types, black_squares, black_types, side, epsq) + + # KvK is a draw. + if len(white_squares) == 1 and len(black_squares) == 1: + return 0 + + # Only up to 5-men tablebases. + if len(white_squares) + len(black_squares) > 5: + return None + + # Probe. + try: + dtm = self.egtb_get_dtm(req) + except IndexError: + return None + + ply, res = unpackdist(dtm) + + if res == iDRAW: + # Draw. + return 0 + elif res == iWMATE: + # White mates in the stored position. + if req.realside == 1: + if req.is_reversed: + return ply + else: + return -ply + else: + if req.is_reversed: + return -ply + else: + return ply + elif res == iBMATE: + # Black mates in the stored position. + if req.realside == 0: + if req.is_reversed: + return ply + else: + return -ply + else: + if req.is_reversed: + return -ply + else: + return ply + + def probe_wdl(self, board): + """ + Probes for win/draw/loss-information. + + Returns ``None`` if the position was not found in any of the tables. + + Returns ``1`` if the side to move is winning, ``0`` if it is a draw, + and ``-1`` if the side to move is losing. + + >>> with chess.gaviota.open_tablebases("data/gaviota") as tablebases: + ... tablebases.probe_wdl(chess.Board("8/4k3/8/B7/8/8/8/4K3 w - - 0 1")) + ... + 0 + """ + dtm = self.probe_dtm(board) + + if dtm == 0: + if board.is_checkmate(): + return -1 + else: + return 0 + elif dtm > 0: + return 1 + elif dtm < 0: + return -1 + else: + return None + + def _setup_tablebase(self, req): + white_letters = "".join([chess.PIECE_SYMBOLS[i] for i in req.white_types]) + black_letters = "".join([chess.PIECE_SYMBOLS[i] for i in req.black_types]) + + if (white_letters + black_letters) in self.available_tables: + req.is_reversed = False + req.egkey = white_letters + black_letters + req.white_piece_squares = req.white_squares + req.white_piece_types = req.white_types + req.black_piece_squares = req.black_squares + req.black_piece_types = req.black_types + elif (black_letters + white_letters) in self.available_tables: + req.is_reversed = True + req.egkey = black_letters + white_letters + req.white_piece_squares = [flip_ns(s) for s in req.black_squares] + req.white_piece_types = req.black_types + req.black_piece_squares = [flip_ns(s) for s in req.white_squares] + req.black_piece_types = req.white_types + + req.side = opp(req.side) + if req.epsq != NOSQUARE: + req.epsq = flip_ns(req.epsq) + else: + raise IndexError("no tablebase available for: {0} {1}".format(white_letters, black_letters)) + + return self._open_tablebase(req) + + def _open_tablebase(self, req): + stream = self.streams.get(req.egkey) + + if stream is None: + path = self.available_tables[req.egkey] + stream = open(path, "rb+") + self.egtb_loadindexes(req.egkey, stream) + self.streams[req.egkey] = stream + + return stream + + def close(self): + """Closes all loaded tables.""" + self.available_tables.clear() + + self.zipinfo.clear() + + self.block_age = 0 + self.block_cache.clear() + + while self.streams: + _, stream = self.streams.popitem() + stream.close() + + def egtb_get_dtm(self, req): + dtm = self._tb_probe(req) + + if req.epsq != NOSQUARE: + capturer_a = 0 + capturer_b = 0 + xed = 0 + + # Flip for move generation. + if req.side == 0: + xs = list(req.white_piece_squares) + xp = list(req.white_piece_types) + ys = list(req.black_piece_squares) + yp = list(req.black_piece_types) + else: + xs = list(req.black_piece_squares) + xp = list(req.black_piece_types) + ys = list(req.white_piece_squares) + yp = list(req.white_piece_types) + + # Captured pawn trick: from ep square to captured. + xed = req.epsq ^ (1 << 3) + + # Find captured index (j). + try: + j = ys.index(xed) + except ValueError: + j = -1 + + # Try first possible ep capture. + if 0 == (0x88 & (map88(xed) + 1)): + capturer_a = xed + 1 + + # Try second possible ep capture + if 0 == (0x88 & (map88(xed) - 1)): + capturer_b = xed - 1 + + if (j > -1) and (ys[j] == xed): + # Find capturers (i). + for i in range(len(xs)): + if xp[i] == PAWN and (xs[i] == capturer_a or xs[i] == capturer_b): + epscore = iFORBID + + # Execute capture. + xs[i] = req.epsq + removepiece(ys, yp, j) + + # Flip back. + if req.side == 1: + xs, ys = ys, xs + xp, yp = yp, xp + + # Make subrequest. + subreq = Request(xs, xp, ys, yp, opp(req.side), NOSQUARE) + try: + epscore = self._tb_probe(subreq) + epscore = adjust_up(epscore) + + # Chooses to ep or not. + dtm = bestx(req.side, epscore, dtm) + except IndexError: + break + + return dtm + + def egtb_block_getnumber(self, req, idx): + maxindex = EGKEY[req.egkey].maxindex + + blocks_per_side = 1 + (maxindex - 1) // ENTRIES_PER_BLOCK + block_in_side = idx // ENTRIES_PER_BLOCK + + return req.side * blocks_per_side + block_in_side + + def egtb_block_getsize(self, req, idx): + blocksz = ENTRIES_PER_BLOCK + maxindex = EGKEY[req.egkey].maxindex + block = idx // blocksz + offset = block * blocksz + + if (offset + blocksz) > maxindex: + return maxindex - offset # last block size + else: + return blocksz # size of a normal block + + def _tb_probe(self, req): + stream = self._setup_tablebase(req) + idx = EGKEY[req.egkey].pctoi(req) + offset, remainder = split_index(idx) + + t = self.block_cache.get((req.egkey, offset, req.side)) + + if t is None: + t = TableBlock(req.egkey, req.side, offset, self.block_age) + + block = self.egtb_block_getnumber(req, idx) + n = self.egtb_block_getsize(req, idx) + z = self.egtb_block_getsize_zipped(req.egkey, block) + + self.egtb_block_park(req.egkey, block, stream) + buffer_zipped = stream.read(z) + + if buffer_zipped[0] == 0: + # If flag is zero, plain LZMA is following. + buffer_zipped = buffer_zipped[2:] + else: + # Else LZMA86. We have to build a fake header. + DICTIONARY_SIZE = 4096 + POS_STATE_BITS = 2 + NUM_LITERAL_POS_STATE_BITS = 0 + NUM_LITERAL_CONTEXT_BITS = 3 + properties = bytearray(13) + properties[0] = (POS_STATE_BITS * 5 + NUM_LITERAL_POS_STATE_BITS) * 9 + NUM_LITERAL_CONTEXT_BITS + for i in range(4): + properties[1 + i] = (DICTIONARY_SIZE >> (8 * i)) & 0xFF + for i in range(8): + properties[5 + i] = (n >> (8 * i)) & 0xFF + + # Concatenate the fake header with the true LZMA stream. + buffer_zipped = properties + buffer_zipped[15:] + + buffer_packed = self.lzma.LZMADecompressor().decompress(buffer_zipped) + + t.pcache = egtb_block_unpack(req.side, n, buffer_packed) + + # Update LRU block cache. + self.block_cache[(t.egkey, t.offset, t.side)] = t + if len(self.block_cache) > 128: + lru_cache_key, lru_age = None, None + for cache_key, cache_entry in self.block_cache.items(): + if lru_age is None or cache_entry.age < lru_age: + lru_cache_key = cache_key + lru_age = cache_entry.age + + del self.block_cache[lru_cache_key] + else: + t.age = self.block_age + + self.block_age += 1 + dtm = t.pcache[remainder] + + return dtm + + def egtb_loadindexes(self, egkey, stream): + zipinfo = self.zipinfo.get(egkey) + + if zipinfo is None: + # Get reserved bytes, blocksize, offset. + stream.seek(0) + HeaderStruct = struct.Struct("<10I") + header = HeaderStruct.unpack(stream.read(HeaderStruct.size)) + offset = header[8] + + blocks = ((offset - 40) // 4) - 1 + n_idx = blocks + 1 + + IndexStruct = struct.Struct("<" + "I" * n_idx) + p = IndexStruct.unpack(stream.read(IndexStruct.size)) + + zipinfo = Zipinfo(extraoffset=0, totalblocks=n_idx, blockindex=p) + self.zipinfo[egkey] = zipinfo + + return zipinfo + + def egtb_block_getsize_zipped(self, egkey, block): + i = self.zipinfo[egkey].blockindex[block] + j = self.zipinfo[egkey].blockindex[block + 1] + return j - i + + def egtb_block_park(self, egkey, block, stream): + i = self.zipinfo[egkey].blockindex[block] + i += self.zipinfo[egkey].extraoffset + stream.seek(i) + return i + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.close() + + +class NativeTablebases(object): + """ + Provides access to Gaviota tablebases via the shared library libgtb. + Has the same interface as :class:`~chess.gaviota.PythonTablebases`. + """ + + def __init__(self, directory, libgtb): + self.libgtb = libgtb + self.libgtb.tb_init.restype = ctypes.c_char_p + self.libgtb.tb_restart.restype = ctypes.c_char_p + self.libgtb.tbpaths_getmain.restype = ctypes.c_char_p + self.libgtb.tb_probe_hard.argtypes = [ + ctypes.c_uint, + ctypes.c_uint, + ctypes.c_uint, + ctypes.POINTER(ctypes.c_uint), + ctypes.POINTER(ctypes.c_uint), + ctypes.POINTER(ctypes.c_ubyte), + ctypes.POINTER(ctypes.c_ubyte), + ctypes.POINTER(ctypes.c_uint), + ctypes.POINTER(ctypes.c_uint) + ] + + if self.libgtb.tb_is_initialized(): + raise RuntimeError("only one gaviota instance can be initialized at a time") + + self.paths = [] + if directory is not None: + self.open_directory(directory) + + self._tbcache_restart(1024 * 1024, 50) + + def open_directory(self, directory): + if not os.path.isdir(directory): + raise IOError("not a tablebase directory: {0}".format(repr(directory))) + + self.paths.append(directory) + self._tb_restart() + + def _tb_restart(self): + self.c_paths = (ctypes.c_char_p * len(self.paths))() + self.c_paths[:] = [path.encode("utf-8") for path in self.paths] + + verbosity = ctypes.c_int(1) + compression_scheme = ctypes.c_int(4) + + ret = self.libgtb.tb_restart(verbosity, compression_scheme, self.c_paths) + if ret: + LOGGER.debug(ret.decode("utf-8")) + + LOGGER.debug("Main path has been set to %r", self.libgtb.tbpaths_getmain().decode("utf-8")) + + av = self.libgtb.tb_availability() + if av & 1: + LOGGER.debug("Some 3 piece tablebases available") + if av & 2: + LOGGER.debug("All 3 piece tablebases complete") + if av & 4: + LOGGER.debug("Some 4 piece tablebases available") + if av & 8: + LOGGER.debug("All 4 piece tablebases complete") + if av & 16: + LOGGER.debug("Some 5 piece tablebases available") + if av & 32: + LOGGER.debug("All 5 piece tablebases complete") + + def _tbcache_restart(self, cache_mem, wdl_fraction): + self.libgtb.tbcache_restart(ctypes.c_size_t(cache_mem), ctypes.c_int(wdl_fraction)) + + def probe_dtm(self, board): + return self._probe_hard(board) + + def probe_wdl(self, board): + return self._probe_hard(board, wdl_only=True) + + def _probe_hard(self, board, wdl_only=False): + if board.is_insufficient_material(): + return 0 + + if chess.pop_count(board.occupied) > 5: + return None + + if board.castling_rights: + return None + + stm = ctypes.c_uint(0 if board.turn == chess.WHITE else 1) + ep_square = ctypes.c_uint(board.ep_square if board.ep_square else 64) + castling = ctypes.c_uint(0) + + c_ws = (ctypes.c_uint * 17)() + c_wp = (ctypes.c_ubyte * 17)() + + i = -1 + for i, square in enumerate(chess.SquareSet(board.occupied_co[chess.WHITE])): + c_ws[i] = square + c_wp[i] = board.piece_type_at(square) + + c_ws[i + 1] = 64 + c_wp[i + 1] = 0 + + c_bs = (ctypes.c_uint * 17)() + c_bp = (ctypes.c_ubyte * 17)() + + i = -1 + for i, square in enumerate(chess.SquareSet(board.occupied_co[chess.BLACK])): + c_bs[i] = square + c_bp[i] = board.piece_type_at(square) + + c_bs[i + 1] = 64 + c_bp[i + 1] = 0 + + # Do a hard probe. + info = ctypes.c_uint() + pliestomate = ctypes.c_uint() + if not wdl_only: + ret = self.libgtb.tb_probe_hard(stm, ep_square, castling, c_ws, c_bs, c_wp, c_bp, ctypes.byref(info), ctypes.byref(pliestomate)) + dtm = int(pliestomate.value) + else: + ret = self.libgtb.tb_probe_WDL_hard(stm, ep_square, castling, c_ws, c_bs, c_wp, c_bp, ctypes.byref(info)) + dtm = 1 + + # Probe forbidden. + if info.value == 3: + LOGGER.warning("Tablebase for %s marked as forbidden", board.fen()) + return None + + # Probe failed or unknown. + if not ret or info.value == 7: + return None + + # Draw. + if info.value == 0: + return 0 + + # White mates. + if info.value == 1: + return dtm if board.turn == chess.WHITE else -dtm + + # Black mates. + if info.value == 2: + return dtm if board.turn == chess.BLACK else -dtm + + def close(self): + self.paths = [] + + if self.libgtb.tb_is_initialized(): + self.libgtb.tbcache_done() + self.libgtb.tb_done() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.close() + + +def open_tablebases_native(directory, libgtb=None, LibraryLoader=ctypes.cdll): + """ + Opens a collection of tablebases for probing using libgtb. + + In most cases :func:`~chess.gaviota.open_tablebases()` should be used. + Use this function only if you do not want to downgrade to pure Python + tablebase probing. + + Raises :exc:`RuntimeError` or :exc:`OSError` when libgtb can not be used. + """ + libgtb = libgtb or ctypes.util.find_library("gtb") or "libgtb.so.1.0.1" + return NativeTablebases(directory, LibraryLoader.LoadLibrary(libgtb)) + + +def open_tablebases(directory=None, libgtb=None, LibraryLoader=ctypes.cdll): + """ + Opens a collection of tablebases for probing. + + First native access via the shared library libgtb is tried. You can + optionally provide a specific library name or a library loader. + The shared library has global state and caches, so only one instance can + be open at a time. + + Second pure Python probing code is tried. + """ + try: + if LibraryLoader: + return open_tablebases_native(directory, libgtb, LibraryLoader) + except (OSError, RuntimeError) as err: + LOGGER.info("Falling back to pure Python tablebases: %r", err) + + try: + import lzma + except ImportError: + try: + from backports import lzma + except ImportError: + LOGGER.exception("You should install backports.lzma") + + return PythonTablebases(directory, lzma) diff --git a/chess/pgn.py b/chess/pgn.py new file mode 100644 index 000000000..52c131dab --- /dev/null +++ b/chess/pgn.py @@ -0,0 +1,1021 @@ +# -*- coding: utf-8 -*- +# +# This file is part of the python-chess library. +# Copyright (C) 2012-2015 Niklas Fiekas +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import chess +import itertools +import re +import logging + +try: + import backport_collections as collections +except ImportError: + import collections + + +LOGGER = logging.getLogger(__name__) + + +NAG_NULL = 0 + +NAG_GOOD_MOVE = 1 +"""A good move. Can also be indicated by ``!`` in PGN notation.""" + +NAG_MISTAKE = 2 +"""A mistake. Can also be indicated by ``?`` in PGN notation.""" + +NAG_BRILLIANT_MOVE = 3 +"""A brilliant move. Can also be indicated by ``!!`` in PGN notation.""" + +NAG_BLUNDER = 4 +"""A blunder. Can also be indicated by ``??`` in PGN notation.""" + +NAG_SPECULATIVE_MOVE = 5 +"""A speculative move. Can also be indicated by ``!?`` in PGN notation.""" + +NAG_DUBIOUS_MOVE = 6 +"""A dubious move. Can also be indicated by ``?!`` in PGN notation.""" + +NAG_FORCED_MOVE = 7 +NAG_SINGULAR_MOVE = 8 +NAG_WORST_MOVE = 9 +NAG_DRAWISH_POSITION = 10 +NAG_QUIET_POSITION = 11 +NAG_ACTIVE_POSITION = 12 +NAG_UNCLEAR_POSITION = 13 +NAG_WHITE_SLIGHT_ADVANTAGE = 14 +NAG_BLACK_SLIGHT_ADVANTAGE = 15 + +# TODO: Add more constants for example from +# https://en.wikipedia.org/wiki/Numeric_Annotation_Glyphs + +NAG_WHITE_MODERATE_COUNTERPLAY = 132 +NAG_BLACK_MODERATE_COUNTERPLAY = 133 +NAG_WHITE_DECISIVE_COUNTERPLAY = 134 +NAG_BLACK_DECISIVE_COUNTERPLAY = 135 +NAG_WHITE_MODERATE_TIME_PRESSURE = 136 +NAG_BLACK_MODERATE_TIME_PRESSURE = 137 +NAG_WHITE_SEVERE_TIME_PRESSURE = 138 +NAG_BLACK_SEVERE_TIME_PRESSURE = 139 + + +TAG_REGEX = re.compile(r"\[([A-Za-z0-9]+)\s+\"(.*)\"\]") + +MOVETEXT_REGEX = re.compile(r""" + (%.*?[\n\r]) + |(\{.*) + |(\$[0-9]+) + |(\() + |(\)) + |(\*|1-0|0-1|1/2-1/2) + |( + [NBKRQ]?[a-h]?[1-8]?[\-x]?[a-h][1-8](?:=?[nbrqNBRQ])? + |-- + |O-O(?:-O)? + |0-0(?:-0)? + ) + |([\?!]{1,2}) + """, re.DOTALL | re.VERBOSE) + + +class GameNode(object): + + def __init__(self): + self.parent = None + self.move = None + self.nags = set() + self.starting_comment = "" + self.comment = "" + self.variations = [] + + self.board_cached = None + + def board(self, _cache=True): + """ + Gets a board with the position of the node. + + It's a copy, so modifying the board will not alter the game. + """ + if self.board_cached: + return self.board_cached.copy() + + board = self.parent.board(_cache=False) + board.push(self.move) + + if _cache: + self.board_cached = board + return board.copy() + else: + return board + + def san(self): + """ + Gets the standard algebraic notation of the move leading to this node. + + Do not call this on the root node. + """ + return self.parent.board().san(self.move) + + def root(self): + """Gets the root node, i.e. the game.""" + node = self + + while node.parent: + node = node.parent + + return node + + def end(self): + """Follows the main variation to the end and returns the last node.""" + node = self + + while node.variations: + node = node.variations[0] + + return node + + def is_end(self): + """Checks if this node is the last node in the current variation.""" + return not self.variations + + def starts_variation(self): + """ + Checks if this node starts a variation (and can thus have a starting + comment). The root node does not start a variation and can have no + starting comment. + """ + if not self.parent or not self.parent.variations: + return False + + return self.parent.variations[0] != self + + def is_main_line(self): + """Checks if the node is in the main line of the game.""" + node = self + + while node.parent: + parent = node.parent + + if not parent.variations or parent.variations[0] != node: + return False + + node = parent + + return True + + def is_main_variation(self): + """ + Checks if this node is the first variation from the point of view of its + parent. The root node also is in the main variation. + """ + if not self.parent: + return True + + return not self.parent.variations or self.parent.variations[0] == self + + def variation(self, move): + """ + Gets a child node by move or index. + """ + for index, variation in enumerate(self.variations): + if move == variation.move or index == move or move == variation: + return variation + + raise KeyError("variation not found") + + def has_variation(self, move): + """Checks if the given move appears as a variation.""" + return move in (variation.move for variation in self.variations) + + def promote_to_main(self, move): + """Promotes the given move to the main variation.""" + variation = self.variation(move) + self.variations.remove(variation) + self.variations.insert(0, variation) + + def promote(self, move): + """Moves the given variation one up in the list of variations.""" + variation = self.variation(move) + i = self.variations.index(variation) + if i > 0: + self.variations[i - 1], self.variations[i] = self.variations[i], self.variations[i - 1] + + def demote(self, move): + """Moves the given variation one down in the list of variations.""" + variation = self.variation(move) + i = self.variations.index(variation) + if i < len(self.variations) - 1: + self.variations[i + 1], self.variations[i] = self.variations[i], self.variations[i + 1] + + def remove_variation(self, move): + """Removes a variation by move.""" + self.variations.remove(self.variation(move)) + + def add_variation(self, move, comment="", starting_comment="", nags=()): + """Creates a child node with the given attributes.""" + node = GameNode() + node.move = move + node.nags = set(nags) + node.parent = self + node.comment = comment + node.starting_comment = starting_comment + self.variations.append(node) + return node + + def add_main_variation(self, move, comment=""): + """ + Creates a child node with the given attributes and promotes it to the + main variation. + """ + node = self.add_variation(move, comment=comment) + self.promote_to_main(move) + return node + + def accept(self, visitor, _board=None): + """ + Traverse game nodes in PGN order using the given *visitor*. Returns + the visitor result. + """ + board = self.board() if _board is None else _board + + # The mainline move goes first. + if self.variations: + main_variation = self.variations[0] + visitor.visit_move(board, main_variation.move) + + # Visit NAGs. + for nag in sorted(main_variation.nags): + visitor.visit_nag(nag) + + # Visit the comment. + if main_variation.comment: + visitor.visit_comment(main_variation.comment) + + # Then visit sidelines. + for variation in itertools.islice(self.variations, 1, None): + # Start variation. + visitor.begin_variation() + + # Append starting comment. + if variation.starting_comment: + visitor.visit_comment(variation.starting_comment) + + # Visit move. + visitor.visit_move(board, variation.move) + + # Visit NAGs. + for nag in sorted(variation.nags): + visitor.visit_nag(nag) + + # Visit comment. + if variation.comment: + visitor.visit_comment(variation.comment) + + # Recursively append the next moves. + board.push(variation.move) + variation.accept(visitor, _board=board) + board.pop() + + # End variation. + visitor.end_variation() + + # The mainline is continued last. + if self.variations: + main_variation = self.variations[0] + + # Recursively append the next moves. + board.push(main_variation.move) + main_variation.accept(visitor, _board=board) + board.pop() + + # Get the result if not called recursively. + if _board is None: + return visitor.result() + + def __str__(self): + return self.accept(StringExporter(columns=None)) + + +class Game(GameNode): + """ + The root node of a game with extra information such as headers and the + starting position. + + By default the following 7 headers are provided in an ordered dictionary: + + >>> game = chess.pgn.Game() + >>> game.headers["Event"] + '?' + >>> game.headers["Site"] + '?' + >>> game.headers["Date"] + '????.??.??' + >>> game.headers["Round"] + '?' + >>> game.headers["White"] + '?' + >>> game.headers["Black"] + '?' + >>> game.headers["Result"] + '*' + + Also has all the other properties and methods of + :class:`~chess.pgn.GameNode`. + """ + + def __init__(self): + super(Game, self).__init__() + + self.headers = collections.OrderedDict() + self.headers["Event"] = "?" + self.headers["Site"] = "?" + self.headers["Date"] = "????.??.??" + self.headers["Round"] = "?" + self.headers["White"] = "?" + self.headers["Black"] = "?" + self.headers["Result"] = "*" + + self.errors = [] + + def board(self, _cache=False): + """ + Gets the starting position of the game. + + Unless the `SetUp` and `FEN` header tags are set this is the default + starting position. + """ + if "FEN" in self.headers and self.headers.get("SetUp", "1") == "1": + chess960 = self.headers.get("Variant") == "Chess960" + board = chess.Board(self.headers["FEN"], chess960=chess960) + board.chess960 = board.chess960 or board.has_chess960_castling_rights() + return board + else: + return chess.Board() + + def setup(self, board): + """ + Setup a specific starting position. This sets (or resets) the *SetUp*, + *FEN* and *Variant* header tags. + """ + try: + fen = board.fen() + except AttributeError: + board = chess.Board(board) + board.chess960 = board.has_chess960_castling_rights() + fen = board.fen() + + if fen == chess.STARTING_FEN: + self.headers.pop("SetUp", None) + self.headers.pop("FEN", None) + else: + self.headers["SetUp"] = "1" + self.headers["FEN"] = fen + + if board.chess960: + self.headers["Variant"] = "Chess960" + else: + self.headers.pop("Variant", None) + + def accept(self, visitor): + """ + Traverses the game in PGN order using the given *visitor*. Returns + the visitor result. + """ + visitor.begin_game() + + visitor.begin_headers() + for tagname, tagvalue in self.headers.items(): + visitor.visit_header(tagname, tagvalue) + visitor.end_headers() + + if self.comment: + visitor.visit_comment(self.comment) + + super(Game, self).accept(visitor, _board=self.board()) + + visitor.visit_result(self.headers["Result"]) + visitor.end_game() + return visitor.result() + + @classmethod + def from_board(cls, board): + """Creates a game from the move stack of a :class:`~chess.Board()`.""" + # Undo all moves. + switchyard = collections.deque() + while board.move_stack: + switchyard.append(board.pop()) + + # Setup initial position. + game = cls() + game.setup(board) + node = game + + # Replay all moves. + while switchyard: + move = switchyard.pop() + node = node.add_variation(move) + board.push(move) + + game.headers["Result"] = board.result() + return game + + +class BaseVisitor(object): + """ + Base class for visitors. + + Use with :func:`chess.pgn.Game.accept()` or + :func:`chess.pgn.GameNode.accept()`. + + Methods are called in PGN order. + """ + + def begin_game(self): + """Called at the start of a game.""" + pass + + def end_game(self): + """Called at the end of a game.""" + pass + + def begin_headers(self): + """Called at the start of the game headers.""" + pass + + def visit_header(self, tagname, tagvalue): + """Called for each game header.""" + pass + + def end_headers(self): + """Called at the end of the game headers.""" + pass + + def begin_variation(self): + """ + Called at the start of a new variation. It is not called for the + mainline of the game. + """ + pass + + def end_variation(self): + """Concludes a variation.""" + pass + + def visit_comment(self, comment): + """Called for each comment.""" + pass + + def visit_nag(self, nag): + """Called for each NAG.""" + pass + + def visit_move(self, board, move): + """ + Called for each move. + + *board* is the board state before the move. The board state must be + restored before the traversal continues. + """ + pass + + def visit_result(self, result): + """Called at the end of the game with the *Result*-header.""" + pass + + def handle_error(self, error): + """Called for errors encountered. Defaults to raising an exception.""" + raise error + + def result(self): + """Called to get the result of the visitor. Defaults to ``None``.""" + return None + + +class GameModelCreator(BaseVisitor): + """ + Creates a game model. Default visitor for :func:`~chess.pgn.read_game()`. + """ + + def __init__(self): + self.game = Game() + self.found_game = False + + self.variation_stack = collections.deque([self.game]) + self.starting_comment = "" + self.in_variation = False + + def begin_game(self): + self.found_game = True + + def visit_header(self, tagname, tagvalue): + self.game.headers[tagname] = tagvalue + + def visit_nag(self, nag): + self.variation_stack[-1].nags.add(nag) + + def begin_variation(self): + self.variation_stack.append(self.variation_stack[-1].parent) + self.in_variation = False + + def end_variation(self): + self.variation_stack.pop() + + def visit_result(self, result): + if self.game.headers.get("Result", "*") == "*": + self.game.headers["Result"] = result + + def visit_comment(self, comment): + if self.in_variation or (not self.variation_stack[-1].parent and self.variation_stack[-1].is_end()): + # Add as a comment for the current node if in the middle of + # a variation. Add as a comment for the game, if the comment + # starts before any move. + new_comment = [self.variation_stack[-1].comment, comment] + self.variation_stack[-1].comment = "\n".join(new_comment).strip() + else: + # Otherwise it is a starting comment. + new_comment = [self.starting_comment, comment] + self.starting_comment = "\n".join(new_comment).strip() + + def visit_move(self, board, move): + self.variation_stack[-1] = self.variation_stack[-1].add_variation(move) + self.variation_stack[-1].starting_comment = self.starting_comment + self.starting_comment = "" + self.in_variation = True + + def handle_error(self, error): + LOGGER.exception("error during pgn parsing") + + def result(self): + """ + Returns a :class:`~chess.pgn.Game()` or ``None`` if no game was + encountered. + """ + return self.game if self.found_game else None + + +class StringExporter(BaseVisitor): + """ + Allows exporting a game as a string. + + >>> exporter = chess.pgn.StringExporter(headers=True, variations=True, comments=True) + >>> pgn_string = game.accept(exporter) + + Only *columns* characters are written per line. If *columns* is ``None`` + then the entire movetext will be on a single line. This does not affect + header tags and comments. + + There will be no newlines at the end of the string. + """ + + def __init__(self, columns=80, headers=True, comments=True, variations=True): + self.columns = columns + self.headers = headers + self.comments = comments + self.variations = variations + + self.force_movenumber = True + + self.lines = [] + self.current_line = "" + self.variation_depth = 0 + + def flush_current_line(self): + if self.current_line: + self.lines.append(self.current_line.rstrip()) + self.current_line = "" + + def write_token(self, token): + if self.columns is not None and self.columns - len(self.current_line) < len(token): + self.flush_current_line() + self.current_line += token + + def write_line(self, line=""): + self.flush_current_line() + self.lines.append(line.rstrip()) + + def begin_game(self): + self.after_variation = True + + def end_game(self): + self.write_line() + + def visit_header(self, tagname, tagvalue): + if self.headers: + self.write_line("[{0} \"{1}\"]".format(tagname, tagvalue)) + + def end_headers(self): + if self.headers: + self.write_line() + + def begin_variation(self): + self.variation_depth += 1 + + if self.variations: + self.write_token("( ") + self.force_movenumber = True + + def end_variation(self): + self.variation_depth -= 1 + + if self.variations: + self.write_token(") ") + self.force_movenumber = True + + def visit_comment(self, comment): + if self.comments and (self.variations or not self.variation_depth): + self.write_token("{ " + comment.replace("}", "").strip() + " } ") + self.force_movenumber = True + + def visit_nag(self, nag): + if self.comments and (self.variations or not self.variation_depth): + self.write_token("$" + str(nag) + " ") + + def visit_move(self, board, move): + if self.variations or not self.variation_depth: + # Write the move number. + if board.turn == chess.WHITE: + self.write_token(str(board.fullmove_number) + ". ") + elif self.force_movenumber: + self.write_token(str(board.fullmove_number) + "... ") + + # Write the SAN. + self.write_token(board.san(move) + " ") + + self.force_movenumber = False + + def visit_result(self, result): + self.write_token(result + " ") + + def result(self): + if self.current_line: + return "\n".join(itertools.chain(self.lines, [self.current_line.rstrip()])).rstrip() + else: + return "\n".join(self.lines).rstrip() + + def __str__(self): + return self.result() + + +class FileExporter(StringExporter): + """ + Like a :class:`~chess.pgn.StringExporter`, but games are written directly + to a text file. + + There will always be a blank line after each game. Handling encodings is up + to the caller. + + >>> new_pgn = open("new.pgn", "w", encoding="utf-8") + >>> exporter = chess.pgn.FileExporter(new_pgn) + >>> game.accept(exporter) + """ + + def __init__(self, handle, columns=80, headers=True, comments=True, variations=True): + super(FileExporter, self).__init__(columns=columns, headers=headers, comments=comments, variations=variations) + self.handle = handle + + def flush_current_line(self): + if self.current_line: + self.handle.write(self.current_line.rstrip()) + self.handle.write("\n") + self.current_line = "" + + def write_line(self, line=""): + self.flush_current_line() + self.handle.write(line.rstrip()) + self.handle.write("\n") + + def result(self): + return None + + def __repr__(self): + return "".format(hex(id(self))) + + def __str__(self): + return self.__repr__() + + +def read_game(handle, Visitor=GameModelCreator): + """ + Reads a game from a file opened in text mode. + + >>> pgn = open("data/pgn/kasparov-deep-blue-1997.pgn") + >>> first_game = chess.pgn.read_game(pgn) + >>> second_game = chess.pgn.read_game(pgn) + >>> + >>> first_game.headers["Event"] + 'IBM Man-Machine, New York USA' + + By using text mode the parser does not need to handle encodings. It is the + callers responsibility to open the file with the correct encoding. + PGN files are ASCII or UTF-8 most of the time. So the following should + cover most relevant cases (ASCII, UTF-8 without BOM, UTF-8 with BOM, + UTF-8 with encoding errors). + + >>> pgn = open("data/pgn/kasparov-deep-blue-1997.pgn", encoding="utf-8-sig", errors="surrogateescape") + + Use `StringIO` to parse games from a string. + + >>> pgn_string = "1. e4 e5 2. Nf3 *" + >>> + >>> try: + >>> from StringIO import StringIO # Python 2 + >>> except ImportError: + >>> from io import StringIO # Python 3 + >>> + >>> pgn = StringIO(pgn_string) + >>> game = chess.pgn.read_game(pgn) + + The end of a game is determined by a completely blank line or the end of + the file. (Of course blank lines in comments are possible.) + + According to the standard at least the usual 7 header tags are required + for a valid game. This parser also handles games without any headers just + fine. + + The parser is relatively forgiving when it comes to errors. It skips over + tokens it can not parse. Any exceptions are logged. + + Returns the parsed game or ``None`` if the EOF is reached. + """ + visitor = Visitor() + + dummy_game = Game() + found_game = False + found_content = False + + line = handle.readline() + + # Parse game headers. + while line: + # Skip empty lines and comments. + if not line.strip() or line.strip().startswith("%"): + line = handle.readline() + continue + + if not found_game: + visitor.begin_game() + visitor.begin_headers() + + found_game = True + + # Read header tags. + tag_match = TAG_REGEX.match(line) + if tag_match: + dummy_game.headers[tag_match.group(1)] = tag_match.group(2) + visitor.visit_header(tag_match.group(1), tag_match.group(2)) + else: + break + + line = handle.readline() + + if found_game: + visitor.end_headers() + + # Get the next non-empty line. + while not line.strip() and line: + line = handle.readline() + + # Movetext parser state. + try: + board_stack = collections.deque([dummy_game.board()]) + except ValueError as error: + visitor.handle_error(error) + board_stack = collections.deque([chess.Board()]) + + # Parse movetext. + while line: + read_next_line = True + + # An empty line is the end of a game. + if not line.strip() and found_content: + if found_game: + visitor.end_game() + + return visitor.result() + + for match in MOVETEXT_REGEX.finditer(line): + token = match.group(0) + + if token.startswith("%"): + # Ignore the rest of the line. + line = handle.readline() + continue + + if not found_game: + found_game = True + visitor.begin_game() + + if token.startswith("{"): + # Consume until the end of the comment. + line = token[1:] + comment_lines = [] + while line and "}" not in line: + comment_lines.append(line.rstrip()) + line = handle.readline() + end_index = line.find("}") + comment_lines.append(line[:end_index]) + if "}" in line: + line = line[end_index:] + else: + line = "" + + visitor.visit_comment("\n".join(comment_lines).strip()) + + # Continue with the current or the next line. + if line: + read_next_line = False + break + elif token.startswith("$"): + # Found a NAG. + try: + nag = int(token[1:]) + except ValueError as error: + visitor.handle_error(error) + else: + visitor.visit_nag(nag) + elif token == "?": + visitor.visit_nag(NAG_MISTAKE) + elif token == "??": + visitor.visit_nag(NAG_BLUNDER) + elif token == "!": + visitor.visit_nag(NAG_GOOD_MOVE) + elif token == "!!": + visitor.visit_nag(NAG_BRILLIANT_MOVE) + elif token == "!?": + visitor.visit_nag(NAG_SPECULATIVE_MOVE) + elif token == "?!": + visitor.visit_nag(NAG_DUBIOUS_MOVE) + elif token == "(": + if board_stack[-1].move_stack: + visitor.begin_variation() + + board = board_stack[-1].copy() + board.pop() + board_stack.append(board) + elif token == ")": + # Found a close variation token. Always leave at least the + # root node on the stack. + if len(board_stack) > 1: + visitor.end_variation() + board_stack.pop() + elif token in ["1-0", "0-1", "1/2-1/2", "*"] and len(board_stack) == 1: + # Found a result token. + found_content = True + visitor.visit_result(token) + else: + # Found a SAN token. + found_content = True + + # Replace zeros castling notation. + if token == "0-0": + token = "O-O" + elif token == "0-0-0": + token = "O-O-O" + + # Parse the SAN. + try: + move = board_stack[-1].parse_san(token) + except ValueError as error: + visitor.handle_error(error) + else: + visitor.visit_move(board_stack[-1], move) + board_stack[-1].push(move) + + if read_next_line: + line = handle.readline() + + if found_game: + visitor.end_game() + + return visitor.result() + + +def scan_headers(handle): + """ + Scan a PGN file opened in text mode for game offsets and headers. + + Yields a tuple for each game. The first element is the offset. The second + element is an ordered dictionary of game headers. + + Since actually parsing many games from a big file is relatively expensive, + this is a better way to look only for specific games and seek and parse + them later. + + This example scans for the first game with Kasparov as the white player. + + >>> pgn = open("mega.pgn") + >>> for offset, headers in chess.pgn.scan_headers(pgn): + ... if "Kasparov" in headers["White"]: + ... kasparov_offset = offset + ... break + + Then it can later be seeked an parsed. + + >>> pgn.seek(kasparov_offset) + >>> game = chess.pgn.read_game(pgn) + + This also works nicely with generators, scanning lazily only when the next + offset is required. + + >>> white_win_offsets = (offset for offset, headers in chess.pgn.scan_headers(pgn) + ... if headers["Result"] == "1-0") + >>> first_white_win = next(white_win_offsets) + >>> second_white_win = next(white_win_offsets) + + :warning: Be careful when seeking a game in the file while more offsets are + being generated. + """ + in_comment = False + + game_headers = None + game_pos = None + + last_pos = handle.tell() + line = handle.readline() + + while line: + # Skip single line comments. + if line.startswith("%"): + last_pos = handle.tell() + line = handle.readline() + continue + + # Reading a header tag. Parse it and add it to the current headers. + if not in_comment and line.startswith("["): + tag_match = TAG_REGEX.match(line) + if tag_match: + if game_pos is None: + game_headers = collections.OrderedDict() + game_headers["Event"] = "?" + game_headers["Site"] = "?" + game_headers["Date"] = "????.??.??" + game_headers["Round"] = "?" + game_headers["White"] = "?" + game_headers["Black"] = "?" + game_headers["Result"] = "*" + + game_pos = last_pos + + game_headers[tag_match.group(1)] = tag_match.group(2) + + last_pos = handle.tell() + line = handle.readline() + continue + + # Reading movetext. Update parser state in_comment in order to skip + # comments that look like header tags. + if (not in_comment and "{" in line) or (in_comment and "}" in line): + in_comment = line.rfind("{") > line.rfind("}") + + # Reading movetext. If there were headers, previously, those are now + # complete and can be yielded. + if game_pos is not None: + yield game_pos, game_headers + game_pos = None + + last_pos = handle.tell() + line = handle.readline() + + # Yield the headers of the last game. + if game_pos is not None: + yield game_pos, game_headers + + +def scan_offsets(handle): + """ + Scan a PGN file opened in text mode for game offsets. + + Yields the starting offsets of all the games, so that they can be seeked + later. This is just like :func:`~chess.pgn.scan_headers()` but more + efficient if you do not actually need the header information. + + The PGN standard requires each game to start with an *Event*-tag. So does + this scanner. + """ + in_comment = False + + last_pos = handle.tell() + line = handle.readline() + + while line: + if not in_comment and line.startswith("[Event \""): + yield last_pos + elif (not in_comment and "{" in line) or (in_comment and "}" in line): + in_comment = line.rfind("{") > line.rfind("}") + + last_pos = handle.tell() + line = handle.readline() diff --git a/chess/pgn_file.py b/chess/pgn_file.py deleted file mode 100644 index 9356dc494..000000000 --- a/chess/pgn_file.py +++ /dev/null @@ -1,147 +0,0 @@ -# -*- coding: utf-8 -*- -# -# This file is part of the python-chess library. -# Copyright (C) 2012 Niklas Fiekas -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import chess -import re - -tag_regex = re.compile(r"\[([A-Za-z0-9]+)\s+\"(.*)\"\]") -movetext_regex = re.compile(r""" - (\;.*?[\n\r]) - |(\{.*?[^\\]\}) - |(\$[0-9]+) - |(\() - |(\)) - |(\*|1-0|0-1|1/2-1/2) - |( - ([a-hKQRBN][a-hxKQRBN1-8+#=\-]{1,6} - |O-O(?:\-O)?) - ([\?!]{1,2})* - ) - """, re.DOTALL | re.VERBOSE) - -class PgnFile(object): - def __init__(self): - self._games = [] - - def add_game(self, game): - self._games.append(game) - - def __len__(self): - return len(self._games) - - def __getitem__(self, key): - return self._games[key] - - def __setitem__(self, key, value): - self._games[key] = value - - def __delitem__(self, key): - del self._games[key] - - def __iter__(self): - for game in self._games: - yield game - - def __reversed__(self): - for game in reversed(self._games): - yield game - - def __contains__(self, game): - return game in self._games - - @staticmethod - def __parse_movetext(game, movetext): - variation_stack = [game] - in_variation = False - start_comment = "" - for match in movetext_regex.finditer(movetext): - token = match.group(0) - if token in ["1-0", "0-1", "1/2-1/2", "*"] and len(variation_stack) == 1: - game.headers["Result"] = token - elif token.startswith("%"): - # Ignore rest of line comments. - pass - elif token.startswith("{"): - if in_variation: - variation_stack[-1].comment += token[1:-1].strip() - elif len(variation_stack) == 1: - variation_stack[0].start_comment += token[1:-1].strip() - else: - start_comment += token[1:-1].strip() - elif token.startswith("$"): - if not in_variation: - raise PgnError("NAGs must go behind moves.") - variation_stack[-1].nags.append(int(token[1:])) - elif token == "(": - variation_stack.append(variation_stack[-1].previous_node) - in_variation = False - elif token == ")": - variation_stack.pop() - else: - in_variation = True - pos = variation_stack[-1].position - variation_stack[-1] = variation_stack[-1].add_variation(pos.get_move_from_san(str(token))) - variation_stack[-1].start_comment = start_comment - start_comment = "" - - - @classmethod - def open(cls, path): - pgn_file = PgnFile() - current_game = None - in_tags = False - - for line in open(path, 'r'): - # Decode and strip the line. - line = line.decode('latin-1').strip() - - # Skip empty lines and comments. - if not line or line.startswith("%"): - continue - - # Check for tag lines. - tag_match = tag_regex.match(line) - if tag_match: - tag_name = tag_match.group(1) - tag_value = tag_match.group(2).replace("\\\\", "\\").replace("\\[", "]").replace("\\\"", "\"") - if current_game: - if in_tags: - current_game.headers[tag_name] = tag_value - else: - cls.__parse_movetext(current_game, movetext) - pgn_file.add_game(current_game) - current_game = None - if not current_game: - current_game = chess.Game() - current_game.headers[tag_name] = tag_value - movetext = "" - in_tags = True - # Parse movetext lines. - else: - if current_game: - movetext += "\n" + line - pass - else: - raise chess.PgnError("Invalid PGN. Expected header before movetext: %s", repr(line)) - in_tags = False - - if current_game: - cls.__parse_movetext(current_game, movetext) - pgn_file.add_game(current_game) - - return pgn_file diff --git a/chess/polyglot.py b/chess/polyglot.py new file mode 100644 index 000000000..bd929199c --- /dev/null +++ b/chess/polyglot.py @@ -0,0 +1,232 @@ +# -*- coding: utf-8 -*- +# +# This file is part of the python-chess library. +# Copyright (C) 2012-2015 Niklas Fiekas +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import chess +import struct +import os +import mmap +import random +import itertools + +try: + import backport_collections as collections +except ImportError: + import collections + +ENTRY_STRUCT = struct.Struct(">QHHI") + + +class Entry(collections.namedtuple("Entry", ["key", "raw_move", "weight", "learn"])): + """An entry from a polyglot opening book.""" + + def move(self, chess960=False): + """Gets the move (as a :class:`~chess.Move` object).""" + # Extract source and target square. + to_square = self.raw_move & 0x3f + from_square = (self.raw_move >> 6) & 0x3f + + # Extract the promotion type. + promotion_part = (self.raw_move >> 12) & 0x7 + promotion = promotion_part + 1 if promotion_part else None + + # Convert castling moves. + if not chess960 and not promotion: + if from_square == chess.E1: + if to_square == chess.H1: + return chess.Move(chess.E1, chess.G1) + elif to_square == chess.A1: + return chess.Move(chess.E1, chess.C1) + elif from_square == chess.E8: + if to_square == chess.H8: + return chess.Move(chess.E8, chess.G8) + elif to_square == chess.A8: + return chess.Move(chess.E8, chess.C8) + + return chess.Move(from_square, to_square, promotion) + + +class MemoryMappedReader(object): + """Maps a polyglot opening book to memory.""" + + def __init__(self, filename): + self.fd = os.open(filename, os.O_RDONLY | os.O_BINARY if hasattr(os, "O_BINARY") else os.O_RDONLY) + + try: + self.mmap = mmap.mmap(self.fd, 0, access=mmap.ACCESS_READ) + except (ValueError, mmap.error): + # Can not memory map empty opening books. + self.mmap = None + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + return self.close() + + def close(self): + """Closes the reader.""" + if self.mmap is not None: + self.mmap.close() + + try: + os.close(self.fd) + except OSError: + pass + + def __len__(self): + if self.mmap is None: + return 0 + else: + return self.mmap.size() // ENTRY_STRUCT.size + + def __getitem__(self, key): + if self.mmap is None: + raise IndexError() + + if key < 0: + key = len(self) + key + + try: + key, raw_move, weight, learn = ENTRY_STRUCT.unpack_from(self.mmap, key * ENTRY_STRUCT.size) + except struct.error: + raise IndexError() + + return Entry(key, raw_move, weight, learn) + + def __iter__(self): + i = 0 + size = len(self) + while i < size: + yield self[i] + i += 1 + + def bisect_key_left(self, key): + lo = 0 + hi = len(self) + + while lo < hi: + mid = (lo + hi) // 2 + mid_key, _, _, _ = ENTRY_STRUCT.unpack_from(self.mmap, mid * ENTRY_STRUCT.size) + if mid_key < key: + lo = mid + 1 + else: + hi = mid + + return lo + + def __contains__(self, entry): + return any(current == entry for current in self.find_all(entry.key, entry.weight)) + + def find_all(self, board, minimum_weight=1, exclude_moves=()): + """Seeks a specific position and yields corresponding entries.""" + try: + zobrist_hash = board.zobrist_hash() + except AttributeError: + zobrist_hash = int(board) + board = None + + i = self.bisect_key_left(zobrist_hash) + size = len(self) + + while i < size: + entry = self[i] + i += 1 + + if entry.key != zobrist_hash: + break + + if entry.weight < minimum_weight: + continue + + if board: + move = entry.move(chess960=board.chess960) + elif exclude_moves: + move = entry.move() + + if exclude_moves and move in exclude_moves: + continue + + if board and not board.is_legal(move): + continue + + yield entry + + def find(self, board, minimum_weight=1, exclude_moves=()): + """ + Finds the main entry for the given position or zobrist hash. + + The main entry is the first entry with the highest weight. + + By default entries with weight ``0`` are excluded. This is a common way + to delete entries from an opening book without compacting it. Pass + *minimum_weight* ``0`` to select all entries. + + Raises :exc:`IndexError` if no entries are found. + """ + try: + return max(self.find_all(board, minimum_weight, exclude_moves), key=lambda entry: entry.weight) + except ValueError: + raise IndexError() + + def choice(self, board, minimum_weight=1, exclude_moves=(), random=random): + """ + Uniformly selects a random entry for the given position. + + Raises :exc:`IndexError` if no entries are found. + """ + total_entries = sum(1 for entry in self.find_all(board, minimum_weight, exclude_moves)) + if not total_entries: + raise IndexError() + + choice = random.randint(0, total_entries - 1) + return next(itertools.islice(self.find_all(board, minimum_weight, exclude_moves), choice, None)) + + def weighted_choice(self, board, exclude_moves=(), random=random): + """ + Selects a random entry for the given position, distributed by the + weights of the entries. + + Raises :exc:`IndexError` if no entries are found. + """ + total_weights = sum(entry.weight for entry in self.find_all(board, exclude_moves=exclude_moves)) + if not total_weights: + raise IndexError() + + choice = random.randint(0, total_weights - 1) + + current_sum = 0 + for entry in self.find_all(board, exclude_moves=exclude_moves): + current_sum += entry.weight + if current_sum > choice: + return entry + + assert False + + +def open_reader(path): + """ + Creates a reader for the file at the given path. + + >>> with open_reader("data/polyglot/performance.bin") as reader: + ... for entry in reader.find_all(board): + ... print(entry.move(), entry.weight, entry.learn) + e2e4 1 0 + d2d4 1 0 + c2c4 1 0 + """ + return MemoryMappedReader(path) diff --git a/chess/polyglot_opening_book.py b/chess/polyglot_opening_book.py deleted file mode 100644 index 8b2d0ca74..000000000 --- a/chess/polyglot_opening_book.py +++ /dev/null @@ -1,113 +0,0 @@ -# -*- coding: utf-8 -*- -# -# This file is part of the python-chess library. -# Copyright (C) 2012 Niklas Fiekas -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import chess -import struct - -# TODO: Also allow writing to opening books and document the class. - -class PolyglotOpeningBook(object): - def __init__(self, path): - self._entry_struct = struct.Struct(">QHHI") - - self._stream = open(path, "rb") - - self.seek_entry(0, 2) - self._entry_count = self._stream.tell() / 16 - - self.seek_entry(0) - - def __len__(self): - return self._entry_count - - def __getitem__(self, key): - if key >= self._entry_count: - raise IndexError() - self.seek_entry(key) - return self.next() - - def __iter__(self): - self.seek_entry(0) - return self - - def __reversed__(self): - for i in xrange(len(self) - 1, -1, -1): - self.seek_entry(i) - yield self.next() - - def seek_entry(self, offset, whence=0): - self._stream.seek(offset * 16, whence) - - def seek_position(self, position): - # Calculate the position hash. - key = position.__hash__() - - # Do a binary search. - start = 0 - end = len(self) - while end >= start: - middle = (start + end) / 2 - - self.seek_entry(middle) - raw_entry = self.next_raw() - - if raw_entry[0] < key: - start = middle + 1 - elif raw_entry[0] > key: - end = middle - 1 - else: - # Position found. Move back to the first occurence. - self.seek_entry(-1, 1) - while raw_entry[0] == key and middle > start: - middle -= 1 - self.seek_entry(middle) - raw_entry = self.next_raw() - - if middle == start and raw_entry[0] == key: - self.seek_entry(-1, 1) - return - - raise KeyError() - - def next_raw(self): - try: - return self._entry_struct.unpack(self._stream.read(16)) - except struct.error: - raise StopIteration() - - def next(self): - raw_entry = self.next_raw() - return chess.PolyglotOpeningBookEntry(raw_entry[0], raw_entry[1], - raw_entry[2], raw_entry[3]); - - def get_entries_for_position(self, position): - position_hash = position.__hash__() - - # Seek the position. Stop iteration if no entry exists. - try: - self.seek_position(position) - except KeyError: - raise StopIteration() - - # Iterate. - while True: - entry = self.next() - if entry.key == position_hash: - yield entry - else: - break diff --git a/chess/syzygy.py b/chess/syzygy.py new file mode 100644 index 000000000..c012ff162 --- /dev/null +++ b/chess/syzygy.py @@ -0,0 +1,1630 @@ +# -*- coding: utf-8 -*- +# +# This file is part of the python-chess library. +# Copyright (C) 2012-2015 Niklas Fiekas +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import chess +import mmap +import os +import struct +import sys +import threading + + +UINT64_BE = struct.Struct(">Q") +UINT32 = struct.Struct("I") +USHORT = struct.Struct("= (3, ): + self.read_ubyte = self.data.__getitem__ + else: + def read_ubyte(data_ptr): + return ord(self.data[data_ptr]) + + self.read_ubyte = read_ubyte + + self.key = calc_key_from_filename(filename) + self.mirrored_key = calc_key_from_filename(filename, True) + self.symmetric = self.key == self.mirrored_key + + # Leave the v out of the filename to get the number of pieces. + self.num = len(filename) - 1 + + self.has_pawns = "P" in filename + + black_part, white_part = filename.split("v") + if self.has_pawns: + self.pawns = {} + self.pawns[0] = white_part.count("P") + self.pawns[1] = black_part.count("P") + if self.pawns[1] > 0 and (self.pawns[0] == 0 or self.pawns[1] < self.pawns[0]): + self.pawns[0], self.pawns[1] = self.pawns[1], self.pawns[0] + else: + j = 0 + for piece_type in PCHR: + if black_part.count(piece_type) == 1: + j += 1 + if white_part.count(piece_type) == 1: + j += 1 + if j >= 3: + self.enc_type = 0 + elif j == 2: + self.enc_type = 2 + else: + # Each player will always have a king, unless we're playing + # suicide chess. + # TODO: Could be implemented. + assert False + + def setup_pairs(self, data_ptr, tb_size, size_idx, wdl): + d = PairsData() + + self._flags = self.read_ubyte(data_ptr) + if self.read_ubyte(data_ptr) & 0x80: + d.idxbits = 0 + if wdl: + d.min_len = self.read_ubyte(data_ptr + 1) + else: + d.min_len = 0 + self._next = data_ptr + 2 + self.size[size_idx + 0] = 0 + self.size[size_idx + 1] = 0 + self.size[size_idx + 2] = 0 + return d + + d.blocksize = self.read_ubyte(data_ptr + 1) + d.idxbits = self.read_ubyte(data_ptr + 2) + + real_num_blocks = self.read_uint32(data_ptr + 4) + num_blocks = real_num_blocks + self.read_ubyte(data_ptr + 3) + max_len = self.read_ubyte(data_ptr + 8) + min_len = self.read_ubyte(data_ptr + 9) + h = max_len - min_len + 1 + num_syms = self.read_ushort(data_ptr + 10 + 2 * h) + + d.offset = data_ptr + 10 + d.symlen = [0 for _ in range(h * 8 + num_syms)] + d.sympat = data_ptr + 12 + 2 * h + d.min_len = min_len + + self._next = data_ptr + 12 + 2 * h + 3 * num_syms + (num_syms & 1) + + num_indices = (tb_size + (1 << d.idxbits) - 1) >> d.idxbits + self.size[size_idx + 0] = 6 * num_indices + self.size[size_idx + 1] = 2 * num_blocks + self.size[size_idx + 2] = (1 << d.blocksize) * real_num_blocks + + tmp = [0 for _ in range(num_syms)] + for i in range(num_syms): + if not tmp[i]: + self.calc_symlen(d, i, tmp) + + d.base = [0 for _ in range(h)] + d.base[h - 1] = 0 + for i in range(h - 2, -1, -1): + d.base[i] = (d.base[i + 1] + self.read_ushort(d.offset + i * 2) - self.read_ushort(d.offset + i * 2 + 2)) // 2 + for i in range(h): + d.base[i] <<= 64 - (min_len + i) + + d.offset -= 2 * d.min_len + + return d + + def set_norm_piece(self, norm, pieces): + if self.enc_type == 0: + norm[0] = 3 + elif self.enc_type == 2: + norm[0] = 2 + else: + norm[0] = self.enc_type - 1 + + i = norm[0] + while i < self.num: + j = i + while j < self.num and pieces[j] == pieces[i]: + norm[i] += 1 + j += 1 + i += norm[i] + + def calc_factors_piece(self, factor, order, norm): + PIVFAC = [31332, 28056, 462] + + n = 64 - norm[0] + + f = 1 + i = norm[0] + k = 0 + while i < self.num or k == order: + if k == order: + factor[0] = f + f *= PIVFAC[self.enc_type] + else: + factor[i] = f + f *= subfactor(norm[i], n) + n -= norm[i] + i += norm[i] + k += 1 + + return f + + def calc_factors_pawn(self, factor, order, order2, norm, f): + i = norm[0] + if order2 < 0x0f: + i += norm[i] + n = 64 - i + + fac = 1 + k = 0 + while i < self.num or k == order or k == order2: + if k == order: + factor[0] = fac + fac *= PFACTOR[norm[0] - 1][f] + elif k == order2: + factor[norm[0]] = fac + fac *= subfactor(norm[norm[0]], 48 - norm[0]) + else: + factor[i] = fac + fac *= subfactor(norm[i], n) + n -= norm[i] + i += norm[i] + k += 1 + + return fac + + def set_norm_pawn(self, norm, pieces): + norm[0] = self.pawns[0] + if self.pawns[1]: + norm[self.pawns[0]] = self.pawns[1] + + i = self.pawns[0] + self.pawns[1] + while i < self.num: + j = i + while j < self.num and pieces[j] == pieces[i]: + norm[i] += 1 + j += 1 + i += norm[i] + + def calc_symlen(self, d, s, tmp): + w = d.sympat + 3 * s + s2 = (self.read_ubyte(w + 2) << 4) | (self.read_ubyte(w + 1) >> 4) + if s2 == 0x0fff: + d.symlen[s] = 0 + else: + s1 = ((self.read_ubyte(w + 1) & 0xf) << 8) | self.read_ubyte(w) + if not tmp[s1]: + self.calc_symlen(d, s1, tmp) + if not tmp[s2]: + self.calc_symlen(d, s2, tmp) + d.symlen[s] = d.symlen[s1] + d.symlen[s2] + 1 + tmp[s] = 1 + + def pawn_file(self, pos): + for i in range(1, self.pawns[0]): + if FLAP[pos[0]] > FLAP[pos[i]]: + pos[0], pos[i] = pos[i], pos[0] + + return FILE_TO_FILE[pos[0] & 0x07] + + def encode_piece(self, norm, pos, factor): + n = self.num + + if pos[0] & 0x04: + for i in range(n): + pos[i] ^= 0x07 + + if pos[0] & 0x20: + for i in range(n): + pos[i] ^= 0x38 + + for i in range(n): + if OFFDIAG[pos[i]]: + break + + if i < (3 if self.enc_type == 0 else 2) and OFFDIAG[pos[i]] > 0: + for i in range(n): + pos[i] = FLIPDIAG[pos[i]] + + if self.enc_type == 0: # 111 + i = int(pos[1] > pos[0]) + j = int(pos[2] > pos[0]) + int(pos[2] > pos[1]) + + if OFFDIAG[pos[0]]: + idx = TRIANGLE[pos[0]] * 63 * 62 + (pos[1] - i) * 62 + (pos[2] - j) + elif OFFDIAG[pos[1]]: + idx = 6 * 63 * 62 + DIAG[pos[0]] * 28 * 62 + LOWER[pos[1]] * 62 + pos[2] - j + elif OFFDIAG[pos[2]]: + idx = 6 * 63 * 62 + 4 * 28 * 62 + (DIAG[pos[0]]) * 7 * 28 + (DIAG[pos[1]] - i) * 28 + LOWER[pos[2]] + else: + idx = 6 * 63 * 62 + 4 * 28 * 62 + 4 * 7 * 28 + (DIAG[pos[0]] * 7 * 6) + (DIAG[pos[1]] - i) * 6 + (DIAG[pos[2]] - j) + i = 3 + elif self.enc_type == 1: # K3 + j = int(pos[2] > pos[0]) + int(pos[2] > pos[1]) + + idx = KK_IDX[TRIANGLE[pos[0]]][pos[1]] + if idx < 441: + idx = idx + 441 * (pos[2] - j) + else: + idx = 441 * 62 + (idx - 441) + 21 * LOWER[pos[2]] + if not OFFDIAG[pos[2]]: + idx -= j * 21 + i = 3 + else: # K2 + idx = KK_IDX[TRIANGLE[pos[0]]][pos[1]] + i = 2 + + idx *= factor[0] + + while i < n: + t = norm[i] + + for j in range(i, i + t): + for k in range(j + 1, i + t): + # Swap. + if pos[j] > pos[k]: + pos[j], pos[k] = pos[k], pos[j] + + s = 0 + + for m in range(i, i + t): + p = pos[m] + j = 0 + for l in range(i): + j += int(p > pos[l]) + s += BINOMIAL[m - i][p - j] + + idx += s * factor[i] + i += t + + return idx + + def encode_pawn(self, norm, pos, factor): + n = self.num + + if pos[0] & 0x04: + for i in range(n): + pos[i] ^= 0x07 + + for i in range(1, self.pawns[0]): + for j in range(i + 1, self.pawns[0]): + if PTWIST[pos[i]] < PTWIST[pos[j]]: + pos[i], pos[j] = pos[j], pos[i] + + t = self.pawns[0] - 1 + idx = PAWNIDX[t][FLAP[pos[0]]] + for i in range(t, 0, -1): + idx += BINOMIAL[t - i][PTWIST[pos[i]]] + idx *= factor[0] + + # Remaining pawns. + i = self.pawns[0] + t = i + self.pawns[1] + if t > i: + for j in range(i, t): + for k in range(j + 1, t): + if pos[j] > pos[k]: + pos[j], pos[k] = pos[k], pos[j] + s = 0 + for m in range(i, t): + p = pos[m] + j = 0 + for k in range(i): + j += int(p > pos[k]) + s += BINOMIAL[m - i][p - j - 8] + idx += s * factor[i] + i = t + + while i < n: + t = norm[i] + for j in range(i, i + t): + for k in range(j + 1, i + t): + if pos[j] > pos[k]: + pos[j], pos[k] = pos[k], pos[j] + + s = 0 + for m in range(i, i + t): + p = pos[m] + j = 0 + for k in range(i): + j += int(p > pos[k]) + s += BINOMIAL[m - i][p - j] + + idx += s * factor[i] + i += t + + return idx + + def decompress_pairs(self, d, idx): + if not d.idxbits: + return d.min_len + + mainidx = idx >> d.idxbits + litidx = (idx & (1 << d.idxbits) - 1) - (1 << (d.idxbits - 1)) + block = self.read_uint32(d.indextable + 6 * mainidx) + + idx_offset = self.read_ushort(d.indextable + 6 * mainidx + 4) + litidx += idx_offset + + if litidx < 0: + while litidx < 0: + block -= 1 + litidx += self.read_ushort(d.sizetable + 2 * block) + 1 + else: + while litidx > self.read_ushort(d.sizetable + 2 * block): + litidx -= self.read_ushort(d.sizetable + 2 * block) + 1 + block += 1 + + ptr = d.data + (block << d.blocksize) + + m = d.min_len + base_idx = -m + symlen_idx = 0 + + code = self.read_uint64_be(ptr) + + ptr += 2 * 4 + bitcnt = 0 # Number of empty bits in code + while True: + l = m + while code < d.base[base_idx + l]: + l += 1 + sym = self.read_ushort(d.offset + l * 2) + sym += (code - d.base[base_idx + l]) >> (64 - l) + if litidx < d.symlen[symlen_idx + sym] + 1: + break + litidx -= d.symlen[symlen_idx + sym] + 1 + code <<= l + bitcnt += l + if bitcnt >= 32: + bitcnt -= 32 + code |= self.read_uint32_be(ptr) << bitcnt + ptr += 4 + + # Cut off at 64bit. + code &= 0xffffffffffffffff + + sympat = d.sympat + while d.symlen[symlen_idx + sym]: + w = sympat + 3 * sym + s1 = ((self.read_ubyte(w + 1) & 0xf) << 8) | self.read_ubyte(w) + if litidx < d.symlen[symlen_idx + s1] + 1: + sym = s1 + else: + litidx -= d.symlen[symlen_idx + s1] + 1 + sym = (self.read_ubyte(w + 2) << 4) | (self.read_ubyte(w + 1) >> 4) + + return self.read_ubyte(sympat + 3 * sym) + + def read_uint64_be(self, data_ptr): + return UINT64_BE.unpack_from(self.data, data_ptr)[0] + + def read_uint32(self, data_ptr): + return UINT32.unpack_from(self.data, data_ptr)[0] + + def read_uint32_be(self, data_ptr): + return UINT32_BE.unpack_from(self.data, data_ptr)[0] + + def read_ushort(self, data_ptr): + return USHORT.unpack_from(self.data, data_ptr)[0] + + def close(self): + self.data.close() + + try: + os.close(self.fd) + except OSError: + pass + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.close() + + def __getstate__(self): + state = self.__dict__.copy() + del state["fd"] + del state["data"] + del state["read_ubyte"] + del state["lock"] + return state + + def __setstate__(self, state): + self.__init__(self.directory, self.filename, self.suffix) + self.__dict__.update(state) + + +class WdlTable(Table): + + def __init__(self, directory, filename, suffix=".rtbw"): + super(WdlTable, self).__init__(directory, filename, suffix) + self.initialized = False + self.lock = threading.Lock() + + def init_table_wdl(self): + if self.initialized: + return + + with self.lock: + if self.initialized: + return + + assert WDL_MAGIC[0] == self.read_ubyte(0) + assert WDL_MAGIC[1] == self.read_ubyte(1) + assert WDL_MAGIC[2] == self.read_ubyte(2) + assert WDL_MAGIC[3] == self.read_ubyte(3) + + self.tb_size = [0 for _ in range(8)] + self.size = [0 for _ in range(8 * 3)] + + # Used if there are only pieces. + self.precomp = {} + self.pieces = {} + + self.factor = {} + self.factor[0] = [0, 0, 0, 0, 0, 0] # White + self.factor[1] = [0, 0, 0, 0, 0, 0] # Black + + self.norm = {} + self.norm[0] = [0 for _ in range(self.num)] # White + self.norm[1] = [0 for _ in range(self.num)] # Black + + # Used if there are pawns. + self.files = [PawnFileData() for _ in range(4)] + + self._next = None + self._flags = None + self.flags = None + + split = self.read_ubyte(4) & 0x01 + files = 4 if self.read_ubyte(4) & 0x02 else 1 + + data_ptr = 5 + + if not self.has_pawns: + self.setup_pieces_piece(data_ptr) + data_ptr += self.num + 1 + data_ptr += data_ptr & 0x01 + + self.precomp[0] = self.setup_pairs(data_ptr, self.tb_size[0], 0, True) + data_ptr = self._next + if split: + self.precomp[1] = self.setup_pairs(data_ptr, self.tb_size[1], 3, True) + data_ptr = self._next + else: + self.precomp[1] = None + + self.precomp[0].indextable = data_ptr + data_ptr += self.size[0] + if split: + self.precomp[1].indextable = data_ptr + data_ptr += self.size[3] + + self.precomp[0].sizetable = data_ptr + data_ptr += self.size[1] + if split: + self.precomp[1].sizetable = data_ptr + data_ptr += self.size[4] + + data_ptr = (data_ptr + 0x3f) & ~0x3f + self.precomp[0].data = data_ptr + data_ptr += self.size[2] + if split: + data_ptr = (data_ptr + 0x3f) & ~0x3f + self.precomp[1].data = data_ptr + else: + s = 1 + int(self.pawns[1] > 0) + for f in range(4): + self.setup_pieces_pawn(data_ptr, 2 * f, f) + data_ptr += self.num + s + data_ptr += data_ptr & 0x01 + + for f in range(files): + self.files[f].precomp[0] = self.setup_pairs(data_ptr, self.tb_size[2 * f], 6 * f, True) + data_ptr = self._next + if split: + self.files[f].precomp[1] = self.setup_pairs(data_ptr, self.tb_size[2 * f + 1], 6 * f + 3, True) + data_ptr = self._next + else: + self.files[f].precomp[1] = None + + for f in range(files): + self.files[f].precomp[0].indextable = data_ptr + data_ptr += self.size[6 * f] + if split: + self.files[f].precomp[1].indextable = data_ptr + data_ptr += self.size[6 * f + 3] + + for f in range(files): + self.files[f].precomp[0].sizetable = data_ptr + data_ptr += self.size[6 * f + 1] + if split: + self.files[f].precomp[1].sizetable = data_ptr + data_ptr += self.size[6 * f + 4] + + for f in range(files): + data_ptr = (data_ptr + 0x3f) & ~0x3f + self.files[f].precomp[0].data = data_ptr + data_ptr += self.size[6 * f + 2] + if split: + data_ptr = (data_ptr + 0x3f) & ~0x3f + self.files[f].precomp[1].data = data_ptr + data_ptr += self.size[6 * f + 5] + + self.initialized = True + + def setup_pieces_pawn(self, p_data, p_tb_size, f): + j = 1 + int(self.pawns[1] > 0) + order = self.read_ubyte(p_data) & 0x0f + order2 = self.read_ubyte(p_data + 1) & 0x0f if self.pawns[1] else 0x0f + self.files[f].pieces[0] = [self.read_ubyte(p_data + i + j) & 0x0f for i in range(self.num)] + self.files[f].norm[0] = [0 for _ in range(self.num)] + self.set_norm_pawn(self.files[f].norm[0], self.files[f].pieces[0]) + self.files[f].factor[0] = [0, 0, 0, 0, 0, 0] + self.tb_size[p_tb_size] = self.calc_factors_pawn(self.files[f].factor[0], order, order2, self.files[f].norm[0], f) + + order = self.read_ubyte(p_data) >> 4 + order2 = self.read_ubyte(p_data + 1) >> 4 if self.pawns[1] else 0x0f + self.files[f].pieces[1] = [self.read_ubyte(p_data + i + j) >> 4 for i in range(self.num)] + self.files[f].norm[1] = [0 for _ in range(self.num)] + self.set_norm_pawn(self.files[f].norm[1], self.files[f].pieces[1]) + self.files[f].factor[1] = [0, 0, 0, 0, 0, 0] + self.tb_size[p_tb_size + 1] = self.calc_factors_pawn(self.files[f].factor[1], order, order2, self.files[f].norm[1], f) + + def setup_pieces_piece(self, p_data): + self.pieces[0] = [self.read_ubyte(p_data + i + 1) & 0x0f for i in range(self.num)] + order = self.read_ubyte(p_data) & 0x0f + self.set_norm_piece(self.norm[0], self.pieces[0]) + self.tb_size[0] = self.calc_factors_piece(self.factor[0], order, self.norm[0]) + + self.pieces[1] = [self.read_ubyte(p_data + i + 1) >> 4 for i in range(self.num)] + order = self.read_ubyte(p_data) >> 4 + self.set_norm_piece(self.norm[1], self.pieces[1]) + self.tb_size[1] = self.calc_factors_piece(self.factor[1], order, self.norm[1]) + + def probe_wdl_table(self, board): + self.init_table_wdl() + + key = calc_key(board) + + if self.symmetric: + cmirror = 0 if board.turn == chess.WHITE else 8 + mirror = 0 if board.turn == chess.WHITE else 0x38 + bside = 0 + else: + if key != self.key: + cmirror = 8 + mirror = 0x38 + bside = int(board.turn == chess.WHITE) + else: + cmirror = mirror = 0 + bside = int(board.turn != chess.WHITE) + + if not self.has_pawns: + p = [0, 0, 0, 0, 0, 0] + i = 0 + while i < self.num: + piece_type = self.pieces[bside][i] & 0x07 + color = (self.pieces[bside][i] ^ cmirror) >> 3 + bb = board.pieces_mask(piece_type, chess.WHITE if color == 0 else chess.BLACK) + + square = chess.bit_scan(bb) + while square != -1 and square is not None: + p[i] = square + i += 1 + square = chess.bit_scan(bb, square + 1) + + idx = self.encode_piece(self.norm[bside], p, self.factor[bside]) + res = self.decompress_pairs(self.precomp[bside], idx) + else: + p = [0, 0, 0, 0, 0, 0] + i = 0 + k = self.files[0].pieces[0][0] ^ cmirror + color = k >> 3 + piece_type = k & 0x07 + bb = board.pieces_mask(piece_type, chess.WHITE if color == 0 else chess.BLACK) + + square = chess.bit_scan(bb) + while square != -1 and square is not None: + p[i] = square ^ mirror + i += 1 + square = chess.bit_scan(bb, square + 1) + + f = self.pawn_file(p) + pc = self.files[f].pieces[bside] + while i < self.num: + color = (pc[i] ^ cmirror) >> 3 + piece_type = pc[i] & 0x07 + bb = board.pieces_mask(piece_type, chess.WHITE if color == 0 else chess.BLACK) + + square = chess.bit_scan(bb) + while square != -1 and square is not None: + p[i] = square ^ mirror + i += 1 + square = chess.bit_scan(bb, square + 1) + + idx = self.encode_pawn(self.files[f].norm[bside], p, self.files[f].factor[bside]) + res = self.decompress_pairs(self.files[f].precomp[bside], idx) + + return res - 2 + + +class DtzTable(Table): + + def __init__(self, directory, filename, suffix=".rtbz"): + super(DtzTable, self).__init__(directory, filename, suffix) + self.initialized = False + self.lock = threading.Lock() + + def init_table_dtz(self): + if self.initialized: + return + + with self.lock: + if self.initialized: + return + + assert DTZ_MAGIC[0] == self.read_ubyte(0) + assert DTZ_MAGIC[1] == self.read_ubyte(1) + assert DTZ_MAGIC[2] == self.read_ubyte(2) + assert DTZ_MAGIC[3] == self.read_ubyte(3) + + self.factor = [0, 0, 0, 0, 0, 0] + self.norm = [0 for _ in range(self.num)] + self.tb_size = [0, 0, 0, 0] + self.size = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + self.files = [PawnFileDataDtz() for f in range(4)] + + files = 4 if self.read_ubyte(4) & 0x02 else 1 + + p_data = 5 + + if not self.has_pawns: + self.map_idx = [0, 0, 0, 0] + + self.setup_pieces_piece_dtz(p_data, 0) + p_data += self.num + 1 + p_data += p_data & 0x01 + + self.precomp = self.setup_pairs(p_data, self.tb_size[0], 0, False) + self.flags = self._flags + p_data = self._next + self.p_map = p_data + if self.flags & 2: + for i in range(4): + self.map_idx[i] = p_data + 1 - self.p_map + p_data += 1 + self.read_ubyte(p_data) + p_data += p_data & 0x01 + + self.precomp.indextable = p_data + p_data += self.size[0] + + self.precomp.sizetable = p_data + p_data += self.size[1] + + p_data = (p_data + 0x3f) & ~0x3f + self.precomp.data = p_data + p_data += self.size[2] + else: + s = 1 + int(self.pawns[1] > 0) + for f in range(4): + self.setup_pieces_pawn_dtz(p_data, f, f) + p_data += self.num + s + p_data += p_data & 0x01 + + self.flags = [] + for f in range(files): + self.files[f].precomp = self.setup_pairs(p_data, self.tb_size[f], 3 * f, False) + p_data = self._next + self.flags.append(self._flags) + + self.map_idx = [] + self.p_map = p_data + for f in range(files): + self.map_idx.append([]) + if self.flags[f] & 2: + for i in range(4): + self.map_idx[-1].append(p_data + 1 - self.p_map) + p_data += 1 + self.read_ubyte(p_data) + p_data += p_data & 0x01 + + for f in range(files): + self.files[f].precomp.indextable = p_data + p_data += self.size[3 * f] + + for f in range(files): + self.files[f].precomp.sizetable = p_data + p_data += self.size[3 * f + 1] + + for f in range(files): + p_data = (p_data + 0x3f) & ~0x3f + self.files[f].precomp.data = p_data + p_data += self.size[3 * f + 2] + + self.initialized = True + + def probe_dtz_table(self, board, wdl): + self.init_table_dtz() + + key = calc_key(board) + + if not self.symmetric: + if key != self.key: + cmirror = 8 + mirror = 0x38 + bside = int(board.turn == chess.WHITE) + else: + cmirror = mirror = 0 + bside = int(board.turn != chess.WHITE) + else: + cmirror = 0 if board.turn == chess.WHITE else 8 + mirror = 0 if board.turn == chess.WHITE else 0x38 + bside = 0 + + if not self.has_pawns: + if (self.flags & 1) != bside and not self.symmetric: + return 0, -1 + + pc = self.pieces + p = [0, 0, 0, 0, 0, 0] + i = 0 + while i < self.num: + piece_type = pc[i] & 0x07 + color = (pc[i] ^ cmirror) >> 3 + bb = board.pieces_mask(piece_type, chess.WHITE if color == 0 else chess.BLACK) + + square = chess.bit_scan(bb) + while square != -1 and square is not None: + p[i] = square + i += 1 + square = chess.bit_scan(bb, square + 1) + + idx = self.encode_piece(self.norm, p, self.factor) + res = self.decompress_pairs(self.precomp, idx) + + if self.flags & 2: + res = self.read_ubyte(self.p_map + self.map_idx[WDL_TO_MAP[wdl + 2]] + res) + + if (not (self.flags & PA_FLAGS[wdl + 2])) or (wdl & 1): + res *= 2 + else: + k = self.files[0].pieces[0] ^ cmirror + piece_type = k & 0x07 + color = k >> 3 + bb = board.pieces_mask(piece_type, chess.WHITE if color == 0 else chess.BLACK) + + i = 0 + p = [0, 0, 0, 0, 0, 0] + square = chess.bit_scan(bb) + while square != -1 and square is not None: + p[i] = square ^ mirror + i += 1 + square = chess.bit_scan(bb, square + 1) + f = self.pawn_file(p) + if self.flags[f] & 1 != bside: + return 0, -1 + + pc = self.files[f].pieces + while i < self.num: + piece_type = pc[i] & 0x07 + color = (pc[i] ^ cmirror) >> 3 + bb = board.pieces_mask(piece_type, chess.WHITE if color == 0 else chess.BLACK) + + square = chess.bit_scan(bb) + while square != -1 and square is not None: + p[i] = square ^ mirror + i += 1 + square = chess.bit_scan(bb, square + 1) + + idx = self.encode_pawn(self.files[f].norm, p, self.files[f].factor) + res = self.decompress_pairs(self.files[f].precomp, idx) + + if self.flags[f] & 2: + res = self.read_ubyte(self.p_map + self.map_idx[f][WDL_TO_MAP[wdl + 2]] + res) + + if (not (self.flags[f] & PA_FLAGS[wdl + 2])) or (wdl & 1): + res *= 2 + + return res, 1 + + def setup_pieces_piece_dtz(self, p_data, p_tb_size): + self.pieces = [self.read_ubyte(p_data + i + 1) & 0x0f for i in range(self.num)] + order = self.read_ubyte(p_data) & 0x0f + self.set_norm_piece(self.norm, self.pieces) + self.tb_size[p_tb_size] = self.calc_factors_piece(self.factor, order, self.norm) + + def setup_pieces_pawn_dtz(self, p_data, p_tb_size, f): + j = 1 + int(self.pawns[1] > 0) + order = self.read_ubyte(p_data) & 0x0f + order2 = self.read_ubyte(p_data + 1) & 0x0f if self.pawns[1] else 0x0f + self.files[f].pieces = [self.read_ubyte(p_data + i + j) & 0x0f for i in range(self.num)] + + self.files[f].norm = [0 for _ in range(self.num)] + self.set_norm_pawn(self.files[f].norm, self.files[f].pieces) + + self.files[f].factor = [0, 0, 0, 0, 0, 0] + self.tb_size[p_tb_size] = self.calc_factors_pawn(self.files[f].factor, order, order2, self.files[f].norm, f) + + +class Tablebases(object): + """ + Manages a collection of tablebase files for probing. + + Syzygy tables come in files like *KQvKN.rtbw* or *KRBvK.rtbz*, one WDL + (*.rtbw*) and DTZ (*.rtbz*) file for each material composition. + + Directly loads tables from *directory*. See + :func:`~chess.syzygy.Tablebases.open_directory`. + """ + def __init__(self, directory=None, load_wdl=True, load_dtz=True): + self.wdl = {} + self.dtz = {} + + if directory: + self.open_directory(directory, load_wdl, load_dtz) + + def open_directory(self, directory, load_wdl=True, load_dtz=True): + """ + Loads tables from a directory. + + By default all available tables with the correct file names + (e.g. *KQvKN.rtbw* or *KRBvK.rtbz*) are loaded. + + Returns the number of successfully openened and loaded tablebase files. + """ + num = 0 + + if not os.path.isdir(directory): + raise IOError("not a tablebase directory: {0}".format(repr(directory))) + + for filename in filenames(): + if load_wdl and os.path.isfile(os.path.join(directory, filename) + ".rtbw"): + wdl_table = WdlTable(directory, filename) + if wdl_table.key in self.wdl: + self.wdl[wdl_table.key].close() + + self.wdl[wdl_table.key] = wdl_table + self.wdl[wdl_table.mirrored_key] = wdl_table + + num += 1 + + if load_dtz and os.path.isfile(os.path.join(directory, filename) + ".rtbz"): + dtz_table = DtzTable(directory, filename) + if dtz_table.key in self.dtz: + self.dtz[dtz_table.key].close() + + self.dtz[dtz_table.key] = dtz_table + self.dtz[dtz_table.mirrored_key] = dtz_table + + num += 1 + + return num + + def probe_wdl_table(self, board): + # Test for KvK. + if board.kings == board.occupied: + return 0 + + key = calc_key(board) + if key not in self.wdl: + return None + + return self.wdl[key].probe_wdl_table(board) + + def probe_ab(self, board, alpha, beta): + for move in board.generate_legal_moves(): + # Only look at non-ep captures. + if not board.piece_type_at(move.to_square): + continue + + # Do the move. + board.push(move) + + v_plus, success = self.probe_ab(board, -beta, -alpha) + board.pop() + + if v_plus is None or not success: + return None, 0 + + v = -v_plus + + if v > alpha: + if v >= beta: + return v, 2 + alpha = v + + v = self.probe_wdl_table(board) + if v is None: + return None, 0 + + if alpha >= v: + return alpha, 1 + int(alpha > 0) + else: + return v, 1 + + def probe_wdl(self, board): + """ + Probes WDL tables for win/draw/loss-information. + + Probing is thread-safe when done with different *board* objects and + if *board* objects are not modified during probing. + + Returns ``None`` if the position was not found in any of the loaded + tables. + + Returns ``2`` if the side to move is winning, ``0`` if the position is + a draw and ``-2`` if the side to move is losing. + + Returns ``1`` in case of a cursed win and ``-1`` in case of a blessed + loss. Mate can be forced but the position can be drawn due to the + fifty-move rule. + + >>> with chess.syzygy.open_tablebases("data/syzygy") as tablebases: + ... tablebases.probe_wdl(chess.Board("8/2K5/4B3/3N4/8/8/4k3/8 b - - 0 1")) + ... + -2 + """ + # Positions with castling rights are not in the tablebase. + if board.castling_rights: + return None + + # Probe. + v, success = self.probe_ab(board, -2, 2) + if v is None or not success: + return None + + # If en passant is not possible, we are done. + if not board.ep_square: + return v + + # Now handle en passant. + v1 = -3 + + # Look at least at all legal en passant captures. + for move in board.generate_legal_moves(castling=False, pawns=True, knights=False, bishops=False, rooks=False, queens=False, king=False): + # Filter out non-en-passant moves. + if not board.is_en_passant(move): + continue + + # Do the move. + board.push(move) + + v0_plus, success = self.probe_ab(board, -2, 2) + board.pop() + + if v0_plus is None or not success: + return None + + v0 = -v0_plus + + if v0 > v1: + v1 = v0 + + if v1 > -3: + if v1 >= v: + v = v1 + elif v == 0: + # If there is not at least one legal non-en-passant move we are + # forced to play the losing en passant cature. + if all(board.is_en_passant(move) for move in board.generate_legal_moves()): + v = v1 + + return v + + def probe_dtz_table(self, board, wdl): + key = calc_key(board) + + if key not in self.dtz: + return None, 0 + + return self.dtz[key].probe_dtz_table(board, wdl) + + def probe_dtz_no_ep(self, board): + wdl, success = self.probe_ab(board, -2, 2) + if wdl is None or not success: + return None + + if wdl == 0: + return 0 + + if success == 2: + return 1 if wdl == 2 else 101 + + if wdl > 0: + # Generate all legal non-capturing pawn moves. + for move in board.generate_legal_moves(castling=False, pawns=True, knights=False, bishops=False, rooks=False, queens=False, king=False): + if board.is_capture(move): + continue + + board.push(move) + + v_plus, success = self.probe_ab(board, -2, -wdl + 1) + board.pop() + + if v_plus is None or not success: + return None + + v = -v_plus + + if v == wdl: + return 1 if v == 2 else 101 + + dtz, success = self.probe_dtz_table(board, wdl) + dtz += 1 + + if success >= 0: + if wdl & 1: + dtz += 100 + return dtz if wdl >= 0 else -dtz + + if wdl > 0: + best = 0xffff + + for move in board.generate_legal_moves(pawns=False): + if board.piece_type_at(move.to_square): + continue + + board.push(move) + + v_plus = self.probe_dtz(board) + board.pop() + + if v_plus is None: + return None + + v = -v_plus + + if v > 0 and v + 1 < best: + best = v + 1 + + return best + else: + best = -1 + + for move in board.generate_legal_moves(): + board.push(move) + + if board.halfmove_clock == 0: + if wdl == -2: + v = -1 + else: + v, success = self.probe_ab(board, 1, 2) + if v is None or not success: + board.pop() + return None + + v = 0 if v == 2 else -101 + else: + v_plus_one = self.probe_dtz(board) + if v_plus_one is None: + board.pop() + return None + + v = -v_plus_one - 1 + + board.pop() + + if v < best: + best = v + + return best + + def probe_dtz(self, board): + """ + Probes DTZ tables for distance to zero information. + + Return ``None`` if the position was not found in any of the loaded + tables. Both DTZ and WDL tables are required in order to probe for DTZ + values. + + Returns a positive value if the side to move is winning, ``0`` if the + position is a draw and a negative value if the side to move is losing. + More precisely: + + +-----+------------------+--------------------------------------------+ + | WDL | DTZ | | + +=====+==================+============================================+ + | -2 | -100 <= n < -1 | Unconditional loss (assuming 50-move | + | | | counter is zero), where a zeroing move can | + | | | be forced in -n plies. | + +-----+------------------+--------------------------------------------+ + | -1 | n < -100 | Loss, but draw under the 50-move rule. | + | | | A zeroing move can be forced in -n plies | + | | | or -n - 100 plies (if a later phase is | + | | | responsible for the blessed loss). | + +-----+------------------+--------------------------------------------+ + | 0 | 0 | Draw. | + +-----+------------------+--------------------------------------------+ + | 1 | 100 < n | Win, but draw under the 50-move rule. | + | | | A zeroing move can be forced in n plies or | + | | | n - 100 plies (if a later phase is | + | | | responsible for the cursed win). | + +-----+------------------+--------------------------------------------+ + | 2 | 1 < n <= 100 | Unconditional win (assuming 50-move | + | | | counter is zero), where a zeroing move can | + | | | be forced in n plies. | + +-----+------------------+--------------------------------------------+ + + The return value can be off by one: a return value -n can mean a loss + in n + 1 plies and a return value +n can mean a win in n + 1 plies. + This is guaranteed not to happen for positions exactly on the edge of + the 50-move rule, so that this never impacts results of practical play. + + Minmaxing the DTZ values guarantees winning a won position (and drawing + a drawn position), because it makes progress keeping the win in hand. + However the lines are not always the most straightforward ways to win. + Engines like Stockfish calculate themselves, checking with DTZ, but + only play according to DTZ if they can not manage on their own. + + >>> with chess.syzygy.open_tablebases("data/syzygy") as tablebases: + ... tablebases.probe_dtz(chess.Board("8/2K5/4B3/3N4/8/8/4k3/8 b - - 0 1")) + ... + -53 + + Probing is thread-safe when done with different *board* objects and + if *board* objects are not modified during probing. + """ + v = self.probe_dtz_no_ep(board) + if v is None: + return None + + if not board.ep_square: + return v + + v1 = -3 + + for move in board.generate_legal_moves(castling=False, pawns=True, knights=False, bishops=False, rooks=False, queens=False, king=False): + # Filter out non-en-passant moves. + if not board.is_en_passant(move): + continue + + board.push(move) + + v0_plus, success = self.probe_ab(board, -2, 2) + board.pop() + + if v0_plus is None or not success: + return None + + v0 = -v0_plus + + if v0 > v1: + v1 = v0 + + if v1 > -3: + v1 = WDL_TO_DTZ[v1 + 2] + if v < -100: + if v1 >= 0: + v = v1 + elif v < 0: + if v1 >= 0 or v1 < -100: + v = v1 + elif v > 100: + if v1 > 0: + v = v1 + elif v > 0: + if v1 == 1: + v = v1 + elif v1 >= 0: + v = v1 + else: + if all(board.is_en_passant(move) for move in board.generate_legal_moves()): + v = v1 + + return v + + def close(self): + """Closes all loaded tables.""" + while self.wdl: + _, wdl = self.wdl.popitem() + wdl.close() + + while self.dtz: + _, dtz = self.dtz.popitem() + dtz.close() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.close() + + +def open_tablebases(directory=None, load_wdl=True, load_dtz=True): + """ + Opens a collection of tablebases for probing. See + :class:`~chess.syzygy.Tablebases`. + + .. note:: + + Generally probing requires tablebase files for the specific + material composition, **as well as** tablebase files with less pieces. + This is important because 6-piece and 5-piece files are often + distributed seperately, but are both required for 6-piece positions. + Use :func:`~chess.syzygy.Tablebases.open_directory()` to load + tablebases from additional directories. + """ + return Tablebases(directory, load_wdl, load_dtz) diff --git a/chess/uci.py b/chess/uci.py new file mode 100644 index 000000000..b76bf503f --- /dev/null +++ b/chess/uci.py @@ -0,0 +1,1364 @@ +# -*- coding: utf-8 -*- +# +# This file is part of the python-chess library. +# Copyright (C) 2012-2015 Niklas Fiekas +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import chess +import signal +import subprocess +import logging +import threading +import concurrent.futures + +try: + import backport_collections as collections +except ImportError: + import collections + +try: + import queue +except ImportError: + import Queue as queue + + +LOGGER = logging.getLogger(__name__) + + +class EngineStateException(Exception): + """Unexpected UCI engine state.""" + pass + + +class EngineTerminatedException(Exception): + """The engine has been terminated.""" + pass + + +class Option(collections.namedtuple("Option", ["name", "type", "default", "min", "max", "var"])): + """Information about an available option for an UCI engine.""" + pass + + +class Score(collections.namedtuple("Score", ["cp", "mate", "lowerbound", "upperbound"])): + """A centipawns or mate score sent by an UCI engine.""" + pass + + +class BestMove(collections.namedtuple("BestMove", ["bestmove", "ponder"])): + """A bestmove and ponder move sent by an UCI engine.""" + pass + + +class OptionMap(collections.MutableMapping): + def __init__(self, data=None, **kwargs): + self._store = dict() + if data is None: + data = {} + self.update(data, **kwargs) + + def __setitem__(self, key, value): + self._store[key.lower()] = (key, value) + + def __getitem__(self, key): + return self._store[key.lower()][1] + + def __delitem__(self, key): + del self._store[key.lower()] + + def __iter__(self): + return (casedkey for casedkey, mappedvalue in self._store.values()) + + def __len__(self): + return len(self._store) + + def __eq__(self, other): + for key, value in self.items(): + if key not in other or other[key] != value: + return False + + for key, value in other.items(): + if key not in self or self[key] != value: + return False + + return True + + def copy(self): + return type(self)(self._store.values()) + + def __copy__(self): + return self.copy() + + def __repr__(self): + return "{0}({1})".format(type(self).__name__, dict(self.items())) + + +class InfoHandler(object): + """ + Chess engines may send information about their calculations with the + *info* command. You can register info handlers to be asynchronously + notified whenever the engine sends more information. + + >>> # Register a standard info handler. + >>> info_handler = chess.uci.InfoHandler() + >>> engine.info_handlers.append(info_handler) + + You would usually subclass the *InfoHandler* class. + + >>> class MyHandler(chess.uci.InfoHandler): + ... def post_info(self): + ... # Called whenever a complete *info* line has been processed. + ... super(MyHandler, self).post_info() + ... print(self.info) + """ + def __init__(self): + self.lock = threading.Lock() + + self.info = {} + self.info["refutation"] = {} + self.info["currline"] = {} + self.info["pv"] = {} + self.info["score"] = {} + + def depth(self, x): + """Received search depth in plies.""" + self.info["depth"] = x + + def seldepth(self, x): + """Received selective search depth in plies.""" + self.info["seldepth"] = x + + def time(self, x): + """Received new time searched in milliseconds.""" + self.info["time"] = x + + def nodes(self, x): + """Received number of nodes searched.""" + self.info["nodes"] = x + + def pv(self, moves): + """ + Received the principal variation as a list of moves. + + In MultiPV mode this is related to the most recent *multipv* number + sent by the engine. + """ + self.info["pv"][self.info.get("multipv", 1)] = moves + + def multipv(self, num): + """ + Received a new multipv number, starting at 1. + + If multipv occurs in an info line, this is guaranteed to be called + before *score* or *pv*. + """ + self.info["multipv"] = num + + def score(self, cp, mate, lowerbound, upperbound): + """ + Received a new evaluation in centipawns or a mate score. + + *cp* may be *None* if no score in centipawns is available. + + *mate* may be *None* if no forced mate has been found. A negative + numbers means the engine thinks it will get mated. + + lowerbound and upperbound are usually *False*. If *True*, the sent + score are just a lowerbound or upperbound. + + In MultiPV mode this is related to the most recent *multipv* number + sent by the engine. + """ + self.info["score"][self.info.get("multipv", 1)] = Score(cp, mate, lowerbound, upperbound) + + def currmove(self, move): + """ + Received a move the engine is currently thinking about. + + These moves come directly from the engine. So the castling move + representation depends on the UCI_Chess960 option of the engine. + """ + self.info["currmove"] = move + + def currmovenumber(self, x): + """Received a new currmovenumber.""" + self.info["currmovenumber"] = x + + def hashfull(self, x): + """ + Received new information about the hashtable. + + The hashtable is x permill full. + """ + self.info["hashfull"] = x + + def nps(self, x): + """Received new nodes per second statistic.""" + self.info["nps"] = x + + def tbhits(self, x): + """Received new information about the number of table base hits.""" + self.info["tbhits"] = x + + def cpuload(self, x): + """Received new cpuload information in permill.""" + self.info["cpuload"] = x + + def string(self, string): + """Received a string the engine wants to display.""" + self.info["string"] = string + + def refutation(self, move, refuted_by): + """ + Received a new refutation of a move. + + *refuted_by* may be a list of moves representing the mainline of the + refutation or *None* if no refutation has been found. + + Engines should only send refutations if the *UCI_ShowRefutations* + option has been enabled. + """ + self.info["refutation"][move] = refuted_by + + def currline(self, cpunr, moves): + """ + Received a new snapshot of a line a specific CPU is calculating. + + *cpunr* is an integer representing a specific CPU. *moves* is a list + of moves. + """ + self.info["currline"][cpunr] = moves + + def pre_info(self, line): + """ + Received a new info line about to be processed. + + When subclassing remember to call this method of the parent class in + order to keep the locking in tact. + """ + self.lock.acquire() + self.info.pop("multipv", None) + + def post_info(self): + """ + Processing of a new info line has been finished. + + When subclassing remember to call this method of the parent class in + order to keep the locking in tact. + """ + self.lock.release() + + def on_bestmove(self, bestmove, ponder): + """A new bestmove and pondermove have been received.""" + pass + + def on_go(self): + """ + A go command is being sent. + + Since information about the previous search is invalidated the + dictionary with the current information will be cleared. + """ + with self.lock: + self.info.clear() + self.info["refutation"] = {} + self.info["currline"] = {} + self.info["pv"] = {} + self.info["score"] = {} + + def acquire(self, blocking=True): + return self.lock.acquire(blocking) + + def release(self): + return self.lock.release() + + def __enter__(self): + self.acquire() + return self.info + + def __exit__(self, exc_type, exc_value, traceback): + self.release() + + +class MockProcess(object): + def __init__(self): + self._expectations = collections.deque() + self._is_dead = threading.Event() + self._std_streams_closed = False + + self._send_queue = queue.Queue() + self._send_thread = threading.Thread(target=self._send_thread_target) + self._send_thread.daemon = True + + def _send_thread_target(self): + while not self._is_dead.is_set(): + line = self._send_queue.get() + if line is not None: + self.engine.on_line_received(line) + self._send_queue.task_done() + + def spawn(self, engine): + self.engine = engine + self._send_thread.start() + + def expect(self, expectation, responses=()): + self._expectations.append((expectation, responses)) + + def assert_done(self): + assert not self._expectations, "pending expectations: {0}".format(self._expectations) + + def assert_terminated(self): + self.assert_done() + assert self._is_dead.is_set() + + def is_alive(self): + return not self._is_dead.is_set() + + def terminate(self): + self._is_dead.set() + self._send_queue.put(None) + self.engine.on_terminated() + + def kill(self): + self._is_dead.set() + self._send_queue.put(None) + self.engine.on_terminated() + + def send_line(self, string): + assert self.is_alive() + + assert self._expectations, "unexpected: {0}".format(string) + expectation, responses = self._expectations.popleft() + assert expectation == string, "expected: {0}, got {1}".format(expectation, string) + + for response in responses: + self._send_queue.put(response) + + def wait_for_return_code(self): + self._is_dead.wait() + return 0 + + def pid(self): + return None + + def __repr__(self): + return "".format(hex(id(self))) + + +class PopenProcess(object): + def __init__(self, command): + self.command = command + + self.process = None + self._receiving_thread = threading.Thread(target=self._receiving_thread_target) + self._receiving_thread.daemon = True + + def spawn(self, engine): + self.engine = engine + self.process = subprocess.Popen(self.command, stdout=subprocess.PIPE, stdin=subprocess.PIPE, bufsize=1, universal_newlines=True) + self._receiving_thread.start() + + def _receiving_thread_target(self): + while self.is_alive(): + line = self.process.stdout.readline() + if not line: + continue + + self.engine.on_line_received(line.rstrip()) + + self.engine.on_terminated() + + def is_alive(self): + return self.process.poll() is None + + def terminate(self): + self.process.terminate() + + def kill(self): + self.process.kill() + + def send_line(self, string): + self.process.stdin.write(string) + self.process.stdin.write("\n") + self.process.stdin.flush() + + def wait_for_return_code(self): + self.process.wait() + return self.process.returncode + + def pid(self): + return self.process.pid + + def __repr__(self): + return "".format(hex(id(self)), self.pid()) + + +class SpurProcess(object): + def __init__(self, shell, command): + self.shell = shell + self.command = command + + self._stdout_buffer = [] + + self._result = None + + self.process = None + self.spawned = threading.Event() + + self._waiting_thread = threading.Thread(target=self._waiting_thread_target) + self._waiting_thread.daemon = True + + def spawn(self, engine): + self.engine = engine + + self.process = self.shell.spawn(self.command, store_pid=True, allow_error=True, stdout=self) + self.spawned.set() + + self._waiting_thread.start() + + def write(self, byte): + # Wait for spawn to return. Otherwise we might already try processing + # data before self.process is set. + self.spawned.wait() + + # Interally called whenever a byte is received. + if byte == b"\r": + pass + elif byte == b"\n": + self.engine.on_line_received(b"".join(self._stdout_buffer).decode("utf-8")) + del self._stdout_buffer[:] + else: + self._stdout_buffer.append(byte) + + def _waiting_thread_target(self): + self._result = self.process.wait_for_result() + self.engine.on_terminated() + + def is_alive(self): + return self.process.is_running() + + def terminate(self): + self.process.send_signal(signal.SIGTERM) + + def kill(self): + self.process.send_signal(signal.SIGKILL) + + def send_line(self, string): + self.process.stdin_write(string.encode("utf-8")) + self.process.stdin_write(b"\n") + + def wait_for_return_code(self): + return self.process.wait_for_result().return_code + + def pid(self): + return self.process.pid + + def __repr__(self): + return "".format(hex(id(self)), self.pid()) + + +class Engine(object): + def __init__(self, process, Executor=concurrent.futures.ThreadPoolExecutor): + self.process = process + + self.idle = True + self.pondering = False + self.state_changed = threading.Condition() + self.semaphore = threading.Semaphore() + self.search_started = threading.Event() + + self.board = chess.Board() + self.uci_chess960 = None + + self.name = None + self.author = None + self.options = OptionMap() + self.uciok = threading.Event() + self.uciok_received = threading.Condition() + + self.readyok_received = threading.Condition() + + self.bestmove = None + self.ponder = None + self.bestmove_received = threading.Event() + + self.return_code = None + self.terminated = threading.Event() + + self.info_handlers = [] + + self.process.spawn(self) + + self.pool = Executor(max_workers=3) + + def send_line(self, line): + LOGGER.debug("%s << %s", self.process, line) + return self.process.send_line(line) + + def on_line_received(self, buf): + LOGGER.debug("%s >> %s", self.process, buf) + + command_and_args = buf.split(None, 1) + if not command_and_args: + return + + if len(command_and_args) >= 1: + if command_and_args[0] == "uciok": + return self._uciok() + elif command_and_args[0] == "readyok": + return self._readyok() + + if len(command_and_args) >= 2: + if command_and_args[0] == "id": + return self._id(command_and_args[1]) + elif command_and_args[0] == "bestmove": + return self._bestmove(command_and_args[1]) + elif command_and_args[0] == "copyprotection": + return self._copyprotection(command_and_args[1]) + elif command_and_args[0] == "registration": + return self._registration(command_and_args[1]) + elif command_and_args[0] == "info": + return self._info(command_and_args[1]) + elif command_and_args[0] == "option": + return self._option(command_and_args[1]) + + def on_terminated(self): + self.return_code = self.process.wait_for_return_code() + self.pool.shutdown(wait=False) + self.terminated.set() + + # Wake up waiting commands. + self.bestmove_received.set() + with self.uciok_received: + self.uciok_received.notify_all() + with self.readyok_received: + self.readyok_received.notify_all() + with self.state_changed: + self.state_changed.notify_all() + + def _id(self, arg): + property_and_arg = arg.split(None, 1) + if property_and_arg[0] == "name": + if len(property_and_arg) >= 2: + self.name = property_and_arg[1] + else: + self.name = "" + return + elif property_and_arg[0] == "author": + if len(property_and_arg) >= 2: + self.author = property_and_arg[1] + else: + self.author = "" + return + + def _uciok(self): + # Set UCI_Chess960 default value. + if self.uci_chess960 is None and "UCI_Chess960" in self.options: + self.uci_chess960 = self.options["UCI_Chess960"].default + + self.uciok.set() + + with self.uciok_received: + self.uciok_received.notify_all() + + def _readyok(self): + with self.readyok_received: + self.readyok_received.notify_all() + + def _bestmove(self, arg): + tokens = arg.split(None, 2) + + self.bestmove = None + if tokens[0] != "(none)": + try: + self.bestmove = self.board.parse_uci(tokens[0]) + except ValueError: + LOGGER.exception("exception parsing bestmove") + + self.ponder = None + if self.bestmove is not None and len(tokens) >= 3 and tokens[1] == "ponder" and tokens[2] != "(none)": + # The ponder move must be legal after the bestmove. Generally we + # trust the engine on this. But we still have to convert + # non-UCI_Chess960 castling moves. + try: + self.ponder = chess.Move.from_uci(tokens[2]) + if self.ponder.from_square in (chess.E1, chess.E8) and self.ponder.to_square in (chess.C1, chess.C8, chess.G1, chess.G8): + # Make a copy of the board to avoid race conditions. + board = self.board.copy() + board.push(self.bestmove) + self.ponder = board.parse_uci(tokens[2]) + except ValueError: + LOGGER.exception("exception parsing bestmove ponder") + self.ponder = None + + self.bestmove_received.set() + + for info_handler in self.info_handlers: + info_handler.on_bestmove(self.bestmove, self.ponder) + + def _copyprotection(self, arg): + # TODO: Implement copyprotection + LOGGER.error("engine copyprotection not supported") + + def _registration(self, arg): + # TODO: Implement registration + LOGGER.error("engine registration not supported") + + def _info(self, arg): + if not self.info_handlers: + return + + # Notify info handlers of start. + for info_handler in self.info_handlers: + info_handler.pre_info(arg) + + # Initialize parser state. + board = None + pv = None + score_kind = None + score_cp = None + score_mate = None + score_lowerbound = False + score_upperbound = False + refutation_move = None + refuted_by = [] + currline_cpunr = None + currline_moves = [] + string = [] + + def end_of_parameter(): + # Parameters with variable length can only be handled when the + # next parameter starts or at the end of the line. + + if pv is not None: + for info_handler in self.info_handlers: + info_handler.pv(pv) + + if score_cp is not None or score_mate is not None: + for info_handler in self.info_handlers: + info_handler.score(score_cp, score_mate, score_lowerbound, score_upperbound) + + if refutation_move is not None: + if refuted_by: + for info_handler in self.info_handlers: + info_handler.refutation(refutation_move, refuted_by) + else: + for info_handler in self.info_handlers: + info_handler.refutation(refutation_move, None) + + if currline_cpunr is not None: + for info_handler in self.info_handlers: + info_handler.currline(currline_cpunr, currline_moves) + + def handle_integer_token(token, fn): + try: + intval = int(token) + except ValueError: + LOGGER.exception("exception parsing integer token") + return + + for info_handler in self.info_handlers: + fn(info_handler, intval) + + def handle_move_token(token, fn): + try: + move = chess.Move.from_uci(token) + except ValueError: + LOGGER.exception("exception parsing move token") + return + + for info_handler in self.info_handlers: + fn(info_handler, move) + + # Find multipv parameter first. + if "multipv" in arg: + current_parameter = None + for token in arg.split(): + if token == "string": + break + + if current_parameter == "multipv": + handle_integer_token(token, lambda handler, val: handler.multipv(val)) + + current_parameter = token + + # Parse all other parameters. + current_parameter = None + for token in arg.split(" "): + if current_parameter == "string": + string.append(token) + elif not token: + # Ignore extra spaces. Those can not be directly discarded, + # because they may occur in the string parameter. + pass + elif token in ["depth", "seldepth", "time", "nodes", "pv", "multipv", "score", "currmove", "currmovenumber", "hashfull", "nps", "tbhits", "cpuload", "refutation", "currline", "string"]: + end_of_parameter() + current_parameter = token + + pv = None + score_kind = None + score_mate = None + score_cp = None + score_lowerbound = False + score_upperbound = False + refutation_move = None + refuted_by = [] + currline_cpunr = None + currline_moves = [] + + if current_parameter == "pv": + pv = [] + + if current_parameter in ("refutation", "pv", "currline"): + board = self.board.copy() + elif current_parameter == "depth": + handle_integer_token(token, lambda handler, val: handler.depth(val)) + elif current_parameter == "seldepth": + handle_integer_token(token, lambda handler, val: handler.seldepth(val)) + elif current_parameter == "time": + handle_integer_token(token, lambda handler, val: handler.time(val)) + elif current_parameter == "nodes": + handle_integer_token(token, lambda handler, val: handler.nodes(val)) + elif current_parameter == "pv": + try: + pv.append(board.push_uci(token)) + except ValueError: + LOGGER.exception("exception parsing pv") + elif current_parameter == "multipv": + # Ignore multipv. It was already parsed before anything else. + pass + elif current_parameter == "score": + if token in ("cp", "mate"): + score_kind = token + elif token == "lowerbound": + score_lowerbound = True + elif token == "upperbound": + score_upperbound = True + elif score_kind == "cp": + try: + score_cp = int(token) + except ValueError: + LOGGER.exception("exception parsing score cp value") + elif score_kind == "mate": + try: + score_mate = int(token) + except ValueError: + LOGGER.exception("exception parsing score mate value") + elif current_parameter == "currmove": + handle_move_token(token, lambda handler, val: handler.currmove(val)) + elif current_parameter == "currmovenumber": + handle_integer_token(token, lambda handler, val: handler.currmovenumber(val)) + elif current_parameter == "hashfull": + handle_integer_token(token, lambda handler, val: handler.hashfull(val)) + elif current_parameter == "nps": + handle_integer_token(token, lambda handler, val: handler.nps(val)) + elif current_parameter == "tbhits": + handle_integer_token(token, lambda handler, val: handler.tbhits(val)) + elif current_parameter == "cpuload": + handle_integer_token(token, lambda handler, val: handler.cpuload(val)) + elif current_parameter == "refutation": + try: + if refutation_move is None: + refutation_move = board.push_uci(token) + else: + refuted_by.append(board.push_uci(token)) + except ValueError: + LOGGER.exception("exception parsing refutation") + elif current_parameter == "currline": + try: + if currline_cpunr is None: + currline_cpunr = int(token) + else: + currline_moves.append(board.push_uci(token)) + except ValueError: + LOGGER.exception("exception parsing currline") + + end_of_parameter() + + if string: + for info_handler in self.info_handlers: + info_handler.string(" ".join(string)) + + # Notify info handlers of end. + for info_handler in self.info_handlers: + info_handler.post_info() + + def _option(self, arg): + current_parameter = None + + name = [] + type = [] + default = [] + min = None + max = None + current_var = None + var = [] + + for token in arg.split(" "): + if token == "name" and not name: + current_parameter = "name" + elif token == "type" and not type: + current_parameter = "type" + elif token == "default" and not default: + current_parameter = "default" + elif token == "min" and min is None: + current_parameter = "min" + elif token == "max" and max is None: + current_parameter = "max" + elif token == "var": + current_parameter = "var" + if current_var is not None: + var.append(" ".join(current_var)) + current_var = [] + elif current_parameter == "name": + name.append(token) + elif current_parameter == "type": + type.append(token) + elif current_parameter == "default": + default.append(token) + elif current_parameter == "var": + current_var.append(token) + elif current_parameter == "min": + try: + min = int(token) + except ValueError: + LOGGER.exception("exception parsing option min") + elif current_parameter == "max": + try: + max = int(token) + except ValueError: + LOGGER.exception("exception parsing option max") + + if current_var is not None: + var.append(" ".join(current_var)) + + type = " ".join(type) + + default = " ".join(default) + if type == "check": + if default == "true": + default = True + elif default == "false": + default = False + else: + default = None + elif type == "spin": + try: + default = int(default) + except ValueError: + LOGGER.exception("exception parsing option spin default") + default = None + + option = Option(" ".join(name), type, default, min, max, var) + self.options[option.name] = option + + def _queue_command(self, command, async_callback): + try: + future = self.pool.submit(command) + except RuntimeError: + raise EngineTerminatedException() + + if async_callback is True: + return future + elif async_callback: + future.add_done_callback(async_callback) + return future + else: + return future.result() + + def uci(self, async_callback=None): + """ + Tells the engine to use the UCI interface. + + This is mandatory before any other command. A conforming engine will + send its name, authors and available options. + + :return: Nothing + """ + def command(): + with self.semaphore: + with self.uciok_received: + self.send_line("uci") + self.uciok_received.wait() + + if self.terminated.is_set(): + raise EngineTerminatedException() + + return self._queue_command(command, async_callback) + + def debug(self, on, async_callback=None): + """ + Switch the debug mode on or off. + + In debug mode the engine should send additional infos to the GUI to + help debugging. This mode should be switched off by default. + + :param on: bool + + :return: Nothing + """ + def command(): + with self.semaphore: + if on: + self.send_line("debug on") + else: + self.send_line("debug off") + + return self._queue_command(command, async_callback) + + def isready(self, async_callback=None): + """ + Command used to synchronize with the engine. + + The engine will respond as soon as it has handled all other queued + commands. + + :return: Nothing + """ + def command(): + with self.semaphore: + with self.readyok_received: + self.send_line("isready") + self.readyok_received.wait() + + if self.terminated.is_set(): + raise EngineTerminatedException() + + return self._queue_command(command, async_callback) + + def setoption(self, options, async_callback=None): + """ + Set values for the engines available options. + + :param options: A dictionary with option names as keys. + + :return: Nothing + """ + option_lines = [] + + for name, value in options.items(): + if name.lower() == "uci_chess960": + self.uci_chess960 = value + + builder = [] + builder.append("setoption name") + builder.append(name) + builder.append("value") + if value is True: + builder.append("true") + elif value is False: + builder.append("false") + elif value is None: + builder.append("none") + else: + builder.append(str(value)) + + option_lines.append(" ".join(builder)) + + def command(): + with self.semaphore: + with self.readyok_received: + for option_line in option_lines: + self.send_line(option_line) + + self.send_line("isready") + self.readyok_received.wait() + + if self.terminated.is_set(): + raise EngineTerminatedException() + + return self._queue_command(command, async_callback) + + # TODO: Implement register command + + def ucinewgame(self, async_callback=None): + """ + Tell the engine that the next search will be from a different game. + + This can be a new game the engine should play or if the engine should + analyse a position from a different game. Using this command is + recommended but not required. + + :return: Nothing + """ + # Warn if this is called while the engine is still calculating. + with self.state_changed: + if not self.idle: + LOGGER.warning("ucinewgame while engine is busy") + + def command(): + with self.semaphore: + with self.readyok_received: + self.send_line("ucinewgame") + + self.send_line("isready") + self.readyok_received.wait() + + if self.terminated.is_set(): + raise EngineTerminatedException() + + return self._queue_command(command, async_callback) + + def position(self, board, async_callback=None): + """ + Set up a given position. + + Instead of just the final FEN, the initial FEN and all moves leading + up to the position will be sent, so that the engine can detect + repetitions. + + If the position is from a new game it is recommended to use the + *ucinewgame* command before the *position* command. + + :param board: A *chess.Board*. + + :return: Nothing + + :raises: :exc:`~chess.uci.EngineStateException` if the engine is still + calculating. + """ + # Work on a local copy. + board = board.copy() + + # Raise if this is called while the engine is still calculating. + with self.state_changed: + if not self.idle: + raise EngineStateException("position command while engine is busy") + + builder = [] + builder.append("position") + + # Take back moves to obtain the first FEN we know. Later giving the + # moves explicitly allows for transposition detection. + switchyard = collections.deque() + while board.move_stack: + switchyard.append(board.pop()) + + # Validate castling rights. + if not self.uci_chess960 and board.chess960: + if board.has_chess960_castling_rights(): + LOGGER.error("not in UCI_Chess960 mode but position has non-standard castling rights") + + # Just send the final FEN without transpositions in hops + # that this will work. + while switchyard: + board.push(switchyard.pop()) + + # Send startposition. + if board.fen() == chess.STARTING_FEN: + builder.append("startpos") + else: + builder.append("fen") + + if self.uci_chess960: + builder.append(board.shredder_fen()) + else: + builder.append(board.fen()) + + # Send moves. + if switchyard: + builder.append("moves") + + while switchyard: + move = switchyard.pop() + builder.append(board.uci(move, chess960=self.uci_chess960)) + board.push(move) + + self.board = board + + def command(): + with self.semaphore: + with self.readyok_received: + self.send_line(" ".join(builder)) + + self.send_line("isready") + self.readyok_received.wait() + + if self.terminated.is_set(): + raise EngineTerminatedException() + + return self._queue_command(command, async_callback) + + def go(self, searchmoves=None, ponder=False, wtime=None, btime=None, winc=None, binc=None, movestogo=None, depth=None, nodes=None, mate=None, movetime=None, infinite=False, async_callback=None): + """ + Start calculating on the current position. + + All parameters are optional, but there should be at least one of + *depth*, *nodes*, *mate*, *infinite* or some time control settings, + so that the engine knows how long to calculate. + + Note that when using *infinite* or *ponder* the engine will not stop + until it is told to. + + :param searchmoves: Restrict search to moves in this list. + :param ponder: Bool to enable pondering mode. The engine will not stop + pondering in the background until a *stop* command is received. + :param wtime: Integer of milliseconds white has left on the clock. + :param btime: Integer of milliseconds black has left on the clock. + :param winc: Integer of white Fisher increment. + :param binc: Integer of black Fisher increment. + :param movestogo: Number of moves to the next time control. If this is + not set, but wtime or btime are, then it is sudden death. + :param depth: Search *depth* ply only. + :param nodes: Search so many *nodes* only. + :param mate: Search for a mate in *mate* moves. + :param movetime: Integer. Search exactly *movetime* milliseconds. + :param infinite: Search in the background until a *stop* command is + received. + + :return: A tuple of two elements. The first is the best move according + to the engine. The second is the ponder move. This is the reply + as sent by the engine. Either of the elements may be *None*. + + :raises: :exc:`~chess.uci.EngineStateException` if the engine is + already calculating. + """ + with self.state_changed: + if not self.idle: + raise EngineStateException("go command while engine is already busy") + + self.idle = False + self.search_started.clear() + self.bestmove_received.clear() + self.pondering = ponder + self.state_changed.notify_all() + + for info_handler in self.info_handlers: + info_handler.on_go() + + builder = [] + builder.append("go") + + if ponder: + builder.append("ponder") + + if wtime is not None: + builder.append("wtime") + builder.append(str(int(wtime))) + + if btime is not None: + builder.append("btime") + builder.append(str(int(btime))) + + if winc is not None: + builder.append("winc") + builder.append(str(int(winc))) + + if binc is not None: + builder.append("binc") + builder.append(str(int(binc))) + + if movestogo is not None and movestogo > 0: + builder.append("movestogo") + builder.append(str(int(movestogo))) + + if depth is not None: + builder.append("depth") + builder.append(str(int(depth))) + + if nodes is not None: + builder.append("nodes") + builder.append(str(int(nodes))) + + if mate is not None: + builder.append("mate") + builder.append(str(int(mate))) + + if movetime is not None: + builder.append("movetime") + builder.append(str(int(movetime))) + + if infinite: + builder.append("infinite") + + if searchmoves: + builder.append("searchmoves") + for move in searchmoves: + builder.append(self.board.uci(move, chess960=self.uci_chess960)) + + def command(): + with self.semaphore: + self.send_line(" ".join(builder)) + + with self.readyok_received: + self.send_line("isready") + self.readyok_received.wait() + self.search_started.set() + + self.bestmove_received.wait() + + with self.state_changed: + self.idle = True + self.state_changed.notify_all() + + if self.terminated.is_set(): + raise EngineTerminatedException() + + return BestMove(self.bestmove, self.ponder) + + return self._queue_command(command, async_callback) + + def stop(self, async_callback=None): + """ + Stop calculating as soon as possible. + + :return: Nothing. + """ + # Only send stop when the engine is actually searching. + def command(): + with self.semaphore: + with self.state_changed: + backoff = 0.5 + while not self.bestmove_received.is_set() and not self.terminated.is_set(): + if self.idle: + break + else: + self.send_line("stop") + self.bestmove_received.wait(backoff) + backoff *= 2 + + self.idle = True + self.state_changed.notify_all() + + if self.terminated.is_set(): + raise EngineTerminatedException() + + return self._queue_command(command, async_callback) + + def ponderhit(self, async_callback=None): + """ + May be sent if the expected ponder move has been played. + + The engine should continue searching but should switch from pondering + to normal search. + + :return: Nothing. + + :raises: :exc:`~chess.uci.EngineStateException` if the engine is not + currently searching in ponder mode. + """ + with self.state_changed: + if self.idle: + raise EngineStateException("ponderhit but not searching") + if not self.pondering: + raise EngineStateException("ponderhit but not pondering") + + self.pondering = False + self.state_changed.notify_all() + + def command(): + self.search_started.wait() + with self.semaphore: + self.send_line("ponderhit") + + return self._queue_command(command, async_callback) + + def quit(self, async_callback=None): + """ + Quit the engine as soon as possible. + + :return: The return code of the engine process. + """ + def command(): + with self.semaphore: + self.send_line("quit") + + self.terminated.wait() + return self.return_code + + return self._queue_command(command, async_callback) + + def _queue_termination(self, async_callback): + def wait(): + self.terminated.wait() + return self.return_code + + try: + return self._queue_command(wait, async_callback) + except EngineTerminatedException: + assert self.terminated.is_set() + + future = concurrent.futures.Future() + future.set_result(self.return_code) + if async_callback is True: + return future + elif async_callback: + future.add_done_callback(async_callback) + else: + return future.result() + + def terminate(self, async_callback=None): + """ + Terminate the engine. + + This is not an UCI command. It instead tries to terminate the engine + on operating system level, for example by sending SIGTERM on Unix + systems. If possible, first try the *quit* command. + + :return: The return code of the engine process (or a Future). + """ + self.process.terminate() + return self._queue_termination(async_callback) + + def kill(self, async_callback=None): + """ + Kill the engine. + + Forcefully kill the engine process, for example by sending SIGKILL. + + :return: The return code of the engine process (or a Future). + """ + self.process.kill() + return self._queue_termination(async_callback) + + def is_alive(self): + """Poll the engine process to check if it is alive.""" + return self.process.is_alive() + + +def popen_engine(command, engine_cls=Engine): + """ + Opens a local chess engine process. + + No initialization commands are sent, so do not forget to send the + mandatory *uci* command. + + >>> engine = chess.uci.popen_engine("/usr/games/stockfish") + >>> engine.uci() + >>> engine.name + 'Stockfish 230814 64' + >>> engine.author + 'Tord Romstad, Marco Costalba and Joona Kiiski' + + The input and input streams will be linebuffered and able both Windows + and Unix newlines. + """ + process = PopenProcess(command) + return engine_cls(process) + + +def spur_spawn_engine(shell, command, engine_cls=Engine): + """ + Spawns a remote engine using a `Spur`_ shell. + + >>> import spur + >>> shell = spur.SshShell(hostname="localhost", username="username", password="pw") + >>> engine = chess.uci.spur_spawn_engine(shell, ["/usr/games/stockfish"]) + >>> engine.uci() + + .. _Spur: https://pypi.python.org/pypi/spur + """ + process = SpurProcess(shell, command) + return engine_cls(process) diff --git a/data/bratko-kopec.epd b/data/bratko-kopec.epd new file mode 100644 index 000000000..b73da0dc5 --- /dev/null +++ b/data/bratko-kopec.epd @@ -0,0 +1,24 @@ +1k1r4/pp1b1R2/3q2pp/4p3/2B5/4Q3/PPP2B2/2K5 b - - bm Qd1+; id "BK.01"; +3r1k2/4npp1/1ppr3p/p6P/P2PPPP1/1NR5/5K2/2R5 w - - bm d5; id "BK.02"; +2q1rr1k/3bbnnp/p2p1pp1/2pPp3/PpP1P1P1/1P2BNNP/2BQ1PRK/7R b - - bm f5; id "BK.03"; +rnbqkb1r/p3pppp/1p6/2ppP3/3N4/2P5/PPP1QPPP/R1B1KB1R w KQkq - bm e6; id "BK.04"; +r1b2rk1/2q1b1pp/p2ppn2/1p6/3QP3/1BN1B3/PPP3PP/R4RK1 w - - bm Nd5 a4; id "BK.05"; +2r3k1/pppR1pp1/4p3/4P1P1/5P2/1P4K1/P1P5/8 w - - bm g6; id "BK.06"; +1nk1r1r1/pp2n1pp/4p3/q2pPp1N/b1pP1P2/B1P2R2/2P1B1PP/R2Q2K1 w - - bm Nf6; id "BK.07"; +4b3/p3kp2/6p1/3pP2p/2pP1P2/4K1P1/P3N2P/8 w - - bm f5; id "BK.08"; +2kr1bnr/pbpq4/2n1pp2/3p3p/3P1P1B/2N2N1Q/PPP3PP/2KR1B1R w - - bm f5; id "BK.09"; +3rr1k1/pp3pp1/1qn2np1/8/3p4/PP1R1P2/2P1NQPP/R1B3K1 b - - bm Ne5; id "BK.10"; +2r1nrk1/p2q1ppp/bp1p4/n1pPp3/P1P1P3/2PBB1N1/4QPPP/R4RK1 w - - bm f4; id "BK.11"; +r3r1k1/ppqb1ppp/8/4p1NQ/8/2P5/PP3PPP/R3R1K1 b - - bm Bf5; id "BK.12"; +r2q1rk1/4bppp/p2p4/2pP4/3pP3/3Q4/PP1B1PPP/R3R1K1 w - - bm b4; id "BK.13"; +rnb2r1k/pp2p2p/2pp2p1/q2P1p2/8/1Pb2NP1/PB2PPBP/R2Q1RK1 w - - bm Qd2 Qe1; id "BK.14"; +2r3k1/1p2q1pp/2b1pr2/p1pp4/6Q1/1P1PP1R1/P1PN2PP/5RK1 w - - bm Qxg7+; id "BK.15"; +r1bqkb1r/4npp1/p1p4p/1p1pP1B1/8/1B6/PPPN1PPP/R2Q1RK1 w kq - bm Ne4; id "BK.16"; +r2q1rk1/1ppnbppp/p2p1nb1/3Pp3/2P1P1P1/2N2N1P/PPB1QP2/R1B2RK1 b - - bm h5; id "BK.17"; +r1bq1rk1/pp2ppbp/2np2p1/2n5/P3PP2/N1P2N2/1PB3PP/R1B1QRK1 b - - bm Nb3; id "BK.18"; +3rr3/2pq2pk/p2p1pnp/8/2QBPP2/1P6/P5PP/4RRK1 b - - bm Rxe4; id "BK.19"; +r4k2/pb2bp1r/1p1qp2p/3pNp2/3P1P2/2N3P1/PPP1Q2P/2KRR3 w - - bm g4; id "BK.20"; +3rn2k/ppb2rpp/2ppqp2/5N2/2P1P3/1P5Q/PB3PPP/3RR1K1 w - - bm Nh6; id "BK.21"; +2r2rk1/1bqnbpp1/1p1ppn1p/pP6/N1P1P3/P2B1N1P/1B2QPP1/R2R2K1 b - - bm Bxe4; id "BK.22"; +r1bqk2r/pp2bppp/2p5/3pP3/P2Q1P2/2N1B3/1PP3PP/R4RK1 b kq - bm f6; id "BK.23"; +r2qnrnk/p2b2b1/1p1p2pp/2pPpp2/1PP1P3/PRNBB3/3QNPPP/5RK1 w - - bm f4; id "BK.24"; diff --git a/data/eco.json b/data/eco.json new file mode 100644 index 000000000..c06948a4d --- /dev/null +++ b/data/eco.json @@ -0,0 +1,35162 @@ +{ + "A00a": { + "eco": "A00a", + "fen": "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1", + "hash": 5060803636482931868, + "name": "Start position" + }, + "A00b": { + "eco": "A00b", + "fen": "rnbqkbnr/pppppppp/8/8/8/5P2/PPPPP1PP/RNBQKBNR b KQkq - 0 1", + "hash": 2921270632758580205, + "name": "Barnes Opening" + }, + "A00c": { + "eco": "A00c", + "fen": "rnbqkbnr/pppppppp/8/8/7P/8/PPPPPPP1/RNBQKBNR b KQkq h3 0 1", + "hash": 15751350905480316386, + "name": "Kadas Opening" + }, + "A00d": { + "eco": "A00d", + "fen": "rnbqkbnr/pppppppp/8/8/8/7P/PPPPPPP1/RNBQKBNR b KQkq - 0 1", + "hash": 12594399537838306670, + "name": "Clemenz Opening" + }, + "A00e": { + "eco": "A00e", + "fen": "rnbqkbnr/pppppppp/8/8/P7/8/1PPPPPPP/RNBQKBNR b KQkq a3 0 1", + "hash": 3310964812804139346, + "name": "Ware Opening" + }, + "A00f": { + "eco": "A00f", + "fen": "rnbqkbnr/pppppppp/8/8/8/P7/1PPPPPPP/RNBQKBNR b KQkq - 0 1", + "hash": 10207310966796677852, + "name": "Anderssen Opening" + }, + "A00g": { + "eco": "A00g", + "fen": "rnbqkbnr/pppppppp/8/8/8/7N/PPPPPPPP/RNBQKB1R b KQkq - 1 1", + "hash": 3311637314013528902, + "name": "Amar/Paris Opening" + }, + "A00h": { + "eco": "A00h", + "fen": "rnbqkbnr/pppppppp/8/8/8/N7/PPPPPPPP/R1BQKBNR b KQkq - 1 1", + "hash": 4746026874478777170, + "name": "Durkin" + }, + "A00i": { + "eco": "A00i", + "fen": "rnbqkbnr/pppppppp/8/8/8/2P5/PP1PPPPP/RNBQKBNR b KQkq - 0 1", + "hash": 3522217882952004378, + "name": "Saragossa" + }, + "A00j": { + "eco": "A00j", + "fen": "rnbqkbnr/pppppppp/8/8/8/3P4/PPP1PPPP/RNBQKBNR b KQkq - 0 1", + "hash": 16762210678428747592, + "name": "Mieses" + }, + "A00k": { + "eco": "A00k", + "fen": "rnbqkbnr/pppppppp/8/8/8/4P3/PPPP1PPP/RNBQKBNR b KQkq - 0 1", + "hash": 16939960875862619192, + "name": "Van Kruijs" + }, + "A00l": { + "eco": "A00l", + "fen": "rnbqkbnr/pppppppp/8/8/8/2N5/PPPPPPPP/R1BQKBNR b KQkq - 1 1", + "hash": 13667455902242012741, + "name": "Van Geet (Dunst) Opening" + }, + "A00m": { + "eco": "A00m", + "fen": "rnbqkbnr/ppp1pppp/8/3p4/8/2N5/PPPPPPPP/R1BQKBNR w KQkq d6 0 2", + "hash": 4091147176055877731, + "name": "Van Geet: 1...d5" + }, + "A00n": { + "eco": "A00n", + "fen": "rnbqkbnr/pppppppp/8/8/6P1/8/PPPPPP1P/RNBQKBNR b KQkq g3 0 1", + "hash": 16534569997232771457, + "name": "Grob" + }, + "A00o": { + "eco": "A00o", + "fen": "rnbqkbnr/ppp1pppp/8/3p4/6P1/8/PPPPPP1P/RNBQKBNR w KQkq d6 0 2", + "hash": 6925610276543815591, + "name": "Grob: 1...d5" + }, + "A00p": { + "eco": "A00p", + "fen": "rnbqkbnr/pppppppp/8/8/1P6/8/P1PPPPPP/RNBQKBNR b KQkq b3 0 1", + "hash": 17063826403342389432, + "name": "Polish (Sokolsky; Orang-Utan)" + }, + "A00q": { + "eco": "A00q", + "fen": "rnbqkbnr/ppp1pppp/8/3p4/1P6/8/P1PPPPPP/RNBQKBNR w KQkq d6 0 2", + "hash": 7612422163856088734, + "name": "Polish: 1...d5" + }, + "A00r": { + "eco": "A00r", + "fen": "rnbqkbnr/pppp1ppp/8/4p3/1P6/8/P1PPPPPP/RNBQKBNR w KQkq e6 0 2", + "hash": 7401362514384152718, + "name": "Polish: 1...e5" + }, + "A00s": { + "eco": "A00s", + "fen": "rnbqk1nr/pppp1ppp/8/4p3/1b6/8/PBPPPPPP/RN1QKBNR w KQkq - 0 3", + "hash": 14766614082335700219, + "name": "Polish: 2...Bxb4" + }, + "A00t": { + "eco": "A00t", + "fen": "rnbqkbnr/pppppppp/8/8/8/6P1/PPPPPP1P/RNBQKBNR b KQkq - 0 1", + "hash": 7700360802280547492, + "name": "Benko Opening" + }, + "A00u": { + "eco": "A00u", + "fen": "rnbqkbnr/pppp1ppp/8/4p3/8/6P1/PPPPPP1P/RNBQKBNR w KQkq e6 0 2", + "hash": 16187385200892959890, + "name": "Benko Opening" + }, + "A00v": { + "eco": "A00v", + "fen": "rnbqkbnr/ppp1pppp/8/3p4/8/6P1/PPPPPP1P/RNBQKBNR w KQkq d6 0 2", + "hash": 17273291720977705602, + "name": "Benko Opening" + }, + "A01": { + "eco": "A01", + "fen": "rnbqkbnr/pppppppp/8/8/8/1P6/P1PPPPPP/RNBQKBNR b KQkq - 0 1", + "hash": 14600096376707389425, + "name": "Nimzowitsch-Larsen Attack" + }, + "A02": { + "eco": "A02", + "fen": "rnbqkbnr/pppppppp/8/8/5P2/8/PPPPP1PP/RNBQKBNR b KQkq f3 0 1", + "hash": 13487694934723051797, + "name": "Bird" + }, + "A03": { + "eco": "A03", + "fen": "rnbqkbnr/ppp1pppp/8/3p4/5P2/8/PPPPP1PP/RNBQKBNR w KQkq d6 0 2", + "hash": 4487776562310319923, + "name": "Bird: 1...d5" + }, + "A04": { + "eco": "A04", + "fen": "rnbqkbnr/pppppppp/8/8/8/5N2/PPPPPPPP/RNBQKB1R b KQkq - 1 1", + "hash": 11339917551484771745, + "name": "Reti" + }, + "A05": { + "eco": "A05", + "fen": "rnbqkb1r/pppppppp/5n2/8/8/5N2/PPPPPPPP/RNBQKB1R w KQkq - 2 2", + "hash": 14317310571807890487, + "name": "Reti: 1...Nf6" + }, + "A06": { + "eco": "A06", + "fen": "rnbqkbnr/ppp1pppp/8/3p4/8/5N2/PPPPPPPP/RNBQKB1R w KQkq d6 0 2", + "hash": 1744398265243390855, + "name": "Reti: 1...d5" + }, + "A07": { + "eco": "A07", + "fen": "rnbqkbnr/ppp1pppp/8/3p4/8/5NP1/PPPPPP1P/RNBQKB1R b KQkq - 0 2", + "hash": 3806636502397750207, + "name": "Reti: KIA" + }, + "A08": { + "eco": "A08", + "fen": "rnbqkbnr/pp2pppp/8/2pp4/8/5NP1/PPPPPP1P/RNBQKB1R w KQkq c6 0 3", + "hash": 15177748764215673026, + "name": "Reti: KIA, 2...c5" + }, + "A09a": { + "eco": "A09a", + "fen": "rnbqkbnr/ppp1pppp/8/3p4/2P5/5N2/PP1PPPPP/RNBQKB1R b KQkq c3 0 2", + "hash": 10670936126110070912, + "name": "Reti: 2.c4" + }, + "A09b": { + "eco": "A09b", + "fen": "rnbqkbnr/ppp1pppp/8/8/2Pp4/5N2/PP1PPPPP/RNBQKB1R w KQkq - 0 3", + "hash": 8537608491875127911, + "name": "Reti: Advance Variation" + }, + "A09c": { + "eco": "A09c", + "fen": "rnbqkbnr/ppp1pppp/8/8/1PPp4/5N2/P2PPPPP/RNBQKB1R b KQkq b3 0 3", + "hash": 15892877753215958595, + "name": "Reti: Advance, Anglo-Polish Attack" + }, + "A09d": { + "eco": "A09d", + "fen": "rnbqkbnr/ppp1pppp/8/8/2Pp4/4PN2/PP1P1PPP/RNBQKB1R b KQkq - 0 3", + "hash": 15805082735410469571, + "name": "Reti: Advance, 3.e3" + }, + "A09e": { + "eco": "A09e", + "fen": "rnbqkbnr/pp2pppp/8/2p5/2Pp4/4PN2/PP1P1PPP/RNBQKB1R w KQkq c6 0 4", + "hash": 4406559671923233214, + "name": "Reti: Advance, 3.e3 c5" + }, + "A09f": { + "eco": "A09f", + "fen": "r1bqkbnr/ppp1pppp/2n5/8/2Pp4/4PN2/PP1P1PPP/RNBQKB1R w KQkq - 1 4", + "hash": 8123147789587546048, + "name": "Reti: Advance, 3.e3 Nc6" + }, + "A09g": { + "eco": "A09g", + "fen": "rnbqkbnr/ppp1pppp/8/8/2Pp4/5NP1/PP1PPP1P/RNBQKB1R b KQkq - 0 3", + "hash": 6529400261470095967, + "name": "Reti: Advance, 3.g3" + }, + "A09h": { + "eco": "A09h", + "fen": "r1bqkbnr/ppp1pppp/2n5/8/2Pp4/5NP1/PP1PPP1P/RNBQKB1R w KQkq - 1 4", + "hash": 17397631944163143516, + "name": "Reti: Advance, 3.g3 Nc6" + }, + "A09i": { + "eco": "A09i", + "fen": "rnbqkbnr/ppp1pp1p/6p1/8/2Pp4/5NP1/PP1PPP1P/RNBQKB1R w KQkq - 0 4", + "hash": 12909926407421499412, + "name": "Reti: Advance, 3.g3 g6" + }, + "A09j": { + "eco": "A09j", + "fen": "rnbqkbnr/pp2pppp/8/2p5/2Pp4/5NP1/PP1PPP1P/RNBQKB1R w KQkq c6 0 4", + "hash": 13613474986382819618, + "name": "Reti: Advance, 3.g3 c5" + }, + "A09k": { + "eco": "A09k", + "fen": "rnbqkbnr/ppp1pppp/8/8/2p5/5N2/PP1PPPPP/RNBQKB1R w KQkq - 0 3", + "hash": 5048815475934533219, + "name": "Reti: Accepted" + }, + "A09l": { + "eco": "A09l", + "fen": "rnbqkbnr/ppp1pppp/8/8/2p5/5NP1/PP1PPP1P/RNBQKB1R b KQkq - 0 3", + "hash": 7707424421946150491, + "name": "Reti: Accepted, 3.g3" + }, + "A09m": { + "eco": "A09m", + "fen": "rnbqkbnr/ppp2ppp/4p3/8/2p5/5NP1/PP1PPP1P/RNBQKB1R w KQkq - 0 4", + "hash": 2054124785891794441, + "name": "Reti: Accepted, 3.g3 e6" + }, + "A09n": { + "eco": "A09n", + "fen": "rnbqkbnr/ppp1pppp/8/8/Q1p5/5N2/PP1PPPPP/RNB1KB1R b KQkq - 1 3", + "hash": 10715263781646918680, + "name": "Reti: Accepted, 3.Qa4+" + }, + "A09o": { + "eco": "A09o", + "fen": "rnbqkbnr/ppp1pppp/8/8/2p5/N4N2/PP1PPPPP/R1BQKB1R b KQkq - 1 3", + "hash": 4753037855125715373, + "name": "Reti: Accepted, 3.Na3" + }, + "A09p": { + "eco": "A09p", + "fen": "rnbqkbnr/1pp1pppp/p7/8/2p5/N4N2/PP1PPPPP/R1BQKB1R w KQkq - 0 4", + "hash": 10592993320254849393, + "name": "Reti: Accepted, 3.Na3 a6" + }, + "A09q": { + "eco": "A09q", + "fen": "rnbqkbnr/pp2pppp/8/2p5/2p5/N4N2/PP1PPPPP/R1BQKB1R w KQkq c6 0 4", + "hash": 12071897778453197520, + "name": "Reti: Accepted, 3.Na3 c5" + }, + "A09r": { + "eco": "A09r", + "fen": "rnbqkbnr/ppp1pppp/8/8/2p5/4PN2/PP1P1PPP/RNBQKB1R b KQkq - 0 3", + "hash": 16950911688025906887, + "name": "Reti: Accepted, 3.e3" + }, + "A09s": { + "eco": "A09s", + "fen": "rn1qkbnr/ppp1pppp/4b3/8/2p5/4PN2/PP1P1PPP/RNBQKB1R w KQkq - 1 4", + "hash": 13800487806062585295, + "name": "Reti: Accepted, Keres Variation" + }, + "A09t": { + "eco": "A09t", + "fen": "rnbqkb1r/ppp1pppp/5n2/8/2p5/4PN2/PP1P1PPP/RNBQKB1R w KQkq - 1 4", + "hash": 12741678040832499537, + "name": "Reti: Accepted, 3.e3 Nf6" + }, + "A09u": { + "eco": "A09u", + "fen": "rnbqkb1r/ppp2ppp/4pn2/8/2B5/4PN2/PP1P1PPP/RNBQK2R w KQkq - 0 5", + "hash": 2505630842399853490, + "name": "Reti: Accepted, 3.e3 Nf6 4.Bxc4 e6" + }, + "A10": { + "eco": "A10", + "fen": "rnbqkbnr/pppppppp/8/8/2P5/8/PP1PPPPP/RNBQKBNR b KQkq c3 0 1", + "hash": 14562399549841627035, + "name": "English" + }, + "A11": { + "eco": "A11", + "fen": "rnbqkbnr/pp1ppppp/2p5/8/2P5/8/PP1PPPPP/RNBQKBNR w KQkq - 0 2", + "hash": 6368904418521154592, + "name": "English: Caro-Kann Defence" + }, + "A12": { + "eco": "A12", + "fen": "rnbqkbnr/pp2pppp/2p5/3p4/2P5/1P3N2/P2PPPPP/RNBQKB1R b KQkq - 0 3", + "hash": 10000887720397881430, + "name": "English: Caro-Kann Defence, 3.b3" + }, + "A13a": { + "eco": "A13a", + "fen": "rnbqkbnr/pppp1ppp/4p3/8/2P5/8/PP1PPPPP/RNBQKBNR w KQkq - 0 2", + "hash": 13578347436102698953, + "name": "English: 1...e6" + }, + "A13b": { + "eco": "A13b", + "fen": "rnbqkbnr/pppp1ppp/4p3/8/2P5/6P1/PP1PPP1P/RNBQKBNR b KQkq - 0 2", + "hash": 10414926311342153713, + "name": "English: 1...e6 2.g3" + }, + "A13c": { + "eco": "A13c", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/2P5/6P1/PP1PPP1P/RNBQKBNR w KQkq d6 0 3", + "hash": 1577212425441071575, + "name": "English: 1...e6 2.g3 d5" + }, + "A13d": { + "eco": "A13d", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/2P5/6P1/PP1PPPBP/RNBQK1NR b KQkq - 1 3", + "hash": 11534634699881351598, + "name": "English: 1...e6 2.g3 d5" + }, + "A13e": { + "eco": "A13e", + "fen": "rnbqkbnr/pppp1ppp/4p3/8/2P5/2N5/PP1PPPPP/R1BQKBNR b KQkq - 1 2", + "hash": 5186145314081228048, + "name": "English: 1...e6 2.Nc3" + }, + "A13f": { + "eco": "A13f", + "fen": "rnbqk1nr/pppp1ppp/4p3/8/1bP5/2N5/PP1PPPPP/R1BQKBNR w KQkq - 2 3", + "hash": 10284403685830790450, + "name": "English: 1...e6 2.Nc3 Bb4" + }, + "A13g": { + "eco": "A13g", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/2P5/2N5/PP1PPPPP/R1BQKBNR w KQkq d6 0 3", + "hash": 14020481599188634422, + "name": "English: 1...e6 2.Nc3 d5" + }, + "A13h": { + "eco": "A13h", + "fen": "rnbqkbnr/pppp1ppp/4p3/8/2P5/5N2/PP1PPPPP/RNBQKB1R b KQkq - 1 2", + "hash": 7425054778081322740, + "name": "English: 1...e6 2.Nf3" + }, + "A13i": { + "eco": "A13i", + "fen": "rnbqkb1r/pppp1ppp/4pn2/8/2P5/5N2/PP1PPPPP/RNBQKB1R w KQkq - 2 3", + "hash": 4387951957271177058, + "name": "English: 1...e6 2.Nf3 Nf6" + }, + "A13j": { + "eco": "A13j", + "fen": "rnbqkb1r/pppp1ppp/4pn2/8/2P5/5NP1/PP1PPP1P/RNBQKB1R b KQkq - 0 3", + "hash": 1153933396359462746, + "name": "English: 1...e6 2.Nf3 Nf6 3.g3" + }, + "A13k": { + "eco": "A13k", + "fen": "rnbqkb1r/2pp1ppp/p3pn2/1p6/2P5/5NP1/PP1PPPBP/RNBQK2R w KQkq b6 0 5", + "hash": 1657360759272219330, + "name": "English: Romanishin Gambit" + }, + "A13l": { + "eco": "A13l", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/2P5/5N2/PP1PPPPP/RNBQKB1R w KQkq d6 0 3", + "hash": 16312378629039253714, + "name": "English: 1...e6 2.Nf3 d5" + }, + "A13m": { + "eco": "A13m", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/2P5/1P3N2/P2PPPPP/RNBQKB1R b KQkq - 0 3", + "hash": 7982443127845913535, + "name": "English: Agincourt Variation" + }, + "A13n": { + "eco": "A13n", + "fen": "rnbqkb1r/pp3ppp/4pn2/2pp4/2P5/1P2PN2/PB1P1PPP/RN1QKB1R b KQkq - 0 5", + "hash": 13693502907570052383, + "name": "English: Wimpey System" + }, + "A13o": { + "eco": "A13o", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/2P5/5NP1/PP1PPP1P/RNBQKB1R b KQkq - 0 3", + "hash": 14882020373143564522, + "name": "English: Agincourt Variation" + }, + "A13p": { + "eco": "A13p", + "fen": "rnbqkbnr/pp3ppp/2p1p3/3p4/2P5/5NP1/PP1PPP1P/RNBQKB1R w KQkq - 0 4", + "hash": 6700620952203027281, + "name": "English: Kurajica Defence" + }, + "A13q": { + "eco": "A13q", + "fen": "rnbqkbnr/pp3ppp/2p1p3/3p4/2P5/5NP1/PPQPPP1P/RNB1KB1R b KQkq - 1 4", + "hash": 17141845169525481269, + "name": "English: Kurajica Defence" + }, + "A13r": { + "eco": "A13r", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/2P5/5NP1/PP1PPP1P/RNBQKB1R w KQkq - 1 4", + "hash": 10766341288315023740, + "name": "English: Neo-Catalan" + }, + "A13s": { + "eco": "A13s", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/2P5/5NP1/PP1PPPBP/RNBQK2R b KQkq - 2 4", + "hash": 2349077072247171333, + "name": "English: Neo-Catalan" + }, + "A13t": { + "eco": "A13t", + "fen": "rnbqkb1r/pp3ppp/4pn2/2pp4/2P5/5NP1/PP1PPPBP/RNBQK2R w KQkq c6 0 5", + "hash": 14332785564234392184, + "name": "English: Neo-Catalan, 4...c5" + }, + "A13u": { + "eco": "A13u", + "fen": "rnbqkb1r/ppp2ppp/4pn2/8/2p5/5NP1/PP1PPPBP/RNBQK2R w KQkq - 0 5", + "hash": 17482868290185349094, + "name": "English: Neo-Catalan Accepted" + }, + "A13v": { + "eco": "A13v", + "fen": "rnbqkb1r/ppp2ppp/4pn2/8/Q1p5/5NP1/PP1PPPBP/RNB1K2R b KQkq - 1 5", + "hash": 2322482310245430685, + "name": "English: Neo-Catalan Accepted, 5.Qa4+" + }, + "A13w": { + "eco": "A13w", + "fen": "r1bqkb1r/pppn1ppp/4pn2/8/2Q5/5NP1/PP1PPPBP/RNB1K2R b KQkq - 0 6", + "hash": 15319245815798063598, + "name": "English: Neo-Catalan Accepted, 5.Qa4+ Nbd7 6.Qxc4" + }, + "A14": { + "eco": "A14", + "fen": "rnbqk2r/ppp1bppp/4pn2/3p4/2P5/5NP1/PP1PPPBP/RNBQK2R w KQkq - 3 5", + "hash": 3771178413946373524, + "name": "English: Neo-Catalan Declined" + }, + "A15": { + "eco": "A15", + "fen": "rnbqkb1r/pppppppp/5n2/8/2P5/8/PP1PPPPP/RNBQKBNR w KQkq - 1 2", + "hash": 10517661917435401741, + "name": "English: Anglo-Indian" + }, + "A16": { + "eco": "A16", + "fen": "rnbqkb1r/pppppppp/5n2/8/2P5/2N5/PP1PPPPP/R1BQKBNR b KQkq - 2 2", + "hash": 7665449183234921684, + "name": "English: Anglo-Indian, 2.Nc3" + }, + "A17": { + "eco": "A17", + "fen": "rnbqkb1r/pppp1ppp/4pn2/8/2P5/2N5/PP1PPPPP/R1BQKBNR w KQkq - 0 3", + "hash": 2024041864677819526, + "name": "English: Anglo-Indian, 2.Nc3 e6" + }, + "A18": { + "eco": "A18", + "fen": "rnbqkb1r/pppp1ppp/4pn2/8/2P1P3/2N5/PP1P1PPP/R1BQKBNR b KQkq e3 0 3", + "hash": 15569465161015409036, + "name": "English: Mikenas" + }, + "A19": { + "eco": "A19", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/2p5/2P1P3/2N5/PP1P1PPP/R1BQKBNR w KQkq c6 0 4", + "hash": 4494605331110015729, + "name": "English: Mikenas, Sicilian Variation" + }, + "A20": { + "eco": "A20", + "fen": "rnbqkbnr/pppp1ppp/8/4p3/2P5/8/PP1PPPPP/RNBQKBNR w KQkq e6 0 2", + "hash": 4638709225839374253, + "name": "English: King's (1...e5)" + }, + "A21": { + "eco": "A21", + "fen": "rnbqkbnr/pppp1ppp/8/4p3/2P5/2N5/PP1PPPPP/R1BQKBNR b KQkq - 1 2", + "hash": 13544322802740964724, + "name": "English: King's, 2.Nc3" + }, + "A22": { + "eco": "A22", + "fen": "rnbqkb1r/pppp1ppp/5n2/4p3/2P5/2N5/PP1PPPPP/R1BQKBNR w KQkq - 2 3", + "hash": 16147987561512660194, + "name": "English: King's, 2.Nc3 Nf6" + }, + "A23": { + "eco": "A23", + "fen": "rnbqkb1r/pp1p1ppp/2p2n2/4p3/2P5/2N3P1/PP1PPP1P/R1BQKBNR w KQkq - 0 4", + "hash": 6810985866626099041, + "name": "English: Bremen, Keres System" + }, + "A24": { + "eco": "A24", + "fen": "rnbqkb1r/pppp1p1p/5np1/4p3/2P5/2N3P1/PP1PPP1P/R1BQKBNR w KQkq - 0 4", + "hash": 2687458460693112465, + "name": "English: Bremen, 3...g6" + }, + "A25": { + "eco": "A25", + "fen": "r1bqkbnr/pppp1ppp/2n5/4p3/2P5/2N5/PP1PPPPP/R1BQKBNR w KQkq - 2 3", + "hash": 1160452292026599543, + "name": "English: Closed" + }, + "A26": { + "eco": "A26", + "fen": "r1bqk1nr/ppp2pbp/2np2p1/4p3/2P5/2NP2P1/PP2PPBP/R1BQK1NR w KQkq - 0 6", + "hash": 5123515637629592430, + "name": "English: Closed, 5.d3 d6" + }, + "A27": { + "eco": "A27", + "fen": "r1bqkbnr/pppp1ppp/2n5/4p3/2P5/2N2N2/PP1PPPPP/R1BQKB1R b KQkq - 3 3", + "hash": 14663207741534693706, + "name": "English: Three Knights" + }, + "A28": { + "eco": "A28", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/2P5/2N2N2/PP1PPPPP/R1BQKB1R w KQkq - 4 4", + "hash": 10416853657022933212, + "name": "English: Four Knights" + }, + "A29": { + "eco": "A29", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/2P5/2N2NP1/PP1PPP1P/R1BQKB1R b KQkq - 0 4", + "hash": 13580220346300330212, + "name": "English: Four Knights, 4.g3" + }, + "A30a": { + "eco": "A30a", + "fen": "rnbqkbnr/pp1ppppp/8/2p5/2P5/8/PP1PPPPP/RNBQKBNR w KQkq c6 0 2", + "hash": 3200327134666644710, + "name": "English: Symmetrical" + }, + "A30b": { + "eco": "A30b", + "fen": "rnbqkbnr/pp1ppppp/8/2p5/2P5/5N2/PP1PPPPP/RNBQKB1R b KQkq - 1 2", + "hash": 17801942509425737179, + "name": "English: Symmetrical, 2.Nf3" + }, + "A30c": { + "eco": "A30c", + "fen": "rnbqkb1r/pp1ppppp/5n2/2p5/2P5/5N2/PP1PPPPP/RNBQKB1R w KQkq - 2 3", + "hash": 12457801618882395213, + "name": "English: Symmetrical, 2.Nf3 Nf6" + }, + "A30d": { + "eco": "A30d", + "fen": "rnbqkb1r/pp1ppppp/5n2/2p5/2P5/5NP1/PP1PPP1P/RNBQKB1R b KQkq - 0 3", + "hash": 9224985916166284405, + "name": "English: Symmetrical, 2.Nf3 Nf6 3.g3" + }, + "A30e": { + "eco": "A30e", + "fen": "rnbqkb1r/p2ppppp/1p3n2/2p5/2P5/5NP1/PP1PPP1P/RNBQKB1R w KQkq - 0 4", + "hash": 16964200804750791662, + "name": "English: Symmetrical, b6 System" + }, + "A30f": { + "eco": "A30f", + "fen": "rn1qkb1r/pb1ppp1p/1p3np1/2p5/2P5/5NP1/PP1PPPBP/RNBQ1RK1 w kq - 0 6", + "hash": 8776866232970390871, + "name": "English: Symmetrical, Double Fianchetto" + }, + "A30g": { + "eco": "A30g", + "fen": "rn1qkb1r/pb1ppp1p/1p3np1/2p5/2P5/1P3NP1/P2PPPBP/RNBQ1RK1 b kq - 0 6", + "hash": 17684458170801407546, + "name": "English: Symmetrical, Mutual Double Fianchetto" + }, + "A30h": { + "eco": "A30h", + "fen": "rn1qkb1r/pb1p1ppp/1p2pn2/2p5/2P5/5NP1/PP1PPPBP/RNBQ1RK1 w kq - 0 6", + "hash": 16577205129002823502, + "name": "English: Symmetrical, Hedgehog System" + }, + "A30i": { + "eco": "A30i", + "fen": "rn1qkb1r/1b1p1ppp/pp2pn2/2p5/2P5/2N2NP1/PP1PPPBP/R1BQ1RK1 w kq - 0 7", + "hash": 14947158460091684171, + "name": "English: Symmetrical, Hedgehog, 6...a6" + }, + "A30j": { + "eco": "A30j", + "fen": "rn1qkb1r/pb3ppp/1p1ppn2/2p5/2P5/2N2NP1/PP1PPPBP/R1BQ1RK1 w kq - 0 7", + "hash": 2604099828583884026, + "name": "English: Symmetrical, Hedgehog, 6...d6" + }, + "A30k": { + "eco": "A30k", + "fen": "rn1qkb1r/pb3ppp/1p1ppn2/2p5/2P5/1PN2NP1/P2PPPBP/R1BQ1RK1 b kq - 0 7", + "hash": 12143391984440610711, + "name": "English: Symmetrical, Hedgehog, 6...d6 7.b3" + }, + "A30l": { + "eco": "A30l", + "fen": "rn1qkb1r/pb3ppp/1p1ppn2/2p5/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 b kq d3 0 7", + "hash": 16219346087384500664, + "name": "English: Symmetrical, Hedgehog, 6...d6 7.d4" + }, + "A30m": { + "eco": "A30m", + "fen": "rn1qk2r/pb1pbppp/1p2pn2/2p5/2P5/2N2NP1/PP1PPPBP/R1BQ1RK1 w kq - 2 7", + "hash": 672579445205631238, + "name": "English: Symmetrical, Hedgehog System" + }, + "A30n": { + "eco": "A30n", + "fen": "rn1qk2r/pb1pbppp/1p2pn2/2p5/2P5/2N2NP1/PP1PPPBP/R1BQR1K1 b kq - 3 7", + "hash": 10223582348480260626, + "name": "English: Symmetrical, Hedgehog, 7.Re1" + }, + "A30o": { + "eco": "A30o", + "fen": "rn1qk2r/pb2bppp/1p2pn2/2pp4/2P5/2N2NP1/PP1PPPBP/R1BQR1K1 w kq d6 0 8", + "hash": 615682454749635636, + "name": "English: Symmetrical, Hedgehog, 7.Re1 d5" + }, + "A30p": { + "eco": "A30p", + "fen": "rn1qk2r/pb1pbppp/1p2pn2/2p5/2P5/1PN2NP1/P2PPPBP/R1BQ1RK1 b kq - 0 7", + "hash": 9652088276277488235, + "name": "English: Symmetrical, Hedgehog, 7.b3" + }, + "A30q": { + "eco": "A30q", + "fen": "rn1qk2r/pb1pbppp/1p2pn2/2p5/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 b kq d3 0 7", + "hash": 14726864081940065348, + "name": "English: Symmetrical, Hedgehog, 7.d4" + }, + "A30r": { + "eco": "A30r", + "fen": "rn1qk2r/pb1pbppp/1p2pn2/8/2PQ4/2N2NP1/PP2PPBP/R1B2RK1 b kq - 0 8", + "hash": 17206557812178201279, + "name": "English: Symmetrical, Hedgehog, 8.Qxd4" + }, + "A30s": { + "eco": "A30s", + "fen": "rn1q1rk1/pb1pbppp/1p2pn2/8/2PQ4/2N2NP1/PP2PPBP/R1B2RK1 w - - 1 9", + "hash": 16456457180871344980, + "name": "English: Symmetrical, Hedgehog, 8.Qxd4 O-O" + }, + "A30t": { + "eco": "A30t", + "fen": "r2qk2r/pb1pbppp/1pn1pn2/8/2PQ4/2N2NP1/PP2PPBP/R1B2RK1 w kq - 1 9", + "hash": 4982144232460062652, + "name": "English: Symmetrical, Hedgehog, 8.Qxd4 Nc6" + }, + "A30u": { + "eco": "A30u", + "fen": "rn1qk2r/pb2bppp/1p1ppn2/8/2PQ4/2N2NP1/PP2PPBP/R1B2RK1 w kq - 0 9", + "hash": 15524874711214515154, + "name": "English: Symmetrical, Hedgehog, 8.Qxd4 d6" + }, + "A30v": { + "eco": "A30v", + "fen": "rn1qk2r/pb2bppp/1p1ppn2/8/2PQ4/1PN2NP1/P3PPBP/R1B2RK1 b kq - 0 9", + "hash": 6617211855237515455, + "name": "English: Symmetrical, Hedgehog, 9.b3" + }, + "A30w": { + "eco": "A30w", + "fen": "rn1qk2r/pb2bppp/1p1ppn2/8/2PQ4/2N2NP1/PP2PPBP/R1BR2K1 b kq - 1 9", + "hash": 4202244991622780381, + "name": "English: Symmetrical, Hedgehog, 9.Rd1" + }, + "A30x": { + "eco": "A30x", + "fen": "r2qk2r/1b1nbppp/pp1ppn2/8/2PQ4/1PN2NP1/P3PPBP/R1BR2K1 w kq - 1 11", + "hash": 6333105014823873440, + "name": "English: Symmetrical, Hedgehog, Flexible Formation" + }, + "A30y": { + "eco": "A30y", + "fen": "r2qk2r/1b1nbppp/pp1ppn2/8/2PQP3/1PN2NP1/P4PBP/R1BR2K1 b kq e3 0 11", + "hash": 10656845186209076906, + "name": "English: Symmetrical, Hedgehog, Flexible Formation" + }, + "A31": { + "eco": "A31", + "fen": "rnbqkb1r/pp1ppppp/5n2/2p5/2PP4/5N2/PP2PPPP/RNBQKB1R b KQkq d3 0 3", + "hash": 7626334951562825999, + "name": "English: Symmetrical, Two Knights" + }, + "A32": { + "eco": "A32", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/8/2PN4/8/PP2PPPP/RNBQKB1R w KQkq - 0 5", + "hash": 2822413784242141877, + "name": "English: Symmetrical, Two Knights, 4...e6" + }, + "A33a": { + "eco": "A33a", + "fen": "r1bqkb1r/pp1p1ppp/2n1pn2/8/2PN4/2N5/PP2PPPP/R1BQKB1R w KQkq - 2 6", + "hash": 8597928191213444463, + "name": "English: Symmetrical, Two Knights, 5.Nc3 Nc6" + }, + "A33b": { + "eco": "A33b", + "fen": "r1bqkb1r/pp1p1ppp/2n1pn2/8/2PN1B2/2N5/PP2PPPP/R2QKB1R b KQkq - 3 6", + "hash": 12395345036902463244, + "name": "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.Bf4" + }, + "A33c": { + "eco": "A33c", + "fen": "r1bqkb1r/pp1p1ppp/2n1pn2/6B1/2PN4/2N5/PP2PPPP/R2QKB1R b KQkq - 3 6", + "hash": 12757480672630851239, + "name": "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.Bg5" + }, + "A33d": { + "eco": "A33d", + "fen": "r1bqkb1r/pp1p1ppp/2n1pn2/8/2PN4/2N1P3/PP3PPP/R1BQKB1R b KQkq - 0 6", + "hash": 15743661330252928459, + "name": "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.e3" + }, + "A33e": { + "eco": "A33e", + "fen": "r1bqkb1r/pp1p1ppp/2n1pn2/8/2PN4/P1N5/1P2PPPP/R1BQKB1R b KQkq - 0 6", + "hash": 13604753269826294575, + "name": "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.a3" + }, + "A33f": { + "eco": "A33f", + "fen": "r1bqk2r/pp1p1ppp/2n1pn2/2b5/2PN4/P1N5/1P2PPPP/R1BQKB1R w KQkq - 1 7", + "hash": 1283683533510310316, + "name": "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.a3 Bc5" + }, + "A33g": { + "eco": "A33g", + "fen": "r1bqkb1r/pp1p1ppp/2n1pn2/1N6/2P5/2N5/PP2PPPP/R1BQKB1R b KQkq - 3 6", + "hash": 9384112183669434169, + "name": "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.Ndb5" + }, + "A33h": { + "eco": "A33h", + "fen": "r1bqk2r/pp1p1ppp/2n1pn2/1N6/1bP5/2N5/PP2PPPP/R1BQKB1R w KQkq - 4 7", + "hash": 5438792856925892379, + "name": "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.Ndb5 Bb4" + }, + "A33i": { + "eco": "A33i", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/1N1p4/2P5/2N5/PP2PPPP/R1BQKB1R w KQkq d6 0 7", + "hash": 527257998957766943, + "name": "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.Ndb5 d5" + }, + "A33j": { + "eco": "A33j", + "fen": "r1bk1b1r/p4ppp/2p2n2/1N6/5p2/2N5/PP2PPPP/R3KB1R w KQ - 0 11", + "hash": 364453660027997262, + "name": "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.Ndb5 d5 Queenswap" + }, + "A33k": { + "eco": "A33k", + "fen": "r1bqkb1r/pp1p1ppp/2n1pn2/8/2PN4/2N3P1/PP2PP1P/R1BQKB1R b KQkq - 0 6", + "hash": 6608822872608589143, + "name": "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.g3" + }, + "A33l": { + "eco": "A33l", + "fen": "r1bqkb1r/1p1p1ppp/p1n1pn2/8/2PN4/2N3P1/PP2PP1P/R1BQKB1R w KQkq - 0 7", + "hash": 9890098917959220619, + "name": "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.g3 a6" + }, + "A33m": { + "eco": "A33m", + "fen": "r1bqk2r/pp1p1ppp/2n1pn2/8/1bPN4/2N3P1/PP2PP1P/R1BQKB1R w KQkq - 1 7", + "hash": 10589695989989772661, + "name": "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.g3 Bb4" + }, + "A33n": { + "eco": "A33n", + "fen": "r1bqk2r/pp1p1ppp/2n1pn2/2b5/2PN4/2N3P1/PP2PP1P/R1BQKB1R w KQkq - 1 7", + "hash": 17774024621532458964, + "name": "English: Symmetrical, Two Knights, 5.Nc3 Nc6 6.g3 Bc5" + }, + "A33o": { + "eco": "A33o", + "fen": "r1b1kb1r/pp1p1ppp/1qn1pn2/8/2PN4/2N3P1/PP2PP1P/R1BQKB1R w KQkq - 1 7", + "hash": 11261461102376260493, + "name": "English: Symmetrical, Geller Variation" + }, + "A33p": { + "eco": "A33p", + "fen": "r1b1kb1r/pp1p1ppp/1qn1pn2/8/2P5/1NN3P1/PP2PP1P/R1BQKB1R b KQkq - 2 7", + "hash": 592653371212813639, + "name": "English: Symmetrical, Geller, 7.Nb3" + }, + "A33q": { + "eco": "A33q", + "fen": "r1b1kb1r/pp1p1ppp/1q2pn2/4n3/2P5/1NN3P1/PP2PP1P/R1BQKB1R w KQkq - 3 8", + "hash": 17898600496826744615, + "name": "English: Symmetrical, Geller, 7.Nb3 Ne5" + }, + "A34": { + "eco": "A34", + "fen": "rnbqkbnr/pp1ppppp/8/2p5/2P5/2N5/PP1PPPPP/R1BQKBNR b KQkq - 1 2", + "hash": 15564088676378730047, + "name": "English: Symmetrical" + }, + "A35a": { + "eco": "A35a", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/2P5/2N5/PP1PPPPP/R1BQKBNR w KQkq - 2 3", + "hash": 8940516977523981116, + "name": "English: Symmetrical" + }, + "A35b": { + "eco": "A35b", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/2P5/2N1P3/PP1P1PPP/R1BQKBNR b KQkq - 0 3", + "hash": 15077587972422759320, + "name": "English: Symmetrical, 2.Nc3 Nc6 3.e3" + }, + "A35c": { + "eco": "A35c", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/2P5/2N2N2/PP1PPPPP/R1BQKB1R b KQkq - 3 3", + "hash": 12067382162308733441, + "name": "English: Symmetrical, 2.Nc3 Nc6 3.Nf3" + }, + "A35d": { + "eco": "A35d", + "fen": "r1bqkbnr/pp1ppp1p/2n3p1/2p5/2P5/2N2N2/PP1PPPPP/R1BQKB1R w KQkq - 0 4", + "hash": 5675564121110841418, + "name": "English: Symmetrical, 2.Nc3 Nc6 3.Nf3 g6" + }, + "A35e": { + "eco": "A35e", + "fen": "r1bqkbnr/pp1ppp1p/2n3p1/2p5/2P5/2N1PN2/PP1P1PPP/R1BQKB1R b KQkq - 0 4", + "hash": 16424317561016680686, + "name": "English: Symmetrical, 2.Nc3 Nc6 3.Nf3 g6 4.e3" + }, + "A35f": { + "eco": "A35f", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/2p5/2P5/2N1PN2/PP1P1PPP/R1BQKB1R w KQkq - 1 5", + "hash": 6004099279081950020, + "name": "English: Symmetrical, 2.Nc3 Nc6 3.Nf3 g6 4.e3 Bg7" + }, + "A35g": { + "eco": "A35g", + "fen": "r1bqkb1r/pp1ppppp/2n2n2/2p5/2P5/2N2N2/PP1PPPPP/R1BQKB1R w KQkq - 4 4", + "hash": 18201791376041335703, + "name": "English: Symmetrical, Four Knights" + }, + "A35h": { + "eco": "A35h", + "fen": "r1bqkb1r/pp1ppppp/2n2n2/2p5/2P5/2N1PN2/PP1P1PPP/R1BQKB1R b KQkq - 0 4", + "hash": 5887473977158914867, + "name": "English: Symmetrical, Four Knights, 4.e3" + }, + "A35i": { + "eco": "A35i", + "fen": "r1bqkb1r/pp1p1ppp/2n2n2/2p1p3/2P5/2N1PN2/PP1P1PPP/R1BQKB1R w KQkq e6 0 5", + "hash": 15838185898438830853, + "name": "English: Symmetrical, Four Knights, 4.e3 e5" + }, + "A35j": { + "eco": "A35j", + "fen": "r1bqkb1r/pp1ppppp/2n2n2/2p5/2P5/2N2NP1/PP1PPP1P/R1BQKB1R b KQkq - 0 4", + "hash": 15023862741886665647, + "name": "English: Symmetrical, Four Knights, 4.g3" + }, + "A35k": { + "eco": "A35k", + "fen": "r1bqkb1r/pp2pppp/2n2n2/2pp4/2P5/2N2NP1/PP1PPP1P/R1BQKB1R w KQkq d6 0 5", + "hash": 6130904894438493577, + "name": "English: Symmetrical, Four Knights, 4.g3 d5" + }, + "A35l": { + "eco": "A35l", + "fen": "r1bqkb1r/pp2pppp/2n2n2/2pP4/8/2N2NP1/PP1PPP1P/R1BQKB1R b KQkq - 0 5", + "hash": 6575187601424898452, + "name": "English: Symmetrical, Four Knights, 4.g3 d5 5.cxd5" + }, + "A36a": { + "eco": "A36a", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/2P5/2N3P1/PP1PPP1P/R1BQKBNR b KQkq - 0 3", + "hash": 5833748746659013380, + "name": "English: Symmetrical, 3.g3" + }, + "A36b": { + "eco": "A36b", + "fen": "r1bqkb1r/pp1ppppp/2n2n2/2p5/2P5/2N3P1/PP1PPP1P/R1BQKBNR w KQkq - 1 4", + "hash": 800399824012173970, + "name": "English: Symmetrical, 3.g3 Nf6" + }, + "A36c": { + "eco": "A36c", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/2p5/2P5/2N3P1/PP1PPP1P/R1BQKBNR w KQkq - 0 4", + "hash": 2774870078810698582, + "name": "English: Symmetrical, 3.g3 e6" + }, + "A36d": { + "eco": "A36d", + "fen": "r1bqk2r/pp2bppp/2n1p3/2pn4/8/2N2NP1/PP1PPPBP/R1BQ1RK1 w kq - 0 8", + "hash": 7921657554596920162, + "name": "English: Symmetrical, Keres-Parma, Main Line Exchange" + }, + "A36e": { + "eco": "A36e", + "fen": "r1bqkbnr/pp1ppp1p/2n3p1/2p5/2P5/2N3P1/PP1PPP1P/R1BQKBNR w KQkq - 0 4", + "hash": 13349215516094509391, + "name": "English: Symmetrical, 3.g3 g6" + }, + "A36f": { + "eco": "A36f", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/2p5/2P5/2NP2P1/PP2PPBP/R1BQK1NR b KQkq - 0 5", + "hash": 1344656361174636872, + "name": "English: Symmetrical, 5.d3" + }, + "A36g": { + "eco": "A36g", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/2p5/2P5/P1N3P1/1P1PPPBP/R1BQK1NR b KQkq - 0 5", + "hash": 8615912912631147740, + "name": "English: Symmetrical, 5.a3" + }, + "A36h": { + "eco": "A36h", + "fen": "r1bqk1nr/pp1p1pbp/2n1p1p1/2p5/2P5/P1N3P1/1P1PPPBP/R1BQK1NR w KQkq - 0 6", + "hash": 136846402691415182, + "name": "English: Symmetrical, 5.a3 e6" + }, + "A36i": { + "eco": "A36i", + "fen": "r1bqk1nr/pp2ppbp/2np2p1/2p5/2P5/P1N3P1/1P1PPPBP/R1BQK1NR w KQkq - 0 6", + "hash": 5632676318843561393, + "name": "English: Symmetrical, 5.a3 d6" + }, + "A36j": { + "eco": "A36j", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/2p5/2P5/1PN3P1/P2PPPBP/R1BQK1NR b KQkq - 0 5", + "hash": 3507053241547704817, + "name": "English: Symmetrical, 5.b3" + }, + "A36k": { + "eco": "A36k", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/2p5/2P5/2N1P1P1/PP1P1PBP/R1BQK1NR b KQkq - 0 5", + "hash": 1234176175988255288, + "name": "English: Symmetrical, 5.e3" + }, + "A36l": { + "eco": "A36l", + "fen": "r1bqk1nr/pp1p1pbp/2n3p1/2p1p3/2P5/2N1P1P1/PP1P1PBP/R1BQK1NR w KQkq e6 0 6", + "hash": 11193878275596374542, + "name": "English: Symmetrical, 5.e3 e5 (Botvinnik Reversed)" + }, + "A36m": { + "eco": "A36m", + "fen": "r1bqk1nr/pp1p1pbp/2n1p1p1/2p5/2P5/2N1P1P1/PP1P1PBP/R1BQK1NR w KQkq - 0 6", + "hash": 7446524414476499562, + "name": "English: Symmetrical, 5.e3 e6" + }, + "A36n": { + "eco": "A36n", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/2p5/2P1P3/2N3P1/PP1P1PBP/R1BQK1NR b KQkq e3 0 5", + "hash": 8649975948799156118, + "name": "English: Symmetrical, Botvinnik System" + }, + "A36o": { + "eco": "A36o", + "fen": "r1bqk2r/pp1pppbp/2n2np1/2p5/2P1P3/2N3P1/PP1P1PBP/R1BQK1NR w KQkq - 1 6", + "hash": 2586429297365540352, + "name": "English: Symmetrical, Botvinnik, 5...Nf6" + }, + "A36p": { + "eco": "A36p", + "fen": "r1bqk1nr/pp1p1pbp/2n1p1p1/2p5/2P1P3/2N3P1/PP1P1PBP/R1BQK1NR w KQkq - 0 6", + "hash": 1044009907121688516, + "name": "English: Symmetrical, Botvinnik, 5...e6" + }, + "A36q": { + "eco": "A36q", + "fen": "r1bq1rk1/pp1pnpbp/2n1p1p1/2p5/2P1P3/2NP2P1/PP2NPBP/R1BQ1RK1 b - - 0 8", + "hash": 18369922703162474664, + "name": "English: Symmetrical, Botvinnik, 5...e6, 8.d3" + }, + "A36r": { + "eco": "A36r", + "fen": "r1bq1rk1/pp2npbp/2npp1p1/2p5/2P1P3/2NP2P1/PP2NPBP/R1BQ1RK1 w - - 0 9", + "hash": 14363533092383771077, + "name": "English: Symmetrical, Botvinnik, 5...e6, 8.d3 d6" + }, + "A36s": { + "eco": "A36s", + "fen": "r1bqk1nr/pp2ppbp/2np2p1/2p5/2P1P3/2N3P1/PP1P1PBP/R1BQK1NR w KQkq - 0 6", + "hash": 4733412033454724859, + "name": "English: Symmetrical, Botvinnik, 5...d6" + }, + "A36t": { + "eco": "A36t", + "fen": "r1bqk1nr/pp2ppbp/2np2p1/2p5/2P1P3/2N3P1/PP1PNPBP/R1BQK2R b KQkq - 1 6", + "hash": 6130699700309580549, + "name": "English: Symmetrical, Botvinnik, 5...d6 6.Nge2" + }, + "A36u": { + "eco": "A36u", + "fen": "r1bqk2r/pp2ppbp/2np1np1/2p5/2P1P3/2N3P1/PP1PNPBP/R1BQK2R w KQkq - 2 7", + "hash": 1079362050304613011, + "name": "English: Symmetrical, Botvinnik, 5...d6 6.Nge2 Nf6" + }, + "A36v": { + "eco": "A36v", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/2p5/2P1P3/2N3P1/PP1PNPBP/R1BQ1RK1 w - - 4 8", + "hash": 8802070599881697384, + "name": "English: Symmetrical, Botvinnik System, 5...d6, 7.O-O O-O" + }, + "A36w": { + "eco": "A36w", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/2p5/2P1P3/2NP2P1/PP2NPBP/R1BQ1RK1 b - - 0 8", + "hash": 15313363834191418300, + "name": "English: Symmetrical, Botvinnik System, 5...d6, 8.d3" + }, + "A36x": { + "eco": "A36x", + "fen": "1rbq1rk1/pp2ppbp/2np1np1/2p5/2P1P3/2NP2P1/PP2NPBP/R1BQ1RK1 w - - 1 9", + "hash": 5485477419478787286, + "name": "English: Symmetrical, Botvinnik System, 5...d6, 8.d3 Rb8" + }, + "A36y": { + "eco": "A36y", + "fen": "r1bqnrk1/pp2ppbp/2np2p1/2p5/2P1P3/2NP2P1/PP2NPBP/R1BQ1RK1 w - - 1 9", + "hash": 18288612641921460481, + "name": "English: Symmetrical, Botvinnik System, 5...d6, 8.d3 Ne8" + }, + "A36z": { + "eco": "A36z", + "fen": "r1bq1rk1/1p2ppbp/p1np1np1/2p5/2P1P3/2NP2P1/PP2NPBP/R1BQ1RK1 w - - 0 9", + "hash": 465012835876596576, + "name": "English: Symmetrical, Botvinnik System, 5...d6, 8.d3 a6" + }, + "A37a": { + "eco": "A37a", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/2p5/2P5/2N2NP1/PP1PPPBP/R1BQK2R b KQkq - 3 5", + "hash": 7451490310770541473, + "name": "English: Symmetrical, 5.Nf3" + }, + "A37b": { + "eco": "A37b", + "fen": "r1bqk1nr/1p1pppbp/p1n3p1/2p5/2P5/2N2NP1/PP1PPPBP/R1BQK2R w KQkq - 0 6", + "hash": 13087164777965206397, + "name": "English: Symmetrical, 5.Nf3 a6" + }, + "A37c": { + "eco": "A37c", + "fen": "r1bqk2r/pp1pppbp/2n3pn/2p5/2P5/2N2NP1/PP1PPPBP/R1BQK2R w KQkq - 4 6", + "hash": 16637877096982261464, + "name": "English: Symmetrical, 5.Nf3 Nh6" + }, + "A37d": { + "eco": "A37d", + "fen": "r1bqk2r/pp1pppbp/2n3pn/2p5/2P5/2N2NP1/PP1PPPBP/R1BQ1RK1 b kq - 5 6", + "hash": 10993539741207492040, + "name": "English: Symmetrical, 5.Nf3 Nh6 6.O-O" + }, + "A37e": { + "eco": "A37e", + "fen": "r1bqk1nr/pp2ppbp/2np2p1/2p5/2P5/2N2NP1/PP1PPPBP/R1BQK2R w KQkq - 0 6", + "hash": 6832968427033201356, + "name": "English: Symmetrical, 5.Nf3 d6" + }, + "A37f": { + "eco": "A37f", + "fen": "r1bqk1nr/pp2ppbp/2np2p1/2p5/2P5/2NP1NP1/PP2PPBP/R1BQK2R b KQkq - 0 6", + "hash": 17327414030873571608, + "name": "English: Symmetrical, 5.Nf3 d6 6.d3" + }, + "A37g": { + "eco": "A37g", + "fen": "r1bqk1nr/pp2ppbp/2np2p1/2p5/2P5/2N2NP1/PP1PPPBP/R1BQ1RK1 b kq - 1 6", + "hash": 2352831328274469340, + "name": "English: Symmetrical, 5.Nf3 d6 6.O-O" + }, + "A37h": { + "eco": "A37h", + "fen": "r1bqk2r/pp2ppbp/2np2pn/2p5/2P5/2N2NP1/PP1PPPBP/R1BQ1RK1 w kq - 2 7", + "hash": 11613218027171462309, + "name": "English: Symmetrical, 5.Nf3 d6 6.O-O Nh6" + }, + "A37i": { + "eco": "A37i", + "fen": "r1bqk1nr/pp1p1pbp/2n1p1p1/2p5/2P5/2N2NP1/PP1PPPBP/R1BQK2R w KQkq - 0 6", + "hash": 1233688073164608499, + "name": "English: Symmetrical, 5.Nf3 e6" + }, + "A37j": { + "eco": "A37j", + "fen": "r1bqk1nr/pp1p1pbp/2n1p1p1/2p5/2P5/2NP1NP1/PP2PPBP/R1BQK2R b KQkq - 0 6", + "hash": 13815410956631304231, + "name": "English: Symmetrical, 5.Nf3 e6 6.d3" + }, + "A37k": { + "eco": "A37k", + "fen": "r1bqk1nr/pp1p1pbp/2n1p1p1/2p5/2P5/2N1PNP1/PP1P1PBP/R1BQK2R b KQkq - 0 6", + "hash": 13561379122831383383, + "name": "English: Symmetrical, 5.Nf3 e6 6.e3" + }, + "A37l": { + "eco": "A37l", + "fen": "r1bqk1nr/pp1p1pbp/2n1p1p1/2p5/2P5/2N2NP1/PP1PPPBP/R1BQ1RK1 b kq - 1 6", + "hash": 8028664625110124771, + "name": "English: Symmetrical, 5.Nf3 e6 6.O-O" + }, + "A37m": { + "eco": "A37m", + "fen": "r1bqk2r/pp1pnpbp/2n1p1p1/2p5/2P5/2N1PNP1/PP1P1PBP/R1BQ1RK1 b kq - 0 7", + "hash": 18161176713776139258, + "name": "English: Symmetrical, 5.Nf3 e6 6.O-O Nge7 7.e3" + }, + "A37n": { + "eco": "A37n", + "fen": "r1bqk2r/pp1pnpbp/2n1p1p1/2p5/2P5/2NP1NP1/PP2PPBP/R1BQ1RK1 b kq - 0 7", + "hash": 18410984213172336778, + "name": "English: Symmetrical, 5.Nf3 e6 6.O-O Nge7 7.d3" + }, + "A37o": { + "eco": "A37o", + "fen": "r1bq1rk1/pp1pnpbp/2n1p1p1/2p5/2P5/2NP1NP1/PP2PPBP/R1BQ1RK1 w - - 1 8", + "hash": 17665397229930664289, + "name": "English: Symmetrical, 5.Nf3 e6 6.O-O Nge7 7.d3 O-O" + }, + "A37p": { + "eco": "A37p", + "fen": "r1bq1rk1/pp1pnpbp/2n1p1p1/2p5/2P5/2NP1NP1/PP1BPPBP/R2Q1RK1 b - - 2 8", + "hash": 15899188391968684645, + "name": "English: Symmetrical, 5.Nf3 e6 6.O-O Nge7 7.d3 O-O 8.Bd2" + }, + "A37q": { + "eco": "A37q", + "fen": "r1bqk1nr/pp1p1pbp/2n3p1/2p1p3/2P5/2N2NP1/PP1PPPBP/R1BQK2R w KQkq e6 0 6", + "hash": 17082446679990057879, + "name": "English: Symmetrical, 5.Nf3 e5" + }, + "A37r": { + "eco": "A37r", + "fen": "r1bqk1nr/pp1p1pbp/2n3p1/2p1p3/2P5/P1N2NP1/1P1PPPBP/R1BQK2R b KQkq - 0 6", + "hash": 2777942077333779927, + "name": "English: Symmetrical, 5.Nf3 e5 6.a3" + }, + "A37s": { + "eco": "A37s", + "fen": "r1bqk1nr/pp1p1pbp/2n3p1/2p1p3/2P5/2NP1NP1/PP2PPBP/R1BQK2R b KQkq - 0 6", + "hash": 4879027232385466435, + "name": "English: Symmetrical, 5.Nf3 e5 6.d3" + }, + "A37t": { + "eco": "A37t", + "fen": "r1bqk2r/pp1pnpbp/2n3p1/2p1p3/2P5/2NP1NP1/PP2PPBP/R1BQK2R w KQkq - 1 7", + "hash": 9077697566543612926, + "name": "English: Symmetrical, 5.Nf3 e5 6.d3 Nge7" + }, + "A37u": { + "eco": "A37u", + "fen": "r1bqk1nr/pp1p1pbp/2n3p1/2p1p3/2P5/2N2NP1/PP1PPPBP/R1BQ1RK1 b kq - 1 6", + "hash": 10620738666611892359, + "name": "English: Symmetrical, 5.Nf3 e5 6.O-O" + }, + "A37v": { + "eco": "A37v", + "fen": "r1bqk1nr/pp3pbp/2np2p1/2p1p3/2P5/2NP1NP1/PP2PPBP/R1BQ1RK1 b kq - 0 7", + "hash": 322610177473811006, + "name": "English: Symmetrical, 5.Nf3 e5 6.O-O d6 7.d3" + }, + "A37w": { + "eco": "A37w", + "fen": "r1bqk2r/pp2npbp/2np2p1/2p1p3/2P5/P1NP1NP1/1P2PPBP/R1BQ1RK1 b kq - 0 8", + "hash": 17413635959123449795, + "name": "English: Symmetrical, 5.Nf3 e5 6.O-O d6 7.d3 Nge7 8.a3" + }, + "A37x": { + "eco": "A37x", + "fen": "r1bqk2r/pp1pnpbp/2n3p1/2p1p3/2P5/2N2NP1/PP1PPPBP/R1BQ1RK1 w kq - 2 7", + "hash": 12478292826119072570, + "name": "English: Symmetrical, 5.Nf3 e5 6.O-O Nge7" + }, + "A37y": { + "eco": "A37y", + "fen": "r1bqk2r/pp1pnpbp/2n3p1/2p1p3/2P5/2NP1NP1/PP2PPBP/R1BQ1RK1 b kq - 0 7", + "hash": 256440072653590766, + "name": "English: Symmetrical, 5.Nf3 e5 6.O-O Nge7 7.d3" + }, + "A38a": { + "eco": "A38a", + "fen": "r1bqk2r/pp1pppbp/2n2np1/2p5/2P5/2N2NP1/PP1PPPBP/R1BQK2R w KQkq - 4 6", + "hash": 4361514140196667959, + "name": "English: Symmetrical, Main Line" + }, + "A38b": { + "eco": "A38b", + "fen": "r1bqk2r/pp1pppbp/2n2np1/2p5/2PP4/2N2NP1/PP2PPBP/R1BQK2R b KQkq d3 0 6", + "hash": 17992471681390423925, + "name": "English: Symmetrical, Main Line, 6.d4" + }, + "A38c": { + "eco": "A38c", + "fen": "r1bqk2r/pp1pppbp/2n2np1/2p5/2P5/2N2NP1/PP1PPPBP/R1BQ1RK1 b kq - 5 6", + "hash": 4824003040589109543, + "name": "English: Symmetrical, Main Line, 6.O-O" + }, + "A38d": { + "eco": "A38d", + "fen": "r1bqk2r/pp2ppbp/2n2np1/2pp4/2P5/2N2NP1/PP1PPPBP/R1BQ1RK1 w kq d6 0 7", + "hash": 14382367595139667713, + "name": "English: Symmetrical, Main Line, 6.O-O d5" + }, + "A38e": { + "eco": "A38e", + "fen": "r1bqk2r/pp2ppbp/2np1np1/2p5/2P5/2N2NP1/PP1PPPBP/R1BQ1RK1 w kq - 0 7", + "hash": 8883591424177573962, + "name": "English: Symmetrical, Main Line, 6.O-O d6" + }, + "A38f": { + "eco": "A38f", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/2p5/2P5/2N2NP1/PP1PPPBP/R1BQ1RK1 w - - 6 7", + "hash": 5213656004091064524, + "name": "English: Symmetrical, Main Line, 6.O-O O-O" + }, + "A38g": { + "eco": "A38g", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/2p5/2P5/2N2NP1/PP1PPPBP/1RBQ1RK1 b - - 7 7", + "hash": 16891933048026723400, + "name": "English: Symmetrical, Main Line, 7.Rb1" + }, + "A38h": { + "eco": "A38h", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/2p5/2P5/1PN2NP1/P2PPPBP/R1BQ1RK1 b - - 0 7", + "hash": 14194432159013624737, + "name": "English: Symmetrical, Main Line, 7.b3" + }, + "A38i": { + "eco": "A38i", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/2p5/2P5/P1N2NP1/1P1PPPBP/R1BQ1RK1 b - - 0 7", + "hash": 9495437004119391884, + "name": "English: Symmetrical, Main Line, 7.a3" + }, + "A38j": { + "eco": "A38j", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/2p5/2P5/P1N2NP1/1P1PPPBP/R1BQ1RK1 w - - 0 8", + "hash": 13437623929310738401, + "name": "English: Symmetrical, Main Line, 7.a3 d6" + }, + "A38k": { + "eco": "A38k", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/2p5/2P5/2NP1NP1/PP2PPBP/R1BQ1RK1 b - - 0 7", + "hash": 16644850495914937112, + "name": "English: Symmetrical, Main Line, 7.d3" + }, + "A38l": { + "eco": "A38l", + "fen": "r1bq1rk1/1p1pppbp/p1n2np1/2p5/2P5/2NP1NP1/PP2PPBP/R1BQ1RK1 w - - 0 8", + "hash": 3749689404736566212, + "name": "English: Symmetrical, Main Line, 7.d3 a6" + }, + "A38m": { + "eco": "A38m", + "fen": "r1bq1rk1/pp2ppbp/2n2np1/2pp4/2P5/2NP1NP1/PP2PPBP/R1BQ1RK1 w - d6 0 8", + "hash": 7175431861800977726, + "name": "English: Symmetrical, Main Line, 7.d3 d5" + }, + "A38n": { + "eco": "A38n", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/2p5/2P5/2NP1NP1/PP2PPBP/R1BQ1RK1 w - - 0 8", + "hash": 16088253388365939317, + "name": "English: Symmetrical, Main Line, 7.d3 d6" + }, + "A38o": { + "eco": "A38o", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/2p5/2P5/2NP1NP1/PP2PPBP/1RBQ1RK1 b - - 1 8", + "hash": 9039399727153055473, + "name": "English: Symmetrical, Main Line, 7.d3 d6 8.Rb1" + }, + "A38p": { + "eco": "A38p", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/2p5/2P5/2NP1NP1/PP1BPPBP/R2Q1RK1 b - - 1 8", + "hash": 17782937577543149937, + "name": "English: Symmetrical, Main Line, 7.d3 d6 8.Bd2" + }, + "A38q": { + "eco": "A38q", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/2p5/2P5/P1NP1NP1/1P2PPBP/R1BQ1RK1 b - - 0 8", + "hash": 1502166056901954613, + "name": "English: Symmetrical, Main Line, 7.d3 d6 8.a3" + }, + "A38r": { + "eco": "A38r", + "fen": "r1bq1rk1/1p2ppbp/p1np1np1/2p5/2P5/P1NP1NP1/1P2PPBP/R1BQ1RK1 w - - 0 9", + "hash": 14280692188201006313, + "name": "English: Symmetrical, Main Line, 7.d3 d6 8.a3 a6" + }, + "A39a": { + "eco": "A39a", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/2p5/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 b - d3 0 7", + "hash": 10191521888709582222, + "name": "English: Symmetrical, Main Line 7.d4" + }, + "A39b": { + "eco": "A39b", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/8/2Pp4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 0 8", + "hash": 15163959816131671112, + "name": "English: Symmetrical, Main Line 7.d4" + }, + "A39c": { + "eco": "A39c", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/8/2PN4/2N3P1/PP2PPBP/R1BQ1RK1 b - - 0 8", + "hash": 13106996920086357606, + "name": "English: Symmetrical, Main Line 7.d4" + }, + "A39d": { + "eco": "A39d", + "fen": "r1b2rk1/pp1pppbp/2n2np1/q7/2PN4/2N3P1/PP2PPBP/R1BQ1RK1 w - - 1 9", + "hash": 7824719694682703849, + "name": "English: Symmetrical, Main Line 7.d4, 8...Qa5" + }, + "A39e": { + "eco": "A39e", + "fen": "r1b2rk1/pp1pppbp/1qn2np1/8/2PN4/2N3P1/PP2PPBP/R1BQ1RK1 w - - 1 9", + "hash": 8222049093361938620, + "name": "English: Symmetrical, Main Line 7.d4, 8...Qb6" + }, + "A39f": { + "eco": "A39f", + "fen": "r1bq1rk1/1p1pppbp/p1n2np1/8/2PN4/2N3P1/PP2PPBP/R1BQ1RK1 w - - 0 9", + "hash": 7427167728001228474, + "name": "English: Symmetrical, Main Line 7.d4, 8...a6" + }, + "A39g": { + "eco": "A39g", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/8/2PN4/2N3P1/PP2PPBP/R1BQ1RK1 w - - 0 9", + "hash": 10115082704033328907, + "name": "English: Symmetrical, Main Line 7.d4, 8...d6" + }, + "A39h": { + "eco": "A39h", + "fen": "r1bq1rk1/pp1pppbp/2n3p1/8/2PN2n1/2N3P1/PP2PPBP/R1BQ1RK1 w - - 1 9", + "hash": 2938092050721568522, + "name": "English: Symmetrical, Main Line 7.d4, 8...Ng4" + }, + "A39i": { + "eco": "A39i", + "fen": "r1bq1rk1/pp2ppbp/2np2p1/8/2PN2n1/2N1P1P1/PP3PBP/R1BQ1RK1 w - - 0 10", + "hash": 13569882190599141059, + "name": "English: Symmetrical, Main Line 7.d4, 8...Ng4 9.e3 d6" + }, + "A39j": { + "eco": "A39j", + "fen": "r1bq1rk1/pp1pppbp/5np1/8/2Pn4/2N3P1/PP2PPBP/R1BQ1RK1 w - - 0 9", + "hash": 1767361343445524261, + "name": "English: Symmetrical, Main Line 7.d4, 8...Nxd4" + }, + "A39k": { + "eco": "A39k", + "fen": "r1bq1rk1/pp2ppbp/3p1np1/8/2PQ4/2N3P1/PP2PPBP/R1B2RK1 w - - 0 10", + "hash": 16049994258819250240, + "name": "English: Symmetrical, Main Line 7.d4, 9...d6" + }, + "A39l": { + "eco": "A39l", + "fen": "r1bq1rk1/pp2ppbp/3p1np1/8/2P5/2N3P1/PP1QPPBP/R1B2RK1 b - - 1 10", + "hash": 7653780762778167093, + "name": "English: Symmetrical, Main Line 7.d4, 10.Qd2" + }, + "A39m": { + "eco": "A39m", + "fen": "r1bq1rk1/pp2ppbp/3p1np1/8/2P5/2NQ2P1/PP2PPBP/R1B2RK1 b - - 1 10", + "hash": 16305372946072283618, + "name": "English: Symmetrical, Main Line 7.d4, 10.Qd3" + }, + "A39n": { + "eco": "A39n", + "fen": "r2q1rk1/pp2ppbp/3p1np1/5b2/2P5/2NQ2P1/PP2PPBP/R1B2RK1 w - - 2 11", + "hash": 7012451793749811311, + "name": "English: Symmetrical, Main Line 7.d4, 10.Qd3 Bf5" + }, + "A39o": { + "eco": "A39o", + "fen": "1rbq1rk1/pp2ppbp/3p1np1/8/2P5/2NQ2P1/PP2PPBP/R1B2RK1 w - - 2 11", + "hash": 8857447619398049416, + "name": "English: Symmetrical, Main Line 7.d4, 10.Qd3 Rb8" + }, + "A39p": { + "eco": "A39p", + "fen": "r1bq1rk1/1p2ppbp/p2p1np1/8/2P5/2NQ2P1/PP2PPBP/R1B2RK1 w - - 0 11", + "hash": 3512706270472163646, + "name": "English: Symmetrical, Main Line 7.d4, 10.Qd3 a6" + }, + "A39q": { + "eco": "A39q", + "fen": "r1bq1rk1/1p2ppbp/p2p1np1/8/2P5/2NQ2P1/PP1BPPBP/R4RK1 b - - 1 11", + "hash": 1815787414579755578, + "name": "English: Symmetrical, Main Line 7.d4, 10.Qd3 a6 11.Bd2" + }, + "A39r": { + "eco": "A39r", + "fen": "1rbq1rk1/1p2ppbp/p2p1np1/8/2P5/2NQ2P1/PP1BPPBP/2R2RK1 b - - 3 12", + "hash": 1112151761407432734, + "name": "English: Symmetrical, Main Line 7.d4, 10.Qd3 a6 11.Bd2 Rb8 12.Rac1" + }, + "A40a": { + "eco": "A40a", + "fen": "rnbqkbnr/pppppppp/8/8/3P4/8/PPP1PPPP/RNBQKBNR b KQkq d3 0 1", + "hash": 9443689642921087454, + "name": "Queen's Pawn Game" + }, + "A40b": { + "eco": "A40b", + "fen": "rnbqkbnr/pp1ppppp/2p5/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq - 0 2", + "hash": 1257722956240912997, + "name": "Queen's Pawn: 1...c6" + }, + "A40c": { + "eco": "A40c", + "fen": "rnbqkbnr/p1pppppp/8/1p6/3P4/8/PPP1PPPP/RNBQKBNR w KQkq b6 0 2", + "hash": 16360121313223077091, + "name": "Queen's Pawn: Polish Defence" + }, + "A40d": { + "eco": "A40d", + "fen": "rnbqkbnr/p1pppppp/1p6/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq - 0 2", + "hash": 16746618322167752261, + "name": "Queen's Pawn: English Defence" + }, + "A40e": { + "eco": "A40e", + "fen": "rnbqkbnr/p1pp1ppp/1p2p3/8/2PP4/8/PP2PPPP/RNBQKBNR w KQkq - 0 3", + "hash": 1311565328533576976, + "name": "Queen's Pawn: English Defence, 2.c4 e6" + }, + "A40f": { + "eco": "A40f", + "fen": "rnbqkbnr/p1pp1ppp/1p2p3/8/2PP4/P7/1P2PPPP/RNBQKBNR b KQkq - 0 3", + "hash": 15685945769879851856, + "name": "Queen's Pawn: English Defence, 3.a3" + }, + "A40g": { + "eco": "A40g", + "fen": "rnbqkbnr/p1pp1ppp/1p2p3/8/2PPP3/8/PP3PPP/RNBQKBNR b KQkq e3 0 3", + "hash": 15435121249029120026, + "name": "Queen's Pawn: English Defence, 3.e4" + }, + "A40h": { + "eco": "A40h", + "fen": "rnbqkbnr/p1pp1ppp/1p2p3/8/2PP4/2N5/PP2PPPP/R1BQKBNR b KQkq - 1 3", + "hash": 16835727633870544841, + "name": "Queen's Pawn: English Defence, 3.Nc3" + }, + "A40i": { + "eco": "A40i", + "fen": "rnbqkbnr/pppp1ppp/8/4p3/3P4/8/PPP1PPPP/RNBQKBNR w KQkq e6 0 2", + "hash": 681928074798639592, + "name": "Englund Gambit" + }, + "A40j": { + "eco": "A40j", + "fen": "r1bqkbnr/pppppppp/2n5/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq - 1 2", + "hash": 2946305577838015709, + "name": "Queen's Pawn: Bogoljubow-Miles Defence" + }, + "A40k": { + "eco": "A40k", + "fen": "r1bqkbnr/pppppppp/2n5/8/2PP4/8/PP2PPPP/RNBQKBNR b KQkq c3 0 2", + "hash": 11871768393357385690, + "name": "Queen's Pawn: Bogoljubow-Miles, 2.c4" + }, + "A40l": { + "eco": "A40l", + "fen": "r1bqkbnr/pppppppp/2n5/8/3P4/5N2/PPP1PPPP/RNBQKB1R b KQkq - 2 2", + "hash": 17548150219293529568, + "name": "Queen's Pawn: Bogoljubow-Miles, 2.Nf3" + }, + "A40m": { + "eco": "A40m", + "fen": "rnbqkbnr/pppp1ppp/4p3/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq - 0 2", + "hash": 17688252038015238540, + "name": "Queen's Pawn: 1...e6" + }, + "A40n": { + "eco": "A40n", + "fen": "rnbqkbnr/pppp1ppp/4p3/8/3P4/5N2/PPP1PPPP/RNBQKB1R b KQkq - 1 2", + "hash": 3322996223029026993, + "name": "Queen's Pawn: 1...e6 2.Nf3" + }, + "A40o": { + "eco": "A40o", + "fen": "rnbqkbnr/pppp1ppp/4p3/8/2PP4/8/PP2PPPP/RNBQKBNR b KQkq c3 0 2", + "hash": 8744535441769097867, + "name": "Queen's Pawn: 1...e6 2.c4" + }, + "A40p": { + "eco": "A40p", + "fen": "rnbqk1nr/pppp1ppp/4p3/8/1bPP4/8/PP2PPPP/RNBQKBNR w KQkq - 1 3", + "hash": 12689944874628293289, + "name": "Queen's Pawn: Keres Defence" + }, + "A40q": { + "eco": "A40q", + "fen": "rnbqk1nr/pppp1ppp/4p3/8/1bPP4/8/PP1BPPPP/RN1QKBNR b KQkq - 2 3", + "hash": 11067287209641200045, + "name": "Queen's Pawn: Keres Defence, 3.Bd2" + }, + "A40r": { + "eco": "A40r", + "fen": "rnbqk1nr/1ppp1ppp/4p3/p7/1bPP4/8/PP1BPPPP/RN1QKBNR w KQkq a6 0 4", + "hash": 2273282990563870013, + "name": "Queen's Pawn: Keres Defence, 3.Bd2 a5" + }, + "A40s": { + "eco": "A40s", + "fen": "rnbqkbnr/pppppp1p/6p1/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq - 0 2", + "hash": 7690717602231305109, + "name": "Queen's Pawn: Modern" + }, + "A40t": { + "eco": "A40t", + "fen": "rnbqkbnr/pppppp1p/6p1/8/3P4/5N2/PPP1PPPP/RNBQKB1R b KQkq - 1 2", + "hash": 12816688320095527592, + "name": "Queen's Pawn: Modern" + }, + "A40u": { + "eco": "A40u", + "fen": "rnbqkbnr/pppppp1p/6p1/8/2PP4/8/PP2PPPP/RNBQKBNR b KQkq c3 0 2", + "hash": 16616441824560081042, + "name": "Queen's Pawn: Modern" + }, + "A40v": { + "eco": "A40v", + "fen": "rnbqk1nr/ppppppbp/6p1/8/2PPP3/8/PP3PPP/RNBQKBNR b KQkq e3 0 3", + "hash": 10530054964881890866, + "name": "Queen's Pawn: Modern" + }, + "A40w": { + "eco": "A40w", + "fen": "rnbqk1nr/ppppppbp/6p1/8/2PP4/5N2/PP2PPPP/RNBQKB1R b KQkq - 2 3", + "hash": 10178597561225003525, + "name": "Queen's Pawn: Modern" + }, + "A40x": { + "eco": "A40x", + "fen": "rnbqk1nr/ppppppbp/6p1/8/2PP4/2N5/PP2PPPP/R1BQKBNR b KQkq - 2 3", + "hash": 12516155207463051745, + "name": "Queen's Pawn: Modern" + }, + "A40y": { + "eco": "A40y", + "fen": "rnbqk1nr/pp1pp2p/6p1/2pP1p2/2P5/2P5/P3PPPP/R1BQKBNR w KQkq f6 0 6", + "hash": 8553990710221647837, + "name": "Queen's Pawn: Modern, Beefeater Defence" + }, + "A41a": { + "eco": "A41a", + "fen": "rnbqkbnr/ppp1pppp/3p4/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq - 0 2", + "hash": 13453430573722802355, + "name": "Neo-Old Indian" + }, + "A41b": { + "eco": "A41b", + "fen": "rnbqkbnr/ppp1pppp/3p4/6B1/3P4/8/PPP1PPPP/RN1QKBNR b KQkq - 1 2", + "hash": 9002265631808701307, + "name": "Neo-Old Indian: 2.Bg5" + }, + "A41c": { + "eco": "A41c", + "fen": "rnbqkbnr/ppp1pppp/3p4/8/3P4/6P1/PPP1PP1P/RNBQKBNR b KQkq - 0 2", + "hash": 10831883409470996619, + "name": "Neo-Old Indian: 2.g3" + }, + "A41d": { + "eco": "A41d", + "fen": "rnbqkbnr/ppp1pppp/3p4/8/3P4/5N2/PPP1PPPP/RNBQKB1R b KQkq - 1 2", + "hash": 7048347983699966350, + "name": "Neo-Old Indian: 2.Nf3" + }, + "A41e": { + "eco": "A41e", + "fen": "rnbqkbnr/ppp1pp1p/3p2p1/8/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq - 0 3", + "hash": 9828139160996244421, + "name": "Neo-Old Indian / Modern" + }, + "A41f": { + "eco": "A41f", + "fen": "rn1qkbnr/ppp1pppp/3p4/8/3P2b1/5N2/PPP1PPPP/RNBQKB1R w KQkq - 2 3", + "hash": 7134556233272653668, + "name": "Neo-Old Indian: Wade Defence" + }, + "A41g": { + "eco": "A41g", + "fen": "rn1qkbnr/ppp1pppp/3p4/8/2PP2b1/5N2/PP2PPPP/RNBQKB1R b KQkq c3 0 3", + "hash": 17230937323215805539, + "name": "Neo-Old Indian: Wade Defence, 3.c4" + }, + "A41h": { + "eco": "A41h", + "fen": "r2qkbnr/pppnpppp/3p4/8/2PP2b1/5N2/PP2PPPP/RNBQKB1R w KQkq - 1 4", + "hash": 15907819367013069231, + "name": "Neo-Old Indian: Wade Defence, 3.c4 Nd7" + }, + "A41i": { + "eco": "A41i", + "fen": "rn1qkbnr/ppp1pppp/3p4/8/2PP4/5b2/PP2PPPP/RNBQKB1R w KQkq - 0 4", + "hash": 6797520515023894035, + "name": "Neo-Old Indian: Wade Defence, 3.c4 Bxf3" + }, + "A41j": { + "eco": "A41j", + "fen": "rn1qkbnr/ppp1pppp/3p4/8/3PP1b1/5N2/PPP2PPP/RNBQKB1R b KQkq e3 0 3", + "hash": 12034748910607223406, + "name": "Neo-Old Indian: Wade Defence, 3.e4" + }, + "A41k": { + "eco": "A41k", + "fen": "rn1qkb1r/ppp1pppp/3p1n2/8/3PP1b1/5N2/PPP2PPP/RNBQKB1R w KQkq - 1 4", + "hash": 18224432351968562168, + "name": "Neo-Old Indian: Wade Defence, 3.e4 Nf6" + }, + "A41l": { + "eco": "A41l", + "fen": "rnbqkbnr/ppp1pppp/3p4/8/2PP4/8/PP2PPPP/RNBQKBNR b KQkq c3 0 2", + "hash": 3933807376954504116, + "name": "Neo-Old Indian: 2.c4" + }, + "A41m": { + "eco": "A41m", + "fen": "rnbqkbnr/ppp2ppp/3p4/4p3/2PP4/8/PP2PPPP/RNBQKBNR w KQkq e6 0 3", + "hash": 13614303320549804930, + "name": "Neo-Old Indian: 2.c4 e5" + }, + "A41n": { + "eco": "A41n", + "fen": "rnbqkbnr/ppp2ppp/3p4/3Pp3/2P5/8/PP2PPPP/RNBQKBNR b KQkq - 0 3", + "hash": 497643286101253599, + "name": "Neo-Old Indian: 2.c4 e5 3.d5" + }, + "A41o": { + "eco": "A41o", + "fen": "rnbqkbnr/ppp2ppp/3p4/4P3/2P5/8/PP2PPPP/RNBQKBNR b KQkq - 0 3", + "hash": 2338010317335788786, + "name": "Neo-Old Indian: 2.c4 e5 3.dxe5" + }, + "A41p": { + "eco": "A41p", + "fen": "rnbqkbnr/ppp2ppp/3p4/4p3/2PP4/5N2/PP2PPPP/RNBQKB1R b KQkq - 1 3", + "hash": 7461149890600282815, + "name": "Neo-Old Indian: 2.c4 e5 3.Nf3" + }, + "A41q": { + "eco": "A41q", + "fen": "rnbqkbnr/ppp1pp1p/3p2p1/8/2PP4/8/PP2PPPP/RNBQKBNR w KQkq - 0 3", + "hash": 16078945426503410175, + "name": "Neo-Old Indian: Modern" + }, + "A41r": { + "eco": "A41r", + "fen": "rnbqkbnr/ppp1pp1p/3p2p1/8/2PP4/5N2/PP2PPPP/RNBQKB1R b KQkq - 1 3", + "hash": 308231980955648194, + "name": "Neo-Old Indian: Modern, 3.Nf3" + }, + "A41s": { + "eco": "A41s", + "fen": "rnbqk1nr/ppp1ppbp/3p2p1/8/2PPP3/5N2/PP3PPP/RNBQKB1R b KQkq e3 0 4", + "hash": 8141452202494506594, + "name": "Neo-Old Indian: Modern, 3.Nf3 Bg7 4.e4" + }, + "A41t": { + "eco": "A41t", + "fen": "rnbqkbnr/ppp1pp1p/3p2p1/8/2PP4/2N5/PP2PPPP/R1BQKBNR b KQkq - 1 3", + "hash": 2645014919514301222, + "name": "Neo-Old Indian: Modern, 3.Nc3" + }, + "A41u": { + "eco": "A41u", + "fen": "rnbqk1nr/ppp1ppbp/3p2p1/8/2PP4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 3 4", + "hash": 5722995744145902001, + "name": "Neo-Old Indian: Modern, 3.Nc3 Bg7 4.Nf3" + }, + "A41v": { + "eco": "A41v", + "fen": "rn1qk1nr/ppp1ppbp/3p2p1/8/2PP2b1/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 4 5", + "hash": 5602443288870553435, + "name": "Neo-Old Indian: Modern, 3.Nc3 Bg7 4.Nf3 Bf4" + }, + "A41w": { + "eco": "A41w", + "fen": "rn1qk1nr/ppp1ppbp/3p2p1/8/2PP2b1/2N1PN2/PP3PPP/R1BQKB1R b KQkq - 0 5", + "hash": 16182175420487634943, + "name": "Neo-Old Indian: Modern, 3.Nc3 Bg7 4.Nf3 Bf4 5.e3" + }, + "A42a": { + "eco": "A42a", + "fen": "rnbqk1nr/ppp1ppbp/3p2p1/8/2PPP3/2N5/PP3PPP/R1BQKBNR b KQkq e3 0 4", + "hash": 5769053880403187078, + "name": "Modern: Averbakh" + }, + "A42b": { + "eco": "A42b", + "fen": "rnbqk1nr/ppp1p1bp/3p2p1/5p2/2PPP3/2N5/PP3PPP/R1BQKBNR w KQkq f6 0 5", + "hash": 14150500697846413400, + "name": "Modern: Averbakh, Randspringer Variation" + }, + "A42c": { + "eco": "A42c", + "fen": "rnbqk1nr/pp2ppbp/3p2p1/2p5/2PPP3/2N5/PP3PPP/R1BQKBNR w KQkq c6 0 5", + "hash": 13149976956231638779, + "name": "Modern: c4 Pterodactyl" + }, + "A42d": { + "eco": "A42d", + "fen": "rnbqk1nr/pp2ppbp/2pp2p1/8/2PPP3/2N5/PP3PPP/R1BQKBNR w KQkq - 0 5", + "hash": 14012147731431523901, + "name": "Modern: Averbakh, 4...c6" + }, + "A42e": { + "eco": "A42e", + "fen": "rnbqk1nr/pp2ppbp/2pp2p1/8/2PPP3/2N2N2/PP3PPP/R1BQKB1R b KQkq - 1 5", + "hash": 1806448028176082688, + "name": "Modern: Averbakh, 4...c6 5.Nf3" + }, + "A42f": { + "eco": "A42f", + "fen": "r1bqk1nr/pppnppbp/3p2p1/8/2PPP3/2N5/PP3PPP/R1BQKBNR w KQkq - 1 5", + "hash": 7200324165078726730, + "name": "Modern: Averbakh, 4...Nd7" + }, + "A42g": { + "eco": "A42g", + "fen": "r1bqk1nr/ppp1ppbp/2np2p1/8/2PPP3/2N5/PP3PPP/R1BQKBNR w KQkq - 1 5", + "hash": 18150090417059983493, + "name": "Modern: Averbakh, Kotov Variation" + }, + "A42h": { + "eco": "A42h", + "fen": "r1bqk1nr/ppp1ppbp/2np2p1/3P4/2P1P3/2N5/PP3PPP/R1BQKBNR b KQkq - 0 5", + "hash": 4749697000192239320, + "name": "Modern: Averbakh, Kotov, 5.d5" + }, + "A42i": { + "eco": "A42i", + "fen": "r1bqk1nr/ppp1ppbp/2np2p1/8/2PPP3/2N1B3/PP3PPP/R2QKBNR b KQkq - 2 5", + "hash": 9865883745522739979, + "name": "Modern: Averbakh, Kotov, 5.Be3" + }, + "A42j": { + "eco": "A42j", + "fen": "r1bqk1nr/ppp2pbp/2np2p1/4p3/2PPP3/2N1B3/PP3PPP/R2QKBNR w KQkq e6 0 6", + "hash": 185387230650110781, + "name": "Modern: Averbakh, Kotov, 5.Be3 e5" + }, + "A42k": { + "eco": "A42k", + "fen": "r1bqk1nr/ppp2pbp/2np2p1/3Pp3/2P1P3/2N1B3/PP3PPP/R2QKBNR b KQkq - 0 6", + "hash": 13302195033452938592, + "name": "Modern: Averbakh, Kotov, 5.Be3 e5 6.d5" + }, + "A42l": { + "eco": "A42l", + "fen": "r1bqk1nr/ppp1npbp/3p2p1/3Pp3/2P1P3/2N1B3/PP3PPP/R2QKBNR w KQkq - 1 7", + "hash": 13579139813036723825, + "name": "Modern: Averbakh, Kotov, 5.Be3 e5 6.d5 Nce7" + }, + "A42m": { + "eco": "A42m", + "fen": "r1bqk1nr/ppp1npbp/3p2p1/3Pp3/2P1P1P1/2N1B3/PP3P1P/R2QKBNR b KQkq g3 0 7", + "hash": 2251740852493673324, + "name": "Modern: Averbakh, Kotov, 5.Be3 e5 6.d5 Nce7 7.g4" + }, + "A42n": { + "eco": "A42n", + "fen": "rnbqk1nr/ppp2pbp/3p2p1/4p3/2PPP3/2N5/PP3PPP/R1BQKBNR w KQkq e6 0 5", + "hash": 15742266229020208560, + "name": "Modern: Averbakh, 4...e5" + }, + "A42o": { + "eco": "A42o", + "fen": "rnbqk1nr/ppp2pbp/3p2p1/4p3/2PPP3/2N5/PP2NPPP/R1BQKB1R b KQkq - 1 5", + "hash": 14903300077094936654, + "name": "Modern: Averbakh, 4...e5 5.Nge2" + }, + "A42p": { + "eco": "A42p", + "fen": "rnbqk1nr/ppp2pbp/3p2p1/4p3/2PPP3/2N2N2/PP3PPP/R1BQKB1R b KQkq - 1 5", + "hash": 77457625356618893, + "name": "Modern: Averbakh, 4...e5 5.Nf3" + }, + "A42q": { + "eco": "A42q", + "fen": "r1bqk1nr/pppn1pbp/3p2p1/4p3/2PPP3/2N2N2/PP3PPP/R1BQKB1R w KQkq - 2 6", + "hash": 3670526128905134401, + "name": "Modern: Averbakh, 4...e5 5.Nf3 Nd7" + }, + "A42r": { + "eco": "A42r", + "fen": "r1bqk1nr/pppn1pbp/3p2p1/4p3/2PPP3/2N2N2/PP2BPPP/R1BQK2R b KQkq - 3 6", + "hash": 4715506201910799330, + "name": "Modern: Averbakh, 4...e5 5.Nf3 Nd7 6.Be2" + }, + "A42s": { + "eco": "A42s", + "fen": "r1bqk2r/pppnnpbp/3p2p1/4p3/2PPP3/2N2N2/PP2BPPP/R1BQK2R w KQkq - 4 7", + "hash": 9169165381825388639, + "name": "Modern: Averbakh, 4...e5 5.Nf3 Nd7 6.Be2 Ne7" + }, + "A42t": { + "eco": "A42t", + "fen": "rnbqk1nr/ppp2pbp/3p2p1/3Pp3/2P1P3/2N5/PP3PPP/R1BQKBNR b KQkq - 0 5", + "hash": 6953418088792865773, + "name": "Modern: Averbakh, 4...e5 5.d5" + }, + "A42u": { + "eco": "A42u", + "fen": "r1bqk1nr/pppn1pbp/3p2p1/3Pp3/2P1P3/2N5/PP3PPP/R1BQKBNR w KQkq - 1 6", + "hash": 6024967155616765473, + "name": "Modern: Averbakh, 4...e5 5.d5 Nd7" + }, + "A42v": { + "eco": "A42v", + "fen": "rnbqk1nr/ppp2pbp/3p2p1/4P3/2P1P3/2N5/PP3PPP/R1BQKBNR b KQkq - 0 5", + "hash": 5109963765811845824, + "name": "Modern: Averbakh, 4...e5 5.dxe5" + }, + "A42w": { + "eco": "A42w", + "fen": "rnbk2nr/ppp2pbp/6p1/4p3/2P1PP2/2N5/PP4PP/R1B1KBNR b KQ f3 0 7", + "hash": 7415764964883366106, + "name": "Modern: Averbakh, Queenswap, 7.f4" + }, + "A43a": { + "eco": "A43a", + "fen": "rnbqkbnr/pp1ppppp/8/2p5/3P4/8/PPP1PPPP/RNBQKBNR w KQkq c6 0 2", + "hash": 7313678793504184995, + "name": "Old Benoni" + }, + "A43b": { + "eco": "A43b", + "fen": "rnbqkbnr/pp1ppppp/8/2P5/8/8/PPP1PPPP/RNBQKBNR b KQkq - 0 2", + "hash": 1917489781839990223, + "name": "Old Benoni: 2.dxc5" + }, + "A43c": { + "eco": "A43c", + "fen": "rnbqkbnr/pp1ppppp/8/2p5/3P4/2P5/PP2PPPP/RNBQKBNR b KQkq - 0 2", + "hash": 1415696555166389541, + "name": "Old Benoni: 2.c3" + }, + "A43d": { + "eco": "A43d", + "fen": "rnbqkbnr/pp1ppppp/8/2p5/3P4/4P3/PPP2PPP/RNBQKBNR b KQkq - 0 2", + "hash": 14434646686183739911, + "name": "Old Benoni: 2.e3" + }, + "A43e": { + "eco": "A43e", + "fen": "rnbqkbnr/pp1ppppp/8/2pP4/8/8/PPP1PPPP/RNBQKBNR b KQkq - 0 2", + "hash": 16102386612620053758, + "name": "Old Benoni: 2.d5" + }, + "A43f": { + "eco": "A43f", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2pP4/8/8/PPP1PPPP/RNBQKBNR w KQkq - 0 3", + "hash": 12177972529630796972, + "name": "Old Benoni: 2.d5 e6" + }, + "A43g": { + "eco": "A43g", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2pP4/4P3/8/PPP2PPP/RNBQKBNR b KQkq e3 0 3", + "hash": 7856481405824098726, + "name": "Old Benoni: Franco-Benoni" + }, + "A43h": { + "eco": "A43h", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2pP4/2P5/8/PP2PPPP/RNBQKBNR b KQkq c3 0 3", + "hash": 2676059956923627435, + "name": "Old Benoni: 2.d5 e6 3.c4" + }, + "A43i": { + "eco": "A43i", + "fen": "rnbqkbnr/pp3ppp/3p4/2pP4/8/2N5/PP2PPPP/R1BQKBNR b KQkq - 1 5", + "hash": 15433988276543121609, + "name": "Old Benoni: 2.d5 e6 3.c4" + }, + "A43j": { + "eco": "A43j", + "fen": "rnbqkbnr/pp1pp1pp/8/2pP1p2/8/8/PPP1PPPP/RNBQKBNR w KQkq f6 0 3", + "hash": 5411160537556934944, + "name": "Old Benoni: Clarendon Court Defence" + }, + "A43k": { + "eco": "A43k", + "fen": "rnbqkb1r/pp1ppppp/5n2/2pP4/8/8/PPP1PPPP/RNBQKBNR w KQkq - 1 3", + "hash": 9554702971602931048, + "name": "Old Benoni: 2.d5 Nf6" + }, + "A43l": { + "eco": "A43l", + "fen": "rnbqkb1r/pp1ppppp/5n2/2pP4/8/5N2/PPP1PPPP/RNBQKB1R b KQkq - 2 3", + "hash": 6916952113207929941, + "name": "Old Benoni: 2.d5 Nf6 3.Nf3" + }, + "A43m": { + "eco": "A43m", + "fen": "rnbqkb1r/pp1ppp1p/5np1/2pP4/8/5N2/PPP1PPPP/RNBQKB1R w KQkq - 0 4", + "hash": 13135205812599979550, + "name": "Old Benoni: 2.d5 Nf6 3.Nf3 g6" + }, + "A43n": { + "eco": "A43n", + "fen": "rnbqkb1r/p2ppppp/5n2/1ppP4/8/5N2/PPP1PPPP/RNBQKB1R w KQkq b6 0 4", + "hash": 4609884302187483496, + "name": "Old Benoni: Neo-Benko" + }, + "A43o": { + "eco": "A43o", + "fen": "rnbqkb1r/p2ppppp/5n2/1ppP2B1/8/5N2/PPP1PPPP/RN1QKB1R b KQkq - 1 4", + "hash": 17988448315183860384, + "name": "Old Benoni: Neo-Benko, 4.Bg5" + }, + "A43p": { + "eco": "A43p", + "fen": "rnbqkb1r/p3pppp/3p1n2/1ppP2B1/8/5N2/PPP1PPPP/RN1QKB1R w KQkq - 0 5", + "hash": 13842191748421010381, + "name": "Old Benoni: Neo-Benko, 4.Bg5 d6" + }, + "A43q": { + "eco": "A43q", + "fen": "rnbqkb1r/p2ppppp/8/1ppP2B1/4n3/5N2/PPP1PPPP/RN1QKB1R w KQkq - 2 5", + "hash": 14099507026745591642, + "name": "Old Benoni: Neo-Benko, 4.Bg5 Ne4" + }, + "A43r": { + "eco": "A43r", + "fen": "rnbqkb1r/pp1ppppp/5n2/3P4/2p5/5N2/PPP1PPPP/RNBQKB1R w KQkq - 0 4", + "hash": 9791469005209978584, + "name": "Old Benoni: Hawk" + }, + "A43s": { + "eco": "A43s", + "fen": "rnbqkbnr/pp2pppp/3p4/2pP4/8/8/PPP1PPPP/RNBQKBNR w KQkq - 0 3", + "hash": 16631157007222637971, + "name": "Old Benoni: Schmidt" + }, + "A43t": { + "eco": "A43t", + "fen": "rnbqkbnr/pp2pp1p/3p2p1/2pP4/4P3/8/PPP2PPP/RNBQKBNR w KQkq - 0 4", + "hash": 14663407288489749202, + "name": "Old Benoni: Schmidt, 3.e4 g6" + }, + "A43u": { + "eco": "A43u", + "fen": "rnbqkb1r/pp2pppp/3p1n2/2pP4/4P3/8/PPP2PPP/RNBQKBNR w KQkq - 1 4", + "hash": 8729247748760271119, + "name": "Old Benoni: Schmidt, 3.e4 Nf6" + }, + "A43v": { + "eco": "A43v", + "fen": "rnbqk2r/pp2ppbp/3p1np1/2pP4/4P3/2N2N1P/PPP2PP1/R1BQKB1R b KQkq - 0 6", + "hash": 16729961756689206008, + "name": "Old Benoni: Schmidt, 6.h3" + }, + "A43w": { + "eco": "A43w", + "fen": "rnbqk2r/pp2ppbp/3p1np1/1BpP4/4P3/2N2N2/PPP2PPP/R1BQK2R b KQkq - 3 6", + "hash": 3675446944175739017, + "name": "Old Benoni: Schmidt, 6.Bb5+" + }, + "A43x": { + "eco": "A43x", + "fen": "rnbqk2r/pp2ppbp/3p1np1/2pP4/4P3/2N2N2/PPP1BPPP/R1BQK2R b KQkq - 3 6", + "hash": 8313536970451192233, + "name": "Old Benoni: Schmidt, 6.Be2" + }, + "A43y": { + "eco": "A43y", + "fen": "r1bq1rk1/pp2ppbp/n2p1np1/2pP4/4P3/2N2N2/PPP1BPPP/R1BQ1RK1 w - - 6 8", + "hash": 5260944065268525038, + "name": "Old Benoni: Schmidt, 6.Be2 O-O 7.O-O Na6" + }, + "A43z": { + "eco": "A43z", + "fen": "r1bq1rk1/pp2ppbp/n2p1np1/2pP4/4P3/2N2N1P/PPP1BPP1/R1BQ1RK1 b - - 0 8", + "hash": 11669246090471042588, + "name": "Old Benoni: Schmidt, 6.Be2 O-O 7.O-O Na6 8.h3" + }, + "A44a": { + "eco": "A44a", + "fen": "rnbqkbnr/pp1p1ppp/8/2pPp3/8/8/PPP1PPPP/RNBQKBNR w KQkq e6 0 3", + "hash": 11114434025341711937, + "name": "Old Benoni: Czech" + }, + "A44b": { + "eco": "A44b", + "fen": "rnbqkbnr/pp1p1ppp/4P3/2p5/8/8/PPP1PPPP/RNBQKBNR b KQkq - 0 3", + "hash": 17320706915067141932, + "name": "Old Benoni: Czech, 3.dxe6" + }, + "A44c": { + "eco": "A44c", + "fen": "rnbqkbnr/pp1p1ppp/8/2pPp3/2P5/8/PP2PPPP/RNBQKBNR b KQkq c3 0 3", + "hash": 15649089658108977103, + "name": "Old Benoni: Czech, 3.c4" + }, + "A44d": { + "eco": "A44d", + "fen": "rnbqkbnr/pp3ppp/3p4/2pPp3/2P5/8/PP2PPPP/RNBQKBNR w KQkq - 0 4", + "hash": 16183168767040902818, + "name": "Old Benoni: Czech, 3.c4 d6" + }, + "A44e": { + "eco": "A44e", + "fen": "rnbqkbnr/pp3ppp/3p4/2pPp3/2P1P3/8/PP3PPP/RNBQKBNR b KQkq e3 0 4", + "hash": 2634930174586252200, + "name": "Old Benoni: Czech, 3.c4 d6 4.e4" + }, + "A44f": { + "eco": "A44f", + "fen": "rnbqk1nr/pp2bppp/3p4/2pPp3/2P1P3/8/PP3PPP/RNBQKBNR w KQkq - 1 5", + "hash": 3485035038884513593, + "name": "Old Benoni: Czech, 3.c4 d6 4.e4 Be7" + }, + "A44g": { + "eco": "A44g", + "fen": "rnbqk1nr/pp2bppp/3p4/2pPp3/2P1P3/2N5/PP3PPP/R1BQKBNR b KQkq - 2 5", + "hash": 14684633396385334752, + "name": "Old Benoni: Czech, 3.c4 d6 4.e4 Be7 5.Nc3" + }, + "A44h": { + "eco": "A44h", + "fen": "rnbqkbnr/pp3p1p/3p2p1/2pPp3/2P1P3/8/PP3PPP/RNBQKBNR w KQkq - 0 5", + "hash": 14782349255832271331, + "name": "Old Benoni: Czech, 3.c4 d6 4.e4 g6" + }, + "A44i": { + "eco": "A44i", + "fen": "rnbqk1nr/pp3pbp/3p2p1/2pPp3/2P1P3/2N5/PP3PPP/R1BQKBNR w KQkq - 2 6", + "hash": 9659747619529896080, + "name": "Old Benoni: Czech, 3.c4 d6 4.e4 g6 5.Nc3 Bg7" + }, + "A44j": { + "eco": "A44j", + "fen": "rnbqk1nr/pp3pbp/3p2p1/2pPp3/2P1P3/2N2N2/PP3PPP/R1BQKB1R b KQkq - 3 6", + "hash": 6731401163698557357, + "name": "Old Benoni: Czech, 3.c4 d6 4.e4 g6 5.Nc3 Bg7 6.Nf3" + }, + "A44k": { + "eco": "A44k", + "fen": "rnbqk1nr/pp3pbp/3p2p1/2pPp3/2P1P3/2NB4/PP3PPP/R1BQK1NR b KQkq - 3 6", + "hash": 15205261637356483299, + "name": "Old Benoni: Czech, 3.c4 d6 4.e4 g6 5.Nc3 Bg7 6.Bd3" + }, + "A44l": { + "eco": "A44l", + "fen": "rnbqkbnr/pp1p1ppp/8/2pPp3/4P3/8/PPP2PPP/RNBQKBNR b KQkq e3 0 3", + "hash": 10450653843986057666, + "name": "Old Benoni: Czech, 3.e4" + }, + "A44m": { + "eco": "A44m", + "fen": "rnbqkbnr/pp3ppp/3p4/2pPp3/4P3/8/PPP2PPP/RNBQKBNR w KQkq - 0 4", + "hash": 12155980846752612527, + "name": "Old Benoni: Czech, 3.e4 d6" + }, + "A44n": { + "eco": "A44n", + "fen": "rnbqkbnr/pp3ppp/3p4/2pPp3/4P3/5N2/PPP2PPP/RNBQKB1R b KQkq - 1 4", + "hash": 8346952257404805522, + "name": "Old Benoni: Czech, 3.e4 d6 4.Nf3" + }, + "A44o": { + "eco": "A44o", + "fen": "rnbqkbnr/pp3ppp/3p4/1BpPp3/4P3/8/PPP2PPP/RNBQK1NR b KQkq - 1 4", + "hash": 11199442387656037164, + "name": "Old Benoni: Czech, 3.e4 d6 4.Bb5+" + }, + "A44p": { + "eco": "A44p", + "fen": "rnbqkbnr/pp3ppp/3p4/2pPp3/4P3/3B4/PPP2PPP/RNBQK1NR b KQkq - 1 4", + "hash": 18284361113894421212, + "name": "Old Benoni: Czech, 3.e4 d6 4.Bd3" + }, + "A44q": { + "eco": "A44q", + "fen": "rnbqkbnr/pp3ppp/3p4/2pPp3/4P3/2N5/PPP2PPP/R1BQKBNR b KQkq - 1 4", + "hash": 5991371411196134006, + "name": "Old Benoni: Czech, 3.e4 d6 4.Nc3" + }, + "A44r": { + "eco": "A44r", + "fen": "rnbqkb1r/pp3ppp/3p1n2/2pPp3/4P3/2N5/PPP2PPP/R1BQKBNR w KQkq - 2 5", + "hash": 633763431333004256, + "name": "Old Benoni: Czech, 3.e4 d6 4.Nc3 Nf6" + }, + "A44s": { + "eco": "A44s", + "fen": "rnbqkbnr/pp3p1p/3p2p1/2pPp3/4P3/2N5/PPP2PPP/R1BQKBNR w KQkq - 0 5", + "hash": 13443794460748632125, + "name": "Old Benoni: Czech, 3.e4 d6 4.Nc3 g6" + }, + "A44t": { + "eco": "A44t", + "fen": "rnbqkbnr/1p3ppp/p2p4/2pPp3/4P3/2N5/PPP2PPP/R1BQKBNR w KQkq - 0 5", + "hash": 9354628977322769066, + "name": "Old Benoni: Czech, 3.e4 d6 4.Nc3 a6" + }, + "A44u": { + "eco": "A44u", + "fen": "rnbqk1nr/1p2bppp/p2p4/2pPp3/P3P3/2N5/1PP2PPP/R1BQKBNR w KQkq - 1 6", + "hash": 18363247703101424629, + "name": "Old Benoni: Czech, 3.e4 d6 4.Nc3 a6 5.a4 Be7" + }, + "A44v": { + "eco": "A44v", + "fen": "rnbqk1nr/pp2bppp/3p4/2pPp3/4P3/2N5/PPP2PPP/R1BQKBNR w KQkq - 2 5", + "hash": 5181905263110483687, + "name": "Old Benoni: Czech, 3.e4 d6 4.Nc3 Be7" + }, + "A44w": { + "eco": "A44w", + "fen": "rnbqk1nr/pp2bppp/3p4/1BpPp3/4P3/2N5/PPP2PPP/R1BQK1NR b KQkq - 3 5", + "hash": 8374165118706646372, + "name": "Old Benoni: Czech, 3.e4 d6 4.Nc3 Be7 5.Bb5+" + }, + "A44x": { + "eco": "A44x", + "fen": "rnbqk1nr/pp2bppp/3p4/2pPp3/4P3/2N2N2/PPP2PPP/R1BQKB1R b KQkq - 3 5", + "hash": 11280742562283589594, + "name": "Old Benoni: Czech, 3.e4 d6 4.Nc3 Be7 5.Nf3" + }, + "A44y": { + "eco": "A44y", + "fen": "rn1qk1nr/pp2bppp/3p4/2pPp3/4P1b1/2N2N2/PPP2PPP/R1BQKB1R w KQkq - 4 6", + "hash": 11411828598782165296, + "name": "Old Benoni: Czech, 3.e4 d6 4.Nc3 Be7 5.Nf3 Bg4" + }, + "A45a": { + "eco": "A45a", + "fen": "rnbqkb1r/pppppppp/5n2/8/3P4/8/PPP1PPPP/RNBQKBNR w KQkq - 1 2", + "hash": 15627646045920596040, + "name": "Queen's Pawn: Indian" + }, + "A45b": { + "eco": "A45b", + "fen": "rnbqkb1r/pppppppp/5n2/8/3P1P2/8/PPP1P1PP/RNBQKBNR b KQkq f3 0 2", + "hash": 2735638027298909633, + "name": "Indian: Canard Opening" + }, + "A45c": { + "eco": "A45c", + "fen": "rnbqkb1r/pppppppp/5n2/8/3P4/8/PPPNPPPP/R1BQKBNR b KQkq - 2 2", + "hash": 9335457511427225720, + "name": "Indian: 2.Nd2" + }, + "A45d": { + "eco": "A45d", + "fen": "rnbqkb1r/pppppppp/5n2/8/3P4/4P3/PPP2PPP/RNBQKBNR b KQkq - 0 2", + "hash": 8488669526236141804, + "name": "Indian: 2.e3" + }, + "A45e": { + "eco": "A45e", + "fen": "rnbqkb1r/pppppppp/5n2/8/3P4/2P5/PP2PPPP/RNBQKBNR b KQkq - 0 2", + "hash": 12554476513947459534, + "name": "Indian: 2.c3" + }, + "A45f": { + "eco": "A45f", + "fen": "rnbqkb1r/pppppppp/5n2/8/3P4/2N5/PPP1PPPP/R1BQKBNR b KQkq - 2 2", + "hash": 2555676126085124753, + "name": "Indian: 2.Nc3" + }, + "A45g": { + "eco": "A45g", + "fen": "rnbqkb1r/pppppppp/5n2/8/3P1B2/8/PPP1PPPP/RN1QKBNR b KQkq - 2 2", + "hash": 266956776937781803, + "name": "Indian: 2.Bf4" + }, + "A45h": { + "eco": "A45h", + "fen": "rnbqkb1r/pppppppp/5n2/8/3P4/6P1/PPP1PP1P/RNBQKBNR b KQkq - 0 2", + "hash": 17583801195761584240, + "name": "Indian: 2.g3" + }, + "A45i": { + "eco": "A45i", + "fen": "rnbqkb1r/pp1ppppp/5n2/2p5/3P4/6P1/PPP1PP1P/RNBQKBNR w KQkq c6 0 3", + "hash": 1330786926691762957, + "name": "Indian: 2.g3 c5" + }, + "A45j": { + "eco": "A45j", + "fen": "rnbqkb1r/pppppppp/5n2/6B1/3P4/8/PPP1PPPP/RN1QKBNR b KQkq - 2 2", + "hash": 2214322346111028096, + "name": "Trompowsky Opening" + }, + "A45k": { + "eco": "A45k", + "fen": "rnbqkb1r/pppppp1p/5np1/6B1/3P4/8/PPP1PPPP/RN1QKBNR w KQkq - 0 3", + "hash": 17802317192162171339, + "name": "Trompowsky 2...g6" + }, + "A45l": { + "eco": "A45l", + "fen": "rnbqkb1r/pppp1p1p/5pp1/8/3P4/4P3/PPP2PPP/RN1QKBNR b KQkq - 0 4", + "hash": 5653673052685366433, + "name": "Trompowsky 2...g6 3.Bxf6 exf6 4.e3" + }, + "A45m": { + "eco": "A45m", + "fen": "rnbqkb1r/pppp1ppp/4pn2/6B1/3P4/8/PPP1PPPP/RN1QKBNR w KQkq - 0 3", + "hash": 7551736405547473874, + "name": "Trompowsky: 2...e6" + }, + "A45n": { + "eco": "A45n", + "fen": "rnbqkb1r/pppp1ppp/4pn2/6B1/3PP3/8/PPP2PPP/RN1QKBNR b KQkq e3 0 3", + "hash": 12450804840027285208, + "name": "Trompowsky: 2...e6 3.e4" + }, + "A45o": { + "eco": "A45o", + "fen": "rnb1kb1r/pppp1pp1/4pq1p/8/3PP3/2N5/PPP2PPP/R2QKBNR b KQkq - 1 5", + "hash": 7938788449725956980, + "name": "Trompowsky: 2...e6 3.e4 h6 4.Bxf6 Qxf6 5.Nc3" + }, + "A45p": { + "eco": "A45p", + "fen": "rnbqkb1r/pp1ppppp/5n2/2p3B1/3P4/8/PPP1PPPP/RN1QKBNR w KQkq c6 0 3", + "hash": 17927435797933277437, + "name": "Trompowsky: 2...c5" + }, + "A45q": { + "eco": "A45q", + "fen": "rnbqkb1r/pp1ppppp/5B2/2p5/3P4/8/PPP1PPPP/RN1QKBNR b KQkq - 0 3", + "hash": 6770038400045096477, + "name": "Trompowsky: 2...c5 3.Bxf6" + }, + "A45r": { + "eco": "A45r", + "fen": "rnb1kb1r/pp1ppp1p/1q3p2/2pP4/8/8/PPP1PPPP/RN1QKBNR w KQkq - 1 5", + "hash": 14798592860506242931, + "name": "Trompowsky: 2...c5 3.Bxf6 gxf6 4.d5 Qb6" + }, + "A45s": { + "eco": "A45s", + "fen": "rnbqkb1r/pppppppp/8/6B1/3Pn3/8/PPP1PPPP/RN1QKBNR w KQkq - 3 3", + "hash": 2644341882991265402, + "name": "Trompowsky: 2...Ne4" + }, + "A45t": { + "eco": "A45t", + "fen": "rnbqkb1r/pppppppp/8/8/3Pn2B/8/PPP1PPPP/RN1QKBNR b KQkq - 4 3", + "hash": 9096706293126653153, + "name": "Trompowsky: 2...Ne4 3.Bh4" + }, + "A45u": { + "eco": "A45u", + "fen": "rnbqkb1r/pppppppp/8/8/3PnB2/8/PPP1PPPP/RN1QKBNR b KQkq - 4 3", + "hash": 13936954140823155416, + "name": "Trompowsky: 2...Ne4 3.Bf4" + }, + "A45v": { + "eco": "A45v", + "fen": "rnbqkb1r/ppp1pppp/8/3p4/3PnB2/5P2/PPP1P1PP/RN1QKBNR b KQkq - 0 4", + "hash": 3076457543698142095, + "name": "Trompowsky: 2...Ne4 3.Bf4 d5 4.f3" + }, + "A45w": { + "eco": "A45w", + "fen": "rnbqkb1r/ppp1pppp/8/3p4/3PnB2/4P3/PPP2PPP/RN1QKBNR b KQkq - 0 4", + "hash": 16802192805008487514, + "name": "Trompowsky: 2...Ne4 3.Bf4 d5 4.e3" + }, + "A45x": { + "eco": "A45x", + "fen": "rnbqkb1r/pp1ppppp/8/2p5/3PnB2/8/PPP1PPPP/RN1QKBNR w KQkq c6 0 4", + "hash": 2818075093222783397, + "name": "Trompowsky: 2...Ne4 3.Bf4 c5" + }, + "A45y": { + "eco": "A45y", + "fen": "rnbqkb1r/pp1ppppp/8/2p5/3PnB2/5P2/PPP1P1PP/RN1QKBNR b KQkq - 0 4", + "hash": 5308114950191945428, + "name": "Trompowsky: 2...Ne4 3.Bf4 c5 4.f3" + }, + "A45z": { + "eco": "A45z", + "fen": "rnb1kb1r/pp1ppppp/5n2/q1p5/3P1B2/2P2P2/PP1NP1PP/R2QKBNR b KQkq - 2 6", + "hash": 9612281746961177879, + "name": "Trompowsky: 2...Ne4 3.Bf4 c5 4.f3 Qa5+ 5.c3 Nf6 6.Nd2" + }, + "A46a": { + "eco": "A46a", + "fen": "rnbqkb1r/pppppppp/5n2/8/3P4/5N2/PPP1PPPP/RNBQKB1R b KQkq - 2 2", + "hash": 253434895135994229, + "name": "Indian: 2.Nf3" + }, + "A46b": { + "eco": "A46b", + "fen": "rnbqkb1r/p1pppppp/5n2/1p6/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq b6 0 3", + "hash": 7169743407284833352, + "name": "Indian: 2.Nf3 b5" + }, + "A46c": { + "eco": "A46c", + "fen": "rnbqkb1r/pp1ppppp/5n2/2p5/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq c6 0 3", + "hash": 16570344052193753608, + "name": "Neo-Benoni" + }, + "A46d": { + "eco": "A46d", + "fen": "rnbqkb1r/pp1ppppp/5n2/2p5/3P4/2P2N2/PP2PPPP/RNBQKB1R b KQkq - 0 3", + "hash": 10605775396122391950, + "name": "Neo-Benoni: 3.c3" + }, + "A46e": { + "eco": "A46e", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/2p5/3P4/2P2N2/PP2PPPP/RNBQKB1R w KQkq - 0 4", + "hash": 16526164127598601692, + "name": "Neo-Benoni: 3.c3 e6" + }, + "A46f": { + "eco": "A46f", + "fen": "rnbqkb1r/pp1ppppp/5n2/2p5/3P4/5NP1/PPP1PP1P/RNBQKB1R b KQkq - 0 3", + "hash": 14488936928257516080, + "name": "Neo-Benoni: 3.g3" + }, + "A46g": { + "eco": "A46g", + "fen": "rnbqkb1r/ppp1pppp/3p1n2/8/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq - 0 3", + "hash": 4197064375753553944, + "name": "Indian: 2.Nf3 d6" + }, + "A46h": { + "eco": "A46h", + "fen": "rnbqkb1r/ppp1pppp/3p1n2/8/3P4/5NP1/PPP1PP1P/RNBQKB1R b KQkq - 0 3", + "hash": 1646149853499842592, + "name": "Indian: 2.Nf3 d6 3.g3" + }, + "A46i": { + "eco": "A46i", + "fen": "rnbqkb1r/ppp1pppp/3p1n2/6B1/3P4/5N2/PPP1PPPP/RN1QKB1R b KQkq - 1 3", + "hash": 18186838107628135376, + "name": "Indian: 2.Nf3 d6 3.Bg5" + }, + "A46j": { + "eco": "A46j", + "fen": "rnbqkb1r/pppp1ppp/4pn2/8/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq - 0 3", + "hash": 8499299103407497511, + "name": "Indian: 2.Nf3 e6" + }, + "A46k": { + "eco": "A46k", + "fen": "rnbqkb1r/pppp1ppp/4pn2/8/3P4/4PN2/PPP2PPP/RNBQKB1R b KQkq - 0 3", + "hash": 15627157773965977987, + "name": "Indian: 1.d4 Nf6 2.Nf3 e6 3.e3" + }, + "A46l": { + "eco": "A46l", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/2p5/3P4/3BPN2/PPP2PPP/RNBQK2R b KQkq - 1 4", + "hash": 7755938796901638285, + "name": "Indian: 1.d4 Nf6 2.Nf3 e6 3.e3 c5 4.Bd3" + }, + "A46m": { + "eco": "A46m", + "fen": "rnbqkb1r/pppp1ppp/4pn2/8/3P4/5NP1/PPP1PP1P/RNBQKB1R b KQkq - 0 3", + "hash": 6419081654265035039, + "name": "Indian: 1.d4 Nf6 2.Nf3 e6 3.g3" + }, + "A46n": { + "eco": "A46n", + "fen": "rn1qkb1r/pbpp1ppp/4pn2/1p6/3P4/5NP1/PPP1PPBP/RNBQ1RK1 b kq - 3 5", + "hash": 4757017377534683344, + "name": "Indian: 1.d4 Nf6 2.Nf3 e6 3.g3 b5 4.Bg2 Bb7 5.O-O" + }, + "A46o": { + "eco": "A46o", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/2p5/3P4/5NP1/PPP1PP1P/RNBQKB1R w KQkq c6 0 4", + "hash": 13791422217373266530, + "name": "Indian: 1.d4 Nf6 2.Nf3 e6 3.g3 c5" + }, + "A46p": { + "eco": "A46p", + "fen": "rnbqkb1r/pppp1ppp/4pn2/8/3P1B2/5N2/PPP1PPPP/RN1QKB1R b KQkq - 1 3", + "hash": 12585156331990059844, + "name": "Indian: London System" + }, + "A46q": { + "eco": "A46q", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/2p5/3P1B2/2P2N2/PP2PPPP/RN1QKB1R b KQkq - 0 4", + "hash": 4471049923180203967, + "name": "Indian: London, 3...c5 4.c3" + }, + "A46r": { + "eco": "A46r", + "fen": "rnbqkb1r/pppp1ppp/4pn2/6B1/3P4/5N2/PPP1PPPP/RN1QKB1R b KQkq - 1 3", + "hash": 12946094891610192623, + "name": "Torre Attack" + }, + "A46s": { + "eco": "A46s", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/2p3B1/3P4/5N2/PPP1PPPP/RN1QKB1R w KQkq c6 0 4", + "hash": 6185717283527831954, + "name": "Torre Attack: 3...c5" + }, + "A46t": { + "eco": "A46t", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/2p3B1/3P4/2P2N2/PP2PPPP/RN1QKB1R b KQkq - 0 4", + "hash": 2522839876464524820, + "name": "Torre Attack: 3...c5 4.c3" + }, + "A46u": { + "eco": "A46u", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/2p3B1/3P4/4PN2/PPP2PPP/RN1QKB1R b KQkq - 0 4", + "hash": 17939341081341868342, + "name": "Torre Attack: 3...c5 4.e3" + }, + "A46v": { + "eco": "A46v", + "fen": "rnbqk2r/pp1pbppp/4pn2/2p3B1/3P4/4PN2/PPP2PPP/RN1QKB1R w KQkq - 1 5", + "hash": 17021676147464705447, + "name": "Torre Attack: 3...c5 4.e3 Be7" + }, + "A46w": { + "eco": "A46w", + "fen": "rnbqkb1r/pp1p1pp1/4pn1p/2p3B1/3P4/4PN2/PPP2PPP/RN1QKB1R w KQkq - 0 5", + "hash": 7638699581112348707, + "name": "Torre Attack: 3...c5 4.e3 h6" + }, + "A46x": { + "eco": "A46x", + "fen": "rnbqkb1r/pppp1pp1/4pn1p/6B1/3P4/5N2/PPP1PPPP/RN1QKB1R w KQkq - 0 4", + "hash": 2404517378826761210, + "name": "Torre Attack: 3...h6" + }, + "A46y": { + "eco": "A46y", + "fen": "rnbqkb1r/pppp1pp1/4pB1p/8/3P4/5N2/PPP1PPPP/RN1QKB1R b KQkq - 0 4", + "hash": 9539052825240579354, + "name": "Torre Attack: 3...h6 4.Bxf6" + }, + "A46z": { + "eco": "A46z", + "fen": "rnb1kb1r/ppp2pp1/3ppq1p/8/3PP3/5N2/PPP2PPP/RN1QKB1R w KQkq - 0 6", + "hash": 8603384084193831421, + "name": "Torre Attack: 3...h6 4.Bxf6 Qxf6 5.e4 d6" + }, + "A47": { + "eco": "A47", + "fen": "rnbqkb1r/p1pppppp/1p3n2/8/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq - 0 3", + "hash": 7560744022399469294, + "name": "Neo-Queen's Indian" + }, + "A48a": { + "eco": "A48a", + "fen": "rnbqkb1r/pppppp1p/5np1/8/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq - 0 3", + "hash": 16875043787478098750, + "name": "Neo-King's Indian" + }, + "A48b": { + "eco": "A48b", + "fen": "rnbqkb1r/pppppp1p/5np1/8/3P4/2P2N2/PP2PPPP/RNBQKB1R b KQkq - 0 3", + "hash": 11307072407216024760, + "name": "Neo-King's Indian" + }, + "A48c": { + "eco": "A48c", + "fen": "rnbqkb1r/pppppp1p/5np1/8/3P4/4PN2/PPP2PPP/RNBQKB1R b KQkq - 0 3", + "hash": 5124375476920707994, + "name": "Neo-King's Indian" + }, + "A48d": { + "eco": "A48d", + "fen": "rnbqkb1r/pp1ppp1p/5np1/2p5/3P4/4PN2/PPP2PPP/RNBQKB1R w KQkq c6 0 4", + "hash": 11631850017183228135, + "name": "Neo-King's Indian" + }, + "A48e": { + "eco": "A48e", + "fen": "rnbqkb1r/pppppp1p/5np1/8/3P4/2N2N2/PPP1PPPP/R1BQKB1R b KQkq - 1 3", + "hash": 1272031910547808743, + "name": "Neo-King's Indian" + }, + "A48f": { + "eco": "A48f", + "fen": "rnbqkb1r/pppppp1p/5np1/8/3P1B2/5N2/PPP1PPPP/RN1QKB1R b KQkq - 1 3", + "hash": 3559203162104236381, + "name": "Neo-King's Indian: London System" + }, + "A48g": { + "eco": "A48g", + "fen": "rnbqk2r/ppppppbp/5np1/8/3P1B2/5N2/PPP1PPPP/RN1QKB1R w KQkq - 2 4", + "hash": 9356485364948943607, + "name": "Neo-King's Indian: London System" + }, + "A48h": { + "eco": "A48h", + "fen": "rnbqk2r/ppppppbp/5np1/8/3P1B2/5N2/PPPNPPPP/R2QKB1R b KQkq - 3 4", + "hash": 15615758639826070215, + "name": "Neo-King's Indian: London System" + }, + "A48i": { + "eco": "A48i", + "fen": "rnbqk2r/ppppppbp/5np1/8/3P1B2/2P2N2/PP2PPPP/RN1QKB1R b KQkq - 0 4", + "hash": 17798807665566829937, + "name": "Neo-King's Indian: London System" + }, + "A48j": { + "eco": "A48j", + "fen": "rnbqk2r/ppppppbp/5np1/8/3P1B2/4PN2/PPP2PPP/RN1QKB1R b KQkq - 0 4", + "hash": 3239684004482632275, + "name": "Neo-King's Indian: London System" + }, + "A48k": { + "eco": "A48k", + "fen": "rnbq1rk1/ppppppbp/5np1/8/3P1B2/4PN2/PPP1BPPP/RN1QK2R b KQ - 2 5", + "hash": 6187318209336535323, + "name": "Neo-King's Indian: London System" + }, + "A48l": { + "eco": "A48l", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/3P1B2/4PN1P/PPP1BPP1/RN1QK2R b KQ - 0 6", + "hash": 9553417932123728260, + "name": "Neo-King's Indian: London System" + }, + "A48m": { + "eco": "A48m", + "fen": "rnbqkb1r/pppppp1p/5np1/6B1/3P4/5N2/PPP1PPPP/RN1QKB1R b KQkq - 1 3", + "hash": 3200482480922671350, + "name": "Neo-King's Indian: Torre Attack" + }, + "A48n": { + "eco": "A48n", + "fen": "rnbqkb1r/pppppp1p/6p1/6B1/3Pn3/5N2/PPP1PPPP/RN1QKB1R w KQkq - 2 4", + "hash": 1612896987429483788, + "name": "Neo-King's Indian: Torre Attack" + }, + "A48o": { + "eco": "A48o", + "fen": "rnbqk2r/ppppppbp/5np1/6B1/3P4/5N2/PPP1PPPP/RN1QKB1R w KQkq - 2 4", + "hash": 11301317531283125084, + "name": "Neo-King's Indian: Torre Attack" + }, + "A48p": { + "eco": "A48p", + "fen": "rnbqk2r/ppppppbp/5np1/6B1/3P4/2N2N2/PPP1PPPP/R2QKB1R b KQkq - 3 4", + "hash": 7440299287950717317, + "name": "Neo-King's Indian: Torre Attack" + }, + "A48q": { + "eco": "A48q", + "fen": "rnbqk2r/ppppppbp/5np1/6B1/3P4/5N2/PPPNPPPP/R2QKB1R b KQkq - 3 4", + "hash": 14247383747912260460, + "name": "Neo-King's Indian: Torre Attack" + }, + "A48r": { + "eco": "A48r", + "fen": "rnbq1rk1/ppppppbp/5np1/6B1/3P4/5N2/PPPNPPPP/R2QKB1R w KQ - 4 5", + "hash": 14920440682649891463, + "name": "Neo-King's Indian: Torre Attack" + }, + "A48s": { + "eco": "A48s", + "fen": "rnbq1rk1/ppppppbp/5np1/6B1/3PP3/5N2/PPPN1PPP/R2QKB1R b KQ e3 0 5", + "hash": 799108521183580045, + "name": "Neo-King's Indian: Torre Attack" + }, + "A48t": { + "eco": "A48t", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/6B1/3PP3/5N2/PPPN1PPP/R2QKB1R w KQ - 0 6", + "hash": 3651740446077142752, + "name": "Neo-King's Indian: Torre Attack" + }, + "A48u": { + "eco": "A48u", + "fen": "rnbq1rk1/ppp1ppbp/5np1/3p2B1/3PP3/5N2/PPPN1PPP/R2QKB1R w KQ d6 0 6", + "hash": 10267401087232688555, + "name": "Neo-King's Indian: Torre Attack" + }, + "A48v": { + "eco": "A48v", + "fen": "rnbq1rk1/ppppppbp/5np1/6B1/3P4/2P2N2/PP1NPPPP/R2QKB1R b KQ - 0 5", + "hash": 13387782392007245057, + "name": "Neo-King's Indian: Torre Attack" + }, + "A48w": { + "eco": "A48w", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/6B1/3PP3/2P2N2/PP1N1PPP/R2QKB1R b KQ e3 0 6", + "hash": 4933532924628355430, + "name": "Neo-King's Indian: Torre Attack" + }, + "A48x": { + "eco": "A48x", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p3B1/3PP3/2P2N2/PP1N1PPP/R2QKB1R w KQ c6 0 7", + "hash": 11675229780796359195, + "name": "Neo-King's Indian: Torre Attack" + }, + "A49": { + "eco": "A49", + "fen": "rnbqkb1r/pppppp1p/5np1/8/3P4/5NP1/PPP1PP1P/RNBQKB1R b KQkq - 0 3", + "hash": 14327790633553279750, + "name": "Neo-King's Indian: Fianchetto System" + }, + "A50a": { + "eco": "A50a", + "fen": "rnbqkb1r/pppppppp/5n2/8/2PP4/8/PP2PPPP/RNBQKBNR b KQkq c3 0 2", + "hash": 6107745739976031055, + "name": "Indian: 2.c4" + }, + "A50b": { + "eco": "A50b", + "fen": "r1bqkb1r/pppppppp/2n2n2/8/2PP4/8/PP2PPPP/RNBQKBNR w KQkq - 1 3", + "hash": 18387856988164628044, + "name": "Indian: Mexican Defence (Two Knights Tango)" + }, + "A50c": { + "eco": "A50c", + "fen": "r1bqkb1r/pppppppp/2n2n2/8/2PP4/2N5/PP2PPPP/R1BQKBNR b KQkq - 2 3", + "hash": 340534295596506261, + "name": "Indian: Mexican Defence, 3.Nc3" + }, + "A50d": { + "eco": "A50d", + "fen": "r1bqkb1r/pppppppp/2n2n2/8/2PP4/5N2/PP2PPPP/RNBQKB1R b KQkq - 2 3", + "hash": 2614944828615229297, + "name": "Indian: Mexican Defence, 3.Nf3" + }, + "A50e": { + "eco": "A50e", + "fen": "r1bqkb1r/pppp1ppp/2n1pn2/8/2PP4/5N2/PP2PPPP/RNBQKB1R w KQkq - 0 4", + "hash": 5926126084100222755, + "name": "Indian: Mexican Defence, 3.Nf3 e6" + }, + "A50f": { + "eco": "A50f", + "fen": "r1bqkb1r/pppp1ppp/2n1pn2/8/2PP4/P4N2/1P2PPPP/RNBQKB1R b KQkq - 0 4", + "hash": 11070381562782867811, + "name": "Indian: Mexican Defence, 3.Nf3 e6 4.a3" + }, + "A50g": { + "eco": "A50g", + "fen": "r1bqkb1r/pppp1ppp/2n1pn2/8/2PP4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 4", + "hash": 12225809419318521338, + "name": "Indian: Mexican Defence, 3.Nf3 e6 4.Nc3" + }, + "A50h": { + "eco": "A50h", + "fen": "rnbqkb1r/pp1ppppp/2p2n2/8/2PP4/8/PP2PPPP/RNBQKBNR w KQkq - 0 3", + "hash": 14319757469619710196, + "name": "Indian: Slav-Indian" + }, + "A50i": { + "eco": "A50i", + "fen": "rnbqkb1r/pp1ppppp/2p2n2/8/2PP4/5N2/PP2PPPP/RNBQKB1R b KQkq - 1 3", + "hash": 2151897615796242889, + "name": "Indian: Slav-Indian, 3.Nf3" + }, + "A50j": { + "eco": "A50j", + "fen": "rnbqkb1r/pp1ppppp/2p2n2/8/2PP4/2N5/PP2PPPP/R1BQKBNR b KQkq - 1 3", + "hash": 4408715271549708845, + "name": "Indian: Slav-Indian, 3.Nc3" + }, + "A50k": { + "eco": "A50k", + "fen": "rnbqkb1r/1ppppppp/p4n2/8/2PP4/8/PP2PPPP/RNBQKBNR w KQkq - 0 3", + "hash": 9670604507730264979, + "name": "Indian: 2.c4 a6" + }, + "A50l": { + "eco": "A50l", + "fen": "rnbqkb1r/p1pppppp/1p3n2/8/2PP4/8/PP2PPPP/RNBQKBNR w KQkq - 0 3", + "hash": 4587579720298564820, + "name": "Indian: Queen's Indian Accelerated" + }, + "A50m": { + "eco": "A50m", + "fen": "rn1qkb1r/pbpppppp/1p3n2/8/2PP4/2N5/PP2PPPP/R1BQKBNR w KQkq - 2 4", + "hash": 8407388541882900886, + "name": "Indian: Queen's Indian Accelerated" + }, + "A50n": { + "eco": "A50n", + "fen": "rn1qkb1r/pbpppppp/1p3n2/8/2PP4/2N5/PPQ1PPPP/R1B1KBNR b KQkq - 3 4", + "hash": 14246144874465762802, + "name": "Indian: Queen's Indian Accelerated" + }, + "A51a": { + "eco": "A51a", + "fen": "rnbqkb1r/pppp1ppp/5n2/4p3/2PP4/8/PP2PPPP/RNBQKBNR w KQkq e6 0 3", + "hash": 16049450462512464761, + "name": "Budapest" + }, + "A51b": { + "eco": "A51b", + "fen": "rnbqkb1r/pppp1ppp/5n2/4p3/2PP4/4P3/PP3PPP/RNBQKBNR b KQkq - 0 3", + "hash": 8328941985190071261, + "name": "Budapest: 3.e3" + }, + "A51c": { + "eco": "A51c", + "fen": "rnbqkb1r/pppp1ppp/5n2/3Pp3/2P5/8/PP2PPPP/RNBQKBNR b KQkq - 0 3", + "hash": 7256241808960541988, + "name": "Budapest: 3.d5" + }, + "A51d": { + "eco": "A51d", + "fen": "rnbqkb1r/pppp1ppp/5n2/4P3/2P5/8/PP2PPPP/RNBQKBNR b KQkq - 0 3", + "hash": 4766749505263334409, + "name": "Budapest: 3.dxe5" + }, + "A51e": { + "eco": "A51e", + "fen": "rnbqkb1r/pppp1ppp/8/4P3/2P1n3/8/PPQ1PPPP/RNB1KBNR b KQkq - 2 4", + "hash": 14499299322654541207, + "name": "Budapest: Fajarowicz, Steiner Variation" + }, + "A51f": { + "eco": "A51f", + "fen": "rnbqkb1r/pppp1ppp/8/4P3/2P1n3/8/PP1NPPPP/R1BQKBNR b KQkq - 2 4", + "hash": 2395934339227013571, + "name": "Budapest: Fajarowicz, 4.Nd2" + }, + "A51g": { + "eco": "A51g", + "fen": "rnbqkb1r/pppp1ppp/8/4P3/2P1n3/P7/1P2PPPP/RNBQKBNR b KQkq - 0 4", + "hash": 12948579908660524979, + "name": "Budapest: Fajarowicz, 4.a3" + }, + "A51h": { + "eco": "A51h", + "fen": "rnbqkb1r/pppp1ppp/8/4P3/2P1n3/5N2/PP2PPPP/RNBQKB1R b KQkq - 2 4", + "hash": 11766292854183467214, + "name": "Budapest: Fajarowicz, 4.Nf3" + }, + "A51i": { + "eco": "A51i", + "fen": "rnbqk2r/pppp1ppp/8/4P3/1bP1n3/5N2/PP2PPPP/RNBQKB1R w KQkq - 3 5", + "hash": 7641249592266543340, + "name": "Budapest: Fajarowicz, 4.Nf3 Bb4+" + }, + "A51j": { + "eco": "A51j", + "fen": "r1bqkb1r/pppp1ppp/2n5/4P3/2P1n3/5N2/PP2PPPP/RNBQKB1R w KQkq - 3 5", + "hash": 623640661920529869, + "name": "Budapest: Fajarowicz, 4.Nf3 Nc6" + }, + "A51k": { + "eco": "A51k", + "fen": "r1bqkb1r/pppp1ppp/2n5/4P3/2P1n3/P4N2/1P2PPPP/RNBQKB1R b KQkq - 0 5", + "hash": 14068027831452939149, + "name": "Budapest: Fajarowicz, 4.Nf3 Nc6 5.a3" + }, + "A52a": { + "eco": "A52a", + "fen": "rnbqkb1r/pppp1ppp/8/4P3/2P3n1/8/PP2PPPP/RNBQKBNR w KQkq - 1 4", + "hash": 16070459810519704933, + "name": "Budapest: 3...Ng4" + }, + "A52b": { + "eco": "A52b", + "fen": "rnbqkb1r/pppp1ppp/8/4P3/2P3n1/4P3/PP3PPP/RNBQKBNR b KQkq - 0 4", + "hash": 8226102618194734529, + "name": "Budapest: 3...Ng4 4.e3" + }, + "A52c": { + "eco": "A52c", + "fen": "rnbqkb1r/pppp1ppp/8/4P3/2P1P1n1/8/PP3PPP/RNBQKBNR b KQkq e3 0 4", + "hash": 1946315100406634607, + "name": "Budapest: Alekhine Variation" + }, + "A52d": { + "eco": "A52d", + "fen": "rnbqkb1r/pppp1ppp/2n5/8/2P1PP2/8/PP4PP/RNBQKBNR w KQkq - 1 6", + "hash": 319201036411485236, + "name": "Budapest: Alekhine, Abonyi Variation" + }, + "A52e": { + "eco": "A52e", + "fen": "rnbqkb1r/pppp1ppp/8/4P3/2P3n1/5N2/PP2PPPP/RNBQKB1R b KQkq - 2 4", + "hash": 315624687282521176, + "name": "Budapest: Adler Variation" + }, + "A52f": { + "eco": "A52f", + "fen": "rnbqk2r/pppp1ppp/8/2b1P3/2P3n1/5N2/PP2PPPP/RNBQKB1R w KQkq - 3 5", + "hash": 12212661169695190747, + "name": "Budapest: Adler, 4...Bc5" + }, + "A52g": { + "eco": "A52g", + "fen": "r1bqk2r/pppp1ppp/2n5/2b1P3/2P3n1/4PN2/PP2BPPP/RNBQK2R b KQkq - 2 6", + "hash": 15869575722185525727, + "name": "Budapest: Adler, 4...Bc5 5.e3 Nc6 6.Be2" + }, + "A52h": { + "eco": "A52h", + "fen": "rnbqkb1r/pppp1ppp/8/4P3/2P2Bn1/8/PP2PPPP/RN1QKBNR b KQkq - 2 4", + "hash": 311127211448405766, + "name": "Budapest: Rubinstein Variation" + }, + "A52i": { + "eco": "A52i", + "fen": "rnbqk2r/pppp1ppp/8/4P3/1bP2Bn1/8/PP2PPPP/RN1QKBNR w KQkq - 3 5", + "hash": 14776364849090840356, + "name": "Budapest: Rubinstein, 4...Bb4+" + }, + "A52j": { + "eco": "A52j", + "fen": "r1bqkb1r/pppp1ppp/2n5/4P3/2P2Bn1/8/PP2PPPP/RN1QKBNR w KQkq - 3 5", + "hash": 12663137466350742021, + "name": "Budapest: Rubinstein, 4...Nc6" + }, + "A52k": { + "eco": "A52k", + "fen": "r1bqk2r/pppp1ppp/2n5/4P3/1bP2Bn1/5N2/PP2PPPP/RN1QKB1R w KQkq - 5 6", + "hash": 13661957124338942746, + "name": "Budapest: Rubinstein, Main Line" + }, + "A52l": { + "eco": "A52l", + "fen": "r1bqk2r/pppp1ppp/2n5/4P3/1bP2Bn1/5N2/PP1NPPPP/R2QKB1R b KQkq - 6 6", + "hash": 16498864651235928874, + "name": "Budapest: Rubinstein, Main Line, 6.Nbd2" + }, + "A52m": { + "eco": "A52m", + "fen": "r1b1k2r/ppppqppp/2n5/4P3/1bP2Bn1/4PN2/PP1N1PPP/R2QKB1R b KQkq - 0 7", + "hash": 15142544775636946404, + "name": "Budapest: Rubinstein, Main Line, 6.Nbd2 Qe7 7.e3" + }, + "A53": { + "eco": "A53", + "fen": "rnbqkb1r/ppp1pppp/3p1n2/8/2PP4/8/PP2PPPP/RNBQKBNR w KQkq - 0 3", + "hash": 7888481367444779554, + "name": "Old Indian" + }, + "A54": { + "eco": "A54", + "fen": "rnbqkb1r/ppp2ppp/3p1n2/4p3/2PP4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 4", + "hash": 14407710219603044848, + "name": "Old Indian: 4.Nf3" + }, + "A55a": { + "eco": "A55a", + "fen": "r1bqkb1r/pppn1ppp/3p1n2/4p3/2PPP3/2N2N2/PP3PPP/R1BQKB1R b KQkq e3 0 5", + "hash": 3464972395278514486, + "name": "Old Indian: 5.e4" + }, + "A55b": { + "eco": "A55b", + "fen": "r1bqkb1r/pppn1p1p/3p1np1/4p3/2PPP3/2N2N2/PP3PPP/R1BQKB1R w KQkq - 0 6", + "hash": 15682199461148470141, + "name": "Old Indian: 5.e4 g6" + }, + "A55c": { + "eco": "A55c", + "fen": "r1bqkb1r/pp1n1ppp/2pp1n2/4p3/2PPP3/2N2N2/PP3PPP/R1BQKB1R w KQkq - 0 6", + "hash": 11703980110739466893, + "name": "Old Indian: 5.e4 c6" + }, + "A55d": { + "eco": "A55d", + "fen": "r1bqk2r/pppnbppp/3p1n2/4p3/2PPP3/2N2N2/PP3PPP/R1BQKB1R w KQkq - 1 6", + "hash": 2655573360367867303, + "name": "Old Indian: 5.e4 Be7" + }, + "A55e": { + "eco": "A55e", + "fen": "r1bqk2r/pppnbppp/3p1n2/4p3/2PPP3/2N2NP1/PP3P1P/R1BQKB1R b KQkq - 0 6", + "hash": 593567672061414815, + "name": "Old Indian: 5.e4 Be7 6.g3" + }, + "A55f": { + "eco": "A55f", + "fen": "r1bqr1k1/pp1nbppp/2pp1n2/4p3/2PPP3/2N2NP1/PP3PBP/R1BQ1RK1 w - - 4 9", + "hash": 5132513640629899556, + "name": "Old Indian: 5.e4 Be7 6.g3 c6 7.Bg2 O-O 8.O-O Re8" + }, + "A55g": { + "eco": "A55g", + "fen": "r1bq1rk1/1p1nbppp/p1pp1n2/4p3/2PPP3/2N2NP1/PP3PBP/R1BQ1RK1 w - - 0 9", + "hash": 9915922823179111546, + "name": "Old Indian: 5.e4 Be7 6.g3 c6 7.Bg2 O-O 8.O-O a6" + }, + "A55h": { + "eco": "A55h", + "fen": "r1bq1rk1/1p1nbppp/p1pp1n2/4p3/P1PPP3/2N2NP1/1P3PBP/R1BQ1RK1 b - a3 0 9", + "hash": 16308961044117871028, + "name": "Old Indian: 5.e4 Be7 6.g3 c6 7.Bg2 O-O 8.O-O a6 9.a4" + }, + "A55i": { + "eco": "A55i", + "fen": "r1bqk2r/pppnbppp/3p1n2/4p3/2PPP3/2N2N2/PP2BPPP/R1BQK2R b KQkq - 2 6", + "hash": 6294622841565536004, + "name": "Old Indian: 5.e4 Be7 6.Be2" + }, + "A55j": { + "eco": "A55j", + "fen": "r1bqk2r/pp1nbppp/2pp1n2/4p3/2PPP3/2N2N2/PP2BPPP/R1BQK2R w KQkq - 0 7", + "hash": 14204375149281676479, + "name": "Old Indian: 5.e4 Be7 6.Be2 c6" + }, + "A55k": { + "eco": "A55k", + "fen": "r1bq1rk1/pp1nbppp/2pp1n2/4p3/2PPP3/2N2N2/PP2BPPP/R1BQ1RK1 w - - 2 8", + "hash": 12825554043274804804, + "name": "Old Indian: Main Line" + }, + "A55l": { + "eco": "A55l", + "fen": "r1bq1rk1/pp1nbppp/2pp1n2/4p3/2PPP3/2N2N1P/PP2BPP1/R1BQ1RK1 b - - 0 8", + "hash": 6417164160271644598, + "name": "Old Indian: Main Line, 8.h3" + }, + "A55m": { + "eco": "A55m", + "fen": "r1bq1rk1/pp1nbppp/2pp1n2/4p3/2PPP3/2N1BN2/PP2BPPP/R2Q1RK1 b - - 3 8", + "hash": 14048203467919599050, + "name": "Old Indian: Main Line, 8.Be3" + }, + "A55n": { + "eco": "A55n", + "fen": "r1bq1rk1/1p1nbppp/p1pp1n2/4p3/2PPP3/2N1BN2/PP2BPPP/R2Q1RK1 w - - 0 9", + "hash": 1153712519385373974, + "name": "Old Indian: Main Line, 8.Be3 a6" + }, + "A55o": { + "eco": "A55o", + "fen": "r1bq1rk1/pp1nbppp/2pp1n2/4p3/2PPP3/2N2N2/PPQ1BPPP/R1B2RK1 b - - 3 8", + "hash": 64448346746389024, + "name": "Old Indian: Main Line, 8.Qc2" + }, + "A55p": { + "eco": "A55p", + "fen": "r1bq1rk1/1p1nbppp/p1pp1n2/4p3/2PPP3/2N2N2/PPQ1BPPP/R1B2RK1 w - - 0 9", + "hash": 15137450047812074236, + "name": "Old Indian: Main Line, 8.Qc2 a6" + }, + "A55q": { + "eco": "A55q", + "fen": "r1bq1rk1/pp1nbppp/2pp1n2/4p3/2PPP3/2N2N2/PP2BPPP/R1BQR1K1 b - - 3 8", + "hash": 3839754057183958352, + "name": "Old Indian: Main Line, 8.Re1" + }, + "A55r": { + "eco": "A55r", + "fen": "r1bqr1k1/pp1nbppp/2pp1n2/4p3/2PPP3/2N2N2/PP2BPPP/R1BQR1K1 w - - 4 9", + "hash": 2961201110991270098, + "name": "Old Indian: Main Line, 8.Re1 Re8" + }, + "A55s": { + "eco": "A55s", + "fen": "r1bq1rk1/1p1nbppp/p1pp1n2/4p3/2PPP3/2N2N2/PP2BPPP/R1BQR1K1 w - - 0 9", + "hash": 16698918658087349644, + "name": "Old Indian: Main Line, 8.Re1 a6" + }, + "A55t": { + "eco": "A55t", + "fen": "r1bq1rk1/1p1nbppp/p1pp1n2/4p3/2PPP3/2N2N2/PP3PPP/R1BQRBK1 b - - 1 9", + "hash": 10682250186049529647, + "name": "Old Indian: Main Line, 8.Re1 a6 9.Bf1" + }, + "A56a": { + "eco": "A56a", + "fen": "rnbqkb1r/pp1ppppp/5n2/2p5/2PP4/8/PP2PPPP/RNBQKBNR w KQkq c6 0 3", + "hash": 12876569570225827890, + "name": "Benoni: 2...c5" + }, + "A56b": { + "eco": "A56b", + "fen": "rnbqkb1r/pp1ppppp/5n2/2p5/2PP4/4P3/PP3PPP/RNBQKBNR b KQkq - 0 3", + "hash": 2278682319784360086, + "name": "Benoni: 2...c5 3.e3" + }, + "A56c": { + "eco": "A56c", + "fen": "rnbqkb1r/pp1ppp1p/5np1/2p5/2PP4/4P3/PP3PPP/RNBQKBNR w KQkq - 0 4", + "hash": 17738502610618034909, + "name": "Benoni: 2...c5 3.e3 g6" + }, + "A56d": { + "eco": "A56d", + "fen": "rnbqkb1r/pp1ppp1p/5np1/2p5/2PP4/2N1P3/PP3PPP/R1BQKBNR b KQkq - 1 4", + "hash": 989888697335326724, + "name": "Benoni: 2...c5 3.e3 g6 4.Nc3" + }, + "A56e": { + "eco": "A56e", + "fen": "rnbqkb1r/pp1ppppp/5n2/2P5/2P5/8/PP2PPPP/RNBQKBNR b KQkq - 0 3", + "hash": 14794853769685657438, + "name": "Benoni: 3.dxc5" + }, + "A56f": { + "eco": "A56f", + "fen": "rnbqkb1r/pp1ppppp/5n2/2pP4/2P5/8/PP2PPPP/RNBQKBNR b KQkq - 0 3", + "hash": 628956516477347439, + "name": "Benoni: 3.d5" + }, + "A56g": { + "eco": "A56g", + "fen": "rnbqkb1r/1p1ppppp/p4n2/2pP4/2P5/8/PP2PPPP/RNBQKBNR w KQkq - 0 4", + "hash": 15730353788200705715, + "name": "Benoni: 3.d5 a6" + }, + "A56h": { + "eco": "A56h", + "fen": "rnbqkb1r/pp1ppp1p/5np1/2pP4/2P5/8/PP2PPPP/RNBQKBNR w KQkq - 0 4", + "hash": 16217132155367797796, + "name": "Benoni: 3.d5 g6" + }, + "A56i": { + "eco": "A56i", + "fen": "rnbqkb1r/pp2pppp/3p1n2/2pP4/2P5/8/PP2PPPP/RNBQKBNR w KQkq - 0 4", + "hash": 3530847393903079170, + "name": "Benoni: 3.d5 d6" + }, + "A56j": { + "eco": "A56j", + "fen": "rnbqkb1r/pp2pp1p/3p1np1/2pP4/2P5/2N5/PP2PPPP/R1BQKBNR w KQkq - 0 5", + "hash": 2531969699703029648, + "name": "Benoni: 3.d5 d6 4.Nc3 g6" + }, + "A56k": { + "eco": "A56k", + "fen": "rnbqk2r/pp2ppbp/3p1np1/2pP4/2P1P3/2N5/PP3PPP/R1BQKBNR w KQkq - 1 6", + "hash": 6311915793774709040, + "name": "Benoni: 3.d5 d6 4.Nc3 g6 5.e4 Bg7" + }, + "A56l": { + "eco": "A56l", + "fen": "rnbqk2r/pp2ppbp/3p1np1/2pP4/2P1P3/2N2P2/PP4PP/R1BQKBNR b KQkq - 0 6", + "hash": 4118977031034922561, + "name": "Benoni: 3.d5 d6 4.Nc3 g6 5.e4 Bg7 6.f3" + }, + "A56m": { + "eco": "A56m", + "fen": "rnbqk2r/pp2ppbp/3p1np1/2pP4/2P1P3/2NB4/PP3PPP/R1BQK1NR b KQkq - 2 6", + "hash": 186279649974569795, + "name": "Benoni: 3.d5 d6 4.Nc3 g6 5.e4 Bg7 6.Bd3" + }, + "A56n": { + "eco": "A56n", + "fen": "rnbqkb1r/pp1ppppp/8/2pP4/2P1n3/8/PP2PPPP/RNBQKBNR w KQkq - 1 4", + "hash": 3653206553450064789, + "name": "Benoni: Vulture" + }, + "A56o": { + "eco": "A56o", + "fen": "rnbqkb1r/pp1p1ppp/5n2/2pPp3/2P5/8/PP2PPPP/RNBQKBNR w KQkq e6 0 4", + "hash": 5617058603479604432, + "name": "Benoni: Czech" + }, + "A56p": { + "eco": "A56p", + "fen": "rnbqkb1r/pp3ppp/3p1n2/2pPp3/2P5/2N5/PP2PPPP/R1BQKBNR w KQkq - 0 5", + "hash": 4678965233928345069, + "name": "Benoni: Czech, 4.Nc3 d6" + }, + "A56q": { + "eco": "A56q", + "fen": "rnbqkb1r/pp3p1p/3p1np1/2pPp3/2P1P3/2N5/PP3PPP/R1BQKBNR w KQkq - 0 6", + "hash": 7880270224824253100, + "name": "Benoni: Czech, 5.e4 g6" + }, + "A56r": { + "eco": "A56r", + "fen": "rnbqk2r/pp2bppp/3p1n2/2pPp3/2P1P3/2N5/PP3PPP/R1BQKBNR w KQkq - 1 6", + "hash": 10386559338697753718, + "name": "Benoni: Czech, 5.e4 Be7" + }, + "A56s": { + "eco": "A56s", + "fen": "rnbqk2r/pp2bppp/3p1n2/2pPp3/2P1P3/2N3P1/PP3P1P/R1BQKBNR b KQkq - 0 6", + "hash": 13601649267911384142, + "name": "Benoni: Czech, 5.e4 Be7 6.g3" + }, + "A56t": { + "eco": "A56t", + "fen": "rnbqnrk1/pp2bppp/3p4/2pPp3/2P1P3/2N3P1/PP3PBP/R1BQK1NR w KQ - 3 8", + "hash": 3087153986105644897, + "name": "Benoni: Czech, 5.e4 Be7 6.g3 O-O 7.Bg2 Ne8" + }, + "A56u": { + "eco": "A56u", + "fen": "rnbqk2r/pp2bppp/3p1n2/2pPp3/2P1P3/2NB4/PP3PPP/R1BQK1NR b KQkq - 2 6", + "hash": 14207125171186714117, + "name": "Benoni: Czech, 5.e4 Be7 6.Bd3" + }, + "A56v": { + "eco": "A56v", + "fen": "rnbqk2r/pp2bppp/3p1n2/2pPp3/2P1P3/2N2N2/PP3PPP/R1BQKB1R b KQkq - 2 6", + "hash": 5422496980888642891, + "name": "Benoni: Czech, 5.e4 Be7 6.Nf3" + }, + "A56w": { + "eco": "A56w", + "fen": "rnbq1rk1/pp2bppp/3p1n2/2pPp3/2P1P3/2N2N2/PP3PPP/R1BQKB1R w KQ - 3 7", + "hash": 4749179885474745504, + "name": "Benoni: Czech, 5.e4 Be7 6.Nf3 O-O" + }, + "A56x": { + "eco": "A56x", + "fen": "rnbq1rk1/pp2bppp/3p1n2/2pPp3/2P1P3/2N2N2/PP2BPPP/R1BQK2R b KQ - 4 7", + "hash": 3632428014173832707, + "name": "Benoni: Czech, 5.e4 Be7 6.Nf3 O-O 7.Be2" + }, + "A57a": { + "eco": "A57a", + "fen": "rnbqkb1r/p2ppppp/5n2/1ppP4/2P5/8/PP2PPPP/RNBQKBNR w KQkq b6 0 4", + "hash": 7547727908582792018, + "name": "Benko Gambit" + }, + "A57b": { + "eco": "A57b", + "fen": "rnbqkb1r/p2ppppp/5n2/1ppP4/P1P5/8/1P2PPPP/RNBQKBNR b KQkq a3 0 4", + "hash": 249831476490849948, + "name": "Benko Gambit: 4.a4" + }, + "A57c": { + "eco": "A57c", + "fen": "rnbqkb1r/p2ppppp/5n2/1ppP4/2P5/8/PP1NPPPP/R1BQKBNR b KQkq - 1 4", + "hash": 3589460066087777122, + "name": "Benko Gambit: 4.Nd2" + }, + "A57d": { + "eco": "A57d", + "fen": "rnbqkb1r/p2ppppp/5n2/1ppP4/2P5/5N2/PP2PPPP/RNBQKB1R b KQkq - 1 4", + "hash": 12959678013741955695, + "name": "Benko Gambit: 4.Nf3" + }, + "A57e": { + "eco": "A57e", + "fen": "rn1qkb1r/pb1ppppp/5n2/1ppP4/2P5/5N2/PP2PPPP/RNBQKB1R w KQkq - 2 5", + "hash": 237088761993090548, + "name": "Benko Gambit: 4.Nf3 Bb7" + }, + "A57f": { + "eco": "A57f", + "fen": "rnbqkb1r/p2ppp1p/5np1/1ppP4/2P5/5N2/PP2PPPP/RNBQKB1R w KQkq - 0 5", + "hash": 6516239332666828836, + "name": "Benko Gambit: 4.Nf3 g6" + }, + "A57g": { + "eco": "A57g", + "fen": "rnbqkb1r/p2ppp1p/5np1/1PpP4/8/5N2/PP2PPPP/RNBQKB1R b KQkq - 0 5", + "hash": 12368647232739221875, + "name": "Benko Gambit: 4.Nf3 g6 5.cxb5" + }, + "A57h": { + "eco": "A57h", + "fen": "rnbqkb1r/p2ppppp/5n2/1PpP4/8/8/PP2PPPP/RNBQKBNR b KQkq - 0 4", + "hash": 11058303618664092165, + "name": "Benko Gambit: 4.cxb5" + }, + "A57i": { + "eco": "A57i", + "fen": "rnbqkb1r/3ppppp/pP3n2/2pP4/8/8/PP2PPPP/RNBQKBNR b KQkq - 0 5", + "hash": 6574802468427820849, + "name": "Benko Gambit: 4.cxb5 a6 5.b6" + }, + "A57j": { + "eco": "A57j", + "fen": "rnb1kb1r/3ppppp/pq3n2/2pP4/8/8/PP2PPPP/RNBQKBNR w KQkq - 0 6", + "hash": 14365068559273705959, + "name": "Benko Gambit: 4.cxb5 a6 5.b6 Qxb6" + }, + "A57k": { + "eco": "A57k", + "fen": "rnbqkb1r/4pppp/pP1p1n2/2pP4/8/8/PP2PPPP/RNBQKBNR w KQkq - 0 6", + "hash": 7099065420958148188, + "name": "Benko Gambit: 4.cxb5 a6 5.b6 d6" + }, + "A57l": { + "eco": "A57l", + "fen": "rnbqkb1r/3p1ppp/pP2pn2/2pP4/8/8/PP2PPPP/RNBQKBNR w KQkq - 0 6", + "hash": 3263304553061351267, + "name": "Benko Gambit: 4.cxb5 a6 5.b6 e6" + }, + "A57m": { + "eco": "A57m", + "fen": "rnbqkb1r/3ppppp/p4n2/1PpP4/8/4P3/PP3PPP/RNBQKBNR b KQkq - 0 5", + "hash": 16621748064517661309, + "name": "Benko Gambit: 4.cxb5 a6 5.e3" + }, + "A57n": { + "eco": "A57n", + "fen": "rnbqkb1r/3ppp1p/p4np1/1PpP4/8/4P3/PP3PPP/RNBQKBNR w KQkq - 0 6", + "hash": 1087650749037621302, + "name": "Benko Gambit: 4.cxb5 a6 5.e3 g6" + }, + "A57o": { + "eco": "A57o", + "fen": "rnbqkb1r/3ppppp/p4n2/1PpP4/8/5P2/PP2P1PP/RNBQKBNR b KQkq - 0 5", + "hash": 2679900502938469800, + "name": "Benko Gambit: 4.cxb5 a6 5.f3" + }, + "A57p": { + "eco": "A57p", + "fen": "rnbqkb1r/3p1ppp/p3pn2/1PpP4/8/5P2/PP2P1PP/RNBQKBNR w KQkq - 0 6", + "hash": 6000793057973982714, + "name": "Benko Gambit: 4.cxb5 a6 5.f3 e6" + }, + "A57q": { + "eco": "A57q", + "fen": "rnbqkb1r/3ppppp/5n2/1ppP4/8/5P2/PP2P1PP/RNBQKBNR w KQkq - 0 6", + "hash": 7115720943901159430, + "name": "Benko Gambit: 4.cxb5 a6 5.f3 axb5" + }, + "A57r": { + "eco": "A57r", + "fen": "rnbqkb1r/3ppppp/p4n2/1PpP4/8/2N5/PP2PPPP/R1BQKBNR b KQkq - 1 5", + "hash": 12688353036496644096, + "name": "Benko Gambit: Zaitsev Variation" + }, + "A57s": { + "eco": "A57s", + "fen": "rnbqkb1r/3ppppp/5n2/1ppP4/8/2N5/PP2PPPP/R1BQKBNR w KQkq - 0 6", + "hash": 17863212276432068014, + "name": "Benko Gambit: Zaitsev, 5...axb5" + }, + "A57t": { + "eco": "A57t", + "fen": "rnbqkb1r/4pppp/3p1n2/1NpP4/1p2P3/5N2/PP3PPP/R1BQKB1R b KQkq - 1 8", + "hash": 4910310815754356557, + "name": "Benko Gambit: Zaitsev, 8.Nf3" + }, + "A57u": { + "eco": "A57u", + "fen": "rnbqkb1r/4pppp/3p1n2/1NpP4/1pB1P3/8/PP3PPP/R1BQK1NR b KQkq - 1 8", + "hash": 18227111633252626646, + "name": "Benko Gambit: Zaitsev, Nescafe Frappe Attack" + }, + "A57v": { + "eco": "A57v", + "fen": "rnbqkb1r/4pppp/3p1n2/1NpP4/1p2PB2/8/PP3PPP/R2QKBNR b KQkq - 1 8", + "hash": 4905800827069434899, + "name": "Benko Gambit: Zaitsev, 8.Bf4" + }, + "A57w": { + "eco": "A57w", + "fen": "rnbqkb1r/4pp1p/3p1n2/1NpP2p1/1p2PB2/8/PP3PPP/R2QKBNR w KQkq g6 0 9", + "hash": 14147802050171138969, + "name": "Benko Gambit: Zaitsev, 8.Bf4 g5" + }, + "A58a": { + "eco": "A58a", + "fen": "rnbqkb1r/3ppppp/P4n2/2pP4/8/8/PP2PPPP/RNBQKBNR b KQkq - 0 5", + "hash": 4154168095160724798, + "name": "Benko Gambit: 5.bxa6" + }, + "A58b": { + "eco": "A58b", + "fen": "rnbqkb1r/3ppp1p/P4np1/2pP4/8/8/PP2PPPP/RNBQKBNR w KQkq - 0 6", + "hash": 14993259981843693429, + "name": "Benko Gambit: 5.bxa6 g6" + }, + "A58c": { + "eco": "A58c", + "fen": "rn1qkb1r/3ppppp/b4n2/2pP4/8/8/PP2PPPP/RNBQKBNR w KQkq - 0 6", + "hash": 15548437460432442824, + "name": "Benko Gambit: 5.bxa6 Bxa6" + }, + "A58d": { + "eco": "A58d", + "fen": "rn1qkb1r/4pp1p/b2p1np1/2pP4/8/6P1/PP2PPBP/RNBQK1NR w KQkq - 0 8", + "hash": 11448001250658750127, + "name": "Benko Gambit: Accepted, 6.g3 d6 7.Bg2 g6" + }, + "A58e": { + "eco": "A58e", + "fen": "rn1qkb1r/3ppppp/b4n2/2pP4/8/2N5/PP2PPPP/R1BQKBNR b KQkq - 1 6", + "hash": 3193120165865805585, + "name": "Benko Gambit: Accepted, 6.Nc3" + }, + "A58f": { + "eco": "A58f", + "fen": "rn1qkb1r/3ppp1p/b4np1/2pP4/8/2N5/PP2PPPP/R1BQKBNR w KQkq - 0 7", + "hash": 14259643833378587994, + "name": "Benko Gambit: Accepted, 6.Nc3 g6" + }, + "A58g": { + "eco": "A58g", + "fen": "rn1qkb1r/4pppp/b2p1n2/2pP4/8/2N5/PP2PPPP/R1BQKBNR w KQkq - 0 7", + "hash": 1579263454729543292, + "name": "Benko Gambit: Accepted, 6.Nc3 d6" + }, + "A58h": { + "eco": "A58h", + "fen": "rn1qkb1r/4pppp/b2p1n2/2pP4/8/2N3P1/PP2PP1P/R1BQKBNR b KQkq - 0 7", + "hash": 4110679248513975876, + "name": "Benko Gambit: Accepted, 7.g3" + }, + "A58i": { + "eco": "A58i", + "fen": "rn1qkb1r/4pppp/b2p1n2/2pP4/8/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 7", + "hash": 14883912196308303681, + "name": "Benko Gambit: Accepted, 7.Nf3" + }, + "A58j": { + "eco": "A58j", + "fen": "rn1qkb1r/4pp1p/b2p1np1/2pP4/8/2N5/PP1NPPPP/R1BQKB1R b KQkq - 1 8", + "hash": 18021312189075149696, + "name": "Benko Gambit: Accepted, 7.Nf3 g6 8.Nd2" + }, + "A58k": { + "eco": "A58k", + "fen": "rn1qkb1r/4pp1p/b2p1np1/2pP4/8/2N2NP1/PP2PP1P/R1BQKB1R b KQkq - 0 8", + "hash": 854750797531395378, + "name": "Benko Gambit: Fianchetto Variation" + }, + "A58l": { + "eco": "A58l", + "fen": "rn1qk2r/4ppbp/b2p1np1/2pP4/8/2N2NPB/PP2PP1P/R1BQK2R b KQkq - 2 9", + "hash": 2271964251796754985, + "name": "Benko Gambit: Fianchetto, 9.Bh3" + }, + "A58m": { + "eco": "A58m", + "fen": "rn1qk2r/4ppbp/b2p1np1/2pP4/8/2N2NP1/PP2PPBP/R1BQK2R b KQkq - 2 9", + "hash": 1049533987841451745, + "name": "Benko Gambit: Fianchetto, 9.Bg2" + }, + "A58n": { + "eco": "A58n", + "fen": "r2qk2r/4ppbp/bn1p1np1/2pP4/8/2N2NP1/PP2PPBP/R1BQ1RK1 w kq - 5 11", + "hash": 6326117803618010931, + "name": "Benko Gambit: Fianchetto, 9...Nbd7 10.O-O Nb6" + }, + "A58o": { + "eco": "A58o", + "fen": "rn1q1rk1/4ppbp/b2p1np1/2pP4/8/2N2NP1/PP2PPBP/R1BQK2R w KQ - 3 10", + "hash": 304094328452861706, + "name": "Benko Gambit: Fianchetto, 9...O-O" + }, + "A58p": { + "eco": "A58p", + "fen": "r2q1rk1/3nppbp/b2p1np1/2pP4/8/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 5 11", + "hash": 5309282473513843158, + "name": "Benko Gambit: Fianchetto, Main Line" + }, + "A58q": { + "eco": "A58q", + "fen": "r2q1rk1/3nppbp/b2p1np1/2pP4/8/2N2NP1/PP2PPBP/1RBQ1RK1 b - - 6 11", + "hash": 16976546775395581266, + "name": "Benko Gambit: Fianchetto, Main Line, 11.Rb1" + }, + "A58r": { + "eco": "A58r", + "fen": "r2q1rk1/3nppbp/b2p1np1/2pP4/8/2N2NP1/PP2PPBP/R1BQR1K1 b - - 6 11", + "hash": 14779216163872658114, + "name": "Benko Gambit: Fianchetto, Main Line, 11.Re1" + }, + "A58s": { + "eco": "A58s", + "fen": "r2q1rk1/3nppbp/b2p1np1/2pP4/8/2N2NP1/PPQ1PPBP/R1B2RK1 b - - 6 11", + "hash": 17921844209299080626, + "name": "Benko Gambit: Fianchetto, Main Line, 11.Qc2" + }, + "A58t": { + "eco": "A58t", + "fen": "r4rk1/3nppbp/bq1p1np1/2pP4/8/2N2NP1/PPQ1PPBP/R1B2RK1 w - - 7 12", + "hash": 4560123379069358952, + "name": "Benko Gambit: Fianchetto, Main Line, 11.Qc2 Qb6" + }, + "A59a": { + "eco": "A59a", + "fen": "rn1qkb1r/4pppp/b2p1n2/2pP4/4P3/2N5/PP3PPP/R1BQKBNR b KQkq e3 0 7", + "hash": 15126930300013749110, + "name": "Benko Gambit: 7.e4" + }, + "A59b": { + "eco": "A59b", + "fen": "rn1qkb1r/4pp1p/3p1np1/2pP4/4P3/2N5/PP3PPP/R1BQ1KNR w kq - 0 9", + "hash": 6709761955428711901, + "name": "Benko Gambit: 7.e4 Bxf1 8.Kxf1 g6" + }, + "A59c": { + "eco": "A59c", + "fen": "rn1qkb1r/4pp1p/3p1np1/2pP4/4P3/2N5/PP2NPPP/R1BQ1K1R b kq - 1 9", + "hash": 5312337974634557475, + "name": "Benko Gambit: 7.e4 Line, 9.Nge2" + }, + "A59d": { + "eco": "A59d", + "fen": "rn1qkb1r/4pp1p/3p1np1/2pP4/4P3/2N2N2/PP3PPP/R1BQ1K1R b kq - 1 9", + "hash": 9689828869957508320, + "name": "Benko Gambit: 7.e4 Line, 9.Nf3" + }, + "A59e": { + "eco": "A59e", + "fen": "rn1qk2r/4ppbp/3p1np1/2pP4/4P3/2N2N1P/PP3PP1/R1BQ1K1R b kq - 0 10", + "hash": 16012214277431647928, + "name": "Benko Gambit: 7.e4 Line, 9.Nf3 Bg7 10.h3" + }, + "A59f": { + "eco": "A59f", + "fen": "r2qk2r/3nppbp/3p1np1/2pP4/4P3/2N2N1P/PP3PP1/R1BQ1K1R w kq - 1 11", + "hash": 17137792323177460596, + "name": "Benko Gambit: 7.e4 Line, 9.Nf3 Bg7 10.h3 Nbd7" + }, + "A59g": { + "eco": "A59g", + "fen": "rn1qkb1r/4pp1p/3p1np1/2pP4/4P1P1/2N5/PP3P1P/R1BQ1KNR b kq g3 0 9", + "hash": 18325390031276462272, + "name": "Benko Gambit: 7.e4 Line, 9.g4" + }, + "A59h": { + "eco": "A59h", + "fen": "rn1qkb1r/4pp1p/3p1np1/2pP4/4P3/2N3P1/PP3P1P/R1BQ1KNR b kq - 0 9", + "hash": 8213272364877997541, + "name": "Benko Gambit: 7.e4 Line, 9.g3" + }, + "A59i": { + "eco": "A59i", + "fen": "rn1q1rk1/4ppbp/3p1np1/2pP4/4P3/2N2NP1/PP3PKP/R1BQ3R b - - 4 11", + "hash": 5727171907909536279, + "name": "Benko Gambit: 7.e4, Main Line" + }, + "A59j": { + "eco": "A59j", + "fen": "r2q1rk1/3nppbp/3p1np1/2pP4/4P3/2N2NP1/PP3PKP/R1BQ3R w - - 5 12", + "hash": 8978062043095738331, + "name": "Benko Gambit: 7.e4, Main Line, 11...Nbd7" + }, + "A59k": { + "eco": "A59k", + "fen": "r2q1rk1/3nppbp/3p1np1/2pP4/4P3/2N2NP1/PP3PKP/R1BQR3 b - - 6 12", + "hash": 16411055038869070528, + "name": "Benko Gambit: 7.e4, Main Line, 11...Nbd7 12.Re1" + }, + "A59l": { + "eco": "A59l", + "fen": "r4rk1/3nppbp/3p1np1/q1pP4/4P3/2N2NP1/PP3PKP/R1BQR3 w - - 7 13", + "hash": 4236852334377747279, + "name": "Benko Gambit: 7.e4, Main Line, 11...Nbd7 12.Re1 Qa5" + }, + "A59m": { + "eco": "A59m", + "fen": "r2q1rk1/3nppbp/3p2p1/2pP4/4P1n1/2N2NP1/PP3PKP/R1BQR3 w - - 7 13", + "hash": 9123339558545945516, + "name": "Benko Gambit: 7.e4, Main Line, 11...Nbd7 12.Re1 Ng4" + }, + "A59n": { + "eco": "A59n", + "fen": "r2q1rk1/3nppbp/3p1np1/2pP4/4P3/2N2NPP/PP3PK1/R1BQ3R b - - 0 12", + "hash": 10694824682114281001, + "name": "Benko Gambit: 7.e4, Main Line, 11...Nbd7 12.h3" + }, + "A59o": { + "eco": "A59o", + "fen": "3q1rk1/3nppbp/r2p1np1/2pP4/4P3/2N2NPP/PP3PK1/R1BQ3R w - - 1 13", + "hash": 15391709544984597822, + "name": "Benko Gambit: 7.e4, Main Line, 11...Nbd7 12.h3 Ra6" + }, + "A59p": { + "eco": "A59p", + "fen": "r4rk1/3nppbp/1q1p1np1/2pP4/4P3/2N2NPP/PP3PK1/R1BQ3R w - - 1 13", + "hash": 6022535587612571891, + "name": "Benko Gambit: 7.e4, Main Line, 11...Nbd7 12.h3 Qb6" + }, + "A59q": { + "eco": "A59q", + "fen": "r4rk1/3nppbp/3p1np1/q1pP4/4P3/2N2NPP/PP3PK1/R1BQ3R w - - 1 13", + "hash": 5555246460971405222, + "name": "Benko Gambit: 7.e4, Main Line, 11...Nbd7 12.h3 Qa5" + }, + "A60a": { + "eco": "A60a", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/2pP4/2P5/8/PP2PPPP/RNBQKBNR w KQkq - 0 4", + "hash": 9137085317498418749, + "name": "Benoni: 3.d5 e6" + }, + "A60b": { + "eco": "A60b", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/2pP4/2P5/5N2/PP2PPPP/RNBQKB1R b KQkq - 1 4", + "hash": 11937246396690224896, + "name": "Benoni: 4.Nf3" + }, + "A60c": { + "eco": "A60c", + "fen": "rnbqkb1r/pp1p1ppp/5n2/2pP4/8/5N2/PP2PPPP/RNBQKB1R b KQkq - 0 5", + "hash": 10707268876449842134, + "name": "Benoni: 4.Nf3 exd5 5.cxd5" + }, + "A60d": { + "eco": "A60d", + "fen": "rnbqk2r/pp1p1ppp/3b1n2/2pP4/8/5N2/PP2PPPP/RNBQKB1R w KQkq - 1 6", + "hash": 3517225352058983154, + "name": "Benoni: Snake Variation vs. 4.Nf3" + }, + "A60e": { + "eco": "A60e", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/2pP4/2P5/6P1/PP2PP1P/RNBQKBNR b KQkq - 0 4", + "hash": 5921048161148333573, + "name": "Benoni: 4.g3" + }, + "A60f": { + "eco": "A60f", + "fen": "rnbqkb1r/p2p1ppp/5n2/1ppP4/8/6P1/PP2PP1P/RNBQKBNR w KQkq b6 0 6", + "hash": 221206287642232814, + "name": "Benoni: 4.g3 exd5 5.cxd5 b5" + }, + "A60g": { + "eco": "A60g", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/2pP4/2P5/2N5/PP2PPPP/R1BQKBNR b KQkq - 1 4", + "hash": 9609109360442389732, + "name": "Benoni: 4.Nc3" + }, + "A60h": { + "eco": "A60h", + "fen": "rnbqkb1r/pp1p1ppp/5n2/2pN4/2P5/8/PP2PPPP/R1BQKBNR b KQkq - 0 5", + "hash": 8724482314770943605, + "name": "Benoni: 4.Nc3 exd5 5.Nxd5" + }, + "A60i": { + "eco": "A60i", + "fen": "rnbqkb1r/pp1p1ppp/5n2/2pP4/8/2N5/PP2PPPP/R1BQKBNR b KQkq - 0 5", + "hash": 12998558426126049330, + "name": "Benoni: 4.Nc3 exd5 5.cxd5" + }, + "A60j": { + "eco": "A60j", + "fen": "rnbqk2r/pp1p1ppp/3b1n2/2pP4/8/2N5/PP2PPPP/R1BQKBNR w KQkq - 1 6", + "hash": 1169886445884518678, + "name": "Benoni: Snake Variation" + }, + "A60k": { + "eco": "A60k", + "fen": "rnbqk2r/pp1p1ppp/3b1n2/2pP4/8/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 2 6", + "hash": 14652647687671500843, + "name": "Benoni: Snake, 6.Nf3" + }, + "A60l": { + "eco": "A60l", + "fen": "rnbqk2r/ppbp1ppp/5n2/2pP4/8/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 3 7", + "hash": 8681317016742100806, + "name": "Benoni: Snake, 6.Nf3 Bc7" + }, + "A60m": { + "eco": "A60m", + "fen": "rnbqk2r/pp1p1ppp/3b1n2/2pP4/4P3/2N5/PP3PPP/R1BQKBNR b KQkq e3 0 6", + "hash": 15292897012924353564, + "name": "Benoni: Snake, 6.e4" + }, + "A60n": { + "eco": "A60n", + "fen": "rnbq1rk1/pp1p1ppp/3b1n2/2pP4/4P3/2N2N2/PP3PPP/R1BQKB1R b KQ - 2 7", + "hash": 429893169648403658, + "name": "Benoni: Snake, 6.e4 O-O 7.Nf3" + }, + "A60o": { + "eco": "A60o", + "fen": "rnbqkb1r/pp1p1p1p/5np1/2pP4/8/2N5/PP2PPPP/R1BQKBNR w KQkq - 0 6", + "hash": 6760038691167072889, + "name": "Benoni: 4.Nc3 exd5 5.cxd5 g6" + }, + "A60p": { + "eco": "A60p", + "fen": "rnbqkb1r/pp3ppp/3p1n2/2pP4/8/2N5/PP2PPPP/R1BQKBNR w KQkq - 0 6", + "hash": 10222817546237585759, + "name": "Benoni: 4.Nc3 exd5 5.cxd5 d6" + }, + "A60q": { + "eco": "A60q", + "fen": "rnbqkb1r/pp3ppp/3p1n2/2pP4/8/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 6", + "hash": 6249398225719609442, + "name": "Benoni: 4.Nc3 exd5 5.cxd5 d6 6.Nf3" + }, + "A61": { + "eco": "A61", + "fen": "rnbqkb1r/pp3p1p/3p1np1/2pP4/8/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 0 7", + "hash": 13766943070169258537, + "name": "Benoni: 6.Nf3 g6" + }, + "A62": { + "eco": "A62", + "fen": "rnbq1rk1/pp3pbp/3p1np1/2pP4/8/2N2NP1/PP2PPBP/R1BQK2R w KQ - 3 9", + "hash": 11244443689194551337, + "name": "Benoni: Fianchetto, 8.Bg2 O-O" + }, + "A63": { + "eco": "A63", + "fen": "r1bq1rk1/pp1n1pbp/3p1np1/2pP4/8/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 5 10", + "hash": 15103465235560386293, + "name": "Benoni: Fianchetto, 9...Nbd7" + }, + "A64": { + "eco": "A64", + "fen": "r1bqr1k1/1p1n1pbp/p2p1np1/2pP4/P7/2N3P1/1P1NPPBP/R1BQ1RK1 w - - 1 12", + "hash": 12238419993044662511, + "name": "Benoni: Fianchetto, 11...Re8" + }, + "A65a": { + "eco": "A65a", + "fen": "rnbqkb1r/pp3ppp/3p1n2/2pP4/4P3/2N5/PP3PPP/R1BQKBNR b KQkq e3 0 6", + "hash": 5321481444137079893, + "name": "Benoni: 6.e4" + }, + "A65b": { + "eco": "A65b", + "fen": "rnbqkb1r/pp3p1p/3p1np1/2pP4/4P3/2N5/PP3PPP/R1BQKBNR w KQkq - 0 7", + "hash": 11560142618877756958, + "name": "Benoni: 6.e4 g6" + }, + "A65c": { + "eco": "A65c", + "fen": "rnbqkb1r/pp3p1p/3p1np1/2pP4/4PB2/2N5/PP3PPP/R2QKBNR b KQkq - 1 7", + "hash": 8879135799177702525, + "name": "Benoni: 6.e4 g6 7.Bf4" + }, + "A65d": { + "eco": "A65d", + "fen": "rnbqkb1r/1p3p1p/p2p1np1/2pP4/4PB2/2N5/PP3PPP/R2QKBNR w KQkq - 0 8", + "hash": 12235988837675832481, + "name": "Benoni: 6.e4 g6 7.Bf4 a6" + }, + "A65e": { + "eco": "A65e", + "fen": "rnbqkb1r/5p1p/p2p1np1/1ppP4/4PB2/2N2N2/PP3PPP/R2QKB1R w KQkq b6 0 9", + "hash": 1346138576153987233, + "name": "Benoni: 6.e4 g6 7.Bf4 a6 8.Nf3 b5" + }, + "A65f": { + "eco": "A65f", + "fen": "rnbqkb1r/pp3p1p/3p1np1/2pP4/4P3/2NB4/PP3PPP/R1BQK1NR b KQkq - 1 7", + "hash": 17681204518371509357, + "name": "Benoni: 6.e4 g6 7.Bd3" + }, + "A65g": { + "eco": "A65g", + "fen": "rnbqk2r/pp3pbp/3p1np1/2pP4/4P3/2NB4/PP2NPPP/R1BQK2R b KQkq - 3 8", + "hash": 5870608884736721465, + "name": "Benoni: 6.e4 g6 7.Bd3 Bg7 8.Nge2" + }, + "A65h": { + "eco": "A65h", + "fen": "rnbq1rk1/p4pbp/1p1p1np1/2pP4/4P3/2NB4/PP2NPPP/R1BQ1RK1 w - - 0 10", + "hash": 5677992661648508761, + "name": "Benoni: 6.e4 g6 7.Bd3 Bg7 8.Nge2 O-O 9.O-O b6" + }, + "A65i": { + "eco": "A65i", + "fen": "r1bq1rk1/pp3pbp/n2p1np1/2pP4/4P3/2NB4/PP2NPPP/R1BQ1RK1 w - - 6 10", + "hash": 7720764871006596222, + "name": "Benoni: 6.e4 g6 7.Bd3 Bg7 8.Nge2 O-O 9.O-O Na6" + }, + "A65j": { + "eco": "A65j", + "fen": "rnbq1rk1/1p3pbp/p2p1np1/2pP4/4P3/2NB4/PP2NPPP/R1BQ1RK1 w - - 0 10", + "hash": 17821571507629246494, + "name": "Benoni: 6.e4 g6 7.Bd3 Bg7 8.Nge2 O-O 9.O-O a6" + }, + "A65k": { + "eco": "A65k", + "fen": "rnbqkb1r/pp3p1p/3p1np1/2pP4/4P3/2N2P2/PP4PP/R1BQKBNR b KQkq - 0 7", + "hash": 14905795768967948655, + "name": "Benoni: Smisch (6.e4 g6 7.f3)" + }, + "A65l": { + "eco": "A65l", + "fen": "rnbqk2r/pp3pbp/3p1np1/2pP4/4P3/2N2P2/PP2N1PP/R1BQKB1R b KQkq - 2 8", + "hash": 7693503031865126715, + "name": "Benoni: Smisch, 8.Nge2" + }, + "A65m": { + "eco": "A65m", + "fen": "rnbqk2r/pp3pbp/3p1np1/2pP4/4P3/2N1BP2/PP4PP/R2QKBNR b KQkq - 2 8", + "hash": 966162984087271755, + "name": "Benoni: Smisch, 8.Be3" + }, + "A65n": { + "eco": "A65n", + "fen": "rnbqk2r/pp3pbp/3p1np1/2pP2B1/4P3/2N2P2/PP4PP/R2QKBNR b KQkq - 2 8", + "hash": 13275042454724671757, + "name": "Benoni: Smisch, 8.Bg5" + }, + "A65o": { + "eco": "A65o", + "fen": "rnbq1rk1/pp3pbp/3p1np1/2pP2B1/4P3/2N2P2/PP2N1PP/R2QKB1R b KQ - 4 9", + "hash": 11976877630720122136, + "name": "Benoni: Smisch, 8.Bg5 O-O 9.Nge2" + }, + "A65p": { + "eco": "A65p", + "fen": "rnbq1rk1/pp3pbp/3p1np1/2pP2B1/4P3/2N2P2/PP1Q2PP/R3KBNR b KQ - 4 9", + "hash": 11135940624597372742, + "name": "Benoni: Smisch, 8.Bg5 O-O 9.Qd2" + }, + "A65q": { + "eco": "A65q", + "fen": "rnbq1rk1/1p3pbp/p2p1np1/2pP2B1/4P3/2N2P2/PP1Q2PP/R3KBNR w KQ - 0 10", + "hash": 5223400466676135834, + "name": "Benoni: Smisch, 8.Bg5 O-O 9.Qd2 a6" + }, + "A65r": { + "eco": "A65r", + "fen": "rnbqk2r/pp3pb1/3p1npp/2pP2B1/4P3/2N2P2/PP4PP/R2QKBNR w KQkq - 0 9", + "hash": 3084164895814692888, + "name": "Benoni: Smisch, 8.Bg5 h6" + }, + "A65s": { + "eco": "A65s", + "fen": "rnbq1rk1/pp3pb1/3p1npp/2pP4/4P3/2N1BP2/PP2N1PP/R2QKB1R b KQ - 3 10", + "hash": 8738649766019600706, + "name": "Benoni: Smisch, 8.Bg5 h6 9.Be3 O-O 10.Nge2" + }, + "A65t": { + "eco": "A65t", + "fen": "rnbq1rk1/pp3pb1/3p1npp/2pP4/4P3/2N1BP2/PP1Q2PP/R3KBNR b KQ - 3 10", + "hash": 5042149121468973852, + "name": "Benoni: Smisch, 8.Bg5 h6 9.Be3 O-O 10.Qd2" + }, + "A65u": { + "eco": "A65u", + "fen": "rnbqr1k1/pp3pb1/3p1npp/2pP4/4P3/2N1BP2/PP1Q2PP/R3KBNR w KQ - 4 11", + "hash": 6460563926701844126, + "name": "Benoni: Smisch, 8.Bg5 h6 9.Be3 O-O 10.Qd2 Re8" + }, + "A65v": { + "eco": "A65v", + "fen": "rnbq1rk1/1p3pb1/p2p1npp/2pP4/4P3/2N1BP2/PP1Q2PP/R3KBNR w KQ - 0 11", + "hash": 10884846371476880320, + "name": "Benoni: Smisch, 8.Bg5 h6 9.Be3 O-O 10.Qd2 a6" + }, + "A65w": { + "eco": "A65w", + "fen": "rnbq1rk1/1p3pb1/p2p1np1/2pP3p/P3P3/2N1BP2/1P1Q2PP/R3KBNR w KQ - 0 12", + "hash": 10067853325225984869, + "name": "Benoni: Smisch, 8.Bg5 h6 9.Be3 O-O 10.Qd2 a6 11.a4 h5" + }, + "A65x": { + "eco": "A65x", + "fen": "r1bq1rk1/1p1n1pb1/p2p1npp/2pP4/P3P3/2N1BP2/1P1Q2PP/R3KBNR w KQ - 1 12", + "hash": 14926261408993575874, + "name": "Benoni: Smisch, 8.Bg5 h6 9.Be3 O-O 10.Qd2 a6 11.a4 Nbd7" + }, + "A65y": { + "eco": "A65y", + "fen": "rnbqr1k1/1p3pb1/p2p1npp/2pP4/P3P3/2N1BP2/1P1Q2PP/R3KBNR w KQ - 1 12", + "hash": 16183130793050573708, + "name": "Benoni: Smisch, 8.Bg5 h6 9.Be3 O-O 10.Qd2 a6 11.a4 Re8" + }, + "A66": { + "eco": "A66", + "fen": "rnbqkb1r/pp3p1p/3p1np1/2pP4/4PP2/2N5/PP4PP/R1BQKBNR b KQkq f3 0 7", + "hash": 6736150822331169687, + "name": "Benoni: Four Pawns Attack" + }, + "A67a": { + "eco": "A67a", + "fen": "rnbqk2r/pp3pbp/3p1np1/1BpP4/4PP2/2N5/PP4PP/R1BQK1NR b KQkq - 2 8", + "hash": 16003947417234990014, + "name": "Benoni: Four Pawns, Taimanov (Alatortsev) Variation" + }, + "A67b": { + "eco": "A67b", + "fen": "r1bqk2r/pp1n1pbp/3p1np1/1BpP4/4PP2/2N5/PP4PP/R1BQK1NR w KQkq - 3 9", + "hash": 17148029800237665906, + "name": "Benoni: Four Pawns, Taimanov, 8...Nbd7" + }, + "A67c": { + "eco": "A67c", + "fen": "r1bqk2r/pp1n1pbp/4P1p1/1BpP3n/8/2N5/PP4PP/R1BQK1NR b KQkq - 0 11", + "hash": 2386801655626280344, + "name": "Benoni: Four Pawns, Taimanov, 8...Nbd7 9.e5 dxe5 10.fxe5 Nh5 11.e6" + }, + "A67d": { + "eco": "A67d", + "fen": "rnbqk2r/pp1n1pbp/3p2p1/1BpP4/4PP2/2N5/PP4PP/R1BQK1NR w KQkq - 3 9", + "hash": 2836831003670899275, + "name": "Benoni: Four Pawns, Taimanov, 8...Nfd7" + }, + "A67e": { + "eco": "A67e", + "fen": "rnbqk2r/pp1n1pbp/3p2p1/2pP4/4PP2/2NB4/PP4PP/R1BQK1NR b KQkq - 4 9", + "hash": 13356309129508798130, + "name": "Benoni: Four Pawns, Taimanov, 9.Bd3" + }, + "A67f": { + "eco": "A67f", + "fen": "rnbq1rk1/pp1n1pbp/3p2p1/2pP4/4PP2/2NB4/PP4PP/R1BQK1NR w KQ - 5 10", + "hash": 12966929667250739033, + "name": "Benoni: Four Pawns, Taimanov, 9.Bd3 O-O" + }, + "A67g": { + "eco": "A67g", + "fen": "rnbq1rk1/pp1n1pbp/3p2p1/2pP4/4PP2/2NB1N2/PP4PP/R1BQK2R b KQ - 6 10", + "hash": 7536533332793898596, + "name": "Benoni: Four Pawns, Taimanov, 9.Bd3 O-O 10.Nf3" + }, + "A67h": { + "eco": "A67h", + "fen": "rnbq1rk1/1p1n1pbp/p2p2p1/2pP4/4PP2/2NB1N2/PP4PP/R1BQK2R w KQ - 0 11", + "hash": 13429968083673599672, + "name": "Benoni: Four Pawns, Taimanov, 9.Bd3 O-O 10.Nf3 a6" + }, + "A67i": { + "eco": "A67i", + "fen": "rnbq1rk1/1p1n1pbp/p2p2p1/2pP4/P3PP2/2NB1N2/1P4PP/R1BQK2R b KQ a3 0 11", + "hash": 15107793605061843830, + "name": "Benoni: Four Pawns, Taimanov, 9.Bd3 O-O 10.Nf3 a6" + }, + "A67j": { + "eco": "A67j", + "fen": "r1bq1rk1/pp1n1pbp/n2p2p1/2pP4/4PP2/2NB1N2/PP4PP/R1BQK2R w KQ - 7 11", + "hash": 2744819394368350936, + "name": "Benoni: Four Pawns, Taimanov, 9.Bd3 O-O 10.Nf3 Na6" + }, + "A67k": { + "eco": "A67k", + "fen": "rnbqk2r/pp1n1pbp/3p2p1/1BpP4/P3PP2/2N5/1P4PP/R1BQK1NR b KQkq a3 0 9", + "hash": 5518893238197272453, + "name": "Benoni: Four Pawns, Taimanov, 9.a4 (Zaitsev)" + }, + "A67l": { + "eco": "A67l", + "fen": "rnb1k2r/pp1n1pbp/3p2p1/1BpP4/P3PP1q/2N5/1P4PP/R1BQK1NR w KQkq - 1 10", + "hash": 12866969814135682939, + "name": "Benoni: Four Pawns, Taimanov, 9.a4 Qh4+" + }, + "A67m": { + "eco": "A67m", + "fen": "rnbqk2r/1p1n1pbp/p2p2p1/1BpP4/P3PP2/2N5/1P4PP/R1BQK1NR w KQkq - 0 10", + "hash": 11412400573051127641, + "name": "Benoni: Four Pawns, Taimanov, 9.a4 a6" + }, + "A67n": { + "eco": "A67n", + "fen": "rnbqk2r/1p1n1pbp/p2p2p1/2pP4/P3PP2/2NB4/1P4PP/R1BQK1NR b KQkq - 1 10", + "hash": 28617525941932960, + "name": "Benoni: Four Pawns, Taimanov, 9.a4 a6 10.Bd3" + }, + "A67o": { + "eco": "A67o", + "fen": "rnbqk2r/1p1n1pbp/p2p2p1/2pP4/P3PP2/2N5/1P2B1PP/R1BQK1NR b KQkq - 1 10", + "hash": 2803641571935460208, + "name": "Benoni: Four Pawns, Taimanov, 9.a4 a6 10.Be2" + }, + "A67p": { + "eco": "A67p", + "fen": "rnbq1rk1/pp1n1pbp/3p2p1/1BpP4/P3PP2/2N5/1P4PP/R1BQK1NR w KQ - 1 10", + "hash": 5062012580232713838, + "name": "Benoni: Four Pawns, Taimanov, 9.a4 O-O" + }, + "A67q": { + "eco": "A67q", + "fen": "rnbq1rk1/pp1n1pbp/3p2p1/1BpP4/P3PP2/2N2N2/1P4PP/R1BQK2R b KQ - 2 10", + "hash": 11338671232895825747, + "name": "Benoni: Four Pawns, Taimanov, 9.a4 O-O 10.Nf3" + }, + "A67r": { + "eco": "A67r", + "fen": "r1bq1rk1/pp1n1pbp/n2p2p1/1BpP4/P3PP2/2N2N2/1P4PP/R1BQK2R w KQ - 3 11", + "hash": 15265978953824578543, + "name": "Benoni: Four Pawns, Taimanov, 9.a4 O-O 10.Nf3 Na6" + }, + "A67s": { + "eco": "A67s", + "fen": "r1bq1rk1/ppnn1pbp/3p2p1/1BpP4/P3PP2/2N2N2/1P4PP/R1BQ1RK1 w - - 5 12", + "hash": 1120819493052497174, + "name": "Benoni: Four Pawns, Taimanov, 9.a4 O-O 10.Nf3 Na6 11.O-O Nc7" + }, + "A68a": { + "eco": "A68a", + "fen": "rnbqk2r/pp3pbp/3p1np1/2pP4/4PP2/2N2N2/PP4PP/R1BQKB1R b KQkq - 2 8", + "hash": 3937074316161618176, + "name": "Benoni: Four Pawns, 8.Nf3" + }, + "A68b": { + "eco": "A68b", + "fen": "rnbq1rk1/pp3pbp/3p1np1/2pP4/4PP2/2NB1N2/PP4PP/R1BQK2R b KQ - 4 9", + "hash": 7567736424799779480, + "name": "Benoni: Four Pawns, 9.Bd3" + }, + "A68c": { + "eco": "A68c", + "fen": "rnbq1rk1/pp3pbp/3p1np1/2pP4/4PP2/2N2N2/PP2B1PP/R1BQK2R b KQ - 4 9", + "hash": 5731712840714957384, + "name": "Benoni: Four Pawns, 9.Be2" + }, + "A68d": { + "eco": "A68d", + "fen": "rnbq1rk1/p4pbp/3p1np1/1ppP4/4PP2/2N2N2/PP2B1PP/R1BQK2R w KQ b6 0 10", + "hash": 3427037420400512885, + "name": "Benoni: Four Pawns, 9.Be2 b5" + }, + "A68e": { + "eco": "A68e", + "fen": "rnbq1rk1/p4pbp/3p1np1/1ppPP3/5P2/2N2N2/PP2B1PP/R1BQK2R b KQ - 0 10", + "hash": 5689839209493276945, + "name": "Benoni: Four Pawns, 9.Be2 b5 10.e5" + }, + "A68f": { + "eco": "A68f", + "fen": "rnbq1rk1/p4pbp/5np1/1ppPp3/5P2/2N2N2/PP2B1PP/R1BQK2R w KQ - 0 11", + "hash": 8418175975956801432, + "name": "Benoni: Four Pawns, 9.Be2 b5 10.e5 dxe5" + }, + "A68g": { + "eco": "A68g", + "fen": "rnbq1rk1/p4pbp/6p1/1ppPP1B1/6n1/2N2N2/PP2B1PP/R2QK2R b KQ - 2 12", + "hash": 11760405512280955304, + "name": "Benoni: Four Pawns, 9.Be2 b5 10.e5 dxe5 11.fxe5 Ng4 12.Bg5" + }, + "A68h": { + "eco": "A68h", + "fen": "rn1q1rk1/pp3pbp/3p1np1/2pP4/4PPb1/2N2N2/PP2B1PP/R1BQK2R w KQ - 5 10", + "hash": 5573459933579000994, + "name": "Benoni: Four Pawns, 9.Be2 Bg4" + }, + "A68i": { + "eco": "A68i", + "fen": "rn1q1rk1/pp3pbp/3p1np1/2pPP3/5Pb1/2N2N2/PP2B1PP/R1BQK2R b KQ - 0 10", + "hash": 3180102889717045958, + "name": "Benoni: Four Pawns, 9.Be2 Bg4 10.e5" + }, + "A68j": { + "eco": "A68j", + "fen": "rn1q1rk1/pp3pbp/3p1np1/2pP4/4PPb1/2N2N2/PP2B1PP/R1BQ1RK1 b - - 6 10", + "hash": 3687765795408635826, + "name": "Benoni: Four Pawns, 9.Be2 Bg4 10.O-O" + }, + "A68k": { + "eco": "A68k", + "fen": "r2q1rk1/pp1n1pbp/3p1np1/2pP4/4PPb1/2N2N2/PP2B1PP/R1BQ1RK1 w - - 7 11", + "hash": 58239130181700222, + "name": "Benoni: Four Pawns, 9.Be2 Bg4 10.O-O Nbd7" + }, + "A68l": { + "eco": "A68l", + "fen": "r2q1rk1/pp1n1pbp/3p1np1/2pP4/4PPb1/2N2N1P/PP2B1P1/R1BQ1RK1 b - - 0 11", + "hash": 16734590686864720780, + "name": "Benoni: Four Pawns, 9.Be2 Bg4 10.O-O Nbd7 11.h3" + }, + "A68m": { + "eco": "A68m", + "fen": "r2qr1k1/pp1n1pbp/3p1np1/2pP4/4PP2/2N2B1P/PP4P1/R1BQ1RK1 w - - 1 13", + "hash": 6091942525030768969, + "name": "Benoni: Four Pawns, 9.Be2 Bg4 10.O-O Nbd7 11.h3 Bxf3 12.Bxf3 Re8" + }, + "A68n": { + "eco": "A68n", + "fen": "r2qr1k1/pp1n1pbp/3p1np1/2pP4/4PP2/2N2B1P/PP4P1/R1BQR1K1 b - - 2 13", + "hash": 15005681665742113373, + "name": "Benoni: Four Pawns, 9.Be2 Bg4 10.O-O Nbd7 11.h3 Bxf3 12.Bxf3 Re8 13.Re1" + }, + "A69a": { + "eco": "A69a", + "fen": "rnbqr1k1/pp3pbp/3p1np1/2pP4/4PP2/2N2N2/PP2B1PP/R1BQK2R w KQ - 5 10", + "hash": 6042393869141465034, + "name": "Benoni: Four Pawns, Main Line" + }, + "A69b": { + "eco": "A69b", + "fen": "rnbqr1k1/pp3pbp/3p1np1/2pP4/4PP2/2N2N2/PP2B1PP/R1BQ1RK1 b - - 6 10", + "hash": 3292023582982343898, + "name": "Benoni: Four Pawns, Main Line, 10.O-O" + }, + "A69c": { + "eco": "A69c", + "fen": "rnbqr1k1/pp3pbp/3p1np1/2pP4/4PP2/2N5/PP1NB1PP/R1BQK2R b KQ - 6 10", + "hash": 10302123588044581184, + "name": "Benoni: Four Pawns, Main Line, 10.Nd2" + }, + "A69d": { + "eco": "A69d", + "fen": "rnbqr1k1/1p3pbp/p2p1np1/2pP4/4PP2/2N5/PP1NB1PP/R1BQK2R w KQ - 0 11", + "hash": 6633678151907086748, + "name": "Benoni: Four Pawns, Main Line, 10.Nd2 a6" + }, + "A69e": { + "eco": "A69e", + "fen": "r1bqr1k1/pp1n1pbp/3p1np1/2pP4/4PP2/2N5/PP1NB1PP/R1BQK2R w KQ - 7 11", + "hash": 13626491213056640140, + "name": "Benoni: Four Pawns, Main Line, 10.Nd2 Nbd7" + }, + "A69f": { + "eco": "A69f", + "fen": "rnbqr1k1/pp3pbp/3p1np1/2pPP3/5P2/2N2N2/PP2B1PP/R1BQK2R b KQ - 0 10", + "hash": 3649028166761247150, + "name": "Benoni: Four Pawns, Main Line, 10.e5" + }, + "A69g": { + "eco": "A69g", + "fen": "rnbqr1k1/pp3pbp/6p1/2pPP3/6n1/2N2N2/PP2B1PP/R1BQ1RK1 b - - 2 12", + "hash": 7444410423042441679, + "name": "Benoni: Four Pawns, Main Line, 10.e5: 12.O-O" + }, + "A69h": { + "eco": "A69h", + "fen": "rnbqr1k1/pp3pbp/4P1p1/2pP4/6n1/2N2N2/PP2B1PP/R1BQK2R b KQ - 0 12", + "hash": 11168853262162972694, + "name": "Benoni: Four Pawns, Main Line, 10.e5: 12.e6" + }, + "A69i": { + "eco": "A69i", + "fen": "rnbqr1k1/pp3pbp/6p1/2pPP1B1/6n1/2N2N2/PP2B1PP/R2QK2R b KQ - 2 12", + "hash": 16096137560942706967, + "name": "Benoni: Four Pawns, Main Line, 10.e5: 12.Bg5" + }, + "A69j": { + "eco": "A69j", + "fen": "rnbqr1k1/pp4bp/5pp1/2pPP1B1/6n1/2N2N2/PP2B1PP/R2QK2R w KQ - 0 13", + "hash": 1384278119736350312, + "name": "Benoni: Four Pawns, Main Line, 10.e5: 12.Bg5 f6" + }, + "A69k": { + "eco": "A69k", + "fen": "rnb1r1k1/pp3pbp/1q4p1/2pPP1B1/6n1/2N2N2/PP2B1PP/R2QK2R w KQ - 3 13", + "hash": 1774147238291560397, + "name": "Benoni: Four Pawns, Main Line, 10.e5: 12.Bg5 Qb6" + }, + "A69l": { + "eco": "A69l", + "fen": "rnb1r1k1/pp3pbp/1q4p1/2pPN1B1/8/2N5/PP2B1PP/R2Q1RK1 b - - 0 14", + "hash": 1517902161660402444, + "name": "Benoni: Four Pawns, Main Line, 10.e5: 12.Bg5 Qb6 13.O-O Nxe5 14.Nxe5" + }, + "A69m": { + "eco": "A69m", + "fen": "rnb1r1k1/pp3pbp/1q1P2p1/2p1n1B1/8/2N2N2/PP2B1PP/R2Q1RK1 b - - 0 14", + "hash": 14944222046215246681, + "name": "Benoni: Four Pawns, Main Line, 10.e5: 12.Bg5 Qb6 13.O-O Nxe5 14.d6" + }, + "A70a": { + "eco": "A70a", + "fen": "rnbqkb1r/pp3p1p/3p1np1/2pP4/4P3/2N2N2/PP3PPP/R1BQKB1R b KQkq - 1 7", + "hash": 8865631088705693475, + "name": "Benoni: Classical" + }, + "A70b": { + "eco": "A70b", + "fen": "rnbqkb1r/1p3p1p/p2p1np1/2pP4/4P3/2N2N2/PP3PPP/R1BQKB1R w KQkq - 0 8", + "hash": 12249506707408330751, + "name": "Benoni: Classical, 7...a6" + }, + "A70c": { + "eco": "A70c", + "fen": "rn1qkb1r/1p3p1p/p2p1np1/2pP4/P3P1b1/2N2N2/1P2BPPP/R1BQK2R b KQkq - 2 9", + "hash": 12926679292785790584, + "name": "Benoni: Classical, 7...a6 8.a4 Bg4 9.Be2" + }, + "A70d": { + "eco": "A70d", + "fen": "rnbqk2r/pp3pbp/3p1np1/2pP4/4P3/2N2N2/PP3PPP/R1BQKB1R w KQkq - 2 8", + "hash": 14678692669500271753, + "name": "Benoni: Classical, 7...Bg7" + }, + "A70e": { + "eco": "A70e", + "fen": "rnbqk2r/pp3pbp/3p1np1/2pP4/4P3/2N2N2/PP2BPPP/R1BQK2R b KQkq - 3 8", + "hash": 13273712079905547818, + "name": "Benoni: Classical, 8.Be2" + }, + "A70f": { + "eco": "A70f", + "fen": "rnbqk2r/pp3pbp/3p1np1/2pP4/Q3P3/2N2N2/PP3PPP/R1B1KB1R b KQkq - 3 8", + "hash": 1806379381108465394, + "name": "Benoni: Classical, 8.Qa4+" + }, + "A70g": { + "eco": "A70g", + "fen": "rnbqk2r/pp3pbp/3p1np1/2pP4/4PB2/2N2N2/PP3PPP/R2QKB1R b KQkq - 3 8", + "hash": 1216490558127687402, + "name": "Benoni: Classical, 8.Bf4" + }, + "A70h": { + "eco": "A70h", + "fen": "rnbqk2r/pp3pbp/3p1np1/2pP4/4P3/2NB1N2/PP3PPP/R1BQK2R b KQkq - 3 8", + "hash": 11437050219124059898, + "name": "Benoni: Classical, 8.Bd3" + }, + "A70i": { + "eco": "A70i", + "fen": "rnbq1rk1/pp3pbp/3p1np1/2pP4/4P3/2NB1N2/PP3PPP/R1BQ1RK1 b - - 5 9", + "hash": 16889912676272790529, + "name": "Benoni: Classical, 8.Bd3 O-O 9.O-O" + }, + "A70j": { + "eco": "A70j", + "fen": "rnbqk2r/pp3pbp/3p1np1/2pP4/4P3/2N2N1P/PP3PP1/R1BQKB1R b KQkq - 0 8", + "hash": 2541979112819549563, + "name": "Benoni: Classical, 8.h3" + }, + "A70k": { + "eco": "A70k", + "fen": "rnbq1rk1/pp3pbp/3p1np1/2pP4/4P3/2NB1N1P/PP3PP1/R1BQK2R b KQ - 2 9", + "hash": 8999213076902006499, + "name": "Benoni: Classical, 8.h3 O-O 9.Bd3" + }, + "A70l": { + "eco": "A70l", + "fen": "rn1q1rk1/pp1b1pbp/3p1np1/2pP4/4P3/2NB1N1P/PP3PP1/R1BQK2R w KQ - 3 10", + "hash": 11394774253717003986, + "name": "Benoni: Classical, 8.h3 O-O 9.Bd3 Bd7" + }, + "A70m": { + "eco": "A70m", + "fen": "r1bq1rk1/pp3pbp/n2p1np1/2pP4/4P3/2NB1N1P/PP3PP1/R1BQK2R w KQ - 3 10", + "hash": 3630757877539721823, + "name": "Benoni: Classical, 8.h3 O-O 9.Bd3 Na6" + }, + "A70n": { + "eco": "A70n", + "fen": "rnbqr1k1/pp3pbp/3p1np1/2pP4/4P3/2NB1N1P/PP3PP1/R1BQK2R w KQ - 3 10", + "hash": 6967745772930181985, + "name": "Benoni: Classical, 8.h3 O-O 9.Bd3 Re8" + }, + "A70o": { + "eco": "A70o", + "fen": "rnbqr1k1/pp3pbp/3p1np1/3P4/2p1P3/2NB1N1P/PP3PP1/R1BQ1RK1 w - - 0 11", + "hash": 14328385331293117180, + "name": "Benoni: Classical, 8.h3 O-O 9.Bd3 Re8 10.O-O c4" + }, + "A70p": { + "eco": "A70p", + "fen": "rnbq1rk1/1p3pbp/p2p1np1/2pP4/4P3/2NB1N1P/PP3PP1/R1BQK2R w KQ - 0 10", + "hash": 12543740399147791935, + "name": "Benoni: Classical, 8.h3 O-O 9.Bd3 a6" + }, + "A70q": { + "eco": "A70q", + "fen": "rnbq1rk1/5pbp/p2p1np1/1ppP4/4P3/2NB1N1P/PP3PP1/R1BQ1RK1 w - b6 0 11", + "hash": 12710636231683592210, + "name": "Benoni: Classical, 8.h3 O-O 9.Bd3 a6 10.O-O b5" + }, + "A70r": { + "eco": "A70r", + "fen": "rnbq1rk1/1p3pbp/p2p1np1/2pP4/P3P3/2NB1N1P/1P3PP1/R1BQK2R b KQ a3 0 10", + "hash": 14257604233275139057, + "name": "Benoni: Classical, 8.h3 O-O 9.Bd3 a6 10.a4" + }, + "A70s": { + "eco": "A70s", + "fen": "r1bq1rk1/1p1n1pbp/p2p1np1/2pP4/P3P3/2NB1N1P/1P3PP1/R1BQK2R w KQ - 1 11", + "hash": 17743712900667706941, + "name": "Benoni: Classical, 8.h3 O-O 9.Bd3 a6 10.a4 Nbd7" + }, + "A70t": { + "eco": "A70t", + "fen": "r1bqr1k1/1p1n1pbp/p2p1np1/2pP4/P3P3/2NB1N1P/1P3PP1/R1BQ1RK1 w - - 3 12", + "hash": 10672098089056317615, + "name": "Benoni: Classical, 8.h3 O-O 9.Bd3 a6 10.a4 Nbd7 11.O-O Re8" + }, + "A70u": { + "eco": "A70u", + "fen": "rnbq1rk1/p4pbp/3p1np1/1ppP4/4P3/2NB1N1P/PP3PP1/R1BQK2R w KQ b6 0 10", + "hash": 2082856040451732446, + "name": "Benoni: Classical, 8.h3 O-O 9.Bd3 b5" + }, + "A70v": { + "eco": "A70v", + "fen": "rnbq1rk1/p4pbp/3p1np1/1BpP4/4P3/2N2N1P/PP3PP1/R1BQK2R b KQ - 0 10", + "hash": 10827801361165594470, + "name": "Benoni: Classical, 8.h3 O-O 9.Bd3 b5 10.Bxb5" + }, + "A70w": { + "eco": "A70w", + "fen": "rnbq1rk1/p4pbp/3p1np1/1NpP4/4P3/3B1N1P/PP3PP1/R1BQK2R b KQ - 0 10", + "hash": 18201031923539471717, + "name": "Benoni: Classical, 8.h3 O-O 9.Bd3 b5 10.Nxb5" + }, + "A70x": { + "eco": "A70x", + "fen": "rnbqr1k1/p4pbp/3p1np1/1NpP4/4P3/3B1N1P/PP3PP1/R1BQK2R w KQ - 1 11", + "hash": 16196854497705560295, + "name": "Benoni: Classical, 8.h3 O-O 9.Bd3 b5 10.Nxb5 Re8" + }, + "A70y": { + "eco": "A70y", + "fen": "rnbqr1k1/p4pbp/3p2p1/1NpP4/4n3/3B1N1P/PP3PP1/R1BQ1RK1 w - - 0 12", + "hash": 2523418994259129572, + "name": "Benoni: Classical, 8.h3 O-O 9.Bd3 b5 10.Nxb5 Re8 11.O-O Nxe4" + }, + "A71": { + "eco": "A71", + "fen": "rnbqk2r/pp3pbp/3p1np1/2pP2B1/4P3/2N2N2/PP3PPP/R2QKB1R b KQkq - 3 8", + "hash": 1004133394465650497, + "name": "Benoni: Classical, 8.Bg5" + }, + "A72": { + "eco": "A72", + "fen": "rnbq1rk1/pp3pbp/3p1np1/2pP4/4P3/2N2N2/PP2BPPP/R1BQK2R w KQ - 4 9", + "hash": 12870548283001212865, + "name": "Benoni: Classical, 8.Be2 O-O" + }, + "A73": { + "eco": "A73", + "fen": "rnbq1rk1/pp3pbp/3p1np1/2pP4/4P3/2N2N2/PP2BPPP/R1BQ1RK1 b - - 5 9", + "hash": 14765091289657431249, + "name": "Benoni: Classical, 9.O-O" + }, + "A74": { + "eco": "A74", + "fen": "rnbq1rk1/1p3pbp/p2p1np1/2pP4/P3P3/2N2N2/1P2BPPP/R1BQ1RK1 b - a3 0 10", + "hash": 8491162520936905155, + "name": "Benoni: Classical, 9.O-O a6 10.a4" + }, + "A75": { + "eco": "A75", + "fen": "rn1q1rk1/1p3pbp/p2p1np1/2pP4/P3P1b1/2N2N2/1P2BPPP/R1BQ1RK1 w - - 1 11", + "hash": 8576368136130459433, + "name": "Benoni: Classical, 9.O-O a6 10.a4 Bg4" + }, + "A76": { + "eco": "A76", + "fen": "rnbqr1k1/pp3pbp/3p1np1/2pP4/4P3/2N2N2/PP2BPPP/R1BQ1RK1 w - - 6 10", + "hash": 15040302074049737043, + "name": "Benoni: Classical, Main Line" + }, + "A77": { + "eco": "A77", + "fen": "rnbqr1k1/pp3pbp/3p1np1/2pP4/4P3/2N5/PP1NBPPP/R1BQ1RK1 b - - 7 10", + "hash": 980510296289513433, + "name": "Benoni: Classical, Main Line, 10.Nd2" + }, + "A78": { + "eco": "A78", + "fen": "r1bqr1k1/pp3pbp/n2p1np1/2pP4/4P3/2N5/PP1NBPPP/R1BQ1RK1 w - - 8 11", + "hash": 4835691153939272549, + "name": "Benoni: Classical, Main Line, 10.Nd2 Na6" + }, + "A79": { + "eco": "A79", + "fen": "r1bqr1k1/pp3pbp/n2p1np1/2pP4/4P3/2N2P2/PP1NB1PP/R1BQ1RK1 b - - 0 11", + "hash": 3290501070811724820, + "name": "Benoni: Classical, Main Line, 10.Nd2 Na6 11.f3" + }, + "A80a": { + "eco": "A80a", + "fen": "rnbqkbnr/ppppp1pp/8/5p2/3P4/8/PPP1PPPP/RNBQKBNR w KQkq f6 0 2", + "hash": 1684873114507344896, + "name": "Dutch" + }, + "A80b": { + "eco": "A80b", + "fen": "rnbqkbnr/ppppp1pp/8/5p2/3P2P1/8/PPP1PP1P/RNBQKBNR b KQkq g3 0 2", + "hash": 12982997005380161821, + "name": "Dutch: Krejcik Gambit" + }, + "A80c": { + "eco": "A80c", + "fen": "rnbqkbnr/ppppp1pp/8/5p2/3P4/7P/PPP1PPP1/RNBQKBNR b KQkq - 0 2", + "hash": 18415784667315910130, + "name": "Dutch: Korchnoi Attack" + }, + "A80d": { + "eco": "A80d", + "fen": "rnbqkbnr/ppppp1pp/8/5pB1/3P4/8/PPP1PPPP/RN1QKBNR b KQkq - 1 2", + "hash": 15076793835845199816, + "name": "Dutch: 2.Bg5" + }, + "A80e": { + "eco": "A80e", + "fen": "rnbqkb1r/ppppp1pp/5n2/5pB1/3P4/8/PPP1PPPP/RN1QKBNR w KQkq - 2 3", + "hash": 10004109854653834846, + "name": "Dutch: 2.Bg5 Nf6" + }, + "A80f": { + "eco": "A80f", + "fen": "rnbqkbnr/ppppp1p1/7p/5pB1/3P4/8/PPP1PPPP/RN1QKBNR w KQkq - 0 3", + "hash": 4885494631498673885, + "name": "Dutch: 2.Bg5 h6" + }, + "A80g": { + "eco": "A80g", + "fen": "rnbqkbnr/ppppp2p/6p1/5pB1/3P4/8/PPP1PPPP/RN1QKBNR w KQkq - 0 3", + "hash": 4075717283414390147, + "name": "Dutch: 2.Bg5 g6" + }, + "A80h": { + "eco": "A80h", + "fen": "rnbqkbnr/ppppp2p/6p1/5pB1/3P4/2N5/PPP1PPPP/R2QKBNR b KQkq - 1 3", + "hash": 14058201623813371738, + "name": "Dutch: 2.Bg5 g6 3.Nc3" + }, + "A80i": { + "eco": "A80i", + "fen": "rnbqkbnr/ppppp1pp/8/5p2/3P4/3Q4/PPP1PPPP/RNB1KBNR b KQkq - 1 2", + "hash": 13188355995154410871, + "name": "Dutch: Alapin" + }, + "A80j": { + "eco": "A80j", + "fen": "rnbqkbnr/ppppp1pp/8/5p2/3P4/2N5/PPP1PPPP/R1BQKBNR b KQkq - 1 2", + "hash": 17075054430513168089, + "name": "Dutch: 2.Nc3" + }, + "A80k": { + "eco": "A80k", + "fen": "rnbqkbnr/ppp1p1pp/8/3p1p2/3P4/2N5/PPP1PPPP/R1BQKBNR w KQkq d6 0 3", + "hash": 7610209936712544511, + "name": "Dutch: 2.Nc3 d5" + }, + "A80l": { + "eco": "A80l", + "fen": "rnbqkbnr/ppp1p1pp/8/3p1pB1/3P4/2N5/PPP1PPPP/R2QKBNR b KQkq - 1 3", + "hash": 12666007451002006327, + "name": "Dutch: 2.Nc3 d5 3.Bg5" + }, + "A80m": { + "eco": "A80m", + "fen": "rnbqkb1r/ppppp1pp/5n2/5p2/3P4/2N5/PPP1PPPP/R1BQKBNR w KQkq - 2 3", + "hash": 13193562825886809935, + "name": "Dutch: 2.Nc3 Nf6" + }, + "A80n": { + "eco": "A80n", + "fen": "rnbqkb1r/ppppp1pp/5n2/5pB1/3P4/2N5/PPP1PPPP/R2QKBNR b KQkq - 3 3", + "hash": 8161266114198955143, + "name": "Dutch: 2.Nc3 Nf6 3.Bg5" + }, + "A80o": { + "eco": "A80o", + "fen": "rnbqkb1r/ppp1p1pp/5n2/3p1pB1/3P4/2N5/PPP1PPPP/R2QKBNR w KQkq d6 0 4", + "hash": 17593459686812068513, + "name": "Dutch: 2.Nc3 Nf6 3.Bg5 d5" + }, + "A80p": { + "eco": "A80p", + "fen": "rnbqkb1r/ppp3pp/5p2/3p1p2/3P4/2N5/PPP1PPPP/R2QKBNR w KQkq - 0 5", + "hash": 16176556480192614255, + "name": "Dutch: 2.Nc3 Nf6 3.Bg5 d5 4.Bxf6 exf6" + }, + "A80q": { + "eco": "A80q", + "fen": "rnbqkbnr/ppppp1pp/8/5p2/3P4/5N2/PPP1PPPP/RNBQKB1R b KQkq - 1 2", + "hash": 14701213586411658557, + "name": "Dutch: 2.Nf3" + }, + "A80r": { + "eco": "A80r", + "fen": "rnbqkbnr/pppp2pp/4p3/5p2/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq - 0 3", + "hash": 13435013861129588079, + "name": "Dutch: 2.Nf3 e6" + }, + "A80s": { + "eco": "A80s", + "fen": "rnbqkbnr/pppp2pp/4p3/3P1p2/8/5N2/PPP1PPPP/RNBQKB1R b KQkq - 0 3", + "hash": 34483705354558258, + "name": "Dutch: 2.Nf3 e6 3.d5" + }, + "A80t": { + "eco": "A80t", + "fen": "rnbqkb1r/ppppp1pp/5n2/5p2/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq - 2 3", + "hash": 10946851189728009387, + "name": "Dutch: 2.Nf3 Nf6" + }, + "A80u": { + "eco": "A80u", + "fen": "rnbqkb1r/ppppp1pp/5n2/5p2/3P4/2P2N2/PP2PPPP/RNBQKB1R b KQkq - 0 3", + "hash": 16227032066669990701, + "name": "Dutch: Barcza System" + }, + "A80v": { + "eco": "A80v", + "fen": "rnbqkb1r/ppppp1pp/5n2/5pB1/3P4/5N2/PPP1PPPP/RN1QKB1R b KQkq - 3 3", + "hash": 5886574281156331363, + "name": "Dutch: 2.Nf3 Nf6 3.Bg5" + }, + "A81": { + "eco": "A81", + "fen": "rnbqkbnr/ppppp1pp/8/5p2/3P4/6P1/PPP1PP1P/RNBQKBNR b KQkq - 0 2", + "hash": 4289507578016638008, + "name": "Dutch: 2.g3" + }, + "A82": { + "eco": "A82", + "fen": "rnbqkbnr/ppppp1pp/8/5p2/3PP3/8/PPP2PPP/RNBQKBNR b KQkq e3 0 2", + "hash": 15233094113651867914, + "name": "Dutch: Staunton Gambit" + }, + "A83a": { + "eco": "A83a", + "fen": "rnbqkb1r/ppppp1pp/5n2/6B1/3Pp3/2N5/PPP2PPP/R2QKBNR b KQkq - 3 4", + "hash": 8599061658575529542, + "name": "Dutch: Staunton Gambit, Staunton Variation" + }, + "A83b": { + "eco": "A83b", + "fen": "rnbqkb1r/p1ppp1pp/1p3n2/6B1/3Pp3/2N5/PPP2PPP/R2QKBNR w KQkq - 0 5", + "hash": 2035424808263537117, + "name": "Dutch: Staunton Gambit, Nimzowitsch Variation" + }, + "A83c": { + "eco": "A83c", + "fen": "rnbqkb1r/pp1pp1pp/2p2n2/6B1/3Pp3/2N5/PPP2PPP/R2QKBNR w KQkq - 0 5", + "hash": 16513834430923781629, + "name": "Dutch: Staunton Gambit, Chigorin Variation" + }, + "A83d": { + "eco": "A83d", + "fen": "rnbqkb1r/ppppp2p/5np1/6B1/3Pp3/2N5/PPP2PPP/R2QKBNR w KQkq - 0 5", + "hash": 11448803773701223437, + "name": "Dutch: Staunton Gambit, 4.Bg5 g6" + }, + "A83e": { + "eco": "A83e", + "fen": "rnbqkb1r/ppppp2p/5np1/6B1/3Pp2P/2N5/PPP2PP1/R2QKBNR b KQkq h3 0 5", + "hash": 162638068193660275, + "name": "Dutch: Staunton Gambit, Alekhine Variation" + }, + "A83f": { + "eco": "A83f", + "fen": "rnbqkb1r/ppppp2p/5np1/6B1/3Pp3/2N2P2/PPP3PP/R2QKBNR b KQkq - 0 5", + "hash": 17317383377016724348, + "name": "Dutch: Staunton Gambit, Lasker Variation" + }, + "A83g": { + "eco": "A83g", + "fen": "rnbqkb1r/pppp2pp/4pn2/6B1/3Pp3/2N5/PPP2PPP/R2QKBNR w KQkq - 0 5", + "hash": 81613680737908244, + "name": "Dutch: Staunton Gambit, 4.Bg5 e6" + }, + "A83h": { + "eco": "A83h", + "fen": "rnbqkb1r/pppp2pp/4pn2/6B1/3PN3/8/PPP2PPP/R2QKBNR b KQkq - 0 5", + "hash": 12385969652931979139, + "name": "Dutch: Staunton Gambit, 4.Bg5 e6 5.Nxe4" + }, + "A83i": { + "eco": "A83i", + "fen": "rnbqk2r/pppp2pp/4pb2/8/3PN3/5N2/PPP2PPP/R2QKB1R b KQkq - 1 7", + "hash": 16925924296257357635, + "name": "Dutch: Staunton Gambit, 4.Bg5 e6 5.Nxe4" + }, + "A83j": { + "eco": "A83j", + "fen": "r1bqkb1r/ppppp1pp/2n2n2/6B1/3Pp3/2N5/PPP2PPP/R2QKBNR w KQkq - 4 5", + "hash": 15905546094487192389, + "name": "Dutch: Staunton Gambit, 4.Bg5 Nc6" + }, + "A83k": { + "eco": "A83k", + "fen": "r1bqkb1r/ppppp1pp/2n2n2/6B1/3Pp3/2N2P2/PPP3PP/R2QKBNR b KQkq - 0 5", + "hash": 12829136683186793524, + "name": "Dutch: Staunton Gambit, 4.Bg5 Nc6 5.f3" + }, + "A83l": { + "eco": "A83l", + "fen": "r1bqkb1r/ppppp1pp/2n2n2/3P2B1/4p3/2N5/PPP2PPP/R2QKBNR b KQkq - 0 5", + "hash": 7400428715980903704, + "name": "Dutch: Staunton Gambit, 4.Bg5 Nc6 5.d5" + }, + "A83m": { + "eco": "A83m", + "fen": "r1bqkb1r/ppppp1pp/5n2/3Pn1B1/3Qp3/2N5/PPP2PPP/R3KBNR b KQkq - 2 6", + "hash": 17485884622057487012, + "name": "Dutch: Staunton Gambit, 4.Bg5 Nc6 5.d5 Ne5 6.Qd4" + }, + "A84": { + "eco": "A84", + "fen": "rnbqkbnr/ppppp1pp/8/5p2/2PP4/8/PP2PPPP/RNBQKBNR b KQkq c3 0 2", + "hash": 11187574861719361287, + "name": "Dutch: 2.c4" + }, + "A85": { + "eco": "A85", + "fen": "rnbqkb1r/ppppp1pp/5n2/5p2/2PP4/2N5/PP2PPPP/R1BQKBNR b KQkq - 2 3", + "hash": 4268124199589483592, + "name": "Dutch: 2.c4 Nf6 3.Nc3" + }, + "A86": { + "eco": "A86", + "fen": "rnbqkb1r/ppppp1pp/5n2/5p2/2PP4/6P1/PP2PP1P/RNBQKBNR b KQkq - 0 3", + "hash": 17026649746379558569, + "name": "Dutch: 2.c4 Nf6 3.g3" + }, + "A87": { + "eco": "A87", + "fen": "rnbqk2r/ppppp1bp/5np1/5p2/2PP4/5NP1/PP2PPBP/RNBQK2R b KQkq - 3 5", + "hash": 15840970635094339084, + "name": "Dutch: Leningrad, Main Line" + }, + "A88": { + "eco": "A88", + "fen": "rnbq1rk1/pp2p1bp/2pp1np1/5p2/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 0 8", + "hash": 18400753095161218296, + "name": "Dutch: Leningrad, Main Line, 7.Nc3 c6" + }, + "A89": { + "eco": "A89", + "fen": "r1bq1rk1/ppp1p1bp/2np1np1/5p2/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 2 8", + "hash": 14324734903396102720, + "name": "Dutch: Leningrad, Main Line, 7.Nc3 Nc6" + }, + "A90": { + "eco": "A90", + "fen": "rnbqkb1r/pppp2pp/4pn2/5p2/2PP4/6P1/PP2PP1P/RNBQKBNR w KQkq - 0 4", + "hash": 11114107121284701947, + "name": "Dutch: 2.c4 Nf6 3.g3 e6" + }, + "A91": { + "eco": "A91", + "fen": "rnbqk2r/ppppb1pp/4pn2/5p2/2PP4/6P1/PP2PPBP/RNBQK1NR w KQkq - 2 5", + "hash": 4251799473742031379, + "name": "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7" + }, + "A92": { + "eco": "A92", + "fen": "rnbq1rk1/ppppb1pp/4pn2/5p2/2PP4/5NP1/PP2PPBP/RNBQK2R w KQ - 4 6", + "hash": 16919298507111244485, + "name": "Dutch: 2.c4 Nf6 3.g3 e6 4.Bg2 Be7 5.Nf3 O-O" + }, + "A93": { + "eco": "A93", + "fen": "rnbq1rk1/ppp1b1pp/4pn2/3p1p2/2PP4/1P3NP1/P3PPBP/RNBQ1RK1 b - - 0 7", + "hash": 11345787015959633054, + "name": "Dutch: Stonewall, Botvinnik Variation" + }, + "A94": { + "eco": "A94", + "fen": "rnbq1rk1/pp2b1pp/2p1pn2/3p1p2/2PP4/BP3NP1/P3PPBP/RN1Q1RK1 b - - 1 8", + "hash": 12474242559928114764, + "name": "Dutch: Stonewall, Botvinnik, 8.Ba3" + }, + "A95": { + "eco": "A95", + "fen": "rnbq1rk1/pp2b1pp/2p1pn2/3p1p2/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 0 8", + "hash": 8664855540879091345, + "name": "Dutch: Stonewall, 7.Nc3 c6" + }, + "A96": { + "eco": "A96", + "fen": "rnbq1rk1/ppp1b1pp/3ppn2/5p2/2PP4/5NP1/PP2PPBP/RNBQ1RK1 w - - 0 7", + "hash": 12466668608055029944, + "name": "Dutch: Classical" + }, + "A97": { + "eco": "A97", + "fen": "rnb1qrk1/ppp1b1pp/3ppn2/5p2/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 2 8", + "hash": 12471617168689240028, + "name": "Dutch: Ilyin-Zhenevsky Variation" + }, + "A98": { + "eco": "A98", + "fen": "rnb1qrk1/ppp1b1pp/3ppn2/5p2/2PP4/2N2NP1/PPQ1PPBP/R1B2RK1 b - - 3 8", + "hash": 2021385752582335416, + "name": "Dutch: Ilyin-Zhenevsky, 8.Qc2" + }, + "A99": { + "eco": "A99", + "fen": "rnb1qrk1/ppp1b1pp/3ppn2/5p2/2PP4/1PN2NP1/P3PPBP/R1BQ1RK1 b - - 0 8", + "hash": 2428132788683144369, + "name": "Dutch: Ilyin-Zhenevsky, 8.b3" + }, + "B00a": { + "eco": "B00a", + "fen": "rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1", + "hash": 9384546495678726550, + "name": "King's Pawn" + }, + "B00b": { + "eco": "B00b", + "fen": "rnbqkbnr/pppppp1p/8/6p1/4P3/8/PPPP1PPP/RNBQKBNR w KQkq g6 0 2", + "hash": 179980765225139740, + "name": "Reversed Grob (Borg/Basman Defence)" + }, + "B00c": { + "eco": "B00c", + "fen": "rnbqkbnr/1ppppppp/p7/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 0 2", + "hash": 5821864192058177866, + "name": "St. George Defence" + }, + "B00d": { + "eco": "B00d", + "fen": "rnbqkbnr/p1pppppp/1p6/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 0 2", + "hash": 16813575956237317645, + "name": "Owen Defence" + }, + "B00e": { + "eco": "B00e", + "fen": "rnbqkbnr/p1pp1ppp/1p2p3/8/3PP3/8/PPP2PPP/RNBQKBNR w KQkq - 0 3", + "hash": 6491674821325835037, + "name": "Owen Defence: French" + }, + "B00f": { + "eco": "B00f", + "fen": "rn1qkbnr/pbpppppp/1p6/8/3PP3/8/PPP2PPP/RNBQKBNR w KQkq - 1 3", + "hash": 11308738149989577940, + "name": "Owen Defence: 2.d4 Bb7" + }, + "B00g": { + "eco": "B00g", + "fen": "rn1qkbnr/pbpppppp/1p6/8/3PP3/3B4/PPP2PPP/RNBQK1NR b KQkq - 2 3", + "hash": 14554812438639392423, + "name": "Owen Defence: 3.Bd3" + }, + "B00h": { + "eco": "B00h", + "fen": "rn1qkb1r/pbpppppp/1p3n2/8/3PP3/3B4/PPP2PPP/RNBQK1NR w KQkq - 3 4", + "hash": 10525792187381446449, + "name": "Owen Defence: 3.Bd3 Nf6" + }, + "B00i": { + "eco": "B00i", + "fen": "rn1qkbnr/pbpp1ppp/1p2p3/8/3PP3/3B4/PPP2PPP/RNBQK1NR w KQkq - 0 4", + "hash": 13802097983433156341, + "name": "Owen Defence: 3.Bd3 e6" + }, + "B00j": { + "eco": "B00j", + "fen": "rn1qkbnr/pbpp1ppp/1p2p3/8/3PP3/3B1N2/PPP2PPP/RNBQK2R b KQkq - 1 4", + "hash": 7272761491303778248, + "name": "Owen Defence: 3.Bd3 e6 4.Nf3" + }, + "B00k": { + "eco": "B00k", + "fen": "rn1qkbnr/pb1p1ppp/1p2p3/2p5/3PP3/3B1N2/PPP2PPP/RNBQK2R w KQkq c6 0 5", + "hash": 9412483251534711989, + "name": "Owen Defence: 3.Bd3 e6 4.Nf3 c5" + }, + "B00l": { + "eco": "B00l", + "fen": "r1bqkbnr/pppppppp/2n5/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 1 2", + "hash": 3013264061438682261, + "name": "Nimzowitsch Defence" + }, + "B00m": { + "eco": "B00m", + "fen": "r1bqkbnr/pppppppp/2n5/8/4P3/2N5/PPPP1PPP/R1BQKBNR b KQkq - 2 2", + "hash": 15151898121390417484, + "name": "Nimzowitsch Defence: 2.Nc3" + }, + "B00n": { + "eco": "B00n", + "fen": "r1bqkbnr/pppppppp/2n5/8/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 2 2", + "hash": 17489077436777137576, + "name": "Nimzowitsch Defence: 2.Nf3" + }, + "B00o": { + "eco": "B00o", + "fen": "r1bqkbnr/ppp1pppp/2np4/8/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 0 3", + "hash": 14631976546871463109, + "name": "Nimzowitsch Defence: 2.Nf3 d6" + }, + "B00p": { + "eco": "B00p", + "fen": "r1bqkb1r/ppp1pppp/2np1n2/8/3PP3/5N2/PPP2PPP/RNBQKB1R w KQkq - 1 4", + "hash": 6184606099596746769, + "name": "Nimzowitsch Defence: 2.Nf3 d6 3.d4 Nf6" + }, + "B00q": { + "eco": "B00q", + "fen": "r1bqkb1r/ppp1pppp/2np1n2/8/3PP3/2N2N2/PPP2PPP/R1BQKB1R b KQkq - 2 4", + "hash": 12556944886111085256, + "name": "Nimzowitsch Defence: 2.Nf3 d6 3.d4 Nf6 4.Nc3" + }, + "B00r": { + "eco": "B00r", + "fen": "r2qkb1r/ppp1pppp/2np1n2/8/3PP1b1/2N2N2/PPP2PPP/R1BQKB1R w KQkq - 3 5", + "hash": 12434703460850084898, + "name": "Nimzowitsch Defence: 2.Nf3 d6 3.d4 Nf6 4.Nc3 Bg4" + }, + "B00s": { + "eco": "B00s", + "fen": "r2qkb1r/ppp1pppp/2np1n2/8/3PP1b1/2N1BN2/PPP2PPP/R2QKB1R b KQkq - 4 5", + "hash": 16111710160060168108, + "name": "Nimzowitsch Defence: 2.Nf3 d6 3.d4 Nf6 4.Nc3 Bg4 5.Be3" + }, + "B00t": { + "eco": "B00t", + "fen": "r1bqkbnr/pppppppp/2n5/8/3PP3/8/PPP2PPP/RNBQKBNR b KQkq d3 0 2", + "hash": 17069887342225508823, + "name": "Nimzowitsch Defence: 2.d4" + }, + "B00u": { + "eco": "B00u", + "fen": "r1bqkbnr/pppp1ppp/2n5/4p3/3PP3/8/PPP2PPP/RNBQKBNR w KQkq e6 0 3", + "hash": 7393894993442386401, + "name": "Nimzowitsch Defence: 2.d4 e5" + }, + "B00v": { + "eco": "B00v", + "fen": "r1bqkbnr/ppp1pppp/2n5/3p4/3PP3/8/PPP2PPP/RNBQKBNR w KQkq d6 0 3", + "hash": 7606102635759634417, + "name": "Nimzowitsch Defence: 2.d4 d5" + }, + "B00w": { + "eco": "B00w", + "fen": "r1bqkbnr/ppp1pppp/2n5/3p4/3PP3/2N5/PPP2PPP/R1BQKBNR b KQkq - 1 3", + "hash": 10527540912022553896, + "name": "Nimzowitsch Defence: Bogoljubow Variation" + }, + "B00x": { + "eco": "B00x", + "fen": "r1bqkbnr/ppp1pppp/2n5/3pP3/3P4/8/PPP2PPP/RNBQKBNR b KQkq - 0 3", + "hash": 646082865364443541, + "name": "Nimzowitsch Defence: 2.d4 d5 3.e5" + }, + "B01a": { + "eco": "B01a", + "fen": "rnbqkbnr/ppp1pppp/8/3p4/4P3/8/PPPP1PPP/RNBQKBNR w KQkq d6 0 2", + "hash": 528813709611831216, + "name": "Scandinavian (Centre Counter)" + }, + "B01b": { + "eco": "B01b", + "fen": "rnb1kbnr/ppp1pppp/8/3q4/8/8/PPPP1PPP/RNBQKBNR w KQkq - 0 3", + "hash": 11863996697488666748, + "name": "Scandinavian: 2...Qxd5" + }, + "B01c": { + "eco": "B01c", + "fen": "rnbqkbnr/ppp1pppp/8/8/8/2N5/PPPP1PPP/R1BQKBNR w KQkq - 2 4", + "hash": 9286437958086272902, + "name": "Scandinavian: 2...Qxd5 3.Nc3 Qd8" + }, + "B01d": { + "eco": "B01d", + "fen": "rnb1kbnr/ppp1pppp/3q4/8/8/2N5/PPPP1PPP/R1BQKBNR w KQkq - 2 4", + "hash": 14797213354813370000, + "name": "Scandinavian: Schiller Defence" + }, + "B01e": { + "eco": "B01e", + "fen": "rnb1kbnr/ppp1pppp/8/q7/8/2N5/PPPP1PPP/R1BQKBNR w KQkq - 2 4", + "hash": 11620903243637981952, + "name": "Scandinavian: 2...Qxd5 3.Nc3 Qa5" + }, + "B01f": { + "eco": "B01f", + "fen": "rnb1kbnr/ppp1pppp/8/q7/8/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 3 4", + "hash": 8800404312105443901, + "name": "Scandinavian: 2...Qxd5 3.Nc3 Qa5 4.Nf3" + }, + "B01g": { + "eco": "B01g", + "fen": "rnb1kbnr/ppp1pppp/8/q7/3P4/2N5/PPP2PPP/R1BQKBNR b KQkq d3 0 4", + "hash": 7237445422475849282, + "name": "Scandinavian: 2...Qxd5 3.Nc3 Qa5 4.d4" + }, + "B01h": { + "eco": "B01h", + "fen": "rnb1kbnr/pp2pppp/2p5/q7/3P4/2N5/PPP2PPP/R1BQKBNR w KQkq - 0 5", + "hash": 17729123257261751801, + "name": "Scandinavian: 2...Qxd5 3.Nc3 Qa5 4.d4 c6" + }, + "B01i": { + "eco": "B01i", + "fen": "rnb1kb1r/ppp1pppp/5n2/q7/3P4/2N5/PPP2PPP/R1BQKBNR w KQkq - 1 5", + "hash": 4584284752836128724, + "name": "Scandinavian: 2...Qxd5 3.Nc3 Qa5 4.d4 Nf6" + }, + "B01j": { + "eco": "B01j", + "fen": "rnb1kb1r/ppp1pppp/5n2/q7/3P4/2N2N2/PPP2PPP/R1BQKB1R b KQkq - 2 5", + "hash": 16499581857301466857, + "name": "Scandinavian: 2...Qxd5, 5.Nf3" + }, + "B01k": { + "eco": "B01k", + "fen": "rn2kb1r/ppp1pppp/5n2/q7/3P2b1/2N2N1P/PPP2PP1/R1BQKB1R b KQkq - 0 6", + "hash": 1070270989520718321, + "name": "Scandinavian: Lasker Variation" + }, + "B01l": { + "eco": "B01l", + "fen": "rn2kb1r/ppp1pppp/5n2/q4b2/3P4/2N2N2/PPP2PPP/R1BQKB1R w KQkq - 3 6", + "hash": 7485866353644668772, + "name": "Scandinavian: 2...Qxd5, 5.Nf3 Bf5" + }, + "B01m": { + "eco": "B01m", + "fen": "rnb1kb1r/pp2pppp/2p2n2/q7/3P4/2N2N2/PPP2PPP/R1BQKB1R w KQkq - 0 6", + "hash": 8539009236396399954, + "name": "Scandinavian: 2...Qxd5, Main Line" + }, + "B01n": { + "eco": "B01n", + "fen": "rnb1kb1r/pp2pppp/2p2n2/q7/2BP4/2N2N2/PPP2PPP/R1BQK2R b KQkq - 1 6", + "hash": 1527586141323922420, + "name": "Scandinavian: 2...Qxd5, Main Line, 6.Bc4" + }, + "B01o": { + "eco": "B01o", + "fen": "rn2kb1r/pp2pppp/2p2n2/q4b2/2BP4/2N2N2/PPP2PPP/R1BQK2R w KQkq - 2 7", + "hash": 10820595256107008633, + "name": "Scandinavian: 2...Qxd5, Main Line, 6.Bc4 Bf5" + }, + "B01p": { + "eco": "B01p", + "fen": "rn2kb1r/pp2pppp/2p2n2/q4b2/2BP4/2N2N2/PPPB1PPP/R2QK2R b KQkq - 3 7", + "hash": 13810042772585474429, + "name": "Scandinavian: 2...Qxd5, Main Line, 6.Bc4 Bf5 7.Bd2" + }, + "B01q": { + "eco": "B01q", + "fen": "rn2kb1r/pp3ppp/2p1pn2/q4b2/2BP4/2N2N2/PPPBQPPP/R3K2R b KQkq - 1 8", + "hash": 6905810058891666091, + "name": "Scandinavian: 2...Qxd5, Main Line, 8.Qe2" + }, + "B01r": { + "eco": "B01r", + "fen": "rnbqkb1r/ppp1pppp/5n2/3P4/8/8/PPPP1PPP/RNBQKBNR w KQkq - 1 3", + "hash": 8892225506042186784, + "name": "Scandinavian: 2...Nf6" + }, + "B01s": { + "eco": "B01s", + "fen": "rnbqkb1r/ppp1pppp/5n2/1B1P4/8/8/PPPP1PPP/RNBQK1NR b KQkq - 2 3", + "hash": 5240314557846822819, + "name": "Scandinavian: 2...Nf6 3.Bb5+" + }, + "B01t": { + "eco": "B01t", + "fen": "rnbqkb1r/ppp1pppp/5n2/3P4/2P5/8/PP1P1PPP/RNBQKBNR b KQkq c3 0 3", + "hash": 17817393343208859431, + "name": "Scandinavian: 2...Nf6 3.c4" + }, + "B01u": { + "eco": "B01u", + "fen": "rnbqkb1r/ppp1pppp/5n2/3P4/3P4/8/PPP2PPP/RNBQKBNR b KQkq d3 0 3", + "hash": 13714208902744711522, + "name": "Scandinavian: 2...Nf6 3.d4" + }, + "B01v": { + "eco": "B01v", + "fen": "rn1qkb1r/ppp1pppp/5n2/3P4/3P2b1/5P2/PPP3PP/RNBQKBNR b KQkq - 0 4", + "hash": 15145751051226235129, + "name": "Scandinavian: Portuguese, 4.f3" + }, + "B01w": { + "eco": "B01w", + "fen": "rnbqkb1r/ppp1pppp/8/3n4/3P4/8/PPP2PPP/RNBQKBNR w KQkq - 0 4", + "hash": 2431048915374324798, + "name": "Scandinavian: Marshall Variation" + }, + "B01x": { + "eco": "B01x", + "fen": "rnbqkb1r/ppp1pp1p/6p1/3n4/3P4/5N2/PPP2PPP/RNBQKB1R w KQkq - 0 5", + "hash": 1399614215527190344, + "name": "Scandinavian: Marshall, 4.Nf3 g6" + }, + "B01y": { + "eco": "B01y", + "fen": "rnbqkb1r/ppp1pppp/8/3n4/2PP4/8/PP3PPP/RNBQKBNR b KQkq c3 0 4", + "hash": 12510803227055462201, + "name": "Scandinavian: Marshall, 4.c4" + }, + "B01z": { + "eco": "B01z", + "fen": "rnbqkb1r/ppp1pppp/1n6/8/2PP4/5N2/PP3PPP/RNBQKB1R b KQkq - 2 5", + "hash": 6872544461651483978, + "name": "Scandinavian: Marshall, 4.c4 Nb6 5.Nf3" + }, + "B02a": { + "eco": "B02a", + "fen": "rnbqkb1r/pppppppp/5n2/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 1 2", + "hash": 15695800775901642752, + "name": "Alekhine Defence" + }, + "B02b": { + "eco": "B02b", + "fen": "rnbqkb1r/pppppppp/5n2/8/4P3/3P4/PPP2PPP/RNBQKBNR b KQkq - 0 2", + "hash": 8608186966401072084, + "name": "Alekhine: Maroczy Variation" + }, + "B02c": { + "eco": "B02c", + "fen": "rnbqkb1r/pppppppp/5n2/8/4P3/2N5/PPPP1PPP/R1BQKBNR b KQkq - 2 2", + "hash": 2469581213825336025, + "name": "Alekhine: Scandinavian Variation" + }, + "B02d": { + "eco": "B02d", + "fen": "rnbqkb1r/ppp1pppp/5n2/3pP3/8/2N5/PPPP1PPP/R1BQKBNR b KQkq - 0 3", + "hash": 14291755525912914587, + "name": "Alekhine: Scandinavian, 3.e5" + }, + "B02e": { + "eco": "B02e", + "fen": "rnbqkb1r/ppp1pppp/8/3pP3/4n3/2N5/PPPP1PPP/R1BQKBNR w KQkq - 1 4", + "hash": 18185200432702973793, + "name": "Alekhine: Scandinavian, 3.e5 Ne4" + }, + "B02f": { + "eco": "B02f", + "fen": "rnbqkb1r/pppnpppp/8/3pP3/8/2N5/PPPP1PPP/R1BQKBNR w KQkq - 1 4", + "hash": 4544554548522378094, + "name": "Alekhine: Scandinavian, 3.e5 Nfd7" + }, + "B02g": { + "eco": "B02g", + "fen": "rnbqkb1r/ppp1pppp/5n2/3P4/8/2N5/PPPP1PPP/R1BQKBNR b KQkq - 0 3", + "hash": 9291101260909547257, + "name": "Alekhine: Scandinavian, Exchange" + }, + "B02h": { + "eco": "B02h", + "fen": "rnbqkb1r/ppp1pppp/8/3N4/8/8/PPPP1PPP/R1BQKBNR b KQkq - 0 4", + "hash": 14860995974245627395, + "name": "Alekhine: Scandinavian, Exchange, 4.Nxd5" + }, + "B02i": { + "eco": "B02i", + "fen": "rnbqkb1r/ppp1pppp/8/3n4/2B5/2N5/PPPP1PPP/R1BQK1NR b KQkq - 1 4", + "hash": 8983926146644329731, + "name": "Alekhine: Scandinavian, Exchange, 4.Bc4" + }, + "B02j": { + "eco": "B02j", + "fen": "rnbqkb1r/ppp2ppp/4p3/3n4/2B5/2N5/PPPP1PPP/R1BQK1NR w KQkq - 0 5", + "hash": 782116750177523025, + "name": "Alekhine: Scandinavian, Exchange, 4.Bc4 e6" + }, + "B02k": { + "eco": "B02k", + "fen": "rnbqkb1r/ppp1pppp/1n6/8/2B5/2N5/PPPP1PPP/R1BQK1NR w KQkq - 2 5", + "hash": 6140339458417962573, + "name": "Alekhine: Scandinavian, Exchange, 4.Bc4 Nb6" + }, + "B02l": { + "eco": "B02l", + "fen": "rnbqkb1r/pppppppp/5n2/4P3/8/8/PPPP1PPP/RNBQKBNR b KQkq - 0 2", + "hash": 13306933313029875300, + "name": "Alekhine: 2.e5" + }, + "B02m": { + "eco": "B02m", + "fen": "rnbqkb1r/pppppppp/8/3nP3/8/8/PPPP1PPP/RNBQKBNR w KQkq - 1 3", + "hash": 8987890325611041745, + "name": "Alekhine: 2.e5 Nd5" + }, + "B02n": { + "eco": "B02n", + "fen": "rnbqkb1r/pppppppp/8/3nP3/2B5/8/PPPP1PPP/RNBQK1NR b KQkq - 2 3", + "hash": 2236268703835784567, + "name": "Alekhine: 3.Bc4" + }, + "B02o": { + "eco": "B02o", + "fen": "rnbqkb1r/pppppppp/8/3nP3/8/2N5/PPPP1PPP/R1BQKBNR b KQkq - 2 3", + "hash": 9740298646935949576, + "name": "Alekhine: Smisch Attack" + }, + "B02p": { + "eco": "B02p", + "fen": "rnbqkb1r/pppppppp/8/4P3/8/2n5/PPPP1PPP/R1BQKBNR w KQkq - 0 4", + "hash": 14680979368181817162, + "name": "Alekhine: Smisch Attack, 3...Nxc3" + }, + "B02q": { + "eco": "B02q", + "fen": "rnbqkb1r/pppppppp/8/4P3/8/2P5/PPP2PPP/R1BQKBNR b KQkq - 0 4", + "hash": 11369792306789963056, + "name": "Alekhine: Smisch Attack, 3...Nxc3 4.dxc3" + }, + "B02r": { + "eco": "B02r", + "fen": "rnbqkb1r/pppppppp/8/3nP3/2P5/8/PP1P1PPP/RNBQKBNR b KQkq c3 0 3", + "hash": 17336881118833080534, + "name": "Alekhine: Chase Variation" + }, + "B02s": { + "eco": "B02s", + "fen": "rnbqkb1r/pppppppp/1n6/2P1P3/8/8/PP1P1PPP/RNBQKBNR b KQkq - 0 4", + "hash": 13155468416299335208, + "name": "Alekhine: Two Pawns (Lasker) Attack" + }, + "B02t": { + "eco": "B02t", + "fen": "rnbqkb1r/pppppppp/8/2PnP3/8/2N5/PP1P1PPP/R1BQKBNR b KQkq - 2 5", + "hash": 7249963616127129535, + "name": "Alekhine: Two Pawns Attack, 5.Nc3" + }, + "B02u": { + "eco": "B02u", + "fen": "rnbqkb1r/pppppppp/8/2PnP3/2B5/8/PP1P1PPP/RNBQK1NR b KQkq - 2 5", + "hash": 18210771242705929152, + "name": "Alekhine: Two Pawns Attack, 5.Bc4" + }, + "B03a": { + "eco": "B03a", + "fen": "rnbqkb1r/pppppppp/8/3nP3/3P4/8/PPP2PPP/RNBQKBNR b KQkq d3 0 3", + "hash": 13370704657651760787, + "name": "Alekhine: 3.d4" + }, + "B03b": { + "eco": "B03b", + "fen": "rnbqkb1r/ppp1pppp/3p4/3nP3/3P4/8/PPP2PPP/RNBQKBNR w KQkq - 0 4", + "hash": 9238254383505225726, + "name": "Alekhine: 3.d4 d6" + }, + "B03c": { + "eco": "B03c", + "fen": "rnbqkb1r/ppp1pppp/3P4/3n4/3P4/8/PPP2PPP/RNBQKBNR b KQkq - 0 4", + "hash": 13973362842837760225, + "name": "Alekhine: 3.d4 d6 4.exd6" + }, + "B03d": { + "eco": "B03d", + "fen": "rnbqkb1r/ppp1pppp/3p4/3nP3/2BP4/8/PPP2PPP/RNBQK1NR b KQkq - 1 4", + "hash": 16395190901586387288, + "name": "Alekhine: Balogh Variation" + }, + "B03e": { + "eco": "B03e", + "fen": "rnbqkb1r/ppp1pppp/3p4/3nP3/2PP4/8/PP3PPP/RNBQKBNR b KQkq c3 0 4", + "hash": 871235757116333305, + "name": "Alekhine: 4.c4" + }, + "B03f": { + "eco": "B03f", + "fen": "rnbqkb1r/ppp1pppp/1n1p4/4P3/2PP4/5N2/PP3PPP/RNBQKB1R b KQkq - 2 5", + "hash": 18367970350897731210, + "name": "Alekhine: 4.c4 Nb6 5.Nf3" + }, + "B03g": { + "eco": "B03g", + "fen": "rnbqkb1r/ppp1pppp/1n1p4/4P3/2PP1P2/8/PP4PP/RNBQKBNR b KQkq f3 0 5", + "hash": 15607983498552265278, + "name": "Alekhine: Four Pawns Attack" + }, + "B03h": { + "eco": "B03h", + "fen": "rn1qkb1r/ppp1pppp/1n1p4/4Pb2/2PP1P2/8/PP4PP/RNBQKBNR w KQkq - 1 6", + "hash": 6594355908568466355, + "name": "Alekhine: Four Pawns Attack, Trifunovic Variation" + }, + "B03i": { + "eco": "B03i", + "fen": "rnbqkb1r/ppp1pp1p/1n1p2p1/4P3/2PP1P2/8/PP4PP/RNBQKBNR w KQkq - 0 6", + "hash": 3544017447312054389, + "name": "Alekhine: Four Pawns Attack, Fianchetto Variation" + }, + "B03j": { + "eco": "B03j", + "fen": "rnbqkb1r/ppp1pppp/1n6/4p3/2PP1P2/8/PP4PP/RNBQKBNR w KQkq - 0 6", + "hash": 16338974389126268087, + "name": "Alekhine: Four Pawns Attack, 5...dxe5" + }, + "B03k": { + "eco": "B03k", + "fen": "rnbqkb1r/pp2pppp/1n6/2p1P3/2PP4/8/PP4PP/RNBQKBNR w KQkq c6 0 7", + "hash": 9822750658300246878, + "name": "Alekhine: Four Pawns Attack, 6...c5" + }, + "B03l": { + "eco": "B03l", + "fen": "rn1qkb1r/ppp1pppp/1n6/4Pb2/2PP4/8/PP4PP/RNBQKBNR w KQkq - 1 7", + "hash": 17093926469406194094, + "name": "Alekhine: Four Pawns Attack, 6...Bf5" + }, + "B03m": { + "eco": "B03m", + "fen": "r1bqkb1r/ppp1pppp/1nn5/4P3/2PP4/8/PP4PP/RNBQKBNR w KQkq - 1 7", + "hash": 14253157122122372384, + "name": "Alekhine: Four Pawns Attack, 6...Nc6" + }, + "B03n": { + "eco": "B03n", + "fen": "r1bqkb1r/ppp1pppp/1nn5/4P3/2PP4/4B3/PP4PP/RN1QKBNR b KQkq - 2 7", + "hash": 13170171340924440238, + "name": "Alekhine: Four Pawns Attack, 7.Be3" + }, + "B03o": { + "eco": "B03o", + "fen": "rnbqkb1r/ppp1pppp/1n1P4/8/2PP4/8/PP3PPP/RNBQKBNR b KQkq - 0 5", + "hash": 7229204650735859880, + "name": "Alekhine: Exchange Variation" + }, + "B03p": { + "eco": "B03p", + "fen": "rnbqkb1r/ppp2ppp/1n1p4/8/2PP4/2N5/PP3PPP/R1BQKBNR b KQkq - 1 6", + "hash": 15122771602809831829, + "name": "Alekhine: Exchange, 5...exd6 6.Nc3" + }, + "B03q": { + "eco": "B03q", + "fen": "rnbqk2r/ppp1bppp/1n1p4/8/2PP4/2N5/PP3PPP/R1BQKBNR w KQkq - 2 7", + "hash": 14200574520392412420, + "name": "Alekhine: Exchange, 5...exd6 6.Nc3 Be7" + }, + "B03r": { + "eco": "B03r", + "fen": "rnbqkb1r/pp2pppp/1n1p4/8/2PP4/8/PP3PPP/RNBQKBNR w KQkq - 0 6", + "hash": 9376654227219631572, + "name": "Alekhine: Exchange, 5...cxd6" + }, + "B03s": { + "eco": "B03s", + "fen": "rnbqkb1r/pp2pppp/1n1p4/8/2PP4/2N5/PP3PPP/R1BQKBNR b KQkq - 1 6", + "hash": 8770630488075652877, + "name": "Alekhine: Exchange, 5...cxd6 6.Nc3" + }, + "B03t": { + "eco": "B03t", + "fen": "rnbqkb1r/pp2pp1p/1n1p2p1/8/2PP4/2N1B3/PP3PPP/R2QKBNR b KQkq - 1 7", + "hash": 16360277008309044936, + "name": "Alekhine: Exchange, 5...cxd6 6.Nc3 g6 7.Be3" + }, + "B04a": { + "eco": "B04a", + "fen": "rnbqkb1r/ppp1pppp/3p4/3nP3/3P4/5N2/PPP2PPP/RNBQKB1R b KQkq - 1 4", + "hash": 6579815801524606659, + "name": "Alekhine: Modern Variation" + }, + "B04b": { + "eco": "B04b", + "fen": "r1bqkb1r/ppp1pppp/2np4/3nP3/3P4/5N2/PPP2PPP/RNBQKB1R w KQkq - 2 5", + "hash": 17347280266652152768, + "name": "Alekhine: Modern, 4...Nc6" + }, + "B04c": { + "eco": "B04c", + "fen": "rnbqkb1r/pp2pppp/2pp4/3nP3/3P4/5N2/PPP2PPP/RNBQKB1R w KQkq - 0 5", + "hash": 14495642937332893048, + "name": "Alekhine: Modern, 4...c6" + }, + "B04d": { + "eco": "B04d", + "fen": "rnbqkb1r/pp2pppp/2pp4/3nP3/2PP4/5N2/PP3PPP/RNBQKB1R b KQkq c3 0 5", + "hash": 4974579105420750463, + "name": "Alekhine: Modern, 4...c6 5.c4" + }, + "B04e": { + "eco": "B04e", + "fen": "rnbqkb1r/ppp1pppp/1n1p4/4P3/3P4/5N2/PPP2PPP/RNBQKB1R w KQkq - 2 5", + "hash": 8271912480832568717, + "name": "Alekhine: Modern, Schmid Variation" + }, + "B04f": { + "eco": "B04f", + "fen": "rnbqkb1r/ppp1pppp/8/3np3/3P4/5N2/PPP2PPP/RNBQKB1R w KQkq - 0 5", + "hash": 7022575765118916682, + "name": "Alekhine: Modern, Larsen Variation" + }, + "B04g": { + "eco": "B04g", + "fen": "rnbqkb1r/ppp1pp1p/6p1/3nN3/3P4/8/PPP2PPP/RNBQKB1R w KQkq - 0 6", + "hash": 3927865460585869111, + "name": "Alekhine: Modern, Larsen, 5.Nxe5 g6" + }, + "B04h": { + "eco": "B04h", + "fen": "rnbqkb1r/ppp1pp1p/6p1/3nN3/2BP4/8/PPP2PPP/RNBQK2R b KQkq - 1 6", + "hash": 6138724031504644497, + "name": "Alekhine: Modern, Larsen, 5.Nxe5 g6 6.Bc4" + }, + "B04i": { + "eco": "B04i", + "fen": "rnbqkb1r/pp2pp1p/2p3p1/3nN3/2BP4/8/PPP2PPP/RNBQ1RK1 b kq - 1 7", + "hash": 13348306596221940026, + "name": "Alekhine: Modern, Larsen, 5.Nxe5 g6 6.Bc4 c6 7.O-O" + }, + "B04j": { + "eco": "B04j", + "fen": "rnbqkb1r/ppp1pp1p/3p2p1/3nP3/3P4/5N2/PPP2PPP/RNBQKB1R w KQkq - 0 5", + "hash": 12890534442513187976, + "name": "Alekhine: Modern, Fianchetto Variation" + }, + "B04k": { + "eco": "B04k", + "fen": "rnbqkb1r/ppp1pp1p/3p2p1/3nP3/2BP4/5N2/PPP2PPP/RNBQK2R b KQkq - 1 5", + "hash": 15084759601518481966, + "name": "Alekhine: Modern, Fianchetto, 5.Bc4" + }, + "B04l": { + "eco": "B04l", + "fen": "rnbqkb1r/ppp1pp1p/1n1p2p1/4P3/2BP4/5N2/PPP2PPP/RNBQK2R w KQkq - 2 6", + "hash": 17927805236348025184, + "name": "Alekhine: Modern, Fianchetto, 5.Bc4 Nb6" + }, + "B04m": { + "eco": "B04m", + "fen": "rnbqk2r/ppp1ppbp/1n1p2p1/4P3/3P4/1B3N2/PPP2PPP/RNBQK2R w KQkq - 4 7", + "hash": 9328210968956166702, + "name": "Alekhine: Modern, Fianchetto, 5.Bc4 Nb6 6.Bb3 Bg7" + }, + "B04n": { + "eco": "B04n", + "fen": "rnbqk2r/ppp1ppbp/1n1p2p1/4P3/P2P4/1B3N2/1PP2PPP/RNBQK2R b KQkq a3 0 7", + "hash": 16914685226131339232, + "name": "Alekhine: Modern, Fianchetto, Keres Variation" + }, + "B04o": { + "eco": "B04o", + "fen": "rnbqk2r/ppp1ppbp/1n1p2p1/4P1N1/3P4/1B6/PPP2PPP/RNBQK2R b KQkq - 5 7", + "hash": 15539274284773153418, + "name": "Alekhine: Modern, Fianchetto, 5.Bc4 Nb6 6.Bb3 Bg7 7.Ng5" + }, + "B05a": { + "eco": "B05a", + "fen": "rn1qkb1r/ppp1pppp/3p4/3nP3/3P2b1/5N2/PPP2PPP/RNBQKB1R w KQkq - 2 5", + "hash": 6450273619039049769, + "name": "Alekhine: Modern, 4...Bg4" + }, + "B05b": { + "eco": "B05b", + "fen": "rn1qkb1r/ppp1pppp/3p4/3nP3/3P2b1/5N1P/PPP2PP1/RNBQKB1R b KQkq - 0 5", + "hash": 12785758996267438555, + "name": "Alekhine: Modern, Panov Variation" + }, + "B05c": { + "eco": "B05c", + "fen": "rn1qkb1r/ppp1pppp/3p4/3nP3/2PP2b1/5N2/PP3PPP/RNBQKB1R b KQkq c3 0 5", + "hash": 15393416270148465454, + "name": "Alekhine: Modern, Alekhine Variation" + }, + "B05d": { + "eco": "B05d", + "fen": "rn1qkb1r/ppp1pppp/1n1P4/8/2PP2b1/5N2/PP3PPP/RNBQKB1R b KQkq - 0 6", + "hash": 13683182066401089407, + "name": "Alekhine: Modern, Alekhine Variation, 6.exd6" + }, + "B05e": { + "eco": "B05e", + "fen": "rn1qkb1r/ppp2ppp/1n1p4/8/2PP2b1/5N2/PP3PPP/RNBQKB1R w KQkq - 0 7", + "hash": 17581734915565268123, + "name": "Alekhine: Modern, Alekhine Variation, 6.exd6 exd6" + }, + "B05f": { + "eco": "B05f", + "fen": "rn1qkb1r/ppp1pppp/3p4/3nP3/3P2b1/5N2/PPP1BPPP/RNBQK2R b KQkq - 3 5", + "hash": 3027397890612925066, + "name": "Alekhine: Modern, 5.Be2" + }, + "B05g": { + "eco": "B05g", + "fen": "r2qkb1r/ppp1pppp/2np4/3nP3/3P2b1/5N2/PPP1BPPP/RNBQK2R w KQkq - 4 6", + "hash": 9362599575339251593, + "name": "Alekhine: Modern, 5.Be2 Nc6" + }, + "B05h": { + "eco": "B05h", + "fen": "rn1qkb1r/pp2pppp/2pp4/3nP3/3P2b1/5N2/PPP1BPPP/RNBQK2R w KQkq - 0 6", + "hash": 13292822591690555697, + "name": "Alekhine: Modern, Flohr Variation" + }, + "B05i": { + "eco": "B05i", + "fen": "rn1qkb1r/pp2pppp/2pp4/3nP3/2PP2b1/5N2/PP2BPPP/RNBQK2R b KQkq c3 0 6", + "hash": 3772337105109215798, + "name": "Alekhine: Modern, Flohr, 6.c4" + }, + "B05j": { + "eco": "B05j", + "fen": "rn1qkb1r/pp2pppp/2pp4/3nP3/3P2b1/5N2/PPP1BPPP/RNBQ1RK1 b kq - 1 6", + "hash": 14271041407366142497, + "name": "Alekhine: Modern, Flohr, 6.O-O" + }, + "B05k": { + "eco": "B05k", + "fen": "rn1qkb1r/ppp2ppp/3pp3/3nP3/3P2b1/5N2/PPP1BPPP/RNBQK2R w KQkq - 0 6", + "hash": 6662099722332963544, + "name": "Alekhine: Modern, 5.Be2 e6" + }, + "B05l": { + "eco": "B05l", + "fen": "rn1qkb1r/ppp2ppp/3pp3/3nP3/3P2b1/5N2/PPP1BPPP/RNBQ1RK1 b kq - 1 6", + "hash": 2450507206099032520, + "name": "Alekhine: Modern, 5.Be2 e6 6.O-O" + }, + "B05m": { + "eco": "B05m", + "fen": "rn1qk2r/ppp1bppp/3pp3/3nP3/2PP2b1/5N2/PP2BPPP/RNBQ1RK1 b kq c3 0 7", + "hash": 13469738280097767006, + "name": "Alekhine: Modern, Main Line" + }, + "B05n": { + "eco": "B05n", + "fen": "rn1qk2r/ppp1bppp/1n1pp3/4P3/2PP2b1/5N1P/PP2BPP1/RNBQ1RK1 b kq - 0 8", + "hash": 8900886548817640674, + "name": "Alekhine: Modern, Main Line, 8.h3" + }, + "B05o": { + "eco": "B05o", + "fen": "rn1qk2r/ppp1bppp/1n1pp3/4P2b/2PP4/2N2N1P/PP2BPP1/R1BQ1RK1 b kq - 2 9", + "hash": 16620528711091060622, + "name": "Alekhine: Modern, Main Line, 8.h3 Bh5 9.Nc3" + }, + "B05p": { + "eco": "B05p", + "fen": "rn1q1rk1/ppp1bppp/1n2p3/3pP2b/2PP4/2N1BN1P/PP2BPP1/R2Q1RK1 w - - 0 11", + "hash": 15780963053042601897, + "name": "Alekhine: Modern, Main Line, 8.h3 Bh5 9.Nc3 O-O 10.Be3 d5" + }, + "B05q": { + "eco": "B05q", + "fen": "rn1qk2r/ppp1bppp/1n1Pp3/8/2PP2b1/5N2/PP2BPPP/RNBQ1RK1 b kq - 0 8", + "hash": 15179968053045279247, + "name": "Alekhine: Modern, Main Line, 8.exd6" + }, + "B05r": { + "eco": "B05r", + "fen": "rn1qk2r/ppp1bppp/1n1pp3/4P3/2PP2b1/2N2N2/PP2BPPP/R1BQ1RK1 b kq - 2 8", + "hash": 7557752882675759049, + "name": "Alekhine: Modern, Main Line, 8.Nc3" + }, + "B05s": { + "eco": "B05s", + "fen": "rn1q1rk1/ppp1bppp/1n1pp3/4P3/2PP2b1/2N1BN2/PP2BPPP/R2Q1RK1 b - - 4 9", + "hash": 1243801015773382060, + "name": "Alekhine: Modern, Main Line, 8.Nc3 O-O 9.Be3" + }, + "B05t": { + "eco": "B05t", + "fen": "r2q1rk1/ppp1bppp/1nnpp3/4P3/2PP2b1/2N1BN2/PP2BPPP/R2Q1RK1 w - - 5 10", + "hash": 13451977814737739951, + "name": "Alekhine: Modern, Main Line, 8.Nc3 O-O 9.Be3 Nc6" + }, + "B05u": { + "eco": "B05u", + "fen": "r2q1rk1/pp2bppp/1nnpp3/8/2PP2b1/2N1BN2/PP2BPPP/R2Q1RK1 w - - 0 11", + "hash": 2090612074978433740, + "name": "Alekhine: Modern, Main Line, 8.Nc3 O-O 9.Be3 Nc6 10.exd6 cxd6" + }, + "B06a": { + "eco": "B06a", + "fen": "rnbqkbnr/pppppp1p/6p1/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 0 2", + "hash": 7748663110719689693, + "name": "Modern" + }, + "B06b": { + "eco": "B06b", + "fen": "rnbqkbnr/pppppp1p/6p1/8/4P3/2N5/PPPP1PPP/R1BQKBNR b KQkq - 1 2", + "hash": 10385248691156701444, + "name": "Modern" + }, + "B06c": { + "eco": "B06c", + "fen": "rnbqk1nr/ppp1ppbp/3p2p1/8/4PP2/2N5/PPPP2PP/R1BQKBNR w KQkq - 0 4", + "hash": 16433360658249215562, + "name": "Modern" + }, + "B06d": { + "eco": "B06d", + "fen": "rnbqkbnr/pppppp1p/6p1/8/3PP3/8/PPP2PPP/RNBQKBNR b KQkq d3 0 2", + "hash": 12591474814412652191, + "name": "Modern" + }, + "B06e": { + "eco": "B06e", + "fen": "rnbqkbnr/ppp1pp1p/3p2p1/8/3PP3/8/PPP2PPP/RNBQKBNR w KQkq - 0 3", + "hash": 10882792095172507634, + "name": "Modern" + }, + "B06f": { + "eco": "B06f", + "fen": "rnbqk1nr/ppppppbp/6p1/8/3PP3/8/PPP2PPP/RNBQKBNR w KQkq - 1 3", + "hash": 2162249090246653237, + "name": "Modern" + }, + "B06g": { + "eco": "B06g", + "fen": "rnbqk1nr/ppppppbp/6p1/8/3PP3/2P5/PP3PPP/RNBQKBNR b KQkq - 0 3", + "hash": 7555670800580229811, + "name": "Modern: 3.c3" + }, + "B06h": { + "eco": "B06h", + "fen": "rnbqk1nr/ppp1ppbp/3p2p1/8/3PP3/2P2N2/PP3PPP/RNBQKB1R b KQkq - 1 4", + "hash": 9945452212337382115, + "name": "Modern: Geller System" + }, + "B06i": { + "eco": "B06i", + "fen": "rnbqk1nr/ppppppbp/6p1/8/3PP3/5N2/PPP2PPP/RNBQKB1R b KQkq - 2 3", + "hash": 14223835338198373384, + "name": "Modern: 3.Nf3" + }, + "B06j": { + "eco": "B06j", + "fen": "rnbqk1nr/ppp1ppbp/3p2p1/8/3PP3/5N2/PPP2PPP/RNBQKB1R w KQkq - 0 4", + "hash": 18221459092580212069, + "name": "Modern: 3.Nf3 d6" + }, + "B06k": { + "eco": "B06k", + "fen": "rnbqk1nr/ppp1ppbp/3p2p1/8/2BPP3/5N2/PPP2PPP/RNBQK2R b KQkq - 1 4", + "hash": 11487579465577253827, + "name": "Modern: 3.Nf3 d6 4.Bc4" + }, + "B06l": { + "eco": "B06l", + "fen": "rnbqk1nr/ppppppbp/6p1/8/3PP3/2N5/PPP2PPP/R1BQKBNR b KQkq - 2 3", + "hash": 16543624366772107244, + "name": "Modern: 3.Nc3" + }, + "B06m": { + "eco": "B06m", + "fen": "rnbqk1nr/ppp1ppbp/3p2p1/8/3PP3/2N5/PPP2PPP/R1BQKBNR w KQkq - 0 4", + "hash": 15865148858918698625, + "name": "Modern: 3.Nc3" + }, + "B06n": { + "eco": "B06n", + "fen": "rnbqk1nr/ppp1ppbp/3p2p1/8/2BPP3/2N5/PPP2PPP/R1BQK1NR b KQkq - 1 4", + "hash": 13808002356900079655, + "name": "Modern: 3.Nc3 d6 4.Bc4" + }, + "B06o": { + "eco": "B06o", + "fen": "rnbqk1nr/ppp1ppbp/3p2p1/8/3PP3/2N1B3/PPP2PPP/R2QKBNR b KQkq - 1 4", + "hash": 12620475083852408079, + "name": "Modern: 3.Nc3 d6 4.Be3" + }, + "B06p": { + "eco": "B06p", + "fen": "rnbqk1nr/1pp1ppbp/p2p2p1/8/3PP3/2N1B3/PPP2PPP/R2QKBNR w KQkq - 0 5", + "hash": 9066624332499787219, + "name": "Modern: 3.Nc3 d6 4.Be3 a6" + }, + "B06q": { + "eco": "B06q", + "fen": "rnbqk1nr/pp2ppbp/2pp2p1/8/3PP3/2N1B3/PPP2PPP/R2QKBNR w KQkq - 0 5", + "hash": 4421975008888239796, + "name": "Modern: 3.Nc3 d6 4.Be3 c6" + }, + "B06r": { + "eco": "B06r", + "fen": "rnbqk1nr/ppp1ppbp/3p2p1/8/3PP3/2N2N2/PPP2PPP/R1BQKB1R b KQkq - 1 4", + "hash": 524871813099724732, + "name": "Modern: Two Knights Variation" + }, + "B06s": { + "eco": "B06s", + "fen": "rnbqk1nr/ppp1ppbp/3p2p1/8/3PPP2/2N5/PPP3PP/R1BQKBNR b KQkq f3 0 4", + "hash": 2394272165581800200, + "name": "Modern: Pseudo-Austrian Attack" + }, + "B06t": { + "eco": "B06t", + "fen": "rnbqk1nr/pp2ppbp/2pp2p1/8/3PPP2/2N2N2/PPP3PP/R1BQKB1R b KQkq - 1 5", + "hash": 7504167686255767950, + "name": "Modern: Pseudo-Austrian Attack" + }, + "B06u": { + "eco": "B06u", + "fen": "rnbqk1nr/ppppppbp/6p1/8/3PPP2/8/PPP3PP/RNBQKBNR b KQkq f3 0 3", + "hash": 16363731503156365500, + "name": "Modern: Three Pawns Attack" + }, + "B07a": { + "eco": "B07a", + "fen": "rnbqkbnr/ppp1pppp/3p4/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 0 2", + "hash": 13512502236871723259, + "name": "Pirc" + }, + "B07b": { + "eco": "B07b", + "fen": "rnbqkbnr/ppp1pppp/3p4/8/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2", + "hash": 6981390618393012678, + "name": "Pirc: 2.Nf3" + }, + "B07c": { + "eco": "B07c", + "fen": "rnbqkbnr/ppp1pppp/3p4/8/4PP2/8/PPPP2PP/RNBQKBNR b KQkq f3 0 2", + "hash": 5084687383223874930, + "name": "Pirc: 2.f4" + }, + "B07d": { + "eco": "B07d", + "fen": "rnbqkbnr/ppp1pppp/3p4/8/3PP3/8/PPP2PPP/RNBQKBNR b KQkq d3 0 2", + "hash": 9129678919776085433, + "name": "Pirc: 2.d4" + }, + "B07e": { + "eco": "B07e", + "fen": "rnbqkb1r/ppp1pppp/3p1n2/8/3PP3/5P2/PPP3PP/RNBQKBNR b KQkq - 0 3", + "hash": 5471011939025980254, + "name": "Pirc: 3.f3" + }, + "B07f": { + "eco": "B07f", + "fen": "rnbqkb1r/ppp2ppp/3p1n2/4p3/3PP3/5P2/PPP3PP/RNBQKBNR w KQkq e6 0 4", + "hash": 13949046717643322216, + "name": "Pirc: 3.f3 e5" + }, + "B07g": { + "eco": "B07g", + "fen": "rnbqkb1r/ppp1pp1p/3p1np1/8/3PP3/5P2/PPP3PP/RNBQKBNR w KQkq - 0 4", + "hash": 11698279270880057621, + "name": "Pirc: 3.f3 g6" + }, + "B07h": { + "eco": "B07h", + "fen": "rnbqkb1r/ppp1pppp/3p1n2/8/3PP3/3B4/PPP2PPP/RNBQK1NR b KQkq - 2 3", + "hash": 8093170620052448860, + "name": "Pirc: 3.Bd3" + }, + "B07i": { + "eco": "B07i", + "fen": "rnbqkb1r/ppp1pp1p/3p1np1/8/3PP3/3B4/PPP2PPP/RNBQK1NR w KQkq - 0 4", + "hash": 11089239523196220439, + "name": "Pirc: 3.Bd3 g6" + }, + "B07j": { + "eco": "B07j", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/3PP3/2PB1N2/PP3PPP/RNBQK2R b KQkq - 0 5", + "hash": 9576567399294210310, + "name": "Pirc: 3.Bd3 g6 4.Nf3 Bg7 5.c3" + }, + "B07k": { + "eco": "B07k", + "fen": "rnbqkb1r/ppp1pppp/3p1n2/8/3PP3/2N5/PPP2PPP/R1BQKBNR b KQkq - 2 3", + "hash": 16053660092422743798, + "name": "Pirc: 3.Nc3" + }, + "B07l": { + "eco": "B07l", + "fen": "r1bqkb1r/pppnpppp/3p1n2/8/3PP3/2N5/PPP2PPP/R1BQKBNR w KQkq - 3 4", + "hash": 17089319529635384122, + "name": "Pirc: 3.Nc3 Nbd7" + }, + "B07m": { + "eco": "B07m", + "fen": "rnbqkb1r/ppp2ppp/3p1n2/4p3/3PP3/2N5/PPP2PPP/R1BQKBNR w KQkq e6 0 4", + "hash": 6102947620896710336, + "name": "Pirc: 3.Nc3 e5" + }, + "B07n": { + "eco": "B07n", + "fen": "rnbqkb1r/pp2pppp/2pp1n2/8/3PP3/2N5/PPP2PPP/R1BQKBNR w KQkq - 0 4", + "hash": 5526166482892371277, + "name": "Pirc: Pytel/Czech" + }, + "B07o": { + "eco": "B07o", + "fen": "rnbqkb1r/pp2pppp/2pp1n2/8/3PP3/2N2N2/PPP2PPP/R1BQKB1R b KQkq - 1 4", + "hash": 10940386803611227248, + "name": "Pirc: Czech, 4.Nf3" + }, + "B07p": { + "eco": "B07p", + "fen": "rnbqkb1r/pp2pppp/2pp1n2/8/3PPP2/2N5/PPP3PP/R1BQKBNR b KQkq f3 0 4", + "hash": 12801092912325134532, + "name": "Pirc: Czech, 4.f4" + }, + "B07q": { + "eco": "B07q", + "fen": "rnbqkb1r/ppp1pp1p/3p1np1/8/3PP3/2N5/PPP2PPP/R1BQKBNR w KQkq - 0 4", + "hash": 3998736422981301437, + "name": "Pirc: 3...g6" + }, + "B07r": { + "eco": "B07r", + "fen": "rnbqkb1r/ppp1pp1p/3p1np1/8/3PP3/2N3P1/PPP2P1P/R1BQKBNR b KQkq - 0 4", + "hash": 1988593045685185669, + "name": "Pirc: Sveshnikov (4.g3)" + }, + "B07s": { + "eco": "B07s", + "fen": "rnbqkb1r/ppp1pp1p/3p1np1/8/2BPP3/2N5/PPP2PPP/R1BQK1NR b KQkq - 1 4", + "hash": 6110797276000854555, + "name": "Pirc: Holmov (4.Bc4)" + }, + "B07t": { + "eco": "B07t", + "fen": "rnbqkb1r/ppp1pp1p/3p1np1/8/3PP3/2N1B3/PPP2PPP/R2QKBNR b KQkq - 1 4", + "hash": 4933383860656107315, + "name": "Pirc: 4.Be3" + }, + "B07u": { + "eco": "B07u", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/3PP3/2N1B3/PPP2PPP/R2QKBNR w KQkq - 2 5", + "hash": 17639152565411816601, + "name": "Pirc: 4.Be3 Bg7" + }, + "B07v": { + "eco": "B07v", + "fen": "rnbqk2r/pp2ppbp/2pp1np1/8/3PP3/2N1B3/PPPQ1PPP/R3KBNR w KQkq - 0 6", + "hash": 5667913918844217474, + "name": "Pirc: 4.Be3, 150 Attack" + }, + "B07w": { + "eco": "B07w", + "fen": "rnbqkb1r/ppp1pp1p/3p1np1/6B1/3PP3/2N5/PPP2PPP/R2QKBNR b KQkq - 1 4", + "hash": 17376024951504351093, + "name": "Pirc: Byrne 4.Bg5" + }, + "B07x": { + "eco": "B07x", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/6B1/3PP3/2N5/PPP2PPP/R2QKBNR w KQkq - 2 5", + "hash": 4726588382492910815, + "name": "Pirc: 4.Bg5 Bg7" + }, + "B07y": { + "eco": "B07y", + "fen": "rnbqkb1r/ppp1pp1p/3p1np1/8/3PP3/2N5/PPP1BPPP/R1BQK1NR b KQkq - 1 4", + "hash": 4971655603413990942, + "name": "Pirc: 4.Be2" + }, + "B07z": { + "eco": "B07z", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/3PP2P/2N5/PPP1BPP1/R1BQK1NR b KQkq h3 0 5", + "hash": 7557462324838829258, + "name": "Pirc: Bayonet/Mariotti Attack" + }, + "B08a": { + "eco": "B08a", + "fen": "rnbqkb1r/ppp1pp1p/3p1np1/8/3PP3/2N2N2/PPP2PPP/R1BQKB1R b KQkq - 1 4", + "hash": 17013105573636412800, + "name": "Pirc: Classical" + }, + "B08b": { + "eco": "B08b", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/3PP3/2N2N1P/PPP2PP1/R1BQKB1R b KQkq - 0 5", + "hash": 12994381813327927256, + "name": "Pirc: Classical, 5.h3" + }, + "B08c": { + "eco": "B08c", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/3PP3/2N1BN1P/PPP2PP1/R2QKB1R b KQ - 2 6", + "hash": 14840776059193320893, + "name": "Pirc: Classical, Spassky System" + }, + "B08d": { + "eco": "B08d", + "fen": "rnbq1rk1/1pp1ppbp/p2p1np1/8/3PP3/2N1BN1P/PPP2PP1/R2QKB1R w KQ - 0 7", + "hash": 2234619677281492321, + "name": "Pirc: Classical, Spassky System, 6...a6" + }, + "B08e": { + "eco": "B08e", + "fen": "rnbq1rk1/pp2ppbp/2pp1np1/8/3PP3/2N1BN1P/PPP2PP1/R2QKB1R w KQ - 0 7", + "hash": 6885980591667688966, + "name": "Pirc: Classical, Spassky System, 6...c6" + }, + "B08f": { + "eco": "B08f", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/P2PP3/2N2N2/1PP2PPP/R1BQKB1R b KQkq a3 0 5", + "hash": 3994677733275012068, + "name": "Pirc: Classical, 5.a4" + }, + "B08g": { + "eco": "B08g", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/2BPP3/2N2N2/PPP2PPP/R1BQK2R b KQkq - 3 5", + "hash": 4545602069214857356, + "name": "Pirc: Classical, 5.Bc4" + }, + "B08h": { + "eco": "B08h", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/3PP3/2N1BN2/PPP2PPP/R2QKB1R b KQkq - 3 5", + "hash": 3435744293223712164, + "name": "Pirc: Classical, 5.Be3" + }, + "B08i": { + "eco": "B08i", + "fen": "rnbqk2r/pp2ppbp/2pp1np1/8/3PP3/2N1BN2/PPP2PPP/R2QKB1R w KQkq - 0 6", + "hash": 13678798573631444511, + "name": "Pirc: Classical, 5.Be3 c6" + }, + "B08j": { + "eco": "B08j", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/3PP3/2N2N2/PPP1BPPP/R1BQK2R b KQkq - 3 5", + "hash": 3397419662239306889, + "name": "Pirc: Classical, 5.Be2" + }, + "B08k": { + "eco": "B08k", + "fen": "rnbqk2r/pp2ppbp/2pp1np1/8/3PP3/2N2N2/PPP1BPPP/R1BQK2R w KQkq - 0 6", + "hash": 13645030293062764338, + "name": "Pirc: Classical, 5.Be2 c6" + }, + "B08l": { + "eco": "B08l", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/3PP3/2N2N2/PPP1BPPP/R1BQK2R w KQ - 4 6", + "hash": 2706349574698204514, + "name": "Pirc: Classical, 5.Be2 O-O" + }, + "B08m": { + "eco": "B08m", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/3PP3/2N1BN2/PPP1BPPP/R2QK2R b KQ - 5 6", + "hash": 6234769097160156908, + "name": "Pirc: Classical, 5.Be2 O-O 6.Be3" + }, + "B08n": { + "eco": "B08n", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/3PP3/2N2N2/PPP1BPPP/R1BQ1RK1 b - - 5 6", + "hash": 6628060245201102450, + "name": "Pirc: Classical, 5.Be2 O-O 6.O-O" + }, + "B08o": { + "eco": "B08o", + "fen": "r1bq1rk1/ppp1ppbp/2np1np1/8/3PP3/2N2N2/PPP1BPPP/R1BQ1RK1 w - - 6 7", + "hash": 17300086826157474673, + "name": "Pirc: Classical, 5.Be2 O-O 6.O-O Nc6" + }, + "B08p": { + "eco": "B08p", + "fen": "rnbq1rk1/pp2ppbp/2pp1np1/8/3PP3/2N2N2/PPP1BPPP/R1BQ1RK1 w - - 0 7", + "hash": 14520014502161380809, + "name": "Pirc: Classical, 5.Be2 O-O 6.O-O c6" + }, + "B08q": { + "eco": "B08q", + "fen": "rnbq1rk1/pp2ppbp/2pp1np1/8/3PP3/2N2N1P/PPP1BPP1/R1BQ1RK1 b - - 0 7", + "hash": 2410175653152996411, + "name": "Pirc: Classical, 5.Be2 O-O 6.O-O c6 7.h3" + }, + "B08r": { + "eco": "B08r", + "fen": "rnbq1rk1/pp2ppbp/2pp1np1/8/P2PP3/2N2N2/1PP1BPPP/R1BQ1RK1 b - a3 0 7", + "hash": 11693608175097520135, + "name": "Pirc: Classical, 5.Be2 O-O 6.O-O c6 7.a4" + }, + "B08s": { + "eco": "B08s", + "fen": "r1bq1rk1/pp1nppbp/2pp1np1/8/P2PP3/2N2N2/1PP1BPPP/R1BQ1RK1 w - - 1 8", + "hash": 10496608648965541323, + "name": "Pirc: Classical, 5.Be2 O-O 6.O-O c6 7.a4 Nbd7" + }, + "B08t": { + "eco": "B08t", + "fen": "rn1q1rk1/ppp1ppbp/3p1np1/8/3PP1b1/2N2N2/PPP1BPPP/R1BQ1RK1 w - - 6 7", + "hash": 6424476812262025368, + "name": "Pirc: Classical, 5.Be2 O-O 6.O-O Bg4" + }, + "B08u": { + "eco": "B08u", + "fen": "r2q1rk1/ppp1ppbp/2np1np1/8/3PP1b1/2N1BN2/PPPQBPPP/R4RK1 b - - 9 8", + "hash": 12237827329401735605, + "name": "Pirc: Classical, 5.Be2 O-O 6.O-O Bg4 7.Be3 Nc6 8.Qd2" + }, + "B08v": { + "eco": "B08v", + "fen": "r2q1rk1/ppp2pbp/2np1np1/4p3/3PP1b1/2N1BN2/PPPQBPPP/R4RK1 w - e6 0 9", + "hash": 2570842167449432451, + "name": "Pirc: Classical, 5.Be2 O-O 6.O-O Bg4 7.Be3 Nc6 8.Qd2 e5" + }, + "B09a": { + "eco": "B09a", + "fen": "rnbqkb1r/ppp1pp1p/3p1np1/8/3PPP2/2N5/PPP3PP/R1BQKBNR b KQkq f3 0 4", + "hash": 14584943239902939444, + "name": "Pirc: Austrian Attack" + }, + "B09b": { + "eco": "B09b", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/3PPP2/2N5/PPP3PP/R1BQKBNR w KQkq - 1 5", + "hash": 8850731245875856030, + "name": "Pirc: Austrian Attack" + }, + "B09c": { + "eco": "B09c", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/2BPPP2/2N5/PPP3PP/R1BQK1NR b KQkq - 2 5", + "hash": 1830617611963094072, + "name": "Pirc: Austrian, Ljubojevic Variation" + }, + "B09d": { + "eco": "B09d", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/3PPP2/2N2N2/PPP3PP/R1BQKB1R b KQkq - 2 5", + "hash": 11651078157297509283, + "name": "Pirc: Austrian, 5.Nf3" + }, + "B09e": { + "eco": "B09e", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/3PPP2/2N2N2/PPP3PP/R1BQKB1R w KQ - 3 6", + "hash": 12328635236372843080, + "name": "Pirc: Austrian, 5...O-O" + }, + "B09f": { + "eco": "B09f", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/4P3/3P1P2/2N2N2/PPP3PP/R1BQKB1R b KQ - 0 6", + "hash": 14582948683893976108, + "name": "Pirc: Austrian, 5...O-O 6.e5" + }, + "B09g": { + "eco": "B09g", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/3PPP2/2N1BN2/PPP3PP/R2QKB1R b KQ - 4 6", + "hash": 15569128088412623302, + "name": "Pirc: Austrian, 5...O-O 6.Be3" + }, + "B09h": { + "eco": "B09h", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/3PPP2/2N2N2/PPP1B1PP/R1BQK2R b KQ - 4 6", + "hash": 15607399968610664683, + "name": "Pirc: Austrian, 5...O-O 6.Be2" + }, + "B09i": { + "eco": "B09i", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/3PPP2/2NB1N2/PPP3PP/R1BQK2R b KQ - 4 6", + "hash": 18308748558190168123, + "name": "Pirc: Austrian, 5...O-O 6.Bd3" + }, + "B09j": { + "eco": "B09j", + "fen": "r1bq1rk1/ppp1ppbp/2np1np1/8/3PPP2/2NB1N2/PPP3PP/R1BQK2R w KQ - 5 7", + "hash": 6194812532961537336, + "name": "Pirc: Austrian, 5...O-O 6.Bd3 Nc6" + }, + "B09k": { + "eco": "B09k", + "fen": "r1bq1rk1/ppp1ppbp/2np1np1/4P3/3P1P2/2NB1N2/PPP3PP/R1BQK2R b KQ - 0 7", + "hash": 3783432500656819036, + "name": "Pirc: Austrian, 5...O-O 6.Bd3 Nc6 7.e5" + }, + "B09l": { + "eco": "B09l", + "fen": "r1bq1rk1/ppp1ppbp/n2p1np1/8/3PPP2/2NB1N2/PPP3PP/R1BQK2R w KQ - 5 7", + "hash": 12724100922874090631, + "name": "Pirc: Austrian, 5...O-O 6.Bd3 Na6" + }, + "B09m": { + "eco": "B09m", + "fen": "r1bq1rk1/pp2ppbp/n2p1np1/2p5/3PPP2/2NB1N2/PPP3PP/R1BQ1RK1 w - c6 0 8", + "hash": 2923325188669277418, + "name": "Pirc: Austrian, 5...O-O 6.Bd3 Na6 7.O-O c5" + }, + "B09n": { + "eco": "B09n", + "fen": "r2q1rk1/pp2ppbp/n2p1np1/2pP4/4PPb1/2NB1N2/PPP3PP/R1BQ1RK1 w - - 1 9", + "hash": 10397181670766025821, + "name": "Pirc: Austrian, 5...O-O 6.Bd3 Na6 7.O-O c5 8.d5 Bg4" + }, + "B09o": { + "eco": "B09o", + "fen": "rnbqk2r/pp2ppbp/3p1np1/2p5/3PPP2/2N2N2/PPP3PP/R1BQKB1R w KQkq c6 0 6", + "hash": 5170449531384424670, + "name": "Pirc: Austrian, 5...c5" + }, + "B09p": { + "eco": "B09p", + "fen": "rnbqk2r/pp2ppbp/3p1np1/2P5/4PP2/2N2N2/PPP3PP/R1BQKB1R b KQkq - 0 6", + "hash": 4044798321890213810, + "name": "Pirc: Austrian, 5...c5 6.dxc5" + }, + "B09q": { + "eco": "B09q", + "fen": "rnb1k2r/pp2ppbp/3p1np1/q1P5/4PP2/2NB1N2/PPP3PP/R1BQK2R b KQkq - 2 7", + "hash": 12996322398493891662, + "name": "Pirc: Austrian, 5...c5 6.dxc5 Qa5 7.Bd3" + }, + "B09r": { + "eco": "B09r", + "fen": "rnbqk2r/pp2ppbp/3p1np1/1Bp5/3PPP2/2N2N2/PPP3PP/R1BQK2R b KQkq - 1 6", + "hash": 8367672556564806493, + "name": "Pirc: Austrian, 5...c5 6.Bb5+" + }, + "B09s": { + "eco": "B09s", + "fen": "rn1qk2r/pp1bppbp/3p1np1/1Bp5/3PPP2/2N2N2/PPP3PP/R1BQK2R w KQkq - 2 7", + "hash": 10871143635371338604, + "name": "Pirc: Austrian, 5...c5 6.Bb5+" + }, + "B09t": { + "eco": "B09t", + "fen": "rn1qk2r/pp1bppbp/3p1np1/1Bp1P3/3P1P2/2N2N2/PPP3PP/R1BQK2R b KQkq - 0 7", + "hash": 17845260038320459016, + "name": "Pirc: Austrian, 5...c5 6.Bb5+ Bd7 7.e5" + }, + "B09u": { + "eco": "B09u", + "fen": "rn1qk2r/pp1bppbp/3p2p1/1Bp1P3/3P1Pn1/2N2N2/PPP3PP/R1BQK2R w KQkq - 1 8", + "hash": 7675332313946397796, + "name": "Pirc: Austrian, 5...c5 6.Bb5+ Bd7 7.e5 Ng4" + }, + "B09v": { + "eco": "B09v", + "fen": "rn1qk2r/pp1Bppbp/3p2p1/2p1P3/3P1Pn1/2N2N2/PPP3PP/R1BQK2R b KQkq - 0 8", + "hash": 56301694849837116, + "name": "Pirc: Austrian, 5...c5 6.Bb5+ Bd7 7.e5 Ng4 8.Bxd7+" + }, + "B09w": { + "eco": "B09w", + "fen": "rn1qk2r/pp1bppbp/3pP1p1/1Bp5/3P1Pn1/2N2N2/PPP3PP/R1BQK2R b KQkq - 0 8", + "hash": 16807818832112457389, + "name": "Pirc: Austrian, 5...c5 6.Bb5+ Bd7 7.e5 Ng4 8.e6" + }, + "B09x": { + "eco": "B09x", + "fen": "rn1qk2r/pp2ppbp/3pP1p1/1bp5/3P1Pn1/2N2N2/PPP3PP/R1BQK2R w KQkq - 0 9", + "hash": 16433851717951238030, + "name": "Pirc: Austrian, 5...c5 6.Bb5+ Bd7 7.e5 Ng4 8.e6 Bxb5" + }, + "B10a": { + "eco": "B10a", + "fen": "rnbqkbnr/pp1ppppp/2p5/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 0 2", + "hash": 1172755318016414253, + "name": "Caro-Kann" + }, + "B10b": { + "eco": "B10b", + "fen": "rnbqkbnr/pp1ppppp/2p5/8/4P3/3P4/PPP2PPP/RNBQKBNR b KQkq - 0 2", + "hash": 13754755682274454009, + "name": "Caro-Kann: Breyer Variation" + }, + "B10c": { + "eco": "B10c", + "fen": "rnbqkbnr/pp2pppp/2p5/3p4/4P3/3P4/PPPN1PPP/R1BQKBNR b KQkq - 1 3", + "hash": 7126435261028290543, + "name": "Caro-Kann: Breyer, 3.Nd2" + }, + "B10d": { + "eco": "B10d", + "fen": "rnbqkbnr/pp2pp1p/2p3p1/3p4/4P3/3P4/PPPN1PPP/R1BQKBNR w KQkq - 0 4", + "hash": 10039223166765063588, + "name": "Caro-Kann: Breyer, 3.Nd2 g6" + }, + "B10e": { + "eco": "B10e", + "fen": "rnbqkbnr/pp3ppp/2p5/3pp3/4P3/3P4/PPPN1PPP/R1BQKBNR w KQkq e6 0 4", + "hash": 16761878114976217049, + "name": "Caro-Kann: Breyer, 3.Nd2 e5" + }, + "B10f": { + "eco": "B10f", + "fen": "rnbqk1nr/pp3ppp/2pb4/3pp3/4P3/3P1NP1/PPPN1P1P/R1BQKB1R b KQkq - 0 5", + "hash": 13493942694760046584, + "name": "Caro-Kann: Breyer, Main Line" + }, + "B10g": { + "eco": "B10g", + "fen": "rnbqkbnr/pp1ppppp/2p5/8/2P1P3/8/PP1P1PPP/RNBQKBNR b KQkq c3 0 2", + "hash": 11269670497880521002, + "name": "Caro-Kann: English Variation" + }, + "B10h": { + "eco": "B10h", + "fen": "rnbqkbnr/pp1p1ppp/2p5/4p3/2P1P3/8/PP1P1PPP/RNBQKBNR w KQkq e6 0 3", + "hash": 1593678132437303580, + "name": "Caro-Kann: English Variation" + }, + "B10i": { + "eco": "B10i", + "fen": "rnbqkbnr/pp2pppp/2p5/3p4/2P1P3/8/PP1P1PPP/RNBQKBNR w KQkq d6 0 3", + "hash": 1805885792066369292, + "name": "Caro-Kann: English Variation" + }, + "B10j": { + "eco": "B10j", + "fen": "rnbqkbnr/pp2pppp/8/3P4/8/8/PP1P1PPP/RNBQKBNR b KQkq - 0 4", + "hash": 4866972030702005421, + "name": "Caro-Kann: English, Exchange" + }, + "B10k": { + "eco": "B10k", + "fen": "rnbqkb1r/pp2pppp/5n2/3P4/8/8/PP1P1PPP/RNBQKBNR w KQkq - 1 5", + "hash": 1757742729665408315, + "name": "Caro-Kann: English, Exchange, 4...Nf6" + }, + "B10l": { + "eco": "B10l", + "fen": "rnbqkb1r/pp2pppp/5n2/1B1P4/8/8/PP1P1PPP/RNBQK1NR b KQkq - 2 5", + "hash": 3150848602913373880, + "name": "Caro-Kann: English, Exchange, 4...Nf6 5.Bb5+" + }, + "B10m": { + "eco": "B10m", + "fen": "rnbqkb1r/pp2pppp/5n2/3P4/8/2N5/PP1P1PPP/R1BQKBNR b KQkq - 2 5", + "hash": 16425710936793935842, + "name": "Caro-Kann: English, Exchange, 4...Nf6 5.Nc3" + }, + "B10n": { + "eco": "B10n", + "fen": "rnbqkb1r/pp2pppp/8/3n4/8/2N5/PP1P1PPP/R1BQKBNR w KQkq - 0 6", + "hash": 8943484052124267198, + "name": "Caro-Kann: English, Exchange, 4...Nf6 5.Nc3 Nxd5" + }, + "B10o": { + "eco": "B10o", + "fen": "rnbqkbnr/pp1ppppp/2p5/8/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2", + "hash": 14637431381026140944, + "name": "Caro-Kann: 2.Nf3" + }, + "B10p": { + "eco": "B10p", + "fen": "rnbqkbnr/pp1ppppp/2p5/8/4P3/2N5/PPPP1PPP/R1BQKBNR b KQkq - 1 2", + "hash": 16992483941090005236, + "name": "Caro-Kann: 2.Nc3" + }, + "B10q": { + "eco": "B10q", + "fen": "rnbqkbnr/pp2pppp/2p5/3p4/4P3/2N5/PPPP1PPP/R1BQKBNR w KQkq d6 0 3", + "hash": 7979054769927315154, + "name": "Caro-Kann: 2.Nc3 d5" + }, + "B10r": { + "eco": "B10r", + "fen": "rnbqkbnr/pp2pppp/2p5/3p4/4P3/2N2Q2/PPPP1PPP/R1B1KBNR b KQkq - 1 3", + "hash": 15319336333895927913, + "name": "Caro-Kann: Goldman/Spielmann" + }, + "B10s": { + "eco": "B10s", + "fen": "rnbqkbnr/pp2pppp/2p5/3p4/4P3/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 1 3", + "hash": 13105370460902735855, + "name": "Caro-Kann: Two Knights Variation" + }, + "B10t": { + "eco": "B10t", + "fen": "rnbqkbnr/pp2pppp/2p5/8/4p3/2N2N2/PPPP1PPP/R1BQKB1R w KQkq - 0 4", + "hash": 9031194955535126463, + "name": "Caro-Kann: Two Knights, 3...dxe4" + }, + "B10u": { + "eco": "B10u", + "fen": "rnbqkbnr/pp2pppp/2p5/8/4N3/5N2/PPPP1PPP/R1BQKB1R b KQkq - 0 4", + "hash": 15534886561514397224, + "name": "Caro-Kann: Two Knights, 3...dxe4 4.Nxe4" + }, + "B10v": { + "eco": "B10v", + "fen": "rnbqkb1r/pp2pppp/2p2n2/8/4N3/5N2/PPPP1PPP/R1BQKB1R w KQkq - 1 5", + "hash": 10122180944966475710, + "name": "Caro-Kann: Two Knights, 3...dxe4 4.Nxe4 Nf6" + }, + "B11a": { + "eco": "B11a", + "fen": "rn1qkbnr/pp2pppp/2p5/3p4/4P1b1/2N2N2/PPPP1PPP/R1BQKB1R w KQkq - 2 4", + "hash": 13190034841581924613, + "name": "Caro-Kann: Two Knights, 3...Bg4" + }, + "B11b": { + "eco": "B11b", + "fen": "rn1qkbnr/pp2pppp/2p5/3p4/4P1b1/2N2N1P/PPPP1PP1/R1BQKB1R b KQkq - 0 4", + "hash": 6917449258172414199, + "name": "Caro-Kann: Two Knights, 3...Bg4 4.h3" + }, + "B11c": { + "eco": "B11c", + "fen": "r2qkbnr/pp2pppp/2n3b1/1B1p4/6P1/2N2N1P/PPPP1P2/R1BQK2R w KQkq - 1 8", + "hash": 15683596318049167482, + "name": "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bh5, 7.g4 Bg6" + }, + "B11d": { + "eco": "B11d", + "fen": "rn1qkbnr/pp2pppp/2p5/3p4/4P3/2N2b1P/PPPP1PP1/R1BQKB1R w KQkq - 0 5", + "hash": 17188697868358537863, + "name": "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3" + }, + "B11e": { + "eco": "B11e", + "fen": "rn1qkbnr/pp2pppp/2p5/8/4p3/2N2Q1P/PPPP1PP1/R1B1KB1R w KQkq - 0 6", + "hash": 8113050728802301209, + "name": "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 dxe4" + }, + "B11f": { + "eco": "B11f", + "fen": "rn1qkb1r/pp2pppp/2p2n2/3p4/4P3/2N2Q1P/PPPP1PP1/R1B1KB1R w KQkq - 1 6", + "hash": 16425739839376180447, + "name": "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 Nf6" + }, + "B11g": { + "eco": "B11g", + "fen": "rn1qkbnr/pp3ppp/2p1p3/3p4/4P3/2N2Q1P/PPPP1PP1/R1B1KB1R w KQkq - 0 6", + "hash": 14873759680641307931, + "name": "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 e6" + }, + "B11h": { + "eco": "B11h", + "fen": "rn1qkbnr/pp3ppp/2p1p3/3p4/3PP3/2N2Q1P/PPP2PP1/R1B1KB1R b KQkq d3 0 6", + "hash": 819402476148897881, + "name": "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 e6 6.d4" + }, + "B11i": { + "eco": "B11i", + "fen": "rn1qkbnr/pp3ppp/2p1p3/3p4/4P3/2N2QPP/PPPP1P2/R1B1KB1R b KQkq - 0 6", + "hash": 16324579833980964131, + "name": "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 e6 6.g3" + }, + "B11j": { + "eco": "B11j", + "fen": "rn1qkbnr/pp3ppp/2p1p3/3p4/4P3/2NP1Q1P/PPP2PP1/R1B1KB1R b KQkq - 0 6", + "hash": 6975783673680867023, + "name": "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 e6 6.d3" + }, + "B11k": { + "eco": "B11k", + "fen": "r2qkbnr/pp1n1ppp/2p1p3/3p4/4P3/2NP1Q1P/PPP2PP1/R1B1KB1R w KQkq - 1 7", + "hash": 5993601810552537859, + "name": "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 e6 6.d3 Nd7" + }, + "B11l": { + "eco": "B11l", + "fen": "rn1qkb1r/pp3ppp/2p1pn2/3p4/4P3/2NP1Q1P/PPP2PP1/R1B1KB1R w KQkq - 1 7", + "hash": 4260619373461237593, + "name": "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 e6 6.d3 Nf6" + }, + "B11m": { + "eco": "B11m", + "fen": "rn1qkb1r/pp3ppp/2p1pn2/3p4/4P3/P1NP1Q1P/1PP2PP1/R1B1KB1R b KQkq - 0 7", + "hash": 17347007704773779737, + "name": "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 e6 6.d3 Nf6 7.a3" + }, + "B11n": { + "eco": "B11n", + "fen": "rn1qkb1r/pp3ppp/2p1pn2/3p4/4P3/2NP1Q1P/PPPB1PP1/R3KB1R b KQkq - 2 7", + "hash": 1345899034588251229, + "name": "Caro-Kann: Two Knights, 3...Bg4 4.h3 Bxf3 5.Qxf3 e6 6.d3 Nf6 7.Bd2" + }, + "B12a": { + "eco": "B12a", + "fen": "rnbqkbnr/pp1ppppp/2p5/8/3PP3/8/PPP2PPP/RNBQKBNR b KQkq d3 0 2", + "hash": 15380735101731651439, + "name": "Caro-Kann: 2.d4" + }, + "B12b": { + "eco": "B12b", + "fen": "rnbqkbnr/pp2pppp/2p5/3p4/3PP3/8/PPP2PPP/RNBQKBNR w KQkq d6 0 3", + "hash": 5771779641808056649, + "name": "Caro-Kann: 2.d4 d5" + }, + "B12c": { + "eco": "B12c", + "fen": "rnbqkbnr/pp2pppp/2p5/3p4/3PP3/4B3/PPP2PPP/RN1QKBNR b KQkq - 1 3", + "hash": 2527012992335669959, + "name": "Caro-Kann: Mieses Gambit" + }, + "B12d": { + "eco": "B12d", + "fen": "rnbqkbnr/pp2pppp/2p5/3p4/3PP3/5P2/PPP3PP/RNBQKBNR b KQkq - 0 3", + "hash": 4515031458725109304, + "name": "Caro-Kann: Maroczy (Fantasy) Variation" + }, + "B12e": { + "eco": "B12e", + "fen": "rnbqkbnr/pp3ppp/2p1p3/3p4/3PP3/5P2/PPP3PP/RNBQKBNR w KQkq - 0 4", + "hash": 5251037743829782122, + "name": "Caro-Kann: Maroczy (Fantasy), 3...e6" + }, + "B12f": { + "eco": "B12f", + "fen": "rnbqkbnr/pp2pppp/2p5/8/3Pp3/5P2/PPP3PP/RNBQKBNR w KQkq - 0 4", + "hash": 17735740728237076072, + "name": "Caro-Kann: Maroczy (Fantasy), 3...dxe4" + }, + "B12g": { + "eco": "B12g", + "fen": "rnbqkbnr/pp2pppp/2p5/3p4/3PP3/8/PPPN1PPP/R1BQKBNR b KQkq - 1 3", + "hash": 682228701176355193, + "name": "Caro-Kann: 3.Nd2" + }, + "B12h": { + "eco": "B12h", + "fen": "rnbqkbnr/pp2pp1p/2p3p1/3p4/3PP3/8/PPPN1PPP/R1BQKBNR w KQkq - 0 4", + "hash": 16195947259018267442, + "name": "Caro-Kann: Gurgenidze/Modern: 3.Nd2 g6" + }, + "B12i": { + "eco": "B12i", + "fen": "rnbqkbnr/pp2pppp/2p5/3pP3/3P4/8/PPP2PPP/RNBQKBNR b KQkq - 0 3", + "hash": 3557964634786027309, + "name": "Caro-Kann: Advance Variation" + }, + "B12j": { + "eco": "B12j", + "fen": "rnbqkbnr/pp2pppp/8/2ppP3/3P4/8/PPP2PPP/RNBQKBNR w KQkq - 0 4", + "hash": 13672214985046133474, + "name": "Caro-Kann: Advance, 3...c5" + }, + "B12k": { + "eco": "B12k", + "fen": "r1bqkbnr/pp2pppp/2n5/2PpP3/8/8/PPP2PPP/RNBQKBNR w KQkq - 1 5", + "hash": 7616586588474013837, + "name": "Caro-Kann: Advance, 3...c5 4.dxc5 Nc6" + }, + "B12l": { + "eco": "B12l", + "fen": "rn1qkbnr/pp2pppp/2p5/3pPb2/3P4/8/PPP2PPP/RNBQKBNR w KQkq - 1 4", + "hash": 12860315101629505184, + "name": "Caro-Kann: Advance, 3...Bf5" + }, + "B12m": { + "eco": "B12m", + "fen": "rn1qkbnr/pp2pppp/2p5/3pPb2/3P3P/8/PPP2PP1/RNBQKBNR b KQkq h3 0 4", + "hash": 3376178387797714910, + "name": "Caro-Kann: Advance, 4.h4" + }, + "B12n": { + "eco": "B12n", + "fen": "rn1qkbnr/pp2pppp/2p5/3pPb2/3P4/2P5/PP3PPP/RNBQKBNR b KQkq - 0 4", + "hash": 14169446936272687398, + "name": "Caro-Kann: Advance, 4.c3" + }, + "B12o": { + "eco": "B12o", + "fen": "rn1qkbnr/pp2pppp/2p5/3pPb2/3P4/3B4/PPP2PPP/RNBQK1NR b KQkq - 2 4", + "hash": 16678137635209157843, + "name": "Caro-Kann: Advance, 4.Bd3" + }, + "B12p": { + "eco": "B12p", + "fen": "rn1qkbnr/pp2pppp/2p5/3pPb2/3P4/5N2/PPP2PPP/RNBQKB1R b KQkq - 2 4", + "hash": 7574465805645103005, + "name": "Caro-Kann: Advance, 4.Nf3" + }, + "B12q": { + "eco": "B12q", + "fen": "rn1qkbnr/pp3ppp/2p1p3/3pPb2/3P4/5N2/PPP1BPPP/RNBQK2R b KQkq - 1 5", + "hash": 7848253855662237036, + "name": "Caro-Kann: Advance, 4.Nf3 e6 5.Be2" + }, + "B12r": { + "eco": "B12r", + "fen": "r2qkbnr/pp1n1ppp/2p1p3/3pPb2/3P4/5N2/PPP1BPPP/RNBQK2R w KQkq - 2 6", + "hash": 6848253271664920736, + "name": "Caro-Kann: Advance, 4.Nf3 e6 5.Be2 Nd7" + }, + "B12s": { + "eco": "B12s", + "fen": "rn1qkbnr/pp3ppp/4p3/2ppPb2/3P4/5N2/PPP1BPPP/RNBQK2R w KQkq - 0 6", + "hash": 16156526945297119395, + "name": "Caro-Kann: Advance, 4.Nf3 e6 5.Be2 c5" + }, + "B12t": { + "eco": "B12t", + "fen": "rn1qkbnr/pp3ppp/4p3/2ppPb2/3P4/5N2/PPP1BPPP/RNBQ1RK1 b kq - 1 6", + "hash": 11403950519358972851, + "name": "Caro-Kann: Advance, 4.Nf3 e6 5.Be2 c5 6.O-O" + }, + "B12u": { + "eco": "B12u", + "fen": "rn1qkbnr/pp3ppp/4p3/2ppPb2/3P4/4BN2/PPP1BPPP/RN1QK2R b KQkq - 1 6", + "hash": 10610261143547814701, + "name": "Caro-Kann: Advance, 4.Nf3 e6 5.Be2 c5 6.Be3" + }, + "B12v": { + "eco": "B12v", + "fen": "rn1qkbnr/pp2pppp/2p5/3pPb2/3P4/2N5/PPP2PPP/R1BQKBNR b KQkq - 2 4", + "hash": 5327227090898345081, + "name": "Caro-Kann: Advance, 4.Nc3" + }, + "B12w": { + "eco": "B12w", + "fen": "rn1qkbnr/pp3ppp/2p1p3/3pPb2/3P2P1/2N5/PPP2P1P/R1BQKBNR b KQkq g3 0 5", + "hash": 11300920386738331958, + "name": "Caro-Kann: Advance, Main Line" + }, + "B12x": { + "eco": "B12x", + "fen": "rn1qkbnr/pp3ppp/4p1b1/2ppP3/3P2P1/2N5/PPP1NP1P/R1BQKB1R w KQkq - 0 7", + "hash": 10680517587712702405, + "name": "Caro-Kann: Advance, Main Line, 6.Nge2 c5" + }, + "B13a": { + "eco": "B13a", + "fen": "rnbqkbnr/pp2pppp/2p5/3P4/3P4/8/PPP2PPP/RNBQKBNR b KQkq - 0 3", + "hash": 8630710310852080463, + "name": "Caro-Kann: Exchange Variation" + }, + "B13b": { + "eco": "B13b", + "fen": "rnbqkbnr/pp2pppp/8/3p4/3P4/8/PPP2PPP/RNBQKBNR w KQkq - 0 4", + "hash": 339702937079627509, + "name": "Caro-Kann: Exchange, 3...cxd5" + }, + "B13c": { + "eco": "B13c", + "fen": "rnbqkbnr/pp2pppp/8/3p4/3P4/5N2/PPP2PPP/RNBQKB1R b KQkq - 1 4", + "hash": 16128009235181068232, + "name": "Caro-Kann: Exchange, 4.Nf3" + }, + "B13d": { + "eco": "B13d", + "fen": "rnbqkb1r/pp2pppp/5n2/3p4/3P4/5N2/PPP2PPP/RNBQKB1R w KQkq - 2 5", + "hash": 9528497537549704798, + "name": "Caro-Kann: Exchange, 4.Nf3 Nf6" + }, + "B13e": { + "eco": "B13e", + "fen": "rnbqkbnr/pp2pppp/8/3p4/3P4/3B4/PPP2PPP/RNBQK1NR b KQkq - 1 4", + "hash": 5889441294098988166, + "name": "Caro-Kann: Exchange, 4.Bd3" + }, + "B13f": { + "eco": "B13f", + "fen": "r1bqkbnr/pp2pppp/2n5/3p4/3P4/3B4/PPP2PPP/RNBQK1NR w KQkq - 2 5", + "hash": 18038789273713957253, + "name": "Caro-Kann: Exchange, 4.Bd3 Nc6" + }, + "B13g": { + "eco": "B13g", + "fen": "r1bqkbnr/pp2pp1p/2n3p1/3p4/3P4/2PB4/PP3PPP/RNBQK1NR w KQkq - 0 6", + "hash": 7293593370455655496, + "name": "Caro-Kann: Exchange, 4.Bd3 Nc6 5.c3 g6" + }, + "B13h": { + "eco": "B13h", + "fen": "r1bqkb1r/pp2pppp/2n2n2/3p4/3P4/2PB4/PP3PPP/RNBQK1NR w KQkq - 1 6", + "hash": 15520085086091515797, + "name": "Caro-Kann: Exchange, 4.Bd3 Nc6 5.c3 Nf6" + }, + "B13i": { + "eco": "B13i", + "fen": "r1bqkb1r/pp2pppp/2n2n2/3p4/3P4/2PB1N2/PP3PPP/RNBQK2R b KQkq - 2 6", + "hash": 866529366953490088, + "name": "Caro-Kann: Exchange, 4.Bd3 Nc6 5.c3 Nf6 6.Nf3" + }, + "B13j": { + "eco": "B13j", + "fen": "r1bqkb1r/pp2pppp/2n2n2/3p4/3P1B2/2PB4/PP3PPP/RN1QK1NR b KQkq - 2 6", + "hash": 880046537159376374, + "name": "Caro-Kann: Exchange, Rubinstein Variation" + }, + "B13k": { + "eco": "B13k", + "fen": "r2qkb1r/pp2pppp/2n2n2/3p4/3P1Bb1/2PB4/PP3PPP/RN1QK1NR w KQkq - 3 7", + "hash": 1073342821382451996, + "name": "Caro-Kann: Exchange, Rubinstein, 6...Bg4" + }, + "B13l": { + "eco": "B13l", + "fen": "r1q1kb1r/pp2pppp/2n2n2/3p4/3P1Bb1/1QPB4/PP3PPP/RN2K1NR w KQkq - 5 8", + "hash": 16587814108426731597, + "name": "Caro-Kann: Exchange, Rubinstein, 7.Qb3 Qc8" + }, + "B13m": { + "eco": "B13m", + "fen": "r3kb1r/pp1qpppp/2n2n2/3p4/3P1Bb1/1QPB4/PP3PPP/RN2K1NR w KQkq - 5 8", + "hash": 2994790351839563445, + "name": "Caro-Kann: Exchange, Rubinstein, 7.Qb3 Qd7" + }, + "B13n": { + "eco": "B13n", + "fen": "rnbqkbnr/pp2pppp/8/3p4/2PP4/8/PP3PPP/RNBQKBNR b KQkq c3 0 4", + "hash": 9841844171730982386, + "name": "Caro-Kann: Panov-Botvinnik Attack" + }, + "B13o": { + "eco": "B13o", + "fen": "rnbqkb1r/pp2pppp/5n2/3p4/2PP4/8/PP3PPP/RNBQKBNR w KQkq - 1 5", + "hash": 15238903320001926244, + "name": "Caro-Kann: Panov-Botvinnik, 4...Nf6" + }, + "B13p": { + "eco": "B13p", + "fen": "rnbqkb1r/pp2pppp/5n2/3p4/2PP4/2N5/PP3PPP/R1BQKBNR b KQkq - 2 5", + "hash": 2948852210967959229, + "name": "Caro-Kann: Panov-Botvinnik, 5.Nc3" + }, + "B13q": { + "eco": "B13q", + "fen": "r1bqkb1r/pp2pppp/2n2n2/3p4/2PP4/2N5/PP3PPP/R1BQKBNR w KQkq - 3 6", + "hash": 9440025942284006334, + "name": "Caro-Kann: Panov-Botvinnik, 5...Nc6" + }, + "B13r": { + "eco": "B13r", + "fen": "r1bqkb1r/pp2pppp/2n2n2/3p4/2PP4/2N2N2/PP3PPP/R1BQKB1R b KQkq - 4 6", + "hash": 6369595526109270659, + "name": "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.Nf3" + }, + "B13s": { + "eco": "B13s", + "fen": "r2qkb1r/pp2pppp/2n2n2/3p4/2PP2b1/2N2N2/PP3PPP/R1BQKB1R w KQkq - 5 7", + "hash": 6536573882846682217, + "name": "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.Nf3 Bg4" + }, + "B13t": { + "eco": "B13t", + "fen": "r2qkb1r/pp2pppp/2n5/3n4/3P2b1/1QN2N2/PP3PPP/R1B1KB1R b KQkq - 1 8", + "hash": 17405235430705380814, + "name": "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.Nf3 Bg4: 8.Qb3" + }, + "B13u": { + "eco": "B13u", + "fen": "r2qkb1r/pp3ppp/2n1p3/3n4/3P4/1QN2P2/PP3P1P/R1B1KB1R w KQkq - 0 10", + "hash": 2086138317249517045, + "name": "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.Nf3 Bg4: Main Line" + }, + "B13v": { + "eco": "B13v", + "fen": "r1bqkb1r/pp2pppp/2n2n2/3p2B1/2PP4/2N5/PP3PPP/R2QKBNR b KQkq - 4 6", + "hash": 4997837400949762166, + "name": "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.Bg5" + }, + "B13w": { + "eco": "B13w", + "fen": "r1b1kb1r/pp2pppp/2n2n2/q2p2B1/2PP4/2N5/PP3PPP/R2QKBNR w KQkq - 5 7", + "hash": 11252375581820946937, + "name": "Caro-Kann: Panov-Botvinnik, 5...Nc6, Czerniak Variation" + }, + "B13x": { + "eco": "B13x", + "fen": "r2qkb1r/pp2pppp/2n1bn2/3p2B1/2PP4/2N5/PP3PPP/R2QKBNR w KQkq - 5 7", + "hash": 1288997573560947582, + "name": "Caro-Kann: Panov-Botvinnik, 5...Nc6 6.Bg5 Be6" + }, + "B13y": { + "eco": "B13y", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/3p2B1/2PP4/2N5/PP3PPP/R2QKBNR w KQkq - 0 7", + "hash": 3687340422363297828, + "name": "Caro-Kann: Panov-Botvinnik, 5...Nc6, Normal Variation" + }, + "B13z": { + "eco": "B13z", + "fen": "r1bqk2r/pp2bppp/2n1pn2/2Pp2B1/3P4/2N2N2/PP3PPP/R2QKB1R b KQkq - 0 8", + "hash": 10598770727370037304, + "name": "Caro-Kann: Panov-Botvinnik, 5...Nc6, Normal Variaiton, 8.c5" + }, + "B14a": { + "eco": "B14a", + "fen": "rnbqkb1r/pp2pp1p/5np1/3p4/2PP4/2N5/PP3PPP/R1BQKBNR w KQkq - 0 6", + "hash": 13931953810975048950, + "name": "Caro-Kann: Panov-Botvinnik, 5...g6" + }, + "B14b": { + "eco": "B14b", + "fen": "rnbqkb1r/pp2pp1p/5np1/3P4/3P4/2N5/PP3PPP/R1BQKBNR b KQkq - 0 6", + "hash": 14948192496979497195, + "name": "Caro-Kann: Panov-Botvinnik, 5...g6 6.cxd5" + }, + "B14c": { + "eco": "B14c", + "fen": "rnbqkb1r/pp2pp1p/6p1/3n4/3P4/2N5/PP3PPP/R1BQKBNR w KQkq - 0 7", + "hash": 5808763554454195639, + "name": "Caro-Kann: Panov-Botvinnik, 5...g6 6.cxd5 Nxd5" + }, + "B14d": { + "eco": "B14d", + "fen": "rnbqkb1r/pp2pp1p/6p1/3n4/2BP4/2N5/PP3PPP/R1BQK1NR b KQkq - 1 7", + "hash": 3688284839338416913, + "name": "Caro-Kann: Panov-Botvinnik, 5...g6 6.cxd5 Nxd5 7.Bc4" + }, + "B14e": { + "eco": "B14e", + "fen": "rnbqk2r/pp2ppbp/5np1/3P4/3P4/2N5/PP3PPP/R1BQKBNR w KQkq - 1 7", + "hash": 9209465785097427777, + "name": "Caro-Kann: Panov-Botvinnik, 5...g6 6.cxd5 Bg7" + }, + "B14f": { + "eco": "B14f", + "fen": "rnbqkb1r/pp2pp1p/5np1/3p4/2PP4/1QN5/PP3PPP/R1B1KBNR b KQkq - 1 6", + "hash": 18131946838573116432, + "name": "Caro-Kann: Panov-Botvinnik, 5...g6 6.Qb3" + }, + "B14g": { + "eco": "B14g", + "fen": "rnbq1rk1/pp2ppbp/5np1/3P4/3P4/1QN5/PP2BPPP/R1B1K1NR b KQ - 2 8", + "hash": 4332275514696765679, + "name": "Caro-Kann: Panov-Botvinnik, 5...g6, Main Line, 8.Be2" + }, + "B14h": { + "eco": "B14h", + "fen": "r1bq1rk1/pp1nppbp/5np1/3P4/3P4/1QN5/PP2BPPP/R1B1K1NR w KQ - 3 9", + "hash": 1151847270777847075, + "name": "Caro-Kann: Panov-Botvinnik, 5...g6, Main Line, 8.Be2 Nbd7" + }, + "B14i": { + "eco": "B14i", + "fen": "rnbqkb1r/pp3ppp/4pn2/3p4/2PP4/2N5/PP3PPP/R1BQKBNR w KQkq - 0 6", + "hash": 6817217589488142063, + "name": "Caro-Kann: Panov-Botvinnik, 5...e6" + }, + "B14j": { + "eco": "B14j", + "fen": "rnbqkb1r/pp3ppp/4pn2/3p4/2PP4/2N2N2/PP3PPP/R1BQKB1R b KQkq - 1 6", + "hash": 9655563330707400658, + "name": "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3" + }, + "B14k": { + "eco": "B14k", + "fen": "rnbqk2r/pp2bppp/4pn2/3p4/2PP4/2N2N2/PP3PPP/R1BQKB1R w KQkq - 2 7", + "hash": 10462706766993001283, + "name": "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Be7" + }, + "B14l": { + "eco": "B14l", + "fen": "rnbqk2r/pp2bppp/4pn2/3p4/2PP4/2NB1N2/PP3PPP/R1BQK2R b KQkq - 3 7", + "hash": 14140917987220212016, + "name": "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Be7 7.Bd3" + }, + "B14m": { + "eco": "B14m", + "fen": "rnbqk2r/pp2bppp/4pn2/3P4/3P4/2N2N2/PP3PPP/R1BQKB1R b KQkq - 0 7", + "hash": 11464365383343906654, + "name": "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Be7 7.cxd5" + }, + "B14n": { + "eco": "B14n", + "fen": "rnbqk2r/pp2bppp/4p3/3n4/3P4/2N2N2/PP3PPP/R1BQKB1R w KQkq - 0 8", + "hash": 69772666983842306, + "name": "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Be7 7.cxd5 Nxd5" + }, + "B14o": { + "eco": "B14o", + "fen": "rnbqk2r/pp2bppp/4p3/3n4/3P4/2NB1N2/PP3PPP/R1BQK2R b KQkq - 1 8", + "hash": 6195335142196265073, + "name": "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Be7 7.cxd5 Nxd5 8.Bd3" + }, + "B14p": { + "eco": "B14p", + "fen": "rnbqk2r/pp3ppp/4pn2/3p4/1bPP4/2N2N2/PP3PPP/R1BQKB1R w KQkq - 2 7", + "hash": 5529886767532863472, + "name": "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4" + }, + "B14q": { + "eco": "B14q", + "fen": "rnbqk2r/pp3ppp/5n2/3p4/1b1P4/2N2N2/PP3PPP/R1BQKB1R w KQkq - 0 8", + "hash": 9043325628358998822, + "name": "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4 7.cxd5 exd5" + }, + "B14r": { + "eco": "B14r", + "fen": "rnbqk2r/pp3ppp/4p3/3n4/1b1P4/2N2N2/PP3PPP/R1BQKB1R w KQkq - 0 8", + "hash": 15959344445192070833, + "name": "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4 7.cxd5 Nxd5" + }, + "B14s": { + "eco": "B14s", + "fen": "rnbqk2r/pp3ppp/4p3/3n4/1b1P4/2N2N2/PPQ2PPP/R1B1KB1R b KQkq - 1 8", + "hash": 7810236993967807189, + "name": "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4 7.cxd5 Nxd5 8.Qc2" + }, + "B14t": { + "eco": "B14t", + "fen": "r1bqk2r/pp3ppp/2n1p3/3n4/1b1P4/2N2N2/PPQ2PPP/R1B1KB1R w KQkq - 2 9", + "hash": 14379520581630525398, + "name": "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4 7.cxd5 Nxd5 8.Qc2 Nc6" + }, + "B14u": { + "eco": "B14u", + "fen": "r1bqk2r/pp3ppp/2n1p3/3n4/1b1P4/2NB1N2/PPQ2PPP/R1B1K2R b KQkq - 3 9", + "hash": 10557546290835733925, + "name": "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4 7.cxd5 Nxd5 8.Qc2 Nc6 9.Bd3" + }, + "B14v": { + "eco": "B14v", + "fen": "rnbqk2r/pp3ppp/4p3/3n4/1b1P4/2N2N2/PP1B1PPP/R2QKB1R b KQkq - 1 8", + "hash": 17651754848072732085, + "name": "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4 7.cxd5 Nxd5 8.Bd2" + }, + "B14w": { + "eco": "B14w", + "fen": "r1bqk2r/pp3ppp/2n1p3/3n4/1b1P4/2N2N2/PP1B1PPP/R2QKB1R w KQkq - 2 9", + "hash": 6852923240318642358, + "name": "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4 7.cxd5 Nxd5 8.Bd2 Nc6" + }, + "B14x": { + "eco": "B14x", + "fen": "r1bq1rk1/pp3ppp/2n1p3/3n4/1b1P4/2NB1N2/PP1B1PPP/R2QK2R w KQ - 4 10", + "hash": 53820497597498158, + "name": "Caro-Kann: Panov-Botvinnik, 5...e6 6.Nf3 Bb4 7.cxd5 Nxd5 8.Bd2 Nc6" + }, + "B15a": { + "eco": "B15a", + "fen": "rnbqkbnr/pp2pppp/2p5/3p4/3PP3/2N5/PPP2PPP/R1BQKBNR b KQkq - 1 3", + "hash": 12361927582217565072, + "name": "Caro-Kann: 3.Nc3" + }, + "B15b": { + "eco": "B15b", + "fen": "rnbqkbnr/p3pppp/2p5/1p1p4/3PP3/2N5/PPP2PPP/R1BQKBNR w KQkq b6 0 4", + "hash": 14666545815359835821, + "name": "Caro-Kann: Gurgenidze Counterattack" + }, + "B15c": { + "eco": "B15c", + "fen": "rnbqkbnr/pp2pp1p/2p3p1/3p4/3PP3/2N5/PPP2PPP/R1BQKBNR w KQkq - 0 4", + "hash": 4772180600060764635, + "name": "Caro-Kann: Gurgenidze/Modern" + }, + "B15d": { + "eco": "B15d", + "fen": "rnbqkbnr/pp2pp1p/2p3p1/3p4/3PP3/2N1B3/PPP2PPP/R2QKBNR b KQkq - 1 4", + "hash": 3545048775776795221, + "name": "Caro-Kann: Gurgenidze: 4.Be3" + }, + "B15e": { + "eco": "B15e", + "fen": "rnbqkbnr/pp2pp1p/2p3p1/3p4/3PP3/2N4P/PPP2PP1/R1BQKBNR b KQkq - 0 4", + "hash": 12306628343750600745, + "name": "Caro-Kann: Gurgenidze: 4.h3" + }, + "B15f": { + "eco": "B15f", + "fen": "rnbqkbnr/pp2pp1p/2p3p1/3pP3/3P4/2N5/PPP2PPP/R1BQKBNR b KQkq - 0 4", + "hash": 2540916420816914367, + "name": "Caro-Kann: Gurgenidze: 4.e5" + }, + "B15g": { + "eco": "B15g", + "fen": "rnbqk1nr/pp2ppbp/2p3p1/3pP3/3P1P2/2N5/PPP3PP/R1BQKBNR b KQkq f3 0 5", + "hash": 7992031981458764188, + "name": "Caro-Kann: Gurgenidze: 4.e5 Bg7 5.f4" + }, + "B15h": { + "eco": "B15h", + "fen": "rnbqk1nr/pp2ppb1/2p3p1/3pP2p/3P1P2/2N5/PPP3PP/R1BQKBNR w KQkq h6 0 6", + "hash": 8338406761690665195, + "name": "Caro-Kann: Gurgenidze: 4.e5 Bg7 5.f4 h5" + }, + "B15i": { + "eco": "B15i", + "fen": "rnbqk1nr/pp2ppb1/2p3p1/3pP2p/3P1P2/2N2N2/PPP3PP/R1BQKB1R b KQkq - 1 6", + "hash": 12165089228668006870, + "name": "Caro-Kann: Gurgenidze: 4.e5 Bg7 5.f4 h5 6.Nf3" + }, + "B15j": { + "eco": "B15j", + "fen": "rnbqkbnr/pp2pp1p/2p3p1/3p4/3PP3/2N2N2/PPP2PPP/R1BQKB1R b KQkq - 1 4", + "hash": 11051512491896439014, + "name": "Caro-Kann: Gurgenidze: 4.Nf3" + }, + "B15k": { + "eco": "B15k", + "fen": "rnbqk1nr/pp2ppbp/2p3p1/3p4/3PP3/2N2N2/PPP2PPP/R1BQKB1R w KQkq - 2 5", + "hash": 3018222881436879692, + "name": "Caro-Kann: Gurgenidze: 4.Nf3 Bg7" + }, + "B15l": { + "eco": "B15l", + "fen": "rnbqk1nr/pp2ppbp/2p3p1/3p4/3PP3/2N2N1P/PPP2PP1/R1BQKB1R b KQkq - 0 5", + "hash": 13911966724412113598, + "name": "Caro-Kann: Gurgenidze: 4.Nf3 Bg7 5.h3" + }, + "B15m": { + "eco": "B15m", + "fen": "rnbqk1nr/pp2ppbp/2p3p1/8/3Pp3/2N2N1P/PPP2PP1/R1BQKB1R w KQkq - 0 6", + "hash": 692326253194785518, + "name": "Caro-Kann: Gurgenidze: 4.Nf3 Bg7 5.h3 dxe4" + }, + "B15n": { + "eco": "B15n", + "fen": "rnbqk2r/pp2ppbp/2p2np1/3p4/3PP3/2N2N1P/PPP2PP1/R1BQKB1R w KQkq - 1 6", + "hash": 11168655441785373480, + "name": "Caro-Kann: Gurgenidze: 4.Nf3 Bg7 5.h3 Nf6" + }, + "B15o": { + "eco": "B15o", + "fen": "rnbqk2r/pp2ppbp/2p2np1/3pP3/3P4/2N2N1P/PPP2PP1/R1BQKB1R b KQkq - 0 6", + "hash": 18124206797056632140, + "name": "Caro-Kann: Gurgenidze: 4.Nf3 Bg7 5.h3 Nf6 6.e5" + }, + "B15p": { + "eco": "B15p", + "fen": "rnbqkbnr/pp2pppp/2p5/8/3Pp3/2N5/PPP2PPP/R1BQKBNR w KQkq - 0 4", + "hash": 7135105516951815104, + "name": "Caro-Kann: 3.Nc3 dxe4" + }, + "B15q": { + "eco": "B15q", + "fen": "rnbqkbnr/pp2pppp/2p5/8/3PN3/8/PPP2PPP/R1BQKBNR b KQkq - 0 4", + "hash": 14539522135797355095, + "name": "Caro-Kann: 4.Nxe4" + }, + "B15r": { + "eco": "B15r", + "fen": "rnbqkb1r/pp2pppp/2p2n2/8/3PN3/8/PPP2PPP/R1BQKBNR w KQkq - 1 5", + "hash": 10531938950989943745, + "name": "Caro-Kann: 4.Nxe4 Nf6" + }, + "B15s": { + "eco": "B15s", + "fen": "rnbqkb1r/pp2pppp/2p2n2/8/3P4/6N1/PPP2PPP/R1BQKBNR b KQkq - 2 5", + "hash": 17230568090873129011, + "name": "Caro-Kann: 4.Nxe4 Nf6 5.Ng3" + }, + "B15t": { + "eco": "B15t", + "fen": "rnbqkb1r/pp2pppp/2p2N2/8/3P4/8/PPP2PPP/R1BQKBNR b KQkq - 0 5", + "hash": 15477599793873760624, + "name": "Caro-Kann: 4.Nxe4 Nf6 5.Nxf6+" + }, + "B15u": { + "eco": "B15u", + "fen": "rnbqkb1r/pp3ppp/2p2p2/8/2BP4/8/PPP2PPP/R1BQK1NR b KQkq - 1 6", + "hash": 92768586179066125, + "name": "Caro-Kann: Tartakower, Forgacs Variation" + }, + "B15v": { + "eco": "B15v", + "fen": "rnbqkb1r/pp3ppp/2p2p2/8/3P4/2P5/PP3PPP/R1BQKBNR b KQkq - 0 6", + "hash": 1450396820843225133, + "name": "Caro-Kann: Tartakower, 6.c3" + }, + "B16a": { + "eco": "B16a", + "fen": "rnbqkb1r/pp2pp1p/2p2p2/8/3P4/8/PPP2PPP/R1BQKBNR w KQkq - 0 6", + "hash": 4526000532982363500, + "name": "Caro-Kann: Bronstein-Larsen" + }, + "B16b": { + "eco": "B16b", + "fen": "rnbqkb1r/pp2pp1p/2p2p2/8/3P4/3Q4/PPP2PPP/R1B1KBNR b KQkq - 1 6", + "hash": 11432450660896269339, + "name": "Caro-Kann: Bronstein-Larsen, 6.Qd3" + }, + "B16c": { + "eco": "B16c", + "fen": "rnbqkb1r/pp2pp1p/2p2p2/8/3P4/8/PPP1NPPP/R1BQKB1R b KQkq - 1 6", + "hash": 3056675647411681426, + "name": "Caro-Kann: Bronstein-Larsen, 6.Ne2" + }, + "B16d": { + "eco": "B16d", + "fen": "rnbqkb1r/pp2pp1p/2p2p2/8/2BP4/8/PPP2PPP/R1BQK1NR b KQkq - 1 6", + "hash": 6736296154216506314, + "name": "Caro-Kann: Bronstein-Larsen, 6.Bc4" + }, + "B16e": { + "eco": "B16e", + "fen": "rnbqkb1r/pp2pp1p/2p2p2/8/3P4/5N2/PPP2PPP/R1BQKB1R b KQkq - 1 6", + "hash": 16549454808470393937, + "name": "Caro-Kann: Bronstein-Larsen, 6.Nf3" + }, + "B16f": { + "eco": "B16f", + "fen": "rn1qkb1r/pp2pp1p/2p2p2/5b2/3P4/5N2/PPP2PPP/R1BQKB1R w KQkq - 2 7", + "hash": 7399995801950690780, + "name": "Caro-Kann: Bronstein-Larsen, 6.Nf3 Bf5" + }, + "B16g": { + "eco": "B16g", + "fen": "rn1qkb1r/pp2pp1p/2p2p2/8/3P2b1/5N2/PPP2PPP/R1BQKB1R w KQkq - 2 7", + "hash": 16679278330692180667, + "name": "Caro-Kann: Bronstein-Larsen, 6.Nf3 Bg4" + }, + "B16h": { + "eco": "B16h", + "fen": "rn1qkb1r/pp3p1p/2p1pp2/8/3P2b1/5N2/PPP1BPPP/R1BQK2R w KQkq - 0 8", + "hash": 16325481087029526602, + "name": "Caro-Kann: Bronstein-Larsen, 6.Nf3 Bg4 7.Be2 e6" + }, + "B16i": { + "eco": "B16i", + "fen": "rnbqkb1r/pp2pp1p/2p2p2/8/3P4/2P5/PP3PPP/R1BQKBNR b KQkq - 0 6", + "hash": 5194177701897075434, + "name": "Caro-Kann: Bronstein-Larsen, 6.c3" + }, + "B16j": { + "eco": "B16j", + "fen": "rn1qkb1r/pp2pp1p/2p2p2/5b2/3P4/2P5/PP3PPP/R1BQKBNR w KQkq - 1 7", + "hash": 14631074336580137831, + "name": "Caro-Kann: Bronstein-Larsen, 6.c3 Bf5" + }, + "B16k": { + "eco": "B16k", + "fen": "rn1qkb1r/pp2pp1p/2p2p2/5b2/3P4/2P5/PP2NPPP/R1BQKB1R b KQkq - 2 7", + "hash": 16116394427950988953, + "name": "Caro-Kann: Bronstein-Larsen, 6.c3 Bf5 7.Ne2" + }, + "B16l": { + "eco": "B16l", + "fen": "rn1qkb1r/pp2pp1p/2p2p2/5b2/3P4/2P2N2/PP3PPP/R1BQKB1R b KQkq - 2 7", + "hash": 1182450406749835866, + "name": "Caro-Kann: Bronstein-Larsen, 6.c3 Bf5 7.Nf3" + }, + "B16m": { + "eco": "B16m", + "fen": "rn2kb1r/ppq1pp1p/2p2p2/5b2/3P4/2P2N2/PP3PPP/R1BQKB1R w KQkq - 3 8", + "hash": 1618999261588643163, + "name": "Caro-Kann: Bronstein-Larsen, 6.c3 Bf5 7.Nf3 Qc7" + }, + "B16n": { + "eco": "B16n", + "fen": "rn1qkb1r/pp3p1p/2p1pp2/5b2/3P4/2P2N2/PP3PPP/R1BQKB1R w KQkq - 0 8", + "hash": 7358629248438206984, + "name": "Caro-Kann: Bronstein-Larsen, 6.c3 Bf5 7.Nf3 e6" + }, + "B17a": { + "eco": "B17a", + "fen": "r1bqkbnr/pp1npppp/2p5/8/3PN3/8/PPP2PPP/R1BQKBNR w KQkq - 1 5", + "hash": 18025016513345994651, + "name": "Caro-Kann: Steinitz Variation" + }, + "B17b": { + "eco": "B17b", + "fen": "r1bqkbnr/pp1npppp/2p5/8/3PN3/5N2/PPP2PPP/R1BQKB1R b KQkq - 2 5", + "hash": 2396290977903926950, + "name": "Caro-Kann: Steinitz, 5.Nf3" + }, + "B17c": { + "eco": "B17c", + "fen": "r1bqkb1r/pp1npppp/2p2n2/8/3PN3/5N2/PPP2PPP/R1BQKB1R w KQkq - 3 6", + "hash": 8840391278015651632, + "name": "Caro-Kann: Steinitz, 5.Nf3 Ngf6" + }, + "B17d": { + "eco": "B17d", + "fen": "r1bqkb1r/pp1npppp/2p2N2/8/3P4/5N2/PPP2PPP/R1BQKB1R b KQkq - 0 6", + "hash": 4489223142158351745, + "name": "Caro-Kann: Steinitz, 5.Nf3 Ngf6 6.Nxf6+" + }, + "B17e": { + "eco": "B17e", + "fen": "r1bqkb1r/pp2pppp/2p2n2/8/2BP4/5N2/PPP2PPP/R1BQK2R b KQkq - 1 7", + "hash": 12133260003864360010, + "name": "Caro-Kann: Steinitz, 5.Nf3 Ngf6 6.Nxf6+ Nxf6 7.Bc4" + }, + "B17f": { + "eco": "B17f", + "fen": "r1bqkb1r/pp1npppp/2p2n2/8/3P4/5NN1/PPP2PPP/R1BQKB1R b KQkq - 4 6", + "hash": 547418014180631746, + "name": "Caro-Kann: Steinitz, 5.Nf3 Ngf6 6.Ng3" + }, + "B17g": { + "eco": "B17g", + "fen": "r1bqkb1r/pp1n1ppp/2p1pn2/8/3P4/5NN1/PPP2PPP/R1BQKB1R w KQkq - 0 7", + "hash": 8209820200468509840, + "name": "Caro-Kann: Steinitz, 5.Nf3 Ngf6 6.Ng3 e6" + }, + "B17h": { + "eco": "B17h", + "fen": "r1bqkbnr/pp1npppp/2p5/6N1/3P4/8/PPP2PPP/R1BQKBNR b KQkq - 2 5", + "hash": 14791349453384079476, + "name": "Caro-Kann: Steinitz, 5.Ng5" + }, + "B17i": { + "eco": "B17i", + "fen": "r1bqkb1r/pp1npppp/2p2n2/6N1/3P4/8/PPP2PPP/R1BQKBNR w KQkq - 3 6", + "hash": 10856869183515924962, + "name": "Caro-Kann: Steinitz, 5.Ng5 Ngf6" + }, + "B17j": { + "eco": "B17j", + "fen": "r1bqkb1r/pp1npppp/2p2n2/6N1/3P4/3B4/PPP2PPP/R1BQK1NR b KQkq - 4 6", + "hash": 14098229058900515729, + "name": "Caro-Kann: Steinitz, 5.Ng5 Ngf6 6.Bd3" + }, + "B17k": { + "eco": "B17k", + "fen": "r1bqkb1r/pp1n1ppp/2p1pn2/6N1/3P4/3B4/PPP2PPP/R1BQK1NR w KQkq - 0 7", + "hash": 13101264418312309699, + "name": "Caro-Kann: Steinitz, 5.Ng5 Ngf6 6.Bd3 e6" + }, + "B17l": { + "eco": "B17l", + "fen": "r1bqk2r/pp1n1ppp/2pbpn2/6N1/3P4/3B1N2/PPP1QPPP/R1B1K2R b KQkq - 3 8", + "hash": 6695450518531121246, + "name": "Caro-Kann: Steinitz, 5.Ng5 Ngf6 6.Bd3 e6 7.N1f3 Bd6 8.Qe2" + }, + "B17m": { + "eco": "B17m", + "fen": "r1bqk2r/pp1n1pp1/2pbp2p/8/3PQ3/3B1N2/PPP2PPP/R1B1K2R b KQkq - 0 10", + "hash": 4889247141360656467, + "name": "Caro-Kann: Steinitz, 5.Ng5 Ngf6 6.Bd3, Main Line 10.Qxe4" + }, + "B17n": { + "eco": "B17n", + "fen": "r1b1k2r/ppqn1pp1/2pbp2p/8/3PQ3/3B1N2/PPP2PPP/R1B1K2R w KQkq - 1 11", + "hash": 5027467987786805074, + "name": "Caro-Kann: Steinitz, 5.Ng5 Ngf6 6.Bd3, Main Line 10.Qxe4 Qc7" + }, + "B17o": { + "eco": "B17o", + "fen": "r1bqk2r/pp3pp1/2pbpn1p/8/3PQ3/3B1N2/PPP2PPP/R1B1K2R w KQkq - 1 11", + "hash": 13446934815608236454, + "name": "Caro-Kann: Steinitz, 5.Ng5 Ngf6 6.Bd3, Main Line 10.Qxe4 Nf6" + }, + "B17p": { + "eco": "B17p", + "fen": "r1bqkbnr/pp1npppp/2p5/8/2BPN3/8/PPP2PPP/R1BQK1NR b KQkq - 2 5", + "hash": 11067047619167152445, + "name": "Caro-Kann: Steinitz, 5.Bc4" + }, + "B17q": { + "eco": "B17q", + "fen": "r1bqkb1r/pp1npppp/2p2n2/8/2BPN3/8/PPP2PPP/R1BQK1NR w KQkq - 3 6", + "hash": 14013013845425006763, + "name": "Caro-Kann: Steinitz, 5.Bc4 Ngf6" + }, + "B17r": { + "eco": "B17r", + "fen": "r1bqkb1r/pp1npppp/2p2n2/6N1/2BP4/8/PPP2PPP/R1BQK1NR b KQkq - 4 6", + "hash": 17661126695729090372, + "name": "Caro-Kann: Steinitz, 5.Bc4 Ngf6 6.Ng5" + }, + "B17s": { + "eco": "B17s", + "fen": "r1bqkb1r/pp3ppp/1np1pn2/6N1/3P4/1B6/PPP1QPPP/R1B1K1NR b KQkq - 3 8", + "hash": 14457068591974073208, + "name": "Caro-Kann: Steinitz, 5.Bc4 Ngf6 6.Ng5, 8.Bb3" + }, + "B17t": { + "eco": "B17t", + "fen": "r1bqkb1r/pp3ppp/1np1pn2/6N1/3P4/3B4/PPP1QPPP/R1B1K1NR b KQkq - 3 8", + "hash": 14973888543872549440, + "name": "Caro-Kann: Steinitz, 5.Bc4 Ngf6 6.Ng5, 8.Bd3" + }, + "B17u": { + "eco": "B17u", + "fen": "r1bqkb1r/pp3pp1/1np1pn1p/6N1/3P4/3B4/PPP1QPPP/R1B1K1NR w KQkq - 0 9", + "hash": 6717887597131385685, + "name": "Caro-Kann: Steinitz, 5.Bc4 Ngf6 6.Ng5, 8.Bd3 h6" + }, + "B18a": { + "eco": "B18a", + "fen": "rn1qkbnr/pp2pppp/2p5/5b2/3PN3/8/PPP2PPP/R1BQKBNR w KQkq - 1 5", + "hash": 5395219822743411674, + "name": "Caro-Kann: Classical" + }, + "B18b": { + "eco": "B18b", + "fen": "rn1qkbnr/pp2pppp/2p5/2N2b2/3P4/8/PPP2PPP/R1BQKBNR b KQkq - 2 5", + "hash": 9091276688955565709, + "name": "Caro-Kann: Classical, 5.Nc5" + }, + "B18c": { + "eco": "B18c", + "fen": "rn1qkbnr/p3pppp/1pp5/2N2b2/3P4/8/PPP2PPP/R1BQKBNR w KQkq - 0 6", + "hash": 1532344189243609366, + "name": "Caro-Kann: Classical, 5.Nc5 b6" + }, + "B18d": { + "eco": "B18d", + "fen": "rn1qkbnr/pp2pppp/2p5/5b2/3P4/6N1/PPP2PPP/R1BQKBNR b KQkq - 2 5", + "hash": 4028499656654921768, + "name": "Caro-Kann: Classical, 5.Ng3" + }, + "B18e": { + "eco": "B18e", + "fen": "rn1qkbnr/pp2pppp/2p3b1/8/3P4/6N1/PPP2PPP/R1BQKBNR w KQkq - 3 6", + "hash": 12069039121970439914, + "name": "Caro-Kann: Classical, 5.Ng3 Bg6" + }, + "B18f": { + "eco": "B18f", + "fen": "rn1qkbnr/pp2pppp/2p3b1/8/3P1P2/6N1/PPP3PP/R1BQKBNR b KQkq f3 0 6", + "hash": 6515488400815299427, + "name": "Caro-Kann: Classical, Maroczy Attack" + }, + "B18g": { + "eco": "B18g", + "fen": "rn1qkbnr/pp2pppp/2p3b1/8/3P4/6NN/PPP2PPP/R1BQKB1R b KQkq - 4 6", + "hash": 14750148238119164208, + "name": "Caro-Kann: Classical, Flohr Variation" + }, + "B18h": { + "eco": "B18h", + "fen": "rn1qkbnr/pp2pppp/2p3b1/8/3P4/6N1/PPP1NPPP/R1BQKB1R b KQkq - 4 6", + "hash": 12959456387674155796, + "name": "Caro-Kann: Classical, 6.N1e2" + }, + "B18i": { + "eco": "B18i", + "fen": "rn1qkbnr/pp2pppp/2p3b1/8/2BP4/6N1/PPP2PPP/R1BQK1NR b KQkq - 4 6", + "hash": 14181381176154189900, + "name": "Caro-Kann: Classical, 6.Bc4" + }, + "B18j": { + "eco": "B18j", + "fen": "rn1qkbnr/pp3ppp/2p1p1b1/8/2BP4/6N1/PPP1NPPP/R1BQK2R b KQkq - 1 7", + "hash": 11969858577660472800, + "name": "Caro-Kann: Classical, 6.Bc4 e6 7.N1e2" + }, + "B18k": { + "eco": "B18k", + "fen": "rn1qkb1r/pp3ppp/2p1pnb1/8/2BP4/6N1/PPP1NPPP/R1BQK2R w KQkq - 2 8", + "hash": 18299055475945581686, + "name": "Caro-Kann: Classical, 6.Bc4 e6 7.N1e2 Nf6" + }, + "B18l": { + "eco": "B18l", + "fen": "rn1qkbnr/pp2pppp/2p3b1/8/3P4/5NN1/PPP2PPP/R1BQKB1R b KQkq - 4 6", + "hash": 8942244322841020375, + "name": "Caro-Kann: Classical, 6.Nf3" + }, + "B18m": { + "eco": "B18m", + "fen": "r2qkbnr/pp1npppp/2p3b1/8/3P4/5NN1/PPP2PPP/R1BQKB1R w KQkq - 5 7", + "hash": 5762989628266752539, + "name": "Caro-Kann: Classical, 6.Nf3 Nd7" + }, + "B18n": { + "eco": "B18n", + "fen": "r2qkbnr/pp1npppp/2p3b1/8/3P4/3B1NN1/PPP2PPP/R1BQK2R b KQkq - 6 7", + "hash": 1943269337902704744, + "name": "Caro-Kann: Classical, 6.Nf3 Nd7 7.Bd3" + }, + "B18o": { + "eco": "B18o", + "fen": "r2qkbnr/pp1n1ppp/2p1p1b1/8/3P4/3B1NN1/PPP2PPP/R1BQK2R w KQkq - 0 8", + "hash": 7818269962564007994, + "name": "Caro-Kann: Classical, 6.Nf3 Nd7 7.Bd3 e6" + }, + "B18p": { + "eco": "B18p", + "fen": "rn1qkbnr/pp2pppp/2p3b1/8/3P3P/6N1/PPP2PP1/R1BQKBNR b KQkq h3 0 6", + "hash": 4313968002181128084, + "name": "Caro-Kann: Classical, 6.h4" + }, + "B18q": { + "eco": "B18q", + "fen": "rn1qkbnr/pp2ppp1/2p3bp/8/3P3P/6NN/PPP2PP1/R1BQKB1R b KQkq - 1 7", + "hash": 14044434633510709595, + "name": "Caro-Kann: Classical, 6.h4 h6 7.Nh3" + }, + "B18r": { + "eco": "B18r", + "fen": "rn1qkbnr/pp2ppp1/2p3bp/8/3P1P1P/6N1/PPP3P1/R1BQKBNR b KQkq f3 0 7", + "hash": 6070708678958066440, + "name": "Caro-Kann: Classical, 6.h4 h6 7.f4" + }, + "B18s": { + "eco": "B18s", + "fen": "rn1qkbnr/pp2ppp1/2p3bp/7P/3P4/6N1/PPP2PP1/R1BQKBNR b KQkq - 0 7", + "hash": 13768395719261056514, + "name": "Caro-Kann: Classical, 6.h4 h6 7.h5" + }, + "B19a": { + "eco": "B19a", + "fen": "rn1qkbnr/pp2ppp1/2p3bp/8/3P3P/5NN1/PPP2PP1/R1BQKB1R b KQkq - 1 7", + "hash": 8236499441198725052, + "name": "Caro-Kann: Classical, 7.Nf3" + }, + "B19b": { + "eco": "B19b", + "fen": "rn1qkbnr/pp3pp1/2p1p1bp/8/3P3P/5NN1/PPP2PP1/R1BQKB1R w KQkq - 0 8", + "hash": 304589645687613422, + "name": "Caro-Kann: Classical, 7.Nf3 e6" + }, + "B19c": { + "eco": "B19c", + "fen": "rn1qkb1r/pp2ppp1/2p2nbp/8/3P3P/5NN1/PPP2PP1/R1BQKB1R w KQkq - 2 8", + "hash": 3000479752115992106, + "name": "Caro-Kann: Classical, 7.Nf3 Nf6" + }, + "B19d": { + "eco": "B19d", + "fen": "rn1qkb1r/pp2ppp1/2p2nbp/7P/3P4/5NN1/PPP2PP1/R1BQKB1R b KQkq - 0 8", + "hash": 4582961236895616681, + "name": "Caro-Kann: Classical, 7.Nf3 Nf6 8.h5" + }, + "B19e": { + "eco": "B19e", + "fen": "rn1qkb1r/pp2ppp1/2p2nbp/4N3/3P3P/6N1/PPP2PP1/R1BQKB1R b KQkq - 3 8", + "hash": 17625689953359713116, + "name": "Caro-Kann: Classical, 7.Nf3 Nf6 8.Ne5" + }, + "B19f": { + "eco": "B19f", + "fen": "rn1qkb1r/pp2pppb/2p2n1p/4N3/3P3P/3B2N1/PPP2PP1/R1BQK2R b KQkq - 5 9", + "hash": 5951663374334993513, + "name": "Caro-Kann: Classical, 7.Nf3 Nf6 8.Ne5 Bh7 9.Bd3" + }, + "B19g": { + "eco": "B19g", + "fen": "r2qkbnr/pp1nppp1/2p3bp/8/3P3P/5NN1/PPP2PP1/R1BQKB1R w KQkq - 2 8", + "hash": 4732887142486940272, + "name": "Caro-Kann: Classical, 7.Nf3 Nd7" + }, + "B19h": { + "eco": "B19h", + "fen": "r2qkbnr/pp1nppp1/2p3bp/7P/3P4/5NN1/PPP2PP1/R1BQKB1R b KQkq - 0 8", + "hash": 6310877193268290291, + "name": "Caro-Kann: Classical, Spassky Variation" + }, + "B19i": { + "eco": "B19i", + "fen": "r2qkbnr/pp1nppp1/2p4p/7P/3P4/3Q1NN1/PPP2PP1/R1B1K2R b KQkq - 0 10", + "hash": 749893352916156878, + "name": "Caro-Kann: Classical, Spassky, 10.Qxd3" + }, + "B19j": { + "eco": "B19j", + "fen": "r2qkb1r/pp1nppp1/2p2n1p/7P/3P4/3Q1NN1/PPP2PP1/R1B1K2R w KQkq - 1 11", + "hash": 5874414639756132440, + "name": "Caro-Kann: Classical, Spassky, 10.Qxd3 Ngf6" + }, + "B19k": { + "eco": "B19k", + "fen": "r2qkbnr/pp1n1pp1/2p1p2p/7P/3P4/3Q1NN1/PPP2PP1/R1B1K2R w KQkq - 0 11", + "hash": 8944107323863601564, + "name": "Caro-Kann: Classical, Spassky, 10.Qxd3 e6" + }, + "B19l": { + "eco": "B19l", + "fen": "r2qkbnr/pp1n1pp1/2p1p2p/7P/3P1B2/3Q1NN1/PPP2PP1/R3K2R b KQkq - 1 11", + "hash": 12054795590819445759, + "name": "Caro-Kann: Classical, Spassky, 10.Qxd3 e6 11.Bf4" + }, + "B19m": { + "eco": "B19m", + "fen": "r3kbnr/ppqnppp1/2p4p/7P/3P4/3Q1NN1/PPP2PP1/R1B1K2R w KQkq - 1 11", + "hash": 898212117351878351, + "name": "Caro-Kann: Classical, Spassky, 10.Qxd3 Qc7" + }, + "B19n": { + "eco": "B19n", + "fen": "r3kbnr/ppqnppp1/2p4p/7P/3P4/3Q1NN1/PPPB1PP1/R3K2R b KQkq - 2 11", + "hash": 2736585060182697419, + "name": "Caro-Kann: Classical, Spassky, 10.Qxd3 Qc7 11.Bd2" + }, + "B19o": { + "eco": "B19o", + "fen": "r3kbnr/ppqn1pp1/2p1p2p/7P/3P4/3Q1NN1/PPPB1PP1/R3K2R w KQkq - 0 12", + "hash": 6020679030405477785, + "name": "Caro-Kann: Classical, Spassky, 10.Qxd3 Qc7 11.Bd2 e6" + }, + "B19p": { + "eco": "B19p", + "fen": "r3kbnr/ppqn1pp1/2p1p2p/7P/3P4/3Q1NN1/PPPB1PP1/2KR3R b kq - 1 12", + "hash": 7755474049124547073, + "name": "Caro-Kann: Classical, Spassky, 10.Qxd3 Qc7 11.Bd2 e6 12.O-O-O" + }, + "B19q": { + "eco": "B19q", + "fen": "r3kb1r/ppqn1pp1/2p1pn1p/7P/3P4/3Q1NN1/PPPB1PP1/2KR3R w kq - 2 13", + "hash": 3480946590203411351, + "name": "Caro-Kann: Classical, Spassky, Main Line" + }, + "B19r": { + "eco": "B19r", + "fen": "r3kb1r/ppqn1pp1/2p1pn1p/7P/3PN3/3Q1N2/PPPB1PP1/2KR3R b kq - 3 13", + "hash": 5582632528425582693, + "name": "Caro-Kann: Classical, Spassky, Main Line, 13.Ne4" + }, + "B19s": { + "eco": "B19s", + "fen": "2kr1b1r/ppqn1pp1/2p1pn1p/7P/3PN3/3Q1N2/PPPB1PP1/2KR3R w - - 4 14", + "hash": 9101752765135148127, + "name": "Caro-Kann: Classical, Spassky, Main Line, 13.Ne4 O-O-O" + }, + "B19t": { + "eco": "B19t", + "fen": "2kr1b1r/ppqn1pp1/2p1p2p/7P/3Pn3/3Q1NP1/PPPB1P2/2KR3R w - - 0 15", + "hash": 17707165076210735858, + "name": "Caro-Kann: Classical, Spassky, Main Line, 14.g3 Nxe4" + }, + "B20": { + "eco": "B20", + "fen": "rnbqkbnr/pp1ppppp/8/2p5/4P3/8/PPPP1PPP/RNBQKBNR w KQkq c6 0 2", + "hash": 7227515431820872427, + "name": "Sicilian Defence" + }, + "B21a": { + "eco": "B21a", + "fen": "rnbqkbnr/pp1ppppp/8/2p5/4PP2/8/PPPP2PP/RNBQKBNR b KQkq f3 0 2", + "hash": 11050487627966281570, + "name": "Sicilian: Grand Prix Attack" + }, + "B21b": { + "eco": "B21b", + "fen": "rnbqkbnr/pp1ppp1p/6p1/2p5/4PP2/8/PPPP2PP/RNBQKBNR w KQkq - 0 3", + "hash": 8137833726014448937, + "name": "Sicilian: Grand Prix, 2...g6" + }, + "B21c": { + "eco": "B21c", + "fen": "rnbqkbnr/pp2pppp/3p4/2p5/4PP2/8/PPPP2PP/RNBQKBNR w KQkq - 0 3", + "hash": 11592724567650418191, + "name": "Sicilian: Grand Prix, 2...d6" + }, + "B21d": { + "eco": "B21d", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2p5/4PP2/8/PPPP2PP/RNBQKBNR w KQkq - 0 3", + "hash": 17234367311119771440, + "name": "Sicilian: Grand Prix, 2...e6" + }, + "B21e": { + "eco": "B21e", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/4PP2/8/PPPP2PP/RNBQKBNR w KQkq - 1 3", + "hash": 3654371004124680801, + "name": "Sicilian: Grand Prix, 2...Nc6" + }, + "B21f": { + "eco": "B21f", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/4PP2/5N2/PPPP2PP/RNBQKB1R b KQkq - 2 3", + "hash": 16848533448274522972, + "name": "Sicilian: Grand Prix, 2...Nc6 3.Nf3" + }, + "B21g": { + "eco": "B21g", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/2p5/4PP2/5N2/PPPP2PP/RNBQKB1R w KQkq - 0 4", + "hash": 11503866726669493006, + "name": "Sicilian: Grand Prix, 2...Nc6 3.Nf3 e6" + }, + "B21h": { + "eco": "B21h", + "fen": "r1bqkbnr/pp1ppp1p/2n3p1/2p5/4PP2/5N2/PPPP2PP/RNBQKB1R w KQkq - 0 4", + "hash": 28799216432128279, + "name": "Sicilian: Grand Prix, 2...Nc6 3.Nf3 g6" + }, + "B21i": { + "eco": "B21i", + "fen": "rnbqkbnr/pp2pppp/8/2pp4/4PP2/8/PPPP2PP/RNBQKBNR w KQkq d6 0 3", + "hash": 2031428991068617028, + "name": "Sicilian: Grand Prix, Tal Defence" + }, + "B21j": { + "eco": "B21j", + "fen": "rnbqkbnr/pp2pppp/8/2pP4/5P2/8/PPPP2PP/RNBQKBNR b KQkq - 0 3", + "hash": 4318423909268224834, + "name": "Sicilian: Grand Prix, Tal Defence, 3.exd5" + }, + "B21k": { + "eco": "B21k", + "fen": "rnbqkb1r/pp2pppp/5n2/2pP4/5P2/8/PPPP2PP/RNBQKBNR w KQkq - 1 4", + "hash": 6917576718698298068, + "name": "Sicilian: Grand Prix, Tal Gambit" + }, + "B21l": { + "eco": "B21l", + "fen": "rnbqkb1r/pp2pppp/5n2/1BpP4/5P2/8/PPPP2PP/RNBQK1NR b KQkq - 2 4", + "hash": 6043543661177907543, + "name": "Sicilian: Grand Prix, Tal Gambit, 4.Bb5+" + }, + "B21m": { + "eco": "B21m", + "fen": "rnbqkbnr/pp1ppppp/8/2p5/3PP3/8/PPP2PPP/RNBQKBNR b KQkq d3 0 2", + "hash": 11635161049092548521, + "name": "Sicilian: Smith-Morra Gambit" + }, + "B21n": { + "eco": "B21n", + "fen": "rnbqkbnr/pp1ppppp/8/8/3pP3/5N2/PPP2PPP/RNBQKB1R b KQkq - 1 3", + "hash": 2666750653099765586, + "name": "Sicilian: Smith-Morra, Morphy Gambit" + }, + "B21o": { + "eco": "B21o", + "fen": "rnbqkbnr/pp1ppppp/8/8/3pP3/2P5/PP3PPP/RNBQKBNR b KQkq - 0 3", + "hash": 9852794038369583593, + "name": "Sicilian: Smith-Morra, 3.c3" + }, + "B21p": { + "eco": "B21p", + "fen": "rnbqkb1r/pp1ppppp/5n2/8/3pP3/2P5/PP3PPP/RNBQKBNR w KQkq - 1 4", + "hash": 15227254232687132799, + "name": "Sicilian: Smith-Morra, 3.c3 Nf6" + }, + "B21q": { + "eco": "B21q", + "fen": "rnbqkbnr/pp2pppp/8/3p4/3pP3/2P5/PP3PPP/RNBQKBNR w KQkq d6 0 4", + "hash": 996990883558543311, + "name": "Sicilian: Smith-Morra, 3.c3 d5" + }, + "B21r": { + "eco": "B21r", + "fen": "rnbqkbnr/pp1ppppp/8/8/4P3/2Pp4/PP3PPP/RNBQKBNR w KQkq - 0 4", + "hash": 1479445341041460209, + "name": "Sicilian: Smith-Morra, 3.c3 d3" + }, + "B21s": { + "eco": "B21s", + "fen": "rnbqkbnr/pp1ppppp/8/8/4P3/2p5/PP3PPP/RNBQKBNR w KQkq - 0 4", + "hash": 5288221051116493689, + "name": "Sicilian: Smith-Morra Accepted" + }, + "B21t": { + "eco": "B21t", + "fen": "rnbqkbnr/pp2pppp/3p4/8/4P3/2N5/PP3PPP/R1BQKBNR w KQkq - 0 5", + "hash": 18376863768464309702, + "name": "Sicilian: Smith-Morra, 4.Nxc3 d6" + }, + "B21u": { + "eco": "B21u", + "fen": "rnbqkbnr/pp1p1ppp/4p3/8/4P3/2N5/PP3PPP/R1BQKBNR w KQkq - 0 5", + "hash": 12739232451240748281, + "name": "Sicilian: Smith-Morra, 4.Nxc3 e6" + }, + "B21v": { + "eco": "B21v", + "fen": "rnbqkbnr/pp1p1ppp/4p3/8/4P3/2N2N2/PP3PPP/R1BQKB1R b KQkq - 1 5", + "hash": 7759197057720714692, + "name": "Sicilian: Smith-Morra, 4.Nxc3 e6 5.Nf3" + }, + "B21w": { + "eco": "B21w", + "fen": "r1bqkbnr/pp1ppppp/2n5/8/4P3/2N5/PP3PPP/R1BQKBNR w KQkq - 1 5", + "hash": 7877062621682618792, + "name": "Sicilian: Smith-Morra, 4.Nxc3 Nc6" + }, + "B21x": { + "eco": "B21x", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/8/4P3/2N2N2/PP3PPP/R1BQKB1R w KQkq - 0 6", + "hash": 13854176909969236167, + "name": "Sicilian: Smith-Morra, 4.Nxc3 Nc6 5.Nf3 e6" + }, + "B21y": { + "eco": "B21y", + "fen": "r1bqkbnr/pp2pppp/2np4/8/4P3/2N2N2/PP3PPP/R1BQKB1R w KQkq - 0 6", + "hash": 10344355133662984696, + "name": "Sicilian: Smith-Morra, 4.Nxc3 Nc6 5.Nf3 d6" + }, + "B21z": { + "eco": "B21z", + "fen": "r1bqkb1r/pp3ppp/2nppn2/8/2B1P3/2N2N2/PP3PPP/R1BQ1RK1 w kq - 2 8", + "hash": 13821971629587080586, + "name": "Sicilian: Smith-Morra, 5.Nf3 d6 6.Bc4 e6 7.O-O Nf6" + }, + "B22a": { + "eco": "B22a", + "fen": "rnbqkbnr/pp1ppppp/8/2p5/4P3/2P5/PP1P1PPP/RNBQKBNR b KQkq - 0 2", + "hash": 1339735568848143725, + "name": "Sicilian: Alapin" + }, + "B22b": { + "eco": "B22b", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/4P3/2P5/PP1P1PPP/RNBQKBNR w KQkq - 1 3", + "hash": 13365111962627203182, + "name": "Sicilian: Alapin, 2...Nc6" + }, + "B22c": { + "eco": "B22c", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2p5/4P3/2P5/PP1P1PPP/RNBQKBNR w KQkq - 0 3", + "hash": 7268880544371627327, + "name": "Sicilian: Alapin, 2...e6" + }, + "B22d": { + "eco": "B22d", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2p5/3PP3/2P5/PP3PPP/RNBQKBNR b KQkq d3 0 3", + "hash": 11661349946250885245, + "name": "Sicilian: Alapin, 2...e6 3.d4" + }, + "B22e": { + "eco": "B22e", + "fen": "rnbqkbnr/pp2pppp/3p4/2p5/4P3/2P5/PP1P1PPP/RNBQKBNR w KQkq - 0 3", + "hash": 3111182530072415232, + "name": "Sicilian: Alapin, 2...d6" + }, + "B22f": { + "eco": "B22f", + "fen": "rnbqkbnr/pp2pppp/8/2pp4/4P3/2P5/PP1P1PPP/RNBQKBNR w KQkq d6 0 3", + "hash": 10952068689460071243, + "name": "Sicilian: Alapin, 2...d5" + }, + "B22g": { + "eco": "B22g", + "fen": "rnb1kbnr/pp3ppp/4p3/2pq4/3P4/2P5/PP3PPP/RNBQKBNR w KQkq - 0 5", + "hash": 9749332831135631767, + "name": "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 e6" + }, + "B22h": { + "eco": "B22h", + "fen": "r1b1kbnr/pp2pppp/2n5/2pq4/3P4/2P5/PP3PPP/RNBQKBNR w KQkq - 1 5", + "hash": 6545626217345170630, + "name": "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nc6" + }, + "B22i": { + "eco": "B22i", + "fen": "r3kbnr/pp2pppp/2n5/2pq4/3P2b1/2P2N2/PP3PPP/RNBQKB1R w KQkq - 3 6", + "hash": 9467017875277796113, + "name": "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nc6 5.Nf3 Bg4" + }, + "B22j": { + "eco": "B22j", + "fen": "rnb1kb1r/pp2pppp/5n2/2pq4/3P4/2P5/PP3PPP/RNBQKBNR w KQkq - 1 5", + "hash": 12309833439292184659, + "name": "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nf6" + }, + "B22k": { + "eco": "B22k", + "fen": "rn2kb1r/pp2pppp/5n2/2pq4/3P2b1/2P2N2/PP3PPP/RNBQKB1R w KQkq - 3 6", + "hash": 8314338218067572612, + "name": "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nf6 5.Nf3 Bg4" + }, + "B22l": { + "eco": "B22l", + "fen": "rn2kb1r/pp3ppp/4pn2/2pq4/3P2b1/2P2N2/PP2BPPP/RNBQK2R w KQkq - 0 7", + "hash": 8544743868578983285, + "name": "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nf6 5.Nf3 Bg4 6.Be2 e6" + }, + "B22m": { + "eco": "B22m", + "fen": "rnb1kb1r/pp3ppp/4pn2/2pq4/3P4/2P1BN2/PP3PPP/RN1QKB1R b KQkq - 1 6", + "hash": 8416934550575428274, + "name": "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nf6 5.Nf3 e6 6.Be3" + }, + "B22n": { + "eco": "B22n", + "fen": "rnb1kb1r/pp3ppp/4pn2/2pq4/3P4/2P2N2/PP2BPPP/RNBQK2R b KQkq - 1 6", + "hash": 8378610057031312287, + "name": "Sicilian: Alapin, 2...d5 3.exd5 Qxd5 4.d4 Nf6 5.Nf3 e6 6.Be2" + }, + "B22o": { + "eco": "B22o", + "fen": "rnbqkb1r/pp1ppppp/5n2/2p5/4P3/2P5/PP1P1PPP/RNBQKBNR w KQkq - 1 3", + "hash": 5294410805014168827, + "name": "Sicilian: Alapin, 2...Nf6" + }, + "B22p": { + "eco": "B22p", + "fen": "rnbqkb1r/pp1ppppp/8/2pnP3/8/2P2N2/PP1P1PPP/RNBQKB1R b KQkq - 2 4", + "hash": 3995998410114479639, + "name": "Sicilian: Alapin, 2...Nf6 3.e5 Nd5 4.Nf3" + }, + "B22q": { + "eco": "B22q", + "fen": "rnbqkb1r/pp1ppppp/8/3nP3/3p4/2P5/PP3PPP/RNBQKBNR w KQkq - 0 5", + "hash": 8519642851640677294, + "name": "Sicilian: Alapin, 2...Nf6 3.e5 Nd5 4.d4 cxd4" + }, + "B22r": { + "eco": "B22r", + "fen": "rnbqkb1r/pp1ppppp/8/3nP3/3p4/2P2N2/PP3PPP/RNBQKB1R b KQkq - 1 5", + "hash": 12492764358882587283, + "name": "Sicilian: Alapin, 2...Nf6 3.e5 Nd5 4.d4 cxd4 5.Nf3" + }, + "B22s": { + "eco": "B22s", + "fen": "r1bqkb1r/pp1ppppp/2n5/3nP3/2Bp4/2P2N2/PP3PPP/RNBQK2R b KQkq - 3 6", + "hash": 7278197654474522934, + "name": "Sicilian: Alapin, 2...Nf6 3.e5 Nd5 4.d4 cxd4 5.Nf3 Nc6 6.Bc4" + }, + "B22t": { + "eco": "B22t", + "fen": "rnbqkb1r/pp1ppppp/8/3nP3/3P4/8/PP3PPP/RNBQKBNR b KQkq - 0 5", + "hash": 15748260259897352072, + "name": "Sicilian: Alapin, 2...Nf6, 5.cxd4" + }, + "B22u": { + "eco": "B22u", + "fen": "r1bqkb1r/pp2pppp/2np4/3nP3/2BP4/5N2/PP3PPP/RNBQK2R b KQkq - 3 7", + "hash": 17297509340019246205, + "name": "Sicilian: Alapin, 2...Nf6, 5.cxd4 d6 6.Nf3 Nc6 7.Bc4" + }, + "B22v": { + "eco": "B22v", + "fen": "rnbqkb1r/pp1p1ppp/4p3/3nP3/3P4/8/PP3PPP/RNBQKBNR w KQkq - 0 6", + "hash": 12464553600434540506, + "name": "Sicilian: Alapin, 2...Nf6, 5.cxd4 e6" + }, + "B22w": { + "eco": "B22w", + "fen": "rnbqkb1r/pp3ppp/3pp3/3nP3/3P4/5N2/PP3PPP/RNBQKB1R w KQkq - 0 7", + "hash": 5630774839375144842, + "name": "Sicilian: Alapin, 2...Nf6, 5.cxd4 e6 6.Nf3 d6" + }, + "B22x": { + "eco": "B22x", + "fen": "rnbqkb1r/p2p1ppp/1p2p3/3nP3/3P4/5N2/PP3PPP/RNBQKB1R w KQkq - 0 7", + "hash": 2087234341562374524, + "name": "Sicilian: Alapin, 2...Nf6, 5.cxd4 e6 6.Nf3 b6" + }, + "B23a": { + "eco": "B23a", + "fen": "rnbqkbnr/pp1ppppp/8/2p5/4P3/2N5/PPPP1PPP/R1BQKBNR b KQkq - 1 2", + "hash": 11518609555277006898, + "name": "Sicilian: Closed" + }, + "B23b": { + "eco": "B23b", + "fen": "rnbqkbnr/pp1ppp1p/6p1/2p5/4P3/2N5/PPPP1PPP/R1BQKBNR w KQkq - 0 3", + "hash": 8533759476631296633, + "name": "Sicilian: Closed" + }, + "B23c": { + "eco": "B23c", + "fen": "rnbqkbnr/pp2pppp/3p4/2p5/4P3/2N5/PPPP1PPP/R1BQKBNR w KQkq - 0 3", + "hash": 11988797974647701855, + "name": "Sicilian: Closed" + }, + "B23d": { + "eco": "B23d", + "fen": "rnbqkbnr/pp2pppp/3p4/2p5/4P3/2N3P1/PPPP1P1P/R1BQKBNR b KQkq - 0 3", + "hash": 9981805798727833959, + "name": "Sicilian: Closed" + }, + "B23e": { + "eco": "B23e", + "fen": "rnbqkbnr/pp2pppp/3p4/2p5/4PP2/2N5/PPPP2PP/R1BQKBNR b KQkq f3 0 3", + "hash": 6590658720703560918, + "name": "Sicilian: Closed" + }, + "B23f": { + "eco": "B23f", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2p5/4P3/2N5/PPPP1PPP/R1BQKBNR w KQkq - 0 3", + "hash": 16838290975453763680, + "name": "Sicilian: Closed" + }, + "B23g": { + "eco": "B23g", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2p5/4PP2/2N5/PPPP2PP/R1BQKBNR b KQkq f3 0 3", + "hash": 1494031109028537833, + "name": "Sicilian: Closed" + }, + "B23h": { + "eco": "B23h", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2p5/4P3/2N5/PPPPNPPP/R1BQKB1R b KQkq - 1 3", + "hash": 18233187729581888926, + "name": "Sicilian: Closed" + }, + "B23i": { + "eco": "B23i", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2p5/4P3/2N3P1/PPPP1P1P/R1BQKBNR b KQkq - 0 3", + "hash": 14216486525461430360, + "name": "Sicilian: Closed" + }, + "B23j": { + "eco": "B23j", + "fen": "rnbqkbnr/pp3ppp/4p3/2pp4/4P3/2N3P1/PPPP1P1P/R1BQKBNR w KQkq d6 0 4", + "hash": 4621037608101072510, + "name": "Sicilian: Closed, Korchnoi Variation" + }, + "B23k": { + "eco": "B23k", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/4P3/2N5/PPPP1PPP/R1BQKBNR w KQkq - 2 3", + "hash": 3762628565848649009, + "name": "Sicilian: Closed, 2...Nc6" + }, + "B23l": { + "eco": "B23l", + "fen": "r1bqkbnr/pp1ppppp/2n5/1Bp5/4P3/2N5/PPPP1PPP/R1BQK1NR b KQkq - 3 3", + "hash": 570086959443214002, + "name": "Sicilian: Closed, 2...Nc6 3.Bb5" + }, + "B23m": { + "eco": "B23m", + "fen": "r1bqkbnr/pp1ppppp/8/1Bp5/3nP3/2N5/PPPP1PPP/R1BQK1NR w KQkq - 4 4", + "hash": 15029699360557743635, + "name": "Sicilian: Closed, 2...Nc6 3.Bb5 Nd4" + }, + "B23n": { + "eco": "B23n", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/4P3/2N5/PPPPNPPP/R1BQKB1R b KQkq - 3 3", + "hash": 2347326972927828175, + "name": "Sicilian: Chameleon Variation" + }, + "B23o": { + "eco": "B23o", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/4PP2/2N5/PPPP2PP/R1BQKBNR b KQkq f3 0 3", + "hash": 14493137427393433784, + "name": "Sicilian: Closed, Grand Prix" + }, + "B23p": { + "eco": "B23p", + "fen": "r1bqkbnr/pp2pp1p/2np2p1/2p5/4PP2/2N2N2/PPPP2PP/R1BQKB1R w KQkq - 0 5", + "hash": 14000528503815400099, + "name": "Sicilian: Closed, Grand Prix, 3...d6 4.Nf3 g6" + }, + "B23q": { + "eco": "B23q", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/2p5/4PP2/2N5/PPPP2PP/R1BQKBNR w KQkq - 0 4", + "hash": 13787213368644780266, + "name": "Sicilian: Closed, Grand Prix, 3...e6" + }, + "B23r": { + "eco": "B23r", + "fen": "r1bqkbnr/pp3ppp/2n1p3/2pp4/4PP2/2N2N2/PPPP2PP/R1BQKB1R w KQkq d6 0 5", + "hash": 16237952070276411377, + "name": "Sicilian: Closed, Grand Prix, 3...e6 4.Nf3 d5" + }, + "B23s": { + "eco": "B23s", + "fen": "r1bqkbnr/pp1ppp1p/2n3p1/2p5/4PP2/2N5/PPPP2PP/R1BQKBNR w KQkq - 0 4", + "hash": 2347964100089987827, + "name": "Sicilian: Closed, Grand Prix, 3...g6" + }, + "B23t": { + "eco": "B23t", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/2p5/2B1PP2/2N2N2/PPPP2PP/R1BQK2R b KQkq - 3 5", + "hash": 2954011161250086594, + "name": "Sicilian: Closed, Grand Prix, 3...g6 4.Nf3 Bg7 5.Bc4" + }, + "B23u": { + "eco": "B23u", + "fen": "r1bqk1nr/pp1p1pbp/2n1p1p1/2p5/2B1PP2/2N2N2/PPPP2PP/R1BQK2R w KQkq - 0 6", + "hash": 6812032746961710736, + "name": "Sicilian: Closed, Grand Prix, 3...g6 4.Nf3 Bg7 5.Bc4 e6" + }, + "B23v": { + "eco": "B23v", + "fen": "r1bqk1nr/pp1p1pbp/2n1p1p1/2p2P2/2B1P3/2N2N2/PPPP2PP/R1BQK2R b KQkq - 0 6", + "hash": 3821741953746476915, + "name": "Sicilian: Closed, Grand Prix, Schofman Variation" + }, + "B23w": { + "eco": "B23w", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/1Bp5/4PP2/2N2N2/PPPP2PP/R1BQK2R b KQkq - 3 5", + "hash": 8688468457258154983, + "name": "Sicilian: Closed, Grand Prix, 3...g6 4.Nf3 Bg7 5.Bb5" + }, + "B23x": { + "eco": "B23x", + "fen": "r1bqk1nr/pp1pppbp/6p1/2p5/3nPP2/2NB1N2/PPPP2PP/R1BQK2R b KQkq - 5 6", + "hash": 3597142729537712063, + "name": "Sicilian: Closed, Grand Prix, 3...g6 4.Nf3 Bg7 5.Bb5 Nd4 6.Bd3" + }, + "B23y": { + "eco": "B23y", + "fen": "r1bqk1nr/pp1pppbp/6p1/1Bp5/3nPP2/2N2N2/PPPP2PP/R1BQ1RK1 b kq - 5 6", + "hash": 15103863492118667350, + "name": "Sicilian: Closed, Grand Prix, 3...g6 4.Nf3 Bg7 5.Bb5 Nd4 6.O-O" + }, + "B24": { + "eco": "B24", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/4P3/2N3P1/PPPP1P1P/R1BQKBNR b KQkq - 0 3", + "hash": 1788265499167208713, + "name": "Sicilian: Closed, 3.g3" + }, + "B25a": { + "eco": "B25a", + "fen": "r1bqk1nr/pp2ppbp/2np2p1/2p5/4P3/2NP2P1/PPP2PBP/R1BQK1NR w KQkq - 0 6", + "hash": 7149228955831092776, + "name": "Sicilian: Closed, 3.g3, 5.d3 d6" + }, + "B25b": { + "eco": "B25b", + "fen": "r1bqk1nr/pp2ppbp/2np2p1/2p5/4P3/2NP2P1/PPP1NPBP/R1BQK2R b KQkq - 1 6", + "hash": 8616443904353684438, + "name": "Sicilian: Closed, 3.g3, 5.d3 d6 6.Nge2" + }, + "B25c": { + "eco": "B25c", + "fen": "r1bqk1nr/pp3pbp/2np2p1/2p1p3/4P3/2NP2P1/PPP1NPBP/R1BQK2R w KQkq e6 0 7", + "hash": 18296940419720754144, + "name": "Sicilian: Closed, Botvinnik" + }, + "B25d": { + "eco": "B25d", + "fen": "r1bqk1nr/pp3pbp/2npp1p1/2p5/4P3/2NP2P1/PPP1NPBP/R1BQK2R w KQkq - 0 7", + "hash": 136286825713392516, + "name": "Sicilian: Closed, 3.g3, 5.d3 d6 6.Nge2 e6" + }, + "B25e": { + "eco": "B25e", + "fen": "r1bqk1nr/pp2ppbp/2np2p1/2p5/4PP2/2NP2P1/PPP3BP/R1BQK1NR b KQkq f3 0 6", + "hash": 11394481812264647585, + "name": "Sicilian: Closed, 6.f4" + }, + "B25f": { + "eco": "B25f", + "fen": "1rbqk1nr/pp2ppbp/2np2p1/2p5/4PP2/2NP2P1/PPP3BP/R1BQK1NR w KQk - 1 7", + "hash": 1762061862390092290, + "name": "Sicilian: Closed, 6.f4 Rb8" + }, + "B25g": { + "eco": "B25g", + "fen": "r1bqk2r/pp2ppbp/2np1np1/2p5/4PP2/2NP2P1/PPP3BP/R1BQK1NR w KQkq - 1 7", + "hash": 14253717052821125687, + "name": "Sicilian: Closed, 6.f4 Nf6" + }, + "B25h": { + "eco": "B25h", + "fen": "r1bqk2r/pp2ppbp/2np1np1/2p5/4PP2/2NP1NP1/PPP3BP/R1BQK2R b KQkq - 2 7", + "hash": 2210014891676457738, + "name": "Sicilian: Closed, 6.f4 Nf6 7.Nf3" + }, + "B25i": { + "eco": "B25i", + "fen": "r1bqk1nr/pp3pbp/2np2p1/2p1p3/4PP2/2NP2P1/PPP3BP/R1BQK1NR w KQkq e6 0 7", + "hash": 1466304982533473175, + "name": "Sicilian: Closed, 6.f4 e5" + }, + "B25j": { + "eco": "B25j", + "fen": "r1bqk1nr/pp3pbp/2np2p1/2p1p3/4PP2/2NP1NP1/PPP3BP/R1BQK2R b KQkq - 1 7", + "hash": 14933285911036519082, + "name": "Sicilian: Closed, 6.f4 e5 7.Nf3" + }, + "B25k": { + "eco": "B25k", + "fen": "r1bqk2r/pp2npbp/2np2p1/2p1p3/4PP2/2NP1NP1/PPP3BP/R1BQ1RK1 b kq - 3 8", + "hash": 10306338090441454087, + "name": "Sicilian: Closed, 6.f4 e5 7.Nf3 Nge7 8.O-O" + }, + "B25l": { + "eco": "B25l", + "fen": "r1bqk1nr/pp3pbp/2npp1p1/2p5/4PP2/2NP2P1/PPP3BP/R1BQK1NR w KQkq - 0 7", + "hash": 16741752177668418547, + "name": "Sicilian: Closed, 6.f4 e6" + }, + "B25m": { + "eco": "B25m", + "fen": "r1bqk1nr/pp3pbp/2npp1p1/2p5/4PP2/2NP1NP1/PPP3BP/R1BQK2R b KQkq - 1 7", + "hash": 3689092481702038222, + "name": "Sicilian: Closed, 6.f4 e6" + }, + "B25n": { + "eco": "B25n", + "fen": "r1bqk2r/pp2npbp/2npp1p1/2p5/4PP2/2NP1NP1/PPP3BP/R1BQK2R w KQkq - 2 8", + "hash": 972204316278620531, + "name": "Sicilian: Closed, 6.f4 e6" + }, + "B25o": { + "eco": "B25o", + "fen": "r1bqk2r/pp2npbp/2npp1p1/2p5/4PP2/2NP1NP1/PPP3BP/R1BQ1RK1 b kq - 3 8", + "hash": 8289030801439349347, + "name": "Sicilian: Closed, 6.f4 e6" + }, + "B25p": { + "eco": "B25p", + "fen": "r1bq1rk1/pp2npbp/2npp1p1/2p5/4PP2/2NP1NP1/PPP3BP/R1BQ1RK1 w - - 4 9", + "hash": 8764110630132757384, + "name": "Sicilian: Closed, 6.f4 e6" + }, + "B25q": { + "eco": "B25q", + "fen": "r1bq1rk1/pp2npbp/2npp1p1/2p5/4PP2/2NPBNP1/PPP3BP/R2Q1RK1 b - - 5 9", + "hash": 768105369455273990, + "name": "Sicilian: Closed, 6.f4 e6: 9.Be3" + }, + "B25r": { + "eco": "B25r", + "fen": "1rbq1rk1/pp2npbp/2npp1p1/2p5/4PP2/2NPBNP1/PPP3BP/R2Q1RK1 w - - 6 10", + "hash": 10523628253234405228, + "name": "Sicilian: Closed, 6.f4 e6: 9.Be3 Rb8" + }, + "B25s": { + "eco": "B25s", + "fen": "r1bq1rk1/p3npbp/1pnpp1p1/2p5/4PP2/2NPBNP1/PPP3BP/R2Q1RK1 w - - 0 10", + "hash": 7044072728981151645, + "name": "Sicilian: Closed, 6.f4 e6: 9.Be3 b6" + }, + "B25t": { + "eco": "B25t", + "fen": "r1bq1rk1/pp2npbp/3pp1p1/2p5/3nPP2/2NPBNP1/PPP3BP/R2Q1RK1 w - - 6 10", + "hash": 15984883809853630631, + "name": "Sicilian: Closed, 6.f4 e6: 9.Be3 Nd4" + }, + "B25u": { + "eco": "B25u", + "fen": "r1bq1rk1/pp2npbp/3pp1p1/2p5/3nPP2/2NPBNP1/PPP3BP/1R1Q1RK1 b - - 7 10", + "hash": 9215249107873541155, + "name": "Sicilian: Closed, 6.f4 e6: 9.Be3 Nd4 10.Rb1" + }, + "B25v": { + "eco": "B25v", + "fen": "r1bq1rk1/pp2npbp/3pp1p1/2p5/3nPP2/2NPBNP1/PPPQ2BP/R4RK1 b - - 7 10", + "hash": 17712086335450134279, + "name": "Sicilian: Closed, 6.f4 e6: 9.Be3 Nd4 10.Qd2" + }, + "B25w": { + "eco": "B25w", + "fen": "r1bq1rk1/pp2npbp/3pp1p1/2p1P3/3n1P2/2NPBNP1/PPP3BP/R2Q1RK1 b - - 0 10", + "hash": 13595419354981846723, + "name": "Sicilian: Closed, 6.f4 e6: 9.Be3 Nd4 10.e5" + }, + "B25x": { + "eco": "B25x", + "fen": "r1bq1rk1/pp3pbp/3pp1p1/2p1Pn2/3n1P2/2NPBNP1/PPP3BP/R2Q1RK1 w - - 1 11", + "hash": 10488395857648661217, + "name": "Sicilian: Closed, 6.f4 e6: 9.Be3 Nd4 10.e5 Nef5" + }, + "B26a": { + "eco": "B26a", + "fen": "r1bqk1nr/pp2ppbp/2np2p1/2p5/4P3/2NPB1P1/PPP2PBP/R2QK1NR b KQkq - 1 6", + "hash": 1170815197003505062, + "name": "Sicilian: Closed, 6.Be3" + }, + "B26b": { + "eco": "B26b", + "fen": "r1bqk2r/pp2ppbp/2np1np1/2p5/4P3/2NPB1P1/PPP2PBP/R2QK1NR w KQkq - 2 7", + "hash": 5463331176322145328, + "name": "Sicilian: Closed, 6.Be3 Nf6" + }, + "B26c": { + "eco": "B26c", + "fen": "r1bqk2r/pp2ppbp/2np1np1/2p5/4P3/2NPB1PP/PPP2PB1/R2QK1NR b KQkq - 0 7", + "hash": 11755093752117220802, + "name": "Sicilian: Closed, 6.Be3 Nf6 7.h3" + }, + "B26d": { + "eco": "B26d", + "fen": "r1bqk1nr/pp3pbp/2np2p1/2p1p3/4P3/2NPB1P1/PPP2PBP/R2QK1NR w KQkq e6 0 7", + "hash": 11117024068876903824, + "name": "Sicilian: Closed, 6.Be3 e5" + }, + "B26e": { + "eco": "B26e", + "fen": "r1bqk1nr/pp3pbp/2np2p1/2p1p3/4P3/2NPB1P1/PPPQ1PBP/R3K1NR b KQkq - 1 7", + "hash": 12853227100007168560, + "name": "Sicilian: Closed, 6.Be3 e5 7.Qd2" + }, + "B26f": { + "eco": "B26f", + "fen": "r1bqk2r/pp2npbp/2np2p1/2p1p3/4P3/2NPB1P1/PPPQ1PBP/R3K1NR w KQkq - 2 8", + "hash": 10092682553007829389, + "name": "Sicilian: Closed, 6.Be3 e5 7.Qd2 Nge7" + }, + "B26g": { + "eco": "B26g", + "fen": "1rbqk1nr/pp2ppbp/2np2p1/2p5/4P3/2NPB1P1/PPP2PBP/R2QK1NR w KQk - 2 7", + "hash": 10838720696065815557, + "name": "Sicilian: Closed, 6.Be3 Rb8" + }, + "B26h": { + "eco": "B26h", + "fen": "1rbqk1nr/pp2ppbp/2np2p1/2p5/4P3/2NPB1P1/PPPQ1PBP/R3K1NR b KQk - 3 7", + "hash": 13723189910307122085, + "name": "Sicilian: Closed, 6.Be3 Rb8 7.Qd2" + }, + "B26i": { + "eco": "B26i", + "fen": "1rbqk1nr/p3ppbp/2np2p1/1pp5/4P3/2NPB1P1/PPPQ1PBP/R3K1NR w KQk b6 0 8", + "hash": 16030275447278868120, + "name": "Sicilian: Closed, 6.Be3 Rb8 7.Qd2 b5" + }, + "B26j": { + "eco": "B26j", + "fen": "1rbqk1nr/p3ppbp/2np2p1/1pp5/4P3/2NPB1P1/PPPQNPBP/R3K2R b KQk - 1 8", + "hash": 14614762816843946854, + "name": "Sicilian: Closed, 6.Be3 Rb8 7.Qd2 b5 8.Nge2" + }, + "B26k": { + "eco": "B26k", + "fen": "r1bqk1nr/pp3pbp/2npp1p1/2p5/4P3/2NPB1P1/PPP2PBP/R2QK1NR w KQkq - 0 7", + "hash": 7370246373157326324, + "name": "Sicilian: Closed, 6.Be3 e6" + }, + "B26l": { + "eco": "B26l", + "fen": "r1bqk1nr/pp3pbp/2npp1p1/2p5/4P3/2NPB1P1/PPPQ1PBP/R3K1NR b KQkq - 1 7", + "hash": 5643062599401509460, + "name": "Sicilian: Closed, 6.Be3 e6 7.Qd2" + }, + "B26m": { + "eco": "B26m", + "fen": "r1b1k1nr/pp3pbp/2npp1p1/q1p5/4P3/2NPB1P1/PPPQ1PBP/R3K1NR w KQkq - 2 8", + "hash": 10890753737633870811, + "name": "Sicilian: Closed, 6.Be3 e6 7.Qd2 Qa5" + }, + "B26n": { + "eco": "B26n", + "fen": "r1bqk1nr/pp3pbp/3pp1p1/2p5/3nP3/2NPB1P1/PPPQ1PBP/R3K1NR w KQkq - 2 8", + "hash": 11037552378073764597, + "name": "Sicilian: Closed, 6.Be3 e6 7.Qd2 Nd4" + }, + "B26o": { + "eco": "B26o", + "fen": "r1bqk2r/pp2npbp/2npp1p1/2p5/4P3/2NPB1P1/PPPQ1PBP/R3K1NR w KQkq - 2 8", + "hash": 8079338110373534185, + "name": "Sicilian: Closed, 6.Be3 e6 7.Qd2 Nge7" + }, + "B26p": { + "eco": "B26p", + "fen": "1rbqk1nr/pp3pbp/2npp1p1/2p5/4P3/2NPB1P1/PPPQ1PBP/R3K1NR w KQk - 2 8", + "hash": 14413034702689942519, + "name": "Sicilian: Closed, 6.Be3 e6 7.Qd2 Rb8" + }, + "B26q": { + "eco": "B26q", + "fen": "1rbqk1nr/pp3pbp/2npp1p1/2p5/4P3/2NPB1P1/PPPQNPBP/R3K2R b KQk - 3 8", + "hash": 15898139333805028873, + "name": "Sicilian: Closed, 6.Be3 e6 7.Qd2 Rb8 8.Nge2" + }, + "B27a": { + "eco": "B27a", + "fen": "rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2", + "hash": 13774723490369252310, + "name": "Sicilian: 2.Nf3" + }, + "B27b": { + "eco": "B27b", + "fen": "rnb1kbnr/pp1ppppp/8/q1p5/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3", + "hash": 7375263774632184409, + "name": "Sicilian: Mongoose Variation" + }, + "B27c": { + "eco": "B27c", + "fen": "rnb1kbnr/ppqppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3", + "hash": 13346022947248891095, + "name": "Sicilian: Quinteros Variation" + }, + "B27d": { + "eco": "B27d", + "fen": "rnbqkbnr/p2ppppp/1p6/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 0 3", + "hash": 15294487223394868301, + "name": "Sicilian: Katalimov Variation" + }, + "B27e": { + "eco": "B27e", + "fen": "rnbqkbnr/pp1ppp1p/6p1/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 0 3", + "hash": 6241414395725855133, + "name": "Sicilian: Hungarian Variation" + }, + "B27f": { + "eco": "B27f", + "fen": "rnbqkbnr/pp1ppp1p/6p1/2p5/2P1P3/5N2/PP1P1PPP/RNBQKB1R b KQkq c3 0 3", + "hash": 15762152806555849370, + "name": "Sicilian: Hungarian, 3.c4" + }, + "B27g": { + "eco": "B27g", + "fen": "rnbqkbnr/pp1ppp1p/6p1/2p5/4P3/2P2N2/PP1P1PPP/RNBQKB1R b KQkq - 0 3", + "hash": 2325842901332899355, + "name": "Sicilian: Hungarian, 3.c3" + }, + "B27h": { + "eco": "B27h", + "fen": "rnbqk1nr/pp1pppbp/6p1/8/3PP3/5N2/PP3PPP/RNBQKB1R b KQkq - 0 5", + "hash": 11990394951396308243, + "name": "Sicilian: Hungarian, 3.c3 Bg7 4.d4 cxd4 5.cxd4" + }, + "B27i": { + "eco": "B27i", + "fen": "rnbqk1nr/pp2ppbp/6p1/3p4/3PP3/5N2/PP3PPP/RNBQKB1R w KQkq d6 0 6", + "hash": 2525484452789451573, + "name": "Sicilian: Hungarian, 3.c3 Bg7 4.d4 cxd4 5.cxd4 d5" + }, + "B27j": { + "eco": "B27j", + "fen": "rnbqkbnr/pp1ppp1p/6p1/2p5/3PP3/5N2/PPP2PPP/RNBQKB1R b KQkq d3 0 3", + "hash": 10639994882660668639, + "name": "Sicilian: Hungarian, 3.d4" + }, + "B27k": { + "eco": "B27k", + "fen": "rnbqkbnr/pp1ppp1p/6p1/8/3pP3/5N2/PPP2PPP/RNBQKB1R w KQkq - 0 4", + "hash": 14751084060885581081, + "name": "Sicilian: Hungarian, 3.d4 cxd4" + }, + "B27l": { + "eco": "B27l", + "fen": "rnbqkbnr/pp1ppp1p/6p1/8/3NP3/8/PPP2PPP/RNBQKB1R b KQkq - 0 4", + "hash": 12331486424488701751, + "name": "Sicilian: Hungarian, 3.d4 cxd4 4.Nxd4" + }, + "B27m": { + "eco": "B27m", + "fen": "rnbqk1nr/pp1pppbp/6p1/2p5/3PP3/5N2/PPP2PPP/RNBQKB1R w KQkq - 1 4", + "hash": 2527899621572829045, + "name": "Sicilian: Accelerated Pterodactyl" + }, + "B27n": { + "eco": "B27n", + "fen": "rnbqk1nr/pp1pppbp/6p1/2P5/4P3/5N2/PPP2PPP/RNBQKB1R b KQkq - 0 4", + "hash": 6699040257841367065, + "name": "Sicilian: Accelerated Pterodactyl, 4.dxc5" + }, + "B27o": { + "eco": "B27o", + "fen": "rnb1k1nr/pp1pppbp/6p1/q1P5/4P3/5N2/PPP2PPP/RNBQKB1R w KQkq - 1 5", + "hash": 9620903509698226582, + "name": "Sicilian: Accelerated Pterodactyl, 4.dxc5 Qa5+" + }, + "B27p": { + "eco": "B27p", + "fen": "rnb1k1nr/pp1pppbp/6p1/q1P5/4P3/2N2N2/PPP2PPP/R1BQKB1R b KQkq - 2 5", + "hash": 9084684478193707855, + "name": "Sicilian: Accelerated Pterodactyl, 4.dxc5 Qa5+ 5.Nc3" + }, + "B27q": { + "eco": "B27q", + "fen": "rnb1k1nr/pp1pppbp/6p1/q1P5/4P3/2P2N2/PP3PPP/RNBQKB1R b KQkq - 0 5", + "hash": 17536639113756616208, + "name": "Sicilian: Accelerated Pterodactyl, 4.dxc5 Qa5+ 5.c3" + }, + "B27r": { + "eco": "B27r", + "fen": "rnb1k1nr/pp1pppbp/6p1/2q5/4P3/2P2N2/PP3PPP/RNBQKB1R w KQkq - 0 6", + "hash": 12899057189339708900, + "name": "Sicilian: Accelerated Pterodactyl, 4.dxc5 Qa5+ 5.c3" + }, + "B27s": { + "eco": "B27s", + "fen": "rnbqk1nr/pp1pppbp/6p1/2p5/2PPP3/5N2/PP3PPP/RNBQKB1R b KQkq c3 0 4", + "hash": 12625692484412830834, + "name": "Sicilian: Accelerated Pterodactyl, 4.c4" + }, + "B27t": { + "eco": "B27t", + "fen": "rnb1k1nr/pp1pppbp/6p1/q1p5/2PPP3/5N2/PP3PPP/RNBQKB1R w KQkq - 1 5", + "hash": 8522197185604670973, + "name": "Sicilian: Accelerated Pterodactyl, 4.c4 Qa5+" + }, + "B28a": { + "eco": "B28a", + "fen": "rnbqkbnr/1p1ppppp/p7/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 0 3", + "hash": 7916861932887397130, + "name": "Sicilian: O'Kelly Variation" + }, + "B28b": { + "eco": "B28b", + "fen": "rnbqkbnr/1p1ppppp/p7/2p5/4P3/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 1 3", + "hash": 10829274023992644051, + "name": "Sicilian: O'Kelly, 3.Nc3" + }, + "B28c": { + "eco": "B28c", + "fen": "rnbqkbnr/1p1ppppp/p7/2p5/3PP3/5N2/PPP2PPP/RNBQKB1R b KQkq d3 0 3", + "hash": 12171954709809725000, + "name": "Sicilian: O'Kelly, 3.d4" + }, + "B28d": { + "eco": "B28d", + "fen": "rnbqkbnr/1p1ppppp/p7/8/3NP3/8/PPP2PPP/RNBQKB1R b KQkq - 0 4", + "hash": 10403771685401265568, + "name": "Sicilian: O'Kelly, 3.d4 cxd4 4.Nxd4" + }, + "B28e": { + "eco": "B28e", + "fen": "rnbqkb1r/1p1ppppp/p4n2/8/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 1 5", + "hash": 14668131405597656118, + "name": "Sicilian: O'Kelly, 3.d4 cxd4 4.Nxd4 Nf6" + }, + "B28f": { + "eco": "B28f", + "fen": "rnbqkbnr/1p1ppppp/p7/2p5/2P1P3/5N2/PP1P1PPP/RNBQKB1R b KQkq c3 0 3", + "hash": 16284392691211401229, + "name": "Sicilian: O'Kelly, 3.c4" + }, + "B28g": { + "eco": "B28g", + "fen": "rnbqkbnr/1p1p1ppp/p3p3/2p5/2P1P3/5N2/PP1P1PPP/RNBQKB1R w KQkq - 0 4", + "hash": 10919605043992586335, + "name": "Sicilian: O'Kelly, 3.c4 e6" + }, + "B28h": { + "eco": "B28h", + "fen": "rnbqkbnr/1p1ppppp/p7/2p5/4P3/2P2N2/PP1P1PPP/RNBQKB1R b KQkq - 0 3", + "hash": 1946873780242537612, + "name": "Sicilian: O'Kelly, 3.c3" + }, + "B28i": { + "eco": "B28i", + "fen": "rnbqkbnr/1p1p1ppp/p3p3/2p5/4P3/2P2N2/PP1P1PPP/RNBQKB1R w KQkq - 0 4", + "hash": 7886749980394933470, + "name": "Sicilian: O'Kelly, 3.c3 e6" + }, + "B28j": { + "eco": "B28j", + "fen": "rnbqkbnr/1p2pppp/p7/2pp4/4P3/2P2N2/PP1P1PPP/RNBQKB1R w KQkq d6 0 4", + "hash": 11416217650912858794, + "name": "Sicilian: O'Kelly, 3.c3 d5" + }, + "B29a": { + "eco": "B29a", + "fen": "rnbqkb1r/pp1ppppp/5n2/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3", + "hash": 16485306579680913984, + "name": "Sicilian: Nimzowitsch" + }, + "B29b": { + "eco": "B29b", + "fen": "rnbqkb1r/pp1ppppp/5n2/2p5/4P3/3P1N2/PPP2PPP/RNBQKB1R b KQkq - 0 3", + "hash": 5360217215953719700, + "name": "Sicilian: Nimzowitsch, 3.d3" + }, + "B29c": { + "eco": "B29c", + "fen": "rnbqkb1r/pp1ppppp/5n2/2p5/4P3/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 3 3", + "hash": 2256455554034100377, + "name": "Sicilian: Nimzowitsch, 3.Nc3" + }, + "B29d": { + "eco": "B29d", + "fen": "rnbqkb1r/pp2pppp/5n2/2pp4/4P3/2N2N2/PPPP1PPP/R1BQKB1R w KQkq d6 0 4", + "hash": 11113380073141216959, + "name": "Sicilian: Nimzowitsch, 3.Nc3 d5" + }, + "B29e": { + "eco": "B29e", + "fen": "rnbqkb1r/pp2pppp/5n2/2pP4/8/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 0 4", + "hash": 13683521190614000825, + "name": "Sicilian: Nimzowitsch, 3.Nc3 d5 4.exd5" + }, + "B29f": { + "eco": "B29f", + "fen": "rnbqkb1r/pp1ppppp/5n2/2p1P3/8/5N2/PPPP1PPP/RNBQKB1R b KQkq - 0 3", + "hash": 9637285391431388196, + "name": "Sicilian: Nimzowitsch, 3.e5" + }, + "B29g": { + "eco": "B29g", + "fen": "rnbqkb1r/pp1ppppp/8/2pnP3/2P5/5N2/PP1P1PPP/RNBQKB1R b KQkq c3 0 4", + "hash": 14811711204276933270, + "name": "Sicilian: Nimzowitsch, 4.c4" + }, + "B29h": { + "eco": "B29h", + "fen": "rnbqkb1r/pp1ppppp/8/2pnP3/3P4/5N2/PPP2PPP/RNBQKB1R b KQkq d3 0 4", + "hash": 9555358934703740115, + "name": "Sicilian: Nimzowitsch, 4.d4" + }, + "B29i": { + "eco": "B29i", + "fen": "rnbqkb1r/pp1ppppp/8/2pnP3/8/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 2 4", + "hash": 13418830626328722248, + "name": "Sicilian: Nimzowitsch, 4.Nc3" + }, + "B29j": { + "eco": "B29j", + "fen": "rnbqkb1r/pp1ppppp/8/2p1P3/8/2n2N2/PPPP1PPP/R1BQKB1R w KQkq - 0 5", + "hash": 17773576512049624330, + "name": "Sicilian: Nimzowitsch, 4.Nc3 Nxc3" + }, + "B29k": { + "eco": "B29k", + "fen": "rnbqkb1r/pp1p1ppp/4p3/2pnP3/8/2N2N2/PPPP1PPP/R1BQKB1R w KQkq - 0 5", + "hash": 14721899304358128410, + "name": "Sicilian: Nimzowitsch, 4.Nc3 e6" + }, + "B29l": { + "eco": "B29l", + "fen": "rnbqkb1r/pp1p1ppp/4p3/2pNP3/8/5N2/PPPP1PPP/R1BQKB1R b KQkq - 0 5", + "hash": 2120220585990164156, + "name": "Sicilian: Nimzowitsch, 4.Nc3 e6 5.Nxd5" + }, + "B29m": { + "eco": "B29m", + "fen": "r1bqkb1r/pp1p1ppp/2n5/2ppP3/3P4/5N2/PPP2PPP/R1BQKB1R w KQkq - 1 7", + "hash": 6070784754735186381, + "name": "Sicilian: Nimzowitsch, Rubinstein Countergambit" + }, + "B29n": { + "eco": "B29n", + "fen": "r1bqkb1r/pp1p1ppp/2n5/2PpP3/8/5N2/PPP2PPP/R1BQKB1R b KQkq - 0 7", + "hash": 3160647608532555425, + "name": "Sicilian: Nimzowitsch, Rubinstein Countergambit, 7.dxc5" + }, + "B30a": { + "eco": "B30a", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3", + "hash": 1496460521747091157, + "name": "Sicilian: 2...Nc6" + }, + "B30b": { + "eco": "B30b", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/4P3/1P3N2/P1PP1PPP/RNBQKB1R b KQkq - 0 3", + "hash": 10980372645587772856, + "name": "Sicilian: 2...Nc6 3.b3" + }, + "B30c": { + "eco": "B30c", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/4P3/3P1N2/PPP2PPP/RNBQKB1R b KQkq - 0 3", + "hash": 13429942168167986433, + "name": "Sicilian: 2...Nc6 3.d3" + }, + "B30d": { + "eco": "B30d", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/4P3/5NP1/PPPP1P1P/RNBQKB1R b KQkq - 0 3", + "hash": 4045012756178818797, + "name": "Sicilian: 2...Nc6 3.g3" + }, + "B30e": { + "eco": "B30e", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/2p5/4P3/3P1NP1/PPP2P1P/RNBQKB1R b KQkq - 0 4", + "hash": 16209005157365874027, + "name": "Sicilian: 2...Nc6 3.g3 e6 4.d3" + }, + "B30f": { + "eco": "B30f", + "fen": "r1bqkbnr/pp3ppp/2n1p3/2pp4/4P3/3P1NP1/PPP2P1P/RNBQKB1R w KQkq d6 0 5", + "hash": 7321681307087418189, + "name": "Sicilian: 2...Nc6 3.g3 e6 4.d3 d5" + }, + "B30g": { + "eco": "B30g", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/2B1P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 3 3", + "hash": 8608572148713412723, + "name": "Sicilian: 2...Nc6 3.Bc4" + }, + "B30h": { + "eco": "B30h", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/4P3/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 3 3", + "hash": 17245239860672007180, + "name": "Sicilian: 2...Nc6 3.Nc3" + }, + "B30i": { + "eco": "B30i", + "fen": "r1bqkbnr/pp1ppp1p/2n3p1/2p5/4P3/2N2N2/PPPP1PPP/R1BQKB1R w KQkq - 0 4", + "hash": 497424642828181063, + "name": "Sicilian: 2...Nc6 3.Nc3 g6" + }, + "B30j": { + "eco": "B30j", + "fen": "r1bqkbnr/pp1p1ppp/2n5/2p1p3/4P3/2N2N2/PPPP1PPP/R1BQKB1R w KQkq e6 0 4", + "hash": 7290041377405465658, + "name": "Sicilian: 2...Nc6 3.Nc3 e5" + }, + "B30k": { + "eco": "B30k", + "fen": "r1bqkbnr/pp1ppppp/2n5/1Bp5/4P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 3 3", + "hash": 2817757228276456790, + "name": "Sicilian: Rossolimo" + }, + "B30l": { + "eco": "B30l", + "fen": "r1b1kbnr/pp1ppppp/1qn5/1Bp5/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4", + "hash": 16205447975487327116, + "name": "Sicilian: Rossolimo, 3...Qb6" + }, + "B30m": { + "eco": "B30m", + "fen": "r1bqkb1r/pp1ppppp/2n2n2/1Bp5/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4", + "hash": 9003992738245336256, + "name": "Sicilian: Rossolimo, 3...Nf6" + }, + "B30n": { + "eco": "B30n", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/1Bp5/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 4", + "hash": 5867448642441809156, + "name": "Sicilian: Rossolimo, 3...e6" + }, + "B30o": { + "eco": "B30o", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/1Bp5/4P3/1P3N2/P1PP1PPP/RNBQK2R b KQkq - 0 4", + "hash": 15981934913995335273, + "name": "Sicilian: Rossolimo, 3...e6 4.b3" + }, + "B30p": { + "eco": "B30p", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/1Bp5/4P3/2N2N2/PPPP1PPP/R1BQK2R b KQkq - 1 4", + "hash": 12320236519346737117, + "name": "Sicilian: Rossolimo, 3...e6 4.Nc3" + }, + "B30q": { + "eco": "B30q", + "fen": "r1bqkbnr/pp1p1ppp/2B1p3/2p5/4P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 0 4", + "hash": 18691227922816319, + "name": "Sicilian: Rossolimo, 3...e6 4.Bxc6" + }, + "B30r": { + "eco": "B30r", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/1Bp5/4P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 1 4", + "hash": 3393504377596827156, + "name": "Sicilian: Rossolimo, 3...e6 4.O-O" + }, + "B30s": { + "eco": "B30s", + "fen": "r1bqkb1r/pp1pnppp/2n1p3/1Bp5/4P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 2 5", + "hash": 1249637836289596841, + "name": "Sicilian: Rossolimo, 3...e6 4.O-O Nge7" + }, + "B30t": { + "eco": "B30t", + "fen": "r1bqkb1r/pp1pnppp/2n1p3/1Bp5/4P3/5N2/PPPP1PPP/RNBQR1K1 b kq - 3 5", + "hash": 10800639567070590653, + "name": "Sicilian: Rossolimo, 3...e6 4.O-O Nge7 5.Re1" + }, + "B30u": { + "eco": "B30u", + "fen": "r1bqkb1r/pp1pnppp/2n1p3/1Bp5/4P3/2N2N2/PPPP1PPP/R1BQ1RK1 b kq - 3 5", + "hash": 16915663544988426096, + "name": "Sicilian: Rossolimo, 3...e6 4.O-O Nge7 5.Nc3" + }, + "B30v": { + "eco": "B30v", + "fen": "r1bqkb1r/pp1pnppp/2n1p3/1Bp5/4P3/2P2N2/PP1P1PPP/RNBQ1RK1 b kq - 0 5", + "hash": 7461728343849554479, + "name": "Sicilian: Rossolimo, 3...e6 4.O-O Nge7 5.c3" + }, + "B30w": { + "eco": "B30w", + "fen": "r1bqkb1r/1p1pnppp/p1n1p3/1Bp5/4P3/2P2N2/PP1P1PPP/RNBQ1RK1 w kq - 0 6", + "hash": 13076926744617626355, + "name": "Sicilian: Rossolimo, 3...e6 4.O-O Nge7 5.c3 a6" + }, + "B31a": { + "eco": "B31a", + "fen": "r1bqkbnr/pp1ppp1p/2n3p1/1Bp5/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 4", + "hash": 14893118225238363933, + "name": "Sicilian: Rossolimo, 3...g6" + }, + "B31b": { + "eco": "B31b", + "fen": "r1bqkbnr/pp1ppp1p/2n3p1/1Bp5/4P3/2N2N2/PPPP1PPP/R1BQK2R b KQkq - 1 4", + "hash": 3835348056603626948, + "name": "Sicilian: Rossolimo, 3...g6 4.Nc3" + }, + "B31c": { + "eco": "B31c", + "fen": "r1bqkbnr/pp1ppp1p/2B3p1/2p5/4P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 0 4", + "hash": 11493686495759064870, + "name": "Sicilian: Rossolimo, 3...g6 4.Bxc6" + }, + "B31d": { + "eco": "B31d", + "fen": "r1bqkbnr/pp2pp1p/2p3p1/2p5/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 5", + "hash": 12200784307308905817, + "name": "Sicilian: Rossolimo, 3...g6 4.Bxc6 dxc6" + }, + "B31e": { + "eco": "B31e", + "fen": "r1bqkbnr/pp2pp1p/2p3p1/2p5/4P3/3P1N2/PPP2PPP/RNBQK2R b KQkq - 0 5", + "hash": 573407933016997517, + "name": "Sicilian: Rossolimo, 3...g6 4.Bxc6 dxc6 5.d3" + }, + "B31f": { + "eco": "B31f", + "fen": "r1bqk1nr/pp2ppbp/2p3p1/2p5/4P3/3P1N1P/PPP2PP1/RNBQK2R b KQkq - 0 6", + "hash": 6898045072369679573, + "name": "Sicilian: Rossolimo, 3...g6 4.Bxc6 dxc6 5.d3 Bg7 6.h3" + }, + "B31g": { + "eco": "B31g", + "fen": "r1bqkbnr/pp1ppp1p/2n3p1/1Bp5/4P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 1 4", + "hash": 12743928185465951245, + "name": "Sicilian: Rossolimo, 3...g6 4.O-O" + }, + "B31h": { + "eco": "B31h", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/1Bp5/4P3/2P2N2/PP1P1PPP/RNBQ1RK1 b kq - 0 5", + "hash": 8556067452876656673, + "name": "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.c3" + }, + "B31i": { + "eco": "B31i", + "fen": "r1bqk1nr/pp1p1pbp/2n3p1/1Bp1p3/4P3/2P2N2/PP1P1PPP/RNBQ1RK1 w kq e6 0 6", + "hash": 18214045969540671511, + "name": "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.c3 e5" + }, + "B31j": { + "eco": "B31j", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/1Bp5/4P3/5N2/PPPP1PPP/RNBQR1K1 b kq - 3 5", + "hash": 9571191645666686131, + "name": "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.Re1" + }, + "B31k": { + "eco": "B31k", + "fen": "r1bqk2r/pp1pppbp/2n2np1/1Bp5/4P3/5N2/PPPP1PPP/RNBQR1K1 w kq - 4 6", + "hash": 16086155155558135077, + "name": "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.Re1 Nf6" + }, + "B31l": { + "eco": "B31l", + "fen": "r1bqk2r/pp1pppbp/2n2np1/1Bp5/4P3/2P2N2/PP1P1PPP/RNBQR1K1 b kq - 0 6", + "hash": 12242886577825282723, + "name": "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.Re1 Nf6 6.c3" + }, + "B31m": { + "eco": "B31m", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/1Bp5/4P3/2P2N1P/PP1P1PP1/RNBQR1K1 b - - 0 7", + "hash": 5457316507481955002, + "name": "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.Re1 Nf6 6.c3 O-O 7.h3" + }, + "B31n": { + "eco": "B31n", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/1Bp5/3PP3/2P2N2/PP3PPP/RNBQR1K1 b - d3 0 7", + "hash": 7384419494266715658, + "name": "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.Re1 Nf6 6.c3 O-O 7.d4" + }, + "B31o": { + "eco": "B31o", + "fen": "r1bqk1nr/pp1p1pbp/2n3p1/1Bp1p3/4P3/5N2/PPPP1PPP/RNBQR1K1 w kq e6 0 6", + "hash": 1057145649306520709, + "name": "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.Re1 e5" + }, + "B31p": { + "eco": "B31p", + "fen": "r1bqk1nr/pp1p1pbp/2n3p1/1Bp1p3/1P2P3/5N2/P1PP1PPP/RNBQR1K1 b kq b3 0 6", + "hash": 11844126108305170593, + "name": "Sicilian: Rossolimo, Gurgenidze Variation" + }, + "B31q": { + "eco": "B31q", + "fen": "r1bqk1nr/pp1p1pbp/2n3p1/1Bp1p3/4P3/2P2N2/PP1P1PPP/RNBQR1K1 b kq - 0 6", + "hash": 8678793570468217603, + "name": "Sicilian: Rossolimo, 3...g6 4.O-O Bg7 5.Re1 e5" + }, + "B32a": { + "eco": "B32a", + "fen": "r1bqkbnr/pp1ppppp/2n5/2p5/3PP3/5N2/PPP2PPP/RNBQKB1R b KQkq d3 0 3", + "hash": 15127961960427594647, + "name": "Sicilian: 2...Nc6 3.d4" + }, + "B32b": { + "eco": "B32b", + "fen": "r1bqkbnr/pp1ppppp/2n5/8/3pP3/5N2/PPP2PPP/RNBQKB1R w KQkq - 0 4", + "hash": 10299709760951077457, + "name": "Sicilian: 2...Nc6 3.d4 cxd4" + }, + "B32c": { + "eco": "B32c", + "fen": "r1bqkbnr/pp1ppppp/2n5/8/3NP3/8/PPP2PPP/RNBQKB1R b KQkq - 0 4", + "hash": 16824241115991201919, + "name": "Sicilian: Open, 2...Nc6" + }, + "B32d": { + "eco": "B32d", + "fen": "r1bqkbnr/pp2pppp/2np4/8/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 0 5", + "hash": 15042339731861213458, + "name": "Sicilian: Open, 2...Nc6, 4...d6" + }, + "B32e": { + "eco": "B32e", + "fen": "r1b1kbnr/pp1ppppp/1qn5/8/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 1 5", + "hash": 3351883736397811365, + "name": "Sicilian: Open, 2...Nc6, 4...Qb6" + }, + "B32f": { + "eco": "B32f", + "fen": "r1b1kbnr/ppqppppp/2n5/8/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 1 5", + "hash": 17250063146268628862, + "name": "Sicilian: Flohr Variation" + }, + "B32g": { + "eco": "B32g", + "fen": "r1b1kbnr/ppqppppp/2n5/1N6/4P3/8/PPP2PPP/RNBQKB1R b KQkq - 2 5", + "hash": 1877547377619250472, + "name": "Sicilian: Flohr, 5.Nb5" + }, + "B32h": { + "eco": "B32h", + "fen": "r1bqkbnr/pp2pppp/2n5/3p4/3NP3/8/PPP2PPP/RNBQKB1R w KQkq d6 0 5", + "hash": 7787168218719262297, + "name": "Sicilian: 2..Nc6, Nimzowitsch Variation" + }, + "B32i": { + "eco": "B32i", + "fen": "r1bqkbnr/pp1p1ppp/2n5/4p3/3NP3/8/PPP2PPP/RNBQKB1R w KQkq e6 0 5", + "hash": 7134755565314023497, + "name": "Sicilian: Lowenthal" + }, + "B32j": { + "eco": "B32j", + "fen": "r1bqkbnr/pp1p1ppp/2n5/1N2p3/4P3/8/PPP2PPP/RNBQKB1R b KQkq - 1 5", + "hash": 10838286404133886495, + "name": "Sicilian: Lowenthal, 5.Nb5" + }, + "B32k": { + "eco": "B32k", + "fen": "r1bqkbnr/1p1p1ppp/p1n5/1N2p3/4P3/8/PPP2PPP/RNBQKB1R w KQkq - 0 6", + "hash": 4944571944586994371, + "name": "Sicilian: Lowenthal, 5...a6" + }, + "B32l": { + "eco": "B32l", + "fen": "r1b1k1nr/1p1p1ppp/p1n2Q2/4p3/4P3/8/PPP2PPP/RNB1KB1R b KQkq - 0 8", + "hash": 16308042795521116835, + "name": "Sicilian: Lowenthal, 5...a6, Queenswap" + }, + "B32m": { + "eco": "B32m", + "fen": "r1b1k1nr/1p1p1ppp/p1n2q2/4p3/4P3/8/PPP2PPP/RNBQKB1R b KQkq - 2 8", + "hash": 12766377868090850138, + "name": "Sicilian: Lowenthal, 5...a6, 8.Qd1" + }, + "B32n": { + "eco": "B32n", + "fen": "r1bqkbnr/pp3ppp/2np4/1N2p3/4P3/8/PPP2PPP/RNBQKB1R w KQkq - 0 6", + "hash": 12669683955602084722, + "name": "Sicilian: Lowenthal, Kalashnikov" + }, + "B32o": { + "eco": "B32o", + "fen": "r1bqkbnr/pp3ppp/2np4/1N2p3/P3P3/8/1PP2PPP/RNBQKB1R b KQkq a3 0 6", + "hash": 14130814048093275836, + "name": "Sicilian: Lowenthal, Kalashnikov, 6.a4" + }, + "B32p": { + "eco": "B32p", + "fen": "r1bqkbnr/pp3ppp/2np4/1N2p3/4P3/2N5/PPP2PPP/R1BQKB1R b KQkq - 1 6", + "hash": 6072218769537782187, + "name": "Sicilian: Lowenthal, Kalashnikov, 6.N1c3" + }, + "B32q": { + "eco": "B32q", + "fen": "r1bqkbnr/5ppp/p1np4/1p2p3/4P3/N1N5/PPP2PPP/R1BQKB1R w KQkq b6 0 8", + "hash": 17154424962603626407, + "name": "Sicilian: Lowenthal, Kalashnikov, 6.N1c3 a6 7.Na3 b5" + }, + "B32r": { + "eco": "B32r", + "fen": "r1bqkb1r/4nppp/p1np4/1p1Np3/4P3/N7/PPP2PPP/R1BQKB1R w KQkq - 2 9", + "hash": 1173979403644689231, + "name": "Sicilian: Lowenthal, Kalashnikov, 6.N1c3 a6 7.Na3 b5 8.Nd5 Nge7" + }, + "B32s": { + "eco": "B32s", + "fen": "r1bqkbnr/pp3ppp/2np4/1N2p3/2P1P3/8/PP3PPP/RNBQKB1R b KQkq c3 0 6", + "hash": 2589672358233995381, + "name": "Sicilian: Lowenthal, Kalashnikov, 6.c4" + }, + "B32t": { + "eco": "B32t", + "fen": "r1bqk1nr/pp2bppp/2np4/1N2p3/2P1P3/8/PP3PPP/RNBQKB1R w KQkq - 1 7", + "hash": 3980107460374746340, + "name": "Sicilian: Lowenthal, Kalashnikov, 6.c4 Be7" + }, + "B32u": { + "eco": "B32u", + "fen": "r1bqk1nr/pp2bppp/2np4/1N2p3/2P1P3/8/PP2BPPP/RNBQK2R b KQkq - 2 7", + "hash": 4953024304315997767, + "name": "Sicilian: Lowenthal, Kalashnikov, 6.c4 Be7 7.Be2" + }, + "B32v": { + "eco": "B32v", + "fen": "r1bqk1nr/pp2bppp/2np4/1N2p3/2P1P3/2N5/PP3PPP/R1BQKB1R b KQkq - 2 7", + "hash": 14747940808672302653, + "name": "Sicilian: Lowenthal, Kalashnikov, 6.c4 Be7 7.N1c3" + }, + "B32w": { + "eco": "B32w", + "fen": "r2qk1nr/1p2bppp/p1npb3/4p3/2P1P3/N1N5/PP3PPP/R1BQKB1R w KQkq - 2 9", + "hash": 4774895977539169796, + "name": "Sicilian: Lowenthal, Kalashnikov, Main Line" + }, + "B32x": { + "eco": "B32x", + "fen": "r2qk1nr/1p2bppp/p1npb3/4p3/2P1P3/2N5/PPN2PPP/R1BQKB1R b KQkq - 3 9", + "hash": 16911723330434627797, + "name": "Sicilian: Lowenthal, Kalashnikov, Main Line, 9.Nc2" + }, + "B32y": { + "eco": "B32y", + "fen": "r2qk1nr/1p2bppp/p1npb3/4p3/2P1P3/N1N5/PP2BPPP/R1BQK2R b KQkq - 3 9", + "hash": 3585803662834574503, + "name": "Sicilian: Lowenthal, Kalashnikov, Main Line, 9.Be2" + }, + "B33a": { + "eco": "B33a", + "fen": "r1bqkb1r/pp1ppppp/2n2n2/8/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 1 5", + "hash": 12868335398863444457, + "name": "Sicilian: Open, 2...Nc6" + }, + "B33b": { + "eco": "B33b", + "fen": "r1b1kb1r/pp1ppppp/1qn2n2/8/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 3 6", + "hash": 10303501648197996010, + "name": "Sicilian: Open, 2...Nc6, 5...Qb6" + }, + "B33c": { + "eco": "B33c", + "fen": "r1b1kb1r/pp1p1ppp/1qn1pn2/8/4P3/1NNB4/PPP2PPP/R1BQK2R b KQkq - 1 7", + "hash": 4176542843831834881, + "name": "Sicilian: Open, 2...Nc6, 5...Qb6 6.Nb3 e6 7.Bd3" + }, + "B33d": { + "eco": "B33d", + "fen": "r1bqkb1r/pp1p1ppp/2n2n2/4p3/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq e6 0 6", + "hash": 14085731545093530374, + "name": "Sicilian: Pelikan/Sveshnikov" + }, + "B33e": { + "eco": "B33e", + "fen": "r1bqkb1r/pp1p1ppp/2n2n2/1N2p3/4P3/2N5/PPP2PPP/R1BQKB1R b KQkq - 1 6", + "hash": 3895746001243232592, + "name": "Sicilian: Pelikan/Sveshnikov, 6.Nbd5" + }, + "B33f": { + "eco": "B33f", + "fen": "r1bqkb1r/pp3ppp/2np1n2/1N2p3/4P3/2N5/PPP2PPP/R1BQKB1R w KQkq - 0 7", + "hash": 1128976585881817149, + "name": "Sicilian: Pelikan/Sveshnikov, Pelikan Variation" + }, + "B33g": { + "eco": "B33g", + "fen": "r1bqkb1r/pp3ppp/2np1n2/1N2p3/P3P3/2N5/1PP2PPP/R1BQKB1R b KQkq a3 0 7", + "hash": 7233784672141690355, + "name": "Sicilian: Pelikan, 7.a4" + }, + "B33h": { + "eco": "B33h", + "fen": "r1bqkb1r/pp3ppp/2np1n2/1N1Np3/4P3/8/PPP2PPP/R1BQKB1R b KQkq - 1 7", + "hash": 14969754146204905320, + "name": "Sicilian: Pelikan, 7.Nd5" + }, + "B33i": { + "eco": "B33i", + "fen": "r1bqkb1r/pp3ppp/2np1n2/1N2p1B1/4P3/2N5/PPP2PPP/R2QKB1R b KQkq - 1 7", + "hash": 14551333872688352245, + "name": "Sicilian: Pelikan, 7.Bg5" + }, + "B33j": { + "eco": "B33j", + "fen": "r1bqkb1r/1p3ppp/p1np1B2/1N2p3/4P3/2N5/PPP2PPP/R2QKB1R b KQkq - 0 8", + "hash": 13706777130208882121, + "name": "Sicilian: Pelikan, 7.Bg5 a6 8.Bxf6" + }, + "B33k": { + "eco": "B33k", + "fen": "r1bqkb1r/1p3ppp/p1np1n2/4p1B1/4P3/N1N5/PPP2PPP/R2QKB1R b KQkq - 1 8", + "hash": 1414353806124648644, + "name": "Sicilian: Pelikan, 7.Bg5 a6 8.Na3" + }, + "B33l": { + "eco": "B33l", + "fen": "r1bqkb1r/5ppp/p1np1n2/1p2p1B1/4P3/N1N5/PPP2PPP/R2QKB1R w KQkq b6 0 9", + "hash": 8332962638114174457, + "name": "Sicilian: Pelikan, Chelyabinsk Variation" + }, + "B33m": { + "eco": "B33m", + "fen": "r1bqk2r/4bppp/p1np1n2/1p1Np1B1/4P3/N7/PPP2PPP/R2QKB1R w KQkq - 2 10", + "hash": 12068939591307978301, + "name": "Sicilian: Pelikan, Chelyabinsk, 9.Nd5 Be7" + }, + "B33n": { + "eco": "B33n", + "fen": "r1bqk2r/5ppp/p1np1b2/1p1Np3/4P3/N1P5/PP3PPP/R2QKB1R b KQkq - 0 11", + "hash": 6847759117699187927, + "name": "Sicilian: Pelikan, Chelyabinsk, 9.Nd5 Be7, 11.c3" + }, + "B33o": { + "eco": "B33o", + "fen": "r1bq1rk1/5ppp/p1np1b2/1p1Np3/4P3/N1P5/PP3PPP/R2QKB1R w KQ - 1 12", + "hash": 6170156980124970300, + "name": "Sicilian: Pelikan, Chelyabinsk, 9.Nd5 Be7, 11.c3 O-O" + }, + "B33p": { + "eco": "B33p", + "fen": "r1bqk2r/5ppp/p1np4/1p1Np1b1/4P3/N1P5/PP3PPP/R2QKB1R w KQkq - 1 12", + "hash": 8067388175342366683, + "name": "Sicilian: Pelikan, Chelyabinsk, 9.Nd5 Be7, 11.c3 Bg5" + }, + "B33q": { + "eco": "B33q", + "fen": "r1bq1rk1/5ppp/p1np4/1p1Np1b1/4P3/2P5/PPN2PPP/R2QKB1R w KQ - 3 13", + "hash": 14820404269038571745, + "name": "Sicilian: Pelikan, Chelyabinsk, 9.Nd5 Be7, 11.c3 O-O 12.Nc2 Bg5" + }, + "B33r": { + "eco": "B33r", + "fen": "r1bq1rk1/5ppp/p1np4/1p1Np1b1/P3P3/2P5/1PN2PPP/R2QKB1R b KQ a3 0 13", + "hash": 11990229024252740911, + "name": "Sicilian: Pelikan, Chelyabinsk, 9.Nd5 Be7, 11.c3 O-O 12.Nc2 Bg5 13.a4" + }, + "B33s": { + "eco": "B33s", + "fen": "r1bqkb1r/5ppp/p1np1B2/1p2p3/4P3/N1N5/PPP2PPP/R2QKB1R b KQkq - 0 9", + "hash": 15464139078856600345, + "name": "Sicilian: Pelikan, Chelyabinsk, 9.Bxf6" + }, + "B33t": { + "eco": "B33t", + "fen": "r1bqk2r/5pbp/p1np1p2/1p1Np3/4P3/N2B4/PPP2PPP/R2QK2R b KQkq - 3 11", + "hash": 2189607523839573116, + "name": "Sicilian: Pelikan, Chelyabinsk, 9.Bxf6 gxf6 10.Nd5 Bg7 11.Bd3" + }, + "B33u": { + "eco": "B33u", + "fen": "r1bqkb1r/5p1p/p1np4/1p1Npp2/4P3/N7/PPP2PPP/R2QKB1R w KQkq - 0 11", + "hash": 6574927938774977037, + "name": "Sicilian: Pelikan, Sveshnikov Variation" + }, + "B33v": { + "eco": "B33v", + "fen": "r1bqkb1r/5p1p/p1np4/1p1Npp2/4P3/N1P5/PP3PPP/R2QKB1R b KQkq - 0 11", + "hash": 3306819184390391179, + "name": "Sicilian: Pelikan, Sveshnikov, 11.c3" + }, + "B33w": { + "eco": "B33w", + "fen": "r2q1rk1/5pbp/p1np4/1p1Npb2/8/2P5/PPN2PPP/R2QKB1R w KQ - 2 14", + "hash": 14600770791043161570, + "name": "Sicilian: Pelikan, Sveshnikov, 11.c3 Bg7 12.exf5 Bxf5 13.Nc2 O-O" + }, + "B33x": { + "eco": "B33x", + "fen": "r1bqkb1r/5p1p/p1np4/1p1Npp2/4P3/N2B4/PPP2PPP/R2QK2R b KQkq - 1 11", + "hash": 1023293197464995966, + "name": "Sicilian: Pelikan, Sveshnikov, 11.Bd3" + }, + "B33y": { + "eco": "B33y", + "fen": "r2qkb1r/5p1p/p1npb3/1p1Npp2/4P3/N2B4/PPP2PPP/R2Q1RK1 b kq - 3 12", + "hash": 2665742155942668390, + "name": "Sicilian: Pelikan, Sveshnikov, 11.Bd3 Be6 12.O-O" + }, + "B34a": { + "eco": "B34a", + "fen": "r1bqkbnr/pp1ppp1p/2n3p1/8/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 0 5", + "hash": 58517604370926132, + "name": "Sicilian: Accelerated Fianchetto" + }, + "B34b": { + "eco": "B34b", + "fen": "r1bqkbnr/pp1ppp1p/2n3p1/8/2BNP3/8/PPP2PPP/RNBQK2R b KQkq - 1 5", + "hash": 7168694159591677074, + "name": "Sicilian: Accelerated Fianchetto, 5.Bc4" + }, + "B34c": { + "eco": "B34c", + "fen": "r1bqkbnr/pp1ppp1p/2N3p1/8/4P3/8/PPP2PPP/RNBQKB1R b KQkq - 0 5", + "hash": 5498148765782426369, + "name": "Sicilian: Accelerated Fianchetto, Exchange Variation" + }, + "B34d": { + "eco": "B34d", + "fen": "r1bqkbnr/pp1ppp1p/2n3p1/8/3NP3/8/PPP1BPPP/RNBQK2R b KQkq - 1 5", + "hash": 8308972582502629527, + "name": "Sicilian: Accelerated Fianchetto, 5.Be2" + }, + "B34e": { + "eco": "B34e", + "fen": "r1bqkbnr/pp1ppp1p/2n3p1/8/3NP3/4B3/PPP2PPP/RN1QKB1R b KQkq - 1 5", + "hash": 8342740875957817786, + "name": "Sicilian: Accelerated Fianchetto, 5.Be3" + }, + "B34f": { + "eco": "B34f", + "fen": "r1bqkbnr/pp1ppp1p/2n3p1/8/3NP3/2N5/PPP2PPP/R1BQKB1R b KQkq - 1 5", + "hash": 18111504978769103085, + "name": "Sicilian: Accelerated Fianchetto, Modern Variation" + }, + "B34g": { + "eco": "B34g", + "fen": "r1bqkb1r/pp1ppp1p/2n2np1/8/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 2 6", + "hash": 11580664648599996795, + "name": "Sicilian: Accelerated Fianchetto, Modern, 5...Nf6" + }, + "B34h": { + "eco": "B34h", + "fen": "r1bqkb1r/pp1ppp1p/2N2np1/8/4P3/2N5/PPP2PPP/R1BQKB1R b KQkq - 0 6", + "hash": 17020358064587276366, + "name": "Sicilian: Accelerated Fianchetto, Modern, 5...Nf6 6.Nxc6" + }, + "B34i": { + "eco": "B34i", + "fen": "r1bqkb1r/p2ppp1p/2p2np1/8/4P3/2N5/PPP2PPP/R1BQKB1R w KQkq - 0 7", + "hash": 3576611462334204869, + "name": "Sicilian: Accelerated Fianchetto, Modern, 5...Nf6 6.Nxc6 bxc6" + }, + "B34j": { + "eco": "B34j", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/8/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 2 6", + "hash": 5468707397290132295, + "name": "Sicilian: Accelerated Fianchetto, Modern, 5...Bg7" + }, + "B34k": { + "eco": "B34k", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/8/4P3/2N5/PPP1NPPP/R1BQKB1R b KQkq - 3 6", + "hash": 18033359943013390155, + "name": "Sicilian: Accelerated Fianchetto, Modern, 6.Nde2" + }, + "B34l": { + "eco": "B34l", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/8/4P3/1NN5/PPP2PPP/R1BQKB1R b KQkq - 3 6", + "hash": 16111056240126215565, + "name": "Sicilian: Accelerated Fianchetto, Modern, 6.Nb3" + }, + "B34m": { + "eco": "B34m", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/8/3NP3/2N1B3/PPP2PPP/R2QKB1R b KQkq - 3 6", + "hash": 4101789200867498185, + "name": "Sicilian: Accelerated Fianchetto, Modern, 6.Be3" + }, + "B34n": { + "eco": "B34n", + "fen": "r1bqk1nr/pp2ppbp/2np2p1/8/3NP3/2N1B3/PPP2PPP/R2QKB1R w KQkq - 0 7", + "hash": 96526031703626148, + "name": "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 d6" + }, + "B34o": { + "eco": "B34o", + "fen": "r1bqk1nr/pp2ppbp/2np2p1/8/3NP3/2N1B3/PPPQ1PPP/R3KB1R b KQkq - 1 7", + "hash": 2976494962020716036, + "name": "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 d6 7.Qd2" + }, + "B34p": { + "eco": "B34p", + "fen": "r1bqk2r/pp1pppbp/2n2np1/8/3NP3/2N1B3/PPP2PPP/R2QKB1R w KQkq - 4 7", + "hash": 7134352164050688351, + "name": "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6" + }, + "B34q": { + "eco": "B34q", + "fen": "r1bqk2r/pp1pppbp/2n2np1/8/3NP3/2N1BP2/PPP3PP/R2QKB1R b KQkq - 0 7", + "hash": 987318903448090158, + "name": "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6 7.f3" + }, + "B34r": { + "eco": "B34r", + "fen": "r1bqk2r/pp1pppbp/2N2np1/8/4P3/2N1B3/PPP2PPP/R2QKB1R b KQkq - 0 7", + "hash": 3423003040395022442, + "name": "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6 7.Nxc6" + }, + "B34s": { + "eco": "B34s", + "fen": "r1bqk1nr/p2pppbp/2p3p1/4P3/8/2N1B3/PPP2PPP/R2QKB1R w KQkq - 1 9", + "hash": 14447839517217717267, + "name": "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6 7.Nxc6 bxc6 8.e5 Ng8" + }, + "B34t": { + "eco": "B34t", + "fen": "r1bqk2r/pp1pppbp/2n2np1/8/3NP3/2N1B3/PPP1BPPP/R2QK2R b KQkq - 5 7", + "hash": 1189738133548340220, + "name": "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6 7.Be2" + }, + "B34u": { + "eco": "B34u", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/8/3NP3/2N1B3/PPP1BPPP/R2QK2R w KQ - 6 8", + "hash": 1885355887216523799, + "name": "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6 7.Be2 O-O" + }, + "B34v": { + "eco": "B34v", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/8/3NP3/2N1B3/PPP1BPPP/R2Q1RK1 b - - 7 8", + "hash": 7232598503032660231, + "name": "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6 7.Be2 O-O 8.O-O" + }, + "B34w": { + "eco": "B34w", + "fen": "r1bq1rk1/pp2ppbp/2n2np1/3P4/3N4/2N1B3/PPP1BPPP/R2Q1RK1 b - - 0 9", + "hash": 14333394510081666343, + "name": "Sicilian: Accelerated Fianchetto, Modern, 6.Be3 Nf6 7.Be2 O-O 8.O-O d5 9.exd5" + }, + "B35a": { + "eco": "B35a", + "fen": "r1bqk2r/pp1pppbp/2n2np1/8/2BNP3/2N1B3/PPP2PPP/R2QK2R b KQkq - 5 7", + "hash": 50097418745942009, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4" + }, + "B35b": { + "eco": "B35b", + "fen": "r1b1k2r/pp1pppbp/2n2np1/q7/2BNP3/2N1B3/PPP2PPP/R2QK2R w KQkq - 6 8", + "hash": 15691225057751084662, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 Qa5" + }, + "B35c": { + "eco": "B35c", + "fen": "r1b2rk1/pp1pppbp/2n2np1/q7/2BNP3/2N1B3/PPP2PPP/R2Q1RK1 w - - 8 9", + "hash": 12474962782688386189, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 Qa5 8.O-O O-O" + }, + "B35d": { + "eco": "B35d", + "fen": "r1b2rk1/pp1pppbp/2n2np1/q7/3NP3/1BN1B3/PPP2PPP/R2Q1RK1 b - - 9 9", + "hash": 7213615057009790057, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 Qa5 8.O-O O-O 9.Bb3" + }, + "B35e": { + "eco": "B35e", + "fen": "r4rk1/pp1bppbp/2np1np1/q7/3NPP2/1BN1B2P/PPP3P1/R2Q1RK1 b - f3 0 11", + "hash": 12287262532110524750, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 Qa5 8.O-O O-O 9.Bb3 d6 10.h3 Bd7 11.f4" + }, + "B35f": { + "eco": "B35f", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/8/2BNP3/2N1B3/PPP2PPP/R2QK2R w KQ - 6 8", + "hash": 727637972934845970, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O" + }, + "B35g": { + "eco": "B35g", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/8/2BNP3/2N1BP2/PPP3PP/R2QK2R b KQ - 0 8", + "hash": 7253311976914749795, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.f3" + }, + "B35h": { + "eco": "B35h", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/8/2BNP3/2N1B3/PPP2PPP/R2Q1RK1 b - - 7 8", + "hash": 8389200971391974658, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.O-O" + }, + "B35i": { + "eco": "B35i", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/8/3NP3/1BN1B3/PPP2PPP/R2QK2R b KQ - 7 8", + "hash": 14059401046828758774, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3" + }, + "B35j": { + "eco": "B35j", + "fen": "r1bq1rk1/pp1pppbp/2n3p1/8/3NP1n1/1BN1B3/PPP2PPP/R2QK2R w KQ - 8 9", + "hash": 6790968251702650778, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 Ng4" + }, + "B35k": { + "eco": "B35k", + "fen": "r1b2rk1/pp1pppbp/2n2np1/q7/3NP3/1BN1B3/PPP2PPP/R2QK2R w KQ - 8 9", + "hash": 1904621976547858297, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 Qa5" + }, + "B35l": { + "eco": "B35l", + "fen": "r1bq1rk1/1p1pppbp/2n2np1/p7/3NP3/1BN1B3/PPP2PPP/R2QK2R w KQ a6 0 9", + "hash": 4974141136729258598, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 a5" + }, + "B35m": { + "eco": "B35m", + "fen": "r1bq1rk1/1p1pppbp/2n2np1/p7/P2NP3/1BN1B3/1PP2PPP/R2QK2R b KQ a3 0 9", + "hash": 3372859593317445544, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 a5 9.a4" + }, + "B35n": { + "eco": "B35n", + "fen": "r1bq1rk1/1p1pppbp/2n2np1/p7/3NP3/1BN1BP2/PPP3PP/R2QK2R b KQ - 0 9", + "hash": 3149798670643057943, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 a5 9.f3" + }, + "B35o": { + "eco": "B35o", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/8/3NP3/1BN1B3/PPP2PPP/R2QK2R w KQ - 0 9", + "hash": 18061563859482967963, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 d6" + }, + "B35p": { + "eco": "B35p", + "fen": "r2q1rk1/pp1bppbp/2np1np1/8/3NP3/1BN1B2P/PPP2PP1/R2QK2R w KQ - 1 10", + "hash": 17335959491786237528, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 d6 9.h3 Bd7" + }, + "B35q": { + "eco": "B35q", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/8/3NP3/1BN1BP2/PPP3PP/R2QK2R b KQ - 0 9", + "hash": 10670846742649966826, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 d6 9.f3" + }, + "B35r": { + "eco": "B35r", + "fen": "r2q1rk1/pp1bppbp/2np1np1/8/3NP3/1BN1BP2/PPP3PP/R2QK2R w KQ - 1 10", + "hash": 8563463582033101019, + "name": "Sicilian: Accelerated Fianchetto, Modern, 7.Bc4 O-O 8.Bb3 d6 9.f3 Bd7" + }, + "B36a": { + "eco": "B36a", + "fen": "r1bqkbnr/pp1ppp1p/2n3p1/8/2PNP3/8/PP3PPP/RNBQKB1R b KQkq c3 0 5", + "hash": 10154625774945919283, + "name": "Sicilian: Maroczy Bind" + }, + "B36b": { + "eco": "B36b", + "fen": "r1bqkbnr/pp2pp1p/2np2p1/8/2PNP3/8/PP3PPP/RNBQKB1R w KQkq - 0 6", + "hash": 13066891089507854430, + "name": "Sicilian: Maroczy Bind, 5...d6" + }, + "B36c": { + "eco": "B36c", + "fen": "r1bqkb1r/pp1ppp1p/2n2np1/8/2PNP3/8/PP3PPP/RNBQKB1R w KQkq - 1 6", + "hash": 15493032128271556773, + "name": "Sicilian: Maroczy Bind, 5...Nf6" + }, + "B36d": { + "eco": "B36d", + "fen": "r1bqkb1r/pp1ppp1p/2n2np1/8/2PNP3/2N5/PP3PPP/R1BQKB1R b KQkq - 2 6", + "hash": 3212568468569563772, + "name": "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3" + }, + "B36e": { + "eco": "B36e", + "fen": "r1bqkb1r/pp1ppp1p/5np1/8/2PnP3/2N5/PP3PPP/R1BQKB1R w KQkq - 0 7", + "hash": 9364905048674704191, + "name": "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 Nxd4" + }, + "B36f": { + "eco": "B36f", + "fen": "r1bqkb1r/pp2pp1p/3p1np1/8/2PQP3/2N5/PP3PPP/R1B1KB1R w KQkq - 0 8", + "hash": 5173852007167802458, + "name": "Sicilian: Maroczy Bind, Gurgenidze Variation" + }, + "B36g": { + "eco": "B36g", + "fen": "r1bqkb1r/pp2pp1p/2np1np1/8/2PNP3/2N5/PP3PPP/R1BQKB1R w KQkq - 0 7", + "hash": 1526650323757558545, + "name": "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6" + }, + "B36h": { + "eco": "B36h", + "fen": "r1bqkb1r/pp2pp1p/2np1np1/8/2PNP3/2N5/PP2BPPP/R1BQK2R b KQkq - 1 7", + "hash": 7399207035103388082, + "name": "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2" + }, + "B36i": { + "eco": "B36i", + "fen": "r1bqkb1r/pp2pp1p/3p1np1/8/2PnP3/2N5/PP2BPPP/R1BQK2R w KQkq - 0 8", + "hash": 14685330321106901233, + "name": "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4" + }, + "B36j": { + "eco": "B36j", + "fen": "r1bqk2r/pp2ppbp/3p1np1/8/2PQP3/2N5/PP2BPPP/R1B2RK1 b kq - 2 9", + "hash": 18051820969587959363, + "name": "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7 9.O-O" + }, + "B36k": { + "eco": "B36k", + "fen": "r1bqk2r/pp2ppbp/3p1np1/6B1/2PQP3/2N5/PP2BPPP/R3K2R b KQkq - 2 9", + "hash": 4804179192885667483, + "name": "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7 9.Bg5" + }, + "B36l": { + "eco": "B36l", + "fen": "r1bq1rk1/pp2ppbp/3p1np1/6B1/2PQP3/2N5/PP2BPPP/R3K2R w KQ - 3 10", + "hash": 5189046387603148656, + "name": "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7 9.Bg5 O-O" + }, + "B36m": { + "eco": "B36m", + "fen": "r1bq1rk1/pp2ppbp/3p1np1/6B1/2P1P3/2N5/PP1QBPPP/R3K2R b KQ - 4 10", + "hash": 18197229163754721285, + "name": "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7 9.Bg5 O-O 10.Qd2" + }, + "B36n": { + "eco": "B36n", + "fen": "r1bqk2r/pp2ppbp/3p1np1/8/2PQP3/2N1B3/PP2BPPP/R3K2R b KQkq - 2 9", + "hash": 17868369481914722013, + "name": "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7 9.Be3" + }, + "B36o": { + "eco": "B36o", + "fen": "r1bq1rk1/pp2ppbp/3p1np1/8/2P1P3/2N1B3/PP1QBPPP/R3K2R b KQ - 4 10", + "hash": 5321961015951904835, + "name": "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7 9.Be3 O-O 10.Qd2" + }, + "B36p": { + "eco": "B36p", + "fen": "r2q1rk1/pp2ppbp/3pbnp1/8/2P1P3/2N1B3/PP1QBPPP/R3K2R w KQ - 5 11", + "hash": 2117806233871133515, + "name": "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7 9.Be3 O-O 10.Qd2 Be6" + }, + "B36q": { + "eco": "B36q", + "fen": "r2q1rk1/pp2ppbp/3pbnp1/8/2P1P3/2N1B3/PP1QBPPP/R4RK1 b - - 6 11", + "hash": 7140051184127897691, + "name": "Sicilian: Maroczy Bind, 5...Nf6 6.Nc3 d6 7.Be2 Nxd4 8.Qxd4 Bg7 9.Be3 O-O 10.Qd2 Be6 11.O-O" + }, + "B37a": { + "eco": "B37a", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/8/2PNP3/8/PP3PPP/RNBQKB1R w KQkq - 1 6", + "hash": 4346052675426232985, + "name": "Sicilian: Maroczy Bind, 5...Bg7" + }, + "B37b": { + "eco": "B37b", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/8/2P1P3/1N6/PP3PPP/RNBQKB1R b KQkq - 2 6", + "hash": 12115104990326778963, + "name": "Sicilian: Maroczy Bind, 6.Nb3" + }, + "B37c": { + "eco": "B37c", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/8/2P1P3/8/PPN2PPP/RNBQKB1R b KQkq - 2 6", + "hash": 7596581259446631923, + "name": "Sicilian: Maroczy Bind, 6.Nc2" + }, + "B37d": { + "eco": "B37d", + "fen": "r1bqk1nr/pp2ppbp/2np2p1/8/2P1P3/8/PPN2PPP/RNBQKB1R w KQkq - 0 7", + "hash": 5825102695321367710, + "name": "Sicilian: Maroczy Bind, 6.Nc2 d6" + }, + "B37e": { + "eco": "B37e", + "fen": "r1bqk1nr/pp2ppbp/2np2p1/8/2P1P3/8/PPN1BPPP/RNBQK2R b KQkq - 1 7", + "hash": 2546345719798283837, + "name": "Sicilian: Maroczy Bind, 6.Nc2 d6 7.Be2" + }, + "B37f": { + "eco": "B37f", + "fen": "r1bqk2r/pp2ppbp/2np2pn/8/2P1P3/8/PPN1BPPP/RNBQK2R w KQkq - 2 8", + "hash": 11734955749324608324, + "name": "Sicilian: Maroczy Bind, Simagin Variation" + }, + "B37g": { + "eco": "B37g", + "fen": "r1bqk2r/pp1pppbp/2n2np1/8/2P1P3/8/PPN2PPP/RNBQKB1R w KQkq - 3 7", + "hash": 3639557887657704549, + "name": "Sicilian: Maroczy Bind, 6.Nc2 Nf6" + }, + "B37h": { + "eco": "B37h", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/8/2P1P3/2N5/PPN2PPP/R1BQKB1R w KQ - 5 8", + "hash": 14104635803182667607, + "name": "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 O-O" + }, + "B37i": { + "eco": "B37i", + "fen": "r1bqk2r/pp2ppbp/2np1np1/8/2P1P3/2N5/PPN2PPP/R1BQKB1R w KQkq - 0 8", + "hash": 17343292202298914769, + "name": "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6" + }, + "B37j": { + "eco": "B37j", + "fen": "r1bqk2r/pp1nppbp/2np2p1/8/2P1P3/2N5/PPN1BPPP/R1BQK2R w KQkq - 2 9", + "hash": 8820370243869045895, + "name": "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2 Nd7" + }, + "B37k": { + "eco": "B37k", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/8/2P1P3/2N5/PPN1BPPP/R1BQK2R w KQ - 2 9", + "hash": 9910080890366104729, + "name": "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2 O-O" + }, + "B37l": { + "eco": "B37l", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/8/2P1P3/2N5/PPN1BPPP/R1BQ1RK1 b - - 3 9", + "hash": 17866577022887350153, + "name": "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2 O-O 9.O-O" + }, + "B37m": { + "eco": "B37m", + "fen": "r2q1rk1/pp2ppbp/2npbnp1/8/2P1P3/2N5/PPN1BPPP/R1BQ1RK1 w - - 4 10", + "hash": 11766296074353783937, + "name": "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2 O-O 9.O-O Be6" + }, + "B37n": { + "eco": "B37n", + "fen": "r1bq1rk1/pp1nppbp/2np2p1/8/2P1P3/2N5/PPN1BPPP/R1BQ1RK1 w - - 4 10", + "hash": 1059989143508436604, + "name": "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2 O-O 9.O-O Nd7" + }, + "B37o": { + "eco": "B37o", + "fen": "r1bq1rk1/pp1nppbp/2np2p1/8/2P1P3/2N5/PPNBBPPP/R2Q1RK1 b - - 5 10", + "hash": 2826162934545526136, + "name": "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2 O-O 9.O-O Nd7 10.Bd2" + }, + "B37p": { + "eco": "B37p", + "fen": "r1bq1rk1/pp2ppbp/2np2p1/2n5/2P1P3/2N5/PPNBBPPP/R2Q1RK1 w - - 6 11", + "hash": 540033940557031474, + "name": "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2 O-O 9.O-O Nd7 10.Bd2 Nc5" + }, + "B37q": { + "eco": "B37q", + "fen": "r1bq1rk1/pp2ppbp/2np2p1/2n5/1PP1P3/2N5/P1NBBPPP/R2Q1RK1 b - b3 0 11", + "hash": 12505339124090668054, + "name": "Sicilian: Maroczy Bind, 6.Nc2 Nf6 7.Nc3 d6 8.Be2 O-O 9.O-O Nd7 10.Bd2 Nc5 11.b4" + }, + "B38a": { + "eco": "B38a", + "fen": "r1bqk1nr/pp1pppbp/2n3p1/8/2PNP3/4B3/PP3PPP/RN1QKB1R b KQkq - 2 6", + "hash": 5717596860866146583, + "name": "Sicilian: Maroczy Bind, 6.Be3" + }, + "B38b": { + "eco": "B38b", + "fen": "r1bqk2r/pp1pppbp/2n3pn/8/2PNP3/4B3/PP3PPP/RN1QKB1R w KQkq - 3 7", + "hash": 14903646923521186926, + "name": "Sicilian: Maroczy Bind, 6.Be3 Nh6" + }, + "B38c": { + "eco": "B38c", + "fen": "r1bqk1nr/pp2ppbp/2np2p1/8/2PNP3/4B3/PP3PPP/RN1QKB1R w KQkq - 0 7", + "hash": 8566526455828772986, + "name": "Sicilian: Maroczy Bind, 6.Be3 d6" + }, + "B38d": { + "eco": "B38d", + "fen": "r1bqk2r/pp1pppbp/2n2np1/8/2PNP3/4B3/PP3PPP/RN1QKB1R w KQkq - 3 7", + "hash": 1492601297909248129, + "name": "Sicilian: Maroczy Bind, 6.Be3 Nf6" + }, + "B38e": { + "eco": "B38e", + "fen": "r1bqk2r/pp2ppbp/2np1np1/8/2PNP3/2N1B3/PP3PPP/R2QKB1R w KQkq - 0 8", + "hash": 15464030968912821045, + "name": "Sicilian: Maroczy Bind, 6.Be3 Nf6 7.Nc3 d6" + }, + "B38f": { + "eco": "B38f", + "fen": "r1bqk2r/pp2ppbp/2np1np1/8/2PNP3/2N1B3/PP2BPPP/R2QK2R b KQkq - 1 8", + "hash": 11897320281814167958, + "name": "Sicilian: Maroczy Bind, 6.Be3 Nf6 7.Nc3 d6 8.Be2" + }, + "B38g": { + "eco": "B38g", + "fen": "r1bq1rk1/pp1pppbp/2n2np1/8/2PNP3/2N1B3/PP3PPP/R2QKB1R w KQ - 5 8", + "hash": 16539819198882356147, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O" + }, + "B38h": { + "eco": "B38h", + "fen": "r1bq1rk1/p2pppbp/1pn2np1/8/2PNP3/2N1B3/PP2BPPP/R2QK2R w KQ - 0 9", + "hash": 18257864485932328587, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 b6" + }, + "B38i": { + "eco": "B38i", + "fen": "r1bq1rk1/p2pppbp/1pn2np1/8/2PNP3/2N1B3/PP2BPPP/R2Q1RK1 b - - 1 9", + "hash": 9445609933375847835, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 b6 9.O-O" + }, + "B38j": { + "eco": "B38j", + "fen": "r2q1rk1/pb1pppbp/1pn2np1/8/2PNP3/2N1BP2/PP2B1PP/R2Q1RK1 b - - 0 10", + "hash": 6716030901884353905, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 b6 9.O-O Bb7 10.f3" + }, + "B38k": { + "eco": "B38k", + "fen": "rq3rk1/pb1pppbp/1pn2np1/8/2PNP3/2N1BP2/PP2B1PP/R2Q1RK1 w - - 1 11", + "hash": 5259456507768782294, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 b6 9.O-O Bb7 10.f3 Qb8" + }, + "B38l": { + "eco": "B38l", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/8/2PNP3/2N1B3/PP2BPPP/R2QK2R w KQ - 0 9", + "hash": 12660507461213263997, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6" + }, + "B38m": { + "eco": "B38m", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/8/2PNP3/2N1BP2/PP2B1PP/R2QK2R b KQ - 0 9", + "hash": 13907905393092622092, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.f3" + }, + "B38n": { + "eco": "B38n", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/8/2PNP3/2N1B3/PP2BPPP/R2Q1RK1 b - - 1 9", + "hash": 15115860739316728685, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O" + }, + "B38o": { + "eco": "B38o", + "fen": "r1bq1rk1/pp1nppbp/2np2p1/8/2PNP3/2N1B3/PP2BPPP/R2Q1RK1 w - - 2 10", + "hash": 2918702990824262296, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Nd7" + }, + "B38p": { + "eco": "B38p", + "fen": "r1bq1rk1/1p2ppbp/p1np1np1/8/2PNP3/2N1B3/PP2BPPP/R2Q1RK1 w - - 0 10", + "hash": 230143944416017329, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O a6" + }, + "B38q": { + "eco": "B38q", + "fen": "r1bq1rk1/pp2ppbp/3p1np1/8/2PnP3/2N1B3/PP2BPPP/R2Q1RK1 w - - 0 10", + "hash": 8981821183071517230, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Nxd4" + }, + "B38r": { + "eco": "B38r", + "fen": "r2q1rk1/pp1bppbp/2np1np1/8/2PNP3/2N1B3/PP2BPPP/R2Q1RK1 w - - 2 10", + "hash": 3677097920225973084, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7" + }, + "B38s": { + "eco": "B38s", + "fen": "r2q1rk1/pp1bppbp/2np1np1/8/2P1P3/2N1B3/PPN1BPPP/R2Q1RK1 b - - 3 10", + "hash": 7366640608644662326, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7 10.Nc2" + }, + "B38t": { + "eco": "B38t", + "fen": "r2q1rk1/pp1bppbp/2np1np1/8/2PNP3/2N1BP2/PP2B1PP/R2Q1RK1 b - - 0 10", + "hash": 6752667301422529581, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7 10.f3" + }, + "B38u": { + "eco": "B38u", + "fen": "r2q1rk1/pp1bppbp/2np1np1/8/2PNP3/2N1B3/PP2BPPP/2RQ1RK1 b - - 3 10", + "hash": 13689209873000973842, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7 10.Rc1" + }, + "B38v": { + "eco": "B38v", + "fen": "r2q1rk1/pp1bppbp/2np1np1/8/2PNP3/2N1B3/PP1QBPPP/R4RK1 b - - 3 10", + "hash": 1954529924200811772, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7 10.Qd2" + }, + "B38w": { + "eco": "B38w", + "fen": "r2q1rk1/pp1bppbp/3p1np1/8/2PnP3/2N1B3/PP1QBPPP/R4RK1 w - - 0 11", + "hash": 13149498374034912703, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7 10.Qd2 Nxd4" + }, + "B38x": { + "eco": "B38x", + "fen": "r2q1rk1/pp2ppbp/2bp1np1/8/2PBP3/2N2P2/PP1QB1PP/R4RK1 b - - 0 12", + "hash": 2383386564151135666, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7 10.Qd2 Nxd4, 12.f3" + }, + "B38y": { + "eco": "B38y", + "fen": "r2q1rk1/1p2ppbp/2bp1np1/p7/2PBP3/2N2P2/PP1QB1PP/R4RK1 w - a6 0 13", + "hash": 12036372148860141858, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7 10.Qd2 Nxd4, 12.f3 a5" + }, + "B38z": { + "eco": "B38z", + "fen": "r2q1rk1/1p2ppbp/2bp1np1/p7/2PBP3/1PN2P2/P2QB1PP/R4RK1 b - - 0 13", + "hash": 3147920372359998031, + "name": "Sicilian: Maroczy Bind, 7.Nc3 O-O 8.Be2 d6 9.O-O Bd7 10.Qd2 Nxd4, 12.f3 a5 13.b3" + }, + "B39a": { + "eco": "B39a", + "fen": "r1bqk2r/pp1pppbp/2n3p1/8/2PNP1n1/2N1B3/PP3PPP/R2QKB1R w KQkq - 5 8", + "hash": 8215281760737616692, + "name": "Sicilian: Maroczy Bind, Breyer Variation" + }, + "B39b": { + "eco": "B39b", + "fen": "r1bqk2r/pp1pppbp/2n3p1/8/2PNP1Q1/2N1B3/PP3PPP/R3KB1R b KQkq - 0 8", + "hash": 8051568792063444755, + "name": "Sicilian: Maroczy Bind, Breyer, 8.Qxg4" + }, + "B39c": { + "eco": "B39c", + "fen": "r1bqk2r/pp1pppbp/6p1/8/2PnP1Q1/2N1B3/PP3PPP/R3KB1R w KQkq - 0 9", + "hash": 14042063857499848272, + "name": "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4" + }, + "B39d": { + "eco": "B39d", + "fen": "r1bqk2r/pp1pppbp/6p1/8/2PnP3/2N1B3/PP3PPP/R2QKB1R b KQkq - 1 9", + "hash": 10909156462949721181, + "name": "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1" + }, + "B39e": { + "eco": "B39e", + "fen": "r1bqk2r/pp1p1pbp/6p1/4p3/2PnP3/2N1B3/PP3PPP/R2QKB1R w KQkq e6 0 10", + "hash": 2097855311340870763, + "name": "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1 e5" + }, + "B39f": { + "eco": "B39f", + "fen": "r1bqk2r/pp1p1pbp/6p1/1N2p3/2PnP3/4B3/PP3PPP/R2QKB1R b KQkq - 1 10", + "hash": 16846663337181252241, + "name": "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1 e5 10.Nb5" + }, + "B39g": { + "eco": "B39g", + "fen": "r1bqk2r/pp1p1pbp/6p1/4p3/2PnP3/2NBB3/PP3PPP/R2QK2R b KQkq - 1 10", + "hash": 5192850379857157656, + "name": "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1 e5 10.Bd3" + }, + "B39h": { + "eco": "B39h", + "fen": "r1bqk2r/pp1pppbp/4n1p1/8/2P1P3/2N1B3/PP3PPP/R2QKB1R w KQkq - 2 10", + "hash": 15408677686580240544, + "name": "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1 Ne6" + }, + "B39i": { + "eco": "B39i", + "fen": "r1bqk2r/pp1pppbp/4n1p1/8/2P1P3/2N1B3/PP1Q1PPP/R3KB1R b KQkq - 3 10", + "hash": 18288785176834326272, + "name": "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1 Ne6 10.Qd2" + }, + "B39j": { + "eco": "B39j", + "fen": "r1bqk2r/pp1pppbp/4n1p1/8/2P1P3/2N1B3/PP3PPP/2RQKB1R b Kkq - 3 10", + "hash": 12271554694308443262, + "name": "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1 Ne6 10.Rc1" + }, + "B39k": { + "eco": "B39k", + "fen": "r1b1k2r/pp1pppbp/4n1p1/q7/2P1P3/2N1B3/PP3PPP/2RQKB1R w Kkq - 4 11", + "hash": 8304290961731229169, + "name": "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1 Ne6 10.Rc1 Qa5" + }, + "B39l": { + "eco": "B39l", + "fen": "r1b1k2r/pp1pppbp/4n1p1/q7/2P1P3/2N1B3/PP1Q1PPP/2R1KB1R b Kkq - 5 11", + "hash": 6568090138210191953, + "name": "Sicilian: Maroczy Bind, Breyer, 8.Qxg4 Nxd4 9.Qd1 Ne6 10.Rc1 Qa5 11.Qd2" + }, + "B40a": { + "eco": "B40a", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 0 3", + "hash": 14510127655146404740, + "name": "Sicilian: 2...e6" + }, + "B40b": { + "eco": "B40b", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2p5/2P1P3/5N2/PP1P1PPP/RNBQKB1R b KQkq c3 0 3", + "hash": 5007381686952726659, + "name": "Sicilian: 2...e6 3.c4" + }, + "B40c": { + "eco": "B40c", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2p5/4P3/1P3N2/P1PP1PPP/RNBQKB1R b KQkq - 0 3", + "hash": 5041837428418007273, + "name": "Sicilian: 2...e6 3.b3" + }, + "B40d": { + "eco": "B40d", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/2p5/4P3/1P3N2/P1PP1PPP/RNBQKB1R w KQkq - 1 4", + "hash": 17155878457575372266, + "name": "Sicilian: 2...e6 3.b3 Nc6" + }, + "B40e": { + "eco": "B40e", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2p5/4P3/5NP1/PPPP1P1P/RNBQKB1R b KQkq - 0 3", + "hash": 16553243731529393084, + "name": "Sicilian: 2...e6 3.g3" + }, + "B40f": { + "eco": "B40f", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2p5/4P3/3P1N2/PPP2PPP/RNBQKB1R b KQkq - 0 3", + "hash": 7492467970858418256, + "name": "Sicilian: 2...e6 3.d3" + }, + "B40g": { + "eco": "B40g", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2p5/4P3/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 1 3", + "hash": 3659540403779025245, + "name": "Sicilian: 2...e6 3.Nc3" + }, + "B40h": { + "eco": "B40h", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/2p5/4P3/2N2N2/PPPP1PPP/R1BQKB1R w KQkq - 2 4", + "hash": 11035108237092428894, + "name": "Sicilian: 2...e6 3.Nc3 Nc6" + }, + "B40i": { + "eco": "B40i", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2p5/3PP3/5N2/PPP2PPP/RNBQKB1R b KQkq d3 0 3", + "hash": 894944823920531142, + "name": "Sicilian: 2...e6 3.d4" + }, + "B40j": { + "eco": "B40j", + "fen": "rnbqkbnr/pp3ppp/4p3/2pp4/3PP3/5N2/PPP2PPP/RNBQKB1R w KQkq d6 0 4", + "hash": 9872270298815912160, + "name": "Sicilian: Marshall Variation" + }, + "B40k": { + "eco": "B40k", + "fen": "rnbqkbnr/pp1p1ppp/4p3/8/3pP3/5N2/PPP2PPP/RNBQKB1R w KQkq - 0 4", + "hash": 6013925796646747904, + "name": "Sicilian: Open, 2...e6" + }, + "B40l": { + "eco": "B40l", + "fen": "rnbqkbnr/pp1p1ppp/4p3/8/3NP3/8/PPP2PPP/RNBQKB1R b KQkq - 0 4", + "hash": 3810499361844915502, + "name": "Sicilian: Open, 2...e6, 4.Nxd4" + }, + "B40m": { + "eco": "B40m", + "fen": "rnbqk1nr/pp1p1ppp/4p3/2b5/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 1 5", + "hash": 11095981766956844973, + "name": "Sicilian: Open, 2...e6, 4.Nxd4 Bc5" + }, + "B40n": { + "eco": "B40n", + "fen": "rnb1kbnr/pp1p1ppp/1q2p3/8/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 1 5", + "hash": 17518548094710823924, + "name": "Sicilian: Kveinys Variation" + }, + "B40o": { + "eco": "B40o", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/8/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 1 5", + "hash": 8002799843668143288, + "name": "Sicilian: Open, 2...e6, 4.Nxd4 Nf6" + }, + "B40p": { + "eco": "B40p", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/8/3NP3/3B4/PPP2PPP/RNBQK2R b KQkq - 2 5", + "hash": 4179914041107738315, + "name": "Sicilian: Open, 2...e6, 4.Nxd4 Nf6 5.Bd3" + }, + "B40q": { + "eco": "B40q", + "fen": "r1bqkb1r/pp1p1ppp/2N1pn2/8/4P3/3B4/PPP2PPP/RNBQK2R b KQkq - 0 6", + "hash": 15955528978876416765, + "name": "Sicilian: Open, 2...e6, 4.Nxd4 Nf6 5.Bd3 Nc6 6.Nxc6" + }, + "B40r": { + "eco": "B40r", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/8/3NP3/2N5/PPP2PPP/R1BQKB1R b KQkq - 2 5", + "hash": 10707502368473656929, + "name": "Sicilian: Open, 2...e6, 4.Nxd4 Nf6 5.Nc3" + }, + "B40s": { + "eco": "B40s", + "fen": "rnbqk2r/pp1p1ppp/4pn2/8/1b1NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 3 6", + "hash": 6762675640370030147, + "name": "Sicilian: Pin Variation" + }, + "B40t": { + "eco": "B40t", + "fen": "rnbqk2r/pp1p1ppp/5n2/4p3/1b1NP3/2NB4/PPP2PPP/R1BQK2R w KQkq - 0 7", + "hash": 868531555974334813, + "name": "Sicilian: Pin, Jaffe Variation" + }, + "B40u": { + "eco": "B40u", + "fen": "rnbqk2r/pp1p1ppp/4pn2/4P3/1b1N4/2N5/PPP2PPP/R1BQKB1R b KQkq - 0 6", + "hash": 4368719611914305575, + "name": "Sicilian: Pin, Koch Variation" + }, + "B41a": { + "eco": "B41a", + "fen": "rnbqkbnr/1p1p1ppp/p3p3/8/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 0 5", + "hash": 16579558963243030002, + "name": "Sicilian: Kan (Paulsen)" + }, + "B41b": { + "eco": "B41b", + "fen": "rnbqkbnr/1p1p1ppp/p3p3/8/3NP3/6P1/PPP2P1P/RNBQKB1R b KQkq - 0 5", + "hash": 14623423599234076106, + "name": "Sicilian: Kan, 5.g3" + }, + "B41c": { + "eco": "B41c", + "fen": "rnbqkbnr/1p1p1ppp/p3p3/8/3NP3/4B3/PPP2PPP/RN1QKB1R b KQkq - 1 5", + "hash": 10745262037463764604, + "name": "Sicilian: Kan, 5.Be3" + }, + "B41d": { + "eco": "B41d", + "fen": "rnbqkbnr/1p1p1ppp/p3p3/8/3NP3/8/PPP1BPPP/RNBQK2R b KQkq - 1 5", + "hash": 10779065480931696465, + "name": "Sicilian: Kan, 5.Be2" + }, + "B41e": { + "eco": "B41e", + "fen": "rnbqkb1r/1p1p1ppp/p3pn2/8/3NP3/8/PPP1BPPP/RNBQK2R w KQkq - 2 6", + "hash": 14877881080880406215, + "name": "Sicilian: Kan, 5.Be2 Nf6" + }, + "B41f": { + "eco": "B41f", + "fen": "rnbqkbnr/1p1p1ppp/p3p3/8/2PNP3/8/PP3PPP/RNBQKB1R b KQkq c3 0 5", + "hash": 7653289415459028725, + "name": "Sicilian: Kan, 5.c4" + }, + "B41g": { + "eco": "B41g", + "fen": "rnb1kbnr/1pqp1ppp/p3p3/8/2PNP3/8/PP3PPP/RNBQKB1R w KQkq - 1 6", + "hash": 7794267564191412724, + "name": "Sicilian: Kan, 5.c4 Qc7" + }, + "B41h": { + "eco": "B41h", + "fen": "rnbqkb1r/1p1p1ppp/p3pn2/8/2PNP3/8/PP3PPP/RNBQKB1R w KQkq - 1 6", + "hash": 3592683763173916515, + "name": "Sicilian: Kan, 5.c4 Nf6" + }, + "B41i": { + "eco": "B41i", + "fen": "rnbqkb1r/1p1p1ppp/p3pn2/8/2PNP3/2N5/PP3PPP/R1BQKB1R b KQkq - 2 6", + "hash": 14577270717053271482, + "name": "Sicilian: Kan, 5.c4 Nf6 6.Nc3" + }, + "B41j": { + "eco": "B41j", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/8/2PNP3/2N5/PP3PPP/R1BQKB1R w KQkq - 0 7", + "hash": 17579317472376501463, + "name": "Sicilian: Kan, 5.c4 Nf6 6.Nc3 d6" + }, + "B41k": { + "eco": "B41k", + "fen": "rnbqk2r/1p1p1ppp/p3pn2/8/1bPNP3/2N5/PP3PPP/R1BQKB1R w KQkq - 3 7", + "hash": 220033706715133336, + "name": "Sicilian: Kan, 5.c4 Nf6 6.Nc3 Bb4" + }, + "B41l": { + "eco": "B41l", + "fen": "rnb1kb1r/1pqp1ppp/p3pn2/8/2PNP3/2N5/PP3PPP/R1BQKB1R w KQkq - 3 7", + "hash": 14723359386301018811, + "name": "Sicilian: Kan, 5.c4 Nf6 6.Nc3 Qc7" + }, + "B41m": { + "eco": "B41m", + "fen": "rnb1kb1r/1pqp1ppp/p3pn2/8/2PNP3/2N5/PP2BPPP/R1BQK2R b KQkq - 4 7", + "hash": 13822500136397830168, + "name": "Sicilian: Kan, 5.c4 Nf6 6.Nc3 Qc7 7.Be2" + }, + "B42a": { + "eco": "B42a", + "fen": "rnbqkbnr/1p1p1ppp/p3p3/8/3NP3/3B4/PPP2PPP/RNBQK2R b KQkq - 1 5", + "hash": 12906134191187318657, + "name": "Sicilian: Kan, 5.Bd3" + }, + "B42b": { + "eco": "B42b", + "fen": "rnbqkbnr/1p1p1p1p/p3p1p1/8/3NP3/3B4/PPP2PPP/RNBQK2R w KQkq - 0 6", + "hash": 6534617444637590986, + "name": "Sicilian: Kan, Swiss Cheese Variation" + }, + "B42c": { + "eco": "B42c", + "fen": "rnb1kbnr/1p1p1ppp/pq2p3/8/3NP3/3B4/PPP2PPP/RNBQK2R w KQkq - 2 6", + "hash": 8422913265758470491, + "name": "Sicilian: Kan, 5.Bd3 Qb6" + }, + "B42d": { + "eco": "B42d", + "fen": "rnb1kbnr/1pqp1ppp/p3p3/8/3NP3/3B4/PPP2PPP/RNBQK2R w KQkq - 2 6", + "hash": 13043818202276370560, + "name": "Sicilian: Kan, 5.Bd3 Qc7" + }, + "B42e": { + "eco": "B42e", + "fen": "r1bqkbnr/1p1p1ppp/p1n1p3/8/3NP3/3B4/PPP2PPP/RNBQK2R w KQkq - 2 6", + "hash": 1798647403884049026, + "name": "Sicilian: Kan, 5.Bd3 Nc6" + }, + "B42f": { + "eco": "B42f", + "fen": "rnbqk1nr/1p1p1ppp/p3p3/2b5/3NP3/3B4/PPP2PPP/RNBQK2R w KQkq - 2 6", + "hash": 2163567240120417538, + "name": "Sicilian: Kan, Polugaevsky Variation" + }, + "B42g": { + "eco": "B42g", + "fen": "rnbqk1nr/bp1p1ppp/p3p3/8/4P3/1N1B4/PPP2PPP/RNBQK2R w KQkq - 4 7", + "hash": 5454888564508124108, + "name": "Sicilian: Kan, Polugaevsky, 6.Nb3 Ba7" + }, + "B42h": { + "eco": "B42h", + "fen": "rnbqkb1r/1p1p1ppp/p3pn2/8/3NP3/3B4/PPP2PPP/RNBQK2R w KQkq - 2 6", + "hash": 16786596275092198935, + "name": "Sicilian: Kan, 5.Bd3 Nf6" + }, + "B42i": { + "eco": "B42i", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/8/3NP3/3B4/PPP2PPP/RNBQ1RK1 w kq - 0 7", + "hash": 12626427641508889706, + "name": "Sicilian: Kan, 5.Bd3 Nf6 6.O-O d6" + }, + "B42j": { + "eco": "B42j", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/8/2PNP3/3B4/PP3PPP/RNBQ1RK1 b kq c3 0 7", + "hash": 2529204598355275629, + "name": "Sicilian: Kan, 5.Bd3 Nf6 6.O-O d6 7.c4" + }, + "B42k": { + "eco": "B42k", + "fen": "rnbqkb1r/1p3p1p/p2ppnp1/8/2PNP3/3B4/PP3PPP/RNBQ1RK1 w kq - 0 8", + "hash": 14604568267106270502, + "name": "Sicilian: Kan, Gipslis Variation" + }, + "B42l": { + "eco": "B42l", + "fen": "rnb1kb1r/1pqp1ppp/p3pn2/8/3NP3/3B4/PPP2PPP/RNBQ1RK1 w kq - 4 7", + "hash": 10421255090592317958, + "name": "Sicilian: Kan, 5.Bd3 Nf6 6.O-O Qc7" + }, + "B42m": { + "eco": "B42m", + "fen": "rnb1kb1r/1pqp1ppp/p3pn2/8/2PNP3/3B4/PP3PPP/RNBQ1RK1 b kq c3 0 7", + "hash": 2070568884833036545, + "name": "Sicilian: Kan, 5.Bd3 Nf6 6.O-O Qc7 7.c4" + }, + "B42n": { + "eco": "B42n", + "fen": "rnb1kb1r/1pqp1ppp/p3pn2/8/3NP3/3B4/PPP1QPPP/RNB2RK1 b kq - 5 7", + "hash": 475467758008064386, + "name": "Sicilian: Kan, 5.Bd3 Nf6 6.O-O Qc7 7.Qe2" + }, + "B42o": { + "eco": "B42o", + "fen": "rnb1kb1r/1pq2ppp/p2ppn2/8/2PNP3/3B4/PP2QPPP/RNB2RK1 b kq c3 0 8", + "hash": 12898373300745354216, + "name": "Sicilian: Kan, 5.Bd3 Nf6 6.O-O Qc7 7.Qe2 d6 8.c4" + }, + "B43a": { + "eco": "B43a", + "fen": "rnbqkbnr/1p1p1ppp/p3p3/8/3NP3/2N5/PPP2PPP/R1BQKB1R b KQkq - 1 5", + "hash": 2126109872811153195, + "name": "Sicilian: Kan, 5.Nc3" + }, + "B43b": { + "eco": "B43b", + "fen": "rnbqkbnr/1p3ppp/p2pp3/8/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 0 6", + "hash": 2610930874172333638, + "name": "Sicilian: Kan, 5.Nc3 d6" + }, + "B43c": { + "eco": "B43c", + "fen": "rnbqkbnr/3p1ppp/p3p3/1p6/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq b6 0 6", + "hash": 9044670334828128790, + "name": "Sicilian: Kan, 5.Nc3 b5" + }, + "B43d": { + "eco": "B43d", + "fen": "rnbqkbnr/3p1ppp/p3p3/1p6/3NP3/2NB4/PPP2PPP/R1BQK2R b KQkq - 1 6", + "hash": 2920793392402229349, + "name": "Sicilian: Kan, 5.Nc3 b5 6.Bd3" + }, + "B43e": { + "eco": "B43e", + "fen": "rnb1kbnr/3p1ppp/pq2p3/1p6/3NP3/2NB4/PPP2PPP/R1BQK2R w KQkq - 2 7", + "hash": 17255331184976248511, + "name": "Sicilian: Kan, 5.Nc3 b5 6.Bd3 Qb6" + }, + "B43f": { + "eco": "B43f", + "fen": "rnb1kbnr/3p1ppp/pq2p3/1p6/4P3/1NNB4/PPP2PPP/R1BQK2R b KQkq - 3 7", + "hash": 8864905301697853557, + "name": "Sicilian: Kan, 5.Nc3 b5 6.Bd3 Qb6 7.Nb3" + }, + "B43g": { + "eco": "B43g", + "fen": "rnb1kbnr/1pqp1ppp/p3p3/8/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 2 6", + "hash": 1990110047381182506, + "name": "Sicilian: Kan, 5.Nc3 Qc7" + }, + "B43h": { + "eco": "B43h", + "fen": "rnb1kbnr/1pqp1ppp/p3p3/8/3NP3/2N3P1/PPP2P1P/R1BQKB1R b KQkq - 0 6", + "hash": 3997210521974636562, + "name": "Sicilian: Kan, 5.Nc3 Qc7 6.g3" + }, + "B43i": { + "eco": "B43i", + "fen": "rnb1kb1r/1pqp1ppp/p3pn2/8/3NP3/2N3P1/PPP2P1P/R1BQKB1R w KQkq - 1 7", + "hash": 7824658277164827012, + "name": "Sicilian: Kan, 5.Nc3 Qc7 6.g3 Nf6" + }, + "B43j": { + "eco": "B43j", + "fen": "rnb1kbnr/1pqp1ppp/p3p3/8/3NP3/2N5/PPP1BPPP/R1BQK2R b KQkq - 3 6", + "hash": 7502655521903743625, + "name": "Sicilian: Kan, 5.Nc3 Qc7 6.Be2" + }, + "B43k": { + "eco": "B43k", + "fen": "rnb1kb1r/1pqp1ppp/p3pn2/8/3NP3/2N5/PPP1BPPP/R1BQK2R w KQkq - 4 7", + "hash": 3742770050546291487, + "name": "Sicilian: Kan, 5.Nc3 Qc7 6.Be2 Nf6" + }, + "B43l": { + "eco": "B43l", + "fen": "rnb1kb1r/1pqp1ppp/p3pn2/8/3NP3/2N5/PPP1BPPP/R1BQ1RK1 b kq - 5 7", + "hash": 5586019018700720143, + "name": "Sicilian: Kan, 5.Nc3 Qc7 6.Be2 Nf6 7.O-O" + }, + "B43m": { + "eco": "B43m", + "fen": "rnb1kbnr/1pqp1ppp/p3p3/8/3NP3/2NB4/PPP2PPP/R1BQK2R b KQkq - 3 6", + "hash": 5662127720001673817, + "name": "Sicilian: Kan, 5.Nc3 Qc7 6.Bd3" + }, + "B43n": { + "eco": "B43n", + "fen": "rnb1kb1r/1pqp1ppp/p3pn2/8/3NP3/2NB4/PPP2PPP/R1BQK2R w KQkq - 4 7", + "hash": 1548639986401532879, + "name": "Sicilian: Kan, 5.Nc3 Qc7 6.Bd3 Nf6" + }, + "B43o": { + "eco": "B43o", + "fen": "rnb1kb1r/1pqp1ppp/p3pn2/8/3NP3/2NB4/PPP2PPP/R1BQ1RK1 b kq - 5 7", + "hash": 7712595681140932831, + "name": "Sicilian: Kan, 5.Nc3 Qc7 6.Bd3 Nf6 7.O-O" + }, + "B44a": { + "eco": "B44a", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/8/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 1 5", + "hash": 11460610026420291629, + "name": "Sicilian: Taimanov" + }, + "B44b": { + "eco": "B44b", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/8/3NP3/6P1/PPP2P1P/RNBQKB1R b KQkq - 0 5", + "hash": 12964455235037171733, + "name": "Sicilian: Taimanov, 5.g3" + }, + "B44c": { + "eco": "B44c", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/8/3NP3/8/PPP1BPPP/RNBQK2R b KQkq - 2 5", + "hash": 17045218455099966094, + "name": "Sicilian: Taimanov, 5.Be2" + }, + "B44d": { + "eco": "B44d", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/8/2PNP3/8/PP3PPP/RNBQKB1R b KQkq c3 0 5", + "hash": 1382564667225826090, + "name": "Sicilian: Taimanov, 5.c4" + }, + "B44e": { + "eco": "B44e", + "fen": "r1bqkb1r/pp1p1ppp/2n1pn2/8/2PNP3/2N5/PP3PPP/R1BQKB1R b KQkq - 2 6", + "hash": 12922788216265285733, + "name": "Sicilian: Taimanov, 5.c4 Nf6 6.Nc3" + }, + "B44f": { + "eco": "B44f", + "fen": "r1bqk2r/p2p1ppp/2p1pn2/8/1bP1P3/2N5/PP3PPP/R1BQKB1R w KQkq - 0 8", + "hash": 16934654333584157433, + "name": "Sicilian: Taimanov, 5.c4 Nf6 6.Nc3 Bb4 7.Nxc6 bxc6" + }, + "B44g": { + "eco": "B44g", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/8/3NP3/4B3/PPP2PPP/RN1QKB1R b KQkq - 2 5", + "hash": 17006999523261010851, + "name": "Sicilian: Taimanov, 5.Be3" + }, + "B44h": { + "eco": "B44h", + "fen": "r1bqkb1r/pp1p1ppp/2n1pn2/8/3NP3/4B3/PPP2PPP/RN1QKB1R w KQkq - 3 6", + "hash": 13252628055204008501, + "name": "Sicilian: Taimanov, 5.Be3 Nf6" + }, + "B44i": { + "eco": "B44i", + "fen": "r1bqkbnr/pp1p1ppp/2N1p3/8/4P3/8/PPP2PPP/RNBQKB1R b KQkq - 0 5", + "hash": 15244394769990533400, + "name": "Sicilian: Taimanov, 5.Nxc6" + }, + "B44j": { + "eco": "B44j", + "fen": "r1bqkbnr/p2p1ppp/2p1p3/8/4P3/3B4/PPP2PPP/RNBQK2R b KQkq - 1 6", + "hash": 6563294641338206432, + "name": "Sicilian: Taimanov, 5.Nxc6 bxc6 6.Bd3" + }, + "B44k": { + "eco": "B44k", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/1N6/4P3/8/PPP2PPP/RNBQKB1R b KQkq - 2 5", + "hash": 7667007229414863483, + "name": "Sicilian, Taimanov, Szen Variation" + }, + "B44l": { + "eco": "B44l", + "fen": "r1bqkbnr/pp3ppp/2npp3/1N6/4PB2/8/PPP2PPP/RN1QKB1R b KQkq - 1 6", + "hash": 9838358114645528949, + "name": "Sicilian, Taimanov, Szen, 6.Bf4" + }, + "B44m": { + "eco": "B44m", + "fen": "r1bqkbnr/1p3ppp/p1np4/1N2p3/4P3/4B3/PPP2PPP/RN1QKB1R w KQkq - 0 8", + "hash": 1021341234959626272, + "name": "Sicilian, Taimanov, Szen, 6.Bf4 e5 7.Be3 a6" + }, + "B44n": { + "eco": "B44n", + "fen": "r1bqkb1r/pp3ppp/2np1n2/1N2p3/4P3/4B3/PPP2PPP/RN1QKB1R w KQkq - 2 8", + "hash": 9742778544175483242, + "name": "Sicilian, Taimanov, Szen, 6.Bf4 e5 7.Be3 Nf6" + }, + "B44o": { + "eco": "B44o", + "fen": "r1bqkbnr/pp3ppp/2npp3/1N6/2P1P3/8/PP3PPP/RNBQKB1R b KQkq c3 0 6", + "hash": 16140803420811956241, + "name": "Sicilian, Taimanov, Szen, 6.c4" + }, + "B44p": { + "eco": "B44p", + "fen": "r1bqkb1r/pp3ppp/2nppn2/8/2P1P3/2N5/PP3PPP/RNBQKB1R b KQkq - 2 7", + "hash": 8126702107533821821, + "name": "Sicilian, Taimanov, Szen, 7.N5c3" + }, + "B44q": { + "eco": "B44q", + "fen": "r1bqkb1r/pp3ppp/2nppn2/1N6/2P1P3/2N5/PP3PPP/R1BQKB1R b KQkq - 2 7", + "hash": 9189185363689657182, + "name": "Sicilian, Taimanov, Szen, 7.N1c3" + }, + "B44r": { + "eco": "B44r", + "fen": "r1bqkb1r/1p3ppp/p1nppn2/8/2P1P3/N1N5/PP3PPP/R1BQKB1R b KQkq - 1 8", + "hash": 11950012587586490479, + "name": "Sicilian, Taimanov, Szen, 7.N1c3 a6 8.Na3" + }, + "B44s": { + "eco": "B44s", + "fen": "r1bqkb1r/5ppp/ppnppn2/8/2P1P3/N1N5/PP3PPP/R1BQKB1R w KQkq - 0 9", + "hash": 14897819823542740980, + "name": "Sicilian, Taimanov, Szen, 7.N1c3 a6 8.Na3 b6" + }, + "B44t": { + "eco": "B44t", + "fen": "r1bqk2r/1p2bppp/p1nppn2/8/2P1P3/N1N5/PP3PPP/R1BQKB1R w KQkq - 2 9", + "hash": 12761665110303423742, + "name": "Sicilian, Taimanov, Szen, 7.N1c3 a6 8.Na3 Be7" + }, + "B44u": { + "eco": "B44u", + "fen": "r1bqk2r/1p2bppp/p1nppn2/8/2P1P3/N1N5/PP2BPPP/R1BQK2R b KQkq - 3 9", + "hash": 14022530511852074589, + "name": "Sicilian, Taimanov, Szen, 7.N1c3 a6 8.Na3 Be7 9.Be2" + }, + "B44v": { + "eco": "B44v", + "fen": "r1bq1rk1/1p2bppp/p1nppn2/8/2P1P3/N1N5/PP2BPPP/R1BQK2R w KQ - 4 10", + "hash": 14425843809564565430, + "name": "Sicilian, Taimanov, Szen, 7.N1c3 a6 8.Na3 Be7 9.Be2 O-O" + }, + "B44w": { + "eco": "B44w", + "fen": "r1bq1rk1/4bppp/ppnppn2/8/2P1P3/N1N5/PP2BPPP/R1BQ1RK1 w - - 0 11", + "hash": 15937912148021048125, + "name": "Sicilian: Taimanov, Szen, Hedgehog Variation" + }, + "B44x": { + "eco": "B44x", + "fen": "r1bq1rk1/4bppp/ppnppn2/8/2P1P3/N1N1B3/PP2BPPP/R2Q1RK1 b - - 1 11", + "hash": 12548837582434691251, + "name": "Sicilian: Taimanov, Szen, Hedgehog, 11.Be3" + }, + "B44y": { + "eco": "B44y", + "fen": "r2q1rk1/1b2bppp/ppnppn2/8/2P1P3/N1N1B3/PP2BPPP/R2Q1RK1 w - - 2 12", + "hash": 2212997838412302120, + "name": "Sicilian: Taimanov, Szen, Hedgehog, 11.Be3 Bb7" + }, + "B44z": { + "eco": "B44z", + "fen": "r2q1rk1/1b2bppp/ppnppn2/8/2P1P3/NQN1B3/PP2BPPP/R4RK1 b - - 3 12", + "hash": 2616457754897706958, + "name": "Sicilian: Taimanov, Szen, Hedgehog, 11.Be3 Bb7 12.Qb3" + }, + "B45a": { + "eco": "B45a", + "fen": "r1bqkbnr/pp1p1ppp/2n1p3/8/3NP3/2N5/PPP2PPP/R1BQKB1R b KQkq - 2 5", + "hash": 7249489987118123764, + "name": "Sicilian: Taimanov, 5.Nc3" + }, + "B45b": { + "eco": "B45b", + "fen": "r1bqk1nr/pp1p1ppp/2n1p3/8/1b1NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 3 6", + "hash": 12527384401884644054, + "name": "Sicilian: Taimanov, 5.Nc3 Bb4" + }, + "B45c": { + "eco": "B45c", + "fen": "r1bqkbnr/pp3ppp/2npp3/8/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 0 6", + "hash": 6710867957655077785, + "name": "Sicilian: Taimanov, 5.Nc3 d6" + }, + "B45d": { + "eco": "B45d", + "fen": "r1bqkb1r/pp1p1ppp/2n1pn2/8/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 3 6", + "hash": 4572675682778680162, + "name": "Sicilian: Taimanov, Four Knights" + }, + "B45e": { + "eco": "B45e", + "fen": "r1bqkb1r/pp1p1ppp/2n1pn2/6B1/3NP3/2N5/PPP2PPP/R2QKB1R b KQkq - 4 6", + "hash": 17955640027226427562, + "name": "Sicilian: Taimanov, Four Knights, 6.Bg5" + }, + "B45f": { + "eco": "B45f", + "fen": "r1bqkb1r/pp1p1ppp/2n1pn2/8/3NP3/P1N5/1PP2PPP/R1BQKB1R b KQkq - 0 6", + "hash": 17647734918984992034, + "name": "Sicilian: Taimanov, Four Knights, 6.a3" + }, + "B45g": { + "eco": "B45g", + "fen": "r1bqkb1r/pp1p1ppp/2n1pn2/8/3NP3/2N3P1/PPP2P1P/R1BQKB1R b KQkq - 0 6", + "hash": 1410703172120400730, + "name": "Sicilian: Taimanov, Four Knights, 6.g3" + }, + "B45h": { + "eco": "B45h", + "fen": "r1bqkb1r/pp1p1ppp/2n1pn2/8/3NP3/2N5/PPP1BPPP/R1BQK2R b KQkq - 4 6", + "hash": 5545597689270518209, + "name": "Sicilian: Taimanov, Four Knights, 6.Be2" + }, + "B45i": { + "eco": "B45i", + "fen": "r1bqkb1r/pp1p1ppp/2n1pn2/8/3NP3/2N1B3/PPP2PPP/R2QKB1R b KQkq - 4 6", + "hash": 5511794215739003116, + "name": "Sicilian: Taimanov, Four Knights, 6.Be3" + }, + "B45j": { + "eco": "B45j", + "fen": "r1bqk2r/pp1p1ppp/2n1pn2/8/1b1NP3/2NBB3/PPP2PPP/R2QK2R b KQkq - 6 7", + "hash": 15001801548518529725, + "name": "Sicilian: Taimanov, Four Knights, 6.Be3 Bb4 7.Bd3" + }, + "B45k": { + "eco": "B45k", + "fen": "r1bqkb1r/pp1p1ppp/2N1pn2/8/4P3/2N5/PPP2PPP/R1BQKB1R b KQkq - 0 6", + "hash": 8356380803189637719, + "name": "Sicilian: Taimanov, Four Knights, 6.Nxc6" + }, + "B45l": { + "eco": "B45l", + "fen": "r1bqkb1r/p2p1ppp/2p1pn2/4P3/8/2N5/PPP2PPP/R1BQKB1R b KQkq - 0 7", + "hash": 14922706758030225336, + "name": "Sicilian: Taimanov, Four Knights, 6.Nxc6 bxc6 7.e5" + }, + "B45m": { + "eco": "B45m", + "fen": "r1bqkb1r/p2p1ppp/2p1p3/3nP3/4N3/8/PPP2PPP/R1BQKB1R b KQkq - 2 8", + "hash": 1540736029369241893, + "name": "Sicilian: Taimanov, Four Knights, 6.Nxc6 bxc6 7.e5 Nd5 8.Ne4" + }, + "B45n": { + "eco": "B45n", + "fen": "r1b1kb1r/p1qp1ppp/2p1p3/3nP3/4N3/8/PPP2PPP/R1BQKB1R w KQkq - 3 9", + "hash": 1404828827065540132, + "name": "Sicilian: Taimanov, Four Knights, 6.Nxc6 bxc6 7.e5 Nd5 8.Ne4 Qc7" + }, + "B45o": { + "eco": "B45o", + "fen": "r1bqkb1r/pp1p1ppp/2n1pn2/1N6/4P3/2N5/PPP2PPP/R1BQKB1R b KQkq - 4 6", + "hash": 14564502808662847796, + "name": "Sicilian: Taimanov, Four Knights, 6.Ndb5" + }, + "B45p": { + "eco": "B45p", + "fen": "r1bqk2r/pp1p1ppp/2n1pn2/1N6/1b2P3/2N5/PPP2PPP/R1BQKB1R w KQkq - 5 7", + "hash": 242889975068162326, + "name": "Sicilian: Taimanov, Four Knights, 6.Ndb5 Bb4" + }, + "B45q": { + "eco": "B45q", + "fen": "r1bqk2r/pp1p1ppp/2nNpn2/8/1b2P3/2N5/PPP2PPP/R1BQKB1R b KQkq - 6 7", + "hash": 9802761639032932468, + "name": "Sicilian: Taimanov, Four Knights, American Attack" + }, + "B45r": { + "eco": "B45r", + "fen": "r1bqk2r/pp1p1ppp/2n1pn2/1N6/1b2P3/P1N5/1PP2PPP/R1BQKB1R b KQkq - 0 7", + "hash": 14466364661403776854, + "name": "Sicilian: Taimanov, Four Knights, 6.Ndb5 Bb4 7.a3" + }, + "B45s": { + "eco": "B45s", + "fen": "r1bqk2r/pp3ppp/2n1pn2/3p4/4P3/P1N5/1PP2PPP/R1BQKB1R w KQkq d6 0 9", + "hash": 10282499187654258223, + "name": "Sicilian: Taimanov, Four Knights, 6.Ndb5 Bb4 7.a3 Bxc3+ 8.Nxc3 d5" + }, + "B45t": { + "eco": "B45t", + "fen": "r1bqk2r/pp3ppp/2n2n2/3p4/8/P1N5/1PP2PPP/R1BQKB1R w KQkq - 0 10", + "hash": 10842720676131204322, + "name": "Sicilian: Taimanov, Four Knights, 6.Ndb5 Bb4 7.a3, 9.ed5 ed5" + }, + "B45u": { + "eco": "B45u", + "fen": "r1bq1rk1/pp3ppp/2n2n2/3p4/8/P1NB4/1PP2PPP/R1BQK2R w KQ - 2 11", + "hash": 14545598839324952442, + "name": "Sicilian: Taimanov, Four Knights, 6.Ndb5 Bb4 7.a3, 9.ed5 ed5 10.Bd3 O-O" + }, + "B45v": { + "eco": "B45v", + "fen": "r1bq1rk1/pp3ppp/2n2n2/8/3p4/P1NB4/1PP2PPP/R1BQ1RK1 w - - 0 12", + "hash": 6180144091314042509, + "name": "Sicilian: Taimanov, Four Knights, 6.Ndb5 Bb4 7.a3, 10.Bd3 O-O 11.O-O d4" + }, + "B45w": { + "eco": "B45w", + "fen": "r1bq1rk1/pp3ppp/2n2n2/8/3p4/P2B4/1PP1NPPP/R1BQ1RK1 b - - 1 12", + "hash": 16564085843551047213, + "name": "Sicilian: Taimanov, Four Knights, 6.Ndb5 Bb4 7.a3, 10.Bd3 O-O 11.O-O d4 12.Ne2" + }, + "B46a": { + "eco": "B46a", + "fen": "r1bqkbnr/1p1p1ppp/p1n1p3/8/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 0 6", + "hash": 13145071938140221992, + "name": "Sicilian: Taimanov, 5...a6" + }, + "B46b": { + "eco": "B46b", + "fen": "r1bqkbnr/1p1p1ppp/p1n1p3/8/3NPP2/2N5/PPP3PP/R1BQKB1R b KQkq f3 0 6", + "hash": 5438888495351107489, + "name": "Sicilian: Taimanov, 5...a6 6.f4" + }, + "B46c": { + "eco": "B46c", + "fen": "r1bqkbnr/1p1p1ppp/p1N1p3/8/4P3/2N5/PPP2PPP/R1BQKB1R b KQkq - 0 6", + "hash": 18081408345710377757, + "name": "Sicilian: Taimanov, 5...a6 6.Nxc6" + }, + "B46d": { + "eco": "B46d", + "fen": "r1bqkbnr/3p1ppp/p1p1p3/8/4P3/2NB4/PPP2PPP/R1BQK2R b KQkq - 1 7", + "hash": 8247613616513233637, + "name": "Sicilian: Taimanov, 5...a6 6.Nxc6 bxc6 7.Bd3" + }, + "B46e": { + "eco": "B46e", + "fen": "r1bqkbnr/5ppp/p1p1p3/3p4/4P3/2NB4/PPP2PPP/R1BQK2R w KQkq d6 0 8", + "hash": 17807033873883102403, + "name": "Sicilian: Taimanov, 5...a6 6.Nxc6 bxc6 7.Bd3 d5" + }, + "B46f": { + "eco": "B46f", + "fen": "r1bqkbnr/1p1p1ppp/p1n1p3/8/3NP3/2N3P1/PPP2P1P/R1BQKB1R b KQkq - 0 6", + "hash": 11135737260213430800, + "name": "Sicilian: Taimanov, 5...a6 6.g3" + }, + "B46g": { + "eco": "B46g", + "fen": "r1bqkb1r/1p1pnppp/p1n1p3/8/3NP3/2N3P1/PPP2P1P/R1BQKB1R w KQkq - 1 7", + "hash": 11873083684323320237, + "name": "Sicilian: Taimanov, 5...a6 6.g3 Nge7" + }, + "B46h": { + "eco": "B46h", + "fen": "r1bqkbnr/1p3ppp/p1npp3/8/3NP3/2N3P1/PPP2P1P/R1BQKB1R w KQkq - 0 7", + "hash": 11759039811386745725, + "name": "Sicilian: Taimanov, 5...a6 6.g3 d6" + }, + "B46i": { + "eco": "B46i", + "fen": "r1bqkbnr/1p1p1ppp/p1n1p3/8/3NP3/2N1B3/PPP2PPP/R2QKB1R b KQkq - 1 6", + "hash": 14223518419910109606, + "name": "Sicilian: Taimanov, 5...a6 6.Be3" + }, + "B46j": { + "eco": "B46j", + "fen": "r1bqkbnr/1p3ppp/p1npp3/8/3NP3/2N1B3/PPP2PPP/R2QKB1R w KQkq - 0 7", + "hash": 18221142727738777803, + "name": "Sicilian: Taimanov, 5...a6 6.Be3 d6" + }, + "B46k": { + "eco": "B46k", + "fen": "r1bqkb1r/1p1pnppp/p1n1p3/8/3NP3/2N1B3/PPP2PPP/R2QKB1R w KQkq - 2 7", + "hash": 18098746551894417947, + "name": "Sicilian: Taimanov, 5...a6 6.Be3 Nge7" + }, + "B46l": { + "eco": "B46l", + "fen": "r1bqkb1r/1p1p1ppp/p1n1pn2/8/3NP3/2N1B3/PPP2PPP/R2QKB1R w KQkq - 2 7", + "hash": 11423981136453167152, + "name": "Sicilian: Taimanov, 5...a6 6.Be3 Nf6" + }, + "B46m": { + "eco": "B46m", + "fen": "r1bqkbnr/1p1p1ppp/p1n1p3/8/3NP3/2N5/PPP1BPPP/R1BQK2R b KQkq - 1 6", + "hash": 14261825458707953803, + "name": "Sicilian: Taimanov, 5...a6 6.Be2" + }, + "B46n": { + "eco": "B46n", + "fen": "r1bqkb1r/1p1p1ppp/p1n1pn2/8/3NP3/2N5/PPP1BPPP/R1BQK2R w KQkq - 2 7", + "hash": 11385691689840720157, + "name": "Sicilian: Taimanov, 5...a6 6.Be2 Nf6" + }, + "B46o": { + "eco": "B46o", + "fen": "r1bqkb1r/1p1pnppp/p1n1p3/8/3NP3/2N5/PPP1BPPP/R1BQK2R w KQkq - 2 7", + "hash": 18132497107131659062, + "name": "Sicilian: Taimanov, 5...a6 6.Be2 Nge7" + }, + "B46p": { + "eco": "B46p", + "fen": "r1bqkb1r/1p1pnppp/p1n1p3/8/3NP3/2N5/PPP1BPPP/R1BQ1RK1 b kq - 3 7", + "hash": 9644152083042183206, + "name": "Sicilian: Taimanov, 5...a6 6.Be2 Nge7 7.O-O" + }, + "B46q": { + "eco": "B46q", + "fen": "r1bqkb1r/1p1pnppp/p1n1p3/8/3NP3/2N1B3/PPP1BPPP/R2QK2R b KQkq - 3 7", + "hash": 9848011052231125176, + "name": "Sicilian: Taimanov, 5...a6 6.Be2 Nge7 7.Be3" + }, + "B46r": { + "eco": "B46r", + "fen": "r1bqkbnr/1p3ppp/p1npp3/8/3NP3/2N5/PPP1BPPP/R1BQK2R w KQkq - 0 7", + "hash": 18182923752949461478, + "name": "Sicilian: Taimanov, 5...a6 6.Be2 d6" + }, + "B47a": { + "eco": "B47a", + "fen": "r1b1kbnr/ppqp1ppp/2n1p3/8/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 3 6", + "hash": 7098908428682528245, + "name": "Sicilian: Taimanov, Bastrikov Variation" + }, + "B47b": { + "eco": "B47b", + "fen": "r1b1kbnr/ppqp1ppp/2N1p3/8/4P3/2N5/PPP2PPP/R1BQKB1R b KQkq - 0 6", + "hash": 3316584216156835008, + "name": "Sicilian: Taimanov, 6.Nxc6" + }, + "B47c": { + "eco": "B47c", + "fen": "r1b1kbnr/ppqp1ppp/2n1p3/1N6/4P3/2N5/PPP2PPP/R1BQKB1R b KQkq - 4 6", + "hash": 10947839441107304355, + "name": "Sicilian: Taimanov, 6.Ndb5" + }, + "B47d": { + "eco": "B47d", + "fen": "r1b1kbnr/ppqp1ppp/2n1p3/8/3NPP2/2N5/PPP3PP/R1BQKB1R b KQkq f3 0 6", + "hash": 11498286435358161020, + "name": "Sicilian: Taimanov, 6.f4" + }, + "B47e": { + "eco": "B47e", + "fen": "r1b1kbnr/1pqp1ppp/p1n1p3/8/3NPP2/2N5/PPP3PP/R1BQKB1R w KQkq - 0 7", + "hash": 5577126927654174880, + "name": "Sicilian: Taimanov, 6.f4 a6" + }, + "B47f": { + "eco": "B47f", + "fen": "r1b1kbnr/1pqp1ppp/p1N1p3/8/4PP2/2N5/PPP3PP/R1BQKB1R b KQkq - 0 7", + "hash": 137169827482814869, + "name": "Sicilian: Taimanov, 6.f4 a6 7.Nxc6" + }, + "B47g": { + "eco": "B47g", + "fen": "r1b1kbnr/ppqp1ppp/2n1p3/8/3NP3/2N3P1/PPP2P1P/R1BQKB1R b KQkq - 0 6", + "hash": 5648315319135100365, + "name": "Sicilian: Taimanov, 6.g3" + }, + "B47h": { + "eco": "B47h", + "fen": "r1b1kbnr/1pqp1ppp/p1n1p3/8/3NP3/2N3P1/PPP2P1P/R1BQKB1R w KQkq - 0 7", + "hash": 11282969696297624849, + "name": "Sicilian: Taimanov, 6.g3 a6" + }, + "B47i": { + "eco": "B47i", + "fen": "r1b1kbnr/1pq2ppp/p1npp3/8/3NP3/2N3P1/PPP2PBP/R1BQK2R w KQkq - 0 8", + "hash": 1215862172249535493, + "name": "Sicilian: Taimanov, 6.g3 a6 7.Bg2 d6" + }, + "B47j": { + "eco": "B47j", + "fen": "r3kbnr/1pqb1ppp/p1npp3/8/3NP3/2N3P1/PPP2PBP/R1BQ1RK1 w kq - 2 9", + "hash": 10118208830185520932, + "name": "Sicilian: Taimanov, 6.g3 a6 7.Bg2 d6 8.O-O Bd7" + }, + "B47k": { + "eco": "B47k", + "fen": "r3kbnr/1pqb1ppp/p1npp3/8/3NP3/2N3P1/PPP2PBP/R1BQR1K1 b kq - 3 9", + "hash": 639255893049152560, + "name": "Sicilian: Taimanov, 6.g3 a6 7.Bg2 d6 8.O-O Bd7 9.Re1" + }, + "B47l": { + "eco": "B47l", + "fen": "r1b1kb1r/1pqp1ppp/p1n1pn2/8/3NP3/2N3P1/PPP2PBP/R1BQK2R w KQkq - 2 8", + "hash": 8253759600466509054, + "name": "Sicilian: Taimanov, 6.g3 a6 7.Bg2 Nf6" + }, + "B47m": { + "eco": "B47m", + "fen": "r1b1kb1r/1pqp1ppp/p1n1pn2/8/3NP3/2N3P1/PPP2PBP/R1BQ1RK1 b kq - 3 8", + "hash": 936262275230427118, + "name": "Sicilian: Taimanov, 6.g3 a6 7.Bg2 Nf6 8.O-O" + }, + "B47n": { + "eco": "B47n", + "fen": "r1b1k2r/1pqp1ppp/p1n1pn2/2b5/3NP3/2N3P1/PPP2PBP/R1BQ1RK1 w kq - 4 9", + "hash": 11665169452173331821, + "name": "Sicilian: Taimanov, 6.g3 a6 7.Bg2 Nf6 8.O-O Bc5" + }, + "B47o": { + "eco": "B47o", + "fen": "r1b1k2r/1pqpbppp/p1n1pn2/8/3NP3/2N3P1/PPP2PBP/R1BQ1RK1 w kq - 4 9", + "hash": 1743515911431572351, + "name": "Sicilian: Taimanov, 6.g3 a6 7.Bg2 Nf6 8.O-O Be7" + }, + "B47p": { + "eco": "B47p", + "fen": "r1b1k2r/1pqpbppp/p1n1pn2/8/3NP3/2N3P1/PPP2PBP/R1BQR1K1 b kq - 5 9", + "hash": 11278764921962520683, + "name": "Sicilian: Taimanov, 6.g3 a6 7.Bg2 Nf6 8.O-O Be7 9.Re1" + }, + "B47q": { + "eco": "B47q", + "fen": "r1b1kbnr/ppqp1ppp/2n1p3/8/3NP3/2N5/PPP1BPPP/R1BQK2R b KQkq - 4 6", + "hash": 1226351717336174422, + "name": "Sicilian: Taimanov, 6.Be2" + }, + "B47r": { + "eco": "B47r", + "fen": "r1b1kbnr/1pqp1ppp/p1n1p3/8/3NP3/2N5/PPP1BPPP/R1BQK2R w KQkq - 0 7", + "hash": 14119648568363169674, + "name": "Sicilian: Taimanov, 6.Be2 a6" + }, + "B47s": { + "eco": "B47s", + "fen": "r1b1kbnr/1pqp1ppp/p1n1p3/8/3NPP2/2N5/PPP1B1PP/R1BQK2R b KQkq f3 0 7", + "hash": 4532148022912649731, + "name": "Sicilian: Taimanov, 6.Be2 a6 7.f4" + }, + "B47t": { + "eco": "B47t", + "fen": "r1b1kbnr/1pqp1ppp/p1n1p3/8/3NP3/2N5/PPP1BPPP/R1BQ1RK1 b kq - 1 7", + "hash": 13656720173364702362, + "name": "Sicilian: Taimanov, 6.Be2 a6 7.O-O" + }, + "B47u": { + "eco": "B47u", + "fen": "r1b1kbnr/2qp1ppp/p1n1p3/1p6/3NP3/2N5/PPP1BPPP/R1BQ1RK1 w kq b6 0 8", + "hash": 15961320792549872039, + "name": "Sicilian: Taimanov, 6.Be2 a6 7.O-O b5" + }, + "B47v": { + "eco": "B47v", + "fen": "r1b1kb1r/1pqp1ppp/p1n1pn2/8/3NP3/2N5/PPP1BPPP/R1BQ1RK1 w kq - 2 8", + "hash": 16602623730562772236, + "name": "Sicilian: Taimanov, 6.Be2 a6 7.O-O Nf6" + }, + "B47w": { + "eco": "B47w", + "fen": "r1b1kb1r/1pqp1ppp/p1n1pn2/8/3NP3/2N5/PPP1BPPP/R1BQ1R1K b kq - 3 8", + "hash": 15547391265150373699, + "name": "Sicilian: Taimanov, 6.Be2 a6 7.O-O Nf6 8.Kh1" + }, + "B47x": { + "eco": "B47x", + "fen": "r1b1k2r/1pqpbppp/p1n1pn2/8/3NP3/2N5/PPP1BPPP/R1BQ1R1K w kq - 4 9", + "hash": 14055486036212392914, + "name": "Sicilian: Taimanov, 6.Be2 a6 7.O-O Nf6 8.Kh1 Be7" + }, + "B47y": { + "eco": "B47y", + "fen": "r1b1kb1r/1pqp1ppp/p3pn2/8/3nP3/2N5/PPP1BPPP/R1BQ1R1K w kq - 0 9", + "hash": 8836318092662257152, + "name": "Sicilian: Taimanov, 6.Be2 a6 7.O-O Nf6 8.Kh1 Nxd4" + }, + "B47z": { + "eco": "B47z", + "fen": "r1b1k2r/2qp1ppp/p3pn2/1pb5/4PP2/2NQ4/PPP1B1PP/R1B2R1K b kq f3 0 11", + "hash": 9933694853940470685, + "name": "Sicilian: Taimanov, 6.Be2 a6 7.O-O Nf6 8.Kh1 Nxd4, 10.Qd3 b5 11.f4" + }, + "B48a": { + "eco": "B48a", + "fen": "r1b1kbnr/ppqp1ppp/2n1p3/8/3NP3/2N1B3/PPP2PPP/R2QKB1R b KQkq - 4 6", + "hash": 1264623597534322299, + "name": "Sicilian: Taimanov, 6.Be3" + }, + "B48b": { + "eco": "B48b", + "fen": "r1b1kb1r/ppqp1ppp/2n1pn2/8/3NP3/2N1B3/PPP2PPP/R2QKB1R w KQkq - 5 7", + "hash": 5360106556533137389, + "name": "Sicilian: Taimanov, 6.Be3 Nf6" + }, + "B48c": { + "eco": "B48c", + "fen": "r1b1kbnr/1pqp1ppp/p1n1p3/8/3NP3/2N1B3/PPP2PPP/R2QKB1R w KQkq - 0 7", + "hash": 14085897914341451431, + "name": "Sicilian: Taimanov, 6.Be3 a6" + }, + "B48d": { + "eco": "B48d", + "fen": "r1b1kbnr/1pqp1ppp/p1n1p3/8/3NP3/P1N1B3/1PP2PPP/R2QKB1R b KQkq - 0 7", + "hash": 641508562965653735, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.a3" + }, + "B48e": { + "eco": "B48e", + "fen": "r1b1kbnr/1pqp1ppp/p1n1p3/8/3NPP2/2N1B3/PPP3PP/R2QKB1R b KQkq f3 0 7", + "hash": 4498344549381167918, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.f4" + }, + "B48f": { + "eco": "B48f", + "fen": "r1b1kbnr/2qp1ppp/p1n1p3/1p6/3NPP2/2N1B3/PPP3PP/R2QKB1R w KQkq b6 0 8", + "hash": 6803037557568333331, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.f4 b5" + }, + "B48g": { + "eco": "B48g", + "fen": "r1b1kbnr/1pqp1ppp/p1n1p3/8/3NP3/2N1B3/PPPQ1PPP/R3KB1R b KQkq - 1 7", + "hash": 16961512815129344263, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Qd2" + }, + "B48h": { + "eco": "B48h", + "fen": "r1b1kb1r/1pqp1ppp/p1n1pn2/8/3NP3/2N1BP2/PPPQ2PP/R3KB1R b KQkq - 0 8", + "hash": 16013873172318623712, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Qd2 Nf6 8.f3" + }, + "B48i": { + "eco": "B48i", + "fen": "r1b1kbnr/1pqp1ppp/p1n1p3/8/3NP3/2NBB3/PPP2PPP/R2QK2R b KQkq - 1 7", + "hash": 10842002858039846100, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Bd3" + }, + "B48j": { + "eco": "B48j", + "fen": "r1b1kbnr/2qp1ppp/p1n1p3/1p6/3NP3/2NBB3/PPP2PPP/R2QK2R w KQkq b6 0 8", + "hash": 17758504987007228393, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 b5" + }, + "B48k": { + "eco": "B48k", + "fen": "r1b1kbnr/2qp1ppp/p1N1p3/1p6/4P3/2NBB3/PPP2PPP/R2QK2R b KQkq - 0 8", + "hash": 13470370307768684764, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 b5 8.Nxc6" + }, + "B48l": { + "eco": "B48l", + "fen": "r1b1kbnr/2qp1ppp/p1n1p3/1p6/3NP3/2NBB3/PPP2PPP/R2Q1RK1 b kq - 1 8", + "hash": 9801971365184684793, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 b5 8.O-O" + }, + "B48m": { + "eco": "B48m", + "fen": "r1b1kb1r/1pqp1ppp/p1n1pn2/8/3NP3/2NBB3/PPP2PPP/R2QK2R w KQkq - 2 8", + "hash": 14814798585484698946, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6" + }, + "B48n": { + "eco": "B48n", + "fen": "r1b1kb1r/1pqp1ppp/p1n1pn2/8/3NP3/2NBB3/PPP2PPP/R2Q1RK1 b kq - 3 8", + "hash": 12965238693969641042, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O" + }, + "B48o": { + "eco": "B48o", + "fen": "r1b1kb1r/1pqp1ppp/p3pn2/8/3nP3/2NBB3/PPP2PPP/R2Q1RK1 w kq - 0 9", + "hash": 2201770249291073297, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O Nxd4" + }, + "B48p": { + "eco": "B48p", + "fen": "r1b1kb1r/1pqp1pp1/p1n1pn2/7p/3NP3/2NBB3/PPP2PPP/R2Q1RK1 w kq h6 0 9", + "hash": 12588503915233091365, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O h5" + }, + "B48q": { + "eco": "B48q", + "fen": "r1b1kb1r/2qp1ppp/p1n1pn2/1p6/3NP3/2NBB3/PPP2PPP/R2Q1RK1 w kq b6 0 9", + "hash": 15269927273543238511, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O b5" + }, + "B48r": { + "eco": "B48r", + "fen": "r1b1k2r/1pqp1ppp/p1nbpn2/8/3NP3/2NBB3/PPP2PPP/R2Q1RK1 w kq - 4 9", + "hash": 1708458983908405110, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O Bd6" + }, + "B48s": { + "eco": "B48s", + "fen": "r1b1kb1r/1pqp1ppp/p3pn2/4n3/3NP3/2NBB3/PPP2PPP/R2Q1RK1 w kq - 4 9", + "hash": 4877638837064078386, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O Ne5" + }, + "B48t": { + "eco": "B48t", + "fen": "r1b1kb1r/1pqp1ppp/p3pn2/4n3/3NP3/2NBB2P/PPP2PP1/R2Q1RK1 b kq - 0 9", + "hash": 12340715182974655936, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O Ne5 9.h3" + }, + "B48u": { + "eco": "B48u", + "fen": "r1b1k2r/1pqp1ppp/p3pn2/2b1n3/3NP3/2NBB2P/PPP2PP1/R2Q1RK1 w kq - 1 10", + "hash": 458878192737564483, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O Ne5 9.h3 Bc5" + }, + "B48v": { + "eco": "B48v", + "fen": "r1b1k2r/1pqp1ppp/p3pn2/2b1n3/3NP3/2NBB2P/PPP2PP1/R2Q1R1K b kq - 2 10", + "hash": 4032253157775840524, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Bd3 Nf6 8.O-O Ne5 9.h3 Bc5 10.Kh1" + }, + "B49a": { + "eco": "B49a", + "fen": "r1b1kbnr/1pqp1ppp/p1n1p3/8/3NP3/2N1B3/PPP1BPPP/R2QK2R b KQkq - 1 7", + "hash": 12752974222999530500, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Be2" + }, + "B49b": { + "eco": "B49b", + "fen": "r1b1kbnr/2qp1ppp/p1n1p3/1p6/3NP3/2N1B3/PPP1BPPP/R2QK2R w KQkq b6 0 8", + "hash": 15059967237432807737, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Be2 b5" + }, + "B49c": { + "eco": "B49c", + "fen": "r1b1kb1r/1pqp1ppp/p1n1pn2/8/3NP3/2N1B3/PPP1BPPP/R2QK2R w KQkq - 2 8", + "hash": 16939619886725066130, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6" + }, + "B49d": { + "eco": "B49d", + "fen": "r1b1kb1r/1pqp1ppp/p1n1pn2/8/3NP3/P1N1B3/1PP1BPPP/R2QK2R b KQkq - 0 8", + "hash": 2344598248035935186, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.a3" + }, + "B49e": { + "eco": "B49e", + "fen": "r1b1k2r/1pqpbppp/p1n1pn2/8/3NP3/P1N1B3/1PP1BPPP/R2QK2R w KQkq - 1 9", + "hash": 3766658834987536195, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.a3 Be7" + }, + "B49f": { + "eco": "B49f", + "fen": "r1b1kb1r/1pqp1ppp/p1n1pn2/8/3NP3/2N1B3/PPP1BPPP/R2Q1RK1 b kq - 3 8", + "hash": 10763855709437179522, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O" + }, + "B49g": { + "eco": "B49g", + "fen": "r1b1k2r/1pqpbppp/p1n1pn2/8/3NP3/2N1B3/PPP1BPPP/R2Q1RK1 w kq - 4 9", + "hash": 9344008609244879379, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O Be7" + }, + "B49h": { + "eco": "B49h", + "fen": "r1b1k2r/1pqp1ppp/p1n1pn2/8/1b1NP3/2N1B3/PPP1BPPP/R2Q1RK1 w kq - 4 9", + "hash": 6638742061806255776, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O Bb4" + }, + "B49i": { + "eco": "B49i", + "fen": "r1b1k2r/1pqp1ppp/p1N1pn2/8/1b2P3/2N1B3/PPP1BPPP/R2Q1RK1 b kq - 0 9", + "hash": 1198855682602039189, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O Bb4 9.Nxc6" + }, + "B49j": { + "eco": "B49j", + "fen": "r1b1k2r/1pqp1ppp/p1n1pn2/8/Nb1NP3/4B3/PPP1BPPP/R2Q1RK1 b kq - 5 9", + "hash": 11508216360170634730, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O Bb4 9.Na4" + }, + "B49k": { + "eco": "B49k", + "fen": "r1b2rk1/1pqp1ppp/p1n1pn2/8/Nb1NP3/4B3/PPP1BPPP/R2Q1RK1 w - - 6 10", + "hash": 10744894342051582977, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O Bb4 9.Na4 O-O" + }, + "B49l": { + "eco": "B49l", + "fen": "r1b1k2r/1pqpbppp/p1n1pn2/8/N2NP3/4B3/PPP1BPPP/R2Q1RK1 w kq - 6 10", + "hash": 13469801999183961168, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O Bb4 9.Na4 Be7" + }, + "B49m": { + "eco": "B49m", + "fen": "r1b1k2r/1pqpbppp/p1N1pn2/8/N3P3/4B3/PPP1BPPP/R2Q1RK1 b kq - 0 10", + "hash": 17756820121644488037, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O Bb4 9.Na4 Be7 10.Nxc6" + }, + "B49n": { + "eco": "B49n", + "fen": "r1b1k2r/2qpbppp/pNp1pn2/8/4P3/4B3/PPP1BPPP/R2Q1RK1 b kq - 1 11", + "hash": 10294942982698923645, + "name": "Sicilian: Taimanov, 6.Be3 a6 7.Be2 Nf6 8.O-O Bb4 9.Na4 Be7 10.Nxc6 bxc6 11.Nb6" + }, + "B50a": { + "eco": "B50a", + "fen": "rnbqkbnr/pp2pppp/3p4/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 0 3", + "hash": 9697147653288649403, + "name": "Sicilian: 2.Nf3 d6" + }, + "B50b": { + "eco": "B50b", + "fen": "rnbqkbnr/pp2pppp/3p4/2p5/1P2P3/5N2/P1PP1PPP/RNBQKB1R b KQkq b3 0 3", + "hash": 3199321298215767711, + "name": "Sicilian: Wing Gambit deferred" + }, + "B50c": { + "eco": "B50c", + "fen": "rnbqkbnr/pp2pppp/3p4/2p5/4P3/1P3N2/P1PP1PPP/RNBQKB1R b KQkq - 0 3", + "hash": 735582338716862934, + "name": "Sicilian: 2.Nf3 d6 3.b3" + }, + "B50d": { + "eco": "B50d", + "fen": "rnbqkbnr/pp3ppp/3pp3/2p5/4P3/1P3N2/P1PP1PPP/RNBQKB1R w KQkq - 0 4", + "hash": 8953897183642884484, + "name": "Sicilian: 2.Nf3 d6 3.b3 e6" + }, + "B50e": { + "eco": "B50e", + "fen": "rnbqkbnr/pp2pppp/3p4/2p5/4P3/3P1N2/PPP2PPP/RNBQKB1R b KQkq - 0 3", + "hash": 2898052878249285999, + "name": "Sicilian: 2.Nf3 d6 3.d3" + }, + "B50f": { + "eco": "B50f", + "fen": "rnbqkbnr/pp2pppp/3p4/2p5/4P3/5NP1/PPPP1P1P/RNBQKB1R b KQkq - 0 3", + "hash": 12282876564116322947, + "name": "Sicilian: 2.Nf3 d6 3.g3" + }, + "B50g": { + "eco": "B50g", + "fen": "rnbqkbnr/pp2pppp/3p4/2p5/2B1P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 1 3", + "hash": 16510341651073053725, + "name": "Sicilian: 2.Nf3 d6 3.Bc4" + }, + "B50h": { + "eco": "B50h", + "fen": "rnbqkb1r/pp2pppp/3p1n2/2p5/2B1P3/3P1N2/PPP2PPP/RNBQK2R b KQkq - 0 4", + "hash": 1182884714632007263, + "name": "Sicilian: 2.Nf3 d6 3.Bc4 Nf6 4.d3" + }, + "B50i": { + "eco": "B50i", + "fen": "rnbqkbnr/pp2pppp/3p4/2p5/4P3/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 1 3", + "hash": 9008370009040937058, + "name": "Sicilian: 2.Nf3 d6 3.Nc3" + }, + "B50j": { + "eco": "B50j", + "fen": "rnbqkbnr/pp3ppp/3pp3/2p5/4P3/2N2N2/PPPP1PPP/R1BQKB1R w KQkq - 0 4", + "hash": 825243925660332080, + "name": "Sicilian: 2.Nf3 d6 3.Nc3 e6" + }, + "B50k": { + "eco": "B50k", + "fen": "rnbqkb1r/pp2pppp/3p1n2/2p5/4P3/2N2N2/PPPP1PPP/R1BQKB1R w KQkq - 2 4", + "hash": 2804084774225879540, + "name": "Sicilian: 2.Nf3 d6 3.Nc3 Nf6" + }, + "B50l": { + "eco": "B50l", + "fen": "rnbqkbnr/pp2pppp/3p4/2p5/4P3/2P2N2/PP1P1PPP/RNBQKB1R b KQkq - 0 3", + "hash": 17314591181572173117, + "name": "Sicilian: 2.Nf3 d6 3.c3" + }, + "B50m": { + "eco": "B50m", + "fen": "rnbqkb1r/pp2pppp/3p1n2/2p5/4P3/2P2N2/PP1P1PPP/RNBQKB1R w KQkq - 1 4", + "hash": 12369131999015873707, + "name": "Sicilian: 2.Nf3 d6 3.c3 Nf6" + }, + "B50n": { + "eco": "B50n", + "fen": "rnbqkb1r/pp2pppp/3p1n2/2p5/4P3/2P2N1P/PP1P1PP1/RNBQKB1R b KQkq - 0 4", + "hash": 4851539781464745305, + "name": "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.h3" + }, + "B50o": { + "eco": "B50o", + "fen": "r1bqkb1r/pp2pppp/2np1n2/2p5/4P3/2P2N1P/PP1P1PP1/RNBQKB1R w KQkq - 1 5", + "hash": 16769708844219646042, + "name": "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.h3 Nc6" + }, + "B50p": { + "eco": "B50p", + "fen": "rnbqkb1r/pp2pppp/3p1n2/2p5/2B1P3/2P2N2/PP1P1PPP/RNBQK2R b KQkq - 2 4", + "hash": 14417227664911890957, + "name": "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.Bc4" + }, + "B50q": { + "eco": "B50q", + "fen": "rnbqkb1r/pp2pppp/3p1n2/2p5/4P3/2PB1N2/PP1P1PPP/RNBQK2R b KQkq - 2 4", + "hash": 18350582603461095128, + "name": "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.Bd3" + }, + "B50r": { + "eco": "B50r", + "fen": "r1bqkb1r/pp2pppp/2np1n2/2p5/4P3/2PB1N2/PP1P1PPP/RNBQK2R w KQkq - 3 5", + "hash": 6145026747656260571, + "name": "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.Bd3 Nc6" + }, + "B50s": { + "eco": "B50s", + "fen": "rnbqkb1r/pp2pppp/3p1n2/2p5/4P3/2P2N2/PP1PBPPP/RNBQK2R b KQkq - 2 4", + "hash": 15575558564182713864, + "name": "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.Be2" + }, + "B50t": { + "eco": "B50t", + "fen": "r1bqkb1r/pp2pppp/2np1n2/2p5/4P3/2P2N2/PP1PBPPP/RNBQK2R w KQkq - 3 5", + "hash": 8343665014832808715, + "name": "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.Be2 Nc6" + }, + "B50u": { + "eco": "B50u", + "fen": "r1bqkb1r/pp1npppp/3p1n2/2p5/4P3/2P2N2/PP1PBPPP/RNBQK2R w KQkq - 3 5", + "hash": 16988708780207213508, + "name": "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.Be2 Nbd7" + }, + "B50v": { + "eco": "B50v", + "fen": "rnbqkb1r/pp2pp1p/3p1np1/2p5/4P3/2P2N2/PP1PBPPP/RNBQK2R w KQkq - 0 5", + "hash": 3572248024130843715, + "name": "Sicilian: 2.Nf3 d6 3.c3 Nf6 4.Be2 g6" + }, + "B50w": { + "eco": "B50w", + "fen": "rnbqk2r/pp2ppbp/3p1np1/1Bp5/4P3/2P2N2/PP1P1PPP/RNBQ1RK1 b kq - 3 6", + "hash": 5175232838954039504, + "name": "Sicilian: 2.Nf3 d6 3.c3, Torre Variation" + }, + "B51a": { + "eco": "B51a", + "fen": "rnbqkbnr/pp2pppp/3p4/1Bp5/4P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 1 3", + "hash": 13064346338305306936, + "name": "Sicilian: 3.Bb5+" + }, + "B51b": { + "eco": "B51b", + "fen": "r1bqkbnr/pp1npppp/3p4/1Bp5/4P3/2P2N2/PP1P1PPP/RNBQK2R b KQkq - 0 4", + "hash": 17326581435410420594, + "name": "Sicilian: 3.Bb5+ Nd7 4.c3" + }, + "B51c": { + "eco": "B51c", + "fen": "r1bqkbnr/pp1npppp/3p4/1Bp5/4P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 3 4", + "hash": 17932174484132317156, + "name": "Sicilian: 3.Bb5+ Nd7 4.O-O" + }, + "B51d": { + "eco": "B51d", + "fen": "r1bqkb1r/pp1npppp/3p1n2/1Bp5/4P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 4 5", + "hash": 11760540588447729266, + "name": "Sicilian: 3.Bb5+ Nd7 4.O-O Nf6" + }, + "B51e": { + "eco": "B51e", + "fen": "r1bqkb1r/1p1npppp/p2p1n2/2p5/4P3/5N2/PPPP1PPP/RNBQRBK1 b kq - 1 6", + "hash": 14314968002529936953, + "name": "Sicilian: 3.Bb5+ Nd7 4.O-O Nf6 5.Re1 a6 6.Bf1" + }, + "B51f": { + "eco": "B51f", + "fen": "r1bqkbnr/pp1npppp/3p4/1Bp5/3PP3/5N2/PPP2PPP/RNBQK2R b KQkq d3 0 4", + "hash": 4871686644731556278, + "name": "Sicilian: 3.Bb5+ Nd7 4.d4" + }, + "B51g": { + "eco": "B51g", + "fen": "r1bqkb1r/pp1npppp/3p1n2/1Bp5/3PP3/5N2/PPP2PPP/RNBQK2R w KQkq - 1 5", + "hash": 1762457510176321568, + "name": "Sicilian: 3.Bb5+ Nd7 4.d4 Nf6" + }, + "B51h": { + "eco": "B51h", + "fen": "r1bqkb1r/pp1npppp/3p1n2/1Bp5/3PP3/2N2N2/PPP2PPP/R1BQK2R b KQkq - 2 5", + "hash": 16420855855838524153, + "name": "Sicilian: 3.Bb5+ Nd7 4.d4 Nf6 5.Nc3" + }, + "B51i": { + "eco": "B51i", + "fen": "r1bqkb1r/pp1npppp/3p1n2/1B6/3pP3/2N2N2/PPP2PPP/R1BQK2R w KQkq - 0 6", + "hash": 13617798213704719167, + "name": "Sicilian: 3.Bb5+ Nd7 4.d4 Nf6 5.Nc3 cxd4" + }, + "B51j": { + "eco": "B51j", + "fen": "r1bqkb1r/pp1n1ppp/3p1n2/1B2p3/3QP3/2N2N2/PPP2PPP/R1B1K2R w KQkq e6 0 7", + "hash": 5418741699120041012, + "name": "Sicilian: 3.Bb5+ Nd7 4.d4 Nf6 5.Nc3 cxd4 6.Qxd4 e5" + }, + "B51k": { + "eco": "B51k", + "fen": "r1bqkbnr/pp2pppp/2np4/1Bp5/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 2 4", + "hash": 2206826647629157435, + "name": "Sicilian: 3.Bb5+ Nc6" + }, + "B51l": { + "eco": "B51l", + "fen": "r1bqkbnr/pp2pppp/2Bp4/2p5/4P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 0 4", + "hash": 5732804984213046272, + "name": "Sicilian: 3.Bb5+ Nc6 4.Bxc6+" + }, + "B51m": { + "eco": "B51m", + "fen": "r1bqkbnr/pp2pppp/2np4/1Bp5/4P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 3 4", + "hash": 6977555837124251435, + "name": "Sicilian: 3.Bb5+ Nc6 4.O-O" + }, + "B51n": { + "eco": "B51n", + "fen": "r2qkbnr/pp1bpppp/2np4/1Bp5/4P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 4 5", + "hash": 9373323717903671066, + "name": "Sicilian: 3.Bb5+ Nc6 4.O-O Bd7" + }, + "B51o": { + "eco": "B51o", + "fen": "r2qkbnr/pp1bpppp/2np4/1Bp5/4P3/5N2/PPPP1PPP/RNBQR1K1 b kq - 5 5", + "hash": 477578140849075214, + "name": "Sicilian: 3.Bb5+ Nc6 4.O-O Bd7 5.Re1" + }, + "B51p": { + "eco": "B51p", + "fen": "r2qkbnr/1p1bpppp/p1np4/1Bp5/4P3/5N2/PPPP1PPP/RNBQR1K1 w kq - 0 6", + "hash": 15300772175584955602, + "name": "Sicilian: 3.Bb5+ Nc6 4.O-O Bd7 5.Re1 a6" + }, + "B51q": { + "eco": "B51q", + "fen": "r2qkb1r/pp1bpppp/2np1n2/1Bp5/4P3/5N2/PPPP1PPP/RNBQR1K1 w kq - 6 6", + "hash": 6723458887044216216, + "name": "Sicilian: 3.Bb5+ Nc6 4.O-O Bd7 5.Re1 Nf6" + }, + "B51r": { + "eco": "B51r", + "fen": "r2qkb1r/pp1bpppp/2np1n2/1Bp5/4P3/2P2N2/PP1P1PPP/RNBQR1K1 b kq - 0 6", + "hash": 3140274085444368926, + "name": "Sicilian: 3.Bb5+ Nc6 4.O-O Bd7 5.Re1 Nf6 6.c3" + }, + "B51s": { + "eco": "B51s", + "fen": "r2qkb1r/1p1bpppp/p1np1n2/2p5/B3P3/2P2N2/PP1P1PPP/RNBQR1K1 b kq - 1 7", + "hash": 14438752699192196072, + "name": "Sicilian: 3.Bb5+ Nc6 4.O-O Bd7 5.Re1 Nf6 6.c3 a6 7.Ba4" + }, + "B51t": { + "eco": "B51t", + "fen": "r2qkb1r/1p1bpppp/p1np1n2/2p5/4P3/2P2N2/PP1P1PPP/RNBQRBK1 b kq - 1 7", + "hash": 14608937185822560577, + "name": "Sicilian: 3.Bb5+ Nc6 4.O-O Bd7 5.Re1 Nf6 6.c3 a6 7.Bf1" + }, + "B51u": { + "eco": "B51u", + "fen": "r2qkb1r/1p2pppp/p1np1n2/2p5/4P1b1/2P2N1P/PP1P1PP1/RNBQRBK1 b kq - 0 8", + "hash": 4218344035270083425, + "name": "Sicilian: 3.Bb5+ Nc6 4.O-O Bd7 5.Re1 Nf6 6.c3 a6 7.Bf1 Bg4 8.h3" + }, + "B52a": { + "eco": "B52a", + "fen": "rn1qkbnr/pp1bpppp/3p4/1Bp5/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 2 4", + "hash": 6308451898672685321, + "name": "Sicilian: 3.Bb5+ Bd7" + }, + "B52b": { + "eco": "B52b", + "fen": "r2qkbnr/pp1npppp/3p4/2p5/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 5", + "hash": 6586469493751640690, + "name": "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Nxd7" + }, + "B52c": { + "eco": "B52c", + "fen": "r2qkbnr/pp1npppp/3p4/2p5/4P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 1 5", + "hash": 2671386850604656994, + "name": "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Nxd7 5.O-O" + }, + "B52d": { + "eco": "B52d", + "fen": "r2qkb1r/pp1npppp/3p1n2/2p5/4P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 2 6", + "hash": 9150356606893615348, + "name": "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Nxd7 5.O-O Ngf6" + }, + "B52e": { + "eco": "B52e", + "fen": "r2qkb1r/pp1npppp/3p1n2/2p5/4P3/5N2/PPPPQPPP/RNB2RK1 b kq - 3 6", + "hash": 16787756915908064112, + "name": "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Nxd7 5.O-O Ngf6 6.Qe2" + }, + "B52f": { + "eco": "B52f", + "fen": "rn2kbnr/pp1qpppp/3p4/2p5/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 5", + "hash": 8437469234707909361, + "name": "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Qxd7" + }, + "B52g": { + "eco": "B52g", + "fen": "rn2kbnr/pp1qpppp/3p4/2p5/2P1P3/5N2/PP1P1PPP/RNBQK2R b KQkq c3 0 5", + "hash": 17957108133876916726, + "name": "Sicilian: 3.Bb5+, Sokolsky Variation" + }, + "B52h": { + "eco": "B52h", + "fen": "r3kbnr/pp1qpppp/2np4/2p5/2P1P3/5N2/PP1P1PPP/RNBQK2R w KQkq - 1 6", + "hash": 5969994469348689141, + "name": "Sicilian: 3.Bb5+, Sokolsky, 5...Nc6" + }, + "B52i": { + "eco": "B52i", + "fen": "r3kbnr/pp1qpppp/2np4/2p5/2P1P3/5N2/PP1P1PPP/RNBQ1RK1 b kq - 2 6", + "hash": 3219182453035933669, + "name": "Sicilian: 3.Bb5+, Sokolsky, 5...Nc6 6.O-O" + }, + "B52j": { + "eco": "B52j", + "fen": "r3kb1r/pp1qpppp/2np1n2/2p5/2P1P3/5N2/PP1P1PPP/RNBQ1RK1 w kq - 3 7", + "hash": 8593679078599089779, + "name": "Sicilian: 3.Bb5+, Sokolsky, 5...Nc6 6.O-O Nf6" + }, + "B52k": { + "eco": "B52k", + "fen": "r3kbnr/pp1qpppp/2np4/2p5/2P1P3/2N2N2/PP1P1PPP/R1BQK2R b KQkq - 2 6", + "hash": 12199889600393627180, + "name": "Sicilian: 3.Bb5+, Sokolsky, 5...Nc6 6.Nc3" + }, + "B52l": { + "eco": "B52l", + "fen": "r3kb1r/pp1qpppp/2np1n2/2p5/2P1P3/2N2N2/PP1P1PPP/R1BQK2R w KQkq - 3 7", + "hash": 17483116696532912058, + "name": "Sicilian: 3.Bb5+, Sokolsky, 5...Nc6 6.Nc3 Nf6" + }, + "B52m": { + "eco": "B52m", + "fen": "r3kb1r/pp1qpppp/2np1n2/2p5/2P1P3/2N2N2/PP1P1PPP/R1BQ1RK1 b kq - 4 7", + "hash": 10148291345596832938, + "name": "Sicilian: 3.Bb5+, Sokolsky, 5...Nc6 6.Nc3 Nf6 7.O-O" + }, + "B52n": { + "eco": "B52n", + "fen": "rn2kbnr/pp1qpppp/3p4/2p5/4P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 1 5", + "hash": 820379318545715681, + "name": "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Qxd7 5.O-O" + }, + "B52o": { + "eco": "B52o", + "fen": "r3kbnr/pp1qpppp/2np4/2p5/4P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 2 6", + "hash": 11569547635860649186, + "name": "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Qxd7 5.O-O Nc6" + }, + "B52p": { + "eco": "B52p", + "fen": "r3kbnr/pp1qpppp/2np4/2p5/4P3/5N2/PPPP1PPP/RNBQR1K1 b kq - 3 6", + "hash": 2610756057605578742, + "name": "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Qxd7 5.O-O Nc6 6.Re1" + }, + "B52q": { + "eco": "B52q", + "fen": "r3kb1r/pp1qpppp/2np1n2/2p5/4P3/5N2/PPPP1PPP/RNBQR1K1 w kq - 4 7", + "hash": 9211392002925387360, + "name": "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Qxd7 5.O-O Nc6 6.Re1 Nf6" + }, + "B52r": { + "eco": "B52r", + "fen": "r3kbnr/pp1qpppp/2np4/2p5/4P3/2P2N2/PP1P1PPP/RNBQ1RK1 b kq - 0 6", + "hash": 15444447163808955236, + "name": "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Qxd7 5.O-O Nc6 6.c3" + }, + "B52s": { + "eco": "B52s", + "fen": "r3kb1r/pp1qpppp/2np1n2/2p5/4P3/2P2N2/PP1P1PPP/RNBQ1RK1 w kq - 1 7", + "hash": 10212904102101613298, + "name": "Sicilian: 3.Bb5+ Bd7 4.Bxd7+ Qxd7 5.O-O Nc6 6.c3 Nf6" + }, + "B52t": { + "eco": "B52t", + "fen": "r3kb1r/pp1qpppp/2np1n2/2p5/3PP3/2P2N2/PP3PPP/RNBQ1RK1 b kq d3 0 7", + "hash": 5228302592079845296, + "name": "Sicilian: 3.Bb5+, Bronstein Gambit" + }, + "B53a": { + "eco": "B53a", + "fen": "rnbqkbnr/pp2pppp/3p4/2p5/3PP3/5N2/PPP2PPP/RNBQKB1R b KQkq d3 0 3", + "hash": 4874618571889659897, + "name": "Sicilian: 2...d6 3.d4" + }, + "B53b": { + "eco": "B53b", + "fen": "rnbqkb1r/pp2pppp/3p1n2/2p5/3PP3/5N2/PPP2PPP/RNBQKB1R w KQkq - 1 4", + "hash": 1749695966245228143, + "name": "Sicilian: 2...d6 3.d4 Nf6" + }, + "B53c": { + "eco": "B53c", + "fen": "rnbqkbnr/pp2pppp/3p4/8/3pP3/5N2/PPP2PPP/RNBQKB1R w KQkq - 0 4", + "hash": 2069586508330116671, + "name": "Sicilian: 2...d6 3.d4 cxd4" + }, + "B53d": { + "eco": "B53d", + "fen": "rnbqkbnr/pp2pppp/3p4/8/3QP3/5N2/PPP2PPP/RNB1KB1R b KQkq - 0 4", + "hash": 6994004677912480002, + "name": "Sicilian, Chekhover Variation" + }, + "B53e": { + "eco": "B53e", + "fen": "rn1qkbnr/pp1bpppp/3p4/8/3QP3/5N2/PPP2PPP/RNB1KB1R w KQkq - 1 5", + "hash": 9497612640348674355, + "name": "Sicilian, Chekhover, 4...Bd7" + }, + "B53f": { + "eco": "B53f", + "fen": "rnbqkbnr/1p2pppp/p2p4/8/3QP3/5N2/PPP2PPP/RNB1KB1R w KQkq - 0 5", + "hash": 12968189623343002078, + "name": "Sicilian, Chekhover, 4...a6" + }, + "B53g": { + "eco": "B53g", + "fen": "rnbqkbnr/1p2pppp/p2p4/8/3QP3/4BN2/PPP2PPP/RN2KB1R b KQkq - 1 5", + "hash": 13902884924106353232, + "name": "Sicilian, Chekhover, 4...a6 5.Be3" + }, + "B53h": { + "eco": "B53h", + "fen": "rnbqkbnr/1p2pppp/p2p4/8/2PQP3/5N2/PP3PPP/RNB1KB1R b KQkq c3 0 5", + "hash": 4601514321540520665, + "name": "Sicilian, Chekhover, 4...a6 5.c4" + }, + "B53i": { + "eco": "B53i", + "fen": "r1bqkbnr/1p2pppp/p1np4/8/2P1P3/5N2/PP1Q1PPP/RNB1KB1R b KQkq - 2 6", + "hash": 2358968902206922927, + "name": "Sicilian, Chekhover, 4...a6 5.c4 Nc6 6.Qd2" + }, + "B53j": { + "eco": "B53j", + "fen": "r1bqkbnr/1p2pp1p/p1np2p1/8/2P1P3/5N2/PP1Q1PPP/RNB1KB1R w KQkq - 0 7", + "hash": 14486090901630431972, + "name": "Sicilian, Chekhover, 4...a6 5.c4 Nc6 6.Qd2 g6" + }, + "B53k": { + "eco": "B53k", + "fen": "rnbqkb1r/pp2pppp/3p1n2/8/3QP3/5N2/PPP2PPP/RNB1KB1R w KQkq - 1 5", + "hash": 4242820514518567060, + "name": "Sicilian, Chekhover, 4...Nf6" + }, + "B53l": { + "eco": "B53l", + "fen": "r1bqkbnr/pp2pppp/2np4/8/3QP3/5N2/PPP2PPP/RNB1KB1R w KQkq - 1 5", + "hash": 14619364786043186177, + "name": "Sicilian, Chekhover, 4...Nc6" + }, + "B53m": { + "eco": "B53m", + "fen": "r1b1kbnr/pp1qpppp/2np4/1B6/3QP3/5N2/PPP2PPP/RNB1K2R w KQkq - 3 6", + "hash": 16478669565216631501, + "name": "Sicilian: Chekhover, Zaitsev Variation" + }, + "B53n": { + "eco": "B53n", + "fen": "r2qkbnr/pp1bpppp/2np4/1B6/3QP3/5N2/PPP2PPP/RNB1K2R w KQkq - 3 6", + "hash": 2016844269020196787, + "name": "Sicilian, Chekhover, 4...Nc6 5.Bb5 Bd7" + }, + "B53o": { + "eco": "B53o", + "fen": "r2qkbnr/pp2pppp/2bp4/8/3QP3/5N2/PPP2PPP/RNB1K2R w KQkq - 0 7", + "hash": 5969183532317473723, + "name": "Sicilian, Chekhover, 4...Nc6 5.Bb5 Bd7 6.Bxc6 Bxc6" + }, + "B53p": { + "eco": "B53p", + "fen": "r2qkbnr/pp2pppp/2bp4/8/2PQP3/5N2/PP3PPP/RNB1K2R b KQkq c3 0 7", + "hash": 16065839534527172796, + "name": "Sicilian, Chekhover, 7.c4" + }, + "B53q": { + "eco": "B53q", + "fen": "r2qkb1r/pp2pp1p/2bp1np1/8/2PQP3/2N2N2/PP3PPP/R1B1K2R w KQkq - 0 9", + "hash": 10896508655071134136, + "name": "Sicilian, Chekhover, 7.c4 Nf6 8.Nc3 g6" + }, + "B53r": { + "eco": "B53r", + "fen": "r2qkbnr/pp2pppp/2bp4/8/3QP3/2N2N2/PPP2PPP/R1B1K2R b KQkq - 1 7", + "hash": 12196262814004181346, + "name": "Sicilian, Chekhover, 7.Nc3" + }, + "B53s": { + "eco": "B53s", + "fen": "r2qkb1r/pp2pppp/2bp1n2/6B1/3QP3/2N2N2/PPP2PPP/R3K2R b KQkq - 3 8", + "hash": 3816158200935670588, + "name": "Sicilian, Chekhover, 7.Nc3 Nf6 8.Bg5" + }, + "B53t": { + "eco": "B53t", + "fen": "r2qkb1r/pp3ppp/2bppn2/6B1/3QP3/2N2N2/PPP2PPP/R3K2R w KQkq - 0 9", + "hash": 4792469486258385774, + "name": "Sicilian, Chekhover, 7.Nc3 Nf6 8.Bg5 e6" + }, + "B53u": { + "eco": "B53u", + "fen": "r2qk2r/pp2bppp/2bppn2/6B1/4P3/2NQ1N2/PPP2PPP/2KR3R b kq - 3 10", + "hash": 5950989743373156805, + "name": "Sicilian, Chekhover, Main Line, 10.Qd3" + }, + "B53v": { + "eco": "B53v", + "fen": "r2qk2r/pp2bppp/2bppn2/6B1/3QP3/2N2N2/PPP2PPP/2KRR3 b kq - 3 10", + "hash": 17385248130455475580, + "name": "Sicilian, Chekhover, Main Line, 10.Rhe1" + }, + "B53w": { + "eco": "B53w", + "fen": "r2q1rk1/pp2bppp/2bppn2/6B1/3QP3/2N2N2/PPP2PPP/2KRR3 w - - 4 11", + "hash": 18152922301338451095, + "name": "Sicilian, Chekhover, Main Line, 10.Rhe1 O-O" + }, + "B53x": { + "eco": "B53x", + "fen": "r2q1rk1/pp2bppp/2bppn2/6B1/4P3/2N2N2/PPPQ1PPP/2KRR3 b - - 5 11", + "hash": 5721430900100424674, + "name": "Sicilian, Chekhover, Main Line, 11.Qd2" + }, + "B54a": { + "eco": "B54a", + "fen": "rnbqkbnr/pp2pppp/3p4/8/3NP3/8/PPP2PPP/RNBQKB1R b KQkq - 0 4", + "hash": 8875742382281503761, + "name": "Sicilian: Open, 2...d6" + }, + "B54b": { + "eco": "B54b", + "fen": "rnbqkbnr/pp3ppp/3p4/4p3/3NP3/8/PPP2PPP/RNBQKB1R w KQkq e6 0 5", + "hash": 17389788911787658279, + "name": "Sicilian: Open, 2...d6, 4...e5" + }, + "B54c": { + "eco": "B54c", + "fen": "rnbqkbnr/1p2pppp/p2p4/8/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 0 5", + "hash": 12239386686456614093, + "name": "Sicilian: Open, 2...d6, 4...a6" + }, + "B54d": { + "eco": "B54d", + "fen": "rnbqkb1r/pp2pppp/3p1n2/8/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 1 5", + "hash": 2360673860543509895, + "name": "Sicilian: Open, 2...d6, 4...Nf6" + }, + "B54e": { + "eco": "B54e", + "fen": "rnbqkb1r/pp2pppp/3p1n2/8/3NP3/3B4/PPP2PPP/RNBQK2R b KQkq - 2 5", + "hash": 8489124753087281140, + "name": "Sicilian: Open, 2...d6, 4...Nf6 5.Bd3" + }, + "B54f": { + "eco": "B54f", + "fen": "rnbqkb1r/pp2pppp/3p1n2/8/3NP3/5P2/PPP3PP/RNBQKB1R b KQkq - 0 5", + "hash": 5652908616881281782, + "name": "Sicilian: Prins (Moscow) Variation" + }, + "B54g": { + "eco": "B54g", + "fen": "rnbqkb1r/pp3ppp/3ppn2/8/3NP3/5P2/PPP3PP/RNBQKB1R w KQkq - 0 6", + "hash": 4036589067773053604, + "name": "Sicilian: Prins (Moscow), 5...e6" + }, + "B54h": { + "eco": "B54h", + "fen": "rnbqkb1r/1p2pppp/p2p1n2/8/3NP3/5P2/PPP3PP/RNBQKB1R w KQkq - 0 6", + "hash": 11278380830706426410, + "name": "Sicilian: Prins (Moscow), 5...a6" + }, + "B54i": { + "eco": "B54i", + "fen": "r1bqkb1r/pp2pppp/2np1n2/8/3NP3/5P2/PPP3PP/RNBQKB1R w KQkq - 1 6", + "hash": 16545928772057415669, + "name": "Sicilian: Prins (Moscow), 5...Nc6" + }, + "B54j": { + "eco": "B54j", + "fen": "r1bqkb1r/pp2pppp/3p1n2/8/2PnP3/5P2/PP4PP/RNBQKB1R w KQkq - 0 7", + "hash": 14186031168957918641, + "name": "Sicilian: Prins (Moscow), 5...Nc6 6.c4 Nxd4" + }, + "B54k": { + "eco": "B54k", + "fen": "r1b1kb1r/pp2pppp/1qnp1n2/8/2PNP3/5P2/PP4PP/RNBQKB1R w KQkq - 1 7", + "hash": 12556761431537730088, + "name": "Sicilian: Prins (Moscow), 5...Nc6 6.c4 Qb6" + }, + "B54l": { + "eco": "B54l", + "fen": "rnbqkb1r/pp3ppp/3p1n2/4p3/3NP3/5P2/PPP3PP/RNBQKB1R w KQkq e6 0 6", + "hash": 14126422200014725824, + "name": "Sicilian: Prins (Moscow), 5...e5" + }, + "B54m": { + "eco": "B54m", + "fen": "rnbqkb1r/pp3ppp/3p1n2/4p3/4P3/1N3P2/PPP3PP/RNBQKB1R b KQkq - 1 6", + "hash": 5798976093096911882, + "name": "Sicilian: Prins (Moscow), 5...e5 6.Nb3" + }, + "B54n": { + "eco": "B54n", + "fen": "rn1qkb1r/pp3ppp/3pbn2/4p3/4P3/1N3P2/PPP3PP/RNBQKB1R w KQkq - 2 7", + "hash": 342987000153071362, + "name": "Sicilian: Prins (Moscow), 5...e5 6.Nb3 Be6" + }, + "B54o": { + "eco": "B54o", + "fen": "rnbqkb1r/pp3ppp/5n2/3pp3/4P3/1N3P2/PPP3PP/RNBQKB1R w KQkq - 0 7", + "hash": 1476205237748213320, + "name": "Sicilian: Prins (Moscow), 5...e5 6.Nb3 d5" + }, + "B55": { + "eco": "B55", + "fen": "rnbqkb1r/pp3ppp/3p1n2/1B2p3/3NP3/5P2/PPP3PP/RNBQK2R b KQkq - 1 6", + "hash": 17858447672487539011, + "name": "Sicilian: Prins, Venice Attack" + }, + "B56a": { + "eco": "B56a", + "fen": "rnbqkb1r/pp2pppp/3p1n2/8/3NP3/2N5/PPP2PPP/R1BQKB1R b KQkq - 2 5", + "hash": 15804772648990046046, + "name": "Sicilian: Open, 2...d6, 5.Nc3" + }, + "B56b": { + "eco": "B56b", + "fen": "rnbqkb1r/pp3ppp/3p1n2/4p3/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq e6 0 6", + "hash": 5849574166226374504, + "name": "Sicilian: Open, 2...d6, 5.Nc3 e5" + }, + "B56c": { + "eco": "B56c", + "fen": "rnbqkb1r/pp3ppp/3p1n2/1B2p3/3NP3/2N5/PPP2PPP/R1BQK2R b KQkq - 1 6", + "hash": 7130057037637819627, + "name": "Sicilian: Venice Attack" + }, + "B56d": { + "eco": "B56d", + "fen": "r1bqkb1r/pp1npppp/3p1n2/8/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 3 6", + "hash": 16768783369834371730, + "name": "Sicilian: Open, 2...d6, 5.Nc3 Nbd7" + }, + "B56e": { + "eco": "B56e", + "fen": "r1bqkb1r/pp1npppp/3p1n2/8/2BNP3/2N5/PPP2PPP/R1BQK2R b KQkq - 4 6", + "hash": 10017443223027797044, + "name": "Sicilian: Open, 2...d6, 5.Nc3 Nbd7 6.Bc4" + }, + "B56f": { + "eco": "B56f", + "fen": "rn1qkb1r/pp1bpppp/3p1n2/8/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 3 6", + "hash": 4148988085415618415, + "name": "Sicilian: Open, 2...d6, 5.Nc3 Bd7" + }, + "B56g": { + "eco": "B56g", + "fen": "rn1qkb1r/pp1bpppp/3p1n2/6B1/3NP3/2N5/PPP2PPP/R2QKB1R b KQkq - 4 6", + "hash": 18432808419884563623, + "name": "Sicilian: Open, 2...d6, 5.Nc3 Bd7 6.Bg5" + }, + "B56h": { + "eco": "B56h", + "fen": "r1bqkb1r/pp2pppp/2np1n2/8/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 3 6", + "hash": 8122255254093681245, + "name": "Sicilian: Open, 2...d6 5.Nc3 Nc6" + }, + "B56i": { + "eco": "B56i", + "fen": "r1bqkb1r/pp2pppp/2np1n2/8/3NP3/2N4P/PPP2PP1/R1BQKB1R b KQkq - 0 6", + "hash": 10974095404188965807, + "name": "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.h3" + }, + "B56j": { + "eco": "B56j", + "fen": "r1bqkb1r/pp2pppp/2np1n2/8/3NP3/2N3P1/PPP2P1P/R1BQKB1R b KQkq - 0 6", + "hash": 6655958919486769765, + "name": "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.g3" + }, + "B56k": { + "eco": "B56k", + "fen": "r1bqkb1r/pp2pppp/2np1n2/8/3NPP2/2N5/PPP3PP/R1BQKB1R b KQkq f3 0 6", + "hash": 10209221734446198740, + "name": "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.f4" + }, + "B56l": { + "eco": "B56l", + "fen": "r1bqkb1r/pp2pppp/2np1n2/8/3NP3/2N2P2/PPP3PP/R1BQKB1R b KQkq - 0 6", + "hash": 2164518583974444332, + "name": "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.f3" + }, + "B56m": { + "eco": "B56m", + "fen": "r1bqkb1r/pp3ppp/2np1n2/4p3/3NP3/2N2P2/PPP3PP/R1BQKB1R w KQkq e6 0 7", + "hash": 10696579515689387290, + "name": "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.f3 e5" + }, + "B56n": { + "eco": "B56n", + "fen": "r1bqk2r/pp2bppp/2np1n2/4p3/4P3/1NN2P2/PPP3PP/R1BQKB1R w KQkq - 2 8", + "hash": 1498759312139267905, + "name": "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.f3 e5 7.Nb3 Be7" + }, + "B56o": { + "eco": "B56o", + "fen": "r1bqkb1r/pp2pppp/2np1n2/8/3NP3/2N1B3/PPP2PPP/R2QKB1R b KQkq - 4 6", + "hash": 265914629005756883, + "name": "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.Be3" + }, + "B56p": { + "eco": "B56p", + "fen": "r1bqkb1r/pp3ppp/2np1n2/4p3/3NP3/2N1B3/PPP2PPP/R2QKB1R w KQkq e6 0 7", + "hash": 9928396178378076645, + "name": "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.Be3 e5" + }, + "B56q": { + "eco": "B56q", + "fen": "r1bqkb1r/pp2pppp/2np4/8/3NP1n1/2N1B3/PPP2PPP/R2QKB1R w KQkq - 5 7", + "hash": 11426736800895162559, + "name": "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.Be3 Ng4" + }, + "B56r": { + "eco": "B56r", + "fen": "r1bqkb1r/pp2pppp/2np4/1B6/3NP1n1/2N1B3/PPP2PPP/R2QK2R b KQkq - 6 7", + "hash": 12487704666767477564, + "name": "Sicilian: Open, 2...d6, 5.Nc3 Nc6 6.Be3 Ng4 7.Bb5" + }, + "B57a": { + "eco": "B57a", + "fen": "r1bqkb1r/pp2pppp/2np1n2/8/2BNP3/2N5/PPP2PPP/R1BQK2R b KQkq - 4 6", + "hash": 1372393055999362299, + "name": "Sicilian: Sozin" + }, + "B57b": { + "eco": "B57b", + "fen": "r2qkb1r/pp1bpppp/2np1n2/8/2BNP3/2N5/PPP2PPP/R1BQK2R w KQkq - 5 7", + "hash": 17422815504977155274, + "name": "Sicilian: Sozin, 6...Bd7" + }, + "B57c": { + "eco": "B57c", + "fen": "r2qkb1r/pp1bpppp/2np1n2/8/2BNP3/2N5/PPP2PPP/R1BQ1RK1 b kq - 6 7", + "hash": 10358065082682249178, + "name": "Sicilian: Sozin, 6...Bd7 7.O-O" + }, + "B57d": { + "eco": "B57d", + "fen": "r1b1kb1r/pp2pppp/1qnp1n2/8/2BNP3/2N5/PPP2PPP/R1BQK2R w KQkq - 5 7", + "hash": 15344967214281642529, + "name": "Sicilian: Sozin, Benko Variation" + }, + "B57e": { + "eco": "B57e", + "fen": "r1b1kb1r/pp2pppp/1qnp1n2/8/2B1P3/2N5/PPP1NPPP/R1BQK2R b KQkq - 6 7", + "hash": 7301420578400896557, + "name": "Sicilian: Sozin, Benko, 7.Nde2" + }, + "B57f": { + "eco": "B57f", + "fen": "r1b1kb1r/pp2pppp/1qnp1n2/1N6/2B1P3/2N5/PPP2PPP/R1BQK2R b KQkq - 6 7", + "hash": 2422562818601904247, + "name": "Sicilian: Sozin, Benko, 7.Ndb5" + }, + "B57g": { + "eco": "B57g", + "fen": "r1b1kb1r/pp2pppp/1qNp1n2/8/2B1P3/2N5/PPP2PPP/R1BQK2R b KQkq - 0 7", + "hash": 10986243485988936468, + "name": "Sicilian: Sozin, Benko, 7.Nxc6" + }, + "B57h": { + "eco": "B57h", + "fen": "r1b1kb1r/p3pp1p/1qpp1np1/8/2B1P3/2N5/PPP2PPP/R1BQ1RK1 w kq - 0 9", + "hash": 15141394445976918468, + "name": "Sicilian: Sozin, Benko, 7.Nxc6 bxc6 8.O-O g6" + }, + "B57i": { + "eco": "B57i", + "fen": "r1b1kb1r/pp2pppp/1qnp1n2/8/2B1P3/1NN5/PPP2PPP/R1BQK2R b KQkq - 6 7", + "hash": 4649261056425858283, + "name": "Sicilian: Sozin, Benko, 7.Nb3" + }, + "B57j": { + "eco": "B57j", + "fen": "r1b1kb1r/pp3ppp/1qnppn2/8/2B1P3/1NN5/PPP2PPP/R1BQK2R w KQkq - 0 8", + "hash": 3959381492260439225, + "name": "Sicilian: Sozin, Benko, 7.Nb3 e6" + }, + "B57k": { + "eco": "B57k", + "fen": "r1b1kb1r/pp3ppp/1qnppn2/8/2B1P3/1NN1B3/PPP2PPP/R2QK2R b KQkq - 1 8", + "hash": 5042403832215805751, + "name": "Sicilian: Sozin, Benko, 7.Nb3 e6 8.Be3" + }, + "B57l": { + "eco": "B57l", + "fen": "r1b1kb1r/pp3ppp/1qnppn2/8/2B1PB2/1NN5/PPP2PPP/R2QK2R b KQkq - 1 8", + "hash": 17124492267060489946, + "name": "Sicilian: Sozin, Benko, 7.Nb3 e6 8.Bf4" + }, + "B57m": { + "eco": "B57m", + "fen": "r1b1kb1r/pp3ppp/1qnppn2/8/2B1P3/1NN5/PPP2PPP/R1BQ1RK1 b kq - 1 8", + "hash": 5226417786238230441, + "name": "Sicilian: Sozin, Benko, 7.Nb3 e6 8.O-O" + }, + "B57n": { + "eco": "B57n", + "fen": "r1b1k2r/pp2bppp/1qnppn2/8/2B1P3/1NN5/PPP2PPP/R1BQ1RK1 w kq - 2 9", + "hash": 6650555127103550264, + "name": "Sicilian: Sozin, Benko, 7.Nb3 e6 8.O-O Be7" + }, + "B57o": { + "eco": "B57o", + "fen": "r1b1k2r/pp2bppp/1qnppn2/8/2B1P3/1NN1B3/PPP2PPP/R2Q1RK1 b kq - 3 9", + "hash": 3405635332011649206, + "name": "Sicilian: Sozin, Benko, 7.Nb3 e6 8.O-O Be7 9.Be3" + }, + "B58a": { + "eco": "B58a", + "fen": "r1bqkb1r/pp2pppp/2np1n2/8/3NP3/2N5/PPP1BPPP/R1BQK2R b KQkq - 4 6", + "hash": 232093606237214974, + "name": "Sicilian: Boleslavsky Variation" + }, + "B58b": { + "eco": "B58b", + "fen": "r2qkb1r/pp1bpppp/2np1n2/8/3NP3/2N5/PPP1BPPP/R1BQK2R w KQkq - 5 7", + "hash": 16283170951551666383, + "name": "Sicilian: Boleslavsky, 6...Bd7" + }, + "B58c": { + "eco": "B58c", + "fen": "r1bqkb1r/1p2pppp/p1np1n2/8/3NP3/2N5/PPP1BPPP/R1BQK2R w KQkq - 0 7", + "hash": 15118441100035514402, + "name": "Sicilian: Boleslavsky, 6...a6" + }, + "B58d": { + "eco": "B58d", + "fen": "r1bqkb1r/pp2pppp/3p1n2/8/3nP3/2N5/PPP1BPPP/R1BQK2R w KQkq - 0 7", + "hash": 12563647000804434365, + "name": "Sicilian: Boleslavsky, 6...Nxd4" + }, + "B58e": { + "eco": "B58e", + "fen": "r1bqkb1r/pp3ppp/2np1n2/4p3/3NP3/2N5/PPP1BPPP/R1BQK2R w KQkq e6 0 7", + "hash": 9890053959501832392, + "name": "Sicilian: Boleslavsky, 6...e5" + }, + "B58f": { + "eco": "B58f", + "fen": "r1bqkb1r/pp3ppp/2np1n2/1N2p3/4P3/2N5/PPP1BPPP/R1BQK2R b KQkq - 1 7", + "hash": 8947084281799072414, + "name": "Sicilian: Boleslavsky, 7.Ndb5" + }, + "B58g": { + "eco": "B58g", + "fen": "r1bqkb1r/pp3ppp/2Np1n2/4p3/4P3/2N5/PPP1BPPP/R1BQK2R b KQkq - 0 7", + "hash": 14250018083108907517, + "name": "Sicilian: Boleslavsky, Louma Variation" + }, + "B58h": { + "eco": "B58h", + "fen": "r1bqkb1r/pp3ppp/2np1n2/4p3/4P3/2N2N2/PPP1BPPP/R1BQK2R b KQkq - 1 7", + "hash": 17809235832735127559, + "name": "Sicilian: Boleslavsky, 7.Nf3" + }, + "B58i": { + "eco": "B58i", + "fen": "r1bqkb1r/pp3pp1/2np1n1p/4p3/4P3/2N2N2/PPP1BPPP/R1BQK2R w KQkq - 0 8", + "hash": 7336459207773884690, + "name": "Sicilian: Boleslavsky, 7.Nf3 h6" + }, + "B58j": { + "eco": "B58j", + "fen": "r1bqkb1r/pp3pp1/2np1n1p/4p3/4P3/2N2N2/PPP1BPPP/R1BQ1RK1 b kq - 1 8", + "hash": 1992048931889105410, + "name": "Sicilian: Boleslavsky, 7.Nf3 h6 8.O-O" + }, + "B58k": { + "eco": "B58k", + "fen": "r1bqk2r/pp2bpp1/2np1n1p/4p3/4P3/2N2N2/PPP1BPPP/R1BQ1RK1 w kq - 2 9", + "hash": 1110522260878911123, + "name": "Sicilian: Boleslavsky, 7.Nf3 h6 8.O-O Be7" + }, + "B58l": { + "eco": "B58l", + "fen": "r1bqk2r/pp2bpp1/2np1n1p/4p3/4P3/2N2N1P/PPP1BPP1/R1BQ1RK1 b kq - 0 9", + "hash": 16688796101124960097, + "name": "Sicilian: Boleslavsky, 7.Nf3 h6 8.O-O Be7 9.h3" + }, + "B58m": { + "eco": "B58m", + "fen": "r1bqk2r/pp2bpp1/2np1n1p/4p3/4P3/2N2N2/PPP1BPPP/R1BQR1K1 b kq - 3 9", + "hash": 10078300151894592903, + "name": "Sicilian: Boleslavsky, 7.Nf3 h6 8.O-O Be7 9.Re1" + }, + "B58n": { + "eco": "B58n", + "fen": "r1bq1rk1/pp2bpp1/2np1n1p/4p3/4P3/2N2N1P/PPP1BPP1/R1BQR1K1 b - - 0 10", + "hash": 7603871254101847454, + "name": "Sicilian: Boleslavsky, 7.Nf3, 9.Re1 O-O 10.h3" + }, + "B58o": { + "eco": "B58o", + "fen": "r1bq1rk1/1p2bpp1/p1np1n1p/4p3/4P3/2N2N1P/PPP1BPP1/R1BQR1K1 w - - 0 11", + "hash": 13506736657980429634, + "name": "Sicilian: Boleslavsky, 7.Nf3, 9.Re1 O-O 10.h3 a6" + }, + "B58p": { + "eco": "B58p", + "fen": "r2q1rk1/pp2bpp1/2npbn1p/4p3/4P3/2N2N1P/PPP1BPP1/R1BQR1K1 w - - 1 11", + "hash": 4413231084817225366, + "name": "Sicilian: Boleslavsky, 7.Nf3, 9.Re1 O-O 10.h3 Be6" + }, + "B58q": { + "eco": "B58q", + "fen": "r4rk1/pp2bpp1/2npbn1p/q3p3/4P3/2N2N1P/PPP2PP1/R1BQRBK1 w - - 3 12", + "hash": 10938650758163824058, + "name": "Sicilian: Boleslavsky, 7.Nf3, 9.Re1 O-O 10.h3 Be6 11.Bf1 Qa5" + }, + "B58r": { + "eco": "B58r", + "fen": "rn1q1rk1/pp2bpp1/3pbn1p/4p3/4P3/2N2N1P/PPP2PP1/R1BQRBK1 w - - 3 12", + "hash": 16524737623152589110, + "name": "Sicilian: Boleslavsky, 7.Nf3, 9.Re1 O-O 10.h3 Be6 11.Bf1 Nb8" + }, + "B58s": { + "eco": "B58s", + "fen": "rn1q1rk1/pp2bpp1/3pbn1p/4p3/P3P3/2N2N1P/1PP2PP1/R1BQRBK1 b - a3 0 12", + "hash": 10275762708411919608, + "name": "Sicilian: Boleslavsky, 7.Nf3, 9.Re1 O-O 10.h3 Be6 11.Bf1 Nb8 12.a4" + }, + "B58t": { + "eco": "B58t", + "fen": "rn1q1rk1/pp2bpp1/3pbn1p/4p3/4P3/1PN2N1P/P1P2PP1/R1BQRBK1 b - - 0 12", + "hash": 7635229770212938331, + "name": "Sicilian: Boleslavsky, 7.Nf3, 9.Re1 O-O 10.h3 Be6 11.Bf1 Nb8 12.b3" + }, + "B58u": { + "eco": "B58u", + "fen": "rn1q1rk1/1p2bpp1/p2pbn1p/4p3/4P3/1PN2N1P/P1P2PP1/R1BQRBK1 w - - 0 13", + "hash": 13475395665318603399, + "name": "Sicilian: Boleslavsky, 7.Nf3, 9.Re1 O-O 10.h3 Be6 11.Bf1 Nb8 12.b3 a6" + }, + "B59a": { + "eco": "B59a", + "fen": "r1bqkb1r/pp3ppp/2np1n2/4p3/4P3/1NN5/PPP1BPPP/R1BQK2R b KQkq - 1 7", + "hash": 2103673058385110530, + "name": "Sicilian: Boleslavsky, 7.Nb3" + }, + "B59b": { + "eco": "B59b", + "fen": "r2qkb1r/pp3ppp/2npbn2/4p3/4P3/1NN5/PPP1BPPP/R1BQK2R w KQkq - 2 8", + "hash": 5298816277260786954, + "name": "Sicilian: Boleslavsky, 7.Nb3 Be6" + }, + "B59c": { + "eco": "B59c", + "fen": "r1bqk2r/pp2bppp/2np1n2/4p3/4P3/1NN5/PPP1BPPP/R1BQK2R w KQkq - 2 8", + "hash": 719956296625883795, + "name": "Sicilian: Boleslavsky, 7.Nb3 Be7" + }, + "B59d": { + "eco": "B59d", + "fen": "r1bqk2r/pp2bppp/2np1n2/4p1B1/4P3/1NN5/PPP1BPPP/R2QK2R b KQkq - 3 8", + "hash": 14963099094635762011, + "name": "Sicilian: Boleslavsky, 7.Nb3 Be7 8.Bg5" + }, + "B59e": { + "eco": "B59e", + "fen": "r1bqk2r/pp2bppp/2np1n2/4p3/4P3/1NN1B3/PPP1BPPP/R2QK2R b KQkq - 3 8", + "hash": 8860119248375845149, + "name": "Sicilian: Boleslavsky, 7.Nb3 Be7 8.Be3" + }, + "B59f": { + "eco": "B59f", + "fen": "r1bqk2r/pp2bppp/2np1n2/4p3/4P3/1NN5/PPP1BPPP/R1BQ1RK1 b kq - 3 8", + "hash": 8613335891211112835, + "name": "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O" + }, + "B59g": { + "eco": "B59g", + "fen": "r1bq1rk1/pp2bppp/2np1n2/4p3/4P3/1NN5/PPP1BPPP/R1BQ1RK1 w - - 4 9", + "hash": 9016306425191413864, + "name": "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O O-O" + }, + "B59h": { + "eco": "B59h", + "fen": "r1bq1rk1/pp2bppp/2np1n2/4p1B1/4P3/1NN5/PPP1BPPP/R2Q1RK1 b - - 5 9", + "hash": 13509125266149073824, + "name": "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O O-O 9.Bg5" + }, + "B59i": { + "eco": "B59i", + "fen": "r1bq1rk1/pp2bppp/2np1n2/4p3/4P3/1NN5/PPP1BPPP/R1BQ1R1K b - - 5 9", + "hash": 5515617921159502375, + "name": "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O O-O 9.Kh1" + }, + "B59j": { + "eco": "B59j", + "fen": "r1bq1rk1/pp2bppp/2np1n2/4p3/4PP2/1NN5/PPP1B1PP/R1BQ1RK1 b - f3 0 9", + "hash": 9238615534026229217, + "name": "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O O-O 9.f4" + }, + "B59k": { + "eco": "B59k", + "fen": "r1bq1rk1/pp2bppp/2np1n2/4p3/4P3/1NN1B3/PPP1BPPP/R2Q1RK1 b - - 5 9", + "hash": 1020312709383660518, + "name": "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O O-O 9.Be3" + }, + "B59l": { + "eco": "B59l", + "fen": "r2q1rk1/pp2bppp/2npbn2/4p3/4P3/1NN1B3/PPP1BPPP/R2Q1RK1 w - - 6 10", + "hash": 6525843216880916718, + "name": "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O O-O 9.Be3 Be6" + }, + "B59m": { + "eco": "B59m", + "fen": "r2q1rk1/pp2bppp/2npbn2/4p3/4P3/1NN1BB2/PPP2PPP/R2Q1RK1 b - - 7 10", + "hash": 12084960559315055788, + "name": "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O O-O 9.Be3 Be6 10.Bf3" + }, + "B59n": { + "eco": "B59n", + "fen": "r1bq1rk1/1p2bppp/2np1n2/p3p3/4P3/1NN1B3/PPP1BPPP/R2Q1RK1 w - a6 0 10", + "hash": 9813999729006948214, + "name": "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O O-O 9.Be3 a5" + }, + "B59o": { + "eco": "B59o", + "fen": "r1bq1rk1/1p2bppp/2np1n2/p3p3/P3P3/1NN1B3/1PP1BPPP/R2Q1RK1 b - a3 0 10", + "hash": 16427770442094148280, + "name": "Sicilian: Boleslavsky, 7.Nb3 Be7 8.O-O O-O 9.Be3 a5 10.a4" + }, + "B60a": { + "eco": "B60a", + "fen": "r1bqkb1r/pp2pppp/2np1n2/6B1/3NP3/2N5/PPP2PPP/R2QKB1R b KQkq - 4 6", + "hash": 13178195687193905557, + "name": "Sicilian: Richter-Rauzer" + }, + "B60b": { + "eco": "B60b", + "fen": "r1bqkb1r/pp2pp1p/2np1np1/6B1/3NP3/2N5/PPP2PPP/R2QKB1R w KQkq - 0 7", + "hash": 6869687573498338270, + "name": "Sicilian: Richter-Rauzer, Bondarevsky Variation" + }, + "B60c": { + "eco": "B60c", + "fen": "r1b1kb1r/pp2pppp/2np1n2/q5B1/3NP3/2N5/PPP2PPP/R2QKB1R w KQkq - 5 7", + "hash": 8039433805879388186, + "name": "Sicilian: Richter-Rauzer, 6...Qa5" + }, + "B60d": { + "eco": "B60d", + "fen": "r1b1kb1r/pp2pppp/1qnp1n2/6B1/3NP3/2N5/PPP2PPP/R2QKB1R w KQkq - 5 7", + "hash": 8150852868737130319, + "name": "Sicilian: Richter-Rauzer, 6...Qb6" + }, + "B60e": { + "eco": "B60e", + "fen": "r1bqkb1r/1p2pppp/p1np1n2/6B1/3NP3/2N5/PPP2PPP/R2QKB1R w KQkq - 0 7", + "hash": 7211858239852900681, + "name": "Sicilian: Richter-Rauzer, 6...a6" + }, + "B60f": { + "eco": "B60f", + "fen": "r2qkb1r/pp1bpppp/2np1n2/6B1/3NP3/2N5/PPP2PPP/R2QKB1R w KQkq - 5 7", + "hash": 6062871470292195748, + "name": "Sicilian: Richter-Rauzer, Larsen Variation" + }, + "B60g": { + "eco": "B60g", + "fen": "r2qkb1r/pp1bpppp/2np1n2/6B1/4P3/1NN5/PPP2PPP/R2QKB1R b KQkq - 6 7", + "hash": 13858312003590430574, + "name": "Sicilian: Richter-Rauzer, Larsen, 7.Nb3" + }, + "B60h": { + "eco": "B60h", + "fen": "r2qkb1r/pp1bpppp/2np1B2/8/3NP3/2N5/PPP2PPP/R2QKB1R b KQkq - 0 7", + "hash": 17373951313104308036, + "name": "Sicilian: Richter-Rauzer, Larsen, 7.Bxf6" + }, + "B60i": { + "eco": "B60i", + "fen": "r2qkb1r/pp1bpppp/2np1n2/6B1/3NP3/2N5/PPP1BPPP/R2QK2R b KQkq - 6 7", + "hash": 2856168936267354887, + "name": "Sicilian: Richter-Rauzer, Larsen, 7.Be2" + }, + "B60j": { + "eco": "B60j", + "fen": "r2qkb1r/1p1bpppp/p1np1n2/6B1/3NP3/2N5/PPP1BPPP/R2QK2R w KQkq - 0 8", + "hash": 17677991314305084379, + "name": "Sicilian: Richter-Rauzer, Larsen, 7.Be2 a6" + }, + "B60k": { + "eco": "B60k", + "fen": "r3kb1r/pp1bpppp/2np1n2/q5B1/3NP3/2N5/PPP1BPPP/R2QK2R w KQkq - 7 8", + "hash": 18361373423127147144, + "name": "Sicilian: Richter-Rauzer, Larsen, 7.Be2 Qa5" + }, + "B61a": { + "eco": "B61a", + "fen": "r2qkb1r/pp1bpppp/2np1n2/6B1/3NP3/2N5/PPPQ1PPP/R3KB1R b KQkq - 6 7", + "hash": 8952007022587676164, + "name": "Sicilian: Richter-Rauzer, Larsen, 7.Qd2" + }, + "B61b": { + "eco": "B61b", + "fen": "r2qkb1r/1p1bpppp/p1np1n2/6B1/3NP3/2N5/PPPQ1PPP/R3KB1R w KQkq - 0 8", + "hash": 12595471974576488152, + "name": "Sicilian: Richter-Rauzer, Larsen, 7.Qd2 a6" + }, + "B61c": { + "eco": "B61c", + "fen": "r2qkb1r/pp1bpppp/3p1n2/6B1/3nP3/2N5/PPPQ1PPP/R3KB1R w KQkq - 0 8", + "hash": 15084929493671165767, + "name": "Sicilian: Richter-Rauzer, Larsen, 7.Qd2 Nxd4" + }, + "B61d": { + "eco": "B61d", + "fen": "2rqkb1r/pp1bpppp/2np1n2/6B1/3NP3/2N5/PPPQ1PPP/R3KB1R w KQk - 7 8", + "hash": 8398031677866221750, + "name": "Sicilian: Richter-Rauzer, Larsen, 7.Qd2 Rc8" + }, + "B61e": { + "eco": "B61e", + "fen": "2rqkb1r/pp1bpppp/2np1n2/6B1/3NPP2/2N5/PPPQ2PP/R3KB1R b KQk f3 0 8", + "hash": 9916275871811935551, + "name": "Sicilian: Richter-Rauzer, Larsen, 7.Qd2 Rc8 8.f4" + }, + "B61f": { + "eco": "B61f", + "fen": "2rqkb1r/pp1bpppp/2np1n2/6B1/3NP3/2N5/PPPQ1PPP/2KR1B1R b k - 8 8", + "hash": 5523252023347359534, + "name": "Sicilian: Richter-Rauzer, Larsen, 7.Qd2 Rc8 8.O-O-O" + }, + "B61g": { + "eco": "B61g", + "fen": "2r1kb1r/pp1bpppp/3p1n2/q5B1/3QP3/2N5/PPP2PPP/2KR1B1R w k - 1 10", + "hash": 1727555487381029699, + "name": "Sicilian: Richter-Rauzer, Larsen, Main Line" + }, + "B61h": { + "eco": "B61h", + "fen": "2r1kb1r/pp1bpppp/3p1n2/q7/3QP3/2N5/PPPB1PPP/2KR1B1R b k - 2 10", + "hash": 69992408922961542, + "name": "Sicilian: Richter-Rauzer, Larsen, Main Line, 10.Bd2" + }, + "B61i": { + "eco": "B61i", + "fen": "2r1kb1r/pp1bpppp/3p1n2/q5B1/3QPP2/2N5/PPP3PP/2KR1B1R b k f3 0 10", + "hash": 16929030574261059274, + "name": "Sicilian: Richter-Rauzer, Larsen, Main Line, 10.f4" + }, + "B62a": { + "eco": "B62a", + "fen": "r1bqkb1r/pp3ppp/2nppn2/6B1/3NP3/2N5/PPP2PPP/R2QKB1R w KQkq - 0 7", + "hash": 13877183751985142215, + "name": "Sicilian: Richter-Rauzer, 6...e6" + }, + "B62b": { + "eco": "B62b", + "fen": "r1bqkb1r/pp3ppp/2nppn2/6B1/3NP3/2N5/PPP1BPPP/R2QK2R b KQkq - 1 7", + "hash": 12904267449175692132, + "name": "Sicilian: Richter-Rauzer, 6...e6 7.Be2" + }, + "B62c": { + "eco": "B62c", + "fen": "r1bqk2r/pp2bppp/2nppn2/6B1/3NP3/2N5/PPP1BPPP/R2QK2R w KQkq - 2 8", + "hash": 12094796198870482933, + "name": "Sicilian: Richter-Rauzer, 6...e6 7.Be2 Be7" + }, + "B62d": { + "eco": "B62d", + "fen": "r1bqkb1r/pp3ppp/2nppn2/6B1/4P3/1NN5/PPP2PPP/R2QKB1R b KQkq - 1 7", + "hash": 6117173846449741581, + "name": "Sicilian: Richter-Rauzer, Podebrady Variation" + }, + "B62e": { + "eco": "B62e", + "fen": "r1bqkb1r/pp3ppp/2Nppn2/6B1/4P3/2N5/PPP2PPP/R2QKB1R b KQkq - 0 7", + "hash": 10094560481859703026, + "name": "Sicilian: Richter-Rauzer, Richter Attack" + }, + "B62f": { + "eco": "B62f", + "fen": "r1bqkb1r/pp3ppp/2nppn2/6B1/3NP3/2NQ4/PPP2PPP/R3KB1R b KQkq - 1 7", + "hash": 6985652387556296880, + "name": "Sicilian: Richter-Rauzer, Keres Variation" + }, + "B62g": { + "eco": "B62g", + "fen": "r1bqkb1r/pp3ppp/2nppn2/1B4B1/3NP3/2N5/PPP2PPP/R2QK2R b KQkq - 1 7", + "hash": 17531238699536288324, + "name": "Sicilian: Richter-Rauzer, Margate (Alekhine) Variation" + }, + "B62h": { + "eco": "B62h", + "fen": "r2qkb1r/pp1b1ppp/2nppn2/1B4B1/3NP3/2N5/PPP2PPP/R2QK2R w KQkq - 2 8", + "hash": 1263970962130066037, + "name": "Sicilian: Richter-Rauzer, Margate, 7...Bd7" + }, + "B62i": { + "eco": "B62i", + "fen": "r2qkb1r/pp1b1ppp/2Bppn2/6B1/3NP3/2N5/PPP2PPP/R2QK2R b KQkq - 0 8", + "hash": 4658336106536569422, + "name": "Sicilian: Richter-Rauzer, Margate, 7...Bd7 8.Bxc6" + }, + "B63a": { + "eco": "B63a", + "fen": "r1bqkb1r/pp3ppp/2nppn2/6B1/3NP3/2N5/PPPQ1PPP/R3KB1R b KQkq - 1 7", + "hash": 16757303323964229223, + "name": "Sicilian: Richter-Rauzer, Rauzer Attack (7.Qd2)" + }, + "B63b": { + "eco": "B63b", + "fen": "r1bqkb1r/pp3ppp/3ppn2/6B1/3nP3/2N5/PPPQ1PPP/R3KB1R w KQkq - 0 8", + "hash": 5039073956639637284, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Nxd4" + }, + "B63c": { + "eco": "B63c", + "fen": "r1b1kb1r/pp3ppp/1qnppn2/6B1/3NP3/2N5/PPPQ1PPP/R3KB1R w KQkq - 2 8", + "hash": 3418822284739580093, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Qb6" + }, + "B63d": { + "eco": "B63d", + "fen": "r1b1kb1r/pp3ppp/1qnppn2/6B1/4P3/1NN5/PPPQ1PPP/R3KB1R b KQkq - 3 8", + "hash": 13475650708158043767, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Qb6 8.Nb3" + }, + "B63e": { + "eco": "B63e", + "fen": "r1b1kb1r/1p3ppp/pqnppn2/6B1/4P3/1NN5/PPPQ1PPP/R3KB1R w KQkq - 0 9", + "hash": 7634957203369143979, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Qb6 8.Nb3 a6" + }, + "B63f": { + "eco": "B63f", + "fen": "r1b1kb1r/1p3ppp/pqnppn2/6B1/4P3/1NN5/PPPQ1PPP/2KR1B1R b kq - 1 9", + "hash": 5897908175608389939, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Qb6 8.Nb3 a6 9.O-O-O" + }, + "B63g": { + "eco": "B63g", + "fen": "r1b1k2r/1p2bppp/pqnppn2/6B1/4P3/1NN5/PPPQ1PPP/2KR1B1R w kq - 2 10", + "hash": 4978139858559634850, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Qb6 8.Nb3 a6 9.O-O-O Be7" + }, + "B63h": { + "eco": "B63h", + "fen": "r1bqkb1r/pp3pp1/2nppn1p/6B1/3NP3/2N5/PPPQ1PPP/R3KB1R w KQkq - 0 8", + "hash": 8825557667256209266, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 h6" + }, + "B63i": { + "eco": "B63i", + "fen": "r1bqkb1r/1p3p2/p1nppp1p/8/3NP3/2N5/PPPQ1PPP/2KR1B1R w kq - 0 10", + "hash": 15619475506210260799, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 h6 8.Bxf6 gxf6 9.O-O-O a6" + }, + "B63j": { + "eco": "B63j", + "fen": "r1bqkb1r/1p3p2/p1nppp1p/8/3NPP2/2N5/PPPQ2PP/2KR1B1R b kq f3 0 10", + "hash": 2726361379123690166, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 h6 8.Bxf6 gxf6 9.O-O-O a6 10.f4" + }, + "B63k": { + "eco": "B63k", + "fen": "r1bqk2r/pp2bppp/2nppn2/6B1/3NP3/2N5/PPPQ1PPP/R3KB1R w KQkq - 2 8", + "hash": 18176973918386514678, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Be7" + }, + "B63l": { + "eco": "B63l", + "fen": "r1bqk2r/pp2bppp/2nppn2/6B1/3NP3/2N5/PPPQ1PPP/2KR1B1R b kq - 3 8", + "hash": 14153916815156569454, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Be7 8.O-O-O" + }, + "B63m": { + "eco": "B63m", + "fen": "r1bqk2r/pp2bppp/3ppn2/6B1/3nP3/2N5/PPPQ1PPP/2KR1B1R w kq - 0 9", + "hash": 7570363902683569197, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Be7 8.O-O-O Nxd4" + }, + "B63n": { + "eco": "B63n", + "fen": "r1bq1rk1/pp2bppp/3ppn2/6B1/3QP3/2N5/PPP2PPP/2KR1B1R w - - 1 10", + "hash": 5541857829791596903, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Be7 8.O-O-O Nxd4 9.Qxd4 O-O" + }, + "B63o": { + "eco": "B63o", + "fen": "r1bq1rk1/pp2bppp/2nppn2/6B1/3NP3/2N5/PPPQ1PPP/2KR1B1R w - - 4 9", + "hash": 14899101558024965253, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Be7 8.O-O-O O-O" + }, + "B63p": { + "eco": "B63p", + "fen": "r1bq1rk1/pp2bppp/2nppn2/6B1/3NP3/2N2P2/PPPQ2PP/2KR1B1R b - - 0 9", + "hash": 11562389357327737844, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Be7, 9.f3" + }, + "B63q": { + "eco": "B63q", + "fen": "r1bq1rk1/pp2bppp/2nppn2/6B1/4P3/1NN5/PPPQ1PPP/2KR1B1R b - - 5 9", + "hash": 6536136758799354447, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Be7, 9.Nb3" + }, + "B63r": { + "eco": "B63r", + "fen": "r1bq1rk1/1p2bppp/2nppn2/p5B1/4P3/1NN5/PPPQ1PPP/2KR1B1R w - a6 0 10", + "hash": 15902122331569899231, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Be7, 9.Nb3 a5" + }, + "B63s": { + "eco": "B63s", + "fen": "r1bq1rk1/1p2bppp/p1nppn2/6B1/4P3/1NN5/PPPQ1PPP/2KR1B1R w - - 0 10", + "hash": 9818678639258710675, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Be7, 9.Nb3 a6" + }, + "B63t": { + "eco": "B63t", + "fen": "r1b2rk1/pp2bppp/1qnppn2/6B1/4P3/1NN5/PPPQ1PPP/2KR1B1R w - - 6 10", + "hash": 11334148039361174677, + "name": "Sicilian: Richter-Rauzer, Podebrad Variation" + }, + "B63u": { + "eco": "B63u", + "fen": "r1b2rk1/pp2bppp/1qnppn2/6B1/4P3/1NN2P2/PPPQ2PP/2KR1B1R b - - 0 10", + "hash": 17580678173016388580, + "name": "Sicilian: Richter-Rauzer, Podebrad, 10.f3" + }, + "B63v": { + "eco": "B63v", + "fen": "r1br2k1/pp2bppp/1qnppn2/6B1/4P3/1NN2P2/PPPQ2PP/2KR1B1R w - - 1 11", + "hash": 12662560341768647542, + "name": "Sicilian: Richter-Rauzer, Podebrad, 10.f3 Rd8" + }, + "B63w": { + "eco": "B63w", + "fen": "r1br2k1/pp2bppp/1qnppn2/6B1/4P3/1NN2P2/PPPQ2PP/1K1R1B1R b - - 2 11", + "hash": 2724375962270536363, + "name": "Sicilian: Richter-Rauzer, Podebrad, 10.f3 Rd8 11.Kb1" + }, + "B64a": { + "eco": "B64a", + "fen": "r1bq1rk1/pp2bppp/2nppn2/6B1/3NPP2/2N5/PPPQ2PP/2KR1B1R b - f3 0 9", + "hash": 3734118374127251724, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Be7, 9.f4" + }, + "B64b": { + "eco": "B64b", + "fen": "r1bq1rk1/pp2bppp/2np1n2/4p1B1/3NPP2/2N5/PPPQ2PP/2KR1B1R w - - 0 10", + "hash": 3966435633848507489, + "name": "Sicilian: Richter-Rauzer, Geller Variation" + }, + "B64c": { + "eco": "B64c", + "fen": "r1bq1rk1/pp2bpp1/2nppn1p/6B1/3NPP2/2N5/PPPQ2PP/2KR1B1R w - - 0 10", + "hash": 11611699884679854105, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Be7, 9.f4 h6" + }, + "B64d": { + "eco": "B64d", + "fen": "r1bq1rk1/pp2bpp1/2nppn1p/8/3NPP1B/2N5/PPPQ2PP/2KR1B1R b - - 1 10", + "hash": 18134416001380866690, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Be7, 9.f4 h6 10.Bh4" + }, + "B64e": { + "eco": "B64e", + "fen": "r2q1rk1/pp1bbpp1/2nppn1p/8/3NPP1B/2N5/PPPQ2PP/2KR1B1R w - - 2 11", + "hash": 1831730396525333171, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Be7, 9.f4 h6 10.Bh4 Bd7" + }, + "B64f": { + "eco": "B64f", + "fen": "r1bq1rk1/pp2bpp1/2np1n1p/4p3/3NPP1B/2N5/PPPQ2PP/2KR1B1R w - - 0 11", + "hash": 18407266747718023151, + "name": "Sicilian: Richter-Rauzer, 7.Qd2 Be7, 9.f4 h6 10.Bh4 e5" + }, + "B65a": { + "eco": "B65a", + "fen": "r1bq1rk1/pp2bppp/3ppn2/6B1/3nPP2/2N5/PPPQ2PP/2KR1B1R w - - 0 10", + "hash": 11435137974693267535, + "name": "Sicilian: Richter-Rauzer, 7...Be7, 9.f4 Nxd4" + }, + "B65b": { + "eco": "B65b", + "fen": "r1bq1rk1/pp2bpp1/3ppn1p/6B1/3QPP2/2N5/PPP3PP/2KR1B1R w - - 0 11", + "hash": 2524712060163945979, + "name": "Sicilian: Richter-Rauzer, 7...Be7, 9.f4 Nxd4 10.Qxd4 h6" + }, + "B65c": { + "eco": "B65c", + "fen": "r1b2rk1/pp2bppp/3ppn2/q5B1/3QPP2/2N5/PPP3PP/2KR1B1R w - - 1 11", + "hash": 7533759129422208353, + "name": "Sicilian: Richter-Rauzer, 7...Be7, 9.f4 Nxd4 10.Qxd4 Qa5" + }, + "B65d": { + "eco": "B65d", + "fen": "r1b2rk1/pp2bppp/3ppn2/q5B1/3QPP2/2N5/PPP3PP/1K1R1B1R b - - 2 11", + "hash": 16355336658154896572, + "name": "Sicilian: Richter-Rauzer, 7...Be7, 9.f4 Nxd4 10.Qxd4 Qa5 11.Kb1" + }, + "B65e": { + "eco": "B65e", + "fen": "r1b2rk1/pp2bppp/3ppn2/q5B1/2BQPP2/2N5/PPP3PP/2KR3R b - - 2 11", + "hash": 810364443959675847, + "name": "Sicilian: Richter-Rauzer, 7...Be7, 9.f4 Nxd4 10.Qxd4 Qa5 11.Bc4" + }, + "B65f": { + "eco": "B65f", + "fen": "r4rk1/pp1bbppp/3ppn2/q5B1/2BQPP2/2N5/PPP3PP/2KR3R w - - 3 12", + "hash": 16861196053054495734, + "name": "Sicilian: Richter-Rauzer, 7...Be7, 9.f4 Nxd4 10.Qxd4 Qa5 11.Bc4 Bd7" + }, + "B65g": { + "eco": "B65g", + "fen": "r4rk1/pp1bbppp/3ppn2/q3P1B1/2BQ1P2/2N5/PPP3PP/2KR3R b - - 0 12", + "hash": 9837575195627765138, + "name": "Sicilian: Richter-Rauzer, 7...Be7, 9.f4 Nxd4 10.Qxd4 Qa5 11.Bc4 Bd7 12.e5" + }, + "B66a": { + "eco": "B66a", + "fen": "r1bqkb1r/1p3ppp/p1nppn2/6B1/3NP3/2N5/PPPQ1PPP/R3KB1R w KQkq - 0 8", + "hash": 4213706124815023803, + "name": "Sicilian: Richter-Rauzer, 7...a6" + }, + "B66b": { + "eco": "B66b", + "fen": "r1bqkb1r/1p3ppp/p1nppn2/6B1/3NP3/2N5/PPPQBPPP/R3K2R b KQkq - 1 8", + "hash": 5330736507560522776, + "name": "Sicilian: Richter-Rauzer, 7...a6 8.Be2" + }, + "B66c": { + "eco": "B66c", + "fen": "r1bqkb1r/1p3ppp/p1nppn2/6B1/3NP3/2N5/PPPQ1PPP/2KR1B1R b kq - 1 8", + "hash": 168693973368353059, + "name": "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O" + }, + "B66d": { + "eco": "B66d", + "fen": "r1bqk2r/1p2bppp/p1nppn2/6B1/3NP3/2N5/PPPQ1PPP/2KR1B1R w kq - 2 9", + "hash": 1628932702859500978, + "name": "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O Be7" + }, + "B66e": { + "eco": "B66e", + "fen": "r1bqkb1r/1p3ppp/p2ppn2/6B1/3nP3/2N5/PPPQ1PPP/2KR1B1R w kq - 0 9", + "hash": 12624952875235117152, + "name": "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O Nxd4" + }, + "B66f": { + "eco": "B66f", + "fen": "r1bqkb1r/1p3pp1/p1nppn1p/6B1/3NP3/2N5/PPPQ1PPP/2KR1B1R w kq - 0 9", + "hash": 10421357167017392182, + "name": "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6" + }, + "B66g": { + "eco": "B66g", + "fen": "r1bqkb1r/1p3pp1/p1nppn1p/8/3NPB2/2N5/PPPQ1PPP/2KR1B1R b kq - 1 9", + "hash": 8464671894288157844, + "name": "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Bf4" + }, + "B66h": { + "eco": "B66h", + "fen": "r2qkb1r/1p3pp1/p1bppn1p/8/4PB2/2N2P2/PPPQ2PP/2KR1B1R b kq - 0 11", + "hash": 12990685089688637811, + "name": "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Bf4, 11.f3" + }, + "B66i": { + "eco": "B66i", + "fen": "r1bqkb1r/1p3pp1/p1nppn1p/8/3NP3/2N1B3/PPPQ1PPP/2KR1B1R b kq - 1 9", + "hash": 15935093723958721913, + "name": "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3" + }, + "B66j": { + "eco": "B66j", + "fen": "r1b1kb1r/1pq2pp1/p1nppn1p/8/3NP3/2N1B3/PPPQ1PPP/2KR1B1R w kq - 2 10", + "hash": 15797480088063636088, + "name": "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3 Qc7" + }, + "B66k": { + "eco": "B66k", + "fen": "r2qkb1r/1p1b1pp1/p1nppn1p/8/3NP3/2N1B3/PPPQ1PPP/2KR1B1R w kq - 2 10", + "hash": 4604135683710741832, + "name": "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3 Bd7" + }, + "B66l": { + "eco": "B66l", + "fen": "r2qkb1r/1p1b1pp1/p1nppn1p/8/3NP3/2N1BP2/PPPQ2PP/2KR1B1R b kq - 0 10", + "hash": 5860532435381223993, + "name": "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3 Bd7 10.f3" + }, + "B66m": { + "eco": "B66m", + "fen": "r1bqk2r/1p2bpp1/p1nppn1p/8/3NP3/2N1B3/PPPQ1PPP/2KR1B1R w kq - 2 10", + "hash": 14549055341199757800, + "name": "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3 Be7" + }, + "B66n": { + "eco": "B66n", + "fen": "r1bqk2r/1p2bpp1/p2ppn1p/8/3BP3/2N2P2/PPPQ2PP/2KR1B1R b kq - 0 11", + "hash": 9800571954520236182, + "name": "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3 Be7 10.f3 Nxd4 11.Bxd4" + }, + "B66o": { + "eco": "B66o", + "fen": "r1bqk2r/1p2bpp1/p1nppn1p/8/3NPP2/2N1B3/PPPQ2PP/2KR1B1R b kq f3 0 10", + "hash": 3818733293787360353, + "name": "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3 Be7 10.f4" + }, + "B66p": { + "eco": "B66p", + "fen": "r1bqk2r/1p2bpp1/p2ppn1p/8/3nPP2/2N1B3/PPPQ2PP/2KR1B1R w kq - 0 11", + "hash": 11069100442999199010, + "name": "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O h6 9.Be3 Be7 10.f4 Nxd4" + }, + "B67a": { + "eco": "B67a", + "fen": "r2qkb1r/1p1b1ppp/p1nppn2/6B1/3NP3/2N5/PPPQ1PPP/2KR1B1R w kq - 2 9", + "hash": 16183311516056183058, + "name": "Sicilian: Richter-Rauzer, 7...a6 8.O-O-O Bd7" + }, + "B67b": { + "eco": "B67b", + "fen": "r2qkb1r/1p1b1ppp/p1nppn2/6B1/3NP3/2N5/PPPQBPPP/2KR3R b kq - 3 9", + "hash": 10598711471189863345, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.Be2" + }, + "B67c": { + "eco": "B67c", + "fen": "r2qkb1r/1p1b1ppp/p1nppn2/6B1/3NP3/2N2P2/PPPQ2PP/2KR1B1R b kq - 0 9", + "hash": 10243237400735026787, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f3" + }, + "B67d": { + "eco": "B67d", + "fen": "2rqkb1r/1p1b1ppp/p1nppn2/6B1/3NP3/2N2P2/PPPQ2PP/2KR1B1R w k - 1 10", + "hash": 9698340723238840529, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f3 Rc8" + }, + "B67e": { + "eco": "B67e", + "fen": "r2qk2r/1p1bbppp/p1nppn2/6B1/3NP3/2N2P2/PPPQ2PP/2KR1B1R w kq - 1 10", + "hash": 11163079644711035634, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f3 Be7" + }, + "B67f": { + "eco": "B67f", + "fen": "r2qk2r/1p1bbppp/p1nppn2/6B1/3NP2P/2N2P2/PPPQ2P1/2KR1B1R b kq h3 0 10", + "hash": 452794159029967756, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f3 Be7 10.h4" + }, + "B67g": { + "eco": "B67g", + "fen": "r2qkb1r/1p1b1ppp/p1nppn2/6B1/3NPP2/2N5/PPPQ2PP/2KR1B1R b kq f3 0 9", + "hash": 2125928932201290907, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f4" + }, + "B67h": { + "eco": "B67h", + "fen": "r2qkb1r/1p1b1pp1/p1nppn1p/6B1/3NPP2/2N5/PPPQ2PP/2KR1B1R w kq - 0 10", + "hash": 10337901340746913166, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f4 h6" + }, + "B67i": { + "eco": "B67i", + "fen": "r2qkb1r/1p1b1pp1/p1nppn1p/8/3NPP1B/2N5/PPPQ2PP/2KR1B1R b kq - 1 10", + "hash": 15418340216825394965, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f4 h6 10.Bh4" + }, + "B67j": { + "eco": "B67j", + "fen": "r2qkb1r/1p1b1p2/p1nppn1p/6p1/3NPP1B/2N5/PPPQ2PP/2KR1B1R w kq g6 0 11", + "hash": 6177533930934880415, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f4 h6 10.Bh4 g5" + }, + "B67k": { + "eco": "B67k", + "fen": "r2qkb1r/3b1ppp/p1nppn2/1p4B1/3NPP2/2N5/PPPQ2PP/2KR1B1R w kq b6 0 10", + "hash": 9044559612924715430, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5" + }, + "B67l": { + "eco": "B67l", + "fen": "r2qkb1r/3b1ppp/p1Nppn2/1p4B1/4PP2/2N5/PPPQ2PP/2KR1B1R b kq - 0 10", + "hash": 3532519012010092691, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5 10.Nxc6" + }, + "B67m": { + "eco": "B67m", + "fen": "r2qkb1r/3b1ppp/p1nppB2/1p6/3NPP2/2N5/PPPQ2PP/2KR1B1R b kq - 0 10", + "hash": 15617272798939365190, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5 10.Bxf6" + }, + "B67n": { + "eco": "B67n", + "fen": "r2qkb1r/3b1p1p/p1nppp2/1p3P2/3NP3/2N5/PPPQ2PP/2KR1B1R b kq - 0 11", + "hash": 6802574694011563852, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5 10.Bxf6 gxf6 11.f5" + }, + "B67o": { + "eco": "B67o", + "fen": "r2qkb1r/3b1p1p/p1Nppp2/1p6/4PP2/2N5/PPPQ2PP/2KR1B1R b kq - 0 11", + "hash": 8747565269552322458, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5 10.Bxf6 gxf6 11.Nxc6" + }, + "B67p": { + "eco": "B67p", + "fen": "r2qkb1r/5p1p/p1bppp2/1p6/4PP2/2N5/PPP3PP/2KRQB1R b kq - 1 12", + "hash": 5772542364342231512, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5 10.Bxf6 gxf6 11.Nxc6 Bxc6 12.Qe1" + }, + "B67q": { + "eco": "B67q", + "fen": "r2qkb1r/3b1p1p/p1nppp2/1p6/3NPP2/2N5/PPPQ2PP/1K1R1B1R b kq - 1 11", + "hash": 13804581865493888882, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5 10.Bxf6 gxf6 11.Kb1" + }, + "B67r": { + "eco": "B67r", + "fen": "r3kb1r/3b1p1p/pqnppp2/1p6/3NPP2/2N5/PPPQ2PP/1K1R1B1R w kq - 2 12", + "hash": 8677385653094459816, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5 10.Bxf6 gxf6 11.Kb1 Qb6" + }, + "B67s": { + "eco": "B67s", + "fen": "r3kb1r/3b1p1p/pqNppp2/1p6/4PP2/2N5/PPPQ2PP/1K1R1B1R b kq - 0 12", + "hash": 3814258723385254045, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f4 b5 10.Bxf6 gxf6 11.Kb1 Qb6 12.Nxc6" + }, + "B68": { + "eco": "B68", + "fen": "r2qk2r/1p1bbppp/p1nppn2/6B1/3NPP2/2N5/PPPQ2PP/2KR1B1R w kq - 1 10", + "hash": 670089623883411466, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f4 Be7" + }, + "B69": { + "eco": "B69", + "fen": "r2qk2r/3bbppp/p1nppB2/1p6/4PP2/2N2N2/PPPQ2PP/2KR1B1R b kq - 0 11", + "hash": 12830855664206457624, + "name": "Sicilian: Richter-Rauzer, 7...a6, 9.f4 Be7 10.Nf3 b5 11.Bxf6" + }, + "B70a": { + "eco": "B70a", + "fen": "rnbqkb1r/pp2pp1p/3p1np1/8/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 0 6", + "hash": 3666360726497518869, + "name": "Sicilian: Dragon" + }, + "B70b": { + "eco": "B70b", + "fen": "rnbqkb1r/pp2pp1p/3p1np1/8/3NP3/2N3P1/PPP2P1P/R1BQKB1R b KQkq - 0 6", + "hash": 2163765105345707309, + "name": "Sicilian: Dragon, 6.g3" + }, + "B70c": { + "eco": "B70c", + "fen": "r1bqkb1r/pp2pp1p/2np1np1/8/3NP3/2N3P1/PPP2P1P/R1BQKB1R w KQkq - 1 7", + "hash": 13108540371784538158, + "name": "Sicilian: Dragon, 6.g3 Nc6" + }, + "B70d": { + "eco": "B70d", + "fen": "r1bqkb1r/pp2pp1p/2np1np1/8/4P3/2N3P1/PPP1NP1P/R1BQKB1R b KQkq - 2 7", + "hash": 310037203436719138, + "name": "Sicilian: Dragon, 6.g3 Nc6 7.Nde2" + }, + "B70e": { + "eco": "B70e", + "fen": "rnbqkb1r/pp2pp1p/3p1np1/6B1/3NP3/2N5/PPP2PPP/R2QKB1R b KQkq - 1 6", + "hash": 17634918088729771741, + "name": "Sicilian: Dragon, 6.Bg5" + }, + "B70f": { + "eco": "B70f", + "fen": "rnbqkb1r/pp2pp1p/3p1np1/8/2BNP3/2N5/PPP2PPP/R1BQK2R b KQkq - 1 6", + "hash": 5859802758614365107, + "name": "Sicilian: Dragon, 6.Bc4" + }, + "B70g": { + "eco": "B70g", + "fen": "rnbqk2r/pp2ppbp/3p1np1/8/2BNP3/2N4P/PPP2PP1/R1BQK2R b KQkq - 0 7", + "hash": 656913700677235179, + "name": "Sicilian: Dragon, 6.Bc4 Bg7 7.h3" + }, + "B70h": { + "eco": "B70h", + "fen": "rnbqk2r/pp2ppbp/3p1np1/8/2BNP3/2N5/PPP2PPP/R1BQ1RK1 b kq - 3 7", + "hash": 11500914774240404233, + "name": "Sicilian: Dragon, 6.Bc4 Bg7 7.O-O" + }, + "B70i": { + "eco": "B70i", + "fen": "rnbqkb1r/pp2pp1p/3p1np1/8/3NP3/2N5/PPP1BPPP/R1BQK2R b KQkq - 1 6", + "hash": 4711051490477125558, + "name": "Sicilian: Dragon, 6.Be2" + }, + "B70j": { + "eco": "B70j", + "fen": "rnbqkb1r/1p2pp1p/p2p1np1/8/3NP3/2N5/PPP1BPPP/R1BQK2R w KQkq - 0 7", + "hash": 10634957694388557674, + "name": "Sicilian: Dragon, 6.Be2 a6" + }, + "B70k": { + "eco": "B70k", + "fen": "rnbqk2r/pp2ppbp/3p1np1/8/3NP3/2N5/PPP1BPPP/R1BQK2R w KQkq - 2 7", + "hash": 17428149802313540636, + "name": "Sicilian: Dragon, 6.Be2 Bg7" + }, + "B70l": { + "eco": "B70l", + "fen": "rnbqk2r/pp2ppbp/3p1np1/8/3NP3/2N5/PPP1BPPP/R1BQ1RK1 b kq - 3 7", + "hash": 10351597257643704076, + "name": "Sicilian: Dragon, 6.Be2 Bg7 7.O-O" + }, + "B70m": { + "eco": "B70m", + "fen": "r1bqk2r/pp2ppbp/2np1np1/8/4P3/1NN5/PPP1BPPP/R1BQ1RK1 b kq - 5 8", + "hash": 12696951453416479941, + "name": "Sicilian: Dragon, 6.Be2 Bg7 7.O-O Nc6 8.Nb3" + }, + "B70n": { + "eco": "B70n", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/8/4P3/1NN5/PPP1BPPP/R1BQ1RK1 w - - 6 9", + "hash": 13446710155397641518, + "name": "Sicilian: Dragon, 6.Be2 Bg7 7.O-O Nc6 8.Nb3 O-O" + }, + "B70o": { + "eco": "B70o", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/8/3NP3/2N5/PPP1BPPP/R1BQ1RK1 w - - 4 8", + "hash": 9583852883331995367, + "name": "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O" + }, + "B70p": { + "eco": "B70p", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/8/3NP3/2N5/PPP1BPPP/R1BQR1K1 b - - 5 8", + "hash": 122901073377885683, + "name": "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Re1" + }, + "B70q": { + "eco": "B70q", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/8/4P3/1NN5/PPP1BPPP/R1BQR1K1 b - - 7 9", + "hash": 4478901499635015226, + "name": "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Re1 Nc6 9.Nb3" + }, + "B70r": { + "eco": "B70r", + "fen": "r2q1rk1/pp2ppbp/2npbnp1/8/4P3/1NN5/PPP1BPPP/R1BQR1K1 w - - 8 10", + "hash": 7678870440948852018, + "name": "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Re1 Nc6 9.Nb3 Be6" + }, + "B70s": { + "eco": "B70s", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/6B1/3NP3/2N5/PPP1BPPP/R2Q1RK1 b - - 5 8", + "hash": 4853464627600788783, + "name": "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Bg5" + }, + "B70t": { + "eco": "B70t", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/6B1/4P3/1NN5/PPP1BPPP/R2Q1RK1 b - - 7 9", + "hash": 8990900722284883686, + "name": "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Bg5 Nc6 9.Nb3" + }, + "B70u": { + "eco": "B70u", + "fen": "r1bq1rk1/1p2ppbp/p1np1np1/6B1/4P3/1NN5/PPP1BPPP/R2Q1RK1 w - - 0 10", + "hash": 12552070242864928314, + "name": "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Bg5 Nc6 9.Nb3 a6" + }, + "B70v": { + "eco": "B70v", + "fen": "r2q1rk1/pp2ppbp/2npbnp1/6B1/4P3/1NN5/PPP1BPPP/R2Q1RK1 w - - 8 10", + "hash": 2917921643884090862, + "name": "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Bg5 Nc6 9.Nb3 Be6" + }, + "B70w": { + "eco": "B70w", + "fen": "r2q1rk1/pp2ppbp/2npbnp1/6B1/4P3/1NN5/PPP1BPPP/R2Q1R1K b - - 9 10", + "hash": 1861598446847539105, + "name": "Sicilian: Dragon, 6.Be2 Bg7 7.O-O O-O 8.Bg5 Nc6 9.Nb3 Be6 10.Kh1" + }, + "B71": { + "eco": "B71", + "fen": "rnbqkb1r/pp2pp1p/3p1np1/8/3NPP2/2N5/PPP3PP/R1BQKB1R b KQkq f3 0 6", + "hash": 14985721896518211740, + "name": "Sicilian: Dragon, Levenfish Variation" + }, + "B72": { + "eco": "B72", + "fen": "rnbqkb1r/pp2pp1p/3p1np1/8/3NP3/2N1B3/PPP2PPP/R2QKB1R b KQkq - 1 6", + "hash": 4749393576208236187, + "name": "Sicilian: Dragon, 6.Be3" + }, + "B73": { + "eco": "B73", + "fen": "r1bqk2r/pp2ppbp/2np1np1/8/3NP3/2N1B3/PPP1BPPP/R2Q1RK1 b kq - 5 8", + "hash": 6290721443678847361, + "name": "Sicilian: Dragon, Classical, 8.O-O" + }, + "B74": { + "eco": "B74", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/8/4P3/1NN1B3/PPP1BPPP/R2Q1RK1 b - - 7 9", + "hash": 14525503288304414368, + "name": "Sicilian: Dragon, Classical, 9.Nb3" + }, + "B75": { + "eco": "B75", + "fen": "rnbqk2r/pp2ppbp/3p1np1/8/3NP3/2N1BP2/PPP3PP/R2QKB1R b KQkq - 0 7", + "hash": 11521588610279463488, + "name": "Sicilian: Dragon, Yugoslav Attack" + }, + "B76a": { + "eco": "B76a", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/8/3NP3/2N1BP2/PPP3PP/R2QKB1R w KQ - 1 8", + "hash": 10757985137015468971, + "name": "Sicilian: Dragon, Yugoslav, 7.f3 O-O" + }, + "B76b": { + "eco": "B76b", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/8/3NP3/2N1BP2/PPPQ2PP/R3KB1R b KQ - 2 8", + "hash": 13642606086006828043, + "name": "Sicilian: Dragon, Yugoslav, 7.f3 O-O 8.Qd2" + }, + "B76c": { + "eco": "B76c", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/8/3NP3/2N1BP2/PPPQ2PP/R3KB1R w KQ - 3 9", + "hash": 1637512657585391880, + "name": "Sicilian: Dragon, Yugoslav, 8.Qd2 Nc6" + }, + "B76d": { + "eco": "B76d", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/8/3NP1P1/2N1BP2/PPPQ3P/R3KB1R b KQ g3 0 9", + "hash": 13111276767503492117, + "name": "Sicilian: Dragon, Yugoslav, 9.g4" + }, + "B76e": { + "eco": "B76e", + "fen": "r2q1rk1/pp2ppbp/2npbnp1/8/3NP1P1/2N1BP2/PPPQ3P/R3KB1R w KQ - 1 10", + "hash": 16234366238750793501, + "name": "Sicilian: Dragon, Yugoslav, 9.g4 Be6" + }, + "B76f": { + "eco": "B76f", + "fen": "r1bq1rk1/pp2ppbp/3p1np1/8/3nP1P1/2N1BP2/PPPQ3P/R3KB1R w KQ - 0 10", + "hash": 1771912769160977750, + "name": "Sicilian: Dragon, Yugoslav, 9.g4 Nxd4" + }, + "B76g": { + "eco": "B76g", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/8/3NP3/2N1BP2/PPPQ2PP/2KR1B1R b - - 4 9", + "hash": 3356545346015020688, + "name": "Sicilian: Dragon, Yugoslav, 9.O-O-O" + }, + "B76h": { + "eco": "B76h", + "fen": "r2q1rk1/pp1bppbp/2np1np1/8/3NP3/2N1BP2/PPPQ2PP/2KR1B1R w - - 5 10", + "hash": 14723716782861686433, + "name": "Sicilian: Dragon, Yugoslav, 9.O-O-O Bd7" + }, + "B76i": { + "eco": "B76i", + "fen": "r2q1rk1/pp1bppbp/2np1np1/8/3NP1P1/2N1BP2/PPPQ3P/2KR1B1R b - g3 0 10", + "hash": 8005191980686015420, + "name": "Sicilian: Dragon, Yugoslav, 9.O-O-O Bd7 10.g4" + }, + "B76j": { + "eco": "B76j", + "fen": "r1bq1rk1/pp2ppbp/3p1np1/8/3nP3/2N1BP2/PPPQ2PP/2KR1B1R w - - 0 10", + "hash": 9509172162427518931, + "name": "Sicilian: Dragon, Yugoslav, 9.O-O-O Nxd4" + }, + "B76k": { + "eco": "B76k", + "fen": "r2q1rk1/pp2ppbp/3pbnp1/8/3BP3/2N2P2/PPPQ2PP/2KR1B1R w - - 1 11", + "hash": 6158580317355205527, + "name": "Sicilian: Dragon, Yugoslav, 9.O-O-O Nxd4 10.Bxd4 Be6" + }, + "B76l": { + "eco": "B76l", + "fen": "r2q1rk1/pp2ppbp/3pbnp1/8/3BP3/2N2P2/PPPQ2PP/1K1R1B1R b - - 2 11", + "hash": 16069743013760680522, + "name": "Sicilian: Dragon, Yugoslav, 9.O-O-O Nxd4: 11.Kb1" + }, + "B76m": { + "eco": "B76m", + "fen": "r4rk1/ppq1ppbp/3pbnp1/8/3BP3/2N2P2/PPPQ2PP/1K1R1B1R w - - 3 12", + "hash": 15644393500627045707, + "name": "Sicilian: Dragon, Yugoslav, 9.O-O-O Nxd4: 11.Kb1 Qc7" + }, + "B76n": { + "eco": "B76n", + "fen": "r4rk1/ppq1ppbp/3pbnp1/8/3BP1P1/2N2P2/PPPQ3P/1K1R1B1R b - g3 0 12", + "hash": 8813840062144569430, + "name": "Sicilian: Dragon, Yugoslav, 9.O-O-O Nxd4: 11.Kb1 Qc7 12.g4" + }, + "B76o": { + "eco": "B76o", + "fen": "r1bq1rk1/pp2ppbp/2n2np1/3p4/3NP3/2N1BP2/PPPQ2PP/2KR1B1R w - - 0 10", + "hash": 7679282686661018834, + "name": "Sicilian: Dragon, Yugoslav, 9.O-O-O d5" + }, + "B76p": { + "eco": "B76p", + "fen": "r1bq1rk1/pp2ppbp/2n2np1/3p4/3NP3/2N1BP2/PPP3PP/2KRQB1R b - - 1 10", + "hash": 4767596075782740226, + "name": "Sicilian: Dragon, Yugoslav, 9.O-O-O d5 10.Qe1" + }, + "B76q": { + "eco": "B76q", + "fen": "r1bq1rk1/pp2ppbp/2n2np1/3P4/3N4/2N1BP2/PPPQ2PP/2KR1B1R b - - 0 10", + "hash": 5570179401847637716, + "name": "Sicilian: Dragon, Yugoslav, 9.O-O-O d5 10.exd5" + }, + "B76r": { + "eco": "B76r", + "fen": "r1bq1rk1/p3ppbp/2p3p1/3N4/8/4BP2/PPPQ2PP/2KR1B1R b - - 0 12", + "hash": 10562461661731880080, + "name": "Sicilian: Dragon, Yugoslav, 9.O-O-O d5: 12.Nxd5" + }, + "B76s": { + "eco": "B76s", + "fen": "r1bq1rk1/p3ppbp/2p3p1/3n4/3B4/2N2P2/PPPQ2PP/2KR1B1R b - - 1 12", + "hash": 6506186475954509230, + "name": "Sicilian: Dragon, Yugoslav, 9.O-O-O d5: 12.Bd4" + }, + "B76t": { + "eco": "B76t", + "fen": "r1bq1rk1/p4pbp/2p3p1/3np3/3B4/2N2P2/PPPQ2PP/2KR1B1R w - e6 0 13", + "hash": 15002218692855328152, + "name": "Sicilian: Dragon, Yugoslav, 9.O-O-O d5: 12.Bd4 e5" + }, + "B76u": { + "eco": "B76u", + "fen": "r2q1rk1/p4pbp/2p1b1p1/2Bnp3/8/2N2P2/PPPQ2PP/2KR1B1R w - - 2 14", + "hash": 4418503998706761646, + "name": "Sicilian: Dragon, Yugoslav, 9.O-O-O d5: 12.Bd4 e5 13.Bc5 Be6" + }, + "B77a": { + "eco": "B77a", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/8/2BNP3/2N1BP2/PPPQ2PP/R3K2R b KQ - 4 9", + "hash": 8433598599120986030, + "name": "Sicilian: Dragon, Yugoslav, 9.Bc4" + }, + "B77b": { + "eco": "B77b", + "fen": "r1bq1rk1/1p2ppbp/2np1np1/p7/2BNP3/2N1BP2/PPPQ2PP/R3K2R w KQ a6 0 10", + "hash": 17514671571036967742, + "name": "Sicilian: Dragon, Yugoslav, Byrne Variation" + }, + "B77c": { + "eco": "B77c", + "fen": "r1bq1rk1/pp2ppbp/3p1np1/4n3/2BNP3/2N1BP2/PPPQ2PP/R3K2R w KQ - 5 10", + "hash": 9608206011046933966, + "name": "Sicilian: Dragon, Yugoslav, 9.Bc4 Ne5" + }, + "B77d": { + "eco": "B77d", + "fen": "r1bq1rk1/pp1nppbp/2np2p1/8/2BNP3/2N1BP2/PPPQ2PP/R3K2R w KQ - 5 10", + "hash": 10109783573173802587, + "name": "Sicilian: Dragon, Yugoslav, 9.Bc4 Nd7" + }, + "B77e": { + "eco": "B77e", + "fen": "r1bq1rk1/pp2ppbp/3p1np1/8/2BnP3/2N1BP2/PPPQ2PP/R3K2R w KQ - 0 10", + "hash": 15594185092277708525, + "name": "Sicilian: Dragon, Yugoslav, 9.Bc4 Nxd4" + }, + "B77f": { + "eco": "B77f", + "fen": "r2q1rk1/pp1bppbp/2np1np1/8/2BNP3/2N1BP2/PPPQ2PP/R3K2R w KQ - 5 10", + "hash": 10938072983092875167, + "name": "Sicilian: Dragon, Yugoslav, 9.Bc4 Bd7" + }, + "B77g": { + "eco": "B77g", + "fen": "r2q1rk1/pp1bppbp/2np1np1/8/3NP3/1BN1BP2/PPPQ2PP/R3K2R b KQ - 6 10", + "hash": 6831898299573346171, + "name": "Sicilian: Dragon, Yugoslav, 9.Bc4 Bd7 10.Bb3" + }, + "B77h": { + "eco": "B77h", + "fen": "r2q1rk1/pp1bppbp/2np1np1/8/2BNP1P1/2N1BP2/PPPQ3P/R3K2R b KQ g3 0 10", + "hash": 3784948631555646082, + "name": "Sicilian: Dragon, Yugoslav, 9.Bc4 Bd7 10.g4" + }, + "B77i": { + "eco": "B77i", + "fen": "r2q1rk1/pp1bppbp/2np1np1/8/2BNP2P/2N1BP2/PPPQ2P1/R3K2R b KQ h3 0 10", + "hash": 821989693191304929, + "name": "Sicilian: Dragon, Yugoslav, 9.Bc4 Bd7 10.h4" + }, + "B77j": { + "eco": "B77j", + "fen": "2rq1rk1/pp1bppbp/2np1np1/8/2BNP2P/2N1BP2/PPPQ2P1/R3K2R w KQ - 1 11", + "hash": 2102770062265978522, + "name": "Sicilian: Dragon, Yugoslav, 9.Bc4 Bd7 10.h4 Rc8" + }, + "B78a": { + "eco": "B78a", + "fen": "r2q1rk1/pp1bppbp/2np1np1/8/2BNP3/2N1BP2/PPPQ2PP/2KR3R b - - 6 10", + "hash": 12674979072228343815, + "name": "Sicilian: Dragon, Yugoslav, 10.O-O-O" + }, + "B78b": { + "eco": "B78b", + "fen": "r2q1rk1/pp1bppbp/3p1np1/4n3/2BNP3/2N1BP2/PPPQ2PP/2KR3R w - - 7 11", + "hash": 6898264503205587559, + "name": "Sicilian: Dragon, Yugoslav, 10.O-O-O Ne5" + }, + "B78c": { + "eco": "B78c", + "fen": "2rq1rk1/pp1bppbp/2np1np1/8/2BNP3/2N1BP2/PPPQ2PP/2KR3R w - - 7 11", + "hash": 13375782367330695292, + "name": "Sicilian: Dragon, Yugoslav, 10.O-O-O Rc8" + }, + "B78d": { + "eco": "B78d", + "fen": "2rq1rk1/pp1bppbp/3p1np1/4n3/3NP3/1BN1BP2/PPPQ2PP/2KR3R w - - 9 12", + "hash": 9293563041082016504, + "name": "Sicilian: Dragon, Yugoslav, Modern Main Line" + }, + "B78e": { + "eco": "B78e", + "fen": "2rq1rk1/pp1bppbp/3p1np1/4n3/3NP3/1BN1BP2/PPPQ2PP/1K1R3R b - - 10 12", + "hash": 760475373850501925, + "name": "Sicilian: Dragon, Yugoslav, Main Line, 12.Kb1" + }, + "B78f": { + "eco": "B78f", + "fen": "3q1rk1/p2bppbp/3p1np1/1p6/2rNP1P1/2N1BP2/PPPQ3P/1K1R3R w - b6 0 15", + "hash": 15043550289966676405, + "name": "Sicilian: Dragon, Yugoslav, Main Line, 12.Kb1: 14.g4 b5" + }, + "B78g": { + "eco": "B78g", + "fen": "2rq1rk1/pp1bppbp/3p1np1/4n3/3NP2P/1BN1BP2/PPPQ2P1/2KR3R b - h3 0 12", + "hash": 2043159171995270022, + "name": "Sicilian: Dragon, Yugoslav, Main Line, 12.h4" + }, + "B78h": { + "eco": "B78h", + "fen": "3q1rk1/pp1bppbp/3p1np1/8/2rNP1PP/2N1BP2/PPPQ4/2KR3R b - g3 0 14", + "hash": 11967759101142555691, + "name": "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 Nc4: 14.g4" + }, + "B78i": { + "eco": "B78i", + "fen": "3q1rk1/pp1bppbp/3p1np1/7P/2rNP3/2N1BP2/PPPQ2P1/2KR3R b - - 0 14", + "hash": 1396448148009077173, + "name": "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 Nc4: 14.h5" + }, + "B78j": { + "eco": "B78j", + "fen": "2rq1rk1/pp1bppb1/3p1np1/4n2p/3NP2P/1BN1BP2/PPPQ2P1/2KR3R w - h6 0 13", + "hash": 73284692458822385, + "name": "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 h5" + }, + "B78k": { + "eco": "B78k", + "fen": "2rq1rk1/pp1bppb1/3p1np1/4n2p/3NP2P/1BN1BP2/PPPQ2P1/1K1R3R b - - 1 13", + "hash": 10047744075711740716, + "name": "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 h5 13.Kb1" + }, + "B78l": { + "eco": "B78l", + "fen": "2rq1rk1/pp1bppb1/3p1npB/4n2p/3NP2P/1BN2P2/PPPQ2P1/2KR3R b - - 1 13", + "hash": 12315802675383638106, + "name": "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 h5 13.Bh6" + }, + "B78m": { + "eco": "B78m", + "fen": "2rq1rk1/pp1bpp2/3p1npb/4n2p/3NP2P/1BN2P2/PPPQ2P1/2KR3R w - - 0 14", + "hash": 3843633532191883961, + "name": "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 h5 13.Bh6 Bxh6" + }, + "B78n": { + "eco": "B78n", + "fen": "2rq1rk1/pp1bppb1/3p1np1/4n1Bp/3NP2P/1BN2P2/PPPQ2P1/2KR3R b - - 1 13", + "hash": 5512571396844953534, + "name": "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 h5 13.Bg5" + }, + "B78o": { + "eco": "B78o", + "fen": "3q1rk1/pp1bppb1/3p1np1/2r1n1Bp/3NP2P/1BN2P2/PPPQ2P1/2KR3R w - - 2 14", + "hash": 3753850157249887924, + "name": "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 h5 13.Bg5 Rc5" + }, + "B78p": { + "eco": "B78p", + "fen": "3q1rk1/pp1bppb1/3p1np1/2r1n1Bp/3NP1PP/1BN2P2/PPPQ4/2KR3R b - g3 0 14", + "hash": 10904722139623560105, + "name": "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 h5 13.Bg5 Rc5 14.g4" + }, + "B78q": { + "eco": "B78q", + "fen": "3q1rk1/pp1bppb1/3p1np1/2r1n1Bp/3NP2P/1BN2P2/PPPQ2P1/1K1R3R b - - 3 14", + "hash": 13721558623480602473, + "name": "Sicilian: Dragon, Yugoslav, Main Line, 12.h4 h5 13.Bg5 Rc5 14.Kb1" + }, + "B78r": { + "eco": "B78r", + "fen": "r4rk1/pp1bppbp/2np1np1/q7/2BNP3/2N1BP2/PPPQ2PP/2KR3R w - - 7 11", + "hash": 8544743650601230728, + "name": "Sicilian: Dragon, Yugoslav, Old Main Line" + }, + "B78s": { + "eco": "B78s", + "fen": "2r2rk1/pp1bppbp/2np1np1/q7/3NP3/1BN1BP2/PPPQ2PP/2KR3R w - - 9 12", + "hash": 12238486120752056599, + "name": "Sicilian: Dragon, Yugoslav, Old Main Line, 11.Bb3 Rac8" + }, + "B78t": { + "eco": "B78t", + "fen": "r1r3k1/pp1bppbp/2np1np1/q7/3NP3/1BN1BP2/PPPQ2PP/2KR3R w - - 9 12", + "hash": 1498062300219236647, + "name": "Sicilian: Dragon, Yugoslav, Old Main Line, 11.Bb3 Rfc8" + }, + "B79a": { + "eco": "B79a", + "fen": "r1r3k1/pp1bppbp/2np1np1/q7/3NP2P/1BN1BP2/PPPQ2P1/2KR3R b - h3 0 12", + "hash": 9829585093789194329, + "name": "Sicilian: Dragon, Yugoslav, Old Main Line, 12.h4" + }, + "B79b": { + "eco": "B79b", + "fen": "r1r3k1/pp1bppbp/3p1np1/q3n3/3NP2P/1BN1BP2/PPPQ2P1/2KR3R w - - 1 13", + "hash": 8661740243040907833, + "name": "Sicilian: Dragon, Yugoslav, Old Main Line, 12.h4 Ne5" + }, + "B79c": { + "eco": "B79c", + "fen": "r1r3k1/pp1bppbp/3p1np1/q3n3/3NP2P/1BN1BP2/PPPQ2P1/1K1R3R b - - 2 13", + "hash": 17456005832117752804, + "name": "Sicilian: Dragon, Yugoslav, Old Main Line, 12.h4 Ne5 13.Kb1" + }, + "B79d": { + "eco": "B79d", + "fen": "r1r3k1/pp1bppbp/3p1np1/q7/2nNP2P/1BN1BP2/PPPQ2P1/1K1R3R w - - 3 14", + "hash": 11193296885095075147, + "name": "Sicilian: Dragon, Yugoslav, Old Main Line, 12.h4 Ne5 13.Kb1 Nc4" + }, + "B79e": { + "eco": "B79e", + "fen": "r1r3k1/pp1bppbp/3p1np1/q3n3/3NP1PP/1BN1BP2/PPPQ4/2KR3R b - g3 0 13", + "hash": 15814864037316747044, + "name": "Sicilian: Dragon, Yugoslav, Old Main Line, 12.h4 Ne5 13.g4" + }, + "B79f": { + "eco": "B79f", + "fen": "r1r3k1/pp1bppbp/3p1np1/q3n2P/3NP3/1BN1BP2/PPPQ2P1/2KR3R b - - 0 13", + "hash": 7930421415650839226, + "name": "Sicilian: Dragon, Yugoslav, Old Main Line, 12.h4 Ne5 13.h5" + }, + "B80a": { + "eco": "B80a", + "fen": "rnbqkb1r/pp3ppp/3ppn2/8/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 0 6", + "hash": 12475576582682896140, + "name": "Sicilian: Scheveningen" + }, + "B80b": { + "eco": "B80b", + "fen": "rnbqkb1r/pp3ppp/3ppn2/8/3NP3/2N1B3/PPP2PPP/R2QKB1R b KQkq - 1 6", + "hash": 16008780591369878658, + "name": "Sicilian: Scheveningen, 6.Be3" + }, + "B80c": { + "eco": "B80c", + "fen": "r1bqkb1r/pp3ppp/2nppn2/8/3NP3/2N1B3/PPP2PPP/R2QKB1R w KQkq - 2 7", + "hash": 8486828727199947137, + "name": "Sicilian: Scheveningen, 6.Be3 Nc6" + }, + "B80d": { + "eco": "B80d", + "fen": "r1bqkb1r/pp3ppp/2nppn2/8/3NP3/2N1BP2/PPP3PP/R2QKB1R b KQkq - 0 7", + "hash": 1978949348244829936, + "name": "Sicilian: Scheveningen, 6.Be3 Nc6" + }, + "B80e": { + "eco": "B80e", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/8/3NP3/2N1B3/PPP2PPP/R2QKB1R w KQkq - 0 7", + "hash": 927016751078835294, + "name": "Sicilian: Scheveningen, 6.Be3 a6" + }, + "B80f": { + "eco": "B80f", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/8/3NP3/2N1B3/PPPQ1PPP/R3KB1R b KQkq - 1 7", + "hash": 2649562838474808318, + "name": "Sicilian: Scheveningen, 7.Qd2" + }, + "B80g": { + "eco": "B80g", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/8/3NP3/2N1BP2/PPP3PP/R2QKB1R b KQkq - 0 7", + "hash": 7092196222713129775, + "name": "Sicilian: Scheveningen, English Attack" + }, + "B80h": { + "eco": "B80h", + "fen": "r1bqkb1r/1p3ppp/p1nppn2/8/3NP3/2N1BP2/PPP3PP/R2QKB1R w KQkq - 1 8", + "hash": 14519976839574670892, + "name": "Sicilian: Scheveningen, English Attack, 7...Nc6" + }, + "B80i": { + "eco": "B80i", + "fen": "r1bqk2r/1p2bppp/p1nppn2/8/3NP3/2N1BP2/PPPQ2PP/R3KB1R w KQkq - 3 9", + "hash": 17678157277060480285, + "name": "Sicilian: Scheveningen, English, 7...Nc6 8.Qd2" + }, + "B80j": { + "eco": "B80j", + "fen": "rnbqkb1r/5ppp/p2ppn2/1p6/3NP3/2N1BP2/PPP3PP/R2QKB1R w KQkq b6 0 8", + "hash": 173635936838702610, + "name": "Sicilian: Scheveningen, English Attack, 7...b5" + }, + "B80k": { + "eco": "B80k", + "fen": "rnbqkb1r/5ppp/p2ppn2/1p6/3NP3/2N1BP2/PPPQ2PP/R3KB1R b KQkq - 1 8", + "hash": 3058137081986058674, + "name": "Sicilian: Scheveningen, English, 7...b5 8.Qd2" + }, + "B80l": { + "eco": "B80l", + "fen": "rn1qkb1r/1b3ppp/p2ppn2/1p6/3NP3/2N1BP2/PPPQ2PP/R3KB1R w KQkq - 2 9", + "hash": 11160174951987160617, + "name": "Sicilian: Scheveningen, English, 7...b5, 8.Qd2 Bb7" + }, + "B80m": { + "eco": "B80m", + "fen": "r1bqkb1r/3n1ppp/p2ppn2/1p6/3NP3/2N1BP2/PPPQ2PP/R3KB1R w KQkq - 2 9", + "hash": 1843049927074276478, + "name": "Sicilian: Scheveningen, English, 7...b5 8.Qd2 Nbd7" + }, + "B80n": { + "eco": "B80n", + "fen": "rnbqkb1r/pp3ppp/3ppn2/1B6/3NP3/2N5/PPP2PPP/R1BQK2R b KQkq - 1 6", + "hash": 11456303556016632975, + "name": "Sicilian: Scheveningen, Vitolins Variation" + }, + "B80o": { + "eco": "B80o", + "fen": "rnbqkb1r/pp3ppp/3ppn2/8/3NP3/2N3P1/PPP2P1P/R1BQKB1R b KQkq - 0 6", + "hash": 9350771952327409460, + "name": "Sicilian: Scheveningen, Fianchetto Variation" + }, + "B80p": { + "eco": "B80p", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/8/3NP3/2N3P1/PPP2P1P/R1BQKB1R w KQkq - 0 7", + "hash": 5995254824714225640, + "name": "Sicilian: Scheveningen, Fianchetto Variation" + }, + "B80q": { + "eco": "B80q", + "fen": "r1bqkb1r/pp3ppp/2nppn2/8/3NP3/2N3P1/PPP2P1P/R1BQKB1R w KQkq - 1 7", + "hash": 3038035763523000887, + "name": "Sicilian: Scheveningen, Fianchetto Variation" + }, + "B80r": { + "eco": "B80r", + "fen": "r1bqkb1r/1p3ppp/p1nppn2/8/3NP3/2N3P1/PPP2PBP/R1BQK2R w KQkq - 0 8", + "hash": 5561549582094416530, + "name": "Sicilian: Scheveningen, Fianchetto Variation" + }, + "B80s": { + "eco": "B80s", + "fen": "r1b1kb1r/ppq2ppp/2nppn2/8/3NP3/2N3P1/PPP2PBP/R1BQK2R w KQkq - 3 8", + "hash": 11080642006121057615, + "name": "Sicilian: Scheveningen, Fianchetto Variation" + }, + "B80t": { + "eco": "B80t", + "fen": "r1b1kb1r/1pq2ppp/p1nppn2/8/3NP3/2N3P1/PPP2PBP/R1BQ1RK1 w kq - 0 9", + "hash": 3838425835837927043, + "name": "Sicilian: Scheveningen, Fianchetto Variation" + }, + "B80u": { + "eco": "B80u", + "fen": "r1b1k2r/1pq1bppp/p1nppn2/8/3NP3/2N3P1/PPP2PBP/R1BQR1K1 w kq - 2 10", + "hash": 11906583455687649542, + "name": "Sicilian: Scheveningen, Fianchetto Variation" + }, + "B81a": { + "eco": "B81a", + "fen": "rnbqkb1r/pp3ppp/3ppn2/8/3NP1P1/2N5/PPP2P1P/R1BQKB1R b KQkq g3 0 6", + "hash": 1040093037382535697, + "name": "Sicilian: Scheveningen, Keres Attack" + }, + "B81b": { + "eco": "B81b", + "fen": "rnbqkb1r/pp3ppp/3p1n2/4p3/3NP1P1/2N5/PPP2P1P/R1BQKB1R w KQkq - 0 7", + "hash": 772081233263585148, + "name": "Sicilian: Scheveningen, Keres, 6...e5" + }, + "B81c": { + "eco": "B81c", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/8/3NP1P1/2N5/PPP2P1P/R1BQKB1R w KQkq - 0 7", + "hash": 15895691179907085005, + "name": "Sicilian: Scheveningen, Keres, 6...a6" + }, + "B81d": { + "eco": "B81d", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/8/3NP1P1/2N1B3/PPP2P1P/R2QKB1R b KQkq - 1 7", + "hash": 12650731218247215427, + "name": "Sicilian: Scheveningen, Keres, Perenyi Attack" + }, + "B81e": { + "eco": "B81e", + "fen": "rnbqkb1r/1p3ppp/p2p1n2/4p3/3NP1P1/2N1B3/PPP2P1P/R2QKB1R w KQkq - 0 8", + "hash": 12342591782581765166, + "name": "Sicilian: Scheveningen, Keres, Perenyi Attack, 7...e5" + }, + "B81f": { + "eco": "B81f", + "fen": "rnbqkb1r/1p3pp1/p2ppn1p/8/3NP1P1/2N1B3/PPP2P1P/R2QKB1R w KQkq - 0 8", + "hash": 4424547364136919126, + "name": "Sicilian: Scheveningen, Keres, Perenyi Attack, 7...h6" + }, + "B81g": { + "eco": "B81g", + "fen": "rnbqkb1r/1p3pp1/p2ppn1p/8/3NPPP1/2N1B3/PPP4P/R2QKB1R b KQkq f3 0 8", + "hash": 13866965262950243807, + "name": "Sicilian: Scheveningen, Keres, Perenyi Attack, 7...h6 8.f4" + }, + "B81h": { + "eco": "B81h", + "fen": "rnbqkb1r/pp3pp1/3ppn1p/8/3NP1P1/2N5/PPP2P1P/R1BQKB1R w KQkq - 0 7", + "hash": 11283888153949061892, + "name": "Sicilian: Scheveningen, Keres, 6...h6" + }, + "B81i": { + "eco": "B81i", + "fen": "rnbqkb1r/pp3pp1/3ppn1p/8/3NP1P1/2N4P/PPP2P2/R1BQKB1R b KQkq - 0 7", + "hash": 8388994182252628726, + "name": "Sicilian: Scheveningen, Keres, 6...h6 7.h3" + }, + "B81j": { + "eco": "B81j", + "fen": "rnbqkb1r/pp3pp1/3ppn1p/8/3NP1PP/2N5/PPP2P2/R1BQKB1R b KQkq h3 0 7", + "hash": 16871268911430266, + "name": "Sicilian: Scheveningen, Keres, 6...h6 7.h4" + }, + "B81k": { + "eco": "B81k", + "fen": "rnbqk2r/pp2bpp1/3ppn1p/8/3NP1PP/2N5/PPP2P2/R1BQKB1R w KQkq - 1 8", + "hash": 1510821042087237355, + "name": "Sicilian: Scheveningen, Keres, 6...h6 7.h4 Be7" + }, + "B81l": { + "eco": "B81l", + "fen": "r1bqkb1r/pp3pp1/2nppn1p/8/3NP1PP/2N5/PPP2P2/R1BQKB1R w KQkq - 1 8", + "hash": 12382128989663240057, + "name": "Sicilian: Scheveningen, Keres, 6...h6 7.h4 Nc6" + }, + "B81m": { + "eco": "B81m", + "fen": "r1bqkb1r/pp3pp1/2nppn1p/8/3NP1PP/2N5/PPP2P2/R1BQKBR1 b Qkq - 2 8", + "hash": 12656836197030299059, + "name": "Sicilian: Scheveningen, Keres, 6...h6 7.h4 Nc6 8.Rg1" + }, + "B81n": { + "eco": "B81n", + "fen": "r1bqkb1r/pp3pp1/2nppn2/7p/3NP1PP/2N5/PPP2P2/R1BQKBR1 w Qkq - 0 9", + "hash": 15625782896439027928, + "name": "Sicilian: Scheveningen, Keres, 6...h6 7.h4 Nc6 8.Rg1 h5" + }, + "B81o": { + "eco": "B81o", + "fen": "rnbqkb1r/pp3pp1/3ppn1p/6P1/3NP3/2N5/PPP2P1P/R1BQKB1R b KQkq - 0 7", + "hash": 15332869117485984217, + "name": "Sicilian: Scheveningen, Keres, 6...h6 7.g5" + }, + "B81p": { + "eco": "B81p", + "fen": "rnbqkb1r/pp3pp1/3ppn1p/8/3NP1P1/2N5/PPP2P1P/R1BQKBR1 b Qkq - 1 7", + "hash": 11018155160317909454, + "name": "Sicilian: Scheveningen, Keres, 6...h6 7.Rg1" + }, + "B81q": { + "eco": "B81q", + "fen": "r1bqkb1r/pp3ppp/2nppn2/8/3NP1P1/2N5/PPP2P1P/R1BQKB1R w KQkq - 1 7", + "hash": 11926376209402474258, + "name": "Sicilian: Scheveningen, Keres, 6...Nc6" + }, + "B81r": { + "eco": "B81r", + "fen": "r1bqkb1r/pp1n1ppp/2npp3/6P1/3NP3/2N5/PPP2P1P/R1BQKB1R w KQkq - 1 8", + "hash": 1483051088549956666, + "name": "Sicilian: Scheveningen, Keres, 6...Nc6 7.g5 Nd7" + }, + "B81s": { + "eco": "B81s", + "fen": "r1bqkb1r/pp1n1ppp/2npp3/6P1/3NP3/2N1B3/PPP2P1P/R2QKB1R b KQkq - 2 8", + "hash": 7465948896347084724, + "name": "Sicilian: Scheveningen, Keres, 6...Nc6 7.g5 Nd7 8.Be3" + }, + "B81t": { + "eco": "B81t", + "fen": "r1bqk2r/pp1nbppp/2npp3/6P1/3NP3/2N1B3/PPP2P1P/R2QKB1R w KQkq - 3 9", + "hash": 8309162309777324837, + "name": "Sicilian: Scheveningen, Keres, 6...Nc6 7.g5 Nd7 8.Be3 Be7" + }, + "B82": { + "eco": "B82", + "fen": "rnbqkb1r/pp3ppp/3ppn2/8/3NPP2/2N5/PPP3PP/R1BQKB1R b KQkq f3 0 6", + "hash": 5779345104891271813, + "name": "Sicilian: Scheveningen, 6.f4" + }, + "B83": { + "eco": "B83", + "fen": "rnbqkb1r/pp3ppp/3ppn2/8/3NP3/2N5/PPP1BPPP/R1BQK2R b KQkq - 1 6", + "hash": 16042566468421529007, + "name": "Sicilian: Scheveningen, 6.Be2" + }, + "B84": { + "eco": "B84", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/8/3NP3/2N5/PPP1BPPP/R1BQK2R w KQkq - 0 7", + "hash": 888709716576523635, + "name": "Sicilian: Scheveningen, Classical" + }, + "B85": { + "eco": "B85", + "fen": "rnbq1rk1/1p2bppp/p2ppn2/8/3NPP2/2N1B3/PPP1B1PP/R2Q1RK1 b - - 2 9", + "hash": 16310480163128339742, + "name": "Sicilian: Scheveningen, Classical, Main Line" + }, + "B86": { + "eco": "B86", + "fen": "rnbqkb1r/pp3ppp/3ppn2/8/2BNP3/2N5/PPP2PPP/R1BQK2R b KQkq - 1 6", + "hash": 14884839758277456298, + "name": "Sicilian: Sozin-Scheveningen" + }, + "B87": { + "eco": "B87", + "fen": "rnbqkb1r/5ppp/p2ppn2/1p6/3NP3/1BN5/PPP2PPP/R1BQK2R w KQkq b6 0 8", + "hash": 13071162599844226223, + "name": "Sicilian: Sozin-Najdorf, 7.Bb3 b5" + }, + "B88": { + "eco": "B88", + "fen": "r1bqkb1r/pp3ppp/2nppn2/8/2BNP3/2N5/PPP2PPP/R1BQK2R w KQkq - 2 7", + "hash": 7312801291203024041, + "name": "Sicilian: Sozin-Scheveningen" + }, + "B89": { + "eco": "B89", + "fen": "r1bqkb1r/pp3ppp/2nppn2/8/2BNP3/2N1B3/PPP2PPP/R2QK2R b KQkq - 3 7", + "hash": 1618184157921709863, + "name": "Sicilian: Sozin, 7.Be3" + }, + "B90a": { + "eco": "B90a", + "fen": "rnbqkb1r/1p2pppp/p2p1n2/8/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 0 6", + "hash": 694158040231612290, + "name": "Sicilian: Najdorf" + }, + "B90b": { + "eco": "B90b", + "fen": "rnbqkb1r/1p2pppp/p2p1n2/8/P2NP3/2N5/1PP2PPP/R1BQKB1R b KQkq a3 0 6", + "hash": 7091863069284850252, + "name": "Sicilian: Najdorf, 6.a4" + }, + "B90c": { + "eco": "B90c", + "fen": "rnbqkb1r/1p3ppp/p2p1n2/4p3/P2NP3/2N5/1PP2PPP/R1BQKB1R w KQkq e6 0 7", + "hash": 16722801829683569274, + "name": "Sicilian: Najdorf, 6.a4 e5" + }, + "B90d": { + "eco": "B90d", + "fen": "rnbqkb1r/1p2pppp/p2p1n2/8/3NP3/2N2P2/PPP3PP/R1BQKB1R b KQkq - 0 6", + "hash": 7427494885499232499, + "name": "Sicilian: Najdorf, 6.f3" + }, + "B90e": { + "eco": "B90e", + "fen": "rnbqkb1r/1p2pppp/p2p1n2/8/3NP3/2N4P/PPP2PP1/R1BQKB1R b KQkq - 0 6", + "hash": 16236031573145634416, + "name": "Sicilian: Najdorf, Adams Attack" + }, + "B90f": { + "eco": "B90f", + "fen": "rnbqkb1r/1p2pppp/p2p1n2/8/2BNP3/2N5/PPP2PPP/R1BQK2R b KQkq - 1 6", + "hash": 7643049641021233444, + "name": "Sicilian: Najdorf, Fischer-Sozin Attack" + }, + "B90g": { + "eco": "B90g", + "fen": "rnbqkb1r/1p2pppp/p2p1n2/8/3NP3/2N1B3/PPP2PPP/R2QKB1R b KQkq - 1 6", + "hash": 8839051919898350604, + "name": "Sicilian: Najdorf, 6.Be3" + }, + "B90h": { + "eco": "B90h", + "fen": "rnbqkb1r/1p2pppp/p2p4/8/3NP1n1/2N1B3/PPP2PPP/R2QKB1R w KQkq - 2 7", + "hash": 16684083472839214432, + "name": "Sicilian: Najdorf, 6.Be3 Ng4" + }, + "B90i": { + "eco": "B90i", + "fen": "rnbqk2r/1p2ppb1/p2p3p/6p1/3NP1n1/2N3B1/PPP2PPP/R2QKB1R w KQkq - 2 10", + "hash": 15847217744859867763, + "name": "Sicilian: Najdorf, 6.Be3 Ng4 7.Bg5 h6 8.Bh4 g5 9.Bg3 Bg7" + }, + "B90j": { + "eco": "B90j", + "fen": "rnbqk2r/1p2ppb1/p2p3p/6p1/3NP1n1/2N3B1/PPP1BPPP/R2QK2R b KQkq - 3 10", + "hash": 12136114036874338512, + "name": "Sicilian: Najdorf, 6.Be3 Ng4 7.Bg5 h6 8.Bh4 g5 9.Bg3 Bg7 10.Be2" + }, + "B90k": { + "eco": "B90k", + "fen": "rnbqkb1r/1p3ppp/p2p1n2/4p3/3NP3/2N1B3/PPP2PPP/R2QKB1R w KQkq e6 0 7", + "hash": 17353097968401738810, + "name": "Sicilian: Najdorf, 6.Be3 e5" + }, + "B90l": { + "eco": "B90l", + "fen": "rnbqkb1r/1p3ppp/p2p1n2/4p3/4P3/1NN1B3/PPP2PPP/R2QKB1R b KQkq - 1 7", + "hash": 7251831708267621104, + "name": "Sicilian: Najdorf, 6.Be3 e5 7.Nb3" + }, + "B90m": { + "eco": "B90m", + "fen": "rn1qkb1r/1p3ppp/p2pbn2/4p3/4P3/1NN1B3/PPPQ1PPP/R3KB1R b KQkq - 3 8", + "hash": 1730354086797643352, + "name": "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.Qd2" + }, + "B90n": { + "eco": "B90n", + "fen": "rn1qkb1r/1p3ppp/p2pbn2/4p3/4P3/1NN1BP2/PPP3PP/R2QKB1R b KQkq - 0 8", + "hash": 6821504698542669449, + "name": "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.f3" + }, + "B90o": { + "eco": "B90o", + "fen": "rn1qk2r/1p2bppp/p2pbn2/4p3/4P3/1NN1BP2/PPP3PP/R2QKB1R w KQkq - 1 9", + "hash": 5361158835608261144, + "name": "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.f3 Be7" + }, + "B90p": { + "eco": "B90p", + "fen": "r2qk2r/1p1nbppp/p2pbn2/4p3/4P3/1NN1BP2/PPPQ2PP/R3KB1R w KQkq - 3 10", + "hash": 5881029708185968756, + "name": "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.f3 Be7 9.Qd2 Nbd7" + }, + "B90q": { + "eco": "B90q", + "fen": "rn1q1rk1/1p2bppp/p2pbn2/4p3/4P3/1NN1BP2/PPPQ2PP/R3KB1R w KQ - 3 10", + "hash": 7554238303285847123, + "name": "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.f3 Be7 9.Qd2 O-O" + }, + "B90r": { + "eco": "B90r", + "fen": "r2q1rk1/1p1nbppp/p2pbn2/4p3/4P3/1NN1BP2/PPPQ2PP/2KR1B1R w - - 5 11", + "hash": 7140516345720489479, + "name": "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.f3 Be7 9.Qd2 O-O 10.O-O-O Nbd7" + }, + "B90s": { + "eco": "B90s", + "fen": "r2qkb1r/1p1n1ppp/p2pbn2/4p3/4P3/1NN1BP2/PPP3PP/R2QKB1R w KQkq - 1 9", + "hash": 7875002703693468485, + "name": "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.f3 Nbd7" + }, + "B90t": { + "eco": "B90t", + "fen": "r2qkb1r/1p1n1ppp/p2pbn2/4p3/4P3/1NN1BP2/PPPQ2PP/R3KB1R b KQkq - 2 9", + "hash": 4995035916567973093, + "name": "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.f3 Be7 9.Qd2" + }, + "B90u": { + "eco": "B90u", + "fen": "r2qkb1r/3n1ppp/p2pbn2/1p2p3/4P3/1NN1BP2/PPPQ2PP/R3KB1R w KQkq b6 0 10", + "hash": 2690202201409171928, + "name": "Sicilian: Najdorf, 6.Be3 e5 7.Nb3 Be6 8.f3 Be7 9.Qd2 b5" + }, + "B91a": { + "eco": "B91a", + "fen": "rnbqkb1r/1p2pppp/p2p1n2/8/3NP3/2N3P1/PPP2P1P/R1BQKB1R b KQkq - 0 6", + "hash": 2685445338569594810, + "name": "Sicilian: Najdorf, 6.g3" + }, + "B91b": { + "eco": "B91b", + "fen": "rnbqkb1r/4pppp/p2p1n2/1p6/3NP3/2N3P1/PPP2P1P/R1BQKB1R w KQkq b6 0 7", + "hash": 4990257059720522375, + "name": "Sicilian: Najdorf, 6.g3 b5" + }, + "B91c": { + "eco": "B91c", + "fen": "rnbqkb1r/1p2pp1p/p2p1np1/8/3NP3/2N3P1/PPP2P1P/R1BQKB1R w KQkq - 0 7", + "hash": 14767528671826986481, + "name": "Sicilian: Najdorf, 6.g3 g6" + }, + "B91d": { + "eco": "B91d", + "fen": "r1bqkb1r/1p2pppp/p1np1n2/8/3NP3/2N3P1/PPP2P1P/R1BQKB1R w KQkq - 1 7", + "hash": 10279825332164555449, + "name": "Sicilian: Najdorf, 6.g3 Nc6" + }, + "B91e": { + "eco": "B91e", + "fen": "rn1qkb1r/1p2pppp/p2p1n2/8/3NP1b1/2N3P1/PPP2P1P/R1BQKB1R w KQkq - 1 7", + "hash": 2852841784452471120, + "name": "Sicilian: Najdorf, 6.g3 Bg4" + }, + "B91f": { + "eco": "B91f", + "fen": "rnbqkb1r/1p3ppp/p2p1n2/4p3/3NP3/2N3P1/PPP2P1P/R1BQKB1R w KQkq e6 0 7", + "hash": 12627132400217796492, + "name": "Sicilian: Najdorf, 6.g3 e5" + }, + "B91g": { + "eco": "B91g", + "fen": "rnbqkb1r/1p3ppp/p2p1n2/4p3/4P3/1NN3P1/PPP2P1P/R1BQKB1R b KQkq - 1 7", + "hash": 4273263113364138310, + "name": "Sicilian: Najdorf, 6.g3 e5 7.Nb3" + }, + "B91h": { + "eco": "B91h", + "fen": "rnbqk2r/1p2bppp/p2p1n2/4p3/4P3/1NN3P1/PPP2P1P/R1BQKB1R w KQkq - 2 8", + "hash": 3423261038101054935, + "name": "Sicilian: Najdorf, 6.g3 e5 7.Nb3 Be7" + }, + "B91i": { + "eco": "B91i", + "fen": "rnbqkb1r/1p3ppp/p2p1n2/4p3/4P3/2N3P1/PPP1NP1P/R1BQKB1R b KQkq - 1 7", + "hash": 2205368750777793408, + "name": "Sicilian: Najdorf, 6.g3 e5 7.Nde2" + }, + "B91j": { + "eco": "B91j", + "fen": "rnbqkb1r/5ppp/p2p1n2/1p2p3/4P3/2N3P1/PPP1NP1P/R1BQKB1R w KQkq b6 0 8", + "hash": 9124118177984726717, + "name": "Sicilian: Najdorf, 6.g3 e5 7.Nde2 b5" + }, + "B91k": { + "eco": "B91k", + "fen": "r1bqkb1r/1p1n1ppp/p2p1n2/4p3/4P3/2N3P1/PPP1NP1P/R1BQKB1R w KQkq - 2 8", + "hash": 3276492339621893708, + "name": "Sicilian: Najdorf, 6.g3 e5 7.Nde2 Nbd7" + }, + "B91l": { + "eco": "B91l", + "fen": "rnbqk2r/1p2bppp/p2p1n2/4p3/4P3/2N3P1/PPP1NP1P/R1BQKB1R w KQkq - 2 8", + "hash": 745197160218285841, + "name": "Sicilian: Najdorf, 6.g3 e5 7.Nde2 Be7" + }, + "B91m": { + "eco": "B91m", + "fen": "r1bqk2r/1p1nbppp/p2p1n2/4p3/4P3/2N3P1/PPP1NPBP/R1BQK2R w KQkq - 4 9", + "hash": 10107239742697759396, + "name": "Sicilian: Najdorf, 6.g3 e5 7.Nde2 Be7 8.Bg2 Nbd7" + }, + "B91n": { + "eco": "B91n", + "fen": "rnbq1rk1/1p2bppp/p2p1n2/4p3/4P3/2N3P1/PPP1NPBP/R1BQK2R w KQ - 4 9", + "hash": 13046846846537098883, + "name": "Sicilian: Najdorf, 6.g3 e5 7.Nde2 Be7 8.Bg2 O-O" + }, + "B92a": { + "eco": "B92a", + "fen": "rnbqkb1r/1p2pppp/p2p1n2/8/3NP3/2N5/PPP1BPPP/R1BQK2R b KQkq - 1 6", + "hash": 8800780198616876321, + "name": "Sicilian: Najdorf, 6.Be2" + }, + "B92b": { + "eco": "B92b", + "fen": "r1bqkb1r/1p1npppp/p2p1n2/8/3NP3/2N5/PPP1BPPP/R1BQK2R w KQkq - 2 7", + "hash": 5314772764676139245, + "name": "Sicilian: Najdorf, 6.Be2 Nbd7" + }, + "B92c": { + "eco": "B92c", + "fen": "rnbqkb1r/1p3ppp/p2p1n2/4p3/3NP3/2N5/PPP1BPPP/R1BQK2R w KQkq e6 0 7", + "hash": 17319347443229015319, + "name": "Sicilian: Najdorf, 6.Be2 e5" + }, + "B92d": { + "eco": "B92d", + "fen": "rnbqkb1r/1p3ppp/p2p1n2/4p3/4P3/2N2N2/PPP1BPPP/R1BQK2R b KQkq - 1 7", + "hash": 10249406257985521112, + "name": "Sicilian: Najdorf, 6.Be2 e5 7.Nf3" + }, + "B92e": { + "eco": "B92e", + "fen": "rnbqkb1r/1p3ppp/p2p1n2/4p3/4P3/1NN5/PPP1BPPP/R1BQK2R b KQkq - 1 7", + "hash": 7218028380764765149, + "name": "Sicilian: Najdorf, 6.Be2 e5 7.Nb3" + }, + "B92f": { + "eco": "B92f", + "fen": "rnbqk2r/1p2bppp/p2p1n2/4p3/4P3/1NN5/PPP1BPPP/R1BQK2R w KQkq - 2 8", + "hash": 8135723581272250188, + "name": "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7" + }, + "B92g": { + "eco": "B92g", + "fen": "rnbqk2r/1p2bppp/p2p1n2/4p3/4P3/1NN1B3/PPP1BPPP/R2QK2R b KQkq - 3 8", + "hash": 283549284949445826, + "name": "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.Be3" + }, + "B92h": { + "eco": "B92h", + "fen": "rnbqk2r/1p2bppp/p2p1n2/4p3/4P3/1NN5/PPP1BPPP/R1BQ1RK1 b kq - 3 8", + "hash": 1050075705816353884, + "name": "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O" + }, + "B92i": { + "eco": "B92i", + "fen": "rn1qk2r/1p2bppp/p2pbn2/4p3/4PP2/1NN5/PPP1B1PP/R1BQ1RK1 b kq f3 0 9", + "hash": 12050631579804355293, + "name": "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O Be6 9.f4" + }, + "B92j": { + "eco": "B92j", + "fen": "rnbq1rk1/1p2bppp/p2p1n2/4p3/4P3/1NN5/PPP1BPPP/R1BQ1RK1 w - - 4 9", + "hash": 304683458170086839, + "name": "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O" + }, + "B92k": { + "eco": "B92k", + "fen": "rnbq1rk1/1p2bppp/p2p1n2/4p3/4P3/1NN1B3/PPP1BPPP/R2Q1RK1 b - - 5 9", + "hash": 8589147415428234809, + "name": "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O 9.Be3" + }, + "B92l": { + "eco": "B92l", + "fen": "rn1q1rk1/1p2bppp/p2pbn2/4p3/P3P3/1NN1B3/1PP1BPPP/R2Q1RK1 b - a3 0 10", + "hash": 5207045352837271807, + "name": "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O 9.Be3 Be6 10.a4" + }, + "B92m": { + "eco": "B92m", + "fen": "rn1q1rk1/1p2bppp/p2pbn2/3Np3/4P3/1N2B3/PPP1BPPP/R2Q1RK1 b - - 7 10", + "hash": 16402097651600095844, + "name": "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O 9.Be3 Be6 10.Nd5" + }, + "B92n": { + "eco": "B92n", + "fen": "rn1q1rk1/1p2bppp/p2pbn2/4p3/4P3/1NN1B3/PPPQBPPP/R4RK1 b - - 7 10", + "hash": 833752291358857873, + "name": "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O 9.Be3 Be6 10.Qd2" + }, + "B92o": { + "eco": "B92o", + "fen": "rnbq1rk1/1p2bppp/p2p1n2/4p3/4P3/1NN5/PPP1BPPP/R1BQ1R1K b - - 5 9", + "hash": 3859937099344824312, + "name": "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O 9.Kh1" + }, + "B92p": { + "eco": "B92p", + "fen": "rn1q1rk1/1p2bppp/p2pbn2/4p3/4P3/1NN5/PPP1BPPP/R1BQ1R1K w - - 6 10", + "hash": 7001358555898559728, + "name": "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O 9.Kh1 Be6" + }, + "B92q": { + "eco": "B92q", + "fen": "r1bq1rk1/1p2bppp/p1np1n2/4p3/4P3/1NN5/PPP1BPPP/R1BQ1R1K w - - 6 10", + "hash": 11420170659810861819, + "name": "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O 9.Kh1 Nc6" + }, + "B92r": { + "eco": "B92r", + "fen": "rnb2rk1/1pq1bppp/p2p1n2/4p3/4P3/1NN5/PPP1BPPP/R1BQ1R1K w - - 6 10", + "hash": 3715046887972636921, + "name": "Sicilian: Najdorf, 6.Be2 e5 7.Nb3 Be7 8.O-O O-O 9.Kh1 Qc7" + }, + "B93a": { + "eco": "B93a", + "fen": "rnbqkb1r/1p2pppp/p2p1n2/8/3NPP2/2N5/PPP3PP/R1BQKB1R b KQkq f3 0 6", + "hash": 17632815208091988491, + "name": "Sicilian: Najdorf, 6.f4" + }, + "B93b": { + "eco": "B93b", + "fen": "r1bqkb1r/1p2pppp/p1np1n2/8/3NPP2/2N5/PPP3PP/R1BQKB1R w KQkq - 1 7", + "hash": 6870664407265580808, + "name": "Sicilian: Najdorf, 6.f4 Nc6" + }, + "B93c": { + "eco": "B93c", + "fen": "r1bqkb1r/1p1npppp/p2p1n2/8/3NPP2/2N5/PPP3PP/R1BQKB1R w KQkq - 1 7", + "hash": 14363988430483185607, + "name": "Sicilian: Najdorf, 6.f4 Nbd7" + }, + "B93d": { + "eco": "B93d", + "fen": "r1bqkb1r/1p1npppp/p2p1n2/8/3NPP2/2N5/PPP1B1PP/R1BQK2R b KQkq - 2 7", + "hash": 13031060684696196452, + "name": "Sicilian: Najdorf, 6.f4 Nbd7 7.Be2" + }, + "B93e": { + "eco": "B93e", + "fen": "rnb1kb1r/1pq1pppp/p2p1n2/8/3NPP2/2N5/PPP3PP/R1BQKB1R w KQkq - 1 7", + "hash": 17486183379159678218, + "name": "Sicilian: Najdorf, 6.f4 Qc7" + }, + "B93f": { + "eco": "B93f", + "fen": "rnb1kb1r/1pq1pppp/p2p1n2/8/3NPP2/2NB4/PPP3PP/R1BQK2R b KQkq - 2 7", + "hash": 12080561307848687481, + "name": "Sicilian: Najdorf, 6.f4 Qc7 7.Bd3" + }, + "B93g": { + "eco": "B93g", + "fen": "rnb1kb1r/1pq1pp1p/p2p1np1/8/3NPP2/2NB4/PPP3PP/R1BQK2R w KQkq - 0 8", + "hash": 5625723650124131634, + "name": "Sicilian: Najdorf, 6.f4 Qc7 7.Bd3 g6" + }, + "B93h": { + "eco": "B93h", + "fen": "rnb1kb1r/1pq1pppp/p2p1n2/8/4PP2/2N2N2/PPP3PP/R1BQKB1R b KQkq - 2 7", + "hash": 10145762443075143109, + "name": "Sicilian: Najdorf, 6.f4 Qc7 7.Nf3" + }, + "B93i": { + "eco": "B93i", + "fen": "r1b1kb1r/1pqnpppp/p2p1n2/8/4PP2/2N2N2/PPP3PP/R1BQKB1R w KQkq - 3 8", + "hash": 13776377609775917065, + "name": "Sicilian: Najdorf, 6.f4 Qc7 7.Nf3 Nbd7" + }, + "B93j": { + "eco": "B93j", + "fen": "r1b1kb1r/1pqnpppp/p2p1n2/8/4PP2/2NB1N2/PPP3PP/R1BQK2R b KQkq - 4 8", + "hash": 16871090928991234682, + "name": "Sicilian: Najdorf, 6.f4 Qc7 7.Nf3 Nbd7 8.Bd3" + }, + "B93k": { + "eco": "B93k", + "fen": "rnbqkb1r/1p3ppp/p2p1n2/4p3/3NPP2/2N5/PPP3PP/R1BQKB1R w KQkq e6 0 7", + "hash": 9136766017543359037, + "name": "Sicilian: Najdorf, 6.f4 e5" + }, + "B93l": { + "eco": "B93l", + "fen": "rnb1kb1r/1pq2ppp/p2p1n2/4p3/4PP2/2N2N2/PPP3PP/R1BQKB1R w KQkq - 2 8", + "hash": 483280875939413491, + "name": "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Qc7" + }, + "B93m": { + "eco": "B93m", + "fen": "rnb1kb1r/1pq2ppp/p2p1n2/4p3/P3PP2/2N2N2/1PP3PP/R1BQKB1R b KQkq a3 0 8", + "hash": 7889615542825805885, + "name": "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Qc7 8.a4" + }, + "B93n": { + "eco": "B93n", + "fen": "r1bqkb1r/1p1n1ppp/p2p1n2/4p3/4PP2/2N2N2/PPP3PP/R1BQKB1R w KQkq - 2 8", + "hash": 3695398219048034110, + "name": "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Nbd7" + }, + "B93o": { + "eco": "B93o", + "fen": "r1bqkb1r/1p1n1ppp/p2p1n2/4p3/4PP2/2NB1N2/PPP3PP/R1BQK2R b KQkq - 3 8", + "hash": 7369314764305521997, + "name": "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Nbd7 8.Bd3" + }, + "B93p": { + "eco": "B93p", + "fen": "r1bqkb1r/1p1n1ppp/p2p1n2/4p3/P3PP2/2N2N2/1PP3PP/R1BQKB1R b KQkq a3 0 8", + "hash": 6377607200796035824, + "name": "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Nbd7 8.a4" + }, + "B93q": { + "eco": "B93q", + "fen": "r1b1kb1r/1pqn1ppp/p2p1n2/4p3/P3PP2/2N2N2/1PP3PP/R1BQKB1R w KQkq - 1 9", + "hash": 6818151683036579313, + "name": "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Nbd7 8.a4 Qc7" + }, + "B93r": { + "eco": "B93r", + "fen": "r1bqk2r/1p1nbppp/p2p1n2/4p3/P3PP2/2N2N2/1PP3PP/R1BQKB1R w KQkq - 1 9", + "hash": 5498257541064320609, + "name": "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Nbd7 8.a4 Be7" + }, + "B93s": { + "eco": "B93s", + "fen": "r1bqk2r/1p1nbppp/p2p1n2/4p3/P3PP2/2NB1N2/1PP3PP/R1BQK2R b KQkq - 2 9", + "hash": 1819486927636702226, + "name": "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Nbd7 8.a4 Be7 9.Bd3" + }, + "B93t": { + "eco": "B93t", + "fen": "r1bq1rk1/1p2bppp/p2p1n2/2n1p3/P3PP2/2NB1N2/1PP3PP/R1BQ1RK1 w - - 5 11", + "hash": 5610237246739501987, + "name": "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Nbd7 8.a4 Be7 9.Bd3 O-O 10.O-O Nc5" + }, + "B93u": { + "eco": "B93u", + "fen": "r1bq1rk1/1p1nbppp/p2p1n2/8/P3Pp2/2NB1N2/1PP3PP/R1BQ1RK1 w - - 0 11", + "hash": 9518271663509442877, + "name": "Sicilian: Najdorf, 6.f4 e5 7.Nf3 Nbd7 8.a4 Be7 9.Bd3 O-O 10.O-O exf4" + }, + "B94a": { + "eco": "B94a", + "fen": "rnbqkb1r/1p2pppp/p2p1n2/6B1/3NP3/2N5/PPP2PPP/R2QKB1R b KQkq - 1 6", + "hash": 14985853353466418250, + "name": "Sicilian: Najdorf, 6.Bg5" + }, + "B94b": { + "eco": "B94b", + "fen": "rnbqkb1r/4pppp/p2p1n2/1p4B1/3NP3/2N5/PPP2PPP/R2QKB1R w KQkq b6 0 7", + "hash": 12681037229751789943, + "name": "Sicilian: Najdorf, 6.Bg5 b5" + }, + "B94c": { + "eco": "B94c", + "fen": "rnbqkb1r/1p3ppp/p2p1n2/4p1B1/3NP3/2N5/PPP2PPP/R2QKB1R w KQkq e6 0 7", + "hash": 5008137421830990972, + "name": "Sicilian: Najdorf, 6.Bg5 e5" + }, + "B94d": { + "eco": "B94d", + "fen": "r1bqkb1r/1p1npppp/p2p1n2/6B1/3NP3/2N5/PPP2PPP/R2QKB1R w KQkq - 2 7", + "hash": 18166123847531542918, + "name": "Sicilian: Najdorf, 6.Bg5 Nbd7" + }, + "B94e": { + "eco": "B94e", + "fen": "r1bqkb1r/1p1npppp/p2p1n2/6B1/3NPP2/2N5/PPP3PP/R2QKB1R b KQkq f3 0 7", + "hash": 75844763127874575, + "name": "Sicilian: Najdorf, 6.Bg5 Nbd7 7.f4" + }, + "B94f": { + "eco": "B94f", + "fen": "r1bqkb1r/3npppp/p2p1n2/1p4B1/3NPP2/2N5/PPP3PP/R2QKB1R w KQkq b6 0 8", + "hash": 6992153417076586802, + "name": "Sicilian: Najdorf, 6.Bg5 Nbd7 7.f4 b5" + }, + "B94g": { + "eco": "B94g", + "fen": "r1bqkb1r/1p1npppp/p2p1n2/6B1/2BNP3/2N5/PPP2PPP/R2QK2R b KQkq - 3 7", + "hash": 11504653383132606240, + "name": "Sicilian: Najdorf, 6.Bg5 Nbd7 7.Bc4" + }, + "B94h": { + "eco": "B94h", + "fen": "r1bqkb1r/1p1n1ppp/p2ppn2/6B1/2BNP3/2N5/PPP2PPP/R2QK2R w KQkq - 0 8", + "hash": 16852275729700749170, + "name": "Sicilian: Najdorf, 6.Bg5 Nbd7 7.Bc4 e6" + }, + "B94i": { + "eco": "B94i", + "fen": "r1bqkb1r/1p1n1ppp/p2ppn2/6B1/2BNP3/2N5/PPP2PPP/R2Q1RK1 b kq - 1 8", + "hash": 10928604935269131362, + "name": "Sicilian: Najdorf, 6.Bg5 Nbd7 7.Bc4 e6 8.O-O" + }, + "B94j": { + "eco": "B94j", + "fen": "r1b1kb1r/1p1npppp/p2p1n2/q5B1/2BNP3/2N5/PPP2PPP/R2QK2R w KQkq - 4 8", + "hash": 5105718684436876975, + "name": "Sicilian: Najdorf, 6.Bg5 Nbd7 7.Bc4 Qa5" + }, + "B94k": { + "eco": "B94k", + "fen": "r1b1kb1r/1p1n1ppp/p2ppn2/q5B1/2BNP3/2N5/PPPQ1PPP/2KR3R b kq - 1 9", + "hash": 2349137972149227205, + "name": "Sicilian: Najdorf, 6.Bg5 Nbd7 7.Bc4 Qa5 8.Qd2 e6 9.O-O-O" + }, + "B95a": { + "eco": "B95a", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/6B1/3NP3/2N5/PPP2PPP/R2QKB1R w KQkq - 0 7", + "hash": 13371046594381923352, + "name": "Sicilian: Najdorf, 6...e6" + }, + "B95b": { + "eco": "B95b", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/6B1/3NP3/2NB4/PPP2PPP/R2QK2R b KQkq - 1 7", + "hash": 17042220957656417899, + "name": "Sicilian: Najdorf, 6...e6 7.Bd3" + }, + "B95c": { + "eco": "B95c", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/6B1/3NP3/2N5/PPP1BPPP/R2QK2R b KQkq - 1 7", + "hash": 14559860457766751931, + "name": "Sicilian: Najdorf, 6...e6 7.Be2" + }, + "B95d": { + "eco": "B95d", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/6B1/3NP3/2N5/PPP1QPPP/R3KB1R b KQkq - 1 7", + "hash": 3425285667525009308, + "name": "Sicilian: Najdorf, 6...e6 7.Qe2" + }, + "B95e": { + "eco": "B95e", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/6B1/3NP3/2N5/PPPQ1PPP/R3KB1R b KQkq - 1 7", + "hash": 10491082036329913272, + "name": "Sicilian: Najdorf, 6...e6 7.Qd2" + }, + "B95f": { + "eco": "B95f", + "fen": "rnbqk2r/1p2bppp/p2ppn2/6B1/3NP3/2N5/PPPQ1PPP/R3KB1R w KQkq - 2 8", + "hash": 9609481388785317673, + "name": "Sicilian: Najdorf, 6...e6 7.Qd2 Be7" + }, + "B95g": { + "eco": "B95g", + "fen": "rnbqk2r/1p2bppp/p2ppn2/6B1/3NP3/2N5/PPPQ1PPP/2KR1B1R b kq - 3 8", + "hash": 13652373424115595441, + "name": "Sicilian: Najdorf, 6...e6 7.Qd2 Be7 8.O-O-O" + }, + "B95h": { + "eco": "B95h", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/6B1/3NP3/2NQ4/PPP2PPP/R3KB1R b KQkq - 1 7", + "hash": 1866791267113260399, + "name": "Sicilian: Najdorf, 6...e6 7.Qd3" + }, + "B95i": { + "eco": "B95i", + "fen": "r1bqkb1r/1p3ppp/p1nppn2/6B1/3NP3/2NQ4/PPP2PPP/R3KB1R w KQkq - 2 8", + "hash": 12827927559216296044, + "name": "Sicilian: Najdorf, 6...e6 7.Qd3 Nc6" + }, + "B95j": { + "eco": "B95j", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/6B1/3NP3/2N2Q2/PPP2PPP/R3KB1R b KQkq - 1 7", + "hash": 265144187281314467, + "name": "Sicilian: Najdorf, 6...e6 7.Qf3" + }, + "B95k": { + "eco": "B95k", + "fen": "r1bqkb1r/1p1n1ppp/p2ppn2/6B1/3NP3/2N2Q2/PPP2PPP/R3KB1R w KQkq - 2 8", + "hash": 3480860738275344239, + "name": "Sicilian: Najdorf, 6...e6 7.Qf3 Nbd7" + }, + "B95l": { + "eco": "B95l", + "fen": "rnbqk2r/1p2bppp/p2ppn2/6B1/3NP3/2N2Q2/PPP2PPP/R3KB1R w KQkq - 2 8", + "hash": 1684778179786587698, + "name": "Sicilian: Najdorf, 6...e6 7.Qf3 Be7" + }, + "B95m": { + "eco": "B95m", + "fen": "r1bqk2r/1p1nbppp/p2ppn2/6B1/3NP3/2N2Q2/PPP2PPP/2KR1B1R w kq - 4 9", + "hash": 2067071598200413286, + "name": "Sicilian: Najdorf, 6...e6 7.Qf3 Be7 8.O-O-O Nbd7" + }, + "B95n": { + "eco": "B95n", + "fen": "rnbqkb1r/1p3pp1/p2ppn1p/6B1/3NP3/2N2Q2/PPP2PPP/R3KB1R w KQkq - 0 8", + "hash": 10473877798475652022, + "name": "Sicilian: Najdorf, 6...e6 7.Qf3 h6" + }, + "B96a": { + "eco": "B96a", + "fen": "rnbqkb1r/1p3ppp/p2ppn2/6B1/3NPP2/2N5/PPP3PP/R2QKB1R b KQkq f3 0 7", + "hash": 4943260268173326737, + "name": "Sicilian: Najdorf, 7.f4" + }, + "B96b": { + "eco": "B96b", + "fen": "rnbqkb1r/1p3pp1/p2ppn1p/6B1/3NPP2/2N5/PPP3PP/R2QKB1R w KQkq - 0 8", + "hash": 15451487909669089412, + "name": "Sicilian: Najdorf, 7.f4 h6" + }, + "B96c": { + "eco": "B96c", + "fen": "r1bqkb1r/1p3ppp/p1nppn2/6B1/3NPP2/2N5/PPP3PP/R2QKB1R w KQkq - 1 8", + "hash": 17254457750412614802, + "name": "Sicilian: Najdorf, 7.f4 Nc6" + }, + "B96d": { + "eco": "B96d", + "fen": "r1bqkb1r/1p3ppp/p1Nppn2/6B1/4PP2/2N5/PPP3PP/R2QKB1R b KQkq - 0 8", + "hash": 11814799690594014631, + "name": "Sicilian: Najdorf, 7.f4 Nc6 8.Nxc6" + }, + "B96e": { + "eco": "B96e", + "fen": "rn1qkb1r/1p1b1ppp/p2ppn2/6B1/3NPP2/2N5/PPP3PP/R2QKB1R w KQkq - 1 8", + "hash": 11986334081091578272, + "name": "Sicilian: Najdorf, 7.f4 Bd7" + }, + "B96f": { + "eco": "B96f", + "fen": "rnb1kb1r/1pq2ppp/p2ppn2/6B1/3NPP2/2N5/PPP3PP/R2QKB1R w KQkq - 1 8", + "hash": 4793732315682354832, + "name": "Sicilian: Najdorf, 7.f4 Qc7" + }, + "B96g": { + "eco": "B96g", + "fen": "rnb1kb1r/1pq2ppp/p2ppn2/6B1/3NPP2/2N2Q2/PPP3PP/R3KB1R b KQkq - 2 8", + "hash": 17916648729192161323, + "name": "Sicilian: Najdorf, 7.f4 Qc7 8.Qf3" + }, + "B96h": { + "eco": "B96h", + "fen": "rnb1kb1r/2q2ppp/p2ppn2/1p4B1/3NPP2/2N2Q2/PPP3PP/R3KB1R w KQkq b6 0 9", + "hash": 10998022296242642198, + "name": "Sicilian: Najdorf, 7.f4 Qc7 8.Qf3 b5" + }, + "B96i": { + "eco": "B96i", + "fen": "r1bqkb1r/1p1n1ppp/p2ppn2/6B1/3NPP2/2N5/PPP3PP/R2QKB1R w KQkq - 1 8", + "hash": 8609341350664279133, + "name": "Sicilian: Najdorf, 7.f4 Nbd7" + }, + "B96j": { + "eco": "B96j", + "fen": "r1bqkb1r/1p1n1ppp/p2ppn2/6B1/3NPP2/2N2Q2/PPP3PP/R3KB1R b KQkq - 2 8", + "hash": 14796855212535464678, + "name": "Sicilian: Najdorf, 7.f4 Nbd7 8.Qf3" + }, + "B96k": { + "eco": "B96k", + "fen": "r1b1kb1r/2qn1ppp/p2ppn2/1p4B1/3NPP2/2N2Q2/PPP3PP/2KR1B1R w kq b6 0 10", + "hash": 10623689690342276930, + "name": "Sicilian: Najdorf, 7.f4 Nbd7 8.Qf3 Qc7 9.O-O-O b5" + }, + "B96l": { + "eco": "B96l", + "fen": "r1b1kb1r/2qn1ppp/p2ppn2/1p4B1/3NPP2/2NB1Q2/PPP3PP/2KR3R b kq - 1 10", + "hash": 14295354161478532401, + "name": "Sicilian: Najdorf, 7.f4 Nbd7 8.Qf3 Qc7 9.O-O-O b5 10.Bd3" + }, + "B96m": { + "eco": "B96m", + "fen": "r1b1kb1r/2qn1ppp/p2ppn2/1p2P1B1/3N1P2/2N2Q2/PPP3PP/2KR1B1R b kq - 0 10", + "hash": 17444688215541455142, + "name": "Sicilian: Najdorf, 7.f4 Nbd7 8.Qf3 Qc7 9.O-O-O b5 10.e5" + }, + "B96n": { + "eco": "B96n", + "fen": "rnbqkb1r/5ppp/p2ppn2/1p4B1/3NPP2/2N5/PPP3PP/R2QKB1R w KQkq b6 0 8", + "hash": 2638431053419136172, + "name": "Sicilian: Najdorf, Polugaevsky Variation" + }, + "B96o": { + "eco": "B96o", + "fen": "rnb1kb1r/2q2ppp/p3pn2/1p2P1B1/8/2N2N2/PPP3PP/R2QKB1R b KQkq - 2 10", + "hash": 10026750600475520795, + "name": "Sicilian: Najdorf, Polugaevsky, 10.Nf3" + }, + "B96p": { + "eco": "B96p", + "fen": "rnb1kb1r/2q2ppp/p3pn2/1B2P1B1/3N4/2N5/PPP3PP/R2QK2R b KQkq - 0 10", + "hash": 15148394975820647446, + "name": "Sicilian: Najdorf, Polugaevsky, 10.Bxb5+" + }, + "B96q": { + "eco": "B96q", + "fen": "rnb1kb1r/2q2ppp/p3pP2/1p4B1/3N4/2N5/PPP3PP/R2QKB1R b KQkq - 0 10", + "hash": 16259499881593095601, + "name": "Sicilian: Najdorf, Polugaevsky, 10.exf6" + }, + "B96r": { + "eco": "B96r", + "fen": "rnb1kb1r/5ppp/p3pP2/1p2q1B1/3N4/2N5/PPP1B1PP/R2QK2R b KQkq - 2 11", + "hash": 7757100644617886922, + "name": "Sicilian: Najdorf, Polugaevsky, 10.exf6 Qe5+ 11.Be2" + }, + "B96s": { + "eco": "B96s", + "fen": "rnb1kb1r/5ppp/p3pP2/1p4q1/3N4/2NQ4/PPP1B1PP/R3K2R b KQkq - 1 12", + "hash": 1097104921274442335, + "name": "Sicilian: Najdorf, Polugaevsky, 10.exf6 Qe5+ 11.Be2 Qxg5 12.Qd3" + }, + "B96t": { + "eco": "B96t", + "fen": "rnb1kb1r/2q2ppp/p3pn2/1p2P1B1/3N4/2N5/PPP1Q1PP/R3KB1R b KQkq - 2 10", + "hash": 7153749903672069200, + "name": "Sicilian: Najdorf, Polugaevsky, 10.Qe2" + }, + "B96u": { + "eco": "B96u", + "fen": "r1b1kb1r/2qn1ppp/p1n1p3/1p2P1B1/3N4/2N5/PPP1Q1PP/2KR1B1R w kq - 5 12", + "hash": 702746008351960894, + "name": "Sicilian: Najdorf, Polugaevsky, 10.Qe2 Nfd7 11.O-O-O Nc6" + }, + "B96v": { + "eco": "B96v", + "fen": "rn2kb1r/1bqn1ppp/p3p3/1p2P1B1/3N4/2N5/PPP1Q1PP/2KR1B1R w kq - 5 12", + "hash": 1350296636783814054, + "name": "Sicilian: Najdorf, Polugaevsky, 10.Qe2 Nfd7 11.O-O-O Bb7" + }, + "B96w": { + "eco": "B96w", + "fen": "rn2kb1r/1bqn1ppp/p3p3/1p2P1B1/3N2Q1/2N5/PPP3PP/2KR1B1R b kq - 6 12", + "hash": 3015138532183499046, + "name": "Sicilian: Najdorf, Polugaevsky, 10.Qe2 Nfd7 11.O-O-O Bb7 12.Qg4" + }, + "B97a": { + "eco": "B97a", + "fen": "rnb1kb1r/1p3ppp/pq1ppn2/6B1/3NPP2/2N5/PPP3PP/R2QKB1R w KQkq - 1 8", + "hash": 9468258918230536011, + "name": "Sicilian: Najdorf, Poisoned Pawn" + }, + "B97b": { + "eco": "B97b", + "fen": "rnb1kb1r/1p3ppp/pq1ppB2/8/3NPP2/2N5/PPP3PP/R2QKB1R b KQkq - 0 8", + "hash": 2763251408111169963, + "name": "Sicilian: Najdorf, Poisoned Pawn, 8.Bxf6" + }, + "B97c": { + "eco": "B97c", + "fen": "rnb1kb1r/1p3ppp/pq1ppn2/6B1/3NPP2/P1N5/1PP3PP/R2QKB1R b KQkq - 0 8", + "hash": 5258570990849532171, + "name": "Sicilian: Najdorf, Poisoned Pawn, 8.a3" + }, + "B97d": { + "eco": "B97d", + "fen": "rnb1kb1r/1p3ppp/pq1ppn2/6B1/3NPP2/2NQ4/PPP3PP/R3KB1R b KQkq - 2 8", + "hash": 2522490362024214076, + "name": "Sicilian: Najdorf, Poisoned Pawn, 8.Qd3" + }, + "B97e": { + "eco": "B97e", + "fen": "rnb1kb1r/1p3ppp/pq1ppn2/6B1/4PP2/1NN5/PPP3PP/R2QKB1R b KQkq - 2 8", + "hash": 1663864004647971201, + "name": "Sicilian: Najdorf, Poisoned Pawn, 8.Nb3" + }, + "B97f": { + "eco": "B97f", + "fen": "rnb1k2r/1p2bppp/pq1ppn2/6B1/4PP2/1NN5/PPP3PP/R2QKB1R w KQkq - 3 9", + "hash": 277895589305402640, + "name": "Sicilian: Najdorf, Poisoned Pawn, 8.Nb3 Be7" + }, + "B97g": { + "eco": "B97g", + "fen": "r1b1kb1r/1p1n1ppp/pq1ppn2/6B1/4PP2/1NN2Q2/PPP3PP/R3KB1R b KQkq - 4 9", + "hash": 11445400451156824822, + "name": "Sicilian: Najdorf, Poisoned Pawn, 8.Nb3 Nbd7 9.Qf3" + }, + "B97h": { + "eco": "B97h", + "fen": "r1b1k2r/1p1nbppp/pq1ppn2/6B1/4PP2/1NN2Q2/PPP3PP/R3KB1R w KQkq - 5 10", + "hash": 9951346582956277351, + "name": "Sicilian: Najdorf, Poisoned Pawn, 8.Nb3 Nbd7 9.Qf3 Be7" + }, + "B97i": { + "eco": "B97i", + "fen": "rnb1kb1r/1p3ppp/pq1ppn2/6B1/3NPP2/2N5/PPPQ2PP/R3KB1R b KQkq - 2 8", + "hash": 12357398943770341611, + "name": "Sicilian: Najdorf, Poisoned Pawn, 8.Qd2" + }, + "B97j": { + "eco": "B97j", + "fen": "rnb1kb1r/1p3ppp/p2ppn2/6B1/4PP2/1NN5/PqPQ2PP/R3KB1R b KQkq - 1 9", + "hash": 12438293708373133305, + "name": "Sicilian: Najdorf, Poisoned Pawn, 9.Nb3" + }, + "B97k": { + "eco": "B97k", + "fen": "rnb1kb1r/1p3ppp/p2ppn2/6B1/4PP2/qNN5/P1PQ2PP/R3KB1R w KQkq - 2 10", + "hash": 9164517323664724892, + "name": "Sicilian: Najdorf, Poisoned Pawn, 9.Nb3 Qa3" + }, + "B97l": { + "eco": "B97l", + "fen": "rnb1kb1r/1p3ppp/p2ppB2/8/4PP2/qNN5/P1PQ2PP/R3KB1R b KQkq - 0 10", + "hash": 15713602408526204284, + "name": "Sicilian: Najdorf, Poisoned Pawn, 9.Nb3 Qa3 10.Bxf6" + }, + "B97m": { + "eco": "B97m", + "fen": "rnb1kb1r/1p3ppp/p2ppn2/6B1/3NPP2/2N5/PqPQ2PP/1R2KB1R b Kkq - 1 9", + "hash": 7764114016090096679, + "name": "Sicilian: Najdorf, Poisoned Pawn, 9.Rb1" + }, + "B97n": { + "eco": "B97n", + "fen": "rnb1kb1r/1p3ppp/p2ppn2/6B1/3NPP2/q1N5/P1PQB1PP/1R2K2R b Kkq - 3 10", + "hash": 14667233051104664289, + "name": "Sicilian: Najdorf, Poisoned Pawn, 10.Be2" + }, + "B97o": { + "eco": "B97o", + "fen": "rnb1kb1r/1p3ppp/p2ppB2/8/3NPP2/q1N5/P1PQ2PP/1R2KB1R b Kkq - 0 10", + "hash": 2104289983095197346, + "name": "Sicilian: Najdorf, Poisoned Pawn, 10.Bxf6" + }, + "B97p": { + "eco": "B97p", + "fen": "rnb1kb1r/1p3ppp/p2ppn2/4P1B1/3N1P2/q1N5/P1PQ2PP/1R2KB1R b Kkq - 0 10", + "hash": 15669694068933080614, + "name": "Sicilian: Najdorf, Poisoned Pawn, 10.e5" + }, + "B97q": { + "eco": "B97q", + "fen": "rnb1kb1r/1p3ppp/p2ppn2/5PB1/3NP3/q1N5/P1PQ2PP/1R2KB1R b Kkq - 0 10", + "hash": 15243634675003695521, + "name": "Sicilian: Najdorf, Poisoned Pawn, 10.f5" + }, + "B97r": { + "eco": "B97r", + "fen": "r1b1kb1r/6pp/p1pppn2/6B1/4P3/q1N5/P1PQ2PP/1R2KB1R w Kkq - 0 13", + "hash": 1615006675093416172, + "name": "Sicilian: Najdorf, Poisoned Pawn, Main Line" + }, + "B97s": { + "eco": "B97s", + "fen": "r1b1kb1r/6pp/p1pppn2/6B1/4P3/q1N5/P1PQB1PP/1R2K2R b Kkq - 1 13", + "hash": 7343449023031190095, + "name": "Sicilian: Najdorf, Poisoned Pawn, Main Line, Timman's 13.Be2" + }, + "B97t": { + "eco": "B97t", + "fen": "r1b1kb1r/6pp/p1pppn2/4P1B1/8/q1N5/P1PQ2PP/1R2KB1R b Kkq - 0 13", + "hash": 8579567291204488840, + "name": "Sicilian: Najdorf, Poisoned Pawn, Main Line, 13.e5" + }, + "B97u": { + "eco": "B97u", + "fen": "r1b1kb1r/6pp/p1p1pn2/4p1B1/8/q1N5/P1PQ2PP/1R2KB1R w Kkq - 0 14", + "hash": 5563561895438548993, + "name": "Sicilian: Najdorf, Poisoned Pawn, Main Line, 13.e5 dxe5" + }, + "B97v": { + "eco": "B97v", + "fen": "r1b1kb1r/7p/p1p1pp2/4p3/4N3/8/q1PQ2PP/1R2KB1R w Kkq - 0 16", + "hash": 14323988554765801410, + "name": "Sicilian: Najdorf, Poisoned Pawn, Main Line, 13.e5 dxe5: 15.Ne4 Qxa2" + }, + "B97w": { + "eco": "B97w", + "fen": "r1b1k2r/4b2p/p1p1pp2/4p3/4N3/q7/P1PQ2PP/1R2KB1R w Kkq - 2 16", + "hash": 1149364492744136881, + "name": "Sicilian: Najdorf, Poisoned Pawn, Main Line, 13.e5 dxe5: 15.Ne4 Be7" + }, + "B97x": { + "eco": "B97x", + "fen": "r1b1k2r/4b3/p1p1pp2/4p2p/q1P1N3/1R6/P2QB1PP/4K2R b Kkq c3 0 18", + "hash": 4314699259309260595, + "name": "Sicilian: Najdorf, Poisoned Pawn, Main Line, 13.e5 dxe5 with 18.c4" + }, + "B97y": { + "eco": "B97y", + "fen": "r1b1k2r/4b3/p1p1pN2/4p2p/q7/1R6/P1PQB1PP/4K2R b Kkq - 0 18", + "hash": 10320638098973912319, + "name": "Sicilian: Najdorf, Poisoned Pawn, Main Line, 13.e5 dxe5 with 18.Nxf6+" + }, + "B98a": { + "eco": "B98a", + "fen": "rnbqk2r/1p2bppp/p2ppn2/6B1/3NPP2/2N5/PPP3PP/R2QKB1R w KQkq - 1 8", + "hash": 5788690032641332480, + "name": "Sicilian: Najdorf, 7...Be7" + }, + "B98b": { + "eco": "B98b", + "fen": "rnbqk2r/1p2bppp/p2ppn2/6B1/3NPP2/2N2Q2/PPP3PP/R3KB1R b KQkq - 2 8", + "hash": 16895242839897867195, + "name": "Sicilian: Najdorf, 7...Be7 8.Qf3" + }, + "B98c": { + "eco": "B98c", + "fen": "rnb1k2r/1p2bppp/p2ppn2/q5B1/3NPP2/2N2Q2/PPP3PP/R3KB1R w KQkq - 3 9", + "hash": 3676169310312669748, + "name": "Sicilian: Najdorf, Danner Variation" + }, + "B98d": { + "eco": "B98d", + "fen": "rn2k2r/1p1bbppp/p2ppn2/q5B1/3NPP2/2N2Q2/PPP3PP/2KR1B1R w kq - 5 10", + "hash": 16854963443132399005, + "name": "Sicilian: Najdorf, Danner, 9.O-O-O Bd7" + }, + "B98e": { + "eco": "B98e", + "fen": "rn2k2r/1p1bbppp/p2ppn2/q3P1B1/3N1P2/2N2Q2/PPP3PP/2KR1B1R b kq - 0 10", + "hash": 9840872121835183097, + "name": "Sicilian: Najdorf, Danner, 9.O-O-O Bd7 10.e5" + }, + "B98f": { + "eco": "B98f", + "fen": "rnbqk2r/1p2bpp1/p2ppn1p/6B1/3NPP2/2N2Q2/PPP3PP/R3KB1R w KQkq - 0 9", + "hash": 8683149811496995502, + "name": "Sicilian: Najdorf, 7...Be7 8.Qf3 h6" + }, + "B98g": { + "eco": "B98g", + "fen": "rnb1k2r/1pq1bpp1/p2ppn1p/8/3NPP1B/2N2Q2/PPP3PP/R3KB1R w KQkq - 2 10", + "hash": 2598833570939283252, + "name": "Sicilian: Najdorf, Browne Variation" + }, + "B98h": { + "eco": "B98h", + "fen": "r1b1k2r/1pqnbpp1/p2ppn1p/8/3NPP1B/2N2Q2/PPP3PP/2KR1B1R w kq - 4 11", + "hash": 3449430912649446752, + "name": "Sicilian: Najdorf, Browne, 10.O-O-O Nbd7" + }, + "B98i": { + "eco": "B98i", + "fen": "r1b1k2r/1pqnbpp1/p2ppn1p/8/3NPP1B/2N3Q1/PPP3PP/2KR1B1R b kq - 5 11", + "hash": 8074045786063461423, + "name": "Sicilian: Najdorf, Browne, 10.O-O-O Nbd7 11.Qg3" + }, + "B98j": { + "eco": "B98j", + "fen": "r1b1k2r/1pqnbpp1/p2ppn1p/8/3NPP1B/2N2Q2/PPP1B1PP/2KR3R b kq - 5 11", + "hash": 6655850597274456003, + "name": "Sicilian: Najdorf, Browne, 10.O-O-O Nbd7 11.Be2" + }, + "B98k": { + "eco": "B98k", + "fen": "rnbqk2r/1p2bp2/p2ppn1p/6p1/3NPP1B/2N2Q2/PPP3PP/R3KB1R w KQkq g6 0 10", + "hash": 11694764809245267903, + "name": "Sicilian: Najdorf, Gothenburg (Argentine) Variation" + }, + "B98l": { + "eco": "B98l", + "fen": "rnbqk2r/1p1nbp2/p2pN2p/6P1/4P2B/2N2Q2/PPP3PP/R3KB1R b KQkq - 0 11", + "hash": 10927905058710188362, + "name": "Sicilian: Najdorf, Gothenburg, 11.Nxe6" + }, + "B98m": { + "eco": "B98m", + "fen": "rnbqk2r/1p1nbp2/p2pp2p/6PQ/3NP2B/2N5/PPP3PP/R3KB1R b KQkq - 2 11", + "hash": 3671308484056838155, + "name": "Sicilian: Najdorf, Gothenburg, 11.Qh5" + }, + "B98n": { + "eco": "B98n", + "fen": "rnb1k2r/1pq1bppp/p2ppn2/6B1/3NPP2/2N2Q2/PPP3PP/R3KB1R w KQkq - 3 9", + "hash": 17035088759015099578, + "name": "Sicilian: Najdorf, 8...Qc7" + }, + "B98o": { + "eco": "B98o", + "fen": "rnb1k2r/2q1bppp/p2ppn2/1p4B1/3NPP2/2N2Q2/PPP3PP/2KR1B1R w kq b6 0 10", + "hash": 12988915476441071135, + "name": "Sicilian: Najdorf, 8...Qc7 9.O-O-O b5" + }, + "B98p": { + "eco": "B98p", + "fen": "r1b1k2r/1pq1bppp/p1nppn2/6B1/3NPP2/2N2Q2/PPP3PP/2KR1B1R w kq - 5 10", + "hash": 9198698142116865569, + "name": "Sicilian: Najdorf, 8...Qc7 9.O-O-O Nc6" + }, + "B98q": { + "eco": "B98q", + "fen": "r1b1k2r/1pq1bppp/p1Nppn2/6B1/4PP2/2N2Q2/PPP3PP/2KR1B1R b kq - 0 10", + "hash": 3687018069416210196, + "name": "Sicilian: Najdorf, 8...Qc7 9.O-O-O Nc6 10.Nxc6" + }, + "B99a": { + "eco": "B99a", + "fen": "r1b1k2r/1pqnbppp/p2ppn2/6B1/3NPP2/2N2Q2/PPP3PP/2KR1B1R w kq - 5 10", + "hash": 16692297928577036014, + "name": "Sicilian: Najdorf, Main Line" + }, + "B99b": { + "eco": "B99b", + "fen": "r1b1k2r/1pqnbppp/p2ppn2/6B1/3NPP2/2N3Q1/PPP3PP/2KR1B1R b kq - 6 10", + "hash": 13291501804000327585, + "name": "Sicilian: Najdorf, Main Line, 10.Qg3" + }, + "B99c": { + "eco": "B99c", + "fen": "r1b1k2r/1pqnbppp/p2ppn2/6B1/3NPP2/2N2Q2/PPP1B1PP/2KR3R b kq - 6 10", + "hash": 10675351357377471565, + "name": "Sicilian: Najdorf, Main Line, Keres Variation" + }, + "B99d": { + "eco": "B99d", + "fen": "r3k2r/1bq1bppp/p2ppP2/1p6/3N1P2/2N2Q2/PPP1B1PP/2KR3R b kq - 0 13", + "hash": 7266131151770592914, + "name": "Sicilian: Najdorf, Main Line, Keres, Queen Sacrifice Line" + }, + "B99e": { + "eco": "B99e", + "fen": "r3k2r/1bq1bppp/p2ppn2/1p2P3/3N1P2/2N3Q1/PPP1B1PP/2KR3R b kq - 2 13", + "hash": 3449906058583698872, + "name": "Sicilian: Najdorf, Main Line, Keres, 13.Qg3" + }, + "B99f": { + "eco": "B99f", + "fen": "r1b1k2r/1pqnbppp/p2ppn2/6B1/3NPP2/2NB1Q2/PPP3PP/2KR3R b kq - 6 10", + "hash": 12874477577109138589, + "name": "Sicilian: Najdorf, Main Line, 10.Bd3" + }, + "B99g": { + "eco": "B99g", + "fen": "r1b1k2r/1pqnbpp1/p2ppn1p/6B1/3NPP2/2NB3Q/PPP3PP/2KR3R b kq - 1 11", + "hash": 2864467738936638130, + "name": "Sicilian: Najdorf, Main Line, 10.Bd3 h6 11.Qh3" + }, + "B99h": { + "eco": "B99h", + "fen": "r1b1k2r/1pqnbpp1/p2ppn1p/8/3NPP1B/2NB1Q2/PPP3PP/2KR3R b kq - 1 11", + "hash": 8850547991689824019, + "name": "Sicilian: Najdorf, Main Line, 10.Bd3 h6 11.Bh4" + }, + "B99i": { + "eco": "B99i", + "fen": "r1b1k2r/1pqnbp2/p2ppn1p/6P1/3NP2B/2NB1Q2/PPP3PP/2KR3R b kq - 0 12", + "hash": 8183329116845466614, + "name": "Sicilian: Najdorf, Main Line, 10.Bd3 h6 11.Bh4 g5 12.fxg5" + }, + "B99j": { + "eco": "B99j", + "fen": "r1b1k2r/2qnbppp/p2ppn2/1p4B1/3NPP2/2NB1Q2/PPP3PP/2KR3R w kq b6 0 11", + "hash": 15181422350319997344, + "name": "Sicilian: Najdorf, Main Line, 10.Bd3 b5" + }, + "B99k": { + "eco": "B99k", + "fen": "r3k2r/1bqnbppp/p2ppn2/1p1N2B1/3NPP2/3B1Q2/PPP3PP/2KRR3 b kq - 3 12", + "hash": 4399284419209413749, + "name": "Sicilian: Najdorf, Main Line, 10.Bd3 b5 11.Rhe1 Bb7 12.Nd5" + }, + "B99l": { + "eco": "B99l", + "fen": "r3k2r/1bqnbppp/p2ppn2/1p4B1/3NPP2/2NB2Q1/PPP3PP/2KRR3 b kq - 3 12", + "hash": 11730426825163645551, + "name": "Sicilian: Najdorf, Main Line, 10.Bd3 b5 11.Rhe1 Bb7 12.Qg3" + }, + "B99m": { + "eco": "B99m", + "fen": "r1b1k2r/1pqnbppp/p2ppn2/6B1/3NPPP1/2N2Q2/PPP4P/2KR1B1R b kq g3 0 10", + "hash": 4966332738818229235, + "name": "Sicilian: Najdorf, Main Line, 10.g4" + }, + "B99n": { + "eco": "B99n", + "fen": "r1b1k2r/2qnbppp/p2ppn2/1p4B1/3NPPP1/2N2Q2/PPP4P/2KR1B1R w kq b6 0 11", + "hash": 2661521026554986190, + "name": "Sicilian: Najdorf, Main Line, 10.g4 b5" + }, + "B99o": { + "eco": "B99o", + "fen": "r1b1k2r/2qnbppp/p2ppn2/1p4B1/3NPPP1/P1N2Q2/1PP4P/2KR1B1R b kq - 0 11", + "hash": 17254326341894303886, + "name": "Sicilian: Najdorf, Main Line, 10.g4 b5 11.a3" + }, + "B99p": { + "eco": "B99p", + "fen": "r1b1k2r/2qnbppp/p2ppB2/1p6/3NPPP1/2N2Q2/PPP4P/2KR1B1R b kq - 0 11", + "hash": 9354141990277914670, + "name": "Sicilian: Najdorf, Main Line, 10.g4 b5 11.Bxf6" + }, + "B99q": { + "eco": "B99q", + "fen": "r1b1k2r/2qnbp1p/p2ppp2/1p6/3NPPP1/2N2Q2/PPP4P/2KR1B1R w kq - 0 12", + "hash": 7821627008815972807, + "name": "Sicilian: Najdorf, Main Line, 10.g4 b5 11.Bxf6 gxf6" + }, + "B99r": { + "eco": "B99r", + "fen": "r1b1k2r/2q1bppp/p2ppn2/1p6/3NPPP1/2N2Q2/PPP4P/2KR1B1R w kq - 0 12", + "hash": 8148781803645229750, + "name": "Sicilian: Najdorf, Main Line, 10.g4 b5 11.Bxf6 Nxf6" + }, + "B99s": { + "eco": "B99s", + "fen": "r1b1k2r/2qnbppp/p2pp3/1p3PP1/3NP3/2N2Q2/PPP4P/2KR1B1R b kq - 0 13", + "hash": 12358106889569142909, + "name": "Sicilian: Najdorf, Modern Main Line 13.f5" + }, + "B99t": { + "eco": "B99t", + "fen": "r1b1k2r/2qn1ppp/p2pp3/1p3Pb1/3NP3/2N2Q2/PPP4P/2KR1B1R w kq - 0 14", + "hash": 1025218160968621469, + "name": "Sicilian: Najdorf, Modern Main Line 13.f5 Bxg5+" + }, + "B99u": { + "eco": "B99u", + "fen": "r1b1k2r/2q2ppp/p2pp3/1p2nPb1/3NP3/2N2Q2/PPP4P/1K1R1B1R w kq - 2 15", + "hash": 17013876471978532591, + "name": "Sicilian: Najdorf, Modern Main Line 13.f5 Bxg5+ 14.Kb1 Ne5" + }, + "B99v": { + "eco": "B99v", + "fen": "r1b1k2r/2q1bppp/p2pp3/1pn2PP1/3NP3/2N2Q2/PPP4P/2KR1B1R w kq - 1 14", + "hash": 10071960317533605175, + "name": "Sicilian: Najdorf, Modern Main Line 13.f5 Nc5" + }, + "B99w": { + "eco": "B99w", + "fen": "r1b1k2r/2q1bppp/p2pp3/1pn2PP1/3NP2P/2N2Q2/PPP5/2KR1B1R b kq h3 0 14", + "hash": 1685848890333770825, + "name": "Sicilian: Najdorf, Modern Main Line 13.f5 Nc5 14.h4" + }, + "B99x": { + "eco": "B99x", + "fen": "r1b1k2r/2q1bppp/p2ppP2/1pn3P1/3NP3/2N2Q2/PPP4P/2KR1B1R b kq - 0 14", + "hash": 3942854932447637546, + "name": "Sicilian: Najdorf, Modern Main Line 13.f5 Nc5 14.f6" + }, + "B99y": { + "eco": "B99y", + "fen": "r1b1kb1r/2q2p1p/p2ppP2/1pn5/3NP3/2N2Q2/PPP4P/2KR1BR1 b kq - 2 16", + "hash": 1566347902215559645, + "name": "Sicilian: Najdorf, Modern Main Line 13.f5 Nc5 14.f6: Perenyi's 16.Rg1" + }, + "C00a": { + "eco": "C00a", + "fen": "rnbqkbnr/pppp1ppp/4p3/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 0 2", + "hash": 17603279437685838276, + "name": "French" + }, + "C00b": { + "eco": "C00b", + "fen": "rnbqkbnr/pppp1ppp/4p3/8/4P3/1P6/P1PP1PPP/RNBQKBNR b KQkq - 0 2", + "hash": 8713630978339158697, + "name": "French: Reti (Spielmann) Variation" + }, + "C00c": { + "eco": "C00c", + "fen": "rnbqkbnr/pppp1ppp/4p3/8/4PP2/8/PPPP2PP/RNBQKBNR b KQkq f3 0 2", + "hash": 674717977503001677, + "name": "French: La Bourdonnais Variation" + }, + "C00d": { + "eco": "C00d", + "fen": "rnbqkbnr/pppp1ppp/4p3/4P3/8/8/PPPP1PPP/RNBQKBNR b KQkq - 0 2", + "hash": 10750795572256307104, + "name": "French: Steinitz Attack" + }, + "C00e": { + "eco": "C00e", + "fen": "rnbqkbnr/pppp1ppp/4p3/8/2P1P3/8/PP1P1PPP/RNBQKBNR b KQkq c3 0 2", + "hash": 8676455461131418307, + "name": "French: Steiner (Anglo-French) Variation" + }, + "C00f": { + "eco": "C00f", + "fen": "rnbqkbnr/pppp1ppp/4p3/8/4P3/2N5/PPPP1PPP/R1BQKBNR b KQkq - 1 2", + "hash": 1142913488445854493, + "name": "French: 2.Nc3" + }, + "C00g": { + "eco": "C00g", + "fen": "rnbqkbnr/pppp1ppp/4p3/8/4P3/8/PPPPQPPP/RNB1KBNR b KQkq - 1 2", + "hash": 7083570967237593664, + "name": "French: Chigorin Variation" + }, + "C00h": { + "eco": "C00h", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2p5/4P3/8/PPPPQPPP/RNB1KBNR w KQkq c6 0 3", + "hash": 9528552404068368701, + "name": "French: Chigorin, 2...c5" + }, + "C00i": { + "eco": "C00i", + "fen": "rnbqkbnr/pp1p1ppp/4p3/2p5/4P3/5N2/PPPPQPPP/RNB1KB1R b KQkq - 1 3", + "hash": 6870482141585006592, + "name": "French: Chigorin, 2...c5 3.Nf3" + }, + "C00j": { + "eco": "C00j", + "fen": "rnbqkbnr/pppp1ppp/4p3/8/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2", + "hash": 3400083129654161657, + "name": "French: 2.Nf3" + }, + "C00k": { + "eco": "C00k", + "fen": "rnbqkbnr/pp3ppp/4p3/2ppP3/1P6/5N2/P1PP1PPP/RNBQKB1R b KQkq b3 0 4", + "hash": 9779590214445875170, + "name": "French: Wing Gambit" + }, + "C00l": { + "eco": "C00l", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/4P3/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 1 3", + "hash": 5895985014191127558, + "name": "French: Two Knights Variation" + }, + "C00m": { + "eco": "C00m", + "fen": "rnbqkbnr/pppp1ppp/4p3/8/4P3/3P4/PPP2PPP/RNBQKBNR b KQkq - 0 2", + "hash": 6552643675630037520, + "name": "French: KIA 2.d3" + }, + "C00n": { + "eco": "C00n", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/4P3/3P4/PPP1QPPP/RNB1KBNR b KQkq - 1 3", + "hash": 5297085843577733042, + "name": "French: KIA 2.d3 d5 3.Qe2" + }, + "C00o": { + "eco": "C00o", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/4P3/3P4/PPP1QPPP/RNB1KBNR w KQkq - 2 4", + "hash": 1327774055076019748, + "name": "French: KIA 2.d3 d5 3.Qe2 Nf6" + }, + "C00p": { + "eco": "C00p", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/4P3/3P4/PPPN1PPP/R1BQKBNR b KQkq - 1 3", + "hash": 9721917833202011142, + "name": "French: KIA 2.d3 d5 3.Nd2" + }, + "C00q": { + "eco": "C00q", + "fen": "rnbqkbnr/pp3ppp/4p3/2pp4/4P3/3P4/PPPN1PPP/R1BQKBNR w KQkq c6 0 4", + "hash": 6961124029517105019, + "name": "French: KIA 2.d3 d5 3.Nd2 c5" + }, + "C00r": { + "eco": "C00r", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/4P3/3P4/PPPN1PPP/R1BQKBNR w KQkq - 2 4", + "hash": 15926140291710504336, + "name": "French: KIA 2.d3 d5 3.Nd2 Nf6" + }, + "C00s": { + "eco": "C00s", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/4P3/3P1N2/PPPN1PPP/R1BQKB1R b KQkq - 3 4", + "hash": 459904554248875181, + "name": "French: KIA, Reversed Philidor" + }, + "C00t": { + "eco": "C00t", + "fen": "rnbqkb1r/p1p2ppp/1p2pn2/3p4/4P3/3P1N2/PPPN1PPP/R1BQKB1R w KQkq - 0 5", + "hash": 7856707471586695990, + "name": "French: KIA, Reversed Philidor, 4...b6" + }, + "C00u": { + "eco": "C00u", + "fen": "r1bqkb1r/ppp2ppp/2n1pn2/3p4/4P3/3P1N2/PPPN1PPP/R1BQKB1R w KQkq - 4 5", + "hash": 12505423194112854446, + "name": "French: KIA, Reversed Philidor, 4...Nc6" + }, + "C00v": { + "eco": "C00v", + "fen": "r1bqkb1r/ppp2ppp/2n1pn2/3p4/4P3/2PP1N2/PP1N1PPP/R1BQKB1R b KQkq - 0 5", + "hash": 15805040650530260520, + "name": "French: KIA, Reversed Philidor, 4...Nc6 5.c3" + }, + "C00w": { + "eco": "C00w", + "fen": "rnbqkbnr/pppp1ppp/4p3/8/3PP3/8/PPP2PPP/RNBQKBNR b KQkq d3 0 2", + "hash": 3566365796726406278, + "name": "French: 2.d4" + }, + "C00x": { + "eco": "C00x", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/3PP3/8/PPP2PPP/RNBQKBNR w KQkq d6 0 3", + "hash": 12976107337049617056, + "name": "French: 2.d4 d5" + }, + "C00y": { + "eco": "C00y", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/3PP3/3B4/PPP2PPP/RNBQK1NR b KQkq - 1 3", + "hash": 16220212674983522515, + "name": "French: Schlechter" + }, + "C01a": { + "eco": "C01a", + "fen": "rnbqkbnr/ppp2ppp/4p3/3P4/3P4/8/PPP2PPP/RNBQKBNR b KQkq - 0 3", + "hash": 10649727320182616230, + "name": "French: Exchange" + }, + "C01b": { + "eco": "C01b", + "fen": "rnbqkbnr/ppp2ppp/8/3p4/3P4/8/PPP2PPP/RNBQKBNR w KQkq - 0 4", + "hash": 12456876677158678637, + "name": "French: Exchange" + }, + "C01c": { + "eco": "C01c", + "fen": "rnbqkbnr/ppp2ppp/8/3p4/2PP4/8/PP3PPP/RNBQKBNR b KQkq c3 0 4", + "hash": 2376819177394248554, + "name": "French: Exchange, 4.c4" + }, + "C01d": { + "eco": "C01d", + "fen": "rnbqkb1r/ppp2ppp/5n2/3p4/2PP4/8/PP3PPP/RNBQKBNR w KQkq - 1 5", + "hash": 8868181983567665916, + "name": "French: Exchange, 4.c4 Nf6" + }, + "C01e": { + "eco": "C01e", + "fen": "rnbqkb1r/ppp2ppp/5n2/3p4/2PP4/2N5/PP3PPP/R1BQKBNR b KQkq - 2 5", + "hash": 9260812767948134437, + "name": "French: Exchange, 4.c4 Nf6 5.Nc3" + }, + "C01f": { + "eco": "C01f", + "fen": "rnbqk2r/ppp1bppp/5n2/3p4/2PP4/2N5/PP3PPP/R1BQKBNR w KQkq - 3 6", + "hash": 10685203301694764212, + "name": "French: Exchange, 4.c4 Nf6 5.Nc3 Be7" + }, + "C01g": { + "eco": "C01g", + "fen": "rnbqkbnr/ppp2ppp/8/3p4/3P1B2/8/PPP2PPP/RN1QKBNR b KQkq - 1 4", + "hash": 8614068696966814222, + "name": "French: Exchange, 4.Bf4" + }, + "C01h": { + "eco": "C01h", + "fen": "rnbqkbnr/ppp2ppp/8/3p4/3P4/3B4/PPP2PPP/RNBQK1NR b KQkq - 1 4", + "hash": 18001475900220437022, + "name": "French: Exchange, 4.Bd3" + }, + "C01i": { + "eco": "C01i", + "fen": "r1bqkbnr/ppp2ppp/2n5/3p4/3P4/3B4/PPP2PPP/RNBQK1NR w KQkq - 2 5", + "hash": 5926682230691026717, + "name": "French: Exchange, 4.Bd3 Nc6" + }, + "C01j": { + "eco": "C01j", + "fen": "rnbqk1nr/ppp2ppp/3b4/3p4/3P4/3B4/PPP2PPP/RNBQK1NR w KQkq - 2 5", + "hash": 6740335540366615354, + "name": "French: Exchange, 4.Bd3 Bd6" + }, + "C01k": { + "eco": "C01k", + "fen": "rnbqkbnr/ppp2ppp/8/3p4/3P4/5N2/PPP2PPP/RNBQKB1R b KQkq - 1 4", + "hash": 8627590257132589392, + "name": "French: Exchange, 4.Nf3" + }, + "C01l": { + "eco": "C01l", + "fen": "rnbqkb1r/ppp2ppp/5n2/3p4/3P4/5N2/PPP2PPP/RNBQKB1R w KQkq - 2 5", + "hash": 3194581923397112006, + "name": "French: Exchange, 4.Nf3 Nf6" + }, + "C01m": { + "eco": "C01m", + "fen": "rnbqkb1r/ppp2ppp/5n2/3p4/3P4/3B1N2/PPP2PPP/RNBQK2R b KQkq - 3 5", + "hash": 8743966238209266357, + "name": "French: Exchange, 4.Nf3 Nf6 5.Bd3" + }, + "C01n": { + "eco": "C01n", + "fen": "rnbqk1nr/ppp2ppp/3b4/3p4/3P4/5N2/PPP2PPP/RNBQKB1R w KQkq - 2 5", + "hash": 15268106681894600820, + "name": "French: Exchange, 4.Nf3 Bd6" + }, + "C01o": { + "eco": "C01o", + "fen": "rnbqk1nr/ppp2ppp/3b4/3p4/3P4/3B1N2/PPP2PPP/RNBQK2R b KQkq - 3 5", + "hash": 9722875222198600199, + "name": "French: Exchange, 4.Nf3 Bd6 5.Bd3" + }, + "C01p": { + "eco": "C01p", + "fen": "rnbqk2r/ppp2ppp/3b1n2/3p4/3P4/3B1N2/PPP2PPP/RNBQK2R w KQkq - 4 6", + "hash": 15924908007627031441, + "name": "French: Exchange, 4.Nf3 Bd6 5.Bd3 Nf6" + }, + "C01q": { + "eco": "C01q", + "fen": "rnbqk1nr/ppp2ppp/3b4/3p4/2PP4/5N2/PP3PPP/RNBQKB1R b KQkq c3 0 5", + "hash": 6899700473911520115, + "name": "French: Exchange, 4.Nf3 Bd6 5.c4" + }, + "C01r": { + "eco": "C01r", + "fen": "rnbqkbnr/ppp2ppp/8/3p4/3P4/2N5/PPP2PPP/R1BQKBNR b KQkq - 1 4", + "hash": 6289470343908602548, + "name": "French: Exchange, 4.Nc3" + }, + "C01s": { + "eco": "C01s", + "fen": "rnbqkb1r/ppp2ppp/5n2/3p4/3P4/2N5/PPP2PPP/R1BQKBNR w KQkq - 2 5", + "hash": 911586406541620002, + "name": "French: Exchange, 4.Nc3 Nf6" + }, + "C01t": { + "eco": "C01t", + "fen": "rnbqkb1r/ppp2ppp/5n2/3p2B1/3P4/2N5/PPP2PPP/R2QKBNR b KQkq - 3 5", + "hash": 14626790228392028394, + "name": "French: Exchange, Svenonius Variation" + }, + "C01u": { + "eco": "C01u", + "fen": "rnbqk1nr/ppp2ppp/8/3p4/1b1P4/2N5/PPP2PPP/R1BQKBNR w KQkq - 2 5", + "hash": 11387851876036868758, + "name": "French: Exchange Winawer" + }, + "C01v": { + "eco": "C01v", + "fen": "rnbqk1nr/ppp2ppp/8/3p4/1b1P4/2NB4/PPP2PPP/R1BQK1NR b KQkq - 3 5", + "hash": 14628931083311364325, + "name": "French: Exchange Winawer, 5.Bd3" + }, + "C01w": { + "eco": "C01w", + "fen": "r1bqk1nr/ppp2ppp/2n5/3p4/1b1P4/2NB4/PPP2PPP/R1BQK1NR w KQkq - 4 6", + "hash": 6983323468605431270, + "name": "French: Exchange Winawer, 5.Bd3 Nc6" + }, + "C02a": { + "eco": "C02a", + "fen": "rnbqkbnr/ppp2ppp/4p3/3pP3/3P4/8/PPP2PPP/RNBQKBNR b KQkq - 0 3", + "hash": 15379073794709689540, + "name": "French: Advance" + }, + "C02b": { + "eco": "C02b", + "fen": "rnbqkbnr/p1p2ppp/1p2p3/3pP3/3P4/8/PPP2PPP/RNBQKBNR w KQkq - 0 4", + "hash": 13692133855508767583, + "name": "French: Advance, 3...b6" + }, + "C02c": { + "eco": "C02c", + "fen": "rnbqkbnr/pp3ppp/4p3/2ppP3/3P4/8/PPP2PPP/RNBQKBNR w KQkq c6 0 4", + "hash": 3682998419447062457, + "name": "French: Advance, 3...c5" + }, + "C02d": { + "eco": "C02d", + "fen": "rnbqkbnr/pp3ppp/4p3/2PpP3/8/8/PPP2PPP/RNBQKBNR b KQkq - 0 4", + "hash": 5548295499966826709, + "name": "French: Advance, Steinitz" + }, + "C02e": { + "eco": "C02e", + "fen": "rnbqkbnr/pp3ppp/4p3/2ppP3/3P2Q1/8/PPP2PPP/RNB1KBNR b KQkq - 1 4", + "hash": 7396829383128827316, + "name": "French: Advance, Nimzowitsch Attack" + }, + "C02f": { + "eco": "C02f", + "fen": "rnbqkbnr/pp3ppp/4p3/2ppP3/3P4/5N2/PPP2PPP/RNBQKB1R b KQkq - 1 4", + "hash": 16751226203629813380, + "name": "French: Advance, 4.Nf3" + }, + "C02g": { + "eco": "C02g", + "fen": "rnbqkbnr/pp3ppp/4p3/2ppP3/3P4/2P5/PP3PPP/RNBQKBNR b KQkq - 0 4", + "hash": 5027806176587780159, + "name": "French: Advance, 4.c3" + }, + "C02h": { + "eco": "C02h", + "fen": "rnb1kbnr/pp3ppp/1q2p3/2ppP3/3P4/2P5/PP3PPP/RNBQKBNR w KQkq - 1 5", + "hash": 9383713008088008421, + "name": "French: Advance, 4.c3 Qb6" + }, + "C02i": { + "eco": "C02i", + "fen": "rn2kbnr/pp1b1ppp/1q2p3/2ppP3/3P4/2P2N2/PP3PPP/RNBQKB1R w KQkq - 3 6", + "hash": 13518882385230362601, + "name": "French: Advance, Wade" + }, + "C02j": { + "eco": "C02j", + "fen": "rn2kbnr/pp1b1ppp/1q2p3/2ppP3/3P4/2P2N2/PP2BPPP/RNBQK2R b KQkq - 4 6", + "hash": 14419457411374234954, + "name": "French: Advance, Wade, 6.Be2" + }, + "C02k": { + "eco": "C02k", + "fen": "r1bqkbnr/pp3ppp/2n1p3/2ppP3/3P4/2P5/PP3PPP/RNBQKBNR w KQkq - 1 5", + "hash": 17161955898996176188, + "name": "French: Advance, 4...Nc6" + }, + "C02l": { + "eco": "C02l", + "fen": "r1bqkbnr/pp3ppp/2n1p3/2ppP3/3P4/2P2N2/PP3PPP/RNBQKB1R b KQkq - 2 5", + "hash": 3841411053941445633, + "name": "French: Advance, Paulsen" + }, + "C02m": { + "eco": "C02m", + "fen": "r1bqkb1r/pp2nppp/2n1p3/2ppP3/3P4/2P2N2/PP3PPP/RNBQKB1R w KQkq - 3 6", + "hash": 792866345300123580, + "name": "French: Advance, 5.Nf3 Nge7" + }, + "C02n": { + "eco": "C02n", + "fen": "r2qkbnr/pp1b1ppp/2n1p3/2ppP3/3P4/2P2N2/PP3PPP/RNBQKB1R w KQkq - 3 6", + "hash": 15532511949981647920, + "name": "French: Advance, Euwe" + }, + "C02o": { + "eco": "C02o", + "fen": "r2qkbnr/pp1b1ppp/2n1p3/2ppP3/3P4/P1P2N2/1P3PPP/RNBQKB1R b KQkq - 0 6", + "hash": 2022855605561461360, + "name": "French: Advance, Euwe, 6.a3" + }, + "C02p": { + "eco": "C02p", + "fen": "r2qkbnr/pp1b1ppp/2n1p3/2ppP3/3P4/2P2N2/PP2BPPP/RNBQK2R b KQkq - 4 6", + "hash": 11821406601318747795, + "name": "French: Advance, Euwe, 6.Be2" + }, + "C02q": { + "eco": "C02q", + "fen": "r2qkb1r/pp1bnppp/2n1p3/2ppP3/3P4/2P2N2/PP2BPPP/RNBQK2R w KQkq - 5 7", + "hash": 11115356766358357294, + "name": "French: Advance, Euwe, 6.Be2 Nge7" + }, + "C02r": { + "eco": "C02r", + "fen": "r1b1kbnr/pp3ppp/1qn1p3/2ppP3/3P4/2P2N2/PP3PPP/RNBQKB1R w KQkq - 3 6", + "hash": 17487637159958250203, + "name": "French: Advance, 5.Nf3 Qb6" + }, + "C02s": { + "eco": "C02s", + "fen": "r1b1kbnr/pp3ppp/1qn1p3/2ppP3/3P4/2PB1N2/PP3PPP/RNBQK2R b KQkq - 4 6", + "hash": 12086870807141892264, + "name": "French: Advance, Milner-Barry Gambit" + }, + "C02t": { + "eco": "C02t", + "fen": "r1b1kbnr/pp3ppp/1qn1p3/2ppP3/3P4/2P2N2/PP2BPPP/RNBQK2R b KQkq - 4 6", + "hash": 9308960972353751160, + "name": "French: Advance, 5.Nf3 Qb6 6.Be2" + }, + "C02u": { + "eco": "C02u", + "fen": "r1b1kbnr/pp3ppp/1qn1p3/3pP3/3P4/5N2/PP2BPPP/RNBQK2R b KQkq - 0 7", + "hash": 8257488283051928984, + "name": "French: Advance, 5.Nf3 Qb6 6.Be2 cxd4 7.cxd4" + }, + "C02v": { + "eco": "C02v", + "fen": "r1b1kbnr/pp3ppp/1qn1p3/2ppP3/3P4/P1P2N2/1P3PPP/RNBQKB1R b KQkq - 0 6", + "hash": 4119844169440496795, + "name": "French: Advance, 5.Nf3 Qb6 6.a3" + }, + "C02w": { + "eco": "C02w", + "fen": "r3kbnr/pp1b1ppp/1qn1p3/2ppP3/3P4/P1P2N2/1P3PPP/RNBQKB1R w KQkq - 1 7", + "hash": 15847426169867459754, + "name": "French: Advance, 5.Nf3 Qb6 6.a3 Bd7" + }, + "C02x": { + "eco": "C02x", + "fen": "r1b1kb1r/pp3ppp/1qn1p2n/2ppP3/3P4/P1P2N2/1P3PPP/RNBQKB1R w KQkq - 1 7", + "hash": 13303703208501535202, + "name": "French: Advance, 5.Nf3 Qb6 6.a3 Nh6" + }, + "C02y": { + "eco": "C02y", + "fen": "r1b1kbnr/pp3ppp/1qn1p3/3pP3/2pP4/P1P2N2/1P3PPP/RNBQKB1R w KQkq - 0 7", + "hash": 16227342554769368598, + "name": "French: Advance, 5.Nf3 Qb6 6.a3 c4" + }, + "C02z": { + "eco": "C02z", + "fen": "r1b1kbnr/pp3ppp/1qn1p3/3pP3/2pP4/P1P2N2/1P1N1PPP/R1BQKB1R b KQkq - 1 7", + "hash": 13284953083292814886, + "name": "French: Advance, 5.Nf3 Qb6 6.a3 c4 7.Nbd2" + }, + "C03a": { + "eco": "C03a", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/3PP3/8/PPPN1PPP/R1BQKBNR b KQkq - 1 3", + "hash": 17112232442528471696, + "name": "French: Tarrasch" + }, + "C03b": { + "eco": "C03b", + "fen": "rnbqkbnr/ppp3pp/4p3/3p1p2/3PP3/8/PPPN1PPP/R1BQKBNR w KQkq f6 0 4", + "hash": 8725084518162839374, + "name": "French: Tarrasch, Haberditz Variation" + }, + "C03c": { + "eco": "C03c", + "fen": "rnbqkbnr/p1p2ppp/1p2p3/3p4/3PP3/8/PPPN1PPP/R1BQKBNR w KQkq - 0 4", + "hash": 9661230196108340491, + "name": "French: Tarrasch, 3...b6" + }, + "C03d": { + "eco": "C03d", + "fen": "rnbqkbnr/1pp2ppp/p3p3/3p4/3PP3/8/PPPN1PPP/R1BQKBNR w KQkq - 0 4", + "hash": 4579366209504666188, + "name": "French: Tarrasch, 3...a6" + }, + "C03e": { + "eco": "C03e", + "fen": "rnbqkbnr/1pp2ppp/p3p3/3p4/3PP3/5N2/PPPN1PPP/R1BQKB1R b KQkq - 1 4", + "hash": 16494928108337857393, + "name": "French: Tarrasch, 3...a6 4.Ngf3" + }, + "C03f": { + "eco": "C03f", + "fen": "rnbqk1nr/ppp1bppp/4p3/3p4/3PP3/8/PPPN1PPP/R1BQKBNR w KQkq - 2 4", + "hash": 17993762128875009537, + "name": "French: Tarrasch, 3...Be7" + }, + "C03g": { + "eco": "C03g", + "fen": "rnbqk1nr/ppp1bppp/4p3/3p4/3PP3/3B4/PPPN1PPP/R1BQK1NR b KQkq - 3 4", + "hash": 12446558419156497522, + "name": "French: Tarrasch, 3...Be7 4.Bd3" + }, + "C03h": { + "eco": "C03h", + "fen": "rnbqk1nr/pp2bppp/4p3/2pp4/3PP3/3B4/PPPN1PPP/R1BQK1NR w KQkq c6 0 5", + "hash": 5389365503196102415, + "name": "French: Tarrasch, 3...Be7 4.Bd3 c5" + }, + "C03i": { + "eco": "C03i", + "fen": "rnbqk2r/pp2bppp/4pn2/2Pp4/4P3/3B4/PPPN1PPP/R1BQK1NR w KQkq - 1 6", + "hash": 7982570397614303733, + "name": "French: Tarrasch, 3...Be7 4.Bd3 c5 5.dxc5 Nf6" + }, + "C03j": { + "eco": "C03j", + "fen": "rnbqk1nr/ppp1bppp/4p3/3p4/3PP3/5N2/PPPN1PPP/R1BQKB1R b KQkq - 3 4", + "hash": 2509142315405072188, + "name": "French: Tarrasch, 3...Be7 4.Ngf3" + }, + "C03k": { + "eco": "C03k", + "fen": "rnbqk2r/ppp1bppp/4pn2/3p4/3PP3/3B1N2/PPPN1PPP/R1BQK2R b KQkq - 5 5", + "hash": 3184562753996346585, + "name": "French: Tarrasch, 3...Be7 4.Ngf3 Nf6 5.Bd3" + }, + "C03l": { + "eco": "C03l", + "fen": "r1bqkbnr/ppp2ppp/2n1p3/3p4/3PP3/8/PPPN1PPP/R1BQKBNR w KQkq - 2 4", + "hash": 5086539114019471251, + "name": "French: Tarrasch, Guimard Variation" + }, + "C03m": { + "eco": "C03m", + "fen": "r1bqkbnr/ppp2ppp/2n1p3/3p4/3PP3/2P5/PP1N1PPP/R1BQKBNR b KQkq - 0 4", + "hash": 3480716019514912789, + "name": "French: Tarrasch, Guimard, 4.c3" + }, + "C03n": { + "eco": "C03n", + "fen": "r1bqkbnr/ppp2ppp/2n5/3pp3/3PP3/2P5/PP1N1PPP/R1BQKBNR w KQkq - 0 5", + "hash": 3788688465786461560, + "name": "French: Tarrasch, Guimard, 4.c3 e5" + }, + "C03o": { + "eco": "C03o", + "fen": "r1bqkbnr/ppp2ppp/2n1p3/3p4/3PP3/5N2/PPPN1PPP/R1BQKB1R b KQkq - 3 4", + "hash": 11381696498185330350, + "name": "French: Tarrasch, Guimard, 4.Ngf3" + }, + "C04a": { + "eco": "C04a", + "fen": "r1bqkb1r/ppp2ppp/2n1pn2/3p4/3PP3/5N2/PPPN1PPP/R1BQKB1R w KQkq - 4 5", + "hash": 14275808682173177656, + "name": "French: Tarrasch, Guimard, 4.Ngf3 Nf6" + }, + "C04b": { + "eco": "C04b", + "fen": "r1bqkb1r/ppp2ppp/2n1pn2/3pP3/3P4/5N2/PPPN1PPP/R1BQKB1R b KQkq - 0 5", + "hash": 12061988495418243420, + "name": "French: Tarrasch, Guimard, 4.Ngf3 Nf6 5.e5" + }, + "C04c": { + "eco": "C04c", + "fen": "r1bqkb1r/pppn1ppp/2n1p3/3pP3/3P4/5N2/PPPN1PPP/R1BQKB1R w KQkq - 1 6", + "hash": 6783486498060415145, + "name": "French: Tarrasch, Guimard, Main Line" + }, + "C04d": { + "eco": "C04d", + "fen": "r1bqkb1r/pppn1ppp/2n1p3/3pP3/3P4/2P2N2/PP1N1PPP/R1BQKB1R b KQkq - 0 6", + "hash": 2952445591298031407, + "name": "French: Tarrasch, Guimard, Main Line, 6.c3" + }, + "C04e": { + "eco": "C04e", + "fen": "r1bqkb1r/pppn1ppp/2n1p3/1B1pP3/3P4/5N2/PPPN1PPP/R1BQK2R b KQkq - 2 6", + "hash": 7925518033002963754, + "name": "French: Tarrasch, Guimard, Main Line, 6.Bb5" + }, + "C04f": { + "eco": "C04f", + "fen": "r1bqkb1r/pppn1ppp/2n1p3/3pP3/3P4/5N2/PPPNBPPP/R1BQK2R b KQkq - 2 6", + "hash": 3288554610086246922, + "name": "French: Tarrasch, Guimard, Main Line, 6.Be2" + }, + "C04g": { + "eco": "C04g", + "fen": "r1bqkb1r/pppn2pp/2n1pp2/3pP3/3P4/5N2/PPPNBPPP/R1BQK2R w KQkq - 0 7", + "hash": 16282285854691618165, + "name": "French: Tarrasch, Guimard, Main Line, 6.Be2 f6" + }, + "C04h": { + "eco": "C04h", + "fen": "r1bqkb1r/pppn1ppp/2n1p3/3pP3/3P4/1N3N2/PPP2PPP/R1BQKB1R b KQkq - 2 6", + "hash": 7572786012833640486, + "name": "French: Tarrasch, Guimard, Main Line, 6.Nb3" + }, + "C04i": { + "eco": "C04i", + "fen": "r1bqkb1r/1ppn1ppp/2n1p3/p2pP3/3P4/1N3N2/PPP2PPP/R1BQKB1R w KQkq a6 0 7", + "hash": 17225500020315454646, + "name": "French: Tarrasch, Guimard, Main Line, 6.Nb3 a5" + }, + "C04j": { + "eco": "C04j", + "fen": "r1bqk2r/pppnbppp/2n1p3/3pP3/3P4/1N3N2/PPP2PPP/R1BQKB1R w KQkq - 3 7", + "hash": 9068986509647240375, + "name": "French: Tarrasch, Guimard, Main Line, 6.Nb3 Be7" + }, + "C05a": { + "eco": "C05a", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/3PP3/8/PPPN1PPP/R1BQKBNR w KQkq - 2 4", + "hash": 13156395808987896582, + "name": "French: Tarrasch, Closed" + }, + "C05b": { + "eco": "C05b", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3pP3/3P4/8/PPPN1PPP/R1BQKBNR b KQkq - 0 4", + "hash": 15559372342507830626, + "name": "French: Tarrasch, Closed, 4.e5" + }, + "C05c": { + "eco": "C05c", + "fen": "rnbqkb1r/ppp2ppp/4p3/3pP3/3Pn3/8/PPPN1PPP/R1BQKBNR w KQkq - 1 5", + "hash": 17142303454031442072, + "name": "French: Tarrasch, Closed, 4...Ne4" + }, + "C05d": { + "eco": "C05d", + "fen": "rnbqkb1r/pppn1ppp/4p3/3pP3/3P4/8/PPPN1PPP/R1BQKBNR w KQkq - 1 5", + "hash": 3362778333975377047, + "name": "French: Tarrasch, Closed, 4...Nfd7" + }, + "C05e": { + "eco": "C05e", + "fen": "rnbqkb1r/pppn1ppp/4p3/3pP3/3P1P2/8/PPPN2PP/R1BQKBNR b KQkq f3 0 5", + "hash": 15257210507978492190, + "name": "French: Tarrasch, Closed, 5.f4" + }, + "C05f": { + "eco": "C05f", + "fen": "r1bqkb1r/pp1n1ppp/2n1p3/2ppP3/3P1P2/2P5/PP1N2PP/R1BQKBNR w KQkq - 1 7", + "hash": 16787855676894144742, + "name": "French: Tarrasch, Closed, 5.f4 c5 6.c3 Nc6" + }, + "C05g": { + "eco": "C05g", + "fen": "r1bqkb1r/pp1n1ppp/2n1p3/2ppP3/3P1P2/2P2N2/PP4PP/R1BQKBNR b KQkq - 2 7", + "hash": 3880108558300337772, + "name": "French: Tarrasch, Closed, 5.f4 c5 6.c3 Nc6 7.Ndf3" + }, + "C05h": { + "eco": "C05h", + "fen": "r1bqkb1r/pp1n1ppp/2n1p3/3pP3/3p1P2/2P2N2/PP4PP/R1BQKBNR w KQkq - 0 8", + "hash": 7693925079272767402, + "name": "French: Tarrasch, Closed, 5.f4 c5 6.c3 Nc6 7.Ndf3 cxd4" + }, + "C05i": { + "eco": "C05i", + "fen": "r1b1kb1r/pp1n1ppp/1qn1p3/2ppP3/3P1P2/2P2N2/PP4PP/R1BQKBNR w KQkq - 3 8", + "hash": 17448937799133298870, + "name": "French: Tarrasch, Closed, 5.f4 c5 6.c3 Nc6 7.Ndf3 Qb6" + }, + "C05j": { + "eco": "C05j", + "fen": "r1b1kb1r/pp1n1ppp/1qn1p3/2ppP3/3P1P1P/2P2N2/PP4P1/R1BQKBNR b KQkq h3 0 8", + "hash": 7963639933074504136, + "name": "French: Tarrasch, Closed, 5.f4 c5 6.c3 Nc6 7.Ndf3 Qb6 8.h4" + }, + "C05k": { + "eco": "C05k", + "fen": "r1b1kb1r/pp1n1ppp/1qn1p3/2ppP3/3P1P2/2P2N2/PP2N1PP/R1BQKB1R b KQkq - 4 8", + "hash": 16610401007571111240, + "name": "French: Tarrasch, Closed, 5.f4 c5 6.c3 Nc6 7.Ndf3 Qb6 8.Ne2" + }, + "C05l": { + "eco": "C05l", + "fen": "r1b1kb1r/pp1n1ppp/1qn1p3/2ppP3/3P1P2/2P2NP1/PP5P/R1BQKBNR b KQkq - 0 8", + "hash": 16051303215834978446, + "name": "French: Tarrasch, Closed, 5.f4 c5 6.c3 Nc6 7.Ndf3 Qb6 8.g3" + }, + "C05m": { + "eco": "C05m", + "fen": "rnbqkb1r/pppn1ppp/4p3/3pP3/3P4/2P5/PP1N1PPP/R1BQKBNR b KQkq - 0 5", + "hash": 6372599567934520081, + "name": "French: Tarrasch, Closed, 5.c3" + }, + "C05n": { + "eco": "C05n", + "fen": "rnbqkb1r/pppn1ppp/4p3/3pP3/3P4/3B4/PPPN1PPP/R1BQK1NR b KQkq - 2 5", + "hash": 8910192306535773924, + "name": "French: Tarrasch, 5.Bd3" + }, + "C05o": { + "eco": "C05o", + "fen": "rnbqkb1r/p2n1ppp/1p2p3/2ppP3/3P4/2PB4/PP1N1PPP/R1BQK1NR w KQkq - 0 7", + "hash": 9251867629257164164, + "name": "French: Tarrasch, Botvinnik" + }, + "C05p": { + "eco": "C05p", + "fen": "r1bqkb1r/pp1n1ppp/2n1p3/2ppP3/3P4/2PB4/PP1N1PPP/R1BQK1NR w KQkq - 1 7", + "hash": 4675208541548386076, + "name": "French: Tarrasch, Closed, 6...Nc6" + }, + "C05q": { + "eco": "C05q", + "fen": "r1b1kb1r/pp1n1ppp/2n1p3/q1ppP3/3P4/2PB1N2/PP3PPP/R1BQK1NR w KQkq - 3 8", + "hash": 4949636145468278809, + "name": "French: Tarrasch, Closed, 7.Ndf3 Qa5" + }, + "C05r": { + "eco": "C05r", + "fen": "r1bqkb1r/pp1n1ppp/2n1p3/2ppP3/3P4/2PB1N2/PP1N1PPP/R1BQK2R b KQkq - 2 7", + "hash": 11206435349968156193, + "name": "French: Tarrasch, Closed, 7.Ngf3" + }, + "C05s": { + "eco": "C05s", + "fen": "r1bqk2r/pp1nbppp/2n1p3/2ppP3/3P4/2PB1N2/PP1N1PPP/R1BQK2R w KQkq - 3 8", + "hash": 10324839130282908336, + "name": "French: Tarrasch, Closed, 7.Ngf3 Be7" + }, + "C05t": { + "eco": "C05t", + "fen": "r1bqk2r/pp1nbp1p/2n1p3/2ppP1p1/3P4/2PB1N2/PP1N1PPP/R1BQ1RK1 w kq g6 0 9", + "hash": 8178459501080870442, + "name": "French: Tarrasch, Closed, 7.Ngf3 Be7 8.O-O g5" + }, + "C05u": { + "eco": "C05u", + "fen": "r1b1kb1r/pp1n1ppp/1qn1p3/2ppP3/3P4/2PB1N2/PP1N1PPP/R1BQ1RK1 b kq - 4 8", + "hash": 2454396857808550891, + "name": "French: Tarrasch, Closed, Nunn-Korchnoi Gambit" + }, + "C05v": { + "eco": "C05v", + "fen": "r1bqkb1r/pp1n1ppp/2n1p3/2ppP3/3P4/2PB4/PP1NNPPP/R1BQK2R b KQkq - 2 7", + "hash": 6072337372194151138, + "name": "French: Tarrasch, Closed, 7.Ne2" + }, + "C05w": { + "eco": "C05w", + "fen": "r1bqkb1r/1p1n1ppp/2n1p3/p1ppP3/3P4/2PB4/PP1NNPPP/R1BQK2R w KQkq a6 0 8", + "hash": 15159102514766943858, + "name": "French: Tarrasch, Closed, 7.Ne2 a5" + }, + "C06a": { + "eco": "C06a", + "fen": "r1bqkb1r/pp1n1ppp/2n1p3/3pP3/3P4/3B4/PP1NNPPP/R1BQK2R b KQkq - 0 8", + "hash": 12100373763261628162, + "name": "French: Tarrasch, Closed, Main Line" + }, + "C06b": { + "eco": "C06b", + "fen": "r1bqkb1r/pp3ppp/1nn1p3/3pP3/3P4/3B4/PP1NNPPP/R1BQK2R w KQkq - 1 9", + "hash": 12907732713231968268, + "name": "French: Tarrasch, Closed, Leningrad" + }, + "C06c": { + "eco": "C06c", + "fen": "r1bqkb1r/pp3ppp/1nn1p3/3pP3/3P4/3B1N2/PP2NPPP/R1BQK2R b KQkq - 2 9", + "hash": 7927427590751278726, + "name": "French: Tarrasch, Closed, Leningrad, 9.Nf3" + }, + "C06d": { + "eco": "C06d", + "fen": "r1bqkb1r/pp3ppp/1nn1p3/3pP3/3P4/3B4/PP1NNPPP/R1BQ1RK1 b kq - 2 9", + "hash": 14795452564649456412, + "name": "French: Tarrasch, Closed, Leningrad, 9.O-O" + }, + "C06e": { + "eco": "C06e", + "fen": "r1bqkb1r/1p3ppp/1nn1p3/p2pP3/3P4/3B4/PP1NNPPP/R1BQ1RK1 w kq a6 0 10", + "hash": 5426473022687985548, + "name": "French: Tarrasch, Closed, Leningrad, 9.O-O a5" + }, + "C06f": { + "eco": "C06f", + "fen": "r2qkb1r/pp1b1ppp/1nn1p3/3pP3/3P4/3B4/PP1NNPPP/R1BQ1RK1 w kq - 3 10", + "hash": 3428928050816377645, + "name": "French: Tarrasch, Closed, Leningrad, 9.O-O Bd7" + }, + "C06g": { + "eco": "C06g", + "fen": "r1b1kb1r/pp1n1ppp/1qn1p3/3pP3/3P4/3B4/PP1NNPPP/R1BQK2R w KQkq - 1 9", + "hash": 6922832539340089816, + "name": "French: Tarrasch, Closed, 8...Qb6" + }, + "C06h": { + "eco": "C06h", + "fen": "r1b1kb1r/pp1n1ppp/1qn1p3/3pP3/3P4/3B4/PP1NNPPP/R1BQ1RK1 b kq - 2 9", + "hash": 2190909617634177736, + "name": "French: Tarrasch, Closed, 8...Qb6 9.O-O" + }, + "C06i": { + "eco": "C06i", + "fen": "r1b1kb1r/pp1n1ppp/1qn1p3/3pP3/3P4/3B1N2/PP2NPPP/R1BQK2R b KQkq - 2 9", + "hash": 13632480063497475922, + "name": "French: Tarrasch, Closed, 8...Qb6 9.Nf3" + }, + "C06j": { + "eco": "C06j", + "fen": "r1b1kb1r/pp1n2pp/1qn1pp2/3pP3/3P4/3B1N2/PP2NPPP/R1BQK2R w KQkq - 0 10", + "hash": 8171018647254827053, + "name": "French: Tarrasch, Closed, 8...Qb6 9.Nf3 f6" + }, + "C06k": { + "eco": "C06k", + "fen": "r1bqkb1r/pp1n2pp/2n1pp2/3pP3/3P4/3B4/PP1NNPPP/R1BQK2R w KQkq - 0 9", + "hash": 7762006300443109501, + "name": "French: Tarrasch, Closed, 8...f6" + }, + "C06l": { + "eco": "C06l", + "fen": "r1bqkb1r/pp1n2pp/2n1pp2/3pP3/3P1N2/3B4/PP1N1PPP/R1BQK2R b KQkq - 1 9", + "hash": 10957742026884881969, + "name": "French: Tarrasch, Closed, 8...f6 9.Nf4" + }, + "C06m": { + "eco": "C06m", + "fen": "r1bqkb1r/pp1n2pp/2n1pP2/3p4/3P4/3B4/PP1NNPPP/R1BQK2R b KQkq - 0 9", + "hash": 236002304394829922, + "name": "French: Tarrasch, Closed, 8...f6 9.exf6" + }, + "C06n": { + "eco": "C06n", + "fen": "r1bqkb1r/pp4pp/2n1pn2/3p4/3P4/3B4/PP1NNPPP/R1BQK2R w KQkq - 0 10", + "hash": 2725491745465261360, + "name": "French: Tarrasch, Closed, 8...f6 9.exf6 Nxf6" + }, + "C06o": { + "eco": "C06o", + "fen": "r1bqk2r/pp4pp/2nbpn2/3p4/3P4/3B1N2/PP2NPPP/R1BQ1RK1 b kq - 3 11", + "hash": 2512279737194473870, + "name": "French: Tarrasch, Closed, 8...f6 9.exf6 Nxf6 10.O-O Bd6 11.Nf3" + }, + "C06p": { + "eco": "C06p", + "fen": "r1b1k2r/pp4pp/1qnbpn2/3p4/3P4/2NB1N2/PP3PPP/R1BQ1RK1 b kq - 5 12", + "hash": 6141127949258573812, + "name": "French: Tarrasch, Closed, 8...f6 9.exf6, 11...Qb6 12.Nc3" + }, + "C06q": { + "eco": "C06q", + "fen": "r1b1k2r/ppq3pp/2nbpn2/3p4/3P4/3B1N2/PP2NPPP/R1BQ1RK1 w kq - 4 12", + "hash": 2648774352243795599, + "name": "French: Tarrasch, Closed, 8...f6 9.exf6, 11...Qc7" + }, + "C06r": { + "eco": "C06r", + "fen": "r1b1k2r/ppq3pp/2nbpn2/3p2B1/3P4/3B1N2/PP2NPPP/R2Q1RK1 b kq - 5 12", + "hash": 16327801599598722375, + "name": "French: Tarrasch, Closed, 8...f6 9.exf6, 11...Qc7 12.Bg5" + }, + "C06s": { + "eco": "C06s", + "fen": "r1bq1rk1/pp4pp/2nbpn2/3p4/3P4/3B1N2/PP2NPPP/R1BQ1RK1 w - - 4 12", + "hash": 2915382207704629349, + "name": "French: Tarrasch, Closed, 8...f6 9.exf6, 11...O-O" + }, + "C06t": { + "eco": "C06t", + "fen": "r1bq1rk1/pp4pp/2nbpn2/3p4/3P1B2/3B1N2/PP2NPPP/R2Q1RK1 b - - 5 12", + "hash": 17519391959919782406, + "name": "French: Tarrasch, Closed, 8...f6 9.exf6, 11...O-O 12.Bf4" + }, + "C07a": { + "eco": "C07a", + "fen": "rnbqkbnr/pp3ppp/4p3/2pp4/3PP3/8/PPPN1PPP/R1BQKBNR w KQkq c6 0 4", + "hash": 795744134644371949, + "name": "French: Tarrasch, Open" + }, + "C07b": { + "eco": "C07b", + "fen": "rnbqkbnr/pp3ppp/4p3/2pp4/3PP3/2P5/PP1N1PPP/R1BQKBNR b KQkq - 0 4", + "hash": 9066297505945493099, + "name": "French: Tarrasch, Open, 4.c3" + }, + "C07c": { + "eco": "C07c", + "fen": "rnbqkbnr/pp3ppp/4p3/2Pp4/4P3/8/PPPN1PPP/R1BQKBNR b KQkq - 0 4", + "hash": 8424035621563549313, + "name": "French: Tarrasch, Open, 4.dxc5" + }, + "C07d": { + "eco": "C07d", + "fen": "rnbqkbnr/pp3ppp/4p3/2pp4/3PP3/5N2/PPPN1PPP/R1BQKB1R b KQkq - 1 4", + "hash": 15019471657669652688, + "name": "French: Tarrasch, Open, 4.Ngf3" + }, + "C07e": { + "eco": "C07e", + "fen": "rnbqkbnr/1p3ppp/p3p3/2pp4/3PP3/5N2/PPPN1PPP/R1BQKB1R w KQkq - 0 5", + "hash": 186917073397647372, + "name": "French: Tarrasch, Open, 4.Ngf3 a6" + }, + "C07f": { + "eco": "C07f", + "fen": "rnbqkb1r/pp3ppp/4pn2/2pp4/3PP3/5N2/PPPN1PPP/R1BQKB1R w KQkq - 2 5", + "hash": 10052550111328219462, + "name": "French: Tarrasch, Open, 4.Ngf3 Nf6" + }, + "C07g": { + "eco": "C07g", + "fen": "r1bqkbnr/pp3ppp/2n1p3/2pp4/3PP3/5N2/PPPN1PPP/R1BQKB1R w KQkq - 2 5", + "hash": 8899738517826164179, + "name": "French: Tarrasch, Open, 4.Ngf3 Nc6" + }, + "C07h": { + "eco": "C07h", + "fen": "rnbqkbnr/pp3ppp/4p3/3p4/3pP3/5N2/PPPN1PPP/R1BQKB1R w KQkq - 0 5", + "hash": 10336143569114765590, + "name": "French: Tarrasch, Open, 4.Ngf3 cxd4" + }, + "C07i": { + "eco": "C07i", + "fen": "rnbqkbnr/pp3ppp/4p3/2pP4/3P4/8/PPPN1PPP/R1BQKBNR b KQkq - 0 4", + "hash": 3230214936663380971, + "name": "French: Tarrasch, Open, 4.exd5" + }, + "C07j": { + "eco": "C07j", + "fen": "rnb1kbnr/pp3ppp/4p3/2pq4/3P4/8/PPPN1PPP/R1BQKBNR w KQkq - 0 5", + "hash": 12175717386542460449, + "name": "French: Tarrasch, Open, 4.exd5 Qxd5" + }, + "C07k": { + "eco": "C07k", + "fen": "rnb1kbnr/pp3ppp/4p3/2pq4/3P4/5N2/PPPN1PPP/R1BQKB1R b KQkq - 1 5", + "hash": 8330597742469402396, + "name": "French: Tarrasch, Open, 4.exd5 Qxd5 5.Ngf3" + }, + "C07l": { + "eco": "C07l", + "fen": "rnb1kbnr/pp3ppp/4p3/3q4/3p4/5N2/PPPN1PPP/R1BQKB1R w KQkq - 0 6", + "hash": 3207267408569640666, + "name": "French: Tarrasch, Open, 4.exd5 Qxd5 5.Ngf3 cxd4" + }, + "C07m": { + "eco": "C07m", + "fen": "rnb1kbnr/pp3ppp/4p3/3q4/2Bp4/5N2/PPPN1PPP/R1BQK2R b KQkq - 1 6", + "hash": 5706400061218943100, + "name": "French: Tarrasch, Open, 4.exd5 Qxd5 5.Ngf3 cxd4 6.Bc4" + }, + "C07n": { + "eco": "C07n", + "fen": "rnbqkbnr/pp3ppp/4p3/8/2Bp4/5N2/PPPN1PPP/R1BQK2R w KQkq - 2 7", + "hash": 10440258736823854431, + "name": "French: Tarrasch, Open, Eliskases Variation" + }, + "C07o": { + "eco": "C07o", + "fen": "rnb1kbnr/pp3ppp/3qp3/8/2Bp4/5N2/PPPN1PPP/R1BQK2R w KQkq - 2 7", + "hash": 15949794103381945417, + "name": "French: Tarrasch, Open, 4.exd5 Qxd5 5.Ngf3 cxd4 6.Bc4 Qd6" + }, + "C07p": { + "eco": "C07p", + "fen": "r1b1kb1r/pp3ppp/3qpn2/8/2BQ4/5N2/PPP2PPP/R1B2RK1 b kq - 0 10", + "hash": 13509578696193189923, + "name": "French: Tarrasch, Open, 4.exd5 Qxd5, Main Line, 10.Qxd4" + }, + "C07q": { + "eco": "C07q", + "fen": "r1b1kb1r/pp3ppp/3qpn2/8/2BN4/8/PPP2PPP/R1BQ1RK1 b kq - 0 10", + "hash": 11626289443612644656, + "name": "French: Tarrasch, Open, 4.exd5 Qxd5, Main Line, 10.Nxd4" + }, + "C07r": { + "eco": "C07r", + "fen": "r1b1kb1r/1p3ppp/p2qpn2/8/2BN4/8/PPP2PPP/R1BQ1RK1 w kq - 0 11", + "hash": 8335900494493330924, + "name": "French: Tarrasch, Open, 4.exd5 Qxd5, Main Line, 10.Nxd4 a6" + }, + "C07s": { + "eco": "C07s", + "fen": "r1b1kb1r/1p3ppp/p2qpn2/8/2BN4/2P5/PP3PPP/R1BQ1RK1 b kq - 0 11", + "hash": 393477610236486250, + "name": "French: Tarrasch, Open, 4.exd5 Qxd5, Main Line, 10.Nxd4 a6 11.c3" + }, + "C07t": { + "eco": "C07t", + "fen": "r1b1kb1r/1p3ppp/p2qpn2/8/2BN4/8/PPP2PPP/R1BQR1K1 b kq - 1 11", + "hash": 17805860590467385080, + "name": "French: Tarrasch, Open, 4.exd5 Qxd5, Main Line, 10.Nxd4 a6 11.Re1" + }, + "C08a": { + "eco": "C08a", + "fen": "rnbqkbnr/pp3ppp/8/2pp4/3P4/8/PPPN1PPP/R1BQKBNR w KQkq - 0 5", + "hash": 1423382238700933920, + "name": "French: Tarrasch, Open, 4.exd5 exd5" + }, + "C08b": { + "eco": "C08b", + "fen": "r1bqkbnr/pp3ppp/2n5/1Bpp4/3P4/8/PPPN1PPP/R1BQK1NR w KQkq - 2 6", + "hash": 10084641312140404128, + "name": "French: Tarrasch, Open, 4.exd5 exd5 5.Bb5+ Nc6" + }, + "C08c": { + "eco": "C08c", + "fen": "r1bqkbnr/pp3ppp/2n5/1Bpp4/3P4/8/PPPNQPPP/R1B1K1NR b KQkq - 3 6", + "hash": 2158729409830321700, + "name": "French: Tarrasch, Open, 4.exd5 exd5 5.Bb5+ Nc6 6.Qe2+" + }, + "C08d": { + "eco": "C08d", + "fen": "rn1qkbnr/pp1b1ppp/8/1Bpp4/3P4/8/PPPN1PPP/R1BQK1NR w KQkq - 2 6", + "hash": 14042207589770514578, + "name": "French: Tarrasch, Open, 4.exd5 exd5 5.Bb5+ Bd7" + }, + "C08e": { + "eco": "C08e", + "fen": "rn1qkbnr/pp1b1ppp/8/1Bpp4/3P4/8/PPPNQPPP/R1B1K1NR b KQkq - 3 6", + "hash": 6114056804970564374, + "name": "French: Tarrasch, Open, 4.exd5 exd5 5.Bb5+ Bd7 6.Qe2+" + }, + "C08f": { + "eco": "C08f", + "fen": "rn1qk1nr/pp1bbppp/8/1Bpp4/3P4/8/PPPNQPPP/R1B1K1NR w KQkq - 4 7", + "hash": 4617612020869441415, + "name": "French: Tarrasch, Open, 4.exd5 exd5 5.Bb5+ Bd7 6.Qe2+ Be7" + }, + "C08g": { + "eco": "C08g", + "fen": "rnbqkbnr/pp3ppp/8/2pp4/3P4/5N2/PPPN1PPP/R1BQKB1R b KQkq - 1 5", + "hash": 14457736145984352797, + "name": "French: Tarrasch, Open, 4.exd5 exd5 5.Ngf3" + }, + "C08h": { + "eco": "C08h", + "fen": "rnbqkbnr/1p3ppp/p7/2pp4/3P4/5N2/PPPN1PPP/R1BQKB1R w KQkq - 0 6", + "hash": 1897074956837587649, + "name": "French: Tarrasch, Open, 4.exd5 exd5 5.Ngf3 a6" + }, + "C08i": { + "eco": "C08i", + "fen": "rnbqkbnr/1p3ppp/p7/2pp4/3P4/5N2/PPPNBPPP/R1BQK2R b KQkq - 1 6", + "hash": 7625509402035699810, + "name": "French: Tarrasch, Open, 4.exd5 exd5 5.Ngf3 a6 6.Be2" + }, + "C08j": { + "eco": "C08j", + "fen": "rnbqkb1r/pp3ppp/5n2/2pp4/3P4/5N2/PPPN1PPP/R1BQKB1R w KQkq - 2 6", + "hash": 10613302726190347147, + "name": "French: Tarrasch, Open, 4.exd5 exd5 5.Ngf3 Nf6" + }, + "C08k": { + "eco": "C08k", + "fen": "rn1qkb1r/pp1B1ppp/5n2/2pp4/3P4/5N2/PPPN1PPP/R1BQK2R b KQkq - 0 7", + "hash": 2889460901588501601, + "name": "French: Tarrasch, Open, 4.exd5 exd5 5.Ngf3 Nf6, 7.Bxd7" + }, + "C08l": { + "eco": "C08l", + "fen": "r2qk2r/pp1nbppp/5n2/2Pp4/8/5N2/PPPN1PPP/R1BQ1RK1 b kq - 0 9", + "hash": 6621641516262458287, + "name": "French: Tarrasch, Open, 4.exd5 exd5 5.Ngf3 Nf6, Main Line" + }, + "C08m": { + "eco": "C08m", + "fen": "r2qk2r/pp2bppp/5n2/2np4/8/1N3N2/PPP2PPP/R1BQ1RK1 b kq - 1 10", + "hash": 8473724618157756961, + "name": "French: Tarrasch, Open, 4.exd5 exd5 5.Ngf3 Nf6, Main Line, 10.Nb3" + }, + "C09a": { + "eco": "C09a", + "fen": "r1bqkbnr/pp3ppp/2n5/2pp4/3P4/5N2/PPPN1PPP/R1BQKB1R w KQkq - 2 6", + "hash": 7154507381683607326, + "name": "French: Tarrasch, Open, 5.Ngf3 Nc6" + }, + "C09b": { + "eco": "C09b", + "fen": "r1bqkbnr/pp3ppp/2n5/1Bpp4/3P4/5N2/PPPN1PPP/R1BQK2R b KQkq - 3 6", + "hash": 5807175260956378269, + "name": "French: Tarrasch, Open, 5.Ngf3 Nc6 6.Bb5" + }, + "C09c": { + "eco": "C09c", + "fen": "r1bqkbnr/pp3ppp/2n5/1B1p4/3p4/5N2/PPPN1PPP/R1BQK2R w KQkq - 0 7", + "hash": 1119567908168117595, + "name": "French: Tarrasch, Open, 5.Ngf3 Nc6 6.Bb5 cxd4" + }, + "C09d": { + "eco": "C09d", + "fen": "r1bqk1nr/pp3ppp/2nb4/1Bpp4/3P4/5N2/PPPN1PPP/R1BQK2R w KQkq - 4 7", + "hash": 17640413523759011257, + "name": "French: Tarrasch, Open, 5.Ngf3 Nc6 6.Bb5 Bd6" + }, + "C09e": { + "eco": "C09e", + "fen": "r1bqk1nr/pp3ppp/2nb4/1BPp4/8/5N2/PPPN1PPP/R1BQK2R b KQkq - 0 7", + "hash": 10028518511505785557, + "name": "French: Tarrasch, Open, 7.dxc5" + }, + "C09f": { + "eco": "C09f", + "fen": "r1bqk2r/pp2nppp/2n5/1Bbp4/8/5N2/PPPN1PPP/R1BQ1RK1 w kq - 2 9", + "hash": 255547658730453149, + "name": "French: Tarrasch, Open, Main Line" + }, + "C09g": { + "eco": "C09g", + "fen": "r1bqk2r/pp2nppp/2n5/1Bbp4/8/2P2N2/PP1N1PPP/R1BQ1RK1 b kq - 0 9", + "hash": 8453568371265353499, + "name": "French: Tarrasch, Open, Main Line, 9.c3" + }, + "C09h": { + "eco": "C09h", + "fen": "r1bq1rk1/pp2nppp/2nb4/1B1p4/8/1NP2N2/PP3PPP/R1BQ1RK1 w - - 3 11", + "hash": 13357325370259120337, + "name": "French: Tarrasch, Open, Main Line, 9.c3 O-O 10.Nb3 Bd6" + }, + "C09i": { + "eco": "C09i", + "fen": "r1bq1rk1/pp2nppp/1bn5/1B1p4/8/1NP2N2/PP3PPP/R1BQ1RK1 w - - 3 11", + "hash": 12121130115979868010, + "name": "French: Tarrasch, Open, Main Line, 9.c3 O-O 10.Nb3 Bb6" + }, + "C09j": { + "eco": "C09j", + "fen": "r1bq1rk1/pp2nppp/1bn5/1B1p4/8/1NP2N2/PP3PPP/R1BQR1K1 b - - 4 11", + "hash": 3207382161865596030, + "name": "French: Tarrasch, Open, Main Line, 9.c3 O-O 10.Nb3 Bb6 11.Re1" + }, + "C09k": { + "eco": "C09k", + "fen": "r1bqk2r/pp2nppp/2n5/1Bbp4/8/1N3N2/PPP2PPP/R1BQ1RK1 b kq - 1 9", + "hash": 3800997385530636306, + "name": "French: Tarrasch, Open, Main Line, 9.Nb3" + }, + "C09l": { + "eco": "C09l", + "fen": "r1bqk2r/pp2nppp/2nb4/1B1p4/8/1N3N2/PPP2PPP/R1BQ1RK1 w kq - 2 10", + "hash": 14207965706530735804, + "name": "French: Tarrasch, Open, Main Line, 9.Nb3 Bd6" + }, + "C09m": { + "eco": "C09m", + "fen": "r1bqk2r/pp2nppp/2nb4/1B1p4/3N4/5N2/PPP2PPP/R1BQ1RK1 b kq - 3 10", + "hash": 5863103584570540150, + "name": "French: Tarrasch, Open, Main Line, 9.Nb3 Bd6 10.Nbd4" + }, + "C09n": { + "eco": "C09n", + "fen": "r1bqk2r/pp2nppp/2nb4/1B1p2B1/8/1N3N2/PPP2PPP/R2Q1RK1 b kq - 3 10", + "hash": 249530585246637428, + "name": "French: Tarrasch, Open, Main Line, 9.Nb3 Bd6 10.Bg5" + }, + "C09o": { + "eco": "C09o", + "fen": "r1bqk2r/pp2nppp/2nb4/1B1p4/8/1N3N2/PPP2PPP/R1BQR1K1 b kq - 3 10", + "hash": 4726768618901794216, + "name": "French: Tarrasch, Open, Main Line, 9.Nb3 Bd6 10.Re1" + }, + "C09p": { + "eco": "C09p", + "fen": "r1bq1rk1/pp2nppp/2nb4/1B1p2B1/8/1N3N2/PPP2PPP/R2QR1K1 b - - 5 11", + "hash": 10190064320349069195, + "name": "French: Tarrasch, Open, Main Line, 9.Nb3 Bd6 10.Re1 O-O 11.Bg5" + }, + "C09q": { + "eco": "C09q", + "fen": "r2q1rk1/pp2nppp/2nb4/1B1p2B1/6b1/1N3N2/PPP2PPP/R2QR1K1 w - - 6 12", + "hash": 10356497594062786913, + "name": "French: Tarrasch, Open, Main Line, 9.Nb3 Bd6 10.Re1 O-O 11.Bg5 Bg4" + }, + "C10a": { + "eco": "C10a", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/3PP3/2N5/PPP2PPP/R1BQKBNR b KQkq - 1 3", + "hash": 5729560030123667577, + "name": "French: 3.Nc3" + }, + "C10b": { + "eco": "C10b", + "fen": "rnbqkbnr/pp3ppp/4p3/2pp4/3PP3/2N5/PPP2PPP/R1BQKBNR w KQkq c6 0 4", + "hash": 12246041459958692612, + "name": "French: Marshall Variation" + }, + "C10c": { + "eco": "C10c", + "fen": "r1bqkbnr/ppp2ppp/2n1p3/3p4/3PP3/2N5/PPP2PPP/R1BQKBNR w KQkq - 2 4", + "hash": 16460274694035969402, + "name": "French: 3.Nc3 Nc6" + }, + "C10d": { + "eco": "C10d", + "fen": "r1bqkb1r/ppp2ppp/2n1pn2/3p4/3PP3/2N2N2/PPP2PPP/R1BQKB1R w KQkq - 4 5", + "hash": 7270072710057801169, + "name": "French: 3.Nc3 Nc6 4.Nf3 Nf6" + }, + "C10e": { + "eco": "C10e", + "fen": "rnbqk1nr/ppp1bppp/4p3/3p4/3PP3/2N5/PPP2PPP/R1BQKBNR w KQkq - 2 4", + "hash": 6579494701968628968, + "name": "French: 3.Nc3 Be7" + }, + "C10f": { + "eco": "C10f", + "fen": "rnbqkbnr/ppp2ppp/4p3/8/3Pp3/2N5/PPP2PPP/R1BQKBNR w KQkq - 0 4", + "hash": 9730558558930829353, + "name": "French: Rubinstein" + }, + "C10g": { + "eco": "C10g", + "fen": "rnbqkb1r/ppp2ppp/4pn2/8/3PN3/8/PPP2PPP/R1BQKBNR w KQkq - 1 5", + "hash": 8513467348835455016, + "name": "French: Rubinstein, 4...Nf6" + }, + "C10h": { + "eco": "C10h", + "fen": "r1bqkbnr/pppn1ppp/4p3/8/3PN3/8/PPP2PPP/R1BQKBNR w KQkq - 1 5", + "hash": 2173170278717979762, + "name": "French: Rubinstein, 4...Nd7" + }, + "C10i": { + "eco": "C10i", + "fen": "r1bqk1nr/pppnbppp/4p3/8/3PN3/5N2/PPP2PPP/R1BQKB1R w KQkq - 3 6", + "hash": 15096129462257201630, + "name": "French: Rubinstein, 5.Nf3 Be7" + }, + "C10j": { + "eco": "C10j", + "fen": "r1bqkb1r/pppn1ppp/4pn2/8/3PN3/5N2/PPP2PPP/R1BQKB1R w KQkq - 3 6", + "hash": 11430838274801261785, + "name": "French: Rubinstein, 5.Nf3 Ngf6" + }, + "C10k": { + "eco": "C10k", + "fen": "r1bqkb1r/pppn1ppp/4pn2/8/3PN3/3B1N2/PPP2PPP/R1BQK2R b KQkq - 4 6", + "hash": 14677195431070867114, + "name": "French: Rubinstein, 5.Nf3 Ngf6 6.Bd3" + }, + "C10l": { + "eco": "C10l", + "fen": "r1bqkb1r/pppn1ppp/4pN2/8/3P4/5N2/PPP2PPP/R1BQKB1R b KQkq - 0 6", + "hash": 15727119069908696680, + "name": "French: Rubinstein, 5.Nf3 Ngf6 6.Nxf6+" + }, + "C10m": { + "eco": "C10m", + "fen": "r1bqkb1r/ppp2ppp/4pn2/4N3/3P4/8/PPP2PPP/R1BQKB1R b KQkq - 1 7", + "hash": 17503111898632471667, + "name": "French: Rubinstein, Capablanca" + }, + "C10n": { + "eco": "C10n", + "fen": "r1bqkb1r/ppp2ppp/4pn2/8/3P4/3B1N2/PPP2PPP/R1BQK2R b KQkq - 1 7", + "hash": 8850406578141750134, + "name": "French: Rubinstein, 7.Bd3" + }, + "C10o": { + "eco": "C10o", + "fen": "r1bqkb1r/pp3ppp/4pn2/2p5/3P4/3B1N2/PPP2PPP/R1BQK2R w KQkq c6 0 8", + "hash": 11286904994867734539, + "name": "French: Rubinstein, 7.Bd3 c5" + }, + "C10p": { + "eco": "C10p", + "fen": "r1bqkb1r/pp3ppp/4pn2/2P5/8/3B1N2/PPP2PPP/R1BQK2R b KQkq - 0 8", + "hash": 16375095504481042279, + "name": "French: Rubinstein, 7.Bd3 c5 8.dxc5" + }, + "C10q": { + "eco": "C10q", + "fen": "r1bqkb1r/ppp2ppp/4pn2/6B1/3P4/5N2/PPP2PPP/R2QKB1R b KQkq - 1 7", + "hash": 16826859365110741709, + "name": "French: Rubinstein, 7.Bg5" + }, + "C10r": { + "eco": "C10r", + "fen": "rn1qkbnr/pppb1ppp/4p3/8/3PN3/8/PPP2PPP/R1BQKBNR w KQkq - 1 5", + "hash": 14918776117540798863, + "name": "French: Rubinstein, 4...Bd7" + }, + "C10s": { + "eco": "C10s", + "fen": "rn1qkbnr/pppb1ppp/4p3/8/3PN3/5N2/PPP2PPP/R1BQKB1R b KQkq - 2 5", + "hash": 1472341879868596402, + "name": "French: Rubinstein, 4...Bd7 5.Nf3" + }, + "C10t": { + "eco": "C10t", + "fen": "rn1qkbnr/ppp2ppp/2b1p3/8/3PN3/3B1N2/PPP2PPP/R1BQK2R b KQkq - 4 6", + "hash": 4217042251876553457, + "name": "French: Rubinstein, 4...Bd7 5.Nf3 Bc6 6.Bd3" + }, + "C10u": { + "eco": "C10u", + "fen": "r2qkbnr/pppn1ppp/2b1p3/8/3PN3/3B1N2/PPP2PPP/R1BQK2R w KQkq - 5 7", + "hash": 677381386390388541, + "name": "French: Rubinstein, 4...Bd7 5.Nf3 Bc6 6.Bd3 Nd7" + }, + "C10v": { + "eco": "C10v", + "fen": "r2qkbnr/pppn1ppp/2b1p3/8/3PN3/3B1N2/PPP2PPP/R1BQ1RK1 b kq - 6 7", + "hash": 8580467781008450605, + "name": "French: Rubinstein, 4...Bd7 5.Nf3 Bc6 6.Bd3 Nd7 7.O-O" + }, + "C10w": { + "eco": "C10w", + "fen": "r2qkb1r/pppn1ppp/2b1pn2/8/3PN3/3B1N2/PPP2PPP/R1BQ1RK1 w kq - 7 8", + "hash": 3241963952985023931, + "name": "French: Rubinstein, 4...Bd7 5.Nf3 Bc6 6.Bd3 Nd7 7.O-O Ngf6" + }, + "C10x": { + "eco": "C10x", + "fen": "r2qkb1r/pppn1ppp/2b1pn2/8/3P4/3B1NN1/PPP2PPP/R1BQ1RK1 b kq - 8 8", + "hash": 5893652556155739721, + "name": "French: Rubinstein, 4...Bd7 5.Nf3 Bc6 6.Bd3 Nd7 7.O-O Ngf6 8.Ng3" + }, + "C11a": { + "eco": "C11a", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/3PP3/2N5/PPP2PPP/R1BQKBNR w KQkq - 2 4", + "hash": 1471912402293780975, + "name": "French: 3.Nc3 Nf6" + }, + "C11b": { + "eco": "C11b", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/3PP3/2NB4/PPP2PPP/R1BQK1NR b KQkq - 3 4", + "hash": 4711021577879597980, + "name": "French: Swiss Variation" + }, + "C11c": { + "eco": "C11c", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3pP3/3P4/2N5/PPP2PPP/R1BQKBNR b KQkq - 0 4", + "hash": 8436471858628941707, + "name": "French: Steinitz" + }, + "C11d": { + "eco": "C11d", + "fen": "rnbqkb1r/pppn1ppp/4p3/3pP3/3P4/2N2N2/PPP2PPP/R1BQKB1R b KQkq - 2 5", + "hash": 6284686580812758851, + "name": "French: Steinitz, 5.Nf3" + }, + "C11e": { + "eco": "C11e", + "fen": "rnbqkb1r/pp1n1ppp/4p3/2PpP3/8/2N2N2/PPP2PPP/R1BQKB1R b KQkq - 0 6", + "hash": 14890380705243161426, + "name": "French: Steinitz, 5.Nf3 c5 6.dxc5" + }, + "C11f": { + "eco": "C11f", + "fen": "rnbqkb1r/pppn1ppp/4p3/3pP3/3P1P2/2N5/PPP3PP/R1BQKBNR b KQkq f3 0 5", + "hash": 8161966040611644407, + "name": "French: Steinitz, 5.f4" + }, + "C11g": { + "eco": "C11g", + "fen": "rnbqkb1r/pp1n1ppp/4p3/2PpP3/5P2/2N5/PPP3PP/R1BQKBNR b KQkq - 0 6", + "hash": 16778111623812235238, + "name": "French: Steinitz, 6.dxc5" + }, + "C11h": { + "eco": "C11h", + "fen": "rnbqkb1r/pp1n1ppp/4p3/2ppP3/3P1P2/2N2N2/PPP3PP/R1BQKB1R b KQkq - 1 6", + "hash": 5498927606932965815, + "name": "French: Steinitz, 6.Nf3" + }, + "C11i": { + "eco": "C11i", + "fen": "r1bqkb1r/pp1n1ppp/2n1p3/2ppP3/3P1P2/2N1BN2/PPP3PP/R2QKB1R b KQkq - 3 7", + "hash": 10715610013939775290, + "name": "French: Steinitz, Boleslavsky Variation" + }, + "C11j": { + "eco": "C11j", + "fen": "r1bqkb1r/1p1n1ppp/p1n1p3/2ppP3/3P1P2/2N1BN2/PPP3PP/R2QKB1R w KQkq - 0 8", + "hash": 5062766691027472358, + "name": "French: Steinitz, Boleslavsky, 7...a6" + }, + "C11k": { + "eco": "C11k", + "fen": "r1bqkb1r/3n1ppp/p1n1p3/1pppP3/3P1P2/2N1BN2/PPPQ2PP/R3KB1R w KQkq b6 0 9", + "hash": 1035452847909186939, + "name": "French: Steinitz, Boleslavsky, 7...a6 8.Qd2 b5" + }, + "C11l": { + "eco": "C11l", + "fen": "r1bqkb1r/pp1n1ppp/2n1p3/3pP3/3p1P2/2N1BN2/PPP3PP/R2QKB1R w KQkq - 0 8", + "hash": 14676040130193252092, + "name": "French: Steinitz, Boleslavsky, 7...cxd4" + }, + "C11m": { + "eco": "C11m", + "fen": "r1b1kb1r/pp1n1ppp/1qn1p3/3pP3/3N1P2/2N1B3/PPP3PP/R2QKB1R w KQkq - 1 9", + "hash": 7764319793648343560, + "name": "French: Steinitz, Boleslavsky, 7...cxd4 8.Nxd4 Qb6" + }, + "C11n": { + "eco": "C11n", + "fen": "r1bqk2r/pp1n1ppp/2n1p3/2bpP3/3N1P2/2N1B3/PPP3PP/R2QKB1R w KQkq - 1 9", + "hash": 81871538852767313, + "name": "French: Steinitz, Boleslavsky, 7...cxd4 8.Nxd4 Bc5" + }, + "C11o": { + "eco": "C11o", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p2B1/3PP3/2N5/PPP2PPP/R2QKBNR b KQkq - 3 4", + "hash": 15147610775670794791, + "name": "French: 3.Nc3 Nf6 4.Bg5" + }, + "C11p": { + "eco": "C11p", + "fen": "rnbqkb1r/ppp2ppp/4pn2/6B1/3PN3/8/PPP2PPP/R2QKBNR b KQkq - 0 5", + "hash": 12718093073036577760, + "name": "French: Burn, 5.Nxe4" + }, + "C11q": { + "eco": "C11q", + "fen": "r1bqkb1r/pppn1ppp/4pn2/6B1/3PN3/5N2/PPP2PPP/R2QKB1R b KQkq - 2 6", + "hash": 6410920179105859345, + "name": "French: Burn, 5.Nxe4 Nbd7 6.Nf3" + }, + "C11r": { + "eco": "C11r", + "fen": "r1bqk2r/pppnbppp/4pn2/6B1/3PN3/5N2/PPP2PPP/R2QKB1R w KQkq - 3 7", + "hash": 5491112803804031872, + "name": "French: Burn, 5.Nxe4 Nbd7 6.Nf3 Be7" + }, + "C11s": { + "eco": "C11s", + "fen": "rnbqk2r/ppp1bppp/4pn2/6B1/3PN3/8/PPP2PPP/R2QKBNR w KQkq - 1 6", + "hash": 11868055581469714289, + "name": "French: Burn, 5.Nxe4 Be7" + }, + "C11t": { + "eco": "C11t", + "fen": "rnbqk2r/ppp2ppp/4pb2/8/3PN3/8/PPP2PPP/R2QKBNR w KQkq - 0 7", + "hash": 3034415751650888221, + "name": "French: Burn, 6.Bxf6 Bxf6" + }, + "C11u": { + "eco": "C11u", + "fen": "rnbqk2r/ppp1bp1p/4pp2/8/3PN3/8/PPP2PPP/R2QKBNR w KQkq - 0 7", + "hash": 17064229958198564984, + "name": "French: Burn, 6.Bxf6 gxf6" + }, + "C11v": { + "eco": "C11v", + "fen": "rnbqk2r/ppp1bp1p/4pp2/8/3PN3/5N2/PPP2PPP/R2QKB1R b KQkq - 1 7", + "hash": 4014042396301424965, + "name": "French: Burn, 6.Bxf6 gxf6 7.Nf3" + }, + "C11w": { + "eco": "C11w", + "fen": "rnbqk2r/p1p1bp1p/1p2pp2/8/3PN3/5N2/PPP2PPP/R2QKB1R w KQkq - 0 8", + "hash": 6691776588174118622, + "name": "French: Burn, 6.Bxf6 gxf6 7.Nf3 b6" + }, + "C11x": { + "eco": "C11x", + "fen": "rnbqk2r/ppp1bp1p/4p3/5p2/3PN3/5N2/PPP2PPP/R2QKB1R w KQkq - 0 8", + "hash": 10905739386538936045, + "name": "French: Burn, 6.Bxf6 gxf6 7.Nf3 f5" + }, + "C12a": { + "eco": "C12a", + "fen": "rnbqk2r/ppp2ppp/4pn2/3p2B1/1b1PP3/2N5/PPP2PPP/R2QKBNR w KQkq - 4 5", + "hash": 1978899623154770437, + "name": "French: MacCutcheon" + }, + "C12b": { + "eco": "C12b", + "fen": "rnbqk2r/ppp2ppp/4pn2/3P2B1/1b1P4/2N5/PPP2PPP/R2QKBNR b KQkq - 0 5", + "hash": 4371162305688510467, + "name": "French: MacCutcheon, 5.exd5" + }, + "C12c": { + "eco": "C12c", + "fen": "rnb1k2r/ppp2ppp/4pn2/3q2B1/1b1P4/2N5/PPP2PPP/R2QKBNR w KQkq - 0 6", + "hash": 13296224652460711369, + "name": "French: MacCutcheon, 5.exd5 Qxd5" + }, + "C12d": { + "eco": "C12d", + "fen": "rnbqk2r/ppp2ppp/4pn2/3pP1B1/1b1P4/2N5/PPP2PPP/R2QKBNR b KQkq - 0 5", + "hash": 8795354450913215585, + "name": "French: MacCutcheon, Advance Variation" + }, + "C12e": { + "eco": "C12e", + "fen": "rnbqk2r/ppp2pp1/4pP1p/3p2B1/1b1P4/2N5/PPP2PPP/R2QKBNR b KQkq - 0 6", + "hash": 18166612001575558929, + "name": "French: MacCutcheon, Chigorin Variation" + }, + "C12f": { + "eco": "C12f", + "fen": "rnbqk2r/ppp2pp1/4pn1p/3pP3/1b1P4/2N5/PPP2PPP/R1BQKBNR b KQkq - 1 6", + "hash": 3360384705350063804, + "name": "French: MacCutcheon, Olland (Dutch) Variation" + }, + "C12g": { + "eco": "C12g", + "fen": "rnbqk2r/ppp2pp1/4pn1p/3pP3/1b1P3B/2N5/PPP2PPP/R2QKBNR b KQkq - 1 6", + "hash": 12859821892952862703, + "name": "French: MacCutcheon, Bernstein Variation" + }, + "C12h": { + "eco": "C12h", + "fen": "rnbqk2r/ppp2pp1/4pn1p/3pP3/1b1P4/2N1B3/PPP2PPP/R2QKBNR b KQkq - 1 6", + "hash": 11924653664013535291, + "name": "French: MacCutcheon, Janowski Variation" + }, + "C12i": { + "eco": "C12i", + "fen": "rnbqk2r/ppp2pp1/4pn1p/3pP3/1b1P4/2N5/PPPB1PPP/R2QKBNR b KQkq - 1 6", + "hash": 18444773795618961585, + "name": "French: MacCutcheon, 6.Bd2" + }, + "C12j": { + "eco": "C12j", + "fen": "rnbqk2r/ppp2pp1/4pn1p/3pP3/3P4/2b5/PPPB1PPP/R2QKBNR w KQkq - 0 7", + "hash": 16050964367712545467, + "name": "French: MacCutcheon, Lasker Variation" + }, + "C12k": { + "eco": "C12k", + "fen": "rnbqk2r/ppp2pp1/4pn1p/3pP3/3P4/2P5/P1PB1PPP/R2QKBNR b KQkq - 0 7", + "hash": 10742511441239705083, + "name": "French: MacCutcheon, Lasker, 7.bxc3" + }, + "C12l": { + "eco": "C12l", + "fen": "rnbqk2r/ppp2pp1/4p2p/3pP3/3Pn1Q1/2P5/P1PB1PPP/R3KBNR b KQkq - 2 8", + "hash": 18061456560085225996, + "name": "French: MacCutcheon, 8.Qg4" + }, + "C12m": { + "eco": "C12m", + "fen": "rnbq1k1r/ppp2pp1/4p2p/3pP3/3Pn1Q1/2PB4/P1PB1PPP/R3K1NR b KQ - 4 9", + "hash": 10114561139316745399, + "name": "French: MacCutcheon, 8.Qg4 Kf8 9.Bd3" + }, + "C12n": { + "eco": "C12n", + "fen": "rnbqk2r/ppp2p2/4p1pp/3pP3/3Pn1Q1/2P5/P1PB1PPP/R3KBNR w KQkq - 0 9", + "hash": 1374579025682939975, + "name": "French: MacCutcheon, 8.Qg4 g6" + }, + "C12o": { + "eco": "C12o", + "fen": "rnbqk2r/ppp2p2/4p1pp/3pP3/3Pn1Q1/2PB4/P1PB1PPP/R3K1NR b KQkq - 1 9", + "hash": 5052719878239683124, + "name": "French: MacCutcheon, 8.Qg4 g6 9.Bd3" + }, + "C12p": { + "eco": "C12p", + "fen": "rnbqk2r/pp3p2/4p1pp/2ppP3/3P2Q1/2PB4/P1PK1PPP/R5NR w kq c6 0 11", + "hash": 6175918871564340178, + "name": "French: MacCutcheon, Main Line" + }, + "C12q": { + "eco": "C12q", + "fen": "rnbqk2r/pp3p2/4p1pp/2ppP3/3P2Q1/2PB1N2/P1PK1PPP/R6R b kq - 1 11", + "hash": 10291193026942282479, + "name": "French: MacCutcheon, Main Line, 11.Nf3" + }, + "C12r": { + "eco": "C12r", + "fen": "r1bqk2r/pp3p2/2n1p1pp/2ppP3/3P2Q1/2PB1N2/P1PK1PPP/R6R w kq - 2 12", + "hash": 2683144180171968492, + "name": "French: MacCutcheon, Main Line, 11.Nf3 Nc6" + }, + "C13a": { + "eco": "C13a", + "fen": "rnbqk2r/ppp1bppp/4pn2/3p2B1/3PP3/2N5/PPP2PPP/R2QKBNR w KQkq - 4 5", + "hash": 14338172935910917814, + "name": "French: Classical" + }, + "C13b": { + "eco": "C13b", + "fen": "rnbqk2r/ppp1bppp/4pB2/3p4/3PP3/2N5/PPP2PPP/R2QKBNR b KQkq - 0 5", + "hash": 7188982508406003798, + "name": "French: Classical, Anderssen Variation" + }, + "C13c": { + "eco": "C13c", + "fen": "rnbqk2r/ppp1bppp/4p3/3pP3/3P2Q1/2N5/PPP2PPP/R3KBNR b KQkq - 2 7", + "hash": 6811374486606600018, + "name": "French: Classical, Anderssen-Richter Variation" + }, + "C13d": { + "eco": "C13d", + "fen": "rnbqk2r/ppp1bppp/4pn2/3pP1B1/3P4/2N5/PPP2PPP/R2QKBNR b KQkq - 0 5", + "hash": 12070344832489955538, + "name": "French: Classical, 5.e5" + }, + "C13e": { + "eco": "C13e", + "fen": "rnbqk1nr/p1p1bppp/1p2p3/3pP3/3P4/2N1B3/PPP2PPP/R2QKBNR w KQkq - 0 7", + "hash": 15745091419995870096, + "name": "French: Classical, Frankfurt Variation" + }, + "C13f": { + "eco": "C13f", + "fen": "rnbqk2r/ppp1bppp/4p3/3pP1B1/3Pn3/2N5/PPP2PPP/R2QKBNR w KQkq - 1 6", + "hash": 11351945406822001960, + "name": "French: Classical, Tartakower Variation" + }, + "C13g": { + "eco": "C13g", + "fen": "rnbqk2r/ppp1Bppp/4p3/3pP3/3Pn3/2N5/PPP2PPP/R2QKBNR b KQkq - 0 6", + "hash": 1067225591006656180, + "name": "French: Classical, Tartakower, 6.Bxe7" + }, + "C13h": { + "eco": "C13h", + "fen": "rnbqk2r/pppnbppp/4p3/3pP1B1/3P4/2N5/PPP2PPP/R2QKBNR w KQkq - 1 6", + "hash": 6828997497403549991, + "name": "French: Classical, 5.e5 Nfd7" + }, + "C13i": { + "eco": "C13i", + "fen": "rnbqk2r/pppnbppp/4p3/3pP1B1/3P3P/2N5/PPP2PP1/R2QKBNR b KQkq h3 0 6", + "hash": 14008135631616233561, + "name": "French: Chatard-Alekhine Attack" + }, + "C13j": { + "eco": "C13j", + "fen": "rnbqk2r/pppnb1pp/4pp2/3pP1B1/3P3P/2N5/PPP2PP1/R2QKBNR w KQkq - 0 7", + "hash": 1023411585908033318, + "name": "French: Chatard-Alekhine, Teichmann Variation" + }, + "C13k": { + "eco": "C13k", + "fen": "rnbq1rk1/pppnbppp/4p3/3pP1B1/3P3P/2N5/PPP2PP1/R2QKBNR w KQ - 1 7", + "hash": 14469512087399020978, + "name": "French: Chatard-Alekhine, Spielmann Variation" + }, + "C13l": { + "eco": "C13l", + "fen": "rnbqk2r/pppn1ppp/4p3/3pP1b1/3P3P/2N5/PPP2PP1/R2QKBNR w KQkq - 0 7", + "hash": 5892133956159700086, + "name": "French: Chatard-Alekhine, 6...Bxg5" + }, + "C13m": { + "eco": "C13m", + "fen": "rnb1k2r/pppnqppp/4p3/3pP3/3P1N2/2N5/PPP2PP1/R2QKB1R b KQkq - 3 9", + "hash": 15782338631512896092, + "name": "French: Chatard-Alekhine, 6...Bxg5 7.hxg5 Qxg5 8.Nh3 Qe7 9.Nf4" + }, + "C13n": { + "eco": "C13n", + "fen": "rnbqk2r/1ppnbppp/p3p3/3pP1B1/3P3P/2N5/PPP2PP1/R2QKBNR w KQkq - 0 7", + "hash": 1193758262380112005, + "name": "French: Chatard-Alekhine, Maroczy Variation" + }, + "C13o": { + "eco": "C13o", + "fen": "rnbqk2r/1ppn1ppp/p3p3/3pP1b1/3P2QP/2N5/PPP2PP1/R3KBNR w KQkq - 0 8", + "hash": 15458768176748027559, + "name": "French: Chatard-Alekhine, Maroczy, 7.Qg4 Bxg5" + }, + "C13p": { + "eco": "C13p", + "fen": "rnbqk2r/pp1nbppp/4p3/2ppP1B1/3P3P/2N5/PPP2PP1/R2QKBNR w KQkq c6 0 7", + "hash": 2600605092184677156, + "name": "French: Chatard-Alekhine, Breyer Variation" + }, + "C13q": { + "eco": "C13q", + "fen": "rnbqk2r/pp1nBppp/4p3/2ppP3/3P3P/2N5/PPP2PP1/R2QKBNR b KQkq - 0 7", + "hash": 13209777591056433336, + "name": "French: Chatard-Alekhine, Breyer, 7.Bxe7" + }, + "C13r": { + "eco": "C13r", + "fen": "rnbq3r/pp1nkppp/4p3/2ppP3/3P3P/2N5/PPP2PP1/R2QKBNR w KQ - 0 8", + "hash": 6587378425806421729, + "name": "French: Chatard-Alekhine, Breyer, 7.Bxe7 Kxe7" + }, + "C14a": { + "eco": "C14a", + "fen": "rnb1k2r/pppnqppp/4p3/3pP3/3P4/2N5/PPP2PPP/R2QKBNR w KQkq - 0 7", + "hash": 3260638949772522974, + "name": "French: Classical, 6.Bxe7 Qxe7" + }, + "C14b": { + "eco": "C14b", + "fen": "rnb1k2r/pppnqppp/4p3/3pP3/3P2Q1/2N5/PPP2PPP/R3KBNR b KQkq - 1 7", + "hash": 8717402588625579987, + "name": "French: Classical, Pollock Variation" + }, + "C14c": { + "eco": "C14c", + "fen": "rnb1k2r/pppnqppp/4p3/3pP3/3P4/2NB4/PPP2PPP/R2QK1NR b KQkq - 1 7", + "hash": 8668792095776880557, + "name": "French: Classical, Tarrasch Variation" + }, + "C14d": { + "eco": "C14d", + "fen": "rnb1k2r/pppnqppp/4p3/1N1pP3/3P4/8/PPP2PPP/R2QKBNR b KQkq - 1 7", + "hash": 15678814394644751140, + "name": "French: Classical, Alapin Variation" + }, + "C14e": { + "eco": "C14e", + "fen": "rnb1k2r/pppnqppp/4p3/3pP3/3P4/2N5/PPPQ1PPP/R3KBNR b KQkq - 1 7", + "hash": 385148300217002622, + "name": "French: Classical, Rubinstein Variation" + }, + "C14f": { + "eco": "C14f", + "fen": "rnb1k2r/pppnqppp/4p3/3pP3/3P1P2/2N5/PPP3PP/R2QKBNR b KQkq f3 0 7", + "hash": 15012292873623128151, + "name": "French: Classical, Steinitz Variation" + }, + "C14g": { + "eco": "C14g", + "fen": "rnb1k2r/1ppnqppp/p3p3/3pP3/3P1P2/2N5/PPP3PP/R2QKBNR w KQkq - 0 8", + "hash": 189592258621714571, + "name": "French: Classical, Steinitz, 7...a6" + }, + "C14h": { + "eco": "C14h", + "fen": "rnb1k2r/1p1nqppp/p3p3/2ppP3/3P1P2/2N2N2/PPP3PP/R2QKB1R w KQkq c6 0 9", + "hash": 4590483581875182283, + "name": "French: Classical, Steinitz, 7...a6 8.Nf3 c5" + }, + "C14i": { + "eco": "C14i", + "fen": "rnb1k2r/1p1nqppp/p3p3/2PpP3/5P2/2N2N2/PPP3PP/R2QKB1R b KQkq - 0 9", + "hash": 4636331227697286567, + "name": "French: Classical, Steinitz, 7...a6 8.Nf3 c5" + }, + "C14j": { + "eco": "C14j", + "fen": "rnb2rk1/pppnqppp/4p3/3pP3/3P1P2/2N5/PPP3PP/R2QKBNR w KQ - 1 8", + "hash": 15780205603533005244, + "name": "French: Classical, Steinitz, 7...O-O" + }, + "C14k": { + "eco": "C14k", + "fen": "rnb2rk1/pp1nqppp/4p3/2ppP3/3P1P2/2N2N2/PPP3PP/R2QKB1R w KQ c6 0 9", + "hash": 16711644610788051964, + "name": "French: Classical, Steinitz, 7...O-O 8.Nf3 c5" + }, + "C14l": { + "eco": "C14l", + "fen": "rnb2rk1/pp1nqppp/4p3/2PpP3/5P2/2N2N2/PPP3PP/R2QKB1R b KQ - 0 9", + "hash": 10955167635310615696, + "name": "French: Classical, Steinitz, 8.Nf3 c5 9.dxc5" + }, + "C14m": { + "eco": "C14m", + "fen": "rnb2rk1/pp1nqppp/4p3/2ppP3/3P1P2/2N2N2/PPPQ2PP/R3KB1R b KQ - 1 9", + "hash": 14984601538032178268, + "name": "French: Classical, Steinitz, 9.Qd2" + }, + "C14n": { + "eco": "C14n", + "fen": "r1b2rk1/pp1nqppp/2n1p3/2PpP3/5P2/2N2N2/PPPQ2PP/R3KB1R b KQ - 0 10", + "hash": 2016774281444451891, + "name": "French: Classical, Steinitz, 9.Qd2 Nc6 10.dxc5" + }, + "C14o": { + "eco": "C14o", + "fen": "r1b2rk1/pp1n1ppp/2n1p3/2qpP3/5P2/2N2N2/PPPQ2PP/R3KB1R w KQ - 0 11", + "hash": 1814194026518737442, + "name": "French: Classical, Steinitz, 9.Qd2 Nc6 10.dxc5 Qxc5" + }, + "C15a": { + "eco": "C15a", + "fen": "rnbqk1nr/ppp2ppp/4p3/3p4/1b1PP3/2N5/PPP2PPP/R1BQKBNR w KQkq - 2 4", + "hash": 9710347368368175195, + "name": "French: Winawer" + }, + "C15b": { + "eco": "C15b", + "fen": "rnbqk1nr/ppp2ppp/4p3/3P4/1b1P4/2N5/PPP2PPP/R1BQKBNR b KQkq - 0 4", + "hash": 11609469732215110237, + "name": "French: Winawer, 4.exd5" + }, + "C15c": { + "eco": "C15c", + "fen": "rnbqk1nr/ppp2ppp/4p3/3p4/1b1PP1Q1/2N5/PPP2PPP/R1B1KBNR b KQkq - 3 4", + "hash": 15238043504670974550, + "name": "French: Winawer, 4.Qg4" + }, + "C15d": { + "eco": "C15d", + "fen": "rnbqk1nr/ppp2ppp/4p3/3p4/1b1PP3/2NQ4/PPP2PPP/R1B1KBNR b KQkq - 3 4", + "hash": 2784836141545253164, + "name": "French: Winawer, 4.Qd3" + }, + "C15e": { + "eco": "C15e", + "fen": "rnbqk1nr/ppp2ppp/4p3/3p4/1b1PP3/2NB4/PPP2PPP/R1BQK1NR b KQkq - 3 4", + "hash": 15262616509918951976, + "name": "French: Winawer, 4.Bd3" + }, + "C15f": { + "eco": "C15f", + "fen": "rnbqk1nr/pp3ppp/4p3/2pp4/1b1PP3/2NB4/PPP2PPP/R1BQK1NR w KQkq c6 0 5", + "hash": 3872644292031557973, + "name": "French: Winawer, 4.Bd3 c5" + }, + "C15g": { + "eco": "C15g", + "fen": "rnbqk1nr/ppp2ppp/4p3/8/1b1Pp3/2NB4/PPP2PPP/R1BQK1NR w KQkq - 0 5", + "hash": 1965024985059854968, + "name": "French: Winawer, 4.Bd3 dxe4" + }, + "C15h": { + "eco": "C15h", + "fen": "rnbqk1nr/ppp2ppp/4p3/3p4/1b1PP3/2N5/PPPB1PPP/R2QKBNR b KQkq - 3 4", + "hash": 12632403227914703711, + "name": "French: Winawer, Mller-Zhuravlev Gambit" + }, + "C15i": { + "eco": "C15i", + "fen": "rnbqk1nr/ppp2ppp/4p3/8/1b1Pp1Q1/2N5/PPPB1PPP/R3KBNR b KQkq - 1 5", + "hash": 3638805597610342658, + "name": "French: Winawer, Mller-Zhuravlev Gambit, 5.Qg4" + }, + "C15j": { + "eco": "C15j", + "fen": "rnbqk2r/ppp2ppp/4pn2/8/1b1Pp1Q1/2N5/PPPB1PPP/R3KBNR w KQkq - 2 6", + "hash": 7607026845615011988, + "name": "French: Winawer, Mller-Zhuravlev Gambit, 5.Qg4 Nf6" + }, + "C15k": { + "eco": "C15k", + "fen": "rnbqk1nr/ppp2ppp/4p3/3p4/1b1PP3/P1N5/1PP2PPP/R1BQKBNR b KQkq - 0 4", + "hash": 5574933373408212507, + "name": "French: Winawer, 4.a3" + }, + "C15l": { + "eco": "C15l", + "fen": "rnbqk1nr/ppp2ppp/4p3/8/3Pp3/P1P2P2/2P3PP/R1BQKBNR b KQkq - 0 6", + "hash": 9334075619679442032, + "name": "French: Winawer, Winkelmann-Reimer Gambit (WRG)" + }, + "C15m": { + "eco": "C15m", + "fen": "rnbqk1nr/ppp2ppp/4p3/8/3Pp1Q1/P1P5/2P2PPP/R1B1KBNR b KQkq - 1 6", + "hash": 13439542613133566220, + "name": "French: Winawer, 4.a3 Bxc3+ 5.bxc3 dxe4 6.Qg4" + }, + "C15n": { + "eco": "C15n", + "fen": "rnbqk1nr/ppp2ppp/4p3/3p4/1b1PP3/2N5/PPP1NPPP/R1BQKB1R b KQkq - 3 4", + "hash": 10549399229582865829, + "name": "French: Winawer, Alekhine Gambit" + }, + "C15o": { + "eco": "C15o", + "fen": "rnbqk2r/ppp2ppp/4pn2/3p4/1b1PP3/2N5/PPP1NPPP/R1BQKB1R w KQkq - 4 5", + "hash": 14522079380670952499, + "name": "French: Winawer, Alekhine Gambit, 4...Nf6" + }, + "C15p": { + "eco": "C15p", + "fen": "r1bqk1nr/ppp2ppp/2n1p3/3p4/1b1PP3/2N5/PPP1NPPP/R1BQKB1R w KQkq - 4 5", + "hash": 4146450036366069926, + "name": "French: Winawer, Alekhine Gambit, 4...Nc6" + }, + "C15q": { + "eco": "C15q", + "fen": "rnbqk1nr/ppp2ppp/4p3/8/1b1Pp3/2N5/PPP1NPPP/R1BQKB1R w KQkq - 0 5", + "hash": 6551719022309230069, + "name": "French: Winawer, Alekhine Gambit Accepted" + }, + "C15r": { + "eco": "C15r", + "fen": "r1bqk1nr/ppp2ppp/2n1p3/8/3Pp3/P1N5/1PP2PPP/R1BQKB1R w KQkq - 1 7", + "hash": 13639927443468212147, + "name": "French: Winawer, Alekhine Gambit, Kan Variation" + }, + "C15s": { + "eco": "C15s", + "fen": "r1bqk1nr/ppp2ppp/2n1p3/1B6/3Pp3/P1N5/1PP2PPP/R1BQK2R b KQkq - 2 7", + "hash": 10273854316944213040, + "name": "French: Winawer, Alekhine Gambit, Kan, 7.Bb5" + }, + "C15t": { + "eco": "C15t", + "fen": "rnbqk1nr/ppp1bppp/4p3/8/3Pp3/P1N5/1PP1NPPP/R1BQKB1R w KQkq - 1 6", + "hash": 12982590027536935439, + "name": "French: Winawer, Alekhine Gambit, 5.a3 Be7" + }, + "C15u": { + "eco": "C15u", + "fen": "rnbqk2r/ppp1bppp/4pn2/8/3PN3/P7/1PP1NPPP/R1BQKB1R w KQkq - 1 7", + "hash": 4974057419451857422, + "name": "French: Winawer, Alekhine Gambit, 5.a3 Be7 6.Nxe4 Nf6" + }, + "C15v": { + "eco": "C15v", + "fen": "rnbqk2r/ppp1bppp/4pn2/8/3PN3/P2Q4/1PP1NPPP/R1B1KB1R b KQkq - 2 7", + "hash": 16528432811738164089, + "name": "French: Winawer, Alekhine Gambit, 5.a3 Be7 6.Nxe4 Nf6 7.Qd3" + }, + "C16a": { + "eco": "C16a", + "fen": "rnbqk1nr/ppp2ppp/4p3/3pP3/1b1P4/2N5/PPP2PPP/R1BQKBNR b KQkq - 0 4", + "hash": 16697943921311211071, + "name": "French: Winawer, Advance Variation" + }, + "C16b": { + "eco": "C16b", + "fen": "rnbqk1nr/p1p2ppp/1p2p3/3pP3/1b1P4/2N5/PPP2PPP/R1BQKBNR w KQkq - 0 5", + "hash": 10147254918988589476, + "name": "French: Winawer, 4.e5 b6" + }, + "C16c": { + "eco": "C16c", + "fen": "rnbqk1nr/p1p2ppp/1p2p3/3pP3/1b1P2Q1/2N5/PPP2PPP/R1B1KBNR b KQkq - 1 5", + "hash": 15665833120421196713, + "name": "French: Winawer, 4.e5 b6 5.Qg4" + }, + "C16d": { + "eco": "C16d", + "fen": "rnbqkbnr/p1p2ppp/1p2p3/3pP1B1/3P2Q1/2N5/PPP2PPP/R3KBNR b KQkq - 3 6", + "hash": 15452701378777718851, + "name": "French: Winawer, 4.e5 b6 5.Qg4 Bf8 6.Bg5" + }, + "C16e": { + "eco": "C16e", + "fen": "rnbqk1nr/p1p2ppp/1p2p3/3pP3/1b1P4/P1N5/1PP2PPP/R1BQKBNR b KQkq - 0 5", + "hash": 5138180222111901668, + "name": "French: Winawer, 4.e5 b6 5.a3" + }, + "C16f": { + "eco": "C16f", + "fen": "rnb1k1nr/pppq1ppp/4p3/3pP3/1b1P4/2N5/PPP2PPP/R1BQKBNR w KQkq - 1 5", + "hash": 18025734818440088432, + "name": "French: Winawer, Petrosian Variation" + }, + "C16g": { + "eco": "C16g", + "fen": "rnb1k1nr/pppq1ppp/4p3/3pP3/1b1P4/2N5/PPPB1PPP/R2QKBNR b KQkq - 2 5", + "hash": 15250627485430341748, + "name": "French: Winawer, Petrosian, 5.Bd2" + }, + "C16h": { + "eco": "C16h", + "fen": "rnb1k1nr/pppq1ppp/4p3/3pP3/1b1P4/P1N5/1PP2PPP/R1BQKBNR b KQkq - 0 5", + "hash": 3581618953795896624, + "name": "French: Winawer, Petrosian, 5.a3" + }, + "C16i": { + "eco": "C16i", + "fen": "rnb1k1nr/p1pq1ppp/1p2p3/3pP3/3P4/P1P5/2P2PPP/R1BQKBNR w KQkq - 0 7", + "hash": 3472608813082251233, + "name": "French: Winawer, Petrosian, 5.a3 Bxc3+ 6.bxc3 b6" + }, + "C16j": { + "eco": "C16j", + "fen": "rnbqk2r/ppp1nppp/4p3/3pP3/1b1P4/2N5/PPP2PPP/R1BQKBNR w KQkq - 1 5", + "hash": 15705388062260090242, + "name": "French: Winawer, Advance, 4...Ne7" + }, + "C16k": { + "eco": "C16k", + "fen": "rnbqk2r/ppp1nppp/4p3/3pP3/1b1P4/2N5/PPPB1PPP/R2QKBNR b KQkq - 2 5", + "hash": 17328133442768813702, + "name": "French: Winawer, Advance, 4...Ne7 5.Bd2" + }, + "C16l": { + "eco": "C16l", + "fen": "rnbqk2r/p1p1nppp/1p2p3/3pP3/1b1P4/2N5/PPPB1PPP/R2QKBNR w KQkq - 0 6", + "hash": 11173620470955018525, + "name": "French: Winawer, Advance, 4...Ne7 5.Bd2 b6" + }, + "C16m": { + "eco": "C16m", + "fen": "rnbqk2r/ppp1nppp/4p3/3pP3/1b1P4/P1N5/1PP2PPP/R1BQKBNR b KQkq - 0 5", + "hash": 1326466345866419138, + "name": "French: Winawer, Advance, 4...Ne7 5.a3" + }, + "C16n": { + "eco": "C16n", + "fen": "rnbqk2r/p1p1nppp/1p2p3/3pP3/3P4/P1P5/2P2PPP/R1BQKBNR w KQkq - 0 7", + "hash": 1436039402299576595, + "name": "French: Winawer, Advance, 4...Ne7 5.a3 Bxc3+ 6.bxc3 b6" + }, + "C16o": { + "eco": "C16o", + "fen": "rnbqk2r/p1p1nppp/1p2p3/3pP3/3P2Q1/P1P5/2P2PPP/R1B1KBNR b KQkq - 1 7", + "hash": 5068700863596366622, + "name": "French: Winawer, Advance, 4...Ne7 5.a3 Bxc3+ 6.bxc3 b6 7.Qg4" + }, + "C17a": { + "eco": "C17a", + "fen": "rnbqk1nr/pp3ppp/4p3/2ppP3/1b1P4/2N5/PPP2PPP/R1BQKBNR w KQkq c6 0 5", + "hash": 129146609016689986, + "name": "French: Winawer, Advance, 4...c5" + }, + "C17b": { + "eco": "C17b", + "fen": "rnbqk1nr/pp3ppp/4p3/2PpP3/1b6/2N5/PPP2PPP/R1BQKBNR b KQkq - 0 5", + "hash": 9091062274952430126, + "name": "French: Winawer, Advance, 5.dxc5" + }, + "C17c": { + "eco": "C17c", + "fen": "rnbqk1nr/pp3ppp/4p3/2ppP3/1b1P2Q1/2N5/PPP2PPP/R1B1KBNR b KQkq - 1 5", + "hash": 6084539597394906959, + "name": "French: Winawer, Russian Variation" + }, + "C17d": { + "eco": "C17d", + "fen": "rnbqk2r/pp2nppp/4p3/2PpP3/1b4Q1/2N5/PPP2PPP/R1B1KBNR b KQkq - 0 6", + "hash": 1575203151195165598, + "name": "French: Winawer, Russian, 6.dxc5" + }, + "C17e": { + "eco": "C17e", + "fen": "rnbqk1nr/pp3ppp/4p3/2ppP3/1b1P4/2N5/PPPB1PPP/R2QKBNR b KQkq - 1 5", + "hash": 2902438695036763718, + "name": "French: Winawer, Bogoljubow Variation" + }, + "C17f": { + "eco": "C17f", + "fen": "rnbqk1nr/pp3ppp/4p3/3pP3/1b1p4/2N5/PPPB1PPP/R2QKBNR w KQkq - 0 6", + "hash": 8599960664703227776, + "name": "French: Winawer, Bogoljubow, 5...cxd4" + }, + "C17g": { + "eco": "C17g", + "fen": "rnbqk2r/pp2nppp/4p3/2ppP3/1b1P4/2N5/PPPB1PPP/R2QKBNR w KQkq - 2 6", + "hash": 1587576181556393467, + "name": "French: Winawer, Bogoljubow, 5...Ne7" + }, + "C17h": { + "eco": "C17h", + "fen": "rnbqk2r/pp2nppp/4p3/2ppP3/1b1P4/P1N5/1PPB1PPP/R2QKBNR b KQkq - 0 6", + "hash": 15966392104323038139, + "name": "French: Winawer, Bogoljubow, 5...Ne7 6.a3" + }, + "C17i": { + "eco": "C17i", + "fen": "rnbqk2r/pp2nppp/4p3/2PpP3/1b6/2N5/PPPB1PPP/R2QKBNR b KQkq - 0 6", + "hash": 7632219217056916119, + "name": "French: Winawer, Bogoljubow, 5...Ne7 6.dxc5" + }, + "C17j": { + "eco": "C17j", + "fen": "rnbqk2r/pp2nppp/4p3/1NppP3/1b1P4/8/PPPB1PPP/R2QKBNR b KQkq - 3 6", + "hash": 16347643775249588993, + "name": "French: Winawer, Bogoljubow, 5...Ne7 6.Nb5" + }, + "C17k": { + "eco": "C17k", + "fen": "rnbqk1nr/pp3ppp/4p3/2ppP3/1b1P4/P1N5/1PP2PPP/R1BQKBNR b KQkq - 0 5", + "hash": 14580090494323153666, + "name": "French: Winawer, 5.a3" + }, + "C17l": { + "eco": "C17l", + "fen": "rnbqk1nr/pp3ppp/4p3/3pP3/1b1p4/P1N5/1PP2PPP/R1BQKBNR w KQkq - 0 6", + "hash": 10756945820698424004, + "name": "French: Winawer, 5.a3 cxd4" + }, + "C17m": { + "eco": "C17m", + "fen": "rnbqk1nr/pp3ppp/4p3/b1ppP3/3P4/P1N5/1PP2PPP/R1BQKBNR w KQkq - 1 6", + "hash": 16824020821423580688, + "name": "French: Winawer, Swiss Variation" + }, + "C17n": { + "eco": "C17n", + "fen": "rnbqk1nr/pp3ppp/4p3/b1ppP3/1P1P4/P1N5/2P2PPP/R1BQKBNR b KQkq b3 0 6", + "hash": 4868277260631411252, + "name": "French: Winawer, Swiss, 6.b4" + }, + "C17o": { + "eco": "C17o", + "fen": "rnbqk1nr/pp3ppp/4p3/b2pP3/1P1p2Q1/P1N5/2P2PPP/R1B1KBNR b KQkq - 1 7", + "hash": 5272396830940805631, + "name": "French: Winawer, Swiss, 6.b4 cxd4 7.Qg4" + }, + "C17p": { + "eco": "C17p", + "fen": "rnbqk2r/pp2nppp/4p3/P2pP3/3p2Q1/P1N5/2P2PPP/R1B1KBNR b KQkq - 0 8", + "hash": 16104924106734717571, + "name": "French: Winawer, Swiss, 6.b4 cxd4 7.Qg4 Ne7 8.bxa5" + }, + "C17q": { + "eco": "C17q", + "fen": "rnbqk1nr/pp3ppp/4p3/bN1pP3/1P1p4/P7/2P2PPP/R1BQKBNR b KQkq - 1 7", + "hash": 16737462071277581576, + "name": "French: Winawer, Swiss, 6.b4 cxd4 7.Nb5" + }, + "C17r": { + "eco": "C17r", + "fen": "rnbqk1nr/ppb2ppp/4p3/1N1pP3/1P1p1P2/P7/2P3PP/R1BQKBNR b KQkq f3 0 8", + "hash": 1193641189412292337, + "name": "French: Winawer, Swiss, 6.b4 cxd4 7.Nb5 Bc7 8.f4" + }, + "C17s": { + "eco": "C17s", + "fen": "rn1qk1nr/ppbb1ppp/4p3/1N1pP3/1P1p1P2/P7/2P3PP/R1BQKBNR w KQkq - 1 9", + "hash": 17460829609509197504, + "name": "French: Winawer, Swiss, 6.b4 cxd4 7.Nb5 Bc7 8.f4 Bd7" + }, + "C18a": { + "eco": "C18a", + "fen": "rnbqk1nr/pp3ppp/4p3/2ppP3/3P4/P1b5/1PP2PPP/R1BQKBNR w KQkq - 0 6", + "hash": 16964945482773563656, + "name": "French: Winawer, 5...Bxc3+" + }, + "C18b": { + "eco": "C18b", + "fen": "rnb1k1nr/pp3ppp/4p3/q1ppP3/3P4/P1P5/2P2PPP/R1BQKBNR w KQkq - 1 7", + "hash": 8775659020766201799, + "name": "French: Winawer, 6...Qa5" + }, + "C18c": { + "eco": "C18c", + "fen": "rnb1k1nr/ppq2ppp/4p3/2ppP3/3P4/P1P5/2P2PPP/R1BQKBNR w KQkq - 1 7", + "hash": 12008229486823844169, + "name": "French: Winawer, 6...Qc7" + }, + "C18d": { + "eco": "C18d", + "fen": "rnb1k1nr/ppq2ppp/4p3/2ppP3/3P2Q1/P1P5/2P2PPP/R1B1KBNR b KQkq - 2 7", + "hash": 17518931865399391044, + "name": "French: Winawer, 6...Qc7 7.Qg4" + }, + "C18e": { + "eco": "C18e", + "fen": "rnb1k1nr/ppq3pp/4p3/2ppPp2/3P2Q1/P1P5/2P2PPP/R1B1KBNR w KQkq f6 0 8", + "hash": 13228368797871252968, + "name": "French: Winawer, 6...Qc7 7.Qg4 f5" + }, + "C18f": { + "eco": "C18f", + "fen": "rnbqk2r/pp2nppp/4p3/2ppP3/3P4/P1P5/2P2PPP/R1BQKBNR w KQkq - 1 7", + "hash": 11454147557610188277, + "name": "French: Winawer, 6...Ne7" + }, + "C18g": { + "eco": "C18g", + "fen": "rnbqk2r/pp2nppp/4p3/2ppP3/3P3P/P1P5/2P2PP1/R1BQKBNR b KQkq h3 0 7", + "hash": 168553680629142667, + "name": "French: Winawer, 6...Ne7 7.h4" + }, + "C18h": { + "eco": "C18h", + "fen": "rnb1k2r/ppq1nppp/4p3/2ppP3/3P3P/P1P5/2P2PP1/R1BQKBNR w KQkq - 1 8", + "hash": 309039237673999242, + "name": "French: Winawer, 6...Ne7 7.h4 Qc7" + }, + "C18i": { + "eco": "C18i", + "fen": "r1bqk2r/pp2nppp/2n1p3/2ppP3/3P3P/P1P5/2P2PP1/R1BQKBNR w KQkq - 1 8", + "hash": 12230380551280636296, + "name": "French: Winawer, 6...Ne7 7.h4 Nbc6" + }, + "C18j": { + "eco": "C18j", + "fen": "rnbqk2r/pp2nppp/4p3/2ppP3/3P2Q1/P1P5/2P2PPP/R1B1KBNR b KQkq - 2 7", + "hash": 14649994266338932728, + "name": "French: Winawer, 6...Ne7 7.Qg4" + }, + "C18k": { + "eco": "C18k", + "fen": "r1bqk2r/pp2nppp/2n1p3/2ppP3/3P2Q1/P1P5/2P2PPP/R1B1KBNR w KQkq - 3 8", + "hash": 6963379524183888635, + "name": "French: Winawer, 6...Ne7 7.Qg4 Nbc6" + }, + "C18l": { + "eco": "C18l", + "fen": "rnbq1k1r/pp2nppp/4p3/2ppP3/3P2Q1/P1P5/2P2PPP/R1B1KBNR w KQ - 3 8", + "hash": 16770157345112212272, + "name": "French: Winawer, 6...Ne7 7.Qg4 Kf8" + }, + "C18m": { + "eco": "C18m", + "fen": "rnbqk2r/pp2nppp/4p3/3pP3/3p2Q1/P1P5/2P2PPP/R1B1KBNR w KQkq - 0 8", + "hash": 10687470862511136318, + "name": "French: Winawer, 6...Ne7 7.Qg4 cxd4" + }, + "C18n": { + "eco": "C18n", + "fen": "rnbq1rk1/pp2nppp/4p3/2ppP3/3P2Q1/P1P5/2P2PPP/R1B1KBNR w KQ - 3 8", + "hash": 13972366842723687955, + "name": "French: Winawer, 6...Ne7 7.Qg4 O-O" + }, + "C18o": { + "eco": "C18o", + "fen": "rnbq1rk1/pp2nppp/4p3/2ppP3/3P2Q1/P1PB4/2P2PPP/R1B1K1NR b KQ - 4 8", + "hash": 10730512479701245024, + "name": "French: Winawer, 6...Ne7 7.Qg4 O-O 8.Bd3" + }, + "C18p": { + "eco": "C18p", + "fen": "r1bq1rk1/pp2nppp/2n1p3/2ppP3/3P2Q1/P1PB4/2P2PPP/R1B1K1NR w KQ - 5 9", + "hash": 4541784418312567139, + "name": "French: Winawer, 6...Ne7 7.Qg4 O-O 8.Bd3 Nbc6" + }, + "C18q": { + "eco": "C18q", + "fen": "rnbq1rk1/pp2nppp/4p3/2ppP3/3P2Q1/P1P2N2/2P2PPP/R1B1KB1R b KQ - 4 8", + "hash": 1910438197563473710, + "name": "French: Winawer, 6...Ne7 7.Qg4 O-O 8.Nf3" + }, + "C18r": { + "eco": "C18r", + "fen": "rnb1k2r/ppq1nppp/4p3/2ppP3/3P2Q1/P1P5/2P2PPP/R1B1KBNR w KQkq - 3 8", + "hash": 14794328125498947833, + "name": "French: Winawer, Poisoned Pawn" + }, + "C18s": { + "eco": "C18s", + "fen": "rnb1k1r1/ppq1np1Q/4p3/3pP3/3p4/P1P5/2P2PPP/R1BK1BNR b q - 1 10", + "hash": 10020798859144312777, + "name": "French: Winawer, Poisoned Pawn, Euwe-Gligoric Variation" + }, + "C18t": { + "eco": "C18t", + "fen": "rnb1k1r1/ppq1np1Q/4p3/3pP3/3p4/P1P5/2P1NPPP/R1B1KB1R b KQq - 1 10", + "hash": 14471322945257198201, + "name": "French: Winawer, Poisoned Pawn, Konstantinopolsky Variation" + }, + "C18u": { + "eco": "C18u", + "fen": "r3k1r1/ppqbnp2/2n1p3/3pP3/5P2/P1pQ4/2P1N1PP/R1B1KB1R w KQq - 0 13", + "hash": 9111115702972012863, + "name": "French: Winawer, Poisoned Pawn, Main Line" + }, + "C18v": { + "eco": "C18v", + "fen": "r3k1r1/ppqbnp2/2n1p3/3pP3/5P2/P1NQ4/2P3PP/R1B1KB1R b KQq - 0 13", + "hash": 13412749472561220756, + "name": "French: Winawer, Poisoned Pawn, Main Line, 13.Nxc3" + }, + "C19a": { + "eco": "C19a", + "fen": "rnbqk2r/pp2nppp/4p3/2ppP3/P2P4/2P5/2P2PPP/R1BQKBNR b KQkq - 0 7", + "hash": 14300661530519909234, + "name": "French: Winawer, Smyslov Variation" + }, + "C19b": { + "eco": "C19b", + "fen": "rnb1k2r/pp2nppp/4p3/q1ppP3/P2P4/2P5/2P2PPP/R1BQKBNR w KQkq - 1 8", + "hash": 2235389325527847677, + "name": "French: Winawer, Smyslov, 7...Qa5" + }, + "C19c": { + "eco": "C19c", + "fen": "rnbqk2r/pp2nppp/4p3/2ppP3/3P4/P1P2N2/2P2PPP/R1BQKB1R b KQkq - 2 7", + "hash": 5012966471566167240, + "name": "French: Winawer, 6...Ne7 7.Nf3" + }, + "C19d": { + "eco": "C19d", + "fen": "rnb1k2r/ppq1nppp/4p3/2ppP3/3P4/P1P2N2/2P2PPP/R1BQKB1R w KQkq - 3 8", + "hash": 4868001228601050057, + "name": "French: Winawer, 6...Ne7 7.Nf3 Qc7" + }, + "C19e": { + "eco": "C19e", + "fen": "rnb1k2r/ppq1nppp/4p3/2ppP3/P2P4/2P2N2/2P2PPP/R1BQKB1R b KQkq - 0 8", + "hash": 1949482717210385742, + "name": "French: Winawer, 6...Ne7 7.Nf3 Qc7 8.a4" + }, + "C19f": { + "eco": "C19f", + "fen": "rnb1k2r/p1q1nppp/1p2p3/2ppP3/P2P4/2P2N2/2P2PPP/R1BQKB1R w KQkq - 0 9", + "hash": 8098805988638141141, + "name": "French: Winawer, 6...Ne7 7.Nf3 Qc7 8.a4 b6" + }, + "C19g": { + "eco": "C19g", + "fen": "rnb1k2r/pp2nppp/4p3/q1ppP3/3P4/P1P2N2/2P2PPP/R1BQKB1R w KQkq - 3 8", + "hash": 11304658666467568967, + "name": "French: Winawer, 6...Ne7 7.Nf3 Qa5" + }, + "C19h": { + "eco": "C19h", + "fen": "rnbqk2r/p3nppp/1p2p3/2ppP3/3P4/P1P2N2/2P2PPP/R1BQKB1R w KQkq - 0 8", + "hash": 3384713929566894931, + "name": "French: Winawer, 6...Ne7 7.Nf3 b6" + }, + "C19i": { + "eco": "C19i", + "fen": "rnbqk2r/p3nppp/1p2p3/1BppP3/3P4/P1P2N2/2P2PPP/R1BQK2R b KQkq - 1 8", + "hash": 2100430931238201552, + "name": "French: Winawer, 6...Ne7 7.Nf3 b6 8.Bb5+" + }, + "C19j": { + "eco": "C19j", + "fen": "rn1qk2r/pp1bnppp/4p3/2ppP3/3P4/P1P2N2/2P2PPP/R1BQKB1R w KQkq - 3 8", + "hash": 12056237498922163449, + "name": "French: Winawer, 6...Ne7 7.Nf3 Bd7" + }, + "C19k": { + "eco": "C19k", + "fen": "rn1qk2r/pp1bnppp/4p3/2ppP3/P2P4/2P2N2/2P2PPP/R1BQKB1R b KQkq - 0 8", + "hash": 18434136250379600510, + "name": "French: Winawer, 6...Ne7 7.Nf3 Bd7 8.a4" + }, + "C19l": { + "eco": "C19l", + "fen": "r1bqk2r/pp2nppp/2n1p3/2ppP3/3P4/P1P2N2/2P2PPP/R1BQKB1R w KQkq - 3 8", + "hash": 17184745037589948875, + "name": "French: Winawer, 6...Ne7 7.Nf3 Nbc6" + }, + "C19m": { + "eco": "C19m", + "fen": "r1bqk2r/pp2nppp/2n1p3/2ppP3/P2P4/2P2N2/2P2PPP/R1BQKB1R b KQkq - 0 8", + "hash": 13186280158342707020, + "name": "French: Winawer, 6...Ne7 7.Nf3 Nbc6 8.a4" + }, + "C19n": { + "eco": "C19n", + "fen": "r1b1k2r/pp2nppp/2n1p3/q1ppP3/P2P4/2P2N2/2P2PPP/R1BQKB1R w KQkq - 1 9", + "hash": 8037947504009828035, + "name": "French: Winawer, 6...Ne7 7.Nf3 Nbc6 8.a4 Qa5" + }, + "C19o": { + "eco": "C19o", + "fen": "r3k2r/pp1bnppp/2n1p3/q1ppP3/P2P4/2P2N2/2PQ1PPP/R1B1KB1R w KQkq - 3 10", + "hash": 11913489369632954706, + "name": "French: Winawer, 6...Ne7 7.Nf3 Nbc6 8.a4 Qa5 9.Qd2 Bd7" + }, + "C19p": { + "eco": "C19p", + "fen": "r1b1k2r/pp2nppp/2n1p3/q1ppP3/P2P4/2P2N2/2PB1PPP/R2QKB1R b KQkq - 2 9", + "hash": 5044555081486122439, + "name": "French: Winawer, 6...Ne7 7.Nf3 Nbc6 8.a4 Qa5+ 9.Bd2" + }, + "C19q": { + "eco": "C19q", + "fen": "r3k2r/pp1bnppp/2n1p3/q1ppP3/P2P4/2P2N2/2PB1PPP/R2QKB1R w KQkq - 3 10", + "hash": 11871526328828554742, + "name": "French: Winawer, 6...Ne7 7.Nf3 Nbc6 8.a4 Qa5+ 9.Bd2 Bd7" + }, + "C19r": { + "eco": "C19r", + "fen": "r3k2r/pp1bnppp/2n1p3/qBppP3/P2P4/2P2N2/2PB1PPP/R2QK2R b KQkq - 4 10", + "hash": 10889409106084462197, + "name": "French: Winawer, 6...Ne7 7.Nf3 Nbc6 8.a4 Qa5+ 9.Bd2 Bd7 10.Bb5" + }, + "C20": { + "eco": "C20", + "fen": "rnbqkbnr/pppp1ppp/8/4p3/4P3/8/PPPP1PPP/RNBQKBNR w KQkq e6 0 2", + "hash": 595762792459712928, + "name": "Open Game" + }, + "C21": { + "eco": "C21", + "fen": "rnbqkbnr/pppp1ppp/8/4p3/3PP3/8/PPP2PPP/RNBQKBNR b KQkq d3 0 2", + "hash": 14803820916378539234, + "name": "Centre Game" + }, + "C22": { + "eco": "C22", + "fen": "rnbqkbnr/pppp1ppp/8/8/3QP3/8/PPP2PPP/RNB1KBNR b KQkq - 0 3", + "hash": 3150446019692949450, + "name": "Centre Game" + }, + "C23": { + "eco": "C23", + "fen": "rnbqkbnr/pppp1ppp/8/4p3/2B1P3/8/PPPP1PPP/RNBQK1NR b KQkq - 1 2", + "hash": 7779729978194095878, + "name": "Bishop's Opening" + }, + "C24": { + "eco": "C24", + "fen": "rnbqkb1r/pppp1ppp/5n2/4p3/2B1P3/8/PPPP1PPP/RNBQK1NR w KQkq - 2 3", + "hash": 3465823137605430928, + "name": "Bishop's Opening: Berlin Defence" + }, + "C25a": { + "eco": "C25a", + "fen": "rnbqkbnr/pppp1ppp/8/4p3/4P3/2N5/PPPP1PPP/R1BQKBNR b KQkq - 1 2", + "hash": 17569540196579818361, + "name": "Vienna Game" + }, + "C25b": { + "eco": "C25b", + "fen": "rnbqk1nr/pppp1ppp/8/4p3/1b2P3/2N5/PPPP1PPP/R1BQKBNR w KQkq - 2 3", + "hash": 4220685110361584475, + "name": "Vienna: 2...Bb4" + }, + "C25c": { + "eco": "C25c", + "fen": "rnbqkbnr/ppp2ppp/3p4/4p3/4P3/2N5/PPPP1PPP/R1BQKBNR w KQkq - 0 3", + "hash": 14585221688182338068, + "name": "Vienna: 2...d6" + }, + "C25d": { + "eco": "C25d", + "fen": "rnbqk1nr/pppp1ppp/8/2b1p3/4P3/2N5/PPPP1PPP/R1BQKBNR w KQkq - 2 3", + "hash": 6831626260345836026, + "name": "Vienna: 2...Bc5" + }, + "C25e": { + "eco": "C25e", + "fen": "rnbqk1nr/pppp1ppp/8/2b1p3/2B1P3/2N5/PPPP1PPP/R1BQK1NR b KQkq - 3 3", + "hash": 4430833721526388572, + "name": "Vienna: 2...Bc5 3.Bc4" + }, + "C25f": { + "eco": "C25f", + "fen": "rnbqk1nr/pppp1ppp/8/2b1p3/4P3/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 3 3", + "hash": 9631549326434152647, + "name": "Vienna: 2...Bc5 3.Nf3" + }, + "C25g": { + "eco": "C25g", + "fen": "r1bqkbnr/pppp1ppp/2n5/4p3/4P3/2N5/PPPP1PPP/R1BQKBNR w KQkq - 2 3", + "hash": 6358611373085662842, + "name": "Vienna: 2...Nc6" + }, + "C25h": { + "eco": "C25h", + "fen": "r1bqkbnr/pppp1ppp/2n5/4p3/4P3/2N3P1/PPPP1P1P/R1BQKBNR b KQkq - 0 3", + "hash": 8419734707596445250, + "name": "Vienna: Paulsen Variation" + }, + "C25i": { + "eco": "C25i", + "fen": "r1bqk1nr/pppp1ppp/2n5/2b1p3/4P3/2N3P1/PPPP1P1P/R1BQKBNR w KQkq - 1 4", + "hash": 15692137870060072129, + "name": "Vienna: Paulsen, 3...Bc5" + }, + "C25j": { + "eco": "C25j", + "fen": "r1bqkbnr/pppp1ppp/2n5/4p3/2B1P3/2N5/PPPP1PPP/R1BQK1NR b KQkq - 3 3", + "hash": 4291340499278907612, + "name": "Vienna: 2...Nc6 3.Bc4" + }, + "C25k": { + "eco": "C25k", + "fen": "r1bqk1nr/pppp1ppp/2n5/2b1p3/2B1P3/2NP4/PPP2PPP/R1BQK1NR b KQkq - 0 4", + "hash": 4049968600820619659, + "name": "Vienna: 2...Nc6 3.Bc4 Bc5 4.d3" + }, + "C25l": { + "eco": "C25l", + "fen": "r1bqk1nr/pppp1ppp/2n5/2b1p3/2B1P1Q1/2N5/PPPP1PPP/R1B1K1NR b KQkq - 5 4", + "hash": 14063283166468241490, + "name": "Vienna: 2...Nc6 3.Bc4 Bc5 4.Qg4" + }, + "C25m": { + "eco": "C25m", + "fen": "r1bqkbnr/pppp1ppp/2n5/4p3/4PP2/2N5/PPPP2PP/R1BQKBNR b KQkq f3 0 3", + "hash": 11900812969276515315, + "name": "Vienna: 2...Nc6 3.f4" + }, + "C25n": { + "eco": "C25n", + "fen": "r1bqkbnr/pppp1ppp/2n5/8/3PPp2/2N5/PPP3PP/R1BQKBNR b KQkq d3 0 4", + "hash": 9914458403282913637, + "name": "Vienna: Steinitz Gambit" + }, + "C25o": { + "eco": "C25o", + "fen": "r1b1kbnr/ppp2ppp/2n5/3p4/3PPp1q/2N5/PPP1K1PP/R1BQ1BNR w kq d6 0 6", + "hash": 7318372330597714294, + "name": "Vienna: Steinitz Gambit, Zukertort Defence" + }, + "C25p": { + "eco": "C25p", + "fen": "r1bqkbnr/pppp1ppp/2n5/8/4Pp2/2N2N2/PPPP2PP/R1BQKB1R b KQkq - 1 4", + "hash": 10936701698831271194, + "name": "Vienna: 2...Nc6 3.f4 exf4 4.Nf3" + }, + "C25q": { + "eco": "C25q", + "fen": "r1bqkbnr/pppp1p1p/2n5/6p1/4Pp1P/2N2N2/PPPP2P1/R1BQKB1R b KQkq h3 0 5", + "hash": 10026865223252853742, + "name": "Vienna: Hamppe-Allgaier Gambit" + }, + "C25r": { + "eco": "C25r", + "fen": "r1bqkbnr/pppp1p1p/2n5/6p1/3PPp2/2N2N2/PPP3PP/R1BQKB1R b KQkq d3 0 5", + "hash": 15181677536074667986, + "name": "Vienna: Pierce Gambit" + }, + "C26a": { + "eco": "C26a", + "fen": "rnbqkb1r/pppp1ppp/5n2/4p3/4P3/2N5/PPPP1PPP/R1BQKBNR w KQkq - 2 3", + "hash": 12123056109416905455, + "name": "Vienna: 2...Nf6" + }, + "C26b": { + "eco": "C26b", + "fen": "rnbqkb1r/pppp1ppp/5n2/4p3/4P3/2NP4/PPP2PPP/R1BQKBNR b KQkq - 0 3", + "hash": 475548229106975035, + "name": "Vienna: 2...Nf6 3.d3" + }, + "C26c": { + "eco": "C26c", + "fen": "rnbqkb1r/pppp1ppp/5n2/4p3/4P3/2N3P1/PPPP1P1P/R1BQKBNR b KQkq - 0 3", + "hash": 9573249886271021783, + "name": "Vienna: Smyslov Variation" + }, + "C26d": { + "eco": "C26d", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/4P3/2N3P1/PPPP1P1P/R1BQKBNR w KQkq - 1 4", + "hash": 3402149487322990548, + "name": "Vienna: Smyslov, 3...Nc6" + }, + "C26e": { + "eco": "C26e", + "fen": "rnbqk2r/pppp1ppp/5n2/2b1p3/4P3/2N3P1/PPPP1P1P/R1BQKBNR w KQkq - 1 4", + "hash": 3010164144072116308, + "name": "Vienna: Smyslov, 3...Bc5" + }, + "C26f": { + "eco": "C26f", + "fen": "rnbqk2r/ppp2ppp/3p1n2/2b1p3/4P3/2N3P1/PPPP1PBP/R1BQK1NR w KQkq - 0 5", + "hash": 11929179218499131712, + "name": "Vienna: Smyslov, 3...Bc5 4.Bg2 d6" + }, + "C26g": { + "eco": "C26g", + "fen": "rnbq1rk1/pppp1ppp/5n2/2b1p3/4P3/2N3P1/PPPP1PBP/R1BQK1NR w KQ - 3 5", + "hash": 10853268959986022854, + "name": "Vienna: Smyslov, 3...Bc5 4.Bg2 O-O" + }, + "C26h": { + "eco": "C26h", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1p3/4P3/2N3P1/PPPP1PBP/R1BQK1NR w KQkq - 3 5", + "hash": 4025017161657693486, + "name": "Vienna: Smyslov, 3...Bc5 4.Bg2 Nc6" + }, + "C26i": { + "eco": "C26i", + "fen": "rnbqkb1r/ppp2ppp/5n2/3pp3/4P3/2N3P1/PPPP1P1P/R1BQKBNR w KQkq d6 0 4", + "hash": 121920551549660401, + "name": "Vienna: Smyslov, 3...d5" + }, + "C26j": { + "eco": "C26j", + "fen": "rnbqkb1r/ppp2ppp/8/4p3/8/2n3P1/PPPP1PBP/R1BQK1NR w KQkq - 0 6", + "hash": 4675118587152524688, + "name": "Vienna: Smyslov, 3...d5, 5...Nxc3" + }, + "C26k": { + "eco": "C26k", + "fen": "rnbqk2r/ppp2ppp/3b4/4p3/8/2P3P1/P1PP1PBP/R1BQK1NR w KQkq - 1 7", + "hash": 7443188816161950893, + "name": "Vienna: Smyslov, 3...d5, 5...Nxc3 6.bxc3 Bd6" + }, + "C26l": { + "eco": "C26l", + "fen": "rnbqkb1r/pppp1ppp/5n2/4p3/2B1P3/2N5/PPPP1PPP/R1BQK1NR b KQkq - 3 3", + "hash": 14667673565511265353, + "name": "Vienna: 3.Bc4" + }, + "C26m": { + "eco": "C26m", + "fen": "rnbqk2r/pppp1ppp/5n2/4p3/1bB1P3/2N5/PPPP1PPP/R1BQK1NR w KQkq - 4 4", + "hash": 202488687246206059, + "name": "Vienna: 3.Bc4 Bb4" + }, + "C26n": { + "eco": "C26n", + "fen": "rnbqk2r/pppp1ppp/5n2/4p3/1bB1P3/2N2N2/PPPP1PPP/R1BQK2R b KQkq - 5 4", + "hash": 15684786898029380950, + "name": "Vienna: 3.Bc4 Bb4 4.Nf3" + }, + "C26o": { + "eco": "C26o", + "fen": "rnbq1rk1/pppp1ppp/5n2/4p3/1bB1P3/2N2N2/PPPP1PPP/R1BQK2R w KQ - 6 5", + "hash": 15205105768369482941, + "name": "Vienna: 3.Bc4 Bb4 4.Nf3 O-O" + }, + "C26p": { + "eco": "C26p", + "fen": "rnbqk2r/pppp1ppp/5n2/2b1p3/2B1P3/2N5/PPPP1PPP/R1BQK1NR w KQkq - 4 4", + "hash": 7391338544970417866, + "name": "Vienna: 3.Bc4 Bc5" + }, + "C26q": { + "eco": "C26q", + "fen": "rnbqk2r/pppp1ppp/5n2/2b1p3/2B1P3/2N2N2/PPPP1PPP/R1BQK2R b KQkq - 5 4", + "hash": 13688589674144802807, + "name": "Vienna: 3.Bc4 Bc5 4.Nf3" + }, + "C26r": { + "eco": "C26r", + "fen": "rnbqk2r/pppp1ppp/5n2/2b1p3/2B1P3/2NP4/PPP2PPP/R1BQK1NR b KQkq - 0 4", + "hash": 14427154875052588318, + "name": "Vienna: 3.Bc4 Bc5 4.d3" + }, + "C26s": { + "eco": "C26s", + "fen": "rnbqk2r/ppp2ppp/3p1n2/2b1p3/2B1P3/2NP4/PPP2PPP/R1BQK1NR w KQkq - 0 5", + "hash": 17405597316835292275, + "name": "Vienna: 3.Bc4 Bc5 4.d3 d6" + }, + "C26t": { + "eco": "C26t", + "fen": "rnbqk2r/ppp2ppp/3p1n2/2b1p3/N1B1P3/3P4/PPP2PPP/R1BQK1NR b KQkq - 1 5", + "hash": 3610184854104012601, + "name": "Vienna: 3.Bc4 Bc5 4.d3 d6 5.Na4" + }, + "C26u": { + "eco": "C26u", + "fen": "rnbqk2r/ppp2ppp/3p1n2/2b1p3/2B1PP2/2NP4/PPP3PP/R1BQK1NR b KQkq f3 0 5", + "hash": 908433581190449658, + "name": "Vienna: 3.Bc4 Bc5 4.d3 d6 5.f4" + }, + "C27a": { + "eco": "C27a", + "fen": "rnbqkb1r/pppp1ppp/8/4p3/2B1n3/2N5/PPPP1PPP/R1BQK1NR w KQkq - 0 4", + "hash": 8518916294944754522, + "name": "Vienna: 3.Bc4 Nxe4" + }, + "C27b": { + "eco": "C27b", + "fen": "rnbqkb1r/pppp1ppp/8/4p3/2B1N3/8/PPPP1PPP/R1BQK1NR b KQkq - 0 4", + "hash": 9763608811742536398, + "name": "Vienna: 3.Bc4 Nxe4 4.Nxe4" + }, + "C27c": { + "eco": "C27c", + "fen": "rnbqkb1r/pppp1ppp/8/4p2Q/2B1n3/2N5/PPPP1PPP/R1B1K1NR b KQkq - 1 4", + "hash": 15435144453556612550, + "name": "Vienna: 3.Bc4 Nxe4 4.Qh5" + }, + "C27d": { + "eco": "C27d", + "fen": "rnbqkb1r/pppp1ppp/3n4/4Q3/2B5/2N5/PPPP1PPP/R1B1K1NR b KQkq - 0 5", + "hash": 15199928399496859756, + "name": "Vienna: 3.Bc4 Nxe4 4.Qh5 Nd6 5.Qxe5+" + }, + "C27e": { + "eco": "C27e", + "fen": "rnbqkb1r/pppp1ppp/3n4/4p2Q/8/1BN5/PPPP1PPP/R1B1K1NR b KQkq - 3 5", + "hash": 13495053409665173008, + "name": "Vienna: 3.Bc4 Nxe4 4.Qh5 Nd6 5.Bb3" + }, + "C27f": { + "eco": "C27f", + "fen": "rnbqk2r/ppppbppp/3n4/4p2Q/8/1BN5/PPPP1PPP/R1B1K1NR w KQkq - 4 6", + "hash": 12647370526901136001, + "name": "Vienna: 3.Bc4 Nxe4 4.Qh5 Nd6 5.Bb3 Be7" + }, + "C27g": { + "eco": "C27g", + "fen": "r1bqk2r/ppppbppp/2nn4/4N2Q/8/1BN5/PPPP1PPP/R1B1K2R b KQkq - 0 7", + "hash": 7011749011887917961, + "name": "Vienna: Alekhine Variation" + }, + "C27h": { + "eco": "C27h", + "fen": "r1bqkb1r/pppp1ppp/2nn4/4p2Q/8/1BN5/PPPP1PPP/R1B1K1NR w KQkq - 4 6", + "hash": 1199601758605009683, + "name": "Vienna: 3.Bc4 Nxe4 4.Qh5 Nd6 5.Bb3 Nc6" + }, + "C27i": { + "eco": "C27i", + "fen": "N1bk1b1r/pp1pq2p/2nn2p1/3Qpp2/8/1B6/PPPP1PPP/R1B1K1NR b KQ - 0 10", + "hash": 12594921459396570235, + "name": "Vienna: Frankenstein-Dracula Variation" + }, + "C27j": { + "eco": "C27j", + "fen": "N1bk1b1r/p2pq2p/1pnn2p1/3Qpp2/8/1B1P4/PPP2PPP/R1B1K1NR b KQ - 0 11", + "hash": 7712322636727312436, + "name": "Vienna: Frankenstein-Dracula, 11.d3" + }, + "C28a": { + "eco": "C28a", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/2B1P3/2N5/PPPP1PPP/R1BQK1NR w KQkq - 4 4", + "hash": 6945627628053072202, + "name": "Vienna: 3.Bc4 Nc6" + }, + "C28b": { + "eco": "C28b", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/2B1PP2/2N5/PPPP2PP/R1BQK1NR b KQkq f3 0 4", + "hash": 11346166744523683011, + "name": "Vienna: 3.Bc4 Nc6 4.f4" + }, + "C28c": { + "eco": "C28c", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/2B1P3/2NP4/PPP2PPP/R1BQK1NR b KQkq - 0 4", + "hash": 14899895838643761822, + "name": "Vienna: 3.Bc4 Nc6 4.d3" + }, + "C28d": { + "eco": "C28d", + "fen": "r1bqk2r/ppppbppp/2n2n2/4p3/2B1P3/2NP4/PPP2PPP/R1BQK1NR w KQkq - 1 5", + "hash": 15711761391465864719, + "name": "Vienna: 3.Bc4 Nc6 4.d3 Be7" + }, + "C28e": { + "eco": "C28e", + "fen": "r1bqkb1r/pppp1ppp/5n2/n3p3/2B1P3/2NP4/PPP2PPP/R1BQK1NR w KQkq - 1 5", + "hash": 11227538363484606612, + "name": "Vienna: 3.Bc4 Nc6 4.d3 Na5" + }, + "C28f": { + "eco": "C28f", + "fen": "r1bqkb1r/pppp1ppp/5n2/n3p3/2B1P3/2NP4/PPP1NPPP/R1BQK2R b KQkq - 2 5", + "hash": 10337117293518593386, + "name": "Vienna: 3.Bc4 Nc6 4.d3 Na5 5.Nge2" + }, + "C28g": { + "eco": "C28g", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1p3/2B1P3/2NP4/PPP2PPP/R1BQK1NR w KQkq - 1 5", + "hash": 7195155755372927005, + "name": "Vienna: 3.Bc4 Nc6 4.d3 Bc5" + }, + "C28h": { + "eco": "C28h", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1p1B1/2B1P3/2NP4/PPP2PPP/R2QK1NR b KQkq - 2 5", + "hash": 11925535382497035221, + "name": "Vienna: 3.Bc4 Nc6 4.d3 Bc5 5.Bg5" + }, + "C28i": { + "eco": "C28i", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1p3/2B1PP2/2NP4/PPP3PP/R1BQK1NR b KQkq f3 0 5", + "hash": 11442565853335086484, + "name": "Vienna: 3.Bc4 Nc6 4.d3 Bc5 5.f4" + }, + "C28j": { + "eco": "C28j", + "fen": "r1bqk2r/ppp2ppp/2np1n2/2b1p3/2B1PP2/2NP1N2/PPP3PP/R1BQK2R b KQkq - 1 6", + "hash": 8940300101471129028, + "name": "Vienna: 3.Bc4 Nc6 4.d3 Bc5 5.f4 d6 6.Nf3" + }, + "C28k": { + "eco": "C28k", + "fen": "r2qk2r/ppp2ppp/2np1n2/2b1p3/2B1PPb1/2NP1N2/PPP3PP/R1BQK2R w KQkq - 2 7", + "hash": 9133750437430051630, + "name": "Vienna: 3.Bc4 Nc6 4.d3 Bc5 5.f4 d6 6.Nf3 Bg4" + }, + "C28l": { + "eco": "C28l", + "fen": "r1bqk2r/1pp2ppp/p1np1n2/2b1p3/2B1PP2/2NP1N2/PPP3PP/R1BQK2R w KQkq - 0 7", + "hash": 12602657669538624792, + "name": "Vienna: 3.Bc4 Nc6 4.d3 Bc5 5.f4 d6 6.Nf3 a6" + }, + "C28m": { + "eco": "C28m", + "fen": "r1bqk2r/pppp1ppp/2n2n2/4p3/1bB1P3/2NP4/PPP2PPP/R1BQK1NR w KQkq - 1 5", + "hash": 542254207757548220, + "name": "Vienna: 3.Bc4 Nc6 4.d3 Bb4" + }, + "C28n": { + "eco": "C28n", + "fen": "r1bqk2r/pppp1ppp/2n2n2/4p3/1bB1P3/2NP1N2/PPP2PPP/R1BQK2R b KQkq - 2 5", + "hash": 15916448557704354689, + "name": "Vienna: 3.Bc4 Nc6 4.d3 Bb4 5.Nf3" + }, + "C28o": { + "eco": "C28o", + "fen": "r1bqk2r/pppp1ppp/2n2n2/4p1B1/1bB1P3/2NP4/PPP2PPP/R2QK1NR b KQkq - 2 5", + "hash": 13969091144916902260, + "name": "Vienna: 3.Bc4 Nc6 4.d3 Bb4 5.Bg5" + }, + "C28p": { + "eco": "C28p", + "fen": "r1bqk2r/pppp1ppp/2n2n2/4p3/1bB1P3/2NP4/PPP1NPPP/R1BQK2R b KQkq - 2 5", + "hash": 1378825630873974594, + "name": "Vienna: 3.Bc4 Nc6 4.d3 Bb4 5.Ne2" + }, + "C29a": { + "eco": "C29a", + "fen": "rnbqkb1r/pppp1ppp/5n2/4p3/4PP2/2N5/PPPP2PP/R1BQKBNR b KQkq f3 0 3", + "hash": 6137212497766991718, + "name": "Vienna Gambit" + }, + "C29b": { + "eco": "C29b", + "fen": "rnbqkb1r/ppp2ppp/3p1n2/4p3/4PP2/2N5/PPPP2PP/R1BQKBNR w KQkq - 0 4", + "hash": 7823126531819245067, + "name": "Vienna Gambit: 3...d6" + }, + "C29c": { + "eco": "C29c", + "fen": "rnbqkb1r/ppp2ppp/5n2/3pp3/4PP2/2N5/PPPP2PP/R1BQKBNR w KQkq d6 0 4", + "hash": 15006522086982748480, + "name": "Vienna Gambit: 3...d5" + }, + "C29d": { + "eco": "C29d", + "fen": "rnbqkb1r/ppp2ppp/5n2/3Pp3/5P2/2N5/PPPP2PP/R1BQKBNR b KQkq - 0 4", + "hash": 17842956168373619526, + "name": "Vienna Gambit: 3...d5 4.exd5" + }, + "C29e": { + "eco": "C29e", + "fen": "rnbqkb1r/ppp2ppp/5n2/3pp3/4PP2/2NP4/PPP3PP/R1BQKBNR b KQkq - 0 4", + "hash": 9143753658628420244, + "name": "Vienna Gambit: Steinitz Variation" + }, + "C29f": { + "eco": "C29f", + "fen": "rnbqkb1r/ppp2ppp/5n2/3pP3/4P3/2N5/PPPP2PP/R1BQKBNR b KQkq - 0 4", + "hash": 6692042247778991572, + "name": "Vienna Gambit: 4.fxe5" + }, + "C29g": { + "eco": "C29g", + "fen": "rnbqkb1r/ppp2ppp/8/3pP3/4n3/2NP4/PPP3PP/R1BQKBNR b KQkq - 0 5", + "hash": 5750363881038078227, + "name": "Vienna Gambit: Oxford Variation" + }, + "C29h": { + "eco": "C29h", + "fen": "rnbqk2r/ppp2ppp/8/3pP3/1b2n3/2NP4/PPP3PP/R1BQKBNR w KQkq - 1 6", + "hash": 9695137832614832433, + "name": "Vienna Gambit: Oxford, 5...Bb4" + }, + "C29i": { + "eco": "C29i", + "fen": "rnbqkb1r/ppp2ppp/8/3pP3/8/2nP4/PPP3PP/R1BQKBNR w KQkq - 0 6", + "hash": 18249950103731967774, + "name": "Vienna Gambit: Oxford, 5...Nxc3" + }, + "C29j": { + "eco": "C29j", + "fen": "rnbqkb1r/ppp2ppp/8/4P3/3p4/2PP4/P1P3PP/R1BQKBNR w KQkq - 0 7", + "hash": 11302628095554143712, + "name": "Vienna Gambit: Oxford, 5...Nxc3 6.bxc3 d4" + }, + "C29k": { + "eco": "C29k", + "fen": "rnbqkb1r/ppp2ppp/8/3pP3/4n3/2N2Q2/PPPP2PP/R1B1KBNR b KQkq - 1 5", + "hash": 6578595350346402940, + "name": "Vienna Gambit: Paulsen Attack" + }, + "C29l": { + "eco": "C29l", + "fen": "rnbqkb1r/ppp3pp/8/3pPp2/4n3/2N2Q2/PPPP2PP/R1B1KBNR w KQkq f6 0 6", + "hash": 2288102930969254608, + "name": "Vienna Gambit: Paulsen Attack, Bardeleben Variation" + }, + "C29m": { + "eco": "C29m", + "fen": "rnbqkb1r/ppp2ppp/8/3pP3/8/2n2Q2/PPPP2PP/R1B1KBNR w KQkq - 0 6", + "hash": 16844131157307161201, + "name": "Vienna Gambit: Paulsen Attack, 5...Nxc3" + }, + "C29n": { + "eco": "C29n", + "fen": "rnbqkb1r/ppp2ppp/8/3pP3/4n3/2N2N2/PPPP2PP/R1BQKB1R b KQkq - 1 5", + "hash": 4183081372978789370, + "name": "Vienna Gambit: 5.Nf3" + }, + "C29o": { + "eco": "C29o", + "fen": "rn1qkb1r/ppp2ppp/8/3pP3/4n1b1/2N2N2/PPPP2PP/R1BQKB1R w KQkq - 2 6", + "hash": 4097853906954040592, + "name": "Vienna Gambit: 5.Nf3 Bg4" + }, + "C29p": { + "eco": "C29p", + "fen": "rnbqk2r/ppp2ppp/8/3pP3/1b2n3/2N2N2/PPPP2PP/R1BQKB1R w KQkq - 2 6", + "hash": 17531426339519984600, + "name": "Vienna Gambit: 5.Nf3 Bb4" + }, + "C29q": { + "eco": "C29q", + "fen": "r1bqkb1r/ppp2ppp/2n5/3pP3/4n3/2N2N2/PPPP2PP/R1BQKB1R w KQkq - 2 6", + "hash": 10511562860384329465, + "name": "Vienna Gambit: 5.Nf3 Nc6" + }, + "C29r": { + "eco": "C29r", + "fen": "rnbqk2r/ppp1bppp/8/3pP3/4n3/2N2N2/PPPP2PP/R1BQKB1R w KQkq - 2 6", + "hash": 3369037455672973163, + "name": "Vienna Gambit: Breyer Variation" + }, + "C29s": { + "eco": "C29s", + "fen": "rnbqk2r/ppp1bppp/8/3pP3/4n3/2N2N2/PPPPQ1PP/R1B1KB1R b KQkq - 3 6", + "hash": 13314811574445919471, + "name": "Vienna Gambit: Breyer, 6.Qe2" + }, + "C29t": { + "eco": "C29t", + "fen": "rnbqk2r/ppp1bppp/8/3pP3/8/2n2N2/PPPPQ1PP/R1B1KB1R w KQkq - 0 7", + "hash": 742543099918891746, + "name": "Vienna Gambit: Breyer, 6.Qe2 Nxc3" + }, + "C30a": { + "eco": "C30a", + "fen": "rnbqkbnr/pppp1ppp/8/4p3/4PP2/8/PPPP2PP/RNBQKBNR b KQkq f3 0 2", + "hash": 17677453271937418281, + "name": "King's Gambit" + }, + "C30b": { + "eco": "C30b", + "fen": "rnbqkbnr/pp1p1ppp/8/2p1p3/4PP2/8/PPPP2PP/RNBQKBNR w KQkq c6 0 3", + "hash": 1379015976990969684, + "name": "King's Gambit: Mafia Defence" + }, + "C30c": { + "eco": "C30c", + "fen": "rnbqkbnr/ppp2ppp/3p4/4p3/4PP2/8/PPPP2PP/RNBQKBNR w KQkq - 0 3", + "hash": 14765183829305838916, + "name": "King's Gambit: 2...d6" + }, + "C30d": { + "eco": "C30d", + "fen": "rnbqkb1r/pppp1ppp/5n2/4p3/4PP2/8/PPPP2PP/RNBQKBNR w KQkq - 1 3", + "hash": 12591179326086432191, + "name": "King's Gambit: Wade Variation" + }, + "C30e": { + "eco": "C30e", + "fen": "rnb1kbnr/pppp1ppp/5q2/4p3/4PP2/8/PPPP2PP/RNBQKBNR w KQkq - 1 3", + "hash": 17467901442211497924, + "name": "King's Gambit: Norwald Variation" + }, + "C30f": { + "eco": "C30f", + "fen": "rnb1kbnr/pppp1ppp/8/4p3/4PP1q/8/PPPP2PP/RNBQKBNR w KQkq - 1 3", + "hash": 816641234114383063, + "name": "King's Gambit: Keene Defence" + }, + "C30g": { + "eco": "C30g", + "fen": "r1bqkbnr/pppp1ppp/2n5/4p3/4PP2/8/PPPP2PP/RNBQKBNR w KQkq - 1 3", + "hash": 6827235987739124010, + "name": "King's Gambit: 2...Nc6" + }, + "C30h": { + "eco": "C30h", + "fen": "r1bqkbnr/pppp2pp/2n5/4pp2/4PP2/5N2/PPPP2PP/RNBQKB1R w KQkq f6 0 4", + "hash": 1275851967026589129, + "name": "King's Gambit: Adelaide-Wahls Variation" + }, + "C30i": { + "eco": "C30i", + "fen": "r1bqkbnr/pppp2pp/2n5/4pP2/5P2/5N2/PPPP2PP/RNBQKB1R b KQkq - 0 4", + "hash": 18264498741272462350, + "name": "King's Gambit: Adelaide-Wahls, 4.exf5" + }, + "C30j": { + "eco": "C30j", + "fen": "rnbqk1nr/pppp1ppp/8/2b1p3/4PP2/8/PPPP2PP/RNBQKBNR w KQkq - 1 3", + "hash": 6363492045068660394, + "name": "King's Gambit: Classical KGD" + }, + "C30k": { + "eco": "C30k", + "fen": "rnbqk1nr/ppp2ppp/3p4/2b1p3/4PP2/5N2/PPPP2PP/RNBQKB1R w KQkq - 0 4", + "hash": 13443756001824687866, + "name": "KGD: Classical, 3.Nf3 d6" + }, + "C30l": { + "eco": "C30l", + "fen": "rnbqk1nr/ppp2ppp/3p4/2b1p3/4PP2/2N2N2/PPPP2PP/R1BQKB1R b KQkq - 1 4", + "hash": 4685652887650157603, + "name": "KGD: Classical, 3.Nf3 d6 4.Nc3" + }, + "C30m": { + "eco": "C30m", + "fen": "rnbqk2r/ppp2ppp/3p1n2/2b1p3/2B1PP2/2N2N2/PPPP2PP/R1BQK2R b KQkq - 3 5", + "hash": 8744662971765117715, + "name": "KGD: Classical, 3.Nf3 d6 4.Nc3 Nf6 5.Bc4" + }, + "C30n": { + "eco": "C30n", + "fen": "rnbqk1nr/ppp2ppp/3p4/2b1p3/4PP2/2P2N2/PP1P2PP/RNBQKB1R b KQkq - 0 4", + "hash": 14720904078837762428, + "name": "KGD: Classical, 4.c3" + }, + "C30o": { + "eco": "C30o", + "fen": "rnbqk1nr/ppp2ppp/1b1p4/4p3/4PP2/2P2N2/PP1P2PP/RNBQKB1R w KQkq - 1 5", + "hash": 3220073775066882153, + "name": "KGD: Classical, 4.c3 Bb6" + }, + "C30p": { + "eco": "C30p", + "fen": "rnbqk2r/ppp2ppp/3p1n2/2b1p3/4PP2/2P2N2/PP1P2PP/RNBQKB1R w KQkq - 1 5", + "hash": 10927171640945215722, + "name": "KGD: Classical, 4.c3 Nf6" + }, + "C30q": { + "eco": "C30q", + "fen": "rnbqk2r/ppp2ppp/3p1n2/2b1p3/3PPP2/2P2N2/PP4PP/RNBQKB1R b KQkq d3 0 5", + "hash": 5949311304912741800, + "name": "KGD: Classical, 4.c3 Nf6 5.d4" + }, + "C30r": { + "eco": "C30r", + "fen": "rnbqk1nr/ppp3pp/3p4/2b1pp2/4PP2/2P2N2/PP1P2PP/RNBQKB1R w KQkq f6 0 5", + "hash": 6351288074473923746, + "name": "KGD: Classical Countergambit" + }, + "C31": { + "eco": "C31", + "fen": "rnbqkbnr/ppp2ppp/8/3pp3/4PP2/8/PPPP2PP/RNBQKBNR w KQkq d6 0 3", + "hash": 8086437448154991119, + "name": "KGD: Falkbeer Countergambit" + }, + "C32": { + "eco": "C32", + "fen": "rnbqkb1r/ppp2ppp/5n2/3P4/4pP2/3P4/PPP3PP/RNBQKBNR w KQkq - 1 5", + "hash": 10208266178442407357, + "name": "KGD: Falkbeer, 4.d3 Nf6" + }, + "C33": { + "eco": "C33", + "fen": "rnbqkbnr/pppp1ppp/8/8/4Pp2/8/PPPP2PP/RNBQKBNR w KQkq - 0 3", + "hash": 2078644914092671997, + "name": "King's Gambit Accepted (KGA)" + }, + "C34": { + "eco": "C34", + "fen": "rnbqkbnr/pppp1ppp/8/8/4Pp2/5N2/PPPP2PP/RNBQKB1R b KQkq - 1 3", + "hash": 14392440628058055360, + "name": "KGA: King's Knight Gambit" + }, + "C35": { + "eco": "C35", + "fen": "rnbqk1nr/ppppbppp/8/8/4Pp2/5N2/PPPP2PP/RNBQKB1R w KQkq - 2 4", + "hash": 15235760625082125905, + "name": "KGA: Cunningham Defence" + }, + "C36": { + "eco": "C36", + "fen": "rnbqkbnr/ppp2ppp/8/3p4/4Pp2/5N2/PPPP2PP/RNBQKB1R w KQkq d6 0 4", + "hash": 4816065901379497190, + "name": "KGA: Scandinavian (Abbazia) Variation" + }, + "C37": { + "eco": "C37", + "fen": "rnbqkbnr/pppp1p1p/8/6p1/4Pp2/5N2/PPPP2PP/RNBQKB1R w KQkq g6 0 4", + "hash": 5188085897001180490, + "name": "KGA: 3.Nf3 g5" + }, + "C38": { + "eco": "C38", + "fen": "rnbqk1nr/pppp1pbp/8/6p1/2B1Pp2/5N2/PPPP2PP/RNBQK2R w KQkq - 2 5", + "hash": 10732149639755857990, + "name": "KGA: 3.Nf3 g5 4.Bc4 Bg7" + }, + "C39": { + "eco": "C39", + "fen": "rnbqkbnr/pppp1p1p/8/6p1/4Pp1P/5N2/PPPP2P1/RNBQKB1R b KQkq h3 0 4", + "hash": 15806601748439065652, + "name": "KGA: 3.Nf3 g5 4.h4" + }, + "C40a": { + "eco": "C40a", + "fen": "rnbqkbnr/pppp1ppp/8/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2", + "hash": 15213300192948443293, + "name": "Open Game" + }, + "C40b": { + "eco": "C40b", + "fen": "rnb1kbnr/pppp1ppp/5q2/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3", + "hash": 15283214011470682992, + "name": "Open Game: Greco Defence" + }, + "C40c": { + "eco": "C40c", + "fen": "rnb1kbnr/ppppqppp/8/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3", + "hash": 5251092285754341111, + "name": "Open Game: Gunderam Defence" + }, + "C40d": { + "eco": "C40d", + "fen": "rnb1kbnr/ppppqppp/8/4p3/4P3/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 3 3", + "hash": 12918778107637068846, + "name": "Open Game: Gunderam Defence, 3.Nc3" + }, + "C40e": { + "eco": "C40e", + "fen": "rnbqkbnr/ppp2ppp/8/3pp3/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq d6 0 3", + "hash": 6217885557868369595, + "name": "Elephant Gambit" + }, + "C40f": { + "eco": "C40f", + "fen": "rnbqkbnr/ppp2ppp/8/3pN3/4P3/8/PPPP1PPP/RNBQKB1R b KQkq - 0 3", + "hash": 16720080922994029453, + "name": "Elephant Gambit: 3.Nxe5" + }, + "C40g": { + "eco": "C40g", + "fen": "rnbqkbnr/ppp2ppp/8/3Pp3/8/5N2/PPPP1PPP/RNBQKB1R b KQkq - 0 3", + "hash": 8184544333801313469, + "name": "Elephant Gambit: 3.exd5" + }, + "C40h": { + "eco": "C40h", + "fen": "rnbqk1nr/ppp2ppp/3b4/3Pp3/8/5N2/PPPP1PPP/RNBQKB1R w KQkq - 1 4", + "hash": 15406033910881256857, + "name": "Elephant Gambit: Maroczy" + }, + "C40i": { + "eco": "C40i", + "fen": "rnbqkbnr/ppp2ppp/8/3P4/4p3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 0 4", + "hash": 6814908151895952203, + "name": "Elephant Gambit: Paulsen" + }, + "C40j": { + "eco": "C40j", + "fen": "rnbqkbnr/pppp2pp/8/4pp2/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq f6 0 3", + "hash": 5138353693252056387, + "name": "Latvian Gambit" + }, + "C40k": { + "eco": "C40k", + "fen": "rnbqkbnr/pppp2pp/8/4pp2/4P3/3P1N2/PPP2PPP/RNBQKB1R b KQkq - 0 3", + "hash": 16855806415322369687, + "name": "Latvian Gambit: 3.d3" + }, + "C40l": { + "eco": "C40l", + "fen": "rnbqkbnr/pppp2pp/8/4pp2/4P3/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 1 3", + "hash": 13607628299084265370, + "name": "Latvian Gambit: 3.Nc3" + }, + "C40m": { + "eco": "C40m", + "fen": "rnbqkbnr/pppp2pp/8/4pp2/3PP3/5N2/PPP2PPP/RNBQKB1R b KQkq d3 0 3", + "hash": 9401887506335782913, + "name": "Latvian Gambit: 3.d4" + }, + "C40n": { + "eco": "C40n", + "fen": "rnbqkbnr/pppp2pp/8/4pP2/8/5N2/PPPP1PPP/RNBQKB1R b KQkq - 0 3", + "hash": 12358771533762387076, + "name": "Latvian Gambit: 3.exf5" + }, + "C40o": { + "eco": "C40o", + "fen": "rnbqkbnr/pppp2pp/8/4pp2/2B1P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 1 3", + "hash": 2665195696870204389, + "name": "Latvian Gambit: 3.Bc4" + }, + "C40p": { + "eco": "C40p", + "fen": "rnbqkbnr/pppp2pp/8/4p3/2B1p3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 4", + "hash": 16640525040114736174, + "name": "Latvian Gambit: 3.Bc4 fxe4" + }, + "C40q": { + "eco": "C40q", + "fen": "rnb1kbnr/pppp2pp/8/4N1q1/2B1p3/8/PPPP1PPP/RNBQK2R w KQkq - 1 5", + "hash": 1896462434714683624, + "name": "Latvian Gambit: Poisoned Pawn Variation" + }, + "C40r": { + "eco": "C40r", + "fen": "rnbqkbnr/pppp2pp/8/4Np2/4P3/8/PPPP1PPP/RNBQKB1R b KQkq - 0 3", + "hash": 17945979809784156277, + "name": "Latvian Gambit: 3.Nxe5" + }, + "C40s": { + "eco": "C40s", + "fen": "r1bqkbnr/pppp2pp/2n5/4Np2/4P3/8/PPPP1PPP/RNBQKB1R w KQkq - 1 4", + "hash": 5972113319062271350, + "name": "Latvian Gambit: 3.Nxe5 Nc6" + }, + "C40t": { + "eco": "C40t", + "fen": "rnb1kbnr/pppp2pp/5q2/4Np2/4P3/8/PPPP1PPP/RNBQKB1R w KQkq - 1 4", + "hash": 18317389045294764952, + "name": "Latvian Gambit: 3.Nxe5 Qf6" + }, + "C40u": { + "eco": "C40u", + "fen": "rnb1kbnr/pppp2pp/5q2/4Np2/3PP3/8/PPP2PPP/RNBQKB1R b KQkq d3 0 4", + "hash": 4251784953532268250, + "name": "Latvian Gambit: 3.Nxe5 Qf6 4.d4" + }, + "C40v": { + "eco": "C40v", + "fen": "rnb1kbnr/ppp3pp/3p1q2/8/2NPp3/8/PPP1BPPP/RNBQK2R b KQkq - 1 6", + "hash": 18047420649698112786, + "name": "Latvian Gambit: 3.Nxe5 Qf6 4.d4 d6 5.Nc4 fxe4 6.Be2" + }, + "C40w": { + "eco": "C40w", + "fen": "rnb1kbnr/ppp3pp/3p1q2/8/3Pp3/4N3/PPP2PPP/RNBQKB1R b KQkq - 1 6", + "hash": 2331020027700877189, + "name": "Latvian Gambit: Nimzowitsch Variation" + }, + "C40x": { + "eco": "C40x", + "fen": "rnb1kbnr/ppp3pp/3p1q2/8/2NPp3/2N5/PPP2PPP/R1BQKB1R b KQkq - 1 6", + "hash": 8242372566598679912, + "name": "Latvian Gambit: 3.Nxe5 Qf6 4.d4 d6 5.Nc4 fxe4 6.Nc3" + }, + "C41a": { + "eco": "C41a", + "fen": "rnbqkbnr/ppp2ppp/3p4/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 0 3", + "hash": 16905080946651992560, + "name": "Philidor Defence" + }, + "C41b": { + "eco": "C41b", + "fen": "rnbqkbnr/ppp2ppp/3p4/4p3/2B1P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 1 3", + "hash": 9883533824722814806, + "name": "Philidor: 3.Bc4" + }, + "C41c": { + "eco": "C41c", + "fen": "rnbqkbnr/ppp2ppp/3p4/4p3/3PP3/5N2/PPP2PPP/RNBQKB1R b KQkq d3 0 3", + "hash": 3436182914828844210, + "name": "Philidor: 3.d4" + }, + "C41d": { + "eco": "C41d", + "fen": "rnbqkbnr/ppp3pp/3p4/4pp2/3PP3/5N2/PPP2PPP/RNBQKB1R w KQkq f6 0 4", + "hash": 13528990020591653228, + "name": "Philidor: Philidor Countergambit" + }, + "C41e": { + "eco": "C41e", + "fen": "rnbqkbnr/ppp3pp/3p4/4Pp2/4P3/5N2/PPP2PPP/RNBQKB1R b KQkq - 0 4", + "hash": 2836528878181033500, + "name": "Philidor: Philidor Countergambit, 4.dxe5" + }, + "C41f": { + "eco": "C41f", + "fen": "r1bqkbnr/pppn1ppp/3p4/4p3/3PP3/5N2/PPP2PPP/RNBQKB1R w KQkq - 1 4", + "hash": 2039213063597150590, + "name": "Philidor: Hanham Variation" + }, + "C41g": { + "eco": "C41g", + "fen": "r1bqkbnr/pp1n1ppp/2pp4/4p3/2BPP3/5N2/PPP2PPP/RNBQK2R w KQkq - 0 5", + "hash": 17115337461347144803, + "name": "Philidor: Hanham, 4.Bc4 c6" + }, + "C41h": { + "eco": "C41h", + "fen": "rnbqkbnr/ppp2ppp/3p4/8/3pP3/5N2/PPP2PPP/RNBQKB1R w KQkq - 0 4", + "hash": 13029420206032201895, + "name": "Philidor: 3...exd4" + }, + "C41i": { + "eco": "C41i", + "fen": "rnbqkbnr/ppp2ppp/3p4/8/3QP3/5N2/PPP2PPP/RNB1KB1R b KQkq - 0 4", + "hash": 14512528059800307610, + "name": "Philidor: Morphy Variation" + }, + "C41j": { + "eco": "C41j", + "fen": "rnbqkbnr/ppp2ppp/3p4/8/3NP3/8/PPP2PPP/RNBQKB1R b KQkq - 0 4", + "hash": 15223734610017467017, + "name": "Philidor: 3...exd4 4.Nxd4" + }, + "C41k": { + "eco": "C41k", + "fen": "rnbqkb1r/ppp2ppp/3p1n2/8/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 1 5", + "hash": 9848146488601049887, + "name": "Philidor: 3...exd4 4.Nxd4 Nf6" + }, + "C41l": { + "eco": "C41l", + "fen": "rnbqk2r/ppp1bppp/3p1n2/8/2BNP3/2N5/PPP2PPP/R1BQK2R b KQkq - 4 6", + "hash": 307223789322208241, + "name": "Philidor: 3...exd4 4.Nxd4 Nf6 5.Nc3 Be7 6.Bc4" + }, + "C41m": { + "eco": "C41m", + "fen": "rnbqk2r/ppp1bppp/3p1n2/8/3NP3/2N5/PPP1BPPP/R1BQK2R b KQkq - 4 6", + "hash": 1472762538142670836, + "name": "Philidor: Antoshin Variation" + }, + "C41n": { + "eco": "C41n", + "fen": "rnbqkbnr/ppp2p1p/3p2p1/8/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 0 5", + "hash": 4247389930724436162, + "name": "Philidor: Larsen Variation" + }, + "C41o": { + "eco": "C41o", + "fen": "rnbqkb1r/ppp2ppp/3p1n2/4p3/3PP3/5N2/PPP2PPP/RNBQKB1R w KQkq - 1 4", + "hash": 8377243767393615140, + "name": "Philidor: Nimzowitsch Variation" + }, + "C41p": { + "eco": "C41p", + "fen": "rnbqkb1r/ppp2ppp/3p1n2/4P3/4P3/5N2/PPP2PPP/RNBQKB1R b KQkq - 0 4", + "hash": 16779301225419786836, + "name": "Philidor: Exchange Variation" + }, + "C41q": { + "eco": "C41q", + "fen": "rnbqkb1r/ppp2ppp/3p1n2/4p3/3PP3/2N2N2/PPP2PPP/R1BQKB1R b KQkq - 2 4", + "hash": 10364729362061426685, + "name": "Philidor: Nimzowitsch Variation" + }, + "C41r": { + "eco": "C41r", + "fen": "r1bqkb1r/pppn1ppp/3p1n2/4p3/3PP3/2N2N2/PPP2PPP/R1BQKB1R w KQkq - 3 5", + "hash": 13561905476598469169, + "name": "Philidor: Improved Hanham" + }, + "C41s": { + "eco": "C41s", + "fen": "r1bqkb1r/pppn1ppp/3p1n2/4p3/2BPP3/2N2N2/PPP2PPP/R1BQK2R b KQkq - 4 5", + "hash": 16106601822391649431, + "name": "Philidor: Improved Hanham, 5.Bc4" + }, + "C41t": { + "eco": "C41t", + "fen": "r1bqk2r/pppnbppp/3p1n2/4p3/2BPP3/2N2N2/PPP2PPP/R1BQ1RK1 b kq - 6 6", + "hash": 13060207879461024534, + "name": "Philidor: Improved Hanham 6.O-O" + }, + "C41u": { + "eco": "C41u", + "fen": "r1bq1rk1/pppnbppp/3p1n2/4p3/2BPP3/2N2N2/PPP2PPP/R1BQ1RK1 w - - 7 7", + "hash": 13805714739953785597, + "name": "Philidor: Improved Hanham, Main Line" + }, + "C41v": { + "eco": "C41v", + "fen": "r1bq1rk1/pppnbppp/3p1n2/4p3/P1BPP3/2N2N2/1PP2PPP/R1BQ1RK1 b - a3 0 7", + "hash": 15302878064116109107, + "name": "Philidor: Improved Hanham, 7.a4" + }, + "C41w": { + "eco": "C41w", + "fen": "r1bq1rk1/pppnbppp/3p1n2/4p3/2BPP3/2N2N2/PPP1QPPP/R1B2RK1 b - - 8 7", + "hash": 2995262412046041465, + "name": "Philidor: Improved Hanham, 7.Qe2" + }, + "C41x": { + "eco": "C41x", + "fen": "r1bq1rk1/pppnbppp/3p1n2/4p3/2BPP3/2N2N2/PPP2PPP/R1BQR1K1 b - - 8 7", + "hash": 4261477144745046505, + "name": "Philidor: Improved Hanham, 7.Re1" + }, + "C41y": { + "eco": "C41y", + "fen": "r1bq1rk1/1p1nbppp/2pp1n2/p3p3/P1BPP3/2N2N2/1PP2PPP/R1BQR1K1 w - a6 0 9", + "hash": 4939015169783528204, + "name": "Philidor: Improved Hanham, 7.Re1 c6 8.a4 a5" + }, + "C41z": { + "eco": "C41z", + "fen": "r1bq1rk1/p2nbppp/1ppp1n2/4p3/P1BPP3/2N2N2/1PP2PPP/R1BQR1K1 w - - 0 9", + "hash": 12247843688577351687, + "name": "Philidor: Improved Hanham, 7.Re1 c6 8.a4 b6" + }, + "C42a": { + "eco": "C42a", + "fen": "rnbqkb1r/pppp1ppp/5n2/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3", + "hash": 9857899207991007499, + "name": "Russian Game (Petroff Defence)" + }, + "C42b": { + "eco": "C42b", + "fen": "rnbqkb1r/pppp1ppp/5n2/4p3/4P3/3P1N2/PPP2PPP/RNBQKB1R b KQkq - 0 3", + "hash": 2768175334744924895, + "name": "Russian Game: 3.d3" + }, + "C42c": { + "eco": "C42c", + "fen": "rnbqkb1r/pppp1ppp/5n2/4p3/4P3/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 3 3", + "hash": 8311766651675220946, + "name": "Russian-Three Knights Game" + }, + "C42d": { + "eco": "C42d", + "fen": "rnbqk2r/pppp1ppp/5n2/4N3/1b2P3/2N5/PPPP1PPP/R1BQKB1R b KQkq - 0 4", + "hash": 314071401338468038, + "name": "Russian-Three Knights Game, 4.Nxe5" + }, + "C42e": { + "eco": "C42e", + "fen": "rnbqkb1r/pppp1ppp/5n2/4p3/2B1P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 3 3", + "hash": 16968999559129419693, + "name": "Russian Game: Italian Variation" + }, + "C42f": { + "eco": "C42f", + "fen": "rnbqkb1r/pppp1ppp/8/4p3/2B1n3/2N2N2/PPPP1PPP/R1BQK2R b KQkq - 1 4", + "hash": 12492327627645676135, + "name": "Russian Game: Boden-Kieseritsky Gambit" + }, + "C42g": { + "eco": "C42g", + "fen": "rnbqkb1r/pppp1ppp/5n2/4N3/4P3/8/PPPP1PPP/RNBQKB1R b KQkq - 0 3", + "hash": 3931009027415620669, + "name": "Russian Game: 3.Nxe5" + }, + "C42h": { + "eco": "C42h", + "fen": "rnbqkb1r/ppp2Npp/3p1n2/8/4P3/8/PPPP1PPP/RNBQKB1R b KQkq - 0 4", + "hash": 18145111275632565304, + "name": "Russian Game: Cochrane Gambit" + }, + "C42i": { + "eco": "C42i", + "fen": "rnbqkb1r/ppp2ppp/3p1n2/8/2N1P3/8/PPPP1PPP/RNBQKB1R b KQkq - 1 4", + "hash": 5074037839292285597, + "name": "Russian Game: Paulsen Attack" + }, + "C42j": { + "eco": "C42j", + "fen": "rnbqkb1r/ppp2ppp/3p1n2/8/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 4", + "hash": 15136587681141821478, + "name": "Russian Game: 3.Nxe5 d6 4.Nf3" + }, + "C42k": { + "eco": "C42k", + "fen": "rnbqkb1r/ppp2ppp/3p4/8/4n3/3P1N2/PPP2PPP/RNBQKB1R b KQkq - 0 5", + "hash": 13915133016524721377, + "name": "Russian Game: French Attack" + }, + "C42l": { + "eco": "C42l", + "fen": "rnbqkb1r/ppp2ppp/3p4/8/2P1n3/5N2/PP1P1PPP/RNBQKB1R b KQkq c3 0 5", + "hash": 16400745562692590642, + "name": "Russian Game: Vienna/Kaufmann" + }, + "C42m": { + "eco": "C42m", + "fen": "rnbqkb1r/ppp2ppp/3p4/8/4n3/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 1 5", + "hash": 10677929950469043692, + "name": "Russian Game: Nimzowitsch Attack" + }, + "C42n": { + "eco": "C42n", + "fen": "rnbqkb1r/ppp2ppp/3p4/8/4n3/5N2/PPPPQPPP/RNB1KB1R b KQkq - 1 5", + "hash": 17995881873847413937, + "name": "Russian Game: Cozio/Lasker" + }, + "C42o": { + "eco": "C42o", + "fen": "rnb1kb1r/ppp2ppp/3p1n2/6B1/8/3P1N2/PPP1qPPP/RN2KB1R w KQkq - 0 8", + "hash": 7716172367303247907, + "name": "Russian Game: 5.Qe2, Queenswap" + }, + "C42p": { + "eco": "C42p", + "fen": "rnbqkb1r/ppp2ppp/3p4/8/3Pn3/5N2/PPP2PPP/RNBQKB1R b KQkq d3 0 5", + "hash": 12289645807193135735, + "name": "Russian Game: Classical" + }, + "C42q": { + "eco": "C42q", + "fen": "rnbqkb1r/ppp2ppp/8/3p4/3Pn3/3B1N2/PPP2PPP/RNBQK2R b KQkq - 1 6", + "hash": 13512668886328597062, + "name": "Russian Game: Classical, 6.Bd3" + }, + "C42r": { + "eco": "C42r", + "fen": "rnbq1rk1/pp3ppp/2pb4/3p4/2PPn3/3B1N2/PP3PPP/RNBQ1RK1 w - - 0 9", + "hash": 8456120762915963173, + "name": "Russian Game: Classical, Marshall, 8.c4 c6" + }, + "C42s": { + "eco": "C42s", + "fen": "rnbqk2r/ppp1bppp/8/3p4/3Pn3/3B1N2/PPP2PPP/RNBQK2R w KQkq - 2 7", + "hash": 12631144695397709527, + "name": "Russian Game: Classical, 6.Bd3 Be7" + }, + "C42t": { + "eco": "C42t", + "fen": "r1bqk2r/ppp1bppp/2n5/3p4/2PPn3/3B1N2/PP3PPP/RNBQ1RK1 b kq c3 0 8", + "hash": 17794262948643906499, + "name": "Russian Game: Classical, Jnisch Variation" + }, + "C42u": { + "eco": "C42u", + "fen": "r1bq1rk1/ppp1bppp/8/3p4/1nPPn3/5N2/PP2BPPP/RNBQ1RK1 w - - 3 10", + "hash": 4103407589947902917, + "name": "Russian Game: Classical, Jnisch, Main Line" + }, + "C42v": { + "eco": "C42v", + "fen": "r1bqk2r/ppp1bppp/2n5/3p4/3Pn3/3B1N2/PPP2PPP/RNBQR1K1 b kq - 5 8", + "hash": 18331473956482556880, + "name": "Russian Game: Classical, Chigorin Variation" + }, + "C42w": { + "eco": "C42w", + "fen": "r2qk2r/ppp1bppp/2n5/3p4/3Pn1b1/3B1N2/PPP2PPP/RNBQR1K1 w kq - 6 9", + "hash": 18209654466644454714, + "name": "Russian Game: Classical, Chigorin, 8...Bg4" + }, + "C42x": { + "eco": "C42x", + "fen": "r2qk2r/ppp1bppp/2n5/3p4/3Pn1b1/2PB1N2/PP3PPP/RNBQR1K1 b kq - 0 9", + "hash": 9975271805058982588, + "name": "Russian Game: Classical, Chigorin, 8...Bg4 9.c3" + }, + "C43a": { + "eco": "C43a", + "fen": "rnbqkb1r/pppp1ppp/5n2/4p3/3PP3/5N2/PPP2PPP/RNBQKB1R b KQkq d3 0 3", + "hash": 5619195683159520329, + "name": "Russian Game: Modern (Steinitz) Attack" + }, + "C43b": { + "eco": "C43b", + "fen": "rnbqkb1r/pppp1ppp/5n2/8/3pP3/5N2/PPP2PPP/RNBQKB1R w KQkq - 0 4", + "hash": 15457882454871416924, + "name": "Russian Game: Modern Attack" + }, + "C43c": { + "eco": "C43c", + "fen": "rnbqkb1r/pppp1ppp/8/4P3/3pn3/5N2/PPP2PPP/RNBQKB1R w KQkq - 1 5", + "hash": 10228858188108467138, + "name": "Russian Game: Modern Attack" + }, + "C43d": { + "eco": "C43d", + "fen": "rnbqkb1r/pppp1ppp/8/4P3/3Qn3/5N2/PPP2PPP/RNB1KB1R b KQkq - 0 5", + "hash": 17312720528227493119, + "name": "Russian Game: Modern Attack, 3...exd4, Main Line" + }, + "C43e": { + "eco": "C43e", + "fen": "rnbqkb1r/ppp2ppp/3n4/8/3Q4/2N2N2/PPP2PPP/R1B1KB1R b KQkq - 1 7", + "hash": 14936257590960364208, + "name": "Russian Game: Modern Attack, 3...exd4, Main Line, 7.Nc3" + }, + "C43f": { + "eco": "C43f", + "fen": "rnbqkb1r/pppp1ppp/8/4p3/3Pn3/5N2/PPP2PPP/RNBQKB1R w KQkq - 0 4", + "hash": 17315261855013671770, + "name": "Russian Game: Modern Attack, 3...Nxe4" + }, + "C43g": { + "eco": "C43g", + "fen": "rnbqkb1r/pppp1ppp/8/4p3/3Pn3/3B1N2/PPP2PPP/RNBQK2R b KQkq - 1 4", + "hash": 11907952033337364777, + "name": "Russian Game: Modern Attack, 3...Nxe4 4.Bd3" + }, + "C43h": { + "eco": "C43h", + "fen": "r1bqkb1r/pppp1ppp/2n5/4p3/3PB3/5N2/PPP2PPP/RNBQK2R b KQkq - 0 5", + "hash": 13272887144063872348, + "name": "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 Nc6 5.Bxe4" + }, + "C43i": { + "eco": "C43i", + "fen": "rnbqkb1r/ppp2ppp/8/3pp3/3Pn3/3B1N2/PPP2PPP/RNBQK2R w KQkq d6 0 5", + "hash": 2318132646244425487, + "name": "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 d5" + }, + "C43j": { + "eco": "C43j", + "fen": "rnbqkb1r/ppp2ppp/8/3pN3/3Pn3/3B4/PPP2PPP/RNBQK2R b KQkq - 0 5", + "hash": 11414476230594673209, + "name": "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 d5 5.Nxe5" + }, + "C43k": { + "eco": "C43k", + "fen": "r1bqkb1r/ppp2ppp/2n5/3pN3/3Pn3/3B4/PPP2PPP/RNBQK2R w KQkq - 1 6", + "hash": 3856635190200606522, + "name": "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 d5 5.Nxe5 Nc6" + }, + "C43l": { + "eco": "C43l", + "fen": "rnbqk2r/ppp1bppp/8/3pN3/3Pn3/3B4/PPP2PPP/RNBQK2R w KQkq - 1 6", + "hash": 9990160762185160360, + "name": "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 d5 5.Nxe5 Be7" + }, + "C43m": { + "eco": "C43m", + "fen": "rnbqk2r/ppp2ppp/3b4/3pN3/3Pn3/3B4/PPP2PPP/RNBQK2R w KQkq - 1 6", + "hash": 4192904190208961309, + "name": "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 d5 5.Nxe5 Bd6" + }, + "C43n": { + "eco": "C43n", + "fen": "rnbq1rk1/ppp2ppp/8/3pb3/2PPn3/3B4/PP3PPP/RNBQ1RK1 w - - 0 8", + "hash": 724460668866907971, + "name": "Russian Game: Modern Attack, Trifunovic Variation" + }, + "C43o": { + "eco": "C43o", + "fen": "r1bqkb1r/pppn1ppp/8/3pN3/3Pn3/3B4/PPP2PPP/RNBQK2R w KQkq - 1 6", + "hash": 12505131647069640693, + "name": "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 d5 5.Nxe5 Nd7" + }, + "C43p": { + "eco": "C43p", + "fen": "r1bqkb1r/pppn1ppp/8/3pN3/3Pn3/3B4/PPP1QPPP/RNB1K2R b KQkq - 2 6", + "hash": 4291272765456026737, + "name": "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 d5 5.Nxe5 Nd7 6.Qe2" + }, + "C43q": { + "eco": "C43q", + "fen": "r1bqkb1r/pppN1ppp/8/3p4/3Pn3/3B4/PPP2PPP/RNBQK2R b KQkq - 0 6", + "hash": 2911405839647599094, + "name": "Russian Game: Modern Attack, 3...Nxe4 4.Bd3 d5 5.Nxe5 Nd7 6.Nxd7" + }, + "C43r": { + "eco": "C43r", + "fen": "r2qkb1r/pppb1ppp/8/3p4/3Pn3/3B4/PPP2PPP/RNBQ1RK1 b kq - 1 7", + "hash": 4379860485848816437, + "name": "Russian Game: Modern Attack, 3...Nxe4, Main Line" + }, + "C43s": { + "eco": "C43s", + "fen": "r3kb1r/pppb1ppp/8/3p4/3Pn2q/3B4/PPP2PPP/RNBQ1RK1 w kq - 2 8", + "hash": 14037657500904281035, + "name": "Russian Game: Modern Attack, 3...Nxe4, Main Line, 7...Qh4" + }, + "C43t": { + "eco": "C43t", + "fen": "r2qk2r/pppb1ppp/3b4/3p4/3Pn3/3B4/PPP2PPP/RNBQ1RK1 w kq - 2 8", + "hash": 10993302542461635089, + "name": "Russian Game: Modern Attack, 3...Nxe4, Main Line, 7...Bd6" + }, + "C43u": { + "eco": "C43u", + "fen": "r2qk2r/pppb1ppp/3b4/3p4/2PPn3/3B4/PP3PPP/RNBQ1RK1 b kq c3 0 8", + "hash": 1491695668280729878, + "name": "Russian Game: Modern Attack, 3...Nxe4, Main Line, 7...Bd6 8.c4" + }, + "C44a": { + "eco": "C44a", + "fen": "r1bqkbnr/pppp1ppp/2n5/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3", + "hash": 8704797333742910878, + "name": "Open Game" + }, + "C44b": { + "eco": "C44b", + "fen": "r1bqkbnr/pppp1ppp/2n5/4p3/4P3/5NP1/PPPP1P1P/RNBQKB1R b KQkq - 0 3", + "hash": 6064972452962018726, + "name": "Open Game: Konstantinopolsky" + }, + "C44c": { + "eco": "C44c", + "fen": "r1bqkbnr/pppp1ppp/2n5/4p3/4P3/5N2/PPPPBPPP/RNBQK2R b KQkq - 3 3", + "hash": 814347751279441725, + "name": "Open Game: Inverted Hungarian" + }, + "C44d": { + "eco": "C44d", + "fen": "r1bqkbnr/pppp1ppp/2n5/4p3/4P3/3P1N2/PPP2PPP/RNBQKB1R b KQkq - 0 3", + "hash": 15449990889825617482, + "name": "Open Game: Inverted Philidor" + }, + "C44e": { + "eco": "C44e", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/4P3/3P1N2/PPP2PPP/RNBQKB1R w KQkq - 1 4", + "hash": 10198208043979212764, + "name": "Open Game: Inverted Philidor" + }, + "C44f": { + "eco": "C44f", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/4P3/3P1NP1/PPP2P1P/RNBQKB1R b KQkq - 0 4", + "hash": 11628834575328632804, + "name": "Open Game: Inverted Philidor, 4.g3" + }, + "C44g": { + "eco": "C44g", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/4P3/3P1N2/PPP1BPPP/RNBQK2R b KQkq - 2 4", + "hash": 18304832135133711743, + "name": "Open Game: Inverted Philidor, 4.Be2" + }, + "C44h": { + "eco": "C44h", + "fen": "r1bqkb1r/ppp2ppp/2n2n2/3pp3/4P3/3P1N2/PPPNBPPP/R1BQK2R b KQkq - 1 5", + "hash": 2450883582250789737, + "name": "Open Game: Inverted Hanham" + }, + "C44i": { + "eco": "C44i", + "fen": "r1bqkbnr/pppp1ppp/2n5/4p3/4P3/2P2N2/PP1P1PPP/RNBQKB1R b KQkq - 0 3", + "hash": 1015385342199689752, + "name": "Ponziani Opening" + }, + "C44j": { + "eco": "C44j", + "fen": "r1bqkbnr/pppp2pp/2n5/4pp2/4P3/2P2N2/PP1P1PPP/RNBQKB1R w KQkq f6 0 4", + "hash": 11130709217671602118, + "name": "Ponziani Countergambit" + }, + "C44k": { + "eco": "C44k", + "fen": "r1bqkbnr/ppp2ppp/2n5/3pp3/4P3/2P2N2/PP1P1PPP/RNBQKB1R w KQkq d6 0 4", + "hash": 10051327942189333566, + "name": "Ponziani: 3...d5" + }, + "C44l": { + "eco": "C44l", + "fen": "r1bqkbnr/ppp2ppp/2n5/3pp3/Q3P3/2P2N2/PP1P1PPP/RNB1KB1R b KQkq - 1 4", + "hash": 6474417928624787013, + "name": "Ponziani: 3...d5 4.Qa4" + }, + "C44m": { + "eco": "C44m", + "fen": "r1bqkbnr/ppp3pp/2n2p2/3pp3/Q3P3/2P2N2/PP1P1PPP/RNB1KB1R w KQkq - 0 5", + "hash": 10776206281345784122, + "name": "Ponziani: Steinitz Variation" + }, + "C44n": { + "eco": "C44n", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/4P3/2P2N2/PP1P1PPP/RNBQKB1R w KQkq - 1 4", + "hash": 6195100837149750158, + "name": "Ponziani: 3...Nf6" + }, + "C44o": { + "eco": "C44o", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/8/3pP3/2P2N2/PP3PPP/RNBQKB1R w KQkq - 0 5", + "hash": 842822167517924057, + "name": "Ponziani: 3...Nf6 4.d4 exd4" + }, + "C44p": { + "eco": "C44p", + "fen": "r1bqkb1r/pppp1ppp/2n5/4p3/3Pn3/2P2N2/PP3PPP/RNBQKB1R w KQkq - 0 5", + "hash": 3277224769532443103, + "name": "Ponziani: 3...Nf6 4.d4 Nxe4" + }, + "C44q": { + "eco": "C44q", + "fen": "r1bqkb1r/ppppnppp/8/3Pp3/4n3/2P2N2/PP3PPP/RNBQKB1R w KQkq - 1 6", + "hash": 10636202227589948563, + "name": "Ponziani: 3...Nf6 4.d4 Nxe4 5.d5 Ne7" + }, + "C44r": { + "eco": "C44r", + "fen": "r1bqkbnr/pppp1ppp/2n5/4p3/3PP3/5N2/PPP2PPP/RNBQKB1R b KQkq d3 0 3", + "hash": 13688841305454170332, + "name": "Scotch Opening" + }, + "C44s": { + "eco": "C44s", + "fen": "r1bqkbnr/ppp2ppp/2np4/4p3/3PP3/5N2/PPP2PPP/RNBQKB1R w KQkq - 0 4", + "hash": 9530213596486834609, + "name": "Scotch: 3...d6" + }, + "C44t": { + "eco": "C44t", + "fen": "r1bqkbnr/pppp1ppp/2n5/8/3pP3/5N2/PPP2PPP/RNBQKB1R w KQkq - 0 4", + "hash": 2776049323298866377, + "name": "Scotch: 3...exd4" + }, + "C44u": { + "eco": "C44u", + "fen": "r1bqkbnr/ppp2ppp/2n5/3p4/3pP3/2P2N2/PP3PPP/RNBQKB1R w KQkq d6 0 5", + "hash": 15363564668380841321, + "name": "Scotch: Goring Gambit, 4...d5" + }, + "C44v": { + "eco": "C44v", + "fen": "r1bqkbnr/pppp1ppp/2n5/8/4P3/2Pp1N2/PP3PPP/RNBQKB1R w KQkq - 0 5", + "hash": 14729118190193363287, + "name": "Scotch: Goring Gambit, 4...d3" + }, + "C44w": { + "eco": "C44w", + "fen": "r1bqkbnr/pppp1ppp/2n5/8/4P3/2p2N2/PP3PPP/RNBQKB1R w KQkq - 0 5", + "hash": 10485457731774894559, + "name": "Scotch: Goring Gambit, 4...dxc3" + }, + "C44x": { + "eco": "C44x", + "fen": "r1bqkbnr/pppp1ppp/2n5/8/2BpP3/5N2/PPP2PPP/RNBQK2R b KQkq - 1 4", + "hash": 4986951600073511535, + "name": "Scotch Gambit" + }, + "C44y": { + "eco": "C44y", + "fen": "r1bqk1nr/pppp1ppp/2n5/2b5/2BpP3/5N2/PPP2PPP/RNBQK2R w KQkq - 2 5", + "hash": 16728746525806590188, + "name": "Scotch Gambit: 4...Bc5" + }, + "C44z": { + "eco": "C44z", + "fen": "r1bqk1nr/pppp1ppp/2n5/2b5/2BpP3/2P2N2/PP3PPP/RNBQK2R b KQkq - 0 5", + "hash": 11453369419459229546, + "name": "Scotch Gambit: 5.c3" + }, + "C45a": { + "eco": "C45a", + "fen": "r1bqkbnr/pppp1ppp/2n5/8/3NP3/8/PPP2PPP/RNBQKB1R b KQkq - 0 4", + "hash": 4689055884960126695, + "name": "Scotch: 4.Nxd4" + }, + "C45b": { + "eco": "C45b", + "fen": "r1bqkbnr/pppp1ppp/8/8/3nP3/8/PPP2PPP/RNBQKB1R w KQkq - 0 5", + "hash": 17037498911200243620, + "name": "Scotch: 4.Nxd4 Nxd4" + }, + "C45c": { + "eco": "C45c", + "fen": "r1bqk1nr/pppp1ppp/2n5/8/1b1NP3/8/PPP2PPP/RNBQKB1R w KQkq - 1 5", + "hash": 9823395862778683077, + "name": "Scotch: 4.Nxd4 Bb4+" + }, + "C45d": { + "eco": "C45d", + "fen": "r1b1kbnr/pppp1ppp/2n2q2/8/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 1 5", + "hash": 5055926909966849290, + "name": "Scotch: 4.Nxd4 Qf6" + }, + "C45e": { + "eco": "C45e", + "fen": "r1b1kbnr/pppp1ppp/2n5/8/3NP2q/8/PPP2PPP/RNBQKB1R w KQkq - 1 5", + "hash": 13769047279266061849, + "name": "Scotch: Steinitz Variation" + }, + "C45f": { + "eco": "C45f", + "fen": "r1b1kbnr/pppp1ppp/2n5/8/3NP2q/2N5/PPP2PPP/R1BQKB1R b KQkq - 2 5", + "hash": 4936617192026594496, + "name": "Scotch: Steinitz, 5.Nc3" + }, + "C45g": { + "eco": "C45g", + "fen": "r1b1kbnr/pppp1ppp/2n5/1N6/4P2q/8/PPP2PPP/RNBQKB1R b KQkq - 2 5", + "hash": 5368169678711972943, + "name": "Scotch: Steinitz, 5.Nb5" + }, + "C45h": { + "eco": "C45h", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/8/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 1 5", + "hash": 1944688136365447025, + "name": "Scotch: 4.Nxd4 Nf6" + }, + "C45i": { + "eco": "C45i", + "fen": "r1bqkb1r/p1pp1ppp/2p2n2/8/4P3/3B4/PPP2PPP/RNBQK2R b KQkq - 1 6", + "hash": 16061294381290035132, + "name": "Scotch: 4.Nxd4 Nf6 5.Nxc6 bxc6 6.Bd3" + }, + "C45j": { + "eco": "C45j", + "fen": "r1bqkb1r/p1pp1ppp/2p2n2/4P3/8/8/PPP2PPP/RNBQKB1R b KQkq - 0 6", + "hash": 16902459632345936811, + "name": "Scotch: Mieses Variation" + }, + "C45k": { + "eco": "C45k", + "fen": "r1b1kb1r/p1ppqppp/2p5/3nP3/2P5/8/PP2QPPP/RNB1KB1R b KQkq c3 0 8", + "hash": 12635844862913992951, + "name": "Scotch: Mieses, 8.c4" + }, + "C45l": { + "eco": "C45l", + "fen": "r3kb1r/p1ppqppp/b1p5/3nP3/2P5/8/PP2QPPP/RNB1KB1R w KQkq - 1 9", + "hash": 6938880515911965193, + "name": "Scotch: Mieses, 8.c4 Ba6" + }, + "C45m": { + "eco": "C45m", + "fen": "r3kb1r/p1ppqppp/b1p5/3nP3/2P5/1P6/P3QPPP/RNB1KB1R b KQkq - 0 9", + "hash": 17072507663620944228, + "name": "Scotch: Mieses, 8.c4 Ba6 9.b3" + }, + "C45n": { + "eco": "C45n", + "fen": "r1bqk1nr/pppp1ppp/2n5/2b5/3NP3/8/PPP2PPP/RNBQKB1R w KQkq - 1 5", + "hash": 17009984879765634148, + "name": "Scotch: 4.Nxd4 Bc5" + }, + "C45o": { + "eco": "C45o", + "fen": "r1bqk1nr/pppp1ppp/2n5/2b5/4P3/1N6/PPP2PPP/RNBQKB1R b KQkq - 2 5", + "hash": 8682556407983504046, + "name": "Scotch: 4.Nxd4 Bc5 5.Nb3" + }, + "C45p": { + "eco": "C45p", + "fen": "r1bqk1nr/pppp1ppp/1bn5/8/4P3/1N6/PPP2PPP/RNBQKB1R w KQkq - 3 6", + "hash": 10990343604722275259, + "name": "Scotch: 4.Nxd4 Bc5 5.Nb3 Bb6" + }, + "C45q": { + "eco": "C45q", + "fen": "r1bqk1nr/1ppp1ppp/pbn5/8/P3P3/1N6/1PP2PPP/RNBQKB1R w KQkq - 0 7", + "hash": 2430541204132609705, + "name": "Scotch: 4.Nxd4 Bc5 5.Nb3 Bb6 6.a4 a6" + }, + "C45r": { + "eco": "C45r", + "fen": "r1bqk1nr/pppp1ppp/2N5/2b5/4P3/8/PPP2PPP/RNBQKB1R b KQkq - 0 5", + "hash": 11568946446046999889, + "name": "Scotch: 4.Nxd4 Bc5 5.Nxc6" + }, + "C45s": { + "eco": "C45s", + "fen": "r1b1k1nr/pppp1ppp/2N2q2/2b5/4P3/8/PPPQ1PPP/RNB1KB1R b KQkq - 2 6", + "hash": 10353200738363418908, + "name": "Scotch: 4.Nxd4 Bc5 5.Nxc6 Qf6 6.Qd2" + }, + "C45t": { + "eco": "C45t", + "fen": "r1b1k1nr/ppp2ppp/2p2q2/2b5/4P3/2N5/PPPQ1PPP/R1B1KB1R b KQkq - 1 7", + "hash": 6569759551487614491, + "name": "Scotch: 4.Nxd4 Bc5 5.Nxc6 Qf6 6.Qd2 dxc6 7.Nc3" + }, + "C45u": { + "eco": "C45u", + "fen": "r1bqk1nr/pppp1ppp/2n5/2b5/3NP3/4B3/PPP2PPP/RN1QKB1R b KQkq - 2 5", + "hash": 11459163839963604970, + "name": "Scotch: 4.Nxd4 Bc5 5.Be3" + }, + "C45v": { + "eco": "C45v", + "fen": "r1b1k1nr/pppp1ppp/2n2q2/1Nb5/4P3/4B3/PPP2PPP/RN1QKB1R b KQkq - 4 6", + "hash": 7878299222988119633, + "name": "Scotch: Blumenfeld Attack" + }, + "C45w": { + "eco": "C45w", + "fen": "r1b1k2r/ppppnppp/2n2q2/2b5/3NP3/2P1B3/PP3PPP/RN1QKB1R w KQkq - 1 7", + "hash": 15036104284411846716, + "name": "Scotch: 4.Nxd4 Bc5 5.Be3 Qf6 6.c3 Nge7" + }, + "C45x": { + "eco": "C45x", + "fen": "r1b1k2r/ppppnppp/2n2q2/2b5/2BNP3/2P1B3/PP3PPP/RN1QK2R b KQkq - 2 7", + "hash": 12905430898565658266, + "name": "Scotch: 4.Nxd4 Bc5 5.Be3 Qf6 6.c3 Nge7 7.Bc4" + }, + "C45y": { + "eco": "C45y", + "fen": "r1b1k2r/ppppnppp/5q2/2b1n3/2BNP3/2P1B3/PP3PPP/RN1QK2R w KQkq - 3 8", + "hash": 4847087392507829498, + "name": "Scotch: 4.Nxd4 Bc5 5.Be3 Qf6 6.c3 Nge7 7.Bc4 Ne5" + }, + "C46a": { + "eco": "C46a", + "fen": "r1bqkbnr/pppp1ppp/2n5/4p3/4P3/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 3 3", + "hash": 9465088315907768135, + "name": "Three Knights Game" + }, + "C46b": { + "eco": "C46b", + "fen": "r1bqkbnr/pppp2pp/2n5/4pp2/4P3/2N2N2/PPPP1PPP/R1BQKB1R w KQkq f6 0 4", + "hash": 1672481660104987289, + "name": "Three Knights: Winawer Defence" + }, + "C46c": { + "eco": "C46c", + "fen": "r1bqkbnr/ppp2ppp/2np4/4p3/4P3/2N2N2/PPPP1PPP/R1BQKB1R w KQkq - 0 4", + "hash": 13465808846401943082, + "name": "Three Knights: 3...d6" + }, + "C46d": { + "eco": "C46d", + "fen": "r1bqkbnr/ppp2ppp/2np4/4p3/3PP3/2N2N2/PPP2PPP/R1BQKB1R b KQkq d3 0 4", + "hash": 9211275652690385768, + "name": "Three Knights: 3...d6 4.d4" + }, + "C46e": { + "eco": "C46e", + "fen": "r1bqk1nr/pppp1ppp/2n5/2b1p3/4P3/2N2N2/PPPP1PPP/R1BQKB1R w KQkq - 4 4", + "hash": 3334911087892174276, + "name": "Three Knights: 3...Bc5" + }, + "C46f": { + "eco": "C46f", + "fen": "r1bqk1nr/pppp1ppp/2n5/2b1N3/4P3/2N5/PPPP1PPP/R1BQKB1R b KQkq - 0 4", + "hash": 10377435988724920562, + "name": "Three Knights: 3...Bc5 4.Nxe5" + }, + "C46g": { + "eco": "C46g", + "fen": "r1bqk1nr/pppp1ppp/2n5/4p3/1b2P3/2N2N2/PPPP1PPP/R1BQKB1R w KQkq - 4 4", + "hash": 5340097811471284069, + "name": "Three Knights: 3...Bb4" + }, + "C46h": { + "eco": "C46h", + "fen": "r1bqk1nr/pppp1ppp/2n5/3Np3/1b2P3/5N2/PPPP1PPP/R1BQKB1R b KQkq - 5 4", + "hash": 9948021146057656368, + "name": "Three Knights: 3...Bb4 4.Nd5" + }, + "C46i": { + "eco": "C46i", + "fen": "r1bqkbnr/pppp1p1p/2n3p1/4p3/4P3/2N2N2/PPPP1PPP/R1BQKB1R w KQkq - 0 4", + "hash": 7705356561013435660, + "name": "Three Knights: Steinitz Variation" + }, + "C46j": { + "eco": "C46j", + "fen": "r1bqkbnr/pppp1p1p/2n3p1/4p3/3PP3/2N2N2/PPP2PPP/R1BQKB1R b KQkq d3 0 4", + "hash": 12671936783943417934, + "name": "Three Knights: Steinitz, 4.d4" + }, + "C46k": { + "eco": "C46k", + "fen": "r1bqkbnr/pppp1p1p/2n3p1/3N4/3pP3/5N2/PPP2PPP/R1BQKB1R b KQkq - 1 5", + "hash": 17631706836159507214, + "name": "Three Knights: Steinitz, Rosenthal Variation" + }, + "C46l": { + "eco": "C46l", + "fen": "r1bqkbnr/pppp1p1p/2n3p1/8/3NP3/2N5/PPP2PPP/R1BQKB1R b KQkq - 0 5", + "hash": 5994735866859079285, + "name": "Three Knights: Steinitz, 4.d4 exd4 5.Nxd4" + }, + "C46m": { + "eco": "C46m", + "fen": "r1bqk2r/pppp1pbp/2n2np1/8/3NP3/2N1B3/PPP2PPP/R2QKB1R w KQkq - 3 7", + "hash": 14657851390109046727, + "name": "Three Knights: Steinitz, 4.d4 exd4 5.Nxd4 Bg7 6.Be3 Nf6" + }, + "C47a": { + "eco": "C47a", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/4P3/2N2N2/PPPP1PPP/R1BQKB1R w KQkq - 4 4", + "hash": 15615259024392175313, + "name": "Four Knights Game" + }, + "C47b": { + "eco": "C47b", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/4P3/P1N2N2/1PPP1PPP/R1BQKB1R b KQkq - 0 4", + "hash": 1380558341248856209, + "name": "Four Knights: Gunsberg Variation" + }, + "C47c": { + "eco": "C47c", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/4P3/2N2N2/PPPPBPPP/R1BQK2R b KQkq - 5 4", + "hash": 12336494764604978290, + "name": "Four Knights: Van der Wiel Variation" + }, + "C47d": { + "eco": "C47d", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/2B1P3/2N2N2/PPPP1PPP/R1BQK2R b KQkq - 5 4", + "hash": 13476810165849712759, + "name": "Four Knights: Italian Variation" + }, + "C47e": { + "eco": "C47e", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/4P3/2N2NP1/PPPP1P1P/R1BQKB1R b KQkq - 0 4", + "hash": 17605186775537182441, + "name": "Four Knights: Glek Variation" + }, + "C47f": { + "eco": "C47f", + "fen": "r1bqkb1r/ppp2ppp/2n2n2/3pp3/4P3/2N2NP1/PPPP1P1P/R1BQKB1R w KQkq d6 0 5", + "hash": 8158290567807641807, + "name": "Four Knights: Glek, 4...d5" + }, + "C47g": { + "eco": "C47g", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1p3/4P3/2N2NP1/PPPP1P1P/R1BQKB1R w KQkq - 1 5", + "hash": 6435490225031384170, + "name": "Four Knights: Glek, 4...Bc5" + }, + "C47h": { + "eco": "C47h", + "fen": "r1bqk2r/1pp2ppp/p1np1n2/2b1p3/4P3/2NP1NP1/PPP2PBP/R1BQK2R w KQkq - 0 7", + "hash": 12202207943275011702, + "name": "Four Knights: Glek, Main Line" + }, + "C47i": { + "eco": "C47i", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/3PP3/2N2N2/PPP2PPP/R1BQKB1R b KQkq d3 0 4", + "hash": 2126161864446612371, + "name": "Four Knights: Scotch Variation" + }, + "C47j": { + "eco": "C47j", + "fen": "r1bqk2r/pppp1ppp/2n2n2/4p3/1b1PP3/2N2N2/PPP2PPP/R1BQKB1R w KQkq - 1 5", + "hash": 15330479584301112241, + "name": "Four Knights: Scotch, Bogoljubow" + }, + "C47k": { + "eco": "C47k", + "fen": "r1bqk2r/pppp1ppp/2n2n2/4N3/1b1PP3/2N5/PPP2PPP/R1BQKB1R b KQkq - 0 5", + "hash": 7675040924522249863, + "name": "Four Knights: Scotch, Krause Variation" + }, + "C47l": { + "eco": "C47l", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/8/3pP3/2N2N2/PPP2PPP/R1BQKB1R w KQkq - 0 5", + "hash": 9727685523403278214, + "name": "Four Knights: Scotch, 4...exd4" + }, + "C47m": { + "eco": "C47m", + "fen": "r1bqkb1r/pppp1ppp/2n5/3N4/3pn3/5N2/PPP2PPP/R1BQKB1R w KQkq - 0 6", + "hash": 18112719058422947776, + "name": "Four Knights: Belgrade Gambit, 5...Nxe4" + }, + "C47n": { + "eco": "C47n", + "fen": "r1bqk2r/ppppbppp/2n2n2/3N4/3pP3/5N2/PPP2PPP/R1BQKB1R w KQkq - 2 6", + "hash": 5919545970676421698, + "name": "Four Knights: Belgrade Gambit, 5...Be7" + }, + "C47o": { + "eco": "C47o", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/8/3NP3/2N5/PPP2PPP/R1BQKB1R b KQkq - 0 5", + "hash": 16243343854501631400, + "name": "Four Knights: Scotch, 4...exd4 5.Nxd4" + }, + "C47p": { + "eco": "C47p", + "fen": "r1bqkb1r/ppp2ppp/2np1n2/8/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 0 6", + "hash": 15623379965563657413, + "name": "Four Knights: Scotch, 4...exd4 5.Nxd4 d6" + }, + "C47q": { + "eco": "C47q", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b5/3NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 1 6", + "hash": 5509792917845901099, + "name": "Four Knights: Scotch, 4...exd4 5.Nxd4 Bc5" + }, + "C47r": { + "eco": "C47r", + "fen": "r1bqk2r/pppp1ppp/2n2n2/8/1b1NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 1 6", + "hash": 2894295219877961098, + "name": "Four Knights: Scotch, 4...exd4 5.Nxd4 Bb4" + }, + "C47s": { + "eco": "C47s", + "fen": "r1bqk2r/p1pp1ppp/2p2n2/8/1b2P3/2N5/PPP2PPP/R1BQKB1R w KQkq - 0 7", + "hash": 13348385767644241716, + "name": "Four Knights: Scotch, 4...exd4 5.Nxd4 Bb4 6.Nxc6 bxc6" + }, + "C47t": { + "eco": "C47t", + "fen": "r1bqk2r/p1p2ppp/2p2n2/3p4/1b2P3/2NB4/PPP2PPP/R1BQK2R w KQkq d6 0 8", + "hash": 7591236724202935137, + "name": "Four Knights: Scotch, Main Line, 7...d5" + }, + "C47u": { + "eco": "C47u", + "fen": "r1bq1rk1/p1p2ppp/5n2/3p4/1b6/2NB4/PPP2PPP/R1BQ1RK1 w - - 2 10", + "hash": 5272393634219257382, + "name": "Four Knights: Scotch, Main Line, 8.exd5 cxd5 9.O-O O-O" + }, + "C47v": { + "eco": "C47v", + "fen": "r1bq1rk1/p4ppp/2p2n2/3p2B1/1b6/2NB4/PPP2PPP/R2Q1RK1 w - - 0 11", + "hash": 2093035603298969173, + "name": "Four Knights: Scotch, Main Line, 9.O-O O-O 10.Bg5 c6" + }, + "C47w": { + "eco": "C47w", + "fen": "r1bq1rk1/p4ppp/2p2n2/3p2B1/Nb6/3B4/PPP2PPP/R2Q1RK1 b - - 1 11", + "hash": 16041573106238203167, + "name": "Four Knights: Scotch, Main Line, 10.Bg5 c6 11.Na4" + }, + "C47x": { + "eco": "C47x", + "fen": "r1bq1rk1/p4ppp/2p2n2/3p2B1/1b6/2NB1Q2/PPP2PPP/R4RK1 b - - 1 11", + "hash": 12045316980549103854, + "name": "Four Knights: Scotch, Main Line, 10.Bg5 c6 11.Qf3" + }, + "C47y": { + "eco": "C47y", + "fen": "r1bq1rk1/p3bppp/2p2n2/3p2B1/8/2NB1Q2/PPP2PPP/R4RK1 w - - 2 12", + "hash": 9399772986789581140, + "name": "Four Knights: Scotch, Main Line, 10.Bg5 c6 11.Qf3 Be7" + }, + "C48a": { + "eco": "C48a", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/1B2p3/4P3/2N2N2/PPPP1PPP/R1BQK2R b KQkq - 5 4", + "hash": 16963470959540383058, + "name": "Four Knights: Spanish Variation" + }, + "C48b": { + "eco": "C48b", + "fen": "r1bqkb1r/ppp2ppp/2np1n2/1B2p3/4P3/2N2N2/PPPP1PPP/R1BQK2R w KQkq - 0 5", + "hash": 15190866495513519167, + "name": "Four Knights: Spanish, 4...d6" + }, + "C48c": { + "eco": "C48c", + "fen": "r1bqkb1r/ppp2ppp/2np1n2/1B2p3/3PP3/2N2N2/PPP2PPP/R1BQK2R b KQkq d3 0 5", + "hash": 1722032287408605565, + "name": "Four Knights: Spanish, 4...d6 5.d4" + }, + "C48d": { + "eco": "C48d", + "fen": "r1bqk2r/pppp1ppp/2n2n2/1Bb1p3/4P3/2N2N2/PPPP1PPP/R1BQK2R w KQkq - 6 5", + "hash": 5077560836872849361, + "name": "Four Knights: Spanish, Classical Defence" + }, + "C48e": { + "eco": "C48e", + "fen": "r1bqk2r/pppp1ppp/2n2n2/1Bb1N3/4P3/2N5/PPPP1PPP/R1BQK2R b KQkq - 0 5", + "hash": 17885177677214868199, + "name": "Four Knights: Spanish, Classical Defence, 5.Nxe5" + }, + "C48f": { + "eco": "C48f", + "fen": "r1bqk2r/pppp1ppp/2n2n2/1Bb1p3/4P3/2N2N2/PPPP1PPP/R1BQ1RK1 b kq - 7 5", + "hash": 4035899926764199105, + "name": "Four Knights: Spanish, Classical Defence, 5.O-O" + }, + "C48g": { + "eco": "C48g", + "fen": "r1bqkb1r/pppp1ppp/5n2/1B2p3/3nP3/2N2N2/PPPP1PPP/R1BQK2R w KQkq - 6 5", + "hash": 4329989041891798515, + "name": "Four Knights: Rubinstein Countergambit" + }, + "C48h": { + "eco": "C48h", + "fen": "r1bqkb1r/pppp1ppp/5n2/1B2N3/3nP3/2N5/PPPP1PPP/R1BQK2R b KQkq - 0 5", + "hash": 9391345441965459653, + "name": "Four Knights: Rubinstein, 5.Nxe5" + }, + "C48i": { + "eco": "C48i", + "fen": "r1bqkb1r/pppp1ppp/5n2/1B2p3/3nP3/2N2N2/PPPP1PPP/R1BQ1RK1 b kq - 7 5", + "hash": 4783470570693506787, + "name": "Four Knights: Rubinstein, Henneberger Variation" + }, + "C48j": { + "eco": "C48j", + "fen": "r1bqkb1r/pppp1ppp/5n2/4p3/2BnP3/2N2N2/PPPP1PPP/R1BQK2R b KQkq - 7 5", + "hash": 10713066506678939103, + "name": "Four Knights: Rubinstein, 5.Bc4" + }, + "C48k": { + "eco": "C48k", + "fen": "r1bqkb1r/pppp1ppp/5n2/1B2p3/3NP3/2N5/PPPP1PPP/R1BQK2R b KQkq - 0 5", + "hash": 15687462012168339176, + "name": "Four Knights: Rubinstein, Exchange Variation" + }, + "C48l": { + "eco": "C48l", + "fen": "r1b1k2r/pppp1ppp/5q2/1Bb5/8/2P5/PPP2PPP/R1BQK2R w KQkq - 1 9", + "hash": 3728746000041489728, + "name": "Four Knights: Rubinstein, Exchange Variation, 8...Bc5" + }, + "C48m": { + "eco": "C48m", + "fen": "r1b1kb1r/pppp1ppp/8/1B2q3/8/2P5/PPP2PPP/R1BQK2R w KQkq - 1 9", + "hash": 7351799763281363191, + "name": "Four Knights: Rubinstein, Exchange Variation, 8...Qe5+" + }, + "C48n": { + "eco": "C48n", + "fen": "r1bqkb1r/pppp1ppp/5n2/4p3/B2nP3/2N2N2/PPPP1PPP/R1BQK2R b KQkq - 7 5", + "hash": 942510525663483097, + "name": "Four Knights: Rubinstein, 5.Ba4" + }, + "C48o": { + "eco": "C48o", + "fen": "r1bqkb1r/pp1p1ppp/2p2n2/4p3/B2nP3/2N2N2/PPPP1PPP/R1BQK2R w KQkq - 0 6", + "hash": 11488284330413639522, + "name": "Four Knights: Rubinstein, 5.Ba4 c6" + }, + "C48p": { + "eco": "C48p", + "fen": "r1bqkb1r/pp1p1ppp/2p2n2/4N3/B2nP3/2N5/PPPP1PPP/R1BQK2R b KQkq - 0 6", + "hash": 2390673906938896980, + "name": "Four Knights: Rubinstein, 5.Ba4 c6 6.Nxe5" + }, + "C48q": { + "eco": "C48q", + "fen": "r1bqk2r/pppp1ppp/5n2/2b1p3/B2nP3/2N2N2/PPPP1PPP/R1BQK2R w KQkq - 8 6", + "hash": 11531814358616112730, + "name": "Four Knights: Rubinstein, 5.Ba4 Bc5" + }, + "C48r": { + "eco": "C48r", + "fen": "r1bqk2r/pppp1ppp/5n2/2b1N3/B2nP3/2N5/PPPP1PPP/R1BQK2R b KQkq - 0 6", + "hash": 2182777920669440876, + "name": "Four Knights: Rubinstein, 5.Ba4 Bc5 6.Nxe5" + }, + "C49a": { + "eco": "C49a", + "fen": "r1bqk2r/pppp1ppp/2n2n2/1B2p3/1b2P3/2N2N2/PPPP1PPP/R1BQK2R w KQkq - 6 5", + "hash": 2462118728632427888, + "name": "Four Knights: 4.Bb5 Bb4" + }, + "C49b": { + "eco": "C49b", + "fen": "r1bqk2r/pppp1ppp/2n2n2/1B2p3/1b2P3/2N2N2/PPPP1PPP/R1BQ1RK1 b kq - 7 5", + "hash": 6655837306656341600, + "name": "Four Knights: 4.Bb5 Bb4 5.O-O" + }, + "C49c": { + "eco": "C49c", + "fen": "r1bq1rk1/pppp1ppp/2n2n2/1B2p3/1b2P3/2N2N2/PPPP1PPP/R1BQ1RK1 w - - 8 6", + "hash": 6266377849156065163, + "name": "Four Knights: 4.Bb5 Bb4 5.O-O O-O" + }, + "C49d": { + "eco": "C49d", + "fen": "r1bq1rk1/pppp1ppp/2B2n2/4p3/1b2P3/2N2N2/PPPP1PPP/R1BQ1RK1 b - - 0 6", + "hash": 565658692004087728, + "name": "Four Knights: Nimzowitsch (Paulsen) Variation" + }, + "C49e": { + "eco": "C49e", + "fen": "r1bq1rk1/pppp1ppp/2n2n2/1B2p3/1b2P3/2NP1N2/PPP2PPP/R1BQ1RK1 b - - 0 6", + "hash": 17893477135797087327, + "name": "Four Knights: Double Bishops, 6.d3" + }, + "C49f": { + "eco": "C49f", + "fen": "r1bq1rk1/pppp1ppp/2n2n2/1B2p3/4P3/2bP1N2/PPP2PPP/R1BQ1RK1 w - - 0 7", + "hash": 15666648304563404373, + "name": "Four Knights: Double Bishops, 6.d3 Bxc3" + }, + "C49g": { + "eco": "C49g", + "fen": "r1bq1rk1/ppp2ppp/2np1n2/1B2p3/1b2P3/2NP1N2/PPP2PPP/R1BQ1RK1 w - - 0 7", + "hash": 13972682583179928882, + "name": "Four Knights: Symmetrical Variation" + }, + "C49h": { + "eco": "C49h", + "fen": "r1bq1rk1/ppp2ppp/2np1n2/1B2p3/1b2P3/3P1N2/PPP1NPPP/R1BQ1RK1 b - - 1 7", + "hash": 8211131781023620498, + "name": "Four Knights: Symmetrical, Maroczy System" + }, + "C49i": { + "eco": "C49i", + "fen": "r1bq1rk1/ppp2ppp/2np1n2/1B2p1B1/1b2P3/2NP1N2/PPP2PPP/R2Q1RK1 b - - 1 7", + "hash": 554690361292816122, + "name": "Four Knights: Symmetrical, 7.Bg5" + }, + "C49j": { + "eco": "C49j", + "fen": "r2q1rk1/ppp2ppp/2npbn2/1B2p1B1/1b2P3/2NP1N2/PPP2PPP/R2Q1RK1 w - - 2 8", + "hash": 5983653490386634226, + "name": "Four Knights: Symmetrical, Tarrasch Variation" + }, + "C49k": { + "eco": "C49k", + "fen": "r1bq1rk1/ppp1nppp/3p1n2/1B2p1B1/1b2P3/2NP1N2/PPP2PPP/R2Q1RK1 w - - 2 8", + "hash": 241663449853490667, + "name": "Four Knights: Symmetrical, Pillsbury Variation" + }, + "C49l": { + "eco": "C49l", + "fen": "r1bq1rk1/ppp2ppp/2np1n2/1B2p1B1/4P3/2bP1N2/PPP2PPP/R2Q1RK1 w - - 0 8", + "hash": 2777556551916367088, + "name": "Four Knights: Symmetrical, 7.Bg5 Bxc3" + }, + "C49m": { + "eco": "C49m", + "fen": "r1bq1rk1/ppp2pp1/2np1n1p/1B2p1B1/4P3/2PP1N2/P1P2PPP/R2Q1RK1 w - - 0 9", + "hash": 18422534618633734821, + "name": "Four Knights: Symmetrical, 7.Bg5 Bxc3 8.bxc3 h6" + }, + "C49n": { + "eco": "C49n", + "fen": "r1b2rk1/ppp1qppp/2np1n2/1B2p1B1/4P3/2PP1N2/P1P2PPP/R2Q1RK1 w - - 1 9", + "hash": 17771601837819489754, + "name": "Four Knights: Symmetrical, Metger unpin" + }, + "C49o": { + "eco": "C49o", + "fen": "r2n1rk1/ppp1qppp/3p1n2/1B2p1B1/3PP1b1/2P2N2/P1P2PPP/R2QR1K1 w - - 1 11", + "hash": 6236394156190649432, + "name": "Four Knights: Symmetrical, Metger, Capablanca Variation" + }, + "C49p": { + "eco": "C49p", + "fen": "r1b2rk1/ppp1qppp/3pnn2/1B2p1B1/3PP3/2P2N2/P1P2PPP/R2QR1K1 w - - 1 11", + "hash": 8402665488242839821, + "name": "Four Knights: Symmetrical, Metger, 10.d4 Ne6" + }, + "C49q": { + "eco": "C49q", + "fen": "r1br2k1/ppp1qppp/3pnn2/1B2p3/3PP3/2P2N2/P1P2PPP/R1BQR1K1 w - - 3 12", + "hash": 17187841351747078743, + "name": "Four Knights: Symmetrical, Metger, 10.d4 Ne6 11.Bc1 Rd8" + }, + "C49r": { + "eco": "C49r", + "fen": "r1b2rk1/pp2qppp/3pnn2/1Bp1p3/3PP3/2P2N2/P1P2PPP/R1BQR1K1 w - c6 0 12", + "hash": 6104564588113281464, + "name": "Four Knights: Symmetrical, Metger, 10.d4 Ne6 11.Bc1 c5" + }, + "C50a": { + "eco": "C50a", + "fen": "r1bqkbnr/pppp1ppp/2n5/4p3/2B1P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 3 3", + "hash": 1981041941088873272, + "name": "Italian Game" + }, + "C50b": { + "eco": "C50b", + "fen": "r1bqkbnr/pppp2pp/2n5/4pp2/2B1P3/5N2/PPPP1PPP/RNBQK2R w KQkq f6 0 4", + "hash": 10309150487395993318, + "name": "Italian: Rousseau Gambit" + }, + "C50c": { + "eco": "C50c", + "fen": "r1bqkbnr/pppp1ppp/8/4p3/2BnP3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4", + "hash": 14700734103515622297, + "name": "Italian: Blackburne-Shilling Gambit" + }, + "C50d": { + "eco": "C50d", + "fen": "r1bqkbnr/ppp2ppp/2np4/4p3/2B1P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 4", + "hash": 2505273836702327381, + "name": "Italian: 3...d6" + }, + "C50e": { + "eco": "C50e", + "fen": "r1bqk1nr/ppppbppp/2n5/4p3/2B1P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4", + "hash": 1131072876945541033, + "name": "Italian: Hungarian Defence" + }, + "C50f": { + "eco": "C50f", + "fen": "r1bqk1nr/ppppbppp/2n5/8/2BpP3/5N2/PPP2PPP/RNBQK2R w KQkq - 0 5", + "hash": 5906829219494182654, + "name": "Italian: Hungarian Defence, 4.d4 exd4" + }, + "C50g": { + "eco": "C50g", + "fen": "r1bqk1nr/ppp1bppp/2np4/4p3/2BPP3/5N2/PPP2PPP/RNBQK2R w KQkq - 0 5", + "hash": 17527403928329282438, + "name": "Italian: Hungarian Defence, 4.d4 d6" + }, + "C50h": { + "eco": "C50h", + "fen": "r1bqk1nr/pppp1ppp/2n5/2b1p3/2B1P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4", + "hash": 13142444336106062267, + "name": "Giuoco Piano" + }, + "C50i": { + "eco": "C50i", + "fen": "r1bqk1nr/pppp1ppp/2n5/2b1p3/2B1P3/2N2N2/PPPP1PPP/R1BQK2R b KQkq - 5 4", + "hash": 5617202455357997922, + "name": "Giuoco Piano: Three Knights Variation" + }, + "C50j": { + "eco": "C50j", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1p3/2B1P3/2N2N2/PPPP1PPP/R1BQK2R w KQkq - 6 5", + "hash": 1592720841146794740, + "name": "Giuoco Piano: Four Knights Variation" + }, + "C50k": { + "eco": "C50k", + "fen": "r1bqk1nr/pppp1ppp/2n5/2b1p3/2B1P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 5 4", + "hash": 14417759951416040107, + "name": "Giuoco Piano: 4.O-O" + }, + "C50l": { + "eco": "C50l", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1p3/2B1P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 6 5", + "hash": 10662299314153052989, + "name": "Giuoco Piano: 4.O-O Nf6" + }, + "C50m": { + "eco": "C50m", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1p3/2B1P3/2N2N2/PPPP1PPP/R1BQ1RK1 b kq - 7 5", + "hash": 7525233635068828132, + "name": "Giuoco Piano: 4.O-O Nf6 5.Nc3" + }, + "C50n": { + "eco": "C50n", + "fen": "r1bqk1nr/pppp1ppp/2n5/2b1p3/2B1P3/3P1N2/PPP2PPP/RNBQK2R b KQkq - 0 4", + "hash": 1785559229527161455, + "name": "Giuoco Pianissimo: 4.d3" + }, + "C50o": { + "eco": "C50o", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1p3/2B1P3/3P1N2/PPP2PPP/RNBQK2R w KQkq - 1 5", + "hash": 4839575596358482937, + "name": "Giuoco Pianissimo: 4.d3 Nf6" + }, + "C50p": { + "eco": "C50p", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1p3/2B1P3/3P1N2/PPP2PPP/RNBQ1RK1 b kq - 2 5", + "hash": 4421650179806683369, + "name": "Giuoco Pianissimo: 4.d3 Nf6 5.O-O" + }, + "C50q": { + "eco": "C50q", + "fen": "r1bqk2r/ppp2ppp/2np1n2/2b1p3/2B1P3/3P1N2/PPP2PPP/RNBQ1RK1 w kq - 0 6", + "hash": 353054320537840004, + "name": "Giuoco Pianissimo: 4.d3 Nf6 5.O-O d6" + }, + "C50r": { + "eco": "C50r", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1p3/2B1P3/2NP1N2/PPP2PPP/R1BQK2R b KQkq - 2 5", + "hash": 13312280957642488096, + "name": "Giuoco Pianissimo: Italian Four Knights" + }, + "C50s": { + "eco": "C50s", + "fen": "r1bqk2r/ppp2ppp/2np1n2/2b1p3/2B1P3/2NP1N2/PPP2PPP/R1BQK2R w KQkq - 0 6", + "hash": 9296606787140743245, + "name": "Giuoco Pianissimo: Italian Four Knights, 5...d6" + }, + "C50t": { + "eco": "C50t", + "fen": "r1bqk2r/ppp2ppp/2np1n2/2b1p3/2B1P3/2NPBN2/PPP2PPP/R2QK2R b KQkq - 1 6", + "hash": 17441479776127183811, + "name": "Giuoco Pianissimo: Italian Four Knights, 5...d6 6.Be3" + }, + "C50u": { + "eco": "C50u", + "fen": "r1bqk2r/ppp2ppp/2np1n2/2b1p1B1/2B1P3/2NP1N2/PPP2PPP/R2QK2R b KQkq - 1 6", + "hash": 5142681590128225157, + "name": "Giuoco Pianissimo: Canal Variation" + }, + "C50v": { + "eco": "C50v", + "fen": "r1bqk2r/ppp2pp1/2np1n1p/2b1p1B1/2B1P3/2NP1N2/PPP2PPP/R2QK2R w KQkq - 0 7", + "hash": 15395892662214910608, + "name": "Giuoco Pianissimo: Canal, 6...h6" + }, + "C51": { + "eco": "C51", + "fen": "r1bqk1nr/pppp1ppp/2n5/2b1p3/1PB1P3/5N2/P1PP1PPP/RNBQK2R b KQkq b3 0 4", + "hash": 2059872162009066911, + "name": "Evans Gambit" + }, + "C52": { + "eco": "C52", + "fen": "r1bqk1nr/pppp1ppp/2n5/b3p3/2B1P3/2P2N2/P2P1PPP/RNBQK2R w KQkq - 1 6", + "hash": 8542267209002381339, + "name": "Evans Gambit: 5...Ba5" + }, + "C53": { + "eco": "C53", + "fen": "r1bqk1nr/pppp1ppp/2n5/2b1p3/2B1P3/2P2N2/PP1P1PPP/RNBQK2R b KQkq - 0 4", + "hash": 13887324324685303357, + "name": "Giuoco Piano: 4.c3" + }, + "C54a": { + "eco": "C54a", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1p3/2B1P3/2P2N2/PP1P1PPP/RNBQK2R w KQkq - 1 5", + "hash": 11193585894164008875, + "name": "Giuoco Piano: 4.c3 Nf6" + }, + "C54b": { + "eco": "C54b", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1p3/2B1P3/2P2N2/PP1P1PPP/RNBQ1RK1 b kq - 2 5", + "hash": 16511005633219908795, + "name": "Giuoco Piano: Albin Gambit" + }, + "C54c": { + "eco": "C54c", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1p3/1PB1P3/2P2N2/P2P1PPP/RNBQK2R b KQkq b3 0 5", + "hash": 3576683546092135311, + "name": "Giuoco Piano: Bird's Attack" + }, + "C54d": { + "eco": "C54d", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1p3/2B1P3/2PP1N2/PP3PPP/RNBQK2R b KQkq - 0 5", + "hash": 3887548509920474239, + "name": "Giuoco Pianissimo: 5.d3" + }, + "C54e": { + "eco": "C54e", + "fen": "r1bqk2r/1ppp1ppp/p1n2n2/2b1p3/2B1P3/2PP1N2/PP3PPP/RNBQK2R w KQkq - 0 6", + "hash": 16646616172796071075, + "name": "Giuoco Pianissimo: 5.d3 a6" + }, + "C54f": { + "eco": "C54f", + "fen": "r1bqk2r/ppp2ppp/2np1n2/2b1p3/2B1P3/2PP1N2/PP3PPP/RNBQK2R w KQkq - 0 6", + "hash": 885466006037789970, + "name": "Giuoco Pianissimo: 5.d3 d6" + }, + "C54g": { + "eco": "C54g", + "fen": "r1bqk2r/ppp2ppp/2np1n2/2b1p3/2B1P3/2PP1N2/PP1N1PPP/R1BQK2R b KQkq - 1 6", + "hash": 6136003612312950050, + "name": "Giuoco Pianissimo: 5.d3 d6 6.Nbd2" + }, + "C54h": { + "eco": "C54h", + "fen": "r1bqk2r/ppp2ppp/2np1n2/2b1p3/2B1P3/2PP1N2/PP3PPP/RNBQ1RK1 b kq - 1 6", + "hash": 8231653850657007106, + "name": "Giuoco Pianissimo: 5.d3 d6 6.O-O" + }, + "C54i": { + "eco": "C54i", + "fen": "r1bq1rk1/ppp2ppp/2np1n2/2b1p3/2B1P3/2PP1N2/PP3PPP/RNBQ1RK1 w - - 2 7", + "hash": 8688666508705583081, + "name": "Giuoco Pianissimo: 5.d3 d6 6.O-O O-O" + }, + "C54j": { + "eco": "C54j", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1p3/2BPP3/2P2N2/PP3PPP/RNBQK2R b KQkq d3 0 5", + "hash": 6801197100818309865, + "name": "Giuoco Piano: 5.d4" + }, + "C54k": { + "eco": "C54k", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1P3/2Bp4/2P2N2/PP3PPP/RNBQK2R b KQkq - 0 6", + "hash": 11846059960437051544, + "name": "Giuoco Piano: 6.e5" + }, + "C54l": { + "eco": "C54l", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b5/2BPP3/5N2/PP3PPP/RNBQK2R b KQkq - 0 6", + "hash": 7614016266946362074, + "name": "Giuoco Piano: 6.cxd4" + }, + "C54m": { + "eco": "C54m", + "fen": "r1bqk2r/pppp1ppp/2n2n2/8/1bBPP3/5N2/PP1B1PPP/RN1QK2R b KQkq - 2 7", + "hash": 15901429865163912822, + "name": "Giuoco Piano: 6.cxd4 Bb4+ 7.Bd2" + }, + "C54n": { + "eco": "C54n", + "fen": "r1bqk2r/pppp1ppp/2n2n2/8/1bBPP3/2N2N2/PP3PPP/R1BQK2R b KQkq - 2 7", + "hash": 1060448323978272683, + "name": "Giuoco Piano: Greco Attack" + }, + "C54o": { + "eco": "C54o", + "fen": "r1bqk2r/pppp1ppp/2n5/8/2BPn3/2b2N2/PP3PPP/R1BQ1RK1 w kq - 0 9", + "hash": 17027043985639485858, + "name": "Giuoco Piano: Greco Attack" + }, + "C55a": { + "eco": "C55a", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/2B1P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4", + "hash": 4652262204718639790, + "name": "Two Knights Defence" + }, + "C55b": { + "eco": "C55b", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b1p3/2BPP3/5N2/PPP2PPP/RNBQ1RK1 b kq d3 0 5", + "hash": 6254716026008827519, + "name": "Two Knights: Deutz Gambit" + }, + "C55c": { + "eco": "C55c", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/2B1P3/3P1N2/PPP2PPP/RNBQK2R b KQkq - 0 4", + "hash": 17164594797838225786, + "name": "Two Knights: 4.d3" + }, + "C55d": { + "eco": "C55d", + "fen": "r1bqkb1r/pppp1pp1/2n2n1p/4p3/2B1P3/3P1N2/PPP2PPP/RNBQK2R w KQkq - 0 5", + "hash": 8990222109112146031, + "name": "Two Knights: 4.d3 h6" + }, + "C55e": { + "eco": "C55e", + "fen": "r1bqk2r/ppppbppp/2n2n2/4p3/2B1P3/3P1N2/PPP2PPP/RNBQK2R w KQkq - 1 5", + "hash": 18084371331159293419, + "name": "Two Knights: 4.d3 Be7" + }, + "C55f": { + "eco": "C55f", + "fen": "r1bqk2r/ppppbppp/2n2n2/4p3/2B1P3/2PP1N2/PP3PPP/RNBQK2R b KQkq - 0 5", + "hash": 10097755849070080621, + "name": "Two Knights: 4.d3 Be7 5.c3" + }, + "C55g": { + "eco": "C55g", + "fen": "r1bqk2r/ppppbppp/2n2n2/4p3/2B1P3/3P1N2/PPP2PPP/RNBQ1RK1 b kq - 2 5", + "hash": 9551550820281100027, + "name": "Two Knights: 4.d3 Be7 5.O-O" + }, + "C55h": { + "eco": "C55h", + "fen": "r1bq1rk1/ppppbppp/2n2n2/4p3/2B1P3/3P1N2/PPP2PPP/RNBQ1RK1 w - - 3 6", + "hash": 10242594485350158096, + "name": "Two Knights: 4.d3 Be7 5.O-O O-O" + }, + "C55i": { + "eco": "C55i", + "fen": "r1bq1rk1/ppppbppp/2n2n2/4p3/4P3/1B1P1N2/PPP2PPP/RNBQ1RK1 b - - 4 6", + "hash": 5125396852909121524, + "name": "Two Knights: 4.d3 Be7 5.O-O O-O 6.Bb3" + }, + "C55j": { + "eco": "C55j", + "fen": "r1bq1rk1/ppp1bppp/2np1n2/4p3/4P3/1BPP1N2/PP3PPP/RNBQ1RK1 b - - 0 7", + "hash": 594897024990959903, + "name": "Two Knights: 4.d3 Be7 5.O-O O-O 6.Bb3 d6 7.c3" + }, + "C55k": { + "eco": "C55k", + "fen": "r1bq1rk1/ppppbppp/2n2n2/4p3/2B1P3/3P1N2/PPP2PPP/RNBQR1K1 b - - 4 6", + "hash": 761407271883465732, + "name": "Two Knights: 4.d3 Be7 5.O-O O-O 6.Re1" + }, + "C55l": { + "eco": "C55l", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p3/2BPP3/5N2/PPP2PPP/RNBQK2R b KQkq d3 0 4", + "hash": 9630112696199530476, + "name": "Two Knights: 4.d4" + }, + "C55m": { + "eco": "C55m", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/8/2BNP3/8/PPP2PPP/RNBQK2R b KQkq - 0 5", + "hash": 8741310569773613527, + "name": "Two Knights: 4.d4 exd4 5.Nxd4" + }, + "C55n": { + "eco": "C55n", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/6N1/2BpP3/8/PPP2PPP/RNBQK2R b KQkq - 1 5", + "hash": 5190929836226653021, + "name": "Two Knights: Perreux Variation" + }, + "C55o": { + "eco": "C55o", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4P3/2Bp4/5N2/PPP2PPP/RNBQK2R b KQkq - 0 5", + "hash": 9196935406180300189, + "name": "Two Knights: Modern Variation" + }, + "C55p": { + "eco": "C55p", + "fen": "r1bqkb1r/ppp2ppp/2n2n2/3pP3/2Bp4/5N2/PPP2PPP/RNBQK2R w KQkq d6 0 6", + "hash": 16596302021288143642, + "name": "Two Knights: Modern, 5.e5 d5" + }, + "C55q": { + "eco": "C55q", + "fen": "r2qkb1r/pppb1ppp/2n5/1B1pP3/3Nn3/8/PPP2PPP/RNBQK2R w KQkq - 1 8", + "hash": 17090767713477899378, + "name": "Two Knights: Modern, Main Line" + }, + "C55r": { + "eco": "C55r", + "fen": "r2qk2r/p1pb1ppp/2p5/2bpP3/3Nn3/8/PPP2PPP/RNBQ1RK1 w kq - 2 10", + "hash": 12338157852387226096, + "name": "Two Knights: Modern, Main Line, 8.Bxc6 bxc6 9.O-O Bc5" + }, + "C55s": { + "eco": "C55s", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/8/2BpP3/5N2/PPP2PPP/RNBQ1RK1 b kq - 1 5", + "hash": 6966639604551846121, + "name": "Two Knights: 5.O-O" + }, + "C55t": { + "eco": "C55t", + "fen": "r1bqkb1r/ppp2ppp/2np1n2/8/2BpP3/5N2/PPP2PPP/RNBQ1RK1 w kq - 0 6", + "hash": 6419018903422452100, + "name": "Two Knights: 5.O-O d6" + }, + "C55u": { + "eco": "C55u", + "fen": "r1bqk2r/pppp1ppp/2n2n2/2b5/2BpP3/5N2/PPP2PPP/RNBQ1RK1 w kq - 2 6", + "hash": 14822258508519039594, + "name": "Two Knights: Max Lange Attack" + }, + "C55v": { + "eco": "C55v", + "fen": "r1bqk2r/pppp1ppp/2n5/2b1P3/2Bp2n1/5N2/PPP2PPP/RNBQ1RK1 w kq - 1 7", + "hash": 3596528991321544034, + "name": "Two Knights: Max Lange, Steinitz Variation" + }, + "C55w": { + "eco": "C55w", + "fen": "r1bqk2r/ppp2ppp/2n2n2/2bpP3/2Bp4/5N2/PPP2PPP/RNBQ1RK1 w kq d6 0 7", + "hash": 3835333701436906121, + "name": "Two Knights: Max Lange, 6.e5 d5" + }, + "C55x": { + "eco": "C55x", + "fen": "2kr3r/ppp2ppp/1bn1bPq1/6N1/2ppNPP1/8/PPP4P/R1BQR1K1 w - - 1 14", + "hash": 18174880444938282061, + "name": "Two Knights: Max Lange, Berger Variation" + }, + "C56a": { + "eco": "C56a", + "fen": "r1bqkb1r/pppp1ppp/2n5/8/2Bpn3/5N2/PPP2PPP/RNBQ1RK1 w kq - 0 6", + "hash": 15931826275219189754, + "name": "Two Knights: Classical" + }, + "C56b": { + "eco": "C56b", + "fen": "r1bqkb1r/pppp1ppp/2n5/8/2Bpn3/5N2/PPP2PPP/RNBQR1K1 b kq - 1 6", + "hash": 6461883840184190190, + "name": "Two Knights: Classical, 6.Re1" + }, + "C56c": { + "eco": "C56c", + "fen": "r1bqkb1r/ppp2ppp/2n5/3p4/2Bpn3/2N2N2/PPP2PPP/R1BQR1K1 b kq - 1 7", + "hash": 2832768202418866193, + "name": "Two Knights: Classical, Canal Variation" + }, + "C56d": { + "eco": "C56d", + "fen": "r1bqkb1r/ppp2ppp/2n5/3B4/3pn3/5N2/PPP2PPP/RNBQR1K1 b kq - 0 7", + "hash": 11438475542861888642, + "name": "Two Knights: Classical, 7.Bxd5" + }, + "C56e": { + "eco": "C56e", + "fen": "r1bqkb1r/ppp2ppp/2n5/8/3pn3/2N2N2/PPP2PPP/R1BQR1K1 w kq - 2 9", + "hash": 17498193803869454975, + "name": "Two Knights: Classical, 8.Nc3 Qd8" + }, + "C56f": { + "eco": "C56f", + "fen": "r1b1kb1r/ppp2ppp/2n5/7q/3pn3/2N2N2/PPP2PPP/R1BQR1K1 w kq - 2 9", + "hash": 10407967433004401569, + "name": "Two Knights: Classical, 8.Nc3 Qh5" + }, + "C56g": { + "eco": "C56g", + "fen": "r3k2r/ppp2ppp/2nbb3/6Bq/3pN3/5N2/PPP2PPP/R2QR1K1 w kq - 3 11", + "hash": 6308456882924886993, + "name": "Two Knights: Classical, 8.Nc3 Qh5 9.Nxe4 Be6 10.Bg5 Bd6" + }, + "C56h": { + "eco": "C56h", + "fen": "r1b1kb1r/ppp2ppp/2n5/q7/3pn3/2N2N2/PPP2PPP/R1BQR1K1 w kq - 2 9", + "hash": 15236699531774076665, + "name": "Two Knights: Classical, Moller Variation" + }, + "C56i": { + "eco": "C56i", + "fen": "r3kb1r/ppp2ppp/2n1b3/q5B1/3pN3/5N2/PPP2PPP/R2QR1K1 b kq - 2 10", + "hash": 12742776669778948013, + "name": "Two Knights: Classical, Moller, 10.Bg5" + }, + "C56j": { + "eco": "C56j", + "fen": "r3kb1r/ppp2ppp/2n1b3/q5N1/3p4/5N2/PPP2PPP/R1BQR1K1 b kq - 2 10", + "hash": 4750712779834135434, + "name": "Two Knights: Classical, Moller, 10.Neg5" + }, + "C56k": { + "eco": "C56k", + "fen": "2kr3r/ppp3pp/2nbR3/q7/3p4/5N2/PPP2PPP/R1BQ2K1 w - - 1 13", + "hash": 407127636100843341, + "name": "Two Knights: Classical, Moller, 10.Neg5 O-O-O 11.Nxe6 fxe6 12.Rxe6 Bd6" + }, + "C56l": { + "eco": "C56l", + "fen": "r3kb1r/ppp2ppp/2n1b3/q7/3pN3/5N2/PPPB1PPP/R2QR1K1 b kq - 2 10", + "hash": 6845579593037160289, + "name": "Two Knights: Classical, Moller, 10.Bd2" + }, + "C56m": { + "eco": "C56m", + "fen": "r3kb1r/ppp2ppp/2n1b3/5q2/3pN3/5N2/PPPB1PPP/R2QR1K1 w kq - 3 11", + "hash": 12096478334684990591, + "name": "Two Knights: Classical, Moller, 10.Bd2 Qf5" + }, + "C56n": { + "eco": "C56n", + "fen": "r3kb1r/ppp2ppp/2n1b3/3q4/3pN3/5N2/PPPB1PPP/R2QR1K1 w kq - 3 11", + "hash": 11634949794258235076, + "name": "Two Knights: Classical, Moller, 10.Bd2 Qd5" + }, + "C56o": { + "eco": "C56o", + "fen": "r3k2r/ppp2ppp/2n1b3/q7/1b1pN3/5N2/PPPB1PPP/R2QR1K1 w kq - 3 11", + "hash": 10826947454433449795, + "name": "Two Knights: Classical, Moller, 10.Bd2 Bb4" + }, + "C57a": { + "eco": "C57a", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/4p1N1/2B1P3/8/PPPP1PPP/RNBQK2R b KQkq - 5 4", + "hash": 1604062147375403530, + "name": "Two Knights: 4.Ng5" + }, + "C57b": { + "eco": "C57b", + "fen": "r1bqk2r/pppp1Npp/2n2n2/2b1p3/2B1P3/8/PPPP1PPP/RNBQK2R b KQkq - 0 5", + "hash": 14146641326720453683, + "name": "Two Knights: Traxler, 5.Nxf7" + }, + "C57c": { + "eco": "C57c", + "fen": "r1bqk2r/pppp1Npp/2n2n2/4p3/2B1P3/8/PPPP1bPP/RNBQ1K1R b kq - 1 6", + "hash": 11913397945319877898, + "name": "Two Knights: Traxler, 5.Nxf7 & 6.Kf1" + }, + "C57d": { + "eco": "C57d", + "fen": "r1bqk2r/pppp1Bpp/2n2n2/2b1p1N1/4P3/8/PPPP1PPP/RNBQK2R b KQkq - 0 5", + "hash": 1940156922684857084, + "name": "Two Knights: Traxler, 5.Bxf7+" + }, + "C57e": { + "eco": "C57e", + "fen": "r1bqkb1r/ppp2ppp/2n2n2/3pp1N1/2B1P3/8/PPPP1PPP/RNBQK2R w KQkq d6 0 5", + "hash": 10603976091408423980, + "name": "Two Knights: 4.Ng5 d5" + }, + "C57f": { + "eco": "C57f", + "fen": "r1bqkb1r/ppp2ppp/2n5/3np1N1/2BP4/8/PPP2PPP/RNBQK2R b KQkq d3 0 6", + "hash": 17162298682496855604, + "name": "Two Knights: Lolli Attack" + }, + "C57g": { + "eco": "C57g", + "fen": "r1bqkb1r/ppp2Npp/2n5/3np3/2B5/8/PPPP1PPP/RNBQK2R b KQkq - 0 6", + "hash": 6058714903045502924, + "name": "Two Knights: Fegatello (Fried Liver) Attack" + }, + "C57h": { + "eco": "C57h", + "fen": "r1bqkb1r/p1p2ppp/2n2n2/1p1Pp1N1/2B5/8/PPPP1PPP/RNBQK2R w KQkq b6 0 6", + "hash": 15344753812617339671, + "name": "Two Knights: Ulvestad Variation" + }, + "C57i": { + "eco": "C57i", + "fen": "r1bqkb1r/ppp2ppp/5n2/3Pp1N1/2Bn4/8/PPPP1PPP/RNBQK2R w KQkq - 1 6", + "hash": 7172689112368504459, + "name": "Two Knights: Fritz Variation" + }, + "C57j": { + "eco": "C57j", + "fen": "r1bqkb1r/p1p2Npp/8/1p1np3/3n4/2P5/PP1P1PPP/RNBQKB1R b KQkq - 0 8", + "hash": 17727482454706377584, + "name": "Two Knights: Fritz, 8.Nxf7" + }, + "C57k": { + "eco": "C57k", + "fen": "r1bqkb1r/p1p2ppp/8/1p1np3/3nN3/2P5/PP1P1PPP/RNBQKB1R b KQkq - 1 8", + "hash": 13720509452377636901, + "name": "Two Knights: Fritz, Gruber Variation (8.Ne4)" + }, + "C57l": { + "eco": "C57l", + "fen": "r3kb1r/pbp2ppp/8/1p1np3/3n3q/2P3N1/PP1P1PPP/RNBQKB1R w KQkq - 4 10", + "hash": 10216791907259423922, + "name": "Two Knights: Fritz, Radchenko Variation" + }, + "C57m": { + "eco": "C57m", + "fen": "r3kb1r/p1p2ppp/8/1p1n4/3np1bq/2P2PN1/PP1P2PP/RNBQKB1R w KQkq - 0 11", + "hash": 9096444356550724932, + "name": "Two Knights: Fritz, Berliner Variation" + }, + "C58a": { + "eco": "C58a", + "fen": "r1bqkb1r/ppp2ppp/5n2/n2Pp1N1/2B5/8/PPPP1PPP/RNBQK2R w KQkq - 1 6", + "hash": 16276225291237571616, + "name": "Two Knights: Morphy Variation (5...Na5)" + }, + "C58b": { + "eco": "C58b", + "fen": "r1bqkb1r/ppp2ppp/5n2/n2Pp1N1/2B5/3P4/PPP2PPP/RNBQK2R b KQkq - 0 6", + "hash": 5711698471952648180, + "name": "Two Knights: Morphy, Kieseritsky Variation" + }, + "C58c": { + "eco": "C58c", + "fen": "r1bqkb1r/ppp2pp1/5n1p/n2P4/2B1p3/3P1N2/PPP1QPPP/RNB1K2R b KQkq - 1 8", + "hash": 3630217412856001079, + "name": "Two Knights: Morphy, Kieseritsky Variation, 6...h6 7.Nf3 e4 8.Qe2" + }, + "C58d": { + "eco": "C58d", + "fen": "r1bqkb1r/ppp2ppp/5n2/nB1Pp1N1/8/8/PPPP1PPP/RNBQK2R b KQkq - 2 6", + "hash": 5285967602387090444, + "name": "Two Knights: Morphy, Polerio (6.Bb5+)" + }, + "C58e": { + "eco": "C58e", + "fen": "r1bqkb1r/pp3ppp/2p2n2/nB1Pp1N1/8/8/PPPP1PPP/RNBQK2R w KQkq - 0 7", + "hash": 15790018764608745399, + "name": "Two Knights: Morphy, Polerio, 6...c6" + }, + "C58f": { + "eco": "C58f", + "fen": "r1bqkb1r/p4ppp/2p2n2/nB2p1N1/8/5Q2/PPPP1PPP/RNB1K2R b KQkq - 1 8", + "hash": 13153175608685011344, + "name": "Two Knights: Morphy, Bogoljubow Variation" + }, + "C58g": { + "eco": "C58g", + "fen": "1rbqkb1r/p4ppp/2p2n2/nB2p1N1/8/5Q2/PPPP1PPP/RNB1K2R w KQk - 2 9", + "hash": 3520753591980132403, + "name": "Two Knights: Morphy, Colman Variation" + }, + "C58h": { + "eco": "C58h", + "fen": "r1bqkb1r/p4ppp/2p2n2/n3p1N1/8/8/PPPPBPPP/RNBQK2R b KQkq - 1 8", + "hash": 12980350805804296962, + "name": "Two Knights: Morphy, 8.Be2" + }, + "C59a": { + "eco": "C59a", + "fen": "r1bqkb1r/p4pp1/2p2n1p/n3p1N1/8/8/PPPPBPPP/RNBQK2R w KQkq - 0 9", + "hash": 2797917542780232215, + "name": "Two Knights: Morphy, 8.Be2 h6" + }, + "C59b": { + "eco": "C59b", + "fen": "r1bqkb1r/p4pp1/2p2n1p/n3p3/8/7N/PPPPBPPP/RNBQK2R b KQkq - 1 9", + "hash": 13883723002185516116, + "name": "Two Knights: Morphy, Steinitz Variation" + }, + "C59c": { + "eco": "C59c", + "fen": "r1bqkb1r/p4pp1/2p2n1p/n3p3/8/5N2/PPPPBPPP/RNBQK2R b KQkq - 1 9", + "hash": 8072371360974969523, + "name": "Two Knights: Morphy, Main Line 9.Nf3" + }, + "C59d": { + "eco": "C59d", + "fen": "r1bqk2r/p4pp1/2p2n1p/n1b1N3/4p3/8/PPPPBPPP/RNBQK2R w KQkq - 2 11", + "hash": 3397249043347884720, + "name": "Two Knights: Morphy, Steiner Variation" + }, + "C59e": { + "eco": "C59e", + "fen": "r1b1kb1r/p1q2pp1/2p2n1p/n3N3/4p3/8/PPPPBPPP/RNBQK2R w KQkq - 2 11", + "hash": 9522596961479356210, + "name": "Two Knights: Morphy, Gring Variation" + }, + "C59f": { + "eco": "C59f", + "fen": "r1b1kb1r/p4pp1/2p2n1p/n3N3/3qp3/8/PPPPBPPP/RNBQK2R w KQkq - 2 11", + "hash": 14601480101904837788, + "name": "Two Knights: Morphy, Geller Variation" + }, + "C59g": { + "eco": "C59g", + "fen": "r1bqk2r/p4pp1/2pb1n1p/n3N3/4p3/8/PPPPBPPP/RNBQK2R w KQkq - 2 11", + "hash": 2765313355636896023, + "name": "Two Knights: Main Line 10...Bd6" + }, + "C59h": { + "eco": "C59h", + "fen": "r1bqk2r/p4pp1/2pb1n1p/n3N3/4pP2/8/PPPPB1PP/RNBQK2R b KQkq f3 0 11", + "hash": 833837385646389228, + "name": "Two Knights: Main Line, 11.f4" + }, + "C59i": { + "eco": "C59i", + "fen": "r1bqk2r/p4pp1/2pb1n1p/n3N3/8/5p2/PPPPB1PP/RNBQK2R w KQkq - 0 12", + "hash": 7856685951669048093, + "name": "Two Knights: Main Line, 11.f4 exf3" + }, + "C59j": { + "eco": "C59j", + "fen": "r1bqk2r/p4pp1/2pb1n1p/n3N3/3Pp3/8/PPP1BPPP/RNBQK2R b KQkq d3 0 11", + "hash": 18432297183787142388, + "name": "Two Knights: Main Line, 11.d4" + }, + "C59k": { + "eco": "C59k", + "fen": "r1bqk2r/p4pp1/2pb1n1p/n3N3/8/3p4/PPP1BPPP/RNBQK2R w KQkq - 0 12", + "hash": 14634844824036939182, + "name": "Two Knights: Main Line, 11.d4 exd3" + }, + "C59l": { + "eco": "C59l", + "fen": "r1b1k2r/p1q2pp1/2pb1n1p/n7/8/1P1N4/P1P1BPPP/RNBQK2R b KQkq - 0 13", + "hash": 17185746986053918444, + "name": "Two Knights: Main Line, 11.d4, Honfi Variation" + }, + "C60a": { + "eco": "C60a", + "fen": "r1bqkbnr/pppp1ppp/2n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 3 3", + "hash": 5409798013178080797, + "name": "Spanish (Ruy Lopez)" + }, + "C60b": { + "eco": "C60b", + "fen": "r1bqkbnr/1ppp1ppp/2n5/pB2p3/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq a6 0 4", + "hash": 14774554869944279693, + "name": "Spanish: 3...a5" + }, + "C60c": { + "eco": "C60c", + "fen": "r1bqkbnr/pppp2pp/2n2p2/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 4", + "hash": 9747602586449279330, + "name": "Spanish: Nrnberg Variation" + }, + "C60d": { + "eco": "C60d", + "fen": "r1bqkbnr/pppp1ppp/8/nB2p3/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4", + "hash": 2162955240635845655, + "name": "Spanish: Pollock Defence" + }, + "C60e": { + "eco": "C60e", + "fen": "r1bqk1nr/ppppbppp/2n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4", + "hash": 6908246189074563724, + "name": "Spanish: Lucena Defence" + }, + "C60f": { + "eco": "C60f", + "fen": "r1b1kbnr/ppppqppp/2n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4", + "hash": 15054594372511940727, + "name": "Spanish: Vinogradov Variation" + }, + "C60g": { + "eco": "C60g", + "fen": "r1bqkbnr/pppp1p1p/2n5/1B2p1p1/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq g6 0 4", + "hash": 14650357458839736727, + "name": "Spanish: Brentano Variation" + }, + "C60h": { + "eco": "C60h", + "fen": "r1bqk1nr/pppp1ppp/2n5/1B2p3/1b2P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4", + "hash": 9390602976111896127, + "name": "Spanish: Alapin Variation" + }, + "C60i": { + "eco": "C60i", + "fen": "r1bqk1nr/pppp1ppp/2n5/1B2p3/1b2P3/2P2N2/PP1P1PPP/RNBQK2R b KQkq - 0 4", + "hash": 17620587803774560697, + "name": "Spanish: Alapin, 4.c3" + }, + "C60j": { + "eco": "C60j", + "fen": "r1bqkbnr/pppp1p1p/2n3p1/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 4", + "hash": 11720378311088045142, + "name": "Spanish: Fianchetto (Smyslov) Defence" + }, + "C60k": { + "eco": "C60k", + "fen": "r1bqkbnr/pppp1p1p/2n3p1/1B2p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 1 4", + "hash": 15911884674279647046, + "name": "Spanish: Fianchetto, 4.O-O" + }, + "C60l": { + "eco": "C60l", + "fen": "r1bqkbnr/pppp1p1p/2n3p1/1B2p3/3PP3/5N2/PPP2PPP/RNBQK2R b KQkq d3 0 4", + "hash": 7463038871627976980, + "name": "Spanish: Fianchetto, 4.d4" + }, + "C60m": { + "eco": "C60m", + "fen": "r1bqkbnr/pppp1p1p/2n3p1/1B4B1/3pP3/5N2/PPP2PPP/RN1QK2R b KQkq - 1 5", + "hash": 4230665538547785417, + "name": "Spanish: Fianchetto, 4.d4 exd4 5.Bg5" + }, + "C60n": { + "eco": "C60n", + "fen": "r1bqkbnr/pppp1p1p/2n3p1/1B2p3/4P3/2P2N2/PP1P1PPP/RNBQK2R b KQkq - 0 4", + "hash": 15311637724761977808, + "name": "Spanish: Fianchetto, 4.c3" + }, + "C60o": { + "eco": "C60o", + "fen": "r1bqkb1r/ppppnppp/2n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4", + "hash": 8456856425285445024, + "name": "Spanish: Cozio Defence" + }, + "C60p": { + "eco": "C60p", + "fen": "r1bqkb1r/ppppnppp/2n5/1B2p3/4P3/2N2N2/PPPP1PPP/R1BQK2R b KQkq - 5 4", + "hash": 10289549487336384377, + "name": "Spanish: Cozio, 4.Nc3" + }, + "C60q": { + "eco": "C60q", + "fen": "r1bqkb1r/ppppnp1p/2n3p1/1B2p3/4P3/2N2N2/PPPP1PPP/R1BQK2R w KQkq - 0 5", + "hash": 7457822330391328050, + "name": "Spanish: Cozio, Paulsen Variation" + }, + "C60r": { + "eco": "C60r", + "fen": "r1bqkb1r/ppppnppp/2n5/1B2p3/4P3/2P2N2/PP1P1PPP/RNBQK2R b KQkq - 0 4", + "hash": 253945971945138726, + "name": "Spanish: Cozio, 4.O-O" + }, + "C60s": { + "eco": "C60s", + "fen": "r1bqkb1r/ppppnppp/2n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 5 4", + "hash": 804368796863020720, + "name": "Spanish: Cozio, 4.O-O" + }, + "C60t": { + "eco": "C60t", + "fen": "r1bqkb1r/ppppnp1p/2n3p1/1B2p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 0 5", + "hash": 16329456810935332091, + "name": "Spanish: Cozio, 4.O-O g6" + }, + "C60u": { + "eco": "C60u", + "fen": "r1bqkb1r/ppppnp1p/2n3p1/1B2p3/4P3/2P2N2/PP1P1PPP/RNBQ1RK1 b kq - 0 5", + "hash": 10684538238092321661, + "name": "Spanish: Cozio, 4.O-O g6" + }, + "C61a": { + "eco": "C61a", + "fen": "r1bqkbnr/pppp1ppp/8/1B2p3/3nP3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4", + "hash": 11271975782963195580, + "name": "Spanish: Bird's Defence" + }, + "C61b": { + "eco": "C61b", + "fen": "r1bqkbnr/pppp1ppp/8/4p3/2BnP3/5N2/PPPP1PPP/RNBQK2R b KQkq - 5 4", + "hash": 3807047385480392336, + "name": "Spanish: Bird's, 4.Bc4" + }, + "C61c": { + "eco": "C61c", + "fen": "r1bqkbnr/pppp1ppp/8/1B2p3/3NP3/8/PPPP1PPP/RNBQK2R b KQkq - 0 4", + "hash": 8776429094157073831, + "name": "Spanish: Bird's, 4.Nxd4" + }, + "C61d": { + "eco": "C61d", + "fen": "r1bqkbnr/pppp1ppp/8/1B6/3pP3/3P4/PPP2PPP/RNBQK2R b KQkq - 0 5", + "hash": 3398181147918340153, + "name": "Spanish: Bird's, 5.d3" + }, + "C61e": { + "eco": "C61e", + "fen": "r1bqkbnr/pppp1ppp/8/8/2BpP3/8/PPPP1PPP/RNBQK2R b KQkq - 1 5", + "hash": 2969916452745407425, + "name": "Spanish: Bird's, 5.Bc4" + }, + "C61f": { + "eco": "C61f", + "fen": "r1bqkbnr/pppp1ppp/8/1B6/3pP3/8/PPPP1PPP/RNBQ1RK1 b kq - 1 5", + "hash": 18444909396094447869, + "name": "Spanish: Bird's, 5.O-O" + }, + "C61g": { + "eco": "C61g", + "fen": "r1bqkbnr/pp1p1ppp/2p5/1B6/3pP3/8/PPPP1PPP/RNBQ1RK1 w kq - 0 6", + "hash": 7891316661783470918, + "name": "Spanish: Bird's, 5.O-O c6" + }, + "C61h": { + "eco": "C61h", + "fen": "r1bqkbnr/pp1p1ppp/2p5/8/2BpP3/8/PPPP1PPP/RNBQ1RK1 b kq - 1 6", + "hash": 14211343491254543210, + "name": "Spanish: Bird's, 5.O-O c6 6.Bc4" + }, + "C61i": { + "eco": "C61i", + "fen": "r1bqk1nr/pppp1ppp/8/1Bb5/3pP3/8/PPPP1PPP/RNBQ1RK1 w kq - 2 6", + "hash": 5972968297015777918, + "name": "Spanish: Bird's, 5.O-O Bc5" + }, + "C61j": { + "eco": "C61j", + "fen": "r1bqk1nr/pppp1ppp/8/1Bb5/3pP3/3P4/PPP2PPP/RNBQ1RK1 b kq - 0 6", + "hash": 18176806067875029418, + "name": "Spanish: Bird's, 5.O-O Bc5 6.d3" + }, + "C61k": { + "eco": "C61k", + "fen": "r1bqk1nr/pp1p1ppp/2p5/1Bb5/3pP3/3P4/PPP2PPP/RNBQ1RK1 w kq - 0 7", + "hash": 7942679855858709009, + "name": "Spanish: Bird's, 5.O-O Bc5 6.d3 c6" + }, + "C61l": { + "eco": "C61l", + "fen": "r1bqk1nr/pp1p1ppp/2p5/2b5/2BpP3/3P4/PPP2PPP/RNBQ1RK1 b kq - 1 7", + "hash": 14303804132256592445, + "name": "Spanish: Bird's, 5.O-O Bc5 6.d3 c6 7.Bc4" + }, + "C61m": { + "eco": "C61m", + "fen": "r1bqk1nr/pp3ppp/2p5/2bp4/2BpP3/3P4/PPP2PPP/RNBQ1RK1 w kq d6 0 8", + "hash": 4894128592536960027, + "name": "Spanish: Bird's, 5.O-O Bc5 6.d3 c6 7.Bc4 d5" + }, + "C62": { + "eco": "C62", + "fen": "r1bqkbnr/ppp2ppp/2np4/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 4", + "hash": 8262382109317900144, + "name": "Spanish: Old Steinitz" + }, + "C63a": { + "eco": "C63a", + "fen": "r1bqkbnr/pppp2pp/2n5/1B2pp2/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq f6 0 4", + "hash": 16103764203707286467, + "name": "Spanish: Schliemann (Jnisch)" + }, + "C63b": { + "eco": "C63b", + "fen": "r1bqkbnr/pppp2pp/2n5/1B2pP2/8/5N2/PPPP1PPP/RNBQK2R b KQkq - 0 4", + "hash": 3724516987739105796, + "name": "Spanish: Schliemann, 4.exf5" + }, + "C63c": { + "eco": "C63c", + "fen": "r1bqkbnr/pppp2pp/2n5/1B2pp2/3PP3/5N2/PPP2PPP/RNBQK2R b KQkq d3 0 4", + "hash": 1894115018297241217, + "name": "Spanish: Schliemann, 4.d4" + }, + "C63d": { + "eco": "C63d", + "fen": "r1bqkbnr/pppp2pp/2n5/1B2pp2/4P3/3P1N2/PPP2PPP/RNBQK2R b KQkq - 0 4", + "hash": 8203539738398783511, + "name": "Spanish: Schliemann, 4.d3" + }, + "C63e": { + "eco": "C63e", + "fen": "r1bqkbnr/pppp2pp/2n5/1B2p3/4p3/3P1N2/PPP2PPP/RNBQK2R w KQkq - 0 5", + "hash": 12955585005746014172, + "name": "Spanish: Schliemann, 4.d3 fxe4" + }, + "C63f": { + "eco": "C63f", + "fen": "r1bqkb1r/pppp2pp/2n2n2/1B2p3/4P3/5N2/PPP2PPP/RNBQ1RK1 b kq - 2 6", + "hash": 3396572307032900910, + "name": "Spanish: Schliemann, 4.d3 fxe4 5.dxe4 Nf6 6.O-O" + }, + "C63g": { + "eco": "C63g", + "fen": "r1bqkbnr/pppp2pp/2B5/4pp2/4P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 0 4", + "hash": 10255587911215420408, + "name": "Spanish: Schliemann, 4.Bxc6" + }, + "C63h": { + "eco": "C63h", + "fen": "r1bqkbnr/ppp3pp/2p5/4pp2/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 5", + "hash": 13295479913523677575, + "name": "Spanish: Schliemann, 4.Bxc6 dxc6" + }, + "C63i": { + "eco": "C63i", + "fen": "r1bqkbnr/pppp2pp/2n5/1B2pp2/4P3/2N2N2/PPPP1PPP/R1BQK2R b KQkq - 1 4", + "hash": 2660229462653485338, + "name": "Spanish: Schliemann, 4.Nc3" + }, + "C63j": { + "eco": "C63j", + "fen": "r1bqkbnr/pppp2pp/8/1B2pp2/3nP3/2N2N2/PPPP1PPP/R1BQK2R w KQkq - 2 5", + "hash": 17552327080123367867, + "name": "Spanish: Schliemann, 4.Nc3 Nd4" + }, + "C63k": { + "eco": "C63k", + "fen": "r1bqkbnr/pppp2pp/8/4pp2/B2nP3/2N2N2/PPPP1PPP/R1BQK2R b KQkq - 3 5", + "hash": 14021159436040501393, + "name": "Spanish: Schliemann, 4.Nc3 Nd4 5.Ba4" + }, + "C63l": { + "eco": "C63l", + "fen": "r1bqkb1r/pppp2pp/2n2n2/1B2pp2/4P3/2N2N2/PPPP1PPP/R1BQK2R w KQkq - 2 5", + "hash": 9152788267882971276, + "name": "Spanish: Schliemann, 4.Nc3 Nf6" + }, + "C63m": { + "eco": "C63m", + "fen": "r1bqkb1r/pppp2pp/2n2n2/1B2pP2/8/2N2N2/PPPP1PPP/R1BQK2R b KQkq - 0 5", + "hash": 10649051731201108299, + "name": "Spanish: Schliemann, 4.Nc3 Nf6 5.exf5" + }, + "C63n": { + "eco": "C63n", + "fen": "r1bqkbnr/pppp2pp/2n5/1B2p3/4p3/2N2N2/PPPP1PPP/R1BQK2R w KQkq - 0 5", + "hash": 16643229016075828945, + "name": "Spanish: Schliemann, 4.Nc3 fxe4" + }, + "C63o": { + "eco": "C63o", + "fen": "r1bqkb1r/pppp2pp/2n2n2/1B2p3/4N3/5N2/PPPP1PPP/R1BQK2R w KQkq - 1 6", + "hash": 1717184939149012688, + "name": "Spanish: Schliemann, 4.Nc3 fxe4 5.Nxe4 Nf6" + }, + "C63p": { + "eco": "C63p", + "fen": "r1bqkb1r/pppp2pp/2n2n2/1B2p3/4N3/5N2/PPPPQPPP/R1B1K2R b KQkq - 2 6", + "hash": 9354580852130248020, + "name": "Spanish: Schliemann, 4.Nc3 fxe4 5.Nxe4 Nf6 6.Qe2" + }, + "C63q": { + "eco": "C63q", + "fen": "r1bqkb1r/pppp2pp/2n2N2/1B2p3/8/5N2/PPPP1PPP/R1BQK2R b KQkq - 0 6", + "hash": 5996304535306013793, + "name": "Spanish: Schliemann, 4.Nc3 fxe4 5.Nxe4 Nf6 6.Nxf6+" + }, + "C63r": { + "eco": "C63r", + "fen": "r1bqkbnr/ppp3pp/2n5/1B1pp3/4N3/5N2/PPPP1PPP/R1BQK2R w KQkq d6 0 6", + "hash": 14506301638753296736, + "name": "Spanish: Schliemann, 4.Nc3 fxe4 5.Nxe4 d5" + }, + "C63s": { + "eco": "C63s", + "fen": "r1bqkbnr/ppp3pp/2n5/1B1pN3/4N3/8/PPPP1PPP/R1BQK2R b KQkq - 0 6", + "hash": 8580281430512239702, + "name": "Spanish: Schliemann, 4.Nc3 fxe4 5.Nxe4 d5 6.Nxe5" + }, + "C63t": { + "eco": "C63t", + "fen": "r1b1kbnr/ppp3pp/2N5/1B1q4/4p3/8/PPPP1PPP/R1BQK2R w KQkq - 1 8", + "hash": 10751280504887837743, + "name": "Spanish: Schliemann, 4.Nc3 fxe4 5.Nxe4 d5 6.Nxe5 dxe4 7.Nxc6 Qd5" + }, + "C63u": { + "eco": "C63u", + "fen": "r1b1kbnr/ppp3pp/2N5/1B4q1/4p3/8/PPPP1PPP/R1BQK2R w KQkq - 1 8", + "hash": 584107990995771644, + "name": "Spanish: Schliemann, 4.Nc3 fxe4 5.Nxe4 d5 6.Nxe5 dxe4 7.Nxc6 Qg5" + }, + "C64a": { + "eco": "C64a", + "fen": "r1bqk1nr/pppp1ppp/2n5/1Bb1p3/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4", + "hash": 16577243330810021022, + "name": "Spanish: Classical Defence" + }, + "C64b": { + "eco": "C64b", + "fen": "r1bqk1nr/pppp1ppp/2n5/1Bb1p3/4P3/2P2N2/PP1P1PPP/RNBQK2R b KQkq - 0 4", + "hash": 10436188760530291480, + "name": "Spanish: Classical, 4.c3" + }, + "C64c": { + "eco": "C64c", + "fen": "r1bqk1nr/pppp1ppp/1bn5/1B2p3/4P3/2P2N2/PP1P1PPP/RNBQK2R w KQkq - 1 5", + "hash": 8083928517957771789, + "name": "Spanish: Classical, Charousek Variation" + }, + "C64d": { + "eco": "C64d", + "fen": "r1bqk2r/ppppnppp/2n5/1Bb1p3/4P3/2P2N2/PP1P1PPP/RNBQK2R w KQkq - 1 5", + "hash": 12581780687693840549, + "name": "Spanish: Classical, 4.c3 Nge7" + }, + "C64e": { + "eco": "C64e", + "fen": "r1b1k1nr/pppp1ppp/2n2q2/1Bb1p3/4P3/2P2N2/PP1P1PPP/RNBQK2R w KQkq - 1 5", + "hash": 10947221160642496757, + "name": "Spanish: Classical, 4.c3 Qf6" + }, + "C64f": { + "eco": "C64f", + "fen": "r1bqk1nr/pppp2pp/2n5/1Bb1pp2/4P3/2P2N2/PP1P1PPP/RNBQK2R w KQkq f6 0 5", + "hash": 341056394438190790, + "name": "Spanish: Classical, Cordel Gambit" + }, + "C64g": { + "eco": "C64g", + "fen": "r1bqk1nr/pppp2pp/2n5/1Bb1pp2/3PP3/2P2N2/PP3PPP/RNBQK2R b KQkq d3 0 5", + "hash": 13947229483268574084, + "name": "Spanish: Classical, Cordel Gambit, 5.d4" + }, + "C64h": { + "eco": "C64h", + "fen": "r1bqk2r/pppp1ppp/2n2n2/1Bb1p3/4P3/2P2N2/PP1P1PPP/RNBQK2R w KQkq - 1 5", + "hash": 14644297066158705294, + "name": "Spanish: Classical, 4.c3 Nf6" + }, + "C64i": { + "eco": "C64i", + "fen": "r1bqk2r/pppp1ppp/2n2n2/1Bb1p3/3PP3/2P2N2/PP3PPP/RNBQK2R b KQkq d3 0 5", + "hash": 1013258504668342220, + "name": "Spanish: Classical, 4.c3 Nf6 5.d4" + }, + "C64j": { + "eco": "C64j", + "fen": "r1bqk2r/pppp1ppp/1bn2n2/1B2p3/3PP3/2P2N2/PP3PPP/RNBQK2R w KQkq - 1 6", + "hash": 17218661567704764121, + "name": "Spanish: Classical, 4.c3 Nf6 5.d4 Bb6" + }, + "C64k": { + "eco": "C64k", + "fen": "r1bqk1nr/pppp1ppp/2n5/1Bb1p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 5 4", + "hash": 10987456868314963854, + "name": "Spanish: Classical, 4.O-O" + }, + "C64l": { + "eco": "C64l", + "fen": "r1bqk2r/ppppnppp/2n5/1Bb1p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 6 5", + "hash": 11976467185491989555, + "name": "Spanish: Classical, 4.O-O Nge7" + }, + "C64m": { + "eco": "C64m", + "fen": "r1b1k1nr/pppp1ppp/2n2q2/1Bb1p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 6 5", + "hash": 11476249413295250531, + "name": "Spanish: Classical, 4.O-O Qf6" + }, + "C64n": { + "eco": "C64n", + "fen": "r1bqk1nr/ppp2ppp/2np4/1Bb1p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 0 5", + "hash": 11655843253704365795, + "name": "Spanish: Classical, 4.O-O d6" + }, + "C64o": { + "eco": "C64o", + "fen": "r1bqk1nr/ppp2ppp/2np4/1Bb1p3/4P3/2P2N2/PP1P1PPP/RNBQ1RK1 b kq - 0 5", + "hash": 15500025663038855525, + "name": "Spanish: Classical, 4.O-O d6 5.c3" + }, + "C64p": { + "eco": "C64p", + "fen": "r1bqk1nr/pppp1ppp/8/1Bb1p3/3nP3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 6 5", + "hash": 5694279664706690863, + "name": "Spanish: Classical, 4.O-O Nd4" + }, + "C64q": { + "eco": "C64q", + "fen": "r1bqk1nr/pppp1ppp/8/1Bb1p3/1P1nP3/5N2/P1PP1PPP/RNBQ1RK1 b kq b3 0 5", + "hash": 16569675981290533643, + "name": "Spanish: Classical, Zaitsev Variation" + }, + "C64r": { + "eco": "C64r", + "fen": "r1bqk1nr/pppp1ppp/8/2b1p3/2BnP3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 7 5", + "hash": 16698615154692218627, + "name": "Spanish: Classical, 4.O-O Nd4 5.Bc4" + }, + "C64s": { + "eco": "C64s", + "fen": "r1bqk1nr/pppp1ppp/8/1Bb1p3/3NP3/8/PPPP1PPP/RNBQ1RK1 b kq - 0 5", + "hash": 12295984413315140660, + "name": "Spanish: Classical, 4.O-O Nd4 5.Nxd4" + }, + "C64t": { + "eco": "C64t", + "fen": "r1bqk1nr/pppp1ppp/1b6/1B2p3/3PP3/2P5/PP3PPP/RNBQ1RK1 b kq d3 0 7", + "hash": 8896909547832654606, + "name": "Spanish: Classical, 4.O-O Nd4 5.Nxd4 Bxd4 6.c3 Bb6 7.d4" + }, + "C64u": { + "eco": "C64u", + "fen": "r1bqk1nr/pp1p1ppp/1bp5/4p3/B2PP3/2P5/PP3PPP/RNBQ1RK1 b kq - 1 8", + "hash": 15564879790676513183, + "name": "Spanish: Classical, 6.c3 Bb6 7.d4 c6 8.Ba4" + }, + "C64v": { + "eco": "C64v", + "fen": "r1bqk1nr/pp3ppp/1bpp4/4p3/B2PP3/N1P5/PP3PPP/R1BQ1RK1 b kq - 1 9", + "hash": 16599645379755276092, + "name": "Spanish: Classical, 6.c3 Bb6 7.d4 c6 8.Ba4 d6 9.Na3" + }, + "C65a": { + "eco": "C65a", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4", + "hash": 1224207606016225163, + "name": "Spanish: Berlin Defence" + }, + "C65b": { + "eco": "C65b", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/1B2p3/4P3/5N2/PPPPQPPP/RNB1K2R b KQkq - 5 4", + "hash": 9726593729370387471, + "name": "Spanish: Berlin, 4.Qe2" + }, + "C65c": { + "eco": "C65c", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/1B2p3/3PP3/5N2/PPP2PPP/RNBQK2R b KQkq d3 0 4", + "hash": 15404683466568401609, + "name": "Spanish: Berlin, 4.d4" + }, + "C65d": { + "eco": "C65d", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/1B6/3pP3/5N2/PPP2PPP/RNBQK2R w KQkq - 0 5", + "hash": 5671834563167360732, + "name": "Spanish: Berlin, 4.d4 exd4" + }, + "C65e": { + "eco": "C65e", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/1B6/3pP3/5N2/PPP2PPP/RNBQ1RK1 b kq - 1 5", + "hash": 3513683231833345484, + "name": "Spanish: Berlin, Nyholm Attack" + }, + "C65f": { + "eco": "C65f", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/1B2p3/4P3/3P1N2/PPP2PPP/RNBQK2R b KQkq - 0 4", + "hash": 13716136533792986207, + "name": "Spanish: Berlin, 4.d3" + }, + "C65g": { + "eco": "C65g", + "fen": "r1bqkb1r/ppppnppp/5n2/1B2p3/4P3/3P1N2/PPP2PPP/RNBQK2R w KQkq - 1 5", + "hash": 13452720276273602382, + "name": "Spanish: Berlin, Mortimer Variation" + }, + "C65h": { + "eco": "C65h", + "fen": "r1bqkb1r/ppp2ppp/2np1n2/1B2p3/4P3/3P1N2/PPP2PPP/RNBQK2R w KQkq - 0 5", + "hash": 9791696266898791730, + "name": "Spanish: Berlin, 4.d3 d6" + }, + "C65i": { + "eco": "C65i", + "fen": "r1bqkb1r/ppp2ppp/2np1n2/1B2p3/4P3/2PP1N2/PP3PPP/RNBQK2R b KQkq - 0 5", + "hash": 17382187538062856884, + "name": "Spanish: Berlin, 4.d3 d6 5.c3" + }, + "C65j": { + "eco": "C65j", + "fen": "r1bqk2r/pppp1ppp/2n2n2/1Bb1p3/4P3/3P1N2/PPP2PPP/RNBQK2R w KQkq - 1 5", + "hash": 1388452126594694876, + "name": "Spanish: Berlin, 4.d3 Bc5" + }, + "C65k": { + "eco": "C65k", + "fen": "r1bqkb1r/pppp1ppp/2n2n2/1B2p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 5 4", + "hash": 7964679028221047963, + "name": "Spanish: Berlin, 4.O-O" + }, + "C65l": { + "eco": "C65l", + "fen": "r1bqk2r/ppppbppp/2n2n2/1B2p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 6 5", + "hash": 8810248750857836554, + "name": "Spanish: Berlin, 4.O-O Be7" + }, + "C65m": { + "eco": "C65m", + "fen": "r1bqk2r/pppp1ppp/2n2n2/1Bb1p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 6 5", + "hash": 14093308303046909464, + "name": "Spanish: Berlin, Beverwijk Variation" + }, + "C65n": { + "eco": "C65n", + "fen": "r1bqk2r/pppp1ppp/2n2n2/1Bb1p3/4P3/2P2N2/PP1P1PPP/RNBQ1RK1 b kq - 0 5", + "hash": 13064807982261113246, + "name": "Spanish: Berlin, Beverwijk, 5.c3" + }, + "C65o": { + "eco": "C65o", + "fen": "r1bq1rk1/pppp1ppp/1bn2n2/1B2p3/3PP3/2P2N2/PP3PPP/RNBQ1RK1 w - - 1 7", + "hash": 11108533049700957218, + "name": "Spanish: Berlin, Benelux Variation" + }, + "C65p": { + "eco": "C65p", + "fen": "r1bq1rk1/pppp1ppp/1bn2n2/1B2p1B1/3PP3/2P2N2/PP3PPP/RN1Q1RK1 b - - 2 7", + "hash": 6661730682698885098, + "name": "Spanish: Berlin, Benelux Variation, 7.Bg5" + }, + "C65q": { + "eco": "C65q", + "fen": "r1bqk2r/pppp1ppp/2n2n2/1Bb1N3/4P3/8/PPPP1PPP/RNBQ1RK1 b kq - 0 5", + "hash": 9067586360926419758, + "name": "Spanish: Berlin, Beverwijk, 5.Nxe5" + }, + "C66": { + "eco": "C66", + "fen": "r1bqkb1r/ppp2ppp/2np1n2/1B2p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 0 5", + "hash": 6283276850867617270, + "name": "Spanish: Closed Berlin" + }, + "C67a": { + "eco": "C67a", + "fen": "r1bqkb1r/pppp1ppp/2n5/1B2p3/4n3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 0 5", + "hash": 15222016355013874568, + "name": "Spanish: Open Berlin" + }, + "C67b": { + "eco": "C67b", + "fen": "r1bqkb1r/pppp1ppp/2n5/1B2p3/4n3/5N2/PPPPQPPP/RNB2RK1 b kq - 1 5", + "hash": 4988290861089261580, + "name": "Spanish: Open Berlin, 5.Qe2" + }, + "C67c": { + "eco": "C67c", + "fen": "r1bqkb1r/pppp1ppp/2n5/1B2p3/4n3/5N2/PPPP1PPP/RNBQR1K1 b kq - 1 5", + "hash": 6308269509050464412, + "name": "Spanish: Open Berlin, 5.Re1" + }, + "C67d": { + "eco": "C67d", + "fen": "r1bqkb1r/pppp1ppp/2nn4/1B2N3/8/8/PPPP1PPP/RNBQR1K1 b kq - 0 6", + "hash": 5598032484408813208, + "name": "Spanish: Open Berlin, 5.Re1 Nd6 6.Nxe5" + }, + "C67e": { + "eco": "C67e", + "fen": "r1bqkb1r/pppp1ppp/2n5/1B2p3/3Pn3/5N2/PPP2PPP/RNBQ1RK1 b kq d3 0 5", + "hash": 1588179210004922058, + "name": "Spanish: Open Berlin, 5.d4" + }, + "C67f": { + "eco": "C67f", + "fen": "r1bqk2r/ppppbppp/2n5/1B2p3/3Pn3/5N2/PPP2PPP/RNBQ1RK1 w kq - 1 6", + "hash": 199895047165661787, + "name": "Spanish: Open Berlin, 5...Be7" + }, + "C67g": { + "eco": "C67g", + "fen": "r1bqk2r/ppppbppp/2n5/1B2P3/4n3/5N2/PPP2PPP/RNBQ1RK1 b kq - 0 6", + "hash": 11410947445616469291, + "name": "Spanish: Berlin, Minckwitz Variation" + }, + "C67h": { + "eco": "C67h", + "fen": "r1bqk2r/ppppbppp/2n5/1B2p3/3Pn3/5N2/PPP1QPPP/RNB2RK1 b kq - 2 6", + "hash": 10718747837596633567, + "name": "Spanish: Open Berlin, 5...Be7 6.Qe2" + }, + "C67i": { + "eco": "C67i", + "fen": "r1bqk2r/ppppbppp/2nn4/1B2p3/3P4/5N2/PPP1QPPP/RNB2RK1 w kq - 3 7", + "hash": 3510588848660296429, + "name": "Spanish: Open Berlin, 5...Be7 6.Qd2 Nd6" + }, + "C67j": { + "eco": "C67j", + "fen": "r1bqk2r/pnppbppp/2p5/4P3/8/5N2/PPP1QPPP/RNB2RK1 w kq - 1 9", + "hash": 12411463759497849929, + "name": "Spanish: Open Berlin, 5...Be7 6.Qd2 Nd6 7.Bxc6 bxc6 8.dxe5 Nb7" + }, + "C67k": { + "eco": "C67k", + "fen": "r1bqk2r/pnppbppp/2p5/4P3/3N4/8/PPP1QPPP/RNB2RK1 b kq - 2 9", + "hash": 15157421496023405702, + "name": "Spanish: Open Berlin, Winawer Attack" + }, + "C67l": { + "eco": "C67l", + "fen": "r1bqk2r/pnppbppp/2p5/4P3/8/2N2N2/PPP1QPPP/R1B2RK1 b kq - 2 9", + "hash": 6316712052897509008, + "name": "Spanish: Open Berlin, Main Line 9.Nc3 (Rio de Janerio)" + }, + "C67m": { + "eco": "C67m", + "fen": "r1bqkb1r/pppp1ppp/2nn4/1B2p3/3P4/5N2/PPP2PPP/RNBQ1RK1 w kq - 1 6", + "hash": 12858587519821268472, + "name": "Spanish: Open Berlin, 5.d4 Nd6" + }, + "C67n": { + "eco": "C67n", + "fen": "r1bqkb1r/pppp1ppp/2nn4/1B2P3/8/5N2/PPP2PPP/RNBQ1RK1 b kq - 0 6", + "hash": 3381955357466325640, + "name": "Spanish: Open Berlin, 5.d4 Nd6 6.dxe5" + }, + "C67o": { + "eco": "C67o", + "fen": "r1bqkb1r/pppp1ppp/2Bn4/4p3/3P4/5N2/PPP2PPP/RNBQ1RK1 b kq - 0 6", + "hash": 16383492766482634179, + "name": "Spanish: Open Berlin, 5.d4 Nd6 6.Bxc6" + }, + "C67p": { + "eco": "C67p", + "fen": "r1bqkb1r/ppp2ppp/2pn4/4p3/3P4/5N2/PPP2PPP/RNBQ1RK1 w kq - 0 7", + "hash": 15388229870870040508, + "name": "Spanish: Open Berlin, 5.d4 Nd6 6.Bxc6 dxc6" + }, + "C67q": { + "eco": "C67q", + "fen": "r1bqkb1r/ppp2ppp/2p5/4Pn2/8/5N2/PPP2PPP/RNBQ1RK1 w kq - 1 8", + "hash": 11521226125099481101, + "name": "Spanish: Open Berlin, 5.d4 Nd6 6.Bxc6 dxc6 7.dxe5 Nf5" + }, + "C67r": { + "eco": "C67r", + "fen": "r1bQkb1r/ppp2ppp/2p5/4Pn2/8/5N2/PPP2PPP/RNB2RK1 b kq - 0 8", + "hash": 17677658586825917406, + "name": "Spanish: Open Berlin, 5.d4 Nd6 Queenswap" + }, + "C67s": { + "eco": "C67s", + "fen": "r1bk1b1r/ppp2ppp/2p5/4Pn2/8/2N2N2/PPP2PPP/R1B2RK1 b - - 1 9", + "hash": 9459759715388019662, + "name": "Spanish: Open Berlin, 5.d4 Nd6 Queenswap, 9.Nc3" + }, + "C67t": { + "eco": "C67t", + "fen": "r1bk1b1r/ppp2pp1/2p4p/4Pn2/8/2N2N2/PPP2PPP/R1B2RK1 w - - 0 10", + "hash": 1274688233272548059, + "name": "Spanish: Open Berlin, 5.d4 Nd6 Queenswap, 9.Nc3 h6" + }, + "C67u": { + "eco": "C67u", + "fen": "r1b1kb1r/ppp2ppp/2p5/4Pn2/8/2N2N2/PPP2PPP/R1B2RK1 w - - 2 10", + "hash": 12814512058622439950, + "name": "Spanish: Open Berlin, 5.d4 Nd6 Queenswap, 9.Nc3 Ke8" + }, + "C67v": { + "eco": "C67v", + "fen": "r1b1kb1r/ppp2ppp/2p5/4Pn2/8/2N2N2/PPP2PPP/R1BR2K1 b - - 3 10", + "hash": 6698112785556145153, + "name": "Spanish: Open Berlin, 5.d4 Nd6 Queenswap, 9.Nc3 Ke8 10.Rd1" + }, + "C67w": { + "eco": "C67w", + "fen": "r1b1kb1r/ppp2ppp/2p5/4Pn2/8/2N2N1P/PPP2PP1/R1B2RK1 b - - 0 10", + "hash": 6423706935681727484, + "name": "Spanish: Open Berlin, 5.d4 Nd6 Queenswap, 9.Nc3 Ke8 10.h3" + }, + "C67x": { + "eco": "C67x", + "fen": "r1b1kb1r/1pp2ppp/2p5/p3Pn2/8/2N2N1P/PPP2PP1/R1B2RK1 w - a6 0 11", + "hash": 16086614520836503404, + "name": "Spanish: Open Berlin, 5.d4 Nd6 Queenswap, 9.Nc3 Ke8 10.h3 a5" + }, + "C68a": { + "eco": "C68a", + "fen": "r1bqkbnr/1ppp1ppp/p1n5/1B2p3/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 4", + "hash": 11089136971253487297, + "name": "Spanish: 3...a6" + }, + "C68b": { + "eco": "C68b", + "fen": "r1bqkbnr/1ppp1ppp/p1n5/4p3/2B1P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 1 4", + "hash": 3557778282395457261, + "name": "Spanish: 3...a6 4.Bc4" + }, + "C68c": { + "eco": "C68c", + "fen": "r1bqkbnr/1ppp1ppp/p1B5/4p3/4P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 0 4", + "hash": 14468866809511659258, + "name": "Spanish: Exchange Variation" + }, + "C68d": { + "eco": "C68d", + "fen": "r1bqkbnr/1pp2ppp/p1p5/4p3/4P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 5", + "hash": 18310404510167817349, + "name": "Spanish: Exchange, 4...dxc6" + }, + "C68e": { + "eco": "C68e", + "fen": "r1bqkbnr/1pp2ppp/p1p5/4p3/3PP3/5N2/PPP2PPP/RNBQK2R b KQkq d3 0 5", + "hash": 4264539727891952071, + "name": "Spanish: Exchange, Lasker Variation" + }, + "C68f": { + "eco": "C68f", + "fen": "r3kbnr/1ppb1ppp/p1p5/8/3NP3/8/PPP2PPP/RNB1K2R w KQkq - 1 8", + "hash": 12968527316874594167, + "name": "Spanish: Exchange, Alekhine Variation" + }, + "C68g": { + "eco": "C68g", + "fen": "r1bqkbnr/1pp2ppp/p1p5/4p3/4P3/2N2N2/PPPP1PPP/R1BQK2R b KQkq - 1 5", + "hash": 399843181927194204, + "name": "Spanish: Exchange, Keres Variation" + }, + "C68h": { + "eco": "C68h", + "fen": "r1bqkbnr/1pp3pp/p1p2p2/4p3/4P3/2N2N2/PPPP1PPP/R1BQK2R w KQkq - 0 6", + "hash": 14544798344310081827, + "name": "Spanish: Exchange, Keres, 5...f6" + }, + "C68i": { + "eco": "C68i", + "fen": "r1bqkbnr/1pp3pp/p1p2p2/4p3/3PP3/2N2N2/PPP2PPP/R1BQK2R b KQkq d3 0 6", + "hash": 931311234899502177, + "name": "Spanish: Exchange, 5.Nc3 f6 6.d4" + }, + "C68j": { + "eco": "C68j", + "fen": "r1bqkbnr/1pp2ppp/p1p5/4p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 1 5", + "hash": 9254585899963942805, + "name": "Spanish: Exchange, 5.O-O" + }, + "C68k": { + "eco": "C68k", + "fen": "r1bqkb1r/1pp1nppp/p1p5/4p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 2 6", + "hash": 13700328755559992360, + "name": "Spanish: Exchange, 5.O-O Ne7" + }, + "C68l": { + "eco": "C68l", + "fen": "r1bqk1nr/1pp2ppp/p1pb4/4p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 2 6", + "hash": 2609424032435164849, + "name": "Spanish: Exchange, 5.O-O Bd6" + }, + "C68m": { + "eco": "C68m", + "fen": "r1bqk1nr/1pp2ppp/p1pb4/8/3pP3/5N2/PPP2PPP/RNBQ1RK1 w kq - 0 7", + "hash": 8826400501279518694, + "name": "Spanish: Exchange, 5.O-O Bd6 6.d4 exd4" + }, + "C68n": { + "eco": "C68n", + "fen": "r2qkbnr/1pp2ppp/p1p5/4p3/4P1b1/5N2/PPPP1PPP/RNBQ1RK1 w kq - 2 6", + "hash": 9420737559047539071, + "name": "Spanish: Exchange, 5.O-O Bg4" + }, + "C68o": { + "eco": "C68o", + "fen": "r2qkbnr/1pp2pp1/p1p5/4p2p/4P1b1/5N1P/PPPP1PP1/RNBQ1RK1 w kq h6 0 7", + "hash": 8579477275768447482, + "name": "Spanish: Exchange, Alapin Gambit" + }, + "C68p": { + "eco": "C68p", + "fen": "r3kbnr/1pp2pp1/p1p2q2/4p2p/4P1b1/3P1N1P/PPPN1PP1/R1BQ1RK1 b kq - 2 8", + "hash": 9791541719583601139, + "name": "Spanish: Exchange, Alapin Gambit, 7.d3 Qf6 8.Nbd2" + }, + "C68q": { + "eco": "C68q", + "fen": "r1b1kbnr/1pp2ppp/p1pq4/4p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 2 6", + "hash": 3819772972804705162, + "name": "Spanish: Exchange, Bronstein Variation" + }, + "C68r": { + "eco": "C68r", + "fen": "r1b1kbnr/1pp2ppp/p1pq4/4p3/4P3/3P1N2/PPP2PPP/RNBQ1RK1 b kq - 0 6", + "hash": 11215736114549174366, + "name": "Spanish: Exchange, Bronstein, 6.d3" + }, + "C68s": { + "eco": "C68s", + "fen": "r1b1kbnr/1pp2ppp/p1pq4/4p3/4P3/N4N2/PPPP1PPP/R1BQ1RK1 b kq - 3 6", + "hash": 3667160536962540612, + "name": "Spanish: Exchange, Bronstein, 6.Na3" + }, + "C68t": { + "eco": "C68t", + "fen": "r1b1kbnr/2p2ppp/p1pq4/1p2p3/4P3/N4N2/PPPP1PPP/R1BQ1RK1 w kq b6 0 7", + "hash": 5971831387128732025, + "name": "Spanish: Exchange, Bronstein, 6.Na3 b5" + }, + "C68u": { + "eco": "C68u", + "fen": "r3kbnr/1pp2ppp/p1pqb3/4p3/4P3/N4N2/PPPP1PPP/R1BQ1RK1 w kq - 4 7", + "hash": 7375996516312211276, + "name": "Spanish: Exchange, Bronstein, 6.Na3 Be6" + }, + "C69a": { + "eco": "C69a", + "fen": "r1bqkbnr/1pp3pp/p1p2p2/4p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 0 6", + "hash": 5493233342706585834, + "name": "Spanish: Exchange, Gligoric Variation" + }, + "C69b": { + "eco": "C69b", + "fen": "r1bqkbnr/1pp3pp/p1p2p2/4p3/3PP3/5N2/PPP2PPP/RNBQ1RK1 b kq d3 0 6", + "hash": 9876056660346322344, + "name": "Spanish: Exchange, Gligoric, 6.d4" + }, + "C69c": { + "eco": "C69c", + "fen": "r2qkbnr/1pp3pp/p1p2p2/4p3/3PP1b1/2P2N2/PP3PPP/RNBQ1RK1 b kq - 0 7", + "hash": 18232822672287841476, + "name": "Spanish: Exchange, Gligoric, 6.d4 Bg4 7.c3" + }, + "C69d": { + "eco": "C69d", + "fen": "r2qk1nr/1pp3pp/p1pb1p2/4p3/3PP1b1/2P2N2/PP3PPP/RNBQ1RK1 w kq - 1 8", + "hash": 6440026644164734432, + "name": "Spanish: Exchange, Gligoric, 6.d4 Bg4 7.c3 Bd6" + }, + "C69e": { + "eco": "C69e", + "fen": "r2qkbnr/1pp3pp/p1p2p2/4P3/4P1b1/5N2/PPP2PPP/RNBQ1RK1 b kq - 0 7", + "hash": 1675612035311862834, + "name": "Spanish: Exchange, Gligoric, 6.d4 Bg4 7.dxe5" + }, + "C69f": { + "eco": "C69f", + "fen": "r3kbnr/1pp3pp/p1p5/4p3/4P1b1/3R1N2/PPP2PPP/RNB3K1 b kq - 1 9", + "hash": 4005214930248743605, + "name": "Spanish: Exchange, Gligoric, 6.d4 Bg4 Queenswap, 9.Rd3" + }, + "C69g": { + "eco": "C69g", + "fen": "r3k1nr/1pp3pp/p1pb4/4p3/4P1b1/3R1N2/PPP2PPP/RNB3K1 w kq - 2 10", + "hash": 10650182166871010193, + "name": "Spanish: Exchange, Gligoric, 6.d4 Bg4 Queenswap, 9.Rd3 Bd6" + }, + "C69h": { + "eco": "C69h", + "fen": "r1bqkbnr/1pp3pp/p1p2p2/8/3pP3/5N2/PPP2PPP/RNBQ1RK1 w kq - 0 7", + "hash": 1328781475543886269, + "name": "Spanish: Exchange, Gligoric, 6.d4 exd4" + }, + "C69i": { + "eco": "C69i", + "fen": "r1bqkbnr/1pp3pp/p1p2p2/8/3QP3/5N2/PPP2PPP/RNB2RK1 b kq - 0 7", + "hash": 8054635646846256768, + "name": "Spanish: Exchange, Gligoric, 6.d4 exd4 7.Nxd4" + }, + "C69j": { + "eco": "C69j", + "fen": "r1bqkbnr/1pp3pp/p4p2/2p5/3NP3/8/PPP2PPP/RNBQ1RK1 w kq - 0 8", + "hash": 17958525726864467548, + "name": "Spanish: Exchange, Gligoric, 6.d4 exd4 7.Nxd4 c5" + }, + "C69k": { + "eco": "C69k", + "fen": "r1bqkbnr/1pp3pp/p4p2/2p5/4P3/1N6/PPP2PPP/RNBQ1RK1 b kq - 1 8", + "hash": 7874746452380983446, + "name": "Spanish: Exchange, Gligoric, 8.Nb3" + }, + "C69l": { + "eco": "C69l", + "fen": "r3kbnr/1ppb2pp/p4p2/2p5/4P3/1N6/PPP2PPP/RNBR2K1 w kq - 1 10", + "hash": 901070902307824411, + "name": "Spanish: Exchange, Gligoric, 8.Nb3 Queenswap, 9...Bd7" + }, + "C69m": { + "eco": "C69m", + "fen": "r3kbnr/1pp3pp/p4p2/2p5/4P1b1/1N6/PPP2PPP/RNBR2K1 w kq - 1 10", + "hash": 17046981481552969152, + "name": "Spanish: Exchange, Gligoric, 8.Nb3 Queenswap, 9...Bg4" + }, + "C69n": { + "eco": "C69n", + "fen": "r3kbnr/1pp3pp/p3bp2/2p5/4P3/1N3P2/PPP3PP/RNBR2K1 w kq - 1 11", + "hash": 3215450474886816346, + "name": "Spanish: Exchange, Gligoric, 8.Nb3 Queenswap, 9...Bg4 10.f3 Be6" + }, + "C70": { + "eco": "C70", + "fen": "r1bqkbnr/1ppp1ppp/p1n5/4p3/B3P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 1 4", + "hash": 12170917594475360235, + "name": "Spanish: 4.Ba4" + }, + "C71": { + "eco": "C71", + "fen": "r1bqkbnr/1pp2ppp/p1np4/4p3/B3P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 0 5", + "hash": 10474633245981484678, + "name": "Spanish: Modern Steinitz Defence" + }, + "C72": { + "eco": "C72", + "fen": "r1bqkbnr/1pp2ppp/p1np4/4p3/B3P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 1 5", + "hash": 17233063852095765910, + "name": "Spanish: Modern Steinitz, 5.O-O" + }, + "C73": { + "eco": "C73", + "fen": "r1bqkbnr/1pp2ppp/p1Bp4/4p3/4P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 0 5", + "hash": 695539507876727454, + "name": "Spanish: Modern Steinitz, Richter Variation" + }, + "C74": { + "eco": "C74", + "fen": "r1bqkbnr/1pp2ppp/p1np4/4p3/B3P3/2P2N2/PP1P1PPP/RNBQK2R b KQkq - 0 5", + "hash": 16683487961157282048, + "name": "Spanish: Modern Steinitz, 5.c3" + }, + "C75": { + "eco": "C75", + "fen": "r2qkbnr/1ppb1ppp/p1np4/4p3/B3P3/2P2N2/PP1P1PPP/RNBQK2R w KQkq - 1 6", + "hash": 380089877063268657, + "name": "Spanish: Modern Steinitz, 5.c3 Bd7" + }, + "C76": { + "eco": "C76", + "fen": "r2qkbnr/1ppb1p1p/p1np2p1/4p3/B2PP3/2P2N2/PP3PPP/RNBQK2R w KQkq - 0 7", + "hash": 3010415883518821944, + "name": "Spanish: Modern Steinitz, Bronstein Variation" + }, + "C77a": { + "eco": "C77a", + "fen": "r1bqkb1r/1ppp1ppp/p1n2n2/4p3/B3P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 2 5", + "hash": 17512807785136074365, + "name": "Spanish: Morphy Defence" + }, + "C77b": { + "eco": "C77b", + "fen": "r1bqkb1r/1ppp1ppp/p1n2n2/4p3/B3P3/3P1N2/PPP2PPP/RNBQK2R b KQkq - 0 5", + "hash": 6750119798957118889, + "name": "Spanish: Anderssen Variation" + }, + "C77c": { + "eco": "C77c", + "fen": "r1bqkb1r/2pp1ppp/p1n2n2/1p2p3/B3P3/3P1N2/PPP2PPP/RNBQK2R w KQkq b6 0 6", + "hash": 4443175021300820116, + "name": "Spanish: Anderssen, 5...b5" + }, + "C77d": { + "eco": "C77d", + "fen": "r1bqkb1r/1pp2ppp/p1np1n2/4p3/B3P3/3P1N2/PPP2PPP/RNBQK2R w KQkq - 0 6", + "hash": 7212418391323434180, + "name": "Spanish: Anderssen, 5...d6" + }, + "C77e": { + "eco": "C77e", + "fen": "r1bqkb1r/1pp2ppp/p1np1n2/4p3/B1P1P3/3P1N2/PP3PPP/RNBQK2R b KQkq c3 0 6", + "hash": 16732059487369459651, + "name": "Spanish: Duras Variation" + }, + "C77f": { + "eco": "C77f", + "fen": "r1bqkb1r/1pp2ppp/p1np1n2/4p3/B3P3/2PP1N2/PP3PPP/RNBQK2R b KQkq - 0 6", + "hash": 1354827885149672258, + "name": "Spanish: Anderssen, 5...d6 6.c3" + }, + "C77g": { + "eco": "C77g", + "fen": "r1bqkb1r/1pp2p1p/p1np1np1/4p3/B3P3/2PP1N2/PP3PPP/RNBQK2R w KQkq - 0 7", + "hash": 18120518509651575049, + "name": "Spanish: Anderssen, 5...d6 6.c3 g6" + }, + "C77h": { + "eco": "C77h", + "fen": "r1bqkb1r/1ppp1ppp/p1n2n2/4p3/B3P3/2N2N2/PPPP1PPP/R1BQK2R b KQkq - 3 5", + "hash": 621185887674936484, + "name": "Spanish: Four Knights (Tarrasch) Variation" + }, + "C77i": { + "eco": "C77i", + "fen": "r1bqkb1r/1ppp1ppp/p1B2n2/4p3/4P3/5N2/PPPP1PPP/RNBQK2R b KQkq - 0 5", + "hash": 7778754406085558885, + "name": "Spanish: Exchange Deferred" + }, + "C77j": { + "eco": "C77j", + "fen": "r1bqkb1r/1ppp1ppp/p1n2n2/4p3/B2PP3/5N2/PPP2PPP/RNBQK2R b KQkq d3 0 5", + "hash": 3908229812815266623, + "name": "Spanish: Centre Attack" + }, + "C77k": { + "eco": "C77k", + "fen": "r1bqkb1r/2pp1ppp/p1n2n2/1p2p3/B2PP3/5N2/PPP2PPP/RNBQK2R w KQkq b6 0 6", + "hash": 6212918388128202242, + "name": "Spanish: Centre Attack, 5...b5" + }, + "C77l": { + "eco": "C77l", + "fen": "r1bqkb1r/1ppp1ppp/p4n2/4p3/B2nP3/5N2/PPP2PPP/RNBQK2R w KQkq - 0 6", + "hash": 17897725903879813155, + "name": "Spanish: Centre Attack, 5...Nxd4" + }, + "C77m": { + "eco": "C77m", + "fen": "r1bqkb1r/1ppp1ppp/p1n5/4p3/B2Pn3/5N2/PPP2PPP/RNBQK2R w KQkq - 0 6", + "hash": 10055302219318010924, + "name": "Spanish: Centre Attack, 5...Nxe4" + }, + "C77n": { + "eco": "C77n", + "fen": "r1bqk2r/1pppbppp/p1n2n2/4p3/B2PP3/5N2/PPP2PPP/RNBQK2R w KQkq - 1 6", + "hash": 2517689904962056110, + "name": "Spanish: Centre Attack, 5...Be7" + }, + "C77o": { + "eco": "C77o", + "fen": "r1bqkb1r/1ppp1ppp/p1n2n2/8/B2pP3/5N2/PPP2PPP/RNBQK2R w KQkq - 0 6", + "hash": 12484779488129390378, + "name": "Spanish: Centre Attack, 5...exd4" + }, + "C77p": { + "eco": "C77p", + "fen": "r1bqkb1r/1ppp1ppp/p1n2n2/4p3/B3P3/5N2/PPPPQPPP/RNB1K2R b KQkq - 3 5", + "hash": 7282165319408252409, + "name": "Spanish: Wormald Attack" + }, + "C77q": { + "eco": "C77q", + "fen": "r1bqk2r/1pppbppp/p1n2n2/4p3/B3P3/5N2/PPPPQPPP/RNB1K2R w KQkq - 4 6", + "hash": 8197397023563241832, + "name": "Spanish: Wormald Attack, 5...Be7" + }, + "C77r": { + "eco": "C77r", + "fen": "r1bqkb1r/2pp1ppp/p1n2n2/1p2p3/B3P3/5N2/PPPPQPPP/RNB1K2R w KQkq b6 0 6", + "hash": 363411489875478724, + "name": "Spanish: Wormald Attack, 5...b5" + }, + "C77s": { + "eco": "C77s", + "fen": "r1bqk2r/2pp1ppp/p1n2n2/1pb1p3/4P3/1B3N2/PPPPQPPP/RNB1K2R w KQkq - 2 7", + "hash": 17918206378837592997, + "name": "Spanish: Wormald Attack, 5...b5 6.Bb3 Bc5" + }, + "C77t": { + "eco": "C77t", + "fen": "r1bqk2r/2pp1ppp/p1n2n2/1pb1p3/4P3/1BP2N2/PP1PQPPP/RNB1K2R b KQkq - 0 7", + "hash": 10263907358227874851, + "name": "Spanish: Wormald Attack, 5...b5 6.Bb3 Bc5 7.c3" + }, + "C77u": { + "eco": "C77u", + "fen": "r1bqk2r/2ppbppp/p1n2n2/1p2p3/4P3/1B3N2/PPPPQPPP/RNB1K2R w KQkq - 2 7", + "hash": 4718495259323633079, + "name": "Spanish: Wormald Attack, 5...b5 6.Bb3 Be7" + }, + "C78a": { + "eco": "C78a", + "fen": "r1bqkb1r/1ppp1ppp/p1n2n2/4p3/B3P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 3 5", + "hash": 10195171887328851309, + "name": "Spanish: 5.O-O" + }, + "C78b": { + "eco": "C78b", + "fen": "r1bqk2r/1ppp1ppp/p1n2n2/2b1p3/B3P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 4 6", + "hash": 2333359986265694190, + "name": "Spanish: Mller Defence" + }, + "C78c": { + "eco": "C78c", + "fen": "r1bqk2r/1ppp1ppp/p1n2n2/2b1N3/B3P3/8/PPPP1PPP/RNBQ1RK1 b kq - 0 6", + "hash": 11394729865596156632, + "name": "Spanish: Mller Defence, 6.Nxe5" + }, + "C78d": { + "eco": "C78d", + "fen": "r1bqk2r/1ppp1ppp/p1n2n2/2b1p3/B3P3/2P2N2/PP1P1PPP/RNBQ1RK1 b kq - 0 6", + "hash": 6249652764038271080, + "name": "Spanish: Mller Defence, 6.c3" + }, + "C78e": { + "eco": "C78e", + "fen": "r1bqkb1r/2pp1ppp/p1n2n2/1p2p3/B3P3/5N2/PPPP1PPP/RNBQ1RK1 w kq b6 0 6", + "hash": 17111687115783358544, + "name": "Spanish: 5.O-O b5" + }, + "C78f": { + "eco": "C78f", + "fen": "r1bqkb1r/2p2ppp/p1np1n2/1p2p3/4P3/1B3N2/PPPP1PPP/RNBQ1RK1 w kq - 0 7", + "hash": 9547182507883882719, + "name": "Spanish: 5.O-O b5 6.Bb3 d6" + }, + "C78g": { + "eco": "C78g", + "fen": "r1bqk2r/2ppbppp/p1n2n2/1p2p3/4P3/1B3N2/PPPP1PPP/RNBQ1RK1 w kq - 2 7", + "hash": 12180128568917757219, + "name": "Spanish: 5.O-O b5 6.Bb3 Be7" + }, + "C78h": { + "eco": "C78h", + "fen": "r1bqk2r/2pp1ppp/p1n2n2/1pb1p3/4P3/1B3N2/PPPP1PPP/RNBQ1RK1 w kq - 2 7", + "hash": 1214201490189011761, + "name": "Spanish: 5.O-O b5 6.Bb3 Bc5" + }, + "C78i": { + "eco": "C78i", + "fen": "r1bqk2r/2pp1ppp/p1n2n2/1pb1N3/4P3/1B6/PPPP1PPP/RNBQ1RK1 b kq - 0 7", + "hash": 12581440156993187335, + "name": "Spanish: 5.O-O b5 6.Bb3 Bc5 7.Nxe5" + }, + "C78j": { + "eco": "C78j", + "fen": "r1bqk2r/2pp1ppp/p1n2n2/1pb1p3/4P3/1BP2N2/PP1P1PPP/RNBQ1RK1 b kq - 0 7", + "hash": 7350803999907857591, + "name": "Spanish: 5.O-O b5 6.Bb3 Bc5 7.c3" + }, + "C78k": { + "eco": "C78k", + "fen": "r1bqk2r/2p2ppp/p1np1n2/1pb1p3/3PP3/1BP2N2/PP3PPP/RNBQ1RK1 b kq d3 0 8", + "hash": 11136544815342559384, + "name": "Spanish: 5.O-O b5 6.Bb3 Bc5 7.c3 d6 8.d4" + }, + "C78l": { + "eco": "C78l", + "fen": "r1bqk2r/2pp1ppp/p1n2n2/1pb1p3/P3P3/1B3N2/1PPP1PPP/RNBQ1RK1 b kq a3 0 7", + "hash": 8867811133741113087, + "name": "Spanish: 5.O-O b5 6.Bb3 Bc5 7.a4" + }, + "C78m": { + "eco": "C78m", + "fen": "1rbqk2r/2pp1ppp/p1n2n2/1pb1p3/P3P3/1B3N2/1PPP1PPP/RNBQ1RK1 w k - 1 8", + "hash": 18250140425153951580, + "name": "Spanish: 5.O-O b5 6.Bb3 Bc5 7.a4 Rb8" + }, + "C78n": { + "eco": "C78n", + "fen": "r2qkb1r/1bpp1ppp/p1n2n2/1p2p3/4P3/1B3N2/PPPP1PPP/RNBQ1RK1 w kq - 2 7", + "hash": 960596089312316969, + "name": "Spanish: Archangelsk Variation" + }, + "C78o": { + "eco": "C78o", + "fen": "r2qkb1r/1bpp1ppp/p1n2n2/1p2p3/3PP3/1B3N2/PPP2PPP/RNBQ1RK1 b kq d3 0 7", + "hash": 14438987527918330731, + "name": "Spanish: Archangelsk, 7.d4" + }, + "C78p": { + "eco": "C78p", + "fen": "r2qkb1r/1bpp1ppp/p1n2n2/1p2p3/4P3/1B1P1N2/PPP2PPP/RNBQ1RK1 b kq - 0 7", + "hash": 11813076892880713213, + "name": "Spanish: Archangelsk, 7.d3" + }, + "C78q": { + "eco": "C78q", + "fen": "r2qk2r/1bppbppp/p1n2n2/1p2p3/4P3/1B1P1N2/PPP2PPP/RNBQ1RK1 w kq - 1 8", + "hash": 13203438340615706988, + "name": "Spanish: Archangelsk, 7.d3 Be7" + }, + "C78r": { + "eco": "C78r", + "fen": "r2qkb1r/1bpp1ppp/p1n2n2/1p2p3/4P3/1BP2N2/PP1P1PPP/RNBQ1RK1 b kq - 0 7", + "hash": 8903125621906276783, + "name": "Spanish: Archangelsk, 7.c3" + }, + "C78s": { + "eco": "C78s", + "fen": "r2qkb1r/1bpp1ppp/p1n5/1p2p3/4n3/1BP2N2/PP1P1PPP/RNBQ1RK1 w kq - 0 8", + "hash": 14283465062343550652, + "name": "Spanish: Archangelsk, 7.c3 Nxe4" + }, + "C78t": { + "eco": "C78t", + "fen": "r2qkb1r/1bpp1ppp/p1n2n2/1p2p3/4P3/1B3N2/PPPP1PPP/RNBQR1K1 b kq - 3 7", + "hash": 9935142565269447997, + "name": "Spanish: Archangelsk, 7.Re1" + }, + "C78u": { + "eco": "C78u", + "fen": "r2qk2r/1bp2ppp/p1np1n2/1pb1p3/4P3/1BP2N2/PP1P1PPP/RNBQR1K1 w kq - 0 9", + "hash": 7754526913686997333, + "name": "Spanish: Archangelsk, 7.Re1 Bc5 8.c3 d6" + }, + "C78v": { + "eco": "C78v", + "fen": "r2qk2r/1bp2ppp/pbnp1n2/1p2p3/P2PP3/1BP2N2/1P3PPP/RNBQR1K1 b kq a3 0 10", + "hash": 2709728988566067404, + "name": "Spanish: Archangelsk, Main Line, 10.a4" + }, + "C78w": { + "eco": "C78w", + "fen": "r2qk2r/1bp2ppp/pbnp1n2/1p2p1B1/3PP3/1BP2N2/PP3PPP/RN1QR1K1 b kq - 2 10", + "hash": 9802592504625108682, + "name": "Spanish: Archangelsk, Main Line, 10.Bg5" + }, + "C78x": { + "eco": "C78x", + "fen": "r2qk2r/1bp2ppp/pbnp1n2/1p2p3/3PP3/1BP1BN2/PP3PPP/RN1QR1K1 b kq - 2 10", + "hash": 4421163916582114956, + "name": "Spanish: Archangelsk, Main Line, 10.Be3" + }, + "C79": { + "eco": "C79", + "fen": "r1bqkb1r/1pp2ppp/p1np1n2/4p3/B3P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 0 6", + "hash": 13026117326258355200, + "name": "Spanish: Steinitz Deferred" + }, + "C80a": { + "eco": "C80a", + "fen": "r1bqkb1r/1ppp1ppp/p1n5/4p3/B3n3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 0 6", + "hash": 3516124427892773502, + "name": "Spanish: Open" + }, + "C80b": { + "eco": "C80b", + "fen": "r1bqkb1r/1ppp1ppp/p1n5/4p3/B3n3/2N2N2/PPPP1PPP/R1BQ1RK1 b kq - 1 6", + "hash": 14653816172613324967, + "name": "Spanish: Open, Knorre Variation" + }, + "C80c": { + "eco": "C80c", + "fen": "r1bqkb1r/1ppp1ppp/p1n5/4p3/B3n3/5N2/PPPPQPPP/RNB2RK1 b kq - 1 6", + "hash": 12019341784461806074, + "name": "Spanish: Open, Tartakower Variation" + }, + "C80d": { + "eco": "C80d", + "fen": "r1bqkb1r/1ppp1ppp/p1n5/4p3/B3n3/5N2/PPPP1PPP/RNBQR1K1 b kq - 1 6", + "hash": 13006331961587267946, + "name": "Spanish: Open, 6.Re1" + }, + "C80e": { + "eco": "C80e", + "fen": "r1bqkb1r/1ppp1ppp/p1B5/2n1p3/8/5N2/PPPP1PPP/RNBQR1K1 b kq - 0 7", + "hash": 14955540677810525239, + "name": "Spanish: Open, 6.Re1 Nc5 7.Bxc6" + }, + "C80f": { + "eco": "C80f", + "fen": "r1bqkb1r/1ppp1ppp/p1n5/4p3/B2Pn3/5N2/PPP2PPP/RNBQ1RK1 b kq d3 0 6", + "hash": 17725859323694186300, + "name": "Spanish: Open, 6.d4" + }, + "C80g": { + "eco": "C80g", + "fen": "r1bqkb1r/1ppp1ppp/p1n5/8/B2pn3/5N2/PPP2PPP/RNBQ1RK1 w kq - 0 7", + "hash": 7962625418600475433, + "name": "Spanish: Open, Riga Variation" + }, + "C80h": { + "eco": "C80h", + "fen": "r1bqk2r/1pppbppp/p1n5/4p3/B2Pn3/5N2/PPP2PPP/RNBQ1RK1 w kq - 1 7", + "hash": 16227196013108908973, + "name": "Spanish: Open, 6.d4 Be7" + }, + "C80i": { + "eco": "C80i", + "fen": "r1bqkb1r/2pp1ppp/p1n5/1p2p3/B2Pn3/5N2/PPP2PPP/RNBQ1RK1 w kq b6 0 7", + "hash": 10807105519919809025, + "name": "Spanish: Open, 6.d4 b5" + }, + "C80j": { + "eco": "C80j", + "fen": "r1bqkb1r/2pp1ppp/p1n5/1p2p3/3Pn3/1B3N2/PPP2PPP/RNBQ1RK1 b kq - 1 7", + "hash": 14215208130209065955, + "name": "Spanish: Open, 7.Bb3" + }, + "C80k": { + "eco": "C80k", + "fen": "r1bqkb1r/2p2ppp/p1n5/1p1pp3/3Pn3/1B3N2/PPP2PPP/RNBQ1RK1 w kq d6 0 8", + "hash": 4624267103951611333, + "name": "Spanish: Open, 7.Bb3 d5" + }, + "C80l": { + "eco": "C80l", + "fen": "r1bqkb1r/2p2ppp/p1n5/1p1pN3/3Pn3/1B6/PPP2PPP/RNBQ1RK1 b kq - 0 8", + "hash": 18333950216389116147, + "name": "Spanish: Open, 8.Nxe5" + }, + "C80m": { + "eco": "C80m", + "fen": "r1bqkb1r/2p2ppp/p1n5/1p1pP3/4n3/1B3N2/PPP2PPP/RNBQ1RK1 b kq - 0 8", + "hash": 15902576611497267893, + "name": "Spanish: Open, 8.dxe5" + }, + "C80n": { + "eco": "C80n", + "fen": "r2qkb1r/2p2ppp/p1n1b3/1p1pP3/4n3/1B3N2/PPP2PPP/RNBQ1RK1 w kq - 1 9", + "hash": 9802612322291657149, + "name": "Spanish: Open, 8...Be6" + }, + "C80o": { + "eco": "C80o", + "fen": "r2qkb1r/2p2ppp/p1n1b3/1p1pP3/4n3/1B2BN2/PPP2PPP/RN1Q1RK1 b kq - 2 9", + "hash": 18086847619790123571, + "name": "Spanish: Open, 8...Be6 9.Be3" + }, + "C80p": { + "eco": "C80p", + "fen": "r2qkb1r/2p2ppp/p1n1b3/1p1pP3/4n3/1B3N2/PPPN1PPP/R1BQ1RK1 b kq - 2 9", + "hash": 15089142991542157709, + "name": "Spanish: Open, Bernstein Variation" + }, + "C80q": { + "eco": "C80q", + "fen": "r2qk2r/2p2ppp/p1n1b3/1pbpP3/4n3/1B3N2/PPPN1PPP/R1BQ1RK1 w kq - 3 10", + "hash": 8969520920465042190, + "name": "Spanish: Open, Bernstein, 9...Bc5" + }, + "C80r": { + "eco": "C80r", + "fen": "r2qkb1r/2p2ppp/p1n1b3/1pnpP3/8/1B3N2/PPPN1PPP/R1BQ1RK1 w kq - 3 10", + "hash": 3633897565387210952, + "name": "Spanish: Open, Bernstein, 9...Nc5" + }, + "C80s": { + "eco": "C80s", + "fen": "r2qkb1r/2p2ppp/p1n1b3/1pn1P3/3p4/1BP2N2/PP1N1PPP/R1BQ1RK1 w kq - 0 11", + "hash": 12022817027359040937, + "name": "Spanish: Open, Bernstein, 9...Nc5 10.c3 d4" + }, + "C80t": { + "eco": "C80t", + "fen": "r2qkb1r/2p2ppp/p1n1b3/1pn1P1N1/3p4/1BP5/PP1N1PPP/R1BQ1RK1 b kq - 1 11", + "hash": 17296991046647684365, + "name": "Spanish: Open, Bernstein, Karpov Gambit" + }, + "C80u": { + "eco": "C80u", + "fen": "r2qkb1r/2p2ppp/p1n1B3/1pn1P3/3p4/2P2N2/PP1N1PPP/R1BQ1RK1 b kq - 0 11", + "hash": 1613595646297766408, + "name": "Spanish: Open, Bernstein, 11.Bxe6" + }, + "C81": { + "eco": "C81", + "fen": "r2qkb1r/2p2ppp/p1n1b3/1p1pP3/4n3/1B3N2/PPP1QPPP/RNB2RK1 b kq - 2 9", + "hash": 2166038843882205753, + "name": "Spanish: Open, Keres Attack" + }, + "C82a": { + "eco": "C82a", + "fen": "r2qkb1r/2p2ppp/p1n1b3/1p1pP3/4n3/1BP2N2/PP3PPP/RNBQ1RK1 b kq - 0 9", + "hash": 18362063401900811835, + "name": "Spanish: Open, 9.c3" + }, + "C82b": { + "eco": "C82b", + "fen": "r2qkb1r/2p2ppp/p1n1b3/1pnpP3/8/1BP2N2/PP3PPP/RNBQ1RK1 w kq - 1 10", + "hash": 2151157594524379006, + "name": "Spanish: Open, Berlin Variation" + }, + "C82c": { + "eco": "C82c", + "fen": "r2qkb1r/2p2ppp/p1n5/1pnpP3/6b1/2P2N2/PPB2PPP/RNBQ1RK1 w kq - 3 11", + "hash": 4854434702784189977, + "name": "Spanish: Open, Berlin, 10.Bc2 Bg4" + }, + "C82d": { + "eco": "C82d", + "fen": "r2qkb1r/2p2ppp/p1n5/1pnpP3/6b1/2P2N2/PPB2PPP/RNBQR1K1 b kq - 4 11", + "hash": 14405436515074145549, + "name": "Spanish: Open, Berlin, 10.Bc2 Bg4 11.Re1" + }, + "C82e": { + "eco": "C82e", + "fen": "r2qkb1r/2p2ppp/p1n5/1pnpP3/6b1/2P2N2/PPBN1PPP/R1BQ1RK1 b kq - 4 11", + "hash": 1887239995844623913, + "name": "Spanish: Open, Berlin, 10.Bc2 Bg4 11.Nbd2" + }, + "C82f": { + "eco": "C82f", + "fen": "r2qk2r/2p1bppp/p1n5/1pnpP3/6b1/2P2N2/PPBN1PPP/R1BQR1K1 b kq - 6 12", + "hash": 9964407289017891244, + "name": "Spanish: Open, Berlin, 10.Bc2 Bg4 11.Nbd2 Be7 12.Re1" + }, + "C82g": { + "eco": "C82g", + "fen": "r3k2r/2pqbppp/p1n5/1pnpP3/6b1/2P2N2/PPBN1PPP/R1BQR1K1 w kq - 7 13", + "hash": 10942597504681618659, + "name": "Spanish: Open, Berlin, 10.Bc2 Bg4 11.Nbd2 Be7 12.Re1 Qd7" + }, + "C82h": { + "eco": "C82h", + "fen": "r2q1rk1/2p1bppp/p1n5/1pnpP3/6b1/2P2N2/PPBN1PPP/R1BQR1K1 w - - 7 13", + "hash": 9286495091451531335, + "name": "Spanish: Open, Berlin, 10.Bc2 Bg4 11.Nbd2 Be7 12.Re1 O-O" + }, + "C82i": { + "eco": "C82i", + "fen": "r2qk2r/2p2ppp/p1n1b3/1pbpP3/4n3/1BP2N2/PP3PPP/RNBQ1RK1 w kq - 1 10", + "hash": 6038873257137753272, + "name": "Spanish: Open, Italian Variation" + }, + "C82j": { + "eco": "C82j", + "fen": "r2qk2r/2p2ppp/p1n1b3/1pbpP3/4n3/1BPQ1N2/PP3PPP/RNB2RK1 b kq - 2 10", + "hash": 17557793285400944079, + "name": "Spanish: Open, Motzko Attack" + }, + "C82k": { + "eco": "C82k", + "fen": "r2qk2r/2p2ppp/p1n1b3/1pbpP3/4n3/1BP2N2/PP1N1PPP/R1BQ1RK1 b kq - 2 10", + "hash": 765853116207785096, + "name": "Spanish: Open, St. Petersburg Variation" + }, + "C82l": { + "eco": "C82l", + "fen": "r2q1rk1/2p2ppp/p1n1b3/1pbpP3/4n3/2P2N2/PPBN1PPP/R1BQ1RK1 b - - 4 11", + "hash": 17307703257845157103, + "name": "Spanish: Open, St. Petersburg, 11.Bc2" + }, + "C82m": { + "eco": "C82m", + "fen": "r2q1rk1/2p3pp/p1n1b3/1pbpPp2/4n3/2P2N2/PPBN1PPP/R1BQ1RK1 w - f6 0 12", + "hash": 13022849410062064195, + "name": "Spanish: Open, St. Petersburg, 11.Bc2 f5" + }, + "C82n": { + "eco": "C82n", + "fen": "r2q1rk1/2p2ppp/p1n5/1pbpPb2/4n3/2P2N2/PPBN1PPP/R1BQ1RK1 w - - 5 12", + "hash": 16088702410885479267, + "name": "Spanish: Open, Baguio Variation" + }, + "C82o": { + "eco": "C82o", + "fen": "r2q1rk1/2p2ppp/p1n1b3/1pbpP3/8/2P2N2/PPBN1nPP/R1BQ1RK1 w - - 0 12", + "hash": 17350113338957682817, + "name": "Spanish: Open, Dilworth Variation" + }, + "C82p": { + "eco": "C82p", + "fen": "r2q1rk1/2p3pp/p1n1bP2/1p1p4/8/2P2N2/PPBN1KPP/R1BQ4 b - - 0 14", + "hash": 12710961604963696374, + "name": "Spanish: Open, Dilworth, 14.Kxf2" + }, + "C82q": { + "eco": "C82q", + "fen": "r4rk1/2p3pp/p1n1bq2/1p1p4/8/2P2N2/PPB2KPP/R1BQ1N2 b - - 1 15", + "hash": 15926616618096684135, + "name": "Spanish: Open, Dilworth, 14.Kxf2 Qxf6 15.Nf1" + }, + "C82r": { + "eco": "C82r", + "fen": "r4rk1/2p3pp/p1n1bq2/1p1p4/8/2P2N2/PPBN2PP/R1BQ2K1 b - - 1 15", + "hash": 10200738451172398095, + "name": "Spanish: Open, Dilworth, 14.Kxf2 Qxf6 15.Kg1" + }, + "C82s": { + "eco": "C82s", + "fen": "r4rk1/2p4p/p1n1bq2/1p1p2p1/8/2P2N2/PPBN2PP/R1BQ2K1 w - g6 0 16", + "hash": 996348088513227653, + "name": "Spanish: Open, Dilworth, 14.Kxf2 Qxf6 15.Kg1 g5" + }, + "C83": { + "eco": "C83", + "fen": "r2qk2r/2p1bppp/p1n1b3/1p1pP3/4n3/1BP2N2/PP3PPP/RNBQ1RK1 w kq - 1 10", + "hash": 16870295704052173482, + "name": "Spanish: Open, Classical Defence" + }, + "C84a": { + "eco": "C84a", + "fen": "r1bqk2r/1pppbppp/p1n2n2/4p3/B3P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 4 6", + "hash": 11074621136697514492, + "name": "Spanish: Closed System" + }, + "C84b": { + "eco": "C84b", + "fen": "r1bqk2r/1pppbppp/p1n2n2/4p3/B3P3/2N2N2/PPPP1PPP/R1BQ1RK1 b kq - 5 6", + "hash": 7072883001461431077, + "name": "Spanish: Closed, 6.Nc3" + }, + "C84c": { + "eco": "C84c", + "fen": "r1bqk2r/2ppbppp/p1n2n2/1p2p3/B3P3/2N2N2/PPPP1PPP/R1BQ1RK1 w kq b6 0 7", + "hash": 154115831044531736, + "name": "Spanish: Closed, 6.Nc3 b5" + }, + "C84d": { + "eco": "C84d", + "fen": "r1bqk2r/2p1bppp/p1np1n2/1p1Np3/4P3/1B3N2/PPPP1PPP/R1BQ1RK1 b kq - 1 8", + "hash": 12335538090645240258, + "name": "Spanish: Closed, 6.Nc3 b5 7.Bb3 d6 8.Nd5" + }, + "C84e": { + "eco": "C84e", + "fen": "r1bqk2r/1pppbppp/p1n2n2/4p3/B3P3/3P1N2/PPP2PPP/RNBQ1RK1 b kq - 0 6", + "hash": 3968857551318278696, + "name": "Spanish: Closed, 6.d3" + }, + "C84f": { + "eco": "C84f", + "fen": "r1bqk2r/2ppbppp/p1n2n2/1p2p3/B3P3/3P1N2/PPP2PPP/RNBQ1RK1 w kq b6 0 7", + "hash": 6273616533996330773, + "name": "Spanish: Closed, 6.d3 b5" + }, + "C84g": { + "eco": "C84g", + "fen": "r1bqk2r/1pppbppp/p1n2n2/4p3/B2PP3/5N2/PPP2PPP/RNBQ1RK1 b kq d3 0 6", + "hash": 6666975158674814142, + "name": "Spanish: Closed, Centre Attack" + }, + "C84h": { + "eco": "C84h", + "fen": "r1bqk2r/1pppbppp/p1n2n2/4P3/B2p4/5N2/PPP2PPP/RNBQ1RK1 b kq - 0 7", + "hash": 11998371068467168975, + "name": "Spanish: Closed, Centre Attack, 7.e5" + }, + "C84i": { + "eco": "C84i", + "fen": "r1bqk2r/1pppbppp/p1n5/4P3/B2Nn3/8/PPP2PPP/RNBQ1RK1 b kq - 0 8", + "hash": 18095136919757740315, + "name": "Spanish: Closed, Centre Attack, 7.e5 Ne4 8.Nxd4" + }, + "C84j": { + "eco": "C84j", + "fen": "r1bqk2r/1pppbppp/p7/4P3/B2nn3/8/PPP2PPP/RNBQ1RK1 w kq - 0 9", + "hash": 6232228368306561112, + "name": "Spanish: Closed, Centre Attack, 7.e5 Ne4 8.Nxd4 Nxd4" + }, + "C84k": { + "eco": "C84k", + "fen": "r1bq1rk1/1pppbppp/p1n5/4P3/B2Nn3/8/PPP2PPP/RNBQ1RK1 w - - 1 9", + "hash": 17417173067191202032, + "name": "Spanish: Closed, Centre Attack, 7.e5 Ne4 8.Nxd4 O-O" + }, + "C84l": { + "eco": "C84l", + "fen": "r1bqk2r/1pppbppp/p1n2n2/8/B2pP3/5N2/PPP2PPP/RNBQR1K1 b kq - 1 7", + "hash": 4850340085985037247, + "name": "Spanish: Closed, Centre Attack, 7.Re1" + }, + "C84m": { + "eco": "C84m", + "fen": "r1bqk2r/2ppbppp/p1n2n2/1p6/B2pP3/5N2/PPP2PPP/RNBQR1K1 w kq b6 0 8", + "hash": 2543324918092953218, + "name": "Spanish: Closed, Centre Attack, 7.Re1 b5" + }, + "C84n": { + "eco": "C84n", + "fen": "r1bqk2r/2ppbppp/p1n2n2/1p2P3/B2p4/5N2/PPP2PPP/RNBQR1K1 b kq - 0 8", + "hash": 4770053577513783526, + "name": "Spanish: Closed, Centre Attack, 7.Re1 b5 8.e5" + }, + "C84o": { + "eco": "C84o", + "fen": "r1bq1rk1/1pppbppp/p1n2n2/8/B2pP3/5N2/PPP2PPP/RNBQR1K1 w - - 2 8", + "hash": 5325281348420641364, + "name": "Spanish: Closed, Centre Attack, 7.Re1 O-O" + }, + "C84p": { + "eco": "C84p", + "fen": "r1bqnrk1/1pppbppp/p1n5/4P3/B2p4/5N2/PPP2PPP/RNBQR1K1 w - - 1 9", + "hash": 131711442927189645, + "name": "Spanish: Closed, Centre Attack, 7.Re1 O-O 8.e5 Ne8" + }, + "C84q": { + "eco": "C84q", + "fen": "r1bqnrk1/1pppbppp/p1n5/4P3/B2p1B2/5N2/PPP2PPP/RN1QR1K1 b - - 2 9", + "hash": 15746563820097082606, + "name": "Spanish: Closed, Centre Attack, 7.Re1 O-O 8.e5 Ne8 9.Bf4" + }, + "C85a": { + "eco": "C85a", + "fen": "r1bqk2r/1pppbppp/p1B2n2/4p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 0 6", + "hash": 93070569194681828, + "name": "Spanish: Closed, Exchange" + }, + "C85b": { + "eco": "C85b", + "fen": "r1bqk2r/1pp1bppp/p1p2n2/4p3/4P3/5N2/PPPP1PPP/RNBQ1RK1 w kq - 0 7", + "hash": 4006661496443957147, + "name": "Spanish: Closed, Exchange" + }, + "C85c": { + "eco": "C85c", + "fen": "r1bqk2r/1pp1bppp/p1p2n2/4p3/4P3/5N2/PPPPQPPP/RNB2RK1 b kq - 1 7", + "hash": 11645194029293024287, + "name": "Spanish: Closed, Exchange, 7.Qe2" + }, + "C85d": { + "eco": "C85d", + "fen": "r1bqk2r/1pp1bppp/p1p2n2/4p3/4P3/2N2N2/PPPP1PPP/R1BQ1RK1 b kq - 1 7", + "hash": 14703581831562030402, + "name": "Spanish: Closed, Exchange, 7.Nc3" + }, + "C85e": { + "eco": "C85e", + "fen": "r2qk2r/1pp1bppp/p1p2n2/4p3/4P1b1/2N2N2/PPPP1PPP/R1BQ1RK1 w kq - 2 8", + "hash": 14906448537622504360, + "name": "Spanish: Closed, Exchange, 7.Nc3 Bg4" + }, + "C85f": { + "eco": "C85f", + "fen": "r1bqk2r/1pp1bppp/p1p2n2/4p3/4P3/5N2/PPPP1PPP/RNB1QRK1 b kq - 1 7", + "hash": 14983267017853233378, + "name": "Spanish: Closed, Exchange, 7.Qe1" + }, + "C85g": { + "eco": "C85g", + "fen": "r1bqk2r/1pp1bppp/p4n2/2p1p3/4P3/5N2/PPPP1PPP/RNB1QRK1 w kq - 0 8", + "hash": 4842032729125532973, + "name": "Spanish: Closed, Exchange, 7.Qe1 c5" + }, + "C85h": { + "eco": "C85h", + "fen": "r1bqk2r/1ppnbppp/p1p5/4p3/4P3/5N2/PPPP1PPP/RNB1QRK1 w kq - 2 8", + "hash": 3938470791409819927, + "name": "Spanish: Closed, Exchange, 7.Qe1 Nd7" + }, + "C85i": { + "eco": "C85i", + "fen": "r1bqk2r/1ppnbppp/p1p5/4p3/4P3/1P3N2/P1PP1PPP/RNB1QRK1 b kq - 0 8", + "hash": 13406690548731251322, + "name": "Spanish: Closed, Exchange, 7.Qe1 Nd7 8.b3" + }, + "C85j": { + "eco": "C85j", + "fen": "r1bqk2r/1pp1bppp/p1p2n2/4p3/4P3/3P1N2/PPP2PPP/RNBQ1RK1 b kq - 0 7", + "hash": 11042341068192765007, + "name": "Spanish: Closed, Exchange, 7.d3" + }, + "C85k": { + "eco": "C85k", + "fen": "r2qk2r/1pp1bppp/p1p2n2/4p3/4P1b1/3P1N2/PPP2PPP/RNBQ1RK1 w kq - 1 8", + "hash": 11235791127243348645, + "name": "Spanish: Closed, Exchange, 7.d3 Bg4" + }, + "C85l": { + "eco": "C85l", + "fen": "r1bqk2r/1ppnbppp/p1p5/4p3/4P3/3P1N2/PPP2PPP/RNBQ1RK1 w kq - 1 8", + "hash": 6951663456178822586, + "name": "Spanish: Closed, Exchange, 7.d3 Nd7" + }, + "C85m": { + "eco": "C85m", + "fen": "r1bqk2r/1ppnbppp/p1p5/4p3/4P3/3P1N2/PPPN1PPP/R1BQ1RK1 b kq - 2 8", + "hash": 4114035469709735306, + "name": "Spanish: Closed, Exchange, 7.d3 Nd7 8.Nbd2" + }, + "C85n": { + "eco": "C85n", + "fen": "r1bq1rk1/1ppnbppp/p1p5/4p3/2N1P3/3P1N2/PPP2PPP/R1BQ1RK1 b - - 4 9", + "hash": 8861087228850892880, + "name": "Spanish: Closed, Exchange, 7.d3 Nd7 8.Nbd2 O-O 9.Nc4" + }, + "C85o": { + "eco": "C85o", + "fen": "r1bq1rk1/1ppnb1pp/p1p2p2/4p3/2N1P3/3P1N2/PPP2PPP/R1BQ1RK1 w - - 0 10", + "hash": 13163425413877425967, + "name": "Spanish: Closed, Exchange, 7.d3 Nd7 8.Nbd2 O-O 9.Nc4 f6" + }, + "C85p": { + "eco": "C85p", + "fen": "r1bq1rk1/1ppnb1pp/p1p2p2/4p3/2N1P2N/3P4/PPP2PPP/R1BQ1RK1 b - - 1 10", + "hash": 9736259996780569992, + "name": "Spanish: Closed, Exchange, 7.d3 Nd7 8.Nbd2 O-O 9.Nc4 f6 10.Nh4" + }, + "C85q": { + "eco": "C85q", + "fen": "r1bq1rk1/1pp1b1pp/p1p2p2/2n1p3/2N1P2N/3P4/PPP2PPP/R1BQ1RK1 w - - 2 11", + "hash": 12058457096288198850, + "name": "Spanish: Closed, Exchange, 7.d3 Nd7 8.Nbd2 O-O 9.Nc4 f6 10.Nh4 Nc5" + }, + "C85r": { + "eco": "C85r", + "fen": "r1bq1rk1/1pp1b1pp/p1p2p2/2n1pN2/2N1P3/3P4/PPP2PPP/R1BQ1RK1 b - - 3 11", + "hash": 4092596522686146106, + "name": "Spanish: Closed, Exchange, 7.d3 Nd7 8.Nbd2 O-O 9.Nc4 f6 10.Nh4 Nc5 11.Nf5" + }, + "C86a": { + "eco": "C86a", + "fen": "r1bqk2r/1pppbppp/p1n2n2/4p3/B3P3/5N2/PPPPQPPP/RNB2RK1 b kq - 5 6", + "hash": 1132226622186259064, + "name": "Spanish: Worrall Attack" + }, + "C86b": { + "eco": "C86b", + "fen": "r1bqk2r/2ppbppp/p1n2n2/1p2p3/B3P3/5N2/PPPPQPPP/RNB2RK1 w kq b6 0 7", + "hash": 8048513113546997573, + "name": "Spanish: Worrall Attack, 6...b5" + }, + "C86c": { + "eco": "C86c", + "fen": "r1bqk2r/2p1bppp/p1np1n2/1p2p3/4P3/1B3N2/PPPPQPPP/RNB2RK1 w kq - 0 8", + "hash": 483181647023448010, + "name": "Spanish: Worrall Attack, 7...d6" + }, + "C86d": { + "eco": "C86d", + "fen": "r1bqk2r/2p1bppp/p1np1n2/1p2p3/4P3/1BP2N2/PP1PQPPP/RNB2RK1 b kq - 0 8", + "hash": 8101522443901997132, + "name": "Spanish: Worrall Attack, 7...d6 8.c3" + }, + "C86e": { + "eco": "C86e", + "fen": "r1bq1rk1/2ppbppp/p1n2n2/1p2p3/4P3/1B3N2/PPPPQPPP/RNB2RK1 w - - 2 8", + "hash": 3866024668317335372, + "name": "Spanish: Worrall Attack, 7...O-O" + }, + "C86f": { + "eco": "C86f", + "fen": "r1bq1rk1/2ppbppp/p1n2n2/1p2p3/4P3/1BP2N2/PP1PQPPP/RNB2RK1 b - - 0 8", + "hash": 4862788546425237706, + "name": "Spanish: Worrall Attack, 7...O-O 8.c3" + }, + "C86g": { + "eco": "C86g", + "fen": "r1bq1rk1/2p1bppp/p1np1n2/1p2p3/4P3/1BP2N2/PP1PQPPP/RNB2RK1 w - - 0 9", + "hash": 8846914695475231143, + "name": "Spanish: Worrall Attack, 7...O-O 8.c3 d6" + }, + "C86h": { + "eco": "C86h", + "fen": "r1bq1rk1/2p1bppp/p1np1n2/1p2p3/3PP3/1BP2N2/PP2QPPP/RNB2RK1 b - d3 0 9", + "hash": 13831576593248736485, + "name": "Spanish: Worrall Attack, 7...O-O 8.c3 d6 9.d4" + }, + "C86i": { + "eco": "C86i", + "fen": "r1bq1rk1/2p1bppp/p1np1n2/1p2p3/4P3/1BP2N2/PP1PQPPP/RNBR2K1 b - - 1 9", + "hash": 10945082792786923432, + "name": "Spanish: Worrall Attack, 7...O-O 8.c3 d6 9.Rd1" + }, + "C86j": { + "eco": "C86j", + "fen": "r1bq1rk1/2p1bppp/p1n2n2/1p1pp3/4P3/1BP2N2/PP1PQPPP/RNB2RK1 w - d6 0 9", + "hash": 14273660389007294188, + "name": "Spanish: Worrall Attack, 7...O-O 8.c3 d5" + }, + "C86k": { + "eco": "C86k", + "fen": "r1bq1rk1/2p1bppp/p1n2n2/1p1pp3/4P3/1BPP1N2/PP2QPPP/RNB2RK1 b - - 0 9", + "hash": 7544366838361572664, + "name": "Spanish: Worrall Attack, 7...O-O 8.c3 d5 9.d3" + }, + "C86l": { + "eco": "C86l", + "fen": "r2q1rk1/1bp1bppp/p1n2n2/1p1pp3/4P3/1BPP1N2/PP2QPPP/RNB2RK1 w - - 1 10", + "hash": 15574205275171056291, + "name": "Spanish: Worrall Attack, 7...O-O 8.c3 d5 9.d3 Bb7" + }, + "C87a": { + "eco": "C87a", + "fen": "r1bqk2r/1pppbppp/p1n2n2/4p3/B3P3/5N2/PPPP1PPP/RNBQR1K1 b kq - 5 6", + "hash": 2091072881769050856, + "name": "Spanish: Closed, 6.Re1" + }, + "C87b": { + "eco": "C87b", + "fen": "r1bqk2r/1pp1bppp/p1np1n2/4p3/B3P3/5N2/PPPP1PPP/RNBQR1K1 w kq - 0 7", + "hash": 2647674393327811461, + "name": "Spanish: Closed, Averbakh (Russian) Variation" + }, + "C87c": { + "eco": "C87c", + "fen": "r1bqk2r/1pp1bppp/p1Bp1n2/4p3/4P3/5N2/PPPP1PPP/RNBQR1K1 b kq - 0 7", + "hash": 13566038186608859037, + "name": "Spanish: Closed, Averbakh, 7.Bxc6+" + }, + "C87d": { + "eco": "C87d", + "fen": "r1bqk2r/2p1bppp/p1pp1n2/8/3pP3/5N2/PPP2PPP/RNBQR1K1 w kq - 0 9", + "hash": 2765057227784800992, + "name": "Spanish: Closed, Averbakh, 7.Bxc6+ bxc6 8.d4 exd4" + }, + "C87e": { + "eco": "C87e", + "fen": "r1bqk2r/1pp1bppp/p1np1n2/4p3/B3P3/2P2N2/PP1P1PPP/RNBQR1K1 b kq - 0 7", + "hash": 5937034371008803843, + "name": "Spanish: Closed, Averbakh, 7.c3" + }, + "C87f": { + "eco": "C87f", + "fen": "r2qk2r/1pp1bppp/p1np1n2/4p3/B3P1b1/2P2N2/PP1P1PPP/RNBQR1K1 w kq - 1 8", + "hash": 5816222445937801961, + "name": "Spanish: Closed, Averbakh, 7.c3 Bg4" + }, + "C87g": { + "eco": "C87g", + "fen": "r2qk2r/1pp1bppp/p1np1n2/4p3/B3P1b1/2P2N1P/PP1P1PP1/RNBQR1K1 b kq - 0 8", + "hash": 13277881368888832795, + "name": "Spanish: Closed, Averbakh, 7.c3 Bg4 8.h3" + }, + "C87h": { + "eco": "C87h", + "fen": "r2qk2r/1pp1bppp/p1np1n2/4p3/B3P1b1/2PP1N2/PP3PPP/RNBQR1K1 b kq - 0 8", + "hash": 18308149168383066429, + "name": "Spanish: Closed, Averbakh, 7.c3 Bg4 8.d3" + }, + "C87i": { + "eco": "C87i", + "fen": "r1bq1rk1/1pp1bppp/p1np1n2/4p3/B3P3/2P2N2/PP1P1PPP/RNBQR1K1 w - - 1 8", + "hash": 6398622186430160360, + "name": "Spanish: Closed, Averbakh, 7.c3 O-O" + }, + "C87j": { + "eco": "C87j", + "fen": "r1bq1rk1/1pp1bppp/p1np1n2/4p3/B2PP3/2P2N2/PP3PPP/RNBQR1K1 b - d3 0 8", + "hash": 11383225535268352170, + "name": "Spanish: Closed, Averbakh, 7.c3 O-O 8.d4" + }, + "C87k": { + "eco": "C87k", + "fen": "r2q1rk1/1ppbbppp/p1np1n2/4p3/B2PP3/2P2N2/PP3PPP/RNBQR1K1 w - - 1 9", + "hash": 9167262871351566491, + "name": "Spanish: Closed, Averbakh, 7.c3 O-O 8.d4 Bd7" + }, + "C87l": { + "eco": "C87l", + "fen": "r2q1rk1/1ppbbppp/p1np1n2/4p3/B2PP3/2P2N2/PP1N1PPP/R1BQR1K1 b - - 2 9", + "hash": 2762414527524112555, + "name": "Spanish: Closed, Averbakh, 7.c3 O-O 8.d4 Bd7 9.Nbd2" + }, + "C87m": { + "eco": "C87m", + "fen": "r2qr1k1/1ppbbppp/p1np1n2/4p3/B2PP3/2P2N2/PP1N1PPP/R1BQR1K1 w - - 3 10", + "hash": 4181546213189152041, + "name": "Spanish: Closed, Averbakh, 7.c3 O-O 8.d4 Bd7 9.Nbd2 Re8" + }, + "C87n": { + "eco": "C87n", + "fen": "r1bq1rk1/1pp1bppp/p1np1n2/4p3/B3P3/2P2N1P/PP1P1PP1/RNBQR1K1 b - - 0 8", + "hash": 12700051189588923418, + "name": "Spanish: Closed, Averbakh, 7.c3 O-O 8.h3" + }, + "C87o": { + "eco": "C87o", + "fen": "r2q1rk1/1ppbbppp/p1np1n2/4p3/B3P3/2P2N1P/PP1P1PP1/RNBQR1K1 w - - 1 9", + "hash": 5980317506095760427, + "name": "Spanish: Closed, Averbakh, 7.c3 O-O 8.h3 Bd7" + }, + "C88a": { + "eco": "C88a", + "fen": "r1bqk2r/2ppbppp/p1n2n2/1p2p3/B3P3/5N2/PPPP1PPP/RNBQR1K1 w kq b6 0 7", + "hash": 9007359377143123925, + "name": "Spanish: Closed, 6...b5" + }, + "C88b": { + "eco": "C88b", + "fen": "r2qk2r/1bppbppp/p1n2n2/1p2p3/4P3/1B3N2/PPPP1PPP/RNBQR1K1 w kq - 2 8", + "hash": 11325643120480356780, + "name": "Spanish: Closed, Trajkovic Counterattack" + }, + "C88c": { + "eco": "C88c", + "fen": "r1bqk2r/2p1bppp/p1np1n2/1p2p3/4P3/1B3N2/PPPP1PPP/RNBQR1K1 w kq - 0 8", + "hash": 1442869919908556634, + "name": "Spanish: Closed 7...d6" + }, + "C88d": { + "eco": "C88d", + "fen": "r1bqk2r/2p1bppp/p1np1n2/1p2p3/4P3/1BP2N2/PP1P1PPP/RNBQR1K1 b kq - 0 8", + "hash": 7123817290303201500, + "name": "Spanish: Closed 7...d6 8.c3" + }, + "C88e": { + "eco": "C88e", + "fen": "r1bqk2r/2p1bppp/p2p1n2/np2p3/4P3/1BP2N2/PP1P1PPP/RNBQR1K1 w kq - 1 9", + "hash": 4020527962468270806, + "name": "Spanish: Closed 7...d6 8.c3 Na5" + }, + "C88f": { + "eco": "C88f", + "fen": "r1bq1rk1/2ppbppp/p1n2n2/1p2p3/4P3/1B3N2/PPPP1PPP/RNBQR1K1 w - - 2 8", + "hash": 2815982706962157532, + "name": "Spanish: Closed, 7...O-O" + }, + "C88g": { + "eco": "C88g", + "fen": "r1bq1rk1/2ppbppp/p1n2n2/1p2p3/4P3/1B1P1N2/PPP2PPP/RNBQR1K1 b - - 0 8", + "hash": 9921608715949044744, + "name": "Spanish: Closed, 8.d3" + }, + "C88h": { + "eco": "C88h", + "fen": "r1bq1rk1/2ppbppp/p1n2n2/1p2p3/4P3/1B3N1P/PPPP1PP1/RNBQR1K1 b - - 0 8", + "hash": 14981150376881587758, + "name": "Spanish: Closed, 8.h3" + }, + "C88i": { + "eco": "C88i", + "fen": "r2q1rk1/1bp1bppp/p1np1n2/1p2p3/4P3/1B1P1N1P/PPP2PP1/RNBQR1K1 w - - 0 10", + "hash": 16747094621393705740, + "name": "Spanish: Closed, 8.h3 Bb7 9.d3 d6" + }, + "C88j": { + "eco": "C88j", + "fen": "r1bq1rk1/2ppbppp/p1n2n2/1p2p3/P3P3/1B3N2/1PPP1PPP/RNBQR1K1 b - a3 0 8", + "hash": 5538617984413374994, + "name": "Spanish: Closed, Anti-Marshall 8.a4" + }, + "C88k": { + "eco": "C88k", + "fen": "r1bq1rk1/2ppbppp/p1n2n2/4p3/Pp2P3/1B3N2/1PPP1PPP/RNBQR1K1 w - - 0 9", + "hash": 3247146357736457041, + "name": "Spanish: Closed, Anti-Marshall 8.a4 b4" + }, + "C88l": { + "eco": "C88l", + "fen": "r2q1rk1/1bppbppp/p1n2n2/1p2p3/P3P3/1B3N2/1PPP1PPP/RNBQR1K1 w - - 1 9", + "hash": 18180283143861187977, + "name": "Spanish: Closed, Anti-Marshall 8.a4 Bb7" + }, + "C88m": { + "eco": "C88m", + "fen": "r2q1rk1/1bppbppp/p1n2n2/1p2p3/P3P3/1B1P1N2/1PP2PPP/RNBQR1K1 b - - 0 9", + "hash": 5974470102510112349, + "name": "Spanish: Closed, Anti-Marshall 8.a4 Bb7 9.d3" + }, + "C88n": { + "eco": "C88n", + "fen": "r2q1rk1/1bp1bppp/p1np1n2/1p2p3/P3P3/1B1P1N2/1PP2PPP/RNBQR1K1 w - - 0 10", + "hash": 7733527762479531824, + "name": "Spanish: Closed, Anti-Marshall 8.a4 Bb7 9.d3 d6" + }, + "C88o": { + "eco": "C88o", + "fen": "r2q1rk1/1bp1bppp/p1np1n2/1p2p3/P3P3/1BNP1N2/1PP2PPP/R1BQR1K1 b - - 1 10", + "hash": 10431491380526466537, + "name": "Spanish: Closed, Anti-Marshall 8.a4 Bb7 9.d3 d6 10.Nc3" + }, + "C88p": { + "eco": "C88p", + "fen": "r2q1rk1/1bp1bppp/p1np1n2/1p2p3/P3P3/1BPP1N2/1P3PPP/RNBQR1K1 b - - 0 10", + "hash": 2128507307666360502, + "name": "Spanish: Closed, Anti-Marshall 8.a4 Bb7 9.d3 d6 10.c3" + }, + "C88q": { + "eco": "C88q", + "fen": "r1bq1rk1/2ppbppp/p1n2n2/1p2p3/4P3/1BP2N2/PP1P1PPP/RNBQR1K1 b - - 0 8", + "hash": 5894818025045966938, + "name": "Spanish: Closed, 8.c3" + }, + "C89a": { + "eco": "C89a", + "fen": "r1bq1rk1/2p1bppp/p1n2n2/1p1pp3/4P3/1BP2N2/PP1P1PPP/RNBQR1K1 w - d6 0 9", + "hash": 15322578361675091580, + "name": "Spanish: Marshall Counterattack" + }, + "C89b": { + "eco": "C89b", + "fen": "r1bq1rk1/2p1bppp/p1n2n2/1p1Pp3/8/1BP2N2/PP1P1PPP/RNBQR1K1 b - - 0 9", + "hash": 17544812055730867322, + "name": "Spanish: Marshall, 9.exd5" + }, + "C89c": { + "eco": "C89c", + "fen": "r1bq1rk1/2p1bppp/p1n5/1p1np3/8/1BP2N2/PP1P1PPP/RNBQR1K1 w - - 0 10", + "hash": 7824384047730217254, + "name": "Spanish: Marshall, 9.exd5 Nxd5" + }, + "C89d": { + "eco": "C89d", + "fen": "r1bq1rk1/2p1bppp/p1n5/1p1nN3/8/1BP5/PP1P1PPP/RNBQR1K1 b - - 0 10", + "hash": 15192399858224854032, + "name": "Spanish: Marshall, 9.exd5 Nxd5 10.Nxe5" + }, + "C89e": { + "eco": "C89e", + "fen": "r1bq1rk1/2p1bppp/p4n2/1p2R3/8/1BP5/PP1P1PPP/RNBQ2K1 w - - 1 12", + "hash": 5052237732066871591, + "name": "Spanish: Marshall, 11.Rxe5 Nf6" + }, + "C89f": { + "eco": "C89f", + "fen": "r1bq1rk1/4bppp/p1p5/1p1nR3/8/1BP5/PP1P1PPP/RNBQ2K1 w - - 0 12", + "hash": 1186440553419075369, + "name": "Spanish: Marshall, 11.Rxe5 c6" + }, + "C89g": { + "eco": "C89g", + "fen": "r1bq1rk1/4bppp/p1p5/1p1BR3/8/2P5/PP1P1PPP/RNBQ2K1 b - - 0 12", + "hash": 8187691128077849458, + "name": "Spanish: Marshall, 12.Bxd5" + }, + "C89h": { + "eco": "C89h", + "fen": "r1bq1rk1/5ppp/p2b4/1p1p4/3P4/2P1R3/PP3PPP/RNBQ2K1 b - - 2 14", + "hash": 8951078925370278540, + "name": "Spanish: Marshall, Kevitz Variation" + }, + "C89i": { + "eco": "C89i", + "fen": "r1bq1rk1/4bppp/p1p5/1p1nR3/8/1BPP4/PP3PPP/RNBQ2K1 b - - 0 12", + "hash": 13750570142741943549, + "name": "Spanish: Marshall, 12.d3" + }, + "C89j": { + "eco": "C89j", + "fen": "r1b2rk1/5ppp/p1pb4/1p1n4/7q/1BPP4/PP3PPP/RNBQR1K1 w - - 3 14", + "hash": 14822734972901827347, + "name": "Spanish: Marshall, 12.d3 Bd6 13.Re1 Qh4" + }, + "C89k": { + "eco": "C89k", + "fen": "r1bq1rk1/4bppp/p1p5/1p1nR3/3P4/1BP5/PP3PPP/RNBQ2K1 b - d3 0 12", + "hash": 15366909542031966827, + "name": "Spanish: Marshall, Main Line (12.d4)" + }, + "C89l": { + "eco": "C89l", + "fen": "r1bq1rk1/5ppp/p1pb4/1p1n4/3P4/1BP5/PP2RPPP/RNBQ2K1 b - - 2 13", + "hash": 11318480280491881497, + "name": "Spanish: Marshall, Main Line, 13.Re2" + }, + "C89m": { + "eco": "C89m", + "fen": "r1bq1rk1/5ppp/p1pb4/1p1n4/3P4/1BP5/PP3PPP/RNBQR1K1 b - - 2 13", + "hash": 6350821375086542203, + "name": "Spanish: Marshall, Main Line, 13.Re1" + }, + "C89n": { + "eco": "C89n", + "fen": "r1b2rk1/5ppp/p1pb4/1p1n4/3P4/1BP3Pq/PP3P1P/RNBQR1K1 w - - 1 15", + "hash": 5925887909347495521, + "name": "Spanish: Marshall, Main Line, 14.g3 Qh3" + }, + "C89o": { + "eco": "C89o", + "fen": "r1b2rk1/5ppp/p1pb4/1p1n4/3PR3/1BP3Pq/PP3P1P/RNBQ2K1 b - - 2 15", + "hash": 15251866948470945850, + "name": "Spanish: Marshall, Main Line, 15.Re4" + }, + "C89p": { + "eco": "C89p", + "fen": "r1b2rk1/5ppp/p1pb4/1p1n4/3P4/1BP1B1Pq/PP3P1P/RN1QR1K1 b - - 2 15", + "hash": 2392607965632435695, + "name": "Spanish: Marshall, Main Line, 15.Be3" + }, + "C89q": { + "eco": "C89q", + "fen": "4rrk1/5ppp/p1pb4/1p1n4/3P2b1/1BPQB1Pq/PP3P1P/RN2R1K1 w - - 5 17", + "hash": 2507405529085413312, + "name": "Spanish: Marshall, Main Line, 15.Be3 Bg4 16.Qd3 Rae8" + }, + "C89r": { + "eco": "C89r", + "fen": "4rrk1/6pp/p1pb4/1p1n1p2/3P2b1/1BPQB1Pq/PP1N1P1P/R3R1K1 w - f6 0 18", + "hash": 17279686079796544046, + "name": "Spanish: Marshall, Main Line, Pawn Push Variation" + }, + "C89s": { + "eco": "C89s", + "fen": "5rk1/5ppp/p1pbr3/1p1n4/3P2b1/1BPQB1Pq/PP1N1P1P/R3R1K1 w - - 7 18", + "hash": 12527594676726446474, + "name": "Spanish: Marshall, Main Line, Classical Variation" + }, + "C89t": { + "eco": "C89t", + "fen": "5rk1/5ppp/p1pbr3/1p1n4/2PP2b1/1B1QB1Pq/PP1N1P1P/R3R1K1 b - - 0 18", + "hash": 12679240343498168322, + "name": "Spanish: Marshall, Main Line, Classical, 18.c4" + }, + "C89u": { + "eco": "C89u", + "fen": "5rk1/5ppp/p1pbr3/1p1B4/3P2b1/2PQB1Pq/PP1N1P1P/R3R1K1 b - - 0 18", + "hash": 14703518493513434577, + "name": "Spanish: Marshall, Main Line, Classical, 18.Bxd5" + }, + "C89v": { + "eco": "C89v", + "fen": "5rk1/5ppp/p1pbr3/1p1n4/3P2b1/1BP1B1Pq/PP1N1P1P/R3RQK1 b - - 8 18", + "hash": 16593550071150216293, + "name": "Spanish: Marshall, Main Line, Classical, 18.Qf1" + }, + "C89w": { + "eco": "C89w", + "fen": "5rk1/5ppp/p1pbr3/1p1n4/P2P2b1/1BPQB1Pq/1P1N1P1P/R3R1K1 b - a3 0 18", + "hash": 14272903447166151748, + "name": "Spanish: Marshall, Main Line, Classical, 18.a4" + }, + "C89x": { + "eco": "C89x", + "fen": "5rk1/5ppp/p1pbr3/1p1n3q/P2P2b1/1BPQB1P1/1P1N1P1P/R3R1K1 w - - 1 19", + "hash": 8834900859833762737, + "name": "Spanish: Marshall, Main Line, Classical, Spassky Variation" + }, + "C89y": { + "eco": "C89y", + "fen": "5rk1/6pp/p1pbr3/1p1n1p2/P2P2b1/1BPQB1Pq/1P1N1P1P/R3R1K1 w - f6 0 19", + "hash": 5943885684988264858, + "name": "Spanish: Marshall, Main Line, Classical, 18.a4 f5" + }, + "C90a": { + "eco": "C90a", + "fen": "r1bq1rk1/2p1bppp/p1np1n2/1p2p3/4P3/1BP2N2/PP1P1PPP/RNBQR1K1 w - - 0 9", + "hash": 7526658070736734519, + "name": "Spanish: Closed, 8...d6" + }, + "C90b": { + "eco": "C90b", + "fen": "r1bq1rk1/2p1bppp/p1np1n2/1p2p3/4P3/2P2N2/PPBP1PPP/RNBQR1K1 b - - 1 9", + "hash": 10974543473352722619, + "name": "Spanish: Closed, Lutikov Variation" + }, + "C90c": { + "eco": "C90c", + "fen": "r1bq1rk1/2p1bppp/p1np1n2/1p2p3/4P3/PBP2N2/1P1P1PPP/RNBQR1K1 b - - 0 9", + "hash": 11810758765431195511, + "name": "Spanish: Closed, Suetin Variation" + }, + "C90d": { + "eco": "C90d", + "fen": "r1bq1rk1/2p1bppp/p1np1n2/1p2p3/P3P3/1BP2N2/1P1P1PPP/RNBQR1K1 b - a3 0 9", + "hash": 269496137927679225, + "name": "Spanish: Closed, 8...d6 9.a4" + }, + "C90e": { + "eco": "C90e", + "fen": "r1bq1rk1/2p1bppp/p1np1n2/1p2p3/4P3/1BPP1N2/PP3PPP/RNBQR1K1 b - - 0 9", + "hash": 14326175223597478627, + "name": "Spanish: Closed, Pilnik Variation" + }, + "C90f": { + "eco": "C90f", + "fen": "r1bq1rk1/2p1bpp1/p1np1n1p/1p2p3/4P3/1BPP1N2/PP3PPP/RNBQR1K1 w - - 0 10", + "hash": 6063963930350582774, + "name": "Spanish: Closed, Pilnik, 9...h6" + }, + "C90g": { + "eco": "C90g", + "fen": "r1bq1rk1/2p1bppp/p2p1n2/np2p3/4P3/1BPP1N2/PP3PPP/RNBQR1K1 w - - 1 10", + "hash": 10648733297573302505, + "name": "Spanish: Closed, Pilnik, 9...Na5" + }, + "C90h": { + "eco": "C90h", + "fen": "r1bq1rk1/4bppp/p2p1n2/npp1p3/4P3/2PP1N2/PPBN1PPP/R1BQR1K1 b - - 1 11", + "hash": 15916259604268577320, + "name": "Spanish: Closed, Pilnik, 11.Nbd2" + }, + "C90i": { + "eco": "C90i", + "fen": "r1b2rk1/2q1bppp/p2p1n2/npp1p3/4P3/2PP1N2/PPBN1PPP/R1BQR1K1 w - - 2 12", + "hash": 15780286441996205353, + "name": "Spanish: Closed, Pilnik, 11.Nbd2 Qc7" + }, + "C90j": { + "eco": "C90j", + "fen": "r1bq1rk1/4bppp/p1np1n2/1pp1p3/4P3/2PP1N2/PPBN1PPP/R1BQR1K1 w - - 2 12", + "hash": 9941347896717692962, + "name": "Spanish: Closed, Pilnik, 11.Nbd2 Nc6" + }, + "C90k": { + "eco": "C90k", + "fen": "r1bqr1k1/4bppp/p2p1n2/npp1p3/4P3/2PP1N2/PPBN1PPP/R1BQR1K1 w - - 2 12", + "hash": 13884648813020518314, + "name": "Spanish: Closed, Pilnik, 11.Nbd2 Re8" + }, + "C90l": { + "eco": "C90l", + "fen": "r1bqr1k1/4bppp/p1np1n2/1pp1p3/4P3/2PP1N2/PPB2PPP/R1BQRNK1 w - - 4 13", + "hash": 2318458654319972475, + "name": "Spanish: Closed, Pilnik, 12.Nf1 Nc6" + }, + "C90m": { + "eco": "C90m", + "fen": "r1bqrbk1/5ppp/p2p1n2/npp1p3/4P3/2PP1N2/PPB2PPP/R1BQRNK1 w - - 4 13", + "hash": 7059261327641616096, + "name": "Spanish: Closed, Pilnik, 12.Nf1 Bf8" + }, + "C90n": { + "eco": "C90n", + "fen": "r1bqr1k1/4bpp1/p2p1n1p/npp1p3/4P3/2PP1N2/PPB2PPP/R1BQRNK1 w - - 0 13", + "hash": 16702918975650331492, + "name": "Spanish: Closed, Pilnik, 12.Nf1 h6" + }, + "C91a": { + "eco": "C91a", + "fen": "r1bq1rk1/2p1bppp/p1np1n2/1p2p3/3PP3/1BP2N2/PP3PPP/RNBQR1K1 b - d3 0 9", + "hash": 12484294866112488565, + "name": "Spanish: Closed, 9.d4" + }, + "C91b": { + "eco": "C91b", + "fen": "r2q1rk1/2p1bppp/p1np1n2/1p2p3/3PP1b1/1BP2N2/PP3PPP/RNBQR1K1 w - - 1 10", + "hash": 12651431844413909663, + "name": "Spanish: Closed, Bogoljubow Variation" + }, + "C91c": { + "eco": "C91c", + "fen": "r2q1rk1/2p1bppp/p1np1n2/1p2p3/3PP1b1/1BP1BN2/PP3PPP/RN1QR1K1 b - - 2 10", + "hash": 15896107822834856209, + "name": "Spanish: Closed, Bogoljubow, 10.Be3" + }, + "C91d": { + "eco": "C91d", + "fen": "r2q1rk1/2p1bppp/p1np1n2/1p6/3pP1b1/1BP1BN2/PP3PPP/RN1QR1K1 w - - 0 11", + "hash": 5180365893071938820, + "name": "Spanish: Closed, Bogoljubow, 10.Be3 exd4" + }, + "C91e": { + "eco": "C91e", + "fen": "r2q1rk1/2p1bppp/p1np1n2/1p1Pp3/4P1b1/1BP2N2/PP3PPP/RNBQR1K1 b - - 0 10", + "hash": 1556742889168288962, + "name": "Spanish: Closed, Bogoljubow, 10.d5" + }, + "C91f": { + "eco": "C91f", + "fen": "r2q1rk1/2p1bppp/p2p1n2/np1Pp3/4P1b1/1BP2N2/PP3PPP/RNBQR1K1 w - - 1 11", + "hash": 4651518701789585096, + "name": "Spanish: Closed, Bogoljubow, 10.d5 Na5" + }, + "C91g": { + "eco": "C91g", + "fen": "r1q2rk1/2p1bppp/p2p1n2/np1Pp3/4P1b1/2P2N2/PPB2PPP/RNBQR1K1 w - - 3 12", + "hash": 7105484161181451507, + "name": "Spanish: Closed, Bogoljubow, 10.d5 Na5 11.Bc2 Qc8" + }, + "C91h": { + "eco": "C91h", + "fen": "r2q1rk1/4bppp/p1pp1n2/np1Pp3/4P1b1/2P2N2/PPB2PPP/RNBQR1K1 w - - 0 12", + "hash": 2507951893550173439, + "name": "Spanish: Closed, Bogoljubow, 10.d5 Na5 11.Bc2 c6" + }, + "C91i": { + "eco": "C91i", + "fen": "r1bq1rk1/4bppp/p1pp1n2/np1Pp3/4P3/2P2N1P/PPB2PP1/RNBQR1K1 w - - 1 13", + "hash": 14478544457231059943, + "name": "Spanish: Closed, Bogoljubow, 10.d5 Na5 11.Bc2 c6 12.h3 Bc8" + }, + "C92a": { + "eco": "C92a", + "fen": "r1bq1rk1/2p1bppp/p1np1n2/1p2p3/4P3/1BP2N1P/PP1P1PP1/RNBQR1K1 b - - 0 9", + "hash": 9261602184711422149, + "name": "Spanish: Closed, 9.h3" + }, + "C92b": { + "eco": "C92b", + "fen": "r1bq1rk1/2p1bppp/2np1n2/pp2p3/4P3/1BP2N1P/PP1P1PP1/RNBQR1K1 w - - 0 10", + "hash": 3223645521875808640, + "name": "Spanish: Closed, Keres Variation" + }, + "C92c": { + "eco": "C92c", + "fen": "r2q1rk1/2p1bppp/p1npbn2/1p2p3/4P3/1BP2N1P/PP1P1PP1/RNBQR1K1 w - - 1 10", + "hash": 15294014094391229389, + "name": "Spanish: Closed, Kholmov Variation" + }, + "C92d": { + "eco": "C92d", + "fen": "r2q1rk1/2p1bppp/p1np1n2/1p2p3/3PP3/1QP2N1P/PP3PP1/RNB1R1K1 b - - 0 11", + "hash": 14068471730505497391, + "name": "Spanish: Closed, Kholmov, 11.Qxb3" + }, + "C92e": { + "eco": "C92e", + "fen": "r1bq1rk1/2pnbppp/p1np4/1p2p3/4P3/1BP2N1P/PP1P1PP1/RNBQR1K1 w - - 1 10", + "hash": 8773242676338805040, + "name": "Spanish: Closed, Karpov Variation" + }, + "C92f": { + "eco": "C92f", + "fen": "r1bq1rk1/2pn1ppp/p1np1b2/1p2p3/3PP3/1BP2N1P/PP3PP1/RNBQR1K1 w - - 1 11", + "hash": 11449434162266612883, + "name": "Spanish: Closed, Karpov Variation, 10.d4 Bf6" + }, + "C92g": { + "eco": "C92g", + "fen": "r1bq1rk1/2pn1ppp/p1np1b2/1p2p3/P2PP3/1BP2N1P/1P3PP1/RNBQR1K1 b - a3 0 11", + "hash": 17667042278143455581, + "name": "Spanish: Closed, Karpov Variation, 10.d4 Bf6 11.a4" + }, + "C92h": { + "eco": "C92h", + "fen": "r2q1rk1/1bpn1ppp/p1np1b2/1p2p3/P2PP3/NBP2N1P/1P3PP1/R1BQR1K1 b - - 2 12", + "hash": 4781531490331455752, + "name": "Spanish: Closed, Karpov Variation, 10.d4 Bf6 11.a4 Bb7 12.Na3" + }, + "C92i": { + "eco": "C92i", + "fen": "r2q1rk1/1bp1bppp/p1np1n2/1p2p3/4P3/1BP2N1P/PP1P1PP1/RNBQR1K1 w - - 1 10", + "hash": 3465408422837907294, + "name": "Spanish: Closed, Zaitsev (Flohr) Variation" + }, + "C92j": { + "eco": "C92j", + "fen": "r2q1rk1/1bp1bppp/p1np1n2/1p2p3/3PP3/1BP2N1P/PP3PP1/RNBQR1K1 b - d3 0 10", + "hash": 17663879921517150748, + "name": "Spanish: Closed, Zaitsev, 10.d4" + }, + "C92k": { + "eco": "C92k", + "fen": "r2qr1k1/1bp1bppp/p1np1n2/1p2p3/3PP3/1BP2N1P/PP3PP1/RNBQR1K1 w - - 1 11", + "hash": 16821914874616457118, + "name": "Spanish: Closed, Zaitsev, 10.d4 Re8" + }, + "C92l": { + "eco": "C92l", + "fen": "r2qr1k1/1bp1bppp/p1np1n2/1p2p1N1/3PP3/1BP4P/PP3PP1/RNBQR1K1 b - - 2 11", + "hash": 13808480274047262522, + "name": "Spanish: Closed, Zaitsev, 11.Ng5" + }, + "C92m": { + "eco": "C92m", + "fen": "r2qr1k1/1bp1bppp/p1np1n2/1p2p3/3PP3/1BP2N1P/PP1N1PP1/R1BQR1K1 b - - 2 11", + "hash": 12690521499994558382, + "name": "Spanish: Closed, Zaitsev, 11.Nbd2" + }, + "C92n": { + "eco": "C92n", + "fen": "rn1qrbk1/1bp2ppp/p2p1n2/1p1Pp3/4P3/1BP2N1P/PP1N1PP1/R1BQR1K1 w - - 1 13", + "hash": 13057098944092213345, + "name": "Spanish: Closed, Zaitsev, 11.Nbd2 Bf8 12.d5 Nb8" + }, + "C92o": { + "eco": "C92o", + "fen": "r2qrbk1/1bp2ppp/p1np1n2/1p2p3/3PP3/2P2N1P/PPBN1PP1/R1BQR1K1 b - - 4 12", + "hash": 6118385806552588979, + "name": "Spanish: Closed, Zaitsev, 12.Bc2" + }, + "C92p": { + "eco": "C92p", + "fen": "r2qrbk1/1bp2ppp/p1np1n2/1p2p3/3PP3/PBP2N1P/1P1N1PP1/R1BQR1K1 b - - 0 12", + "hash": 8020216975500586367, + "name": "Spanish: Closed, Zaitsev, 12.a3" + }, + "C92q": { + "eco": "C92q", + "fen": "r2qrbk1/1bp2ppp/p1np1n2/1p2p3/P2PP3/1BP2N1P/1P1N1PP1/R1BQR1K1 b - a3 0 12", + "hash": 14922896247606638321, + "name": "Spanish: Closed, Zaitsev, 12.a4" + }, + "C92r": { + "eco": "C92r", + "fen": "r2qrbk1/1bp2pp1/p1np1n1p/1p2p3/P2PP3/1BP2N1P/1P1N1PP1/R1BQR1K1 w - - 0 13", + "hash": 6768783195162689508, + "name": "Spanish: Closed, Zaitsev, 12.a4 h6" + }, + "C92s": { + "eco": "C92s", + "fen": "r2qrbk1/1bp2pp1/p1np1n1p/1p2p3/P2PP3/2P2N1P/1PBN1PP1/R1BQR1K1 b - - 1 13", + "hash": 12526457745326243432, + "name": "Spanish: Closed, Zaitsev, 12.a4 h6 13.Bc2" + }, + "C92t": { + "eco": "C92t", + "fen": "r2qrbk1/1bp2pp1/p1np1n1p/1p6/P2pP3/2P2N1P/1PBN1PP1/R1BQR1K1 w - - 0 14", + "hash": 3938644651286162045, + "name": "Spanish: Closed, Zaitsev, 12.a4 h6 13.Bc2 exd4" + }, + "C92u": { + "eco": "C92u", + "fen": "r2qrbk1/1b3pp1/p2p1n1p/1pp5/Pn1PP3/5N1P/1P1N1PP1/RBBQR1K1 w - c6 0 16", + "hash": 5358420626437343622, + "name": "Spanish: Closed, Zaitsev, 12.a4 h6 13.Bc2 exd4 14.cxd4 Nb4 15.Bb1 c5" + }, + "C93": { + "eco": "C93", + "fen": "r1bq1rk1/2p1bpp1/p1np1n1p/1p2p3/4P3/1BP2N1P/PP1P1PP1/RNBQR1K1 w - - 0 10", + "hash": 1328730645670693328, + "name": "Spanish: Closed, Smyslov Defence" + }, + "C94a": { + "eco": "C94a", + "fen": "rnbq1rk1/2p1bppp/p2p1n2/1p2p3/4P3/1BP2N1P/PP1P1PP1/RNBQR1K1 w - - 1 10", + "hash": 3128324985775809990, + "name": "Spanish: Closed, Breyer Defence" + }, + "C94b": { + "eco": "C94b", + "fen": "rnbq1rk1/2p1bppp/p2p1n2/1p2p3/P3P3/1BP2N1P/1P1P1PP1/RNBQR1K1 b - a3 0 10", + "hash": 4657694067045871624, + "name": "Spanish: Closed, Breyer, Matulovic Variation" + }, + "C94c": { + "eco": "C94c", + "fen": "rnbq1rk1/2p1bppp/p2p1n2/1p2p3/4P3/1BPP1N1P/PP3PP1/RNBQR1K1 b - - 0 10", + "hash": 9641865037621878290, + "name": "Spanish: Closed, Breyer, 10.d3" + }, + "C94d": { + "eco": "C94d", + "fen": "r1bq1rk1/2pnbppp/p2p1n2/1p2p3/4P3/1BPP1N1P/PP3PP1/RNBQR1K1 w - - 1 11", + "hash": 13127344714554356702, + "name": "Spanish: Closed, Breyer, 10.d3 Nbd7" + }, + "C94e": { + "eco": "C94e", + "fen": "r1bq1rk1/2pnbppp/p2p1n2/1p2p3/4P3/1BPP1N1P/PP1N1PP1/R1BQR1K1 b - - 2 11", + "hash": 17240634887067704302, + "name": "Spanish: Closed, Breyer, 10.d3 Nbd7 11.Nbd2" + }, + "C94f": { + "eco": "C94f", + "fen": "r2q1rk1/1bpnbppp/p2p1n2/1p2p3/4P3/1BPP1N1P/PP1N1PP1/R1BQR1K1 w - - 3 12", + "hash": 6904935847241593973, + "name": "Spanish: Closed, Breyer, 10.d3 Nbd7 11.Nbd2 Bb7" + }, + "C95a": { + "eco": "C95a", + "fen": "rnbq1rk1/2p1bppp/p2p1n2/1p2p3/3PP3/1BP2N1P/PP3PP1/RNBQR1K1 b - d3 0 10", + "hash": 17176488554825271428, + "name": "Spanish: Closed, Breyer, 10.d4" + }, + "C95b": { + "eco": "C95b", + "fen": "r1bq1rk1/2pnbppp/p2p1n2/1p2p3/3PP3/1BP2N1P/PP3PP1/RNBQR1K1 w - - 1 11", + "hash": 15977748966695806280, + "name": "Spanish: Closed, Breyer, 10.d4 Nbd7" + }, + "C95c": { + "eco": "C95c", + "fen": "r1bq1rk1/2pnbppp/p2p1n2/1p2p3/3PP2N/1BP4P/PP3PP1/RNBQR1K1 b - - 2 11", + "hash": 17009985025761109999, + "name": "Spanish: Closed, Breyer, Simagin Variation" + }, + "C95d": { + "eco": "C95d", + "fen": "r1bq1rk1/2pnbppp/p2p1n2/1p2p1B1/3PP3/1BP2N1P/PP3PP1/RN1QR1K1 b - - 2 11", + "hash": 2010304448761331328, + "name": "Spanish: Closed, Breyer, 10.d4 Nbd7 11.Bg5" + }, + "C95e": { + "eco": "C95e", + "fen": "r1bq1rk1/2pnbppp/p2p1n2/1p2p3/2PPP3/1B3N1P/PP3PP1/RNBQR1K1 b - - 0 11", + "hash": 16110254506584605888, + "name": "Spanish: Closed, Breyer, Arseniev Variation" + }, + "C95f": { + "eco": "C95f", + "fen": "r1bq1rk1/2pnbppp/p2p1n2/1p2p3/3PP3/1BP2N1P/PP1N1PP1/R1BQR1K1 b - - 2 11", + "hash": 9570965503551802744, + "name": "Spanish: Closed, Breyer, 10.d4 Nbd7 11.Nbd2" + }, + "C95g": { + "eco": "C95g", + "fen": "r2q1rk1/1bpnbppp/p2p1n2/1p2p3/3PP3/2P2N1P/PPBN1PP1/R1BQR1K1 b - - 4 12", + "hash": 14158130209009296239, + "name": "Spanish: Closed, Breyer, 10.d4 Nbd7 11.Nbd2 Bb7 12.Bc2" + }, + "C95h": { + "eco": "C95h", + "fen": "r2qr1k1/1bpnbppp/p2p1n2/1p2p3/3PP3/2P2N1P/PPBN1PP1/R1BQR1K1 w - - 5 13", + "hash": 15576278931287377645, + "name": "Spanish: Closed, Breyer, Main Line" + }, + "C95i": { + "eco": "C95i", + "fen": "r2qr1k1/1bpnbppp/p2p1n2/1p2p3/1P1PP3/2P2N1P/P1BN1PP1/R1BQR1K1 b - b3 0 13", + "hash": 8277469355730496201, + "name": "Spanish: Closed, Breyer, Main Line, 13.b4" + }, + "C95j": { + "eco": "C95j", + "fen": "r2qr1k1/1bpnbppp/p2p1n2/1p2p3/P2PP3/2P2N1P/1PBN1PP1/R1BQR1K1 b - a3 0 13", + "hash": 12962329243967738659, + "name": "Spanish: Closed, Breyer, Main Line, 13.a4" + }, + "C95k": { + "eco": "C95k", + "fen": "r2qr1k1/1bpnbppp/p2p1n2/1p2p3/3PP3/2P2N1P/PPB2PP1/R1BQRNK1 b - - 6 13", + "hash": 7899835499823145782, + "name": "Spanish: Closed, Breyer, Main Line, 13.Nf1" + }, + "C95l": { + "eco": "C95l", + "fen": "r2qrbk1/1bpn1p1p/p2p1np1/1p2p3/3PP3/2P2NNP/PPB2PP1/R1BQR1K1 w - - 0 15", + "hash": 16498147310824481284, + "name": "Spanish: Closed, Breyer, Main Line, 14.Ng3 g6" + }, + "C95m": { + "eco": "C95m", + "fen": "r2qrbk1/1bpn1p1p/p2p1np1/1p2p3/P2PP3/2P2NNP/1PB2PP1/R1BQR1K1 b - a3 0 15", + "hash": 10321211844656740298, + "name": "Spanish: Closed, Breyer, Main Line, 14.Ng3 g6 15.a4" + }, + "C95n": { + "eco": "C95n", + "fen": "r2qrbk1/1b1n1p1p/p2p1np1/1pp1p3/P2PP3/2P2NNP/1PB2PP1/R1BQR1K1 w - c6 0 16", + "hash": 7587895580208577719, + "name": "Spanish: Closed, Breyer, Main Line, 15.a4 c5" + }, + "C95o": { + "eco": "C95o", + "fen": "r2qrbk1/1b1n1p1p/p2p1np1/1p1Pp3/P1p1P3/2P2NNP/1PB2PP1/R1BQR1K1 w - - 0 17", + "hash": 818080503132094567, + "name": "Spanish: Closed, Breyer, Main Line, 15.a4 c5 16.d5 c4" + }, + "C96a": { + "eco": "C96a", + "fen": "r1bq1rk1/2p1bppp/p2p1n2/np2p3/4P3/1BP2N1P/PP1P1PP1/RNBQR1K1 w - - 1 10", + "hash": 15389073603174097615, + "name": "Spanish: Closed, Chigorin" + }, + "C96b": { + "eco": "C96b", + "fen": "r1bq1rk1/2p1bppp/p2p1n2/np2p3/4P3/2P2N1P/PPBP1PP1/RNBQR1K1 b - - 2 10", + "hash": 2713874453717721923, + "name": "Spanish: Closed, Chigorin, 10.Bc2" + }, + "C96c": { + "eco": "C96c", + "fen": "r1bq1rk1/4bppp/p1pp1n2/np2p3/4P3/2P2N1P/PPBP1PP1/RNBQR1K1 w - - 0 11", + "hash": 13246057925523992824, + "name": "Spanish: Closed, Chigorin, 10...c6" + }, + "C96d": { + "eco": "C96d", + "fen": "r1b2rk1/2q1bppp/p1pp1n2/np2p3/3PP3/2P2N1P/PPB2PP1/RNBQR1K1 w - - 1 12", + "hash": 8428877079996043963, + "name": "Spanish: Closed, Chigorin, Rossolimo Variation" + }, + "C96e": { + "eco": "C96e", + "fen": "r2q1rk1/1bp1bppp/p2p1n2/np2p3/4P3/2P2N1P/PPBP1PP1/RNBQR1K1 w - - 3 11", + "hash": 10752861892956949720, + "name": "Spanish: Closed, Chigorin, 10...Bb7" + }, + "C96f": { + "eco": "C96f", + "fen": "r1bq1rk1/4bppp/p2p1n2/npp1p3/4P3/2P2N1P/PPBP1PP1/RNBQR1K1 w - c6 0 11", + "hash": 14112117123343788094, + "name": "Spanish: Closed, Chigorin, 10...c5" + }, + "C96g": { + "eco": "C96g", + "fen": "r1bq1rk1/4bppp/p2p1n2/npp1p3/4P3/2PP1N1P/PPB2PP1/RNBQR1K1 b - - 0 11", + "hash": 7889334666401780714, + "name": "Spanish: Closed, Chigorin, 11.d3" + }, + "C96h": { + "eco": "C96h", + "fen": "r1bq1rk1/4bppp/p1np1n2/1pp1p3/4P3/2PP1N1P/PPB2PP1/RNBQR1K1 w - - 1 12", + "hash": 4065526577355633120, + "name": "Spanish: Closed, Chigorin, 11.d3 Nc6" + }, + "C96i": { + "eco": "C96i", + "fen": "r1bq1rk1/4bppp/p2p1n2/npp1p3/3PP3/2P2N1P/PPB2PP1/RNBQR1K1 b - d3 0 11", + "hash": 499161147263681916, + "name": "Spanish: Closed, Chigorin, 11.d4" + }, + "C96j": { + "eco": "C96j", + "fen": "r1bq1rk1/4bppp/p2p1n2/np2p3/3pP3/2P2N1P/PPB2PP1/RNBQR1K1 w - - 0 12", + "hash": 6481764387213307066, + "name": "Spanish: Closed, Chigorin, 11.d4 cxd4" + }, + "C96k": { + "eco": "C96k", + "fen": "r2q1rk1/1b2bppp/p2p1n2/npp1p3/3PP3/2P2N1P/PPB2PP1/RNBQR1K1 w - - 1 12", + "hash": 13149711495128853223, + "name": "Spanish: Closed, Chigorin, 11.d4 Bb7" + }, + "C96l": { + "eco": "C96l", + "fen": "r2q1rk1/1b2bppp/p2p1n2/npp1p3/3PP3/2P2N1P/PPBN1PP1/R1BQR1K1 b - - 2 12", + "hash": 17227271938594505431, + "name": "Spanish: Closed, Chigorin, 11.d4 Bb7 12.Nbd2" + }, + "C96m": { + "eco": "C96m", + "fen": "r1bq1rk1/4bppp/p1np1n2/1pp1p3/3PP3/2P2N1P/PPB2PP1/RNBQR1K1 w - - 1 12", + "hash": 6051231094364743542, + "name": "Spanish: Closed, Chigorin, Borisenko Variation" + }, + "C96n": { + "eco": "C96n", + "fen": "r1bq1rk1/3nbppp/p2p4/npp1p3/3PP3/2P2N1P/PPB2PP1/RNBQR1K1 w - - 1 12", + "hash": 18422646960408759433, + "name": "Spanish: Closed, Chigorin, Keres Variation" + }, + "C96o": { + "eco": "C96o", + "fen": "r1bq1rk1/3nbppp/p2p4/np2p3/3pP3/2P2N1P/PPBN1PP1/R1BQR1K1 w - - 0 13", + "hash": 18003809776543321471, + "name": "Spanish: Closed, Chigorin, Keres, 11.Nbd2 cxd4" + }, + "C97a": { + "eco": "C97a", + "fen": "r1b2rk1/2q1bppp/p2p1n2/npp1p3/3PP3/2P2N1P/PPB2PP1/RNBQR1K1 w - - 1 12", + "hash": 68221717274643069, + "name": "Spanish: Closed, Chigorin, 11.d4 Qc7" + }, + "C97b": { + "eco": "C97b", + "fen": "r1b2rk1/2q1bppp/p2p1n2/nppPp3/4P3/2P2N1P/PPB2PP1/RNBQR1K1 b - - 0 12", + "hash": 13473112132173814816, + "name": "Spanish: Closed, Chigorin, 11.d4 Qc7 12.d5" + }, + "C97c": { + "eco": "C97c", + "fen": "r1b2rk1/2q1bppp/p2p1n2/np1Pp3/2p1P3/2P2N1P/PPB2PP1/RNBQR1K1 w - - 0 13", + "hash": 7126285035444205229, + "name": "Spanish: Closed, Chigorin, 11.d4 Qc7 12.d5 c4" + }, + "C97d": { + "eco": "C97d", + "fen": "r1b2rk1/2q1bppp/p2p1n2/npp1p3/3PP3/2P2N1P/PPBN1PP1/R1BQR1K1 b - - 2 12", + "hash": 6457290127996805709, + "name": "Spanish: Closed, Chigorin, 11.d4 Qc7 12.Nbd2" + }, + "C97e": { + "eco": "C97e", + "fen": "r4rk1/1bq1bppp/p2p1n2/npp1p3/3PP3/2P2N1P/PPBN1PP1/R1BQR1K1 w - - 3 13", + "hash": 16792990266791316950, + "name": "Spanish: Closed, Chigorin, 12...Bb7" + }, + "C97f": { + "eco": "C97f", + "fen": "r1b1r1k1/2q1bppp/p2p1n2/npp1p3/3PP3/2P2N1P/PPBN1PP1/R1BQR1K1 w - - 3 13", + "hash": 5029711993927501775, + "name": "Spanish: Closed, Chigorin, 12...Re8" + }, + "C97g": { + "eco": "C97g", + "fen": "r1br2k1/2q1bppp/p2p1n2/npp1p3/3PP3/2P2N1P/PPBN1PP1/R1BQR1K1 w - - 3 13", + "hash": 422644592629359327, + "name": "Spanish: Closed, Chigorin, 12...Rd8" + }, + "C97h": { + "eco": "C97h", + "fen": "r4rk1/2qbbppp/p2p1n2/npp1p3/3PP3/2P2N1P/PPBN1PP1/R1BQR1K1 w - - 3 13", + "hash": 13500975270118044284, + "name": "Spanish: Closed, Chigorin, 12...Bd7" + }, + "C97i": { + "eco": "C97i", + "fen": "r4rk1/2qbbppp/p2p1n2/npp1p3/3PP3/2P2N1P/PPB2PP1/R1BQRNK1 b - - 4 13", + "hash": 1069267204589721511, + "name": "Spanish: Closed, Chigorin, 12...Bd7 13.Nf1" + }, + "C97j": { + "eco": "C97j", + "fen": "r4rk1/2qbbppp/p2p1n2/1pp1p3/2nPP3/2P2N1P/PPB2PP1/R1BQRNK1 w - - 5 14", + "hash": 14018121805320585570, + "name": "Spanish: Closed, Chigorin, 12...Bd7 13.Nf1 Nc4" + }, + "C97k": { + "eco": "C97k", + "fen": "r3r1k1/2qbbppp/p2p1n2/npp1p3/3PP3/2P2N1P/PPB2PP1/R1BQRNK1 w - - 5 14", + "hash": 1335048576127693349, + "name": "Spanish: Closed, Chigorin, 12...Bd7 13.Nf1 Rfe8" + }, + "C97l": { + "eco": "C97l", + "fen": "r3r1k1/2qbbp1p/p2p1np1/npp1p3/3PP3/2P1NN1P/PPB2PP1/R1BQR1K1 w - - 0 15", + "hash": 12561624099238232496, + "name": "Spanish: Closed, Chigorin, Yugoslav System" + }, + "C98a": { + "eco": "C98a", + "fen": "r1b2rk1/2q1bppp/p1np1n2/1pp1p3/3PP3/2P2N1P/PPBN1PP1/R1BQR1K1 w - - 3 13", + "hash": 904042501166219335, + "name": "Spanish: Closed, Chigorin, 12...Nc6" + }, + "C98b": { + "eco": "C98b", + "fen": "r1b2rk1/2q1bppp/p1np1n2/1pP1p3/4P3/2P2N1P/PPBN1PP1/R1BQR1K1 b - - 0 13", + "hash": 8316159553414764331, + "name": "Spanish: Closed, Chigorin, Rauzer Attack" + }, + "C98c": { + "eco": "C98c", + "fen": "r1b2rk1/2q1bppp/p1n2n2/1pp1p3/4P3/2P2N1P/PPB2PP1/R1BQRNK1 b - - 1 14", + "hash": 2285831698771221605, + "name": "Spanish: Closed, Chigorin, Rauzer, 14.Nf1" + }, + "C98d": { + "eco": "C98d", + "fen": "r4rk1/2q1bppp/p1n1bn2/1pp1p3/4P3/2P2N1P/PPB2PP1/R1BQRNK1 w - - 2 15", + "hash": 5404448221426837357, + "name": "Spanish: Closed, Chigorin, Rauzer, 14.Nf1 Be6" + }, + "C98e": { + "eco": "C98e", + "fen": "r1b2rk1/2q1bppp/p1np1n2/1ppPp3/4P3/2P2N1P/PPBN1PP1/R1BQR1K1 b - - 0 13", + "hash": 13151512081531983386, + "name": "Spanish: Closed, Chigorin, 12...Nc6 13.d5" + }, + "C98f": { + "eco": "C98f", + "fen": "r1b2rk1/2q1bppp/p2p1n2/nppPp3/4P3/2P2N1P/PPBN1PP1/R1BQR1K1 w - - 1 14", + "hash": 16398912992890352656, + "name": "Spanish: Closed, Chigorin, 12...Nc6 13.d5 Na5" + }, + "C98g": { + "eco": "C98g", + "fen": "r1bn1rk1/2q1bppp/p2p1n2/1ppPp3/4P3/2P2N1P/PPBN1PP1/R1BQR1K1 w - - 1 14", + "hash": 256412867905143289, + "name": "Spanish: Closed, Chigorin, 12...Nc6 13.d5 Nd8" + }, + "C98h": { + "eco": "C98h", + "fen": "r1bn1rk1/2q1bppp/p2p1n2/1ppPp3/4P3/2P2N1P/PPB2PP1/R1BQRNK1 b - - 2 14", + "hash": 13115928541514490914, + "name": "Spanish: Closed, Chigorin, 12...Nc6 13.d5 Nd8 14.Nf1" + }, + "C98i": { + "eco": "C98i", + "fen": "r1bn1rk1/2q1bppp/p2p1n2/1ppPp3/P3P3/2P2N1P/1PBN1PP1/R1BQR1K1 b - a3 0 14", + "hash": 7514124902287316023, + "name": "Spanish: Closed, Chigorin, 12...Nc6 13.d5 Nd8 14.a4" + }, + "C99a": { + "eco": "C99a", + "fen": "r1b2rk1/2q1bppp/p2p1n2/np2p3/3pP3/2P2N1P/PPBN1PP1/R1BQR1K1 w - - 0 13", + "hash": 469039693541313419, + "name": "Spanish: Closed, Chigorin, 12...cxd4" + }, + "C99b": { + "eco": "C99b", + "fen": "r1br2k1/2q1bppp/p2p1n2/np2p3/3PP3/5N1P/PPBN1PP1/R1BQR1K1 w - - 1 14", + "hash": 17759354132578551615, + "name": "Spanish: Closed, Chigorin, 13...Rd8" + }, + "C99c": { + "eco": "C99c", + "fen": "r4rk1/2qbbppp/p2p1n2/np2p3/3PP3/5N1P/PPBN1PP1/R1BQR1K1 w - - 1 14", + "hash": 5257237895313643420, + "name": "Spanish: Closed, Chigorin, 13...Bd7" + }, + "C99d": { + "eco": "C99d", + "fen": "2r2rk1/2qbbppp/p2p1n2/np2p3/3PP3/4NN1P/PPB2PP1/R1BQR1K1 b - - 4 15", + "hash": 13715959558528330722, + "name": "Spanish: Closed, Chigorin, 13...Bd7 14.Nf1 Rac8 15.Ne3" + }, + "C99e": { + "eco": "C99e", + "fen": "r4rk1/1bq1bppp/p2p1n2/np2p3/3PP3/5N1P/PPBN1PP1/R1BQR1K1 w - - 1 14", + "hash": 1919871365078067254, + "name": "Spanish: Closed, Chigorin, 13...Bb7" + }, + "C99f": { + "eco": "C99f", + "fen": "2r2rk1/1bq1bppp/p2p1n2/np2p3/3PP3/5N1P/PPB1RPP1/R1BQ1NK1 b - - 4 15", + "hash": 9551577480234367485, + "name": "Spanish: Closed, Chigorin, 13...Bb7 14.Nf1 Rac8 15.Re2" + }, + "C99g": { + "eco": "C99g", + "fen": "r4rk1/1bq1bppp/p2p1n2/np1Pp3/4P3/5N1P/PPBN1PP1/R1BQR1K1 b - - 0 14", + "hash": 11577773354430152299, + "name": "Spanish: Closed, Chigorin, 13...Bb7 14.d5" + }, + "C99h": { + "eco": "C99h", + "fen": "2r2rk1/1bq1bppp/p2p1n2/np1Pp3/4P3/5N1P/PPBN1PP1/R1BQR1K1 w - - 1 15", + "hash": 13180420894164059664, + "name": "Spanish: Closed, Chigorin, 13...Bb7 14.d5 Rac8" + }, + "C99i": { + "eco": "C99i", + "fen": "r1b2rk1/2q1bppp/p1np1n2/1p2p3/3PP3/5N1P/PPBN1PP1/R1BQR1K1 w - - 1 14", + "hash": 18384716931103073703, + "name": "Spanish: Closed, Chigorin, 13...Nc6" + }, + "C99j": { + "eco": "C99j", + "fen": "r1b2rk1/2q1bppp/p1np1n2/1p2p3/3PP3/5N1P/PPB2PP1/R1BQRNK1 b - - 2 14", + "hash": 5379680618616553596, + "name": "Spanish: Closed, Chigorin, 13...Nc6 14.Nf1" + }, + "C99k": { + "eco": "C99k", + "fen": "r1b2rk1/2q1bppp/p1np1n2/1p1Pp3/4P3/5N1P/PPBN1PP1/R1BQR1K1 b - - 0 14", + "hash": 4984325867609306106, + "name": "Spanish: Closed, Chigorin, 13...Nc6 14.d5" + }, + "C99l": { + "eco": "C99l", + "fen": "r1b2rk1/2q1bppp/p1np1n2/1p2p3/3PP3/1N3N1P/PPB2PP1/R1BQR1K1 b - - 2 14", + "hash": 14418163579002840360, + "name": "Spanish: Closed, Chigorin, 13...Nc6 14.Nb3" + }, + "C99m": { + "eco": "C99m", + "fen": "r1b2rk1/2q1bppp/2np1n2/1p2p3/p2PP3/1N2BN1P/PPB2PP1/R2QR1K1 w - - 0 16", + "hash": 651276542857080401, + "name": "Spanish: Closed, Chigorin, 13...Nc6 14.Nb3 a5 15.Be3 a4" + }, + "C99n": { + "eco": "C99n", + "fen": "r1b2rk1/2q1bppp/3p1n2/1p2p3/pn1PP3/4BN1P/PPBN1PP1/R2QR1K1 w - - 2 17", + "hash": 2652000850575090410, + "name": "Spanish: Closed, Chigorin, 13...Nc6 14.Nb3 a5 15.Be3 a4 16.Nbd2 Nb4" + }, + "C99o": { + "eco": "C99o", + "fen": "r4rk1/2qbbppp/2np1n2/1p2p3/p2PP3/4BN1P/PPBN1PP1/R2QR1K1 w - - 2 17", + "hash": 15923614495904300783, + "name": "Spanish: Closed, Chigorin, 13...Nc6 14.Nb3 a5 15.Be3 a4 16.Nbd2 Bd7" + }, + "D00a": { + "eco": "D00a", + "fen": "rnbqkbnr/ppp1pppp/8/3p4/3P4/8/PPP1PPPP/RNBQKBNR w KQkq d6 0 2", + "hash": 460664201775194104, + "name": "Queen's Pawn Game" + }, + "D00b": { + "eco": "D00b", + "fen": "rnbqkbnr/ppp1pppp/8/3p4/3P4/2P5/PP2PPPP/RNBQKBNR b KQkq - 0 2", + "hash": 8124039897036918910, + "name": "Queen's Pawn: 2.c3" + }, + "D00c": { + "eco": "D00c", + "fen": "rnbqkbnr/ppp1pppp/8/3p4/3P1B2/8/PPP1PPPP/RN1QKBNR b KQkq - 1 2", + "hash": 15938376687770432923, + "name": "Queen's Pawn: Mason Variation" + }, + "D00d": { + "eco": "D00d", + "fen": "rnbqkbnr/ppp1pppp/8/3p4/3P4/4P3/PPP2PPP/RNBQKBNR b KQkq - 0 2", + "hash": 12342634936926410588, + "name": "Queen's Pawn: 2.e3" + }, + "D00e": { + "eco": "D00e", + "fen": "rnbqkb1r/ppp1pppp/5n2/3p4/3P4/3BP3/PPP2PPP/RNBQK1NR b KQkq - 2 3", + "hash": 11937437613677974713, + "name": "Queen's Pawn: Stonewall Attack" + }, + "D00f": { + "eco": "D00f", + "fen": "rnbqkbnr/ppp1pppp/8/3p2B1/3P4/8/PPP1PPPP/RN1QKBNR b KQkq - 1 2", + "hash": 13852734423407412272, + "name": "Hodgson Attack (Trompowsky vs. 1...d5)" + }, + "D00g": { + "eco": "D00g", + "fen": "rnbqkbnr/pp2pppp/2p5/3p2B1/3P4/8/PPP1PPPP/RN1QKBNR w KQkq - 0 3", + "hash": 5927899840427497355, + "name": "Hodgson Attack: 2...c6" + }, + "D00h": { + "eco": "D00h", + "fen": "rnbqkbnr/ppp1ppp1/7p/3p2B1/3P4/8/PPP1PPPP/RN1QKBNR w KQkq - 0 3", + "hash": 5965448675228519717, + "name": "Hodgson Attack, 2...h6" + }, + "D00i": { + "eco": "D00i", + "fen": "rnbqkb1r/ppp1pppp/5n2/3p2B1/3P4/8/PPP1PPPP/RN1QKBNR w KQkq d6 0 3", + "hash": 11227746985974695334, + "name": "Trompowsky: 2...d5" + }, + "D00j": { + "eco": "D00j", + "fen": "rnbqkb1r/ppp1pppp/5B2/3p4/3P4/8/PPP1PPPP/RN1QKBNR b KQkq - 0 3", + "hash": 4535109106756901702, + "name": "Trompowsky: 2...d5 3.Bxf6" + }, + "D00k": { + "eco": "D00k", + "fen": "rnbqkb1r/ppp2ppp/5p2/3p4/3P4/8/PPP1PPPP/RN1QKBNR w KQkq - 0 4", + "hash": 10342184844444180584, + "name": "Trompowsky: 2...d5 3.Bxf6 exf6" + }, + "D00l": { + "eco": "D00l", + "fen": "rnbqkbnr/ppp1pppp/8/3p4/3PP3/8/PPP2PPP/RNBQKBNR b KQkq e3 0 2", + "hash": 14007205216878600946, + "name": "Blackmar-Diemer Gambit (BDG): 2.e4" + }, + "D00m": { + "eco": "D00m", + "fen": "rnbqkbnr/ppp2ppp/8/4p3/3Pp3/2N5/PPP2PPP/R1BQKBNR w KQkq e6 0 4", + "hash": 8864800472648837197, + "name": "Blackmar-Diemer: Lemberger Countergambit" + }, + "D00n": { + "eco": "D00n", + "fen": "rnbqkbnr/ppp1pppp/8/3p4/3P4/2N5/PPP1PPPP/R1BQKBNR b KQkq - 1 2", + "hash": 18299113765639953697, + "name": "Queen's Pawn: Veresov Attack" + }, + "D00o": { + "eco": "D00o", + "fen": "rnbqkb1r/ppp1pppp/5n2/3p4/3P1B2/2N5/PPP1PPPP/R2QKBNR b KQkq - 3 3", + "hash": 9027836471363811028, + "name": "Queen's Pawn: Veresov, 3.Bf4" + }, + "D00p": { + "eco": "D00p", + "fen": "rnbqkb1r/ppp1pppp/5n2/3p4/3P4/2N2N2/PPP1PPPP/R1BQKB1R b KQkq - 3 3", + "hash": 9041357815170612618, + "name": "Queen's Pawn: Veresov, 3.Nf3" + }, + "D00q": { + "eco": "D00q", + "fen": "rnbqkb1r/ppp1pp1p/5np1/3p4/3P1B2/2N2N2/PPP1PPPP/R2QKB1R b KQkq - 1 4", + "hash": 5735878235512456610, + "name": "Queen's Pawn: Anti-King's Indian" + }, + "D00r": { + "eco": "D00r", + "fen": "rnbq1rk1/ppp1ppbp/5np1/3p4/3P1B2/2N1PN2/PPP1BPPP/R2QK2R b KQ - 2 6", + "hash": 3107764768870082020, + "name": "Queen's Pawn: Anti-King's Indian, Main Line" + }, + "D00s": { + "eco": "D00s", + "fen": "rnbqkb1r/ppp1pppp/5n2/3p4/3PP3/2N5/PPP2PPP/R1BQKBNR b KQkq e3 0 3", + "hash": 7069167869364593085, + "name": "Blackmar-Diemer Gambit (BDG)" + }, + "D00t": { + "eco": "D00t", + "fen": "rnbqkb1r/ppp1pppp/5n2/8/3Pp3/2N5/PPP2PPP/R1BQKBNR w KQkq - 0 4", + "hash": 12290364824544432621, + "name": "Blackmar-Diemer: 3...dxe4" + }, + "D00u": { + "eco": "D00u", + "fen": "rnbqkb1r/ppp1pppp/5n2/8/3Pp3/2N2P2/PPP3PP/R1BQKBNR b KQkq - 0 4", + "hash": 14132792066465840796, + "name": "Blackmar-Diemer: 4.f3" + }, + "D00v": { + "eco": "D00v", + "fen": "rnbqkb1r/ppp1pppp/5n2/8/3P4/2N2p2/PPP3PP/R1BQKBNR w KQkq - 0 5", + "hash": 16283035309309244391, + "name": "Blackmar-Diemer: Accepted" + }, + "D00w": { + "eco": "D00w", + "fen": "rnbqkb1r/ppp1pppp/5n2/8/3P4/2N2N2/PPP3PP/R1BQKB1R b KQkq - 0 5", + "hash": 14536939812435471030, + "name": "Blackmar-Diemer: 4.f3 exf3 5.Nxf3" + }, + "D00x": { + "eco": "D00x", + "fen": "rnbqkb1r/ppp2ppp/4pn2/8/3P4/2N2N2/PPP3PP/R1BQKB1R w KQkq - 0 6", + "hash": 13819972258897181412, + "name": "Blackmar-Diemer: Euwe Defence" + }, + "D00y": { + "eco": "D00y", + "fen": "rnbqkb1r/ppp1pp1p/5np1/8/3P4/2N2N2/PPP3PP/R1BQKB1R w KQkq - 0 6", + "hash": 2308594976004290813, + "name": "Blackmar-Diemer: Bogoljubow Defence" + }, + "D01a": { + "eco": "D01a", + "fen": "rnbqkb1r/ppp1pppp/5n2/3p2B1/3P4/2N5/PPP1PPPP/R2QKBNR b KQkq - 3 3", + "hash": 6937760897433503615, + "name": "Richter-Veresov Attack" + }, + "D01b": { + "eco": "D01b", + "fen": "rnbqkb1r/ppp1pppp/8/3p2B1/3Pn3/2N5/PPP1PPPP/R2QKBNR w KQkq - 4 4", + "hash": 6507609484663655045, + "name": "Richter-Veresov: 3...Ne4" + }, + "D01c": { + "eco": "D01c", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p2B1/3P4/2N5/PPP1PPPP/R2QKBNR w KQkq - 0 4", + "hash": 1598798717035222829, + "name": "Richter-Veresov: 3...e6" + }, + "D01d": { + "eco": "D01d", + "fen": "rnbqkb1r/ppp1ppp1/5n1p/3p2B1/3P4/2N5/PPP1PPPP/R2QKBNR w KQkq - 0 4", + "hash": 17487666064611004010, + "name": "Richter-Veresov: 3...h6" + }, + "D01e": { + "eco": "D01e", + "fen": "rnbqkb1r/ppp1pp1p/5np1/3p2B1/3P4/2N5/PPP1PPPP/R2QKBNR w KQkq - 0 4", + "hash": 9940486286199559476, + "name": "Richter-Veresov: 3...g6" + }, + "D01f": { + "eco": "D01f", + "fen": "rnbqkb1r/pp2pppp/2p2n2/3p2B1/3P4/2N5/PPP1PPPP/R2QKBNR w KQkq - 0 4", + "hash": 17455122197077972164, + "name": "Richter-Veresov: 3...c6" + }, + "D01g": { + "eco": "D01g", + "fen": "rnbqkb1r/pp2pppp/5n2/2pp2B1/3P4/2N5/PPP1PPPP/R2QKBNR w KQkq c6 0 4", + "hash": 9670971580009253890, + "name": "Richter-Veresov: 3...c5" + }, + "D01h": { + "eco": "D01h", + "fen": "rn1qkb1r/ppp1pppp/5n2/3p1bB1/3P4/2N5/PPP1PPPP/R2QKBNR w KQkq - 4 4", + "hash": 16383683445139410674, + "name": "Richter-Veresov: 3...Bf5" + }, + "D01i": { + "eco": "D01i", + "fen": "rn1qkb1r/ppp1pppp/5n2/3p1bB1/3P4/2N2P2/PPP1P1PP/R2QKBNR b KQkq - 0 4", + "hash": 10227515841364189571, + "name": "Richter-Veresov: 3...Bf5 4.f3" + }, + "D01j": { + "eco": "D01j", + "fen": "rn1qkb1r/ppp1pppp/5n2/3p1bB1/3P4/2N2N2/PPP1PPPP/R2QKB1R b KQkq - 5 4", + "hash": 4051662688388771791, + "name": "Richter-Veresov: 3...Bf5 4.Nf3" + }, + "D01k": { + "eco": "D01k", + "fen": "rn1qkb1r/ppp1pppp/5B2/3p1b2/3P4/2N5/PPP1PPPP/R2QKBNR b KQkq - 0 4", + "hash": 5071476046405423122, + "name": "Richter-Veresov: 3...Bf5 4.Bxf6" + }, + "D01l": { + "eco": "D01l", + "fen": "r1bqkb1r/pppnpppp/5n2/3p2B1/3P4/2N5/PPP1PPPP/R2QKBNR w KQkq - 4 4", + "hash": 6027113289819253427, + "name": "Richter-Veresov: 3...Nbd7" + }, + "D01m": { + "eco": "D01m", + "fen": "r1bqkb1r/pppnpppp/5n2/3p2B1/3P4/2N2P2/PPP1P1PP/R2QKBNR b KQkq - 0 4", + "hash": 4401562384292677058, + "name": "Richter-Veresov: 3...Nbd7 4.f3" + }, + "D01n": { + "eco": "D01n", + "fen": "r1bqkb1r/pppnpppp/5n2/3p2B1/3P4/2N2N2/PPP1PPPP/R2QKB1R b KQkq - 5 4", + "hash": 9854007293854616462, + "name": "Richter-Veresov: 3...Nbd7 4.Nf3" + }, + "D01o": { + "eco": "D01o", + "fen": "r1bqkb1r/pppnppp1/5n1p/3p2B1/3P4/2N2N2/PPP1PPPP/R2QKB1R w KQkq - 0 5", + "hash": 1889044583887946395, + "name": "Richter-Veresov: 3...Nbd7 4.Nf3 h6" + }, + "D01p": { + "eco": "D01p", + "fen": "r1bqkb1r/pppnpp1p/5np1/3p2B1/3P4/2N2N2/PPP1PPPP/R2QKB1R w KQkq - 0 5", + "hash": 7022277540704131525, + "name": "Richter-Veresov: 3...Nbd7 4.Nf3 g6" + }, + "D02a": { + "eco": "D02a", + "fen": "rnbqkbnr/ppp1pppp/8/3p4/3P4/5N2/PPP1PPPP/RNBQKB1R b KQkq - 1 2", + "hash": 15924859471947038405, + "name": "Queen's Pawn: 2.Nf3" + }, + "D02b": { + "eco": "D02b", + "fen": "rnbqkbnr/pp2pppp/2p5/3p4/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq - 0 3", + "hash": 5727060023510183294, + "name": "Queen's Pawn: 2.Nf3 c6" + }, + "D02c": { + "eco": "D02c", + "fen": "rnbqkbnr/pp2pppp/2p5/3p4/3P1B2/5N2/PPP1PPPP/RN1QKB1R b KQkq - 1 3", + "hash": 10677608372771669789, + "name": "Queen's Pawn: London" + }, + "D02d": { + "eco": "D02d", + "fen": "rn1qkbnr/ppp1pppp/8/3p1b2/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq - 2 3", + "hash": 6780484653964851016, + "name": "Queen's Pawn: 2.Nf3 Bf5" + }, + "D02e": { + "eco": "D02e", + "fen": "r1bqkbnr/ppp1pppp/2n5/3p4/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq - 2 3", + "hash": 8569698848803085254, + "name": "Queen's Pawn: 2.Nf3 Nc6" + }, + "D02f": { + "eco": "D02f", + "fen": "r1bqkbnr/ppp1pppp/2n5/3p4/3P1B2/5N2/PPP1PPPP/RN1QKB1R b KQkq - 3 3", + "hash": 12518117124718965157, + "name": "Queen's Pawn: 2.Nf3 Nc6 3.Bf4" + }, + "D02g": { + "eco": "D02g", + "fen": "r1bqkbnr/ppp1pppp/2n5/3p4/3P4/5NP1/PPP1PP1P/RNBQKB1R b KQkq - 0 3", + "hash": 6488302722103411710, + "name": "Queen's Pawn: 2.Nf3 Nc6 3.g3" + }, + "D02h": { + "eco": "D02h", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq - 0 3", + "hash": 12355490758319959703, + "name": "Queen's Pawn: 2.Nf3 e6" + }, + "D02i": { + "eco": "D02i", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/3P4/5NP1/PPP1PP1P/RNBQKB1R b KQkq - 0 3", + "hash": 9768657374098208431, + "name": "Queen's Pawn: 2.Nf3 e6 3.g3" + }, + "D02j": { + "eco": "D02j", + "fen": "rnbqkbnr/pp2pppp/8/2pp4/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq c6 0 3", + "hash": 4283388330662294968, + "name": "Queen's Pawn: Krause Variation" + }, + "D02k": { + "eco": "D02k", + "fen": "rnbqkb1r/ppp1pppp/5n2/3p4/3P4/5N2/PPP1PPPP/RNBQKB1R w KQkq - 2 3", + "hash": 9722783023074688851, + "name": "Queen's Pawn: 2.Nf3 Nf6" + }, + "D02l": { + "eco": "D02l", + "fen": "rnbqkb1r/ppp1pppp/5n2/3p4/3P1B2/5N2/PPP1PPPP/RN1QKB1R b KQkq - 3 3", + "hash": 6753892168587302192, + "name": "Queen's Pawn: London" + }, + "D02m": { + "eco": "D02m", + "fen": "rn1qkb1r/ppp1pppp/5n2/3p1b2/3P1B2/5N2/PPP1PPPP/RN1QKB1R w KQkq - 4 4", + "hash": 16042891330020793533, + "name": "Queen's Pawn: London" + }, + "D02n": { + "eco": "D02n", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/3P1B2/5N2/PPP1PPPP/RN1QKB1R w KQkq - 0 4", + "hash": 3156274665317647714, + "name": "Queen's Pawn: London" + }, + "D02o": { + "eco": "D02o", + "fen": "rnbqkb1r/pp2pppp/5n2/2pp4/3P1B2/5N2/PPP1PPPP/RN1QKB1R w KQkq c6 0 4", + "hash": 13532037642370637389, + "name": "Queen's Pawn: London" + }, + "D02p": { + "eco": "D02p", + "fen": "rnbqkb1r/pp3ppp/4pn2/2pp4/3P1B2/4PN2/PPP2PPP/RN1QKB1R w KQkq - 0 5", + "hash": 6958558442278241979, + "name": "Queen's Pawn: London" + }, + "D02q": { + "eco": "D02q", + "fen": "r1bqk2r/pp3ppp/2nbpn2/2pp4/3P1B2/2PBPN2/PP3PPP/RN1QK2R w KQkq - 3 7", + "hash": 5544819903769476969, + "name": "Queen's Pawn: London" + }, + "D02r": { + "eco": "D02r", + "fen": "rnbqkb1r/ppp1pppp/5n2/3p4/3P4/5NP1/PPP1PP1P/RNBQKB1R b KQkq - 0 3", + "hash": 12252316447590016875, + "name": "Queen's Pawn: 3.g3" + }, + "D02s": { + "eco": "D02s", + "fen": "rnbqkb1r/pp2pppp/2p2n2/3p4/3P4/5NP1/PPP1PP1P/RNBQKB1R w KQkq - 0 4", + "hash": 4067336553838916816, + "name": "Queen's Pawn: 3.g3 c6" + }, + "D02t": { + "eco": "D02t", + "fen": "rn1qkb1r/pp2pppp/2p2n2/3p4/3P2b1/5NP1/PPP1PPBP/RNBQK2R w KQkq - 2 5", + "hash": 10327312792812479043, + "name": "Queen's Pawn: 3.g3 c6 4.Bg2 Bg4" + }, + "D02u": { + "eco": "D02u", + "fen": "rnbqkb1r/ppp1pp1p/5np1/3p4/3P4/5NP1/PPP1PP1P/RNBQKB1R w KQkq - 0 4", + "hash": 4880964936308159776, + "name": "Queen's Pawn: 3.g3 g6" + }, + "D03a": { + "eco": "D03a", + "fen": "rnbqkb1r/ppp1pppp/5n2/3p2B1/3P4/5N2/PPP1PPPP/RN1QKB1R b KQkq - 3 3", + "hash": 4662374139822761115, + "name": "Torre Attack (Tartakower)" + }, + "D03b": { + "eco": "D03b", + "fen": "rnbqkb1r/ppp1pppp/8/3p2B1/3Pn3/5N2/PPP1PPPP/RN1QKB1R w KQkq - 4 4", + "hash": 8844040578360666465, + "name": "Torre Attack: 3...Ne4" + }, + "D03c": { + "eco": "D03c", + "fen": "rnbqkb1r/ppp1pppp/8/3p4/3PnB2/5N2/PPP1PPPP/RN1QKB1R b KQkq - 5 4", + "hash": 11485532625290812867, + "name": "Torre Attack: 3...Ne4 4.Bf4" + }, + "D03d": { + "eco": "D03d", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p2B1/3P4/5N2/PPP1PPPP/RN1QKB1R w KQkq - 0 4", + "hash": 3946251286096704713, + "name": "Torre Attack: 3...e6" + }, + "D03e": { + "eco": "D03e", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p2B1/3P4/4PN2/PPP2PPP/RN1QKB1R b KQkq - 0 4", + "hash": 11236098512492395629, + "name": "Torre Attack: 3...e6 4.e3" + }, + "D03f": { + "eco": "D03f", + "fen": "r1bqkb1r/pppn1ppp/4pn2/3p2B1/3P4/4PN2/PPP2PPP/RN1QKB1R w KQkq - 1 5", + "hash": 12109580495727071649, + "name": "Torre Attack: 3...e6 4.e3 Nbd7" + }, + "D03g": { + "eco": "D03g", + "fen": "rnbqkb1r/pp3ppp/4pn2/2pp2B1/3P4/4PN2/PPP2PPP/RN1QKB1R w KQkq c6 0 5", + "hash": 9052083235699324688, + "name": "Torre Attack: 3...e6 4.e3 c5" + }, + "D03h": { + "eco": "D03h", + "fen": "r1bqkb1r/pp1n1ppp/4pn2/2pp2B1/3P4/4PN2/PPPN1PPP/R2QKB1R w KQkq - 2 6", + "hash": 1662591879087469292, + "name": "Torre Attack: 3...e6 4.e3 c5" + }, + "D03i": { + "eco": "D03i", + "fen": "rnbqk2r/pp2bppp/4pn2/2pp2B1/3P4/4PN2/PPPN1PPP/R2QKB1R w KQkq - 2 6", + "hash": 3476143615757415345, + "name": "Torre Attack: 3...e6 4.e3 c5" + }, + "D03j": { + "eco": "D03j", + "fen": "r1bqk2r/pp1nbppp/4pn2/2pp2B1/3P4/2P1PN2/PP1N1PPP/R2QKB1R w KQkq - 1 7", + "hash": 8431932530418946555, + "name": "Torre Attack: 3...e6 4.e3 c5" + }, + "D03k": { + "eco": "D03k", + "fen": "rnbqkb1r/ppp1pp1p/5np1/3p2B1/3P4/5N2/PPP1PPPP/RN1QKB1R w KQkq - 0 4", + "hash": 12177812319238485712, + "name": "Torre Attack: 3...g6" + }, + "D03l": { + "eco": "D03l", + "fen": "rnbqkb1r/ppp1pp1p/5np1/3p2B1/3P4/5N2/PPPNPPPP/R2QKB1R b KQkq - 1 4", + "hash": 17325065922408898272, + "name": "Torre Attack: 3...g6" + }, + "D03m": { + "eco": "D03m", + "fen": "rnbqkb1r/ppp1pp1p/5np1/3p2B1/3P4/4PN2/PPP2PPP/RN1QKB1R b KQkq - 0 4", + "hash": 300902774630678132, + "name": "Torre Attack: 3...g6 4.e3" + }, + "D03n": { + "eco": "D03n", + "fen": "rnbqk2r/ppp1ppbp/5np1/3p2B1/3P4/4PN2/PPPN1PPP/R2QKB1R b KQkq - 2 5", + "hash": 17149567394359811566, + "name": "Torre Attack: 3...g6 4.e3 Bg7 5.Nbd2" + }, + "D03o": { + "eco": "D03o", + "fen": "rnbq1rk1/ppp1ppbp/5np1/3p2B1/3P4/4PN2/PPPN1PPP/R2QKB1R w KQ - 3 6", + "hash": 16669912499963425797, + "name": "Torre Attack: 3...g6 4.e3 Bg7 5.Nbd2 O-O" + }, + "D03p": { + "eco": "D03p", + "fen": "rnbq1rk1/ppp1ppbp/5np1/3p2B1/3P4/2P1PN2/PP1N1PPP/R2QKB1R b KQ - 0 6", + "hash": 10488203492078517123, + "name": "Torre Attack: 3...g6 4.e3 Bg7 5.Nbd2 O-O 6.c3" + }, + "D03q": { + "eco": "D03q", + "fen": "r1bq1rk1/pppnppbp/5np1/3p2B1/3P4/2P1PN2/PP1N1PPP/R2QKB1R w KQ - 1 7", + "hash": 11704555111147705935, + "name": "Torre Attack: 3...g6 4.e3 Bg7 5.Nbd2 O-O 6.c3 Nbd7" + }, + "D03r": { + "eco": "D03r", + "fen": "r1bq1rk1/pppnppbp/5np1/3p2B1/3P4/2P1PN2/PP1NBPPP/R2QK2R b KQ - 2 7", + "hash": 15127148204951624940, + "name": "Torre Attack: 3...g6 4.e3 Bg7 5.Nbd2 O-O 6.c3 Nbd7 7.Be2" + }, + "D03s": { + "eco": "D03s", + "fen": "rnbq1rk1/ppp1ppbp/5np1/3p2B1/3P4/3BPN2/PPPN1PPP/R2QK2R b KQ - 4 6", + "hash": 12851809591203804790, + "name": "Torre Attack: 3...g6 4.e3 Bg7 5.Nbd2 O-O 6.Bd3" + }, + "D03t": { + "eco": "D03t", + "fen": "rnbq1rk1/pp2ppbp/5np1/2pp2B1/3P4/3BPN2/PPPN1PPP/R2QK2R w KQ c6 0 7", + "hash": 6064973302503193867, + "name": "Torre Attack: 3...g6 4.e3 Bg7 5.Nbd2 O-O 6.Bd3 c5" + }, + "D03u": { + "eco": "D03u", + "fen": "r1bq1rk1/pp1nppbp/5np1/2pp2B1/3P4/2PBPN2/PP1N1PPP/R2QK2R w KQ - 1 8", + "hash": 1230220268496412481, + "name": "Torre Attack: 3...g6 4.e3 Bg7 5.Nbd2 O-O 6.Bd3 c5 7.c3 Nbd7" + }, + "D04a": { + "eco": "D04a", + "fen": "rnbqkb1r/ppp1pppp/5n2/3p4/3P4/4PN2/PPP2PPP/RNBQKB1R b KQkq - 0 3", + "hash": 3153365364445755383, + "name": "Queen's Pawn: Colle" + }, + "D04b": { + "eco": "D04b", + "fen": "rn1qkb1r/ppp1pppp/5n2/3p4/3P2b1/4PN2/PPP2PPP/RNBQKB1R w KQkq - 1 4", + "hash": 2959088315984918813, + "name": "Colle: 3...Bg4" + }, + "D04c": { + "eco": "D04c", + "fen": "rn1qkb1r/ppp1pppp/5n2/3p1b2/3P4/4PN2/PPP2PPP/RNBQKB1R w KQkq - 1 4", + "hash": 12167152353076199034, + "name": "Colle: 3...Bf5" + }, + "D04d": { + "eco": "D04d", + "fen": "rn1qkb1r/ppp2ppp/4pn2/3p1b2/3P4/3BPN2/PPP2PPP/RNBQK2R w KQkq - 0 5", + "hash": 10061106485649763419, + "name": "Colle: 3...Bf5, Alekhine Variation" + }, + "D04e": { + "eco": "D04e", + "fen": "rnbqkb1r/ppp1pp1p/5np1/3p4/3P4/4PN2/PPP2PPP/RNBQKB1R w KQkq - 0 4", + "hash": 14012759251978593724, + "name": "Colle: 3...g6" + }, + "D04f": { + "eco": "D04f", + "fen": "rnbqkb1r/pp2pppp/2p2n2/3p4/3P4/4PN2/PPP2PPP/RNBQKB1R w KQkq - 0 4", + "hash": 13382988317823329356, + "name": "Colle: 3...c6" + }, + "D04g": { + "eco": "D04g", + "fen": "rnbqkb1r/pp2pppp/5n2/2pp4/3P4/4PN2/PPP2PPP/RNBQKB1R w KQkq c6 0 4", + "hash": 14822138818857548938, + "name": "Colle: 3...c5" + }, + "D04h": { + "eco": "D04h", + "fen": "rnbqkb1r/pp2pppp/5n2/2pp4/3P4/2P1PN2/PP3PPP/RNBQKB1R b KQkq - 0 4", + "hash": 13504087606311793420, + "name": "Colle: 3...c5 4.c3" + }, + "D04i": { + "eco": "D04i", + "fen": "r1bqkb1r/pp2pppp/2n2n2/2pp4/3P4/2P1PN2/PP3PPP/RNBQKB1R w KQkq - 1 5", + "hash": 1190622397966423567, + "name": "Colle: 3...c5 4.c3 Nc6" + }, + "D04j": { + "eco": "D04j", + "fen": "r1bqkb1r/pp1npppp/5n2/2pp4/3P4/2P1PN2/PP3PPP/RNBQKB1R w KQkq - 1 5", + "hash": 9839049606004006592, + "name": "Colle: 3...c5 4.c3 Nbd7" + }, + "D05a": { + "eco": "D05a", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/3P4/4PN2/PPP2PPP/RNBQKB1R w KQkq - 0 4", + "hash": 6752289087529265061, + "name": "Colle: 3...e6" + }, + "D05b": { + "eco": "D05b", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/3P4/4PN2/PPPN1PPP/R1BQKB1R b KQkq - 1 4", + "hash": 349674680666296213, + "name": "Colle: 3...e6 4.Nbd2" + }, + "D05c": { + "eco": "D05c", + "fen": "rnbqkb1r/pp3ppp/4pn2/2pp4/3P4/1P2PN2/P1PN1PPP/R1BQKB1R b KQkq - 0 5", + "hash": 7930270216542121861, + "name": "Colle: Zukertort Variation" + }, + "D05d": { + "eco": "D05d", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/3P4/3BPN2/PPP2PPP/RNBQK2R b KQkq - 1 4", + "hash": 628624351417951702, + "name": "Colle: 3...e6 4.Bd3" + }, + "D05e": { + "eco": "D05e", + "fen": "rnbqkb1r/pp3ppp/4pn2/2pp4/3P4/3BPN2/PPP2PPP/RNBQK2R w KQkq c6 0 5", + "hash": 17206146595535089323, + "name": "Colle: 3...e6 4.Bd3 c5" + }, + "D05f": { + "eco": "D05f", + "fen": "rnbqkb1r/pp3ppp/4pn2/2pp4/3P4/1P1BPN2/P1P2PPP/RNBQK2R b KQkq - 0 5", + "hash": 7092856595585369542, + "name": "Colle: Rubinstein's Attack" + }, + "D05g": { + "eco": "D05g", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/2pp4/3P4/1P1BPN2/P1P2PPP/RNBQK2R w KQkq - 1 6", + "hash": 14520515166639399109, + "name": "Colle: Rubinstein's Attack, 5...Nc6" + }, + "D05h": { + "eco": "D05h", + "fen": "rnbqkb1r/pp3ppp/4pn2/2pp4/3P4/2PBPN2/PP3PPP/RNBQK2R b KQkq - 0 5", + "hash": 10957956849732313389, + "name": "Colle: 5.c3" + }, + "D05i": { + "eco": "D05i", + "fen": "r1bqkb1r/pp1n1ppp/4pn2/2pp4/3P4/2PBPN2/PP3PPP/RNBQK2R w KQkq - 1 6", + "hash": 12389685078869052641, + "name": "Colle: 5.c3 Nbd7" + }, + "D05j": { + "eco": "D05j", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/2pp4/3P4/2PBPN2/PP3PPP/RNBQK2R w KQkq - 1 6", + "hash": 3746892980696106030, + "name": "Colle: 5.c3 Nc6" + }, + "D05k": { + "eco": "D05k", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/2pp4/3P4/2PBPN2/PP1N1PPP/R1BQK2R b KQkq - 2 6", + "hash": 7678948745487477790, + "name": "Colle: 5.c3 Nc6 6.Nbd2" + }, + "D05l": { + "eco": "D05l", + "fen": "r1bqk2r/pp3ppp/2nbpn2/2pp4/3P4/2PBPN2/PP1N1PPP/R1BQK2R w KQkq - 3 7", + "hash": 14900571340958121274, + "name": "Colle: 5.c3 Nc6 6.Nbd2 Bd6" + }, + "D05m": { + "eco": "D05m", + "fen": "r1bq1rk1/pp3ppp/2nbpn2/2pp4/3P4/2PBPN2/PP1N1PPP/R1BQ1RK1 w - - 5 8", + "hash": 13408588502544060353, + "name": "Colle: 5.c3 Nc6 6.Nbd2 Bd6 7.O-O O-O" + }, + "D05n": { + "eco": "D05n", + "fen": "r1bq1rk1/pp3ppp/2n1pn2/2bp4/8/2PBPN2/PP1N1PPP/R1BQ1RK1 w - - 0 9", + "hash": 966745755984622152, + "name": "Colle: 5.c3 Nc6 6.Nbd2 Bd6 7.O-O O-O 8.dxc5 Bxc5" + }, + "D06a": { + "eco": "D06a", + "fen": "rnbqkbnr/ppp1pppp/8/3p4/2PP4/8/PP2PPPP/RNBQKBNR b KQkq c3 0 2", + "hash": 9963937660605248767, + "name": "Queen's Gambit" + }, + "D06b": { + "eco": "D06b", + "fen": "rnbqkbnr/pp2pppp/8/2pp4/2PP4/8/PP2PPPP/RNBQKBNR w KQkq c6 0 3", + "hash": 7797654190461042562, + "name": "QGD: Austrian Defence" + }, + "D06c": { + "eco": "D06c", + "fen": "rnbqkb1r/pp2pppp/5n2/2pP4/3P4/5N2/PP2PPPP/RNBQKB1R b KQkq - 2 4", + "hash": 16327403397560273716, + "name": "QGD: Austrian, Rubinstein, 4.Nf3" + }, + "D06d": { + "eco": "D06d", + "fen": "rnbqkb1r/pp2pppp/5n2/3P4/3p4/5N2/PP2PPPP/RNBQKB1R w KQkq - 0 5", + "hash": 13657215172968866546, + "name": "QGD: Austrian, Rubinstein, 4.Nf3 cxd4" + }, + "D06e": { + "eco": "D06e", + "fen": "rnbqkb1r/ppp1pppp/5n2/3p4/2PP4/8/PP2PPPP/RNBQKBNR w KQkq - 1 3", + "hash": 15107659714621175145, + "name": "QGD: Marshall Defence" + }, + "D06f": { + "eco": "D06f", + "fen": "rnbqkb1r/ppp1pppp/5n2/3p4/2PP4/2N5/PP2PPPP/R1BQKBNR b KQkq - 2 3", + "hash": 3043915296522631088, + "name": "QGD: Marshall Defence, 3.Nc3" + }, + "D06g": { + "eco": "D06g", + "fen": "rnbqkb1r/ppp1pppp/5n2/3p4/2PP4/5N2/PP2PPPP/RNBQKB1R b KQkq - 2 3", + "hash": 778520757710820436, + "name": "QGD: Marshall Defence, 3.Nf3" + }, + "D06h": { + "eco": "D06h", + "fen": "rnbqkb1r/ppp1pppp/5n2/3P4/3P4/8/PP2PPPP/RNBQKBNR b KQkq - 0 3", + "hash": 16105905511378411892, + "name": "QGD: Marshall Defence, 3.cxd5" + }, + "D06i": { + "eco": "D06i", + "fen": "rnbqkb1r/ppp1pppp/8/3n4/3P4/8/PP2PPPP/RNBQKBNR w KQkq - 0 4", + "hash": 4642597651426212904, + "name": "QGD: Marshall Defence, 3.cxd5 Nxd5" + }, + "D06j": { + "eco": "D06j", + "fen": "rnbqkb1r/ppp1pppp/8/3n4/3P4/5N2/PP2PPPP/RNBQKB1R b KQkq - 1 4", + "hash": 11171527425185291541, + "name": "QGD: Marshall Defence, 3.cxd5 Nxd5 4.Nf3" + }, + "D06k": { + "eco": "D06k", + "fen": "rnbqkb1r/ppp1pppp/8/3n4/3PP3/8/PP3PPP/RNBQKBNR b KQkq e3 0 4", + "hash": 9541681475646308642, + "name": "QGD: Marshall Defence, 3.cxd5 Nxd5 4.e4" + }, + "D06l": { + "eco": "D06l", + "fen": "rn1qkbnr/ppp1pppp/8/3p1b2/2PP4/8/PP2PPPP/RNBQKBNR w KQkq - 1 3", + "hash": 675096894328159602, + "name": "QGD: 2...Bf5" + }, + "D06m": { + "eco": "D06m", + "fen": "rn1qkbnr/ppp1pppp/8/3p1b2/2PP4/2N5/PP2PPPP/R1BQKBNR b KQkq - 2 3", + "hash": 17494643620593319851, + "name": "QGD: 2...Bf5 3.Nc3" + }, + "D06n": { + "eco": "D06n", + "fen": "rn1qkbnr/ppp1pppp/8/3p1b2/2PP4/5N2/PP2PPPP/RNBQKB1R b KQkq - 2 3", + "hash": 15148563207481744463, + "name": "QGD: 2...Bf5 3.Nf3" + }, + "D06o": { + "eco": "D06o", + "fen": "rn1qkbnr/ppp2ppp/4p3/3p1b2/2PP4/1Q3N2/PP2PPPP/RNB1KB1R b KQkq - 1 4", + "hash": 11435994546855044347, + "name": "QGD: 2...Bf5 3.Nf3 e6 4.Qb3" + }, + "D06p": { + "eco": "D06p", + "fen": "rn1qkbnr/ppp2ppp/4p3/3p1b2/2PP4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 4", + "hash": 6906951080953794244, + "name": "QGD: 2...Bf5 3.Nf3 e6 4.Nc3" + }, + "D06q": { + "eco": "D06q", + "fen": "rn1qkb1r/ppp2ppp/4pn2/3p1b2/2PP4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 2 5", + "hash": 302972200451444562, + "name": "QGD: 2...Bf5 3.Nf3 e6 4.Nc3 Nf6" + }, + "D06r": { + "eco": "D06r", + "fen": "rn1qkbnr/ppp1pppp/8/3P1b2/3P4/8/PP2PPPP/RNBQKBNR b KQkq - 0 3", + "hash": 537325567803402607, + "name": "QGD: 2...Bf5 3.cxd5" + }, + "D06s": { + "eco": "D06s", + "fen": "rn1qkbnr/ppp1pppp/8/3P4/3P4/8/PP2PPPP/1RBQKBNR b Kkq - 0 4", + "hash": 892094868013209251, + "name": "QGD: 2...Bf5 3.cxd5 Bxb1 4.Rxb1" + }, + "D06t": { + "eco": "D06t", + "fen": "rn1qkbnr/ppp1pppp/8/3P4/Q2P4/8/PP2PPPP/RbB1KBNR b KQkq - 1 4", + "hash": 15417156620499737581, + "name": "QGD: 2...Bf5 3.cxd5 Bxb1 4.Qa4+" + }, + "D06u": { + "eco": "D06u", + "fen": "rn1qkbnr/pp2pppp/2p5/3P4/Q2P4/8/PP2PPPP/1RB1KBNR b Kkq - 0 5", + "hash": 5530151163491415907, + "name": "QGD: 2...Bf5 3.cxd5 Bxb1 4.Qa4+ c6 5.Rxb1" + }, + "D07a": { + "eco": "D07a", + "fen": "r1bqkbnr/ppp1pppp/2n5/3p4/2PP4/8/PP2PPPP/RNBQKBNR w KQkq - 1 3", + "hash": 2425993657540841980, + "name": "QGD: Chigorin Defence" + }, + "D07b": { + "eco": "D07b", + "fen": "r1bqkbnr/ppp1pppp/2n5/3p4/2PP4/4P3/PP3PPP/RNBQKBNR b KQkq - 0 3", + "hash": 10126236915927423320, + "name": "QGD: Chigorin, 3.e3" + }, + "D07c": { + "eco": "D07c", + "fen": "r1bqkbnr/ppp1pppp/2n5/3P4/3P4/8/PP2PPPP/RNBQKBNR b KQkq - 0 3", + "hash": 3422814526966105569, + "name": "QGD: Chigorin, 3.cxd5" + }, + "D07d": { + "eco": "D07d", + "fen": "r1b1k1nr/ppp2ppp/2n5/3qp3/3P4/2P1P3/P2B1PPP/R2QKBNR b KQkq - 0 7", + "hash": 18252779612631471116, + "name": "QGD: Chigorin, 3.cxd5, Main Line, 7.bxc3" + }, + "D07e": { + "eco": "D07e", + "fen": "r1b1k1nr/ppp2ppp/2n5/3qp3/3P4/2B1P3/PP3PPP/R2QKBNR b KQkq - 0 7", + "hash": 3641899831148782871, + "name": "QGD: Chigorin, 3.cxd5 Main Line, 7.Bxc3" + }, + "D07f": { + "eco": "D07f", + "fen": "r1bqkbnr/ppp1pppp/2n5/3p4/2PP4/5N2/PP2PPPP/RNBQKB1R b KQkq - 2 3", + "hash": 18072435778204790977, + "name": "QGD: Chigorin, 3.Nf3" + }, + "D07g": { + "eco": "D07g", + "fen": "r1bqkbnr/ppp2ppp/2n5/3pp3/2PP4/5N2/PP2PPPP/RNBQKB1R w KQkq e6 0 4", + "hash": 8121741496393206007, + "name": "QGD: Chigorin, Lazard Gambit" + }, + "D07h": { + "eco": "D07h", + "fen": "r2qkbnr/ppp1pppp/2n5/3p4/2PP2b1/5N2/PP2PPPP/RNBQKB1R w KQkq - 3 4", + "hash": 17878721681878548011, + "name": "QGD: Chigorin, 3.Nf3 Bg4" + }, + "D07i": { + "eco": "D07i", + "fen": "r2qkbnr/ppp1pppp/2n5/3p4/2PP2b1/4PN2/PP3PPP/RNBQKB1R b KQkq - 0 4", + "hash": 6138608699992602255, + "name": "QGD: Chigorin, 3.Nf3 Bg4 4.e3" + }, + "D07j": { + "eco": "D07j", + "fen": "r2qkbnr/ppp1pppp/2n5/3p4/2PP2b1/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 4 4", + "hash": 255264844911181042, + "name": "QGD: Chigorin, 3.Nf3 Bg4 4.Nc3" + }, + "D07k": { + "eco": "D07k", + "fen": "r2qkbnr/ppp1pppp/2n5/3P4/3P2b1/5N2/PP2PPPP/RNBQKB1R b KQkq - 0 4", + "hash": 17741756361802246710, + "name": "QGD: Chigorin, 3.Nf3 Bg4 4.cxd5" + }, + "D07l": { + "eco": "D07l", + "fen": "r2qkbnr/ppp1pppp/2P5/8/3P4/5b2/PP2PPPP/RNBQKB1R b KQkq - 0 5", + "hash": 31126699846160536, + "name": "QGD: Chigorin, 3.Nf3 Bg4 4.cxd5 Bxf3 5.dxc6" + }, + "D07m": { + "eco": "D07m", + "fen": "r2qkbnr/ppp1pppp/2n5/3P4/3P4/5P2/PP2PP1P/RNBQKB1R b KQkq - 0 5", + "hash": 7870094840092742239, + "name": "QGD: Chigorin, 3.Nf3 Bg4 4.cxd5 Bxf3 5.gxf3" + }, + "D07n": { + "eco": "D07n", + "fen": "r1bqkbnr/ppp1pppp/2n5/3p4/2PP4/2N5/PP2PPPP/R1BQKBNR b KQkq - 2 3", + "hash": 15725941811550622501, + "name": "QGD: Chigorin, 3.Nc3" + }, + "D07o": { + "eco": "D07o", + "fen": "r1bqkbnr/ppp2ppp/2n5/3pp3/2PP4/2N5/PP2PPPP/R1BQKBNR w KQkq e6 0 4", + "hash": 5784254183466461971, + "name": "QGD: Chigorin, Tartakower Gambit" + }, + "D07p": { + "eco": "D07p", + "fen": "r1bqkb1r/ppp1pppp/2n2n2/3p4/2PP4/2N5/PP2PPPP/R1BQKBNR w KQkq - 3 4", + "hash": 9355084972778214067, + "name": "QGD: Chigorin, 3.Nc3 Nf6" + }, + "D07q": { + "eco": "D07q", + "fen": "r1bqkb1r/ppp1pppp/2n2n2/3p4/2PP4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 4 4", + "hash": 6536725002877416334, + "name": "QGD: Chigorin, 3.Nc3 Nf6 4.Nf3" + }, + "D07r": { + "eco": "D07r", + "fen": "r2qkb1r/ppp1pppp/2n2n2/3p4/2PP2b1/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 5 5", + "hash": 6369452114479496548, + "name": "QGD: Chigorin, 3.Nc3 Nf6 4.Nf3 Bg4" + }, + "D07s": { + "eco": "D07s", + "fen": "r1bqkbnr/ppp1pppp/2n5/8/2pP4/2N5/PP2PPPP/R1BQKBNR w KQkq - 0 4", + "hash": 593346984670068166, + "name": "QGD: Chigorin, 3.Nc3 dxc4" + }, + "D07t": { + "eco": "D07t", + "fen": "r1bqkbnr/ppp1pppp/2n5/3P4/2p5/2N5/PP2PPPP/R1BQKBNR b KQkq - 0 4", + "hash": 12840816573088820123, + "name": "QGD: Chigorin, 3.Nc3 dxc4 4.d5" + }, + "D07u": { + "eco": "D07u", + "fen": "r1bqkbnr/ppp1pppp/2n5/8/2pP4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 4", + "hash": 15230911183082527995, + "name": "QGD: Chigorin, 3.Nc3 dxc4 4.Nf3" + }, + "D07v": { + "eco": "D07v", + "fen": "r1bqkb1r/ppp1pppp/2n2n2/8/2pP4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 2 5", + "hash": 9849695588274330989, + "name": "QGD: Chigorin, 3.Nc3 dxc4 4.Nf3 Nf6" + }, + "D07w": { + "eco": "D07w", + "fen": "r1bqkb1r/ppp1pppp/2n2n2/8/2pPP3/2N2N2/PP3PPP/R1BQKB1R b KQkq e3 0 5", + "hash": 5527650378269745255, + "name": "QGD: Chigorin, 3.Nc3 dxc4 4.Nf3 Nf6 5.e4" + }, + "D08": { + "eco": "D08", + "fen": "rnbqkbnr/ppp2ppp/8/3pp3/2PP4/8/PP2PPPP/RNBQKBNR w KQkq e6 0 3", + "hash": 17746977930792137, + "name": "QGD: Albin Countergambit" + }, + "D09": { + "eco": "D09", + "fen": "r1bqkbnr/ppp2ppp/2n5/4P3/2Pp4/5NP1/PP2PP1P/RNBQKB1R b KQkq - 0 5", + "hash": 2495019143410765144, + "name": "QGD: Albin, 5.g3" + }, + "D10a": { + "eco": "D10a", + "fen": "rnbqkbnr/pp2pppp/2p5/3p4/2PP4/8/PP2PPPP/RNBQKBNR w KQkq - 0 3", + "hash": 1746808887790790468, + "name": "Slav Defence" + }, + "D10b": { + "eco": "D10b", + "fen": "rnbqkbnr/pp2pppp/2p5/3P4/3P4/8/PP2PPPP/RNBQKBNR b KQkq - 0 3", + "hash": 1591867025046500185, + "name": "Slav: Exchange" + }, + "D10c": { + "eco": "D10c", + "fen": "rnbqkbnr/pp2pppp/8/3p4/3P1B2/8/PP2PPPP/RN1QKBNR b KQkq - 1 4", + "hash": 13705363409762456704, + "name": "Slav: Exchange, 4.Bf4" + }, + "D10d": { + "eco": "D10d", + "fen": "rnbqkbnr/pp2pppp/8/3p4/3P4/5N2/PP2PPPP/RNBQKB1R b KQkq - 1 4", + "hash": 13691841304655405022, + "name": "Slav: Exchange, 4.Nf3" + }, + "D10e": { + "eco": "D10e", + "fen": "rnbqkbnr/pp2pppp/8/3p4/3P4/2N5/PP2PPPP/R1BQKBNR b KQkq - 1 4", + "hash": 11452870780179020858, + "name": "Slav: Exchange, 4.Nc3" + }, + "D10f": { + "eco": "D10f", + "fen": "r1bqkb1r/pp2pppp/2n2n2/3p4/3P1B2/2N5/PP2PPPP/R2QKBNR w KQkq - 4 6", + "hash": 13089659391312818892, + "name": "Slav: Exchange, 4.Nc3 Nf6 5.Bf4 Nc6" + }, + "D10g": { + "eco": "D10g", + "fen": "r1bqkb1r/1p2pppp/p1n2n2/3p4/3P1B2/2N1P3/PP3PPP/R2QKBNR w KQkq - 0 7", + "hash": 14590955379512902324, + "name": "Slav: Exchange, 4.Nc3 Nf6 5.Bf4 Nc6 6.e3 a6" + }, + "D10h": { + "eco": "D10h", + "fen": "rnbqkbnr/pp2pppp/2p5/3p4/2PP4/4P3/PP3PPP/RNBQKBNR b KQkq - 0 3", + "hash": 13047117097092280288, + "name": "Slav: 3.e3" + }, + "D10i": { + "eco": "D10i", + "fen": "rnbqkbnr/pp2pppp/2p5/3p4/2PP4/2N5/PP2PPPP/R1BQKBNR b KQkq - 1 3", + "hash": 16405190465850271133, + "name": "Slav: 3.Nc3" + }, + "D10j": { + "eco": "D10j", + "fen": "rnbqkbnr/pp3ppp/2p5/3pp3/2PP4/2N5/PP2PPPP/R1BQKBNR w KQkq e6 0 4", + "hash": 7625431472983547307, + "name": "Slav: Winawer Countergambit" + }, + "D10k": { + "eco": "D10k", + "fen": "rnbqkbnr/pp3ppp/2p5/3Pp3/3P4/2N5/PP2PPPP/R1BQKBNR b KQkq - 0 4", + "hash": 7491846043060570550, + "name": "Slav: Winawer Countergambit, 4.cxd5" + }, + "D10l": { + "eco": "D10l", + "fen": "rnbqkbnr/pp3ppp/8/3pp3/3P4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 5", + "hash": 14982387407578916145, + "name": "Slav: Winawer Countergambit, 4.cxd5 cxd5 5.Nf3" + }, + "D10m": { + "eco": "D10m", + "fen": "rnbqkbnr/pp3ppp/2p5/3pP3/2P5/2N5/PP2PPPP/R1BQKBNR b KQkq - 0 4", + "hash": 17676354518355356379, + "name": "Slav: Winawer Countergambit Accepted" + }, + "D10n": { + "eco": "D10n", + "fen": "rnb1kbnr/pp3ppp/2p5/q3P3/2PpN3/8/PP1BPPPP/R2QKBNR b KQkq - 3 6", + "hash": 17993478394386989471, + "name": "Slav: Winawer Countergambit Accepted, 6.Bd2" + }, + "D10o": { + "eco": "D10o", + "fen": "rnbqkbnr/pp2pppp/2p5/8/2pP4/2N5/PP2PPPP/R1BQKBNR w KQkq - 0 4", + "hash": 3579456793872403326, + "name": "Slav: 3.Nc3 dxc4" + }, + "D10p": { + "eco": "D10p", + "fen": "rnbqkbnr/pp2pppp/2p5/8/2pPP3/2N5/PP3PPP/R1BQKBNR b KQkq e3 0 4", + "hash": 17702460145048434292, + "name": "Slav: 3.Nc3 dxc4 4.e4" + }, + "D10q": { + "eco": "D10q", + "fen": "rnbqkbnr/p3pppp/2p5/1p6/2pPP3/2N5/PP3PPP/R1BQKBNR w KQkq b6 0 5", + "hash": 10786032735642356553, + "name": "Slav: 3.Nc3 dxc4 4.e4 b5" + }, + "D10r": { + "eco": "D10r", + "fen": "rnbqkbnr/p3pppp/2p5/1p6/P1pPP3/2N5/1P3PPP/R1BQKBNR b KQkq a3 0 5", + "hash": 18331569458178514567, + "name": "Slav: 3.Nc3 dxc4 4.e4 b5 5.a4" + }, + "D10s": { + "eco": "D10s", + "fen": "rnbqkb1r/pp2pppp/2p2n2/3p2B1/2PP4/2N5/PP2PPPP/R2QKBNR b KQkq - 3 4", + "hash": 9087861680210313155, + "name": "Slav: 3.Nc3 Nf6 4.Bg5" + }, + "D10t": { + "eco": "D10t", + "fen": "rnbqkb1r/pp2pppp/2p2n2/6B1/2pP4/2N5/PP2PPPP/R2QKBNR w KQkq - 0 5", + "hash": 12400849857327075616, + "name": "Slav: 3.Nc3 Nf6 4.Bg5 dxc4" + }, + "D10u": { + "eco": "D10u", + "fen": "rnbqkb1r/pp2pppp/2p2n2/3p4/2PP4/2N1P3/PP3PPP/R1BQKBNR b KQkq - 0 4", + "hash": 1542913369361919151, + "name": "Slav: 3.Nc3 Nf6 4.e3" + }, + "D10v": { + "eco": "D10v", + "fen": "rn1qkb1r/pp2pppp/2p2n2/3p1b2/2PP4/2N1P3/PP3PPP/R1BQKBNR w KQkq - 1 5", + "hash": 10840426014025295138, + "name": "Slav: 3.Nc3 Nf6 4.e3 Bf5" + }, + "D10w": { + "eco": "D10w", + "fen": "rnbqkb1r/1p2pppp/p1p2n2/3p4/2PP4/2N1P3/PP3PPP/R1BQKBNR w KQkq - 0 5", + "hash": 14384064530573710451, + "name": "Slav: 3.Nc3 Nf6 4.e3 a6" + }, + "D10x": { + "eco": "D10x", + "fen": "rnbqkb1r/1p2pppp/p1p2n2/3p4/2PP4/2N1P3/PPQ2PPP/R1B1KBNR b KQkq - 1 5", + "hash": 8540800054765709335, + "name": "Slav: 3.Nc3 Nf6 4.e3 a6 5.Qc2" + }, + "D10y": { + "eco": "D10y", + "fen": "rnbqkb1r/4pppp/p1p2n2/1p1p4/2PP4/2N1P3/PPQ2PPP/R1B1KBNR w KQkq b6 0 6", + "hash": 1622261733305341226, + "name": "Slav: 3.Nc3 Nf6 4.e3 a6 5.Qc2 b5" + }, + "D11a": { + "eco": "D11a", + "fen": "rnbqkbnr/pp2pppp/2p5/3p4/2PP4/5N2/PP2PPPP/RNBQKB1R b KQkq - 1 3", + "hash": 14076288276950779513, + "name": "Slav: 3.Nf3" + }, + "D11b": { + "eco": "D11b", + "fen": "rn1qkbnr/pp2pppp/2p5/3p4/2PP2b1/5N2/PP2PPPP/RNBQKB1R w KQkq - 2 4", + "hash": 13946187523012200595, + "name": "Slav: 3.Nf3 Bg4" + }, + "D11c": { + "eco": "D11c", + "fen": "rn1qkbnr/pp2pppp/2p5/3p1b2/2PP4/5N2/PP2PPPP/RNBQKB1R w KQkq - 2 4", + "hash": 4629819256270262260, + "name": "Slav: 3.Nf3 Bf5" + }, + "D11d": { + "eco": "D11d", + "fen": "rn1qkbnr/pp3ppp/2p1p3/3p1b2/2PP4/1QN2N2/PP2PPPP/R1B1KB1R b KQkq - 1 5", + "hash": 17823317951193494937, + "name": "Slav: 3.Nf3 Bf5 4.Nc3 e6 5.Qb3" + }, + "D11e": { + "eco": "D11e", + "fen": "rnbqkbnr/pp2pppp/2p5/8/2pP4/5N2/PP2PPPP/RNBQKB1R w KQkq - 0 4", + "hash": 1251785920489416858, + "name": "Slav: 3.Nf3 dxc4" + }, + "D11f": { + "eco": "D11f", + "fen": "rnbqkbnr/p3pppp/2p5/1p6/2pP4/4PN2/PP3PPP/RNBQKB1R w KQkq b6 0 5", + "hash": 15885906786669649155, + "name": "Slav: 3.Nf3 dxc4 4.e3 b5" + }, + "D11g": { + "eco": "D11g", + "fen": "rnbqkb1r/pp2pppp/2p2n2/3p4/2PP4/5N2/PP2PPPP/RNBQKB1R w KQkq - 2 4", + "hash": 11004318564803921903, + "name": "Slav: 3.Nf3 Nf6" + }, + "D11h": { + "eco": "D11h", + "fen": "rnbqkb1r/pp2pppp/2p2n2/3p4/2PP4/1Q3N2/PP2PPPP/RNB1KB1R b KQkq - 3 4", + "hash": 11695446731748830985, + "name": "Slav: 4.Qb3" + }, + "D11i": { + "eco": "D11i", + "fen": "rnbqkb1r/pp2pppp/2p2n2/3p4/2PP4/5N2/PPQ1PPPP/RNB1KB1R b KQkq - 3 4", + "hash": 3003412164725308299, + "name": "Slav: 4.Qc2" + }, + "D11j": { + "eco": "D11j", + "fen": "rnbqkb1r/pp2pp1p/2p2np1/3p4/2PP1B2/5N2/PPQ1PPPP/RN2KB1R b KQkq - 1 5", + "hash": 1967781295507800995, + "name": "Slav: 4.Qc2 g6 5.Bf4" + }, + "D11k": { + "eco": "D11k", + "fen": "rnbqkb1r/pp2pppp/2p2n2/3p4/2PP4/5N2/PP1NPPPP/R1BQKB1R b KQkq - 3 4", + "hash": 13968346407936094175, + "name": "Slav: Breyer Variation" + }, + "D11l": { + "eco": "D11l", + "fen": "rnbqkb1r/pp2pppp/2p2n2/3p4/2PP4/5NP1/PP2PP1P/RNBQKB1R b KQkq - 0 4", + "hash": 12993318336732864471, + "name": "Slav: Slav-Reti System" + }, + "D11m": { + "eco": "D11m", + "fen": "rn1qkb1r/pp2pppp/2p2n2/3p4/2PP2b1/5NP1/PP2PP1P/RNBQKB1R w KQkq - 1 5", + "hash": 13151144358613684541, + "name": "Slav: Slav-Reti System" + }, + "D11n": { + "eco": "D11n", + "fen": "r2qkb1r/pp1n1ppp/2p1pn2/3p4/2PP2b1/1P3NP1/P3PPBP/RNBQ1RK1 b kq - 0 7", + "hash": 12985550550477309095, + "name": "Slav: Slav-Reti with b3" + }, + "D11o": { + "eco": "D11o", + "fen": "rn1qkb1r/pp2pppp/2p2n2/3p1b2/2PP4/5NP1/PP2PP1P/RNBQKB1R w KQkq - 1 5", + "hash": 3983684152069002842, + "name": "Slav: Slav-Reti System" + }, + "D11p": { + "eco": "D11p", + "fen": "rn1qkb1r/pp3pp1/2p1pn1p/3p1b2/2PP4/5NP1/PP2PPBP/RNBQ1RK1 w kq - 0 7", + "hash": 1751058851685583988, + "name": "Slav: Slav-Reti System" + }, + "D11q": { + "eco": "D11q", + "fen": "rnbqkb1r/pp2pppp/2p2n2/3p4/2PP4/4PN2/PP3PPP/RNBQKB1R b KQkq - 0 4", + "hash": 3862527020462264139, + "name": "Slav: 4.e3" + }, + "D11r": { + "eco": "D11r", + "fen": "rnbqkb1r/pp2pp1p/2p2np1/3p4/2PP4/4PN2/PP3PPP/RNBQKB1R w KQkq - 0 5", + "hash": 15865654302364130560, + "name": "Slav: 4.e3 g6" + }, + "D11s": { + "eco": "D11s", + "fen": "rnbqkb1r/1p2pppp/p1p2n2/3p4/2PP4/4PN2/PP3PPP/RNBQKB1R w KQkq - 0 5", + "hash": 16676128136435382167, + "name": "Slav: 4.e3 a6" + }, + "D11t": { + "eco": "D11t", + "fen": "rn1qkb1r/pp2pppp/2p2n2/3p4/2PP2b1/4PN2/PP3PPP/RNBQKB1R w KQkq - 1 5", + "hash": 3983919777398997409, + "name": "Slav: 4.e3 Bg4" + }, + "D12a": { + "eco": "D12a", + "fen": "rn1qkb1r/pp2pppp/2p2n2/3p1b2/2PP4/4PN2/PP3PPP/RNBQKB1R w KQkq - 1 5", + "hash": 13151384280534173382, + "name": "Slav: 4.e3 Bf5" + }, + "D12b": { + "eco": "D12b", + "fen": "rn1qkb1r/pp2pppp/2p2n2/3p1b2/2PP4/1Q2PN2/PP3PPP/RNB1KB1R b KQkq - 2 5", + "hash": 10122607530579258912, + "name": "Slav: 4.e3 Bf5 5.Qb3" + }, + "D12c": { + "eco": "D12c", + "fen": "rn1qkb1r/pp2pppp/2p2n2/3P1b2/3P4/4PN2/PP3PPP/RNBQKB1R b KQkq - 0 5", + "hash": 13306309095472190171, + "name": "Slav: 4.e3 Bf5 5.cxd5" + }, + "D12d": { + "eco": "D12d", + "fen": "rn1qkb1r/pp2pppp/5n2/3p1b2/3P4/1Q2PN2/PP3PPP/RNB1KB1R b KQkq - 1 6", + "hash": 17375042869445457799, + "name": "Slav: 4.e3 Bf5 5.cxd5 cxd5 6.Qb3" + }, + "D12e": { + "eco": "D12e", + "fen": "rn2kb1r/ppq1pppp/5n2/3p1b2/3P4/1Q2PN2/PP3PPP/RNB1KB1R w KQkq - 2 7", + "hash": 17816154705994299526, + "name": "Slav: 4.e3 Bf5 5.cxd5 cxd5 6.Qb3 Qc7" + }, + "D12f": { + "eco": "D12f", + "fen": "rn1qkb1r/pp2pppp/5n2/3p1b2/3P4/2N1PN2/PP3PPP/R1BQKB1R b KQkq - 1 6", + "hash": 3480779434815118776, + "name": "Slav: 4.e3 Bf5 5.cxd5 cxd5 6.Nc3" + }, + "D12g": { + "eco": "D12g", + "fen": "rn1qkb1r/pp2pppp/2p2n2/3p1b2/2PP4/3BPN2/PP3PPP/RNBQK2R b KQkq - 2 5", + "hash": 16397249935996978357, + "name": "Slav: 4.e3 Bf5 5.Bd3" + }, + "D12h": { + "eco": "D12h", + "fen": "rn1qkb1r/pp2pppp/2p2n2/3p4/2PP4/3bPN2/PP3PPP/RNBQK2R w KQkq - 0 6", + "hash": 3788858120856612317, + "name": "Slav: 4.e3 Bf5 5.Bd3 Bxd3" + }, + "D12i": { + "eco": "D12i", + "fen": "rn1qkb1r/pp2pppp/2p2n2/3p1b2/2PP4/2N1PN2/PP3PPP/R1BQKB1R b KQkq - 2 5", + "hash": 5554067471260435487, + "name": "Slav: 4.e3 Bf5 5.Nc3" + }, + "D12j": { + "eco": "D12j", + "fen": "rn1qkb1r/pp3ppp/2p1pn2/3p1b2/2PP4/2N1PN2/PP2BPPP/R1BQK2R b KQkq - 1 6", + "hash": 5252168275369926382, + "name": "Slav: 4.e3 Bf5 5.Nc3 e6 6.Be2" + }, + "D12k": { + "eco": "D12k", + "fen": "rn1qkb1r/pp3ppp/2p1pn2/3p1b2/2PP4/2NBPN2/PP3PPP/R1BQK2R b KQkq - 1 6", + "hash": 7957387077700916798, + "name": "Slav: 4.e3 Bf5 5.Nc3 e6 6.Bd3" + }, + "D12l": { + "eco": "D12l", + "fen": "rn1qkb1r/pp3ppp/2p1pn2/3p4/2PP4/2NbPN2/PP3PPP/R1BQK2R w KQkq - 0 7", + "hash": 13363394990949220182, + "name": "Slav: 4.e3 Bf5 5.Nc3 e6 6.Bd3 Bxd3" + }, + "D12m": { + "eco": "D12m", + "fen": "r2qkb1r/pp1n1ppp/2p1pn2/3p4/2PP4/2NQPN2/PP3PPP/R1B1K2R w KQkq - 1 8", + "hash": 14261161628116049022, + "name": "Slav: 4.e3 Bf5 5.Nc3 e6 6.Bd3 Bxd3 7.Qxd3 Nbd7" + }, + "D12n": { + "eco": "D12n", + "fen": "rn1qkb1r/pp3ppp/2p1pn2/3p1b2/2PP3N/2N1P3/PP3PPP/R1BQKB1R b KQkq - 1 6", + "hash": 779181607630509802, + "name": "Slav: 4.e3 Bf5 5.Nc3 e6 6.Nh4" + }, + "D12o": { + "eco": "D12o", + "fen": "rn1qkb1r/pp3ppp/2p1pn2/3p4/2PP2bN/2N1P3/PP3PPP/R1BQKB1R w KQkq - 2 7", + "hash": 8344238399662724228, + "name": "Slav: 4.e3 Bf5 5.Nc3 e6 6.Nh4 Bg4" + }, + "D12p": { + "eco": "D12p", + "fen": "rn1qkb1r/pp3ppp/2p1pn2/3p4/2PPb2N/2N1P3/PP3PPP/R1BQKB1R w KQkq - 2 7", + "hash": 5793381275141976409, + "name": "Slav: 4.e3 Bf5 5.Nc3 e6 6.Nh4 Be4" + }, + "D13a": { + "eco": "D13a", + "fen": "rnbqkb1r/pp2pppp/2p2n2/3P4/3P4/5N2/PP2PPPP/RNBQKB1R b KQkq - 0 4", + "hash": 10853018297454154738, + "name": "Slav: Exchange" + }, + "D13b": { + "eco": "D13b", + "fen": "rnbqkb1r/pp2pppp/5n2/3p4/3P4/5N2/PP2PPPP/RNBQKB1R w KQkq - 0 5", + "hash": 16567905108507745864, + "name": "Slav: Exchange" + }, + "D13c": { + "eco": "D13c", + "fen": "rnbqkb1r/pp2pppp/5n2/3p4/3P4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 5", + "hash": 2196099966225177745, + "name": "Slav: Exchange, 5.Nc3" + }, + "D13d": { + "eco": "D13d", + "fen": "rn1qkb1r/pp2pppp/5n2/3p1b2/3P4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 2 6", + "hash": 11341036680904463644, + "name": "Slav: Exchange, 5.Nc3 Bf5" + }, + "D13e": { + "eco": "D13e", + "fen": "rnbqkb1r/1p2pppp/p4n2/3p4/3P4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 0 6", + "hash": 14739697444652164173, + "name": "Slav: Exchange, 5.Nc3 a6" + }, + "D13f": { + "eco": "D13f", + "fen": "rnbqkb1r/1p2pppp/p4n2/3pN3/3P4/2N5/PP2PPPP/R1BQKB1R b KQkq - 1 6", + "hash": 1275982643119571259, + "name": "Slav: Exchange, 5.Nc3 a6 6.Ne5" + }, + "D13g": { + "eco": "D13g", + "fen": "rnbqkb1r/1p2pppp/p4n2/3p4/3P1B2/2N2N2/PP2PPPP/R2QKB1R b KQkq - 1 6", + "hash": 1718415980605558318, + "name": "Slav: Exchange, 5.Nc3 a6 6.Bf4" + }, + "D13h": { + "eco": "D13h", + "fen": "rnbqkb1r/pp3ppp/4pn2/3p4/3P4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 0 6", + "hash": 7497912260602088643, + "name": "Slav: Exchange, 5.Nc3 e6" + }, + "D13i": { + "eco": "D13i", + "fen": "rnbqkb1r/pp3ppp/4pn2/3p4/3P1B2/2N2N2/PP2PPPP/R2QKB1R b KQkq - 1 6", + "hash": 12923371567200282272, + "name": "Slav: Exchange, 5.Nc3 e6 6.Bf4" + }, + "D13j": { + "eco": "D13j", + "fen": "r1bqkb1r/pp2pppp/2n2n2/3p4/3P4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 2 6", + "hash": 13085144579429693842, + "name": "Slav: Exchange, 5.Nc3 Nc6" + }, + "D13k": { + "eco": "D13k", + "fen": "r1bqkb1r/pp2pppp/2n2n2/3p4/3P1B2/2N2N2/PP2PPPP/R2QKB1R b KQkq - 3 6", + "hash": 7981261632806851569, + "name": "Slav: Exchange, 6.Bf4" + }, + "D13l": { + "eco": "D13l", + "fen": "r1bqkb1r/1p2pppp/p1n2n2/3p4/3P1B2/2N2N2/PP2PPPP/R2QKB1R w KQkq - 0 7", + "hash": 13561696206392453933, + "name": "Slav: Exchange, 6.Bf4 a6" + }, + "D13m": { + "eco": "D13m", + "fen": "r1bqkb1r/1p2pppp/p1n2n2/3p4/3P1B2/2N1PN2/PP3PPP/R2QKB1R b KQkq - 0 7", + "hash": 1232174761788269449, + "name": "Slav: Exchange, 6.Bf4 a6 7.e3" + }, + "D13n": { + "eco": "D13n", + "fen": "r2qkb1r/1p2pppp/p1n2n2/3p4/3P1Bb1/2N1PN2/PP3PPP/R2QKB1R w KQkq - 1 8", + "hash": 1426051568806030691, + "name": "Slav: Exchange, 6.Bf4 a6 7.e3 Bg4" + }, + "D13o": { + "eco": "D13o", + "fen": "r2qkb1r/1p2pppp/p1n2n2/3p4/3P1Bb1/2N1PN2/PP2BPPP/R2QK2R b KQkq - 2 8", + "hash": 6938597464236042176, + "name": "Slav: Exchange, 6.Bf4 a6 7.e3 Bg4 8.Be2" + }, + "D13p": { + "eco": "D13p", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/3p4/3P1B2/2N2N2/PP2PPPP/R2QKB1R w KQkq - 0 7", + "hash": 1780277663303893923, + "name": "Slav: Exchange, 6.Bf4 e6" + }, + "D13q": { + "eco": "D13q", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/3p4/3P1B2/2N1PN2/PP3PPP/R2QKB1R b KQkq - 0 7", + "hash": 13085652542578559751, + "name": "Slav: Exchange, 6.Bf4 e6 7.e3" + }, + "D13r": { + "eco": "D13r", + "fen": "r1bqk2r/pp2bppp/2n1pn2/3p4/3P1B2/2N1PN2/PP3PPP/R2QKB1R w KQkq - 1 8", + "hash": 11625444612234979222, + "name": "Slav: Exchange, 6.Bf4 e6 7.e3 Be7" + }, + "D13s": { + "eco": "D13s", + "fen": "r1bqk2r/pp3ppp/2nbpn2/3p4/3P1B2/2N1PN2/PP3PPP/R2QKB1R w KQkq - 1 8", + "hash": 1279583228739443235, + "name": "Slav: Exchange, 6.Bf4 e6 7.e3 Bd6" + }, + "D13t": { + "eco": "D13t", + "fen": "r1b1k2r/pp3ppp/2nqpn2/3p4/3P4/2N1PN2/PP3PPP/R2QKB1R w KQkq - 0 9", + "hash": 16234774908503746737, + "name": "Slav: Exchange, 6.Bf4 e6 7.e3 Bd6 8.Bxd6 Qxd6" + }, + "D14a": { + "eco": "D14a", + "fen": "r2qkb1r/pp2pppp/2n2n2/3p1b2/3P1B2/2N2N2/PP2PPPP/R2QKB1R w KQkq - 4 7", + "hash": 17139093406942567036, + "name": "Slav: Exchange, 6.Bf4 Bf5" + }, + "D14b": { + "eco": "D14b", + "fen": "r2qkb1r/pp2pppp/2n2n2/3p1b2/3P1B2/2N1PN2/PP3PPP/R2QKB1R b KQkq - 0 7", + "hash": 4681219235527168728, + "name": "Slav: Exchange, 6.Bf4 Bf5 7.e3" + }, + "D14c": { + "eco": "D14c", + "fen": "r2qkb1r/1p2pppp/p1n2n2/3p1b2/3P1B2/2N1PN2/PP3PPP/R2QKB1R w KQkq - 0 8", + "hash": 10520683488635677188, + "name": "Slav: Exchange, 6.Bf4 Bf5 7.e3 a6" + }, + "D14d": { + "eco": "D14d", + "fen": "r2qkb1r/pp3ppp/2n1pn2/3p1b2/3P1B2/2N1PN2/PP3PPP/R2QKB1R w KQkq - 0 8", + "hash": 3927413919025463946, + "name": "Slav: Exchange, 6.Bf4 Bf5 7.e3 e6" + }, + "D14e": { + "eco": "D14e", + "fen": "r2qkb1r/pp3ppp/2n1pn2/3pNb2/3P1B2/2N1P3/PP3PPP/R2QKB1R b KQkq - 1 8", + "hash": 16985367681362126844, + "name": "Slav: Exchange, 8.Ne5" + }, + "D14f": { + "eco": "D14f", + "fen": "r2qkb1r/pp3ppp/2n1pn2/3p1b2/3P1B2/1QN1PN2/PP3PPP/R3KB1R b KQkq - 1 8", + "hash": 898848138399033964, + "name": "Slav: Exchange, 8.Qb3" + }, + "D14g": { + "eco": "D14g", + "fen": "r2qk2r/pp3ppp/2n1pn2/3p1b2/1b1P1B2/1QN1PN2/PP3PPP/R3KB1R w KQkq - 2 9", + "hash": 14211162057180209742, + "name": "Slav: Exchange, Trifunovic Variation" + }, + "D14h": { + "eco": "D14h", + "fen": "r2qkb1r/pp3ppp/2n1pn2/3p1b2/3P1B2/2NBPN2/PP3PPP/R2QK2R b KQkq - 1 8", + "hash": 7173490406396575993, + "name": "Slav: Exchange, 8.Bd3" + }, + "D14i": { + "eco": "D14i", + "fen": "r2qk2r/pp3ppp/2nbpn2/3p4/3P1B2/2NQPN2/PP3PPP/R3K2R w KQkq - 1 10", + "hash": 6895519869675943505, + "name": "Slav: Exchange, 8.Bd3 Bxd3 9.Qxd3 Bd6" + }, + "D14j": { + "eco": "D14j", + "fen": "r3k2r/pp3ppp/2nqpn2/3p4/3P4/2NQPN2/PP3PPP/R3K2R w KQkq - 0 11", + "hash": 12627443684735648963, + "name": "Slav: Exchange, 8.Bd3 Bxd3 9.Qxd3 Bd6 10.Bxd6 Qxd6" + }, + "D14k": { + "eco": "D14k", + "fen": "r4rk1/pp3ppp/2nqpn2/3p4/3P4/2NQPN2/PP3PPP/R4RK1 w - - 2 12", + "hash": 15843707072140097080, + "name": "Slav: Exchange, 8.Bd3 Main Line" + }, + "D14l": { + "eco": "D14l", + "fen": "r4rk1/pp3ppp/2nqpn2/3p4/3P4/2NQPN2/PP3PPP/2R2RK1 b - - 3 12", + "hash": 6133442448696468342, + "name": "Slav: Exchange, 8.Bd3 Main Line, 12.Rac1" + }, + "D14m": { + "eco": "D14m", + "fen": "r4rk1/pp3ppp/2nqpn2/3p4/3P4/2NQPN2/PP3PPP/R1R3K1 b - - 3 12", + "hash": 4584354773797851469, + "name": "Slav: Exchange, 8.Bd3 Main Line, 12.Rfc1" + }, + "D14n": { + "eco": "D14n", + "fen": "r1r3k1/pp3ppp/2nqpn2/3p4/3P4/2NQPN2/PP3PPP/R1R3K1 w - - 4 13", + "hash": 10720219608831525126, + "name": "Slav: Exchange, 8.Bd3 Main Line, 12.Rfc1 Rfc8" + }, + "D14o": { + "eco": "D14o", + "fen": "r2qkb1r/pp3ppp/2n1pn2/1B1p1b2/3P1B2/2N1PN2/PP3PPP/R2QK2R b KQkq - 1 8", + "hash": 386794488848486665, + "name": "Slav: Exchange, 8.Bb5" + }, + "D14p": { + "eco": "D14p", + "fen": "r2qkb1r/pp1n1ppp/2n1p3/1B1p1b2/3P1B2/2N1PN2/PP3PPP/R2QK2R w KQkq - 2 9", + "hash": 18165594755934230780, + "name": "Slav: Exchange, 8.Bb5 Nd7" + }, + "D14q": { + "eco": "D14q", + "fen": "r2qkb1r/pp1n1ppp/2n1p3/1B1p1b2/Q2P1B2/2N1PN2/PP3PPP/R3K2R b KQkq - 3 9", + "hash": 3368012338594998919, + "name": "Slav: Exchange, 8.Bb5 Nd7 9.Qa4" + }, + "D15a": { + "eco": "D15a", + "fen": "rnbqkb1r/pp2pppp/2p2n2/3p4/2PP4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 3 4", + "hash": 7142754967990650166, + "name": "Slav: 4.Nc3" + }, + "D15b": { + "eco": "D15b", + "fen": "rn1qkb1r/pp2pppp/2p2n2/3p1b2/2PP4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 4 5", + "hash": 16157015790906264763, + "name": "Slav: 4.Nc3 Bf5" + }, + "D15c": { + "eco": "D15c", + "fen": "rnb1kb1r/pp2pppp/1qp2n2/3p4/2PP4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 4 5", + "hash": 11880451404406887404, + "name": "Slav: Schting Variation" + }, + "D15d": { + "eco": "D15d", + "fen": "rnbqkb1r/1p2pppp/p1p2n2/3p4/2PP4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 0 5", + "hash": 12814949031136312810, + "name": "Slav: Chameleon Variation" + }, + "D15e": { + "eco": "D15e", + "fen": "rnbqkb1r/1p2pppp/p1p2n2/3p2B1/2PP4/2N2N2/PP2PPPP/R2QKB1R b KQkq - 1 5", + "hash": 8614698935326828066, + "name": "Slav: Chameleon, 5.Bg5" + }, + "D15f": { + "eco": "D15f", + "fen": "rnbqkb1r/1p2pppp/p1p2n2/3pN3/2PP4/2N5/PP2PPPP/R1BQKB1R b KQkq - 1 5", + "hash": 7849501403240257692, + "name": "Slav: Chameleon, 5.Ne5" + }, + "D15g": { + "eco": "D15g", + "fen": "rnbqkb1r/1p2pppp/p1p2n2/3p4/2PP4/2N1PN2/PP3PPP/R1BQKB1R b KQkq - 0 5", + "hash": 2088151309428602190, + "name": "Slav: Chameleon, 5.e3" + }, + "D15h": { + "eco": "D15h", + "fen": "rnbqkb1r/4pppp/p1p2n2/1p1p4/2PP4/2N1PN2/PP3PPP/R1BQKB1R w KQkq b6 0 6", + "hash": 9006900844447107187, + "name": "Slav: Chameleon, 5.e3 b5" + }, + "D15i": { + "eco": "D15i", + "fen": "rnbqkb1r/4pppp/p1p2n2/1p1p4/2PP4/1PN1PN2/P4PPP/R1BQKB1R b KQkq - 0 6", + "hash": 17318751573620482846, + "name": "Slav: Chameleon, 5.e3 b5 6.b3" + }, + "D15j": { + "eco": "D15j", + "fen": "rnbqkb1r/1p2pppp/p1p2n2/2Pp4/3P4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 0 5", + "hash": 16016263069412118618, + "name": "Slav: Chameleon, 5.c5" + }, + "D15k": { + "eco": "D15k", + "fen": "r1bqkb1r/1p1npppp/p1p2n2/2Pp4/3P4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 1 6", + "hash": 17124455148747013526, + "name": "Slav: Chameleon, 5.c5 Nbd7" + }, + "D15l": { + "eco": "D15l", + "fen": "rnbqkb1r/1p2pppp/p1p2n2/3p4/P1PP4/2N2N2/1P2PPPP/R1BQKB1R b KQkq a3 0 5", + "hash": 15717183175309289508, + "name": "Slav: Chameleon, 5.a4" + }, + "D15m": { + "eco": "D15m", + "fen": "rnbqkb1r/1p3ppp/p1p1pn2/3p4/P1PP4/2N2N2/1P2PPPP/R1BQKB1R w KQkq - 0 6", + "hash": 12423554377693591670, + "name": "Slav: Chameleon, 5.a4 e6" + }, + "D15n": { + "eco": "D15n", + "fen": "rnbqkb1r/1p3ppp/p1p1pn2/3p2B1/P1PP4/2N2N2/1P2PPPP/R2QKB1R b KQkq - 1 6", + "hash": 7652464403226698686, + "name": "Slav: Chameleon, 5.a4 e6 6.Bg5" + }, + "D15o": { + "eco": "D15o", + "fen": "rnbqkb1r/pp2pppp/2p2n2/8/2pP4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 0 5", + "hash": 12764908881138920405, + "name": "Slav: Accepted" + }, + "D15p": { + "eco": "D15p", + "fen": "rnbqkb1r/pp2pppp/2p2n2/4N3/2pP4/2N5/PP2PPPP/R1BQKB1R b KQkq - 1 5", + "hash": 7790892217459986083, + "name": "Slav: Accepted, 5.Ne5" + }, + "D15q": { + "eco": "D15q", + "fen": "rnbqkb1r/pp2pppp/2p2n2/8/2pP4/2N1PN2/PP3PPP/R1BQKB1R b KQkq - 0 5", + "hash": 2020799347915760497, + "name": "Slav: Accepted, Alekhine" + }, + "D15r": { + "eco": "D15r", + "fen": "rnbqkb1r/p3pppp/2p2n2/8/PppP4/2N1PN2/1P3PPP/R1BQKB1R w KQkq - 0 7", + "hash": 8506023626590065345, + "name": "Slav: Accepted, Alekhine: 5...b5 6.a4 b4" + }, + "D15s": { + "eco": "D15s", + "fen": "rnbqkb1r/p3pppp/2p2n2/8/PppP4/4PN2/1P3PPP/RNBQKB1R b KQkq - 1 7", + "hash": 10204153765516906520, + "name": "Slav: Accepted, Alekhine: 5...b5 6.a4 b4 7.Nb1" + }, + "D15t": { + "eco": "D15t", + "fen": "rnbqkb1r/pp2pppp/2p2n2/8/2pPP3/2N2N2/PP3PPP/R1BQKB1R b KQkq e3 0 5", + "hash": 8440059844475688671, + "name": "Slav: Geller (Tolush) Gambit" + }, + "D15u": { + "eco": "D15u", + "fen": "rnbqkb1r/p3pppp/2p2n2/1p6/2pPP3/2N2N2/PPQ2PPP/R1B1KB1R b KQkq - 1 6", + "hash": 11834340236982785926, + "name": "Slav: Geller Gambit, Spassky Variation" + }, + "D15v": { + "eco": "D15v", + "fen": "rnbqkb1r/p3pppp/2p2n2/1p2P3/2pP4/2N2N2/PP3PPP/R1BQKB1R b KQkq - 0 6", + "hash": 8384683665005776262, + "name": "Slav: Geller Gambit, 6.e5" + }, + "D15w": { + "eco": "D15w", + "fen": "rnbqkb1r/p3pppp/2p5/1p1nP1N1/2pP4/2N5/PP3PPP/R1BQKB1R b KQkq - 2 7", + "hash": 16617824622196162711, + "name": "Slav: Geller Gambit, 6.e5 Nd5 7.Ng5" + }, + "D15x": { + "eco": "D15x", + "fen": "rnbqkb1r/p3pppp/2p5/1p1nP3/P1pP4/2N2N2/1P3PPP/R1BQKB1R b KQkq a3 0 7", + "hash": 15818260695333547517, + "name": "Slav: Geller Gambit, 6.e5 Nd5 7.a4" + }, + "D15y": { + "eco": "D15y", + "fen": "rnbqkb1r/p4ppp/2p1p3/1p1nP3/P1pP4/2N2N2/1P3PPP/R1BQKB1R w KQkq - 0 8", + "hash": 12534136213394931119, + "name": "Slav: Geller Gambit, 6.e5 Nd5 7.a4 e6" + }, + "D16a": { + "eco": "D16a", + "fen": "rnbqkb1r/pp2pppp/2p2n2/8/P1pP4/2N2N2/1P2PPPP/R1BQKB1R b KQkq a3 0 5", + "hash": 15775949045825043995, + "name": "Slav: Alapin" + }, + "D16b": { + "eco": "D16b", + "fen": "rnbqkb1r/pp2pppp/2p5/3n4/P1pP4/2N2N2/1P2PPPP/R1BQKB1R w KQkq - 1 6", + "hash": 2233699564581424046, + "name": "Slav: 5.a4 Nd5" + }, + "D16c": { + "eco": "D16c", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/8/P1pP4/2N2N2/1P2PPPP/R1BQKB1R w KQkq - 0 6", + "hash": 12436862047523892809, + "name": "Slav: Soultanbeieff Variation" + }, + "D16d": { + "eco": "D16d", + "fen": "rnbqkb1r/1p2pppp/2p2n2/p7/P1pP4/2N2N2/1P2PPPP/R1BQKB1R w KQkq a6 0 6", + "hash": 6698501724170908299, + "name": "Slav: Murey Variation" + }, + "D16e": { + "eco": "D16e", + "fen": "r1bqkb1r/pp2pppp/n1p2n2/8/P1pP4/2N2N2/1P2PPPP/R1BQKB1R w KQkq - 1 6", + "hash": 10695984802465571495, + "name": "Slav: Smyslov Variation" + }, + "D16f": { + "eco": "D16f", + "fen": "r1bqkb1r/pp2pppp/n1p2n2/4N3/P1pP4/2N5/1P2PPPP/R1BQKB1R b KQkq - 2 6", + "hash": 5284721607005341649, + "name": "Slav: Smyslov, 6.Ne5" + }, + "D16g": { + "eco": "D16g", + "fen": "r1bqkb1r/pp2pppp/n1p2n2/8/P1pP4/2N1PN2/1P3PPP/R1BQKB1R b KQkq - 0 6", + "hash": 4126008849753729539, + "name": "Slav: Smyslov, 6.e3" + }, + "D16h": { + "eco": "D16h", + "fen": "r2qkb1r/pp2pppp/n1p2n2/8/P1pP2b1/2N1PN2/1P3PPP/R1BQKB1R w KQkq - 1 7", + "hash": 4292296592762168553, + "name": "Slav: Smyslov, 6.e3 Bg4" + }, + "D16i": { + "eco": "D16i", + "fen": "r1bqkb1r/pp2pppp/n1p2n2/8/P1pPP3/2N2N2/1P3PPP/R1BQKB1R b KQkq e3 0 6", + "hash": 5794101694722695085, + "name": "Slav: Smyslov, 6.e4" + }, + "D16j": { + "eco": "D16j", + "fen": "r2qkb1r/pp2pppp/n1p2n2/8/P1pPP1b1/2N2N2/1P3PPP/R1BQKB1R w KQkq - 1 7", + "hash": 5961361799116378439, + "name": "Slav: Smyslov, 6.e4 Bg4" + }, + "D16k": { + "eco": "D16k", + "fen": "r2qkb1r/pp3ppp/n1p1pn2/8/P1BPP1b1/2N2N2/1P3PPP/R1BQK2R w KQkq - 0 8", + "hash": 13883827623883998628, + "name": "Slav: Smyslov, 6.e4 Bg4 7.Bxc4 e6" + }, + "D16l": { + "eco": "D16l", + "fen": "rn1qkb1r/pp2pppp/2p2n2/8/P1pP2b1/2N2N2/1P2PPPP/R1BQKB1R w KQkq - 1 6", + "hash": 15581509271640436977, + "name": "Slav: Bronstein (Steiner) Variation" + }, + "D16m": { + "eco": "D16m", + "fen": "rn1qkb1r/pp2pppp/2p2n2/4N3/P1pP2b1/2N5/1P2PPPP/R1BQKB1R b KQkq - 2 6", + "hash": 361550138857493895, + "name": "Slav: Bronstein, 6.Ne5" + }, + "D16n": { + "eco": "D16n", + "fen": "rn1qkb1r/pp2pppp/2p2n2/4N2b/P1pP4/2N5/1P2PPPP/R1BQKB1R w KQkq - 3 7", + "hash": 7184038176353817650, + "name": "Slav: Bronstein, 6.Ne5 Bh5" + }, + "D16o": { + "eco": "D16o", + "fen": "rn1qkb1r/pp2pppp/2p2n2/4N2b/P1pP4/2N4P/1P2PPP1/R1BQKB1R b KQkq - 0 7", + "hash": 10034311436475948480, + "name": "Slav: Bronstein, 6.Ne5 Bh5 7.h3" + }, + "D16p": { + "eco": "D16p", + "fen": "rn1qkb1r/pp2pppp/2p2n2/4N2b/P1pP4/2N3P1/1P2PP1P/R1BQKB1R b KQkq - 0 7", + "hash": 5716316874677799946, + "name": "Slav: Bronstein, 6.Ne5 Bh5 7.g3" + }, + "D16q": { + "eco": "D16q", + "fen": "rn1qkb1r/pp2pppp/2p2n2/4N2b/P1pP4/2N2P2/1P2P1PP/R1BQKB1R b KQkq - 0 7", + "hash": 937648780178684739, + "name": "Slav: Bronstein, 6.Ne5 Bh5 7.f3" + }, + "D16r": { + "eco": "D16r", + "fen": "rn1qkb1r/pp1npppp/2p5/4N2b/P1pP4/2N2P2/1P2P1PP/R1BQKB1R w KQkq - 1 8", + "hash": 17601247393266594486, + "name": "Slav: Bronstein, 6.Ne5 Bh5 7.f3 Nfd7" + }, + "D16s": { + "eco": "D16s", + "fen": "rn1qkb1r/pp1n1ppp/2p5/4p2b/P1NPN3/5P2/1P2P1PP/R1BQKB1R b KQkq - 1 9", + "hash": 12599527176706958450, + "name": "Slav: Bronstein, 6.Ne5 Bh5 7.f3 Nfd7 8.Nxc4 e5 9.Ne4" + }, + "D17a": { + "eco": "D17a", + "fen": "rn1qkb1r/pp2pppp/2p2n2/5b2/P1pP4/2N2N2/1P2PPPP/R1BQKB1R w KQkq - 1 6", + "hash": 6482377080795658134, + "name": "Slav: Czech Defence" + }, + "D17b": { + "eco": "D17b", + "fen": "rn1qkb1r/pp2pppp/2p2n2/5b2/P1pP3N/2N5/1P2PPPP/R1BQKB1R b KQkq - 2 6", + "hash": 7513625778681394481, + "name": "Slav: Czech, 6.Nh4" + }, + "D17c": { + "eco": "D17c", + "fen": "rn1qkb1r/pp3ppp/2p1pn2/5b2/P1pP3N/2N5/1P2PPPP/R1BQKB1R w KQkq - 0 7", + "hash": 2175855339233551715, + "name": "Slav: Czech, 6.Nh4 e6" + }, + "D17d": { + "eco": "D17d", + "fen": "rn1qkb1r/pp3ppp/2p2n2/5p2/P1pP4/2N1P3/1P3PPP/R1BQKB1R b KQkq - 0 8", + "hash": 14412489231139791282, + "name": "Slav: Czech, 6.Nh4 e6 7.Nxf5 exf5 8.e3" + }, + "D17e": { + "eco": "D17e", + "fen": "rnbqkb1r/pp2pppp/2p2n2/8/P1pP3N/2N5/1P2PPPP/R1BQKB1R w KQkq - 3 7", + "hash": 16959618693604621500, + "name": "Slav: Czech, 6.Nh4 Bc8" + }, + "D17f": { + "eco": "D17f", + "fen": "rn1qkb1r/pp2pppp/2p2n2/4Nb2/P1pP4/2N5/1P2PPPP/R1BQKB1R b KQkq - 2 6", + "hash": 9569824111274234592, + "name": "Slav: Central Variation" + }, + "D17g": { + "eco": "D17g", + "fen": "r2qkb1r/pp2pppp/n1p2n2/4Nb2/P1pP4/2N5/1P2PPPP/R1BQKB1R w KQkq - 3 7", + "hash": 14577716329454210652, + "name": "Slav: Central, 6.Ne5 Na6" + }, + "D17h": { + "eco": "D17h", + "fen": "r2qkb1r/pp1npppp/2p2n2/4Nb2/P1pP4/2N5/1P2PPPP/R1BQKB1R w KQkq - 3 7", + "hash": 13199385366031826732, + "name": "Slav: Central, 6.Ne5 Nbd7" + }, + "D17i": { + "eco": "D17i", + "fen": "r3kb1r/ppqn1ppp/2p2n2/4pb2/P1NP4/2N3P1/1P2PP1P/R1BQKB1R w KQkq e6 0 9", + "hash": 15646520387755849209, + "name": "Slav: Central, Carlsbad Variation" + }, + "D17j": { + "eco": "D17j", + "fen": "r3kb1r/ppqn2pp/2p2p2/4nb2/P1N2B2/2N3P1/1P2PPBP/R2QK2R w KQkq - 0 12", + "hash": 7515144730380223794, + "name": "Slav: Central, Carlsbad, Main Line" + }, + "D17k": { + "eco": "D17k", + "fen": "rn1qkb1r/pp3ppp/2p1pn2/4Nb2/P1pP4/2N5/1P2PPPP/R1BQKB1R w KQkq - 0 7", + "hash": 17490057229932069554, + "name": "Slav: Central, 6.Ne5 e6" + }, + "D17l": { + "eco": "D17l", + "fen": "rn1qkb1r/pp3ppp/4pn2/2p1Nb2/P1pP4/2N2P2/1P2P1PP/R1BQKB1R w KQkq - 0 8", + "hash": 1213111764236906508, + "name": "Slav: Central, Hbner (7...c5)" + }, + "D17m": { + "eco": "D17m", + "fen": "rn1qk2r/pp3ppp/2p1pn2/4Nb2/PbpP4/2N2P2/1P2P1PP/R1BQKB1R w KQkq - 1 8", + "hash": 6145624953303049697, + "name": "Slav: Central, 7.f3 Bb4" + }, + "D17n": { + "eco": "D17n", + "fen": "rn1qk2r/pp3ppp/2p1pn2/5b2/PbNP4/2N2P2/1P2P1PP/R1BQKB1R b KQkq - 0 8", + "hash": 11224677906914869307, + "name": "Slav: Central, 7.f3 Bb4 8.Nxc4" + }, + "D17o": { + "eco": "D17o", + "fen": "rn1qk2r/pp3ppp/2p1pn2/4Nb2/PbpPP3/2N2P2/1P4PP/R1BQKB1R b KQkq e3 0 8", + "hash": 10470491027866589419, + "name": "Slav: Central, 7.f3 Bb4 8.e4" + }, + "D17p": { + "eco": "D17p", + "fen": "rn1qk2r/pp3ppp/2p1pn2/4N3/PbpPb3/2N2P2/1P4PP/R1BQKB1R w KQkq - 0 9", + "hash": 5496545230235637169, + "name": "Slav: Central, Piece-Sac Line" + }, + "D17q": { + "eco": "D17q", + "fen": "rn2k2r/pp3ppp/2p1p3/4N3/P1p1q3/8/1P1KQ1PP/R4B1R b kq - 0 13", + "hash": 4411558489694241111, + "name": "Slav: Central, Main Line" + }, + "D17r": { + "eco": "D17r", + "fen": "r3k2r/pp3ppp/n1p1p3/3q4/P1N5/8/1PK1Q1PP/R4B1R b kq - 0 15", + "hash": 10415810808034781135, + "name": "Slav: Central, Main Line, 15.Nxc4" + }, + "D17s": { + "eco": "D17s", + "fen": "r4rk1/pp3ppp/n1p1p3/3q4/P1N5/8/1PK1Q1PP/R4B1R w - - 1 16", + "hash": 11107153253988535844, + "name": "Slav: Central, Main Line, 15.Nxc4 O-O" + }, + "D17t": { + "eco": "D17t", + "fen": "2kr3r/pp3ppp/n1p1p3/3q4/P1N5/8/1PK1Q1PP/R4B1R w - - 1 16", + "hash": 11798008121773798389, + "name": "Slav: Central, Main Line, 15.Nxc4 O-O-O" + }, + "D18a": { + "eco": "D18a", + "fen": "rn1qkb1r/pp2pppp/2p2n2/5b2/P1pP4/2N1PN2/1P3PPP/R1BQKB1R b KQkq - 0 6", + "hash": 17643772029103177522, + "name": "Slav: Dutch Variation" + }, + "D18b": { + "eco": "D18b", + "fen": "r2qkb1r/pp2pppp/n1p2n2/5b2/P1pP4/2N1PN2/1P3PPP/R1BQKB1R w KQkq - 1 7", + "hash": 13428589215933096846, + "name": "Slav: Dutch, Lasker Variation" + }, + "D18c": { + "eco": "D18c", + "fen": "rn1qkb1r/pp3ppp/2p1pn2/5b2/P1pP4/2N1PN2/1P3PPP/R1BQKB1R w KQkq - 0 7", + "hash": 9416102265175437152, + "name": "Slav: Dutch, 6...e6" + }, + "D18d": { + "eco": "D18d", + "fen": "rn1qk2r/pp3ppp/2p1pn2/5b2/PbBP4/2N1PN2/1P3PPP/R1BQK2R w KQkq - 1 8", + "hash": 12649605828407190515, + "name": "Slav: Dutch, 6...e6 7.Bxc4 Bb4" + }, + "D18e": { + "eco": "D18e", + "fen": "rn1qk2r/pp3ppp/2p1pn2/5b2/PbBP4/2N1PN2/1P3PPP/R1BQ1RK1 b kq - 2 8", + "hash": 15130148949573777635, + "name": "Slav: Dutch, 8.O-O" + }, + "D18f": { + "eco": "D18f", + "fen": "r2qk2r/pp1n1ppp/2p1pn2/5b2/PbBP4/2N1PN2/1P3PPP/R1BQ1RK1 w kq - 3 9", + "hash": 16292454531993752879, + "name": "Slav: Dutch, 8...Nbd7" + }, + "D18g": { + "eco": "D18g", + "fen": "r2qk2r/pp1n1ppp/2p1pn2/5b2/PbBP3N/2N1P3/1P3PPP/R1BQ1RK1 b kq - 4 9", + "hash": 15251906715348637576, + "name": "Slav: Dutch, 8...Nbd7 9.Nh4" + }, + "D18h": { + "eco": "D18h", + "fen": "r2qk2r/pp1n1ppp/2p1pnb1/8/PbBP3N/2N1P3/1P3PPP/R1BQ1RK1 w kq - 5 10", + "hash": 4844857673128350026, + "name": "Slav: Dutch, 8...Nbd7 9.Nh4 Bg6" + }, + "D18i": { + "eco": "D18i", + "fen": "r2qk2r/pp1n1ppp/2p1pn2/5b2/PbBP4/1QN1PN2/1P3PPP/R1B2RK1 b kq - 4 9", + "hash": 15628562367209242057, + "name": "Slav: Dutch, 8...Nbd7 9.Qb3" + }, + "D18j": { + "eco": "D18j", + "fen": "r2qk2r/1p1n1ppp/2p1pn2/p4b2/PbBP4/1QN1PN2/1P3PPP/R1B2RK1 w kq a6 0 10", + "hash": 6843636804836880729, + "name": "Slav: Dutch, 8...Nbd7 9.Qb3 a5" + }, + "D18k": { + "eco": "D18k", + "fen": "r2qk2r/pp1n1ppp/2p1pn2/5b2/PbBP4/2N1PN2/1P2QPPP/R1B2RK1 b kq - 4 9", + "hash": 8366810908583038635, + "name": "Slav: Dutch, 8...Nbd7 9.Qe2" + }, + "D18l": { + "eco": "D18l", + "fen": "r2qk2r/pp1n1ppp/2p1pnb1/8/PbBP4/2N1PN2/1P2QPPP/R1B2RK1 w kq - 5 10", + "hash": 16467744133563320425, + "name": "Slav: Dutch, 8...Nbd7 9.Qe2 Bg6" + }, + "D18m": { + "eco": "D18m", + "fen": "r2qk2r/pp1n1ppp/2p1pnb1/8/PbBPP3/2N2N2/1P2QPPP/R1B2RK1 b kq - 0 10", + "hash": 8463749527758190798, + "name": "Slav: Dutch, 8...Nbd7 9.Qe2 Bg6 10.e4" + }, + "D18n": { + "eco": "D18n", + "fen": "rn1q1rk1/pp3ppp/2p1pn2/5b2/PbBP4/2N1PN2/1P3PPP/R1BQ1RK1 w - - 3 9", + "hash": 15803689615749140744, + "name": "Slav: Dutch, 8...O-O" + }, + "D18o": { + "eco": "D18o", + "fen": "rn1q1rk1/pp3ppp/2p1pn2/5b2/PbBP4/1QN1PN2/1P3PPP/R1B2RK1 b - - 4 9", + "hash": 16260343492469488110, + "name": "Slav: Dutch, 8...O-O 9.Qb3" + }, + "D18p": { + "eco": "D18p", + "fen": "rn1q1rk1/pp3ppp/2p1pn2/5b2/PbBP3N/2N1P3/1P3PPP/R1BQ1RK1 b - - 4 9", + "hash": 16925159289443652527, + "name": "Slav: Dutch, 8...O-O 9.Nh4" + }, + "D18q": { + "eco": "D18q", + "fen": "rn1q1rk1/pp3ppp/2p1pn2/8/PbBP2bN/2N1P3/1P3PPP/R1BQ1RK1 w - - 5 10", + "hash": 10664167285296894401, + "name": "Slav: Dutch, 8...O-O 9.Nh4 Bg4" + }, + "D18r": { + "eco": "D18r", + "fen": "r2q1rk1/pp1n1ppp/2p1pn2/5b2/PbBP3N/2N1P3/1P3PPP/R1BQ1RK1 w - - 5 10", + "hash": 15636856272640933475, + "name": "Slav: Dutch, 8...O-O 9.Nh4 Nbd7" + }, + "D18s": { + "eco": "D18s", + "fen": "r2q1rk1/pp1n1ppp/2p1pn2/5N2/PbBP4/2N1P3/1P3PPP/R1BQ1RK1 b - - 0 10", + "hash": 11448558008787015124, + "name": "Slav: Dutch, 8...O-O 9.Nh4 Nbd7 10.Nxf5" + }, + "D18t": { + "eco": "D18t", + "fen": "r2q1rk1/pp1n1ppp/2p2n2/5p2/PbBP4/2N1P3/1PQ2PPP/R1B2RK1 b - - 1 11", + "hash": 1370280930057227890, + "name": "Slav: Dutch, 8...O-O 9.Nh4 Nbd7 10.Nxf5 exf5 11.Qc2" + }, + "D19a": { + "eco": "D19a", + "fen": "rn1q1rk1/pp3ppp/2p1pn2/5b2/PbBP4/2N1PN2/1P2QPPP/R1B2RK1 b - - 4 9", + "hash": 5573051548260731532, + "name": "Slav: Dutch, 8...O-O 9.Qe2" + }, + "D19b": { + "eco": "D19b", + "fen": "rn1q1rk1/pp3ppp/2p1pn2/8/PbBP2b1/2N1PN2/1P2QPPP/R1B2RK1 w - - 5 10", + "hash": 3768371377174874338, + "name": "Slav: Dutch, 8...O-O 9.Qe2 Bg4" + }, + "D19c": { + "eco": "D19c", + "fen": "rn1q1rk1/pp3ppp/2p1pnb1/8/PbBP4/2N1PN2/1P2QPPP/R1B2RK1 w - - 5 10", + "hash": 15979537700359343182, + "name": "Slav: Dutch, 8...O-O 9.Qe2 Bg6" + }, + "D19d": { + "eco": "D19d", + "fen": "rn1q1rk1/pp3ppp/2p1pnb1/8/PbBP4/2N1PN2/1P2QPPP/R1BR2K1 b - - 6 10", + "hash": 3521964603386133057, + "name": "Slav: Dutch, 8...O-O 9.Qe2 Bg6 10.Rd1" + }, + "D19e": { + "eco": "D19e", + "fen": "rn1q1rk1/pp3ppp/2p1pnb1/4N3/PbBP4/2N1P3/1P2QPPP/R1B2RK1 b - - 6 10", + "hash": 70482197004216632, + "name": "Slav: Dutch, 8...O-O 9.Qe2 Bg6 10.Ne5" + }, + "D19f": { + "eco": "D19f", + "fen": "r2q1rk1/pp1n1pp1/2p1pnp1/8/PbBP4/2N1P3/1P2QPPP/R1BR2K1 b - - 1 12", + "hash": 9015898556839097987, + "name": "Slav: Dutch, 8...O-O 9.Qe2 Bg6 10.Ne5 Nbd7, 12.Rd1" + }, + "D19g": { + "eco": "D19g", + "fen": "rn1q1rk1/pp3ppp/2p1p3/5b2/PbBPn3/2N1PN2/1P2QPPP/R1B2RK1 w - - 5 10", + "hash": 8601655680883754870, + "name": "Slav: Dutch, 8...O-O 9.Qe2 Ne4" + }, + "D19h": { + "eco": "D19h", + "fen": "r2q1rk1/pp1n1ppp/2p1pn2/5b2/PbBP4/2N1PN2/1P2QPPP/R1B2RK1 w - - 5 10", + "hash": 9129939416975763264, + "name": "Slav: Dutch, 8...O-O 9.Qe2 Nbd7" + }, + "D19i": { + "eco": "D19i", + "fen": "r2q1rk1/pp1n1ppp/2p1pn2/5b2/PbBPP3/2N2N2/1P2QPPP/R1B2RK1 b - - 0 10", + "hash": 17242144245269518311, + "name": "Slav: Dutch, 8...O-O 9.Qe2 Nbd7 10.e4" + }, + "D19j": { + "eco": "D19j", + "fen": "r2q1rk1/pp1n1ppp/2p1pnb1/8/PbBPP3/2N2N2/1P2QPPP/R1B2RK1 w - - 1 11", + "hash": 9213708349981446437, + "name": "Slav: Dutch, 8...O-O 9.Qe2 Nbd7 10.e4 Bg6" + }, + "D19k": { + "eco": "D19k", + "fen": "r2q1rk1/pp1n1ppp/2p1pnb1/8/Pb1PP3/2NB1N2/1P2QPPP/R1B2RK1 b - - 2 11", + "hash": 12805310222022557945, + "name": "Slav: Dutch, 8...O-O 9.Qe2 Nbd7 10.e4 Bg6 11.Bd3" + }, + "D19l": { + "eco": "D19l", + "fen": "r2q1rk1/pp1n1pp1/2p1pnbp/8/Pb1PP3/2NB1N2/1P2QPPP/R1B2RK1 w - - 0 12", + "hash": 2540824774783863276, + "name": "Slav: Dutch, 8...O-O 9.Qe2 Nbd7 10.e4 Bg6 11.Bd3 h6" + }, + "D19m": { + "eco": "D19m", + "fen": "r2qr1k1/pp1n1ppp/2p1pnb1/8/Pb1PP3/2NB1N2/1P2QPPP/R1B2RK1 w - - 3 12", + "hash": 12530244023407191419, + "name": "Slav: Dutch, 8...O-O 9.Qe2 Nbd7 10.e4 Bg6 11.Bd3 Re8" + }, + "D19n": { + "eco": "D19n", + "fen": "r2q1rk1/pp1n1ppp/2p1pn2/7b/Pb1PP3/2NB1N2/1P2QPPP/R1B2RK1 w - - 3 12", + "hash": 4506554733741524448, + "name": "Slav: Dutch, 8...O-O 9.Qe2 Nbd7 10.e4 Bg6 11.Bd3 Bh5" + }, + "D19o": { + "eco": "D19o", + "fen": "r2q1rk1/pp1n1ppp/2p1pn2/4P2b/Pb1P4/2NB1N2/1P2QPPP/R1B2RK1 b - - 0 12", + "hash": 6913985689648030596, + "name": "Slav: Dutch, 8...O-O 9.Qe2 Nbd7 10.e4 Bg6 11.Bd3 Bh5 12.e5" + }, + "D20a": { + "eco": "D20a", + "fen": "rnbqkbnr/ppp1pppp/8/8/2pP4/8/PP2PPPP/RNBQKBNR w KQkq - 0 3", + "hash": 6359431977275087388, + "name": "Queen's Gambit Accepted (QGA)" + }, + "D20b": { + "eco": "D20b", + "fen": "rnbqkbnr/ppp1pppp/8/8/2pP4/4P3/PP3PPP/RNBQKBNR b KQkq - 0 3", + "hash": 17684649486277825208, + "name": "QGA: 3.e3" + }, + "D20c": { + "eco": "D20c", + "fen": "rnbqkbnr/pp2pppp/8/2p5/2pP4/4P3/PP3PPP/RNBQKBNR w KQkq c6 0 4", + "hash": 1377449116172638661, + "name": "QGA: 3.e3 c5" + }, + "D20d": { + "eco": "D20d", + "fen": "rnbqkbnr/ppp2ppp/4p3/8/2pP4/4P3/PP3PPP/RNBQKBNR w KQkq - 0 4", + "hash": 9447299896588681962, + "name": "QGA: 3.e3 e6" + }, + "D20e": { + "eco": "D20e", + "fen": "rnbqkbnr/ppp2ppp/8/4p3/2pP4/4P3/PP3PPP/RNBQKBNR w KQkq e6 0 4", + "hash": 9157075094496324238, + "name": "QGA: 3.e3 e5" + }, + "D20f": { + "eco": "D20f", + "fen": "rnbqk1nr/ppp2ppp/8/8/1bBP4/8/PP3PPP/RNBQK1NR w KQkq - 1 6", + "hash": 16130428376693799194, + "name": "QGA: 3.e3 e5" + }, + "D20g": { + "eco": "D20g", + "fen": "rnbqkb1r/ppp2ppp/5n2/8/2BP4/8/PP3PPP/RNBQK1NR w KQkq - 1 6", + "hash": 5581533162245943470, + "name": "QGA: 3.e3 e5" + }, + "D20h": { + "eco": "D20h", + "fen": "rnbqkb1r/ppp1pppp/5n2/8/2pP4/4P3/PP3PPP/RNBQKBNR w KQkq - 1 4", + "hash": 12574696633852760878, + "name": "QGA: 3.e3 Nf6" + }, + "D20i": { + "eco": "D20i", + "fen": "rnbqkbnr/ppp1pppp/8/8/2pP4/2N5/PP2PPPP/R1BQKBNR b KQkq - 1 3", + "hash": 11805664233652181189, + "name": "QGA: 3.Nc3" + }, + "D20j": { + "eco": "D20j", + "fen": "rnbqkbnr/ppp2ppp/4p3/8/2pP4/2N5/PP2PPPP/R1BQKBNR w KQkq - 0 4", + "hash": 15393821548003313815, + "name": "QGA: 3.Nc3 e6" + }, + "D20k": { + "eco": "D20k", + "fen": "rnbqkbnr/1pp1pppp/p7/8/2pP4/2N5/PP2PPPP/R1BQKBNR w KQkq - 0 4", + "hash": 8152030866294415385, + "name": "QGA: 3.Nc3 a6" + }, + "D20l": { + "eco": "D20l", + "fen": "rnbqkbnr/ppp1pppp/8/8/2pPP3/8/PP3PPP/RNBQKBNR b KQkq e3 0 3", + "hash": 11260741761627940630, + "name": "QGA: 3.e4" + }, + "D20m": { + "eco": "D20m", + "fen": "r1bqkbnr/ppp1pppp/2n5/8/2pPP3/8/PP3PPP/RNBQKBNR w KQkq - 1 4", + "hash": 4011555093360722453, + "name": "QGA: 3.e4 Nc6" + }, + "D20n": { + "eco": "D20n", + "fen": "r1bqkbnr/ppp1pppp/2n5/8/2pPP3/4B3/PP3PPP/RN1QKBNR b KQkq - 2 4", + "hash": 4945889135863191963, + "name": "QGA: 3.e4 Nc6 4.Be3" + }, + "D20o": { + "eco": "D20o", + "fen": "rnbqkb1r/ppp1pppp/5n2/8/2pPP3/8/PP3PPP/RNBQKBNR w KQkq - 1 4", + "hash": 14386753466951739008, + "name": "QGA: 3.e4 Nf6" + }, + "D20p": { + "eco": "D20p", + "fen": "rnbqkb1r/ppp1pppp/1n6/4P3/2BP4/8/PP3PPP/RNBQK1NR w KQkq - 1 6", + "hash": 12626951399440800430, + "name": "QGA: 3.e4 Nf6 4.e5 Nd5 5.Bxc4 Nb6" + }, + "D20q": { + "eco": "D20q", + "fen": "rnbqkb1r/ppp1pppp/1n6/4P3/3P4/1B6/PP3PPP/RNBQK1NR b KQkq - 2 6", + "hash": 7367855211482450506, + "name": "QGA: 3.e4 Nf6 4.e5 Nd5 5.Bxc4 Nb6 6.Bb3" + }, + "D20r": { + "eco": "D20r", + "fen": "r1bqkb1r/ppp1pppp/1nn5/4P3/3P4/1B6/PP2NPPP/RNBQK2R b KQkq - 4 7", + "hash": 15669943306280149687, + "name": "QGA: 3.e4 Nf6 4.e5 Nd5 5.Bxc4 Nb6 6.Bb3 Nc6 7.Ne2" + }, + "D20s": { + "eco": "D20s", + "fen": "rnbqkbnr/pp2pppp/8/2p5/2pPP3/8/PP3PPP/RNBQKBNR w KQkq c6 0 4", + "hash": 8806755358488554603, + "name": "QGA: 3.e4 c5" + }, + "D20t": { + "eco": "D20t", + "fen": "rnbqkbnr/pp2pppp/8/2pP4/2p1P3/8/PP3PPP/RNBQKBNR b KQkq - 0 4", + "hash": 13852969121297005110, + "name": "QGA: 3.e4 c5 4.d5" + }, + "D20u": { + "eco": "D20u", + "fen": "rnbqkb1r/p3pppp/5n2/1ppP4/2p1P3/2N5/PP3PPP/R1BQKBNR w KQkq b6 0 6", + "hash": 18828346148881476, + "name": "QGA: Linares Variation" + }, + "D20v": { + "eco": "D20v", + "fen": "rnbqkbnr/ppp2ppp/8/4p3/2pPP3/8/PP3PPP/RNBQKBNR w KQkq e6 0 4", + "hash": 1602780858620092192, + "name": "QGA: 3.e4 e5" + }, + "D20w": { + "eco": "D20w", + "fen": "rnbqk1nr/ppp2ppp/8/4p3/1bpPP3/5N2/PP3PPP/RNBQKB1R w KQkq - 2 5", + "hash": 296038295208015423, + "name": "QGA: 3.e4 e5 4.Nf3 Bb4+" + }, + "D20x": { + "eco": "D20x", + "fen": "rnbqkbnr/ppp2ppp/8/8/2ppP3/5N2/PP3PPP/RNBQKB1R w KQkq - 0 5", + "hash": 6207331129989917192, + "name": "QGA: 3.e4 e5 4.Nf3 exd4" + }, + "D20y": { + "eco": "D20y", + "fen": "r1bqkbnr/ppp2ppp/2n5/8/2BpP3/5N2/PP3PPP/RNBQK2R w KQkq - 1 6", + "hash": 1848926967445851066, + "name": "QGA: 3.e4 e5 4.Nf3 exd4 5.Bxc4 Nc6" + }, + "D21a": { + "eco": "D21a", + "fen": "rnbqkbnr/ppp1pppp/8/8/2pP4/5N2/PP2PPPP/RNBQKB1R b KQkq - 1 3", + "hash": 9450189495482432289, + "name": "QGA: 3.Nf3" + }, + "D21b": { + "eco": "D21b", + "fen": "r1bqkbnr/pppnpppp/8/8/2pP4/5N2/PP2PPPP/RNBQKB1R w KQkq - 2 4", + "hash": 12738055629054367469, + "name": "QGA: 3.Nf3 Nd7" + }, + "D21c": { + "eco": "D21c", + "fen": "rn1qkbnr/ppp1pppp/8/8/2pP2b1/5N2/PP2PPPP/RNBQKB1R w KQkq - 2 4", + "hash": 9364702662976517579, + "name": "QGA: 3.Nf3 Bg4" + }, + "D21d": { + "eco": "D21d", + "fen": "rnbqkbnr/ppp2ppp/4p3/8/2pP4/5N2/PP2PPPP/RNBQKB1R w KQkq - 0 4", + "hash": 17677230485592943475, + "name": "QGA: 3.Nf3 e6" + }, + "D21e": { + "eco": "D21e", + "fen": "rnbqkbnr/ppp2ppp/4p3/8/Q1pP4/5N2/PP2PPPP/RNB1KB1R b KQkq - 1 4", + "hash": 2879662976083155208, + "name": "QGA: 3.Nf3 e6 4.Qa4+" + }, + "D21f": { + "eco": "D21f", + "fen": "rnbqkbnr/ppp2ppp/4p3/8/2pPP3/5N2/PP3PPP/RNBQKB1R b KQkq e3 0 4", + "hash": 3554798329298261625, + "name": "QGA: 3.Nf3 e6 4.e4" + }, + "D21g": { + "eco": "D21g", + "fen": "rnbqkbnr/ppp2ppp/4p3/8/2pP4/4PN2/PP3PPP/RNBQKB1R b KQkq - 0 4", + "hash": 6376923099843437527, + "name": "QGA: 3.Nf3 e6 4.e3" + }, + "D21h": { + "eco": "D21h", + "fen": "rnbqkbnr/pp2pppp/8/2p5/2pP4/5N2/PP2PPPP/RNBQKB1R w KQkq c6 0 4", + "hash": 7301461892795248732, + "name": "QGA: 3.Nf3 c5" + }, + "D21i": { + "eco": "D21i", + "fen": "rnbqkbnr/pp2pppp/8/2p5/2pP4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 4", + "hash": 11440014188315816581, + "name": "QGA: 3.Nf3 c5 4.Nc3" + }, + "D21j": { + "eco": "D21j", + "fen": "rnbqkbnr/pp2pppp/8/2p5/2pP4/4PN2/PP3PPP/RNBQKB1R b KQkq - 0 4", + "hash": 14445650235042773240, + "name": "QGA: 3.Nf3 c5 4.e3" + }, + "D21k": { + "eco": "D21k", + "fen": "rnbqkbnr/pp2pppp/8/8/2Bp4/4PN2/PP3PPP/RNBQK2R b KQkq - 0 5", + "hash": 8288394683112166799, + "name": "QGA: 3.Nf3 c5 4.e3 cxd4 5.Bxc4" + }, + "D21l": { + "eco": "D21l", + "fen": "rnbqkbnr/pp2pppp/8/2pP4/2p5/5N2/PP2PPPP/RNBQKB1R b KQkq - 0 4", + "hash": 16094813640971658753, + "name": "QGA: 3.Nf3 c5 4.d5" + }, + "D21m": { + "eco": "D21m", + "fen": "rnbqkbnr/pp3ppp/4p3/2pP4/2p5/5N2/PP2PPPP/RNBQKB1R w KQkq - 0 5", + "hash": 12190032025290847827, + "name": "QGA: 3.Nf3 c5 4.d5 e6" + }, + "D21n": { + "eco": "D21n", + "fen": "rnbqkbnr/pp3ppp/4p3/2pP4/2p5/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 5", + "hash": 5961825997588935818, + "name": "QGA: 3.Nf3 c5 4.d5 e6 5.Nc3" + }, + "D21o": { + "eco": "D21o", + "fen": "rnbqkbnr/pp3ppp/8/2pp4/2p5/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 0 6", + "hash": 7901689706283267137, + "name": "QGA: 3.Nf3 c5 4.d5 e6 5.Nc3 exd5" + }, + "D21p": { + "eco": "D21p", + "fen": "rnb1kbnr/pp3ppp/8/2pN4/2p5/5N2/PP2PPPP/R1B1KB1R b KQkq - 0 7", + "hash": 4037822807386074785, + "name": "QGA: 3.Nf3 c5 4.d5 e6 5.Nc3 exd5 6.Qxd5 Qxd5 7.Nxd5" + }, + "D21q": { + "eco": "D21q", + "fen": "rnb1k1nr/pp3ppp/3b4/2pN4/2p5/5N2/PP2PPPP/R1B1KB1R w KQkq - 1 8", + "hash": 11263880839574683525, + "name": "QGA: 3.Nf3 c5 4.d5 e6 5.Nc3 exd5 6.Qxd5 Qxd5 7.Nxd5 Bd6" + }, + "D21r": { + "eco": "D21r", + "fen": "rnb1k1nr/pp3ppp/3b4/2pN4/2p5/8/PP1NPPPP/R1B1KB1R b KQkq - 2 8", + "hash": 4716337630345707791, + "name": "QGA: 3.Nf3 c5 4.d5 e6 5.Nc3 exd5 6.Qxd5 Qxd5 7.Nxd5 Bd6 8.Nd2" + }, + "D21s": { + "eco": "D21s", + "fen": "rnb1k2r/pp2nppp/3b4/2pN4/2p5/8/PP1NPPPP/R1B1KB1R w KQkq - 3 9", + "hash": 9168326823612369586, + "name": "QGA: Seirawan Variation" + }, + "D21t": { + "eco": "D21t", + "fen": "rnbqkbnr/1pp1pppp/p7/8/2pP4/5N2/PP2PPPP/RNBQKB1R w KQkq - 0 4", + "hash": 5895810824034534397, + "name": "QGA: Alekhine Defence" + }, + "D21u": { + "eco": "D21u", + "fen": "rnbqkbnr/1pp1pppp/p7/8/2pPP3/5N2/PP3PPP/RNBQKB1R b KQkq e3 0 4", + "hash": 10796586250350100215, + "name": "QGA: Alekhine, Borisenko-Furman Variation" + }, + "D21v": { + "eco": "D21v", + "fen": "rnbqkbnr/1pp1pppp/p7/8/P1pP4/5N2/1P2PPPP/RNBQKB1R b KQkq a3 0 4", + "hash": 4187044016676181555, + "name": "QGA: Alekhine, 4.a4" + }, + "D22a": { + "eco": "D22a", + "fen": "rnbqkbnr/1pp1pppp/p7/8/2pP4/4PN2/PP3PPP/RNBQKB1R b KQkq - 0 4", + "hash": 18230397599379409753, + "name": "QGA: Alekhine, 4.e3" + }, + "D22b": { + "eco": "D22b", + "fen": "rnbqkbnr/2p1pppp/p7/1p6/2pP4/4PN2/PP3PPP/RNBQKB1R w KQkq b6 0 5", + "hash": 11311643765603137124, + "name": "QGA: Alekhine, Haberditz Variation" + }, + "D22c": { + "eco": "D22c", + "fen": "rnbqkbnr/1pp2ppp/p3p3/8/2pP4/4PN2/PP3PPP/RNBQKB1R w KQkq - 0 5", + "hash": 9982387136626055947, + "name": "QGA: Alekhine, 4.e3 e6" + }, + "D22d": { + "eco": "D22d", + "fen": "rnbqkbnr/1pp2ppp/p3p3/8/2BP4/4PN2/PP3PPP/RNBQK2R b KQkq - 0 5", + "hash": 7991957864150343610, + "name": "QGA: Alekhine, 4.e3 e6 5.Bxc4" + }, + "D22e": { + "eco": "D22e", + "fen": "rnbqkbnr/1p3ppp/p3p3/2p5/2BP4/4PN2/PP3PPP/RNBQK2R w KQkq c6 0 6", + "hash": 9842884147345167559, + "name": "QGA: Alekhine, 4.e3 e6 5.Bxc4 c5" + }, + "D22f": { + "eco": "D22f", + "fen": "rnbqkbnr/1p3ppp/p3p3/2p5/2BP4/4PN2/PP2QPPP/RNB1K2R b KQkq - 1 6", + "hash": 2206339238982668099, + "name": "QGA: Alekhine, 4.e3 e6 5.Bxc4 c5 6.Qe2" + }, + "D22g": { + "eco": "D22g", + "fen": "rn1qkbnr/1pp1pppp/p7/8/2pP2b1/4PN2/PP3PPP/RNBQKB1R w KQkq - 1 5", + "hash": 18315198731917575603, + "name": "QGA: Alekhine, 4.e3 Bg4" + }, + "D22h": { + "eco": "D22h", + "fen": "rn1qkbnr/1pp2ppp/p3p3/8/2BP2b1/4PN2/PP3PPP/RNBQK2R w KQkq - 0 6", + "hash": 7798802336944951632, + "name": "QGA: Alekhine, 4.e3 Bg4 5.Bxc4 e6" + }, + "D22i": { + "eco": "D22i", + "fen": "rn1qkbnr/1pp2ppp/p3p3/3P4/2B3b1/4PN2/PP3PPP/RNBQK2R b KQkq - 0 6", + "hash": 15434586014579001101, + "name": "QGA: Alekhine, Alatortsev Variation" + }, + "D22j": { + "eco": "D22j", + "fen": "rn1qkbnr/1pp2ppp/p3p3/8/2BP2b1/1Q2PN2/PP3PPP/RNB1K2R b KQkq - 1 6", + "hash": 6251923033153124790, + "name": "QGA: Alekhine, 4.e3 Bg4 5.Bxc4 e6 6.Qb3" + }, + "D22k": { + "eco": "D22k", + "fen": "rn1qkbnr/1pp2ppp/p3p3/8/2BP2b1/2N1PN2/PP3PPP/R1BQK2R b KQkq - 1 6", + "hash": 10929657699477328777, + "name": "QGA: Alekhine, 4.e3 Bg4 5.Bxc4 e6 6.Nc3" + }, + "D22l": { + "eco": "D22l", + "fen": "rn1qkbnr/1pp2ppp/p3p3/8/2BP2b1/4PN1P/PP3PP1/RNBQK2R b KQkq - 0 6", + "hash": 9568236990302050466, + "name": "QGA: Alekhine, 4.e3 Bg4 5.Bxc4 e6 6.h3" + }, + "D23a": { + "eco": "D23a", + "fen": "rnbqkb1r/ppp1pppp/5n2/8/2pP4/5N2/PP2PPPP/RNBQKB1R w KQkq - 2 4", + "hash": 15621832290762619575, + "name": "QGA: 3.Nf3 Nf6" + }, + "D23b": { + "eco": "D23b", + "fen": "rnbqkb1r/ppp1pppp/5n2/8/2pP4/5NP1/PP2PP1P/RNBQKB1R b KQkq - 0 4", + "hash": 17594823715625247375, + "name": "QGA: 3.Nf3 Nf6 4.g3" + }, + "D23c": { + "eco": "D23c", + "fen": "rnbqkb1r/ppp1pppp/5n2/8/Q1pP4/5N2/PP2PPPP/RNB1KB1R b KQkq - 3 4", + "hash": 751917504558729420, + "name": "QGA: Mannheim Variation" + }, + "D23d": { + "eco": "D23d", + "fen": "r1bqkb1r/ppp1pppp/2n2n2/8/Q1pP4/5N2/PP2PPPP/RNB1KB1R w KQkq - 4 5", + "hash": 11638005256067919311, + "name": "QGA: Mannheim, 4...Nc6" + }, + "D23e": { + "eco": "D23e", + "fen": "r1bqkb1r/ppp1pppp/2n2n2/8/Q1pP4/2N2N2/PP2PPPP/R1B1KB1R b KQkq - 5 5", + "hash": 6491262372704694038, + "name": "QGA: Mannheim, 4...Nc6" + }, + "D23f": { + "eco": "D23f", + "fen": "r1bqkb1r/pppnpppp/5n2/8/Q1pP4/5N2/PP2PPPP/RNB1KB1R w KQkq - 4 5", + "hash": 4146728533164025088, + "name": "QGA: Mannheim, 4...Nbd7" + }, + "D23g": { + "eco": "D23g", + "fen": "r1bqkb1r/pppn1ppp/4pn2/8/Q1pP4/2N2N2/PP2PPPP/R1B1KB1R w KQkq - 0 6", + "hash": 13000987443950253963, + "name": "QGA: Mannheim, 4...Nbd7 5.Nc3 e6" + }, + "D23h": { + "eco": "D23h", + "fen": "r1bqkb1r/pppn1ppp/4pn2/8/Q1pPP3/2N2N2/PP3PPP/R1B1KB1R b KQkq e3 0 6", + "hash": 8100784384605899393, + "name": "QGA: Mannheim, 4...Nbd7 5.Nc3 e6 6.e4" + }, + "D23i": { + "eco": "D23i", + "fen": "rnbqkb1r/pp2pppp/2p2n2/8/Q1pP4/5N2/PP2PPPP/RNB1KB1R w KQkq - 0 5", + "hash": 10958864365652007799, + "name": "QGA: Mannheim, 4...c6" + }, + "D23j": { + "eco": "D23j", + "fen": "rn1qkb1r/pp2pppp/2p2n2/5b2/2QP4/5N2/PP2PPPP/RNB1KB1R w KQkq - 1 6", + "hash": 15874166673542277957, + "name": "QGA: Mannheim, 4...c6, 5.Qxc4 Bf5" + }, + "D23k": { + "eco": "D23k", + "fen": "rn1qkb1r/pp2pppp/2p2n2/5b2/2QP4/2N2N2/PP2PPPP/R1B1KB1R b KQkq - 2 6", + "hash": 2871967110219065756, + "name": "QGA: Mannheim, 4...c6, 5.Qxc4 Bf5 6.Nc3" + }, + "D23l": { + "eco": "D23l", + "fen": "rn1qkb1r/pp2pppp/2p2n2/5b2/2QP4/5NP1/PP2PP1P/RNB1KB1R b KQkq - 0 6", + "hash": 17341925369342800765, + "name": "QGA: Mannheim, 4...c6, 5.Qxc4 Bf5 6.g3" + }, + "D23m": { + "eco": "D23m", + "fen": "rn1qkb1r/pp3ppp/2p1pn2/5b2/2QP4/5NP1/PP2PP1P/RNB1KB1R w KQkq - 0 7", + "hash": 9717948915153740591, + "name": "QGA: Mannheim, 4...c6, 5.Qxc4 Bf5 6.g3 e6" + }, + "D23n": { + "eco": "D23n", + "fen": "r2qkb1r/pp1n1ppp/2p1pn2/5b2/2QP4/5NP1/PP2PPBP/RNB1K2R w KQkq - 2 8", + "hash": 58070896746993306, + "name": "QGA: Mannheim, 4...c6, 5.Qxc4 Bf5 6.g3 e6 7.Bg2 Nbd7" + }, + "D23o": { + "eco": "D23o", + "fen": "r2qk2r/pp1nbppp/2p1pn2/5b2/2QP4/2N2NP1/PP2PPBP/R1B2RK1 b kq - 5 9", + "hash": 10511506349779477442, + "name": "QGA: Mannheim, Main Line" + }, + "D23p": { + "eco": "D23p", + "fen": "r2q1rk1/pp1nbppp/2p1pn2/5b2/2QP4/2N2NP1/PP2PPBP/R1B2RK1 w - - 6 10", + "hash": 11189389961785215529, + "name": "QGA: Mannheim, Main Line, 9...O-O" + }, + "D23q": { + "eco": "D23q", + "fen": "r2q1rk1/pp1nbppp/2p1pn2/5bB1/2QP4/2N2NP1/PP2PPBP/R4RK1 b - - 7 10", + "hash": 6706675495230853601, + "name": "QGA: Mannheim, Main Line, 10.Bg5" + }, + "D23r": { + "eco": "D23r", + "fen": "r2q1rk1/pp1nbppp/2p1pn2/5b2/2QP4/2N1PNP1/PP3PBP/R1B2RK1 b - - 0 10", + "hash": 3919803280336093837, + "name": "QGA: Mannheim, Main Line, 10.e3" + }, + "D23s": { + "eco": "D23s", + "fen": "r2q1rk1/pp1nbppp/2p1p3/5b2/2QPn3/2N1PNP1/PP3PBP/R1B2RK1 w - - 1 11", + "hash": 895579500099768183, + "name": "QGA: Mannheim, Main Line, 10.e3 Ne4" + }, + "D23t": { + "eco": "D23t", + "fen": "r2q1rk1/pp1nbppp/2p1p3/5b2/3Pn3/2N1PNP1/PP2QPBP/R1B2RK1 b - - 2 11", + "hash": 602650054700993824, + "name": "QGA: Mannheim, Main Line, 10.e3 Ne4 11.Qe2" + }, + "D24a": { + "eco": "D24a", + "fen": "rnbqkb1r/ppp1pppp/5n2/8/2pP4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 3 4", + "hash": 2548189741011138670, + "name": "QGA: 4.Nc3" + }, + "D24b": { + "eco": "D24b", + "fen": "rnbqkb1r/ppp2ppp/4pn2/8/2pP4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 0 5", + "hash": 6137015549842024508, + "name": "QGA: 4.Nc3 e6" + }, + "D24c": { + "eco": "D24c", + "fen": "rnbqkb1r/ppp2ppp/4pn2/8/2pP4/2N1PN2/PP3PPP/R1BQKB1R b KQkq - 0 5", + "hash": 17872057463700611224, + "name": "QGA: 4.Nc3 e6 5.e3" + }, + "D24d": { + "eco": "D24d", + "fen": "rnbqkb1r/pp2pppp/5n2/2p5/2pP4/2N2N2/PP2PPPP/R1BQKB1R w KQkq c6 0 5", + "hash": 14208061600187052819, + "name": "QGA: 4.Nc3 c5" + }, + "D24e": { + "eco": "D24e", + "fen": "rnbqkb1r/pp2pppp/5n2/2pP4/2p5/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 0 5", + "hash": 9161852080303039822, + "name": "QGA: 4.Nc3 c5 5.d5" + }, + "D24f": { + "eco": "D24f", + "fen": "rnbqkb1r/pp3ppp/4pn2/2pP4/2p1P3/2N2N2/PP3PPP/R1BQKB1R b KQkq e3 0 6", + "hash": 14795891120831252502, + "name": "QGA: 4.Nc3 c5 5.d5 e6 6.e4" + }, + "D24g": { + "eco": "D24g", + "fen": "rnbqkb1r/pp1n1ppp/8/2ppP3/2p5/2N2N2/PP3PPP/R1BQKB1R w KQkq - 1 8", + "hash": 7673953490967144268, + "name": "QGA: 4.Nc3 c5 5.d5 e6 6.e4" + }, + "D24h": { + "eco": "D24h", + "fen": "rnbqkb1r/1pp1pppp/p4n2/8/2pP4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 0 5", + "hash": 17414026550745202866, + "name": "QGA: 4.Nc3 a6" + }, + "D24i": { + "eco": "D24i", + "fen": "rnbqkb1r/1pp1pppp/p4n2/8/P1pP4/2N2N2/1P2PPPP/R1BQKB1R b KQkq a3 0 5", + "hash": 11124579434146846076, + "name": "QGA: 4.Nc3 a6 5.a4" + }, + "D24j": { + "eco": "D24j", + "fen": "r1bqkb1r/1pp1pppp/p1n2n2/8/P1pP4/2N2N2/1P2PPPP/R1BQKB1R w KQkq - 1 6", + "hash": 3571260960492613759, + "name": "QGA: 4.Nc3 a6 5.a4 Nc6" + }, + "D24k": { + "eco": "D24k", + "fen": "rnbqkb1r/1pp1pppp/p4n2/8/2pPP3/2N2N2/PP3PPP/R1BQKB1R b KQkq e3 0 5", + "hash": 3867468011839634872, + "name": "QGA: Bogoljubow" + }, + "D24l": { + "eco": "D24l", + "fen": "rnbqkb1r/2p1pppp/p7/1p1nP3/P1pP4/2N2N2/1P3PPP/R1BQKB1R b KQkq a3 0 7", + "hash": 11171421145083741850, + "name": "QGA: Bogoljubow, 7.a4" + }, + "D24m": { + "eco": "D24m", + "fen": "rnbqkb1r/2p2ppp/p3p3/1p1nP3/P1pP4/2N2N2/1P3PPP/R1BQKB1R w KQkq - 0 8", + "hash": 17113448127423289032, + "name": "QGA: Bogoljubow, 7.a4 e6" + }, + "D24n": { + "eco": "D24n", + "fen": "rnbqkb1r/4pppp/p1p5/1p1nP3/P1pP4/2N2N2/1P3PPP/R1BQKB1R w KQkq - 0 8", + "hash": 680661163431810337, + "name": "QGA: Bogoljubow, 7.a4 c6" + }, + "D24o": { + "eco": "D24o", + "fen": "rn1qkb1r/1bp1pppp/p7/1p1nP3/P1pP4/2N2N2/1P3PPP/R1BQKB1R w KQkq - 1 8", + "hash": 3141424377528297729, + "name": "QGA: Bogoljubow, 7.a4 Bb7" + }, + "D24p": { + "eco": "D24p", + "fen": "rnbqkb1r/2p1pppp/p7/1p2P3/PnpP4/2N2N2/1P3PPP/R1BQKB1R w KQkq - 1 8", + "hash": 2639560561901305377, + "name": "QGA: Bogoljubow, 7.a4 Nb4" + }, + "D24q": { + "eco": "D24q", + "fen": "rnbqkb1r/2p1pppp/p7/1p2P3/P1pP4/2n2N2/1P3PPP/R1BQKB1R w KQkq - 0 8", + "hash": 15535715189310884056, + "name": "QGA: Bogoljubow, 7.a4 Nxc3" + }, + "D24r": { + "eco": "D24r", + "fen": "rn1qkb1r/1bp1pppp/p7/1p2P3/P1pP4/2P2N2/5PPP/R1BQKB1R w KQkq - 1 9", + "hash": 16499791549547110234, + "name": "QGA: Bogoljubow, 7.a4 Nxc3" + }, + "D24s": { + "eco": "D24s", + "fen": "rnb1kb1r/2p1pppp/p7/1p1qP3/P1pP4/2P2N2/5PPP/R1BQKB1R w KQkq - 1 9", + "hash": 10068136597839734242, + "name": "QGA: Bogoljubow, 7.a4 Nxc3" + }, + "D24t": { + "eco": "D24t", + "fen": "rn2kb1r/1bp1pppp/p7/1p1qP3/P1pP4/2P2NP1/5P1P/R1BQKB1R w KQkq - 1 10", + "hash": 1715808931539685953, + "name": "QGA: Bogoljubow, 7.a4 Nxc3" + }, + "D25a": { + "eco": "D25a", + "fen": "rnbqkb1r/ppp1pppp/5n2/8/2pP4/4PN2/PP3PPP/RNBQKB1R b KQkq - 0 4", + "hash": 8495661371629662739, + "name": "QGA: 4.e3" + }, + "D25b": { + "eco": "D25b", + "fen": "rnbqkb1r/pp2pppp/5n2/2p5/2pP4/4PN2/PP3PPP/RNBQKB1R w KQkq c6 0 5", + "hash": 10635099541545253230, + "name": "QGA: 4.e3 c5" + }, + "D25c": { + "eco": "D25c", + "fen": "rnbqkb1r/1pp1pppp/p4n2/8/2pP4/4PN2/PP3PPP/RNBQKB1R w KQkq - 0 5", + "hash": 12038498878683515599, + "name": "QGA: 4.e3 a6" + }, + "D25d": { + "eco": "D25d", + "fen": "rnbqkb1r/ppp1pp1p/5np1/8/2pP4/4PN2/PP3PPP/RNBQKB1R w KQkq - 0 5", + "hash": 11264334285667164248, + "name": "QGA: Smyslov Variation" + }, + "D25e": { + "eco": "D25e", + "fen": "rnbqk2r/ppp1ppbp/5np1/8/2BP4/4PN2/PP3PPP/RNBQ1RK1 b kq - 2 6", + "hash": 13184852762796602451, + "name": "QGA: Smyslov, 5.Bxc4 Bg7 6.O-O" + }, + "D25f": { + "eco": "D25f", + "fen": "rn1qkb1r/ppp1pppp/4bn2/8/2pP4/4PN2/PP3PPP/RNBQKB1R w KQkq - 1 5", + "hash": 2404418440598849819, + "name": "QGA: Flohr Variation" + }, + "D25g": { + "eco": "D25g", + "fen": "rn1qkb1r/ppp1pppp/5n2/8/2pP2b1/4PN2/PP3PPP/RNBQKB1R w KQkq - 1 5", + "hash": 8589891930836139257, + "name": "QGA: Janowski-Larsen Variation" + }, + "D25h": { + "eco": "D25h", + "fen": "rn1qkb1r/ppp2ppp/4pn2/8/2BP2b1/4PN2/PP3PPP/RNBQK2R w KQkq - 0 6", + "hash": 16511089456641320986, + "name": "QGA: Janowski-Larsen, 5.Bxc4 e6" + }, + "D25i": { + "eco": "D25i", + "fen": "rn1qkb1r/ppp2ppp/4pn2/8/2BP2b1/1Q2PN2/PP3PPP/RNB1K2R b KQkq - 1 6", + "hash": 16130363180386222332, + "name": "QGA: Janowski-Larsen, 6.Qb3" + }, + "D25j": { + "eco": "D25j", + "fen": "rn1qkb1r/ppp2ppp/4pn2/8/2BP2b1/4PN2/PP3PPP/RNBQ1RK1 b kq - 1 6", + "hash": 11193229950238749450, + "name": "QGA: Janowski-Larsen, 6.O-O" + }, + "D25k": { + "eco": "D25k", + "fen": "rn1qkb1r/ppp2ppp/4pn2/8/2BP2b1/2N1PN2/PP3PPP/R1BQK2R b KQkq - 1 6", + "hash": 2212451330665949891, + "name": "QGA: Janowski-Larsen, 6.Nc3" + }, + "D25l": { + "eco": "D25l", + "fen": "rn1qkb1r/ppp2ppp/4pn2/8/2BP2b1/4PN1P/PP3PP1/RNBQK2R b KQkq - 0 6", + "hash": 995561459329950184, + "name": "QGA: Janowski-Larsen, 6.h3" + }, + "D25m": { + "eco": "D25m", + "fen": "rn1qkb1r/ppp2ppp/4pn2/7b/2BP4/2N1PN1P/PP3PP1/R1BQK2R b KQkq - 2 7", + "hash": 10444206228807541380, + "name": "QGA: Janowski-Larsen, 6.h3 Bh5 7.Nc3" + }, + "D25n": { + "eco": "D25n", + "fen": "rn1qkb1r/1pp2ppp/p3pn2/7b/2BP4/2N1PN1P/PP3PP1/R1BQK2R w KQkq - 0 8", + "hash": 4757692131686881880, + "name": "QGA: Janowski-Larsen, 6.h3 Bh5 7.Nc3 a6" + }, + "D25o": { + "eco": "D25o", + "fen": "rn1qkb1r/1pp2ppp/p3pn2/7b/2BP2P1/2N1PN1P/PP3P2/R1BQK2R b KQkq g3 0 8", + "hash": 16234269529195935557, + "name": "QGA: Janowski-Larsen, 6.h3 Bh5 7.Nc3 a6 8.g4" + }, + "D25p": { + "eco": "D25p", + "fen": "r2qkb1r/pppn1ppp/4pn2/7b/2BP4/2N1PN1P/PP3PP1/R1BQK2R w KQkq - 3 8", + "hash": 11750521891768897352, + "name": "QGA: Janowski-Larsen, 6.h3 Bh5 7.Nc3 Nbd7" + }, + "D25q": { + "eco": "D25q", + "fen": "r2qkb1r/pppn1ppp/4pn2/7b/2BP4/2N1PN1P/PP3PP1/R1BQ1RK1 b kq - 4 8", + "hash": 15953797527961457752, + "name": "QGA: Janowski-Larsen, 6.h3 Bh5 7.Nc3 Nbd7 8.O-O" + }, + "D25r": { + "eco": "D25r", + "fen": "r2qk2r/pppn1ppp/3bpn2/7b/2BP4/2N1PN1P/PP3PP1/R1BQ1RK1 w kq - 5 9", + "hash": 8736749982926701948, + "name": "QGA: Janowski-Larsen, 6.h3 Bh5 7.Nc3 Nbd7 8.O-O Bd6" + }, + "D25s": { + "eco": "D25s", + "fen": "r2qk2r/pppn1ppp/3bpn2/7b/2BPP3/2N2N1P/PP3PP1/R1BQ1RK1 b kq - 0 9", + "hash": 16772322561614132699, + "name": "QGA: Janowski-Larsen, 6.h3 Bh5 7.Nc3 Nbd7 8.O-O Bd6 9.e4" + }, + "D26a": { + "eco": "D26a", + "fen": "rnbqkb1r/ppp2ppp/4pn2/8/2pP4/4PN2/PP3PPP/RNBQKB1R w KQkq - 0 5", + "hash": 257080320327475777, + "name": "QGA: 4.e3 e6" + }, + "D26b": { + "eco": "D26b", + "fen": "rnbqkb1r/ppp2ppp/4pn2/8/2BP4/4PN2/PP3PPP/RNBQK2R b KQkq - 0 5", + "hash": 16713111464990779120, + "name": "QGA: 4.e3 e6 5.Bxc4" + }, + "D26c": { + "eco": "D26c", + "fen": "rnbqkb1r/1pp2ppp/p3pn2/8/2BP4/4PN2/PP3PPP/RNBQK2R w KQkq - 0 6", + "hash": 3821048785839611436, + "name": "QGA: 4.e3 e6 5.Bxc4 a6" + }, + "D26d": { + "eco": "D26d", + "fen": "rnbqkb1r/1pp2ppp/p3pn2/8/2BP4/4PN2/PP3PPP/RNBQ1RK1 b kq - 1 6", + "hash": 5436527084201280828, + "name": "QGA: 4.e3 e6 5.Bxc4 a6 6.O-O" + }, + "D26e": { + "eco": "D26e", + "fen": "rnbqkb1r/2p2ppp/p3pn2/1p6/2BP4/4PN2/PP3PPP/RNBQ1RK1 w kq b6 0 7", + "hash": 3131697745664292865, + "name": "QGA: 4.e3 e6 5.Bxc4 a6 6.O-O b5" + }, + "D26f": { + "eco": "D26f", + "fen": "rnbqkb1r/pp3ppp/4pn2/2p5/2BP4/4PN2/PP3PPP/RNBQK2R w KQkq c6 0 6", + "hash": 108429426421640589, + "name": "QGA: Classical Variation" + }, + "D26g": { + "eco": "D26g", + "fen": "rnbqkb1r/pp3ppp/4pn2/2P5/2B5/4PN2/PP3PPP/RNBQK2R b KQkq - 0 6", + "hash": 9106864682837474017, + "name": "QGA: Classical, Early Queenswap" + }, + "D26h": { + "eco": "D26h", + "fen": "rnbqkb1r/pp3ppp/4pn2/2p5/2BP4/2N1PN2/PP3PPP/R1BQK2R b KQkq - 1 6", + "hash": 18020643047929098068, + "name": "QGA: Classical, 6.Nc3" + }, + "D26i": { + "eco": "D26i", + "fen": "rnbqkb1r/1p3ppp/p3pn2/2p5/2BP4/2N1PN2/PP3PPP/R1BQK2R w KQkq - 0 7", + "hash": 2945880461606246280, + "name": "QGA: Classical, 6.Nc3 a6" + }, + "D26j": { + "eco": "D26j", + "fen": "rnbqkb1r/pp3ppp/4pn2/2p5/2BP4/4PN2/PP2QPPP/RNB1K2R b KQkq - 1 6", + "hash": 10918899091300414985, + "name": "QGA: Classical, Furman Variation" + }, + "D26k": { + "eco": "D26k", + "fen": "rnbqkb1r/pp3ppp/4pn2/8/2Bp4/4PN2/PP2QPPP/RNB1K2R w KQkq - 0 7", + "hash": 14454587683449577423, + "name": "QGA: Classical, Furman, 6...cxd4" + }, + "D26l": { + "eco": "D26l", + "fen": "rnbqkb1r/1p3ppp/p3pn2/2p5/2BP4/4PN2/PP2QPPP/RNB1K2R w KQkq - 0 7", + "hash": 5003579641691836117, + "name": "QGA: Classical, Furman, 6...a6" + }, + "D26m": { + "eco": "D26m", + "fen": "rnbqk2r/1p3ppp/p3pn2/2b5/2B5/4PN2/PP2QPPP/RNB2RK1 b kq - 1 8", + "hash": 15056953193809804385, + "name": "QGA: Classical, Furman, 6...a6 7.dxc5 Bxc5 8.O-O" + }, + "D26n": { + "eco": "D26n", + "fen": "r1bqk2r/1p3ppp/p1n1pn2/2b5/2B5/4PN2/PP2QPPP/RNB2RK1 w kq - 2 9", + "hash": 8870072311402125666, + "name": "QGA: Classical, Furman, 6...a6 7.dxc5 Bxc5 8.O-O Nc6" + }, + "D26o": { + "eco": "D26o", + "fen": "rnbqk2r/5ppp/p3pn2/1pb5/2B5/4PN2/PP2QPPP/RNB2RK1 w kq b6 0 9", + "hash": 12750078887692255580, + "name": "QGA: Classical, Furman, 6...a6 7.dxc5 Bxc5 8.O-O b5" + }, + "D26p": { + "eco": "D26p", + "fen": "rnbqkb1r/pp3ppp/4pn2/2p5/2BP4/4PN2/PP3PPP/RNBQ1RK1 b kq - 1 6", + "hash": 9220078764816103069, + "name": "QGA: Classical, 6.O-O" + }, + "D26q": { + "eco": "D26q", + "fen": "rnbqkb1r/pp3ppp/4pn2/8/2Bp4/4PN2/PP3PPP/RNBQ1RK1 w kq - 0 7", + "hash": 2371979716560691035, + "name": "QGA: Classical, Steinitz Variation" + }, + "D26r": { + "eco": "D26r", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/2p5/2BP4/4PN2/PP3PPP/RNBQ1RK1 w kq - 2 7", + "hash": 15283409724078150558, + "name": "QGA: Classical, 6.O-O Nc6" + }, + "D26s": { + "eco": "D26s", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/2p5/2BP4/2N1PN2/PP3PPP/R1BQ1RK1 b kq - 3 7", + "hash": 3426830888838582599, + "name": "QGA: Classical, 6.O-O Nc6 7.Nc3" + }, + "D26t": { + "eco": "D26t", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/2p5/2BP4/4PN2/PP2QPPP/RNB2RK1 b kq - 3 7", + "hash": 4764556656353314842, + "name": "QGA: Classical, 6.O-O Nc6 7.Qe2" + }, + "D27a": { + "eco": "D27a", + "fen": "rnbqkb1r/1p3ppp/p3pn2/2p5/2BP4/4PN2/PP3PPP/RNBQ1RK1 w kq - 0 7", + "hash": 12467016253499543105, + "name": "QGA: Classical, 6...a6" + }, + "D27b": { + "eco": "D27b", + "fen": "rnbqkb1r/1p3ppp/p3pn2/2p5/2BP4/1P2PN2/P4PPP/RNBQ1RK1 b kq - 0 7", + "hash": 2424587440608109868, + "name": "QGA: Classical, 6...a6 7.b3" + }, + "D27c": { + "eco": "D27c", + "fen": "rnbqkb1r/1p3ppp/p3pn2/2p5/2BP4/2N1PN2/PP3PPP/R1BQ1RK1 b kq - 1 7", + "hash": 6238793458153032856, + "name": "QGA: Classical, 6...a6 7.Nc3" + }, + "D27d": { + "eco": "D27d", + "fen": "rnbqkb1r/1p3ppp/p3pn2/2p5/3P4/3BPN2/PP3PPP/RNBQ1RK1 b kq - 1 7", + "hash": 7163975874586877853, + "name": "QGA: Classical, 6...a6 7.Bd3" + }, + "D27e": { + "eco": "D27e", + "fen": "r1bqkb1r/1p1n1ppp/p3pn2/2p5/3P4/3BPN2/PP3PPP/RNBQ1RK1 w kq - 2 8", + "hash": 5803157808925962833, + "name": "QGA: Classical, 6...a6 7.Bd3 Nbd7" + }, + "D27f": { + "eco": "D27f", + "fen": "rnbqkb1r/1p3ppp/p3pn2/2p5/3P4/1B2PN2/PP3PPP/RNBQ1RK1 b kq - 1 7", + "hash": 7207920048126221989, + "name": "QGA: Classical, 6...a6 7.Bb3" + }, + "D27g": { + "eco": "D27g", + "fen": "rnbqkb1r/5ppp/p3pn2/1pp5/3P4/1B2PN2/PP3PPP/RNBQ1RK1 w kq b6 0 8", + "hash": 289293662655308696, + "name": "QGA: Classical, 6...a6 7.Bb3 b5" + }, + "D27h": { + "eco": "D27h", + "fen": "rnbqkb1r/1p3ppp/p3pn2/8/3p4/1B2PN2/PP3PPP/RNBQ1RK1 w kq - 0 8", + "hash": 4258460405905405795, + "name": "QGA: Classical, 6...a6 7.Bb3 cxd4" + }, + "D27i": { + "eco": "D27i", + "fen": "r1bqkb1r/1p3ppp/p1n1pn2/2p5/3P4/1B2PN2/PP3PPP/RNBQ1RK1 w kq - 2 8", + "hash": 14981916827614673830, + "name": "QGA: Classical, 6...a6 7.Bb3 Nc6" + }, + "D27j": { + "eco": "D27j", + "fen": "r1bqkb1r/1p3ppp/p1n1pn2/2p5/3P4/1BN1PN2/PP3PPP/R1BQ1RK1 b kq - 3 8", + "hash": 3782299490653436287, + "name": "QGA: Classical, 6...a6 7.Bb3 Nc6 8.Nc3" + }, + "D27k": { + "eco": "D27k", + "fen": "rnbqkb1r/1p3ppp/p3pn2/2p5/2BPP3/5N2/PP3PPP/RNBQ1RK1 b kq - 0 7", + "hash": 4395465316795432678, + "name": "QGA: Classical, Geller Variation" + }, + "D27l": { + "eco": "D27l", + "fen": "rnbqkb1r/1p3ppp/p3pn2/2P5/2B5/4PN2/PP3PPP/RNBQ1RK1 b kq - 0 7", + "hash": 15195320971692136749, + "name": "QGA: Classical, Spassky Variation" + }, + "D27m": { + "eco": "D27m", + "fen": "rnb1kb1r/1p3ppp/p3pn2/2P5/2B5/4PN2/PP3PPP/RNBq1RK1 w kq - 0 8", + "hash": 2735034628716441486, + "name": "QGA: Classical, Spassky, 7...Qxd1" + }, + "D27n": { + "eco": "D27n", + "fen": "rnb1k2r/1p3ppp/p3pn2/2b5/2B5/4PN2/PP1N1PPP/R1BR2K1 b kq - 1 9", + "hash": 11283000508224396393, + "name": "QGA: Classical, Spassky, 9.Nbd2" + }, + "D27o": { + "eco": "D27o", + "fen": "rnb1k2r/1p3ppp/p3pn2/2b5/2B5/1P2PN2/P4PPP/RNBR2K1 b kq - 0 9", + "hash": 5286554267987255092, + "name": "QGA: Classical, Spassky, 9.b3" + }, + "D27p": { + "eco": "D27p", + "fen": "rnbqkb1r/1p3ppp/p3pn2/2p5/P1BP4/4PN2/1P3PPP/RNBQ1RK1 b kq a3 0 7", + "hash": 14324476892240894863, + "name": "QGA: Classical, Rubinstein Variation" + }, + "D27q": { + "eco": "D27q", + "fen": "r1bqkb1r/1p3ppp/p1n1pn2/2p5/P1BP4/2N1PN2/1P3PPP/R1BQ1RK1 b kq - 2 8", + "hash": 10858182644374207573, + "name": "QGA: Classical, Rubinstein, 8.Nc3" + }, + "D27r": { + "eco": "D27r", + "fen": "r1bqk2r/1p2bppp/p1n1pn2/2p5/P1BP4/2N1PN2/1P3PPP/R1BQ1RK1 w kq - 3 9", + "hash": 9402513790435053764, + "name": "QGA: Classical, Rubinstein, 8.Nc3 Be7" + }, + "D27s": { + "eco": "D27s", + "fen": "r1bqk2r/1p2bppp/p1n1pn2/2p5/P1BP4/2N1PN2/1P2QPPP/R1B2RK1 b kq - 4 9", + "hash": 1475772596452821824, + "name": "QGA: Classical, Rubinstein, 8.Nc3 Be7 9.Qe2" + }, + "D27t": { + "eco": "D27t", + "fen": "r1bqkb1r/1p3ppp/p1n1pn2/2p5/P1BP4/4PN2/1P2QPPP/RNB2RK1 b kq - 2 8", + "hash": 18095907602320499976, + "name": "QGA: Classical, Rubinstein, 8.Qe2" + }, + "D27u": { + "eco": "D27u", + "fen": "r1b1kb1r/1pq2ppp/p1n1pn2/2p5/P1BP4/4PN2/1P2QPPP/RNB2RK1 w kq - 3 9", + "hash": 18248210996635232777, + "name": "QGA: Classical, Rubinstein, 8.Qe2 Qc7" + }, + "D27v": { + "eco": "D27v", + "fen": "r1bqkb1r/1p3ppp/p1n1pn2/8/P1Bp4/4PN2/1P2QPPP/RNB2RK1 w kq - 0 9", + "hash": 11835229077662256334, + "name": "QGA: Classical, Rubinstein, 8.Qe2 cxd4" + }, + "D27w": { + "eco": "D27w", + "fen": "r1bq1rk1/1p2bppp/p1n1p3/3n4/P1BP4/2N2N2/1P2QPPP/R1BR2K1 w - - 3 12", + "hash": 9110266852942037957, + "name": "QGA: Classical, Rubinstein, 8.Qe2 cxd4, 11.Nc3 Nd5" + }, + "D28a": { + "eco": "D28a", + "fen": "rnbqkb1r/1p3ppp/p3pn2/2p5/2BP4/4PN2/PP2QPPP/RNB2RK1 b kq - 1 7", + "hash": 4252860505818453445, + "name": "QGA: Classical, 7.Qe2" + }, + "D28b": { + "eco": "D28b", + "fen": "rnbqkb1r/1p3ppp/p3pn2/8/2Bp4/4PN2/PP2QPPP/RNB2RK1 w kq - 0 8", + "hash": 7213508957391600643, + "name": "QGA: Classical, 7.Qe2 cxd4" + }, + "D28c": { + "eco": "D28c", + "fen": "r1bqkb1r/1p3ppp/p1n1pn2/2p5/2BP4/4PN2/PP2QPPP/RNB2RK1 w kq - 2 8", + "hash": 10441854099296710854, + "name": "QGA: Classical, 7.Qe2 Nc6" + }, + "D28d": { + "eco": "D28d", + "fen": "rnbqkb1r/5ppp/p3pn2/1pp5/2BP4/4PN2/PP2QPPP/RNB2RK1 w kq b6 0 8", + "hash": 6557619347084634360, + "name": "QGA: Classical, 7.Qe2 b5" + }, + "D28e": { + "eco": "D28e", + "fen": "rnbqkb1r/5ppp/p3pn2/1pp5/3P4/3BPN2/PP2QPPP/RNB2RK1 b kq - 1 8", + "hash": 10766254228810889508, + "name": "QGA: Classical, 7.Qe2 b5 8.Bd3" + }, + "D28f": { + "eco": "D28f", + "fen": "rnbqkb1r/5ppp/p3pn2/1p6/3p4/3BPN2/PP2QPPP/RNB2RK1 w kq - 0 9", + "hash": 14589359421720465634, + "name": "QGA: Classical, 7.Qe2 b5 8.Bd3 cxd4" + }, + "D28g": { + "eco": "D28g", + "fen": "rnbqkb1r/5ppp/p3pn2/1p6/3P4/3B1N2/PP2QPPP/RNB2RK1 b kq - 0 9", + "hash": 15917899846628695024, + "name": "QGA: Classical, 7.Qe2 b5 8.Bd3 cxd4 9.exd4" + }, + "D28h": { + "eco": "D28h", + "fen": "rnbqkb1r/5ppp/p3pn2/1pp5/3P4/1B2PN2/PP2QPPP/RNB2RK1 b kq - 1 8", + "hash": 10521895474881050652, + "name": "QGA: Classical, 7.Qe2 b5 8.Bb3" + }, + "D28i": { + "eco": "D28i", + "fen": "r1bqkb1r/5ppp/p1n1pn2/1pp5/3P4/1B2PN2/PP2QPPP/RNB2RK1 w kq - 2 9", + "hash": 4172744268953328927, + "name": "QGA: Classical, 7.Qe2 b5 8.Bb3 Nc6" + }, + "D28j": { + "eco": "D28j", + "fen": "r1bqkb1r/5ppp/p1n1pn2/1pp5/3P4/1B2PN2/PP2QPPP/RNBR2K1 b kq - 3 9", + "hash": 15333243839321697040, + "name": "QGA: Classical, 7.Qe2 b5 8.Bb3 Nc6 9.Rd1" + }, + "D28k": { + "eco": "D28k", + "fen": "r1bqkb1r/5ppp/p1n1pn2/1p6/2pP4/1B2PN2/PP2QPPP/RNBR2K1 w kq - 0 10", + "hash": 924674341094539677, + "name": "QGA: Classical, 7.Qe2 b5 8.Bb3 Nc6 9.Rd1 c4" + }, + "D28l": { + "eco": "D28l", + "fen": "r1bqkb1r/5ppp/p1n1pn2/1pp5/3P4/1BN1PN2/PP2QPPP/R1B2RK1 b kq - 3 9", + "hash": 14015070576584957894, + "name": "QGA: Classical, 7.Qe2 b5 8.Bb3 Nc6 9.Nc3" + }, + "D28m": { + "eco": "D28m", + "fen": "r2qkb1r/1b3ppp/p1n1pn2/1pp5/3P4/1BN1PN2/PP2QPPP/R1B2RK1 w kq - 4 10", + "hash": 8282050356401320029, + "name": "QGA: Classical, 7.Qe2 b5 8.Bb3 Nc6 9.Nc3 Bb7" + }, + "D28n": { + "eco": "D28n", + "fen": "r1bqk2r/4bppp/p1n1pn2/1pp5/3P4/1BN1PN2/PP2QPPP/R1B2RK1 w kq - 4 10", + "hash": 15470985676313047895, + "name": "QGA: Classical, 7.Qe2 b5 8.Bb3 Nc6 9.Nc3 Be7" + }, + "D29a": { + "eco": "D29a", + "fen": "rn1qkb1r/1b3ppp/p3pn2/1pp5/3P4/1B2PN2/PP2QPPP/RNB2RK1 w kq - 2 9", + "hash": 2491898705712617351, + "name": "QGA: Classical, 8...Bb7" + }, + "D29b": { + "eco": "D29b", + "fen": "rn1qkb1r/1b3ppp/p3pn2/1pp5/3P4/1BN1PN2/PP2QPPP/R1B2RK1 b kq - 3 9", + "hash": 15637087284470420830, + "name": "QGA: Classical, 8...Bb7 9.Nc3" + }, + "D29c": { + "eco": "D29c", + "fen": "rn1qkb1r/1b3ppp/p3pn2/1pp5/P2P4/1B2PN2/1P2QPPP/RNB2RK1 b kq a3 0 9", + "hash": 5286238910325867081, + "name": "QGA: Classical, 8...Bb7 9.a4" + }, + "D29d": { + "eco": "D29d", + "fen": "rn1qkb1r/1b3ppp/p3pn2/2p5/Pp1P4/1B2PN2/1P2QPPP/RNB2RK1 w kq - 0 10", + "hash": 2923205152742251274, + "name": "QGA: Classical, 8...Bb7 9.a4 b4" + }, + "D29e": { + "eco": "D29e", + "fen": "r2qkb1r/1b1n1ppp/p3pn2/1pp5/P2P4/1B2PN2/1P2QPPP/RNB2RK1 w kq - 1 10", + "hash": 8844793802934366085, + "name": "QGA: Classical, 8...Bb7 9.a4 Nbd7" + }, + "D29f": { + "eco": "D29f", + "fen": "rn1qkb1r/1b3ppp/p3pn2/1pp5/3P4/1B2PN2/PP2QPPP/RNBR2K1 b kq - 3 9", + "hash": 14967485135777456520, + "name": "QGA: Classical, 8...Bb7 9.Rd1" + }, + "D29g": { + "eco": "D29g", + "fen": "r2qkb1r/1b1n1ppp/p3pn2/1pp5/3P4/1B2PN2/PP2QPPP/RNBR2K1 w kq - 4 10", + "hash": 18182240281948884036, + "name": "QGA: Classical, 8...Bb7 9.Rd1 Nbd7" + }, + "D29h": { + "eco": "D29h", + "fen": "r2qkb1r/1b1n1ppp/p3pn2/1pp5/P2P4/1B2PN2/1P2QPPP/RNBR2K1 b kq a3 0 10", + "hash": 10924947505243183498, + "name": "QGA: Classical, 8...Bb7 9.Rd1 Nbd7 10.a4" + }, + "D29i": { + "eco": "D29i", + "fen": "r2qkb1r/1b1n1ppp/p3pn2/2p5/Pp1P4/1B2PN2/1P2QPPP/RNBR2K1 w kq - 0 11", + "hash": 17748690534997033161, + "name": "QGA: Classical, 8...Bb7 9.Rd1 Nbd7 10.a4 b4" + }, + "D29j": { + "eco": "D29j", + "fen": "r2qkb1r/1b1n1ppp/p3pn2/1pp5/3P4/1BN1PN2/PP2QPPP/R1BR2K1 b kq - 5 10", + "hash": 559382661642981021, + "name": "QGA: Classical, 8...Bb7 9.Rd1 Nbd7 10.Nc3" + }, + "D29k": { + "eco": "D29k", + "fen": "r2qk2r/1b1n1ppp/p2bpn2/1pp5/3P4/1BN1PN2/PP2QPPP/R1BR2K1 w kq - 6 11", + "hash": 11789084705052483513, + "name": "QGA: Classical, Smyslov Variation" + }, + "D29l": { + "eco": "D29l", + "fen": "r3kb1r/1bqn1ppp/p3pn2/1pp5/3P4/1BN1PN2/PP2QPPP/R1BR2K1 w kq - 6 11", + "hash": 134101593241239964, + "name": "QGA: Classical, 8...Bb7 9.Rd1 Nbd7 10.Nc3 Qc7" + }, + "D29m": { + "eco": "D29m", + "fen": "rq2kb1r/1b1n1ppp/p3pn2/1pp5/3P4/1BN1PN2/PP2QPPP/R1BR2K1 w kq - 6 11", + "hash": 1299894080717606458, + "name": "QGA: Classical, 8...Bb7 9.Rd1 Nbd7 10.Nc3 Qb8" + }, + "D29n": { + "eco": "D29n", + "fen": "r3kb1r/1b1n1ppp/pq2pn2/1pp5/3P4/1BN1PN2/PP2QPPP/R1BR2K1 w kq - 6 11", + "hash": 13852137623607695431, + "name": "QGA: Classical, 8...Bb7 9.Rd1 Nbd7 10.Nc3 Qb6" + }, + "D30a": { + "eco": "D30a", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/2PP4/8/PP2PPPP/RNBQKBNR w KQkq - 0 3", + "hash": 18172295748331349165, + "name": "Queen's Gambit Declined (QGD)" + }, + "D30b": { + "eco": "D30b", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/2PPP3/8/PP3PPP/RNBQKBNR b KQkq e3 0 3", + "hash": 4050983446022003111, + "name": "Diemer-Duhm Gambit (DDG)" + }, + "D30c": { + "eco": "D30c", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/2PP4/6P1/PP2PP1P/RNBQKBNR b KQkq - 0 3", + "hash": 15048300907227151509, + "name": "QGD: 3.g3" + }, + "D30d": { + "eco": "D30d", + "fen": "rnbqkbnr/ppp2ppp/4p3/3P4/3P4/8/PP2PPPP/RNBQKBNR b KQkq - 0 3", + "hash": 17445376496157831344, + "name": "QGD: 3.cxd5" + }, + "D30e": { + "eco": "D30e", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/2PP1B2/8/PP2PPPP/RN1QKBNR b KQkq - 1 3", + "hash": 2838411473590505166, + "name": "QGD: 3.Bf4" + }, + "D30f": { + "eco": "D30f", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/2PP4/5N2/PP2PPPP/RNBQKB1R b KQkq - 1 3", + "hash": 2833918952001226128, + "name": "QGD: 3.Nf3" + }, + "D30g": { + "eco": "D30g", + "fen": "r1bqkbnr/pppn1ppp/4p3/3p4/2PP4/5N2/PP2PPPP/RNBQKB1R w KQkq - 2 4", + "hash": 1492768558427351132, + "name": "QGD: 3.Nf3 Nbd7 (Westphalia)" + }, + "D30h": { + "eco": "D30h", + "fen": "rnbqkbnr/pp3ppp/4p3/2pp4/2PP4/5N2/PP2PPPP/RNBQKB1R w KQkq c6 0 4", + "hash": 13917754435095809773, + "name": "QGD: Tarrasch without Nc3" + }, + "D30i": { + "eco": "D30i", + "fen": "rnbqkbnr/pp3ppp/8/2pp4/3P4/5NP1/PP2PP1P/RNBQKB1R b KQkq - 0 5", + "hash": 15923939533377028611, + "name": "QGD: Tarrasch without Nc3: 5.g3" + }, + "D30j": { + "eco": "D30j", + "fen": "rnbqkbnr/pp3ppp/2p1p3/3p4/2PP4/5N2/PP2PPPP/RNBQKB1R w KQkq - 0 4", + "hash": 13055644683060319787, + "name": "QGD: 3.Nf3 c6" + }, + "D30k": { + "eco": "D30k", + "fen": "rnbqkbnr/pp3ppp/2p1p3/3p4/2PP4/4PN2/PP3PPP/RNBQKB1R b KQkq - 0 4", + "hash": 1730425800749522575, + "name": "QGD: 3.Nf3 c6 4.e3" + }, + "D30l": { + "eco": "D30l", + "fen": "rnbqkbnr/pp3ppp/2p1p3/3p4/2PP4/5N2/PP1NPPPP/R1BQKB1R b KQkq - 1 4", + "hash": 17023694313038200347, + "name": "QGD: 3.Nf3 c6 4.Nbd2" + }, + "D30m": { + "eco": "D30m", + "fen": "rnbqkbnr/pp3ppp/2p1p3/3p4/2PP4/5N2/PPQ1PPPP/RNB1KB1R b KQkq - 1 4", + "hash": 303858524340955727, + "name": "QGD: 3.Nf3 c6 4.Qc2" + }, + "D30n": { + "eco": "D30n", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/3p4/2PP4/5N2/PPQ1PPPP/RNB1KB1R w KQkq - 2 5", + "hash": 6906746402197171161, + "name": "QGD: 3.Nf3 c6 4.Qc2 Nf6" + }, + "D30o": { + "eco": "D30o", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/3p2B1/2PP4/5N2/PPQ1PPPP/RN2KB1R b KQkq - 3 5", + "hash": 11061938499134533649, + "name": "QGD: 3.Nf3 c6 4.Qc2 Nf6 5.Bg5" + }, + "D30p": { + "eco": "D30p", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/3p4/2PP4/5NP1/PPQ1PP1P/RNB1KB1R b KQkq - 0 5", + "hash": 8304367248051319777, + "name": "QGD: 3.Nf3 c6 4.Qc2 Nf6 5.g3" + }, + "D30q": { + "eco": "D30q", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/2PP4/5N2/PP2PPPP/RNBQKB1R w KQkq - 2 4", + "hash": 8987547339916674054, + "name": "QGD: 3.Nf3 Nf6" + }, + "D30r": { + "eco": "D30r", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/2PP4/4PN2/PP3PPP/RNBQKB1R b KQkq - 0 4", + "hash": 15102658631824444578, + "name": "QGD: 3.Nf3 Nf6 4.e3" + }, + "D30s": { + "eco": "D30s", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/3p4/2PP4/4PN2/PP3PPP/RNBQKB1R w KQkq - 0 5", + "hash": 4894711226373955353, + "name": "QGD: 3.Nf3 Nf6 4.e3 c6" + }, + "D30t": { + "eco": "D30t", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/3p4/2PP4/4PN2/PP1N1PPP/R1BQKB1R b KQkq - 1 5", + "hash": 1910433956715525929, + "name": "QGD: 3.Nf3 Nf6 4.e3 c6 5.Nbd2" + }, + "D30u": { + "eco": "D30u", + "fen": "r1bqkb1r/pp1n1ppp/2p1pn2/3p4/2PP4/3BPN2/PP1N1PPP/R1BQK2R b KQkq - 3 6", + "hash": 8966072503708899478, + "name": "QGD: 3.Nf3 Nf6 4.e3 c6 5.Nbd2 Nbd7 6.Bd3" + }, + "D30v": { + "eco": "D30v", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p2B1/2PP4/5N2/PP2PPPP/RN1QKB1R b KQkq - 3 4", + "hash": 13465896505310666702, + "name": "QGD: 3.Nf3 Nf6 4.Bg5" + }, + "D30w": { + "eco": "D30w", + "fen": "rnbqkb1r/ppp2pp1/4pn1p/3p2B1/2PP4/5N2/PP2PPPP/RN1QKB1R w KQkq - 0 5", + "hash": 2888833624220833499, + "name": "QGD: Capablanca-Duras Variation" + }, + "D30x": { + "eco": "D30x", + "fen": "rnbqk2r/ppp1bppp/4pn2/3p2B1/2PP4/5N2/PP2PPPP/RN1QKB1R w KQkq - 4 5", + "hash": 12550417709803565919, + "name": "QGD: 3.Nf3 Nf6 4.Bg5 Be7" + }, + "D31a": { + "eco": "D31a", + "fen": "rnbqkbnr/ppp2ppp/4p3/3p4/2PP4/2N5/PP2PPPP/R1BQKBNR b KQkq - 1 3", + "hash": 551671236195985012, + "name": "QGD: 3.Nc3" + }, + "D31b": { + "eco": "D31b", + "fen": "rnbqkbnr/1pp2ppp/p3p3/3p4/2PP4/2N5/PP2PPPP/R1BQKBNR w KQkq - 0 4", + "hash": 15370820587587100328, + "name": "QGD: Janowski Variation" + }, + "D31c": { + "eco": "D31c", + "fen": "rnbqk1nr/ppp2ppp/4p3/3p4/1bPP4/2N5/PP2PPPP/R1BQKBNR w KQkq - 2 4", + "hash": 14908752150547197526, + "name": "QGD: 3.Nc3 Bb4" + }, + "D31d": { + "eco": "D31d", + "fen": "rnbqk1nr/ppp1bppp/4p3/3p4/2PP4/2N5/PP2PPPP/R1BQKBNR w KQkq - 2 4", + "hash": 1399385826846608101, + "name": "QGD: Alatortsev Variation" + }, + "D31e": { + "eco": "D31e", + "fen": "rnbqk1nr/ppp1bppp/4p3/3P4/3P4/2N5/PP2PPPP/R1BQKBNR b KQkq - 0 4", + "hash": 2107972918480117496, + "name": "QGD: Alatortsev, Exchange" + }, + "D31f": { + "eco": "D31f", + "fen": "rnbqk1nr/pp2bppp/2p5/3p4/3P1B2/2N5/PP2PPPP/R2QKBNR w KQkq - 0 6", + "hash": 7745017740441905131, + "name": "QGD: Alatortsev, 5.Bf4 c6" + }, + "D31g": { + "eco": "D31g", + "fen": "rn1qk1nr/pp2bppp/2p5/3p1b2/3P1B2/2N1P3/PP3PPP/R2QKBNR w KQkq - 1 7", + "hash": 4994491596140046018, + "name": "QGD: Alatortsev, 5.Bf4 c6 6.e3 Bf5" + }, + "D31h": { + "eco": "D31h", + "fen": "rn1qk1nr/pp2bppp/2p5/3p1b2/3P1BP1/2N1P3/PP3P1P/R2QKBNR b KQkq g3 0 7", + "hash": 16574089352408992735, + "name": "QGD: Alatortsev, 5.Bf4 c6 6.e3 Bf5 7.g4" + }, + "D31i": { + "eco": "D31i", + "fen": "rnbqkbnr/pp3ppp/2p1p3/3p4/2PP4/2N5/PP2PPPP/R1BQKBNR w KQkq - 0 4", + "hash": 10798791872932476367, + "name": "Semi-Slav" + }, + "D31j": { + "eco": "D31j", + "fen": "rnbqkbnr/pp3ppp/2p1p3/3P4/3P4/2N5/PP2PPPP/R1BQKBNR b KQkq - 0 4", + "hash": 11238618743549321682, + "name": "Semi-Slav: 4.cxd5" + }, + "D31k": { + "eco": "D31k", + "fen": "rnbqkbnr/pp3ppp/2p5/3p4/3P4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 5", + "hash": 9189503787248533540, + "name": "Semi-Slav: 4.cxd5 exd5 5.Nf3" + }, + "D31l": { + "eco": "D31l", + "fen": "rn1qkbnr/pp3ppp/2p5/3p1b2/3P4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 2 6", + "hash": 18203202862654900649, + "name": "Semi-Slav: 4.cxd5 exd5 5.Nf3 Bf5" + }, + "D31m": { + "eco": "D31m", + "fen": "rnbqkbnr/pp3ppp/2p5/3p4/3P1B2/2N5/PP2PPPP/R2QKBNR b KQkq - 1 5", + "hash": 9203008490221128570, + "name": "Semi-Slav: 4.cxd5 exd5 5.Bf4" + }, + "D31n": { + "eco": "D31n", + "fen": "rnbqkbnr/pp3ppp/2p1p3/3p4/2PP4/2N1P3/PP3PPP/R1BQKBNR b KQkq - 0 4", + "hash": 4102851056581246315, + "name": "Semi-Slav: 4.e3" + }, + "D31o": { + "eco": "D31o", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/3p4/2PP4/2N1P3/PP3PPP/R1BQKBNR w KQkq - 1 5", + "hash": 7142275500715949309, + "name": "Semi-Slav: 4.e3 Nf6" + }, + "D31p": { + "eco": "D31p", + "fen": "rnbqkbnr/pp3ppp/2p1p3/3p4/2PP4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 4", + "hash": 5672828023781823730, + "name": "Semi-Slav: 4.Nf3" + }, + "D31q": { + "eco": "D31q", + "fen": "rnbqkbnr/pp3ppp/2p1p3/8/2pP4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 0 5", + "hash": 11294981936396335633, + "name": "Semi-Slav: Noteboom Variation" + }, + "D31r": { + "eco": "D31r", + "fen": "rnbqkbnr/pp3ppp/2p1p3/8/P1pP4/2N2N2/1P2PPPP/R1BQKB1R b KQkq a3 0 5", + "hash": 17831625412280102879, + "name": "Semi-Slav: Noteboom, 5.a4" + }, + "D31s": { + "eco": "D31s", + "fen": "rnbqk1nr/p4ppp/2p1p3/1p6/PbpP4/2N1PN2/1P3PPP/R1BQKB1R w KQkq b6 0 7", + "hash": 17518696301431968356, + "name": "Semi-Slav: Noteboom, 5.a4 Bb4 6.e3 b5" + }, + "D31t": { + "eco": "D31t", + "fen": "rnbqk1nr/5ppp/2p1p3/pp6/PbpP4/2N1PN2/1P1B1PPP/R2QKB1R w KQkq a6 0 8", + "hash": 6667867333910869488, + "name": "Semi-Slav: Noteboom, Abrahams Variation" + }, + "D31u": { + "eco": "D31u", + "fen": "rn1qk1nr/1b3ppp/4p3/pp6/2pP4/1PB1PN2/5PPP/R2QKB1R w KQkq - 1 11", + "hash": 10463054166385270707, + "name": "Semi-Slav: Noteboom, Abrahams, Main Line" + }, + "D31v": { + "eco": "D31v", + "fen": "r2q1rk1/1b1n1ppp/4pn2/p7/1pPP4/3BPN2/1B3PPP/R2Q1RK1 w - - 6 15", + "hash": 10829650198994027552, + "name": "Semi-Slav: Noteboom, Abrahams, Main Line, 14.O-O O-O" + }, + "D31w": { + "eco": "D31w", + "fen": "rnbqkbnr/pp3ppp/2p1p3/3p4/2PPP3/2N5/PP3PPP/R1BQKBNR b KQkq e3 0 4", + "hash": 5898042839492937925, + "name": "Semi-Slav: Marshall Gambit" + }, + "D31x": { + "eco": "D31x", + "fen": "rnbqk1nr/pp3ppp/2p1p3/8/1bPPN3/8/PP3PPP/R1BQKBNR w KQkq - 1 6", + "hash": 18074007752257806624, + "name": "Semi-Slav: Marshall Gambit, 5.Nxe4 Bb4+" + }, + "D31y": { + "eco": "D31y", + "fen": "rnb1k1nr/pp3ppp/2p1p3/8/1BP1q3/8/PP2BPPP/R2QK1NR b KQkq - 1 8", + "hash": 2131050320054370134, + "name": "Semi-Slav: Marshall Gambit, 8.Be2" + }, + "D31z": { + "eco": "D31z", + "fen": "r1b1k1nr/pp3ppp/n1p1p3/8/1BP1q3/8/PP2BPPP/R2QK1NR w KQkq - 2 9", + "hash": 5986314598874948586, + "name": "Semi-Slav: Marshall Gambit, 8.Be2 Na6" + }, + "D32a": { + "eco": "D32a", + "fen": "rnbqkbnr/pp3ppp/4p3/2pp4/2PP4/2N5/PP2PPPP/R1BQKBNR w KQkq c6 0 4", + "hash": 16273264397366078729, + "name": "QGD Tarrasch" + }, + "D32b": { + "eco": "D32b", + "fen": "rnbqkbnr/pp3ppp/4p3/2pp4/2PP4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 4", + "hash": 4229675313055026228, + "name": "QGD Tarrasch: 4.Nf3" + }, + "D32c": { + "eco": "D32c", + "fen": "rnbqkbnr/pp3ppp/8/3pp3/2PN4/2N5/PP2PPPP/R1BQKB1R w KQkq - 0 6", + "hash": 495933555198089905, + "name": "QGD Tarrasch: 4.Nf3 cxd4 5.Nxd4 e5" + }, + "D32d": { + "eco": "D32d", + "fen": "rnbqkbnr/pp3ppp/4p3/2pP4/3P4/2N5/PP2PPPP/R1BQKBNR b KQkq - 0 4", + "hash": 17292877480336177428, + "name": "QGD Tarrasch: 4.cxd5" + }, + "D32e": { + "eco": "D32e", + "fen": "r1bqkbnr/pp3ppp/2n5/3p4/8/2N1P3/PP3PPP/R1BQKBNR b KQkq - 0 7", + "hash": 10431913998746949471, + "name": "QGD Tarrasch: von Hennig-Schara Gambit, 5.Qxd4 Nc6 6.Qd1 exd5 7.e3" + }, + "D32f": { + "eco": "D32f", + "fen": "rnbqkbnr/pp3ppp/4p3/3P4/Q2p4/2N5/PP2PPPP/R1B1KBNR b KQkq - 1 5", + "hash": 7081526722633441961, + "name": "QGD Tarrasch: von Hennig-Schara Gambit, 5.Qa4+" + }, + "D32g": { + "eco": "D32g", + "fen": "r2qkbnr/pp1b1ppp/2n5/3Q2B1/8/2N5/PP2PPPP/R3KBNR b KQkq - 2 8", + "hash": 9309680975604844447, + "name": "QGD Tarrasch: von Hennig-Schara Gambit, 7.Qxd5 Nc6 8.Bg5" + }, + "D32h": { + "eco": "D32h", + "fen": "r2qkbnr/pp1b1ppp/2n5/3Q4/8/2N2N2/PP2PPPP/R1B1KB1R b KQkq - 2 8", + "hash": 11244391253750529386, + "name": "QGD Tarrasch: von Hennig-Schara Gambit, 7.Qxd5 Nc6 8.Nf3" + }, + "D32i": { + "eco": "D32i", + "fen": "2kr3r/pp1bqppp/2n2n2/2b5/8/2N1PN2/PP2BPPP/R1BQK2R w KQ - 3 12", + "hash": 9769075919342188730, + "name": "QGD Tarrasch: von Hennig-Schara Gambit, Main Line (11.Be2 O-O-O)" + }, + "D32j": { + "eco": "D32j", + "fen": "rnbqkbnr/pp3ppp/8/2pp4/3P4/2N5/PP2PPPP/R1BQKBNR w KQkq - 0 5", + "hash": 15053419976288369119, + "name": "QGD Tarrasch: 4.cxd5 exd5" + }, + "D32k": { + "eco": "D32k", + "fen": "rnbqkbnr/pp3ppp/8/2Pp4/8/2N5/PP2PPPP/R1BQKBNR b KQkq - 0 5", + "hash": 12613280075865108147, + "name": "QGD Tarrasch: 5.dxc5" + }, + "D32l": { + "eco": "D32l", + "fen": "rnbqkbnr/pp3ppp/8/2pp4/3PP3/2N5/PP3PPP/R1BQKBNR b KQkq e3 0 5", + "hash": 1508548639351325909, + "name": "QGD Tarrasch: Marshall Gambit" + }, + "D32m": { + "eco": "D32m", + "fen": "rnbqkbnr/pp3ppp/8/2pp4/3P4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 5", + "hash": 832199735984625890, + "name": "QGD Tarrasch: 5.Nf3" + }, + "D32n": { + "eco": "D32n", + "fen": "r1bqkbnr/pp3ppp/2n5/2pp4/3P4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 2 6", + "hash": 11556599079951154657, + "name": "QGD Tarrasch: 5.Nf3 Nc6" + }, + "D32o": { + "eco": "D32o", + "fen": "r1bqkbnr/pp3ppp/2n5/2pp4/3P1B2/2N2N2/PP2PPPP/R2QKB1R b KQkq - 3 6", + "hash": 8878194808065677186, + "name": "QGD Tarrasch: 5.Nf3 Nc6 6.Bf4" + }, + "D32p": { + "eco": "D32p", + "fen": "r1bqkbnr/pp3ppp/2n5/2pp2B1/3P4/2N2N2/PP2PPPP/R2QKB1R b KQkq - 3 6", + "hash": 7366515238857008681, + "name": "QGD Tarrasch: 5.Nf3 Nc6 6.Bg5" + }, + "D32q": { + "eco": "D32q", + "fen": "r1bqk1nr/pp2bppp/2n5/2pp2B1/3P4/2N2N2/PP2PPPP/R2QKB1R w KQkq - 4 7", + "hash": 8284210415797881528, + "name": "QGD Tarrasch: 5.Nf3 Nc6 6.Bg5 Be7" + }, + "D32r": { + "eco": "D32r", + "fen": "r1bqkbnr/pp3ppp/2n5/2pp4/3P4/2N1PN2/PP3PPP/R1BQKB1R b KQkq - 0 6", + "hash": 958152984477807941, + "name": "QGD Tarrasch: 5.Nf3 Nc6 6.e3" + }, + "D32s": { + "eco": "D32s", + "fen": "r1bqkb1r/pp3ppp/2n2n2/1Bpp4/3P4/2N1PN2/PP3PPP/R1BQK2R b KQkq - 2 7", + "hash": 7312981900030207824, + "name": "QGD Tarrasch: 5.Nf3 Nc6 6.e3 Nf6 7.Bb5" + }, + "D32t": { + "eco": "D32t", + "fen": "r1bqkb1r/pp3ppp/2n2n2/2pp4/3P4/2N1PN2/PP2BPPP/R1BQK2R b KQkq - 2 7", + "hash": 2675907960086511216, + "name": "QGD Tarrasch: 5.Nf3 Nc6 6.e3 Nf6 7.Be2" + }, + "D32u": { + "eco": "D32u", + "fen": "r1bqk2r/pp2bppp/2n2n2/2pp4/3P4/2N1PN2/PP2BPPP/R1BQK2R w KQkq - 3 8", + "hash": 3598041797016883937, + "name": "QGD Tarrasch: 5.Nf3 Nc6 6.e3 Nf6 7.Be2 Be7" + }, + "D32v": { + "eco": "D32v", + "fen": "r1bqkb1r/pp3ppp/2n2n2/3p4/3p4/2N1PN2/PP2BPPP/R1BQK2R w KQkq - 0 8", + "hash": 8807921747772626870, + "name": "QGD Tarrasch: 5.Nf3 Nc6 6.e3 Nf6 7.Be2 cxd4" + }, + "D32w": { + "eco": "D32w", + "fen": "r1bq1rk1/pp3ppp/2nb1n2/3p4/3N4/2N1P3/PP2BPPP/R1BQ1RK1 w - - 3 10", + "hash": 14784649579033634375, + "name": "QGD Tarrasch: 5.Nf3 Nc6 6.e3 Nf6 7.Be2 cxd4 8.Nxd4 Bd6 9.O-O O-O" + }, + "D32x": { + "eco": "D32x", + "fen": "r1bq1rk1/pp3ppp/2nb1n2/3p4/3N4/1PN1P3/P3BPPP/R1BQ1RK1 b - - 0 10", + "hash": 4723079884147051818, + "name": "QGD Tarrasch: 5.Nf3 Nc6 6.e3 Nf6 7.Be2 cxd4 8.Nxd4 Bd6 9.O-O O-O 10.b3" + }, + "D33a": { + "eco": "D33a", + "fen": "r1bqkbnr/pp3ppp/2n5/2pp4/3P4/2N2NP1/PP2PP1P/R1BQKB1R b KQkq - 0 6", + "hash": 10126329347641959897, + "name": "QGD Tarrasch: 6.g3 (Schlecter/Rubinstein)" + }, + "D33b": { + "eco": "D33b", + "fen": "r1bqkbnr/pp3ppp/2n5/3p4/3p4/2N2NP1/PP2PP1P/R1BQKB1R w KQkq - 0 7", + "hash": 15247298100104760351, + "name": "QGD Tarrasch: 6.g3 cxd4" + }, + "D33c": { + "eco": "D33c", + "fen": "r1bqkbnr/pp3ppp/2n5/3p4/2pP4/2N2NP1/PP2PP1P/R1BQKB1R w KQkq - 0 7", + "hash": 6095701817556160340, + "name": "QGD Tarrasch: Swedish Variation" + }, + "D33d": { + "eco": "D33d", + "fen": "r1bqkbnr/pp3ppp/2n5/3p4/2pPP3/2N2NP1/PP3P1P/R1BQKB1R b KQkq e3 0 7", + "hash": 10421124793953940062, + "name": "QGD Tarrasch: Swedish, Rey Ardid Variation" + }, + "D33e": { + "eco": "D33e", + "fen": "r1bqkbnr/pp3ppp/2n5/3p4/2pP4/2N2NP1/PP2PPBP/R1BQK2R b KQkq - 1 7", + "hash": 16242350790378690349, + "name": "QGD Tarrasch: Swedish, 7.Bg2" + }, + "D33f": { + "eco": "D33f", + "fen": "r1bqk2r/pp2nppp/2n5/3p4/1bpP4/2N2NP1/PP2PPBP/R1BQ1RK1 w kq - 4 9", + "hash": 7499554904181247906, + "name": "QGD Tarrasch: Swedish, 7.Bg2 Bb4 8.O-O Nge7" + }, + "D33g": { + "eco": "D33g", + "fen": "r1bqk2r/pp2nppp/2n5/3p4/1bpP4/P1N2NP1/1P2PPBP/R1BQ1RK1 b kq - 0 9", + "hash": 11785907396768924130, + "name": "QGD Tarrasch: Swedish, 9.a3" + }, + "D33h": { + "eco": "D33h", + "fen": "r1bqk2r/pp2nppp/2n5/3p4/1bpP4/2N2NP1/PP1BPPBP/R2Q1RK1 b kq - 5 9", + "hash": 4728392335415731366, + "name": "QGD Tarrasch: Swedish, 9.Bd2" + }, + "D33i": { + "eco": "D33i", + "fen": "r1bqk2r/pp2nppp/2n5/3pN3/1bpP4/2N3P1/PP2PPBP/R1BQ1RK1 b kq - 5 9", + "hash": 13054557340404968148, + "name": "QGD Tarrasch: Swedish, 9.Ne5" + }, + "D33j": { + "eco": "D33j", + "fen": "r1bqk2r/pp2nppp/2n5/3p4/1bpPP3/2N2NP1/PP3PBP/R1BQ1RK1 b kq e3 0 9", + "hash": 12399755832450069160, + "name": "QGD Tarrasch: Swedish, 9.e4" + }, + "D33k": { + "eco": "D33k", + "fen": "r1bqk2r/pp2nppp/2n5/8/1bpPp3/2N2NP1/PP3PBP/R1BQ1RK1 w kq - 0 10", + "hash": 7250328323836478200, + "name": "QGD Tarrasch: Swedish, 9.e4 dxe4" + }, + "D33l": { + "eco": "D33l", + "fen": "r1bqkb1r/pp3ppp/2n2n2/2pp4/3P4/2N2NP1/PP2PP1P/R1BQKB1R w KQkq - 1 7", + "hash": 15522155390400046159, + "name": "QGD Tarrasch: 6.g3 Nf6 (Prague)" + }, + "D33m": { + "eco": "D33m", + "fen": "r2qkb1r/pp3ppp/2n1bn2/2pp4/3P4/2N2NP1/PP2PPBP/R1BQK2R w KQkq - 3 8", + "hash": 3900530416455321406, + "name": "QGD Tarrasch: 7.Bg2 Be6" + }, + "D33n": { + "eco": "D33n", + "fen": "r2qkb1r/pp3ppp/2n2n2/2pp4/3P2b1/2N2NP1/PP2PPBP/R1BQK2R w KQkq - 3 8", + "hash": 6938410237285987036, + "name": "QGD Tarrasch: Wagner Variation" + }, + "D33o": { + "eco": "D33o", + "fen": "r1bqkb1r/pp3ppp/2n2n2/3p4/3p4/2N2NP1/PP2PPBP/R1BQK2R w KQkq - 0 8", + "hash": 4433617216594515440, + "name": "QGD Tarrasch: 7.Bg2 cxd4" + }, + "D33p": { + "eco": "D33p", + "fen": "r1bqk2r/pp2bppp/2n2n2/3p4/3N4/2N3P1/PP2PPBP/R1BQK2R w KQkq - 1 9", + "hash": 5683386515786705743, + "name": "QGD Tarrasch: 7.Bg2 cxd4 8.Nxd4 Be7" + }, + "D33q": { + "eco": "D33q", + "fen": "r1bq1rk1/pp2bppp/2n2n2/3p4/3N4/2N1B1P1/PP2PPBP/R2Q1RK1 b - - 4 10", + "hash": 5263120835235152442, + "name": "QGD Tarrasch: 7.Bg2 cxd4 8.Nxd4 Be7 9.O-O O-O 10.Be3" + }, + "D34a": { + "eco": "D34a", + "fen": "r1bqk2r/pp2bppp/2n2n2/2pp4/3P4/2N2NP1/PP2PPBP/R1BQK2R w KQkq - 3 8", + "hash": 8526886967310536871, + "name": "QGD Tarrasch: 7.Bg2 Be7" + }, + "D34b": { + "eco": "D34b", + "fen": "r2qk2r/pp2bppp/2n1bn2/2pp4/3P4/2N2NP1/PP2PPBP/R1BQ1RK1 w kq - 5 9", + "hash": 6672222918681129151, + "name": "QGD Tarrasch: 7.Bg2 Be7 8.O-O Be6" + }, + "D34c": { + "eco": "D34c", + "fen": "r1bq1rk1/pp2bppp/2n2n2/2pp4/3P4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 5 9", + "hash": 182395816581390940, + "name": "QGD Tarrasch: 8.O-O O-O (Main Line)" + }, + "D34d": { + "eco": "D34d", + "fen": "r1bq1rk1/pp2bppp/2n2n2/2pp4/3P4/1PN2NP1/P3PPBP/R1BQ1RK1 b - - 0 9", + "hash": 10245232114149919025, + "name": "QGD Tarrasch: 9.b3" + }, + "D34e": { + "eco": "D34e", + "fen": "r1bq1rk1/pp2bppp/2n5/2pp4/3Pn3/1PN2NP1/P3PPBP/R1BQ1RK1 w - - 1 10", + "hash": 12981112231551632587, + "name": "QGD Tarrasch: 9.b3 Ne4" + }, + "D34f": { + "eco": "D34f", + "fen": "r1bq1rk1/pp2bppp/2n2n2/2pp4/3P1B2/2N2NP1/PP2PPBP/R2Q1RK1 b - - 6 9", + "hash": 15698675867640727615, + "name": "QGD Tarrasch: 9.Bf4" + }, + "D34g": { + "eco": "D34g", + "fen": "r1bq1rk1/pp2bppp/2n2n2/2pp4/3P4/2N1BNP1/PP2PPBP/R2Q1RK1 b - - 6 9", + "hash": 8178743545036011986, + "name": "QGD Tarrasch: 9.Be3" + }, + "D34h": { + "eco": "D34h", + "fen": "r1bq1rk1/pp2bppp/2n2n2/2Pp4/8/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 0 9", + "hash": 9037355387229418800, + "name": "QGD Tarrasch: 9.dxc5" + }, + "D34i": { + "eco": "D34i", + "fen": "r1bq1rk1/pp3ppp/2n2n2/2bp4/8/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 0 10", + "hash": 387991803619074656, + "name": "QGD Tarrasch: 9.dxc5 Bxc5" + }, + "D34j": { + "eco": "D34j", + "fen": "r1bq1rk1/pp3ppp/2n2n2/2bp4/N7/5NP1/PP2PPBP/R1BQ1RK1 b - - 1 10", + "hash": 14336792734819590442, + "name": "QGD Tarrasch: Reti Variation" + }, + "D34k": { + "eco": "D34k", + "fen": "r1bq1rk1/pp3ppp/2n2n2/2bp2B1/8/2N2NP1/PP2PPBP/R2Q1RK1 b - - 1 10", + "hash": 14067058633409083816, + "name": "QGD Tarrasch: 9.dxc5 Bxc5 10.Bg5" + }, + "D34l": { + "eco": "D34l", + "fen": "r1bq1rk1/pp3ppp/2n2n2/2b3B1/3p4/2N2NP1/PP2PPBP/R2Q1RK1 w - - 0 11", + "hash": 2401915196211696463, + "name": "QGD Tarrasch: 9.dxc5 Bxc5 10.Bg5 d4" + }, + "D34m": { + "eco": "D34m", + "fen": "r1b2rk1/pp3ppp/2n2q2/2bN4/3p4/5NP1/PP2PPBP/R2Q1RK1 b - - 1 12", + "hash": 5388196095573721722, + "name": "QGD Tarrasch: 9.dxc5 Bxc5 10.Bg5 d4 11.Bxf6 Qxf6 12.Nd5" + }, + "D34n": { + "eco": "D34n", + "fen": "r1bqr1k1/pp3ppp/2n5/2bN4/3p4/6P1/PP1NPPBP/R2Q1RK1 w - - 4 14", + "hash": 10127881624674966175, + "name": "QGD Tarrasch: 9.dxc5 Bxc5 10.Bg5 d4 11.Bxf6: Main Line" + }, + "D34o": { + "eco": "D34o", + "fen": "r1bq1rk1/pp2bppp/2n2n2/2pp2B1/3P4/2N2NP1/PP2PPBP/R2Q1RK1 b - - 6 9", + "hash": 14182494048523336084, + "name": "QGD Tarrasch: 9.Bg5" + }, + "D34p": { + "eco": "D34p", + "fen": "r1bq1rk1/pp2bppp/2n2n2/3p2B1/2pP4/2N2NP1/PP2PPBP/R2Q1RK1 w - - 0 10", + "hash": 2075575946303214361, + "name": "QGD Tarrasch: 9.Bg5 c4" + }, + "D34q": { + "eco": "D34q", + "fen": "r2q1rk1/pp2bppp/2N1bn2/3p2B1/2pP4/2N3P1/PP2PPBP/R2Q1RK1 b - - 0 11", + "hash": 8831657638401300971, + "name": "QGD Tarrasch: 9.Bg5 c4 10.Ne5 Be6 11.Nxc6" + }, + "D34r": { + "eco": "D34r", + "fen": "r1bq1rk1/pp2bppp/2n2n2/3p2B1/3p4/2N2NP1/PP2PPBP/R2Q1RK1 w - - 0 10", + "hash": 11226608575023894610, + "name": "QGD Tarrasch: 9.Bg5 cxd4" + }, + "D34s": { + "eco": "D34s", + "fen": "r1bq1rk1/pp2bpp1/2n2n1p/3p2B1/3N4/2N3P1/PP2PPBP/R2Q1RK1 w - - 0 11", + "hash": 7975869713437854569, + "name": "QGD Tarrasch: 9.Bg5 cxd4 10.Nxd4 h6" + }, + "D34t": { + "eco": "D34t", + "fen": "r1bq1rk1/pp2bpp1/2n2n1p/3p4/3N4/2N1B1P1/PP2PPBP/R2Q1RK1 b - - 1 11", + "hash": 2534173433027481126, + "name": "QGD Tarrasch: 9.Bg5 cxd4 10.Nxd4 h6 11.Be3" + }, + "D34u": { + "eco": "D34u", + "fen": "r1bqr1k1/pp2bpp1/2n2n1p/3p4/3N4/2N1B1P1/PP2PPBP/R2Q1RK1 w - - 2 12", + "hash": 4574238918930934692, + "name": "QGD Tarrasch: 9.Bg5 cxd4 10.Nxd4 h6 11.Be3 Re8" + }, + "D34v": { + "eco": "D34v", + "fen": "r1bqr1k1/pp2bpp1/2n2n1p/3p4/3N4/1QN1B1P1/PP2PPBP/R4RK1 b - - 3 12", + "hash": 397255438982087490, + "name": "QGD Tarrasch: 9.Bg5 cxd4 10.Nxd4 h6 11.Be3 Re8 12.Qb3" + }, + "D34w": { + "eco": "D34w", + "fen": "r1bqr1k1/pp2bpp1/2n2n1p/3p4/3N4/2N1B1P1/PP2PPBP/2RQ1RK1 b - - 3 12", + "hash": 12791503623204830954, + "name": "QGD Tarrasch: 9.Bg5 cxd4 10.Nxd4 h6 11.Be3 Re8 12.Rc1" + }, + "D34x": { + "eco": "D34x", + "fen": "r1bqrbk1/pp3pp1/2n2n1p/3p4/3N4/2N1B1P1/PP2PPBP/2RQ1RK1 w - - 4 13", + "hash": 11910049771216523899, + "name": "QGD Tarrasch: 9.Bg5 cxd4 10.Nxd4 h6 11.Be3 Re8 12.Rc1 Bf8" + }, + "D34y": { + "eco": "D34y", + "fen": "r1bqrbk1/pp3pp1/2N2n1p/3p4/8/2N1B1P1/PP2PPBP/2RQ1RK1 b - - 0 13", + "hash": 16846351527424645966, + "name": "QGD Tarrasch: 9.Bg5 cxd4 10.Nxd4 h6 11.Be3 Re8 12.Rc1 Bf8 13.Nxc6" + }, + "D35a": { + "eco": "D35a", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/2PP4/2N5/PP2PPPP/R1BQKBNR w KQkq - 2 4", + "hash": 6650087000524810210, + "name": "QGD: 3.Nc3 Nf6" + }, + "D35b": { + "eco": "D35b", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3P4/3P4/2N5/PP2PPPP/R1BQKBNR b KQkq - 0 4", + "hash": 5936660378379842559, + "name": "QGD: Exchange" + }, + "D35c": { + "eco": "D35c", + "fen": "rnbqkb1r/ppp2ppp/5n2/3p4/3P1B2/2N5/PP2PPPP/R2QKBNR b KQkq - 1 5", + "hash": 13124472743803378007, + "name": "QGD: Exchange, Smisch Variation" + }, + "D35d": { + "eco": "D35d", + "fen": "rnbqkb1r/ppp2ppp/5n2/3p4/3P4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 5", + "hash": 13119957800907493897, + "name": "QGD: Exchange, 5.Nf3" + }, + "D35e": { + "eco": "D35e", + "fen": "r1bqkb1r/pppn1ppp/5n2/3p4/3P4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 2 6", + "hash": 9651230797454917573, + "name": "QGD: Exchange, 5.Nf3 Nbd7" + }, + "D35f": { + "eco": "D35f", + "fen": "r1bqkb1r/pppn1ppp/5n2/3p4/3P1B2/2N2N2/PP2PPPP/R2QKB1R b KQkq - 3 6", + "hash": 6819832776770770342, + "name": "QGD: Exchange, 5.Nf3 Nbd7 6.Bf4" + }, + "D35g": { + "eco": "D35g", + "fen": "rnbqk2r/ppp1bppp/5n2/3p4/3P4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 2 6", + "hash": 11736107901551345304, + "name": "QGD: Exchange, 5.Nf3 Be7" + }, + "D35h": { + "eco": "D35h", + "fen": "rnbqk2r/pp2bppp/2p2n2/3p4/3P1B2/2N2N2/PP2PPPP/R2QKB1R w KQkq - 0 7", + "hash": 17001383925395703616, + "name": "QGD: Exchange, 5.Nf3 Be7 6.Bf4 c6" + }, + "D35i": { + "eco": "D35i", + "fen": "rnbqkb1r/ppp2ppp/5n2/3p2B1/3P4/2N5/PP2PPPP/R2QKBNR b KQkq - 1 5", + "hash": 12334743496750033148, + "name": "QGD: Exchange, 5.Bg5" + }, + "D35j": { + "eco": "D35j", + "fen": "rnbqk2r/ppp1bppp/5n2/3p2B1/3P4/2N1P3/PP3PPP/R2QKBNR b KQkq - 0 6", + "hash": 1354737440646778057, + "name": "QGD: Exchange, 5.Bg5 Be7 6.e3" + }, + "D35k": { + "eco": "D35k", + "fen": "rnbq1rk1/ppp1bppp/5n2/3p2B1/3P4/2N1P3/PP3PPP/R2QKBNR w KQ - 1 7", + "hash": 1757550858389005602, + "name": "QGD: Exchange, 5.Bg5 Be7 6.e3 O-O" + }, + "D35l": { + "eco": "D35l", + "fen": "rnbqkb1r/pp3ppp/2p2n2/3p2B1/3P4/2N5/PP2PPPP/R2QKBNR w KQkq - 0 6", + "hash": 4131808793369033543, + "name": "QGD: Exchange, 5.Bg5 c6" + }, + "D35m": { + "eco": "D35m", + "fen": "rnbqkb1r/pp3ppp/2p2n2/3p2B1/3P4/2N1P3/PP3PPP/R2QKBNR b KQkq - 0 6", + "hash": 10698969997520614371, + "name": "QGD: Exchange, 5.Bg5 c6 6.e3" + }, + "D35n": { + "eco": "D35n", + "fen": "r1bqkb1r/pp1n1ppp/2p2n2/3p2B1/3P4/2N1P3/PP3PPP/R2QKBNR w KQkq - 1 7", + "hash": 12076714503525359151, + "name": "QGD: Exchange, 5.Bg5 c6 6.e3 Nbd7" + }, + "D35o": { + "eco": "D35o", + "fen": "rnbqk2r/pp2bppp/2p2n2/3p2B1/3P4/2N1P3/PP3PPP/R2QKBNR w KQkq - 1 7", + "hash": 9274621825355915122, + "name": "QGD: Exchange, 5.Bg5 c6 6.e3 Be7" + }, + "D35p": { + "eco": "D35p", + "fen": "rn1qk2r/pp2bppp/2p2n2/3p1bB1/3P4/2N1PN2/PP3PPP/R2QKB1R w KQkq - 3 8", + "hash": 15621744736005519298, + "name": "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Nf3 Bf5" + }, + "D35q": { + "eco": "D35q", + "fen": "rn1qk2r/pp2bppp/2p2n2/3p1bB1/3P4/2NBPN2/PP3PPP/R2QK2R b KQkq - 4 8", + "hash": 10215914050314778033, + "name": "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Nf3 Bf5 8.Bd3" + }, + "D35r": { + "eco": "D35r", + "fen": "rnbqk2r/pp2bppp/2p2n2/3p2B1/3P4/2NBP3/PP3PPP/R2QK1NR b KQkq - 2 7", + "hash": 15401099935804579073, + "name": "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Bd3" + }, + "D35s": { + "eco": "D35s", + "fen": "rnbqk2r/pp2bppp/2p5/3p2B1/3Pn3/2NBP3/PP3PPP/R2QK1NR w KQkq - 3 8", + "hash": 17272428635674235131, + "name": "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Bd3 Ne4" + }, + "D35t": { + "eco": "D35t", + "fen": "r1bqk2r/pp1nbppp/2p2n2/3p2B1/3P4/2NBP3/PP3PPP/R2QK1NR w KQkq - 3 8", + "hash": 16598238076636278989, + "name": "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Bd3 Nbd7" + }, + "D35u": { + "eco": "D35u", + "fen": "r1bqk2r/pp1nbppp/2p2n2/3p2B1/3P4/2NBPN2/PP3PPP/R2QK2R b KQkq - 4 8", + "hash": 4412442831573144048, + "name": "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Bd3 Nbd7 8.Nf3" + }, + "D35v": { + "eco": "D35v", + "fen": "rnbq1rk1/pp2bppp/2p2n2/3p2B1/3P4/2NBP3/PP3PPP/R2QK1NR w KQ - 3 8", + "hash": 16074296484731139306, + "name": "QGD: Exchange, 5.Bg5 c6 6.e3 Be7 7.Bd3 O-O" + }, + "D36a": { + "eco": "D36a", + "fen": "rnbqkb1r/pp3ppp/2p2n2/3p2B1/3P4/2N5/PPQ1PPPP/R3KBNR b KQkq - 1 6", + "hash": 9821875977625437987, + "name": "QGD: Exchange, 5.Bg5 c6 6.Qc2" + }, + "D36b": { + "eco": "D36b", + "fen": "r1bqkb1r/pp3ppp/n1p2n2/3p2B1/3P4/2N5/PPQ1PPPP/R3KBNR w KQkq - 2 7", + "hash": 14325664237852105631, + "name": "QGD: Exchange, 5.Bg5 c6 6.Qc2 Na6" + }, + "D36c": { + "eco": "D36c", + "fen": "rnbqk2r/pp2bppp/2p2n2/3p2B1/3P4/2N5/PPQ1PPPP/R3KBNR w KQkq - 2 7", + "hash": 11277615750348876722, + "name": "QGD: Exchange, 6.Qc2 Be7" + }, + "D36d": { + "eco": "D36d", + "fen": "rnbqk2r/pp2bp1p/2p2np1/3p2B1/3P4/2N2N2/PPQ1PPPP/R3KB1R w KQkq - 0 8", + "hash": 12561274294527383748, + "name": "QGD: Exchange, 6.Qc2 Be7 7.Nf3 g6" + }, + "D36e": { + "eco": "D36e", + "fen": "rnbqk2r/pp2bp1p/2p2np1/3p2B1/3P4/2N1PN2/PPQ2PPP/R3KB1R b KQkq - 0 8", + "hash": 252165128816119904, + "name": "QGD: Exchange, 6.Qc2 Be7 7.Nf3 g6 8.e3" + }, + "D36f": { + "eco": "D36f", + "fen": "rnbqk2r/pp2bppp/2p2n2/3p2B1/3P4/2N1P3/PPQ2PPP/R3KBNR b KQkq - 0 7", + "hash": 3580187380377363222, + "name": "QGD: Exchange, 6.Qc2 Be7 7.e3" + }, + "D36g": { + "eco": "D36g", + "fen": "rnbqk2r/pp2bpp1/2p2n1p/3p2B1/3P4/2N1P3/PPQ2PPP/R3KBNR w KQkq - 0 8", + "hash": 11770203886075177475, + "name": "QGD: Exchange, 6.Qc2 Be7 7.e3 h6" + }, + "D36h": { + "eco": "D36h", + "fen": "r1bqk2r/pp1nbppp/2p2n2/3p2B1/3P4/2N1P3/PPQ2PPP/R3KBNR w KQkq - 1 8", + "hash": 165536053125598938, + "name": "QGD: Exchange, 6.Qc2 Be7 7.e3 Nbd7" + }, + "D36i": { + "eco": "D36i", + "fen": "r1bqk2r/pp1nbppp/2p2n2/3p2B1/3P4/2NBP3/PPQ2PPP/R3K1NR b KQkq - 2 8", + "hash": 6287512764580793513, + "name": "QGD: Exchange, 6.Qc2 Be7 7.e3 Nbd7 8.Bd3" + }, + "D36j": { + "eco": "D36j", + "fen": "r1bqkn1r/pp2bppp/2p2n2/3p2B1/3P4/2NBP3/PPQ2PPP/R3K1NR w KQkq - 3 9", + "hash": 2278711380982131460, + "name": "QGD: Exchange, 6.Qc2 Be7 7.e3 Nbd7 8.Bd3 Nf8" + }, + "D36k": { + "eco": "D36k", + "fen": "r1bq1rk1/pp1nbppp/2p2n2/3p2B1/3P4/2NBP3/PPQ2PPP/R3K1NR w KQ - 3 9", + "hash": 6767034731349108034, + "name": "QGD: Exchange, Main Line" + }, + "D36l": { + "eco": "D36l", + "fen": "r1bqr1k1/pp1nbppp/2p2n2/3p2B1/3P4/2NBP3/PPQ1NPPP/R3K2R w KQ - 5 10", + "hash": 6132911702772059454, + "name": "QGD: Exchange, Main Line, 9.Nge2 Re8" + }, + "D36m": { + "eco": "D36m", + "fen": "r1bqr1k1/pp1nbppp/2p2n2/3p2B1/3P4/2NBP3/PPQ1NPPP/R4RK1 b - - 6 10", + "hash": 3128033096698648110, + "name": "QGD: Exchange, Main Line, 9.Nge2 Re8 10.O-O" + }, + "D36n": { + "eco": "D36n", + "fen": "r1bqrnk1/pp2bppp/2p2n2/3p2B1/3P4/2NBPP2/PPQ1N1PP/R4RK1 b - - 0 11", + "hash": 938657271107247858, + "name": "QGD: Exchange, Main Line, 9.Nge2 Re8 10.O-O Nf8 11.f3" + }, + "D36o": { + "eco": "D36o", + "fen": "r1bq1rk1/pp1nbppp/2p2n2/3p2B1/3P4/2NBPN2/PPQ2PPP/R3K2R b KQ - 4 9", + "hash": 9695610950755615871, + "name": "QGD: Exchange, Main Line, 9.Nf3" + }, + "D36p": { + "eco": "D36p", + "fen": "r1bqr1k1/pp1nbppp/2p2n2/3p2B1/3P4/2NBPN2/PPQ2PPP/R3K2R w KQ - 5 10", + "hash": 11158932010429178365, + "name": "QGD: Exchange, Main Line, 9.Nf3 Re8" + }, + "D36q": { + "eco": "D36q", + "fen": "r1bqrnk1/pp2bppp/2p2n2/3p4/3P1B2/2NBPN1P/PPQ2PP1/R3K2R b KQ - 2 11", + "hash": 16080409573692111616, + "name": "QGD: Exchange, Main Line, 9.Nf3 Re8 10.h3 Nf8 11.Bf4" + }, + "D36r": { + "eco": "D36r", + "fen": "r1bqr1k1/pp1nbppp/2p2n2/3p2B1/3P4/2NBPN2/PPQ2PPP/2KR3R b - - 6 10", + "hash": 11741228002728472165, + "name": "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O-O" + }, + "D36s": { + "eco": "D36s", + "fen": "r1bqr1k1/pp1nbppp/2p2n2/3p2B1/3P4/2NBPN2/PPQ2PPP/R4RK1 b - - 6 10", + "hash": 16476708124937304813, + "name": "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O" + }, + "D36t": { + "eco": "D36t", + "fen": "r1bqr1k1/pp1nbpp1/2p2n1p/3p2B1/3P4/2NBPN2/PPQ2PPP/R4RK1 w - - 0 11", + "hash": 8529340336835294200, + "name": "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O h6" + }, + "D36u": { + "eco": "D36u", + "fen": "r1bqrnk1/pp2bppp/2p2n2/3p2B1/3P4/2NBPN2/PPQ2PPP/R4RK1 w - - 7 11", + "hash": 12427444407956462912, + "name": "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O Nf8" + }, + "D36v": { + "eco": "D36v", + "fen": "r1bqrnk1/pp2bppp/2p2n2/3p2B1/3P4/2NBPN2/PPQ2PPP/4RRK1 b - - 8 11", + "hash": 4774822046340007023, + "name": "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O Nf8 11.Rae1" + }, + "D36w": { + "eco": "D36w", + "fen": "r1bqrnk1/pp2bppp/2p2n2/3p2B1/3P4/2NBPN1P/PPQ2PP1/R4RK1 b - - 0 11", + "hash": 4937347510106264754, + "name": "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O Nf8 11.h3" + }, + "D36x": { + "eco": "D36x", + "fen": "r1bqrnk1/pp2bp1p/2p2np1/3p2B1/3P4/2NBPN1P/PPQ2PP1/R4RK1 w - - 0 12", + "hash": 12479659550661969657, + "name": "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O Nf8 11.h3 g6" + }, + "D36y": { + "eco": "D36y", + "fen": "r1bqrnk1/pp2bppp/2p2n2/3p2B1/3P4/2NBPN2/PPQ2PPP/1R3RK1 b - - 8 11", + "hash": 1027302057991117252, + "name": "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O Nf8 11.Rab1" + }, + "D36z": { + "eco": "D36z", + "fen": "r1bqrnk1/1p2bppp/2p2n2/p2p2B1/3P4/2NBPN2/PPQ2PPP/1R3RK1 w - a6 0 12", + "hash": 9825447037809366356, + "name": "QGD: Exchange, Main Line, 9.Nf3 Re8 10.O-O Nf8 11.Rab1 a5" + }, + "D37a": { + "eco": "D37a", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/2PP4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 3 4", + "hash": 9740501023354455775, + "name": "QGD: 4.Nf3" + }, + "D37b": { + "eco": "D37b", + "fen": "r1bqkb1r/pppn1ppp/4pn2/3p4/2PP4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 4 5", + "hash": 13028435774397737747, + "name": "QGD: Westphalia without Bg5" + }, + "D37c": { + "eco": "D37c", + "fen": "r1bqkb1r/pppn1ppp/4pn2/3p4/2PP1B2/2N2N2/PP2PPPP/R2QKB1R b KQkq - 5 5", + "hash": 8041928989072621936, + "name": "QGD: Westphalia: 4.Nf3 Nbd7 5.Bf4" + }, + "D37d": { + "eco": "D37d", + "fen": "rnbqk2r/ppp1bppp/4pn2/3p4/2PP4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 4 5", + "hash": 10655875146498484814, + "name": "QGD: 4.Nf3 Be7" + }, + "D37e": { + "eco": "D37e", + "fen": "rnbqk2r/ppp1bppp/4pn2/3p4/2PP4/2N1PN2/PP3PPP/R1BQKB1R b KQkq - 0 5", + "hash": 4524999762183398122, + "name": "QGD: 4.Nf3 Be7 5.e3" + }, + "D37f": { + "eco": "D37f", + "fen": "rnbq1rk1/ppp1bppp/4pn2/3p4/2PP4/2N1PN2/PP3PPP/R1BQKB1R w KQ - 1 6", + "hash": 3775400742759877377, + "name": "QGD: 4.Nf3 Be7 5.e3 O-O" + }, + "D37g": { + "eco": "D37g", + "fen": "rnbq1rk1/ppp1bppp/4pn2/3p4/2PP4/2NBPN2/PP3PPP/R1BQK2R b KQ - 2 6", + "hash": 7019224347465353586, + "name": "QGD: 4.Nf3 Be7 5.e3 O-O 6.Bd3" + }, + "D37h": { + "eco": "D37h", + "fen": "rnbqk2r/ppp1bppp/4pn2/3p4/2PP1B2/2N2N2/PP2PPPP/R2QKB1R b KQkq - 5 5", + "hash": 5239273496979456045, + "name": "QGD: Classical Variation" + }, + "D37i": { + "eco": "D37i", + "fen": "rnbq1rk1/ppp1bppp/4pn2/3p4/2PP1B2/2N2N2/PP2PPPP/R2QKB1R w KQ - 6 6", + "hash": 4764050615717177798, + "name": "QGD: Classical, 5...O-O" + }, + "D37j": { + "eco": "D37j", + "fen": "r1bq1rk1/pppnbppp/4pn2/3p4/2PP1B2/2N1PN2/PP3PPP/R2QKB1R w KQ - 1 7", + "hash": 15912192907167845550, + "name": "QGD: Classical, 5...O-O 6.e3 Nbd7" + }, + "D37k": { + "eco": "D37k", + "fen": "rnbq1rk1/p1p1bppp/1p2pn2/3p4/2PP1B2/2N1PN2/PP3PPP/R2QKB1R w KQ - 0 7", + "hash": 9536730005809239801, + "name": "QGD: Classical, 5...O-O 6.e3 b6" + }, + "D37l": { + "eco": "D37l", + "fen": "rnbq1rk1/pp2bppp/2p1pn2/3p4/2PP1B2/2N1PN2/PP3PPP/R2QKB1R w KQ - 0 7", + "hash": 9028276437686350553, + "name": "QGD: Classical, 5...O-O 6.e3 c6" + }, + "D37m": { + "eco": "D37m", + "fen": "rnbq1rk1/pp2bppp/4pn2/2pp4/2PP1B2/2N1PN2/PP3PPP/R2QKB1R w KQ c6 0 7", + "hash": 667058137912912415, + "name": "QGD: Classical, 5...O-O 6.e3 c5" + }, + "D37n": { + "eco": "D37n", + "fen": "rnbq1rk1/pp2bppp/4pn2/2Pp4/2P2B2/2N1PN2/PP3PPP/R2QKB1R b KQ - 0 7", + "hash": 8548675450275724659, + "name": "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5" + }, + "D37o": { + "eco": "D37o", + "fen": "rnbq1rk1/pp3ppp/4pn2/2bp4/2P2B2/2N1PN2/PP3PPP/R2QKB1R w KQ - 0 8", + "hash": 1057133896744217123, + "name": "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5 Bxc5" + }, + "D37p": { + "eco": "D37p", + "fen": "rnbq1rk1/pp3ppp/4pn2/2bp4/2P2B2/P1N1PN2/1P3PPP/R2QKB1R b KQ - 0 8", + "hash": 14210968487206724707, + "name": "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5 Bxc5 8.a3" + }, + "D37q": { + "eco": "D37q", + "fen": "rnbq1rk1/pp3ppp/4pn2/2bP4/5B2/2N1PN2/PP3PPP/R2QKB1R b KQ - 0 8", + "hash": 36356864769310270, + "name": "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5 Bxc5 8.cxd5" + }, + "D37r": { + "eco": "D37r", + "fen": "rnbq1rk1/pp3ppp/4pn2/2bp4/2P2B2/2N1PN2/PPQ2PPP/R3KB1R b KQ - 1 8", + "hash": 13813318170089395783, + "name": "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5 Bxc5 8.Qc2" + }, + "D37s": { + "eco": "D37s", + "fen": "r1bq1rk1/pp3ppp/2n1pn2/2bp4/2P2B2/P1N1PN2/1PQ2PPP/R3KB1R b KQ - 0 9", + "hash": 16123777772135759108, + "name": "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5 Bxc5 8.Qc2 Nc6 9.a3" + }, + "D37t": { + "eco": "D37t", + "fen": "r1b2rk1/pp3ppp/2n1pn2/q1bp4/2P2B2/P1N1PN2/1PQ2PPP/R3KB1R w KQ - 1 10", + "hash": 482095370727300235, + "name": "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5 Bxc5 8.Qc2 Nc6 9.a3 Qa5" + }, + "D37u": { + "eco": "D37u", + "fen": "r1b2rk1/pp3ppp/2n1pn2/q1bp4/2P2B2/P1N1PN2/1PQ2PPP/3RKB1R b K - 2 10", + "hash": 8104088323716241711, + "name": "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5 Bxc5 8.Qc2 Nc6 9.a3 Qa5 10.Rd1" + }, + "D37v": { + "eco": "D37v", + "fen": "r1b2rk1/pp3ppp/2n1pn2/q1bp4/2P2B2/P1N1PN2/1PQ2PPP/2KR1B1R b - - 2 10", + "hash": 4512037331866063635, + "name": "QGD: Classical, 5...O-O 6.e3 c5 7.dxc5 Bxc5 8.Qc2 Nc6 9.a3 Qa5 10.O-O-O" + }, + "D38a": { + "eco": "D38a", + "fen": "rnbqk2r/ppp2ppp/4pn2/3p4/1bPP4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 4 5", + "hash": 5650996174306987773, + "name": "QGD: Ragozin" + }, + "D38b": { + "eco": "D38b", + "fen": "rnbqk2r/ppp2ppp/4pn2/3p4/QbPP4/2N2N2/PP2PPPP/R1B1KB1R b KQkq - 5 5", + "hash": 11297528547013704838, + "name": "QGD: Ragozin, 5.Qa4+" + }, + "D38c": { + "eco": "D38c", + "fen": "r1bqk2r/ppp2ppp/2n1pn2/3P4/Qb1P4/2N2N2/PP2PPPP/R1B1KB1R b KQkq - 0 6", + "hash": 4111682508692229528, + "name": "QGD: Ragozin, 5.Qa4+ Nc6 6.cxd5" + }, + "D38d": { + "eco": "D38d", + "fen": "r1bqk2r/ppp2ppp/2n2n2/3p2B1/Qb1P4/2N2N2/PP2PPPP/R3KB1R b KQkq - 1 7", + "hash": 13853406182781654683, + "name": "QGD: Ragozin, 5.Qa4+ Nc6 6.cxd5 exd5 7.Bg5" + }, + "D38e": { + "eco": "D38e", + "fen": "rnbqk2r/ppp2ppp/4pn2/3P4/1b1P4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 0 5", + "hash": 4631605703862573792, + "name": "QGD: Ragozin, 5.cxd5" + }, + "D38f": { + "eco": "D38f", + "fen": "rnbqk2r/ppp2ppp/5n2/3p2B1/1b1P4/2N2N2/PP2PPPP/R2QKB1R b KQkq - 1 6", + "hash": 13332988247593828835, + "name": "QGD: Ragozin, 5.cxd5 exd5 6.Bg5" + }, + "D38g": { + "eco": "D38g", + "fen": "rnbqk2r/ppp2pp1/5n1p/3p2B1/1b1P4/2N2N2/PP2PPPP/R2QKB1R w KQkq - 0 7", + "hash": 3170254093245319414, + "name": "QGD: Ragozin, 5.cxd5 exd5 6.Bg5 h6" + }, + "D38h": { + "eco": "D38h", + "fen": "rnbqk2r/ppp2ppp/4pn2/3p2B1/1bPP4/2N2N2/PP2PPPP/R2QKB1R b KQkq - 5 5", + "hash": 9815041381031351605, + "name": "QGD: Ragozin, 5.Bg5" + }, + "D38i": { + "eco": "D38i", + "fen": "r1bqk2r/pppn1ppp/4pn2/3p2B1/1bPP4/2N2N2/PP2PPPP/R2QKB1R w KQkq - 6 6", + "hash": 13534851248130029817, + "name": "QGD: Ragozin, Westphalia Variation" + }, + "D38j": { + "eco": "D38j", + "fen": "r1bqk2r/pppn1ppp/5n2/3p2B1/1b1P4/2N2N2/PPQ1PPPP/R3KB1R b KQkq - 1 7", + "hash": 4319589121425608779, + "name": "QGD: Ragozin, Westphalia, 7.Qc2" + }, + "D38k": { + "eco": "D38k", + "fen": "r1bqk2r/pppn1ppp/5n2/3p2B1/1b1P4/2N1PN2/PP3PPP/R2QKB1R b KQkq - 0 7", + "hash": 2866105499604919435, + "name": "QGD: Ragozin, Westphalia, 7.e3" + }, + "D38l": { + "eco": "D38l", + "fen": "rnbqk2r/ppp2pp1/4pn1p/3p2B1/1bPP4/2N2N2/PP2PPPP/R2QKB1R w KQkq - 0 6", + "hash": 1927896077713169440, + "name": "QGD: Ragozin, 5.Bg5 h6" + }, + "D38m": { + "eco": "D38m", + "fen": "rnb1k2r/ppp2pp1/4pq1p/3p4/1bPP4/2N2N2/PP2PPPP/R2QKB1R w KQkq - 0 7", + "hash": 12774191514652324416, + "name": "QGD: Ragozin, 5.Bg5 h6 6.Bxf6 Qxf6" + }, + "D38n": { + "eco": "D38n", + "fen": "rnb1k2r/ppp2pp1/4pq1p/3P4/1b1P4/2N2N2/PP2PPPP/R2QKB1R b KQkq - 0 7", + "hash": 13793839894652986973, + "name": "QGD: Ragozin, 5.Bg5 h6 6.Bxf6 Qxf6 7.cxd5" + }, + "D38o": { + "eco": "D38o", + "fen": "rnb1k2r/ppp2pp1/4pq1p/3p4/1bPP4/2N1PN2/PP3PPP/R2QKB1R b KQkq - 0 7", + "hash": 2047529462508468964, + "name": "QGD: Ragozin, 5.Bg5 h6 6.Bxf6 Qxf6 7.e3" + }, + "D38p": { + "eco": "D38p", + "fen": "rnb2rk1/ppp2pp1/4pq1p/3p4/1bPP4/2N1PN2/PP3PPP/2RQKB1R b K - 2 8", + "hash": 7591217157703010257, + "name": "QGD: Ragozin, 5.Bg5 h6 6.Bxf6 Qxf6 7.e3 O-O 8.Rc1" + }, + "D39a": { + "eco": "D39a", + "fen": "rnbqk2r/ppp2ppp/4pn2/6B1/1bpP4/2N2N2/PP2PPPP/R2QKB1R w KQkq - 0 6", + "hash": 6498748208932256726, + "name": "QGD: Ragozin, Vienna Variation" + }, + "D39b": { + "eco": "D39b", + "fen": "rnbqk2r/ppp2ppp/4pn2/6B1/QbpP4/2N2N2/PP2PPPP/R3KB1R b KQkq - 1 6", + "hash": 9841645428282624429, + "name": "QGD: Ragozin, Vienna, 6.Qa4+" + }, + "D39c": { + "eco": "D39c", + "fen": "rnbqk2r/ppp2ppp/4pn2/6B1/1bpPP3/2N2N2/PP3PPP/R2QKB1R b KQkq e3 0 6", + "hash": 11400647332608100060, + "name": "QGD: Ragozin, Vienna, 6.e4" + }, + "D39d": { + "eco": "D39d", + "fen": "rnbqk2r/pp3ppp/4pn2/2p3B1/1bpPP3/2N2N2/PP3PPP/R2QKB1R w KQkq c6 0 7", + "hash": 8666876175800028577, + "name": "QGD: Ragozin, Vienna, 6.e4 c5" + }, + "D39e": { + "eco": "D39e", + "fen": "rnbqk2r/pp3ppp/4pn2/2p1P1B1/1bpP4/2N2N2/PP3PPP/R2QKB1R b KQkq - 0 7", + "hash": 1819448801271049157, + "name": "QGD: Ragozin, Vienna, 6.e4 c5 7.e5" + }, + "D39f": { + "eco": "D39f", + "fen": "rnbqk2r/pp3ppp/4pn2/4P1B1/1bpp4/2N2N2/PP3PPP/R2QKB1R w KQkq - 0 8", + "hash": 5053391991483728387, + "name": "QGD: Ragozin, Vienna, 6.e4 c5 7.e5 cxd4" + }, + "D39g": { + "eco": "D39g", + "fen": "r1bqk2r/pp3ppp/2n1pn2/4P1B1/Qbpp4/2N2N2/PP3PPP/2KR1B1R b kq - 3 9", + "hash": 523932342377274083, + "name": "QGD: Ragozin, Vienna, 6.e4 c5 7.e5 cxd4 8.Qa4+ Nc6 9.O-O-O" + }, + "D39h": { + "eco": "D39h", + "fen": "rnbqk2r/pp3ppp/4pn2/2p3B1/1bBPP3/2N2N2/PP3PPP/R2QK2R b KQkq - 0 7", + "hash": 11252066191596783888, + "name": "QGD: Ragozin, Vienna, 6.e4 c5 7.Bxc4" + }, + "D39i": { + "eco": "D39i", + "fen": "rnb1k2r/pp3ppp/4pn2/q5B1/1bBNP3/2N5/PP3PPP/R2QK2R w KQkq - 1 9", + "hash": 9069735791432356727, + "name": "QGD: Ragozin, Vienna, 6.e4 c5 7.Bxc4, 8...Qa5" + }, + "D39j": { + "eco": "D39j", + "fen": "rnbqk2r/pp3ppp/4pn2/6B1/2BNP3/2b5/PP3PPP/R2QK2R w KQkq - 0 9", + "hash": 9625532689611399410, + "name": "QGD: Ragozin, Vienna, 6.e4 c5 7.Bxc4, 8...Bxc3+" + }, + "D39k": { + "eco": "D39k", + "fen": "rnb1k2r/pp3ppp/4pn2/qB4B1/3NP3/2P5/P4PPP/R2QK2R b KQkq - 2 10", + "hash": 13801701880128908817, + "name": "QGD: Ragozin, Vienna, 6.e4 c5 7.Bxc4, 8...Bxc3+, 10.Bb5+" + }, + "D40a": { + "eco": "D40a", + "fen": "rnbqkb1r/pp3ppp/4pn2/2pp4/2PP4/2N2N2/PP2PPPP/R1BQKB1R w KQkq c6 0 5", + "hash": 7015737115117358498, + "name": "QGD: Semi-Tarrasch" + }, + "D40b": { + "eco": "D40b", + "fen": "rnbqk2r/pp2bppp/4pn2/2pp4/2PP4/2N1PN2/PP3PPP/R1BQKB1R w KQkq - 1 6", + "hash": 15617875348252535191, + "name": "QGD: Semi-Tarrasch, 5.e3 Be7" + }, + "D40c": { + "eco": "D40c", + "fen": "rnbqkb1r/pp3ppp/4pn2/3p4/2Pp4/2N1PN2/PP3PPP/R1BQKB1R w KQkq - 0 6", + "hash": 10623744385893002432, + "name": "QGD: Semi-Tarrasch, 5.e3 cxd4" + }, + "D40d": { + "eco": "D40d", + "fen": "rnbqkb1r/1p3ppp/p3pn2/2pp4/2PP4/2N1PN2/PP3PPP/R1BQKB1R w KQkq - 0 6", + "hash": 2199538917838388698, + "name": "QGD: Semi-Tarrasch, 5.e3 a6" + }, + "D40e": { + "eco": "D40e", + "fen": "rnbqkb1r/1p3ppp/p3pn2/2pP4/3P4/2N1PN2/PP3PPP/R1BQKB1R b KQkq - 0 6", + "hash": 1201563007170734535, + "name": "QGD: Semi-Tarrasch, 5.e3 a6 6.cxd5" + }, + "D40f": { + "eco": "D40f", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/2pp4/2PP4/2N1PN2/PP3PPP/R1BQKB1R w KQkq - 1 6", + "hash": 7465980735071330309, + "name": "QGD: Semi-Tarrasch, 5.e3 Nc6" + }, + "D40g": { + "eco": "D40g", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/2pp4/2PP4/2NBPN2/PP3PPP/R1BQK2R b KQkq - 2 6", + "hash": 3643935801963111030, + "name": "QGD: Semi-Tarrasch, 5.e3 Nc6 6.Bd3" + }, + "D40h": { + "eco": "D40h", + "fen": "r1bq1rk1/pp3ppp/2nbpn2/2pp4/2PP4/2NBPN2/PP3PPP/R1BQ1RK1 w - - 5 8", + "hash": 16290688973484196265, + "name": "QGD: Semi-Tarrasch, Symmetrical Variation" + }, + "D40i": { + "eco": "D40i", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/2pp4/2PP4/P1N1PN2/1P3PPP/R1BQKB1R b KQkq - 0 6", + "hash": 12393990606141697605, + "name": "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3" + }, + "D40j": { + "eco": "D40j", + "fen": "r1bqkb1r/pp3ppp/2n1p3/2pp4/2PPn3/P1N1PN2/1P3PPP/R1BQKB1R w KQkq - 1 7", + "hash": 10810891274716128191, + "name": "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 Ne4" + }, + "D40k": { + "eco": "D40k", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/2p5/2pP4/P1N1PN2/1P3PPP/R1BQKB1R w KQkq - 0 7", + "hash": 9081075407031386278, + "name": "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 dxc4" + }, + "D40l": { + "eco": "D40l", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/3p4/2Pp4/P1N1PN2/1P3PPP/R1BQKB1R w KQkq - 0 7", + "hash": 17518711176558462851, + "name": "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 cxd4" + }, + "D40m": { + "eco": "D40m", + "fen": "r1bqk2r/pp2bppp/2n1pn2/2Pp4/3P4/P1N2N2/1P3PPP/R1BQKB1R b KQkq - 0 8", + "hash": 11443650787548679600, + "name": "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 cxd4 7.exd4 Be7 8.c5" + }, + "D40n": { + "eco": "D40n", + "fen": "r1bqk2r/pp2bppp/2n1pn2/3p4/2PP4/P1NB1N2/1P3PPP/R1BQK2R b KQkq - 2 8", + "hash": 11839761353066439283, + "name": "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 cxd4 7.exd4 Be7 8.Bd3" + }, + "D40o": { + "eco": "D40o", + "fen": "r1bqkb1r/1p3ppp/p1n1pn2/2pp4/2PP4/P1N1PN2/1P3PPP/R1BQKB1R w KQkq - 0 7", + "hash": 9148989223284135577, + "name": "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 a6" + }, + "D40p": { + "eco": "D40p", + "fen": "r1bqkb1r/1p3ppp/p1n1pn2/2pp4/2PP4/PPN1PN2/5PPP/R1BQKB1R b KQkq - 0 7", + "hash": 17460980692546960884, + "name": "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 a6 7.b3" + }, + "D40q": { + "eco": "D40q", + "fen": "r1bqkb1r/1p3ppp/p1n1pn2/2Pp4/2P5/P1N1PN2/1P3PPP/R1BQKB1R b KQkq - 0 7", + "hash": 77862917732958709, + "name": "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 a6 7.dxc5" + }, + "D40r": { + "eco": "D40r", + "fen": "r1bqk2r/bp3ppp/p1n1pn2/3p4/1PP5/P1N1PN2/5PPP/R1BQKB1R w KQkq - 1 9", + "hash": 18318085037941066525, + "name": "QGD: Semi-Tarrasch, 5.e3 Nc6 6.a3 a6 7.dxc5 Bxc5 8.b4 Ba7" + }, + "D41a": { + "eco": "D41a", + "fen": "rnbqkb1r/pp3ppp/4pn2/2pP4/3P4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 0 5", + "hash": 8031743812832729535, + "name": "QGD: Semi-Tarrasch, 5.cxd5" + }, + "D41b": { + "eco": "D41b", + "fen": "rnbqkb1r/pp3ppp/4pn2/3P4/3p4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 0 6", + "hash": 3488255910636318841, + "name": "QGD: Semi-Tarrasch, Keres Counterattack" + }, + "D41c": { + "eco": "D41c", + "fen": "rnbqkb1r/pp3ppp/4p3/2pn4/3P4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 0 6", + "hash": 17336613620954629347, + "name": "QGD: Semi-Tarrasch, 5.cxd5 Nxd5" + }, + "D41d": { + "eco": "D41d", + "fen": "r1bq1rk1/pp2bppp/2n1p3/2pn4/3P4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 5 9", + "hash": 11705598215974371275, + "name": "QGD: Semi-Tarrasch, 6.g3, Main Line" + }, + "D41e": { + "eco": "D41e", + "fen": "r1bq1rk1/pp2bppp/2n1p3/2pn4/3PP3/2N2NP1/PP3PBP/R1BQ1RK1 b - e3 0 9", + "hash": 7382999329857438401, + "name": "QGD: Semi-Tarrasch, 6.g3, Main Line, 9.e4" + }, + "D41f": { + "eco": "D41f", + "fen": "r1bq1rk1/pp2bppp/1nn1p3/2p5/3PP3/2N2NP1/PP3PBP/R1BQ1RK1 w - - 1 10", + "hash": 5759578120782670223, + "name": "QGD: Semi-Tarrasch, 6.g3, Main Line, 9.e4 Nb6" + }, + "D41g": { + "eco": "D41g", + "fen": "r1bq1rk1/pp2bppp/2n1p3/2p5/1n1PP3/2N2NP1/PP3PBP/R1BQ1RK1 w - - 1 10", + "hash": 15698678352088496762, + "name": "QGD: Semi-Tarrasch, 6.g3, Main Line, 9.e4 Ndb4" + }, + "D41h": { + "eco": "D41h", + "fen": "r1bq1rk1/pp2bppp/2n1p3/2pN4/3P4/5NP1/PP2PPBP/R1BQ1RK1 b - - 0 9", + "hash": 8309312319115303533, + "name": "QGD: Semi-Tarrasch, 6.g3, Main Line, 9.Nxd5" + }, + "D41i": { + "eco": "D41i", + "fen": "r1bq1rk1/pp3ppp/2n5/2bp4/8/5NP1/PP2PPBP/R1BQ1RK1 w - - 0 11", + "hash": 5994655350575144289, + "name": "QGD: Semi-Tarrasch, 6.g3, Main Line, 9.Nxd5 exd5 10.dxc5 Bxc5" + }, + "D41j": { + "eco": "D41j", + "fen": "r1bq1rk1/pp3ppp/2n5/2bp2B1/8/5NP1/PP2PPBP/R2Q1RK1 b - - 1 11", + "hash": 10766730607718811305, + "name": "QGD: Semi-Tarrasch, 6.g3, Main Line, 9.Nxd5 exd5 10.dxc5 Bxc5 11.Bg5" + }, + "D41k": { + "eco": "D41k", + "fen": "rnbqkb1r/pp3ppp/4p3/2pn4/3PP3/2N2N2/PP3PPP/R1BQKB1R b KQkq e3 0 6", + "hash": 3791762007581243881, + "name": "QGD: Semi-Tarrasch, 6.e4" + }, + "D41l": { + "eco": "D41l", + "fen": "r1bqkb1r/pp3ppp/2n1p3/8/3PP3/5N2/P4PPP/R1BQKB1R w KQkq - 1 9", + "hash": 11797496719347978065, + "name": "QGD: Semi-Tarrasch, 6.e4, 8.cxd4 Nc6" + }, + "D41m": { + "eco": "D41m", + "fen": "rnbqk2r/pp3ppp/4p3/8/1b1PP3/5N2/P4PPP/R1BQKB1R w KQkq - 1 9", + "hash": 13913186220285158000, + "name": "QGD: Semi-Tarrasch, 6.e4, 8.cxd4 Bb4+" + }, + "D41n": { + "eco": "D41n", + "fen": "rnbq1rk1/pp3ppp/4p3/8/2BPP3/5N2/P2Q1PPP/R3K2R b KQ - 2 11", + "hash": 8339383700005736309, + "name": "QGD: Semi-Tarrasch, 6.e4, Main Line" + }, + "D41o": { + "eco": "D41o", + "fen": "r1bq1rk1/p4ppp/1pn1p3/8/2BPP3/5N2/P2Q1PPP/R4RK1 w - - 0 13", + "hash": 14792806952176420605, + "name": "QGD: Semi-Tarrasch, 6.e4, Main Line, 12...b6" + }, + "D41p": { + "eco": "D41p", + "fen": "rnbqkb1r/pp3ppp/4p3/2pn4/3P4/2N1PN2/PP3PPP/R1BQKB1R b KQkq - 0 6", + "hash": 6752378593011862599, + "name": "QGD: Semi-Tarrasch, 6.e3" + }, + "D41q": { + "eco": "D41q", + "fen": "r1bqkb1r/pp3ppp/2n1p3/2pn4/3P4/2N1PN2/PP3PPP/R1BQKB1R w KQkq - 1 7", + "hash": 17751109919236237636, + "name": "QGD: Semi-Tarrasch, 6.e3 Nc6" + }, + "D41r": { + "eco": "D41r", + "fen": "r1bqkb1r/pp3ppp/2n1p3/2pn4/2BP4/2N1PN2/PP3PPP/R1BQK2R b KQkq - 2 7", + "hash": 10802772404653195234, + "name": "QGD: Semi-Tarrasch, 6.e3 Nc6 7.Bc4" + }, + "D41s": { + "eco": "D41s", + "fen": "r1bq1rk1/pp2bppp/2n1p3/3n4/2BP4/2N2N2/PP3PPP/R1BQ1RK1 w - - 3 10", + "hash": 13579509113509036892, + "name": "QGD: Semi-Tarrasch, 6.e3 Nc6 7.Bc4" + }, + "D41t": { + "eco": "D41t", + "fen": "r1bq1rk1/pp2bppp/2n1p3/8/2BP4/2P2N2/P4PPP/R1BQR1K1 b - - 0 11", + "hash": 17844256994478169619, + "name": "QGD: Semi-Tarrasch, 7.Bc4 Main Line" + }, + "D41u": { + "eco": "D41u", + "fen": "r2q1rk1/pb2bppp/1pn1p3/8/3P4/2PB1N2/P1Q2PPP/R1B1R1K1 b - - 3 13", + "hash": 5993105386709003179, + "name": "QGD: Semi-Tarrasch, 7.Bc4 Main Line, 13.Qc2" + }, + "D41v": { + "eco": "D41v", + "fen": "r2q1rk1/pb2bppp/1pn1p3/8/3P3P/2PB1N2/P4PP1/R1BQR1K1 b - h3 0 13", + "hash": 9120114340453445297, + "name": "QGD: Semi-Tarrasch, 7.Bc4 Main Line, 13.h4" + }, + "D42a": { + "eco": "D42a", + "fen": "r1bqkb1r/pp3ppp/2n1p3/2pn4/3P4/2NBPN2/PP3PPP/R1BQK2R b KQkq - 2 7", + "hash": 11769381156871334711, + "name": "QGD: Semi-Tarrasch, 6.e3 Nc6 7.Bd3" + }, + "D42b": { + "eco": "D42b", + "fen": "r1bqk2r/pp2bppp/2n1p3/2pn4/3P4/2NBPN2/PP3PPP/R1BQK2R w KQkq - 3 8", + "hash": 13229691287840901030, + "name": "QGD: Semi-Tarrasch, 6.e3 Nc6 7.Bd3 Be7" + }, + "D42c": { + "eco": "D42c", + "fen": "r1bq1rk1/pp2bppp/2n1p3/2pn4/3P4/2NBPN2/PP3PPP/R1BQ1RK1 w - - 5 9", + "hash": 14070609327358244189, + "name": "QGD: Semi-Tarrasch, 6.e3 Nc6 7.Bd3 Be7 8.O-O O-O" + }, + "D42d": { + "eco": "D42d", + "fen": "r1bqkb1r/pp3ppp/2n1p3/3n4/3p4/2NBPN2/PP3PPP/R1BQK2R w KQkq - 0 8", + "hash": 18179773834335978225, + "name": "QGD: Semi-Tarrasch, 6.e3 Nc6 7.Bd3 cxd4" + }, + "D42e": { + "eco": "D42e", + "fen": "r1bqk2r/pp2bppp/2n1p3/3n4/3P4/2NB1N2/PP3PPP/R1BQK2R w KQkq - 1 9", + "hash": 18309270618204005746, + "name": "QGD: Semi-Tarrasch, 7.Bd3 Main Line" + }, + "D42f": { + "eco": "D42f", + "fen": "r1bq1rk1/pp2bppp/2n1p3/3n4/3P4/2NB1N2/PP3PPP/R1BQ1RK1 w - - 3 10", + "hash": 10000821442245154697, + "name": "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 9.O-O O-O" + }, + "D42g": { + "eco": "D42g", + "fen": "r1bq1rk1/pp2bppp/2n1p3/3n4/3P4/P1NB1N2/1P3PPP/R1BQ1RK1 b - - 0 10", + "hash": 4708019984145406409, + "name": "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.a3" + }, + "D42h": { + "eco": "D42h", + "fen": "r1bq1rk1/pp2bppp/2n1pn2/8/3P4/P1NB1N2/1P3PPP/R1BQ1RK1 w - - 1 11", + "hash": 9603610383280450684, + "name": "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.a3 Nf6" + }, + "D42i": { + "eco": "D42i", + "fen": "r1bq1rk1/pp3ppp/2n1pb2/3n4/3P4/P1NB1N2/1P3PPP/R1BQ1RK1 w - - 1 11", + "hash": 7153772978273196328, + "name": "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.a3 Bf6" + }, + "D42j": { + "eco": "D42j", + "fen": "r1bq1rk1/pp2bppp/2n1p3/3n4/3P4/2NB1N2/PP3PPP/R1BQR1K1 b - - 4 10", + "hash": 1044272811877170333, + "name": "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1" + }, + "D42k": { + "eco": "D42k", + "fen": "r1bq1rk1/pp2bppp/4p3/3n4/1n1P4/2NB1N2/PP3PPP/R1BQR1K1 w - - 5 11", + "hash": 1481184520529948841, + "name": "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Ncb4" + }, + "D42l": { + "eco": "D42l", + "fen": "r1bq1rk1/pp2bppp/2n1pn2/8/3P4/2NB1N2/PP3PPP/R1BQR1K1 w - - 5 11", + "hash": 14586841911979084072, + "name": "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Nf6" + }, + "D42m": { + "eco": "D42m", + "fen": "r1bq1rk1/pp2bppp/2n1pn2/8/3P4/P1NB1N2/1P3PPP/R1BQR1K1 b - - 0 11", + "hash": 140436537698912104, + "name": "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Nf6 11.a3" + }, + "D42n": { + "eco": "D42n", + "fen": "r1bq1rk1/p3bppp/1pn1pn2/6B1/3P4/P1NB1N2/1P3PPP/R2QR1K1 b - - 1 12", + "hash": 12448495205518076731, + "name": "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Nf6 11.a3 b6 12.Bg5" + }, + "D42o": { + "eco": "D42o", + "fen": "r1bq1rk1/p3bppp/1pn1pn2/8/3P4/P1N2N2/1PB2PPP/R1BQR1K1 b - - 1 12", + "hash": 11371275544299876423, + "name": "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Nf6 11.a3 b6 12.Bc2" + }, + "D42p": { + "eco": "D42p", + "fen": "r1bq1rk1/pp3ppp/2n1pb2/3n4/3P4/2NB1N2/PP3PPP/R1BQR1K1 w - - 5 11", + "hash": 3201902323322797180, + "name": "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Bf6" + }, + "D42q": { + "eco": "D42q", + "fen": "r1bq1rk1/pp2nppp/4pb2/3n4/3PB3/2N2N2/PP3PPP/R1BQR1K1 w - - 7 12", + "hash": 8157930988378705063, + "name": "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Bf6 11.Be4 Nce7" + }, + "D42r": { + "eco": "D42r", + "fen": "r1bq1rk1/pp2nppp/4pb2/3nN3/3PB3/2N5/PP3PPP/R1BQR1K1 b - - 8 12", + "hash": 12397869697918020049, + "name": "QGD: Semi-Tarrasch, 7.Bd3 Main Line, 10.Re1 Bf6 11.Be4 Nce7 12.Ne5" + }, + "D43a": { + "eco": "D43a", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/3p4/2PP4/2N2N2/PP2PPPP/R1BQKB1R w KQkq - 0 5", + "hash": 1537939680406787428, + "name": "Semi-Slav" + }, + "D43b": { + "eco": "D43b", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/3p4/2PP4/2N2NP1/PP2PP1P/R1BQKB1R b KQkq - 0 5", + "hash": 4157210292956695900, + "name": "Semi-Slav: 5.g3" + }, + "D43c": { + "eco": "D43c", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/3p4/2PP4/2NQ1N2/PP2PPPP/R1B1KB1R b KQkq - 1 5", + "hash": 13056066372618765331, + "name": "Semi-Slav: 5.Qd3" + }, + "D43d": { + "eco": "D43d", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/3p4/2PP4/1QN2N2/PP2PPPP/R1B1KB1R b KQkq - 1 5", + "hash": 3435815805720493442, + "name": "Semi-Slav: 5.Qb3" + }, + "D43e": { + "eco": "D43e", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/8/2QP4/2N2N2/PP2PPPP/R1B1KB1R b KQkq - 0 6", + "hash": 15183285129527291971, + "name": "Semi-Slav: 5.Qb3 dxc4" + }, + "D43f": { + "eco": "D43f", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/3p2B1/2PP4/2N2N2/PP2PPPP/R2QKB1R b KQkq - 1 5", + "hash": 15207966320207662764, + "name": "Semi-Slav: Botvinnik (Anti-Meran)" + }, + "D43g": { + "eco": "D43g", + "fen": "rnbqk2r/pp2bppp/2p1pn2/3p2B1/2PP4/2N1PN2/PP3PPP/R2QKB1R b KQkq - 0 6", + "hash": 7704741518474554009, + "name": "Semi-Slav: Botvinnik, 5...Be7 6.e3" + }, + "D43h": { + "eco": "D43h", + "fen": "rnbq1rk1/pp2bppp/2p1pn2/3p2B1/2PP4/2N1PN2/PP3PPP/R2QKB1R w KQ - 1 7", + "hash": 6936757429723513714, + "name": "Semi-Slav: Botvinnik, 5...Be7 6.e3 O-O" + }, + "D43i": { + "eco": "D43i", + "fen": "r1bqk2r/pp1nbppp/2p1pn2/3p2B1/2PP4/2N1PN2/PP3PPP/R2QKB1R w KQkq - 1 7", + "hash": 6417566569446623061, + "name": "Semi-Slav: Botvinnik, 5...Be7 6.e3 Nbd7" + }, + "D43j": { + "eco": "D43j", + "fen": "r1bqk2r/pp1nbppp/2p1pn2/3p2B1/2PP4/2NBPN2/PP3PPP/R2QK2R b KQkq - 2 7", + "hash": 865367780013704486, + "name": "Semi-Slav: Botvinnik, 5...Be7 6.e3 Nbd7 7.Bd3" + }, + "D43k": { + "eco": "D43k", + "fen": "rnbqkb1r/pp3pp1/2p1pn1p/3p2B1/2PP4/2N2N2/PP2PPPP/R2QKB1R w KQkq - 0 6", + "hash": 4754331905032275897, + "name": "Semi-Slav: Moscow Variation" + }, + "D43l": { + "eco": "D43l", + "fen": "rnbqkb1r/pp3pp1/2p1pn1p/8/2pPP2B/2N2N2/PP3PPP/R2QKB1R b KQkq e3 0 7", + "hash": 969570333713577675, + "name": "Semi-Slav: Moscow, 6.Bh4 Gambit, 7.e4" + }, + "D43m": { + "eco": "D43m", + "fen": "rnbqkb1r/p4p2/2p1pn1p/1p4p1/2pPP3/2N2NB1/PP2BPPP/R2QK2R b KQkq - 1 9", + "hash": 1717493844072500013, + "name": "Semi-Slav: Moscow, 6.Bh4 Gambit, Main Line" + }, + "D43n": { + "eco": "D43n", + "fen": "rn1qkb1r/pb3p2/2p1pn1p/1p4p1/2pPP3/2N2NB1/PP2BPPP/R2QK2R w KQkq - 2 10", + "hash": 12053192850067563702, + "name": "Semi-Slav: Moscow, 6.Bh4 Gambit, Main Line, 9...Bb7" + }, + "D43o": { + "eco": "D43o", + "fen": "rnbqkb1r/pp3pp1/2p1pB1p/3p4/2PP4/2N2N2/PP2PPPP/R2QKB1R b KQkq - 0 6", + "hash": 16484809044320524633, + "name": "Semi-Slav: Moscow, 6.Bxf6" + }, + "D43p": { + "eco": "D43p", + "fen": "rnb1kb1r/pp3pp1/2p1pq1p/3p4/2PP4/2N2NP1/PP2PP1P/R2QKB1R b KQkq - 0 7", + "hash": 14310808113925190113, + "name": "Semi-Slav: Moscow, 7.g3" + }, + "D43q": { + "eco": "D43q", + "fen": "rnb1kb1r/pp3pp1/2p1pq1p/3p4/2PP4/1QN2N2/PP2PPPP/R3KB1R b KQkq - 1 7", + "hash": 15025465010277417279, + "name": "Semi-Slav: Moscow, Hastings Variation" + }, + "D43r": { + "eco": "D43r", + "fen": "rnb1kb1r/pp3pp1/2p1pq1p/3p4/2PP4/2N2N2/PPQ1PPPP/R3KB1R b KQkq - 1 7", + "hash": 6585948707664434621, + "name": "Semi-Slav: Moscow, 7.Qc2" + }, + "D43s": { + "eco": "D43s", + "fen": "rnb1kb1r/pp3pp1/2p1pq1p/3p4/2PP4/2N1PN2/PP3PPP/R2QKB1R b KQkq - 0 7", + "hash": 5139114992901136765, + "name": "Semi-Slav: Moscow, 7.e3" + }, + "D43t": { + "eco": "D43t", + "fen": "r1b1kb1r/pp1n1pp1/2p1pq1p/3p4/2PP4/2N1PN2/PP3PPP/R2QKB1R w KQkq - 1 8", + "hash": 8408984142966508721, + "name": "Semi-Slav: Moscow, 7.e3 Nd7" + }, + "D43u": { + "eco": "D43u", + "fen": "r1b1kb1r/pp1n1pp1/2p1pq1p/3p4/2PP4/2NBPN2/PP3PPP/R2QK2R b KQkq - 2 8", + "hash": 2431687768312221378, + "name": "Semi-Slav: Moscow, 7.e3 Nd7 8.Bd3" + }, + "D43v": { + "eco": "D43v", + "fen": "r1b1kb1r/pp1n1pp1/2p1pq1p/8/2pP4/2NBPN2/PP3PPP/R2QK2R w KQkq - 0 9", + "hash": 17562118894214668321, + "name": "Semi-Slav: Moscow, 7.e3 Nd7 8.Bd3 dxc4" + }, + "D43w": { + "eco": "D43w", + "fen": "r1b1k2r/pp1n1pb1/2p1pqpp/8/1PBP4/2N1PN2/P4PPP/R2Q1RK1 b kq b3 0 11", + "hash": 4002426870596996415, + "name": "Semi-Slav: Moscow, Main Line, 11.b4" + }, + "D43x": { + "eco": "D43x", + "fen": "r1b1k2r/pp1n1pb1/2p1pqpp/8/2BP4/2N1PN2/PP3PPP/2RQ1RK1 b kq - 3 11", + "hash": 1405252201450058837, + "name": "Semi-Slav: Moscow, Main Line, 11.Rc1" + }, + "D44a": { + "eco": "D44a", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/6B1/2pP4/2N2N2/PP2PPPP/R2QKB1R w KQkq - 0 6", + "hash": 75353901211836495, + "name": "Semi-Slav: Botvinnik Accepted" + }, + "D44b": { + "eco": "D44b", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/6B1/P1pP4/2N2N2/1P2PPPP/R2QKB1R b KQkq a3 0 6", + "hash": 7692934405626017153, + "name": "Semi-Slav: Botvinnik, 6.a4" + }, + "D44c": { + "eco": "D44c", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/6B1/2pPP3/2N2N2/PP3PPP/R2QKB1R b KQkq e3 0 6", + "hash": 14198926798656068933, + "name": "Semi-Slav: Botvinnik, 6.e4" + }, + "D44d": { + "eco": "D44d", + "fen": "rnbqkb1r/p4ppp/2p1pn2/1p4B1/P1pPP3/2N2N2/1P3PPP/R2QKB1R b KQkq a3 0 7", + "hash": 14898378468891112886, + "name": "Semi-Slav: Botvinnik, 7.a4" + }, + "D44e": { + "eco": "D44e", + "fen": "rnbqkb1r/p4ppp/2p1pn2/1p2P1B1/2pP4/2N2N2/PP3PPP/R2QKB1R b KQkq - 0 7", + "hash": 14155310990972470812, + "name": "Semi-Slav: Botvinnik, 7.e5" + }, + "D44f": { + "eco": "D44f", + "fen": "rnbqkb1r/p4p2/2p1pP1p/1p4p1/2pP3B/2N2N2/PP3PPP/R2QKB1R b KQkq - 0 9", + "hash": 11002005130139992189, + "name": "Semi-Slav: Botvinnik, 9.exf6" + }, + "D44g": { + "eco": "D44g", + "fen": "rnbqkb1r/p4p2/2p1pP1p/1p2N3/2pP3p/2N5/PP3PPP/R2QKB1R b KQkq - 1 10", + "hash": 8601831714915675488, + "name": "Semi-Slav: Botvinnik, Ekstrom Variation" + }, + "D44h": { + "eco": "D44h", + "fen": "rnbqkb1r/p4p2/2p1pn1p/1p2P1N1/2pP3B/2N5/PP3PPP/R2QKB1R b KQkq - 0 9", + "hash": 17288633386590238599, + "name": "Semi-Slav: Botvinnik, 9.Nxg5" + }, + "D44i": { + "eco": "D44i", + "fen": "rnbqkb1r/p4p2/2p1p2p/1p1nP1N1/2pP3B/2N5/PP3PPP/R2QKB1R w KQkq - 1 10", + "hash": 3169777186280899122, + "name": "Semi-Slav: Botvinnik, Alatortsev Variation" + }, + "D44j": { + "eco": "D44j", + "fen": "rnbqkb1r/p4p2/2p1pn2/1p2P1p1/2pP3B/2N5/PP3PPP/R2QKB1R w KQkq - 0 10", + "hash": 10093336879911707773, + "name": "Semi-Slav: Botvinnik, 9.Nxg5" + }, + "D44k": { + "eco": "D44k", + "fen": "r1bqkb1r/p2n1p2/2p1pn2/1p2P1B1/2pP4/2N3P1/PP3P1P/R2QKB1R b KQkq - 0 11", + "hash": 18225348845877620265, + "name": "Semi-Slav: Botvinnik, Lilienthal Variation" + }, + "D44l": { + "eco": "D44l", + "fen": "r1b1kb1r/p2n1p2/2p1pn2/qp2P1B1/2pP4/2N3P1/PP3P1P/R2QKB1R w KQkq - 1 12", + "hash": 2710858481923936166, + "name": "Semi-Slav: Botvinnik, Lilienthal, 11...Qa5" + }, + "D44m": { + "eco": "D44m", + "fen": "r2qkb1r/pb1n1p2/2p1pn2/1p2P1B1/2pP4/2N3P1/PP3P1P/R2QKB1R w KQkq - 1 12", + "hash": 5511626059047420338, + "name": "Semi-Slav: Botvinnik, Lilienthal, 11...Bb7" + }, + "D44n": { + "eco": "D44n", + "fen": "r1bqkb1r/p2n1p2/2p1pn2/1p2P1B1/2pP4/2N2Q2/PP3PPP/R3KB1R b KQkq - 2 11", + "hash": 7649841448647844010, + "name": "Semi-Slav: Botvinnik, Szabo Variation" + }, + "D44o": { + "eco": "D44o", + "fen": "r1bqkb1r/p2n1p2/2p1pP2/1p4B1/2pP4/2N5/PP3PPP/R2QKB1R b KQkq - 0 11", + "hash": 14190603871600567412, + "name": "Semi-Slav: Botvinnik, Main Line" + }, + "D44p": { + "eco": "D44p", + "fen": "r2qkb1r/pb1n1p2/2p1pP2/1p4B1/2pP4/2N3P1/PP3P1P/R2QKB1R b KQkq - 0 12", + "hash": 6384367922928522199, + "name": "Semi-Slav: Botvinnik, Main Line, 12.g3" + }, + "D44q": { + "eco": "D44q", + "fen": "r2qkb1r/pb1n1p2/4pP2/1pp3B1/2pP4/2N3P1/PP3P1P/R2QKB1R w KQkq - 0 13", + "hash": 15295576905486290456, + "name": "Semi-Slav: Botvinnik, Main Line, 12.g3 c5" + }, + "D44r": { + "eco": "D44r", + "fen": "r3kb1r/pb1n1p2/1q2pP2/1ppP2B1/2p5/2N3P1/PP3P1P/R2QKB1R w KQkq - 1 14", + "hash": 12228244010174549663, + "name": "Semi-Slav: Botvinnik, Main Line, 12.g3 c5 13.d5 Qb6" + }, + "D45a": { + "eco": "D45a", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/3p4/2PP4/2N1PN2/PP3PPP/R1BQKB1R b KQkq - 0 5", + "hash": 13293105817214541248, + "name": "Semi-Slav: 5.e3" + }, + "D45b": { + "eco": "D45b", + "fen": "rnbqk2r/pp3ppp/2pbpn2/3p4/2PP4/2N1PN2/PP3PPP/R1BQKB1R w KQkq - 1 6", + "hash": 2027451944848231652, + "name": "Semi-Slav: 5.e3 Bd6" + }, + "D45c": { + "eco": "D45c", + "fen": "rnbqk2r/pp2bppp/2p1pn2/3p4/2PP4/2N1PN2/PP3PPP/R1BQKB1R w KQkq - 1 6", + "hash": 12445392594784743761, + "name": "Semi-Slav: 5.e3 Be7" + }, + "D45d": { + "eco": "D45d", + "fen": "rnbqkb1r/pp3ppp/2p1p3/3p4/2PPn3/2N1PN2/PP3PPP/R1BQKB1R w KQkq - 1 6", + "hash": 9399810462252126266, + "name": "Semi-Slav: 5.e3 Ne4" + }, + "D45e": { + "eco": "D45e", + "fen": "rnbqkb1r/1p3ppp/p1p1pn2/3p4/2PP4/2N1PN2/PP3PPP/R1BQKB1R w KQkq - 0 6", + "hash": 7677908098343806236, + "name": "Semi-Slav: Accelerated Meran (Alekhine Variation)" + }, + "D45f": { + "eco": "D45f", + "fen": "r1bqkb1r/pp1n1ppp/2p1pn2/3p4/2PP4/2N1PN2/PP3PPP/R1BQKB1R w KQkq - 1 6", + "hash": 10059319811599020044, + "name": "Semi-Slav: 5.e3 Nbd7" + }, + "D45g": { + "eco": "D45g", + "fen": "r1bqkb1r/pp1n1ppp/2p1pn2/3p4/2PP4/P1N1PN2/1P3PPP/R1BQKB1R b KQkq - 0 6", + "hash": 4613325614628486732, + "name": "Semi-Slav: 6.a3" + }, + "D45h": { + "eco": "D45h", + "fen": "r1bqkb1r/pp1n1ppp/2p1pn2/3p4/2PP4/2N1PN2/PPQ2PPP/R1B1KB1R b KQkq - 2 6", + "hash": 4215527647041457256, + "name": "Semi-Slav: 6.Qc2" + }, + "D45i": { + "eco": "D45i", + "fen": "r1bqkb1r/p2n1ppp/1pp1pn2/3p4/2PP4/2N1PN2/PPQ2PPP/R1B1KB1R w KQkq - 0 7", + "hash": 5902487516367109107, + "name": "Semi-Slav: 6.Qc2 b6" + }, + "D45j": { + "eco": "D45j", + "fen": "r1bqk2r/pp1nbppp/2p1pn2/3p4/2PP4/2N1PN2/PPQ2PPP/R1B1KB1R w KQkq - 3 7", + "hash": 3336291978073940217, + "name": "Semi-Slav: 6.Qc2 Be7" + }, + "D45k": { + "eco": "D45k", + "fen": "r1bqk2r/pp1n1ppp/2pbpn2/3p4/2PP4/2N1PN2/PPQ2PPP/R1B1KB1R w KQkq - 3 7", + "hash": 11446177238108888396, + "name": "Semi-Slav: 6.Qc2 Bd6" + }, + "D45l": { + "eco": "D45l", + "fen": "r1bqk2r/pp1n1ppp/2pbpn2/3p4/2PP2P1/2N1PN2/PPQ2P1P/R1B1KB1R b KQkq g3 0 7", + "hash": 4437730476988411985, + "name": "Semi-Slav: 6.Qc2 Bd6 7.g4" + }, + "D45m": { + "eco": "D45m", + "fen": "r1bqk2r/pp1n1ppp/2pbpn2/8/2pP2P1/2N1PN2/PPQ2P1P/R1B1KB1R w KQkq - 0 8", + "hash": 17263358851469500082, + "name": "Semi-Slav: 6.Qc2 Bd6 7.g4 dxc4" + }, + "D45n": { + "eco": "D45n", + "fen": "r1bqk2r/pp1n1ppp/2p1pn2/3p4/1bPP2P1/2N1PN2/PPQ2P1P/R1B1KB1R w KQkq - 1 8", + "hash": 12131253142148557918, + "name": "Semi-Slav: 6.Qc2 Bd6 7.g4 Bb4" + }, + "D45o": { + "eco": "D45o", + "fen": "r1bqk2r/pp1n1ppp/2pbp3/3p4/2PP2n1/2N1PN2/PPQ2P1P/R1B1KB1R w KQkq - 0 8", + "hash": 6895382061603239405, + "name": "Semi-Slav: 6.Qc2 Bd6 7.g4 Nxg4" + }, + "D45p": { + "eco": "D45p", + "fen": "r1bqk2r/pp1n1ppp/2pbpn2/3p4/2PP4/1PN1PN2/P1Q2PPP/R1B1KB1R b KQkq - 0 7", + "hash": 1332676096745354785, + "name": "Semi-Slav: 6.Qc2 Bd6 7.b3" + }, + "D45q": { + "eco": "D45q", + "fen": "r1bq1rk1/pp1n1ppp/2pbpn2/3p4/2PP4/1PN1PN2/PBQ2PPP/R3KB1R b KQ - 2 8", + "hash": 15612460844664505125, + "name": "Semi-Slav: 6.Qc2 Bd6 7.b3 O-O 8.Bb2" + }, + "D45r": { + "eco": "D45r", + "fen": "r1bq1rk1/pp1n1ppp/2pbpn2/3p4/2PP4/1PN1PN2/P1Q1BPPP/R1B1K2R b KQ - 2 8", + "hash": 7734637242996856169, + "name": "Semi-Slav: 6.Qc2 Bd6 7.b3 O-O 8.Be2" + }, + "D45s": { + "eco": "D45s", + "fen": "r1bq1rk1/p2n1ppp/1ppbpn2/3p4/2PP4/1PN1PN2/P1Q1BPPP/R1B1K2R w KQ - 0 9", + "hash": 17938013754893042, + "name": "Semi-Slav: 6.Qc2 Bd6 7.b3 O-O 8.Be2 b6" + }, + "D45t": { + "eco": "D45t", + "fen": "r1bqr1k1/pp1n1ppp/2pbpn2/3p4/2PP4/1PN1PN2/P1Q1BPPP/R1B1K2R w KQ - 3 9", + "hash": 8576882115606835435, + "name": "Semi-Slav: 6.Qc2 Bd6 7.b3 O-O 8.Be2 Re8" + }, + "D45u": { + "eco": "D45u", + "fen": "r1bqk2r/pp1n1ppp/2pbpn2/3p4/2PP4/2N1PN2/PPQB1PPP/R3KB1R b KQkq - 4 7", + "hash": 13210648941655569992, + "name": "Semi-Slav: 6.Qc2 Bd6 7.Bd2" + }, + "D45v": { + "eco": "D45v", + "fen": "r1bqk2r/pp1n1ppp/2pbpn2/3p4/2PP4/2N1PN2/PPQ1BPPP/R1B1K2R b KQkq - 4 7", + "hash": 17102558624716232687, + "name": "Semi-Slav: 6.Qc2 Bd6 7.Be2" + }, + "D45w": { + "eco": "D45w", + "fen": "r1bq1rk1/pp1n1ppp/2pb1n2/3pp3/2PP4/2N1PN2/PPQ1BPPP/R1B2RK1 w - - 0 9", + "hash": 11338995300528015481, + "name": "Semi-Slav: 6.Qc2 Bd6 7.Be2 O-O 8.O-O e5" + }, + "D45x": { + "eco": "D45x", + "fen": "r1b2rk1/pp1nqppp/2pbpn2/3p4/2PP4/2N1PN2/PPQ1BPPP/R1B2RK1 w - - 7 9", + "hash": 178516191685872510, + "name": "Semi-Slav: 6.Qc2 Bd6 7.Be2 O-O 8.O-O Qe7" + }, + "D45y": { + "eco": "D45y", + "fen": "r1bqr1k1/pp1n1ppp/2pbpn2/3p4/2PP4/2N1PN2/PPQ1BPPP/R1B2RK1 w - - 7 9", + "hash": 9643385165725810838, + "name": "Semi-Slav: 6.Qc2 Bd6 7.Be2 O-O 8.O-O Re8" + }, + "D46a": { + "eco": "D46a", + "fen": "r1bqkb1r/pp1n1ppp/2p1pn2/3p4/2PP4/2NBPN2/PP3PPP/R1BQK2R b KQkq - 2 6", + "hash": 16038518597473563263, + "name": "Semi-Slav: 6.Bd3" + }, + "D46b": { + "eco": "D46b", + "fen": "r1bqk2r/pp1n1ppp/2p1pn2/3p4/1bPP4/2NBPN2/PP3PPP/R1BQK2R w KQkq - 3 7", + "hash": 1717325794186869341, + "name": "Semi-Slav: Romih Variation" + }, + "D46c": { + "eco": "D46c", + "fen": "r1bqk2r/pp1nbppp/2p1pn2/3p4/2PP4/2NBPN2/PP3PPP/R1BQK2R w KQkq - 3 7", + "hash": 14580456980461379310, + "name": "Semi-Slav: Bogoljubow Variation" + }, + "D46d": { + "eco": "D46d", + "fen": "r1bq1rk1/pp1nbppp/2p1pn2/3p4/2PP4/1PNBPN2/P4PPP/R1BQ1RK1 b - - 0 8", + "hash": 3612949617599350648, + "name": "Semi-Slav: Bogoljubow, 7.O-O O-O 8.b3" + }, + "D46e": { + "eco": "D46e", + "fen": "r1bqk2r/pp1n1ppp/2pbpn2/3p4/2PP4/2NBPN2/PP3PPP/R1BQK2R w KQkq - 3 7", + "hash": 8848498162624799579, + "name": "Semi-Slav: Chigorin Defence" + }, + "D46f": { + "eco": "D46f", + "fen": "r1bqk2r/pp1n1ppp/2pbpn2/3p4/2PP4/2NBPN2/PPQ2PPP/R1B1K2R b KQkq - 4 7", + "hash": 14687747118821842751, + "name": "Semi-Slav: Chigorin, 7.Qc2" + }, + "D46g": { + "eco": "D46g", + "fen": "r1bqk2r/pp1n1ppp/2pbpn2/8/2pP4/2NBPN2/PPQ2PPP/R1B1K2R w KQkq - 0 8", + "hash": 1860942249787552220, + "name": "Semi-Slav: Chigorin, 7.Qc2 dxc4" + }, + "D46h": { + "eco": "D46h", + "fen": "r1bq1rk1/pp1n1ppp/2pbpn2/3p4/2PP4/2NBPN2/PPQ2PPP/R1B1K2R w KQ - 5 8", + "hash": 13942495289236354772, + "name": "Semi-Slav: Chigorin, 7.Qc2 O-O" + }, + "D46i": { + "eco": "D46i", + "fen": "r1bq1rk1/pp1n1ppp/2pbpn2/8/2BP4/2N1PN2/PPQ2PPP/R1B2RK1 b - - 0 9", + "hash": 2644958737403691244, + "name": "Semi-Slav: Chigorin, 7.Qc2 Main Line" + }, + "D46j": { + "eco": "D46j", + "fen": "r1b2rk1/pp1nqppp/2pbpn2/8/2BP4/2N1PN2/PPQ2PPP/R1B2RK1 w - - 1 10", + "hash": 13784138046251200134, + "name": "Semi-Slav: Chigorin, 7.Qc2 Main Line, 9...Qe7" + }, + "D46k": { + "eco": "D46k", + "fen": "r1bq1rk1/1p1n1ppp/p1pbpn2/8/2BP4/2N1PN2/PPQ2PPP/R1B2RK1 w - - 0 10", + "hash": 17745086358913005616, + "name": "Semi-Slav: Chigorin, 7.Qc2 Main Line, 9...a6" + }, + "D46l": { + "eco": "D46l", + "fen": "r1bq1rk1/p2n1ppp/2pbpn2/1p6/2BP4/2N1PN2/PPQ2PPP/R1B2RK1 w - b6 0 10", + "hash": 4949647171808853457, + "name": "Semi-Slav: Chigorin, 7.Qc2 Main Line, 9...b5" + }, + "D46m": { + "eco": "D46m", + "fen": "r1bq1rk1/p2n1ppp/2pbpn2/1p6/3P4/2N1PN2/PPQ1BPPP/R1B2RK1 b - - 1 10", + "hash": 12418038922950468829, + "name": "Semi-Slav: Chigorin, 7.Qc2 Main Line, 9...b5 10.Be2" + }, + "D46n": { + "eco": "D46n", + "fen": "r1bqk2r/pp1n1ppp/2pbpn2/3p4/2PP4/2NBPN2/PP3PPP/R1BQ1RK1 b kq - 4 7", + "hash": 340396735094421579, + "name": "Semi-Slav: Chigorin, 7.O-O" + }, + "D46o": { + "eco": "D46o", + "fen": "r1bq1rk1/pp1n1ppp/2pbpn2/3p4/2PP4/2NBPN2/PP3PPP/R1BQ1RK1 w - - 5 8", + "hash": 1013794462479454624, + "name": "Semi-Slav: Chigorin, 7.O-O O-O" + }, + "D46p": { + "eco": "D46p", + "fen": "r1bq1rk1/pp1n1ppp/2pbpn2/3p4/2PPP3/2NB1N2/PP3PPP/R1BQ1RK1 b - - 0 8", + "hash": 11524097787346034951, + "name": "Semi-Slav: Chigorin, 7.O-O O-O 8.e4" + }, + "D46q": { + "eco": "D46q", + "fen": "r1bq1rk1/pp1n1ppp/2pbpn2/8/2PPp3/2NB1N2/PP3PPP/R1BQ1RK1 w - - 0 9", + "hash": 6298089364695650647, + "name": "Semi-Slav: Chigorin, Main Line" + }, + "D46r": { + "eco": "D46r", + "fen": "r1bq1rk1/pp1n1pp1/2pbp2p/8/2PPB3/5N2/PP3PPP/R1BQ1RK1 w - - 0 11", + "hash": 9140477817299682870, + "name": "Semi-Slav: Chigorin, Main Line, 10...h6" + }, + "D47a": { + "eco": "D47a", + "fen": "r1bqkb1r/pp1n1ppp/2p1pn2/8/2pP4/2NBPN2/PP3PPP/R1BQK2R w KQkq - 0 7", + "hash": 905921174353386652, + "name": "Semi-Slav: Meran Variation" + }, + "D47b": { + "eco": "D47b", + "fen": "r1bqkb1r/p2n1ppp/2p1pn2/1p6/3P4/1BN1PN2/PP3PPP/R1BQK2R b KQkq - 1 8", + "hash": 17016909320919347854, + "name": "Semi-Slav: Meran, Freymann Variation" + }, + "D47c": { + "eco": "D47c", + "fen": "r1bqkb1r/p2n1ppp/2p1pn2/8/1p1P4/1BN1PN2/PP3PPP/R1BQK2R w KQkq - 0 9", + "hash": 10224584030623837133, + "name": "Semi-Slav: Meran, Freymann, 8...b4" + }, + "D47d": { + "eco": "D47d", + "fen": "r1bqkb1r/p2n1ppp/2p1pn2/1p6/3P4/2N1PN2/PP2BPPP/R1BQK2R b KQkq - 1 8", + "hash": 14828442103054941030, + "name": "Semi-Slav: Meran, Capablanca Variation" + }, + "D47e": { + "eco": "D47e", + "fen": "r1bqkb1r/3n1ppp/p1p1pn2/1p6/3P4/2N1PN2/PP2BPPP/R1BQK2R w KQkq - 0 9", + "hash": 2251452869887247290, + "name": "Semi-Slav: Meran, Capablanca, 8...a6" + }, + "D47f": { + "eco": "D47f", + "fen": "r2qkb1r/pb1n1ppp/2p1pn2/1p6/3P4/2N1PN2/PP2BPPP/R1BQK2R w KQkq - 2 9", + "hash": 9032387980838016253, + "name": "Semi-Slav: Meran, Capablanca, 8...Bb7" + }, + "D47g": { + "eco": "D47g", + "fen": "r2qkb1r/1b1n1ppp/p1p1pn2/1p6/3P4/2N1PN2/PP2BPPP/R1BQ1RK1 w kq - 0 10", + "hash": 15121952598577952561, + "name": "Semi-Slav: Meran, Capablanca, 8...Bb7 9.O-O a6" + }, + "D47h": { + "eco": "D47h", + "fen": "r1bqkb1r/p2n1ppp/2p1pn2/1p6/3P4/2NBPN2/PP3PPP/R1BQK2R b KQkq - 1 8", + "hash": 16952701131084837814, + "name": "Semi-Slav: Meran, 8.Bd3" + }, + "D47i": { + "eco": "D47i", + "fen": "r1bqkb1r/p2n1ppp/2p1pn2/8/1p1P4/2NBPN2/PP3PPP/R1BQK2R w KQkq - 0 9", + "hash": 9982551842375461621, + "name": "Semi-Slav: Meran, Lundin Variation" + }, + "D47j": { + "eco": "D47j", + "fen": "r1bqkb1r/p2n1ppp/2p1pn2/8/1p1PN3/3BPN2/PP3PPP/R1BQK2R b KQkq - 1 9", + "hash": 10727618301031277021, + "name": "Semi-Slav: Meran, Lundin, 9.Ne4" + }, + "D47k": { + "eco": "D47k", + "fen": "r1bqkb1r/p2n1ppp/2p1p3/8/1p1Pn3/3BPN2/PP3PPP/R1BQK2R w KQkq - 0 10", + "hash": 3743903592962340680, + "name": "Semi-Slav: Meran, Lundin, 9.Ne4 Nxe4" + }, + "D47l": { + "eco": "D47l", + "fen": "r1bqk2r/p2nbppp/2p1pn2/8/1p1PN3/3BPN2/PP3PPP/R1BQK2R w KQkq - 2 10", + "hash": 9235858014334438732, + "name": "Semi-Slav: Meran, Lundin, 9.Ne4 Be7" + }, + "D47m": { + "eco": "D47m", + "fen": "r2qkb1r/pb1n1ppp/2p1pn2/1p6/3P4/2NBPN2/PP3PPP/R1BQK2R w KQkq - 2 9", + "hash": 6617018586089004077, + "name": "Semi-Slav: Meran, Wade Variation" + }, + "D47n": { + "eco": "D47n", + "fen": "r2qkb1r/pb1n1ppp/2p1pn2/1p6/3P4/2NBPN2/PP3PPP/R1BQ1RK1 b kq - 3 9", + "hash": 2711488497114269501, + "name": "Semi-Slav: Meran, Wade, 9.O-O" + }, + "D47o": { + "eco": "D47o", + "fen": "r2qkb1r/pb1n1ppp/2p1pn2/8/1p1PN3/3BPN2/PP3PPP/R1BQ1RK1 b kq - 1 10", + "hash": 6486621289218020694, + "name": "Semi-Slav: Meran, Wade, 9.O-O b4 10.Ne4" + }, + "D47p": { + "eco": "D47p", + "fen": "r2qk2r/pb1nbppp/2p1pN2/8/1p1P4/3BPN2/PP3PPP/R1BQ1RK1 b kq - 0 11", + "hash": 732650712560966518, + "name": "Semi-Slav: Meran, Wade, 9.O-O b4 10.Ne4 Be7 11.Nxf6+" + }, + "D47q": { + "eco": "D47q", + "fen": "r2qkb1r/pb1n1ppp/2p1pn2/1p6/3PP3/2NB1N2/PP3PPP/R1BQK2R b KQkq - 0 9", + "hash": 14566952403103820938, + "name": "Semi-Slav: Meran, Wade, 9.e4" + }, + "D47r": { + "eco": "D47r", + "fen": "r2qkb1r/pb1n1ppp/4p3/2pnP3/Np1P4/3B1N2/PP3PPP/R1BQK2R w KQkq - 1 12", + "hash": 4739261579576162461, + "name": "Semi-Slav: Meran, Wade, Main Line" + }, + "D47s": { + "eco": "D47s", + "fen": "r2qkb1r/pb1n1ppp/4p3/2NnP3/1p1P4/3B1N2/PP3PPP/R1BQK2R b KQkq - 0 12", + "hash": 1141198055207366715, + "name": "Semi-Slav: Meran, Wade, Main Line, 12.Nxc5" + }, + "D47t": { + "eco": "D47t", + "fen": "r2qkb1r/pb1n1ppp/4p3/2pnP3/Np1P4/3B1N2/PP3PPP/R1BQ1RK1 b kq - 2 12", + "hash": 4589245503525938061, + "name": "Semi-Slav: Meran, Wade, Main Line, 12.O-O" + }, + "D48a": { + "eco": "D48a", + "fen": "r1bqkb1r/3n1ppp/p1p1pn2/1p6/3P4/2NBPN2/PP3PPP/R1BQK2R w KQkq - 0 9", + "hash": 4157919974331796330, + "name": "Semi-Slav: Meran, 8...a6" + }, + "D48b": { + "eco": "D48b", + "fen": "r1bqkb1r/3n1ppp/p1p1pn2/1p6/P2P4/2NBPN2/1P3PPP/R1BQK2R b KQkq a3 0 9", + "hash": 5943230623956049572, + "name": "Semi-Slav: Meran, 8...a6 9.a4" + }, + "D48c": { + "eco": "D48c", + "fen": "r1bqkb1r/3n1ppp/p1p1pn2/1p6/3P4/2NBPN2/PP3PPP/R1BQ1RK1 b kq - 1 9", + "hash": 5171993964030431354, + "name": "Semi-Slav: Meran, 8...a6 9.O-O" + }, + "D48d": { + "eco": "D48d", + "fen": "r1bqkb1r/3n1ppp/p3pn2/1pp5/3P4/2NBPN2/PP2QPPP/R1B2RK1 b kq - 1 10", + "hash": 6709528722042230321, + "name": "Semi-Slav: Meran, 8...a6 9.O-O c5 10.Qe2" + }, + "D48e": { + "eco": "D48e", + "fen": "r2qkb1r/1b1n1ppp/p1p1pn2/1p6/3P4/2NBPN2/PP3PPP/R1BQ1RK1 w kq - 2 10", + "hash": 17822667458204221409, + "name": "Semi-Slav: Meran, 8...a6 9.O-O Bb7" + }, + "D48f": { + "eco": "D48f", + "fen": "r2qkb1r/1b1n1ppp/p1p1pn2/1p6/3PP3/2NB1N2/PP3PPP/R1BQ1RK1 b kq - 0 10", + "hash": 7397932937516519238, + "name": "Semi-Slav: Meran, 8...a6 9.O-O Bb7 10.e4" + }, + "D48g": { + "eco": "D48g", + "fen": "r3kb1r/1bqn1ppp/p3pn2/1ppP4/4P3/2NB1N2/PP3PPP/R1BQ1RK1 w kq - 1 12", + "hash": 6224214749506702293, + "name": "Semi-Slav: Meran, 8...a6 9.O-O Bb7 10.e4 c5 11.d5 Qc7" + }, + "D48h": { + "eco": "D48h", + "fen": "r1bqkb1r/3n1ppp/p1p1pn2/1p6/3PP3/2NB1N2/PP3PPP/R1BQK2R b KQkq - 0 9", + "hash": 12128070099344358349, + "name": "Semi-Slav: Meran, 8...a6 9.e4" + }, + "D48i": { + "eco": "D48i", + "fen": "r2qkb1r/1b1n1ppp/p1p1pn2/1p6/3PP3/2NB1N2/PP3PPP/R1BQK2R w KQkq - 1 10", + "hash": 1792371061596509270, + "name": "Semi-Slav: Meran, 8...a6 9.e4 Bb7" + }, + "D48j": { + "eco": "D48j", + "fen": "r1bqkb1r/3n1ppp/p1p1pn2/8/1p1PP3/2NB1N2/PP3PPP/R1BQK2R w KQkq - 0 10", + "hash": 14520377748426171022, + "name": "Semi-Slav: Meran, Pirc Variation" + }, + "D48k": { + "eco": "D48k", + "fen": "r1bqkb1r/3n1ppp/p3pn2/1pp5/3PP3/2NB1N2/PP3PPP/R1BQK2R w KQkq - 0 10", + "hash": 2635333197635036674, + "name": "Semi-Slav: Meran, 8...a6 9.e4 c5" + }, + "D48l": { + "eco": "D48l", + "fen": "r1bqkb1r/3n1ppp/p3pn2/1ppP4/4P3/2NB1N2/PP3PPP/R1BQK2R b KQkq - 0 10", + "hash": 11428683155615395935, + "name": "Semi-Slav: Meran, Reynolds Variation" + }, + "D48m": { + "eco": "D48m", + "fen": "r1bqkb1r/3n1ppp/p4n2/1ppPp3/4P3/2NB1N2/PP3PPP/R1BQK2R w KQkq - 0 11", + "hash": 11115739395289963826, + "name": "Semi-Slav: Meran, Reynolds, 10...e5" + }, + "D48n": { + "eco": "D48n", + "fen": "r1b1kb1r/2qn1ppp/p3pn2/1ppP4/4P3/2NB1N2/PP3PPP/R1BQK2R w KQkq - 1 11", + "hash": 10990447641073647454, + "name": "Semi-Slav: Meran, Reynolds, 10...Qc7" + }, + "D48o": { + "eco": "D48o", + "fen": "r1bqkb1r/3n1ppp/p3pn2/1p1P4/2p1P3/2NB1N2/PP3PPP/R1BQK2R w KQkq - 0 11", + "hash": 5081587211894168274, + "name": "Semi-Slav: Meran, Reynolds, 10...c4" + }, + "D48p": { + "eco": "D48p", + "fen": "r1bqkb1r/3n2pp/p3pn2/1p6/2p1P3/2NB1N2/PP3PPP/R1BQK2R w KQkq - 0 12", + "hash": 8652318373655302264, + "name": "Semi-Slav: Meran, Reynolds, 10...c4 11.dxe6 fxe6" + }, + "D48q": { + "eco": "D48q", + "fen": "r1bqkb1r/3n1ppp/p3pn2/1pp1P3/3P4/2NB1N2/PP3PPP/R1BQK2R b KQkq - 0 10", + "hash": 5038265097853239398, + "name": "Semi-Slav: Meran, Old Main Line" + }, + "D48r": { + "eco": "D48r", + "fen": "r1bqkb1r/3n1ppp/p3p3/1pp1P3/3P2n1/2NB1N2/PP3PPP/R1BQK2R w KQkq - 1 11", + "hash": 15620972869364748554, + "name": "Semi-Slav: Meran, Rabinovich Variation" + }, + "D48s": { + "eco": "D48s", + "fen": "r1bqkb1r/3n1ppp/p3pn2/1p2P3/3p4/2NB1N2/PP3PPP/R1BQK2R w KQkq - 0 11", + "hash": 1942521885275122080, + "name": "Semi-Slav: Meran, Old Main Line, 10...cxd4" + }, + "D49a": { + "eco": "D49a", + "fen": "r1bqkb1r/3n1ppp/p3pn2/1N2P3/3p4/3B1N2/PP3PPP/R1BQK2R b KQkq - 0 11", + "hash": 18052113741402961691, + "name": "Semi-Slav: Meran, Blumenfeld Variation" + }, + "D49b": { + "eco": "D49b", + "fen": "r1bqkb1r/3n1ppp/p3p3/1N2P3/3p2n1/3B1N2/PP3PPP/R1BQK2R w KQkq - 1 12", + "hash": 7468840288431105655, + "name": "Semi-Slav: Meran, Old Main Line, Gligoric Variation" + }, + "D49c": { + "eco": "D49c", + "fen": "r1bqkb1r/3n1ppp/p3p3/1N2P3/Q2p2n1/3B1N2/PP3PPP/R1B1K2R b KQkq - 2 12", + "hash": 13043018138834244620, + "name": "Semi-Slav: Meran, Old Main Line, Gligoric, 12.Qa4" + }, + "D49d": { + "eco": "D49d", + "fen": "r1bqkb1r/3n1ppp/p3p3/1N2n3/Q2p4/3B1N2/PP3PPP/R1B1K2R w KQkq - 0 13", + "hash": 12044260660675504062, + "name": "Semi-Slav: Meran, Trifunovic Variation" + }, + "D49e": { + "eco": "D49e", + "fen": "r1bqkb1r/5ppp/p3pn2/1N2n3/3p4/3B1N2/PP3PPP/R1BQK2R w KQkq - 0 12", + "hash": 10143920179620650032, + "name": "Semi-Slav: Meran, Sozin Variation" + }, + "D49f": { + "eco": "D49f", + "fen": "r1bqkb1r/5ppp/4pn2/1p2N3/3p4/3B4/PP3PPP/R1BQ1RK1 b kq - 1 13", + "hash": 1211182264185120957, + "name": "Semi-Slav: Meran, Sozin, Rellstab Attack" + }, + "D49g": { + "eco": "D49g", + "fen": "r1bqkb1r/5ppp/4pn2/1p2N3/3p4/3B1Q2/PP3PPP/R1B1K2R b KQkq - 1 13", + "hash": 15319552536089683222, + "name": "Semi-Slav: Meran, Sozin, Stahlberg Attack" + }, + "D49h": { + "eco": "D49h", + "fen": "r1bqkb1r/5ppp/4pn2/1B2N3/3p4/8/PP3PPP/R1BQK2R b KQkq - 0 13", + "hash": 16435985377716662037, + "name": "Semi-Slav: Meran, Sozin, 13.Bxb5+" + }, + "D49i": { + "eco": "D49i", + "fen": "r1bqkb1r/3n1ppp/4pn2/1p2P3/3p4/3B1N2/PP3PPP/R1BQK2R w KQkq - 0 12", + "hash": 8729384967367064805, + "name": "Semi-Slav: Meran, Old Main Line, 11.Nxb5 axb5" + }, + "D49j": { + "eco": "D49j", + "fen": "r1b1kb1r/3n1ppp/1q2pP2/1p6/3p4/3B1N2/PP3PPP/R1BQK2R w KQkq - 1 13", + "hash": 12267261441643706458, + "name": "Semi-Slav: Meran, Old Main Line, Botvinnik Variation" + }, + "D49k": { + "eco": "D49k", + "fen": "r1bqkb1r/3n1p1p/4pp2/1p6/3p4/3B1N2/PP3PPP/R1BQK2R w KQkq - 0 13", + "hash": 6255271429269080227, + "name": "Semi-Slav: Meran, Old Main Line, 11.Nxb5 axb5 12.exf6 gxf6" + }, + "D50": { + "eco": "D50", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p2B1/2PP4/2N5/PP2PPPP/R2QKBNR b KQkq - 3 4", + "hash": 11102373440004537386, + "name": "QGD: 4.Bg5" + }, + "D51": { + "eco": "D51", + "fen": "r1bqkb1r/pppn1ppp/4pn2/3p2B1/2PP4/2N5/PP2PPPP/R2QKBNR w KQkq - 4 5", + "hash": 12245558485149503974, + "name": "QGD: 4.Bg5 Nbd7" + }, + "D52a": { + "eco": "D52a", + "fen": "r1bqkb1r/pp1n1ppp/2p1pn2/3p2B1/2PP4/2N1PN2/PP3PPP/R2QKB1R b KQkq - 1 6", + "hash": 5603521530905652164, + "name": "QGD: 4.Bg5 Nbd7 5.e3 c6 6.Nf3" + }, + "D52b": { + "eco": "D52b", + "fen": "r1b1kb1r/pp1n1ppp/2p1pn2/q2p2B1/2PP4/2N1PN2/PP3PPP/R2QKB1R w KQkq - 2 7", + "hash": 10714099245185518155, + "name": "QGD: Cambridge Springs Defence" + }, + "D52c": { + "eco": "D52c", + "fen": "r1b1kb1r/pp1n1ppp/2p1pB2/q2p4/2PP4/2N1PN2/PP3PPP/R2QKB1R b KQkq - 0 7", + "hash": 3571118859891905707, + "name": "QGD: Cambridge Springs, Capablanca Variation" + }, + "D52d": { + "eco": "D52d", + "fen": "r1b1kb1r/pp1n1ppp/2p1pn2/q2P2B1/3P4/2N1PN2/PP3PPP/R2QKB1R b KQkq - 0 7", + "hash": 11140423004911984214, + "name": "QGD: Cambridge Springs, 7.cxd5" + }, + "D52e": { + "eco": "D52e", + "fen": "r1b1kb1r/pp1n1ppp/2p1p3/q2n2B1/3P4/2N1PN2/PP3PPP/R2QKB1R w KQkq - 0 8", + "hash": 393152370340217610, + "name": "QGD: Cambridge Springs, Yugoslav Variation" + }, + "D52f": { + "eco": "D52f", + "fen": "r1b1kb1r/pp1n1ppp/2p1p3/q2n2B1/3P4/2N1PN2/PP1Q1PPP/R3KB1R b KQkq - 1 8", + "hash": 3273147643848727722, + "name": "QGD: Cambridge Springs, Yugoslav, 8.Qd2" + }, + "D52g": { + "eco": "D52g", + "fen": "r1b1kb1r/pp1n1ppp/2p1pn2/q2p2B1/2PP4/2N1P3/PP1N1PPP/R2QKB1R b KQkq - 3 7", + "hash": 5301505975816910017, + "name": "QGD: Cambridge Springs, 7.Nd2" + }, + "D52h": { + "eco": "D52h", + "fen": "r1b1kb1r/pp1n1ppp/2p1pn2/q5B1/2pP4/2N1P3/PP1N1PPP/R2QKB1R w KQkq - 0 8", + "hash": 11210729043333978658, + "name": "QGD: Cambridge Springs, Rubinstein Variation" + }, + "D52i": { + "eco": "D52i", + "fen": "r1b1k2r/pp1n1ppp/2p1pn2/q2p2B1/1bPP4/2N1P3/PP1N1PPP/R2QKB1R w KQkq - 4 8", + "hash": 9282994836826930403, + "name": "QGD: Cambridge Springs, Bogoljubow Variation" + }, + "D52j": { + "eco": "D52j", + "fen": "r1b1k2r/pp1n1ppp/2p1pn2/q2p2B1/1bPP4/2N1P3/PPQN1PPP/R3KB1R b KQkq - 5 8", + "hash": 3587856541783195783, + "name": "QGD: Cambridge Springs, Bogoljubow, 8.Qc2" + }, + "D52k": { + "eco": "D52k", + "fen": "r1b1k2r/pp1n1ppp/2p1pn2/q5B1/1bpP4/2N1P3/PPQN1PPP/R3KB1R w KQkq - 0 9", + "hash": 16414663730101644900, + "name": "QGD: Cambridge Springs, 8.Qc2 dxc4" + }, + "D52l": { + "eco": "D52l", + "fen": "r1b2rk1/pp1n1ppp/2p1pn2/q2p2B1/1bPP4/2N1P3/PPQN1PPP/R3KB1R w KQ - 6 9", + "hash": 4279067482281830764, + "name": "QGD: Cambridge Springs, 8.Qc2 O-O" + }, + "D52m": { + "eco": "D52m", + "fen": "r1b2rk1/pp1n1ppp/2p1pn2/q2p4/1bPP3B/2N1P3/PPQN1PPP/R3KB1R b KQ - 7 9", + "hash": 7056337937451666423, + "name": "QGD: Cambridge Springs, Argentine Variation" + }, + "D52n": { + "eco": "D52n", + "fen": "r1b2rk1/pp1n1ppp/2p1pn2/q2p2B1/1bPP4/2N1P3/PPQNBPPP/R3K2R b KQ - 7 9", + "hash": 5251987495908811727, + "name": "QGD: Cambridge Springs, 8.Qc2 O-O 9.Be2" + }, + "D52o": { + "eco": "D52o", + "fen": "r1b2rk1/pp1n1ppp/2p2n2/q2pp1B1/1bPP4/2N1P3/PPQNBPPP/R3K2R w KQ - 0 10", + "hash": 5493004082086989474, + "name": "QGD: Cambridge Springs, 8.Qc2 O-O 9.Be2 e5" + }, + "D53a": { + "eco": "D53a", + "fen": "rnbqk2r/ppp1bppp/4pn2/3p2B1/2PP4/2N5/PP2PPPP/R2QKBNR w KQkq - 4 5", + "hash": 10295226814722216123, + "name": "QGD: 4.Bg5 Be7" + }, + "D53b": { + "eco": "D53b", + "fen": "rnbqk2r/ppp1bppp/4p3/3n2B1/3P4/2N5/PP2PPPP/R2QKBNR w KQkq - 0 6", + "hash": 2241420139523414522, + "name": "QGD: 4.Bg5 Be7 5.cxd5 Nxd5" + }, + "D53c": { + "eco": "D53c", + "fen": "rnbqk2r/ppp1bppp/4pn2/3p2B1/2PP4/2N2N2/PP2PPPP/R2QKB1R b KQkq - 5 5", + "hash": 6177551980135608710, + "name": "QGD: 4.Bg5 Be7 5.Nf3" + }, + "D53d": { + "eco": "D53d", + "fen": "rnbqk2r/ppp1bpp1/4pn1p/3p2B1/2PP4/2N2N2/PP2PPPP/R2QKB1R w KQkq - 0 6", + "hash": 14360951912057682067, + "name": "QGD: 4.Bg5 Be7 5.Nf3 h6" + }, + "D53e": { + "eco": "D53e", + "fen": "rnbqk2r/ppp1bpp1/4pB1p/3p4/2PP4/2N2N2/PP2PPPP/R2QKB1R b KQkq - 0 6", + "hash": 7094102335599961715, + "name": "QGD: 4.Bg5 Be7 5.Nf3 h6 6.Bxf6" + }, + "D53f": { + "eco": "D53f", + "fen": "rnbqk2r/ppp2pp1/4pb1p/3p4/2PP4/2N2N2/PP2PPPP/R2QKB1R w KQkq - 0 7", + "hash": 5324377405160314367, + "name": "QGD: 4.Bg5 Be7 5.Nf3 h6 6.Bxf6 Bxf6" + }, + "D53g": { + "eco": "D53g", + "fen": "rnbqk2r/ppp2pp1/4pb1p/3p4/2PP4/2N1PN2/PP3PPP/R2QKB1R b KQkq - 0 7", + "hash": 16487326084605271387, + "name": "QGD: 4.Bg5 Be7 5.Nf3 h6 6.Bxf6 Bxf6 7.e3" + }, + "D53h": { + "eco": "D53h", + "fen": "rnbqk2r/ppp1bpp1/4pn1p/3p4/2PP3B/2N2N2/PP2PPPP/R2QKB1R b KQkq - 1 6", + "hash": 11367984236571400712, + "name": "QGD: 4.Bg5 Be7 5.Nf3 h6 6.Bh4" + }, + "D53i": { + "eco": "D53i", + "fen": "rnbq1rk1/ppp1bpp1/4pn1p/3p4/2PP3B/2N2N2/PP2PPPP/R2QKB1R w KQ - 2 7", + "hash": 10911057347007607779, + "name": "QGD: 4.Bg5 Be7 5.Nf3 h6 6.Bh4 O-O" + }, + "D53j": { + "eco": "D53j", + "fen": "rnbq1rk1/ppp1bpp1/4pn1p/3p4/2PP3B/2N2N2/PPQ1PPPP/R3KB1R b KQ - 3 7", + "hash": 2770468878136627079, + "name": "QGD: 4.Bg5 Be7 5.Nf3 h6 6.Bh4 O-O 7.Qc2" + }, + "D53k": { + "eco": "D53k", + "fen": "rnbq1rk1/ppp1bpp1/4pn1p/3p4/2PP3B/2N2N2/PP2PPPP/2RQKB1R b K - 3 7", + "hash": 16784937339991336765, + "name": "QGD: 4.Bg5 Be7 5.Nf3 h6 6.Bh4 O-O 7.Rc1" + }, + "D53l": { + "eco": "D53l", + "fen": "rnbq1rk1/ppp1bppp/4pn2/3p2B1/2PP4/2N2N2/PP2PPPP/R2QKB1R w KQ - 6 6", + "hash": 6851100367949109357, + "name": "QGD: 4.Bg5 Be7 5.Nf3 O-O" + }, + "D53m": { + "eco": "D53m", + "fen": "rnbq1rk1/ppp1bppp/4pn2/3p2B1/2PP4/2N2N2/PPQ1PPPP/R3KB1R b KQ - 7 6", + "hash": 17152677580607955977, + "name": "QGD: 4.Bg5 Be7 5.Nf3 O-O 6.Qc2" + }, + "D53n": { + "eco": "D53n", + "fen": "r1bq1rk1/pppnbppp/4pn2/3p2B1/2PP4/2N2N2/PPQ1PPPP/R3KB1R w KQ - 8 7", + "hash": 15990582692103670213, + "name": "QGD: 4.Bg5 Be7 5.Nf3 O-O 6.Qc2 Nbd7" + }, + "D53o": { + "eco": "D53o", + "fen": "rnbq1rk1/pp2bppp/4pn2/2pp2B1/2PP4/2N2N2/PPQ1PPPP/R3KB1R w KQ c6 0 7", + "hash": 611184220810162036, + "name": "QGD: 4.Bg5 Be7 5.Nf3 O-O 6.Qc2 c5" + }, + "D53p": { + "eco": "D53p", + "fen": "rnbqk2r/ppp1bppp/4pn2/3p2B1/2PP4/2N1P3/PP3PPP/R2QKBNR b KQkq - 0 5", + "hash": 2590340062114191391, + "name": "QGD: 4.Bg5 Be7 5.e3" + }, + "D53q": { + "eco": "D53q", + "fen": "rnbqk2r/ppp1bppp/4p3/3p2B1/2PPn3/2N1P3/PP3PPP/R2QKBNR w KQkq - 1 6", + "hash": 1872072547769390565, + "name": "QGD: Early Lasker Variation" + }, + "D53r": { + "eco": "D53r", + "fen": "r1bqk2r/pppnbppp/4pn2/3p2B1/2PP4/2N1P3/PP3PPP/R2QKBNR w KQkq - 1 6", + "hash": 1157926284260505043, + "name": "QGD: 4.Bg5 Be7 5.e3 Nbd7" + }, + "D53s": { + "eco": "D53s", + "fen": "r1bqk2r/pppnbppp/4pn2/3p2B1/2PP4/2N1PN2/PP3PPP/R2QKB1R b KQkq - 2 6", + "hash": 14660671597632361710, + "name": "QGD: 4.Bg5 Be7 5.e3 Nbd7 6.Nf3" + }, + "D53t": { + "eco": "D53t", + "fen": "rnbqk2r/ppp1bpp1/4pn1p/3p2B1/2PP4/2N1P3/PP3PPP/R2QKBNR w KQkq - 0 6", + "hash": 12755874101408813322, + "name": "QGD: 4.Bg5 Be7 5.e3 h6" + }, + "D53u": { + "eco": "D53u", + "fen": "rnbq1rk1/ppp1bppp/4pn2/3p2B1/2PP4/2N1P3/PP3PPP/R2QKBNR w KQ - 1 6", + "hash": 2979783405033386484, + "name": "QGD: 4.Bg5 Be7 5.e3 O-O" + }, + "D53v": { + "eco": "D53v", + "fen": "rnbq1rk1/ppp1bppp/4pn2/3p2B1/2PP4/2N1P3/PPQ2PPP/R3KBNR b KQ - 2 6", + "hash": 10971651759936130448, + "name": "QGD: 4.Bg5 Be7 5.e3 O-O 6.Qc2" + }, + "D54a": { + "eco": "D54a", + "fen": "rnbq1rk1/ppp1bppp/4pn2/3p2B1/2PP4/2N1P3/PP3PPP/2RQKBNR b K - 2 6", + "hash": 6251451985926300970, + "name": "QGD: Anti-Neo-Orthodox Variation" + }, + "D54b": { + "eco": "D54b", + "fen": "rnbq1rk1/ppp1bpp1/4pn1p/3p4/2PP3B/2N1P3/PP3PPP/2RQKBNR b K - 1 7", + "hash": 11437381433021583012, + "name": "QGD: Anti-Neo-Orthodox Variation" + }, + "D54c": { + "eco": "D54c", + "fen": "rnbq1rk1/p1p1bpp1/1p2pn1p/3p4/2PP3B/2N1P3/PP3PPP/2RQKBNR w K - 0 8", + "hash": 17712926440949152063, + "name": "QGD: Anti-Neo-Orthodox, 7.Bh4 b6" + }, + "D54d": { + "eco": "D54d", + "fen": "rnb2rk1/p1p1qpp1/1p5p/3p4/3P4/4P3/PP3PPP/2RQKBNR w K - 0 11", + "hash": 4855367799636994435, + "name": "QGD: Anti-Neo-Orthodox, Main Line" + }, + "D54e": { + "eco": "D54e", + "fen": "rnb2rk1/p1p1qpp1/1p5p/3p4/3P4/4P3/PP2BPPP/2RQK1NR b K - 1 11", + "hash": 3522158716275057440, + "name": "QGD: Anti-Neo-Orthodox, Main Line, 11.Be2" + }, + "D55a": { + "eco": "D55a", + "fen": "rnbq1rk1/ppp1bppp/4pn2/3p2B1/2PP4/2N1PN2/PP3PPP/R2QKB1R b KQ - 2 6", + "hash": 17455597899478470857, + "name": "QGD: 6.Nf3" + }, + "D55b": { + "eco": "D55b", + "fen": "rnbq1rk1/ppp1bppp/4p3/3p2B1/2PPn3/2N1PN2/PP3PPP/R2QKB1R w KQ - 3 7", + "hash": 14426983790787271987, + "name": "QGD: Lasker without ...h6" + }, + "D55c": { + "eco": "D55c", + "fen": "rnbq1rk1/p1p1bppp/1p2pn2/3p2B1/2PP4/2N1PN2/PP3PPP/R2QKB1R w KQ - 0 7", + "hash": 11049569448099555154, + "name": "QGD: 6.Nf3 b6" + }, + "D55d": { + "eco": "D55d", + "fen": "rnbq1rk1/p1p1bppp/1p2pn2/3p2B1/2PP4/2N1PN2/PP2BPPP/R2QK2R b KQ - 1 7", + "hash": 16922125137273089521, + "name": "QGD: 6.Nf3 b6 7.Be2" + }, + "D55e": { + "eco": "D55e", + "fen": "rnbq1rk1/p1p1bppp/1p3n2/3p2B1/3P4/2N1PN2/PP3PPP/R2QKB1R w KQ - 0 8", + "hash": 12135431705637974916, + "name": "QGD: 6.Nf3 b6 7.cxd5 exd5" + }, + "D55f": { + "eco": "D55f", + "fen": "rnbq1rk1/p1p1bppp/1p2p3/3n2B1/3P4/2N1PN2/PP3PPP/R2QKB1R w KQ - 0 8", + "hash": 617861070300687891, + "name": "QGD: 6.Nf3 b6 7.cxd5 Nxd5" + }, + "D55g": { + "eco": "D55g", + "fen": "rnbq1rk1/ppp1bpp1/4pn1p/3p2B1/2PP4/2N1PN2/PP3PPP/R2QKB1R w KQ - 0 7", + "hash": 6974376703060367836, + "name": "QGD: Neo-Orthodox Variation" + }, + "D55h": { + "eco": "D55h", + "fen": "rnbq1rk1/ppp1bpp1/4pB1p/3p4/2PP4/2N1PN2/PP3PPP/R2QKB1R b KQ - 0 7", + "hash": 14264869764910417724, + "name": "QGD: Neo-Orthodox, 7.Bxf6" + }, + "D55i": { + "eco": "D55i", + "fen": "rnbq1rk1/ppp2pp1/4pb1p/3p4/2PP4/1QN1PN2/PP3PPP/R3KB1R b KQ - 1 8", + "hash": 15321230227910138966, + "name": "QGD: Neo-Orthodox, 7.Bxf6 Bxf6 8.Qb3" + }, + "D55j": { + "eco": "D55j", + "fen": "rnbq1rk1/ppp2pp1/4pb1p/3p4/2PP4/2N1PN2/PP3PPP/2RQKB1R b K - 1 8", + "hash": 10519737212451840110, + "name": "QGD: Neo-Orthodox, Gligoric Variation" + }, + "D55k": { + "eco": "D55k", + "fen": "r1bq1rk1/pp1n1pp1/2p1pb1p/8/2BP4/2N1PN2/PP3PPP/2RQ1RK1 b - - 0 11", + "hash": 8198074937273560002, + "name": "QGD: Neo-Orthodox, Petrosian Variation" + }, + "D56": { + "eco": "D56", + "fen": "rnbq1rk1/ppp1bpp1/4pn1p/3p4/2PP3B/2N1PN2/PP3PPP/R2QKB1R b KQ - 1 7", + "hash": 4199217885640555335, + "name": "QGD: Neo-Orthodox, 7.Bh4" + }, + "D57": { + "eco": "D57", + "fen": "rnb2rk1/ppp1qpp1/4p2p/3P4/3Pn3/2N1PN2/PP3PPP/R2QKB1R b KQ - 0 9", + "hash": 16120744284041714123, + "name": "QGD: Lasker Defence, Main Line" + }, + "D58a": { + "eco": "D58a", + "fen": "rnbq1rk1/p1p1bpp1/1p2pn1p/3p4/2PP3B/2N1PN2/PP3PPP/R2QKB1R w KQ - 0 8", + "hash": 5850131367858392284, + "name": "QGD: Tartakower System" + }, + "D58b": { + "eco": "D58b", + "fen": "rnbq1rk1/p1p1bpp1/1p2pn1p/3p4/2PP3B/1QN1PN2/PP3PPP/R3KB1R b KQ - 1 8", + "hash": 7770526591761409082, + "name": "QGD: Tartakower, 8.Qb3" + }, + "D58c": { + "eco": "D58c", + "fen": "rnbq1rk1/p1p1bpp1/1p2pn1p/3p4/2PP3B/2N1PN2/PPQ2PPP/R3KB1R b KQ - 1 8", + "hash": 16156282574036529336, + "name": "QGD: Tartakower, 8.Qc2" + }, + "D58d": { + "eco": "D58d", + "fen": "rnbq1rk1/p1p1bpp1/1p2pB1p/3p4/2PP4/2N1PN2/PP3PPP/R2QKB1R b KQ - 0 8", + "hash": 6217659929115112878, + "name": "QGD: Tartakower, 8.Bxf6" + }, + "D58e": { + "eco": "D58e", + "fen": "rnbq1rk1/p1p1bpp1/1p2pn1p/3p4/2PP3B/2NBPN2/PP3PPP/R2QK2R b KQ - 1 8", + "hash": 297931203750727343, + "name": "QGD: Tartakower, 8.Bd3" + }, + "D58f": { + "eco": "D58f", + "fen": "rn1q1rk1/pbp1bpp1/1p2pn1p/3p4/2PP3B/2NBPN2/PP3PPP/R2QK2R w KQ - 2 9", + "hash": 13020538044472860980, + "name": "QGD: Tartakower, 8.Bd3 Bb7" + }, + "D58g": { + "eco": "D58g", + "fen": "rn1q1rk1/pbp1bpp1/1p2pn1p/3p4/2PP3B/2NBPN2/PP3PPP/R2Q1RK1 b - - 3 9", + "hash": 14611723837087185444, + "name": "QGD: Tartakower, 8.Bd3 Bb7 9.O-O" + }, + "D58h": { + "eco": "D58h", + "fen": "r2q1rk1/pbpnbpp1/1p2pn1p/3p4/2PP3B/2NBPN2/PP3PPP/R2Q1RK1 w - - 4 10", + "hash": 17952542407683250152, + "name": "QGD: Tartakower, 8.Bd3 Bb7 9.O-O Nbd7" + }, + "D58i": { + "eco": "D58i", + "fen": "r2q1rk1/pbpnbpp1/1p2pn1p/3p4/2PP3B/2NBPN2/PP2QPPP/R4RK1 b - - 5 10", + "hash": 8008157796797041772, + "name": "QGD: Tartakower, 8.Bd3 Bb7 9.O-O Nbd7 10.Qe2" + }, + "D58j": { + "eco": "D58j", + "fen": "r2q1rk1/pb1nbpp1/1p2pn1p/2pp4/2PP3B/2NBPN2/PP2QPPP/R4RK1 w - c6 0 11", + "hash": 9895359152607971089, + "name": "QGD: Tartakower, 8.Bd3 Bb7 9.O-O Nbd7 10.Qe2 c5" + }, + "D58k": { + "eco": "D58k", + "fen": "rnbq1rk1/p1p1bpp1/1p2pn1p/3p4/2PP3B/2N1PN2/PP2BPPP/R2QK2R b KQ - 1 8", + "hash": 2499309239155328639, + "name": "QGD: Tartakower, 8.Be2" + }, + "D58l": { + "eco": "D58l", + "fen": "rn1q1rk1/pbp2pp1/1p2pb1p/3P4/3P4/2N1PN2/PP2BPPP/R2QK2R b KQ - 0 10", + "hash": 12746151239665448711, + "name": "QGD: Tartakower, 8.Be2 Bb7 9.Bxf6 Bxf6 10.cxd5" + }, + "D58m": { + "eco": "D58m", + "fen": "rn1q1rk1/pbp2pp1/1p3b1p/3p4/3P4/2N1PN2/PP2BPPP/R2Q1RK1 b - - 1 11", + "hash": 17402700562830453980, + "name": "QGD: Tartakower, 8.Be2 Bb7 9.Bxf6 Bxf6 10.cxd5 exd5 11.O-O" + }, + "D58n": { + "eco": "D58n", + "fen": "rn1q1rk1/pbp2pp1/1p3b1p/3p4/1P1P4/2N1PN2/P3BPPP/R2QK2R b KQ b3 0 11", + "hash": 2666906605428825064, + "name": "QGD: Tartakower, 8.Be2 Bb7 9.Bxf6 Bxf6 10.cxd5 exd5 11.b4" + }, + "D58o": { + "eco": "D58o", + "fen": "rn1q1rk1/pb3pp1/1pp2b1p/3p4/1P1P4/2N1PN2/P3BPPP/R2QK2R w KQ - 0 12", + "hash": 13220365647138687059, + "name": "QGD: Tartakower, 8.Be2 Bb7 9.Bxf6 Bxf6 10.cxd5 exd5 11.b4 c6" + }, + "D58p": { + "eco": "D58p", + "fen": "rnbq1rk1/p1p1bpp1/1p2pn1p/3p4/2PP3B/2N1PN2/PP3PPP/2RQKB1R b K - 1 8", + "hash": 3365341443194591234, + "name": "QGD: Tartakower, 8.Rc1" + }, + "D58q": { + "eco": "D58q", + "fen": "rn1q1rk1/pbp1bpp1/1p2pn1p/3P4/3P3B/2N1PN2/PP3PPP/2RQKB1R b K - 0 9", + "hash": 10380457939690267524, + "name": "QGD: Tartakower, 8.Rc1 Bb7 9.cxd5" + }, + "D58r": { + "eco": "D58r", + "fen": "rn1q1rk1/pbp1bpp1/1p2pB1p/3p4/2PP4/2N1PN2/PP3PPP/2RQKB1R b K - 0 9", + "hash": 11043414570673032939, + "name": "QGD: Tartakower, 8.Rc1 Bb7 9.Bxf6" + }, + "D58s": { + "eco": "D58s", + "fen": "rnbq1rk1/p1p1bpp1/1p2pn1p/3P4/3P3B/2N1PN2/PP3PPP/R2QKB1R b KQ - 0 8", + "hash": 6846963155006904513, + "name": "QGD: Tartakower, 8.cxd5" + }, + "D58t": { + "eco": "D58t", + "fen": "rnbq1rk1/p1p1bpp1/1p3n1p/3p4/3P3B/2NBPN2/PP3PPP/R2QK2R b KQ - 1 9", + "hash": 3826991852783590009, + "name": "QGD: Tartakower, 8.cxd5 exd5 9.Bd3" + }, + "D59a": { + "eco": "D59a", + "fen": "rnbq1rk1/p1p1bpp1/1p2p2p/3n4/3P3B/2N1PN2/PP3PPP/R2QKB1R w KQ - 0 9", + "hash": 13901265129891874205, + "name": "QGD: Tartakower, 8.cxd5 Nxd5" + }, + "D59b": { + "eco": "D59b", + "fen": "rnbq1rk1/p1p1bpp1/1p2p2p/3N4/3P3B/4PN2/PP3PPP/R2QKB1R b KQ - 0 9", + "hash": 1281572004285571131, + "name": "QGD: Tartakower, 8.cxd5 Nxd5 9.Nxd5" + }, + "D59c": { + "eco": "D59c", + "fen": "rnbq1rk1/p1p1Bpp1/1p2p2p/3n4/3P4/2N1PN2/PP3PPP/R2QKB1R b KQ - 0 9", + "hash": 17435618492476537235, + "name": "QGD: Tartakower, 8.cxd5 Nxd5 9.Bxe7" + }, + "D59d": { + "eco": "D59d", + "fen": "rnb2rk1/p1p1qpp1/1p2p2p/3n4/3P4/2N1PN2/PP3PPP/R2QKB1R w KQ - 0 10", + "hash": 1240491288501436150, + "name": "QGD: Tartakower, 8.cxd5 Nxd5 9.Bxe7 Qxe7" + }, + "D59e": { + "eco": "D59e", + "fen": "rnb2rk1/p1p1qpp1/1p2p2p/3n4/3P4/2N1PN2/PP3PPP/2RQKB1R b K - 1 10", + "hash": 7974981091428297256, + "name": "QGD: Tartakower, 8.cxd5 Nxd5 9.Bxe7 Qxe7 10.Rc1" + }, + "D59f": { + "eco": "D59f", + "fen": "rn3rk1/pbp1qpp1/1p2p2p/3N4/3P4/4PN2/PP3PPP/2RQKB1R b K - 0 11", + "hash": 1089487937426743317, + "name": "QGD: Tartakower, 8.cxd5 Nxd5 9.Bxe7 Qxe7 10.Rc1 Bb7 11.Nxd5" + }, + "D59g": { + "eco": "D59g", + "fen": "rn3rk1/pbp1qpp1/1p2p2p/3n4/3P4/2NBPN2/PP3PPP/2RQK2R b K - 3 11", + "hash": 10029861801200977856, + "name": "QGD: Tartakower, 8.cxd5 Nxd5 9.Bxe7 Qxe7 10.Rc1 Bb7 11.Bd3" + }, + "D59h": { + "eco": "D59h", + "fen": "rn3rk1/pbp1qpp1/1p2p2p/3n4/3P4/2N1PN2/PP2BPPP/2RQK2R b K - 3 11", + "hash": 12518907941392060176, + "name": "QGD: Tartakower, 8.cxd5 Nxd5 9.Bxe7 Qxe7 10.Rc1 Bb7 11.Be2" + }, + "D59i": { + "eco": "D59i", + "fen": "rnb2rk1/p1p1qpp1/1p2p2p/3N4/3P4/4PN2/PP3PPP/R2QKB1R b KQ - 0 10", + "hash": 13841008922659658576, + "name": "QGD: Tartakower, 8.cxd5 Nxd5 9.Bxe7 Qxe7 10.Nxd5" + }, + "D59j": { + "eco": "D59j", + "fen": "rnb2rk1/p1p1qpp1/1p5p/3p4/3P4/4PN2/PP2BPPP/R2QK2R b KQ - 1 11", + "hash": 10672997901475174083, + "name": "QGD: Tartakower, Main Line, 11.Rc1" + }, + "D59k": { + "eco": "D59k", + "fen": "rnb2rk1/p1p1qpp1/1p5p/3p4/3P4/4PN2/PP3PPP/2RQKB1R b K - 1 11", + "hash": 10954258149181081790, + "name": "QGD: Tartakower, Main Line, 11.Rc1" + }, + "D59l": { + "eco": "D59l", + "fen": "rn3rk1/p1p1qpp1/1p2b2p/3p4/3P4/4PN2/PP3PPP/2RQKB1R w K - 2 12", + "hash": 14753165021301748662, + "name": "QGD: Tartakower, Main Line, 11.Rc1 Be6" + }, + "D59m": { + "eco": "D59m", + "fen": "rn3rk1/p1p1qpp1/1p2b2p/3p4/3P4/3BPN2/PP3PPP/2RQK2R b K - 3 12", + "hash": 11074462302163464645, + "name": "QGD: Tartakower, Main Line, 12.Bd3" + }, + "D59n": { + "eco": "D59n", + "fen": "rn3rk1/p1p1qpp1/1p2b2p/3p4/Q2P4/4PN2/PP3PPP/2R1KB1R b K - 3 12", + "hash": 2168896791961289165, + "name": "QGD: Tartakower, Main Line, 12.Qa4" + }, + "D60": { + "eco": "D60", + "fen": "r1bq1rk1/pppnbppp/4pn2/3p2B1/2PP4/2N1PN2/PP3PPP/R2QKB1R w KQ - 3 7", + "hash": 13969539956735016197, + "name": "QGD: Orthodox Defence" + }, + "D61": { + "eco": "D61", + "fen": "r1bq1rk1/pppnbppp/4pn2/3p2B1/2PP4/2N1PN2/PPQ2PPP/R3KB1R b KQ - 4 7", + "hash": 8125818152849686881, + "name": "QGD: Orthodox, Rubinstein Variation" + }, + "D62": { + "eco": "D62", + "fen": "r1bq1rk1/pp1nbppp/4pn2/2pP2B1/3P4/2N1PN2/PPQ2PPP/R3KB1R b KQ - 0 8", + "hash": 10997789112740601345, + "name": "QGD: Orthodox, Rubinstein, 7.Qc2 c5 8.cxd5" + }, + "D63": { + "eco": "D63", + "fen": "r1bq1rk1/pppnbppp/4pn2/3p2B1/2PP4/2N1PN2/PP3PPP/2RQKB1R b K - 4 7", + "hash": 13710656965464730075, + "name": "QGD: Orthodox, 7.Rc1" + }, + "D64": { + "eco": "D64", + "fen": "r1bq1rk1/pp1nbppp/2p1pn2/3p2B1/2PP4/2N1PN2/PPQ2PPP/2R1KB1R b K - 1 8", + "hash": 11323621955071133188, + "name": "QGD: Orthodox, Rubinstein Attack" + }, + "D65": { + "eco": "D65", + "fen": "r1bq1rk1/1p1nbppp/p1p1pn2/3P2B1/3P4/2N1PN2/PPQ2PPP/2R1KB1R b K - 0 9", + "hash": 4753826561184672453, + "name": "QGD: Orthodox, Rubinstein Attack, 9.cxd5" + }, + "D66": { + "eco": "D66", + "fen": "r1bq1rk1/pp1nbppp/2p1pn2/3p2B1/2PP4/2NBPN2/PP3PPP/2RQK2R b K - 1 8", + "hash": 8732837651746568211, + "name": "QGD: Orthodox, Main Line" + }, + "D67": { + "eco": "D67", + "fen": "r1bq1rk1/pp1nbppp/2p1p3/3n2B1/2BP4/2N1PN2/PP3PPP/2RQK2R w K - 1 10", + "hash": 2782546393343795342, + "name": "QGD: Orthodox, Main Line, Capablanca Freeing Manoevure" + }, + "D68": { + "eco": "D68", + "fen": "r1b2rk1/pp1nqppp/2p5/4p3/2BP4/2R1PN2/PP3PPP/3Q1RK1 w - - 0 13", + "hash": 10324145768525826747, + "name": "QGD: Orthodox, Classical Variation" + }, + "D69": { + "eco": "D69", + "fen": "r1b2rk1/pp1nqppp/2p5/4P3/2B5/2R1PN2/PP3PPP/3Q1RK1 b - - 0 13", + "hash": 1430812771315891659, + "name": "QGD: Orthodox, Classical, 13.dxe5" + }, + "D70": { + "eco": "D70", + "fen": "rnbqkb1r/ppp1pp1p/5np1/3p4/2PP4/5N2/PP2PPPP/RNBQKB1R w KQkq d6 0 4", + "hash": 16391290486969632287, + "name": "Neo-Grnfeld: 3.Nf3 d5" + }, + "D71": { + "eco": "D71", + "fen": "rnbqk2r/ppp1ppbp/6p1/3n4/3P4/6P1/PP2PPBP/RNBQK1NR w KQkq - 0 6", + "hash": 9255784704506865032, + "name": "Neo-Grnfeld, 5.cxd5 Nxd5" + }, + "D72": { + "eco": "D72", + "fen": "rnbqk2r/ppp1ppbp/1n4p1/8/3PP3/6P1/PP2NPBP/RNBQK2R b KQkq - 2 7", + "hash": 8740166013729832498, + "name": "Neo-Grnfeld, 5.cxd5 Nxd5 6.e4 Nb6 7.Ne2" + }, + "D73": { + "eco": "D73", + "fen": "rnbqk2r/ppp1ppbp/5np1/3p4/2PP4/5NP1/PP2PPBP/RNBQK2R b KQkq - 3 5", + "hash": 14615071739645611508, + "name": "Neo-Grnfeld, 5.Nf3" + }, + "D74": { + "eco": "D74", + "fen": "rnbq1rk1/ppp1ppbp/6p1/3n4/3P4/5NP1/PP2PPBP/RNBQ1RK1 b - - 1 7", + "hash": 3443667478371923534, + "name": "Neo-Grnfeld, 6.cxd5 Nxd5 7.O-O" + }, + "D75": { + "eco": "D75", + "fen": "rnbq1rk1/pp2ppbp/6p1/2pn4/3P4/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 1 8", + "hash": 3615427739723104234, + "name": "Neo-Grnfeld, 6.cxd5 Nxd5 7.O-O c5 8.Nc3" + }, + "D76a": { + "eco": "D76a", + "fen": "rnbq1rk1/ppp1ppbp/1n4p1/8/3P4/5NP1/PP2PPBP/RNBQ1RK1 w - - 2 8", + "hash": 455376332548283648, + "name": "Neo-Grnfeld, 6.cxd5 Nxd5 7.O-O Nb6" + }, + "D76b": { + "eco": "D76b", + "fen": "rnbq1rk1/ppp1ppbp/1n4p1/8/3P4/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 3 8", + "hash": 18286526530836996057, + "name": "Neo-Grnfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3" + }, + "D76c": { + "eco": "D76c", + "fen": "r1bq1rk1/ppp1ppbp/1nn3p1/8/3P4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 4 9", + "hash": 6209076424068446938, + "name": "Neo-Grnfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6" + }, + "D76d": { + "eco": "D76d", + "fen": "r1bq1rk1/ppp1ppbp/1nn3p1/8/3P4/2N1PNP1/PP3PBP/R1BQ1RK1 b - - 0 9", + "hash": 18088233663438631550, + "name": "Neo-Grnfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.e3" + }, + "D76e": { + "eco": "D76e", + "fen": "r1bq1rk1/ppp2pbp/1nn3p1/4p3/3P4/2N1PNP1/PP3PBP/R1BQ1RK1 w - e6 0 10", + "hash": 8178071713794247240, + "name": "Neo-Grnfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.e3 e5" + }, + "D76f": { + "eco": "D76f", + "fen": "r1bq1rk1/ppp2pbp/1n4p1/n2Pp3/8/2N1PNP1/PP3PBP/R1BQ1RK1 w - - 1 11", + "hash": 11412457093701729823, + "name": "Neo-Grnfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.e3 e5 10.d5 Na5" + }, + "D76g": { + "eco": "D76g", + "fen": "r1bqr1k1/ppp1ppbp/1nn3p1/8/3P4/2N1PNP1/PP3PBP/R1BQ1RK1 w - - 1 10", + "hash": 16669959595702441980, + "name": "Neo-Grnfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.e3 Re8" + }, + "D76h": { + "eco": "D76h", + "fen": "r1bqr1k1/ppp1ppbp/1nn3p1/3P4/8/2N1PNP1/PP3PBP/R1BQ1RK1 b - - 0 10", + "hash": 6728330279763820961, + "name": "Neo-Grnfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.e3 Re8 10.d5" + }, + "D76i": { + "eco": "D76i", + "fen": "r1bq1rk1/ppp1ppbp/1nn3p1/3P4/8/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 0 9", + "hash": 17015533220487015559, + "name": "Neo-Grnfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.d5" + }, + "D76j": { + "eco": "D76j", + "fen": "r1bq1rk1/ppp1ppbp/1n4p1/n2P4/8/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 1 10", + "hash": 13345427636675939981, + "name": "Neo-Grnfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.d5 Na5" + }, + "D76k": { + "eco": "D76k", + "fen": "r1bq1rk1/ppp1ppbp/1n4p1/n2P4/4P3/2N2NP1/PP3PBP/R1BQ1RK1 b - e3 0 10", + "hash": 9021685262727558023, + "name": "Neo-Grnfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.d5 Na5 10.e4" + }, + "D76l": { + "eco": "D76l", + "fen": "r1bq1rk1/pp2ppbp/1np3p1/n2P2B1/4P3/2N2NP1/PP3PBP/R2Q1RK1 b - - 1 11", + "hash": 2959933866628529140, + "name": "Neo-Grnfeld, 6.cxd5 Nxd5 7.O-O Nb6 8.Nc3 Nc6 9.d5 Na5 10.e4 c6 11.Bg5" + }, + "D77a": { + "eco": "D77a", + "fen": "rnbq1rk1/ppp1ppbp/5np1/3p4/2PP4/5NP1/PP2PPBP/RNBQ1RK1 b - - 5 6", + "hash": 13695091133884366607, + "name": "Neo-Grnfeld, 6.O-O" + }, + "D77b": { + "eco": "D77b", + "fen": "rnbq1rk1/ppp2pbp/4pnp1/3p4/2PP4/5NP1/PP2PPBP/RNBQ1RK1 w - - 0 7", + "hash": 14445664014516481885, + "name": "Neo-Grnfeld, 6.O-O e6" + }, + "D77c": { + "eco": "D77c", + "fen": "rnbq1rk1/pp2ppbp/5np1/2pp4/2PP4/5NP1/PP2PPBP/RNBQ1RK1 w - c6 0 7", + "hash": 6376935982737945714, + "name": "Neo-Grnfeld, 6.O-O c5" + }, + "D77d": { + "eco": "D77d", + "fen": "r1bq1rk1/ppp1ppbp/2n2np1/3p4/2PP4/5NP1/PP2PPBP/RNBQ1RK1 w - - 6 7", + "hash": 1577214458413373964, + "name": "Neo-Grnfeld, 6.O-O Nc6" + }, + "D77e": { + "eco": "D77e", + "fen": "rnbq1rk1/ppp1ppbp/5np1/8/2pP4/5NP1/PP2PPBP/RNBQ1RK1 w - - 0 7", + "hash": 7784619160746168812, + "name": "Neo-Grnfeld, 6.O-O dxc4" + }, + "D77f": { + "eco": "D77f", + "fen": "rnbq1rk1/ppp1ppbp/5np1/8/2pP4/N4NP1/PP2PPBP/R1BQ1RK1 b - - 1 7", + "hash": 7777247830156754466, + "name": "Neo-Grnfeld, 6.O-O dxc4 7.Na3" + }, + "D77g": { + "eco": "D77g", + "fen": "r1bq1rk1/ppp1ppbp/n4np1/8/2pP4/N4NP1/PP2PPBP/R1BQ1RK1 w - - 2 8", + "hash": 2697372651513717406, + "name": "Neo-Grnfeld, 6.O-O dxc4 7.Na3 Na6" + }, + "D77h": { + "eco": "D77h", + "fen": "rnbq1rk1/ppp1ppbp/5np1/8/3P4/N1p2NP1/PP2PPBP/R1BQ1RK1 w - - 0 8", + "hash": 6963637788772418615, + "name": "Neo-Grnfeld, 6.O-O dxc4 7.Na3 c3" + }, + "D77i": { + "eco": "D77i", + "fen": "rnbq1rk1/pp2ppbp/5np1/2p5/3P4/N1P1PNP1/P4PBP/R1BQ1RK1 b - - 0 9", + "hash": 186481166121621002, + "name": "Neo-Grnfeld, 6.O-O dxc4 7.Na3 c3 8.bxc3 c5 9.e3" + }, + "D77j": { + "eco": "D77j", + "fen": "r1bq1rk1/ppp1ppbp/2n2np1/8/2pP4/N4NP1/PP2PPBP/R1BQ1RK1 w - - 2 8", + "hash": 13836057855875750689, + "name": "Neo-Grnfeld, 6.O-O dxc4 7.Na3 Nc6" + }, + "D77k": { + "eco": "D77k", + "fen": "r2q1rk1/ppp1ppbp/2n1bnp1/8/2NP4/1P3NP1/P3PPBP/R1BQ1RK1 b - - 0 9", + "hash": 9800087365227410076, + "name": "Neo-Grnfeld, 6.O-O dxc4 7.Na3 Nc6 8.Nxc4 Be6 9.b3" + }, + "D77l": { + "eco": "D77l", + "fen": "r2q1rk1/ppp1ppbp/2n2np1/3b4/2NP4/1P3NP1/P3PPBP/R1BQ1RK1 w - - 1 10", + "hash": 2979360640054887032, + "name": "Neo-Grnfeld, 6.O-O dxc4 7.Na3 Nc6 8.Nxc4 Be6 9.b3 Bd5" + }, + "D78a": { + "eco": "D78a", + "fen": "rnbq1rk1/pp2ppbp/2p2np1/3p4/2PP4/5NP1/PP2PPBP/RNBQ1RK1 w - - 0 7", + "hash": 3203274557100633268, + "name": "Neo-Grnfeld, 6.O-O c6" + }, + "D78b": { + "eco": "D78b", + "fen": "rnbq1rk1/pp2ppbp/2p2np1/3p4/2PP4/N4NP1/PP2PPBP/R1BQ1RK1 b - - 1 7", + "hash": 3139714204027945850, + "name": "Neo-Grnfeld, 6.O-O c6 7.Na3" + }, + "D78c": { + "eco": "D78c", + "fen": "rnbq1rk1/pp2ppbp/2p2np1/3pN3/2PP4/6P1/PP2PPBP/RNBQ1RK1 b - - 1 7", + "hash": 17387429438744611266, + "name": "Neo-Grnfeld, 6.O-O c6 7.Ne5" + }, + "D78d": { + "eco": "D78d", + "fen": "rnbq1rk1/pp2ppbp/2p2np1/3p4/Q1PP4/5NP1/PP2PPBP/RNB2RK1 b - - 1 7", + "hash": 18361435660230418127, + "name": "Neo-Grnfeld, 6.O-O c6 7.Qa4" + }, + "D78e": { + "eco": "D78e", + "fen": "rnbq1rk1/pp2ppbp/2p2np1/3p4/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 1 7", + "hash": 15556358481574702701, + "name": "Neo-Grnfeld, 6.O-O c6 7.Nc3" + }, + "D78f": { + "eco": "D78f", + "fen": "rnbq1rk1/pp2ppbp/2p2np1/8/2pP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 0 8", + "hash": 424869626021396622, + "name": "Neo-Grnfeld, 6.O-O c6 7.Nc3 dxc4" + }, + "D78g": { + "eco": "D78g", + "fen": "rnbq1rk1/pp2ppbp/2p2np1/3p4/2PP4/1Q3NP1/PP2PPBP/RNB2RK1 b - - 1 7", + "hash": 1625221692978365522, + "name": "Neo-Grnfeld, 6.O-O c6 7.Qb3" + }, + "D78h": { + "eco": "D78h", + "fen": "rnb2rk1/pp2ppbp/1qp2np1/3p4/2PP4/1Q3NP1/PP2PPBP/RNB2RK1 w - - 2 8", + "hash": 15092139401942651528, + "name": "Neo-Grnfeld, 6.O-O c6 7.Qb3 Qb6" + }, + "D78i": { + "eco": "D78i", + "fen": "rnbq1rk1/pp2ppbp/2p2np1/8/2pP4/1Q3NP1/PP2PPBP/RNB2RK1 w - - 0 8", + "hash": 14162637438039812785, + "name": "Neo-Grnfeld, 6.O-O c6 7.Qb3 dxc4" + }, + "D78j": { + "eco": "D78j", + "fen": "rnbq1rk1/pp2ppbp/2p2np1/8/2QP4/5NP1/PP2PPBP/RNB2RK1 b - - 0 8", + "hash": 16975852190703389075, + "name": "Neo-Grnfeld, 6.O-O c6 7.Qb3 dxc4" + }, + "D78k": { + "eco": "D78k", + "fen": "rnbq1rk1/pp2ppbp/2p2np1/3p4/2PP4/5NP1/PP1NPPBP/R1BQ1RK1 b - - 1 7", + "hash": 8438313443730785412, + "name": "Neo-Grnfeld, 6.O-O c6 7.Nbd2" + }, + "D78l": { + "eco": "D78l", + "fen": "r1bq1rk1/pp1nppbp/2p2np1/3p4/2PP4/5NP1/PP1NPPBP/R1BQ1RK1 w - - 2 8", + "hash": 5114279395926927688, + "name": "Neo-Grnfeld, 6.O-O c6 7.Nbd2 Nbd7" + }, + "D78m": { + "eco": "D78m", + "fen": "rnbq1rk1/pp2ppbp/2p3p1/3p4/2PPn3/5NP1/PP1NPPBP/R1BQ1RK1 w - - 2 8", + "hash": 5697798730258024830, + "name": "Neo-Grnfeld, 6.O-O c6 7.Nbd2 Ne4" + }, + "D78n": { + "eco": "D78n", + "fen": "rn1q1rk1/pp2ppbp/2p2np1/3p1b2/2PP4/5NP1/PP1NPPBP/R1BQ1RK1 w - - 2 8", + "hash": 17727154192375549193, + "name": "Neo-Grnfeld, 6.O-O c6 7.Nbd2 Bf5" + }, + "D78o": { + "eco": "D78o", + "fen": "rnbq1rk1/pp2ppbp/2p2np1/3p4/2PP4/1P3NP1/P3PPBP/RNBQ1RK1 b - - 0 7", + "hash": 11588379114805577689, + "name": "Neo-Grnfeld, 6.O-O c6 7.b3" + }, + "D78p": { + "eco": "D78p", + "fen": "rn1q1rk1/pp2ppbp/2p2np1/3p1b2/2PP4/1P3NP1/P3PPBP/RNBQ1RK1 w - - 1 8", + "hash": 2579252958670605908, + "name": "Neo-Grnfeld, 6.O-O c6 7.b3 Bf5" + }, + "D78q": { + "eco": "D78q", + "fen": "rnbq1rk1/pp2ppbp/2p3p1/3p4/2PPn3/1P3NP1/P3PPBP/RNBQ1RK1 w - - 1 8", + "hash": 11158369528835164707, + "name": "Neo-Grnfeld, 6.O-O c6 7.b3 Ne4" + }, + "D79a": { + "eco": "D79a", + "fen": "rnbq1rk1/pp2ppbp/2p2np1/3P4/3P4/5NP1/PP2PPBP/RNBQ1RK1 b - - 0 7", + "hash": 2476639982824569001, + "name": "Neo-Grnfeld, 6.O-O c6 7.cxd5" + }, + "D79b": { + "eco": "D79b", + "fen": "rnbq1rk1/pp2ppbp/5np1/3p4/3P4/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 1 8", + "hash": 12302001408537868234, + "name": "Neo-Grnfeld, 6.O-O c6 7.cxd5 cxd5 8.Nc3" + }, + "D79c": { + "eco": "D79c", + "fen": "rnbq1rk1/pp3pbp/4pnp1/3p4/3P4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 0 9", + "hash": 15910811949305407384, + "name": "Neo-Grnfeld, 6.O-O c6 7.cxd5 cxd5 8.Nc3 e6" + }, + "D79d": { + "eco": "D79d", + "fen": "rnbq1rk1/pp2ppbp/6p1/3p4/3Pn3/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 2 9", + "hash": 10426169062257637936, + "name": "Neo-Grnfeld, 6.O-O c6 7.cxd5 cxd5 8.Nc3 Ne4" + }, + "D79e": { + "eco": "D79e", + "fen": "rnbq1rk1/pp2ppbp/6p1/3p4/3PN3/5NP1/PP2PPBP/R1BQ1RK1 b - - 0 9", + "hash": 7059175561775092644, + "name": "Neo-Grnfeld, 6.O-O c6 7.cxd5 cxd5 8.Nc3 Ne4 9.Nxe4" + }, + "D79f": { + "eco": "D79f", + "fen": "r1bq1rk1/pp2ppbp/2n2np1/3p4/3P4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 2 9", + "hash": 95883977722729161, + "name": "Neo-Grnfeld, 6.O-O c6 7.cxd5 cxd5 8.Nc3 Nc6" + }, + "D79g": { + "eco": "D79g", + "fen": "r1bq1rk1/pp2ppbp/2n2np1/3pN3/3P4/2N3P1/PP2PPBP/R1BQ1RK1 b - - 3 9", + "hash": 15883204364154566591, + "name": "Neo-Grnfeld, 6.O-O c6 7.cxd5 cxd5 8.Nc3 Nc6 9.Ne5" + }, + "D79h": { + "eco": "D79h", + "fen": "r1bq1rk1/pp3pbp/2n1pnp1/3pN3/3P4/2N3P1/PP2PPBP/R1BQ1RK1 w - - 0 10", + "hash": 12257540372258842605, + "name": "Neo-Grnfeld, 6.O-O c6 7.cxd5 cxd5 8.Nc3 Nc6 9.Ne5 e6" + }, + "D79i": { + "eco": "D79i", + "fen": "rnbq1rk1/pp2ppbp/5np1/3pN3/3P4/6P1/PP2PPBP/RNBQ1RK1 b - - 1 8", + "hash": 10094460638134718565, + "name": "Neo-Grnfeld, 6.O-O c6 7.cxd5 cxd5 8.Ne5" + }, + "D79j": { + "eco": "D79j", + "fen": "rnbq1rk1/pp3pbp/4pnp1/3pN3/3P4/2N3P1/PP2PPBP/R1BQ1RK1 b - - 1 9", + "hash": 141389380335878894, + "name": "Neo-Grnfeld, Main Line" + }, + "D79k": { + "eco": "D79k", + "fen": "rnbq1rk1/pp1n1pbp/4p1p1/3pN3/3P1P2/2N3P1/PP2P1BP/R1BQ1RK1 b - f3 0 10", + "hash": 407345211790063250, + "name": "Neo-Grnfeld, Main Line, 10.f4" + }, + "D79l": { + "eco": "D79l", + "fen": "r1bq1rk1/pp1n1pbp/2n1p1p1/3pN3/3P1P2/2N3P1/PP2P1BP/R1BQ1RK1 w - - 1 11", + "hash": 12559121737123517329, + "name": "Neo-Grnfeld, Main Line, 10.f4 Nc6" + }, + "D79m": { + "eco": "D79m", + "fen": "r1bq1rk1/pp1n1pbp/2n1p1p1/3pN3/3P1P2/2N1B1P1/PP2P1BP/R2Q1RK1 b - - 2 11", + "hash": 15943390573639518239, + "name": "Neo-Grnfeld, Main Line, 10.f4 Nc6 11.Be3" + }, + "D79n": { + "eco": "D79n", + "fen": "r1bq1rk1/pp3pbp/1nn1p1p1/3pN3/3P1P2/2N1B1P1/PP2P1BP/R2Q1RK1 w - - 3 12", + "hash": 14523578907524030225, + "name": "Neo-Grnfeld, Main Line, 10.f4 Nc6 11.Be3 Nb6" + }, + "D80": { + "eco": "D80", + "fen": "rnbqkb1r/ppp1pp1p/5np1/3p4/2PP4/2N5/PP2PPPP/R1BQKBNR w KQkq d6 0 4", + "hash": 14090210237421479419, + "name": "Grnfeld Defence" + }, + "D81": { + "eco": "D81", + "fen": "rnbqkb1r/ppp1pp1p/5np1/3p4/2PP4/1QN5/PP2PPPP/R1B1KBNR b KQkq - 1 4", + "hash": 17974948268386274589, + "name": "Grnfeld: Early Russian Variation" + }, + "D82": { + "eco": "D82", + "fen": "rnbqkb1r/ppp1pp1p/5np1/3p4/2PP1B2/2N5/PP2PPPP/R2QKBNR b KQkq - 1 4", + "hash": 1792042390923808664, + "name": "Grnfeld: 4.Bf4" + }, + "D83": { + "eco": "D83", + "fen": "rnbq1rk1/ppp1ppbp/5np1/3p4/2PP1B2/2N1P3/PP3PPP/R2QKBNR w KQ - 1 6", + "hash": 1145901931914667389, + "name": "Grnfeld: Grnfeld Gambit" + }, + "D84": { + "eco": "D84", + "fen": "rnbq1rk1/ppp1ppbp/5np1/3P4/3P1B2/2N1P3/PP3PPP/R2QKBNR b KQ - 0 6", + "hash": 129923181576925536, + "name": "Grnfeld: Grnfeld Gambit Accepted" + }, + "D85a": { + "eco": "D85a", + "fen": "rnbqkb1r/ppp1pp1p/5np1/3P4/3P4/2N5/PP2PPPP/R1BQKBNR b KQkq - 0 4", + "hash": 14817089354276172262, + "name": "Grnfeld: Exchange Variation" + }, + "D85b": { + "eco": "D85b", + "fen": "rnbqkb1r/ppp1pp1p/6p1/3n4/3P4/2N5/PP1BPPPP/R2QKBNR b KQkq - 1 5", + "hash": 8918183597645367230, + "name": "Grnfeld: Exchange, 5.Bd2" + }, + "D85c": { + "eco": "D85c", + "fen": "rnbqk2r/ppp1ppbp/1n4p1/8/3PP3/2N5/PP1B1PPP/R2QKBNR w KQkq - 1 7", + "hash": 2802223350231603792, + "name": "Grnfeld: Exchange, 5.Bd2 Bg7 6.e4 Nb6" + }, + "D85d": { + "eco": "D85d", + "fen": "rnbqkb1r/ppp1pp1p/6p1/3n4/3PP3/2N5/PP3PPP/R1BQKBNR b KQkq e3 0 5", + "hash": 10829353106878222768, + "name": "Grnfeld: Exchange, 5.e4" + }, + "D85e": { + "eco": "D85e", + "fen": "rnbqk2r/ppp1ppbp/6p1/1B6/3PP3/2P5/P4PPP/R1BQK1NR b KQkq - 2 7", + "hash": 15729076178784387010, + "name": "Grnfeld: Exchange, 7.Bb5+" + }, + "D85f": { + "eco": "D85f", + "fen": "rnbq1rk1/pp2ppbp/2p3p1/8/B2PP3/2P5/P4PPP/R1BQK1NR w KQ - 2 9", + "hash": 8329875256909970616, + "name": "Grnfeld: Exchange, 7.Bb5+ c6 8.Ba4 O-O" + }, + "D85g": { + "eco": "D85g", + "fen": "rnbqk2r/ppp1ppbp/6p1/8/3PP3/2P1B3/P4PPP/R2QKBNR b KQkq - 2 7", + "hash": 11141497770512152527, + "name": "Grnfeld: Exchange, 7.Be3" + }, + "D85h": { + "eco": "D85h", + "fen": "rnb1k2r/pp2ppbp/6p1/q1p5/3PP3/2P1B3/P2Q1PPP/R3KBNR w KQkq - 2 9", + "hash": 10197423116085494429, + "name": "Grnfeld: Exchange, 7.Be3 c5 8.Qd2 Qa5" + }, + "D85i": { + "eco": "D85i", + "fen": "rnbqk2r/ppp1ppbp/6p1/8/3PP3/2P2N2/P4PPP/R1BQKB1R b KQkq - 2 7", + "hash": 3671236527783054716, + "name": "Grnfeld: Modern Exchange" + }, + "D85j": { + "eco": "D85j", + "fen": "rnbqk2r/pp2ppbp/6p1/2p5/3PP3/2P2N2/P4PPP/R1BQKB1R w KQkq c6 0 8", + "hash": 15313095824850126337, + "name": "Grnfeld: Modern Exchange, 7...c5" + }, + "D85k": { + "eco": "D85k", + "fen": "rnbqk2r/pp2ppbp/6p1/1Bp5/3PP3/2P2N2/P4PPP/R1BQK2R b KQkq - 1 8", + "hash": 16671721271098152322, + "name": "Grnfeld: Modern Exchange, 8.Bb5+" + }, + "D85l": { + "eco": "D85l", + "fen": "rnbqk2r/pp2ppbp/6p1/2p5/3PP3/2P2N2/P3BPPP/R1BQK2R b KQkq - 1 8", + "hash": 12034612696403987618, + "name": "Grnfeld: Modern Exchange, 8.Be2" + }, + "D85m": { + "eco": "D85m", + "fen": "rnbqk2r/pp2ppbp/6p1/2p5/3PP3/2P2N2/P4PPP/1RBQKB1R b Kkq - 1 8", + "hash": 9786371597106561813, + "name": "Grnfeld: Modern Exchange, 8.Rb1" + }, + "D85n": { + "eco": "D85n", + "fen": "rnbq1rk1/p3ppbp/1p4p1/2p5/3PP3/2P2N2/P3BPPP/1RBQK2R w K - 0 10", + "hash": 10777406669768710086, + "name": "Grnfeld: Modern Exchange, 8.Rb1 O-O 9.Be2 b6" + }, + "D85o": { + "eco": "D85o", + "fen": "r1bq1rk1/pp2ppbp/2n3p1/2p5/3PP3/2P2N2/P3BPPP/1RBQK2R w K - 4 10", + "hash": 6130977653193131358, + "name": "Grnfeld: Modern Exchange, 8.Rb1 O-O 9.Be2 Nc6" + }, + "D85p": { + "eco": "D85p", + "fen": "r1bq1rk1/pp2pp1p/6p1/2pPb3/4P3/2P5/P2QBPPP/1RB1K2R b K - 1 12", + "hash": 9989585784522614156, + "name": "Grnfeld: Modern Exchange, 8.Rb1 O-O 9.Be2 Nc6, Main Line" + }, + "D85q": { + "eco": "D85q", + "fen": "rnbq1rk1/pp2ppbp/6p1/8/3pP3/2P2N2/P3BPPP/1RBQK2R w K - 0 10", + "hash": 11666286102641805723, + "name": "Grnfeld: Modern Exchange, 8.Rb1 O-O 9.Be2 cd" + }, + "D85r": { + "eco": "D85r", + "fen": "rnb2rk1/pp2ppbp/6p1/q7/3PP3/5N2/P2BBPPP/1R1QK2R b K - 2 11", + "hash": 18279798368692719414, + "name": "Grnfeld: Modern Exchange, 8.Rb1 O-O 9.Be2 cd 10.cd Qa5+ 11.Bd2" + }, + "D85s": { + "eco": "D85s", + "fen": "rn3rk1/pp2ppbp/6p1/8/3PP1b1/5N2/q2BBPPP/1R1Q1RK1 w - - 2 13", + "hash": 176626935499377603, + "name": "Grnfeld: Modern Exchange, 8.Rb1, 10...Qa5+ 11.Bd2 Qxa2 12.O-O Bg4" + }, + "D85t": { + "eco": "D85t", + "fen": "rnbqk2r/pp2ppbp/6p1/2p5/3PP3/2P1BN2/P4PPP/R2QKB1R b KQkq - 1 8", + "hash": 12072937194244775311, + "name": "Grnfeld: Modern Exchange, 8.Be3" + }, + "D85u": { + "eco": "D85u", + "fen": "rnb1k2r/pp2ppbp/6p1/q1p5/3PP3/2P1BN2/P4PPP/R2QKB1R w KQkq - 2 9", + "hash": 9149103540017150976, + "name": "Grnfeld: Modern Exchange, 8.Be3 Qa5" + }, + "D85v": { + "eco": "D85v", + "fen": "r1b1k2r/pp2ppbp/2n3p1/q1p5/3PP3/2P1BN2/P2Q1PPP/2R1KB1R b Kkq - 5 10", + "hash": 9409845988786934397, + "name": "Grnfeld: Modern Exchange, 8.Be3 Qa5 9.Qd2 Nc6 10.Rc1" + }, + "D85w": { + "eco": "D85w", + "fen": "rnbq1rk1/pp2ppbp/6p1/2p5/3PP3/2P1BN2/P4PPP/R2QKB1R w KQ - 2 9", + "hash": 12475918602686854244, + "name": "Grnfeld: Modern Exchange, 8.Be3 O-O" + }, + "D85x": { + "eco": "D85x", + "fen": "rnb2rk1/pp2ppbp/6p1/q1p5/3PP3/2P1BN2/P4PPP/2RQKB1R w K - 4 10", + "hash": 849781511433879861, + "name": "Grnfeld: Modern Exchange, 8.Be3 O-O 9.Rc1 Qa5" + }, + "D85y": { + "eco": "D85y", + "fen": "rnb2rk1/pp2ppbp/6p1/8/3PP3/4B3/P2N1PPP/2R1KB1R b K - 0 12", + "hash": 10527216361197428323, + "name": "Grnfeld: Modern Exchange, 8.Be3 O-O 9.Rc1 Qa5 Queenswap, 12.Nxd2" + }, + "D86": { + "eco": "D86", + "fen": "rnbqk2r/ppp1ppbp/6p1/8/2BPP3/2P5/P4PPP/R1BQK1NR b KQkq - 2 7", + "hash": 9954506542371257063, + "name": "Grnfeld: Classical Exchange" + }, + "D87a": { + "eco": "D87a", + "fen": "rnbq1rk1/pp2ppbp/6p1/2p5/2BPP3/2P5/P3NPPP/R1BQK2R w KQ c6 0 9", + "hash": 8239429129341162895, + "name": "Grnfeld: Classical Exchange, 8...c5" + }, + "D87b": { + "eco": "D87b", + "fen": "rnbq1rk1/pp2ppbp/6p1/2p5/2BPP3/2P1B3/P3NPPP/R2QK2R b KQ - 1 9", + "hash": 94838165123681793, + "name": "Grnfeld: Classical Exchange, 8...c5 9.Be3" + }, + "D87c": { + "eco": "D87c", + "fen": "rnb2rk1/pp2ppbp/6p1/q1p5/2BPP3/2P1B3/P3NPPP/R2QK2R w KQ - 2 10", + "hash": 15574427814884732814, + "name": "Grnfeld: Classical Exchange, 8...c5 9.Be3 Qa5" + }, + "D87d": { + "eco": "D87d", + "fen": "r1bq1rk1/pp2ppbp/2n3p1/2p5/2BPP3/2P1B3/P3NPPP/R2QK2R w KQ - 2 10", + "hash": 12303049324329790210, + "name": "Grnfeld: Classical Exchange, 8...c5 9.Be3 Nc6" + }, + "D87e": { + "eco": "D87e", + "fen": "rnbq1rk1/pp2ppbp/6p1/2p5/2BPP3/2P5/P3NPPP/R1BQ1RK1 b - - 1 9", + "hash": 877408182930050719, + "name": "Grnfeld: Classical Exchange, 9.O-O" + }, + "D87f": { + "eco": "D87f", + "fen": "r1bq1rk1/pp2ppbp/2n3p1/2p5/2BPP3/2P5/P3NPPP/R1BQ1RK1 w - - 2 10", + "hash": 12087932935932521372, + "name": "Grnfeld: Classical Exchange, 9.O-O Nc6" + }, + "D87g": { + "eco": "D87g", + "fen": "r1bq1rk1/pp2ppbp/2n3p1/2p5/2BPP3/2P1B3/P3NPPP/R2Q1RK1 b - - 3 10", + "hash": 15332589702934605842, + "name": "Grnfeld: Classical Exchange, 9.O-O Nc6 10.Be3" + }, + "D87h": { + "eco": "D87h", + "fen": "r1b2rk1/pp2ppbp/2n3p1/q1p5/2BPP3/2P1B3/P3NPPP/R2Q1RK1 w - - 4 11", + "hash": 989622324393709981, + "name": "Grnfeld: Classical Exchange, 10.Be3 Qa5" + }, + "D87i": { + "eco": "D87i", + "fen": "r1bq1rk1/pp2ppbp/6p1/n1p5/2BPP3/2P1B3/P3NPPP/R2Q1RK1 w - - 4 11", + "hash": 9358312817348186648, + "name": "Grnfeld: Classical Exchange, 10.Be3 Na5" + }, + "D87j": { + "eco": "D87j", + "fen": "r1b2rk1/ppq1ppbp/2n3p1/2p5/2BPP3/2P1B3/P3NPPP/R2Q1RK1 w - - 4 11", + "hash": 15192737452909526803, + "name": "Grnfeld: Classical Exchange, 10.Be3 Qc7" + }, + "D87k": { + "eco": "D87k", + "fen": "r1br2k1/ppq1ppbp/2n3p1/2p5/2BPP3/2P1B3/P3NPPP/2RQ1RK1 w - - 6 12", + "hash": 29386501546666703, + "name": "Grnfeld: Classical Exchange, 10.Be3 Qc7 11.Rc1 Rd8" + }, + "D87l": { + "eco": "D87l", + "fen": "r1br2k1/ppq1ppbp/2n3p1/2p5/2BPP3/2P1B3/P2QNPPP/2R2RK1 b - - 7 12", + "hash": 2913874390273275247, + "name": "Grnfeld: Classical Exchange, 10.Be3 Qc7 11.Rc1 Rd8 12.Qd2" + }, + "D87m": { + "eco": "D87m", + "fen": "r1br2k1/ppq1ppbp/2n3p1/2p5/2BPPB2/2P5/P3NPPP/2RQ1RK1 b - - 7 12", + "hash": 5828252863777480235, + "name": "Grnfeld: Classical Exchange, 10.Be3 Qc7 11.Rc1 Rd8 12.Bf4" + }, + "D87n": { + "eco": "D87n", + "fen": "r2q1rk1/pp2ppbp/2n3p1/2p5/2BPP1b1/2P1B3/P3NPPP/R2Q1RK1 w - - 4 11", + "hash": 15428073568008650488, + "name": "Grnfeld: Classical Exchange, 10.Be3 Bg4" + }, + "D87o": { + "eco": "D87o", + "fen": "r2q1rk1/pp2ppbp/6p1/n1pB4/3PP1b1/2P1BP2/P3N1PP/R2Q1RK1 b - - 2 12", + "hash": 12434292974566670534, + "name": "Grnfeld: Classical Exchange, 10.Be3 Bg4 11.f3 Na5 12.Bd5" + }, + "D87p": { + "eco": "D87p", + "fen": "r2q1rk1/pp2pBbp/6p1/n1p5/3PP1b1/2P1BP2/P3N1PP/R2Q1RK1 b - - 0 12", + "hash": 5480348324255519222, + "name": "Grnfeld: Classical Exchange, Seville Variation" + }, + "D88": { + "eco": "D88", + "fen": "r1bq1rk1/pp2ppbp/2n3p1/8/2BpP3/2P1B3/P3NPPP/R2Q1RK1 w - - 0 11", + "hash": 10076512985038117332, + "name": "Grnfeld: Classical Exchange, Main Line" + }, + "D89a": { + "eco": "D89a", + "fen": "r2q1rk1/pp2ppbp/6p1/n7/3PP1b1/3BBP2/P3N1PP/R2Q1RK1 b - - 2 13", + "hash": 15023190004710049727, + "name": "Grnfeld: Classical Exchange, Main Line, 13.Bd3" + }, + "D89b": { + "eco": "D89b", + "fen": "r2q1rk1/pp2ppbp/4b1p1/n7/3PP3/3BBP2/P3N1PP/R2Q1RK1 w - - 3 14", + "hash": 9133416567439554388, + "name": "Grnfeld: Classical Exchange, Main Line, 13.Bd3 Be6" + }, + "D89c": { + "eco": "D89c", + "fen": "r2q1rk1/pp2ppbp/4b1p1/n7/3PP3/3BBP2/P3N1PP/2RQ1RK1 b - - 4 14", + "hash": 17311295116609921562, + "name": "Grnfeld: Classical Exchange, Main Line, 13.Bd3 Be6 14.Rc1" + }, + "D89d": { + "eco": "D89d", + "fen": "r2q1rk1/pp1bppbp/6p1/n2P4/1Q2P3/3BBP2/4N1PP/2R2RK1 b - - 2 17", + "hash": 5336582202429001815, + "name": "Grnfeld: Classical Exchange, 14.Rc1 Bxa2 15.Qa4 Be6 16.d5 Be7 17.Qb4" + }, + "D89e": { + "eco": "D89e", + "fen": "r2q1rk1/p2bppbp/1p4p1/n2P4/1Q2P3/3BBP2/4N1PP/2R2RK1 w - - 0 18", + "hash": 2406628840176641996, + "name": "Grnfeld: Classical Exchange, 14.Rc1 Bxa2 15.Qa4 with 17.Qb4 b6" + }, + "D89f": { + "eco": "D89f", + "fen": "r2q1rk1/pp1b1pbp/4p1p1/n2P4/1Q2P3/3BBP2/4N1PP/2R2RK1 w - - 0 18", + "hash": 4357420707547791365, + "name": "Grnfeld: Classical Exchange, 14.Rc1 Bxa2 15.Qa4 with 17.Qb4 e6" + }, + "D89g": { + "eco": "D89g", + "fen": "r2q1rk1/pp2ppbp/4b1p1/n2P4/4P3/3BBP2/P3N1PP/R2Q1RK1 b - - 0 14", + "hash": 14179630335314125065, + "name": "Grnfeld: Classical Exchange, Main Line, Sokolsky Variation" + }, + "D89h": { + "eco": "D89h", + "fen": "r2q1rk1/pp2p2p/4bpp1/n2P4/4P3/3BBP2/P3N1PP/QR4K1 b - - 1 16", + "hash": 14615077730039882925, + "name": "Grnfeld: Classical Exchange, Main Line, Sokolsky, 16.Rb1" + }, + "D89i": { + "eco": "D89i", + "fen": "r2q1rk1/pp2p2p/4bppB/n2P4/4P3/3B1P2/P3N1PP/Q4RK1 b - - 1 16", + "hash": 12217103151898710201, + "name": "Grnfeld: Classical Exchange, Main Line, Sokolsky, 16.Bh6" + }, + "D90": { + "eco": "D90", + "fen": "rnbqkb1r/ppp1pp1p/5np1/3p4/2PP4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 4", + "hash": 1796539845786600646, + "name": "Grnfeld: Three Knights Variation" + }, + "D91a": { + "eco": "D91a", + "fen": "rnbqk2r/ppp1ppbp/5np1/3p2B1/2PP4/2N2N2/PP2PPPP/R2QKB1R b KQkq - 3 5", + "hash": 7928866389593363620, + "name": "Grnfeld: 5.Bg5" + }, + "D91b": { + "eco": "D91b", + "fen": "rnbqk2r/ppp1ppbp/5np1/6B1/2pP4/2N2N2/PP2PPPP/R2QKB1R w KQkq - 0 6", + "hash": 13550984703837862471, + "name": "Grnfeld: 5.Bg5 dxc4" + }, + "D91c": { + "eco": "D91c", + "fen": "rnbqk2r/ppp1ppbp/5np1/6B1/2pPP3/2N2N2/PP3PPP/R2QKB1R b KQkq e3 0 6", + "hash": 8649666120975992653, + "name": "Grnfeld: 5.Bg5 dxc4 6.e4" + }, + "D91d": { + "eco": "D91d", + "fen": "rnbqk2r/ppp1ppbp/6p1/3p2B1/2PPn3/2N2N2/PP2PPPP/R2QKB1R w KQkq - 4 6", + "hash": 6053032956693748062, + "name": "Grnfeld: 5.Bg5 Ne4" + }, + "D91e": { + "eco": "D91e", + "fen": "rnbqk2r/ppp1ppbp/6p1/3p4/2PPn2B/2N2N2/PP2PPPP/R2QKB1R b KQkq - 5 6", + "hash": 1049296539530869701, + "name": "Grnfeld: 5.Bg5 Ne4 6.Bh4" + }, + "D91f": { + "eco": "D91f", + "fen": "rnbqk2r/ppp1ppbp/6p1/3p4/2PP3B/2n2N2/PP2PPPP/R2QKB1R w KQkq - 0 7", + "hash": 13548626696139591112, + "name": "Grnfeld: 5.Bg5 Ne4 6.Bh4 Nxc3" + }, + "D91g": { + "eco": "D91g", + "fen": "rnbqk2r/ppp1ppbp/6p1/8/2pP3B/2P2N2/P3PPPP/R2QKB1R w KQkq - 0 8", + "hash": 17146030467805436722, + "name": "Grnfeld: 5.Bg5 Ne4 6.Bh4 Nxc3 7.bxc3 dxc4" + }, + "D91h": { + "eco": "D91h", + "fen": "rnbqk2r/ppp1ppbp/6p1/3P2B1/3Pn3/2N2N2/PP2PPPP/R2QKB1R b KQkq - 0 6", + "hash": 6497052326358453571, + "name": "Grnfeld: 5.Bg5 Ne4 6.cxd5" + }, + "D91i": { + "eco": "D91i", + "fen": "rnbqk2r/ppp1ppbp/6p1/3P2n1/3P4/2N2N2/PP2PPPP/R2QKB1R w KQkq - 0 7", + "hash": 3613546268485236778, + "name": "Grnfeld: 5.Bg5 Ne4 6.cxd5 Nxg5" + }, + "D91j": { + "eco": "D91j", + "fen": "rnbqk2r/pp2ppbp/2p3p1/3P2N1/3P4/2N5/PP2PPPP/R2QKB1R w KQkq - 0 8", + "hash": 17357604853985870626, + "name": "Grnfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 c6" + }, + "D91k": { + "eco": "D91k", + "fen": "rnbqk2r/ppp2pbp/4p1p1/3P2N1/3P4/2N5/PP2PPPP/R2QKB1R w KQkq - 0 8", + "hash": 1508572250659274955, + "name": "Grnfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6" + }, + "D91l": { + "eco": "D91l", + "fen": "rnbqk2r/ppp2pbp/4p1p1/3P2N1/3P4/2N5/PP1QPPPP/R3KB1R b KQkq - 1 8", + "hash": 4393202027962244971, + "name": "Grnfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Qd2" + }, + "D91m": { + "eco": "D91m", + "fen": "rnbqk2r/ppp2pbp/6p1/3p2N1/3P4/2N5/PP1QPPPP/R3KB1R w KQkq - 0 9", + "hash": 280085416371216288, + "name": "Grnfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Qd2 exd5" + }, + "D91n": { + "eco": "D91n", + "fen": "rnbq1k1r/ppp2p2/5bpp/3p2N1/3P1Q1P/2N5/PP2PPP1/R3KB1R w KQ - 0 12", + "hash": 1937076521186973719, + "name": "Grnfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Qd2 exd5: 11.h4 h6" + }, + "D91o": { + "eco": "D91o", + "fen": "rnbqk2r/ppp2pbp/4p1p1/3P4/3P4/2N2N2/PP2PPPP/R2QKB1R b KQkq - 1 8", + "hash": 4773085175884167279, + "name": "Grnfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Nf3" + }, + "D91p": { + "eco": "D91p", + "fen": "rnbqk2r/ppp2pbp/6p1/3p4/3P4/2N1PN2/PP3PPP/R2QKB1R b KQkq - 0 9", + "hash": 14989383479634456576, + "name": "Grnfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Nf3 exd5 9.e3" + }, + "D91q": { + "eco": "D91q", + "fen": "rnbq1rk1/ppp2pbp/6p1/3p4/3P4/2N1PN2/PP3PPP/R2QKB1R w KQ - 1 10", + "hash": 15756988353374951915, + "name": "Grnfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Nf3 exd5 9.e3 O-O" + }, + "D91r": { + "eco": "D91r", + "fen": "rnbq1rk1/ppp2pbp/6p1/3p4/3P4/2NBPN2/PP3PPP/R2QK2R b KQ - 2 10", + "hash": 10349747819184741272, + "name": "Grnfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Nf3 exd5 9.e3 O-O 10.Bd3" + }, + "D91s": { + "eco": "D91s", + "fen": "rnbq1rk1/ppp2pbp/6p1/3p4/3P4/2N1PN2/PP2BPPP/R2QK2R b KQ - 2 10", + "hash": 12190279461606052680, + "name": "Grnfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Nf3 exd5 9.e3 O-O 10.Be2" + }, + "D91t": { + "eco": "D91t", + "fen": "rnbq1rk1/ppp2pbp/6p1/3p4/1P1P4/2N1PN2/P4PPP/R2QKB1R b KQ b3 0 10", + "hash": 8095612585171744207, + "name": "Grnfeld: 5.Bg5 Ne4 6.cxd5 Nxg5 7.Nxg5 e6 8.Nf3 exd5 9.e3 O-O 10.b4" + }, + "D92": { + "eco": "D92", + "fen": "rnbqk2r/ppp1ppbp/5np1/3p4/2PP1B2/2N2N2/PP2PPPP/R2QKB1R b KQkq - 3 5", + "hash": 8288396069743961359, + "name": "Grnfeld: 5.Bf4" + }, + "D93": { + "eco": "D93", + "fen": "rnbq1rk1/ppp1ppbp/5np1/3p4/2PP1B2/2N1PN2/PP3PPP/R2QKB1R b KQ - 0 6", + "hash": 15313333065893495872, + "name": "Grnfeld: 5.Bf4 O-O 6.e3" + }, + "D94": { + "eco": "D94", + "fen": "rnbqk2r/ppp1ppbp/5np1/3p4/2PP4/2N1PN2/PP3PPP/R1BQKB1R b KQkq - 0 5", + "hash": 396290913584433096, + "name": "Grnfeld: 5.e3" + }, + "D95a": { + "eco": "D95a", + "fen": "rnbq1rk1/ppp1ppbp/5np1/3p4/2PP4/1QN1PN2/PP3PPP/R1B1KB1R b KQ - 2 6", + "hash": 3832183348399703749, + "name": "Grnfeld: 5.e3 O-O 6.Qb3" + }, + "D95b": { + "eco": "D95b", + "fen": "rnbq1rk1/p1p1ppbp/1p3np1/3p4/2PP4/1QN1PN2/PP3PPP/R1B1KB1R w KQ - 0 7", + "hash": 6793661773087748446, + "name": "Grnfeld: 5.e3 O-O 6.Qb3 b6" + }, + "D95c": { + "eco": "D95c", + "fen": "rnbq1rk1/pp2ppbp/2p2np1/3p4/2PP4/1QN1PN2/PP3PPP/R1B1KB1R w KQ - 0 7", + "hash": 12057345239728838014, + "name": "Grnfeld: 5.e3 O-O 6.Qb3 c6" + }, + "D95d": { + "eco": "D95d", + "fen": "rnbq1rk1/pp2ppbp/2p2np1/3p4/2PP4/1QN1PN2/PP1B1PPP/R3KB1R b KQ - 1 7", + "hash": 10293277293239975546, + "name": "Grnfeld: 5.e3 O-O 6.Qb3 c6 7.Bd2" + }, + "D95e": { + "eco": "D95e", + "fen": "rnbq1rk1/pp3pbp/2p1pnp1/3p4/2PP4/1QN1PN2/PP1B1PPP/R3KB1R w KQ - 0 8", + "hash": 17919509661284511272, + "name": "Grnfeld: 5.e3 O-O 6.Qb3 c6 7.Bd2 e6" + }, + "D95f": { + "eco": "D95f", + "fen": "rnbq1rk1/pp3pbp/2p1pnp1/3p4/2PP4/1QNBPN2/PP1B1PPP/R3K2R b KQ - 1 8", + "hash": 12511917557999725659, + "name": "Grnfeld: 5.e3 O-O 6.Qb3 c6 7.Bd2 e6 8.Bd3" + }, + "D95g": { + "eco": "D95g", + "fen": "rnbq1rk1/ppp2pbp/4pnp1/3p4/2PP4/1QN1PN2/PP3PPP/R1B1KB1R w KQ - 0 7", + "hash": 4853002718121989783, + "name": "Grnfeld: Botvinnik Variation" + }, + "D95h": { + "eco": "D95h", + "fen": "rnbq1rk1/ppp2pbp/4pnp1/3p4/2PP4/1QN1PN2/PP1B1PPP/R3KB1R b KQ - 1 7", + "hash": 7697794117401312659, + "name": "Grnfeld: Botvinnik, 7.Bd2" + }, + "D95i": { + "eco": "D95i", + "fen": "rnbq1rk1/ppp1ppbp/5np1/8/2pP4/1QN1PN2/PP3PPP/R1B1KB1R w KQ - 0 7", + "hash": 16656738326735677478, + "name": "Grnfeld: 5.e3 O-O 6.Qb3 dxc4" + }, + "D95j": { + "eco": "D95j", + "fen": "r1bq1rk1/ppp1ppbp/2n2np1/8/2BP4/1QN1PN2/PP3PPP/R1B1K2R w KQ - 1 8", + "hash": 12152106801930897812, + "name": "Grnfeld: 5.e3 O-O 6.Qb3 dxc4 7.Bxc4 Nc6" + }, + "D96": { + "eco": "D96", + "fen": "rnbqk2r/ppp1ppbp/5np1/3p4/2PP4/1QN2N2/PP2PPPP/R1B1KB1R b KQkq - 3 5", + "hash": 10568551354753509258, + "name": "Grnfeld: Russian Variation" + }, + "D97a": { + "eco": "D97a", + "fen": "rnbq1rk1/ppp1ppbp/5np1/8/2QPP3/2N2N2/PP3PPP/R1B1KB1R b KQ e3 0 7", + "hash": 11610082673200119466, + "name": "Grnfeld: Russian, 7.e4" + }, + "D97b": { + "eco": "D97b", + "fen": "rnbq1rk1/p1p1ppbp/1p3np1/8/2QPP3/2N2N2/PP3PPP/R1B1KB1R w KQ - 0 8", + "hash": 14588854353621223729, + "name": "Grnfeld: Russian, Levenfish Variation" + }, + "D97c": { + "eco": "D97c", + "fen": "rnbq1rk1/pp2ppbp/2p2np1/8/2QPP3/2N2N2/PP3PPP/R1B1KB1R w KQ - 0 8", + "hash": 3703543577092189457, + "name": "Grnfeld: Russian, Szabo Variation" + }, + "D97d": { + "eco": "D97d", + "fen": "rnbq1rk1/1pp1ppbp/p4np1/8/2QPP3/2N2N2/PP3PPP/R1B1KB1R w KQ - 0 8", + "hash": 8352133721626920566, + "name": "Grnfeld: Russian, Alekhine (Hungarian) Variation" + }, + "D97e": { + "eco": "D97e", + "fen": "rnbq1rk1/1pp1ppbp/p4np1/8/2QPP3/2N2N2/PP2BPPP/R1B1K2R b KQ - 1 8", + "hash": 29342285817122005, + "name": "Grnfeld: Russian, Alekhine, 8.Be2" + }, + "D97f": { + "eco": "D97f", + "fen": "rnbq1rk1/2p1ppbp/p4np1/1p6/3PP3/1QN2N2/PP2BPPP/R1B1K2R b KQ - 1 9", + "hash": 14457627858389319901, + "name": "Grnfeld: Russian, Alekhine, 8.Be2 b5 9.Qb3" + }, + "D97g": { + "eco": "D97g", + "fen": "rnbq1rk1/1pp1ppbp/p4np1/8/3PP3/1QN2N2/PP3PPP/R1B1KB1R b KQ - 1 8", + "hash": 15791632414345705283, + "name": "Grnfeld: Russian, Alekhine, 8.Qb3" + }, + "D97h": { + "eco": "D97h", + "fen": "rnbq1rk1/1pp1ppbp/p4np1/4P3/2QP4/2N2N2/PP3PPP/R1B1KB1R b KQ - 0 8", + "hash": 1338039282186346514, + "name": "Grnfeld: Russian, Alekhine, 8.e5" + }, + "D97i": { + "eco": "D97i", + "fen": "rnbq1rk1/2p1ppbp/p4np1/1p2P3/3P4/1QN2N2/PP3PPP/R1B1KB1R b KQ - 1 9", + "hash": 15733988217817213978, + "name": "Grnfeld: Russian, Alekhine, 8.e5 b5 9.Qb3" + }, + "D97j": { + "eco": "D97j", + "fen": "rnbq1rk1/2pnppbp/p5p1/1p2P3/3P4/1QN2N2/PP3PPP/R1B1KB1R w KQ - 2 10", + "hash": 2530276754289927663, + "name": "Grnfeld: Russian, Alekhine, 8.e5 b5 9.Qb3 Nfd7" + }, + "D97k": { + "eco": "D97k", + "fen": "rnbq1rk1/2pnppbp/p5p1/1p2P3/3P4/1QN1BN2/PP3PPP/R3KB1R b KQ - 3 10", + "hash": 5770767682217131617, + "name": "Grnfeld: Russian, Alekhine, 8.e5 b5 9.Qb3 Nfd7 10.Be3" + }, + "D97l": { + "eco": "D97l", + "fen": "r1bq1rk1/ppp1ppbp/2n2np1/8/2QPP3/2N2N2/PP3PPP/R1B1KB1R w KQ - 1 8", + "hash": 788855954930342825, + "name": "Grnfeld: Russian, Simagin Variation" + }, + "D97m": { + "eco": "D97m", + "fen": "r1bq1rk1/ppp1ppbp/n4np1/8/2QPP3/2N2N2/PP3PPP/R1B1KB1R w KQ - 1 8", + "hash": 17266773746278801942, + "name": "Grnfeld: Russian, Prins Variation" + }, + "D97n": { + "eco": "D97n", + "fen": "r1bq1rk1/ppp1ppbp/n4np1/8/2QPPB2/2N2N2/PP3PPP/R3KB1R b KQ - 2 8", + "hash": 3804136220206680181, + "name": "Grnfeld: Russian, Prins, 8.Bf4" + }, + "D97o": { + "eco": "D97o", + "fen": "r1bq1rk1/ppp1ppbp/n4np1/8/2QPP3/2N2N2/PP2BPPP/R1B1K2R b KQ - 2 8", + "hash": 11249821187889981621, + "name": "Grnfeld: Russian, Prins, 8.Be2" + }, + "D97p": { + "eco": "D97p", + "fen": "r2q1rk1/pp3pbp/n4np1/2pP1b2/2Q5/2N2N2/PP2BPPP/R1B2RK1 w - - 1 12", + "hash": 6032225609701602711, + "name": "Grnfeld: Russian, Prins, 8.Be2, Main Line" + }, + "D98a": { + "eco": "D98a", + "fen": "rn1q1rk1/ppp1ppbp/5np1/8/2QPP1b1/2N2N2/PP3PPP/R1B1KB1R w KQ - 1 8", + "hash": 11802956744823910464, + "name": "Grnfeld: Russian, Smyslov Variation" + }, + "D98b": { + "eco": "D98b", + "fen": "rn1q1rk1/ppp1ppbp/5np1/8/2QPP1b1/2N2N2/PP2BPPP/R1B1K2R b KQ - 2 8", + "hash": 15009377597717150435, + "name": "Grnfeld: Russian, Smyslov, 8.Be2" + }, + "D98c": { + "eco": "D98c", + "fen": "r2q1rk1/ppp1ppbp/2n2np1/8/2QPP1b1/2N2N2/PP2BPPP/R1B1K2R w KQ - 3 9", + "hash": 8908645101118644192, + "name": "Grnfeld: Russian, Smyslov, 8.Be2 Nc6" + }, + "D98d": { + "eco": "D98d", + "fen": "r2q1rk1/ppp1ppbp/2n2np1/3P4/2Q1P1b1/2N2N2/PP2BPPP/R1B1K2R b KQ - 0 9", + "hash": 13954859568301722045, + "name": "Grnfeld: Russian, Smyslov, 8.Be2 Nc6 9.d5" + }, + "D98e": { + "eco": "D98e", + "fen": "rn1q1rk1/ppp1ppbp/5np1/8/2QPP1b1/2N1BN2/PP3PPP/R3KB1R b KQ - 2 8", + "hash": 15043216221262425038, + "name": "Grnfeld: Russian, Smyslov, 8.Be3" + }, + "D98f": { + "eco": "D98f", + "fen": "rn1q1rk1/pppnppbp/6p1/8/2QPP1b1/2N1BN2/PP3PPP/R3KB1R w KQ - 3 9", + "hash": 2991303665382433339, + "name": "Grnfeld: Russian, Smyslov, 8.Be3 Nfd7" + }, + "D98g": { + "eco": "D98g", + "fen": "rn1q1rk1/pppnppbp/6p1/8/2QPP1b1/2N1BN2/PP2BPPP/R3K2R b KQ - 4 9", + "hash": 6486235888364087448, + "name": "Grnfeld: Russian, Smyslov, 8.Be3 Nfd7 9.Be2" + }, + "D98h": { + "eco": "D98h", + "fen": "r2q1rk1/ppp1ppbp/1nn3p1/8/3PP1b1/2NQBN2/PP2BPPP/2KR3R b - - 8 11", + "hash": 17248478247032298921, + "name": "Grnfeld: Russian, Smyslov, Keres Variation" + }, + "D98i": { + "eco": "D98i", + "fen": "rn1q1rk1/pppnppbp/6p1/8/2QPP1b1/2N1BN2/PP3PPP/2KR1B1R b - - 4 9", + "hash": 1274092043589889443, + "name": "Grnfeld: Russian, Smyslov, 8.Be3 Nfd7 9.O-O-O" + }, + "D98j": { + "eco": "D98j", + "fen": "rn1q1rk1/pppnppbp/6p1/8/2QPP1b1/2N1BN2/PP3PPP/3RKB1R b K - 4 9", + "hash": 6864612411110942623, + "name": "Grnfeld: Russian, Smyslov, 8.Be3 Nfd7 9.Rd1" + }, + "D98k": { + "eco": "D98k", + "fen": "r2q1rk1/pppnppbp/2n3p1/8/2QPP1b1/2N1BN2/PP3PPP/3RKB1R w K - 5 10", + "hash": 17629860243616875164, + "name": "Grnfeld: Russian, Smyslov, 8.Be3 Nfd7 9.Rd1 Nc6" + }, + "D99a": { + "eco": "D99a", + "fen": "rn1q1rk1/pppnppbp/6p1/8/3PP1b1/1QN1BN2/PP3PPP/R3KB1R b KQ - 4 9", + "hash": 9317003736629728014, + "name": "Grnfeld: Russian, Smyslov, Main Line" + }, + "D99b": { + "eco": "D99b", + "fen": "rn1q1rk1/pp1nppbp/6p1/2p5/3PP1b1/1QN1BN2/PP3PPP/R3KB1R w KQ c6 0 10", + "hash": 7439229866371340403, + "name": "Grnfeld: Russian, Smyslov, Yugoslav" + }, + "D99c": { + "eco": "D99c", + "fen": "rn1q1rk1/ppp1ppbp/1n4p1/8/3PP1b1/1QN1BN2/PP3PPP/R3KB1R w KQ - 5 10", + "hash": 10772881718785754112, + "name": "Grnfeld: Russian, Smyslov, Main Line, 9...Nb6" + }, + "D99d": { + "eco": "D99d", + "fen": "rn1q1rk1/ppp1ppbp/1n4p1/8/3PP1b1/1QN1BN2/PP3PPP/3RKB1R b K - 6 10", + "hash": 16377279104933069220, + "name": "Grnfeld: Russian, Smyslov, Main Line, 9...Nb6 10.Rd1" + }, + "D99e": { + "eco": "D99e", + "fen": "rn1q1rk1/ppp2pbp/1n2p1p1/8/3PP1b1/1QN1BN2/PP3PPP/3RKB1R w K - 0 11", + "hash": 10750156779415671286, + "name": "Grnfeld: Russian, Smyslov, Main Line, 9...Nb6 10.Rd1 e6" + }, + "D99f": { + "eco": "D99f", + "fen": "r2q1rk1/ppp1ppbp/1nn3p1/8/3PP1b1/1QN1BN2/PP3PPP/3RKB1R w K - 7 11", + "hash": 5236015595856012455, + "name": "Grnfeld: Russian, Smyslov, Main Line, 9...Nb6 10.Rd1 Nc6" + }, + "D99g": { + "eco": "D99g", + "fen": "r2q1rk1/ppp1ppbp/1n4p1/3Pn3/4P1b1/1QN1BN2/PP3PPP/3RKB1R w K - 1 12", + "hash": 215977520211597466, + "name": "Grnfeld: Russian, Smyslov, Main Line, 9...Nb6 10.Rd1 Nc6 11.d5 Ne5" + }, + "E00a": { + "eco": "E00a", + "fen": "rnbqkb1r/pppp1ppp/4pn2/8/2PP4/8/PP2PPPP/RNBQKBNR w KQkq - 0 3", + "hash": 2500870339942132509, + "name": "Queen's Pawn: Neo-Indian" + }, + "E00b": { + "eco": "E00b", + "fen": "rnbqkb1r/pppp1ppp/4pn2/8/2PP4/P7/1P2PPPP/RNBQKBNR b KQkq - 0 3", + "hash": 16800908709151843677, + "name": "Queen's Pawn: Anti-Nimzo-Indian" + }, + "E00c": { + "eco": "E00c", + "fen": "rnbqkb1r/pppp1ppp/4pn2/6B1/2PP4/8/PP2PPPP/RN1QKBNR b KQkq - 1 3", + "hash": 16496324126320193749, + "name": "Neo-Indian (Seirawan) Attack" + }, + "E00d": { + "eco": "E00d", + "fen": "rnbqkb1r/pppp1ppp/4pn2/8/2PP4/2N5/PP2PPPP/R1BQKBNR b KQkq - 1 3", + "hash": 15646623240953866692, + "name": "Queen's Pawn: Neo-Indian" + }, + "E00e": { + "eco": "E00e", + "fen": "rnbqkb1r/p1pp1ppp/1p2pn2/8/2PP4/2N5/PP2PPPP/R1BQKBNR w KQkq - 0 4", + "hash": 12847276466113519199, + "name": "Queen's Pawn: Neo-Indian, 3...b6" + }, + "E00f": { + "eco": "E00f", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/2p5/2PP4/2N5/PP2PPPP/R1BQKBNR w KQkq c6 0 4", + "hash": 4562754859608711865, + "name": "Queen's Pawn: Neo-Indian, 3...c5" + }, + "E00g": { + "eco": "E00g", + "fen": "rnbqkb1r/pppp1ppp/4pn2/8/2PP4/6P1/PP2PP1P/RNBQKBNR b KQkq - 0 3", + "hash": 1031987402074780453, + "name": "Catalan" + }, + "E00h": { + "eco": "E00h", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/2p5/2PP4/6P1/PP2PP1P/RNBQKBNR w KQkq c6 0 4", + "hash": 16727365989332645976, + "name": "Catalan: 3...c5" + }, + "E00i": { + "eco": "E00i", + "fen": "rnbqk2r/pppp1ppp/4pn2/8/1bPP4/6P1/PP2PP1P/RNBQKBNR w KQkq - 1 4", + "hash": 14344864305402329863, + "name": "Catalan: 3...Bb4+" + }, + "E00j": { + "eco": "E00j", + "fen": "rnbqk2r/pppp1ppp/4pn2/8/1bPP4/6P1/PP1BPP1P/RN1QKBNR b KQkq - 2 4", + "hash": 17194295467120185347, + "name": "Catalan: 3...Bb4+ 4.Bd2" + }, + "E00k": { + "eco": "E00k", + "fen": "rnbqk2r/pppp1ppp/4pn2/8/2PP4/6P1/PP1bPP1P/RN1QKBNR w KQkq - 0 5", + "hash": 16153223542325007786, + "name": "Catalan: 3...Bb4+ 4.Bd2 Bxd2+" + }, + "E00l": { + "eco": "E00l", + "fen": "rnbqk2r/ppppbppp/4pn2/8/2PP4/6P1/PP1BPP1P/RN1QKBNR w KQkq - 3 5", + "hash": 14683235497916314041, + "name": "Catalan: 3...Bb4+ 4.Bd2 Be7" + }, + "E00m": { + "eco": "E00m", + "fen": "rnb1k2r/ppppqppp/4pn2/8/1bPP4/6P1/PP1BPP1P/RN1QKBNR w KQkq - 3 5", + "hash": 8458243679326469737, + "name": "Catalan: 3...Bb4+ 4.Bd2 Qe7" + }, + "E00n": { + "eco": "E00n", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/2PP4/6P1/PP2PP1P/RNBQKBNR w KQkq d6 0 4", + "hash": 10031901243314289923, + "name": "Catalan: 3...d5" + }, + "E00o": { + "eco": "E00o", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/2PP4/5NP1/PP2PP1P/RNBQKB1R b KQkq - 1 4", + "hash": 5790668087060225086, + "name": "Catalan: 4.Nf3" + }, + "E00p": { + "eco": "E00p", + "fen": "rnbqkb1r/pp3ppp/2p1pn2/3p4/2PP4/5NP1/PP2PP1P/RNBQKB1R w KQkq - 0 5", + "hash": 13990001365178027909, + "name": "Catalan: 4.Nf3 c6" + }, + "E00q": { + "eco": "E00q", + "fen": "rnbqkb1r/pp3ppp/4pn2/2pp4/2PP4/5NP1/PP2PP1P/RNBQKB1R w KQkq c6 0 5", + "hash": 13127223664106624835, + "name": "Catalan: 4.Nf3 c5" + }, + "E00r": { + "eco": "E00r", + "fen": "rnbqk2r/ppp2ppp/4pn2/3p4/1bPP4/5NP1/PP2PP1P/RNBQKB1R w KQkq - 2 5", + "hash": 11033252802844267548, + "name": "Catalan: 4.Nf3 Bb4+" + }, + "E00s": { + "eco": "E00s", + "fen": "rnbqk2r/ppp1bppp/4pn2/3p4/2PP4/5NP1/PP2PP1P/RNBQKB1R w KQkq - 2 5", + "hash": 4940701808550080687, + "name": "Catalan: 4.Nf3 Be7" + }, + "E00t": { + "eco": "E00t", + "fen": "rnbqkb1r/ppp2ppp/4pn2/8/2pP4/5NP1/PP2PP1P/RNBQKB1R w KQkq - 0 5", + "hash": 9393009929428972253, + "name": "Catalan: 4.Nf3 dxc4" + }, + "E00u": { + "eco": "E00u", + "fen": "rnbqkb1r/ppp2ppp/4pn2/8/Q1pP4/5NP1/PP2PP1P/RNB1KB1R b KQkq - 1 5", + "hash": 5836121462115287206, + "name": "Catalan: 4.Nf3 dxc4 5.Qa4+" + }, + "E00v": { + "eco": "E00v", + "fen": "r1bqkb1r/pppn1ppp/4pn2/8/Q1pP4/5NP1/PP2PP1P/RNB1KB1R w KQkq - 2 6", + "hash": 7141982032506301802, + "name": "Catalan: 4.Nf3 dxc4 5.Qa4+ Nbd7" + }, + "E01": { + "eco": "E01", + "fen": "rnbqkb1r/ppp2ppp/4pn2/3p4/2PP4/6P1/PP2PPBP/RNBQK1NR b KQkq - 1 4", + "hash": 4523965308953814394, + "name": "Catalan: 4.Bg2" + }, + "E02": { + "eco": "E02", + "fen": "rnbqkb1r/ppp2ppp/4pn2/8/Q1pP4/6P1/PP2PPBP/RNB1K1NR b KQkq - 1 5", + "hash": 4497651300911151586, + "name": "Catalan: Open, 5.Qa4+" + }, + "E03": { + "eco": "E03", + "fen": "r1bqkb1r/pppn1ppp/4pn2/8/2QP4/6P1/PP2PPBP/RNB1K1NR b KQkq - 0 6", + "hash": 14612254154063031697, + "name": "Catalan: Open, 5.Qa4+ Nbd7 6.Qxc4" + }, + "E04a": { + "eco": "E04a", + "fen": "rnbqkb1r/ppp2ppp/4pn2/8/2pP4/5NP1/PP2PPBP/RNBQK2R b KQkq - 1 5", + "hash": 4011176468539861668, + "name": "Catalan: Open, 5.Nf3" + }, + "E04b": { + "eco": "E04b", + "fen": "rnbqk2r/ppp2ppp/4pn2/8/1bpP4/5NP1/PP2PPBP/RNBQK2R w KQkq - 2 6", + "hash": 18369029186083791494, + "name": "Catalan: Open, 5.Nf3 Bb4+" + }, + "E04c": { + "eco": "E04c", + "fen": "r1bqkb1r/pppn1ppp/4pn2/8/2pP4/5NP1/PP2PPBP/RNBQK2R w KQkq - 2 6", + "hash": 309047305683699560, + "name": "Catalan: Open, 5.Nf3 Nbd7" + }, + "E04d": { + "eco": "E04d", + "fen": "rnbqkb1r/p1p2ppp/4pn2/1p6/2pP4/5NP1/PP2PPBP/RNBQK2R w KQkq b6 0 6", + "hash": 6318239851478308761, + "name": "Catalan: Open, 5.Nf3 b5" + }, + "E04e": { + "eco": "E04e", + "fen": "rnbqkb1r/1pp2ppp/p3pn2/8/2pP4/5NP1/PP2PPBP/RNBQK2R w KQkq - 0 6", + "hash": 16527505077193773688, + "name": "Catalan: Open, 5.Nf3 a6" + }, + "E04f": { + "eco": "E04f", + "fen": "rnbqkb1r/1pp2ppp/p3pn2/8/2pP4/5NP1/PP2PPBP/RNBQ1RK1 b kq - 1 6", + "hash": 11180192093830793576, + "name": "Catalan: Open, 5.Nf3 a6 6.O-O" + }, + "E04g": { + "eco": "E04g", + "fen": "rnbqkb1r/2p2ppp/p3pn2/1p6/2pP4/5NP1/PP2PPBP/RNBQ1RK1 w kq b6 0 7", + "hash": 18098963516349740117, + "name": "Catalan: Open, 5.Nf3 a6 6.O-O b5" + }, + "E04h": { + "eco": "E04h", + "fen": "rnbqkb1r/2p2ppp/p3p3/1p1nN3/P1pP4/6P1/1P2PPBP/RNBQ1RK1 b kq a3 0 8", + "hash": 9929612226838868312, + "name": "Catalan: Open, 5.Nf3 a6 6.O-O b5 7.Ne5 Nd5 8.a4" + }, + "E04i": { + "eco": "E04i", + "fen": "r1bqkb1r/1pp2ppp/p1n1pn2/8/2pP4/5NP1/PP2PPBP/RNBQ1RK1 w kq - 2 7", + "hash": 3514458743917767787, + "name": "Catalan: Open, 5.Nf3 a6 6.O-O Nc6" + }, + "E04j": { + "eco": "E04j", + "fen": "r1bqkb1r/1pp2ppp/p1n1pn2/8/2pP4/4PNP1/PP3PBP/RNBQ1RK1 b kq - 0 7", + "hash": 11378519458414093519, + "name": "Catalan: Open, 5.Nf3 a6 6.O-O Nc6 7.e3" + }, + "E04k": { + "eco": "E04k", + "fen": "rnbqkb1r/pp3ppp/4pn2/2p5/2pP4/5NP1/PP2PPBP/RNBQK2R w KQkq c6 0 6", + "hash": 15121783596739617241, + "name": "Catalan: Open, 5.Nf3 c5" + }, + "E04l": { + "eco": "E04l", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/2p5/2pP4/5NP1/PP2PPBP/RNBQ1RK1 w kq - 2 7", + "hash": 307368228191739850, + "name": "Catalan: Open, 5.Nf3 c5 6.O-O Nc6" + }, + "E04m": { + "eco": "E04m", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/2p1N3/2pP4/6P1/PP2PPBP/RNBQ1RK1 b kq - 3 7", + "hash": 15671156751272606396, + "name": "Catalan: Open, 5.Nf3 c5 6.O-O Nc6 7.Ne5" + }, + "E04n": { + "eco": "E04n", + "fen": "r2qkb1r/pp1b1ppp/2n1pn2/2p1N3/2pP4/N5P1/PP2PPBP/R1BQ1RK1 b kq - 5 8", + "hash": 4349364568701109571, + "name": "Catalan: Open, 5.Nf3 c5 6.O-O Nc6 7.Ne5 Bd7 8.Na3" + }, + "E04o": { + "eco": "E04o", + "fen": "r1bqkb1r/pp3ppp/2n1pn2/2p5/Q1pP4/5NP1/PP2PPBP/RNB2RK1 b kq - 3 7", + "hash": 15485416803720687025, + "name": "Catalan: Open, 5.Nf3 c5 6.O-O Nc6 7.Qa4" + }, + "E04p": { + "eco": "E04p", + "fen": "r2qkb1r/pp1b1ppp/2n1pn2/2p5/Q1pP4/5NP1/PP2PPBP/RNB2RK1 w kq - 4 8", + "hash": 3757900788823244160, + "name": "Catalan: Open, 5.Nf3 c5 6.O-O Nc6 7.Qa4 Bd7" + }, + "E04q": { + "eco": "E04q", + "fen": "r2qkb1r/pp1b1ppp/2n1pn2/2p5/2QP4/5NP1/PP2PPBP/RNB2RK1 b kq - 0 8", + "hash": 17538772019394774079, + "name": "Catalan: Open, 5.Nf3 c5 6.O-O Nc6 7.Qa4 Bd7 8.Qxc4" + }, + "E04r": { + "eco": "E04r", + "fen": "r2qkb1r/p2b1ppp/2n1pn2/1pp5/2QP4/5NP1/PP2PPBP/RNB2RK1 w kq b6 0 9", + "hash": 10620145634230647042, + "name": "Catalan: Open, 5.Nf3 c5 6.O-O Nc6 7.Qa4 Bd7 8.Qxc4 b5" + }, + "E04s": { + "eco": "E04s", + "fen": "r1bqkb1r/ppp2ppp/2n1pn2/8/2pP4/5NP1/PP2PPBP/RNBQK2R w KQkq - 2 6", + "hash": 11261065449857142695, + "name": "Catalan: Open, 5.Nf3 Nc6" + }, + "E04t": { + "eco": "E04t", + "fen": "1rbqkb1r/ppp2ppp/2n1pn2/8/2pP4/5NP1/PP2PPBP/RNBQ1RK1 w k - 4 7", + "hash": 7234858337390804244, + "name": "Catalan: Open, 5.Nf3 Nc6 6.O-O Rb8" + }, + "E04u": { + "eco": "E04u", + "fen": "1rbqkb1r/ppp2ppp/2n1pn2/8/2pP4/2N2NP1/PP2PPBP/R1BQ1RK1 b k - 5 7", + "hash": 11524845525431041997, + "name": "Catalan: Open, 5.Nf3 Nc6 6.O-O Rb8 7.Nc3" + }, + "E04v": { + "eco": "E04v", + "fen": "r1bqkb1r/ppp2ppp/2n1pn2/8/Q1pP4/5NP1/PP2PPBP/RNB1K2R b KQkq - 3 6", + "hash": 5684644522719854044, + "name": "Catalan: Open, 5.Nf3 Nc6 6.Qa4" + }, + "E04w": { + "eco": "E04w", + "fen": "r1bqk2r/ppp2ppp/2n1pn2/8/QbpP4/5NP1/PP2PPBP/RNB1K2R w KQkq - 4 7", + "hash": 9773518269190370814, + "name": "Catalan: Open, 5.Nf3 Nc6 6.Qa4 Bb4+" + }, + "E04x": { + "eco": "E04x", + "fen": "r1bqk2r/ppp2ppp/2n1p3/3n4/QbpP4/5NP1/PP1BPPBP/RN2K2R w KQkq - 6 8", + "hash": 7655844871886007119, + "name": "Catalan: Open, 5.Nf3 Nc6 6.Qa4 Bb4+ 7.Bd2 Nd5" + }, + "E05a": { + "eco": "E05a", + "fen": "rnbqk2r/ppp1bppp/4pn2/8/2pP4/5NP1/PP2PPBP/RNBQK2R w KQkq - 2 6", + "hash": 2551003664581051957, + "name": "Catalan: Open, Classical" + }, + "E05b": { + "eco": "E05b", + "fen": "rnbqk2r/ppp1bppp/4pn2/8/2pP4/2N2NP1/PP2PPBP/R1BQK2R b KQkq - 3 6", + "hash": 15632527517983720684, + "name": "Catalan: Open, Classical, 6.Nc3" + }, + "E05c": { + "eco": "E05c", + "fen": "rnbq1rk1/ppp1bppp/4pn2/8/2pP4/2N2NP1/PP2PPBP/R1BQK2R w KQ - 4 7", + "hash": 15157156209219972359, + "name": "Catalan: Open, Classical, 6.Nc3 O-O" + }, + "E05d": { + "eco": "E05d", + "fen": "rnbq1rk1/ppp1bppp/4pn2/4N3/2pP4/2N3P1/PP2PPBP/R1BQK2R b KQ - 5 7", + "hash": 1108402877881436273, + "name": "Catalan: Open, Classical, 6.Nc3 O-O 7.Ne5" + }, + "E05e": { + "eco": "E05e", + "fen": "rnbqk2r/ppp1bppp/4pn2/8/2pP4/5NP1/PP2PPBP/RNBQ1RK1 b kq - 3 6", + "hash": 6706853139236068645, + "name": "Catalan: Open, Classical, 6.O-O" + }, + "E05f": { + "eco": "E05f", + "fen": "rnbq1rk1/ppp1bppp/4pn2/8/2pP4/5NP1/PP2PPBP/RNBQ1RK1 w - - 4 7", + "hash": 6321763954699334862, + "name": "Catalan: Open, Classical, 6.O-O O-O" + }, + "E05g": { + "eco": "E05g", + "fen": "rnbq1rk1/ppp1bppp/4pn2/4N3/2pP4/6P1/PP2PPBP/RNBQ1RK1 b - - 5 7", + "hash": 9981020338600120760, + "name": "Catalan: Open, Classical, 7.Ne5" + }, + "E05h": { + "eco": "E05h", + "fen": "r1bq1rk1/ppp1bppp/2N1pn2/8/2pP4/6P1/PP2PPBP/RNBQ1RK1 b - - 0 8", + "hash": 14894411546605510711, + "name": "Catalan: Open, Classical, 7.Ne5 Nc6 8.Nxc6" + }, + "E05i": { + "eco": "E05i", + "fen": "rnbq1rk1/ppp1bppp/4pn2/8/2pP4/5NP1/PPQ1PPBP/RNB2RK1 b - - 5 7", + "hash": 16618872854627141802, + "name": "Catalan: Open, Classical, 7.Qc2" + }, + "E05j": { + "eco": "E05j", + "fen": "rnbq1rk1/1pp1bppp/p3pn2/8/2pP4/5NP1/PPQ1PPBP/RNB2RK1 w - - 0 8", + "hash": 3771176708717031542, + "name": "Catalan: Open, Classical Main Line" + }, + "E05k": { + "eco": "E05k", + "fen": "rnbq1rk1/1pp1bppp/p3pn2/8/P1pP4/5NP1/1PQ1PPBP/RNB2RK1 b - a3 0 8", + "hash": 6889548449610327480, + "name": "Catalan: Open, Classical, 8.a4" + }, + "E05l": { + "eco": "E05l", + "fen": "rn1q1rk1/1ppbbppp/p3pn2/8/P1pP4/5NP1/1PQ1PPBP/RNB2RK1 w - - 1 9", + "hash": 13645178456752207241, + "name": "Catalan: Open, Classical, 8.a4 Bd7" + }, + "E05m": { + "eco": "E05m", + "fen": "rn1q1rk1/1ppbbppp/p3pn2/8/P1QP4/5NP1/1P2PPBP/RNB2RK1 b - - 0 9", + "hash": 1846515641553633833, + "name": "Catalan: Open, Classical, 8.a4 Bd7 9.Qxc4" + }, + "E05n": { + "eco": "E05n", + "fen": "rn1q1rk1/1pp1bppp/p3pn2/3b2B1/P1QP4/5NP1/1P2PPBP/RN3RK1 w - - 3 11", + "hash": 3462439173052417845, + "name": "Catalan: Open, Classical, 8.a4, 10.Bg5 Bd5" + }, + "E05o": { + "eco": "E05o", + "fen": "rn1q1rk1/1pp1bppp/2b1pn2/p5B1/P1QP4/5NP1/1P2PPBP/RN3RK1 w - - 0 11", + "hash": 587595007083763860, + "name": "Catalan: Open, Classical, 8.a4, 10.Bg5 a5" + }, + "E05p": { + "eco": "E05p", + "fen": "rnbq1rk1/1pp1bppp/p3pn2/8/2QP4/5NP1/PP2PPBP/RNB2RK1 b - - 0 8", + "hash": 10423762275407546326, + "name": "Catalan: Open, Classical, 8.Qxc4" + }, + "E05q": { + "eco": "E05q", + "fen": "rn1q1rk1/1bp1bppp/p3pn2/1p6/3P4/5NP1/PPQ1PPBP/RNB2RK1 w - - 2 10", + "hash": 7139275122600751303, + "name": "Catalan: Open, Classical, 8.Qxc4 b5 9.Qc2 Bb7" + }, + "E05r": { + "eco": "E05r", + "fen": "rn1q1rk1/1bp1bppp/p3pn2/1p4B1/3P4/5NP1/PPQ1PPBP/RN3RK1 b - - 3 10", + "hash": 11910222010248882959, + "name": "Catalan: Open, Classical, 8.Qxc4, 10.Bg5" + }, + "E05s": { + "eco": "E05s", + "fen": "rn1q1rk1/1bp1bppp/p3pn2/1p6/3P4/5NP1/PPQBPPBP/RN3RK1 b - - 3 10", + "hash": 5376900290870500291, + "name": "Catalan: Open, Classical, 8.Qxc4, 10.Bd2" + }, + "E05t": { + "eco": "E05t", + "fen": "rn1q1rk1/2p1bppp/p3pn2/1p6/3Pb3/5NP1/PPQBPPBP/RN3RK1 w - - 4 11", + "hash": 2567539151781583462, + "name": "Catalan: Open, Classical, 8.Qxc4, 10.Bd2 Be4" + }, + "E05u": { + "eco": "E05u", + "fen": "rn1q1rk1/1bp1bppp/p3pn2/1p6/3P1B2/5NP1/PPQ1PPBP/RN3RK1 b - - 3 10", + "hash": 13278628650829634212, + "name": "Catalan: Open, Classical, 8.Qxc4, 10.Bf4" + }, + "E05v": { + "eco": "E05v", + "fen": "r2q1rk1/1bp1bppp/p1n1pn2/1p6/3P1B2/5NP1/PPQ1PPBP/RN3RK1 w - - 4 11", + "hash": 1417211688164786087, + "name": "Catalan: Open, Classical, 8.Qxc4, 10.Bf4 Nc6" + }, + "E06": { + "eco": "E06", + "fen": "rnbqk2r/ppp1bppp/4pn2/3p4/2PP4/6P1/PP2PPBP/RNBQK1NR w KQkq - 2 5", + "hash": 3027590569607711211, + "name": "Catalan: Closed" + }, + "E07": { + "eco": "E07", + "fen": "r1bq1rk1/pppnbppp/4pn2/3p4/2PP4/5NP1/PP2PPBP/RNBQ1RK1 w - - 6 7", + "hash": 13140985555652114401, + "name": "Catalan: Closed, 6...Nbd7" + }, + "E08a": { + "eco": "E08a", + "fen": "r1bq1rk1/pppnbppp/4pn2/3p4/2PP4/5NP1/PPQ1PPBP/RNB2RK1 b - - 7 7", + "hash": 524487525825825669, + "name": "Catalan: Closed, 7.Qc2" + }, + "E08b": { + "eco": "E08b", + "fen": "r1bq1rk1/pp1nbppp/4pn2/2pp4/2PP4/5NP1/PPQ1PPBP/RNB2RK1 w - c6 0 8", + "hash": 16228311202856419576, + "name": "Catalan: Closed, 7.Qc2 c5" + }, + "E08c": { + "eco": "E08c", + "fen": "r1bq1rk1/p1pnbppp/1p2pn2/3p4/2PP4/5NP1/PPQ1PPBP/RNB2RK1 w - - 0 8", + "hash": 7795189655006837790, + "name": "Catalan: Closed, 7.Qc2 b6" + }, + "E08d": { + "eco": "E08d", + "fen": "r1bq1rk1/pp1nbppp/2p1pn2/3p4/2PP4/5NP1/PPQ1PPBP/RNB2RK1 w - - 0 8", + "hash": 10753953036473210942, + "name": "Catalan: Closed, 7.Qc2 c6" + }, + "E08e": { + "eco": "E08e", + "fen": "r1bq1rk1/pp1nbppp/2p1pn2/3p4/2PP4/5NP1/PPQ1PPBP/RNBR2K1 b - - 1 8", + "hash": 8655786039204245041, + "name": "Catalan: Closed, 7.Qc2 c6 8.Rd1" + }, + "E08f": { + "eco": "E08f", + "fen": "r1bq1rk1/p2nbppp/1pp1pn2/3p4/2PP4/5NP1/PPQ1PPBP/RNBR2K1 w - - 0 9", + "hash": 1402535495464802730, + "name": "Catalan: Closed, 7.Qc2 c6 8.Rd1 b6" + }, + "E08g": { + "eco": "E08g", + "fen": "r1bq1rk1/pp1nbppp/2p1pn2/3p4/2PP1B2/5NP1/PPQ1PPBP/RN3RK1 b - - 1 8", + "hash": 5650137156331041373, + "name": "Catalan: Closed, 7.Qc2 c6 8.Bf4" + }, + "E08h": { + "eco": "E08h", + "fen": "r1bq1rk1/pp1nbppp/2p1p3/3p3n/2PP1B2/5NP1/PPQ1PPBP/RN3RK1 w - - 2 9", + "hash": 15459386421290256135, + "name": "Catalan: Closed, 7.Qc2 c6 8.Bf4 Nh5" + }, + "E08i": { + "eco": "E08i", + "fen": "r1bq1rk1/pp1nbppp/2p1p3/3p4/2PPnB2/5NP1/PPQ1PPBP/RN3RK1 w - - 2 9", + "hash": 8386016216565776295, + "name": "Catalan: Closed, 7.Qc2 c6 8.Bf4 Ne4" + }, + "E08j": { + "eco": "E08j", + "fen": "r1bq1rk1/p2nbppp/1pp1pn2/3p4/2PP1B2/5NP1/PPQ1PPBP/RN3RK1 w - - 0 9", + "hash": 2666158321867376070, + "name": "Catalan: Closed, 7.Qc2 c6 8.Bf4 b6" + }, + "E08k": { + "eco": "E08k", + "fen": "r1bq1rk1/pp1nbppp/2p1pn2/3p4/2PP4/1P3NP1/P1Q1PPBP/RNB2RK1 b - - 0 8", + "hash": 1845304985797358419, + "name": "Catalan: Closed, 7.Qc2 c6 8.b3" + }, + "E08l": { + "eco": "E08l", + "fen": "r1bq1rk1/p2nbppp/2p1pn2/1p1p4/2PP4/1P3NP1/P1Q1PPBP/RNB2RK1 w - b6 0 9", + "hash": 8763931267966750318, + "name": "Catalan: Closed, 7.Qc2 c6 8.b3 b5" + }, + "E08m": { + "eco": "E08m", + "fen": "r1bq1rk1/p2nbppp/1pp1pn2/3p4/2PP4/1P3NP1/P1Q1PPBP/RNB2RK1 w - - 0 9", + "hash": 8282856436551566536, + "name": "Catalan: Closed, 7.Qc2 c6 8.b3 b6" + }, + "E08n": { + "eco": "E08n", + "fen": "r1bq1rk1/p2nbppp/1pp1pn2/3p4/2PP4/1P3NP1/P1Q1PPBP/RNBR2K1 b - - 1 9", + "hash": 11515896451041538759, + "name": "Catalan: Closed, 7.Qc2 c6 8.b3 b6 9.Rd1" + }, + "E08o": { + "eco": "E08o", + "fen": "r2q1rk1/p2nbppp/bpp1pn2/3p4/2PP4/1P3NP1/P1QNPPBP/R1BR2K1 b - - 3 10", + "hash": 697570068910807049, + "name": "Catalan: Closed, 7.Qc2 c6 8.b3 b6 9.Rd1 Ba6 10.Nbd2" + }, + "E08p": { + "eco": "E08p", + "fen": "r2q1rk1/pb1nbppp/1pp1pn2/3p4/2PP4/1P3NP1/P1Q1PPBP/RNBR2K1 w - - 2 10", + "hash": 3404974525955284316, + "name": "Catalan: Closed, 7.Qc2 c6 8.b3 b6 9.Rd1 Bb7" + }, + "E08q": { + "eco": "E08q", + "fen": "2rq1rk1/pb1nbppp/1pp1pn2/3p4/2PP4/1PN2NP1/P1Q1PPBP/R1BR2K1 w - - 4 11", + "hash": 14020057028864550910, + "name": "Catalan: Closed, 7.Qc2 c6 8.b3 b6 9.Rd1 Bb7 10.Nc3 Rc8" + }, + "E08r": { + "eco": "E08r", + "fen": "2rq1rk1/pb1nbppp/1pp1pn2/8/2PPp3/1PN2NP1/P1Q2PBP/R1BR2K1 w - - 0 12", + "hash": 14851936811068533412, + "name": "Catalan: Closed, 7.Qc2 c6 8.b3 b6 9.Rd1 Bb7 10.Nc3 Rc8 11.e4 dxe4" + }, + "E09a": { + "eco": "E09a", + "fen": "r1bq1rk1/pp1nbppp/2p1pn2/3p4/2PP4/5NP1/PPQNPPBP/R1B2RK1 b - - 1 8", + "hash": 14723128296321953806, + "name": "Catalan: Closed, Main Line" + }, + "E09b": { + "eco": "E09b", + "fen": "r1bq1rk1/p2nbppp/2p1pn2/1p1p4/2PP4/5NP1/PPQNPPBP/R1B2RK1 w - b6 0 9", + "hash": 12418505790022225203, + "name": "Catalan: Closed, Main Line, 8...b5" + }, + "E09c": { + "eco": "E09c", + "fen": "r1bqr1k1/pp1nbppp/2p1pn2/3p4/2PP4/5NP1/PPQNPPBP/R1B2RK1 w - - 2 9", + "hash": 14988762884190066060, + "name": "Catalan: Closed, Main Line, 8...Re8" + }, + "E09d": { + "eco": "E09d", + "fen": "r1bq1rk1/p2nbppp/1pp1pn2/3p4/2PP4/5NP1/PPQNPPBP/R1B2RK1 w - - 0 9", + "hash": 12050020981499365269, + "name": "Catalan: Closed, Main Line, 8...b6" + }, + "E09e": { + "eco": "E09e", + "fen": "r1bq1rk1/p2nbppp/1pp1pn2/3p4/2PP4/1P3NP1/P1QNPPBP/R1B2RK1 b - - 0 9", + "hash": 3142428876451048696, + "name": "Catalan: Closed, Main Line, 9.b3" + }, + "E09f": { + "eco": "E09f", + "fen": "r2q1rk1/pb1nbppp/1pp1pn2/3p4/2PP4/1P3NP1/PBQNPPBP/R4RK1 b - - 2 10", + "hash": 6588912388136066956, + "name": "Catalan: Closed, Main Line, 9.b3 Bb7 10.Bb2" + }, + "E09g": { + "eco": "E09g", + "fen": "2rq1rk1/pb1nbppp/1pp1pn2/3p4/2PP4/1P3NP1/PBQNPPBP/R4RK1 w - - 3 11", + "hash": 5563710900563011575, + "name": "Catalan: Closed, Main Line, 9.b3 Bb7 10.Bb2 Rc8" + }, + "E09h": { + "eco": "E09h", + "fen": "r1bq1rk1/p2nbppp/1pp1pn2/3p4/2PPP3/5NP1/PPQN1PBP/R1B2RK1 b - e3 0 9", + "hash": 7150954752468499103, + "name": "Catalan: Closed, Main Line, 9.e4" + }, + "E09i": { + "eco": "E09i", + "fen": "r2q1rk1/p2nbppp/bpp1pn2/3p4/2PPP3/5NP1/PPQN1PBP/R1B2RK1 w - - 1 10", + "hash": 12406600661366978657, + "name": "Catalan: Closed, Main Line, 9.e4 Ba6" + }, + "E09j": { + "eco": "E09j", + "fen": "r1bq1rk1/p2nbppp/1pp1pn2/8/2PPp3/5NP1/PPQN1PBP/R1B2RK1 w - - 0 10", + "hash": 12373592130403109583, + "name": "Catalan: Closed, Main Line, 9.e4 dxe4" + }, + "E09k": { + "eco": "E09k", + "fen": "r1bq1rk1/p2nbppp/1pp1p3/8/2PPQ3/5NP1/PP3PBP/R1B2RK1 b - - 0 11", + "hash": 4482546715141650598, + "name": "Catalan: Closed, Main Line, 9.e4 dxe4 10.Nxe4 Nxe4 11.Qxe4" + }, + "E09l": { + "eco": "E09l", + "fen": "r2q1rk1/pb1nbppp/1pp1pn2/3p4/2PPP3/5NP1/PPQN1PBP/R1B2RK1 w - - 1 10", + "hash": 15252851849608566020, + "name": "Catalan: Closed, Main Line, 9.e4 Bb7" + }, + "E09m": { + "eco": "E09m", + "fen": "r2q1rk1/pb1nbppp/1pp1pn2/3pP3/2PP4/5NP1/PPQN1PBP/R1B2RK1 b - - 0 10", + "hash": 12885947578176910176, + "name": "Catalan: Closed, Main Line, 9.e4 Bb7 10.e5" + }, + "E09n": { + "eco": "E09n", + "fen": "r2q1rk1/pb1nbppp/1pp1pn2/3p4/2PPP3/1P3NP1/P1QN1PBP/R1B2RK1 b - - 0 10", + "hash": 6848677220431003241, + "name": "Catalan: Closed, Main Line, 9.e4 Bb7 10.b3" + }, + "E09o": { + "eco": "E09o", + "fen": "2rq1rk1/pb1nbppp/1pp1pn2/3p4/2PPP3/1P3NP1/PBQN1PBP/R4RK1 b - - 2 11", + "hash": 9885762779645106941, + "name": "Catalan: Closed, Main Line, 9.e4 Bb7 10.b3 Rc8 11.Bb2" + }, + "E09p": { + "eco": "E09p", + "fen": "2r2rk1/pbqnbppp/1pp1pn2/3p4/2PPP3/1P3NP1/PBQN1PBP/R4RK1 w - - 3 12", + "hash": 10317315735915664892, + "name": "Catalan: Closed, Main Line, 9.e4 Bb7 10.b3 Rc8 11.Bb2 Qc7" + }, + "E09q": { + "eco": "E09q", + "fen": "2rq1rk1/pb1nbppp/1p2pn2/2pp4/2PPP3/1P3NP1/PBQN1PBP/R4RK1 w - - 0 12", + "hash": 426806455923246898, + "name": "Catalan: Closed, Main Line, 9.e4 Bb7 10.b3 Rc8 11.Bb2 c5" + }, + "E10a": { + "eco": "E10a", + "fen": "rnbqkb1r/pppp1ppp/4pn2/8/2PP4/5N2/PP2PPPP/RNBQKB1R b KQkq - 1 3", + "hash": 18000901611687889440, + "name": "Neo-Indian: 3.Nf3" + }, + "E10b": { + "eco": "E10b", + "fen": "rnbqkb1r/pppp1ppp/4p3/8/2PPn3/5N2/PP2PPPP/RNBQKB1R w KQkq - 2 4", + "hash": 14112100055236233178, + "name": "Neo-Indian: Dry Defence" + }, + "E10c": { + "eco": "E10c", + "fen": "rnbqk2r/ppppbppp/4pn2/8/2PP4/5N2/PP2PPPP/RNBQKB1R w KQkq - 2 4", + "hash": 17085671047841343153, + "name": "Neo-Indian: 3.Nf3 Be7" + }, + "E10d": { + "eco": "E10d", + "fen": "rnbqkb1r/1ppp1ppp/p3pn2/8/2PP4/5N2/PP2PPPP/RNBQKB1R w KQkq - 0 4", + "hash": 3109732619945325308, + "name": "Neo-Indian: 3.Nf3 a6" + }, + "E10e": { + "eco": "E10e", + "fen": "rnbqkb1r/1ppp1ppp/p3pn2/8/2PP4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 4", + "hash": 15037771999385202725, + "name": "Neo-Indian: 3.Nf3 a6 4.Nc3" + }, + "E10f": { + "eco": "E10f", + "fen": "rnbqkb1r/1p1p1ppp/p3pn2/2p5/2PP4/2N2N2/PP2PPPP/R1BQKB1R w KQkq c6 0 5", + "hash": 3945492315139521368, + "name": "Neo-Indian: 3.Nf3 a6 4.Nc3 c5" + }, + "E10g": { + "eco": "E10g", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/2p5/2PP4/5N2/PP2PPPP/RNBQKB1R w KQkq c6 0 4", + "hash": 2279345923159933277, + "name": "Neo-Indian: Blumenfeld/Benoni" + }, + "E10h": { + "eco": "E10h", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/2p5/2PP4/4PN2/PP3PPP/RNBQKB1R b KQkq - 0 4", + "hash": 12865833849228184057, + "name": "Neo-Indian: Blumenfeld/Benoni, 4.e3" + }, + "E10i": { + "eco": "E10i", + "fen": "rnbqkb1r/p2p1ppp/1p2pn2/2p5/2PP4/4PN2/PP3PPP/RNBQKB1R w KQkq - 0 5", + "hash": 15701191696109993570, + "name": "Neo-Indian: Blumenfeld/Benoni, 4.e3 b6" + }, + "E10j": { + "eco": "E10j", + "fen": "rnbqkb1r/pp1p1ppp/4pn2/8/2Pp4/4PN2/PP3PPP/RNBQKB1R w KQkq - 0 5", + "hash": 17118786422174982207, + "name": "Neo-Indian: Blumenfeld/Benoni, 4.e3 cxd4" + }, + "E10k": { + "eco": "E10k", + "fen": "rnbqkb1r/p2p1ppp/4pn2/1ppP4/2P5/5N2/PP2PPPP/RNBQKB1R w KQkq b6 0 5", + "hash": 14244309805386033725, + "name": "Blumenfeld Countergambit" + }, + "E10l": { + "eco": "E10l", + "fen": "rnbqkb1r/p5pp/4pn2/1Ppp4/8/5N2/PP2PPPP/RNBQKB1R w KQkq d6 0 7", + "hash": 10347470135956252646, + "name": "Blumenfeld: 5.dxe6 fxe6 6.cxb5 d5" + }, + "E10m": { + "eco": "E10m", + "fen": "rnbqkb1r/p2p1ppp/4pn2/1ppP2B1/2P5/5N2/PP2PPPP/RN1QKB1R b KQkq - 1 5", + "hash": 285876849302516213, + "name": "Blumenfeld: 5.Bg5" + }, + "E10n": { + "eco": "E10n", + "fen": "rnbqkb1r/p2p1pp1/4pn1p/1ppP2B1/2P5/5N2/PP2PPPP/RN1QKB1R w KQkq - 0 6", + "hash": 10448606343596832992, + "name": "Blumenfeld: 5.Bg5 h6" + }, + "E10o": { + "eco": "E10o", + "fen": "rnb1kb1r/p2p1ppp/4pn2/qppP2B1/2P5/5N2/PP2PPPP/RN1QKB1R w KQkq - 2 6", + "hash": 15745769714659168378, + "name": "Blumenfeld: 5.Bg5 Qa5+" + }, + "E10p": { + "eco": "E10p", + "fen": "rnbqkb1r/p2p1ppp/5n2/1ppp2B1/2P5/5N2/PP2PPPP/RN1QKB1R w KQkq - 0 6", + "hash": 4387485421916582206, + "name": "Blumenfeld: 5.Bg5 exd5" + }, + "E10q": { + "eco": "E10q", + "fen": "rnbqkb1r/p2p1pp1/5n1p/1ppP2B1/8/5N2/PP2PPPP/RN1QKB1R w KQkq - 0 7", + "hash": 11546853506016128054, + "name": "Blumenfeld: Spielmann Variation" + }, + "E11a": { + "eco": "E11a", + "fen": "rnbqk2r/pppp1ppp/4pn2/8/1bPP4/5N2/PP2PPPP/RNBQKB1R w KQkq - 2 4", + "hash": 3499690135436263938, + "name": "Bogo-Indian" + }, + "E11b": { + "eco": "E11b", + "fen": "rnbqk2r/ppp2ppp/4pn2/3p4/1bPP4/5N2/PP1NPPPP/R1BQKB1R w KQkq d6 0 5", + "hash": 17047813254047851540, + "name": "Bogo-Indian: 4.Nbd2 d5" + }, + "E11c": { + "eco": "E11c", + "fen": "rnbqk2r/p1pp1ppp/1p2pn2/8/1bPP4/5N2/PP1NPPPP/R1BQKB1R w KQkq - 0 5", + "hash": 186500058724703657, + "name": "Bogo-Indian: 4.Nbd2 b6" + }, + "E11d": { + "eco": "E11d", + "fen": "rnbqk2r/p1pp1ppp/1p2pn2/8/2PP4/P4N2/1P1BPPPP/R2QKB1R b KQkq - 0 6", + "hash": 8480887617440682913, + "name": "Bogo-Indian: 4.Nbd2 b6 5.a3 Bxd2+ 6.Bxd2" + }, + "E11e": { + "eco": "E11e", + "fen": "rnbq1rk1/pppp1ppp/4pn2/8/1bPP4/5N2/PP1NPPPP/R1BQKB1R w KQ - 4 5", + "hash": 7158243423025775577, + "name": "Bogo-Indian: 4.Nbd2 O-O" + }, + "E11f": { + "eco": "E11f", + "fen": "rnbq1rk1/pppp1ppp/4pn2/8/1bPP4/P4N2/1P1NPPPP/R1BQKB1R b KQ - 0 5", + "hash": 12162816669612690841, + "name": "Bogo-Indian: 4.Nbd2 O-O 5.a3" + }, + "E11g": { + "eco": "E11g", + "fen": "rnbqk2r/pppp1ppp/4pn2/8/1bPP4/5N2/PP1BPPPP/RN1QKB1R b KQkq - 3 4", + "hash": 1809390519403374854, + "name": "Bogo-Indian: 4.Bd2" + }, + "E11h": { + "eco": "E11h", + "fen": "rnbq1rk1/ppp1bppp/4pn2/3p4/2PP4/5NP1/PP1BPPBP/RN1QK2R w KQ - 2 7", + "hash": 3067889004343144240, + "name": "Bogo-Indian: 4.Bd2 Be7 5.g3 d5 6.Bg2 O-O" + }, + "E11i": { + "eco": "E11i", + "fen": "rnbq1rk1/pp2bppp/2p1pn2/3p4/2PP4/5NP1/PPQBPPBP/RN3RK1 b - - 1 8", + "hash": 8612483434777287679, + "name": "Bogo-Indian: 4.Bd2 Be7 5.g3 d5 6.Bg2 O-O 7.O-O c6 8.Qc2" + }, + "E11j": { + "eco": "E11j", + "fen": "rnbqk2r/pp1p1ppp/4pn2/2p5/1bPP4/5N2/PP1BPPPP/RN1QKB1R w KQkq c6 0 5", + "hash": 18405629733685977723, + "name": "Bogo-Indian: Vitolins Variation" + }, + "E11k": { + "eco": "E11k", + "fen": "rnbqk2r/pp1p1ppp/4pn2/8/1pPP4/5NP1/PP2PP1P/RN1QKB1R b KQkq - 0 6", + "hash": 15842498810850537534, + "name": "Bogo-Indian: Vitolins, 6.g3" + }, + "E11l": { + "eco": "E11l", + "fen": "rnbqk2r/1ppp1ppp/4pn2/p7/1bPP4/5N2/PP1BPPPP/RN1QKB1R w KQkq a6 0 5", + "hash": 11458998954212156822, + "name": "Bogo-Indian: 4.Bd2 a5" + }, + "E11m": { + "eco": "E11m", + "fen": "rnbqk2r/1ppp1ppp/4pn2/p7/1bPP4/5NP1/PP1BPP1P/RN1QKB1R b KQkq - 0 5", + "hash": 12961414255465512366, + "name": "Bogo-Indian: 4.Bd2 a5 5.g3" + }, + "E11n": { + "eco": "E11n", + "fen": "rnb1k2r/ppppqppp/4pn2/8/1bPP4/5N2/PP1BPPPP/RN1QKB1R w KQkq - 4 5", + "hash": 9431628779807295340, + "name": "Bogo-Indian: Nimzowitsch Variation" + }, + "E11o": { + "eco": "E11o", + "fen": "rnb1k2r/ppppqppp/4pn2/8/1bPP4/2N2N2/PP1BPPPP/R2QKB1R b KQkq - 5 5", + "hash": 8751893502006216117, + "name": "Bogo-Indian: Nimzowitsch, 5.Nc3" + }, + "E11p": { + "eco": "E11p", + "fen": "rnb1k2r/ppppqppp/4pn2/8/1bPP4/5NP1/PP1BPP1P/RN1QKB1R b KQkq - 0 5", + "hash": 12539528957878607700, + "name": "Bogo-Indian: Nimzowitsch, 5.g3" + }, + "E11q": { + "eco": "E11q", + "fen": "rnb2rk1/ppppqppp/4pn2/8/1bPP4/5NP1/PP1BPP1P/RN1QKB1R w KQ - 1 6", + "hash": 11866341330102646463, + "name": "Bogo-Indian: Nimzowitsch, 5.g3 O-O" + }, + "E11r": { + "eco": "E11r", + "fen": "r1b1k2r/ppppqppp/2n1pn2/8/1bPP4/5NP1/PP1BPP1P/RN1QKB1R w KQkq - 1 6", + "hash": 425735044511152727, + "name": "Bogo-Indian: Nimzowitsch, 5.g3 Nc6" + }, + "E11s": { + "eco": "E11s", + "fen": "r1b1k2r/ppppqppp/2n1pn2/8/2PP4/2b2NP1/PP1BPP1P/R2QKB1R w KQkq - 0 7", + "hash": 16088793424699812484, + "name": "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 6.Nc3 Bxc3" + }, + "E11t": { + "eco": "E11t", + "fen": "r1b1k2r/ppppqppp/2n1pn2/8/1bPP4/5NP1/PP1BPPBP/RN1QK2R b KQkq - 2 6", + "hash": 12689068667576017454, + "name": "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 6.Bg2" + }, + "E11u": { + "eco": "E11u", + "fen": "r1b1k2r/ppppqppp/2n1pn2/8/2PP4/5NP1/PP1NPPBP/R2QK2R b KQkq - 0 7", + "hash": 3699342135282494706, + "name": "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 6.Bg2 Bxd2+ 7.Nbxd2" + }, + "E11v": { + "eco": "E11v", + "fen": "r1b1k2r/ppp1qppp/2nppn2/8/2PP4/5NP1/PP1NPPBP/R2Q1RK1 b kq - 1 8", + "hash": 8401844744982789775, + "name": "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 Main Line" + }, + "E11w": { + "eco": "E11w", + "fen": "r1b1k2r/1pp1qppp/2nppn2/p7/2PP4/5NP1/PP1NPPBP/R2Q1RK1 w kq a6 0 9", + "hash": 17475071042504520223, + "name": "Bogo-Indian: Nimzowitsch, 5.g3 Nc6 Main Line, 8...a5" + }, + "E11x": { + "eco": "E11x", + "fen": "rnbqk2r/pppp1ppp/4pn2/8/2PP4/5N2/PP1bPPPP/RN1QKB1R w KQkq - 0 5", + "hash": 1705052873394744495, + "name": "Bogo-Indian: 4.Bd2 Bxd2+" + }, + "E11y": { + "eco": "E11y", + "fen": "rnbqk2r/pppp1ppp/4pn2/8/2PP4/5N2/PP1QPPPP/RN2KB1R b KQkq - 0 5", + "hash": 16943909939917000778, + "name": "Bogo-Indian: 4.Bd2 Bxd2+ 5.Qxd2" + }, + "E11z": { + "eco": "E11z", + "fen": "rnbq1rk1/ppp2ppp/4pn2/3p4/2PP4/2N1PN2/PP1Q1PPP/R3KB1R b KQ - 0 7", + "hash": 3628856639022841338, + "name": "Bogo-Indian: 4.Bd2 Bxd2+ 5.Qxd2 O-O 6.Nc3 d5 7.e3" + }, + "E12a": { + "eco": "E12a", + "fen": "rnbqkb1r/p1pp1ppp/1p2pn2/8/2PP4/5N2/PP2PPPP/RNBQKB1R w KQkq - 0 4", + "hash": 10572558241368800699, + "name": "Queen's Indian" + }, + "E12b": { + "eco": "E12b", + "fen": "rnbqkb1r/p1pp1ppp/1p2pn2/8/2PP1B2/5N2/PP2PPPP/RN1QKB1R b KQkq - 1 4", + "hash": 5327093386548254680, + "name": "Queen's Indian: Miles Variation" + }, + "E12c": { + "eco": "E12c", + "fen": "rn1qk2r/pbpp1ppp/1p2pn2/8/1bPP1B2/4PN2/PP3PPP/RN1QKB1R w KQkq - 1 6", + "hash": 11318038470081935557, + "name": "Queen's Indian: Miles, 5.e3 Bb4+" + }, + "E12d": { + "eco": "E12d", + "fen": "rnbqkb1r/p1pp1ppp/1p2pn2/8/2PP4/P4N2/1P2PPPP/RNBQKB1R b KQkq - 0 4", + "hash": 6423668614710621179, + "name": "Queen's Indian: Petrosian" + }, + "E12e": { + "eco": "E12e", + "fen": "rnbqkb1r/p2p1ppp/1p2pn2/2p5/2PP4/P4N2/1P2PPPP/RNBQKB1R w KQkq c6 0 5", + "hash": 13786826039925799046, + "name": "Queen's Indian: Petrosian, 4...c5" + }, + "E12f": { + "eco": "E12f", + "fen": "rn1qkb1r/p2p1ppp/bp2pn2/2pP4/2P5/P4N2/1PQ1PPPP/RNB1KB1R b KQkq - 2 6", + "hash": 8887227787521314881, + "name": "Queen's Indian: Petrosian, 4...c5 5.d5 Ba6 6.Qc2" + }, + "E12g": { + "eco": "E12g", + "fen": "rn1qkb1r/p1pp1ppp/bp2pn2/8/2PP4/P4N2/1P2PPPP/RNBQKB1R w KQkq - 1 5", + "hash": 10823599569406259461, + "name": "Queen's Indian: Petrosian, 4...Ba6" + }, + "E12h": { + "eco": "E12h", + "fen": "rn1qkb1r/pbpp1ppp/1p2pn2/8/2PP4/P4N2/1PQ1PPPP/RNB1KB1R w KQkq - 3 6", + "hash": 11563670037701453069, + "name": "Queen's Indian: Petrosian, 4...Ba6 5.Qc2 Bb7" + }, + "E12i": { + "eco": "E12i", + "fen": "rn1qkb1r/pb1p1ppp/1p2pn2/2p5/2PPP3/P1N2N2/1PQ2PPP/R1B1KB1R b KQkq e3 0 7", + "hash": 8762787600451817891, + "name": "Queen's Indian: Petrosian, 4...Ba6 5.Qc2 Bb7 6.Nc3 c5 7.e4" + }, + "E12j": { + "eco": "E12j", + "fen": "rn1qkb1r/pbpp1ppp/1p2pn2/8/2PP4/P4N2/1P2PPPP/RNBQKB1R w KQkq - 1 5", + "hash": 16840432448368303200, + "name": "Queen's Indian: Petrosian, 4...Bb7" + }, + "E12k": { + "eco": "E12k", + "fen": "rn1qkb1r/pbpp1ppp/1p2p3/8/2PPn3/P1N2N2/1P2PPPP/R1BQKB1R w KQkq - 3 6", + "hash": 2894240245176292163, + "name": "Queen's Indian: Petrosian, 5.Nc3 Ne4" + }, + "E12l": { + "eco": "E12l", + "fen": "rn1qkb1r/pbpp1p1p/1p2pnp1/8/2PP4/P1N2N2/1P2PPPP/R1BQKB1R w KQkq - 0 6", + "hash": 18128809222259428594, + "name": "Queen's Indian: Petrosian, 5.Nc3 g6" + }, + "E12m": { + "eco": "E12m", + "fen": "rn1qkb1r/pbp2ppp/1p2pn2/3p4/2PP4/P1N2N2/1P2PPPP/R1BQKB1R w KQkq d6 0 6", + "hash": 10900970182361125023, + "name": "Queen's Indian: Petrosian, 5.Nc3 d5" + }, + "E12n": { + "eco": "E12n", + "fen": "rn1qkb1r/pbp2ppp/1p2pn2/3p2B1/2PP4/P1N2N2/1P2PPPP/R2QKB1R b KQkq - 1 6", + "hash": 5841821374330981207, + "name": "Queen's Indian: Petrosian, 5.Nc3 d5 6.Bg5" + }, + "E12o": { + "eco": "E12o", + "fen": "rn1qk2r/pbp1bppp/1p2pn2/3p2B1/Q1PP4/P1N2N2/1P2PPPP/R3KB1R b KQkq - 3 7", + "hash": 10915211704264365501, + "name": "Queen's Indian: Petrosian, 5.Nc3 d5 6.Bg5 Be7 7.Qa4+" + }, + "E12p": { + "eco": "E12p", + "fen": "rn1qkb1r/pbp2ppp/1p3n2/3p4/3P4/P1N2N2/1P2PPPP/R1BQKB1R w KQkq - 0 7", + "hash": 11994850153319711817, + "name": "Queen's Indian: Petrosian, 6.cxd5 exd5" + }, + "E12q": { + "eco": "E12q", + "fen": "rn1qkb1r/pbp2ppp/1p3n2/3p2B1/3P4/P1N2N2/1P2PPPP/R2QKB1R b KQkq - 1 7", + "hash": 6929935500407185281, + "name": "Queen's Indian: Petrosian, 6.cxd5 exd5 7.Bg5" + }, + "E12r": { + "eco": "E12r", + "fen": "rn1qkb1r/pbp2ppp/1p2p3/3n4/3P4/P1N2N2/1P2PPPP/R1BQKB1R w KQkq - 0 7", + "hash": 472006186127432158, + "name": "Queen's Indian: Petrosian, 6.cxd5 Nxd5" + }, + "E12s": { + "eco": "E12s", + "fen": "rn1qkb1r/pbp2ppp/1p2p3/3n4/3P4/P1N1PN2/1P3PPP/R1BQKB1R b KQkq - 0 7", + "hash": 12367348099221688698, + "name": "Queen's Indian: Petrosian, 6.cxd5 Nxd5 7.e3" + }, + "E12t": { + "eco": "E12t", + "fen": "rn1qkb1r/pbp2ppp/1p2p3/3n4/3P4/P1N2N2/1PQ1PPPP/R1B1KB1R b KQkq - 1 7", + "hash": 13228643569918518714, + "name": "Queen's Indian: Petrosian, Kasparov Variation" + }, + "E12u": { + "eco": "E12u", + "fen": "rn1qkb1r/pbp2ppp/1p2p3/8/3P4/P1P2N2/2Q1PPPP/R1B1KB1R b KQkq - 0 8", + "hash": 8716164094770762721, + "name": "Queen's Indian: Petrosian, Kasparov, 7...Nxc3 8.bxc3" + }, + "E12v": { + "eco": "E12v", + "fen": "rnbqkb1r/p1pp1ppp/1p2pn2/6B1/2PP4/5N2/PP2PPPP/RN1QKB1R b KQkq - 1 4", + "hash": 6116753072067749491, + "name": "Queen's Indian: 4.Bg5" + }, + "E12w": { + "eco": "E12w", + "fen": "rnbqkb1r/p1pp1ppp/1p2pn2/8/2PP4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 1 4", + "hash": 7579097574750617442, + "name": "Queen's Indian: 4.Nc3" + }, + "E12x": { + "eco": "E12x", + "fen": "rn1qk2r/pbppbpp1/1p2pn1p/8/2PP3B/2N2N2/PP2PPPP/R2QKB1R w KQkq - 2 7", + "hash": 14073769652317670446, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Be7" + }, + "E12y": { + "eco": "E12y", + "fen": "rn1qkb1r/pbpp1p2/1p2pn1p/6p1/2PP3B/2N2N2/PP2PPPP/R2QKB1R w KQkq g6 0 7", + "hash": 6331939977719324469, + "name": "Queen's Indian: Botvinnik Variation" + }, + "E13a": { + "eco": "E13a", + "fen": "rn1qk2r/pbpp1pp1/1p2pn1p/8/1bPP3B/2N2N2/PP2PPPP/R2QKB1R w KQkq - 2 7", + "hash": 2223942618361702557, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4" + }, + "E13b": { + "eco": "E13b", + "fen": "rn1qk2r/pbpp1pp1/1p2pn1p/8/1bPP3B/2N2N2/PPQ1PPPP/R3KB1R b KQkq - 3 7", + "hash": 12665382305680528633, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.Qc2" + }, + "E13c": { + "eco": "E13c", + "fen": "rn1qk2r/pbpp1p2/1p2pn1p/6p1/1bPP3B/2N2N2/PPQ1PPPP/R3KB1R w KQkq g6 0 8", + "hash": 3424858632400923507, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.Qc2 g5" + }, + "E13d": { + "eco": "E13d", + "fen": "rn1qk2r/pbpp1pp1/1p2pn1p/8/1bPP3B/2N5/PP1NPPPP/R2QKB1R b KQkq - 3 7", + "hash": 14123169549070112279, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.Nd2" + }, + "E13e": { + "eco": "E13e", + "fen": "rn1qk2r/pbpp1pp1/1p2pn1p/8/2PP3B/2b5/PP1NPPPP/R2QKB1R w KQkq - 0 8", + "hash": 16341004375038641181, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.Nd2 Bxc3" + }, + "E13f": { + "eco": "E13f", + "fen": "rn1qk2r/pbpp1pp1/1p2pn1p/8/1bPP3B/2N1PN2/PP3PPP/R2QKB1R b KQkq - 0 7", + "hash": 12965945470262353977, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3" + }, + "E13g": { + "eco": "E13g", + "fen": "rn1qk2r/pb1p1pp1/1p2pn1p/2p5/1bPP3B/2N1PN2/PP3PPP/R2QKB1R w KQkq c6 0 8", + "hash": 6161376307957836612, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 c5" + }, + "E13h": { + "eco": "E13h", + "fen": "rn1qk2r/pbpp1pp1/1p2pn1p/8/2PP3B/2b1PN2/PP3PPP/R2QKB1R w KQkq - 0 8", + "hash": 10577039846632256051, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 Bxc3+" + }, + "E13i": { + "eco": "E13i", + "fen": "rn1qk2r/pbp2pp1/1p1ppn1p/8/2PP3B/2P1PN2/P4PPP/R2QKB1R w KQkq - 0 9", + "hash": 16187852285715305502, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 Bxc3+ 8.bxc3 d6" + }, + "E13j": { + "eco": "E13j", + "fen": "rn1qk2r/pbp2pp1/1p1ppn1p/8/2PP3B/2P1P3/P2N1PPP/R2QKB1R b KQkq - 1 9", + "hash": 4432762511845190292, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 Bxc3+ 8.bxc3 d6 9.Nd2" + }, + "E13k": { + "eco": "E13k", + "fen": "r2qk2r/pbpn1pp1/1p1ppn1p/8/2PP3B/2P1P3/P2N1PPP/R2QKB1R w KQkq - 2 10", + "hash": 1037848100155918168, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 Bxc3+ 8.bxc3 d6 9.Nd2 Nbd7" + }, + "E13l": { + "eco": "E13l", + "fen": "r3k2r/pbpnqpp1/1p1ppn1p/8/2PP3B/2P1PP2/P2N2PP/R2QKB1R w KQkq - 1 11", + "hash": 18098018672175859267, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 Bxc3+ 8.bxc3 d6 9.Nd2 Nbd7 10.f3 Qe7" + }, + "E13m": { + "eco": "E13m", + "fen": "rn1qk2r/pbpp1p2/1p2pn1p/6p1/1bPP3B/2N1PN2/PP3PPP/R2QKB1R w KQkq g6 0 8", + "hash": 3725526276776550323, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 g5" + }, + "E13n": { + "eco": "E13n", + "fen": "rn1qk2r/pbpp1p2/1p2p2p/6p1/1bPPn3/2N1PNB1/PPQ2PPP/R3KB1R b KQkq - 3 9", + "hash": 3586208093305330655, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 g5 8.Bg3 Ne4 9.Qc2" + }, + "E13o": { + "eco": "E13o", + "fen": "rn1qk2r/pbpp1p2/1p2p2p/6p1/2PPn3/2b1PNB1/PPQ2PPP/R3KB1R w KQkq - 0 10", + "hash": 1224343876095969749, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 g5 8.Bg3 Ne4 9.Qc2 Bxc3+" + }, + "E13p": { + "eco": "E13p", + "fen": "rn1qk2r/pbp2p2/1p1pp2p/6p1/2PPn3/2P1PNB1/P1Q2PPP/R3KB1R w KQkq - 0 11", + "hash": 7102812219314057208, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 g5 8.Bg3 Ne4 9.Qc2 Bxc3+ 10.bxc3 d6" + }, + "E13q": { + "eco": "E13q", + "fen": "rn1qk2r/pbp5/1p1pp2p/5pp1/2PPn3/2PBPNB1/P1Q2PPP/R3K2R w KQkq f6 0 12", + "hash": 11813088260602478677, + "name": "Queen's Indian: 5.Bg5 h6 6.Bh4 Bb4 7.e3 g5 8.Bg3 Ne4 9.Qc2 Bxc3+ 10.bxc3 d6 11.Bd3 f5" + }, + "E14a": { + "eco": "E14a", + "fen": "rnbqkb1r/p1pp1ppp/1p2pn2/8/2PP4/4PN2/PP3PPP/RNBQKB1R b KQkq - 0 4", + "hash": 4581294444429833503, + "name": "Queen's Indian: 4.e3" + }, + "E14b": { + "eco": "E14b", + "fen": "rn1qkb1r/pbpp1ppp/1p2pn2/8/2PP4/4PN2/PP3PPP/RNBQKB1R w KQkq - 1 5", + "hash": 10305449267932125828, + "name": "Queen's Indian: 4.e3 Bb7" + }, + "E14c": { + "eco": "E14c", + "fen": "rn1qkb1r/pbpp1ppp/1p2pn2/8/2PP4/2N1PN2/PP3PPP/R1BQKB1R b KQkq - 2 5", + "hash": 8400153529003923549, + "name": "Queen's Indian: 4.e3 Bb7 5.Nc3" + }, + "E14d": { + "eco": "E14d", + "fen": "rn1qkb1r/pbp2ppp/1p2pn2/3p4/2PP4/2N1PN2/PP3PPP/R1BQKB1R w KQkq d6 0 6", + "hash": 17436096300416341627, + "name": "Queen's Indian: 4.e3 Bb7 5.Nc3 d5" + }, + "E14e": { + "eco": "E14e", + "fen": "rn1qkb1r/pbpp1ppp/1p2pn2/8/2PP4/3BPN2/PP3PPP/RNBQK2R b KQkq - 2 5", + "hash": 15711350596406057207, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3" + }, + "E14f": { + "eco": "E14f", + "fen": "rn1qk2r/pbpp1ppp/1p2pn2/8/1bPP4/3BPN2/PP3PPP/RNBQK2R w KQkq - 3 6", + "hash": 1389509083455836373, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 Bb4+" + }, + "E14g": { + "eco": "E14g", + "fen": "rn1qk2r/pbpp1ppp/1p2pn2/8/1bPP4/3BPN2/PP1N1PPP/R1BQK2R b KQkq - 4 6", + "hash": 5343027572859861221, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 Bb4+ 6.Nbd2" + }, + "E14h": { + "eco": "E14h", + "fen": "rn1q1rk1/pbpp1ppp/1p2pn2/8/1bPP4/3BPN2/PP1N1PPP/R1BQK2R w KQ - 5 7", + "hash": 4651887406443925774, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 Bb4+ 6.Nbd2 O-O" + }, + "E14i": { + "eco": "E14i", + "fen": "rn1q1rk1/pbp2ppp/1p2pn2/3p4/1bPP4/3BPN2/PP1N1PPP/R1BQ1RK1 w - d6 0 8", + "hash": 13515737699030631480, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 Bb4+ 6.Nbd2 O-O 7.O-O d5" + }, + "E14j": { + "eco": "E14j", + "fen": "rn1qk2r/pbppbppp/1p2pn2/8/2PP4/3BPN2/PP3PPP/RNBQK2R w KQkq - 3 6", + "hash": 14899488457877107814, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 Be7" + }, + "E14k": { + "eco": "E14k", + "fen": "rn1qk2r/pbppbppp/1p2pn2/8/2PP4/3BPN2/PP3PPP/RNBQ1RK1 b kq - 4 6", + "hash": 12731930115479433078, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 Be7 6.O-O" + }, + "E14l": { + "eco": "E14l", + "fen": "rn1q1rk1/pbppbppp/1p2pn2/8/2PP4/2NBPN2/PP3PPP/R1BQ1RK1 b - - 6 7", + "hash": 4724016449902117956, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 Be7 6.O-O O-O 7.Nc3" + }, + "E14m": { + "eco": "E14m", + "fen": "rn1qkb1r/pbp2ppp/1p2pn2/3p4/2PP4/3BPN2/PP3PPP/RNBQK2R w KQkq d6 0 6", + "hash": 6873561982502688465, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 d5" + }, + "E14n": { + "eco": "E14n", + "fen": "rn1qkb1r/pbp2ppp/1p2pn2/3p4/2PP4/3BPN2/PP3PPP/RNBQ1RK1 b kq - 1 6", + "hash": 2384294267263651265, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 d5 6.O-O" + }, + "E14o": { + "eco": "E14o", + "fen": "rn1qk2r/pbp2ppp/1p1bpn2/3p4/2PP4/1P1BPN2/P4PPP/RNBQ1RK1 b kq - 0 7", + "hash": 714025973214328712, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 d5 6.O-O Bd6 7.b3" + }, + "E14p": { + "eco": "E14p", + "fen": "rn1qk2r/pbp2ppp/1p1bpn2/3p4/2PP4/2NBPN2/PP3PPP/R1BQ1RK1 b kq - 3 7", + "hash": 9140550365542374972, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 d5 6.O-O Bd6 7.Nc3" + }, + "E14q": { + "eco": "E14q", + "fen": "rn1qkb1r/pb1p1ppp/1p2pn2/2p5/2PP4/3BPN2/PP3PPP/RNBQK2R w KQkq c6 0 6", + "hash": 4357302522744968074, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 c5" + }, + "E14r": { + "eco": "E14r", + "fen": "rn1qkb1r/pb1p1ppp/1p2pn2/2p5/2PP4/3BPN2/PP3PPP/RNBQ1RK1 b kq - 1 6", + "hash": 4759535949200967834, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O" + }, + "E14s": { + "eco": "E14s", + "fen": "rn1qkb1r/pb1p1ppp/1p2pn2/8/2Pp4/3BPN2/PP3PPP/RNBQ1RK1 w kq - 0 7", + "hash": 2095298145920950620, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O cxd4" + }, + "E14t": { + "eco": "E14t", + "fen": "rn1qk2r/pb1pbppp/1p2pn2/2p5/2PP4/3BPN2/PP3PPP/RNBQ1RK1 w kq - 2 7", + "hash": 6251338597077148683, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7" + }, + "E14u": { + "eco": "E14u", + "fen": "rn1qk2r/pb1pbppp/1p2pn2/2p5/2PP4/1P1BPN2/P4PPP/RNBQ1RK1 b kq - 0 7", + "hash": 15737643087292632934, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.b3" + }, + "E14v": { + "eco": "E14v", + "fen": "rn1q1rk1/pb2bppp/1p2pn2/2pp4/2PP4/1P1BPN2/PB3PPP/RN1Q1RK1 w - d6 0 9", + "hash": 10797787643717661764, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.b3 O-O 8.Bb2 d5" + }, + "E14w": { + "eco": "E14w", + "fen": "rn1q1rk1/pb1pbppp/1p2pn2/8/2Pp4/1P1BPN2/PB3PPP/RN1Q1RK1 w - - 0 9", + "hash": 5741502965488063396, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.b3 O-O 8.Bb2 cxd4" + }, + "E14x": { + "eco": "E14x", + "fen": "rn1qk2r/pb1pbppp/1p2pn2/2p5/2PP4/2NBPN2/PP3PPP/R1BQ1RK1 b kq - 3 7", + "hash": 12490223356670011090, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.Nc3" + }, + "E14y": { + "eco": "E14y", + "fen": "rn1qk2r/pb1pbppp/1p2pn2/8/2PP4/2NB1N2/PP3PPP/R1BQ1RK1 b kq - 0 8", + "hash": 16490204126450795526, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.Nc3 cxd4 8.exd4" + }, + "E14z": { + "eco": "E14z", + "fen": "rn1qk2r/pb2bppp/1p2pn2/3p4/2PP4/2NB1N2/PP3PPP/R1BQ1RK1 w kq d6 0 9", + "hash": 7039930356288686624, + "name": "Queen's Indian: 4.e3 Bb7 5.Bd3 c5 6.O-O Be7 7.Nc3 cxd4 8.exd4 d5" + }, + "E15a": { + "eco": "E15a", + "fen": "rnbqkb1r/p1pp1ppp/1p2pn2/8/2PP4/5NP1/PP2PP1P/RNBQKB1R b KQkq - 0 4", + "hash": 13717963320483227011, + "name": "Queen's Indian: 4.g3" + }, + "E15b": { + "eco": "E15b", + "fen": "rnbqk2r/p1pp1ppp/1p2pn2/8/1bPP4/5NP1/PP2PP1P/RNBQKB1R w KQkq - 1 5", + "hash": 8583465013183409569, + "name": "Queen's Indian: 4.g3 Bb4+" + }, + "E15c": { + "eco": "E15c", + "fen": "rnbqk2r/p1pp1ppp/1p2pn2/8/2PP4/5NP1/PP1bPP1P/RN1QKB1R w KQkq - 0 6", + "hash": 5775412273068081932, + "name": "Queen's Indian: 4.g3 Bb4+ 5.Bd2 Bxd2+" + }, + "E15d": { + "eco": "E15d", + "fen": "rn1qkb1r/p1pp1ppp/bp2pn2/8/2PP4/5NP1/PP2PP1P/RNBQKB1R w KQkq - 1 5", + "hash": 8164933841884850045, + "name": "Queen's Indian: Nimzowitsch Variation (4.g3 Ba6)" + }, + "E15e": { + "eco": "E15e", + "fen": "rn1qkb1r/p1pp1ppp/bp2pn2/8/2PP4/5NP1/PP1NPP1P/R1BQKB1R b KQkq - 2 5", + "hash": 2891614921359953741, + "name": "Queen's Indian: Nimzowitsch, 5.Nbd2" + }, + "E15f": { + "eco": "E15f", + "fen": "rn1qkb1r/pbpp1ppp/1p2pn2/8/2PP4/5NP1/PP1NPP1P/R1BQKB1R w KQkq - 3 6", + "hash": 12643619257133115169, + "name": "Queen's Indian: Nimzowitsch, 5.Nbd2 Bb7" + }, + "E15g": { + "eco": "E15g", + "fen": "rn1qk2r/p1pp1ppp/bp2pn2/8/1bPP4/5NP1/PP1NPP1P/R1BQKB1R w KQkq - 3 6", + "hash": 16240118198250686319, + "name": "Queen's Indian: Nimzowitsch, 5.Nbd2 Bb4" + }, + "E15h": { + "eco": "E15h", + "fen": "rn1qkb1r/p1pp1ppp/bp2pn2/8/Q1PP4/5NP1/PP2PP1P/RNB1KB1R b KQkq - 2 5", + "hash": 11811553543337432326, + "name": "Queen's Indian: Nimzowitsch, 5.Qa4" + }, + "E15i": { + "eco": "E15i", + "fen": "rn1qkb1r/p2p1ppp/bpp1pn2/8/Q1PP4/5NP1/PP2PP1P/RNB1KB1R w KQkq - 0 6", + "hash": 3571913818699368125, + "name": "Queen's Indian: Nimzowitsch, 5.Qa4 c6" + }, + "E15j": { + "eco": "E15j", + "fen": "rn1qkb1r/p2p1ppp/bp2pn2/2p5/Q1PP4/5NP1/PP2PP1P/RNB1KB1R w KQkq c6 0 6", + "hash": 5015533276138659451, + "name": "Queen's Indian: Nimzowitsch, 5.Qa4 c5" + }, + "E15k": { + "eco": "E15k", + "fen": "rn1qkb1r/pb1p1ppp/1p2pn2/2p5/Q1PP4/5NP1/PP2PPBP/RNB2RK1 b kq - 3 7", + "hash": 669246834881820030, + "name": "Queen's Indian: Nimzowitsch, 5.Qa4 c5 6.Bg2 Bb7 7.O-O" + }, + "E15l": { + "eco": "E15l", + "fen": "rn1qkb1r/p1pp1ppp/bp2pn2/8/2PP4/1P3NP1/P3PP1P/RNBQKB1R b KQkq - 0 5", + "hash": 18296379558272814096, + "name": "Queen's Indian: Nimzowitsch, 5.b3 " + }, + "E15m": { + "eco": "E15m", + "fen": "rn1qkb1r/p1p2ppp/bp2pn2/3p4/2PP4/1P3NP1/P3PP1P/RNBQKB1R w KQkq d6 0 6", + "hash": 8684046540480021046, + "name": "Queen's Indian: Nimzowitsch, 5.b3 d5" + }, + "E15n": { + "eco": "E15n", + "fen": "rn1qkb1r/pbpp1ppp/1p2pn2/8/2PP4/1P3NP1/P3PP1P/RNBQKB1R w KQkq - 1 6", + "hash": 8845052692310385788, + "name": "Queen's Indian: Nimzowitsch, 5.b3 Bb7" + }, + "E15o": { + "eco": "E15o", + "fen": "rn1qk2r/p1pp1ppp/bp2pn2/8/1bPP4/1P3NP1/P3PP1P/RNBQKB1R w KQkq - 1 6", + "hash": 3794464394808001586, + "name": "Queen's Indian: Nimzowitsch, 5.b3 Bb4+" + }, + "E15p": { + "eco": "E15p", + "fen": "rn1qk2r/p1ppbppp/bp2pn2/8/2PP4/1P3NP1/P2BPPBP/RN1QK2R b KQkq - 4 7", + "hash": 10200337358534039285, + "name": "Queen's Indian: Nimzowitsch, 5.b3 Bb4+ 6.Bd2 Be7 7.Bg2" + }, + "E15q": { + "eco": "E15q", + "fen": "rn1qk2r/p2pbppp/bpp1pn2/8/2PP4/1P3NP1/P2BPPBP/RN1QK2R w KQkq - 0 8", + "hash": 2302479774327604558, + "name": "Queen's Indian: Nimzowitsch, 5.b3 Bb4+ 6.Bd2 Be7 7.Bg2 c6" + }, + "E15r": { + "eco": "E15r", + "fen": "rn1qk2r/p2pbppp/bpp1pn2/8/2PP4/1PB2NP1/P3PPBP/RN1QK2R b KQkq - 1 8", + "hash": 10164676076935170234, + "name": "Queen's Indian: Nimzowitsch, 5.b3 Bb4+, Main Line" + }, + "E15s": { + "eco": "E15s", + "fen": "rn1qk2r/p3bppp/bpp1pn2/3pN3/2PP4/1PB3P1/P3PPBP/RN1QK2R b KQkq - 1 9", + "hash": 15367076679033349098, + "name": "Queen's Indian: Nimzowitsch, 5.b3 Bb4+, Main Line, 9.Ne5" + }, + "E15t": { + "eco": "E15t", + "fen": "rn1qkb1r/pbpp1ppp/1p2pn2/8/2PP4/5NP1/PP2PP1P/RNBQKB1R w KQkq - 1 5", + "hash": 1067272237275351576, + "name": "Queen's Indian: 4.g3 Bb7" + }, + "E15u": { + "eco": "E15u", + "fen": "rn1qkb1r/pb1p1ppp/1p2pn2/2p5/2PP4/5NP1/PP2PPBP/RNBQK2R w KQkq c6 0 6", + "hash": 6723386757490268444, + "name": "Queen's Indian: 4.g3 Bb7 5.Bg2 c5" + }, + "E15v": { + "eco": "E15v", + "fen": "rn1qkb1r/pb1p1ppp/1p3n2/2pp4/2P4N/6P1/PP2PPBP/RNBQK2R b KQkq - 1 7", + "hash": 16852781516583226669, + "name": "Queen's Indian: Rubinstein Variation" + }, + "E16a": { + "eco": "E16a", + "fen": "rn1qk2r/pbpp1ppp/1p2pn2/8/1bPP4/5NP1/PP2PPBP/RNBQK2R w KQkq - 3 6", + "hash": 8250308691353737795, + "name": "Queen's Indian: Capablanca Variation" + }, + "E16b": { + "eco": "E16b", + "fen": "rn1qk2r/pbpp1ppp/1p2pn2/8/1bPP4/5NP1/PP1NPPBP/R1BQK2R b KQkq - 4 6", + "hash": 3103055358496125555, + "name": "Queen's Indian: Capablanca, 6.Nbd2" + }, + "E16c": { + "eco": "E16c", + "fen": "rn1q1rk1/pbpp1ppp/1p2pn2/8/1bPP4/5NP1/PP1NPPBP/R1BQK2R w KQ - 5 7", + "hash": 2429878777377020824, + "name": "Queen's Indian: Capablanca, 6.Nbd2 O-O" + }, + "E16d": { + "eco": "E16d", + "fen": "rn1q1rk1/pbp2ppp/1p2pn2/3p4/1bPP4/5NP1/PP1NPPBP/R1BQ1RK1 w - d6 0 8", + "hash": 15755826800945974958, + "name": "Queen's Indian: Capablanca, 6.Nbd2 O-O 7.O-O d5" + }, + "E16e": { + "eco": "E16e", + "fen": "rn1qk2r/pbpp1ppp/1p2pn2/8/1bPP4/5NP1/PP1BPPBP/RN1QK2R b KQkq - 4 6", + "hash": 6625822817689825607, + "name": "Queen's Indian: Capablanca, 6.Bd2" + }, + "E16f": { + "eco": "E16f", + "fen": "rn1qk2r/1bpp1ppp/1p2pn2/p7/1bPP4/5NP1/PP1BPPBP/RN1QK2R w KQkq a6 0 7", + "hash": 15990333383884963287, + "name": "Queen's Indian: Capablanca, Yates Variation" + }, + "E16g": { + "eco": "E16g", + "fen": "rn1q1rk1/1bpp1ppp/1p2pn2/p7/1bPP4/5NP1/PP1BPPBP/RN1Q1RK1 w - - 2 8", + "hash": 12192517415743147820, + "name": "Queen's Indian: Capablanca, Yates, 7.O-O O-O" + }, + "E16h": { + "eco": "E16h", + "fen": "rn2k2r/pbppqppp/1p2pn2/8/1bPP4/5NP1/PP1BPPBP/RN1QK2R w KQkq - 5 7", + "hash": 13838569687654915885, + "name": "Queen's Indian: Capablanca, Nimzowitsch Variation" + }, + "E16i": { + "eco": "E16i", + "fen": "rn2k2r/pbppqppp/1p2pn2/8/2PP4/5NP1/PP1QPPBP/RN3RK1 b kq - 0 8", + "hash": 5494921225703718257, + "name": "Queen's Indian: Capablanca, Nimzowitsch, 7.O-O Bxd2 8.Qxd2" + }, + "E16j": { + "eco": "E16j", + "fen": "rn1qk2r/pbppbppp/1p2pn2/8/2PP4/5NP1/PP1BPPBP/RN1QK2R w KQkq - 5 7", + "hash": 9126715053321457917, + "name": "Queen's Indian: Capablanca, Riumin Variation" + }, + "E16k": { + "eco": "E16k", + "fen": "rn1qk2r/pbppbppp/1p2pn2/8/2PP4/2N2NP1/PP1BPPBP/R2QK2R b KQkq - 6 7", + "hash": 9601536273190556196, + "name": "Queen's Indian: Capablanca, Riumin, 7.Nc3" + }, + "E16l": { + "eco": "E16l", + "fen": "rn1q1rk1/pbppbppp/1p2pn2/8/2PP4/2N2NP1/PP1BPPBP/R2QK2R w KQ - 7 8", + "hash": 10346861716915420111, + "name": "Queen's Indian: Capablanca, Riumin, 7.Nc3 O-O" + }, + "E16m": { + "eco": "E16m", + "fen": "rn1q1rk1/pbppbppp/1p2pn2/8/2PP4/2N2NP1/PP1BPPBP/R2Q1RK1 b - - 8 8", + "hash": 17429516447904112863, + "name": "Queen's Indian: Capablanca, Riumin, 7.Nc3 O-O 8.O-O" + }, + "E16n": { + "eco": "E16n", + "fen": "rn1q1rk1/pbp1bppp/1p2pn2/3p4/2PP4/2N2NP1/PP1BPPBP/R2Q1RK1 w - d6 0 9", + "hash": 8397021745251577593, + "name": "Queen's Indian: Capablanca, Riumin, 7.Nc3 O-O 8.O-O d5" + }, + "E16o": { + "eco": "E16o", + "fen": "rn1qk2r/pbpp1ppp/1p2pn2/8/2PP4/5NP1/PP1bPPBP/RN1QK2R w KQkq - 0 7", + "hash": 6144608799737574638, + "name": "Queen's Indian: Capablanca, 6...Bxd2+" + }, + "E16p": { + "eco": "E16p", + "fen": "rn1qk2r/pbpp1ppp/1p2pn2/8/2PP4/5NP1/PP1QPPBP/RN2K2R b KQkq - 0 7", + "hash": 12234949750362572811, + "name": "Queen's Indian: Capablanca, 6...Bxd2+ 7.Qxd2" + }, + "E16q": { + "eco": "E16q", + "fen": "rn1q1rk1/pbpp1ppp/1p2pn2/8/2PP4/5NP1/PP1QPPBP/RN2K2R w KQ - 1 8", + "hash": 11773438906627023328, + "name": "Queen's Indian: Capablanca, 6...Bxd2+ 7.Qxd2 O-O" + }, + "E16r": { + "eco": "E16r", + "fen": "rn1q1rk1/pbpp1ppp/1p2pn2/8/2PP4/2N2NP1/PP1QPPBP/R3K2R b KQ - 2 8", + "hash": 6409942699002487609, + "name": "Queen's Indian: Capablanca, 6...Bxd2+ 7.Qxd2 O-O 8.Nc3" + }, + "E17a": { + "eco": "E17a", + "fen": "rn1qk2r/pbppbppp/1p2pn2/8/2PP4/5NP1/PP2PPBP/RNBQK2R w KQkq - 3 6", + "hash": 12678731240525364976, + "name": "Queen's Indian: 5.Bg2 Be7" + }, + "E17b": { + "eco": "E17b", + "fen": "rn1qk2r/pbppbppp/1p2pn2/8/2PP4/2N2NP1/PP2PPBP/R1BQK2R b KQkq - 4 6", + "hash": 6081264954949499945, + "name": "Queen's Indian: 6.Nc3" + }, + "E17c": { + "eco": "E17c", + "fen": "rn1q1rk1/pbppbppp/1p2pn2/8/2PP4/2N2NP1/PP2PPBP/R1BQK2R w KQ - 5 7", + "hash": 6830856683801155010, + "name": "Queen's Indian: 6.Nc3 O-O" + }, + "E17d": { + "eco": "E17d", + "fen": "rn1q1rk1/pbppbppp/1p2pn2/8/2PP4/2N2NP1/PPQ1PPBP/R1B1K2R b KQ - 6 7", + "hash": 17281826809050311078, + "name": "Queen's Indian: 6.Nc3 O-O 7.Qc2" + }, + "E17e": { + "eco": "E17e", + "fen": "rn1q1rk1/pb1pbppp/1p2pn2/2p5/2PP4/2N2NP1/PPQ1PPBP/R1B1K2R w KQ c6 0 8", + "hash": 694874055203037915, + "name": "Queen's Indian: 6.Nc3 O-O 7.Qc2 c5" + }, + "E17f": { + "eco": "E17f", + "fen": "rn1q1rk1/pbp1bppp/1p2pn2/3p4/2PP4/2N2NP1/PPQ1PPBP/R1B1K2R w KQ d6 0 8", + "hash": 7691941455019927424, + "name": "Queen's Indian: 6.Nc3 O-O 7.Qc2 d5" + }, + "E17g": { + "eco": "E17g", + "fen": "rn1qk2r/pbppbppp/1p2p3/8/2PPn3/2N2NP1/PP2PPBP/R1BQK2R w KQkq - 5 7", + "hash": 7956931308251410899, + "name": "Queen's Indian: 6.Nc3 Ne4" + }, + "E17h": { + "eco": "E17h", + "fen": "rn1qk2r/pbppbppp/1p2p3/8/2PPn3/2N2NP1/PP1BPPBP/R2QK2R b KQkq - 6 7", + "hash": 5179676595142728407, + "name": "Queen's Indian: Opovcensky Variation" + }, + "E17i": { + "eco": "E17i", + "fen": "rn1q1rk1/pbppbppp/1p2p3/8/2PPn3/2N2NP1/PP1BPPBP/R2QK2R w KQ - 7 8", + "hash": 5568988857841152828, + "name": "Queen's Indian: Opovcensky, 7...O-O" + }, + "E17j": { + "eco": "E17j", + "fen": "rn1qk2r/pbppb1pp/1p2p3/5p2/2PPn3/2N2NP1/PP1BPPBP/R2QK2R w KQkq f6 0 8", + "hash": 15244278959507715849, + "name": "Queen's Indian: Opovcensky, 7...f5" + }, + "E17k": { + "eco": "E17k", + "fen": "rn1qk2r/pbpp1ppp/1p2pb2/8/2PPn3/2N2NP1/PP1BPPBP/R2QK2R w KQkq - 7 8", + "hash": 7345540109720967734, + "name": "Queen's Indian: Opovcensky, 7...Bf6" + }, + "E17l": { + "eco": "E17l", + "fen": "rn1qk2r/pbppbppp/1p2pn2/8/2PP4/5NP1/PP2PPBP/RNBQ1RK1 b kq - 4 6", + "hash": 15097928347798906336, + "name": "Queen's Indian: 6.O-O" + }, + "E17m": { + "eco": "E17m", + "fen": "rn1qk2r/pbp1bppp/1p2pn2/3p4/2PP4/5NP1/PP2PPBP/RNBQ1RK1 w kq d6 0 7", + "hash": 6119476840379640774, + "name": "Queen's Indian: 6.O-O d5" + }, + "E17n": { + "eco": "E17n", + "fen": "rn1q1rk1/pbppbppp/1p2pn2/8/2PP4/5NP1/PP2PPBP/RNBQ1RK1 w - - 5 7", + "hash": 15793684504536894475, + "name": "Queen's Indian: 6.O-O O-O" + }, + "E17o": { + "eco": "E17o", + "fen": "rn1q1rk1/pbppbppp/1p2pn2/8/2PP4/5NP1/PPQ1PPBP/RNB2RK1 b - - 6 7", + "hash": 7653588831011434607, + "name": "Queen's Indian: 6.O-O O-O 7.Qc2" + }, + "E17p": { + "eco": "E17p", + "fen": "rn1q1rk1/pbppbppp/1p2pn2/8/2PP4/5NP1/PP2PPBP/RNBQR1K1 b - - 6 7", + "hash": 6888958129345390367, + "name": "Queen's Indian: 6.O-O O-O 7.Re1" + }, + "E17q": { + "eco": "E17q", + "fen": "rn1q1rk1/pbp1bppp/1p2pn2/3p4/2PP4/5NP1/PP2PPBP/RNBQR1K1 w - d6 0 8", + "hash": 15776211748203243833, + "name": "Queen's Indian: 6.O-O O-O 7.Re1 d5" + }, + "E17r": { + "eco": "E17r", + "fen": "rn1q1rk1/pbppbppp/1p2pn2/8/2PP4/1P3NP1/P3PPBP/RNBQ1RK1 b - - 0 7", + "hash": 6307309093674428262, + "name": "Queen's Indian: Euwe Variation" + }, + "E17s": { + "eco": "E17s", + "fen": "rn1q1rk1/pb1pbppp/1p2pn2/2p5/2PP4/1P3NP1/P3PPBP/RNBQ1RK1 w - c6 0 8", + "hash": 12824494285349530651, + "name": "Queen's Indian: Euwe, 7...c5" + }, + "E17t": { + "eco": "E17t", + "fen": "rn1q1rk1/pbp1bppp/1p2pn2/3p4/2PP4/1P3NP1/P3PPBP/RNBQ1RK1 w - d6 0 8", + "hash": 15195763208370153792, + "name": "Queen's Indian: Euwe, 7...d5" + }, + "E17u": { + "eco": "E17u", + "fen": "rn1q1rk1/pbppbppp/1p2pn2/3P4/2P5/5NP1/PP2PPBP/RNBQ1RK1 b - - 0 7", + "hash": 7000338966048528982, + "name": "Queen's Indian: Pomar Variation" + }, + "E17v": { + "eco": "E17v", + "fen": "rn1q1rk1/pbppbppp/1p3n2/3p4/2PN4/6P1/PP2PPBP/RNBQ1RK1 b - - 1 8", + "hash": 2329892608171090514, + "name": "Queen's Indian: Pomar, Taimanov Variation" + }, + "E17w": { + "eco": "E17w", + "fen": "rn1q1rk1/pbppbppp/1p3n2/3p4/2P4N/6P1/PP2PPBP/RNBQ1RK1 b - - 1 8", + "hash": 8034755700098914362, + "name": "Queen's Indian: Pomar, Polugaevsky Variation" + }, + "E17x": { + "eco": "E17x", + "fen": "rn1q1rk1/pb1pbppp/1pp5/3n4/7N/6P1/PP2PPBP/RNBQ1RK1 w - - 0 10", + "hash": 7799992465210671808, + "name": "Queen's Indian: Pomar, Polugaevsky, 8...c6 9.cxd5 Nxd5" + }, + "E17y": { + "eco": "E17y", + "fen": "rn1q1rk1/pbnpbppp/1pp5/5N2/8/6P1/PP2PPBP/RNBQ1RK1 w - - 2 11", + "hash": 1277876482160018657, + "name": "Queen's Indian: Pomar, Polugaevsky, 8...c6 9.cxd5 Nxd5 10.Nf5 Nc7" + }, + "E17z": { + "eco": "E17z", + "fen": "rn1q1rk1/pbnpbppp/1pp5/5N2/4P3/6P1/PP3PBP/RNBQ1RK1 b - e3 0 11", + "hash": 15401431851591137771, + "name": "Queen's Indian: Pomar, Polugaevsky, 8...c6 9.cxd5 Nxd5 10.Nf5 Nc7 11.e4" + }, + "E18a": { + "eco": "E18a", + "fen": "rn1q1rk1/pbppbppp/1p2pn2/8/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 6 7", + "hash": 2358031062763949778, + "name": "Queen's Indian: 7.Nc3" + }, + "E18b": { + "eco": "E18b", + "fen": "rn1q1rk1/pb1pbppp/1p2pn2/2p5/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - c6 0 8", + "hash": 14323902492220769711, + "name": "Queen's Indian: 7.Nc3 c5" + }, + "E18c": { + "eco": "E18c", + "fen": "rn1q1rk1/pbp1bppp/1p1ppn2/8/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 0 8", + "hash": 1802564255318902719, + "name": "Queen's Indian: 7.Nc3 d6" + }, + "E18d": { + "eco": "E18d", + "fen": "r2q1rk1/pbppbppp/np2pn2/8/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 7 8", + "hash": 7942594177477268078, + "name": "Queen's Indian: 7.Nc3 Na6" + }, + "E18e": { + "eco": "E18e", + "fen": "rn1q1rk1/pbp1bppp/1p2pn2/3p4/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - d6 0 8", + "hash": 11948976521570779380, + "name": "Queen's Indian: 7.Nc3 d5" + }, + "E18f": { + "eco": "E18f", + "fen": "rn1q1rk1/pbp1bppp/1p3n2/3p4/3P4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 0 9", + "hash": 10731243242002469922, + "name": "Queen's Indian: 7.Nc3 d5 8.cxd5 exd5" + }, + "E18g": { + "eco": "E18g", + "fen": "rn1q1rk1/pbp1bppp/1p2pn2/3pN3/2PP4/2N3P1/PP2PPBP/R1BQ1RK1 b - - 1 8", + "hash": 8713221842413348226, + "name": "Queen's Indian: 7.Nc3 d5 8.Ne5" + }, + "E18h": { + "eco": "E18h", + "fen": "rn1q1rk1/pb2bppp/1pp1pn2/3pN3/2PP4/2N3P1/PP2PPBP/R1BQ1RK1 w - - 0 9", + "hash": 16902423877307086393, + "name": "Queen's Indian: 7.Nc3 d5 8.Ne5 c6" + }, + "E18i": { + "eco": "E18i", + "fen": "r2q1rk1/pbpnbppp/1p2pn2/3pN3/2PP4/2N3P1/PP2PPBP/R1BQ1RK1 w - - 2 9", + "hash": 5406833329533093966, + "name": "Queen's Indian: 7.Nc3 d5 8.Ne5 Nbd7" + }, + "E18j": { + "eco": "E18j", + "fen": "r2q1rk1/pbp1bppp/np2pn2/3pN3/2PP4/2N3P1/PP2PPBP/R1BQ1RK1 w - - 2 9", + "hash": 3921296660177058110, + "name": "Queen's Indian: 7.Nc3 d5 8.Ne5 Na6" + }, + "E18k": { + "eco": "E18k", + "fen": "r2q1rk1/pbp1bppp/np3n2/3pN3/3P4/2N3P1/PP2PPBP/R1BQ1RK1 w - - 0 10", + "hash": 528465424252972520, + "name": "Queen's Indian: 7.Nc3 d5 8.Ne5 Na6 9.cxd5 exd5" + }, + "E18l": { + "eco": "E18l", + "fen": "rn1q1rk1/pbppbppp/1p2p3/8/2PPn3/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 7 8", + "hash": 1923358500586013480, + "name": "Queen's Indian: 7.Nc3 Ne4" + }, + "E18m": { + "eco": "E18m", + "fen": "rn1q1rk1/pbppbppp/1p2p3/8/2PPn3/2N2NP1/PP1BPPBP/R2Q1RK1 b - - 8 8", + "hash": 3691965330395572268, + "name": "Queen's Indian: 7.Nc3 Ne4 8.Bd2" + }, + "E18n": { + "eco": "E18n", + "fen": "rn1q1rk1/pbp1bppp/1p2p3/3p4/2PPn3/2N2NP1/PP1BPPBP/R2Q1RK1 w - d6 0 9", + "hash": 13138791203080070666, + "name": "Queen's Indian: 7.Nc3 Ne4 8.Bd2 d5" + }, + "E18o": { + "eco": "E18o", + "fen": "rn1q1rk1/pbppb1pp/1p2p3/5p2/2PPn3/2N2NP1/PP1BPPBP/R2Q1RK1 w - f6 0 9", + "hash": 12057007503288894962, + "name": "Queen's Indian: 7.Nc3 Ne4 8.Bd2 f5" + }, + "E18p": { + "eco": "E18p", + "fen": "rn1q1rk1/pbppb1pp/1p2p3/3P1p2/2P1n3/2N2NP1/PP1BPPBP/R2Q1RK1 b - - 0 9", + "hash": 2115384652086088623, + "name": "Queen's Indian: 7.Nc3 Ne4 8.Bd2 f5 9.d5" + }, + "E18q": { + "eco": "E18q", + "fen": "rn1q1rk1/pbpp1ppp/1p2pb2/8/2PPn3/2N2NP1/PP1BPPBP/R2Q1RK1 w - - 9 9", + "hash": 1237662292005841101, + "name": "Queen's Indian: 7.Nc3 Ne4 8.Bd2 Bf6" + }, + "E18r": { + "eco": "E18r", + "fen": "rn1q1rk1/pbpp1ppp/1p2pb2/8/2PPn3/2N2NP1/PP1BPPBP/2RQ1RK1 b - - 10 9", + "hash": 11516677891819355523, + "name": "Queen's Indian: 7.Nc3 Ne4 8.Bd2 Bf6 9.Rc1" + }, + "E18s": { + "eco": "E18s", + "fen": "rn1q1rk1/pbppbppp/1p2p3/8/2PPN3/5NP1/PP2PPBP/R1BQ1RK1 b - - 0 8", + "hash": 17003110721935502012, + "name": "Queen's Indian: 7.Nc3 Ne4 8.Nxe4" + }, + "E18t": { + "eco": "E18t", + "fen": "rn1q1rk1/p1ppbppp/1p2p3/8/2PPb3/6P1/PP2PPBP/R1BQNRK1 b - - 1 9", + "hash": 9852174397741689749, + "name": "Queen's Indian: 7.Nc3 Ne4 8.Nxe4 Bxe4 9.Ne1" + }, + "E18u": { + "eco": "E18u", + "fen": "rn1q1rk1/p1ppbppp/1p2p3/8/2PP4/6P1/PP2PPNP/R1BQ1RK1 b - - 0 10", + "hash": 4256694342979159980, + "name": "Queen's Indian: 7.Nc3 Ne4 8.Nxe4 Bxe4 9.Ne1 Bxg2 10.Nxg2" + }, + "E18v": { + "eco": "E18v", + "fen": "rn1q1rk1/p1p1bppp/1p2p3/3p4/Q1PP4/6P1/PP2PPNP/R1B2RK1 b - - 1 11", + "hash": 7844232237877476337, + "name": "Queen's Indian: 7.Nc3 Ne4 8.Nxe4 Bxe4 9.Ne1 Bxg2 10.Nxg2 d5 11.Qa4" + }, + "E18w": { + "eco": "E18w", + "fen": "rn3rk1/p1pqbppp/1p2p3/3p4/Q1PP4/6P1/PP2PPNP/R1B2RK1 w - - 2 12", + "hash": 8164756186063466174, + "name": "Queen's Indian: 7.Nc3 Ne4 8.Nxe4 Bxe4 9.Ne1 Bxg2 10.Nxg2 d5 11.Qa4 Qd7" + }, + "E18x": { + "eco": "E18x", + "fen": "rn1q1rk1/p1p1bppp/1p2p3/8/Q1pP4/6P1/PP2PPNP/R1B2RK1 w - - 0 12", + "hash": 13752434819019855122, + "name": "Queen's Indian: 7.Nc3 Ne4 8.Nxe4 Bxe4 9.Ne1 Bxg2 10.Nxg2 d5 11.Qa4 dxc4" + }, + "E18y": { + "eco": "E18y", + "fen": "rn1q1rk1/pbppbppp/1p2p3/8/2PPn3/2N2NP1/PPQ1PPBP/R1B2RK1 b - - 8 8", + "hash": 12369231212571426636, + "name": "Queen's Indian: Old Main Line, 8.Qc2" + }, + "E18z": { + "eco": "E18z", + "fen": "rn1q1rk1/pbppbppp/1p2p3/8/2PP4/2P2NP1/P1Q1PPBP/R1B2RK1 b - - 0 9", + "hash": 11156358608534991192, + "name": "Queen's Indian: Old Main Line, 8.Qc2 Nxc3 9.bxc3" + }, + "E19a": { + "eco": "E19a", + "fen": "rn1q1rk1/pbppbppp/1p2p3/8/2PP4/2Q2NP1/PP2PPBP/R1B2RK1 b - - 0 9", + "hash": 2959044314191540165, + "name": "Queen's Indian: Old Main Line, 9.Qxc3" + }, + "E19b": { + "eco": "E19b", + "fen": "rn1q1rk1/pbp1bppp/1p1pp3/8/2PP4/2Q2NP1/PP2PPBP/R1B2RK1 w - - 0 10", + "hash": 1200830806428149416, + "name": "Queen's Indian: Old Main Line, 9.Qxc3 d6" + }, + "E19c": { + "eco": "E19c", + "fen": "rn1q1rk1/pbp1bppp/1p1pp3/8/2PP4/1PQ2NP1/P3PPBP/R1B2RK1 b - - 0 10", + "hash": 11244455919644544453, + "name": "Queen's Indian: Old Main Line, 9.Qxc3 d6 10.b3" + }, + "E19d": { + "eco": "E19d", + "fen": "rn1q1rk1/p1ppbppp/1p2p3/8/2PPb3/2Q2NP1/PP2PPBP/R1B2RK1 w - - 1 10", + "hash": 4625071689893949024, + "name": "Queen's Indian: Old Main Line, 9.Qxc3 Be4" + }, + "E19e": { + "eco": "E19e", + "fen": "rn1q1rk1/p1ppbppp/1p2p3/8/2PPb3/2Q3P1/PP2PPBP/R1B1NRK1 b - - 2 10", + "hash": 15511268697236272515, + "name": "Queen's Indian: Old Main Line, 9.Qxc3 Be4 10.Ne1" + }, + "E19f": { + "eco": "E19f", + "fen": "rn1q1rk1/pbppb1pp/1p2p3/5p2/2PP4/2Q2NP1/PP2PPBP/R1B2RK1 w - f6 0 10", + "hash": 13654849997740343835, + "name": "Queen's Indian: Old Main Line, 9.Qxc3 f5" + }, + "E19g": { + "eco": "E19g", + "fen": "rn1q1rk1/pbppb1pp/1p2p3/5p2/2PP4/2Q2NP1/PP2PPBP/R1BR2K1 b - - 1 10", + "hash": 5791054610407584788, + "name": "Queen's Indian: Old Main Line, 9.Qxc3 f5 10.Rd1" + }, + "E19h": { + "eco": "E19h", + "fen": "rn1q1rk1/pbppb1pp/1p2p3/5p2/2PP4/1PQ2NP1/P3PPBP/R1B2RK1 b - - 0 10", + "hash": 3592084615701195126, + "name": "Queen's Indian: Old Main Line, 9.Qxc3 f5 10.b3" + }, + "E19i": { + "eco": "E19i", + "fen": "rn1q1rk1/pbp3pp/1p1ppb2/5p2/2PP4/1PQ2NP1/PB2PPBP/R4RK1 w - - 0 12", + "hash": 16865602566149995541, + "name": "Queen's Indian: Old Main Line, 9.Qxc3 f5 10.b3 Bf6 11.Bb2 d6" + }, + "E19j": { + "eco": "E19j", + "fen": "rn1q1rk1/pb1pbppp/1p2p3/2p5/2PP4/2Q2NP1/PP2PPBP/R1B2RK1 w - c6 0 10", + "hash": 14943350995911025848, + "name": "Queen's Indian: Old Main Line, 9.Qxc3 c5" + }, + "E19k": { + "eco": "E19k", + "fen": "rn1q1rk1/pb1pbppp/1p2p3/2p5/2PP4/1PQ2NP1/P3PPBP/R1B2RK1 b - - 0 10", + "hash": 4883893050093129685, + "name": "Queen's Indian: Old Main Line, 9.Qxc3 c5 10.b3" + }, + "E19l": { + "eco": "E19l", + "fen": "rn1q1rk1/pb1pbppp/1p2p3/2p5/2PP4/2Q2NP1/PP2PPBP/R1BR2K1 b - - 1 10", + "hash": 2468889911188804279, + "name": "Queen's Indian: Old Main Line, 9.Qxc3 c5 10.Rd1" + }, + "E19m": { + "eco": "E19m", + "fen": "rn1q1rk1/pb2bppp/1p1pp3/2p5/2PP4/2Q2NP1/PP2PPBP/R1BR2K1 w - - 0 11", + "hash": 2015875589164768218, + "name": "Queen's Indian: Old Main Line, 9.Qxc3 c5 10.Rd1 d6" + }, + "E19n": { + "eco": "E19n", + "fen": "rn1q1rk1/pb2bppp/1p1pp3/2p5/2PP4/1PQ2NP1/P3PPBP/R1BR2K1 b - - 0 11", + "hash": 10907635276461469879, + "name": "Queen's Indian: Old Main Line, 9.Qxc3 c5 10.Rd1 d6 11.b3" + }, + "E19o": { + "eco": "E19o", + "fen": "rn1q1rk1/pb3ppp/1p1ppb2/2p5/2PP4/1PQ2NP1/P3PPBP/R1BR2K1 w - - 1 12", + "hash": 13064597109186965590, + "name": "Queen's Indian: Old Main Line, 9.Qxc3 c5 10.Rd1 d6 11.b3 Bf6" + }, + "E19p": { + "eco": "E19p", + "fen": "rn3rk1/pb2qppp/1p1ppb2/2p5/2PP4/1PQ2NP1/PB2PPBP/R2R2K1 w - - 3 13", + "hash": 17207674385898341075, + "name": "Queen's Indian: Old Main Line, 9.Qxc3 c5 10.Rd1 d6 11.b3 Bf6 12.Bb2 Qe7" + }, + "E20": { + "eco": "E20", + "fen": "rnbqk2r/pppp1ppp/4pn2/8/1bPP4/2N5/PP2PPPP/R1BQKBNR w KQkq - 2 4", + "hash": 1180666540095889894, + "name": "Nimzo-Indian Defence" + }, + "E21": { + "eco": "E21", + "fen": "rnbqk2r/pppp1ppp/4pn2/8/1bPP4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 3 4", + "hash": 14629517878789701851, + "name": "Nimzo-Indian: Three Knights" + }, + "E22": { + "eco": "E22", + "fen": "rnbqk2r/pppp1ppp/4pn2/8/1bPP4/1QN5/PP2PPPP/R1B1KBNR b KQkq - 3 4", + "hash": 3070102882874378496, + "name": "Nimzo-Indian: Spielmann Variation" + }, + "E23": { + "eco": "E23", + "fen": "r1bqk2r/pp1p1ppp/2n1pn2/2P5/1bP5/1QN5/PP2PPPP/R1B1KBNR w KQkq - 1 6", + "hash": 1793586942414925842, + "name": "Nimzo-Indian: Spielmann, 4...c5 5.dxc5 Nc6" + }, + "E24": { + "eco": "E24", + "fen": "rnbqk2r/pppp1ppp/4pn2/8/1bPP4/P1N5/1P2PPPP/R1BQKBNR b KQkq - 0 4", + "hash": 15852284554440503206, + "name": "Nimzo-Indian: Smisch" + }, + "E25": { + "eco": "E25", + "fen": "rnbqk2r/pp3ppp/4pn2/2pP4/3P4/P1P2P2/4P1PP/R1BQKBNR b KQkq - 0 7", + "hash": 12867417049842150619, + "name": "Nimzo-Indian: Smisch, 5...c5 6.f3 d5 7.cxd5" + }, + "E26": { + "eco": "E26", + "fen": "rnbqk2r/pp1p1ppp/4pn2/2p5/2PP4/P1P1P3/5PPP/R1BQKBNR b KQkq - 0 6", + "hash": 18036392020610273589, + "name": "Nimzo-Indian: Smisch, 5...c5 6.e3" + }, + "E27": { + "eco": "E27", + "fen": "rnbq1rk1/pppp1ppp/4pn2/8/2PP4/P1P5/4PPPP/R1BQKBNR w KQ - 1 6", + "hash": 13527225930844158727, + "name": "Nimzo-Indian: Smisch, 5...O-O" + }, + "E28": { + "eco": "E28", + "fen": "rnbq1rk1/pppp1ppp/4pn2/8/2PP4/P1P1P3/5PPP/R1BQKBNR b KQ - 0 6", + "hash": 1627803748211667875, + "name": "Nimzo-Indian: Smisch, 5...O-O 6.e3" + }, + "E29": { + "eco": "E29", + "fen": "r1bq1rk1/pp1p1ppp/2n1pn2/2p5/2PP4/P1PBP3/5PPP/R1BQK1NR w KQ - 2 8", + "hash": 1010695331855392686, + "name": "Nimzo-Indian: Smisch, 5...O-O 6.e3 c5 7.Bd3 Nc6" + }, + "E30": { + "eco": "E30", + "fen": "rnbqk2r/pppp1ppp/4pn2/6B1/1bPP4/2N5/PP2PPPP/R2QKBNR b KQkq - 3 4", + "hash": 15436306254104902190, + "name": "Nimzo-Indian: Leningrad" + }, + "E31a": { + "eco": "E31a", + "fen": "rnbqk2r/pp3pp1/3ppn1p/2pP4/1bP4B/2N5/PP2PPPP/R2QKBNR w KQkq - 0 7", + "hash": 8900205748586513901, + "name": "Nimzo-Indian: Leningrad, Main Line" + }, + "E31b": { + "eco": "E31b", + "fen": "rnbqk2r/pp3pp1/3ppn1p/2pP4/1bP4B/2N1P3/PP3PPP/R2QKBNR b KQkq - 0 7", + "hash": 15469481313592675657, + "name": "Nimzo-Indian: Leningrad, Main Line, 7.e3" + }, + "E31c": { + "eco": "E31c", + "fen": "rnbqk2r/pp3p2/3ppn1p/2pP2p1/1bP4B/2N1P3/PP3PPP/R2QKBNR w KQkq g6 0 8", + "hash": 6263754563279975107, + "name": "Nimzo-Indian: Leningrad, Main Line, 7.e3 g5" + }, + "E31d": { + "eco": "E31d", + "fen": "rnbqk2r/pp3pp1/3p1n1p/2pp4/1bP4B/2N1P3/PP3PPP/R2QKBNR w KQkq - 0 8", + "hash": 16841908511751916930, + "name": "Nimzo-Indian: Leningrad, Main Line, 7.e3 exd5" + }, + "E31e": { + "eco": "E31e", + "fen": "rnbqk2r/pp3pp1/3p1n1p/2pPp3/1bP4B/2N1P3/PP3PPP/R2QKBNR w KQkq - 0 8", + "hash": 15165730570012254244, + "name": "Nimzo-Indian: Leningrad, Main Line, 7.e3 e5" + }, + "E31f": { + "eco": "E31f", + "fen": "rnb1k2r/pp2qpp1/3ppn1p/2pP4/1bP4B/2N1P3/PP3PPP/R2QKBNR w KQkq - 1 8", + "hash": 5571370811123606307, + "name": "Nimzo-Indian: Leningrad, Main Line, 7.e3 Qe7" + }, + "E31g": { + "eco": "E31g", + "fen": "rnbq1rk1/pp3pp1/3ppn1p/2pP4/1bP4B/2N1P3/PP3PPP/R2QKBNR w KQ - 1 8", + "hash": 15854446386358903970, + "name": "Nimzo-Indian: Leningrad, Main Line, 7.e3 O-O" + }, + "E31h": { + "eco": "E31h", + "fen": "rnbqk2r/pp3pp1/3ppn1p/2pP4/2P4B/2b1P3/PP3PPP/R2QKBNR w KQkq - 0 8", + "hash": 17840966274637913923, + "name": "Nimzo-Indian: Leningrad, Main Line, 7.e3 Bxc3+" + }, + "E31i": { + "eco": "E31i", + "fen": "rnb1k2r/pp2qpp1/3ppn1p/2pP4/2P4B/2P1P3/P4PPP/R2QKBNR w KQkq - 1 9", + "hash": 2863564837691334249, + "name": "Nimzo-Indian: Leningrad, Main Line, 8...Qe7" + }, + "E31j": { + "eco": "E31j", + "fen": "rnbqk2r/pp3pp1/3p1n1p/2pPp3/2P4B/2P1P3/P4PPP/R2QKBNR w KQkq - 0 9", + "hash": 13302347616499555694, + "name": "Nimzo-Indian: Leningrad, Main Line, 8...e5" + }, + "E31k": { + "eco": "E31k", + "fen": "rnbqk2r/pp3pp1/3p1n1p/2pPp3/2P4B/2P1PN2/P4PPP/R2QKB1R b KQkq - 1 9", + "hash": 7205621259405507667, + "name": "Nimzo-Indian: Leningrad, Main Line, 8...e5 9.Nf3" + }, + "E31l": { + "eco": "E31l", + "fen": "rnbqk2r/pp3pp1/3p1n1p/2pPp3/2P4B/2P1P3/P1Q2PPP/R3KBNR b KQkq - 1 9", + "hash": 685141638689743114, + "name": "Nimzo-Indian: Leningrad, Main Line, 8...e5 9.Qc2" + }, + "E31m": { + "eco": "E31m", + "fen": "rnbqk2r/pp3pp1/3p1n1p/2pPp3/2P4B/2PBP3/P4PPP/R2QK1NR b KQkq - 1 9", + "hash": 17120098699271773981, + "name": "Nimzo-Indian: Leningrad, Main Line, 8...e5 9.Bd3" + }, + "E31n": { + "eco": "E31n", + "fen": "rnbqk2r/pp3pp1/3p1n1p/2pPp3/2P4B/2P1PP2/P5PP/R2QKBNR b KQkq - 0 9", + "hash": 15432297276884824607, + "name": "Nimzo-Indian: Leningrad, Main Line, 8...e5 9.f3" + }, + "E31o": { + "eco": "E31o", + "fen": "r1bqk2r/pp1n1pp1/3p1n1p/2pPp3/2P4B/2P1PP2/P5PP/R2QKBNR w KQkq - 1 10", + "hash": 16558033519156813779, + "name": "Nimzo-Indian: Leningrad, Main Line, 8...e5 9.f3 Nbd7" + }, + "E32a": { + "eco": "E32a", + "fen": "rnbqk2r/pppp1ppp/4pn2/8/1bPP4/2N5/PPQ1PPPP/R1B1KBNR b KQkq - 3 4", + "hash": 11636144662482050434, + "name": "Nimzo-Indian: Classical Variation" + }, + "E32b": { + "eco": "E32b", + "fen": "rnbqk2r/p1pp1ppp/1p2pn2/8/1bPP4/2N5/PPQ1PPPP/R1B1KBNR w KQkq - 0 5", + "hash": 14560888542752369177, + "name": "Nimzo-Indian: Classical, 4...b6" + }, + "E32c": { + "eco": "E32c", + "fen": "rnbqk2r/ppp2ppp/3ppn2/8/1bPP4/2N5/PPQ1PPPP/R1B1KBNR w KQkq - 0 5", + "hash": 11007208202926593263, + "name": "Nimzo-Indian: Classical, 4...d6" + }, + "E32d": { + "eco": "E32d", + "fen": "rnbq1rk1/pppp1ppp/4pn2/8/1bPP4/2N5/PPQ1PPPP/R1B1KBNR w KQ - 4 5", + "hash": 12381255592077243497, + "name": "Nimzo-Indian: Classical, 4...O-O" + }, + "E32e": { + "eco": "E32e", + "fen": "rnbq1rk1/pppp1ppp/4pn2/6B1/1bPP4/2N5/PPQ1PPPP/R3KBNR b KQ - 5 5", + "hash": 7892938134007050145, + "name": "Nimzo-Indian: Classical, 4...O-O 5.Bg5" + }, + "E32f": { + "eco": "E32f", + "fen": "rnbq1rk1/pppp1ppp/4pn2/8/1bPPP3/2N5/PPQ2PPP/R1B1KBNR b KQ e3 0 5", + "hash": 8058069019125975395, + "name": "Nimzo-Indian: Classical, 4...O-O 5.e4" + }, + "E32g": { + "eco": "E32g", + "fen": "rnbq1rk1/pppp1ppp/4pn2/8/1bPP4/2N2N2/PPQ1PPPP/R1B1KB1R b KQ - 5 5", + "hash": 8122209676381345108, + "name": "Nimzo-Indian: Classical, 4...O-O 5.Nf3" + }, + "E32h": { + "eco": "E32h", + "fen": "rnbq1rk1/pppp1ppp/4pn2/8/1bPP4/P1N5/1PQ1PPPP/R1B1KBNR b KQ - 0 5", + "hash": 6939835348152859177, + "name": "Nimzo-Indian: Classical, 4...O-O 5.a3" + }, + "E32i": { + "eco": "E32i", + "fen": "rnbq1rk1/p1pp1ppp/4pn2/1p6/2PP4/P1Q5/1P2PPPP/R1B1KBNR w KQ b6 0 7", + "hash": 15664854805896979651, + "name": "Nimzo-Indian: Classical, Adorjan Gambit" + }, + "E32j": { + "eco": "E32j", + "fen": "rnbq1rk1/ppp2ppp/3ppn2/8/2PP4/P1Q5/1P2PPPP/R1B1KBNR w KQ - 0 7", + "hash": 9284806181662658707, + "name": "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...d6" + }, + "E32k": { + "eco": "E32k", + "fen": "rnbq1rk1/pppp1ppp/4p3/8/2PPn3/P1Q5/1P2PPPP/R1B1KBNR w KQ - 1 7", + "hash": 9468986412203987972, + "name": "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...Ne4" + }, + "E32l": { + "eco": "E32l", + "fen": "rnbq1rk1/p1pp1ppp/1p2pn2/8/2PP4/P1Q5/1P2PPPP/R1B1KBNR w KQ - 0 7", + "hash": 15134801154340384357, + "name": "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6" + }, + "E32m": { + "eco": "E32m", + "fen": "rnbq1rk1/p1pp1ppp/1p2pn2/8/2PP4/P1Q2N2/1P2PPPP/R1B1KB1R b KQ - 1 7", + "hash": 679323914417409880, + "name": "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6 7.Nf3" + }, + "E32n": { + "eco": "E32n", + "fen": "rnbq1rk1/p1pp1ppp/1p2pn2/6B1/2PP4/P1Q5/1P2PPPP/R3KBNR b KQ - 1 7", + "hash": 1464736683913885101, + "name": "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6 7.Bg5" + }, + "E32o": { + "eco": "E32o", + "fen": "rn1q1rk1/p1pp1ppp/bp2pn2/6B1/2PP4/P1Q5/1P2PPPP/R3KBNR w KQ - 2 8", + "hash": 15799639750791051091, + "name": "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6 7.Bg5 Ba6" + }, + "E32p": { + "eco": "E32p", + "fen": "rn1q1rk1/pbpp1ppp/1p2pn2/6B1/2PP4/P1Q5/1P2PPPP/R3KBNR w KQ - 2 8", + "hash": 11872476823494924854, + "name": "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6 7.Bg5 Bb7" + }, + "E32q": { + "eco": "E32q", + "fen": "rn1q1rk1/pbpp1ppp/1p2pn2/6B1/2PP4/P1Q2P2/1P2P1PP/R3KBNR b KQ - 0 8", + "hash": 14587833147320431943, + "name": "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6 7.Bg5 Bb7 8.f3" + }, + "E32r": { + "eco": "E32r", + "fen": "rn1q1rk1/pbpp1pp1/1p2pn1p/6B1/2PP4/P1Q2P2/1P2P1PP/R3KBNR w KQ - 0 9", + "hash": 6378556758388358226, + "name": "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6 7.Bg5 Bb7 8.f3 h6" + }, + "E32s": { + "eco": "E32s", + "fen": "rn1q1rk1/pbpp1ppp/1p2pn2/6B1/2PP4/P1Q1P3/1P3PPP/R3KBNR b KQ - 0 8", + "hash": 715721006792479378, + "name": "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6 7.Bg5 Bb7 8.e3" + }, + "E32t": { + "eco": "E32t", + "fen": "rn1q1rk1/pbp2ppp/1p1ppn2/6B1/2PP4/P1Q1P3/1P3PPP/R3KBNR w KQ - 0 9", + "hash": 3482503070298856447, + "name": "Nimzo-Indian: Classical, 4...O-O 5.a3, 6...b6 7.Bg5 Bb7 8.e3 d6" + }, + "E33": { + "eco": "E33", + "fen": "r1bqk2r/pppp1ppp/2n1pn2/8/1bPP4/2N5/PPQ1PPPP/R1B1KBNR w KQkq - 4 5", + "hash": 762862098804734081, + "name": "Nimzo-Indian: Classical, 4...Nc6" + }, + "E34": { + "eco": "E34", + "fen": "rnbqk2r/ppp2ppp/4pn2/3p4/1bPP4/2N5/PPQ1PPPP/R1B1KBNR w KQkq d6 0 5", + "hash": 2599071765067502500, + "name": "Nimzo-Indian: Classical, Noa Variation" + }, + "E35": { + "eco": "E35", + "fen": "rnbqk2r/ppp2ppp/5n2/3p4/1b1P4/2N5/PPQ1PPPP/R1B1KBNR w KQkq - 0 6", + "hash": 1526583892611647346, + "name": "Nimzo-Indian: Classical, Noa, Exchange" + }, + "E36": { + "eco": "E36", + "fen": "rnbqk2r/ppp2ppp/4pn2/3p4/1bPP4/P1N5/1PQ1PPPP/R1B1KBNR b KQkq - 0 5", + "hash": 17261717764797898212, + "name": "Nimzo-Indian: Classical, Noa, 5.a3" + }, + "E37": { + "eco": "E37", + "fen": "rnbqk2r/ppp2ppp/4p3/3p4/2PPn3/P7/1PQ1PPPP/R1B1KBNR b KQkq - 2 7", + "hash": 16305785612785471931, + "name": "Nimzo-Indian: Classical, Noa, Main Line, 7.Qc2" + }, + "E38a": { + "eco": "E38a", + "fen": "rnbqk2r/pp1p1ppp/4pn2/2p5/1bPP4/2N5/PPQ1PPPP/R1B1KBNR w KQkq c6 0 5", + "hash": 5118959200894703359, + "name": "Nimzo-Indian: Classical, 4...c5" + }, + "E38b": { + "eco": "E38b", + "fen": "rnbqk2r/pp1p1ppp/4pn2/2p5/1bPP4/2N2N2/PPQ1PPPP/R1B1KB1R b KQkq - 1 5", + "hash": 11272191781995657154, + "name": "Nimzo-Indian: Classical, 4...c5 5.Nf3" + }, + "E38c": { + "eco": "E38c", + "fen": "rnbqk2r/pp1p1ppp/4pn2/2p5/1bPP4/2N1P3/PPQ2PPP/R1B1KBNR b KQkq - 0 5", + "hash": 16872578738101182043, + "name": "Nimzo-Indian: Classical, 4...c5 5.e3" + }, + "E38d": { + "eco": "E38d", + "fen": "rnbqk2r/pp1p1ppp/4pn2/2P5/1bP5/2N5/PPQ1PPPP/R1B1KBNR b KQkq - 0 5", + "hash": 4100827169814970771, + "name": "Nimzo-Indian: Classical, 4...c5 5.dxc5" + }, + "E38e": { + "eco": "E38e", + "fen": "rnbqk2r/pp1p1ppp/4pn2/2b5/2P5/2N5/PPQ1PPPP/R1B1KBNR w KQkq - 0 6", + "hash": 11343798722698162800, + "name": "Nimzo-Indian: Classical, 4...c5 5.dxc5 Bxc5" + }, + "E38f": { + "eco": "E38f", + "fen": "rnb1k2r/pp1p1ppp/1q2pn2/2b5/2P5/2N2N2/PPQ1PPPP/R1B1KB1R w KQkq - 2 7", + "hash": 9364767547340719511, + "name": "Nimzo-Indian: Classical, 4...c5 5.dxc5 Bxc5 6.Nf3 Qb6" + }, + "E38g": { + "eco": "E38g", + "fen": "rnb1k2r/ppqp1ppp/4pn2/2P5/1bP5/2N5/PPQ1PPPP/R1B1KBNR w KQkq - 1 6", + "hash": 4536866125205261970, + "name": "Nimzo-Indian: Classical, 4...c5 5.dxc5 Qc7" + }, + "E38h": { + "eco": "E38h", + "fen": "r1bqk2r/pp1p1ppp/2n1pn2/2P5/1bP5/2N5/PPQ1PPPP/R1B1KBNR w KQkq - 1 6", + "hash": 10593812638645757072, + "name": "Nimzo-Indian: Classical, 4...c5 5.dxc5 Nc6" + }, + "E38i": { + "eco": "E38i", + "fen": "r1bqk2r/pp1p1ppp/n3pn2/2P5/1bP5/2N5/PPQ1PPPP/R1B1KBNR w KQkq - 1 6", + "hash": 8532556603221089583, + "name": "Nimzo-Indian: Classical, 4...c5 5.dxc5 Na6" + }, + "E38j": { + "eco": "E38j", + "fen": "r1bqk2r/pp1p1ppp/n3pn2/2P5/2P5/P1Q5/1P2PPPP/R1B1KBNR b KQkq - 0 7", + "hash": 7267227875816763576, + "name": "Nimzo-Indian: Classical, 4...c5 5.dxc5 Na6 6.a3 Bxc3+ 7.Qxc3" + }, + "E38k": { + "eco": "E38k", + "fen": "r1bqk2r/pp1p1ppp/4pn2/2n5/1PP5/P1Q5/4PPPP/R1B1KBNR b KQkq b3 0 8", + "hash": 12251059670617668845, + "name": "Nimzo-Indian: Classical, 4...c5 5.dxc5 Na6: 8.b4" + }, + "E38l": { + "eco": "E38l", + "fen": "r1bqk2r/pp1p1ppp/4pn2/8/1PPQn3/P7/4PPPP/R1B1KBNR b KQkq - 2 9", + "hash": 8265205507836520034, + "name": "Nimzo-Indian: Classical, 4...c5 5.dxc5 Na6: 8.b4 Nce4 9.Qd4" + }, + "E39a": { + "eco": "E39a", + "fen": "rnbq1rk1/pp1p1ppp/4pn2/2P5/1bP5/2N5/PPQ1PPPP/R1B1KBNR w KQ - 1 6", + "hash": 3621453900593129592, + "name": "Nimzo-Indian: Classical, Pirc Variation" + }, + "E39b": { + "eco": "E39b", + "fen": "rnbq1rk1/pp1p1ppp/4pn2/2P5/1bP2B2/2N5/PPQ1PPPP/R3KBNR b KQ - 2 6", + "hash": 16795360773217878555, + "name": "Nimzo-Indian: Classical, Pirc, 6.Bf4" + }, + "E39c": { + "eco": "E39c", + "fen": "rnbq1rk1/pp1p1ppp/4pn2/2P5/1bP5/2N2N2/PPQ1PPPP/R1B1KB1R b KQ - 2 6", + "hash": 16799853590623029573, + "name": "Nimzo-Indian: Classical, Pirc, 6.Nf3" + }, + "E39d": { + "eco": "E39d", + "fen": "rnbq1rk1/pp1p1ppp/4pn2/2b5/2P5/2N2N2/PPQ1PPPP/R1B1KB1R w KQ - 0 7", + "hash": 5521771135798852262, + "name": "Nimzo-Indian: Classical, Pirc, 6.Nf3 Bxc5" + }, + "E39e": { + "eco": "E39e", + "fen": "r1bq1rk1/pp1p1ppp/n3pn2/2P5/1bP5/2N2N2/PPQ1PPPP/R1B1KB1R w KQ - 3 7", + "hash": 12080266378009351673, + "name": "Nimzo-Indian: Classical, Pirc, 6.Nf3 Na6" + }, + "E39f": { + "eco": "E39f", + "fen": "r1bq1rk1/pp1p1ppp/n3pn2/2P5/1bP5/2N2N2/PPQBPPPP/R3KB1R b KQ - 4 7", + "hash": 10243684681890856701, + "name": "Nimzo-Indian: Classical, Pirc, 6.Nf3 Na6 7.Bd2" + }, + "E39g": { + "eco": "E39g", + "fen": "r1bq1rk1/pp1p1ppp/n3pn2/2P5/1bP5/P1N2N2/1PQ1PPPP/R1B1KB1R b KQ - 0 7", + "hash": 7798417482860665785, + "name": "Nimzo-Indian: Classical, Pirc, 6.Nf3 Na6 7.a3" + }, + "E39h": { + "eco": "E39h", + "fen": "r1bq1rk1/pp1p1ppp/n3pn2/2P5/1bP5/2N2NP1/PPQ1PP1P/R1B1KB1R b KQ - 0 7", + "hash": 10034865518608928193, + "name": "Nimzo-Indian: Classical, Pirc, 6.Nf3 Na6 7.g3" + }, + "E39i": { + "eco": "E39i", + "fen": "rnbq1rk1/pp1p1ppp/4pn2/2P5/1bP5/P1N5/1PQ1PPPP/R1B1KBNR b KQ - 0 6", + "hash": 18004771206775105080, + "name": "Nimzo-Indian: Classical, Pirc, 6.a3" + }, + "E39j": { + "eco": "E39j", + "fen": "rnbq1rk1/pp1p1ppp/4pn2/2b5/2P5/P1N2N2/1PQ1PPPP/R1B1KB1R b KQ - 1 7", + "hash": 9745073476033000678, + "name": "Nimzo-Indian: Classical, Pirc, 6.a3 Bxc5 7.Nf3" + }, + "E39k": { + "eco": "E39k", + "fen": "r1bq1rk1/pp1p1ppp/2n1pn2/2b5/2P5/P1N2N2/1PQ1PPPP/R1B1KB1R w KQ - 2 8", + "hash": 3229270409343308261, + "name": "Nimzo-Indian: Classical, Pirc, 6.a3 Bxc5 7.Nf3 Nc6" + }, + "E39l": { + "eco": "E39l", + "fen": "rnbq1rk1/p2p1ppp/1p2pn2/2b5/2P5/P1N2N2/1PQ1PPPP/R1B1KB1R w KQ - 0 8", + "hash": 17029303853222495101, + "name": "Nimzo-Indian: Classical, Pirc, 6.a3 Bxc5 7.Nf3 b6" + }, + "E39m": { + "eco": "E39m", + "fen": "rnbq1rk1/p2p1ppp/1p2pn2/2b3B1/2P5/P1N2N2/1PQ1PPPP/R3KB1R b KQ - 1 8", + "hash": 3030476798976481461, + "name": "Nimzo-Indian: Classical, Pirc, 6.a3 Bxc5 7.Nf3 b6 8.Bg5" + }, + "E40": { + "eco": "E40", + "fen": "rnbqk2r/pppp1ppp/4pn2/8/1bPP4/2N1P3/PP3PPP/R1BQKBNR b KQkq - 0 4", + "hash": 13641354086896200002, + "name": "Nimzo-Indian: Rubinstein" + }, + "E41": { + "eco": "E41", + "fen": "rnbqk2r/pp1p1ppp/4pn2/2p5/1bPP4/2N1P3/PP3PPP/R1BQKBNR w KQkq c6 0 5", + "hash": 6574695712796336703, + "name": "Nimzo-Indian: 4.e3 c5" + }, + "E42": { + "eco": "E42", + "fen": "rnbqk2r/pp1p1ppp/4pn2/2p5/1bPP4/2N1P3/PP2NPPP/R1BQKB1R b KQkq - 1 5", + "hash": 5736153422875946945, + "name": "Nimzo-Indian: 4.e3 c5 5.Ne2" + }, + "E43": { + "eco": "E43", + "fen": "rnbqk2r/p1pp1ppp/1p2pn2/8/1bPP4/2N1P3/PP3PPP/R1BQKBNR w KQkq - 0 5", + "hash": 15431190861522067161, + "name": "Nimzo-Indian: Nimzowitsch (Fischer) Variation" + }, + "E44": { + "eco": "E44", + "fen": "rnbqk2r/p1pp1ppp/1p2pn2/8/1bPP4/2N1P3/PP2NPPP/R1BQKB1R b KQkq - 1 5", + "hash": 14015889903186727719, + "name": "Nimzo-Indian: Nimzowitsch, 5.Ne2" + }, + "E45": { + "eco": "E45", + "fen": "rn1qk2r/p1pp1ppp/bp2pn2/8/1bPP4/2N1P3/PP2NPPP/R1BQKB1R w KQkq - 2 6", + "hash": 977883100703674841, + "name": "Nimzo-Indian: Nimzowitsch, 5.Ne2 Ba6" + }, + "E46": { + "eco": "E46", + "fen": "rnbq1rk1/pppp1ppp/4pn2/8/1bPP4/2N1P3/PP3PPP/R1BQKBNR w KQ - 1 5", + "hash": 13251629644267684009, + "name": "Nimzo-Indian: 4.e3 O-O" + }, + "E47": { + "eco": "E47", + "fen": "rnbq1rk1/pppp1ppp/4pn2/8/1bPP4/2NBP3/PP3PPP/R1BQK1NR b KQ - 2 5", + "hash": 16351056570317816538, + "name": "Nimzo-Indian: 4.e3 O-O 5.Bd3" + }, + "E48": { + "eco": "E48", + "fen": "rnbq1rk1/ppp2ppp/4pn2/3p4/1bPP4/2NBP3/PP3PPP/R1BQK1NR w KQ d6 0 6", + "hash": 7458169087727242492, + "name": "Nimzo-Indian: 4.e3 O-O 5.Bd3 d5" + }, + "E49": { + "eco": "E49", + "fen": "rnbq1rk1/ppp2ppp/4pn2/3p4/2PP4/P1PBP3/5PPP/R1BQK1NR b KQ - 0 7", + "hash": 14335130601602957302, + "name": "Nimzo-Indian: Botvinnik System" + }, + "E50": { + "eco": "E50", + "fen": "rnbq1rk1/pppp1ppp/4pn2/8/1bPP4/2N1PN2/PP3PPP/R1BQKB1R b KQ - 2 5", + "hash": 7819324300744909204, + "name": "Nimzo-Indian: 4.e3 O-O 5.Nf3" + }, + "E51": { + "eco": "E51", + "fen": "rnbq1rk1/ppp2ppp/4pn2/3p4/1bPP4/2N1PN2/PP3PPP/R1BQKB1R w KQ d6 0 6", + "hash": 16855267038324502450, + "name": "Nimzo-Indian: 4.e3 O-O 5.Nf3 d5" + }, + "E52": { + "eco": "E52", + "fen": "rnbq1rk1/p1p2ppp/1p2pn2/3p4/1bPP4/2NBPN2/PP3PPP/R1BQK2R w KQ - 0 7", + "hash": 15532097781361400410, + "name": "Nimzo-Indian: Main Line, 6...b6" + }, + "E53": { + "eco": "E53", + "fen": "rnbq1rk1/pp3ppp/4pn2/2pp4/1bPP4/2NBPN2/PP3PPP/R1BQK2R w KQ c6 0 7", + "hash": 6527264100130055868, + "name": "Nimzo-Indian: Main Line, 6...c5" + }, + "E54": { + "eco": "E54", + "fen": "rnbq1rk1/pp3ppp/4pn2/2p5/1bpP4/2NBPN2/PP3PPP/R1BQ1RK1 w - - 0 8", + "hash": 17791120801704203087, + "name": "Nimzo-Indian: Main Line, 7...dxc4" + }, + "E55": { + "eco": "E55", + "fen": "r1bq1rk1/pp1n1ppp/4pn2/2p5/1bBP4/2N1PN2/PP3PPP/R1BQ1RK1 w - - 1 9", + "hash": 10141980111520382280, + "name": "Nimzo-Indian: Main Line, Bronstein Variation" + }, + "E56": { + "eco": "E56", + "fen": "r1bq1rk1/pp3ppp/2n1pn2/2pp4/1bPP4/2NBPN2/PP3PPP/R1BQ1RK1 w - - 2 8", + "hash": 10307934480497318063, + "name": "Nimzo-Indian: Main Line, 7...Nc6" + }, + "E57": { + "eco": "E57", + "fen": "r1bq1rk1/pp3ppp/2n1pn2/8/1bBp4/P1N1PN2/1P3PPP/R1BQ1RK1 w - - 0 10", + "hash": 9237909236547981825, + "name": "Nimzo-Indian: Main Line, 8...dxc4 9.Bxc4 cxd4" + }, + "E58": { + "eco": "E58", + "fen": "r1bq1rk1/pp3ppp/2n1pn2/2pp4/2PP4/P1bBPN2/1P3PPP/R1BQ1RK1 w - - 0 9", + "hash": 7325221254154142949, + "name": "Nimzo-Indian: Main Line, 8...Bxc3" + }, + "E59": { + "eco": "E59", + "fen": "r1bq1rk1/pp3ppp/2n1pn2/2p5/2pP4/P1PBPN2/5PPP/R1BQ1RK1 w - - 0 10", + "hash": 18193199889907565894, + "name": "Nimzo-Indian: Main Line, 9.bxc3 dxc4" + }, + "E60a": { + "eco": "E60a", + "fen": "rnbqkb1r/pppppp1p/5np1/8/2PP4/8/PP2PPPP/RNBQKBNR w KQkq - 0 3", + "hash": 13652452506622667012, + "name": "King's Indian" + }, + "E60b": { + "eco": "E60b", + "fen": "rnbqkb1r/pppppp1p/5np1/6B1/2PP4/8/PP2PPPP/RN1QKBNR b KQkq - 1 3", + "hash": 8875774690583933644, + "name": "King's Indian: 3.Bg5" + }, + "E60c": { + "eco": "E60c", + "fen": "rnbqkb1r/pppppp1p/5np1/3P4/2P5/8/PP2PPPP/RNBQKBNR b KQkq - 0 3", + "hash": 540153139077332825, + "name": "King's Indian: 3.d5" + }, + "E60d": { + "eco": "E60d", + "fen": "rnbqkb1r/pppppp1p/5np1/8/2PP4/5P2/PP2P1PP/RNBQKBNR b KQkq - 0 3", + "hash": 15260068045342131829, + "name": "King's Indian: 3.f3" + }, + "E60e": { + "eco": "E60e", + "fen": "rnbqkb1r/pppppp1p/5np1/8/2PP4/6P1/PP2PP1P/RNBQKBNR b KQkq - 0 3", + "hash": 10489440406649270588, + "name": "King's Indian: 3.g3" + }, + "E60f": { + "eco": "E60f", + "fen": "rnbqkb1r/pppppp1p/5np1/8/2PP4/5N2/PP2PPPP/RNBQKB1R b KQkq - 1 3", + "hash": 7355413720908220473, + "name": "King's Indian: 3.Nf3" + }, + "E60g": { + "eco": "E60g", + "fen": "rnbqk2r/ppppppbp/5np1/8/2PP4/5N2/PP2PPPP/RNBQKB1R w KQkq - 2 4", + "hash": 15469742090136781715, + "name": "King's Indian: 3.Nf3 Bg7" + }, + "E60h": { + "eco": "E60h", + "fen": "rnbqk2r/ppppppbp/5np1/8/2PP4/1P3N2/P3PPPP/RNBQKB1R b KQkq - 0 4", + "hash": 6487980813648292094, + "name": "King's Indian: b3 System" + }, + "E60i": { + "eco": "E60i", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PP4/1P3NP1/PB2PP1P/RN1QKB1R b KQ - 0 6", + "hash": 9620210792668630191, + "name": "King's Indian: b3+g3 System" + }, + "E60j": { + "eco": "E60j", + "fen": "rnbqk2r/ppppppbp/5np1/8/2PP4/5NP1/PP2PP1P/RNBQKB1R b KQkq - 0 4", + "hash": 18034993710375426987, + "name": "King's Indian: Fianchetto" + }, + "E60k": { + "eco": "E60k", + "fen": "rnbq1rk1/ppppppbp/5np1/8/2PP4/5NP1/PP2PPBP/RNBQK2R b KQ - 2 5", + "hash": 4977011897105705529, + "name": "King's Indian: Fianchetto without Nc3" + }, + "E60l": { + "eco": "E60l", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p5/2PP4/5NP1/PP2PPBP/RNBQ1RK1 w - c6 0 7", + "hash": 16478628190628901689, + "name": "King's Indian: Fianchetto, Yugoslav without Nc3" + }, + "E60m": { + "eco": "E60m", + "fen": "rnbq1rk1/pp2ppbp/2pp1np1/8/2PP4/5NP1/PP2PPBP/RNBQ1RK1 w - - 0 7", + "hash": 10422707542033148927, + "name": "King's Indian: Fianchetto without Nc3, 6...c6" + }, + "E60n": { + "eco": "E60n", + "fen": "r1bq1rk1/ppp1ppbp/2np1np1/8/2PP4/5NP1/PP2PPBP/RNBQ1RK1 w - - 2 7", + "hash": 12192317610036747591, + "name": "King's Indian: Fianchetto without Nc3, 6...Nc6" + }, + "E60o": { + "eco": "E60o", + "fen": "r1bq1rk1/pppnppbp/3p1np1/8/2PP4/5NP1/PP2PPBP/RNBQ1RK1 w - - 2 7", + "hash": 3548119604247369096, + "name": "King's Indian: Fianchetto without Nc3, 6...Nbd7" + }, + "E60p": { + "eco": "E60p", + "fen": "r1bq1rk1/pppnppbp/3p1np1/8/2PP4/5NP1/PPQ1PPBP/RNB2RK1 b - - 3 7", + "hash": 9233507223992642028, + "name": "King's Indian: Fianchetto without Nc3, 6...Nbd7 7.Qc2" + }, + "E60q": { + "eco": "E60q", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/4p3/2PP4/5NP1/PPQ1PPBP/RNB2RK1 w - e6 0 8", + "hash": 746482275644887514, + "name": "King's Indian: Fianchetto without Nc3, 6...Nbd7 7.Qc2 e5" + }, + "E60r": { + "eco": "E60r", + "fen": "r1bqr1k1/pppn1pbp/3p1np1/4p3/2PP4/5NP1/PPQ1PPBP/RNBR2K1 w - - 2 9", + "hash": 18099964879945679447, + "name": "King's Indian: Fianchetto without Nc3, 6...Nbd7 7.Qc2 e5 8.Rd1 Re8" + }, + "E61a": { + "eco": "E61a", + "fen": "rnbqkb1r/pppppp1p/5np1/8/2PP4/2N5/PP2PPPP/R1BQKBNR b KQkq - 1 3", + "hash": 5107180496752749533, + "name": "King's Indian: 3.Nc3" + }, + "E61b": { + "eco": "E61b", + "fen": "rnbqk2r/ppppppbp/5np1/8/2PP4/2N5/PP2PPPP/R1BQKBNR w KQkq - 2 4", + "hash": 17752173974206799991, + "name": "King's Indian: 3.Nc3 Bg7" + }, + "E61c": { + "eco": "E61c", + "fen": "rnbqk2r/ppppppbp/5np1/6B1/2PP4/2N5/PP2PPPP/R2QKBNR b KQkq - 3 4", + "hash": 3460509550896823231, + "name": "King's Indian: 4.Bg5" + }, + "E61d": { + "eco": "E61d", + "fen": "rnbq1rk1/ppppppbp/5np1/6B1/2PP4/2N5/PP2PPPP/R2QKBNR w KQ - 4 5", + "hash": 4228561938219848276, + "name": "King's Indian: 4.Bg5 O-O" + }, + "E61e": { + "eco": "E61e", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/6B1/2PP4/2N1P3/PP3PPP/R2QKBNR w KQ - 0 6", + "hash": 12554076973501191069, + "name": "King's Indian: 4.Bg5 O-O 5.e3 d6" + }, + "E61f": { + "eco": "E61f", + "fen": "rnbqk2r/ppppppbp/5np1/8/2PP4/2N3P1/PP2PP1P/R1BQKBNR b KQkq - 0 4", + "hash": 15761155506444449871, + "name": "King's Indian: 4.g3" + }, + "E61g": { + "eco": "E61g", + "fen": "rnbq1rk1/ppppppbp/5np1/8/2PP4/2N3P1/PP2PP1P/R1BQKBNR w KQ - 1 5", + "hash": 14993102024005505444, + "name": "King's Indian: 4.g3 O-O" + }, + "E61h": { + "eco": "E61h", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PP4/2N1P1P1/PP3PBP/R1BQK1NR b KQ - 0 6", + "hash": 17399029838056245268, + "name": "King's Indian: Fianchetto, Flohr Variation" + }, + "E61i": { + "eco": "E61i", + "fen": "rnbqk2r/ppppppbp/5np1/8/2PP4/2N2N2/PP2PPPP/R1BQKB1R b KQkq - 3 4", + "hash": 3258504803564749130, + "name": "King's Indian: 4.Nf3" + }, + "E61j": { + "eco": "E61j", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/6B1/2PP4/2N2N2/PP2PPPP/R2QKB1R b KQkq - 1 5", + "hash": 15192974215584355311, + "name": "King's Indian: Smyslov System" + }, + "E61k": { + "eco": "E61k", + "fen": "rnbq1rk1/ppppppbp/5np1/8/2PP4/2N2N2/PP2PPPP/R1BQKB1R w KQ - 4 5", + "hash": 2850890083324160161, + "name": "King's Indian: 4.Nf3 O-O" + }, + "E61l": { + "eco": "E61l", + "fen": "rnbq1rk1/ppppppbp/5np1/8/2PP4/2N2NP1/PP2PP1P/R1BQKB1R b KQ - 0 5", + "hash": 826091866371895449, + "name": "King's Indian: 4.Nf3 O-O 5.g3" + }, + "E61m": { + "eco": "E61m", + "fen": "rnbq1rk1/ppppppbp/5np1/8/2PP4/2N1PN2/PP3PPP/R1BQKB1R b KQ - 0 5", + "hash": 9997190587409227781, + "name": "King's Indian: 4.Nf3 O-O 5.e3" + }, + "E61n": { + "eco": "E61n", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PP4/2N1PN2/PP2BPPP/R1BQK2R b KQ - 1 6", + "hash": 13873112461440902091, + "name": "King's Indian: 4.Nf3 O-O 5.e3 d6 6.Be2" + }, + "E61o": { + "eco": "E61o", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p5/2PP4/2N1PN2/PP2BPPP/R1BQK2R w KQ c6 0 7", + "hash": 2807682008090536118, + "name": "King's Indian: 4.Nf3 O-O 5.e3 d6 6.Be2 c5" + }, + "E61p": { + "eco": "E61p", + "fen": "rnbq1rk1/ppppppbp/5np1/8/2PP1B2/2N2N2/PP2PPPP/R2QKB1R b KQ - 5 5", + "hash": 18213827845033591490, + "name": "King's Indian: 4.Nf3 O-O 5.Bf4" + }, + "E61q": { + "eco": "E61q", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PP1B2/2N2N2/PP2PPPP/R2QKB1R w KQ - 0 6", + "hash": 14230835569434348463, + "name": "King's Indian: 4.Nf3 O-O 5.Bf4 d6" + }, + "E61r": { + "eco": "E61r", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PP1B2/2N1PN2/PP3PPP/R2QKB1R b KQ - 0 6", + "hash": 7517448133144429323, + "name": "King's Indian: 4.Nf3 d6 5.Bf4 d6 6.e3" + }, + "E61s": { + "eco": "E61s", + "fen": "rnbq1rk1/ppppppbp/5np1/6B1/2PP4/2N2N2/PP2PPPP/R2QKB1R b KQ - 5 5", + "hash": 16269871973049480041, + "name": "King's Indian: Smyslov System" + }, + "E61t": { + "eco": "E61t", + "fen": "rnbq1rk1/pp1pppbp/5np1/2p3B1/2PP4/2N2N2/PP2PPPP/R2QKB1R w KQ c6 0 6", + "hash": 557289621826156564, + "name": "King's Indian: Smyslov System, 5...c5" + }, + "E61u": { + "eco": "E61u", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/6B1/2PP4/2N2N2/PP2PPPP/R2QKB1R w KQ - 0 6", + "hash": 15596146080558545412, + "name": "King's Indian: Smyslov System, 5...d6" + }, + "E61v": { + "eco": "E61v", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/6B1/2PP4/2N1PN2/PP3PPP/R2QKB1R b KQ - 0 6", + "hash": 8457169148413571744, + "name": "King's Indian: Smyslov System, 6.e3" + }, + "E61w": { + "eco": "E61w", + "fen": "rnbq1rk1/pp2ppbp/2pp1np1/6B1/2PP4/2N1PN2/PP3PPP/R2QKB1R w KQ - 0 7", + "hash": 16656294284522529051, + "name": "King's Indian: Smyslov System, 6.e3 c6" + }, + "E61x": { + "eco": "E61x", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p3B1/2PP4/2N1PN2/PP3PPP/R2QKB1R w KQ c6 0 7", + "hash": 10604911861848766941, + "name": "King's Indian: Smyslov System, 6.e3 c6" + }, + "E61y": { + "eco": "E61y", + "fen": "r1bq1rk1/pppnppbp/3p1np1/6B1/2PP4/2N1PN2/PP3PPP/R2QKB1R w KQ - 1 7", + "hash": 5097685369340403564, + "name": "King's Indian: Smyslov System, 5...O-O 6.e3 Nbd7" + }, + "E61z": { + "eco": "E61z", + "fen": "r1bq1rk1/pp1nppbp/2pp1np1/6B1/2PP4/2N1PN2/PP2BPPP/R2QK2R w KQ - 0 8", + "hash": 12053026524930508404, + "name": "King's Indian: Smyslov System, 5...O-O 6.e3 Nbd7 7.Be2 c6" + }, + "E62a": { + "eco": "E62a", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/2PP4/2N2NP1/PP2PP1P/R1BQKB1R b KQkq - 0 5", + "hash": 4063555261012250655, + "name": "King's Indian: Fianchetto Variation" + }, + "E62b": { + "eco": "E62b", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PP4/2N2NP1/PP2PPBP/R1BQK2R b KQ - 2 6", + "hash": 9744781549395124621, + "name": "King's Indian: Fianchetto Variation" + }, + "E62c": { + "eco": "E62c", + "fen": "rnbq1rk1/pp2ppbp/2pp1np1/8/2PP4/2N2NP1/PP2PPBP/R1BQK2R w KQ - 0 7", + "hash": 1533061016017629750, + "name": "King's Indian: Fianchetto, 6...c6" + }, + "E62d": { + "eco": "E62d", + "fen": "rnbq1rk1/pp2ppbp/2pp1np1/8/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 1 7", + "hash": 7724796973278636326, + "name": "King's Indian: Fianchetto, 6...c6 7.O-O" + }, + "E62e": { + "eco": "E62e", + "fen": "rnbq1rk1/1p2ppbp/p1pp1np1/8/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 0 8", + "hash": 13385837291909009914, + "name": "King's Indian: Fianchetto, 6...c6 7.O-O a6" + }, + "E62f": { + "eco": "E62f", + "fen": "rn1q1rk1/pp2ppbp/2pp1np1/5b2/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 2 8", + "hash": 16729346930918564011, + "name": "King's Indian: Fianchetto, Larsen System" + }, + "E62g": { + "eco": "E62g", + "fen": "rn1q1rk1/pp2ppbp/2pp1np1/5b2/2PP4/1PN2NP1/P3PPBP/R1BQ1RK1 b - - 0 8", + "hash": 7245434392076700614, + "name": "King's Indian: Fianchetto, Larsen System, 8.b3" + }, + "E62h": { + "eco": "E62h", + "fen": "rnb2rk1/pp2ppbp/2pp1np1/q7/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 2 8", + "hash": 12844381245793831081, + "name": "King's Indian: Fianchetto, Kavalek/Bronstein Variation" + }, + "E62i": { + "eco": "E62i", + "fen": "rnb2rk1/pp2ppbp/2pp1np1/q7/2PP4/2N2NPP/PP2PPB1/R1BQ1RK1 b - - 0 8", + "hash": 6535766556139897179, + "name": "King's Indian: Fianchetto, Kavalek/Bronstein, 8.h3" + }, + "E62j": { + "eco": "E62j", + "fen": "rnb2rk1/pp2ppbp/2pp1np1/q7/2PPP3/2N2NP1/PP3PBP/R1BQ1RK1 b - e3 0 8", + "hash": 8522892936197420451, + "name": "King's Indian: Fianchetto, Kavalek/Bronstein, 8.e4" + }, + "E62k": { + "eco": "E62k", + "fen": "rn3rk1/pp2ppbp/2pp1np1/q7/2PPP1b1/2N2NP1/PP3PBP/R1BQ1RK1 w - - 1 9", + "hash": 8400532488803236681, + "name": "King's Indian: Fianchetto, Kavalek/Bronstein, 8.e4 Bg4" + }, + "E62l": { + "eco": "E62l", + "fen": "r1bq1rk1/ppp1ppbp/2np1np1/8/2PP4/2N2NP1/PP2PPBP/R1BQK2R w KQ - 3 7", + "hash": 3229560124354561166, + "name": "King's Indian: Fianchetto, 6...Nc6" + }, + "E62m": { + "eco": "E62m", + "fen": "r1bq1rk1/ppp1ppbp/2np1np1/3P4/2P5/2N2NP1/PP2PPBP/R1BQK2R b KQ - 0 7", + "hash": 10869983616265163475, + "name": "King's Indian: Fianchetto, 6...Nc6 7.d5" + }, + "E62n": { + "eco": "E62n", + "fen": "r1bq1rk1/ppp1ppbp/2np1np1/8/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 4 7", + "hash": 5955105497527377822, + "name": "King's Indian: Fianchetto, 6...Nc6 7.O-O" + }, + "E62o": { + "eco": "E62o", + "fen": "1rbq1rk1/ppp1ppbp/2np1np1/8/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 5 8", + "hash": 14557713199297652980, + "name": "King's Indian: Fianchetto, 6...Nc6 7.O-O Rb8" + }, + "E62p": { + "eco": "E62p", + "fen": "r2q1rk1/ppp1ppbp/2np1np1/5b2/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 5 8", + "hash": 15113413395593647635, + "name": "King's Indian: Fianchetto, Spassky Variation" + }, + "E62q": { + "eco": "E62q", + "fen": "r2q1rk1/ppp1ppbp/2np1np1/3P1b2/2P5/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 0 8", + "hash": 7761358276592910414, + "name": "King's Indian: Fianchetto, Spassky, 8.d5" + }, + "E62r": { + "eco": "E62r", + "fen": "r2q1rk1/ppp1ppbp/2np1np1/8/2PP2b1/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 5 8", + "hash": 5798106155953508724, + "name": "King's Indian: Fianchetto, Simagin Variation" + }, + "E62s": { + "eco": "E62s", + "fen": "r2q1rk1/ppp1ppbp/2np1np1/3P4/2P3b1/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 0 8", + "hash": 16897296378663520041, + "name": "King's Indian: Fianchetto, Simagin, 8.d5" + }, + "E62t": { + "eco": "E62t", + "fen": "r1bq1rk1/ppp2pbp/2np1np1/4p3/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - e6 0 8", + "hash": 15626576654585669544, + "name": "King's Indian: Fianchetto, Uhlmann/Szabo Variation" + }, + "E62u": { + "eco": "E62u", + "fen": "r1bq1rk1/ppp1npbp/3p1np1/3Pp3/2P5/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 1 9", + "hash": 7366951855430941412, + "name": "King's Indian: Fianchetto, Uhlmann/Szabo Variation" + }, + "E62v": { + "eco": "E62v", + "fen": "r1bq1rk1/ppp1npbp/3p1np1/3Pp3/2P1P3/2N2NP1/PP3PBP/R1BQ1RK1 b - e3 0 9", + "hash": 11690120767493441518, + "name": "King's Indian: Fianchetto, Uhlmann/Szabo, 9.e4" + }, + "E63a": { + "eco": "E63a", + "fen": "r1bq1rk1/1pp1ppbp/p1np1np1/8/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 0 8", + "hash": 9246797226090997570, + "name": "King's Indian: Fianchetto, Panno Variation" + }, + "E63b": { + "eco": "E63b", + "fen": "r1bq1rk1/1pp1ppbp/p1np1np1/8/2PP4/2N2NP1/PP2PPBP/R1BQR1K1 b - - 1 8", + "hash": 353312249203395670, + "name": "King's Indian: Fianchetto, Panno, 8.Re1" + }, + "E63c": { + "eco": "E63c", + "fen": "r1bq1rk1/1pp1ppbp/p1np1np1/8/2PPP3/2N2NP1/PP3PBP/R1BQ1RK1 b - e3 0 8", + "hash": 4923617866805680712, + "name": "King's Indian: Fianchetto, Panno, 8.e4" + }, + "E63d": { + "eco": "E63d", + "fen": "r1bq1rk1/1pp1ppbp/p1np1np1/8/2PP4/1PN2NP1/P3PPBP/R1BQ1RK1 b - - 0 8", + "hash": 933750634425207855, + "name": "King's Indian: Fianchetto, Panno, 8.b3" + }, + "E63e": { + "eco": "E63e", + "fen": "1rbq1rk1/1pp1ppbp/p1np1np1/8/2PP4/1PN2NP1/P3PPBP/R1BQ1RK1 w - - 1 9", + "hash": 10688997540785519429, + "name": "King's Indian: Fianchetto, Panno, 8.b3 Rb8" + }, + "E63f": { + "eco": "E63f", + "fen": "1rbq1rk1/1pp1ppbp/p1np1np1/8/2PP4/1PN2NP1/PB2PPBP/R2Q1RK1 b - - 2 9", + "hash": 6064686943580972970, + "name": "King's Indian: Fianchetto, Panno, 8.b3 Rb8 9.Bb2" + }, + "E63g": { + "eco": "E63g", + "fen": "1rbq1rk1/1pp1ppbp/p1np1np1/3N4/2PP4/1P3NP1/P3PPBP/R1BQ1RK1 b - - 2 9", + "hash": 6071798485261878288, + "name": "King's Indian: Fianchetto, Panno, 8.b3 Rb8 9.Nd5" + }, + "E63h": { + "eco": "E63h", + "fen": "r1bq1rk1/1pp1ppbp/p1np1np1/8/2PP4/2N2NPP/PP2PPB1/R1BQ1RK1 b - - 0 8", + "hash": 7539277199872585392, + "name": "King's Indian: Fianchetto, Panno, 8.h3" + }, + "E63i": { + "eco": "E63i", + "fen": "1rbq1rk1/1pp1ppbp/p1np1np1/8/2PP4/2N2NPP/PP2PPB1/R1BQ1RK1 w - - 1 9", + "hash": 17294754179581336026, + "name": "King's Indian: Fianchetto, Panno, 8.h3 Rb8" + }, + "E63j": { + "eco": "E63j", + "fen": "1rbq1rk1/1pp1ppbp/p1np1np1/8/2PP4/2N1BNPP/PP2PPB1/R2Q1RK1 b - - 2 9", + "hash": 9442910045946757716, + "name": "King's Indian: Fianchetto, Panno, 8.h3 Rb8 9.Be3" + }, + "E63k": { + "eco": "E63k", + "fen": "1rbq1rk1/1pp1ppbp/p1np1np1/8/2PPP3/2N2NPP/PP3PB1/R1BQ1RK1 b - e3 0 9", + "hash": 3748193373151126736, + "name": "King's Indian: Fianchetto, Panno, 8.h3 Rb8 9.e4" + }, + "E63l": { + "eco": "E63l", + "fen": "r1bq1rk1/1pp1ppbp/p1np1np1/3P4/2P5/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 0 8", + "hash": 4205089120195588383, + "name": "King's Indian: Fianchetto, Panno, 8.d5" + }, + "E63m": { + "eco": "E63m", + "fen": "r1bq1rk1/1pp1ppbp/p2p1np1/n2P4/2P5/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 1 9", + "hash": 8019873769778746133, + "name": "King's Indian: Fianchetto, Panno, 8.d5 Na5" + }, + "E64a": { + "eco": "E64a", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p5/2PP4/2N2NP1/PP2PPBP/R1BQK2R w KQ c6 0 7", + "hash": 7011465385173920496, + "name": "King's Indian: Fianchetto, Yugoslav System" + }, + "E64b": { + "eco": "E64b", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2P5/2P5/2N2NP1/PP2PPBP/R1BQK2R b KQ - 0 7", + "hash": 2210871929825492380, + "name": "King's Indian: Fianchetto, Yugoslav, Early Exchange" + }, + "E64c": { + "eco": "E64c", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2pP4/2P5/2N2NP1/PP2PPBP/R1BQK2R b KQ - 0 7", + "hash": 15800309526816341165, + "name": "King's Indian: Fianchetto, Yugoslav, 7.d5" + }, + "E64d": { + "eco": "E64d", + "fen": "rnbq1rk1/pp3pbp/3ppnp1/2pP4/2P5/2N2NP1/PP2PPBP/R1BQK2R w KQ - 0 8", + "hash": 12480050694746352895, + "name": "King's Indian: Fianchetto, Yugoslav, 7.d5 e6" + }, + "E64e": { + "eco": "E64e", + "fen": "r1bq1rk1/pp2ppbp/n2p1np1/2pP4/2P5/2N2NP1/PP2PPBP/R1BQK2R w KQ - 1 8", + "hash": 10792122643762126865, + "name": "King's Indian: Fianchetto, Yugoslav, 7.d5 Na6" + }, + "E65a": { + "eco": "E65a", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p5/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 1 7", + "hash": 2249760953699594720, + "name": "King's Indian: Fianchetto, Yugoslav, 7.O-O" + }, + "E65b": { + "eco": "E65b", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/8/2Pp4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 0 8", + "hash": 4622517992909608998, + "name": "King's Indian: Fianchetto, Yugoslav, 7.O-O cxd4" + }, + "E65c": { + "eco": "E65c", + "fen": "r1bq1rk1/pp1nppbp/3p1np1/2p5/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 2 8", + "hash": 3232382727762615340, + "name": "King's Indian: Fianchetto, Yugoslav, 7.O-O Nbd7" + }, + "E65d": { + "eco": "E65d", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/2p5/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 2 8", + "hash": 13030348898112066787, + "name": "King's Indian: Fianchetto, Yugoslav, 7.O-O Nc6" + }, + "E65e": { + "eco": "E65e", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/2p5/2PP4/2N2NPP/PP2PPB1/R1BQ1RK1 b - - 0 8", + "hash": 6640211262418230545, + "name": "King's Indian: Fianchetto, Yugoslav, 7.O-O Nc6 8.h3" + }, + "E65f": { + "eco": "E65f", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/2P5/2P5/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 0 8", + "hash": 14642956762869859215, + "name": "King's Indian: Fianchetto, Yugoslav, Exchange" + }, + "E65g": { + "eco": "E65g", + "fen": "r1bq1rk1/pp2ppbp/2n2np1/2p5/2P5/2N1BNP1/PP2PPBP/R2Q1RK1 b - - 1 9", + "hash": 7018117890836444820, + "name": "King's Indian: Fianchetto, Yugoslav, Exchange, 9.Be3" + }, + "E65h": { + "eco": "E65h", + "fen": "r1bq1rk1/pp2ppbp/2n2np1/2p5/2P2B2/2N2NP1/PP2PPBP/R2Q1RK1 b - - 1 9", + "hash": 14499620908471437177, + "name": "King's Indian: Fianchetto, Yugoslav, Exchange, 9.Bf4" + }, + "E66a": { + "eco": "E66a", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/2pP4/2P5/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 0 8", + "hash": 1071111360046809790, + "name": "King's Indian: Fianchetto, Yugoslav Panno" + }, + "E66b": { + "eco": "E66b", + "fen": "r1bq1rk1/pp2ppbp/3p1np1/n1pP4/2P5/2N3P1/PP1NPPBP/R1BQ1RK1 b - - 2 9", + "hash": 9721278219800829502, + "name": "King's Indian: Fianchetto, Yugoslav Panno" + }, + "E66c": { + "eco": "E66c", + "fen": "r1bq1rk1/pp2ppbp/3p1np1/n1pP4/2P5/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 1 9", + "hash": 6614223173728952500, + "name": "King's Indian: Fianchetto, Yugoslav Panno" + }, + "E66d": { + "eco": "E66d", + "fen": "r1bq1rk1/pp3pbp/3p1np1/n1pPp3/2P5/2N3P1/PP1NPPBP/R1BQ1RK1 w - e6 0 10", + "hash": 14096731504382108801, + "name": "King's Indian: Fianchetto, Yugoslav Panno, 9...e5" + }, + "E66e": { + "eco": "E66e", + "fen": "r1bq1rk1/1p2ppbp/p2p1np1/n1pP4/2P5/2N3P1/PP1NPPBP/R1BQ1RK1 w - - 0 10", + "hash": 6061593288448190178, + "name": "King's Indian: Fianchetto, Yugoslav Panno, 9...a6" + }, + "E66f": { + "eco": "E66f", + "fen": "r1bq1rk1/1p2ppbp/p2p1np1/n1pP4/2P5/2N3P1/PP1NPPBP/1RBQ1RK1 b - - 1 10", + "hash": 17737860228099531366, + "name": "King's Indian: Fianchetto, Yugoslav Panno, 9...a6 10.Rb1" + }, + "E66g": { + "eco": "E66g", + "fen": "1rbq1rk1/1p2ppbp/p2p1np1/n1pP4/2P5/2N3P1/PP1NPPBP/1RBQ1RK1 w - - 2 11", + "hash": 7965216298602353932, + "name": "King's Indian: Fianchetto, Yugoslav Panno, 9...a6 10.Rb1 Rb8" + }, + "E66h": { + "eco": "E66h", + "fen": "r1bq1rk1/1p2ppbp/p2p1np1/n1pP4/2P5/2N3P1/PPQNPPBP/R1B2RK1 b - - 1 10", + "hash": 16502993230054201990, + "name": "King's Indian: Fianchetto, Yugoslav Panno, 9...a6 10.Qc2" + }, + "E66i": { + "eco": "E66i", + "fen": "1rbq1rk1/1p2ppbp/p2p1np1/n1pP4/2P5/2N3P1/PPQNPPBP/R1B2RK1 w - - 2 11", + "hash": 9053857063652830700, + "name": "King's Indian: Fianchetto, Yugoslav Panno, 9...a6 10.Qc2 Rb8" + }, + "E66j": { + "eco": "E66j", + "fen": "1rbq1rk1/1p2ppbp/p2p1np1/n1pP4/2P5/1PN3P1/P1QNPPBP/R1B2RK1 b - - 0 11", + "hash": 17366904166906939009, + "name": "King's Indian: Fianchetto, Yugoslav Panno, 9...a6 10.Qc2 Rb8 11.b3" + }, + "E66k": { + "eco": "E66k", + "fen": "1rbq1rk1/4ppbp/p2p1np1/nppP4/2P5/1PN3P1/P1QNPPBP/R1B2RK1 w - b6 0 12", + "hash": 10450542766832286652, + "name": "King's Indian: Fianchetto, Yugoslav Panno, Main Line" + }, + "E66l": { + "eco": "E66l", + "fen": "1rbq1rk1/4ppbp/p2p1np1/nppP4/2P5/1PN3P1/PBQNPPBP/R4RK1 b - - 1 12", + "hash": 5871325310456981331, + "name": "King's Indian: Fianchetto, Yugoslav Panno, Main Line, 12.Bb2" + }, + "E66m": { + "eco": "E66m", + "fen": "1rbq1rk1/5pbp/p2p1np1/nppPp3/2P5/1PN3P1/PBQNPPBP/R4RK1 w - e6 0 13", + "hash": 1455347502440308204, + "name": "King's Indian: Fianchetto, Yugoslav Panno, Main Line, 12.Bb2 e5" + }, + "E66n": { + "eco": "E66n", + "fen": "1rbq1rk1/4ppbp/p2p1np1/n1pP4/2p5/1PN3P1/PBQNPPBP/R4RK1 w - - 0 13", + "hash": 10705933947823588606, + "name": "King's Indian: Fianchetto, Yugoslav Panno, Main Line, 12.Bb2 bxc4" + }, + "E67a": { + "eco": "E67a", + "fen": "r1bq1rk1/pppnppbp/3p1np1/8/2PP4/2N2NP1/PP2PPBP/R1BQK2R w KQ - 3 7", + "hash": 13033153909283277889, + "name": "King's Indian: Fianchetto with 6...Nd7" + }, + "E67b": { + "eco": "E67b", + "fen": "r1bq1rk1/pppnppbp/3p1np1/8/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 4 7", + "hash": 14603602775811102545, + "name": "King's Indian: Fianchetto with 6...Nd7 7.O-O" + }, + "E67c": { + "eco": "E67c", + "fen": "r1bq1rk1/pp1nppbp/2pp1np1/8/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - - 0 8", + "hash": 6399763188931478762, + "name": "King's Indian: Fianchetto with 6...Nd7 7.O-O c6" + }, + "E67d": { + "eco": "E67d", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/4p3/2PP4/2N2NP1/PP2PPBP/R1BQ1RK1 w - e6 0 8", + "hash": 4670904698516336487, + "name": "King's Indian: Fianchetto, Classical Variation" + }, + "E67e": { + "eco": "E67e", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/3Pp3/2P5/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 0 8", + "hash": 18075795517947935034, + "name": "King's Indian: Fianchetto, Classical, 8.d5" + }, + "E67f": { + "eco": "E67f", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/4P3/2P5/2N2NP1/PP2PPBP/R1BQ1RK1 b - - 0 8", + "hash": 15875079085071882263, + "name": "King's Indian: Fianchetto, Classical, 8.dxe5" + }, + "E67g": { + "eco": "E67g", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/4p3/2PP4/1PN2NP1/P3PPBP/R1BQ1RK1 b - - 0 8", + "hash": 14732403887672230922, + "name": "King's Indian: Fianchetto, Classical, 8.b3" + }, + "E67h": { + "eco": "E67h", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/4p3/2PP4/2N2NP1/PPQ1PPBP/R1B2RK1 b - - 1 8", + "hash": 17423038337187500803, + "name": "King's Indian: Fianchetto, Classical, 8.Qc2" + }, + "E67i": { + "eco": "E67i", + "fen": "r1bq1rk1/pp1n1pbp/2pp1np1/4p3/2PP4/2N2NP1/PPQ1PPBP/R1B2RK1 w - - 0 9", + "hash": 7183800923994587320, + "name": "King's Indian: Fianchetto, Classical, 8.Qc2 c6" + }, + "E67j": { + "eco": "E67j", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/4p3/2PP4/2N2NPP/PP2PPB1/R1BQ1RK1 b - - 0 8", + "hash": 12115174125600188053, + "name": "King's Indian: Fianchetto, Classical, 8.h3" + }, + "E67k": { + "eco": "E67k", + "fen": "r1bqr1k1/pppn1pbp/3p1np1/4p3/2PP4/2N2NPP/PP2PPB1/R1BQ1RK1 w - - 1 9", + "hash": 13002026185550971671, + "name": "King's Indian: Fianchetto, Classical, 8.h3 Re8" + }, + "E67l": { + "eco": "E67l", + "fen": "r1bq1rk1/pp1n1pbp/2pp1np1/4p3/2PP4/2N2NPP/PP2PPB1/R1BQ1RK1 w - - 0 9", + "hash": 4205046223564436782, + "name": "King's Indian: Fianchetto, Classical, 8.h3 c6" + }, + "E68a": { + "eco": "E68a", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/4p3/2PPP3/2N2NP1/PP3PBP/R1BQ1RK1 b - e3 0 8", + "hash": 9571677922537001581, + "name": "King's Indian: Fianchetto, Classical, 8.e4" + }, + "E68b": { + "eco": "E68b", + "fen": "r1bqr1k1/pppn1pbp/3p1np1/4p3/2PPP3/2N2NP1/PP3PBP/R1BQ1RK1 w - - 1 9", + "hash": 10990094927327967215, + "name": "King's Indian: Fianchetto, Classical, 8.e4 Re8" + }, + "E68c": { + "eco": "E68c", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/8/2PpP3/2N2NP1/PP3PBP/R1BQ1RK1 w - - 0 9", + "hash": 2282028520592852600, + "name": "King's Indian: Fianchetto, Classical, 8.e4 exd4" + }, + "E68d": { + "eco": "E68d", + "fen": "r1bq1rk1/ppp2pbp/3p1np1/2n5/2PNP3/2N3P1/PP3PBP/R1BQ1RK1 w - - 1 10", + "hash": 6375165998143017244, + "name": "King's Indian: Fianchetto, Classical, 8.e4 exd4 9.Nxd4 Nc5" + }, + "E68e": { + "eco": "E68e", + "fen": "r1bqr1k1/pppn1pbp/3p1np1/8/2PNP3/2N3P1/PP3PBP/R1BQ1RK1 w - - 1 10", + "hash": 7237001770784666068, + "name": "King's Indian: Fianchetto, Classical, 8.e4 exd4 9.Nxd4 Re8" + }, + "E68f": { + "eco": "E68f", + "fen": "r1bqr1k1/pppn1pbp/3p1np1/8/2PNP3/2N3PP/PP3PB1/R1BQ1RK1 b - - 0 10", + "hash": 10132293746379585574, + "name": "King's Indian: Fianchetto, Classical, 8.e4 exd4 9.Nxd4 Re8 10.h3" + }, + "E68g": { + "eco": "E68g", + "fen": "r1bqr1k1/ppp2pbp/3p1np1/2n5/2PNP3/2N3PP/PP3PB1/R1BQ1RK1 w - - 1 11", + "hash": 12455612194339798380, + "name": "King's Indian: Fianchetto, Classical, 8.e4 exd4 9.Nxd4 Re8 10.h3 Nc5" + }, + "E68h": { + "eco": "E68h", + "fen": "r1bqr1k1/1pp2pbp/3p1np1/p1n5/2PNP3/2N3PP/PP3PB1/R1BQR1K1 w - a6 0 12", + "hash": 12571096900034435816, + "name": "King's Indian: Fianchetto, Classical, 8.e4 exd4 9.Nxd4 Re8 10.h3 Nc5 11.Re1 a5" + }, + "E68i": { + "eco": "E68i", + "fen": "r1bq1rk1/1ppn1pbp/p2p1np1/4p3/2PPP3/2N2NP1/PP3PBP/R1BQ1RK1 w - - 0 9", + "hash": 6206698782158269105, + "name": "King's Indian: Fianchetto, Classical, 8.e4 a6" + }, + "E68j": { + "eco": "E68j", + "fen": "r1bq1rk1/pp1n1pbp/2pp1np1/4p3/2PPP3/2N2NP1/PP3PBP/R1BQ1RK1 w - - 0 9", + "hash": 1634670003079119318, + "name": "King's Indian: Fianchetto, Classical, 8.e4 c6" + }, + "E68k": { + "eco": "E68k", + "fen": "r1bq1rk1/pp1n1pbp/2pp1np1/4p3/2PPP3/2N2NP1/PP3PBP/1RBQ1RK1 b - - 1 9", + "hash": 13013450928701490514, + "name": "King's Indian: Fianchetto, Classical, 8.e4 c6 9.Rb1" + }, + "E68l": { + "eco": "E68l", + "fen": "r1bq1rk1/pp1n1pbp/2pp1np1/4p3/2PPP3/1PN2NP1/P4PBP/R1BQ1RK1 b - - 0 9", + "hash": 11099653308380998331, + "name": "King's Indian: Fianchetto, Classical, 8.e4 c6 9.b3" + }, + "E69a": { + "eco": "E69a", + "fen": "r1bq1rk1/pp1n1pbp/2pp1np1/4p3/2PPP3/2N2NPP/PP3PB1/R1BQ1RK1 b - - 0 9", + "hash": 18328627981475858468, + "name": "King's Indian: Fianchetto, Classical, 9.h3" + }, + "E69b": { + "eco": "E69b", + "fen": "r1b2rk1/pp1nqpbp/2pp1np1/4p3/2PPP3/2N2NPP/PP3PB1/R1BQ1RK1 w - - 1 10", + "hash": 7323839784199906894, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Qe7" + }, + "E69c": { + "eco": "E69c", + "fen": "r1bq1rk1/1p1n1pbp/p1pp1np1/4p3/2PPP3/2N2NPP/PP3PB1/R1BQ1RK1 w - - 0 10", + "hash": 3218859846409892088, + "name": "King's Indian: Fianchetto, Classical, 9.h3 a6" + }, + "E69d": { + "eco": "E69d", + "fen": "r1bq1rk1/1p1n1pbp/2pp1np1/p3p3/2PPP3/2N2NPP/PP3PB1/R1BQ1RK1 w - a6 0 10", + "hash": 8666873791570986164, + "name": "King's Indian: Fianchetto, Classical, 9.h3 a5" + }, + "E69e": { + "eco": "E69e", + "fen": "r1bq1rk1/pp1n1pbp/2pp1np1/8/2PpP3/2N2NPP/PP3PB1/R1BQ1RK1 w - - 0 10", + "hash": 7287480094365080625, + "name": "King's Indian: Fianchetto, Classical, 9.h3 exd4" + }, + "E69f": { + "eco": "E69f", + "fen": "r1bqr1k1/pp1n1pbp/2pp1np1/8/2PNP3/2N3PP/PP3PB1/R1BQ1RK1 w - - 1 11", + "hash": 2226975683846679453, + "name": "King's Indian: Fianchetto, Classical, 9.h3 exd4 10.Nxd4 Re8" + }, + "E69g": { + "eco": "E69g", + "fen": "r1b2rk1/pp1n1pbp/2pp1np1/q3p3/2PPP3/2N2NPP/PP3PB1/R1BQ1RK1 w - - 1 10", + "hash": 2823699042575673771, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Qa5" + }, + "E69h": { + "eco": "E69h", + "fen": "r1b2rk1/pp1n1pbp/2pp1np1/q3p3/2PPP3/2N2NPP/PP3PB1/R1BQR1K1 b - - 2 10", + "hash": 11789233990051676863, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Qa5 10.Re1" + }, + "E69i": { + "eco": "E69i", + "fen": "r1b2rk1/pp1n1pbp/1qpp1np1/4p3/2PPP3/2N2NPP/PP3PB1/R1BQ1RK1 w - - 1 10", + "hash": 4153339606725336830, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Qb6" + }, + "E69j": { + "eco": "E69j", + "fen": "r1b2rk1/pp1n1pbp/1qpp1np1/2P1p3/3PP3/2N2NPP/PP3PB1/R1BQ1RK1 b - - 0 10", + "hash": 6210826750154601294, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Qb6 10.c5" + }, + "E69k": { + "eco": "E69k", + "fen": "r1b2rk1/pp1n1pbp/1qpp1np1/4p3/2PPP3/2N2NPP/PP3PB1/R1BQR1K1 b - - 2 10", + "hash": 13625551433754752490, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Qb6 10.Re1" + }, + "E69l": { + "eco": "E69l", + "fen": "r1b1r1k1/pp1n1pbp/1qpp1np1/4p3/2PPP3/2N2NPP/PP3PB1/R1BQR1K1 w - - 3 11", + "hash": 11621091982645186664, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Qb6 10.Re1 Re8" + }, + "E69m": { + "eco": "E69m", + "fen": "r1b2rk1/pp1n1pbp/1qpp1np1/8/2PpP3/2N2NPP/PP3PB1/R1BQR1K1 w - - 0 11", + "hash": 2767924129662181887, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Qb6 10.Re1 exd4" + }, + "E69n": { + "eco": "E69n", + "fen": "r1b1r1k1/pp1n1pbp/1qpp1np1/8/2PNP3/2N3PP/PP3PB1/R1BQR1K1 w - - 1 12", + "hash": 6749838427241207379, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Qb6 10.Re1 exd4 11.Nxd4 Re8" + }, + "E69o": { + "eco": "E69o", + "fen": "r1bqr1k1/pp1n1pbp/2pp1np1/4p3/2PPP3/2N2NPP/PP3PB1/R1BQ1RK1 w - - 1 10", + "hash": 16288843970549099942, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Re8" + }, + "E69p": { + "eco": "E69p", + "fen": "r1bqr1k1/pp1n1pbp/2pp1np1/4p3/2PPP3/1PN2NPP/P4PB1/R1BQ1RK1 b - - 0 10", + "hash": 7974741475937928907, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.b3" + }, + "E69q": { + "eco": "E69q", + "fen": "r1bqr1k1/pp1n1pbp/2pp1np1/4p3/2PPP3/2N1BNPP/PP3PB1/R2Q1RK1 b - - 2 10", + "hash": 10449796609082242600, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Be3" + }, + "E69r": { + "eco": "E69r", + "fen": "r1bqr1k1/pp1n1pbp/2pp1np1/8/2PpP3/2N1BNPP/PP3PB1/R2Q1RK1 w - - 0 11", + "hash": 755241498925507133, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Be3 exd4" + }, + "E69s": { + "eco": "E69s", + "fen": "r1bqr1k1/pp1n1pbp/2pp1np1/4p3/2PPP3/2N2NPP/PP3PB1/R1BQR1K1 b - - 2 10", + "hash": 7402114320126903986, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1" + }, + "E69t": { + "eco": "E69t", + "fen": "r1b1r1k1/ppqn1pbp/2pp1np1/4p3/2PPP3/2N2NPP/PP3PB1/R1BQR1K1 w - - 3 11", + "hash": 6964439557587880371, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1 Qc7" + }, + "E69u": { + "eco": "E69u", + "fen": "r1bqr1k1/1p1n1pbp/2pp1np1/p3p3/2PPP3/2N2NPP/PP3PB1/R1BQR1K1 w - a6 0 11", + "hash": 16186818873094507042, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1 a5" + }, + "E69v": { + "eco": "E69v", + "fen": "r1bqr1k1/pp1n1pbp/2pp1np1/8/2PpP3/2N2NPP/PP3PB1/R1BQR1K1 w - - 0 11", + "hash": 18286757724282950311, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1 exd4" + }, + "E69w": { + "eco": "E69w", + "fen": "r1bqr1k1/1p1n1pbp/2pp1np1/p7/2PNP3/2N3PP/PP3PB1/R1BQR1K1 w - a6 0 12", + "hash": 2038289907992595481, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1 exd4, 11...a5" + }, + "E69x": { + "eco": "E69x", + "fen": "r1bqr1k1/pp3pbp/2pp1np1/2n5/2PNP3/2N3PP/PP3PB1/R1BQR1K1 w - - 1 12", + "hash": 13408863334117000643, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1 exd4, 11...Nc5" + }, + "E69y": { + "eco": "E69y", + "fen": "r1bqr1k1/pp3pbp/2pp1np1/2n5/2PNP3/2N3PP/PP3PB1/1RBQR1K1 b - - 2 12", + "hash": 1739314384459759943, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1 exd4, 11...Nc5 12.Rb1" + }, + "E69z": { + "eco": "E69z", + "fen": "r1bqr1k1/pp3pbp/2pp1np1/2n5/2PNP3/1PN3PP/P4PB1/R1BQR1K1 b - - 0 12", + "hash": 3941699142316764846, + "name": "King's Indian: Fianchetto, Classical, 9.h3 Re8 10.Re1 exd4, 11...Nc5 12.b3" + }, + "E70a": { + "eco": "E70a", + "fen": "rnbqk2r/ppppppbp/5np1/8/2PPP3/2N5/PP3PPP/R1BQKBNR b KQkq e3 0 4", + "hash": 3628609804068937085, + "name": "King's Indian: 4.e4" + }, + "E70b": { + "eco": "E70b", + "fen": "rnbq1rk1/ppppppbp/5np1/8/2PPP3/2N5/PP3PPP/R1BQKBNR w KQ - 1 5", + "hash": 4103769729743631510, + "name": "King's Indian: 4.e4 O-O" + }, + "E70c": { + "eco": "E70c", + "fen": "rnbq1rk1/ppppppbp/5np1/4P3/2PP4/2N5/PP3PPP/R1BQKBNR b KQ - 0 5", + "hash": 6452130144864735986, + "name": "King's Indian: 4.e4 O-O 5.e5" + }, + "E70d": { + "eco": "E70d", + "fen": "rnbq1rk1/ppppppbp/5np1/8/2PPP3/2N2N2/PP3PPP/R1BQKB1R b KQ - 2 5", + "hash": 16399691080472778155, + "name": "King's Indian: 4.e4 O-O 5.Nf3" + }, + "E70e": { + "eco": "E70e", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/2PPP3/2N5/PP3PPP/R1BQKBNR w KQkq - 0 5", + "hash": 856245803574826000, + "name": "King's Indian: 4.e4 d6" + }, + "E70f": { + "eco": "E70f", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/2PPP3/2N5/PP2NPPP/R1BQKB1R b KQkq - 1 5", + "hash": 2253230049510824430, + "name": "King's Indian: Kramer" + }, + "E70g": { + "eco": "E70g", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP3/2N5/PP2NPPP/R1BQKB1R w KQ - 2 6", + "hash": 1580193361406324741, + "name": "King's Indian: Kramer, 5...O-O" + }, + "E70h": { + "eco": "E70h", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP3/2N3N1/PP3PPP/R1BQKB1R b KQ - 3 6", + "hash": 14314827408896882815, + "name": "King's Indian: Kramer, 5...O-O 6.Ng3" + }, + "E70i": { + "eco": "E70i", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/4p3/2PPP3/2N3N1/PP3PPP/R1BQKB1R w KQ e6 0 7", + "hash": 5535051373646118985, + "name": "King's Indian: Kramer, 5...O-O 6.Ng3 e5" + }, + "E70j": { + "eco": "E70j", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/2PPP3/2NB4/PP3PPP/R1BQK1NR b KQkq - 1 5", + "hash": 6839946008307160675, + "name": "King's Indian: 4.e4 d6 5.Bd3" + }, + "E70k": { + "eco": "E70k", + "fen": "rnbqk2r/ppp2pbp/3p1np1/4p3/2PPP3/2NB4/PP3PPP/R1BQK1NR w KQkq e6 0 6", + "hash": 15317963809442377301, + "name": "King's Indian: 4.e4 d6 5.Bd3 e5" + }, + "E70l": { + "eco": "E70l", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP3/2NB4/PP3PPP/R1BQK1NR w KQ - 2 6", + "hash": 6072175081027944328, + "name": "King's Indian: 4.e4 d6 5.Bd3 O-O" + }, + "E70m": { + "eco": "E70m", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP3/2NB4/PP2NPPP/R1BQK2R b KQ - 3 6", + "hash": 4674834129463620214, + "name": "King's Indian: 4.e4 d6 5.Bd3 O-O 6.Nge2" + }, + "E70n": { + "eco": "E70n", + "fen": "r1bq1rk1/ppp1ppbp/2np1np1/8/2PPP3/2NB4/PP2NPPP/R1BQK2R w KQ - 4 7", + "hash": 16937334774284719989, + "name": "King's Indian: 4.e4 d6 5.Bd3 O-O 6.Nge2 Nc6" + }, + "E70o": { + "eco": "E70o", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p5/2PPP3/2NB4/PP2NPPP/R1BQK2R w KQ c6 0 7", + "hash": 12002525603191994635, + "name": "King's Indian: 4.e4 d6 5.Bd3 O-O 6.Nge2 c5" + }, + "E70p": { + "eco": "E70p", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2pP4/2P1P3/2NB4/PP2NPPP/R1BQK2R b KQ - 0 7", + "hash": 2060900552697229142, + "name": "King's Indian: 4.e4 d6 5.Bd3 O-O 6.Nge2 c5 7.d5" + }, + "E70q": { + "eco": "E70q", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/4p3/2PPP3/2NB4/PP2NPPP/R1BQK2R w KQ e6 0 7", + "hash": 14598506796313791040, + "name": "King's Indian: 4.e4 d6 5.Bd3 O-O 6.Nge2 e5" + }, + "E70r": { + "eco": "E70r", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/3Pp3/2P1P3/2NB4/PP2NPPP/R1BQK2R b KQ - 0 7", + "hash": 8111004671567354909, + "name": "King's Indian: 4.e4 d6 5.Bd3 O-O 6.Nge2 e5 7.d5" + }, + "E70s": { + "eco": "E70s", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/6B1/2PPP3/2N5/PP3PPP/R2QKBNR b KQkq - 1 5", + "hash": 14824627536003452888, + "name": "King's Indian: Accelerated Averbakh System" + }, + "E70t": { + "eco": "E70t", + "fen": "rnbqk2r/ppp1ppb1/3p1npp/6B1/2PPP3/2N5/PP3PPP/R2QKBNR w KQkq - 0 6", + "hash": 6867113489083762381, + "name": "King's Indian: Accelerated Averbakh, 5...h6" + }, + "E70u": { + "eco": "E70u", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/6B1/2PPP3/2N5/PP3PPP/R2QKBNR w KQ - 2 6", + "hash": 14344885675498415667, + "name": "King's Indian: Accelerated Averbakh, 5...O-O" + }, + "E70v": { + "eco": "E70v", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/6B1/2PPP3/2N5/PP1Q1PPP/R3KBNR b KQ - 3 6", + "hash": 17224872243076921747, + "name": "King's Indian: Accelerated Averbakh, 5...O-O 6.Qd2" + }, + "E71a": { + "eco": "E71a", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/2PPP3/2N4P/PP3PP1/R1BQKBNR b KQkq - 0 5", + "hash": 16362178584101314018, + "name": "King's Indian: Makagonov System" + }, + "E71b": { + "eco": "E71b", + "fen": "rnbqk2r/pp2ppbp/3p1np1/2p5/2PPP3/2N4P/PP3PP1/R1BQKBNR w KQkq c6 0 6", + "hash": 388421267350083231, + "name": "King's Indian: Makagonov, 5...c5" + }, + "E71c": { + "eco": "E71c", + "fen": "r1bqk2r/pppnppbp/3p1np1/8/2PPP3/2N4P/PP3PP1/R1BQKBNR w KQkq - 1 6", + "hash": 15055913876614033454, + "name": "King's Indian: Makagonov, 5...Nbd7" + }, + "E71d": { + "eco": "E71d", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP3/2N4P/PP3PP1/R1BQKBNR w KQ - 1 6", + "hash": 16842001409192047625, + "name": "King's Indian: Makagonov, 5...O-O" + }, + "E71e": { + "eco": "E71e", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP3/2N1B2P/PP3PP1/R2QKBNR b KQ - 2 6", + "hash": 11147100533196533639, + "name": "King's Indian: Makagonov, 5...O-O 6.Be3" + }, + "E71f": { + "eco": "E71f", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/4p3/2PPP3/2N1B2P/PP3PP1/R2QKBNR w KQ e6 0 7", + "hash": 1209916522027997105, + "name": "King's Indian: Makagonov, 5...O-O 6.Be3 e5" + }, + "E71g": { + "eco": "E71g", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/6B1/2PPP3/2N4P/PP3PP1/R2QKBNR b KQ - 2 6", + "hash": 3449924690331561921, + "name": "King's Indian: Makagonov, 5...O-O 6.Bg5" + }, + "E71h": { + "eco": "E71h", + "fen": "rnbq1rk1/pp2ppbp/2pp1np1/6B1/2PPP3/2N4P/PP3PP1/R2QKBNR w KQ - 0 7", + "hash": 13662361978391182458, + "name": "King's Indian: Makagonov, 5...O-O 6.Bg5 c6" + }, + "E71i": { + "eco": "E71i", + "fen": "rnbq1rk1/ppp1ppb1/3p1npp/6B1/2PPP3/2N4P/PP3PP1/R2QKBNR w KQ - 0 7", + "hash": 13625591592455481044, + "name": "King's Indian: Makagonov, 5...O-O 6.Bg5 h6" + }, + "E71j": { + "eco": "E71j", + "fen": "r1bq1rk1/pppnppbp/3p1np1/6B1/2PPP3/2N4P/PP3PP1/R2QKBNR w KQ - 3 7", + "hash": 2018707093097742861, + "name": "King's Indian: Makagonov, 5...O-O 6.Bg5 Nbd7" + }, + "E71k": { + "eco": "E71k", + "fen": "r1bq1rk1/ppp1ppbp/n2p1np1/6B1/2PPP3/2N4P/PP3PP1/R2QKBNR w KQ - 3 7", + "hash": 7016665027699569533, + "name": "King's Indian: Makagonov, 5...O-O 6.Bg5 Na6" + }, + "E71l": { + "eco": "E71l", + "fen": "r1bq1rk1/ppp1ppbp/n2p1np1/6B1/2PPP3/2NB3P/PP3PP1/R2QK1NR b KQ - 4 7", + "hash": 3777836227813749006, + "name": "King's Indian: Makagonov, 5...O-O 6.Bg5 Na6 7.Bd3" + }, + "E71m": { + "eco": "E71m", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p3B1/2PPP3/2N4P/PP3PP1/R2QKBNR w KQ c6 0 7", + "hash": 14524471176644322492, + "name": "King's Indian: Makagonov, 5...O-O 6.Bg5 c5" + }, + "E71n": { + "eco": "E71n", + "fen": "rnbq1rk1/p3ppbp/3p1np1/1ppP2B1/2P1P3/2N4P/PP3PP1/R2QKBNR w KQ b6 0 8", + "hash": 1413392316491878364, + "name": "King's Indian: Makagonov, 5...O-O 6.Bg5 c5 7.d5 b5" + }, + "E71o": { + "eco": "E71o", + "fen": "rnbq1rk1/pp3pbp/3ppnp1/2pP2B1/2P1P3/2N4P/PP3PP1/R2QKBNR w KQ - 0 8", + "hash": 427552751355749043, + "name": "King's Indian: Makagonov, 5...O-O 6.Bg5 c5 7.d5 e6" + }, + "E72": { + "eco": "E72", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/2PPP3/2N3P1/PP3P1P/R1BQKBNR b KQkq - 0 5", + "hash": 2812291553088293928, + "name": "King's Indian: 4.e4 d6 5.g3" + }, + "E73a": { + "eco": "E73a", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/2PPP3/2N5/PP2BPPP/R1BQK1NR b KQkq - 1 5", + "hash": 8674351781538062003, + "name": "King's Indian: 5.Be2" + }, + "E73b": { + "eco": "E73b", + "fen": "rnbqk2r/pp2ppbp/3p1np1/2p5/2PPP3/2N5/PP2BPPP/R1BQK1NR w KQkq c6 0 6", + "hash": 11389794027132769742, + "name": "King's Indian: 5.Be2 c5" + }, + "E73c": { + "eco": "E73c", + "fen": "rnbqk2r/ppp2pbp/3p1np1/4p3/2PPP3/2N5/PP2BPPP/R1BQK1NR w KQkq e6 0 6", + "hash": 17445102956641756805, + "name": "King's Indian: 5.Be2 e5" + }, + "E73d": { + "eco": "E73d", + "fen": "rnbqk2r/ppp2pbp/3p1np1/3Pp3/2P1P3/2N5/PP2BPPP/R1BQK1NR b KQkq - 0 6", + "hash": 5192993304598884568, + "name": "King's Indian: 5.Be2 e5 6.d5" + }, + "E73e": { + "eco": "E73e", + "fen": "r1bqk2r/pppnppbp/3p1np1/8/2PPP3/2N5/PP2BPPP/R1BQK1NR w KQkq - 2 6", + "hash": 5440919689833395071, + "name": "King's Indian: 5.Be2 Nbd7" + }, + "E73f": { + "eco": "E73f", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP3/2N5/PP2BPPP/R1BQK1NR w KQ - 2 6", + "hash": 8271301943125849944, + "name": "King's Indian: 5.Be2 O-O" + }, + "E73g": { + "eco": "E73g", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP1P1/2N5/PP2BP1P/R1BQK1NR b KQ g3 0 6", + "hash": 15097350857764002373, + "name": "King's Indian: 5.Be2 O-O 6.g4" + }, + "E73h": { + "eco": "E73h", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP3/2N1B3/PP2BPPP/R2QK1NR b KQ - 3 6", + "hash": 126429164633435350, + "name": "King's Indian: Semi-Averbakh System" + }, + "E73i": { + "eco": "E73i", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/6B1/2PPP3/2N5/PP2BPPP/R2QK1NR b KQ - 3 6", + "hash": 13011961992712907920, + "name": "King's Indian: Averbakh" + }, + "E73j": { + "eco": "E73j", + "fen": "rnbq1rk1/pp2ppbp/2pp1np1/6B1/2PPP3/2N5/PP2BPPP/R2QK1NR w KQ - 0 7", + "hash": 2803820151249157931, + "name": "King's Indian: Averbakh, 6...c6" + }, + "E73k": { + "eco": "E73k", + "fen": "rnbq1rk1/pp2ppbp/2pp1np1/6B1/2PPP3/2N5/PP1QBPPP/R3K1NR b KQ - 1 7", + "hash": 1076751862724583563, + "name": "King's Indian: Averbakh, 6...c6 7.Qd2" + }, + "E73l": { + "eco": "E73l", + "fen": "r1bq1rk1/pp1nppbp/2pp1np1/6B1/2PPP3/2N5/PP1QBPPP/R3K1NR w KQ - 2 8", + "hash": 4400614148322921799, + "name": "King's Indian: Averbakh, 6...c6 7.Qd2 Nbd7" + }, + "E73m": { + "eco": "E73m", + "fen": "r1bq1rk1/pppnppbp/3p1np1/6B1/2PPP3/2N5/PP2BPPP/R2QK1NR w KQ - 4 7", + "hash": 9759508338019762524, + "name": "King's Indian: Averbakh, 6...Nbd7" + }, + "E73n": { + "eco": "E73n", + "fen": "r1bq1rk1/pppnppbp/3p1np1/6B1/2PPP3/2N5/PP1QBPPP/R3K1NR b KQ - 5 7", + "hash": 12639619191265582844, + "name": "King's Indian: Averbakh, 6...Nbd7 7.Qd2" + }, + "E73o": { + "eco": "E73o", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/4p1B1/2PPP3/2N5/PP1QBPPP/R3K1NR w KQ e6 0 8", + "hash": 2670910441634244298, + "name": "King's Indian: Averbakh, 6...Nbd7 7.Qd2 e5" + }, + "E73p": { + "eco": "E73p", + "fen": "r1bq1rk1/ppp1ppbp/n2p1np1/6B1/2PPP3/2N5/PP2BPPP/R2QK1NR w KQ - 4 7", + "hash": 18019867400601006124, + "name": "King's Indian: Averbakh, 6...Na6" + }, + "E73q": { + "eco": "E73q", + "fen": "r1bq1rk1/ppp1ppbp/n2p1np1/6B1/2PPP2P/2N5/PP2BPP1/R2QK1NR b KQ h3 0 7", + "hash": 7399680015564638546, + "name": "King's Indian: Averbakh, 6...Na6 7.h4" + }, + "E73r": { + "eco": "E73r", + "fen": "r1bq1rk1/ppp1ppbp/n2p1np1/6B1/2PPP3/2N5/PP1QBPPP/R3K1NR b KQ - 5 7", + "hash": 15135228779993968524, + "name": "King's Indian: Averbakh, 6...Na6 7.Qd2" + }, + "E73s": { + "eco": "E73s", + "fen": "r1bq1rk1/ppp2pbp/n2p1np1/4p1B1/2PPP3/2N5/PP1QBPPP/R3K1NR w KQ e6 0 8", + "hash": 6373484249519675322, + "name": "King's Indian: Averbakh, 6...Na6 7.Qd2 e5" + }, + "E73t": { + "eco": "E73t", + "fen": "r1bq1rk1/pp3pbp/n1pp1np1/3Pp1B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9", + "hash": 8070877781850624604, + "name": "King's Indian: Averbakh, 6...Na6 7.Qd2 e5 8.d5 c6" + }, + "E73u": { + "eco": "E73u", + "fen": "r1b1qrk1/ppp2pbp/n2p1np1/3Pp1B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 1 9", + "hash": 1872060836544930906, + "name": "King's Indian: Averbakh, 6...Na6 7.Qd2 e5 8.d5 Qe8" + }, + "E73v": { + "eco": "E73v", + "fen": "rnbq1rk1/ppp1ppb1/3p1npp/6B1/2PPP3/2N5/PP2BPPP/R2QK1NR w KQ - 0 7", + "hash": 2766491219849454981, + "name": "King's Indian: Averbakh, 6...h6" + }, + "E73w": { + "eco": "E73w", + "fen": "rnbq1rk1/ppp1ppb1/3p1npp/8/2PPP3/2N1B3/PP2BPPP/R2QK1NR b KQ - 1 7", + "hash": 7773291486020001994, + "name": "King's Indian: Averbakh, 6...h6 7.Be3" + }, + "E73x": { + "eco": "E73x", + "fen": "rnbq1rk1/pp2ppb1/3p1npp/2p5/2PPP3/2N1B3/PP2BPPP/R2QK1NR w KQ c6 0 8", + "hash": 10201100403832875959, + "name": "King's Indian: Averbakh, 6...h6 7.Be3 c5" + }, + "E73y": { + "eco": "E73y", + "fen": "rnbq1rk1/ppp2pb1/3p1npp/4p3/2PPP3/2N1B3/PP2BPPP/R2QK1NR w KQ e6 0 8", + "hash": 16255829859961379068, + "name": "King's Indian: Averbakh, 6...h6 7.Be3 e5" + }, + "E73z": { + "eco": "E73z", + "fen": "r1bq1rk1/pppn1pb1/3p1npp/3Pp3/2P1P3/2N1B3/PP2BPPP/R2QK1NR w KQ - 1 9", + "hash": 7526490446376330093, + "name": "King's Indian: Averbakh, 6...h6 7.Be3 e5 8.d5 Nbd7" + }, + "E74a": { + "eco": "E74a", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p3B1/2PPP3/2N5/PP2BPPP/R2QK1NR w KQ c6 0 7", + "hash": 5972362251016759277, + "name": "King's Indian: Averbakh, 6...c5" + }, + "E74b": { + "eco": "E74b", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2P3B1/2P1P3/2N5/PP2BPPP/R2QK1NR b KQ - 0 7", + "hash": 3242931497624285313, + "name": "King's Indian: Averbakh, 6...c5 7.dxc5" + }, + "E74c": { + "eco": "E74c", + "fen": "rn3rk1/pp2ppbp/3p1np1/2q5/2P1P1b1/2N2N2/PP1BBPPP/R2QK2R w KQ - 2 10", + "hash": 8834001719645622504, + "name": "King's Indian: Averbakh, 6...c5 7.dxc5 Qa5 8.Bd2 Qxc5 9.Nf3 Bg4" + }, + "E74d": { + "eco": "E74d", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2pP2B1/2P1P3/2N5/PP2BPPP/R2QK1NR b KQ - 0 7", + "hash": 16783319872513307056, + "name": "King's Indian: Averbakh, 6...c5 7.d5" + }, + "E74e": { + "eco": "E74e", + "fen": "rnb2rk1/pp2ppbp/3p1np1/q1pP2B1/2P1P3/2N5/PP2BPPP/R2QK1NR w KQ - 1 8", + "hash": 3574100926603644991, + "name": "King's Indian: Averbakh, 6...c5 7.d5 Qa5" + }, + "E74f": { + "eco": "E74f", + "fen": "rnbq1rk1/p3ppbp/3p1np1/1ppP2B1/2P1P3/2N5/PP2BPPP/R2QK1NR w KQ b6 0 8", + "hash": 9866892643475475597, + "name": "King's Indian: Averbakh, 6...c5 7.d5 b5" + }, + "E74g": { + "eco": "E74g", + "fen": "rnbq1rk1/1p2ppbp/p2p1np1/2pP2B1/2P1P3/2N5/PP2BPPP/R2QK1NR w KQ - 0 8", + "hash": 4187685143873849708, + "name": "King's Indian: Averbakh, 6...c5 7.d5 a6" + }, + "E74h": { + "eco": "E74h", + "fen": "rnbq1rk1/1p2ppbp/p2p1np1/2pP2B1/P1P1P3/2N5/1P2BPPP/R2QK1NR b KQ a3 0 8", + "hash": 5896579288523332770, + "name": "King's Indian: Averbakh, 6...c5 7.d5 a6 8.a4" + }, + "E74i": { + "eco": "E74i", + "fen": "rnb2rk1/1p2ppbp/p2p1np1/q1pP2B1/P1P1P3/2N5/1P2BPPP/R2QK1NR w KQ - 1 9", + "hash": 9846925716995308845, + "name": "King's Indian: Averbakh, 6...c5 7.d5 a6 8.a4 Qa5" + }, + "E74j": { + "eco": "E74j", + "fen": "rnbq1rk1/pp2ppb1/3p1npp/2pP2B1/2P1P3/2N5/PP2BPPP/R2QK1NR w KQ - 0 8", + "hash": 8799224319776176293, + "name": "King's Indian: Averbakh, 6...c5 7.d5 h6" + }, + "E74k": { + "eco": "E74k", + "fen": "rnbq1rk1/pp2ppb1/3p1npp/2pP4/2P1P3/2N1B3/PP2BPPP/R2QK1NR b KQ - 1 8", + "hash": 4006468186322763242, + "name": "King's Indian: Averbakh, 6...c5 7.d5 h6 8.Be3" + }, + "E74l": { + "eco": "E74l", + "fen": "rnbq1rk1/pp3pb1/3ppnpp/2pP4/2P1P3/2N1B3/PP2BPPP/R2QK1NR w KQ - 0 9", + "hash": 4750778257308741048, + "name": "King's Indian: Averbakh, 6...c5 7.d5 h6 8.Be3 e6" + }, + "E74m": { + "eco": "E74m", + "fen": "rnbq1rk1/pp3pb1/3ppnpp/2pP4/2P1P3/2N1B3/PP1QBPPP/R3K1NR b KQ - 1 9", + "hash": 7635404740338168344, + "name": "King's Indian: Averbakh, 6...c5 7.d5 h6 8.Be3 e6 9.Qd2" + }, + "E74n": { + "eco": "E74n", + "fen": "rnbq1rk1/pp2ppb1/3p1npp/2pP4/2P1PB2/2N5/PP2BPPP/R2QK1NR b KQ - 1 8", + "hash": 11512758636240768007, + "name": "King's Indian: Averbakh, 6...c5 7.d5 h6 8.Bf4" + }, + "E74o": { + "eco": "E74o", + "fen": "rnbq1rk1/pp3pb1/3ppnpp/2pP4/2P1PB2/2N5/PP2BPPP/R2QK1NR w KQ - 0 9", + "hash": 16839656967274470485, + "name": "King's Indian: Averbakh, 6...c5 7.d5 h6 8.Bf4 e6" + }, + "E75a": { + "eco": "E75a", + "fen": "rnbq1rk1/pp3pbp/3ppnp1/2pP2B1/2P1P3/2N5/PP2BPPP/R2QK1NR w KQ - 0 8", + "hash": 11429474710770573794, + "name": "King's Indian: Averbakh, 7.d5 e6" + }, + "E75b": { + "eco": "E75b", + "fen": "rnbq1rk1/pp3pbp/3ppnp1/2pP2B1/2P1P3/2N2N2/PP2BPPP/R2QK2R b KQ - 1 8", + "hash": 5042142930382094559, + "name": "King's Indian: Averbakh, 7.d5 e6 8.Nf3" + }, + "E75c": { + "eco": "E75c", + "fen": "rnbq1rk1/pp3pb1/3ppnpp/2pP2B1/2P1P3/2N2N2/PP2BPPP/R2QK2R w KQ - 0 9", + "hash": 15496324611086764490, + "name": "King's Indian: Averbakh, 7.d5 e6 8.Nf3 h6" + }, + "E75d": { + "eco": "E75d", + "fen": "rnbq1rk1/pp3pb1/3ppnpp/2pP4/2P1P2B/2N2N2/PP2BPPP/R2QK2R b KQ - 1 9", + "hash": 10196547452946246481, + "name": "King's Indian: Averbakh, 7.d5 e6 8.Nf3 h6 9.Bh4" + }, + "E75e": { + "eco": "E75e", + "fen": "rnbq1rk1/pp3pb1/3p1npp/2pP4/4P2B/2N2N2/PP2BPPP/R2QK2R b KQ - 0 10", + "hash": 13600637689009127303, + "name": "King's Indian: Averbakh, 7.d5 e6 8.Nf3 h6 9.Bh4 exd5 10.cxd5" + }, + "E75f": { + "eco": "E75f", + "fen": "rnbq1rk1/pp3pbp/3ppnp1/2pP2B1/2P1P3/2N5/PP1QBPPP/R3K1NR b KQ - 1 8", + "hash": 13152174740534967874, + "name": "King's Indian: Averbakh, 7.d5 e6 8.Qd2" + }, + "E75g": { + "eco": "E75g", + "fen": "rnbq1rk1/pp3pbp/3p1np1/2pp2B1/2P1P3/2N5/PP1QBPPP/R3K1NR w KQ - 0 9", + "hash": 9912758106525695625, + "name": "King's Indian: Averbakh, 7.d5 e6 8.Qd2 exd5" + }, + "E75h": { + "eco": "E75h", + "fen": "rnbq1rk1/1p3pbp/p2p1np1/2pP2B1/2P5/2N5/PP1QBPPP/R3K1NR w KQ - 0 10", + "hash": 8987438026168321107, + "name": "King's Indian: Averbakh, 7.d5 e6 8.Qd2 exd5 9.exd5 a6" + }, + "E75i": { + "eco": "E75i", + "fen": "rnbqr1k1/pp3pbp/3p1np1/2pP2B1/2P5/2N5/PP1QBPPP/R3K1NR w KQ - 1 10", + "hash": 12835256703478520077, + "name": "King's Indian: Averbakh, 7.d5 e6 8.Qd2 exd5 9.exd5 Re8" + }, + "E75j": { + "eco": "E75j", + "fen": "rn1qr1k1/pp3pbp/3p1np1/2pP2B1/2P3b1/2N2N2/PP1QBPPP/R3K2R w KQ - 3 11", + "hash": 7757691372729710298, + "name": "King's Indian: Averbakh, 7.d5 e6 8.Qd2 exd5 9.exd5 Re8 10.Nf3 Bg4" + }, + "E76a": { + "eco": "E76a", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/2PPPP2/2N5/PP4PP/R1BQKBNR b KQkq f3 0 5", + "hash": 17795835425796794777, + "name": "King's Indian: Four Pawns Attack" + }, + "E76b": { + "eco": "E76b", + "fen": "rnbqk2r/pp2ppbp/3p1np1/2p5/2PPPP2/2N5/PP4PP/R1BQKBNR w KQkq c6 0 6", + "hash": 1190731125872992996, + "name": "King's Indian: Four Pawns Attack, 5...c5" + }, + "E76c": { + "eco": "E76c", + "fen": "rnbqk2r/pp2ppbp/3p1np1/2pP4/2P1PP2/2N5/PP4PP/R1BQKBNR b KQkq - 0 6", + "hash": 12289779081579312313, + "name": "King's Indian: Four Pawns Attack, 5...c5 6.d5" + }, + "E76d": { + "eco": "E76d", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPPP2/2N5/PP4PP/R1BQKBNR w KQ - 1 6", + "hash": 18185376688063889522, + "name": "King's Indian: Four Pawns Attack, 5...O-O" + }, + "E76e": { + "eco": "E76e", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPPP2/2N2N2/PP4PP/R1BQKB1R b KQ - 2 6", + "hash": 2826997541572288847, + "name": "King's Indian: Four Pawns Attack, 5...O-O 6.Nf3" + }, + "E76f": { + "eco": "E76f", + "fen": "r1bq1rk1/ppp1ppbp/n2p1np1/8/2PPPP2/2N2N2/PP4PP/R1BQKB1R w KQ - 3 7", + "hash": 7618728110064549363, + "name": "King's Indian: Four Pawns Attack, 6.Nf3 Na6" + }, + "E76g": { + "eco": "E76g", + "fen": "r1bq1rk1/ppp1ppbp/n2p1np1/4P3/2PP1P2/2N2N2/PP4PP/R1BQKB1R b KQ - 0 7", + "hash": 631135225156475799, + "name": "King's Indian: Four Pawns Attack, 6.Nf3 Na6 7.e5" + }, + "E76h": { + "eco": "E76h", + "fen": "r1bq1rk1/ppp1ppbp/n2p1np1/8/2PPPP2/2N2N2/PP2B1PP/R1BQK2R b KQ - 4 7", + "hash": 1890292625518065488, + "name": "King's Indian: Four Pawns Attack, 6.Nf3 Na6 7.Be2" + }, + "E76i": { + "eco": "E76i", + "fen": "r1bq1rk1/ppp1ppbp/n2p1np1/8/2PPPP2/2NB1N2/PP4PP/R1BQK2R b KQ - 4 7", + "hash": 4374835251712556928, + "name": "King's Indian: Four Pawns Attack, 6.Nf3 Na6 7.Bd3" + }, + "E76j": { + "eco": "E76j", + "fen": "r1bq1rk1/ppp2pbp/n2p1np1/4p3/2PPPP2/2NB1N2/PP4PP/R1BQK2R w KQ e6 0 8", + "hash": 13172608008008173494, + "name": "King's Indian: Four Pawns Attack, 6.Nf3 Na6 7.Bd3 e5" + }, + "E76k": { + "eco": "E76k", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p5/2PPPP2/2N2N2/PP4PP/R1BQKB1R w KQ c6 0 7", + "hash": 13928035953061308978, + "name": "King's Indian: Four Pawns Attack, 6.Nf3 c5" + }, + "E76l": { + "eco": "E76l", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2P5/2P1PP2/2N2N2/PP4PP/R1BQKB1R b KQ - 0 7", + "hash": 13738635520501284190, + "name": "King's Indian: Four Pawns Attack, 6.Nf3 c5 7.dxc5" + }, + "E76m": { + "eco": "E76m", + "fen": "r1b2rk1/pp2ppbp/2np1np1/2q5/2P1PP2/2NB1N2/PP2Q1PP/R1B1K2R w KQ - 2 10", + "hash": 5719592938926275537, + "name": "King's Indian: Four Pawns Attack, 6.Nf3 c5 7.dxc5 Qa5 8.Bd3 Qxc5 9.Qe2 Nc6" + }, + "E76n": { + "eco": "E76n", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2pP4/2P1PP2/2N2N2/PP4PP/R1BQKB1R b KQ - 0 7", + "hash": 8881680881265163375, + "name": "King's Indian: Four Pawns Attack, 6.Nf3 c5 7.d5" + }, + "E76o": { + "eco": "E76o", + "fen": "rnbq1rk1/1p2ppbp/p2p1np1/2pP4/2P1PP2/2N2N2/PP4PP/R1BQKB1R w KQ - 0 8", + "hash": 12228926961813079219, + "name": "King's Indian: Four Pawns Attack, 6.Nf3 c5 7.d5 a6" + }, + "E76p": { + "eco": "E76p", + "fen": "rnbq1rk1/p3ppbp/3p1np1/1ppP4/2P1PP2/2N2N2/PP4PP/R1BQKB1R w KQ b6 0 8", + "hash": 1965394222229848402, + "name": "King's Indian: Four Pawns Attack, 6.Nf3 c5 7.d5 b5" + }, + "E76q": { + "eco": "E76q", + "fen": "rnbq1rk1/4ppbp/p2p1np1/1PpP4/P3PP2/2N2N2/1P4PP/R1BQKB1R b KQ a3 0 9", + "hash": 6030569181314573591, + "name": "King's Indian: Four Pawns Attack, 6.Nf3 c5 7.d5 b5 8.cxb5 a6 9.a4" + }, + "E76r": { + "eco": "E76r", + "fen": "rnbq1rk1/pp3pbp/3ppnp1/2pP4/2P1PP2/2N2N2/PP4PP/R1BQKB1R w KQ - 0 8", + "hash": 951917057838066749, + "name": "King's Indian: Four Pawns Attack, 6.Nf3 c5 7.d5 e6" + }, + "E77": { + "eco": "E77", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPPP2/2N5/PP2B1PP/R1BQK1NR b KQ - 2 6", + "hash": 10367264654225476305, + "name": "King's Indian: Four Pawns Attack, 6.Be2" + }, + "E78": { + "eco": "E78", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p5/2PPPP2/2N2N2/PP2B1PP/R1BQK2R b KQ - 1 7", + "hash": 12883339614184792209, + "name": "King's Indian: Four Pawns Attack, 7.Nf3" + }, + "E79a": { + "eco": "E79a", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/8/2PNPP2/2N1B3/PP2B1PP/R2QK2R b KQ - 2 9", + "hash": 5955260057030338036, + "name": "King's Indian: Four Pawns Attack, Main Line" + }, + "E79b": { + "eco": "E79b", + "fen": "r1bq1rk1/pp2ppbp/3p1np1/8/2PnPP2/2N1B3/PP2B1PP/R2QK2R w KQ - 0 10", + "hash": 18430648315884117175, + "name": "King's Indian: Four Pawns Attack, Main Line, 9...Nxd4" + }, + "E79c": { + "eco": "E79c", + "fen": "r1bq1rk1/pp2ppbp/2np2p1/8/2PNPPn1/2N1B3/PP2B1PP/R2QK2R w KQ - 3 10", + "hash": 14953655135699940504, + "name": "King's Indian: Four Pawns Attack, Main Line, 9...Ng4" + }, + "E79d": { + "eco": "E79d", + "fen": "r2q1rk1/pp2ppbp/2np1np1/8/2PNPPb1/2N1B3/PP2B1PP/R2QK2R w KQ - 3 10", + "hash": 5797996712406067998, + "name": "King's Indian: Four Pawns Attack, Main Line, 9...Bg4" + }, + "E79e": { + "eco": "E79e", + "fen": "r2q1rk1/pp1bppbp/2np1np1/8/2PNPP2/2N1B3/PP2B1PP/R2QK2R w KQ - 3 10", + "hash": 12710472249216824773, + "name": "King's Indian: Four Pawns Attack, Main Line, 9...Bd7" + }, + "E79f": { + "eco": "E79f", + "fen": "r2q1rk1/pp1bppbp/2np1np1/8/2PNPP2/2N1B3/PP2B1PP/R2Q1RK1 b - - 4 10", + "hash": 14848878276150341333, + "name": "King's Indian: Four Pawns Attack, Main Line, 9...Bd7 10.O-O" + }, + "E80a": { + "eco": "E80a", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/2PPP3/2N2P2/PP4PP/R1BQKBNR b KQkq - 0 5", + "hash": 7300362707947354977, + "name": "King's Indian: Smisch Variation" + }, + "E80b": { + "eco": "E80b", + "fen": "r1bqk2r/ppp1ppbp/n2p1np1/8/2PPP3/2N2P2/PP4PP/R1BQKBNR w KQkq - 1 6", + "hash": 3157219759255873501, + "name": "King's Indian: Smisch, 5...Na6" + }, + "E80c": { + "eco": "E80c", + "fen": "r1bqk2r/ppp1ppbp/2np1np1/8/2PPP3/2N2P2/PP4PP/R1BQKBNR w KQkq - 1 6", + "hash": 14897276267868216930, + "name": "King's Indian: Smisch, 5...Nc6" + }, + "E80d": { + "eco": "E80d", + "fen": "r1bqk2r/pppnppbp/3p1np1/8/2PPP3/2N2P2/PP4PP/R1BQKBNR w KQkq - 1 6", + "hash": 6247445314729219757, + "name": "King's Indian: Smisch, 5...Nbd7" + }, + "E80e": { + "eco": "E80e", + "fen": "rnbqk2r/ppp2pbp/3p1np1/4p3/2PPP3/2N2P2/PP4PP/R1BQKBNR w KQkq e6 0 6", + "hash": 17233043209703129943, + "name": "King's Indian: Smisch, 5...e5" + }, + "E80f": { + "eco": "E80f", + "fen": "rnbqk2r/ppp2pbp/3p1np1/4p3/2PPP3/2N2P2/PP2N1PP/R1BQKB1R b KQkq - 1 6", + "hash": 18126138240682102441, + "name": "King's Indian: Smisch, 5...e5 6.Nge2" + }, + "E80g": { + "eco": "E80g", + "fen": "rnbqk2r/ppp2pbp/3p1np1/3Pp3/2P1P3/2N2P2/PP4PP/R1BQKBNR b KQkq - 0 6", + "hash": 6133993046652917002, + "name": "King's Indian: Smisch, 5...e5 6.d5" + }, + "E80h": { + "eco": "E80h", + "fen": "rnbqk2r/pp2ppbp/3p1np1/2p5/2PPP3/2N2P2/PP4PP/R1BQKBNR w KQkq c6 0 6", + "hash": 9449054060405780508, + "name": "King's Indian: Smisch, 5...c5" + }, + "E80i": { + "eco": "E80i", + "fen": "rnbk3r/pp2ppbp/5np1/2p5/2P1P3/2N2P2/PP4PP/R1B1KBNR w KQ - 0 8", + "hash": 14027130489784656127, + "name": "King's Indian: Smisch, 5...c5 Queenswap" + }, + "E80j": { + "eco": "E80j", + "fen": "rnbqk2r/1pp1ppbp/p2p1np1/8/2PPP3/2N2P2/PP4PP/R1BQKBNR w KQkq - 0 6", + "hash": 13233801975030940605, + "name": "King's Indian: Smisch, 5...a6" + }, + "E80k": { + "eco": "E80k", + "fen": "rnbqk2r/1pp1ppbp/p2p1np1/8/2PPP3/2N1BP2/PP4PP/R2QKBNR b KQkq - 1 6", + "hash": 14172637997927700531, + "name": "King's Indian: Smisch, 5...a6 6.Be3" + }, + "E80l": { + "eco": "E80l", + "fen": "rnbqk2r/pp2ppbp/2pp1np1/8/2PPP3/2N2P2/PP4PP/R1BQKBNR w KQkq - 0 6", + "hash": 17810316898990368986, + "name": "King's Indian: Smisch, 5...c6" + }, + "E80m": { + "eco": "E80m", + "fen": "rnbqk2r/pp2ppbp/2pp1np1/8/2PPP3/2N1BP2/PP4PP/R2QKBNR b KQkq - 1 6", + "hash": 9521259663149970260, + "name": "King's Indian: Smisch, 5...c6 6.Be3" + }, + "E80n": { + "eco": "E80n", + "fen": "rnbqk2r/1p2ppbp/p1pp1np1/8/2PPP3/2N1BP2/PP4PP/R2QKBNR w KQkq - 0 7", + "hash": 6257117006918568840, + "name": "King's Indian: Smisch, 5...c6 6.Be3 a6" + }, + "E80o": { + "eco": "E80o", + "fen": "rnbqk2r/1p2ppbp/p1pp1np1/8/P1PPP3/2N1BP2/1P4PP/R2QKBNR b KQkq a3 0 7", + "hash": 4403605815017872966, + "name": "King's Indian: Smisch, 5...c6 6.Be3 a6 7.a4" + }, + "E80p": { + "eco": "E80p", + "fen": "rnbqk2r/1p2ppbp/p1pp1np1/8/2PPP3/2NBBP2/PP4PP/R2QK1NR b KQkq - 1 7", + "hash": 277005900482284027, + "name": "King's Indian: Smisch, 5...c6 6.Be3 a6 7.Bd3" + }, + "E81a": { + "eco": "E81a", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP3/2N2P2/PP4PP/R1BQKBNR w KQ - 1 6", + "hash": 8068467579803144842, + "name": "King's Indian: Smisch, 5...O-O" + }, + "E81b": { + "eco": "E81b", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP3/2N2P2/PP2N1PP/R1BQKB1R b KQ - 2 6", + "hash": 8889014179286425460, + "name": "King's Indian: Smisch, 5...O-O 6.Nge2" + }, + "E81c": { + "eco": "E81c", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/4p3/2PPP3/2N2P2/PP2N1PP/R1BQKB1R w KQ e6 0 7", + "hash": 17376038578385250114, + "name": "King's Indian: Smisch, 5...O-O 6.Nge2 e5" + }, + "E81d": { + "eco": "E81d", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p5/2PPP3/2N2P2/PP2N1PP/R1BQKB1R w KQ c6 0 7", + "hash": 11325936108778296329, + "name": "King's Indian: Smisch, 5...O-O 6.Nge2 c5" + }, + "E81e": { + "eco": "E81e", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/6B1/2PPP3/2N2P2/PP4PP/R2QKBNR b KQ - 2 6", + "hash": 12223512337887709506, + "name": "King's Indian: Smisch, 5...O-O 6.Bg5" + }, + "E81f": { + "eco": "E81f", + "fen": "r1bq1rk1/ppp1ppbp/2np1np1/6B1/2PPP3/2N2P2/PP4PP/R2QKBNR w KQ - 3 7", + "hash": 166487326018989121, + "name": "King's Indian: Smisch, 5...O-O 6.Bg5 Nc6" + }, + "E81g": { + "eco": "E81g", + "fen": "rnbq1rk1/1pp1ppbp/p2p1np1/6B1/2PPP3/2N2P2/PP4PP/R2QKBNR w KQ - 0 7", + "hash": 8887099903244120478, + "name": "King's Indian: Smisch, 5...O-O 6.Bg5 a6" + }, + "E81h": { + "eco": "E81h", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p3B1/2PPP3/2N2P2/PP4PP/R2QKBNR w KQ c6 0 7", + "hash": 5752066612192723519, + "name": "King's Indian: Smisch, 5...O-O 6.Bg5 c5" + }, + "E81i": { + "eco": "E81i", + "fen": "rnbq1rk1/pp3pbp/3ppnp1/2pP2B1/2P1P3/2N2P2/PP4PP/R2QKBNR w KQ - 0 8", + "hash": 9488173440111592496, + "name": "King's Indian: Smisch, 5...O-O 6.Bg5 c5 7.d5 e6" + }, + "E81j": { + "eco": "E81j", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP3/2N1BP2/PP4PP/R2QKBNR b KQ - 2 6", + "hash": 2085253967357806852, + "name": "King's Indian: Smisch, 5...O-O 6.Be3" + }, + "E81k": { + "eco": "E81k", + "fen": "rnbq1rk1/1pp1ppbp/p2p1np1/8/2PPP3/2N1BP2/PP4PP/R2QKBNR w KQ - 0 7", + "hash": 14846044276054749656, + "name": "King's Indian: Smisch, 5...O-O 6.Be3 a6" + }, + "E81l": { + "eco": "E81l", + "fen": "rnbq1rk1/pp2ppbp/2pp1np1/8/2PPP3/2N1BP2/PP4PP/R2QKBNR w KQ - 0 7", + "hash": 10271200571098061503, + "name": "King's Indian: Smisch, 5...O-O 6.Be3 c6" + }, + "E81m": { + "eco": "E81m", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p5/2PPP3/2N1BP2/PP4PP/R2QKBNR w KQ c6 0 7", + "hash": 18050883335819952761, + "name": "King's Indian: Smisch, 5...O-O 6.Be3 c5" + }, + "E81n": { + "eco": "E81n", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2P5/2P1P3/2N1BP2/PP4PP/R2QKBNR b KQ - 0 7", + "hash": 9611451338018608405, + "name": "King's Indian: Smisch, 5...O-O 6.Be3 c5 7.dxc5" + }, + "E81o": { + "eco": "E81o", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p5/2PPP3/2N1BP2/PP2N1PP/R2QKB1R b KQ - 1 7", + "hash": 17160250661136895879, + "name": "King's Indian: Smisch, 5...O-O 6.Be3 c5 7.Nge2" + }, + "E81p": { + "eco": "E81p", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/2pP4/2P1P3/2N1BP2/PP2N1PP/R2QKB1R b KQ - 0 8", + "hash": 18428992180263402713, + "name": "King's Indian: Smisch, 5...O-O 6.Be3 c5 7.Nge2 Nc6 8.d5" + }, + "E81q": { + "eco": "E81q", + "fen": "r1bq1rk1/pppnppbp/3p1np1/8/2PPP3/2N1BP2/PP4PP/R2QKBNR w KQ - 3 7", + "hash": 3392112335949587656, + "name": "King's Indian: Smisch, 5...O-O 6.Be3 Nbd7" + }, + "E81r": { + "eco": "E81r", + "fen": "r1bq1rk1/pppnppbp/3p1np1/8/2PPP3/2N1BP2/PP1Q2PP/R3KBNR b KQ - 4 7", + "hash": 507635435892587368, + "name": "King's Indian: Smisch, 5...O-O 6.Be3 Nbd7 7.Qd2" + }, + "E81s": { + "eco": "E81s", + "fen": "r1bq1rk1/pp1nppbp/3p1np1/2p5/2PPP3/2N1BP2/PP1Q2PP/R3KBNR w KQ c6 0 8", + "hash": 16247485607368994837, + "name": "King's Indian: Smisch, 5...O-O 6.Be3 Nbd7 7.Qd2 c5" + }, + "E81t": { + "eco": "E81t", + "fen": "r1bq1rk1/pp1nppbp/3p1np1/2p5/2PPP3/2N1BP2/PP1QN1PP/R3KB1R b KQ - 1 8", + "hash": 17716670399697862123, + "name": "King's Indian: Smisch, 5...O-O 6.Be3 Nbd7 7.Qd2 c5 8.Nge2" + }, + "E82a": { + "eco": "E82a", + "fen": "rnbq1rk1/p1p1ppbp/1p1p1np1/8/2PPP3/2N1BP2/PP4PP/R2QKBNR w KQ - 0 7", + "hash": 8617926507036524191, + "name": "King's Indian: Smisch, Fianchetto" + }, + "E82b": { + "eco": "E82b", + "fen": "rnbq1rk1/p1p1ppbp/1p1p1np1/8/2PPP3/2N1BP2/PP1Q2PP/R3KBNR b KQ - 1 7", + "hash": 6881863002248470847, + "name": "King's Indian: Smisch, Fianchetto, 7.Qd2" + }, + "E82c": { + "eco": "E82c", + "fen": "rnbq1rk1/p3ppbp/1p1p1np1/2pP4/2P1P3/2N1BP2/PP1Q2PP/R3KBNR b KQ - 0 8", + "hash": 286219426285354015, + "name": "King's Indian: Smisch, Fianchetto, 7.Qd2 c5 8.d5" + }, + "E82d": { + "eco": "E82d", + "fen": "rnbq1rk1/p1p1ppbp/1p1p1np1/8/2PPP3/2NBBP2/PP4PP/R2QK1NR b KQ - 1 7", + "hash": 2491801064187460844, + "name": "King's Indian: Smisch, Fianchetto, Bronstein Variation" + }, + "E82e": { + "eco": "E82e", + "fen": "rnbq1rk1/p1pnppbp/1p1p2p1/8/2PPP3/2NBBP2/PP4PP/R2QK1NR w KQ - 2 8", + "hash": 15840185162783094041, + "name": "King's Indian: Smisch, Fianchetto, 7.Bd3 Nfd7" + }, + "E82f": { + "eco": "E82f", + "fen": "rn1q1rk1/pbp1ppbp/1p1p1np1/8/2PPP3/2NBBP2/PP4PP/R2QK1NR w KQ - 2 8", + "hash": 10521797798524343159, + "name": "King's Indian: Smisch, Fianchetto, 7.Bd3 Bb7" + }, + "E82g": { + "eco": "E82g", + "fen": "rn1q1rk1/pbp1ppbp/1p1p1np1/8/2PPP3/2NBBP2/PP2N1PP/R2QK2R b KQ - 3 8", + "hash": 9700758643870064265, + "name": "King's Indian: Smisch, Fianchetto, 7.Bd3 Bb7 8.Nge2" + }, + "E82h": { + "eco": "E82h", + "fen": "rnbq1rk1/2p1ppbp/pp1p1np1/8/2PPP3/2NBBP2/PP4PP/R2QK1NR w KQ - 0 8", + "hash": 17321783348556039216, + "name": "King's Indian: Smisch, Fianchetto, 7.Bd3 a6" + }, + "E82i": { + "eco": "E82i", + "fen": "rnbq1rk1/2p1ppbp/pp1p1np1/8/2PPP3/2NBBP2/PP2N1PP/R2QK2R b KQ - 1 8", + "hash": 16485353736938359246, + "name": "King's Indian: Smisch, Fianchetto, 7.Bd3 a6 8.Nge2" + }, + "E82j": { + "eco": "E82j", + "fen": "rnbq1rk1/4ppbp/pp1p1np1/2pP4/2P1P3/2NBBP2/PP2N1PP/R2QK2R b KQ - 0 9", + "hash": 13312129346006095086, + "name": "King's Indian: Smisch, Fianchetto, 7.Bd3 a6 8.Nge2 c5 9.d5" + }, + "E82k": { + "eco": "E82k", + "fen": "rnbq1rk1/4ppbp/pp1p1np1/2p1P3/2PP4/2NBBP2/PP2N1PP/R2QK2R b KQ - 0 9", + "hash": 7192102037365433559, + "name": "King's Indian: Smisch, Fianchetto, 7.Bd3 a6 8.Nge2 c5 9.e5" + }, + "E83a": { + "eco": "E83a", + "fen": "r1bq1rk1/ppp1ppbp/2np1np1/8/2PPP3/2N1BP2/PP4PP/R2QKBNR w KQ - 3 7", + "hash": 13194869117112790023, + "name": "King's Indian: Smisch, 6...Nc6" + }, + "E83b": { + "eco": "E83b", + "fen": "r1bq1rk1/ppp1ppbp/2np1np1/8/2PPP3/2N1BP2/PP1Q2PP/R3KBNR b KQ - 4 7", + "hash": 11458802333085758375, + "name": "King's Indian: Smisch, 6...Nc6 7.Qd2" + }, + "E83c": { + "eco": "E83c", + "fen": "r1bq1rk1/1pp1ppbp/p1np1np1/8/2PPP3/2N1BP2/PP1Q2PP/R3KBNR w KQ - 0 8", + "hash": 5616597801721826171, + "name": "King's Indian: Smisch, 6...Nc6 7.Qd2 a6" + }, + "E83d": { + "eco": "E83d", + "fen": "r1bq1rk1/ppp1ppbp/2np1np1/8/2PPP3/2N1BP2/PP2N1PP/R2QKB1R b KQ - 4 7", + "hash": 11797597323384365561, + "name": "King's Indian: Smisch, 6...Nc6 7.Nge2" + }, + "E83e": { + "eco": "E83e", + "fen": "1rbq1rk1/ppp1ppbp/2np1np1/8/2PPP3/2N1BP2/PP2N1PP/R2QKB1R w KQ - 5 8", + "hash": 4258953488573273747, + "name": "King's Indian: Smisch, Ruban Variation" + }, + "E83f": { + "eco": "E83f", + "fen": "r1bq1rk1/1pp1ppbp/p1np1np1/8/2PPP3/2N1BP2/PP2N1PP/R2QKB1R w KQ - 0 8", + "hash": 8164618968910027045, + "name": "King's Indian: Smisch, Panno" + }, + "E83g": { + "eco": "E83g", + "fen": "r1bq1rk1/1pp1ppbp/p1np1np1/8/2PPP3/P1N1BP2/1P2N1PP/R2QKB1R b KQ - 0 8", + "hash": 13462029596933281637, + "name": "King's Indian: Smisch, Panno, 8.a3" + }, + "E83h": { + "eco": "E83h", + "fen": "r1bq1rk1/1pp1ppbp/p1np1np1/8/2PPP3/2N1BP2/PP4PP/R1NQKB1R b KQ - 1 8", + "hash": 4930805021412684081, + "name": "King's Indian: Smisch, Panno, 8.Nc1" + }, + "E83i": { + "eco": "E83i", + "fen": "r1bq1rk1/1pp1ppbp/p1np1np1/8/2PPP3/2N1BP2/PP1QN1PP/R3KB1R b KQ - 1 8", + "hash": 6437546290962597509, + "name": "King's Indian: Smisch, Panno, 8.Qd2" + }, + "E83j": { + "eco": "E83j", + "fen": "r1bqr1k1/1pp1ppbp/p1np1np1/8/2PPP3/2N1BP2/PP1QN1PP/R3KB1R w KQ - 2 9", + "hash": 4973950353445053191, + "name": "King's Indian: Smisch, Panno, 8.Qd2 Re8" + }, + "E84a": { + "eco": "E84a", + "fen": "1rbq1rk1/1pp1ppbp/p1np1np1/8/2PPP3/2N1BP2/PP1QN1PP/R3KB1R w KQ - 2 9", + "hash": 13976193421619704303, + "name": "King's Indian: Smisch, Panno Main Line" + }, + "E84b": { + "eco": "E84b", + "fen": "1rbq1rk1/1pp1ppbp/p1np1np1/8/2PPP3/P1N1BP2/1P1QN1PP/R3KB1R b KQ - 0 9", + "hash": 750228636829204399, + "name": "King's Indian: Smisch, Panno Main Line, 9.a3" + }, + "E84c": { + "eco": "E84c", + "fen": "1rbq1rk1/1pp1ppbp/p1np1np1/8/2PPP3/2N1BP2/PP1QN1PP/2KR1B1R b - - 3 9", + "hash": 18003188977647566455, + "name": "King's Indian: Smisch, Panno Main Line, 9.O-O-O" + }, + "E84d": { + "eco": "E84d", + "fen": "1rbq1rk1/1pp1ppbp/p1np1np1/8/2PPP1P1/2N1BP2/PP1QN2P/R3KB1R b KQ g3 0 9", + "hash": 7113549998351899890, + "name": "King's Indian: Smisch, Panno Main Line, 9.g4" + }, + "E84e": { + "eco": "E84e", + "fen": "1rbq1rk1/1pp1ppbp/p1np1np1/8/2PPP3/2N1BP2/PP1QN1PP/1R2KB1R b K - 3 9", + "hash": 10567220741663421691, + "name": "King's Indian: Smisch, Panno Main Line, 9.Rb1" + }, + "E84f": { + "eco": "E84f", + "fen": "1rbq1rk1/1pp1ppbp/p1np1npB/8/2PPP3/2N2P2/PP1QN1PP/R3KB1R b KQ - 3 9", + "hash": 7645898977337701188, + "name": "King's Indian: Smisch, Panno Main Line, 9.Bh6" + }, + "E84g": { + "eco": "E84g", + "fen": "1rbq1rk1/1pp1ppbp/p1np1np1/8/2PPP3/2N1BP2/PP1Q2PP/R1N1KB1R b KQ - 3 9", + "hash": 17642386881830492667, + "name": "King's Indian: Smisch, Panno Main Line, 9.Nc1" + }, + "E84h": { + "eco": "E84h", + "fen": "1rbq1rk1/1pp2pbp/p1np1np1/4p3/2PPP3/1NN1BP2/PP1Q2PP/R3KB1R b KQ - 1 10", + "hash": 7952165673418677023, + "name": "King's Indian: Smisch, Panno Main Line, 9.Nc1 e5 10.Nb3" + }, + "E84i": { + "eco": "E84i", + "fen": "1rbq1rk1/1pp2pbp/p1np1np1/3Pp3/2P1P3/2N1BP2/PP1Q2PP/R1N1KB1R b KQ - 0 10", + "hash": 14170033602481878928, + "name": "King's Indian: Smisch, Panno Main Line, 9.Nc1 e5 10.d5" + }, + "E84j": { + "eco": "E84j", + "fen": "1rbq1rk1/1pp2pbp/p2p1np1/3Pp3/2PnP3/1NN1BP2/PP1Q2PP/R3KB1R b KQ - 2 11", + "hash": 229379282702306787, + "name": "King's Indian: Smisch, Panno Main Line, 9.Nc1 e5 10.d5 Nd4 11.Nb3" + }, + "E84k": { + "eco": "E84k", + "fen": "1rbq1rk1/1pp1ppbp/p1np1np1/8/2PPP2P/2N1BP2/PP1QN1P1/R3KB1R b KQ h3 0 9", + "hash": 6725833536960743569, + "name": "King's Indian: Smisch, Panno Main Line, 9.h4" + }, + "E84l": { + "eco": "E84l", + "fen": "1rbq1rk1/2p1ppbp/p1np1np1/1p6/2PPP2P/2N1BP2/PP1QN1P1/R3KB1R w KQ b6 0 10", + "hash": 4418769977941292460, + "name": "King's Indian: Smisch, Panno Main Line, 9.h4 b5" + }, + "E84m": { + "eco": "E84m", + "fen": "1rbq1rk1/1pp1ppb1/p1np1np1/7p/2PPP2P/2N1BP2/PP1QN1P1/R3KB1R w KQ h6 0 10", + "hash": 4614056069492435430, + "name": "King's Indian: Smisch, Panno Main Line, 9.h4 h5" + }, + "E84n": { + "eco": "E84n", + "fen": "1rbq1rk1/1pp1ppb1/p1np1np1/7p/2PPP2P/2N1BP2/PP1QN1P1/2KR1B1R b - - 1 10", + "hash": 8657377191349642878, + "name": "King's Indian: Smisch, Panno Main Line, 9.h4 h5 10.O-O-O" + }, + "E84o": { + "eco": "E84o", + "fen": "1rbq1rk1/2p1ppb1/p1np1npB/1p5p/2PPP2P/2N2P2/PP1QN1P1/2KR1B1R b - - 1 11", + "hash": 12956748342790724072, + "name": "King's Indian: Smisch, Panno Main Line, 9.h4 h5 10.O-O-O b5 11.Bh6" + }, + "E85a": { + "eco": "E85a", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/4p3/2PPP3/2N1BP2/PP4PP/R2QKBNR w KQ e6 0 7", + "hash": 10846997930875023666, + "name": "King's Indian: Smisch, Orthodox Variation" + }, + "E85b": { + "eco": "E85b", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/4P3/2P1P3/2N1BP2/PP4PP/R2QKBNR b KQ - 0 7", + "hash": 726689671656392258, + "name": "King's Indian: Smisch, Orthodox, 7.dxe5" + }, + "E85c": { + "eco": "E85c", + "fen": "rnbQ1rk1/ppp2pbp/5np1/4p3/2P1P3/2N1BP2/PP4PP/R3KBNR b KQ - 0 8", + "hash": 6521368688504714008, + "name": "King's Indian: Smisch, Orthodox, Queenswap" + }, + "E85d": { + "eco": "E85d", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/4p3/2PPP3/2N1BP2/PP2N1PP/R2QKB1R b KQ - 1 7", + "hash": 9380062248637627596, + "name": "King's Indian: Smisch, Orthodox, 7.Nge2" + }, + "E85e": { + "eco": "E85e", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/8/2PpP3/2N1BP2/PP2N1PP/R2QKB1R w KQ - 0 8", + "hash": 1824703765071259865, + "name": "King's Indian: Smisch, Orthodox, 7.Nge2 exd4" + }, + "E85f": { + "eco": "E85f", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/4p3/2PPP3/2N1BP2/PP2N1PP/R2QKB1R w KQ - 2 8", + "hash": 12812696646906286336, + "name": "King's Indian: Smisch, Orthodox, 7.Nge2 Nbd7" + }, + "E85g": { + "eco": "E85g", + "fen": "r1bq1rk1/ppp2pbp/2np1np1/4p3/2PPP3/2N1BP2/PP2N1PP/R2QKB1R w KQ - 2 8", + "hash": 3008813607200315855, + "name": "King's Indian: Smisch, Orthodox, 7.Nge2 Nc6" + }, + "E85h": { + "eco": "E85h", + "fen": "r1bq1rk1/ppp2pbp/2np1np1/3Pp3/2P1P3/2N1BP2/PP2N1PP/R2QKB1R b KQ - 0 8", + "hash": 10649103659313385362, + "name": "King's Indian: Smisch, Orthodox, 7.Nge2 Nc6 8.d5" + }, + "E85i": { + "eco": "E85i", + "fen": "r1bq1rk1/ppp1npbp/3p1np1/3Pp3/2P1P3/2N1BP2/PP2N1PP/R2QKB1R w KQ - 1 9", + "hash": 10890019502291502211, + "name": "King's Indian: Smisch, Orthodox, 7.Nge2 Nc6 8.d5 Ne7" + }, + "E85j": { + "eco": "E85j", + "fen": "r1bq1rk1/ppp1npbp/3p1np1/3Pp3/2P1P3/2N1BP2/PP1QN1PP/R3KB1R b KQ - 2 9", + "hash": 13779133070811634467, + "name": "King's Indian: Smisch, Orthodox, 7.Nge2 Nc6 8.d5 Ne7 9.Qd2" + }, + "E86a": { + "eco": "E86a", + "fen": "rnbq1rk1/pp3pbp/2pp1np1/4p3/2PPP3/2N1BP2/PP2N1PP/R2QKB1R w KQ - 0 8", + "hash": 1177199845200899959, + "name": "King's Indian: Smisch, Orthodox, 7.Nge2 c6" + }, + "E86b": { + "eco": "E86b", + "fen": "rnbq1rk1/pp3pbp/2pp1np1/3Pp3/2P1P3/2N1BP2/PP2N1PP/R2QKB1R b KQ - 0 8", + "hash": 12276252203521325354, + "name": "King's Indian: Smisch, Orthodox, 7.Nge2 c6 8.d5" + }, + "E86c": { + "eco": "E86c", + "fen": "rnbq1rk1/pp3pbp/2pp1np1/4p3/2PPP3/1QN1BP2/PP2N1PP/R3KB1R b KQ - 1 8", + "hash": 3075926374576523153, + "name": "King's Indian: Smisch, Orthodox, 7.Nge2 c6 8.Qb3" + }, + "E86d": { + "eco": "E86d", + "fen": "rnbq1rk1/pp3pbp/2pp1np1/4p3/2PPP3/2N1BP2/PP1QN1PP/R3KB1R b KQ - 1 8", + "hash": 4057196301977252055, + "name": "King's Indian: Smisch, Orthodox, 7.Nge2 c6 8.Qd2" + }, + "E86e": { + "eco": "E86e", + "fen": "r1bq1rk1/pp1n1pbp/2pp1np1/4p3/2PPP3/2N1BP2/PP1QN1PP/R3KB1R w KQ - 2 9", + "hash": 841458274011782427, + "name": "King's Indian: Smisch, Orthodox, 7.Nge2 c6 8.Qd2 Nbd7" + }, + "E86f": { + "eco": "E86f", + "fen": "r1bq1rk1/pp1n1pbp/2pp1np1/3Pp3/2P1P3/2N1BP2/PP1QN1PP/R3KB1R b KQ - 0 9", + "hash": 12800697456751774534, + "name": "King's Indian: Smisch, Orthodox, 7.Nge2 c6 8.Qd2 Nbd7 9.d5" + }, + "E86g": { + "eco": "E86g", + "fen": "r1bq1rk1/pp1n1pbp/2pp1np1/4p3/2PPP3/2N1BP2/PP1QN1PP/2KR1B1R b - - 3 9", + "hash": 3711019921122726531, + "name": "King's Indian: Smisch, Orthodox, 7.Nge2 c6 8.Qd2 Nbd7 9.O-O-O" + }, + "E86h": { + "eco": "E86h", + "fen": "r1bq1rk1/1p1n1pbp/p1pp1np1/4p3/2PPP3/2N1BP2/PP1QN1PP/2KR1B1R w - - 0 10", + "hash": 16246666417641613919, + "name": "King's Indian: Smisch, Orthodox, 7.Nge2 c6 8.Qd2 Nbd7 9.O-O-O a6" + }, + "E86i": { + "eco": "E86i", + "fen": "r1bq1rk1/1p1n1pbp/p1pp1np1/4p3/2PPP3/2N1BP2/PP1QN1PP/1K1R1B1R b - - 1 10", + "hash": 7711111497642265474, + "name": "King's Indian: Smisch, Orthodox, 7.Nge2 c6 8.Qd2 Nbd7 9.O-O-O a6 10.Kb1" + }, + "E87a": { + "eco": "E87a", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/3Pp3/2P1P3/2N1BP2/PP4PP/R2QKBNR b KQ - 0 7", + "hash": 3206567841353787247, + "name": "King's Indian: Smisch, Orthodox, 7.d5" + }, + "E87b": { + "eco": "E87b", + "fen": "rnbq1rk1/1pp2pbp/3p1np1/p2Pp3/2P1P3/2N1BP2/PP4PP/R2QKBNR w KQ a6 0 8", + "hash": 12293333532658985983, + "name": "King's Indian: Smisch, Orthodox, 7.d5 a5" + }, + "E87c": { + "eco": "E87c", + "fen": "rnbq1rk1/pp3pbp/3p1np1/2pPp3/2P1P3/2N1BP2/PP4PP/R2QKBNR w KQ c6 0 8", + "hash": 14612850382315062640, + "name": "King's Indian: Smisch, Orthodox, 7.d5 c5" + }, + "E87d": { + "eco": "E87d", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/3Pp3/2P1P3/2N1BP2/PP4PP/R2QKBNR w KQ - 1 8", + "hash": 2261791262891674275, + "name": "King's Indian: Smisch, Orthodox, 7.d5 Nbd7" + }, + "E87e": { + "eco": "E87e", + "fen": "rnbq1rk1/ppp2pbp/3p2p1/3Pp2n/2P1P3/2N1BP2/PP4PP/R2QKBNR w KQ - 1 8", + "hash": 12998395343540146741, + "name": "King's Indian: Smisch, Orthodox, 7.d5 Nh5" + }, + "E87f": { + "eco": "E87f", + "fen": "rnbq1rk1/ppp2pbp/3p2p1/3Pp2n/2P1P3/2N1BP2/PP1Q2PP/R3KBNR b KQ - 2 8", + "hash": 11275848248959733141, + "name": "King's Indian: Smisch, Orthodox, 7.d5 Nh5 8.Qd2" + }, + "E87g": { + "eco": "E87g", + "fen": "rnb2rk1/ppp2pbp/3p2p1/3Pp2n/2P1P2q/2N1BP2/PP1Q2PP/R3KBNR w KQ - 3 9", + "hash": 7096679925419214187, + "name": "King's Indian: Smisch, Orthodox, Bronstein Variation" + }, + "E87h": { + "eco": "E87h", + "fen": "rnb2rk1/ppp2pbp/3p2p1/3Pp2n/2P1P2q/2N1BPP1/PP1Q3P/R3KBNR b KQ - 0 9", + "hash": 5664054484072258899, + "name": "King's Indian: Smisch, Orthodox, Bronstein, 9.g3" + }, + "E87i": { + "eco": "E87i", + "fen": "rnb2rk1/ppp2pbp/3p2p1/3Pp2n/2P1P2q/2N2P2/PP1Q1BPP/R3KBNR b KQ - 4 9", + "hash": 16723389915839390275, + "name": "King's Indian: Smisch, Orthodox, Bronstein, 9.Bf2" + }, + "E87j": { + "eco": "E87j", + "fen": "rnbq1rk1/ppp3bp/3p2p1/3Ppp1n/2P1P3/2N1BP2/PP1Q2PP/R3KBNR w KQ f6 0 9", + "hash": 582295466230456395, + "name": "King's Indian: Smisch, Orthodox, 7.d5 Nh5 8.Qd2 f5" + }, + "E87k": { + "eco": "E87k", + "fen": "rnbq1rk1/ppp3bp/3p2p1/3Ppp1n/2P1P3/2N1BP2/PP1Q2PP/2KR1BNR b - - 1 9", + "hash": 3475089544420700115, + "name": "King's Indian: Smisch, Orthodox, 7.d5 Nh5 8.Qd2 f5 9.O-O-O" + }, + "E87l": { + "eco": "E87l", + "fen": "rnbq1rk1/ppp3bp/3p2p1/3Pp2n/2P1Pp2/2N1BP2/PP1Q2PP/2KR1BNR w - - 0 10", + "hash": 13419430684290996874, + "name": "King's Indian: Smisch, Orthodox, 7.d5 Nh5 8.Qd2 f5 9.O-O-O f4" + }, + "E87m": { + "eco": "E87m", + "fen": "r1bq1rk1/pppn2bp/3p2p1/3Ppp1n/2P1P3/2N1BP2/PP1Q2PP/2KR1BNR w - - 2 10", + "hash": 277680401046454815, + "name": "King's Indian: Smisch, Orthodox, 7.d5 Nh5 8.Qd2 f5 9.O-O-O Nd7" + }, + "E87n": { + "eco": "E87n", + "fen": "r1bq1rk1/pppn2bp/3p2p1/3Ppp1n/2P1P3/2NBBP2/PP1Q2PP/2KR2NR b - - 3 10", + "hash": 6257511407684059244, + "name": "King's Indian: Smisch, Orthodox, 7.d5 Nh5 8.Qd2 f5 9.O-O-O Nd7 10.Bd3" + }, + "E88a": { + "eco": "E88a", + "fen": "rnbq1rk1/pp3pbp/2pp1np1/3Pp3/2P1P3/2N1BP2/PP4PP/R2QKBNR w KQ - 0 8", + "hash": 13761568455190230228, + "name": "King's Indian: Smisch, Orthodox, 7.d5 c6" + }, + "E88b": { + "eco": "E88b", + "fen": "rnbq1rk1/pp3pbp/2pp1np1/3Pp3/2P1P3/2N1BP2/PP1Q2PP/R3KBNR b KQ - 1 8", + "hash": 10872435067509828468, + "name": "King's Indian: Smisch, Orthodox, 7.d5 c6 8.Qd2" + }, + "E88c": { + "eco": "E88c", + "fen": "rnbq1rk1/pp3pbp/3p1np1/3pp3/2P1P3/2N1BP2/PP1Q2PP/R3KBNR w KQ - 0 9", + "hash": 16542294686959036110, + "name": "King's Indian: Smisch, Orthodox, 7.d5 c6 8.Qd2 cxd5" + }, + "E88d": { + "eco": "E88d", + "fen": "rnbq1rk1/1p3pbp/p2p1np1/3Pp3/4P3/2N1BP2/PP1Q2PP/R3KBNR w KQ - 0 10", + "hash": 4129628652657216015, + "name": "King's Indian: Smisch, Orthodox, 7.d5 c6 8.Qd2 cxd5 9.cxd5 a6" + }, + "E88e": { + "eco": "E88e", + "fen": "rnbq1rk1/1p3pbp/p2p1np1/3Pp3/4P3/2NBBP2/PP1Q2PP/R3K1NR b KQ - 1 10", + "hash": 7801011647441029244, + "name": "King's Indian: Smisch, Orthodox, 7.d5 c6 8.Qd2 cxd5 9.cxd5 a6 10.Bd3" + }, + "E88f": { + "eco": "E88f", + "fen": "rnbq1rk1/pp3pbp/2pp1np1/3Pp3/2P1P3/2NBBP2/PP4PP/R2QK1NR b KQ - 1 8", + "hash": 17003138336976893607, + "name": "King's Indian: Smisch, Orthodox, Polugayevsky" + }, + "E88g": { + "eco": "E88g", + "fen": "rnbq1rk1/p4pbp/2pp1np1/1p1Pp3/2P1P3/2NBBP2/PP4PP/R2QK1NR w KQ b6 0 9", + "hash": 10084441574696602522, + "name": "King's Indian: Smisch, Orthodox, Polugayevsky, 8...b5" + }, + "E88h": { + "eco": "E88h", + "fen": "rnbq1rk1/pp3pbp/3p1np1/3pp3/2P1P3/2NBBP2/PP4PP/R2QK1NR w KQ - 0 9", + "hash": 10991007894618471197, + "name": "King's Indian: Smisch, Orthodox, Polugayevsky, 8...cxd5" + }, + "E88i": { + "eco": "E88i", + "fen": "rnbq1rk1/pp3pbp/3p2p1/3Pp2n/4P3/2NBBP2/PP4PP/R2QK1NR w KQ - 1 10", + "hash": 1031020278247414362, + "name": "King's Indian: Smisch, Orthodox, Polugayevsky, 8...cxd5 9.cxd5 Nh5" + }, + "E89a": { + "eco": "E89a", + "fen": "rnbq1rk1/pp3pbp/3p1np1/3pp3/2P1P3/2N1BP2/PP2N1PP/R2QKB1R w KQ - 0 9", + "hash": 15649636106290640016, + "name": "King's Indian: Smisch, Orthodox Main Line" + }, + "E89b": { + "eco": "E89b", + "fen": "rnbq1rk1/1p3pbp/p2p1np1/3Pp3/4P3/2N1BP2/PP2N1PP/R2QKB1R w KQ - 0 10", + "hash": 428905337676519505, + "name": "King's Indian: Smisch, Orthodox Main Line, 9...a6" + }, + "E89c": { + "eco": "E89c", + "fen": "rn1q1rk1/pp1b1pbp/3p1np1/3Pp3/4P3/2N1BP2/PP2N1PP/R2QKB1R w KQ - 1 10", + "hash": 3874723510446223548, + "name": "King's Indian: Smisch, Orthodox Main Line, 9...Bd7" + }, + "E89d": { + "eco": "E89d", + "fen": "r1bq1rk1/pp1n1pbp/3p1np1/3Pp3/4P3/2N1BP2/PP2N1PP/R2QKB1R w KQ - 1 10", + "hash": 16494237440365710657, + "name": "King's Indian: Smisch, Orthodox Main Line, 9...Nbd7" + }, + "E89e": { + "eco": "E89e", + "fen": "r1bq1rk1/pp1n1pbp/3p1np1/3Pp3/4P3/2N1BP2/PP1QN1PP/R3KB1R b KQ - 2 10", + "hash": 14771527502095160033, + "name": "King's Indian: Smisch, Orthodox Main Line, 10.Qd2" + }, + "E89f": { + "eco": "E89f", + "fen": "r1bq1rk1/1p1n1pbp/p2p1np1/3Pp3/4P3/2N1BP2/PP1QN1PP/R3KB1R w KQ - 0 11", + "hash": 2164247850105137725, + "name": "King's Indian: Smisch, Orthodox Main Line, 10.Qd2 a6" + }, + "E89g": { + "eco": "E89g", + "fen": "r1bq1rk1/1p1n1pbp/p2p1np1/3Pp3/4P1P1/2N1BP2/PP1QN2P/R3KB1R b KQ g3 0 11", + "hash": 13638573287811221280, + "name": "King's Indian: Smisch, Orthodox Main Line, 10.Qd2 a6 11.g4" + }, + "E89h": { + "eco": "E89h", + "fen": "r1bq1rk1/1p1n1pb1/p2p1np1/3Pp2p/4P1P1/2N1BP2/PP1QN2P/R3KB1R w KQ h6 0 12", + "hash": 11536934021829109335, + "name": "King's Indian: Smisch, Orthodox Main Line, 10.Qd2 a6 11.g4 h5" + }, + "E89i": { + "eco": "E89i", + "fen": "r1bq1rk1/1p1n1pb1/p2p1np1/3Pp2p/4P1P1/2N1BP1P/PP1QN3/R3KB1R b KQ - 0 12", + "hash": 5253644544626257829, + "name": "King's Indian: Smisch, Orthodox Main Line, 10.Qd2 a6 11.g4 h5 12.h3" + }, + "E90a": { + "eco": "E90a", + "fen": "rnbqk2r/ppp1ppbp/3p1np1/8/2PPP3/2N2N2/PP3PPP/R1BQKB1R b KQkq - 1 5", + "hash": 15025437670393869613, + "name": "King's Indian: 5.Nf3" + }, + "E90b": { + "eco": "E90b", + "fen": "rn1qk2r/ppp1ppbp/3p1np1/8/2PPP1b1/2N2N2/PP3PPP/R1BQKB1R w KQkq - 2 6", + "hash": 15156541022086659015, + "name": "King's Indian: 5.Nf3 Bg4" + }, + "E90c": { + "eco": "E90c", + "fen": "rnbqk2r/pp2ppbp/3p1np1/2p5/2PPP3/2N2N2/PP3PPP/R1BQKB1R w KQkq c6 0 6", + "hash": 3960003677151723088, + "name": "King's Indian: 5.Nf3 c5" + }, + "E90d": { + "eco": "E90d", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2pP4/2P1P3/2N2N2/PP3PPP/R1BQKB1R w KQ - 1 7", + "hash": 9679481042186076646, + "name": "King's Indian: 5.Nf3 c5 6.d5 O-O" + }, + "E90e": { + "eco": "E90e", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP3/2N2N2/PP3PPP/R1BQKB1R w KQ - 2 6", + "hash": 15721501443032652998, + "name": "King's Indian: 5.Nf3 O-O" + }, + "E90f": { + "eco": "E90f", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP3/2NB1N2/PP3PPP/R1BQK2R b KQ - 3 6", + "hash": 10313348588498869941, + "name": "King's Indian: 5.Nf3 O-O 6.Bd3" + }, + "E90g": { + "eco": "E90g", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/6B1/2PPP3/2N2N2/PP3PPP/R2QKB1R b KQ - 3 6", + "hash": 2051294465054361358, + "name": "King's Indian: Zinnowitz Variation" + }, + "E90h": { + "eco": "E90h", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP3/2N1BN2/PP3PPP/R2QKB1R b KQ - 3 6", + "hash": 12188224557340591944, + "name": "King's Indian: Larsen Variation" + }, + "E90i": { + "eco": "E90i", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/4p3/2PPP3/2N1BN2/PP3PPP/R2QKB1R w KQ e6 0 7", + "hash": 2548278598244990846, + "name": "King's Indian: Larsen, 6...e5" + }, + "E90j": { + "eco": "E90j", + "fen": "rnbQ1rk1/ppp2pbp/5np1/4p3/2P1P3/2N1BN2/PP3PPP/R3KB1R b KQ - 0 8", + "hash": 17245836046118239572, + "name": "King's Indian: Larsen, 6...e5, Queenswap" + }, + "E90k": { + "eco": "E90k", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP3/2N2N1P/PP3PP1/R1BQKB1R b KQ - 0 6", + "hash": 3665406707357668660, + "name": "King's Indian: 5.Nf3 O-O 6.h3" + }, + "E90l": { + "eco": "E90l", + "fen": "r1bq1rk1/pppnppbp/3p1np1/8/2PPP3/2N2N1P/PP3PP1/R1BQKB1R w KQ - 1 7", + "hash": 89325042131515640, + "name": "King's Indian: 5.Nf3 O-O 6.h3 Nbd7" + }, + "E90m": { + "eco": "E90m", + "fen": "r1bq1rk1/ppp1ppbp/n2p1np1/8/2PPP3/2N2N1P/PP3PP1/R1BQKB1R w KQ - 1 7", + "hash": 8961750299167213960, + "name": "King's Indian: 5.Nf3 O-O 6.h3 Na6" + }, + "E90n": { + "eco": "E90n", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/4p3/2PPP3/2N2N1P/PP3PP1/R1BQKB1R w KQ e6 0 7", + "hash": 13305370186149702914, + "name": "King's Indian: 5.Nf3 O-O 6.h3 e5" + }, + "E90o": { + "eco": "E90o", + "fen": "rnbQ1rk1/ppp2pbp/5np1/4p3/2P1P3/2N2N1P/PP3PP1/R1B1KB1R b KQ - 0 8", + "hash": 8407906940349902632, + "name": "King's Indian: 5.Nf3 O-O 6.h3 e5 Queenswap" + }, + "E90p": { + "eco": "E90p", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/3Pp3/2P1P3/2N2N1P/PP3PP1/R1BQKB1R b KQ - 0 7", + "hash": 193207162076412767, + "name": "King's Indian: 5.Nf3 O-O 6.h3 e5 7.d5" + }, + "E90q": { + "eco": "E90q", + "fen": "rnbq1rk1/1pp2pbp/3p1np1/p2Pp3/2P1P3/2N2N1P/PP3PP1/R1BQKB1R w KQ a6 0 8", + "hash": 9562511049131571151, + "name": "King's Indian: 5.Nf3 O-O 6.h3 e5 7.d5 a5" + }, + "E90r": { + "eco": "E90r", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/3Pp3/2P1P3/2N2N1P/PP3PP1/R1BQKB1R w KQ - 1 8", + "hash": 3552517387947923091, + "name": "King's Indian: 5.Nf3 O-O 6.h3 e5 7.d5 Nbd7" + }, + "E90s": { + "eco": "E90s", + "fen": "r1bq1rk1/ppp2pbp/n2p1np1/3Pp3/2P1P3/2N2N1P/PP3PP1/R1BQKB1R w KQ - 1 8", + "hash": 5489539896133527523, + "name": "King's Indian: 5.Nf3 O-O 6.h3 e5 7.d5 Na6" + }, + "E90t": { + "eco": "E90t", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p5/2PPP3/2N2N1P/PP3PP1/R1BQKB1R w KQ c6 0 7", + "hash": 15325734499860635209, + "name": "King's Indian: 5.Nf3 O-O 6.h3 c5" + }, + "E90u": { + "eco": "E90u", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2pP4/2P1P3/2N2N1P/PP3PP1/R1BQKB1R b KQ - 0 7", + "hash": 7973536311237855252, + "name": "King's Indian: 5.Nf3 O-O 6.h3 c5 7.d5" + }, + "E90v": { + "eco": "E90v", + "fen": "rnbq1rk1/pp3pbp/3ppnp1/2pP4/2P1P3/2N2N1P/PP3PP1/R1BQKB1R w KQ - 0 8", + "hash": 1788002953741752390, + "name": "King's Indian: 5.Nf3 O-O 6.h3 c5 7.d5 e6" + }, + "E90w": { + "eco": "E90w", + "fen": "r1bq1rk1/pp3pbp/n2ppnp1/2pP4/2P1P3/2NB1N1P/PP3PP1/R1BQK2R w KQ - 2 9", + "hash": 242430237220996745, + "name": "King's Indian: 5.Nf3 O-O 6.h3 c5 7.d5 e6 8.Bd3 Na6" + }, + "E90x": { + "eco": "E90x", + "fen": "rnbq1rk1/pp3pbp/3p1np1/2pp4/2P1P3/2NB1N1P/PP3PP1/R1BQK2R w KQ - 0 9", + "hash": 8271207408379190014, + "name": "King's Indian: 5.Nf3 O-O 6.h3 c5 7.d5 e6 8.Bd3 exd5" + }, + "E90y": { + "eco": "E90y", + "fen": "rnbqr1k1/pp3pbp/3p1np1/2pP4/2P5/2NB1N1P/PP3PP1/R1BQK2R w KQ - 1 10", + "hash": 5280459968885751162, + "name": "King's Indian: 5.Nf3 O-O 6.h3 c5 7.d5 e6 8.Bd3 exd5 9.exd5 Re8" + }, + "E91a": { + "eco": "E91a", + "fen": "rnbq1rk1/ppp1ppbp/3p1np1/8/2PPP3/2N2N2/PP2BPPP/R1BQK2R b KQ - 3 6", + "hash": 12226566814869870181, + "name": "King's Indian: 6.Be2" + }, + "E91b": { + "eco": "E91b", + "fen": "rnbq1rk1/1pp1ppbp/3p1np1/p7/2PPP3/2N2N2/PP2BPPP/R1BQK2R w KQ a6 0 7", + "hash": 3438437276721994485, + "name": "King's Indian: 6.Be2 a5" + }, + "E91c": { + "eco": "E91c", + "fen": "rnbq1rk1/1pp1ppbp/p2p1np1/8/2PPP3/2N2N2/PP2BPPP/R1BQK2R w KQ - 0 7", + "hash": 8888571084589575865, + "name": "King's Indian: 6.Be2 a6" + }, + "E91d": { + "eco": "E91d", + "fen": "rnbq1rk1/pp2ppbp/2pp1np1/8/2PPP3/2N2N2/PP2BPPP/R1BQK2R w KQ - 0 7", + "hash": 4312073851587855838, + "name": "King's Indian: 6.Be2 c6" + }, + "E91e": { + "eco": "E91e", + "fen": "rnbq1rk1/pp2ppbp/2pp1np1/8/2PPP3/2N2N2/PP2BPPP/R1BQ1RK1 b - - 1 7", + "hash": 5017831758798184142, + "name": "King's Indian: 6.Be2 c6 7.O-O" + }, + "E91f": { + "eco": "E91f", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p5/2PPP3/2N2N2/PP2BPPP/R1BQK2R w KQ c6 0 7", + "hash": 5754663624994118936, + "name": "King's Indian: 6.Be2 c5" + }, + "E91g": { + "eco": "E91g", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2pP4/2P1P3/2N2N2/PP2BPPP/R1BQK2R b KQ - 0 7", + "hash": 17714046293728578373, + "name": "King's Indian: 6.Be2 c5 7.d5" + }, + "E91h": { + "eco": "E91h", + "fen": "rnbq1rk1/pp3pbp/3ppnp1/2pP4/2P1P3/2N2N2/PP2BPPP/R1BQK2R w KQ - 0 8", + "hash": 9485457612694018839, + "name": "King's Indian: 6.Be2 c5 7.d5 e6" + }, + "E91i": { + "eco": "E91i", + "fen": "rnbqr1k1/pp3pbp/3ppnp1/2pP4/2P1P3/2N2N2/PP2BPPP/R1BQ1RK1 w - - 2 9", + "hash": 16251134823742432645, + "name": "King's Indian: 6.Be2 c5 7.d5 e6 8.O-O Re8" + }, + "E91j": { + "eco": "E91j", + "fen": "rnbq1rk1/pp2ppbp/3p1np1/2p5/2PPP3/2N2N2/PP2BPPP/R1BQ1RK1 b - - 1 7", + "hash": 3578627944334034440, + "name": "King's Indian: 6.Be2 c5 7.O-O" + }, + "E91k": { + "eco": "E91k", + "fen": "r1bq1rk1/pp2ppbp/2np1np1/2p5/2PPP3/2N2N2/PP2BPPP/R1BQ1RK1 w - - 2 8", + "hash": 11116027122206941963, + "name": "King's Indian: 6.Be2 c5 7.O-O Nc6" + }, + "E91l": { + "eco": "E91l", + "fen": "r1bq1rk1/ppp1ppbp/n2p1np1/8/2PPP3/2N2N2/PP2BPPP/R1BQK2R w KQ - 4 7", + "hash": 16658206088295500505, + "name": "King's Indian: Kazakh Variation" + }, + "E91m": { + "eco": "E91m", + "fen": "r1bq1rk1/ppp1ppbp/n2p1np1/8/2PPP3/2N2N2/PP2BPPP/R1BQ1RK1 b - - 5 7", + "hash": 11049772012211376585, + "name": "King's Indian: Kazakh Variation, 7.O-O" + }, + "E91n": { + "eco": "E91n", + "fen": "r1bq1rk1/pp2ppbp/n1pp1np1/8/2PPP3/2N2N2/PP2BPPP/R1BQ1RK1 w - - 0 8", + "hash": 802275111668892274, + "name": "King's Indian: Kazakh Variation, 7.O-O c6" + }, + "E91o": { + "eco": "E91o", + "fen": "r1bq1rk1/ppp1ppbp/2np1np1/8/2PPP3/2N2N2/PP2BPPP/R1BQK2R w KQ - 4 7", + "hash": 162311415090410342, + "name": "King's Indian: 6.Be2 Nc6" + }, + "E91p": { + "eco": "E91p", + "fen": "r1bq1rk1/ppp1ppbp/2np1np1/3P4/2P1P3/2N2N2/PP2BPPP/R1BQK2R b KQ - 0 7", + "hash": 13279116443306353979, + "name": "King's Indian: 6.Be2 Nc6 7.d5" + }, + "E91q": { + "eco": "E91q", + "fen": "r1bq1rk1/pppnppbp/3p1np1/8/2PPP3/2N2N2/PP2BPPP/R1BQK2R w KQ - 4 7", + "hash": 11118832092627942313, + "name": "King's Indian: 6.Be2 Nbd7" + }, + "E91r": { + "eco": "E91r", + "fen": "r1bq1rk1/pppnppbp/3p1np1/4P3/2PP4/2N2N2/PP2BPPP/R1BQK2R b KQ - 0 7", + "hash": 18101954947373538765, + "name": "King's Indian: 6.Be2 Nbd7 7.e5" + }, + "E91s": { + "eco": "E91s", + "fen": "r1bq1rk1/pppnppbp/3p1np1/8/2PPP3/2N2N2/PP2BPPP/R1BQ1RK1 b - - 5 7", + "hash": 16445876816758890681, + "name": "King's Indian: 6.Be2 Nbd7 7.O-O" + }, + "E91t": { + "eco": "E91t", + "fen": "r1bq1rk1/pp1nppbp/2pp1np1/8/2PPP3/2N2N2/PP2BPPP/R1BQ1RK1 w - - 0 8", + "hash": 8521250556352541442, + "name": "King's Indian: 6.Be2 Nbd7 7.O-O c6" + }, + "E91u": { + "eco": "E91u", + "fen": "rn1q1rk1/ppp1ppbp/3p1np1/8/2PPP1b1/2N2N2/PP2BPPP/R1BQK2R w KQ - 4 7", + "hash": 12357516254127380623, + "name": "King's Indian: 6.Be2 Bg4" + }, + "E91v": { + "eco": "E91v", + "fen": "rn1q1rk1/ppp1ppbp/3p1np1/8/2PPP1b1/2N1BN2/PP2BPPP/R2QK2R b KQ - 5 7", + "hash": 15597667982683849473, + "name": "King's Indian: 6.Be2 Bg4 7.Be3" + }, + "E91w": { + "eco": "E91w", + "fen": "rn1q1rk1/pppnppbp/3p2p1/8/2PPP1b1/2N1BN2/PP2BPPP/R2QK2R w KQ - 6 8", + "hash": 2391710217060928244, + "name": "King's Indian: 6.Be2 Bg4 7.Be3 Nfd7" + }, + "E91x": { + "eco": "E91x", + "fen": "rn1q1rk1/pppnppbp/3p2p1/8/2PPP1b1/2N1BN2/PP2BPPP/2RQK2R b K - 7 8", + "hash": 6821476279284702762, + "name": "King's Indian: 6.Be2 Bg4 7.Be3 Nfd7 8.Rc1" + }, + "E91y": { + "eco": "E91y", + "fen": "rn1q1rk1/pppnppbp/3p2p1/8/2PPP1b1/2N1B3/PP2BPPP/R2QK1NR b KQ - 7 8", + "hash": 18038573691447585737, + "name": "King's Indian: 6.Be2 Bg4 7.Be3 Nfd7 8.Ng1" + }, + "E92a": { + "eco": "E92a", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/4p3/2PPP3/2N2N2/PP2BPPP/R1BQK2R w KQ e6 0 7", + "hash": 2582099668255125075, + "name": "King's Indian: 6.Be2 e5" + }, + "E92b": { + "eco": "E92b", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/4P3/2P1P3/2N2N2/PP2BPPP/R1BQK2R b KQ - 0 7", + "hash": 13783419172601305379, + "name": "King's Indian: 6.Be2 e5 Queenswap" + }, + "E92c": { + "eco": "E92c", + "fen": "rnbr2k1/ppp2pbp/5np1/4p1B1/2P1P3/2N2N2/PP2BPPP/R3K2R b KQ - 1 9", + "hash": 8168679580539119939, + "name": "King's Indian: 6.Be2 e5 Queenswap, 9.Bg5" + }, + "E92d": { + "eco": "E92d", + "fen": "rnbr2k1/pp3pbp/2p2np1/4p1B1/2P1P3/2N2N2/PP2BPPP/R3K2R w KQ - 0 10", + "hash": 16367795339073534712, + "name": "King's Indian: 6.Be2 e5 Queenswap, 9.Bg5 c6" + }, + "E92e": { + "eco": "E92e", + "fen": "rnb1r1k1/ppp2pbp/5np1/4p1B1/2P1P3/2N2N2/PP2BPPP/R3K2R w KQ - 2 10", + "hash": 14527052235396434266, + "name": "King's Indian: 6.Be2 e5 Queenswap, 9.Bg5 Re8" + }, + "E92f": { + "eco": "E92f", + "fen": "rnb1r1k1/ppp2pbp/5np1/3Np1B1/2P1P3/5N2/PP2BPPP/R3K2R b KQ - 3 10", + "hash": 689010225442207247, + "name": "King's Indian: 6.Be2 e5 Queenswap, 9.Bg5 Re8 10.Nd5" + }, + "E92g": { + "eco": "E92g", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/4p3/2PPP3/2N1BN2/PP2BPPP/R2QK2R b KQ - 1 7", + "hash": 5827040109257176541, + "name": "King's Indian: Gligoric-Taimanov System" + }, + "E92h": { + "eco": "E92h", + "fen": "rnbq1rk1/pp3pbp/2pp1np1/4p3/2PPP3/2N1BN2/PP2BPPP/R2QK2R w KQ - 0 8", + "hash": 14026219096622425702, + "name": "King's Indian: Gligoric-Taimanov, 7...c6" + }, + "E92i": { + "eco": "E92i", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/8/2PpP3/2N1BN2/PP2BPPP/R2QK2R w KQ - 0 8", + "hash": 14673788176477266376, + "name": "King's Indian: Gligoric-Taimanov, 7...exd4" + }, + "E92j": { + "eco": "E92j", + "fen": "rnb2rk1/ppp1qpbp/3p1np1/4p3/2PPP3/2N1BN2/PP2BPPP/R2QK2R w KQ - 2 8", + "hash": 14637280894411774903, + "name": "King's Indian: Gligoric-Taimanov, 7...Qe7" + }, + "E92k": { + "eco": "E92k", + "fen": "rnbq1rk1/ppp2pbp/3p2p1/4p3/2PPP1n1/2N1BN2/PP2BPPP/R2QK2R w KQ - 2 8", + "hash": 14843465786792649905, + "name": "King's Indian: Gligoric-Taimanov, 7...Ng4" + }, + "E92l": { + "eco": "E92l", + "fen": "rnbq1rk1/ppp3bp/3p1pp1/4p3/2PPP1nB/2N2N2/PP2BPPP/R2QK2R b KQ - 1 9", + "hash": 1630357522721461274, + "name": "King's Indian: Gligoric-Taimanov, 7...Ng4 8.Bg5 f6 9.Bh4" + }, + "E92m": { + "eco": "E92m", + "fen": "r1bq1rk1/ppp3bp/2np1pp1/4p3/2PPP1nB/2N2N2/PP2BPPP/R2QK2R w KQ - 2 10", + "hash": 13640815468374880537, + "name": "King's Indian: Gligoric-Taimanov, Main Line" + }, + "E92n": { + "eco": "E92n", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/3Pp3/2P1P3/2N2N2/PP2BPPP/R1BQK2R b KQ - 0 7", + "hash": 11087077936265082894, + "name": "King's Indian: Petrosian System" + }, + "E92o": { + "eco": "E92o", + "fen": "rnbq1rk1/pp3pbp/3p1np1/2pPp3/2P1P3/2N2N2/PP2BPPP/R1BQK2R w KQ c6 0 8", + "hash": 9193664136391809553, + "name": "King's Indian: Petrosian, 7...c5" + }, + "E92p": { + "eco": "E92p", + "fen": "rnbq1rk1/pp3pbp/3p1np1/2pPp1B1/2P1P3/2N2N2/PP2BPPP/R2QK2R b KQ - 1 8", + "hash": 13400091514842605755, + "name": "King's Indian: Petrosian, 7...c5 8.Bg5" + }, + "E92q": { + "eco": "E92q", + "fen": "rnbq1rk1/1pp2pbp/3p1np1/p2Pp3/2P1P3/2N2N2/PP2BPPP/R1BQK2R w KQ a6 0 8", + "hash": 2289943406559540382, + "name": "King's Indian: Petrosian, Stein Variation" + }, + "E92r": { + "eco": "E92r", + "fen": "rnbq1rk1/1pp2pbp/3p1np1/p2Pp3/2P1P3/2N2N1P/PP2BPP1/R1BQK2R b KQ - 0 8", + "hash": 17812966723081043308, + "name": "King's Indian: Petrosian, Stein, 8.h3" + }, + "E92s": { + "eco": "E92s", + "fen": "rnbq1rk1/1pp2pbp/3p1np1/p2Pp1B1/2P1P3/2N2N2/PP2BPPP/R2QK2R b KQ - 1 8", + "hash": 15680922934668455766, + "name": "King's Indian: Petrosian, Stein, 8.Bg5" + }, + "E92t": { + "eco": "E92t", + "fen": "r1bq1rk1/1pp2pb1/n2p1npp/p2Pp3/2P1P2B/2N2N2/PP2BPPP/R2QK2R w KQ - 2 10", + "hash": 6874001999770523748, + "name": "King's Indian: Petrosian, Stein, 8.Bg5 h6 9.Bh4 Na6" + }, + "E92u": { + "eco": "E92u", + "fen": "r1bq1rk1/1pp2pb1/n2p1npp/p2Pp3/2P1P2B/2N5/PP1NBPPP/R2QK2R b KQ - 3 10", + "hash": 9387691308750513902, + "name": "King's Indian: Petrosian, Stein, Main Line" + }, + "E92v": { + "eco": "E92v", + "fen": "r1b1qrk1/1pp2pb1/n2p1npp/p2Pp3/2P1P2B/2N5/PP1NBPPP/R2QK2R w KQ - 4 11", + "hash": 8774784022539305811, + "name": "King's Indian: Petrosian, Stein, Main Line, 10...Qe8" + }, + "E92w": { + "eco": "E92w", + "fen": "r1b1qrk1/1pp2pb1/n2p1npp/p2Pp3/2P1P2B/2N5/PP1NBPPP/R2Q1RK1 b - - 5 11", + "hash": 554840675477706819, + "name": "King's Indian: Petrosian, Stein, Main Line, 10...Qe8 11.O-O" + }, + "E92x": { + "eco": "E92x", + "fen": "r1b1qrk1/1pp2pbn/n2p2pp/p2Pp3/2P1P2B/2N5/PP1NBPPP/R2Q1RK1 w - - 6 12", + "hash": 5221356091889288173, + "name": "King's Indian: Petrosian, Stein, Main Line, 10...Qe8 11.O-O Nh7" + }, + "E93": { + "eco": "E93", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/3Pp3/2P1P3/2N2N2/PP2BPPP/R1BQK2R w KQ - 1 8", + "hash": 12267328170143667650, + "name": "King's Indian: Petrosian, Main Line" + }, + "E94a": { + "eco": "E94a", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/4p3/2PPP3/2N2N2/PP2BPPP/R1BQ1RK1 b - - 1 7", + "hash": 6746408475736405315, + "name": "King's Indian: 7.O-O" + }, + "E94b": { + "eco": "E94b", + "fen": "rnbq1rk1/ppp2pbp/3p1np1/8/2PpP3/2N2N2/PP2BPPP/R1BQ1RK1 w - - 0 8", + "hash": 14329895741651738966, + "name": "King's Indian: 7.O-O exd4" + }, + "E94c": { + "eco": "E94c", + "fen": "rnbqr1k1/ppp2pbp/3p1np1/8/2PNP3/2N2P2/PP2B1PP/R1BQ1RK1 b - - 0 9", + "hash": 15252135499838749067, + "name": "King's Indian: 7.O-O exd4 8.Nxd4 Re8 9.f3" + }, + "E94d": { + "eco": "E94d", + "fen": "r1bqr1k1/ppp2pbp/2np1np1/8/2PNP3/2N2P2/PP2B1PP/R1BQ1RK1 w - - 1 10", + "hash": 8667072546481560712, + "name": "King's Indian: 7.O-O exd4 8.Nxd4 Re8 9.f3 Nc6" + }, + "E94e": { + "eco": "E94e", + "fen": "r1bqr1k1/ppp2pbp/2np2p1/7n/2PNP3/2N1BP2/PP1QB1PP/R4RK1 b - - 4 11", + "hash": 13525650161606929916, + "name": "King's Indian: 7.O-O exd4 8.Nxd4 Re8 9.f3 Nc6 10.Be3 Nh5 11.Qd2" + }, + "E94f": { + "eco": "E94f", + "fen": "rnbq1rk1/pp3pbp/2pp1np1/4p3/2PPP3/2N2N2/PP2BPPP/R1BQ1RK1 w - - 0 8", + "hash": 14977533291948877560, + "name": "King's Indian: Donner Variation" + }, + "E94g": { + "eco": "E94g", + "fen": "rnbq1rk1/pp3pbp/2pp1np1/3Pp3/2P1P3/2N2N2/PP2BPPP/R1BQ1RK1 b - - 0 8", + "hash": 8490024715658047653, + "name": "King's Indian: Donner, 8.d5" + }, + "E94h": { + "eco": "E94h", + "fen": "rnbq1rk1/pp3pbp/2pp1np1/4p3/2PPP3/2N1BN2/PP2BPPP/R2Q1RK1 b - - 1 8", + "hash": 13606035006820007286, + "name": "King's Indian: Donner, 8.Be3" + }, + "E94i": { + "eco": "E94i", + "fen": "r1bq1rk1/ppp2pbp/n2p1np1/4p3/2PPP3/2N2N2/PP2BPPP/R1BQ1RK1 w - - 2 8", + "hash": 1378283263068236287, + "name": "King's Indian: Glek Variation" + }, + "E94j": { + "eco": "E94j", + "fen": "r1bq1rk1/ppp2pbp/n2p1np1/4p3/2PPP3/2N2N2/PP2BPPP/R1BQR1K1 b - - 3 8", + "hash": 10922543943713604331, + "name": "King's Indian: Glek, 8.Re1" + }, + "E94k": { + "eco": "E94k", + "fen": "r1bq1rk1/pp3pbp/n1pp1np1/4p3/2PPP3/2N2N2/PP2BPPP/R1BQR1K1 w - - 0 9", + "hash": 427356219760709968, + "name": "King's Indian: Glek, 8.Re1 c6" + }, + "E94l": { + "eco": "E94l", + "fen": "r1bq1rk1/ppp2pbp/n2p1np1/4p3/2PPP3/2N1BN2/PP2BPPP/R2Q1RK1 b - - 3 8", + "hash": 6928821835722551921, + "name": "King's Indian: Glek, 8.Be3" + }, + "E94m": { + "eco": "E94m", + "fen": "r1bq1rk1/ppp2pbp/n2p2p1/4p3/2PPP1n1/2N1BN2/PP2BPPP/R2Q1RK1 w - - 4 9", + "hash": 18233744318063764253, + "name": "King's Indian: Glek, 8.Be3 Ng4" + }, + "E94n": { + "eco": "E94n", + "fen": "r1b1qrk1/ppp2pbp/n2p2p1/4p1B1/2PPP1n1/2N2N2/PP2BPPP/R2Q1RK1 w - - 6 10", + "hash": 5408264305936794607, + "name": "King's Indian: Glek, 8.Be3 Ng4 9.Ng5 Qe8" + }, + "E94o": { + "eco": "E94o", + "fen": "r1b1qrk1/ppp2pbp/n5p1/4p1B1/2P1P1n1/2N2N2/PP2BPPP/R2Q1RK1 w - - 0 11", + "hash": 17129155407922756118, + "name": "King's Indian: Glek, Main Line" + }, + "E94p": { + "eco": "E94p", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/4p3/2PPP3/2N2N2/PP2BPPP/R1BQ1RK1 w - - 2 8", + "hash": 7945323489636587663, + "name": "King's Indian: 7.O-O Nbd7" + }, + "E94q": { + "eco": "E94q", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/3Pp3/2P1P3/2N2N2/PP2BPPP/R1BQ1RK1 b - - 0 8", + "hash": 15297380816485453522, + "name": "King's Indian: 7.O-O Nbd7 8.d5" + }, + "E94r": { + "eco": "E94r", + "fen": "r1bq1rk1/ppp2pbp/3p1np1/2nPp3/2P1P3/2N2N2/PPQ1BPPP/R1B2RK1 b - - 2 9", + "hash": 4977707831392466940, + "name": "King's Indian: 7.O-O Nbd7 8.d5 Nc5 9.Qc2" + }, + "E94s": { + "eco": "E94s", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/4p3/2PPP3/2N2N2/PPQ1BPPP/R1B2RK1 b - - 3 8", + "hash": 16094184478448887019, + "name": "King's Indian: 7.O-O Nbd7 8.Qc2" + }, + "E94t": { + "eco": "E94t", + "fen": "r1bq1rk1/pp1n1pbp/2pp1np1/4p3/2PPP3/2N2N2/PPQ1BPPP/R1B2RK1 w - - 0 9", + "hash": 5557699690898519888, + "name": "King's Indian: 7.O-O Nbd7 8.Qc2 c6" + }, + "E94u": { + "eco": "E94u", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/4p3/2PPP3/2N1BN2/PP2BPPP/R2Q1RK1 b - - 3 8", + "hash": 2111007842065515265, + "name": "King's Indian: 7.O-O Nbd7 8.Be3" + }, + "E94v": { + "eco": "E94v", + "fen": "r1bq1rk1/pppn1pbp/3p2p1/4p3/2PPP1n1/2N1BN2/PP2BPPP/R2Q1RK1 w - - 4 9", + "hash": 9252809350469882477, + "name": "King's Indian: 7.O-O Nbd7 8.Be3 Ng4" + }, + "E94w": { + "eco": "E94w", + "fen": "r1bqr1k1/pppn1pbp/3p1np1/4p3/2PPP3/2N1BN2/PP2BPPP/R2Q1RK1 w - - 4 9", + "hash": 79386056236066435, + "name": "King's Indian: 7.O-O Nbd7 8.Be3 Re8" + }, + "E94x": { + "eco": "E94x", + "fen": "r1bq1rk1/pp1n1pbp/2pp1np1/4p3/2PPP3/2N1BN2/PP2BPPP/R2Q1RK1 w - - 0 9", + "hash": 10318067382117060794, + "name": "King's Indian: 7.O-O Nbd7 8.Be3 c6" + }, + "E94y": { + "eco": "E94y", + "fen": "r1bq1rk1/pp1n1pbp/2pp1np1/3Pp3/2P1P3/2N1BN2/PP2BPPP/R2Q1RK1 b - - 0 9", + "hash": 3835202996879705831, + "name": "King's Indian: 7.O-O Nbd7 8.Be3 c6 9.d5" + }, + "E95a": { + "eco": "E95a", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/4p3/2PPP3/2N2N2/PP2BPPP/R1BQR1K1 b - - 3 8", + "hash": 16931136657048187803, + "name": "King's Indian: 7.O-O Nbd7 8.Re1" + }, + "E95b": { + "eco": "E95b", + "fen": "r1bq1rk1/1ppn1pbp/3p1np1/p3p3/2PPP3/2N2N2/PP2BPPP/R1BQR1K1 w - a6 0 9", + "hash": 7849157138817466123, + "name": "King's Indian: 7.O-O Nbd7 8.Re1 a5" + }, + "E95c": { + "eco": "E95c", + "fen": "r1bq1rk1/pppn1pb1/3p1npp/4p3/2PPP3/2N2N2/PP2BPPP/R1BQR1K1 w - - 0 9", + "hash": 8646964555855428238, + "name": "King's Indian: 7.O-O Nbd7 8.Re1 h6" + }, + "E95d": { + "eco": "E95d", + "fen": "r1bqr1k1/pppn1pbp/3p1np1/4p3/2PPP3/2N2N2/PP2BPPP/R1BQR1K1 w - - 4 9", + "hash": 17773100055214118425, + "name": "King's Indian: 7.O-O Nbd7 8.Re1 Re8" + }, + "E95e": { + "eco": "E95e", + "fen": "r1bqr1k1/pppn1pbp/3p1np1/4p3/2PPP3/2N2N2/PP3PPP/R1BQRBK1 b - - 5 9", + "hash": 9594426066637036730, + "name": "King's Indian: 7.O-O Nbd7 8.Re1 Re8 9.Bf1" + }, + "E95f": { + "eco": "E95f", + "fen": "r1bq1rk1/pppn1pbp/3p1np1/8/2PpP3/2N2N2/PP2BPPP/R1BQR1K1 w - - 0 9", + "hash": 8181195093102339982, + "name": "King's Indian: 7.O-O Nbd7 8.Re1 exd4" + }, + "E95g": { + "eco": "E95g", + "fen": "r1bq1rk1/ppp2pbp/3p1np1/2n5/2PNP3/2N5/PP2BPPP/R1BQR1K1 w - - 1 10", + "hash": 3916784759384142058, + "name": "King's Indian: 7.O-O Nbd7 8.Re1 exd4 9.Nxd4 Nc5" + }, + "E95h": { + "eco": "E95h", + "fen": "r1bq1rk1/pp1n1pbp/2pp1np1/4p3/2PPP3/2N2N2/PP2BPPP/R1BQR1K1 w - - 0 9", + "hash": 8686765260263350304, + "name": "King's Indian: 7.O-O Nbd7 8.Re1 c6" + }, + "E95i": { + "eco": "E95i", + "fen": "r1bq1rk1/pp1n1pbp/2pp1np1/4p3/2PPP3/2N2N2/PP2BPPP/1RBQR1K1 b - - 1 9", + "hash": 15761197805383525540, + "name": "King's Indian: 7.O-O Nbd7 8.Re1 c6 9.Rb1" + }, + "E95j": { + "eco": "E95j", + "fen": "r1bq1rk1/pp1n1pbp/2pp1np1/4p3/2PPP3/2N2N2/PP3PPP/R1BQRBK1 b - - 1 9", + "hash": 796315815234644611, + "name": "King's Indian: 7.O-O Nbd7 8.Re1 c6 9.Bf1" + }, + "E95k": { + "eco": "E95k", + "fen": "r1bqr1k1/pp1n1pbp/2pp1np1/4p3/2PPP3/2N2N2/PP3PPP/R1BQRBK1 w - - 2 10", + "hash": 1683451549732753153, + "name": "King's Indian: 7.O-O Nbd7 8.Re1 c6 9.Bf1 Re8" + }, + "E95l": { + "eco": "E95l", + "fen": "r1bq1rk1/pp1n1pbp/2pp1np1/8/2PpP3/2N2N2/PP3PPP/R1BQRBK1 w - - 0 10", + "hash": 10408697803037294230, + "name": "King's Indian: 7.O-O Nbd7 8.Re1 c6 9.Bf1 exd4" + }, + "E95m": { + "eco": "E95m", + "fen": "r1bq1rk1/pp1n1pbp/2pp2p1/8/2PNP1n1/2N5/PP3PPP/R1BQRBK1 w - - 1 11", + "hash": 7693302350245936596, + "name": "King's Indian: 7.O-O Nbd7 8.Re1 c6 9.Bf1 exd4 10.Nxd4 Ng4" + }, + "E95n": { + "eco": "E95n", + "fen": "r1bqr1k1/pp1n1pbp/2pp1np1/8/2PNP3/2N5/PP3PPP/R1BQRBK1 w - - 1 11", + "hash": 16984909950661445946, + "name": "King's Indian: 7.O-O Nbd7 8.Re1 c6 9.Bf1 exd4 10.Nxd4 Re8" + }, + "E96": { + "eco": "E96", + "fen": "r1bq1rk1/1p1n1pbp/2pp1np1/p3p3/2PPP3/2N2N2/PP3PPP/R1BQRBK1 w - a6 0 10", + "hash": 10166771441908459027, + "name": "King's Indian: 7.O-O Nbd7, Old Main Line" + }, + "E97a": { + "eco": "E97a", + "fen": "r1bq1rk1/ppp2pbp/2np1np1/4p3/2PPP3/2N2N2/PP2BPPP/R1BQ1RK1 w - - 2 8", + "hash": 17748077147255361600, + "name": "King's Indian: Mar del Plata" + }, + "E97b": { + "eco": "E97b", + "fen": "r1bq1rk1/ppp2pbp/2np1np1/4P3/2P1P3/2N2N2/PP2BPPP/R1BQ1RK1 b - - 0 8", + "hash": 7696697271984318256, + "name": "King's Indian: Mar del Plata, 8.dxe5" + }, + "E97c": { + "eco": "E97c", + "fen": "r1bq1rk1/ppp2pbp/2np1np1/4p3/2PPP3/2N1BN2/PP2BPPP/R2Q1RK1 b - - 3 8", + "hash": 9603202509037915086, + "name": "King's Indian: Mar del Plata, 8.Be3" + }, + "E97d": { + "eco": "E97d", + "fen": "r1bq1rk1/ppp2pbp/2np1np1/3Pp3/2P1P3/2N2N2/PP2BPPP/R1BQ1RK1 b - - 0 8", + "hash": 5495963238363612701, + "name": "King's Indian: Mar del Plata, 8.d5" + }, + "E97e": { + "eco": "E97e", + "fen": "r1bq1rk1/ppp1npbp/3p1np1/3Pp3/2P1P3/2N2N2/PP1BBPPP/R2Q1RK1 b - - 2 9", + "hash": 6998848454808249864, + "name": "King's Indian: Mar del Plata, 9.Bd2" + }, + "E97f": { + "eco": "E97f", + "fen": "r1bq1rk1/ppp1npbp/3p1np1/3Pp3/1PP1P3/2N2N2/P3BPPP/R1BQ1RK1 b - b3 0 9", + "hash": 16310006569803981096, + "name": "King's Indian: Mar del Plata, Bayonet Attack" + }, + "E97g": { + "eco": "E97g", + "fen": "r1bq1r1k/ppp1npbp/3p1np1/3Pp3/1PP1P3/2N2N2/P3BPPP/R1BQ1RK1 w - - 1 10", + "hash": 12363203808468964799, + "name": "King's Indian: Mar del Plata, Bayonet Attack, 9...Kh8" + }, + "E97h": { + "eco": "E97h", + "fen": "r1bqnrk1/ppp1npbp/3p2p1/3Pp3/1PP1P3/2N2N2/P3BPPP/R1BQ1RK1 w - - 1 10", + "hash": 14633606435390184341, + "name": "King's Indian: Mar del Plata, Bayonet Attack, 9...Ne8" + }, + "E97i": { + "eco": "E97i", + "fen": "r1bq1rk1/1pp1npbp/3p1np1/p2Pp3/1PP1P3/2N2N2/P3BPPP/R1BQ1RK1 w - a6 0 10", + "hash": 7224474529553722808, + "name": "King's Indian: Mar del Plata, Bayonet Attack, 9...a5" + }, + "E97j": { + "eco": "E97j", + "fen": "r1bq1rk1/1pp1npbp/3p1np1/p2Pp3/1PP1P3/B1N2N2/P3BPPP/R2Q1RK1 b - - 1 10", + "hash": 14290392244261797073, + "name": "King's Indian: Mar del Plata, Bayonet Attack, 9...a5 10.Ba3" + }, + "E97k": { + "eco": "E97k", + "fen": "r1bq1rk1/1pp1npbp/3p1np1/3Pp3/1pP1P3/B1N2N2/P3BPPP/R2Q1RK1 w - - 0 11", + "hash": 6684401754785583404, + "name": "King's Indian: Mar del Plata, Bayonet Attack, 9...a5 10.Ba3 axb4" + }, + "E97l": { + "eco": "E97l", + "fen": "r1bq1rk1/ppp1npbp/3p2p1/3Pp2n/1PP1P3/2N2N2/P3BPPP/R1BQ1RK1 w - - 1 10", + "hash": 8843767071225156722, + "name": "King's Indian: Mar del Plata, Bayonet Attack, 9...Nh5" + }, + "E97m": { + "eco": "E97m", + "fen": "r1bq1rk1/ppp1npbp/3p2p1/2PPp2n/1P2P3/2N2N2/P3BPPP/R1BQ1RK1 b - - 0 10", + "hash": 1524949044914682306, + "name": "King's Indian: Mar del Plata, Bayonet Attack, 9...Nh5 10.c5" + }, + "E97n": { + "eco": "E97n", + "fen": "r1bq1rk1/ppp1npbp/3p2p1/3Pp2n/1PP1P3/2N2NP1/P3BP1P/R1BQ1RK1 b - - 0 10", + "hash": 6223380993382534218, + "name": "King's Indian: Mar del Plata, Bayonet Attack, 9...Nh5 10.g3" + }, + "E97o": { + "eco": "E97o", + "fen": "r1bq1rk1/ppp1npbp/3p2p1/3Pp2n/1PP1P3/2N2N2/P3BPPP/R1BQR1K1 b - - 2 10", + "hash": 18306940895410569062, + "name": "King's Indian: Mar del Plata, Bayonet Attack, 9...Nh5 10.Re1" + }, + "E97p": { + "eco": "E97p", + "fen": "r1bq1rk1/1pp1npbp/3p2p1/p2Pp2n/1PP1P3/2N2N2/P3BPPP/R1BQR1K1 w - a6 0 11", + "hash": 8653072953628996598, + "name": "King's Indian: Mar del Plata, Bayonet, 9...Nh5 10.Re1 a5" + }, + "E97q": { + "eco": "E97q", + "fen": "r1bq1rk1/ppp1npbp/3p2p1/3Pp3/1PP1Pn2/2N2N2/P3BPPP/R1BQR1K1 w - - 3 11", + "hash": 16446560383492687915, + "name": "King's Indian: Mar del Plata, Bayonet, 9...Nh5 10.Re1 Nf4" + }, + "E97r": { + "eco": "E97r", + "fen": "r1bq1rk1/ppp1n1bp/3p2p1/3Ppp1n/1PP1P3/2N2N2/P3BPPP/R1BQR1K1 w - f6 0 11", + "hash": 7665187424356307640, + "name": "King's Indian: Mar del Plata, Bayonet, 9...Nh5 10.Re1 f5" + }, + "E97s": { + "eco": "E97s", + "fen": "r1bq1rk1/ppp1n1bp/3p1np1/3PppN1/1PP1P3/2N5/P3BPPP/R1BQR1K1 w - - 2 12", + "hash": 11840316673726373702, + "name": "King's Indian: Mar del Plata, Bayonet, 9...Nh5 10.Re1 f5 11.Ng5 Nf6" + }, + "E97t": { + "eco": "E97t", + "fen": "r1bq1rk1/ppp1npbp/3p1np1/3Pp3/2P1P3/2N5/PP1NBPPP/R1BQ1RK1 b - - 2 9", + "hash": 10776875059822687110, + "name": "King's Indian: Mar del Plata, 9.Nd2" + }, + "E97u": { + "eco": "E97u", + "fen": "r1bqnrk1/ppp1npbp/3p2p1/3Pp3/2P1P3/2N5/PP1NBPPP/R1BQ1RK1 w - - 3 10", + "hash": 13601695294441261371, + "name": "King's Indian: Mar del Plata, 9.Nd2 Ne8" + }, + "E97v": { + "eco": "E97v", + "fen": "r1bq1rk1/pppnnpbp/3p2p1/3Pp3/2P1P3/2N5/PP1NBPPP/R1BQ1RK1 w - - 3 10", + "hash": 7838556256099072627, + "name": "King's Indian: Mar del Plata, 9.Nd2 Nd7" + }, + "E97w": { + "eco": "E97w", + "fen": "r1bq1rk1/pp2npbp/3p1np1/2pPp3/2P1P3/2N5/PP1NBPPP/R1BQ1RK1 w - c6 0 10", + "hash": 8341903127824830873, + "name": "King's Indian: Mar del Plata, 9.Nd2 c5" + }, + "E97x": { + "eco": "E97x", + "fen": "r1bq1rk1/1pp1npbp/3p1np1/p2Pp3/2P1P3/2N5/PP1NBPPP/R1BQ1RK1 w - a6 0 10", + "hash": 1411195710667456278, + "name": "King's Indian: Mar del Plata, 9.Nd2 a5" + }, + "E97y": { + "eco": "E97y", + "fen": "r1bq1rk1/1pp1npbp/3p1np1/p2Pp3/2P1P3/P1N5/1P1NBPPP/R1BQ1RK1 b - - 0 10", + "hash": 15567151862144561494, + "name": "King's Indian: Mar del Plata, 9.Nd2 a5 10.a3" + }, + "E97z": { + "eco": "E97z", + "fen": "r1bq1rk1/1ppnnpbp/3p2p1/p2Pp3/2P1P3/P1N5/1P1NBPPP/R1BQ1RK1 w - - 1 11", + "hash": 2400033245218732195, + "name": "King's Indian: Mar del Plata, 9.Nd2 a5 10.a3 Nd7" + }, + "E98a": { + "eco": "E98a", + "fen": "r1bq1rk1/ppp1npbp/3p1np1/3Pp3/2P1P3/2N5/PP2BPPP/R1BQNRK1 b - - 2 9", + "hash": 16123216120738813679, + "name": "King's Indian: Mar del Plata, 9.Ne1" + }, + "E98b": { + "eco": "E98b", + "fen": "r1bq1rk1/pp2npbp/3p1np1/2pPp3/2P1P3/2N5/PP2BPPP/R1BQNRK1 w - c6 0 10", + "hash": 4146242772186854640, + "name": "King's Indian: Mar del Plata, 9.Ne1 c5" + }, + "E98c": { + "eco": "E98c", + "fen": "r1bqnrk1/ppp1npbp/3p2p1/3Pp3/2P1P3/2N5/PP2BPPP/R1BQNRK1 w - - 3 10", + "hash": 17765821650152221778, + "name": "King's Indian: Mar del Plata, 9.Ne1 Ne8" + }, + "E98d": { + "eco": "E98d", + "fen": "r1bqnrk1/ppp1npbp/3p2p1/3Pp3/2P1P3/2NN4/PP2BPPP/R1BQ1RK1 b - - 4 10", + "hash": 7992019217829564441, + "name": "King's Indian: Mar del Plata, 9.Ne1 Ne8 10.Nd3" + }, + "E98e": { + "eco": "E98e", + "fen": "r1bqnrk1/ppp1npbp/3p2p1/3Pp3/2P1P3/2N1B3/PP2BPPP/R2QNRK1 b - - 4 10", + "hash": 9620915057382553564, + "name": "King's Indian: Mar del Plata, 9.Ne1 Ne8 10.Be3" + }, + "E98f": { + "eco": "E98f", + "fen": "r1bqnrk1/ppp1n1bp/3p2p1/3Ppp2/2P1P3/2N1BP2/PP2B1PP/R2QNRK1 b - - 0 11", + "hash": 9176889002869699955, + "name": "King's Indian: Mar del Plata, 9.Ne1 Ne8 10.Be3 f5 11.f3" + }, + "E98g": { + "eco": "E98g", + "fen": "r1bqnrk1/ppp1n1bp/3p2p1/3Pp3/2P1Pp2/2N1BP2/PP2B1PP/R2QNRK1 w - - 0 12", + "hash": 17678952293376344106, + "name": "King's Indian: Mar del Plata, 9.Ne1 Ne8 10.Be3 f5 11.f3 f4" + }, + "E98h": { + "eco": "E98h", + "fen": "r1bq1rk1/pppnnpbp/3p2p1/3Pp3/2P1P3/2N5/PP2BPPP/R1BQNRK1 w - - 3 10", + "hash": 2775950224486637338, + "name": "King's Indian: Mar del Plata, 9.Ne1 Nd7" + }, + "E98i": { + "eco": "E98i", + "fen": "r1bq1rk1/pppnnpbp/3p2p1/3Pp3/2P1P3/2N5/PP2BPPP/R1BQNR1K b - - 4 10", + "hash": 1670021476941020501, + "name": "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.Kh1" + }, + "E98j": { + "eco": "E98j", + "fen": "r1bq1rk1/pppnnpbp/3p2p1/3Pp3/2P1P3/2N1B3/PP2BPPP/R2QNRK1 b - - 4 10", + "hash": 6165027568946447508, + "name": "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.Be3" + }, + "E98k": { + "eco": "E98k", + "fen": "r1bq1rk1/pppnn1bp/3p2p1/3Ppp2/2P1P3/2N1B3/PP2BPPP/R2QNRK1 w - f6 0 11", + "hash": 13970717383602678090, + "name": "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.Be3 f5" + }, + "E98l": { + "eco": "E98l", + "fen": "r1bq1rk1/pppnnpbp/3p2p1/3Pp3/2P1P3/2NN4/PP2BPPP/R1BQ1RK1 b - - 4 10", + "hash": 13754999928372257617, + "name": "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.Nd3" + }, + "E98m": { + "eco": "E98m", + "fen": "r1bq1rk1/pppnn1bp/3p2p1/3Ppp2/2P1P3/2NN4/PP2BPPP/R1BQ1RK1 w - f6 0 11", + "hash": 3066094927456685711, + "name": "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.Nd3 f5" + }, + "E98n": { + "eco": "E98n", + "fen": "r1bq1rk1/pppnn1bp/3p2p1/3Ppp2/2P1P3/2NN4/PP1BBPPP/R2Q1RK1 b - - 1 11", + "hash": 216647371248870795, + "name": "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.Nd3 f5 11.Bd2" + }, + "E98o": { + "eco": "E98o", + "fen": "r1bq1rk1/pp1nn1bp/3p2p1/2pPpp2/2P1P3/2NN4/PP1BBPPP/R2Q1RK1 w - c6 0 12", + "hash": 16522279680586860436, + "name": "King's Indian: Mar del Plata, Fischer Variation" + }, + "E98p": { + "eco": "E98p", + "fen": "r1bq1r1k/pppnn1bp/3p2p1/3Ppp2/2P1P3/2NN4/PP1BBPPP/R2Q1RK1 w - - 2 12", + "hash": 5389554696932757788, + "name": "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.Nd3 f5 11.Bd2 Kh8" + }, + "E98q": { + "eco": "E98q", + "fen": "r1bq1rk1/ppp1n1bp/3p1np1/3Ppp2/2P1P3/2NN4/PP1BBPPP/R2Q1RK1 w - - 2 12", + "hash": 18034290892256554110, + "name": "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.Nd3 f5 11.Bd2 Nf6" + }, + "E98r": { + "eco": "E98r", + "fen": "r1bq1rk1/pppnnpbp/3p2p1/3Pp3/2P1P3/2N2P2/PP2B1PP/R1BQNRK1 b - - 0 10", + "hash": 5203854617795620971, + "name": "King's Indian: Mar del Plata, 9.Ne1 Nd7 10.f3" + }, + "E99": { + "eco": "E99", + "fen": "r1bq1rk1/pppnn1bp/3p2p1/3Ppp2/2P1P3/2N2P2/PP2B1PP/R1BQNRK1 w - f6 0 11", + "hash": 15877625949877165493, + "name": "King's Indian: Mar del Plata, 10.f3 f5" + } +} \ No newline at end of file diff --git a/data/endgame-dm-4.epd b/data/endgame-dm-4.epd new file mode 100644 index 000000000..7be25027b --- /dev/null +++ b/data/endgame-dm-4.epd @@ -0,0 +1,56 @@ +# 3 and 4 piece endgames for Gaviota tablebase testing. + +# Handpicked. + +1k1K4/8/8/pP6/8/8/8/8 w - a6 dm 0; +4k3/8/8/2p5/8/6P1/6K1/8 w - c6 dm 0; +7K/k7/8/Pp6/8/8/8/8 w - - dm -15; +7K/k7/8/Pp6/8/8/8/8 w - b6 dm 0; +8/8/8/8/pP6/8/K7/7k b - - dm -15; +8/8/8/8/8/1p6/K7/7k w - - dm 0; +8/8/8/8/pP6/8/K7/7k b - b3 dm 0; +8/7k/8/8/3p4/1K6/2P5/8 b - - dm -19; + +# Long endgames. +# Source: http://kirill-kryukov.com/chess/longest-checkmates/longest-checkmates.shtml + +8/8/8/1k6/8/8/K5P1/8 w - - dm 28; +8/8/8/8/8/2k5/1R6/K7 w - - dm 16; +8/8/8/5k2/8/8/1Q6/K7 w - - dm 10; +8/8/8/8/8/2k3P1/6P1/K7 w - - dm 32; +8/8/8/8/8/4N3/3N4/K1k5 w - - dm 1; +8/7N/8/8/8/5k2/7P/K7 w - - dm 27; +8/3P4/KBk5/8/8/8/8/8 w - - dm 31; +8/8/7N/8/8/8/8/K1k1B3 w - - dm 33; +8/8/8/8/7B/8/3k4/K2B4 w - - dm 19; +8/8/1R6/2kP4/8/8/8/K7 w - - dm 16; +8/8/8/8/3N4/3k4/2R5/K7 w - - dm 16; +8/8/8/8/3B4/3k4/2R5/K7 w - - dm 16; +8/8/8/8/8/3k4/2R5/KR6 w - - dm 7; +8/8/8/3k4/8/4P3/8/K1Q5 w - - dm 10; +8/8/5k2/8/8/8/8/KN4Q1 w - - dm 9; +8/5B2/5k2/8/8/8/8/KQ6 w - - dm 8; +8/8/8/8/3k4/2R5/8/K6Q w - - dm 6; +1Q6/Q7/8/8/8/5k2/8/K7 w - - dm 4; +2K5/k7/7p/8/8/8/6P1/8 w - - dm 33; +8/8/8/k7/8/n7/K5P1/8 w - - dm 29; +8/8/8/k7/8/b7/K5P1/8 w - - dm 29; +8/5k2/2PK4/5r2/8/8/8/8 w - - dm 43; +8/8/8/k7/8/q7/K5P1/8 w - - dm 29; +8/8/8/8/p7/8/N7/k1K5 w - - dm 7; +8/8/8/8/8/8/n1K5/k1N5 w - - dm 1; +8/8/8/8/8/8/b7/k1K1N3 w - - dm 1; +8/8/8/8/8/8/r2N4/k1K5 w - - dm 1; +8/8/8/8/8/8/p7/k1K1B3 w - - dm 1; +8/8/8/8/8/8/n1K5/k1B5 w - - dm 1; +8/8/8/8/8/8/b7/k1K1B3 w - - dm 1; +8/8/K7/3p4/8/3k4/4R3/8 w - - dm 26; +8/2R5/8/8/7k/3K4/8/4n3 w - - dm 40; +8/8/8/8/8/2R5/8/3K1bk1 w - - dm 29; +8/8/8/8/8/1R6/6r1/K1k5 w - - dm 19; +8/8/8/8/8/1R6/6q1/K1k5 w - - dm 19; +3Q4/3K4/8/8/8/3k4/3p4/8 w - - dm 28; +8/8/8/8/8/2k5/2n5/KQ6 w - - dm 21; +8/6Q1/8/4b3/3k4/8/8/K7 w - - dm 17; +8/8/8/8/2r5/8/2k5/K6Q w - - dm 35; +8/8/8/8/8/8/8/qk1K2Q1 w - - dm 13; diff --git a/data/endgame-dm-5.epd b/data/endgame-dm-5.epd new file mode 100644 index 000000000..560c796d9 --- /dev/null +++ b/data/endgame-dm-5.epd @@ -0,0 +1,52 @@ +# 5 piece endgames for Gaviota tablebase testing. + +# Handpicked. + +4k3/8/8/6Pp/n2K4/8/8/8 w - h6 dm 0; +4k3/8/8/6Pp/n2K4/8/8/8 w - - dm -21; + +# Endgames selected from +# http://kirill-kryukov.com/chess/longest-checkmates/longest-checkmates.shtml +# to cover all indexing schemes: +# - kaaak_pctoindex krrrk +# - kaabk_pctoindex krrnk +# - kaakb_pctoindex knnkn +# - kaakp_pctoindex knnkp +# - kaapk_pctoindex krrpk +# - kabbk_pctoindex kqbbk +# - kabck_pctoindex kqrnk +# - kabkc_pctoindex kbnkb +# - kabkp_pctoindex krnkp +# - kabpk_pctoindex krnpk +# - kapkb_pctoindex krpkn +# - kapkp_pctoindex kbpkp +# - kappk_pctoindex knppk +# - kppka_pctoindex kppkq +# - kppkp_pctoindex kppkp +# - kpppk_pctoindex kpppk + +8/8/5k2/8/7p/8/PP6/1K6 w - - dm -13; +K7/8/8/8/2k3P1/6P1/6P1/8 w - - dm 33; +7N/K5k1/8/8/8/6P1/6P1/8 w - - dm 32; +6k1/6NR/7P/8/8/8/8/K7 w - - dm 17; +8/K7/8/8/5k2/4RPR1/8/8 w - - dm 14; +8/8/6R1/6Nk/6R1/8/8/K7 w - - dm 10; +8/8/8/8/4k3/5R2/R7/RK6 w - - dm 5; +8/8/8/8/8/1B6/Q1B1k3/K7 w - - dm 6; +Q7/N7/8/8/8/8/3k4/K1R5 w - - dm 5; +8/8/8/8/1p2P3/4P3/1k6/3K4 w - - dm 127; +8/4P3/7q/8/8/8/k1K1P3/8 w - - dm 124; +1N6/8/p7/8/8/8/2k1N3/K7 w - - dm 115; +7n/8/8/8/8/8/2NK4/1kN5 w - - dm 7; +8/7p/8/8/8/1B6/K6P/2k5 w - - dm 67; +8/7B/8/4N3/8/8/3k4/K1b5 w - - dm 39; +8/5n2/8/8/8/7k/7P/3K3R w - - dm 54; +8/8/8/4R3/8/2k3N1/3p4/K7 w - - dm 29; +8/8/7P/3K4/5p2/4p3/8/7k w - - dm 43; +8/8/7P/8/4n3/1k6/8/3K3n w - - dm 74; +3K4/8/1P6/8/6p1/8/4b3/7k w - - dm 51; +1n6/1K1P4/8/8/8/8/4r3/1k6 w - - dm 68; +8/8/8/8/n7/kn6/8/NK6 w - - dm 1; +8/8/8/8/3N4/p7/3r4/k1K5 w - - dm 8; +8/8/8/8/2n5/8/b7/k1K1B3 w - - dm 2; +8/8/8/2K5/5p2/8/1Q2pk2/8 w - - dm 41; diff --git a/data/endgame.epd b/data/endgame.epd new file mode 100644 index 000000000..daa03c11e --- /dev/null +++ b/data/endgame.epd @@ -0,0 +1,200 @@ +8/2K5/8/8/8/8/3p4/1k2N3 b - - wdl_table 2; wdl 2; dtz 1; +8/8/1n6/8/7K/8/3k4/1Q6 w - - wdl_table 2; wdl 2; dtz 1; +8/4r3/8/K7/4R3/8/8/5k2 w - - wdl_table 0; wdl 2; dtz 1; +2K5/8/8/8/6P1/8/2n5/1k6 w - - wdl_table 0; wdl 0; dtz 0; +8/1K6/4q3/8/8/6p1/8/2k5 w - - wdl_table -2; wdl -2; dtz -2; +8/8/R2k4/8/8/K7/8/4r3 b - - wdl_table 0; wdl 0; dtz 0; +8/8/8/8/8/1K2B3/b6k/8 w - - wdl_table 0; wdl 0; dtz 0; +R7/8/6k1/8/8/8/2K4r/8 w - - wdl_table 0; wdl 0; dtz 0; +q7/k2K4/5B2/8/8/8/8/8 b - - wdl_table 2; wdl 2; dtz 19; +3B4/K7/8/k3N3/8/8/8/8 b - - wdl_table -2; wdl -2; dtz -53; +4k3/8/8/8/8/8/P2Kp3/8 b - - wdl_table 0; wdl 0; dtz 0; +8/6k1/4K3/6B1/8/8/5N2/8 w - - wdl_table 2; wdl 2; dtz 20; +8/8/3K4/5P2/Q7/8/1k6/8 w - - wdl_table 2; wdl 2; dtz 1; +8/8/8/8/5k2/3Kb3/8/1N6 w - - wdl_table 0; wdl 0; dtz 0; +2K5/8/2P5/8/4k3/8/3r4/8 w - - wdl_table 0; wdl 0; dtz 0; +8/8/8/3R1p2/8/1k6/3K4/8 b - - wdl_table -2; wdl -2; dtz -2; +8/8/K4k2/7q/8/8/7Q/8 b - - wdl_table 0; wdl 2; dtz 1; +K2R4/8/8/8/2n5/8/8/6k1 w - - wdl_table 0; wdl 0; dtz 0; +n7/8/8/8/1K6/6k1/2r5/8 w - - wdl_table -2; wdl -2; dtz -18; +K7/8/5r2/8/3k4/5p2/8/8 w - - wdl_table -2; wdl -2; dtz -2; +8/8/K7/5k2/3R4/8/7b/8 w - - wdl_table 0; wdl 0; dtz 0; +8/Q7/8/1K6/2B5/1k6/8/8 b - - wdl_table -2; wdl -2; dtz -8; +8/3r4/7K/5R2/8/8/8/5k2 b - - wdl_table 0; wdl 0; dtz 0; +8/8/k5N1/8/8/5p2/8/1K6 b - - wdl_table 2; wdl 2; dtz 1; +8/8/8/8/7r/6q1/2K5/6k1 w - - wdl_table -2; wdl -2; dtz -4; +1r4k1/8/8/p7/8/8/8/K7 b - - wdl_table 2; wdl 2; dtz 1; +8/4K3/8/2k5/8/8/8/5Q1N b - - wdl_table -2; wdl -2; dtz -12; +8/8/2r5/6bk/8/8/6K1/8 b - - wdl_table 2; wdl 2; dtz 9; +4n3/8/7b/8/8/7K/8/7k w - - wdl_table -2; wdl -2; dtz -51; +8/8/1k6/3K4/1b5r/8/8/8 w - - wdl_table -2; wdl -2; dtz -16; +3k4/3rq3/8/1K6/8/8/8/8 w - - wdl_table -2; wdl -2; dtz -4; +8/1p3K2/4R3/8/8/5k2/8/8 w - - wdl_table 2; wdl 2; dtz 3; +3R4/3K4/8/8/k7/8/n7/8 b - - wdl_table 0; wdl 0; dtz 0; +8/8/1B6/4K3/8/6B1/4k3/8 b - - wdl_table 0; wdl 0; dtz 0; +8/8/1k6/8/2R2R2/8/6K1/8 w - - wdl_table 2; wdl 2; dtz 5; +4K3/8/8/7B/8/4R3/2k5/8 b - - wdl_table -2; wdl -2; dtz -20; +5r1K/8/8/8/8/6n1/7k/8 w - - wdl_table -2; wdl -2; dtz -14; +8/4P3/1k2K3/8/8/8/8/6R1 b - - wdl_table -2; wdl -2; dtz -2; +1n6/4Q3/8/k1K5/8/8/8/8 b - - wdl_table -2; wdl -2; dtz -14; +8/8/8/4Kp2/2k5/8/8/7B w - - wdl_table 0; wdl 0; dtz 0; +7R/8/8/8/8/N1k5/8/5K2 w - - wdl_table 2; wdl 2; dtz 11; +K7/5N2/8/8/3p4/8/k7/8 w - - wdl_table 0; wdl 0; dtz 0; +K7/3n4/6r1/8/8/4k3/8/8 w - - wdl_table -2; wdl -2; dtz -12; +2q5/8/8/8/6N1/8/4K3/k7 w - - wdl_table -2; wdl -2; dtz -30; +8/8/8/7K/7r/7N/8/4k3 w - - wdl_table 0; wdl 0; dtz 0; +8/8/8/1B6/5K2/3n4/8/5k2 w - - wdl_table 0; wdl 0; dtz 0; +8/8/8/8/8/1q3k2/8/2R4K w - - wdl_table -2; wdl -2; dtz -8; +4QK2/8/5k2/8/8/8/b7/8 w - - wdl_table 2; wdl 2; dtz 9; +2k5/8/8/1q2K1n1/8/8/8/8 w - - wdl_table -2; wdl -2; dtz -10; +8/2B5/2k5/8/2K5/3n4/8/8 w - - wdl_table 0; wdl 0; dtz 0; +K7/8/4B3/5k2/8/8/8/2n5 b - - wdl_table 0; wdl 0; dtz 0; +8/8/3b4/6K1/8/8/1Q6/1k6 b - - wdl_table -2; wdl 0; dtz 0; +8/4k3/8/7P/5K2/2b5/8/8 w - - wdl_table 0; wdl 0; dtz 0; +7Q/8/4k3/6K1/n7/8/8/8 w - - wdl_table 2; wdl 2; dtz 3; +8/k3p3/b7/8/8/K7/8/8 b - - wdl_table 2; wdl 2; dtz 1; +8/8/3p1k2/8/8/6K1/8/4n3 w - - wdl_table -2; wdl -2; dtz -4; +4b3/4n3/8/8/2k5/8/3K4/8 w - - wdl_table -2; wdl -2; dtz -47; +5Q2/8/8/2k5/8/8/2K5/6B1 b - - wdl_table -2; wdl -2; dtz -8; +8/7p/8/8/8/bk6/8/1K6 w - - wdl_table -2; wdl -2; dtz -2; +6Q1/8/1K6/8/1p5k/8/8/8 b - - wdl_table -2; wdl -2; dtz -4; +8/6K1/8/8/4Q3/7p/1k6/8 b - - wdl_table -2; wdl -2; dtz -4; +8/8/1k6/8/8/5q2/n7/5K2 w - - wdl_table -2; wdl -2; dtz -8; +8/6P1/p7/8/8/8/8/1K1k4 w - - wdl_table 2; wdl 2; dtz 1; +8/5K2/3k1r2/8/8/8/2Q5/8 w - - wdl_table 2; wdl 2; dtz 1; +8/5p2/6k1/K7/8/8/8/8 w - - wdl_table -2; wdl -2; dtz -2; +6k1/1n6/1B6/8/8/8/8/2K5 w - - wdl_table 0; wdl 0; dtz 0; +7k/1R6/8/8/8/8/4r3/K7 w - - wdl_table 0; wdl 0; dtz 0; +8/6k1/8/8/3K4/b7/1Q6/8 w - - wdl_table 2; wdl 2; dtz 1; +K5n1/8/8/7n/k7/8/8/8 w - - wdl_table 0; wdl 0; dtz 0; +8/8/2K5/k7/1q6/5r2/8/8 w - - wdl_table -2; wdl -2; dtz -4; +7N/8/8/7P/8/1K6/8/5k2 w - - wdl_table 2; wdl 2; dtz 1; +3K4/4n3/2k5/8/b7/8/8/8 w - - wdl_table -2; wdl 0; dtz 0; +4b3/6k1/8/8/8/8/7b/4K3 b - - wdl_table 2; wdl 2; dtz 28; +8/5k2/1K6/8/8/6n1/8/2B5 w - - wdl_table 0; wdl 0; dtz 0; +4Kn2/2R5/8/8/8/3k4/8/8 b - - wdl_table 0; wdl 0; dtz 0; +8/k7/8/3q4/8/7Q/2K5/8 b - - wdl_table 0; wdl 0; dtz 0; +4K3/8/8/8/1Q6/3b4/7k/8 b - - wdl_table -2; wdl -2; dtz -18; +8/8/8/3Kn3/8/8/4k3/N7 b - - wdl_table 0; wdl 0; dtz 0; +2kn4/8/K7/8/4R3/8/8/8 b - - wdl_table 0; wdl 0; dtz 0; +8/2k5/8/8/8/4Qr2/6K1/8 b - - wdl_table -2; wdl 2; dtz 1; +4r3/8/8/2K5/8/8/3P4/k7 w - - wdl_table 0; wdl 0; dtz 0; +5K2/1Pk5/4b3/8/8/8/8/8 b - - wdl_table 0; wdl 0; dtz 0; +8/4K3/5r2/8/8/8/6k1/7b w - - wdl_table -2; wdl 0; dtz 0; +8/8/Q1q5/8/8/2k5/4K3/8 w - - wdl_table 0; wdl 2; dtz 1; +6q1/8/6K1/4R3/1k6/8/8/8 w - - wdl_table -2; wdl -2; dtz -46; +8/3K4/8/8/1k6/1B4P1/8/8 w - - wdl_table 2; wdl 2; dtz 1; +1n6/8/8/3k4/8/1K2n3/8/8 w - - wdl_table 0; wdl 0; dtz 0; +2b5/3K4/4R3/3k4/8/8/8/8 w - - wdl_table 0; wdl 0; dtz 0; +8/8/8/8/4k3/2q5/3K4/6r1 w - - wdl_table -2; wdl -2; dtz -2; +8/8/3K4/3n4/8/3k4/8/4n3 b - - wdl_table 0; wdl 0; dtz 0; +5K2/8/8/8/8/8/N7/4k2n b - - wdl_table 0; wdl 0; dtz 0; +8/8/6K1/8/p7/5R2/6k1/8 w - - wdl_table 2; wdl 2; dtz 3; +7N/q7/8/7K/1k6/8/8/8 w - - wdl_table -2; wdl -2; dtz -20; +8/2k5/p7/3K2P1/8/8/8/8 b - - wdl_table 0; wdl 0; dtz 0; +1bB5/8/1k6/8/8/8/6K1/8 b - - wdl_table 0; wdl 0; dtz 0; +8/8/3Q4/8/8/8/q7/4k1K1 b - - wdl_table 0; wdl 0; dtz 0; +8/1K6/1R6/8/8/8/2k5/5B2 w - - wdl_table 2; wdl 2; dtz 15; +8/4p3/8/3n4/6K1/8/8/6k1 w - - wdl_table -2; wdl -2; dtz -4; +8/8/8/2K5/5kp1/8/8/8 b - - wdl_table 2; wdl 2; dtz 1; +8/3K4/5k2/8/1N6/4n3/8/8 b - - wdl_table 0; wdl 0; dtz 0; +8/8/8/3k2P1/8/8/3q4/K7 b - - wdl_table 2; wdl 2; dtz 1; +6B1/8/8/1n6/8/5k2/8/1K6 w - - wdl_table 0; wdl 0; dtz 0; +8/8/1n5B/8/8/8/6K1/2k5 b - - wdl_table 0; wdl 0; dtz 0; +3K1b2/2R5/8/8/8/1k6/8/8 w - - wdl_table 0; wdl 0; dtz 0; +7K/8/8/8/4k3/1N6/3n4/8 b - - wdl_table 0; wdl 0; dtz 0; +6r1/8/5K2/8/8/8/8/1k1n4 b - - wdl_table 2; wdl 2; dtz 21; +8/8/4K3/k7/4q3/8/6p1/8 w - - wdl_table -2; wdl -2; dtz -2; +7B/8/8/7B/8/3k4/8/6K1 b - - wdl_table -2; wdl -2; dtz -33; +8/8/8/3r4/2K5/8/2k3n1/8 w - - wdl_table -2; wdl 0; dtz 0; +8/8/q1P5/8/5k2/8/8/6K1 b - - wdl_table 2; wdl 2; dtz 1; +7B/2k5/8/8/6p1/8/8/1K6 w - - wdl_table 0; wdl 0; dtz 0; +5k2/8/4K3/8/3r1B2/8/8/8 b - - wdl_table 0; wdl 2; dtz 1; +8/8/8/8/4k3/8/8/1R2R1K1 b - - wdl_table -2; wdl -2; dtz -8; +k7/7K/8/p7/6n1/8/8/8 w - - wdl_table -2; wdl -2; dtz -2; +8/4p2K/3B4/7k/8/8/8/8 b - - wdl_table 0; wdl 2; dtz 1; +7K/6p1/8/8/k1R5/8/8/8 b - - wdl_table -2; wdl -2; dtz -4; +8/7n/8/N1K5/6k1/8/8/8 w - - wdl_table 0; wdl 0; dtz 0; +8/8/5k2/8/2K5/3N4/2B5/8 w - - wdl_table 2; wdl 2; dtz 48; +8/7r/8/1k4K1/8/8/8/3B4 w - - wdl_table 0; wdl 0; dtz 0; +8/8/4K3/8/8/1k6/8/4RN2 b - - wdl_table -2; wdl -2; dtz -16; +8/5q2/8/2K5/8/8/k7/1R6 w - - wdl_table -2; wdl -2; dtz -54; +8/8/8/5Q2/6K1/1k6/7p/8 w - - wdl_table 2; wdl 2; dtz 3; +2K5/8/8/kr6/8/8/8/4b3 b - - wdl_table 2; wdl 2; dtz 11; +8/8/8/N2K1k2/P7/8/8/8 b - - wdl_table -2; wdl -2; dtz -4; +8/8/8/8/4P3/6k1/5N2/4K3 w - - wdl_table 2; wdl 2; dtz 1; +8/6N1/8/8/7k/8/p7/4K3 b - - wdl_table 2; wdl 2; dtz 1; +8/3p4/5p2/2K5/8/8/8/2k5 b - - wdl_table 2; wdl 2; dtz 1; +8/8/2q1k3/8/5K2/8/3r4/8 w - - wdl_table -2; wdl -2; dtz -6; +3Kb3/7k/8/8/8/8/4Q3/8 b - - wdl_table -2; wdl -2; dtz -10; +8/8/8/3p4/7b/8/6K1/3k4 b - - wdl_table 2; wdl 2; dtz 1; +8/4K3/2P5/4k3/7B/8/8/8 w - - wdl_table 2; wdl 2; dtz 1; +8/7k/8/4KP2/8/8/1p6/8 w - - wdl_table -2; wdl -2; dtz -1; +8/8/8/8/7K/p4k2/8/1r6 w - - wdl_table -2; wdl -2; dtz -2; +2K1N3/8/8/8/8/7p/4k3/8 b - - wdl_table 2; wdl 2; dtz 1; +8/k7/8/5N2/8/4K3/3r4/8 w - - wdl_table 0; wdl 0; dtz 0; +1k6/1R3P2/8/8/8/8/8/6K1 b - - wdl_table -2; wdl -2; dtz -2; +8/5k2/8/6n1/7r/7K/8/8 w - - wdl_table -2; wdl 0; dtz 0; +8/6K1/6R1/6R1/7k/8/8/8 w - - wdl_table 2; wdl 2; dtz 1; +5b2/8/2kq4/4K3/8/8/8/8 w - - wdl_table -2; wdl -2; dtz -10; +8/2K5/8/8/8/4k2N/8/6n1 w - - wdl_table 0; wdl 0; dtz 0; +1k6/4P3/8/5QK1/8/8/8/8 b - - wdl_table -2; wdl -2; dtz -2; +8/8/2r5/8/k7/3K4/6r1/8 w - - wdl_table -2; wdl -2; dtz -6; +6N1/8/8/2k5/7N/1K6/8/8 b - - wdl_table 0; wdl 0; dtz 0; +8/2k5/8/8/2n5/8/8/K5q1 w - - wdl_table -2; wdl -2; dtz -4; +8/3k4/8/8/8/4q3/3K4/7r w - - wdl_table -2; wdl -2; dtz -2; +8/4K3/8/2B1k3/8/8/7P/8 b - - wdl_table -2; wdl -2; dtz -2; +8/8/r7/8/7k/8/2K5/5N2 b - - wdl_table 0; wdl 0; dtz 0; +8/8/8/2k5/8/2b5/8/K2R4 w - - wdl_table 0; wdl 0; dtz 0; +5k2/5P2/8/8/8/8/4B3/1K6 b - - wdl_table -2; wdl 0; dtz 0; +8/2q5/8/8/1k6/7K/8/7B w - - wdl_table -2; wdl -2; dtz -14; +2b4q/4K3/8/5k2/8/8/8/8 b - - wdl_table 2; wdl 2; dtz 3; +8/8/8/1K6/8/7Q/8/3kb3 w - - wdl_table 2; wdl 2; dtz 7; +8/7k/K7/6r1/8/5R2/8/8 w - - wdl_table 0; wdl 0; dtz 0; +8/8/1b6/8/8/8/1k4QK/8 b - - wdl_table -2; wdl -2; dtz -18; +q7/8/8/2b2k2/8/3K4/8/8 b - - wdl_table 2; wdl 2; dtz 5; +7k/5K2/6q1/8/8/8/8/2Q5 w - - wdl_table 0; wdl 2; dtz 1; +1B6/8/8/1Q6/8/k7/8/7K b - - wdl_table -2; wdl -2; dtz -6; +6R1/8/5b2/5K2/8/8/8/1k6 b - - wdl_table 0; wdl 0; dtz 0; +8/8/8/1N1Q4/2K5/6k1/8/8 w - - wdl_table 2; wdl 2; dtz 9; +2k5/8/4N3/2K5/8/1b6/8/8 b - - wdl_table 0; wdl 0; dtz 0; +8/8/2Q5/8/8/1b6/7K/1k6 w - - wdl_table 2; wdl 2; dtz 15; +8/8/2N5/3k4/8/1K6/2b5/8 w - - wdl_table 0; wdl 0; dtz 0; +8/8/8/3k4/6p1/8/P7/2K5 b - - wdl_table 2; wdl 2; dtz 1; +8/8/3P1K1p/1k6/8/8/8/8 b - - wdl_table -2; wdl -2; dtz -3; +8/8/6k1/2r5/6K1/8/N7/8 w - - wdl_table 0; wdl 0; dtz 0; +5R2/1K6/8/4N3/8/8/8/1k6 w - - wdl_table 2; wdl 2; dtz 13; +8/8/8/2R5/1K6/8/5k2/8 w - - wdl_table 2; wdl 2; dtz 21; +3K4/8/8/8/8/8/2k2b1N/8 b - - wdl_table 0; wdl 0; dtz 0; +8/8/8/3q4/8/5k1P/7K/8 w - - wdl_table -2; wdl -2; dtz -4; +4k3/2b5/2N5/8/4K3/8/8/8 b - - wdl_table 0; wdl 0; dtz 0; +R7/8/6R1/8/7k/1K6/8/8 b - - wdl_table -2; wdl -2; dtz -2; +K7/3q4/5R2/5k2/8/8/8/8 b - - wdl_table 2; wdl 2; dtz 1; +2k1b3/1q6/8/8/8/8/K7/8 w - - wdl_table -2; wdl -2; dtz -6; +8/8/1Pk5/8/8/4b3/8/7K b - - wdl_table 0; wdl 0; dtz 0; +4k3/8/8/8/8/4b3/1K6/n7 b - - wdl_table 2; wdl 2; dtz 56; +2B5/8/1K6/r7/5k2/8/8/8 w - - wdl_table 0; wdl 0; dtz 0; +7K/8/8/N3k3/7P/8/8/8 b - - wdl_table 0; wdl 0; dtz 0; +8/1K6/1b6/8/8/4n3/2k5/8 b - - wdl_table 2; wdl 2; dtz 52; +K7/8/8/3R4/8/8/7B/7k b - - wdl_table -2; wdl -2; dtz -16; +1K6/8/6B1/8/8/8/5B2/k7 b - - wdl_table -2; wdl -2; dtz -27; +8/1KP5/8/8/8/2N1k3/8/8 w - - wdl_table 2; wdl 2; dtz 1; +8/8/8/8/5r2/8/3N2k1/3K4 w - - wdl_table 0; wdl 0; dtz 0; +7R/8/8/8/B6k/8/8/K7 b - - wdl_table -2; wdl -2; dtz -22; +5N2/8/8/6K1/1k6/8/3n4/8 w - - wdl_table 0; wdl 0; dtz 0; +1K6/8/8/8/5k2/1Q6/8/5b2 b - - wdl_table -2; wdl -2; dtz -22; +1r6/5k2/1n6/8/8/K7/8/8 w - - wdl_table -2; wdl -2; dtz -16; +8/8/6K1/8/4n3/4p1k1/8/8 b - - wdl_table 2; wdl 2; dtz 1; +8/7k/8/8/3K4/pQ6/8/8 w - - wdl_table 2; wdl 2; dtz 1; +8/8/5N2/6K1/8/3kN3/8/8 w - - wdl_table 0; wdl 0; dtz 0; +1k4b1/8/1r2K3/8/8/8/8/8 w - - wdl_table -2; wdl -2; dtz -18; +8/8/2kb4/8/8/7Q/8/7K b - - wdl_table -2; wdl -2; dtz -22; +6n1/8/8/8/4r3/8/k4K2/8 w - - wdl_table -2; wdl -2; dtz -18; +K7/8/b3N3/7k/8/8/8/8 w - - wdl_table 0; wdl 0; dtz 0; +8/3k4/8/8/8/8/4P3/3K4 w - - wdl_table 0; wdl 0; dtz 0; +8/8/3k4/8/8/6KN/3N4/8 b - - wdl_table 0; wdl 0; dtz 0; +8/6k1/8/8/8/3Q4/8/4K2N b - - wdl_table -2; wdl -2; dtz -12; +B3K2B/8/8/8/8/8/4k3/8 b - - wdl_table -2; wdl -2; dtz -33; +6k1/8/8/8/8/4n3/8/K7 b - - wdl_table 0; wdl 0; dtz 0; +8/2k5/8/1K6/4n3/8/7n/8 w - - wdl_table 0; wdl 0; dtz 0; +1R6/3k4/8/8/8/1K6/8/2q5 b - - wdl_table 2; wdl 2; dtz 3; diff --git a/data/games/immortal-games.pgn b/data/games/immortal-games.pgn deleted file mode 100644 index 46745768f..000000000 --- a/data/games/immortal-games.pgn +++ /dev/null @@ -1,2572 +0,0 @@ -% Source of annotations: -% http://www.chess.com/download/view/600-annotated-games - -[Event "?"] -[Site "Hastings"] -[Date "1895"] -[White "Pillsbury"] -[Black "Tarasch"] -[Result "1-0"] - -1. d4 d5 -2. c4 e6 -3. Nc3 Nf6 -4. Bg5 {It was Pillsbury who first demonstrated the -strength of the this move, which today is routine} -4..Be7 -5. Nf3 Nd7 -6. Rc1 O-O -7. e3 b6 {In order to develop the Queen Bishop on -Bb7. This was the most popular way of defending the -Queen's gambit declined at the time.} -8. cxd5 {Depriving Black of the opportunity to play -dxc4 when the diagonal b7-g2 would be open for his -Queen Bishop.} 8...exd5 ({The classical -continuation more common today is} 8..Nf6xd5 {which -accomplishes some exchanging after} 9. Bxe7, Qxe7 10. -Nxd5, e6xd5) -9. Bd3 Bb7 -10. O-O c5 {A strategical necessity. Otherwise, this -pawn will remain backward and vulnerable to White's -Rook on the half open Queen Bishop file.} -11. Re1 {Whatever the purpose of this move, it turns -out to be a loss of time, for the Rook later goes -back to f1.} -11...c4 {This move releases the -tension in the center in order to commence a queen -side attack. White will counter this by an attack on -the other wing.} -12. Bb1 a6 {In order to play b5. Black's plan is to -advance his queen side pawns with the ultimate aim of -obtaining a passed pawn.} -13. Ne5 {The knight is here aggressively posted in the -neighborhood of Black's King.} 13...b5 -14. f4 {This move furthers White's attack in several -ways. Should Black ever play Nxe5, White will -recapture with the Bishop Pawn and open his King -Bishop file. The White's King Bishop Pawn may later -in the game advance to f5, threatening to break up -Black's kingside by f6. White's King Rook now can -advance to Black's kingside by Rf1-Rf3 and Rg3 or -Rh3.} 14...Re8 {To be able to bring his Queen Knight -to Nf8, where it is an excellent defensive piece.} -15. Qf3 {Bringing the Queen to the attack.} 15...Nf8 -16. Ne2 {Transferring the Knight to the kingside.} -16...Ne4 $1 {Black blocks the White King Bishop -diagonal and exchanges off his King Bishop. Each -exchange favors Black, for they lessen the vigor of a -kingside attack. Queen side attacks, by contrast, -are concerned with obtaining a passed pawn, which is -even more advantageous in the end game then the -middle game.} -17. Bxe7 {Black was threatening to win a piece with -f6} 17...Rxe7 -18. Bxe4 {White is not happy to give up his King -Bishop, but there is no way to drive away Black's -Knight at e4, and as long as it remains there it is -more effective than the Bishop, whose diagonal itblocks.} - 18...dxe4 -19. Qg3 {Black is not the only one who has gained -something from these exchanges. Now that Black's -Queen Bishop Pawn no longer has the support of a -Queen Pawn, he is much less free to advance his queen -side pawns, and his attack on the queen side is thus -slowed. White's backward King Pawn, which previously -was indirectly under pressure by Black's King Rook, -now has shelter behind Black's Pawn at the latter -e4.} 19...f6 {This slightly weakens Black's -kingside, but it is worth it to prevent White's King -Bishop Pawn from ever advancing to f6.} -20. Ng4 {Threatening 21. Nxf6+.} 20...Kh8 -21. f5 {Cramping Black's kingside and vacating his f4 -which can now be occupied by a Rook or a Knight.} -21...Qd7 -22. Rf1 {See note at move 11.} 22...Rd8 {Preparing -Qd6 to defend his f6 pawn a second time.} -23. Rf4 {White is embarking upon a plan to attack -Black's isolated King Pawn , and tie up Black's -pieces to its defense.} 23...Qd6 -24. Qh4 Rde8 -25. Nc3 Bd5 {To be able to guard the King Pawn again -by Qc6.} -26. Nf2 Qc6 -27. Rf1 {White must be careful now about removing any -pieces from the queen side, for Black can play b4, -followed by Qa4, menacing White's queen side pawns.} - 27...b4 -28. Ne2 Qa4 ({If Black tries to advance his c Pawn with} 28..c3 {there follows} 29. bxc3, bxc3 30. Nd1, c2 31. Ndc3, Bc4 32. d5, Bxd5 33. Rc1 -{and Black loses his Queen Bishop Pawn.}) -29 Ng4 Nd7 (29...Qxa2? 30. Nxf6 g7xf6 31. -Qxf6+ Kg8 (31..Rg7 32. Rg4) 32. Rg4+ {winning} ) -30. R4f2 $1 {Defending the Queen Rook Pawn by a -clever combination.} Kg8 -(30..Qxa2 31. Nf4, Bf7 -32. Ng6 $1, Bxg6 33. f5xg6 h6 (33..Nf8 34. Nxf6, g7xf6 35.Rxf6, Kg8 36. Rf7 -{forces mate.}) 34.Nxh6, g7xh6 35. Qxh6+, Kg8 36. Rf5 $1 { and black is - defenseless against 37. Rh5 and Qh8} ) -31. Nc1 {Guarding his Queen Rook Pawn. If he had done -this on move - twenty-nine, Black would have had the crushing reply -Qc7.} 31...c3 - {Black gets a passed Pawn.} -32. b3 Qc6 {Both sides now have clear cut plans. -Black will advance his - Queen Rook Pawn to a4, exchange pawns and bring a -Rook to a3 winning White's Queen Knight Pawn. White -will counter by advancing his King Knight Pawn to g5 -and opening up his King Knight file.} -33. h3 {Making room for the Knight at h2.} 33...a5 -34. Nh2 {White's attack looks slower than Blacks, but -White has a - stroke of genius prepared.} 34...a4 -35. g4 axb3 -36. axb3 Ra8 {With hindsight, the defensive 36..h6 -might have been - better.} -37. g5 -37..Ra3 (37...fxg5 38. Qxg5 Nf6 (38...Qf6 39. Qg3 -- 40. Ng4 ) 39. Ng4 {taking advantage -of black's pinned Knight, Followed by 40. Ne5, when the Knight will be devastatingly - powerful.} ) -38. Ng4 Bb3 ({At this moment neither Tarasch nor the -onlookers had any doubt that white was finished. In -the February 1971 issue of Chess Review, Frank -Rhoden relates that Mr. E.G. Taylor, a Hastings chess - club member who actually witnessed the game, told him -that after Tarasch made his 38th move, "The -spectators began to drift away, thinking there was -nothing more to see." But now comes one of the most -dramatic surprises ever seen on a chessboard. With -hindsight, several annotators have advocated that -black play 38.. Rxb3, which sacrifices the exchange -for a pawn. Black would then have his Bishop -available for the defense and obtain two dangerous -connected passed pawns. But 38...Rxb3 is no better -than the move played.} - 38..Rxb3 39.Nxb3, Bxb3 40. Rg2, Kh8 41. g5xf6, g7xf6 42. -Ne5 $1, Nxe5 43.dxe5 c2 (43..Rxe5 44. Qh6 -{ threatening mate at both g7 and f8 wins.}) 44. e6 -{and black is finished. If then} 44.. Qc3 45. Qh7 - {These variations were given by Horowitz and Reinfeld -in their revision of R.N. Cole's book, Battles Royal of the Chessboard. - }) -39. Rg2 {Threatening to win a piece with 40. gxf6, -Nxf6 41. Nxf6+} - 39...Kh8 -40. gxf6 gxf6 {If 40...Nxf6 41. Ne5 followed by -42. Ng6+} -41. Nxb3 Rxb3 -42. Nh6 Rg7 {White threatened 43. Rg8#, and if -42...Re8, 43. Nf7#} -43. Rxg7 Kxg7 -44. Qg3 $3 {The move that turns the -tables....If 44..Kf8 45. Qg8+ 46. Qxb3} Kxh6 -45. Kh1 $1 {Threatening 46. Rg1 and 47. Qh4#. The only -was for Black to prevent this is to play as he does.} - 45...Qd5 -46. Rg1 Qxf5 -47. Qh4+ Qh5 -48. Qf4+ Qg5 -49. Rxg5 fxg5 -50. Qd6+ Kh5 -51. Qxd7 c2 -({A blunder, but Black was lost. If} -51..Rb1+ ( 51..Kg6 52. Qe6+ ) 52. Kg2, Rb2+ 53. Kg3, Kg6 54. Qc6+ Kf5 55. d5 {wins -easily.}) -52. Qxh7# -1-0 - -[Event "McDonnell - La Bourdonnais (Kings Gambit) "] -[Site "London"] -[Date "1834.??.??"] -[White "McDonnell"] -[Black "La Bourdonnais"] -[Result "1-0"] - -1. e4 e5 -2. f4 exf4 -3. Nf3 g5 -4. Bc4 g4 -5. Nc3 {McDonnell's invention. Usual here is 5. 0-0, -the Muzio Gambit, - which sacrifices a piece for a fierce attack on -black's undeveloped kingside. 5. Ne5 the Salvio -Gambit was also played in the nineteenth century. -Eventually it was found that 5. Qh4+ 6. Kf1 Nc6 $1 -refutes it, as complex analysis would show.} 5... -gxf3 -6. O-O {6. Qxf3, as also played by McDonnell, would -lead to more independent positions. Note it is as if -White played a Muzio and followed it up with Nc3 -instead of the usual Qxf3} -6... c6? {Black plans to -place his Queen on Qf6, so that after White plays Qxf3 -he cannot at once follow this with Qxf4 because Black -will exchange queens. With the text move Black keeps -White's knight out of Nd5 where he may eventually -harass Black's Queen. However, if 6.. -Qf3, Nd5?? then 7..Qd4+ and Qxc4 but in this wild -open position there is not time for such a move.} -7. Qxf3 Qf6 -8. e5 {Its quite worth another pawn to open the -position further} 8...Qxe5 -9. Bxf7 $1 { A finely conceived sacrifice} - 9...Kxf7 -10. d4 Qxd4+ {Perhaps better was 10...Qg7 at once.} -11. Be3 {The piquant point, Black can not play -11...Qxe3+? because after QxQ Blacks Bishop Pawn is pinned and cannot recapture. Notice how all of Whites moves gain time and development.} -11...Qg7 -12. Bxf4 {Black has two extra pieces, but he is far -behind in developement and his King is - very exposed}12...Nf6 -13. Ne4 {White must strike while the iron is hot. The -text starts on attack against Blacks - knight, which covers his King. Black cannot play -13...Nxe4 because 14. Be5 or Bh6 - dis. + wins the Queen.} 13...Be7 -14. Bg5 {Continuing the pressure against the Knight.} -14...Rg8 {inderectly menacing - Whites King Knight Pawn} -15. Qh5+ {Planning a brilliant combination.} 15...Qg6 - {Not 15...Kf8?? 16. Bh6.} -16. Nd6+ $1 {If now 16..Bxd6 17. Rxf6+ followed by 18. - Rxg6 notice that Black's Queen is - pinned, so he cannot play 17...Qxf6} -16...Ke6 -({This allows a very nice finish. - If} 16..Kg7? 17. Bh6+ $1 Qxh6 (17...Kh8 18. -Nf7+) 18. Qf7+ Kh8 19. Qxe7 {threatening Nf7+, wins}) -(16. ..Kf8 {Black's only chance. Then, after} - 17. Bh6+, Rg7 18. Bxg7+ Kxg7 19. Qe5 Bxd6 20. -Qxd6 {Black has three pieces - for a rook, but his lack of development still gives -white the advantage.}) -17. Rae1+ Kxd6 ( 17...Kd5 18. c4 Kc5 19. -Be3 Kb4 20.Qc5 Ka4 21. b3#) -18. Bf4# -1-0 - -[Event "McDonnell - La Bourdonnais (20)"] -[Site "London"] -[Date "1834.??.??"] -[White "McDonnell"] -[Black "La Bourdonnais"] -[Result "1-0"] - -1. e4 e5 -2. f4 exf4 -3. Bc4 Qh4+ -4. Kf1 d6 {More usual and better is 4... g5 or 4...d5 5. bxd5 bd6} -5. d4 Bg4 -6. Qd3 Nc6 -7. Bxf7+ ? {A decidedly mistaken idea. With this -move and the queen manuevers whi+ follow, white wins -material, but removes his queen to the far side of -the board. This at a time when blacks pieces are -aggressively placed, whereas white after the -disappearance of his king bishop will not have a -single piece developed! Such a move shows that in -1834 even the best players did not fully grasp the -principle of development.} -7...Kxf7 -8. Qb3+ Kg6 {The king is very secure here} -9. Qxb7 Nxd4 $1 {A good exchange sacrifice.} -10. Qxa8 Nf6 {Developing, guarding his king -bishop, and preventing 11. qe8+} -11. Na3 {Unfortuneatly for white, he must develop the -knight to the side to guard his c2 pawn} -11...f3 {Breaking in to White's king position} -12. g3 Bh3+ -13. Ke1 Qg4 -14. Be3 {Developing and attacking black's queen knight} -14...d5 $1 {a well thought out winning move. Bb4+ winning queen is threatened} -15. Qxa7 Nc6 -16. Qxc7 {If 16. Qa4 d4 17. bf4 (If 17. bd2 Qxe4+ and f7 wins or 17. Qxc6 dxe3 wins) 17...Bb4+ 18. c3 dxc3 wins} -16...d4 -17. Bd2 {If Bf4 Bb4+ 18. c3 (18. Kf2 Nxe4+ 18...dxc3 wins or 17. Qxc6 dxe3 and White's king is completely encircled)} -17...Qxe4+ -18. Kd1 f2 -19. Nxh3 Qf3+ {and black won. Mate is forced after 20. Kc1 Qxh1+ or 20...f1=Q+.} -0-1 - -[Event "?"] -[White "Alekhine"] -[Black "Alexander"] -[Date "1936.??.??"] -[Result "1-0"] - -{Queen's Indian Defense, 27 moves. Alekhine takes advantage of a slight error and defeats his opponent quickly with a series of sharp moves and pretty combinations. Alekhine was world champion from 1937-1946.} -1. d4 Nf6 {Preventing 2. e4} -2. c4 {Putting pressure on d5.} -2... e6 3. Nf3 Bb4+ 4. Nbd2 b6 {The Queen's Indian Defense. Black moves the bishop to b7 to put pressure on the center.} -5. g3 {The usual counter to the bishop on b7.} -5... Bb7 6. Bg2 0-0 {Continuing development.} -7. 0-0 Bxd2 {This is a questionable move since the bishop was more powerful than the knight. The key to White's attack in this game is the power of his dark-squared bishop.} -8. Qxd2 {With Black's dark-squared bishop gone, White plans to place a bishop on b2 exerting strong pressure along the diagonal.} -8... d6 {Black want to develop the knight on d7 rather than on c6 where it would block the bishop on b7 and the pawn on c7.} -9. b3 {The bishop is going to be well placed on b2.} -9... Nbd7 10. Bb2 Rb8 {Black wants the bishop to be protected so that after ... Ne4 the knight will not become pinned to the bishop after White moves his queen and knight. However, this is a passive place for the rook.} -11. Rad1 Ne4 {The knight is Black's best-placed piece.} -12. Qe3 {White would like to trade off the knight with 13. Nd2.} -12... f5 {Now Black can meet 13. Nd2 with Ndf6.} -13. d5 {This limits the scope of Black's bishop and increases the scope of White's queen bishop. If 13...e5 then 14. Nh4 Nec5 15. f4 threatening 16. fxe5 Nxe5 17. Nxf5. Black cannot win a piece with 15... exf4 16. Qxf4 g5 because of 17. Qd4 threatening 18. Qxg7#.} -13... exd5 14. cxd5 Ndf6 {Attacking the pawn on d5. It doesn't look like it can be defended.} -15. Nh4 {Black cannot capture the pawn on d5 safely. If 15... Bxd5 then 16. Bxf6 Qxf6 (or 16... Nxf6 17. Bxd5) 17. Rxd5. If 15... Nxd5 then 16. Rxd5 $1 Bxd5 17. Qd4 (Threatening Qxg7#.) 17... Qd7 18. Qxd5+ and Black's rook and pawn are no match for White's two bishops.} -15... Qd7 16. Bh3 {Pinning the pawn on f5 and therefore removing its ability to protect the knight on e4. If 16... Nxd5 then 17. Qxe4 fxe4 18. Bxd7 wins. If 16... Bxd5 then 17. Rxd5 Nxd5 18. Qxe4 fxe4 19. Bxd7 and although material is even, White has a winning positional advantage.} -16... g6 {Black has been forced to weaken his dark squares and thus enhance the effectiveness of White's bishop on b2.} -17. f3 {White chases away Black's best-placed piece and prepares for an eventual e4 breaking open the position.} -17... Nc5 18. Qg5 {Pinning the pawn on g6 and threatening to take the pawn on f5 with either the knight or the bishop. White also clears the way for moving a pawn to e4.} -18... Qg7 {Breaking the pin and bringing the queen over to help defend the king.} -19. b4 {Pushing back a defender of e4.} -19... Ncd7 -20. e4 {Threatening the pawn on f5. If 20... fxe4 21. Bxd7 Qxd7 22. Bxf6 wins a piece.} -20... Nxe4 {This looks like a saving move. If 21. fxe4 then 21... Qxb2. If 21. Bxg2 Nxg5 22. Bxf8 Nxh3+ 23. Kg2 Rxf8 24. Kxh3 Nf6 25. Rfe1 Nxd5 and Black has a good position with a bishop and two pawns for a rook.} -21. Qc1 $1 {Both the Black queen and the knight on e4 are attacked.} -21... Nef6 {The only way to save the knight and the queen.} -22. Bxf5 $3 {If 22... gxf5 23. Nxf5 Black has only three places to move his queen, and they all lose: 23... Qf7 24. Nh6+ Kg7 25. Nxf7; 23... Qg6 24. Ne7+ Kg7 25. Nxg6; 23... Qh8 24. Nh6+ Kg7 25. Qg5#.} -22... Kh8 23. Be6 {White's position is overwhelming. He now threatens to advance his pawn to g4 and then to g5 attacking the pinned knight. } -23... Ba6 {A minor distraction.} -24. Rfe1 Ne5 {Attempting to break the pin on the a1-h8 diagonal.} -25. f4 {The diagonal will be unblocked.} -25... Nd3 {Forking the queen and rook.} -26. Rxd3 {White is happy to exchange a rook for a knight in this position.} -26... Bxd3 27. g4 {Black resigned because there is no way to stop 28. g5. A possible continuation is: 28... h6 29. g5 hxg5 30. fxg5 Kh7 31. Bxf6 Rxf6 32. gxf6 Qxf6 33. Ng2 and White is up a piece.} -1-0 - -[Event "?"] -[White "Anderssen"] -[Black "Kizeritzky"] -[Date "1851.??.??"] -[Result "1-0"] - -{King's Gambit, 23 moves. In one of the most remarkable games ever, Andersson sacrifices a bishop, then two rooks, and finally his queen.} -1. e4 {This often leads to open games with tactical possibilities.} -1... e5 2. f4 {The King's Gambit. White sacrifices a pawn for control of the center square d4 and the possibility of his King's rook becoming active on the f file.} -2... exf4 3. Bc4 {This variation is called the Bishop's Gambit. White should not play 3. d4 because then 3... Qh4+ is good for Black since White would have to play 4. Ke2. A common move for White is 3. Nf3.} -3... Qh4+ {This looks threatening but actually is not the best move. Better are 3... d5 giving back the pawn and 3... Nf6.} -4. Kf1 {The king is more securely placed here than it appears, and White can gain an important tempo by attacking the Black queen with Nf3.} -4... b5 {A counter sacrifice to gain time and development. This move is not looked upon favorably nowadays.} -5. Bxb5 Nf6 {Developing and attacking the pawn on e4.} -6. Nf3 Qh6 {The queen would have been better placed on h5, but Black plans to move his knight to h5.} -7. d3 {Guarding the pawn and opening lines for the bishop.} -7... Nh5 {Threatening 8... Ng3+ 9. hxg3 Qxh1+.} -8. Nh4 {Stopping the threat and preparing to put the knight on f5 where it will be powerfully placed.} -8... Qg5 9. Nf5 c6 {If now 10. Ba4 then 10... d5 gives Black a satisfactory game.} -10. Rg1 $3 {A splendid piece sacrifice.} -10... cxb5 11. g4 {Black cannot play 11... fxg3 en passant because of 12. Bxg5.} -11... Nf6 12. h4 Qg6 13. h5 Qg5 -14. Qf3 {Threatening 15. Bxf4 trapping the queen. The bottled up position of the Black queen is amusing.} -14... Ng8 {To save the queen.} -15. Bxf4 Qf6 16. Nc3 {White now has an enormous lead in development, definitely worth more than a piece.} -16... Bc5 17. Nd5 {The beginning of an extraordinary run of brilliant sacrifices.} -17... Qxb2 {Threatening 18... Qxa1+.} -18. Bd6 $3 {If now 18... Qxa1+ then 19. Ke2 Bxg1 20. e5 $3 reaches the same position as in the game.} -18... Bxg1 19. e5 $3 {Cutting the queen off from the defense of the kingside. White now threatens 20. Nxg7+ Kd8 21.Bc7#.} -19... Qxa1+ 20. Ke2 {White still threatens 21. Nxg7+ Kd8 22. Bc7#. If 20... f6 then 21. Nxg7+ Kf7 22. Nxf6 Kxg7 23. Ne8+ Kh6 24. Qf4#. Black's best may be 20... Ba6 but White still maintains a winning advantage after 21. Nc7+ Kd8 22. Nxa6 (Threatening 23. Bc7+ Ke8 24. Ne6+ Ke7 25. Qxf7#) 22... Bb6 23. Qxa8 Qc3 24. Qxb8+ Qc8 25. Qxc8+ Kxc8 26. Bf8 h6 27. Nd6+ Kd8 28. Nxf7+ Ke8 29. Nxh8.} -20... Na6 {To prevent 21. Nxg7+ Kd8 22. Bc7#} -21. Nxg7+ Kd8 22. Qf6+ $1 {Forcing the knight to remove its protection from e7.} -22... Nxf6 23. Be7# -1-0 - -[Event "?"] -[White "Botvinnik"] -[Black "Capablanca"] -[Date "1938.??.??"] -[Result "1-0"] - -{Nimzo-Indian, 41 moves. Botvinnik gives up a pawn for a king-side attack in which he sacrifices a bishop and then a knight as part of a brilliant combination. Capablance was world champion from 1921-1927; Botvinnik from 1948-1957, 1958-1960, and 1961-1963.} -1. d4 {This move often leads to positional struggles.} -1... Nf6 {Prevents 2. e4 and keeps open numerous options.} -2. c4 {The normal follow-up to 1. d4. White puts pressure on d5.} -2... e6 {Black frees the bishop on f8 and leaves open the possibility of a future ...d5.} -3. Nc3 {White is threatening 4. e4.} -3... Bb4 {Stopping 4. e4. This variation is called the Nimzo-Indian.} -4. e3 {This is one of many possible moves for White including 4. Qc2, 4. Nf3, 4. a3, and 4. Qb3} -4... d5 {Black does not want to give up the center to White.} -5. a3 Bxc3+ 6. bxc3 c5 {Trying to put pressure on White's center which is, however, pretty solidly defended.} -7. cxd5 exd5 8. Bd3 {This is White's active bishop. The other bishop is blocked by its own pawns.} -8... 0-0 9. Ne2 {Better than 9. Nf3 that allows the annoying pin 9... Bg4.} -9... b6 {Black plans to move the bishop to a6 and trade it for White's powerful bishop.} -10. 0-0 Ba6 11. Bxa6 Nxa6 -12. Bb2 {The bishop has little mobility.} -12... Qd7 {Black plans ... Qa4 if White moves his queen away.} -13. a4 Rfe8 14. Qd3 c4 {This move takes the pressure off the center, which is usually bad. Here, Black calculates that he will have a strong queenside attack after moving his knight to b3 via b8, c6, and a5.} -15. Qc2 {White's next several moves are in preparation for e4.} -15... Nb8 {The first step toward b3.} -16. Rae1 Nc6 17. Ng3 Na5 -18. f3 {The preparations for e4 are complete.} -18... Nb3 {Cutting off the defense of the pawn on a4.} -19. e4 {Will White's attack be worth the loss of a pawn?} -19... Qxa4 20. e5 Nd7 {Black now plans 21... Nbc5 22. Qe2 (Not 22. dxc5 Qxc2) Nd3.} -21. Qf2 {White would like to play 22. Nf5 with threats against the Black king and the possibility of playing Nd6.} -21... g6 22. f4 {Intending f5 opening lines against the Black king.} -22... f5 23. exf6 Nxf6 24. f5 {White has a strong attack.} -24... Rxe1 {Black decides to trade off as much material as possible.} -25. Rxe1 Re8 26. Re6 $1 {Forcing Black to give White a powerful passed pawn.} -26... Rxe6 ( 26... Kg7 27.Rxf6 Kxf6 28. fxg6+ Kxg6 29. Qf5+ Kg7 30. Nh5+ Kh6 31. g4 {Threatening Qf6#} Qc6 27. Ba3 Qg6 28. Bf8+ Rxf8 29 Qxf8+ Kg5 30. Qf4+ Kh4 31. Qg3+ Kg5 32. h4+ Kh6 33. Qf4+ Qg5 34. Qxg5#) 27. fxe6 Kg7 28. Qf4 {Threatening 29. Nf5+ gxf5 30. Qb5+ Kf8 31. Qxf6+} -28... Qe8 29. Qe5 {Defending the pawn and preparing to bring the long-lost bishop into play with 30. Ba3.} -29... Qe7 {To prevent Ba3.} -30. Ba3 $3 Qxa3 {Black cannot afford to let the bishop into play.} -31. Nh5+ $1 gxh5 {All White is left to attack with is his queen and his advanced e pawn, but that is enough.} - 32. Qg5+ {Forcing the king away from the knight.} -32... Kf8 33. Qxf6+ Kg8 34. e7 {White threatens e8=queen and Qf8#.} -34... Qc1+ {Black's only hope is to try for a perpetual check.} -35. Kf2 Qc2+ 36. Kg3 Qd3+ 37. Kh4 Qe4+ 38. Kxh5 Qe2+ -39. Kh4 Qe4+ 40. g4 Qe1+ 41. Kh5 -1-0 - -[Event "?"] -[White "Capablanca"] -[Black "Spielmann"] -[Date "1927.??.??"] -[Result "1-0"] - -{Queens' Gambit Declined, 26 moves. Capablanca gets an advantage out of the opening. Just when Spielmann finds a move that appears to hold everything together, Capablanca makes a brilliant piece sacrifice. Capablanca was world champion from 1921-1927.} -1. d4 {A move that usually leads to closed positions.} -1... d5 -2. Nf3 -2... e6 -3. c4 {The opening is now a Queen's Gambit Declined by transposition of moves. This position could have arisen from 1. d4 d5 2. c4 e6 3. Nf3.} -3... Nd7 {Not 3... Nc6 blocking the c pawn.} -4. Nc3 -4... Ngf6 {Defending the pawn on d5.} -5. Bg5 {Pinning the knight and therefore threatening the pawn on d5. The usual move for Black here is 5... Be7 breaking the pin.} -5... Bb4 {This is an aggressive way to protect the pawn.} -6. cxd5 -6... exd5 -7. Qa4 -7... Bxc3+ -8. bxc3 -8... 0-0 -9. e3 {White is developing normally.} -9... c5 {Putting some presure on White's center.} -10. Bd3 -10... c4 {Although this move gains space on the queenside, it takes pressure off the center. White now strives to play e4.} -11. Bc2 -11... Qe7 -12. 0-0 {The rook will go to e1 to support the pawn move to e4.} -12... a6 -13. Rfe1 {White now threatens 14. e4 dxe4 15. Bxe4 with an overwhelming position. The pin of the knight prevents 15... Nxe4.} -13... Qe6 {Breaking the pin. Note that White has developed all his pieces except the rook on a1; Black hasn't developed either rook or the queen's bishop.} -14. Nd2 {The point is to play 15. e4.} -14... b5 -15. Qa5 -15... Ne4 {Stopping 16. e4. White now turns his attention to Black's weak pawns.} -16. Nxe4 -16... dxe4 {Black has successfully prevented e4, but at a cost. White is ahead in development and Black is left with weak queenside pawns that White can use his advantave in development to attack.} -17. a4 {Threatening 18. axb5 and Black cannot play 18... axb5 because of 19. Qxa8. If Black plays 17... bxa4 then his pawn formation is shattered. } -17... Qd5 {This looks like a saving move since it gains time by attacking the bishop. After 18. Bf4 Black can play 18... Bb7 guarding the rook on a8 so that 19. axb5 could be answered with 19... axb5.} -18. axb5 $3 {When you are ahead in development, you must strike before your opponent has time to mobilize. Black cannot play 18... axb5 because of 19. Qxa1.} -18... Qxg5 -19. Bxe4 {If now 19... Ra7 then 20. b6 $1 Qxa5 21. bxa7 $1 Bb7 22. Rxa5 Bxe4 23. Rxa6 with a winning position.} -19... Rb8 -20. bxa6 {White has enormous compensation for the knight including a threatening passed pawn on a6, a lead in development, and very actively placed pieces. Black cannot hold on for long. If 21... Qxa5 then 22. Rxa5 and the threat of 23. a7 cannot be stopped.} -20... Rb5 -21. Qc7 {The threat is 22. a7 and 23 a8=Q.} -21... Nb6 -22. a7 -22... Bh3 {The pawn on g2 cannot capture the bishop because it is pinned. This move indirectly reduces the bishop on e4's support of the a pawn's advance since the biship is needed to prevent ... Qxg2#.} -23. Reb1 -23... Rxb1+ -24. Rxb1 {If 24... Na4 then 25. Rg8 wins immediately.} -24... f5 -25. Bf3 -25... f4 {Desperation.} -26. exf4 {Black resigned. If 26... Qxf4 27. Qxf4 Rxf4 28. Rxb6.} -1-0 - -[Event "?"] -[White "Fischer"] -[Black "Sherwin"] -[Date "1957.??.??"] -[Result "1-0"] - -{Sicilian Defense, 33 moves. The 14 year old Bobby Fischer capitalizes on a few inaccuracies and builds up a strong attack. Sherwin finds several ingenious moves but fails to avert defeat against Fischer's exact play. Fischer was world champion from 1972-1975.} - 1. e4 {Fischer almost always began with this move.} - 1... c5 {The Sicilian Defense.} - 2. Nf3 {Developing.} - 2... e6 - 3. d3 {More usual is 3. d4. White's move leads to a closed game called the King's Indian Reversed.} - 3... Nc6 {A good developing move.} - 4. g3 {To place the bishop on g2 where it will reinforce the pawn on e4 and put pressure on d5.} - 4... Nf6 - 5. Bg2 - 5... Be7 - 6. 0-0 - 6... 0-0 - 7. Nbd2 {This is better than Nc3 which would prevent White from moving a pawn to c3.} - 7... Rb8 {This allows the b pawn to move forward without fear that White's bishop on g2 will threaten the rook. Black is planning a queenside counterattack to White's coming kingside attack.} - 8. Re1 {Placing the rook in the center and leaving f1 available for the knight which often, from there, goes to e3 or even to g4 via h2.} - 8... d6 {This is more passive than the more usual d5.} - 9. c3 {Preparing to play d4.} - 9... b6 {9... b5 would have given Black better chances.} - 10. d4 {White now has a strong positon in the center.} - 10... Qc7? {In a few moves White will have threats based on playing Bf4 and attacking both the queen and the rook.} - 11. e5 $1 {The center pawns are on the move. Black's best is now 11... dxe5 12. dxe5 Nd7 although Black's position would be cramped and his pieces would be in each other's way.} - 11... Nd5 - 12. exd6 - 12... Bxd6 - 13. Ne4 {If 13... Be7 then 14. c4 Nf6 15. Bf4. If 13... cxd4 then 14. Nxd6 Qxd6 15. c4 Nf6 16. Bf4.} - 13... c4 {This is the only move to avoid the loss of material. However, it takes the pressure off of White's center leaving him free to conduct a kingside attack. Black has no prospects for a counterattack in the center or for a queenside attack.} - 14. Nxd6 - 14... Qxd6 - 15. Ng5 {Beginning the kingside attack. Although it weakens his kingside, it turns out that Black should have played 15... h6 here.} - 15... Nce7 {Bringing the knight to the defense of the kingside.} - 16. Qc2 {Threatening Qxh7#.} - 16... Ng6 - 17. h4 {Threatening h5 and the knight can't move because of the mate threat.} - 17... Nf6 - 18. Nxh7 $1 {A stunning surprise. If 18... Kxh7 then 19. Bf4 winning the rook on b8.} - 18... Nxh7 - 19. h5 {To drive away the knight and then play Bf4.} - 19... Nh4 $1 {Black finds an ingenious way to counterattack.} - 20. Bf4 - 20... Qd8 {If now 21. Bxb8? then 21... Nxg2 22. Kxg2 Bb7+ 23. Kg1 Qxb8 and Black would have a bishop and knight for a rook and would be in a strong position.} - 21. gxh4 - 21... Rb7 $1 {Helping in the defense and tempting White to play 22. Bxb7 so that after 22... Bxb7 White would have no piece to defend his white squares. Black's queen and bishop would be very dangerous on the a8-h1 diagonal.} - 22. h6 $1 {Continuing the attack on the king. The best defense is now 22... g6 but White would still have a far superior position.} - 22... Qxh4? - 23. hxg7 - 23... Kxg7 - 24. Re4 {Threatening 25. Be5+ winning the queen.} - 24... Qh5 - 25. Re3 {Threatening 26. Rh3 Qg6 (Or 26... Qa5 27. Qxh7+) 27. Rg3 pinning and winning the queen.} - 25... f5 {Blocking the White queen's attack on h7.} - 26. Rh3 - 26... Qe8 - 27. Be5+ {If 25... Kg8 26. Rg3+ Kf7 27. Rg7#. 25... Kg6 loses to 26. Qd2.} - 27... Nf6 - 28. Qd2 {Threatening 29. Qh6+ Kg8 30. Qh8+ Kf7 31. Qxf6+ Kg8 32. Rh8#.} - 28... Kf7 - 29. Qg5 {If 29... Ke7 then 30. Rh7+ Rf7 31. Qxf6+} - 29... Qe7 - 30. Bxf6 - 30...Qxf6 - 31. Rh7+ - 31... Ke8 - 32. Qxf6 {If 32... Rxf6 then 33. Bxb7 Bxb7 34. Rxb7 and White is a rook ahead.} - 32... Rxh7 - 33. Bc6+ {and Black resigned. His position is clearly hopeless. If 33... Bd7 then 34. Qxe6+} -1-0 - -[Event "?"] -[White "Gibaud"] -[Black "Lazard"] -[Date "1924.??.??"] -[Result "0-1"] - -{Queens Pawn, 4 moves. One of the shortest master-level games ever played. In a seemingly tame position, Lazard shocks Gibaud with a move that wins his queen.} -1. d4 {Controlling a portion of the center and putting pressure on the queenside.} -1... Nf6 {Developing a piece and preventing 2. e4.} -2. Nd2 {Planning 3. e4} -2... e5 $1 {This frees Black's game.} -3. dxe5 -3... Ng4 {If 4. Ngf3 then 4... Nc6 will win back the pawn. Not 4. f4 Ne3 trapping the queen.} -4. h3?? {An innocent looking move. White expects 4... Nxe5 5. Ngf3} -4... Ne3 $3 {White resigns. If 5. fxe3 then 5. ...Qh4+ 6. g3 Qxg3#} -0-1 - -[Event "?"] -[White "Gruenfeld"] -[Black "Alekhine"] -[Date "1923"] -[Result "0-1"] - -{Queen's Gambit Declined, 34 moves. Alekhine plays a solid defense with Black and gradually improves his position until he obtains a winning advantage -- he exploits it brilliantly. This is the kind of game that makes chess look easy. Alekhine was world champion from 1937-1946.} -1. d4 -1... Nf6 {To prevent 2. e4} -2. c4 {Putting pressure on the center. It is important not to block the c pawn in queenside openings.} -2... e6 {Preparing to develop the bishop and keeping open the possibility of ... d5} -3. Nf3 -3... d5 {Also playable is 3... b6 leading to the Queen's Indian Defense. The current position is a Queen's Gambit Declined by transpostion of moves. It could have occurred by 1. d4 d5 2. c4 e6 3. Nf3 Nf6} -4. Nc3 {Developing and putting pressure on the center.} -4... Be7 -5. Bg5 -5... Nbd7 {It is important not to block the c pawn by 5... Nc6.} -6. e3 {A normal developing move.} -6... 0-0 -7. Rc1 {White anticipates that the c file will be open.} -7... c6 {Solidifying the defense of the center.} -8. Qc2 -8. a6 {Black will soon play ... dxc5 followed by ...b5 and ... c5 and eventually ...Bb7.} -9. a3 {So that after the bishop recaptures on c4 it can retreat to a2.} -9... h6 -10. Bh4 -10... Re8 {Black is waiting until White develops his bishop before playing ... dxc4} -11. Bd3 -11... dxc4 -12. Bxc4 -12... b5 -13. Ba2 {From here the bishop can move to b1 supporting the queen in the attack on the king.} -13... c5 -14. Rd1 {Putting pressure on the soon-to-be opened d file. However, it is usually not a good idea to move a piece twice in the opening and neglect the development of other pieces.} -14... cxd4 -15. Nxd4 -15... Qb6 -16. Bb1 -16... Bb7 $1 {It looks as if White could now play 17. Ndxb5 axb5 18. Rxd7 Nxd7 19. Qh7+ Kf8 20. Qh8#. However, Black would answer 17. Ndxb5 with 17... Qc6 18. Nd4 Qxg2 with a very good game.} -18. 0-0 -18... Rac8 {Pinning the knight. Notice how Black has moved each of his pieces only once, but always to the right square.} -19. Qd2 {Unpinning the knight.} -19... Ne5 {The knight is headed for c4} -20. Bxf6 {Now that Black cannot recapture with the knight, White plays for threats on h7.} -20... Bxf6 -21. Qc2 {Threatening 22. Qh7+ but moving the queen onto the same file as the Black rook.} -21... g6 -22. Qe2 -22... Nc4 {Threatening 23... Nxa6 24. bxa6 Rxc3. Black's pieces are beautifully placed. The bishop on b7 is very powerful, as is the rook on c8. The knight on c4 puts tremendous pressure on White's position.} -22. Be4 {So that if 22... Nxa3 then 23. Qf3 Bxe4 24. Nxe4 Bxd4 25. Rxd4 and White is threatening both 24. bxa3 as well as 24. Nf6+ forking the king and rook.} -22... Bg7 {The bishop is safer here; the threat of ... Nxa3 is renewed.} -23. Bxb7 -23... Qxb7 -24. Rc1 {Guarding the knight to prevent 24... Nxa3.} -24... e5 $1 {The pawn will advance to e4 and support the knight when it moves to d3 via e5.} -25. Nb3 -25... e4 {The pawn on e4 severely cramps White's game. Black is now threatening 26... Nxa3 27. bxa3 Rxc3 28. Rxc3 Bxc3.} -26. Nd4 -26... Red8 {Moving the rook to an open file and threatening 27... Bxd4} -27. Rfd1 -27... Ne5 {On the way to the great outpost d3.} -28. Na2? {White hopes to reduce the pressure by exchanging rooks. Unfortunately, this move takes the knight too far from the action. Moreover, the fact that the knight is unprotected is the basis of Black's winning 32nd move.} -28... Nd3 -29. Rxc8 -29... Qxc8 -30. f3 {White attempts to undermine the knight.} -30... Rxd4 $1 {If 31. exd4 Bxd4+ 32. Kf1 (Not 32.Kh1 Nf2+ 33. Kg1 Nxd1+) 32... Nf4 33. Qxe4 Qc4+ 34. Ke1 Nxg2+ 35. Kd2 Be3+ 36. Qxe3 Nxe3 and Black wins.} -31. fxe4 {Black has two pieces attacked.} -31... Nf4 $1 -32. exf4 {White's position looks secure.} -32... Qc4 $1 {Attacking the queen and the knight. The only way for White to avoid losing a piece is to take the queen.} -33. Qxc4 -33... Rxd1+ {If 34. Kf2 then 34... bxc4 and Black is ahead by a rook.} -34. Qf1 {White wins back the rook after 34... Rxf1ch} -34... Bd4+ {and White resigns. After 35. Kh1 Rxf1#} -0-1 - -[Event "?"] -[White "Karpov"] -[Black "Hartinov"] -[Date "1988"] -[Result "1-0"] - -{Queen's Gambit Declined, 42 moves. Karpov demonstrates his excellent technique. On move four Karpov embarks on a plan to weaken Black's queenside; after 35 moves the plan bears fruit and a queenside pawn is won. Karpov was world champion from 1975-1985.} -1. c4 {This is called the English Opening. It usually leads to a postional struggle.} -1... e6 {One of many possible replies. Black prepares for ... d5.} -2. Nc3 -2... d5 -3. d4 {The game has now transposed into a Queen's Gambit Declined. This position could have been arrived at by 1. d4 d5 2. c4 e6 3. Nc3} -3... Nf6 -4. cxd5 {The exchange variation. White's goal is now to move up his two queenside pawns and exchange them leaving Black with a weak pawn.} -4... exd5 -5. Bg5 {Pinning the knight and threatening 6. Bxf6 and Black would have to recapture with the pawn because 6... Qxf6 loses to 7. Nxd5.} -5... Be7 {Breaking the pin.} -6. e3 -6... Nbd7 {It is important not to play ... Nc6 blocking the c pawn.} -7. Nf3 {White is continuing normal development.} -7... c6 -8. Bd3 -8... 0-0 -9. Qc2 {White will soon begin attacking on the queenside.} -9... Re8 {Black will move the knight on d7 to f8 so that the bishop on c8 can be developed.} -10. 0-0 -10... Nf8 -11. h3 -11... Be6 -12. Rfc1 {Moving the rook to the half-open file. White plans to place his other rook on b1 to support the pawn advance.} -12... N6d7 {Black hopes to simplify by exchanging bishops.} -13. Bf4 {White prefers not to exchange.} -13... Nb6 {So that Black can play 14... Bd6 and the queen will protect the bishop.} -14. Rab1 {Preparing for an eventual b4} -14... Bd6 -15. Ne2 -15... Ng6 -16. Bxd6 -16... Qxd6 -17. a4 {White does not play b4 at once because Black can answer with Nc5 with an equal game.} -17... Rac8 -18. Qc5 {White would have a positional advantage after 18... Qxc5 19. dxc5 Nd7 (Not 19... Nxa4 20. b3 trapping the knight) 20. b4} -18... Qb8 -19. Qa3 {Now the a pawn must be protected.} -19... a6 -20. Rc3 {White is going to double rooks on the c file.} -20... Qc7 -21. Rbc1 -21... Ra8 -22. Nd2 {The knight will eventually make its way to c5.} -22... a5 {So that if 23. b4 axb4 24. Qxb4 Rxa4} -23. Rb1 -23... Nc8 {White's pieces are much more coordinated than Black's.} -24. b4 {If White can trade this pawn for Black's pawn on a4 and then trade his a pawn for Black's pawn on b7, Black will be left with a weak pawn on c6. This is the plan initiated on move four of the game!} -24... axb4 25. Qxb4 -25... Nd6 -26. Nb3 {Supports the advance of the a pawn and prepares for an eventual Nc5.} -26... Bc8 -27. a5 {According to plan.} -27... Ne7 {Black intends 28... Bf5} -28. Ng3 -28... g6 -29. Rbc1 -29... h5 {Black is beginning a kingside counterattack. In retrospect, it would have been better to simplify the position with 29... Nef5 since the kingside attack never materializes and the h pawn becomes a target.} -30. Ra1 {Preparing for a6.} -30... h4 -31. Nf1 -31... Bf5 {Black has gained some space on the kingside.} -32. Be2 {The bishop is needed to support the advance of the pawn to a6.} -32... Ne4 {A nicely posted piece.} -33. Nc5 {Threatening 34. Qxb7} -33... Nxc5 -34. Qxc5 {If Black moves his knight on e7 then White can play Qxd5 because the c pawn is pinned.} -34... Be6 {Protecting the pawn.} -35. Nd2 {So that every piece participates in the finale.} -35... Nf5 -36. Nf3 -36... Qd8 -37. a6 {At long last.} -37... bxa6 -38. Rxa6 -38... Rxa6 -39. Bxa6 {If 39... Bd7 40. Bd3 Ng7 41. Ne5 Black is tied up in knots.} -39... Qa8? {This is a blunder, probably caused by time pressure. } -40. Qxc6 -40... Qxc6 -41. Rxc6 -41... Ra8 -42. Bd3 {and Black resigned. There is no way to prevent the threat of 43. Bxf5 and 44. Nxh4 winning a second pawn. If 42... Ra1+ 43. Kh2 Ra2 then White simply plays 44. Rc2 and the pawn on h4 cannot be saved} -1-0 - -[Event "?"] -[White "Kasparov"] -[Black "Short"] -[Date "1993"] -[Result "1-0"] - -{Ruy Lopez, 36 Moves. The seventh game in the 1993 World Championship Match. A tense struggle comes to an end when Short grabs a pawn and pays dearly for it. Kasparov has been world champion since 1985.} -1. e4 {Controlling the center and preparing to develop the bishop on f1.} -1... e5 -2. Nf3 {Developing a piece and attacking the pawn on e5.} -2. Nc6 {Developing and protecting the pawn.} -3. Bb5 {The Ruy Lopez. The defender of the pawn is attacked.} -3... a6 {This gives Black the freedom to play b5 when needed. White cannot now win a pawn with 4. Bxc6 d7xc6 5. Nxe5 because of 5... Qd4 attacking the knight and e pawn.} -4. Ba4 -4... Nf6 {Attacking the pawn on e4.} -5. 0-0 {5... Nxe5 is a playable move, but Black should not strive to hold on to the pawn. After 6. d4 b5 7. Bb3 Black should play 7... d5 giving back the pawn rather than 7... exd4 which is refuted by 8. Re1. } -5... Be7 {With the e file blocked, Nxe4 is now a threat.} -6. Re1 {Guards the pawn. Now White threatens to win a pawn with 7. Bxc6 d7xc6 8. Nxe5.} -6... b5 -7. Bb3 -7... 0-0 {More usual is 7... d6. Black is planning to play the Marshall gambit if White plays 8. c3. The main variation is: 8. c3 d5 9. exd5 Nxd5 10. Nxe5 Nxe5 11. Rxe5 c6 and Black has continuing pressure for the pawn.} -8. a4 {White prefers to keep the initiative on his side. The threat is 9. axb5 and Black cannot play 9... axb5 becaue of 10. Rxa8.} -8... Bb7 {Protecting the rook.} -9. d3 -9... d6 -10. Nbd2 -10... Nd7 {The knight is moving to c5.} -11. c3 {Supporting the center and providing an escape hole for the bishop.} -11... Nc5 {Attacking the pawn on d3.} -12. axb5 {If 12... Nxb3 then 13. Qxb3 axb5 14. Rxa8 Bxa8 15. Qxb5 winning a pawn.} -12... axb5 -13. Rxa8 -13... Bxa8 -14. Bc2 {Although the bishop looks passive, WhIte will play b4 to chase away the knight and then return the bishop to b3. White is threatening d4 giving him a strong center.} -14... Bf6 {Prevents d4.} -15. b4 -15... Ne6 -16. Nf1 {The knight is headed for d5 or f5 via e3.} -16... Bb7 -17. Ne3 -17... g6 {Black does not want the knight on f5!} -18. Bb3 {The bishop is active again.} -18... Bg7 -19. h4 {White plans to weaken Black's kingside by trading off kingside pawns. This move would be weak if Black could open up the center with pawn exchanges, but he cannot.} -19... Bc8 -20. h5 {White hopes to remove Black's protective shield of pawns. If Black plays 20... gxh5 then White could continue with 21. g3 threatening 22. Nh4 23. Qxh5, 24. Nf5 26. Kg2 and 27. Rh1 Black would have counterplay and the position would be very complicated.} -20... Kh8 -21. Nd5 -21... g5 {Although this avoids exchanging pawns, it leaves Black with weak squares, especially f5.} -22. Ne3 {White wastes no time moving his knight to f5.} -22... Nf4 {Attacking the pawn on h5.} -23. g3 {White is not phased by the attack on the pawn.} -23... Nxh5 -24. Nf5 -24... Bxf5 {The knight was too threatening to leave on f5.} -25. exf5 {If Black tries to protect the pawn on g5 with 25... h6 then 26. Nxg5 hxg5 27. Qxh5ch} -25... Qd7 -26. Bxg5 {If Black answers with 26... Qxf5 then 27 Bd5 is very strong. The knight on c6 would be forced to move out of play and White would have an unstoppable attack against the Black king after 28. Kg2 and 29. Rh1.} -26... h6 {Either 27... Bf6 or 27... Nf6 may have been better.} -27. Nh4 {If 27... hxg5 then 28. Qxh5+ Kg8 29. Qxg5 winning easily.}27... Nf6 -28. Bxf6 -28... Bxf6 -29. Qh5 -29... Kh7 -30. Ng2 {The knight is going to g4 via e3. } -30... Ne7 {Bringing the knight to g8 to defend the pawn on h6.} -31. Ne3 -31... Ng8 -32. d4 -32... exd4 -33. cxd4 {White is offering a pawn. Black should play either 33... Kg7 or 33... Bg5 instead of taking it.} -33... Bxd4? {Black's position will now deteriorate quickly.} -34. Ng4 {White is threatening 35. f6 and 36. Bc2ch. If after 35. f6 Black plays 35... Bxf6 then 36. Qxh6+ Nxh6 37. Nxf6+ Kg7 38. Nxd7. If Black plays 34... Bf6 to prevent f6 then 35. Qxh6+ Nxh6 36. Nxf6+ Kg7 37. Nxd7} -34... Kg7 -35. Nxh6 $1 {If 35... Nxh6 then 36. Qg5+ Kh7 37. Bc2 threatening 38. f6ch. If 37... f6 then 38. Qg6+ Kh8 Qxh6ch. If 37... Bf6 then 38. Qxf6 Re8 39. Re6 Ng8 (not 39... fxe6 40. fxe6+ Kg8 41. fxd7) 40. Qh4+ Kg7 41. f6+ Kf8 42. Rxe8+ Qxe8 (If 42... Kxe8 43. Qh8) 43. Qh8 Qe1+ 44. Kg2 Qd2 45. Qg7+ Ke8 46. Qxg8ch.} -35... Bf6 -36. Bxf7 {and Black resigned. If 36... Rxf7 then 37. Qg6+ Kf8 38. Qxg8#. If 36... Nxh6 then 37. Qg6+ Kh8 38. Qxh6#} -1-0 - -[Event "?"] -[Date "1834.??.??"] -[White "La Bourdonnais"] -[Black "McDonnell"] -[Result "0-1"] - -{Queen's Gambit Accepted, 36 moves. Still one of the most exciting chess games ever played. McDonnell sacrifices a queen for two minor pieces and a very strong position. This is an excellent example of a positional queen sacrifice. Queen sacrifices are rarely made unless they win immediately.} -1. d4 -1... d5 -2. c4 {The Queen's Gambit.} -2... dxc4 {Accepted. Black does not expect to hold on to the extra pawn.} -3. e4 {Trying to control the center and planning 4. Bxc4. Nowadays 3. Nf6 is preferred to prevent Black's next move.} -3... e5 {After 4. dxe5 Qxd1+ 5. Kxd1 Be6 the position is even.} -4. d5 -4... f5 {Attacking the base of the pawn chain. A side pawn is usually less important than a center pawn.} -5. Nc3 {If now 5... fxe4? then 6. Qh5+ and after either 6... g6 or 6... Ke7 White plays Qxe5+ with a winning position.} -5... Nf6 -6. Bxc4 {regaining the gambit pawn.} -6... Bc5 {The bishop is more aggressively placed here than on d6.} -7. Nf3 {Developing the knight and threatening the e pawn.} -7... Qe7 {guarding the pawn.} -8. Bg5 {This is eventually shown to be a mistake, but it is not a blunder; it is a deliberate pawn sacrifice.} -8... Bxf2+ {If 9. Kxf2 then 9... fxe4 10. Bxf6 (Not 10. Nxe4 Nxe4+) 10... Qc5+ 11. Ke1 exf3 12. Bb5+ c6 13. Qxf3 (Not 13. Bxg7 Qe3+) gxf6 wins back the piece with a good game for Black.} -9. Kf1 -9... Bb6 -10. Qe2 {Although White has lost the right to castle, all of his pieces are active except his shut-in rook on h1. White is threatening to win his pawn back by 11. exf5 Bxf5 Nxe5. If Black plays 10... fxe4 then after 11. Nxe4 the threat of 12. Nxf6 breaking up Black's kingside is difficult to cope with. } -10... f4 -11. Rd1 {Bringing the rook to an active central position.} -11... Bg4 {Pinning White's knight.} -12. d6 {To make room for the knight on d5.} -12... cxd6 -13. Nd5 {If 13... Qd8 then 14. Nxf4 exf4 15. e5 winning back the knight with a crushing attack.} -13... Nxd5 $3 {A striking conception. Black's two minor pieces will be more powerful than White's queen.} -14. Bxe7 -14... Ne3+ -15. Ke1 {In retrospect, it might have been better to give back the queen with 15. Qxe3 although Black would have ended up a pawn ahead.} -15... Kxe7 -16. Qd3 {Breaking the pin on the knight and threatening 17. Qxd6.} -16... Rd8 {Guarding the d pawn. Black has no desire to trade his wonderful knight on e3 for the rook on d1.} -17. Rd2 {Guards the pawn on g2.} -17... Nc6 -18. b3 -18... Ba5 {Pinning the rook.} -19. a3 -19... Rac8 {Bringing his only undeveloped piece into action. If 20. b4 then 20... Nxb4 21. axb4 Bxb4 22. Ba2 Bxf3 23. gxf3 Rc2 threatening 24... Rxd2 and 24... Rxa2.} -20. Rg1 -20... b5 {Black now gains an advantage in material as well as position.} -21. Bxb5 -21... Bxf3 {If 22. Bxc6 then 22... Rxc6 23. gxf3 Rc1+ 24. Kf2 Bxd2 25. Qxd2 Rc2 wins.} -22. gxf3 -22... Nd4 {If 23. Kf2 then 23... Bxd2 and White cannot play 24. Qxd2 because of 24... Rc2 winning the queen.} -23. Bc4 {Attempting to block the entrance of the Black rook.} -23... Nxf3+ -24. Kf2 -24... Nxd2 -25. Rxg7+ {Black must play carefully here.} -25... Kf6 -26. Rf7+ -26... Kg6 -27. Rb7 -27... Ndxc4 -28. bxc4 -28... Rxc4 -29. Qb1 {Threatening Qg1+ with a mating attack.} -29... Bb6 {Threatening to move the knight on e3 with discovered check. If 30. Qg1+ then 31... Ng4+ winning the queen.} -30. Kf3 {White is again threatening Qg1+.} -30... Rc3 $1 {Now if 31. Qg1+ then 31... Ng4+ 32. Kxg4 Bxg1.} -31. Qa2 {Threatening Qf7+.} -31... Nc4+ {Cutting off the queen.} -32. Kg4 -32... Rg8 {Threatening 33... Kh6+ (with the rook) 34. Kh4 Bd8+ and Mate next move.} -33. Rxb6 -33... axb6 -34. Kh4 -34... Kf6 -35. Qe2 -35... Rg6 -36. Qh5 -36... Ne3 -37. Qxh7 -37... Ng2+ -38. Kh5 -38... Rh3# {White saw this coming and resigned after Black's 36th move} -0-1 - -[Event "?"] -[White "Lasker"] -[Black "Bauer"] -[Date "1889.??.??"] -[Result "1-0"] - -{Bird's Opening, 33 moves. A brilliant attacking game featuring the first known use of the two-bishop sacrifice. This is one of the most famous games in chess history. Lasker was world champion from 1894-1921.} -1. f4 {Bird's opening. White plays for control of e5 and a kingside attack.} -1... d5 -2. e3 -2... Nf6 -3. b3 {White plans to position his bishops on b2 and d3.} -3... e6 {To develop the bishop and castle.} -4. Bb2 -4... Be7 -5. Bd3 {It is unusual to block the d pawn. The move works out well in this position, however.} -5... b6 {Black would probably have been better off castling followed by ... c5 and ... Nc6} -6. Nc3 {The knight is not particularly effective here, but it will move to e2, g3 and eventually h5.} -6... Bb7 -7. Nf3 {Attacking the key square e5.} -7... Nbd7 -8. 0-0 -8... 0-0 -9. Ne2 {Repositioning the knight and unleashing the bishop on b2.} -9... c5 -10. Ng3 -10... Qc7 {Planning 12... c4 chasing the bishop from its powerful position.} -11. Ne5 -11... Nxe5 -12. Bxe5 -12... Qc6 {Indirectly threatening the square g2 and once again threatening c4. } -13. Qe2 {Preventing 13... c4. If 13... Rac8 then 14. Bb5 trapping the queen.} -13... a6 {Preventing 14. Bb5. } -14. Nh5 {Threatening 15. Nxf6+ Bxf6 16. Bxf6 gxf6 17. Bxh7+ Kxh7 18. Qh5+ Kg7 19. Qg4+ Kh2 20. Rf3 and 21. Rh3 Mate cannot be prevented.} -14... Nxh5 {Black undoubtedly expected 15. Qxh5 f5 where White has a powerful attack, but the game still has a lot of play in it.} -15. Bxh7+ $3 {The first of two bishop sacrifices.} -15... Kxh7 -16. Qxh5+ -16... Kg8 -17. Bxg7 $1 {Threatening 18. Qh8#. If 17... f6 then 18. Qg6 (Threatening 19. Bxf6#.) 18... Rf7 19. Bh6+ Kh8 20. Qxf7.} -19... Kxg7 -20. Qg4+ {If 20... Kf6 then 21. Qg5#.} -20... Kh7 -21. Rf3 {Threatening 22. Rh3#. Black must now give up his queen to prevent it.} -21... e5 -22. Rh3+ -22... Qh6 -23. Rxh6+ -23... Kxh6 {Two bishops and a rook are worth more than a queen.} -24. Qd7 {Attacking both bishops at the same time.} -24... Bf6 -25. Qxb7 {If 25... exf4 then 26. Rf1 Kg7 27. Rxf4} -25... Kg7 -26. Rf1 {Calling up the reserves.} -26... Rab8 -27. Qd7 -27... Rfd8 {Attacking the queen and giving the king an escape square on f8.} -28. Qg4+ -28... Kf8 -29. fxe5 {With the rook bearing down on the king, Black has no defense. If 29... Bxe5 then 30. Qf5 threatening both 31. Qxf7# and 31. Qxe5} -29... Bg7 -30. e6 {White begins attacking the pinned pawn.} -30... Rb7 -31. Qg6 {Threatening 32. Rxf7+} -31... f6 -32. Rxf6+ -32... Bxf6 -33. Qxf6+ -33... Ke8 {To protect the rook on d8.} -34. Qh8+ {It is the rook on b7 that White is after.} -34... Ke7 -35. Qg7+ {Black resigned since if 35... Kxe6 then 36. Qxb7 wins easily for White} -1-0 - -[Event "?"] -[White "Lehman"] -[Black "Smyslov"] -[Date "1966.??.??"] -[Result "0-1"] - -{After refusing Lehmann's gambit on move 2, Smyslov accepts a pawn sacrifice on move 15 and conducts the defense and endgame masterfully. Smyslov was world champion from 1957-1958.} -1. d4 -1... f5 {The Dutch Defense. Black accepts a somewhat weakened pawn position for kingside attacking chances.} -2. e4 {The Staunton Gambit. White gives up a pawn for strong attacking possibilities.} -2... fxe4 -3. Nc3 -3... Nf6 -4. f3 {The main idea of the gambit: If 4... exf3 5. Nxf3 White has strong pressure on the center and a lead in development while Black has weaknesses due to the missing f pawn. Nonetheless, it is sound to accept the gambit.} -4... Nc6 {Black prefers to give back the pawn to playing a defensive game.} -5. fxe4 {White is controlling the center. Black must find a way to contest it.} -5... e5 -6. dxe5 -6... Nxe5 -7. Nf3 -7... Bd6 {It is very unusual to block the d pawn in this way. However, it is the only active move in this position. } -8. Bg5 {Pinning the knight and planning Nd5.} -8... h6 -9. Bh4 -9... 0-0 -10. Nd5 -10... Nxf3+ -11. gxf3 {White hopes to be able to use the open g file to attack the Black king.} -11... Be7 {Breaking the pin and threatening 12... Nxd5 13. Bxe7 Nxe7 winning a piece.} -12. Nxe7+ -12... Qxe7 -13. Qd2 {If Black plays passively, White will gain a huge advantage by castling queenside and using the open g file for an attack.} -13... d5 $1 {Taking advantage of the fact that White hasn't yet castled and that the e pawn is pinned.} -14. 0-0-0 {White was faced with the choice of a passive defense and sacrificing a pawn for an attack. He chose the latter.} -14... dxe4 -15. fxe4 -15... Qxe4 -16. Bxf6 {If now 16... Qxh1 then 17. Bc4+ wins the queen.} -16... Rxf6 -17. Bg2 {White gains time attacking Black's exposed queen. } -17... Qe8 {To prevent 18. Qd8+} -18. Rhe1 {White controls most of the board now.} -18... Qf8 {Black now threatens 19... Bg4 trapping White's rook on d1 and freeing his own rook on a8 to defend the back rank.} -19. Qd5+ -19... Kh8 -20. Qd8 {Threatening Re8 winning the queen. If 20... Qxd8 21. Rxd8+ Kh2 22. Ree8 winning the bishop.} -20... Bg4 $1 {At last Black's queen rook and queen bishop are in the game.} -21. Qxf8+ -21... Raf8 -22. Rd4 {White is threatening 23. Rxg4 and 23. Bxb7} -22... Bc8 {Holding onto the material. Once the queen rook is developed, c8 is not such a bad place for the bishop.} -23. Re7 {Rooks on the seventh rank are very powerful.} -23... c6 {To save the pawn.} -24. h4 -24... Kg8 $1 {Black can sense the end game is near and is bringing his king into the action!} -25. h5 {White wouldn't mind posting a bishop on g6. However, this pawn is going to be weak and attacked by the Black king.} -25... R6f7 {Black must retain control of his own second rank.} -26. Rxf7 -26... Kxf7 {To bring the king closer to the pawn on h5.} -27. Kd2 -27... Kf6 -28. Ke3 -28... Kg5 -29. Bf3 {White is now on the defensive.} -29... Bf5 {Threatening 30... Bxc2} -30. c3 -30... Re8+ {White's most active piece is his rook. Black plans to play 31... Re7 and 32... Rd7 exchanging rooks. With the more active pieces and extra pawn, Black would win easily.} -31. Kf2 -31... Re7 -32. b4 {Desperately seeking counterplay.} -32... Rd7 -33. Rc4 {This leads to the loss of the a pawn. But White cannot afford to trade rooks.} -33... Be6 -34. Re4 -34... Bxa2 -35. Re5+ -35... Kf4 -36. Ra5 {Attacking the bishop and the pawn.} -36... Rd2+ -37. Ke1 -37... Rh2 -38. Be2 -38... Be6 {If 39. Rxa7 then 39... Ke3 40. Bf1 (Not 40. Bd1 Rh1#.) 40... Rh1 followed by 41. Bc4 winning the bishop.} -39. Bf1 -39... Ra2 {White resigned. White has no hope in the ending after 40. Rxa2 Bxa2 If 40. Rc5 then 40... Bd5 41. Bc4 Ra1+ 42. Kd2 b6 trapping the rook} -0-1 - -[Event "?"] -[White "Morphy"] -[Black "Anderssen"] -[Date "1858.??.??"] -[Result "1-0"] - -{Sicilian Defense, 17 moves. This was the 8th game of a match won by Morphy between these two great players. Anderssen was too aggressive in the opening and was soundly defeated by a brilliant combination.} -1. e4 {A move leading more often to tactical rather than positional play. } -1... c5 {The Sicilian Defense. } -2. d4 {Morphy preferred this move order to 2. Nf3 and 3. d4} -2... cxd4 {Otherwise White has control of the center.} -3. Nf3 {Black can protect the pawn with 3... e5 since 4. Nxe5 would lose the knight to 4... Qa5+. However, White gets definite compensation after 4. c3 dxc3 5. Nxc3. Morphy's opponents rarely cared to risk this line.} -3... Nc6 -4. Nxd4 -4... e6 {Because this move can give Black a backwards d pawn, it was condemned by the analysts for a long time. Only in the middle of the 20th century was it realized that Black's piece activity provides reasonable compensation for the backwards pawn.} -5. Nb5 {Threatening 6. Nd6+ Bxd6 7. Qxd6 with an advantage.} -5... d6 -6. Bf4 {Attacking the pawn again.} -6... e5 {Now the d pawn is backwards: it will have trouble advancing to d5.} -7. Be3 -7... f5 {A premature move.} -8. N1c3 $1 {White calmly develops and refutes Black's last move. There is no way for Black to stop the knight from going to d5 where it can then give a fatal check on c7. If 8... Be6 then 9. exf5 Bxf5 10. Nd5. Or if 8... a6 then 9. Nd5 axb5 10. Bb6 Qd7 11. Nc7+ and 12. Nxa8. If 8... Nf6 then 9. Bg5 a6 10. Bxf6 gxf6 11. Qh5+ is good for White. } -8... f4 -9. Nd5 -9... fxe3 -10. Nbc7+ -10... Kf7 {White could now play 11. Nxa8 exf2+ 12. Kxf2 Qh4+ 13. g3 Qxe4 14. Bg2 with an advantage in material.} -11. Qf3+ {Instead White prefers a line with incredible complications. Morphy loved to take risks, and was leading in the match 5.5 to 1.5 (draws count .5).} -11... Nf6 -12. Bc4 {Threatening 13. Nxf6 checking with the bishop. Black appears to have no defense} -12... Nd4 $1 {A clever resource, attacking the queen and the pawn on c2.} -13. Nxf6+ {If now 13... Ke7 14. Nfd5+ Kd7 15. Qf7+ and 16. Nxa8 wins easily.} -13... d5 $1 -14. Bxd5+ {Here Black should play 14... Ke7 leading to an extremely complicated position after either 15. Ng8+ or 15. Qh5.} -14... Kg6? {This loses at once to a fine combination.} -15. Qh5+ -15... Kxf6 {White cannot play 16. Ne8+ because of 16... Qxe8 17. Qxe8 Bb4+ 18. c3 Rxe8. After the obvious attacking move 16. Qf7+ Black plays 16... Kg5 and it is not easy to get at the Black king.} -16. fxe3 $1 {Now the rook on h1 can come into the game. If 16... Qxc7 17. Rf1+ Ke7 18. Rf7+ Kd6 19. Rxc7.} -16... Nxc2+ -17. Ke2 {and Black resigned. If 17... Nxa1 then 18. Ne8+ Ke7 19. Qf7#. If 17... Qxc7 then 18. Rhf1+ Kd7 19. Rf7+ Kd8 20. Rxc7 Kxc7 21. Rc1} -1-0 - -[Event "?"] -[White "Morphy"] -[Black "Baucher"] -[Date "1858.??.??"] -[Result "1-0"] - -{Philidor's defense, 29 moves. Paul Morphy, the chess prodigy from New Orleans, takes control of the center and posts a knight deep in Black's territory before beginining an unstoppable attack on the king. Morphy played this game blindfolded. He was told his opponent's moves but was not allowed to see the board.} -1. e4 {Controlling the center and preparing to develop the bishop now on f1 eventually.} -1... e5 {Following suit.} -2. Nf3 {Developing the knight and attacking the pawn on e5.} -2... d6 {Philidor's defense. Black will have to contend with a cramped position.} -3. d4 {White now has an advantage in the center.} -3... exd4 {White's pawn on e4 controls more space than Black's pawn on d6.} -4. Qxd4 {The queen is well-placed here. White has two pieces developed to Black's none.} -4... Nc6 {Developing a piece and attacking White's queen.} -5. Bb5 {Developing a piece and pinning the knight to the king.} -5... Bd7 {Now Black threatens to take the queen.} -6. Bxc6 {So that the queen can remain in a dominating position.} -6... Bxc6 -7. Bg5 {Threatening the queen.} -7... f6 {This weakens Black's position. White will eventually post a knight at e6.} -8. Bh4 -8... Nh6 {Not a good place for the knight but Ne7 blocks the bishop.} -9. Nc3 {A natural developing move.} -9... Be7 {Black's position is cramped.} -10. O-O {Getting the king out of the center and developing the king's rook.} -10... O-O {Black's king is not safe in the center but it is not safe on the kingside either.} -11. Qc4+ -11... Kh8 -12. Nd4 {The knight is very well placed in this central square. It now threatens Ne6 forking the rook and queen.} -12... Qd7 -13. Rad1 {Another developing move that reinforces White's hold on the center.} -13... Rf7 {Black can think of nothing better to do than wait. Better was 13... Nf7 followed by Nd8 to defend the weak square on e6.} -14. f4 {White is preparing to control e6.} -14... a5 -15. f5 {Planning to move the knight to e6.} -15... Rf8 -16. Ne6 {A knight on the sixth rank is like a tooth in the throat.} -16... Rg8 -17. a4 {White prevents even the slightest queenside counterplay by Black.} -17... Ng4 {Threatening Ne3 attacking both rooks and the queen.} -18. Qe2 {The threat is easily parried.} -18... Ne5 {This centrally-posted knight is Black's most active piece.} -19. Bg3 {So White decides to trade a bishop for it.} -19... Qc8 {So after 20. Bxe5 Black can recapture with the pawn on d6 without allowing 21. Rxd7.} -20. Bxe5 -20... dxe5 {White has a dominating position.} -21. Rf3 {The rook is on its way to h3 where it will support the attack on the king. } -21... Bd7 {If 21... Be8 then 22. Rh3 g6 23. Qg4 gxf5 24. Rxh7+ Kxh7 25. Qh3+ Kg6 26. exf5+ Kf7 27. Qh7+ Rg7 28. Qxg7# is a possible continuation discovered by the great player Steinitz.} -22. Rh3 {Threatening 23. Rxh7 Kxh7 24. Qh5#.} -22... h6 -23. Qd2 {Threatening 24. Rxh6 gxh6 25. Qxh6# and 24. Qxd7 at the same time.} -23... Kh7 -24. Qxd7 {White is now ahead by a bishop.} -24... Bd6 -25. Rxh6+ $1 -25... Kxh6 -26. Rd3 {Threatening 27. Rh3#.} -26... Kh5 -27. Qf7+ -27... Kg4 -28. Qg6+ -28... Kh4 -29. Rh3# 1-0 - -[Event "?"] -[White "Morphy"] -[Black "Duke of Brunswick"] -[Date "1858.??.??"] -[Result "1-0"] - -{Philidor's Defense, 18 moves. The Duke of Brunswick plays a poor opening and allows Morphy to obtain a lead in development. Morphy makes the most of this advantage and wins quickly. The game ends with a beautiful queen sacrifice.} -1. e4 -1... e5 -2. Nf3 {Developing and attacking the pawn.} -2... d6 {Philidor's Defense. Black usually ends up with a cramped position. More usual is 2... Nc6} -3. d4 {Taking possession of the center and threatening the pawn on e5 again.} -3... Bg4? {Indirectly protecting the pawn. However, Black will be forced to trade this powerful bishop for the knight and give White a lead in development.} -4. dxe5 {If 4... dxe5 then 5. Qxd8+ Kxd8 6. Nxe5 wins a pawn.} -4... Bxf3 -5. Qxf3 -5... dxe5 -6. Bc4 {Threatening 7. Qxf7#. Black's best here is 6... Qe7 although since Qe7 blocks the bishop on f8, White would have a huge positional advantage.} -6... Nf6 {This looks like a logical move; however, it quickly leads to a losing position.} -7. Qb3 $1 {Threatening 8. Bxf7+} -7... Qe7 {White could win a rook for a knight with 8. Bxf7+ Qxf7 9. Qxb7. An immediate 8. Qxb7 does not win the rook because of 8... Qb4+ exchanging queens.} - 8. Nc3 {White decides that simple development is even stronger than 8. Bxf7+. White's superior development combined with Black's awkwardly placed pieces gives White an overwhelming positional advantage.} -8... c6 {Protecting the pawn on b7 with the queen and guarding d5.} -9. Bg5 {A powerful pin.} -9... b5? {This loses at once, but Black wouldn't have been able to hold out much longer with any move.} -10. Nxb5 {Beginning an eloquent combination.} -10... cxb5 -11. Bxb5+ {If 11... Kd8 then 12. Bxf6 Qxf6 13. Qd5+ Qd6 14. Qxa8 wins. } -11... Nbd7 -12. 0-0-0 {Threatening 13. Bxf6 gxf6 14. Bxd7+. Notice how all White's pieces are developed and working together.} -12... Rd8 -13. Rxd7 $1 {The end is near.} -13... Rxd7 -14. Rd1 {The pinned rook is doomed. White threatens 15. Bxd7+ and 15... Nxd7 could not be played because the knight is pinned.} -15... Qe6 {This unpins the knight. White could win material now with 16. Bxf6, but, instead, plays a combination that puts this game into the history books.} -16. Bxd7+ -16... Nd7 {Is everything protected?} -17. Qb8+ $3 {Everything but the king.} -17... Nxb8 -18. Rd8# -1-0 - -[Event "?"] -[White "Napoleon"] -[Black "Bertrand"] -[Date "1820.??.??"] -[Result "1-0"] - -{Scotch Game, 18 moves. The great general demonstrates he can carry out a relentless attack on the chessboard as well as on the battlefield.} - 1. e4 {A move that can lead to tactical complications.} - 1... e5 - 2. Nf3 {Developing and attacking the pawn on e5.} - 2... Nc6 {Defending the pawn.} - 3. d4 {This is known as the Scotch Game.} - 3... Nxd4? {Better is exd4.} - 4. Nxd4 - 4... exd4 - 5. Bc4 {Better is Qxd4 and the queen would dominate the center. If Black then tries 5... c5, he would have a hole on d5 and a backwards d pawn.} - 5... Bc5 {Guarding the pawn.} - 6. c3 {After 6...dxc3 7. Nxc3 White has a lead in development as compensation for his pawn.} - 6... Qe7? {Black should either take the pawn or develop his knight.} - 7. 0-0 $1 {If Black plays 7... Qxe4 then 8. Re1 pins and wins the queen.} - 7... Qe5? {Black should pay more attention to development.} - 8. f4 {White is giving up his rook for an attack.} - 8...dxc3+ - 9. Kh1 9... cxb2 - 10. Bxf7+ $1 {If 10... Kxf7 then 11. fxe5+ followed by 12. Bxb2.} - 10... Kd8 - 11. fxe5 - 11... bxa1=Q - 12. Bxg8 $1 {If 12... Rxg8 then 13. Qb3 Rf8 (If 13... Re8 14. Bb2 winning the queen.) 14. Rxf8+ Bxf8 15. Qf7 Bc5 16. Bg5+ Be7 17 Qf8#. Alternatively, if Black had played 12... Qxe5 then 13. Rf5 Qxe4 14. Bg5+ Ke8 (Not 14... Be7 15. Rf8#.) 15. Bf7+ Kf8 16. Bg6+ Kg8 17. Rf8+ Bxf8 18. Bxe4.} - 12... Be7 {To prevent 13. Bg5+.} - 13. Qb3 {Threatening 14. Bb2 trapping the queen. Black should try 13... Qxe5 leading to unclear complications.} - 13... a5? - 14. Rf8+ $1 - 14... Bxf8 - 15. Bg5+ - 15... Be7 - 16. Bxe7+ - 16...Kxe7 - 17. Qf7+ - 17... Kd8 - 18. Qf8# 1-0 - -[Event "?"] -[White "Petrosian"] -[Black "Estrin"] -[Date "1968.??.??"] -[Result "1-0"] - -{English Opening, 26 moves. Petrosian, known for his subtle positional maneuvering shows in this game that he is also a master of the attack. Petrosian begins preparing for a queenside attack and then changes gears and sets his sites on the Black king. Petrosian was world champion from 1963-1969.} -1. c4 {The English Opening is known for leading to subtle positional struggles. As will be seen, this game is an exception.} -1... e5 {Staking a claim to the center.} -2. g3 {Planning to place the bishop on the diagonal.} -2... Nc6 -3. Bg2 -3... d6 -4. Nc3 -4... Be6 {By unprotecting the pawn on b7, this move makes it easier for White to play b4. First, however, White must guard his c pawn.} -5. d3 -5... g6 -6. b4 {White's queenside attack is off to a fast start. The threat is b5 winnng the pawn on b7. After 6... Nxb4 7. Qb3 Black is in trouble.} -6... Qd7 -7. b5 -7... Nd8 {Guarding the pawn on b7.} -8. Nf3 -8... Bg7 -9. Ng5 -9... e4? {Threatening 10... Bxc3+. However, the move opens up the game which is to White's advantage since he has the better placed pieces.} -10. Bb2 -10... exd3 -11. Qxd3 -11... a6 -12. h4 {White begins an attack on the king. } -12... axb5 -13. cxb5 -13... Ne7 {Black is preparing to castle; however, the kingside is almost as dangerous as the center.} -14. Qd2 {White guards the bishop on b2 so that he threatens Nce4 taking control of f6.} -14... 0-0 -15. h5 {To remove the pawn protection from the king and open up the h file. The immediate threat is 16. hxg6 hxg6 17. Nh7 Re8 18. Ne4 and Black is in serious trouble.} -15... gxh5 -16. Rxh5 -16... Bf5 {Guarding the pawn on h7.} -17. Be4 {If 17... Bxe4 18. Ncxe4 h6 19. Nf6+ Bxf6 20. Bxf6 hxg5 21. Rh8#.} -17... Bg6 -18. Rxh7 $1 {Black's bishop was his best defensive piece. Now the king cannot be defended.} -18... Bxh7 -19. Bxh7+ -19... Kh8 -20. 0-0-0 {The threat is to bring the rook over to h1 and then move the bishop from h7. If 20... Bxc3 then 21. Qxc3+ f6 22. Qxf6+ Rxf6 23. Bxf6#.} -20... Ng8 {To be able to block the h file with Nh6.} -21. Rh1 -21... Nh6 -22. Nd5 {This move pins Black's bishop on g7 and therefore threatens 23. Rxh6} -22... f6 {Breaking the pin.} -23. Ne4 {If 23... Kxh7 then 24. Nexf6+ Rxf6 25. Nxf6+ Bxf6 26. Qxh6+ Kg8 27. Qxf6 and Black is defenseless.} -23... Rxa2 -24. Rxh6 -24... Bxh6 -25. Qxh6 {Threatening 26. Qxf8+} -25... Qg7 -26. Qh4 $1 {Black resigned. White threatens, among other things, 27. Bg6+ Kg8 27. Nexf6+ Rxf6 28. Nxf6+ Kf8 29. Nh7+ Kg8 30. Qxd8+ Qf8 31. Qxf8#. If Black tries 26... Qxh7 then 27. Bxf6+ Rxf6 (27... Kg8 28. Ne7+ wins the queen) 28. Qxf6+ Qg7 (28... Kg8 29. Ne7+) 29. Qxd8+ Qg8 (29... Kh7 30. Ndf6+ Kh6 31. Qe8 Qg6 32. Qh8+ Qh7 33. Qxh7#.) 30. Qxg8+ Kxg8 31. Nec3 with an easily won end game. } -1-0 - -[Event "?"] -[White "Pillsbury"] -[Black "Marco"] -[Date "1900.??.??"] -[Result "1-0"] - -{Queen's Gambit Declined, 25 moves. One of the great attacking games of all time. Pillsbury, a great player from St. Louis, obtains a strong center and uses it as a basis for a merciless attack on the king.} -1. d4 {Controlling the center.} -1... d5 -2. c4 {The queen's gambit. If Black plays 2... dxc4 White will eventually win back the pawn.} -2... e6 {The classical way to decline the gambit.} -3. Nc3 {Developing and putting pressure on d5.} -3... Nf6 {Developing and defending d5.} -4. Bg5 {Pinning the knight and putting more pressure on d5. Pillsbury was the first to demonstrate this is the best move.} -4... Be7 {Breaking the pin.} -5. e3 -5... 0-0 {Getting the king out of the center.} -6. Nf3 -6... b6 {The bishop will be developed on b7.} -7. Bd3 {White's pieces are actively placed.} -7... Bb7 -8. cxd5 {White must not delay this move or Black will play dxc4 and his bishop will be very active. The recommended move now is 8... Nxd5 followed by 9. Bxe7 Qxe7 10. Nxd5 exd5. Black avoids 10... Bxd5 because of 11. e4 and White would control the center.} -8... exd5 -9. Ne5 {Knights placed in center squares are very powerful.} -9...Nbd7 -10. f4 {This provides strong support for the knight and opens the way for a kingside attack.} -10... c5 {It is correct to try to undermine the powerful knight by attacking its defenders.} -11. 0-0 -11... c4? {A strategic error: Black relieves the tension in the center. Black's queenside attack is no match for White's kingside attack."} -12. Bc2 -12. a6 {Preparing for b5.} -13. Qf3 {Bringing the queen into the attack.} -13... b5 -14. Qh3 {Threatening 15. Nxd7 Qxd7 (if 15... Nxd7 then Qxh7#) 16. Bxh7+ Kh8 (If 16... Nxh7 17. Qxd7) 17. Bf5+ Kg8 18. Bxd7. If Black plays 14... h6 then 15. Bxh6 gxh6 16. Qxh6 Ne4 17. Rf3 Bf6 18. Rg3+ Nxg3 19. Qh7#.} -14...g6 -15. f5 {To exchange pawns and open the file for the rook on f1.} -15... b4 {Black counterattacks on the queenside.} -16. fxg6 $1 {If 16... bxc3 then 17. Bxf6 Nxf6 18. Rxf6 fxg6 (Not 18... Bxf6 19. Qxh7#) 19. Bxg6 $1 hxg6 20. Rxg6#. If instead 16... fxg6 then 17. Qe6+ Kh8 18. Nxd7 Nxd7 (If 18... Qxd7 then 19. Bxf6+ wins the queen) 19. Bxe7 wins a piece.} -16... hxg6 {If now 17. Ne2 then 17... Ne4 and Black has counterplay.} -17. Qh4 $1 {White keeps the pressure on.} -17... bxc3 -18. Nxd7 {If 18... Nxd7 then 19. Bxe7 forking the queen and rook.} -18...Qxd7 {Hoping for 19. Bxf6 Bxf6 10. Qxf6 cxb2} -19. Rxf6 $1 {Wonderful move. If 19... Bxf6 then 20. Bxf6 cxb2 21. Qh8#.} -19...a5 {Black will bring his rook to a6 to help with the defense.} -20. Raf1 {Bringing the last inactive piece into the attack. The threat is 21. Bxg6 fxg6 22. Rxg6#.} -20...Ra6 {Has the rook arrived in time to save the day?} -21. Bxg6 $3 {Threatening Qh7#.} -21... fxg6 -22. Rxf8+ -22... Bxf8 -23. Rxf8+ -23...Kxf8 -24. Qh8+ -24...Kf7 -25. Qh7+ {and Black resigned. If 25... Kf8 then 26. Qxd7. If 25... Ke8 then 26. Qg8#. If 25... Ke6 then 26. Qxg6#} -1-0 - -[Event "?"] -[White "Polgar"] -[Black "Angelova"] -[Date "1988.??.??"] -[Result "1-0"] - -{Sicilian Defense, 18 moves. Judit Polgar was only 12 years old when she played this game. Two years later became the youngest player ever to achieve the title of Grandmaster. She is probably the strongest woman player in history. In this game she quickly overwhelms her opponent.} -1. e4 {Polgar prefers this move which often leads to games with many tactical rather than postional possibilities.} -1... c5 {The Sicilian Defense.} -2. Nf3 -2... Nc6 -3. Bb5 {More usual here is 3. d4.} -3... g6 {Black plans to develop the bishop on g7.} -4. 0-0 -4... Bg7 -5. c3 {White plans to play 6. d4 with a strong center.} -5... e5 {To prevent 6. d4 5... d6 would have been better.} -6. d4 $1 {The pawn sacrifice is justified on the basis of White's lead in development and Black's weaknesses on the dark squares.} -6... cxd4 -7. cxd4 -7... Nxd4 -8. Nxd4 -8... exd4 -9. e5 $1 {This move keeps Black from developing normally. If 9... Bxe5 then 10. Re1 f6 11. f4 would win the bishop.} -9... Ne7 {Black want to castle to safety as soon as possible.} -10. Bg5 {Putting pressure on the weak dark squares.} -10... 0-0 -11. Qxd4 {White has her pawn back and is still in an excellent position.} -11... Nc6 {If now 12. Bxd8 then 12... Nxd4. Or, if 12. Bxc6 then 12... Qxg5. } -13. Qh4 -13... Qb6 {Attacking the bishop and threatening 14... Bxe5. } -14. Nc3 $1 {White is delighted to sacrifice the pawn for the attack.} -14... Bxe5 {It is dangerous to grab a pawn when behind in development, but the pawn on e5 kept Black's queen bishop hemmed in. Besides, Black now threatens 15... Bxc3 16. bxc3 17. Qxb5} -15. Rae1 {White ignores Black's threats and continues with her development. If Black refuses the piece and plays 15... Bg7 the following is a possible continuation: 16. Bc4 d6 17. Nd5 Qxb2 18. Nf6+ Bxf6 19. Bxf6 (Threatening Qh6) 19... Qd2 20. Re3 h5 21. Qg5 Kh7 22. Bd3 Ne5 23. Qxh5+ Kg8 24. Qh8#.} -15... Bxc3 {The dark squares now belong to White.} -16. bxc3 -16... Qxb5 -17. Qh6 {Threatening 18. Bf6 and 19. Qg7#.} -17... Qf5 -18. Qxf8+ $1 -18... Kxf8 -19. Bh6+ -19... Kg8 -20. Re8# {Black resigned after White's 18th move} -1-0 - -[Event "?"] -[White "Reshevsky"] -[Black "Traube"] -[Date "1920.??.??"] -[Result "1-0"] - -{Bird's Opening, 17 moves. Reshevsky was only eight years old when he played this game in a simultaneous exhibition against 20 players. Traube made too many weakening pawn moves allowing Reshevsky to win with a nice combination.} -1. f4 {Bird's opening. } -1... e6 {Opeining lines for the bishop and controlling d5.} - 2. Nf3 -2... d5 -3. g3 {The bishop is going to move to g2.} -3... Nf6 {A logical developing move. } -4. Bg2 -4... Bd6 {This may be a little too aggressive. 4... Be7 is better.} -5. d4 {This makes it impossible for Black to play the freeing move ...e5. Moreover, e5 will be an excellent square for White's knight. The only disadvantage of this move is that with so many pawns on dark squares, the bishop on c1 will have little mobility.} -5... Nc6? {In positions with the d pawns advanced, the Black c pawn should be used to counterattack in the center. This move blocks the c pawn.} -6. Ne5 {A nicely posted piece. Black cannot play 6... Nxe5 because 7. dxe5 would fork the Black bishop and knight. If 7... Bb4+ then 8. c3 and Black still loses a piece.} -6... Ne7 {Now the c pawn is unblocked, but the knight is in the way of Black's queen and bishop.} -7. Be3 -7... c6 -8. a3 {White is planning a queenside attack.} -8... h6? {This move does nothing other than weaken the Black kingside.} -9. Nd2 -9... Nd7 -10. c4 {Attacking the center and making room for the queen to develop.} -10... b6? {Possibly thinking that he should prevent 11. c5, which was not a good move anyway. Black should castle.} -11. b4 -11... f6? {Attempting to chase away the powerful knight. But Black has made too many weakening pawn moves already. } -12. Nxc6 $1 {A clever combination.} -12... Nxc6 -13. cxd5 {If 13... Ne7 then 14. dxe6 and Black's rook and knight are both attacked.} -13... exd5 -14. Bxd5 {Attacking the knight on c6 and pinning it to the rook.} -14... Bb7 -15 Qc2 {This is the point of the combination. White attacks the knight on c6 and threatens 16. Qg6+ Kf8 17. Qf7#. Black's best is now 15... Qc7 16. Rc1 Rc8 17. Qg6+ Kd8 18. Qxg7 but White would still have a huge advantage.} -15... Rc8? -16. Qg6+ -16... Kf8 -17. Qf7# -1-0 - -[Event "?"] -[White "Schlecter"] -[Black "Przepiorka"] -[Date "1906.??.??"] -[Result "1-0"] - -{Queen's Gambit Declined, 20 moves. Schlecter plays a superior opening and increases the pressure on Przepiorka. When Przepiorka initiates what looks like a simple pawn exchange, Schlecter places a rook on the seventh rank with devastating effect.} -1. d4 {Controls the center and is usually followed by 2. c4.} -1... d5 -2. c4 {The Queen's Gambit. It is not a true gambit because White can eventually win back the pawn if Black plays 1... dxc4} -2... e6 {Declining the gambit and defending the center.} -3. Nc3 {Developing and putting pressure on the center.} -3... Nf6 {Defending the center.} -4. Nf3 {Developing.} -4... Nbd7 -5. Bg5 {Pinning the knight to the queen.} -5... Be7 {Breaking the pin.} -6. e3 {Preparing to develop the bishop.} -6... b6 {It would have been better to castle first.} -7. cxd5 {If now 7... exd5 then 8. Bb5 Bb7 9. Ne5 (Threatening 10. Bxf6 Bxf6 11. Bxd7+) 0-0 10. Bc6 Bxc6 11.Nxc6 and White has a strong postion.} -7... Nxd5 -8. Nxd5 {If 8... Bxg5 then 9. Nxc7+ Qxc7 10.Nxg5 and White is a pawn ahead.} -8... exd5 -9. Bf4 {White now has the more active pieces and a chance to bring the rook into action on the c file.} -9... 0-0 {Getting the king out of the center and bringing the rook into play.} -10. Bd3 {The bishop has designs on the Black king.} -10... c5 {Attempting to put pressure on the queenside.} -11. 0-0 {Continuing development.} -11... Bb7 -12. Rc1 {Rooks work best when not blocked by their own pawns.} -12... Re8 -13. Ne5 {Centralizing the knight and putting pressure on the Black king.} -13... Nxe5 -14. Bxe5 -14... cxd4? {The losing move. It lets White's rook slip in.} -15. Rc7 {Black's days are numbered.} -15... Bc8 {White controls most of the board.} -16. Qh5 {Threatening 17. Qxh7+ Kf8 18. Qh8#.} -16... g6 -17. Bxg6 $1 {If Black plays 17... hxg6 then 18. Qh8#.} -17... fxg6 -18. Qh6 {Threatening Qg7#.} -18... Bf6 -19. Qxh7+ {The White rook has made its presence known.} -19... Kf8 -20. Qf7# {Black actually resigned after White's 17th move.} -1-0 - -[Event "?"] -[White "Spassky"] -[Black "Petrosian"] -[Date "1969.??.??"] -[Result "1-0"] - -{Queen's Gambit Declined (by transposition), 30 moves. Spassky plays an excellent opening and emerges with an advantage. Petrosian, under pressure, allows Spassky to obtain a passed d pawn which decides the game. Petrosian was world champion from 1963-1969; Spassky from 1969-1972.} -1. c4 {The English opening. White takes possession of d5.} - 1... Nf6 {Developing and attacking the center.} - 2. Nc3 {A natural move.} - 2... e6 {Preparing to play 3... d5. Also playable is 2... e5.} - 3. Nf3 - 3... d5 - 4. d4 {This position can also arise from the Queen's gambit as follows: 1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3.} - 4... c5 {This variation is called the Semi-Tarrasch Defense.} - 5. cxd5 {If 5... exd5 then Black will end up with an isolated queen pawn.} - 5... Nxd5 {The usual next move for White when this game was played was 6. e3} - 6. e4 $1 {Spassky will demonstrate the strength of the pawn center.} - 6... Nxc3 - 7. bxc3 - 7... cxd4 - 8. cxd4 {White now occupies the center. The question is whether he will be able to use it to advantage or spend all his energy protecting it.} - 8... Bb4+ {The side with less space should strive to exchange pieces.} - 9. Bd2 - 9... Bxd2+ - 10. Qxd2 - 10... 0-0 - 11. Bc4 {A natural developing move.} - 11... Nc6 {Developing and beginning to put pressure on White's center.} - 12. 0-0 - 12... b6 {The bishop is better placed on b7 then d7.} - 13. Rd1 - 13... Bb7 - 14. Rfe1 {Developing the last piece.} - 14... Rc8 {Placing the rook on the open file.} - 15. d5 $1 {If here 15... Na5 then Spassky planned 15. Bd3 exd5 16. e5 with a strong attack. White's bishop, knight, and queen all are ready for a kingside attack while Black's pieces are on the other wing.} - 15... exd5 - 16. Bxd5 {White's pieces are now very active and it is difficult for Black to find a good defense.} - 16... Na5? {The knight ends up being out of the game. Either 16... Qe7 or 16... Qc7 is better.} - 17. Qf4 $1 {The queen is well placed here, exerting pressure on f7. The threat is Bxf7+ winning the queen.} - 17... Qc7 - 18. Qf5 {threatening Ng5. If now 18... h6 then 19. Bxb7 Qxb7 20. Rd7 Rc7 21. Red1 and White's rook on the seventh rank gives him a distinct advantage.} - 18... Bxd5 {This gives White a very strong passed d pawn.} - 19. exd5 - 19... Qc2 {White would have a good game after 20. Qxc2 Rxc2 21. Re7 Rxa2 22. Rxa7} - 20. Qf4 {White wants to force a win in the middle game rather than play out a long end game.} - 20... Qxa2 - 21. d6 {Nimzovich often spoke of a past pawn's lust to expand.} - 21... Rcd8 {Covering the pawn's queening square.} - 22. d7 - 22... Qc4 - 23. Qf5 {White threatens 24. Ng5 as well as 24. Rc1 followd by 25. Rc7} - 23... h6 - 24. Rdc1 {Now the rook will get to the seventh rank.} - 24... Qa6 - 25. Rc7 - 25... b5 {Giving the queen a better chance to defend.} - 26. Nd4 - 26... Qb6 - 27. Rc8 $1 {Black cannot play 27... Qxd4 because of 28. Rxd8 Rxd8 29. Re8+ Rxe8 30. dxe8=Q#. White threatens 28. Re8 Qxd4 29. Rxf8+ Rxf8 29. Rxf8 Kxf8 30. Qc5+ Qxc5 31. d8=Q#.} - 27... Nb7 {Guarding the rook on d8.} - 28. Nc6 $1 - 28... Nd6 - 29. Nxd8 $1 {A decisive finish.} - 29... Nxf5 - 30. Nc6 {Black resigned since White is threatening both 31. Rxf8+ Kxf8 32. Re8# and 31. Rxf8+ Kxf8 32. d8=Q+ Qxd8 33. Nxd8} -1-0 - -[Event "?"] -[White "Spielmann"] -[Black "Hunlinger"] -[Date "1929.??.??"] -[Result "1-0"] - -{Caro-Kann Defense, 28 moves. Spielmann increases the pressure until Hunlinger, in a precarious position, moves a piece away from his kingside. Spielmann then launches a decisive attack culminating in a queen sacrifice forcing checkmate.} -1. e4 {An opening that often leads to attacking rather than postional games.} -1... c6 {The Caro-Kann defense. It is somewhat passive but difficult to break through.} -2. d4 {Controlling the center with pawns.} -2... d5 {Contesting the center.} -3. Nc3 {Developing a piece and protecting the pawn on e4.} -3... dxe4 {Eliminating part of White's pawn center.} -4. Nxe4 {Recapturing.} -4... Nf6 {Developing and attacking the knight on e4.} -5. Ng3 {More usual is Nxf6.} -5... e6 {Opening lines for the bishop on f8. 5... h5 may have been better.} -6. Nf3 {A natural developing move.} -6... c5 {Planning to exchange White's remainnig center pawn. Perhaps it would have been more prudent to make a developing move.} -7. Bd3 {The best place for the bishop. 7. Be2 would be passive and 7. Bb5+ 7... Bd7 would lead to nothing. If Black tries 7... cxd4 8. Nxd4 Qxd4 then 9. Bb5+ wins the queen.} -7... Nc6 {Developing the knight and attacking the pawn on d4.} -8. dxc5 {Notice that the placement of White's bishop prevents a queen exchange.} -8... Bxc5 {Recapturing and developing the bishop at the same time.} -9. a3 {Preparing for an eventual b4 followd by Bb2 while preventing Nb4.} -9... 0-0 {Getting the king out of the center and bringing the rook into play.} -10. 0-0 {Following suit.} -10... b6 {To develop the bishop on b7.} -11. b4 {Attacking the bishop and preparing Bb2 where the bishop will exert strong pressure on the Black kingside.} -11... Be7 -12. Bb2 {As planned.} -12... Qc7 -13. b5 {Chasing away the knight so that White can play Ne5.} -13... Na5 {There is an old saying that a knight on the rim is dim. But where else can the knight go?} -14. Ne5 {A knight posted in the center is a very powerful piece. Bishops work best at a distance.} -14... Bb7 -15. Ng4 {Threatening 16. Nxf6 Bxf6 17. Bxf6 gxf6 weakening Black's king position. If 15... Nxg4 then after 16. Qxg4 Black must weaken the king position with 16... g6.} -15... Qd8 {Protecting the knight to avoid doubled pawns.} -16. Ne3 {If now 16... Qc7 then 17. Nh5 Qd8 18. Nxg7 Kxg7 19. Qg4+ Kh8 20. Qh4 Kg8 21. Bxf6 Bxf6 22. Qxh7#.} -16... Nd5? {A mistake. The knight is needed on the kingside to defend the king.} -17. Qh5 {Threatening Qxh7#. If 17... h6 then 18. Bxg7 Kxg7 19. Ngf5+ exf5 20. Nxf5+ Kg8 21. Qxh6 Bf6 22. Ne7+ Qxe7 23. Qh7#} -17... g6 {Black is now weak on the dark squares.} -18. Ng4 {Now if 18... gxh5 then 19. Nh6# $1} -18... Bf6 {The best defense but it is not good enough.} -19. Nxf6+ {Now White has a dark-squared bishop and Black doesn't. It will be difficult for Black to defend the dark squares.} -19... Nxf6 -20. Qh6 {White now has an excellent position.} -20... Rc8 -21. Rad1 {White brings additional pieces into play before continuing the attack on the king. One threat is Bxg6 attacking the queen with the rook.} -21... Qe7 -22. Rfe1 {The threat is 23. Nf5 gxf5 24. Qg5+ Kh8 25. Bxf6+ winning the queen.} -22... Ne8 -23. Nf5 {If Black plays 23... gxf5 then 24 Bxf5 (threatening Qxh7#) 24... f6 25 Bxe6 + Kh8 26 Bxc8 wins. If 23... exf5 then 24 Rxe7.} -23... Qc5 -24. Re5 {White already has a plan to maneuver the rook to h8.} -24... Bd5 -25. Ne7+ $1 {The begining of a mating combination.} -25... Qxe7 -26. Qxh7+ $3 -26... Kxh7 -27. Rh5+ $1 {The pawn cannot capture the rook because the pawn is pinned by the bishop.} -27... Kg8 -28. Rh8# {Black resigned three moves ago beacuse he saw this ending coming.} -1-0 - -[Event "?"] -[White "Spielmann"] -[Black "Johner"] -[Date "1908.??.??"] -[Result "1-0"] - -{Bishop's Opening, 30 moves. Spielmann's kingside attack was effectively countered by Johner's queenside attack. As Spielmann advanced a passed pawn, Johner opened up the center and caught Spielmann's king.} -1. e4 {An aggressive first move.} -1... e5 -2. Bc4 {Bishop's Opening.} -2... Nf6 {If 3. Nc3 then 3... Nxe4 4. Nxe4 d5 and Black has an equal game or better.} -3. d3 -3... Nc6 {Also good is 3... c6 preparing for ... d5.} -4. Nc3 {Developing and keeping open the option of 5. f4 which would be impossible after 4. Nf3.} -4... Bc5 {A good developing move. Also playable was 4... Bb4.} -5. f4 -5... d6 -6. f5 {This move cramps Black who cannot immediately play the natural rejoinder d5. White can proceed with a kingside attack while Black can pursue a queenside counterattack and strive to play ...d5. A major disadvantage of 6. f5 is that it takes the pressure off of Black's center.} -6... Nd4 {Black prepares his counterattack which consists of ...c6, ...b5, and ... a5.} -7. Bg5 {Pinning the knight and threatening to break up Black's kingside pawn formation with 8. Nd5 and 9. Nxf6+.} -7... c6 {Preparing for the queenside attack and preventing 8. Nd5. Black threatens 8... b5 9. Bb3 a5 (Threatening 9... a4 trapping the biship) 10. a3 Nxb3 and White has a weakend pawn position and has exchanged his powerful bishop for a knight.} -8. a3 -8... b5 -9. Ba2 -9... Qb6 {Supporting the queenside attack and creating threats on the a7-g1 diagonal.} -10. Nf3 -10... a5 {White would like to castle now but that would allow Black to move the knight on d4 checking with the bishop. For example, 11. 0-0 Nxf3+ 12. Kh1 Nxg5.} -11. Rf1 {Developing the rook for a kingside attack and protecting f2. If now 11... b4 then 12. Na4 and White can trade his knight for Black's powerful bishop.} -11... a4 {Now Black is prepared for ... b4.} -12. Nxd4 -12... Bxd4 {White should now play 13. Bd2 to help defend the dark squares on the queenside.}13. Bxf6 {Instead he begins an attack on the kingside.} -13... gxf6 -14. Qh5 {Threatening 15. Qxf7+. If Black now plays passively by defending the pawn with 14... Qc7 then his queenside attack would dissipate. If 14... Ra7 the rook would be tied to the defending the pawn of f7 and would be unable to support the queenside attack.} -14... Rf8 $1 {If 15. Qxh7 then 15... b4 16. axb4 Qxb4 threatening 17... Bxc3+, 17... Qxb2, as well as 17... a3 undermining the protection of the pinned knight.} -15. Nd1 {Passive but necessary.} -15... b4 $1 {If 16. axb4 a3 $1 17. Rb1 (Not 17. Bb3 axb2 18. Rxa8 b1=Q) 17... axb2 18. Bb3 Qxb4+. } -16. Rc1 -16... bxa3 -17. bxa3 -17... Qc5 {Planning 18... Qxa3.} -18. c3 -18... Qxa3 -19. Rc2 -19... Bb6 -20. Qxh7 -20... Qc5 {Bringing the queen back into play.} -21. Qg7 {Threatening 22. Qxf6.} -21... Ba6 {Threatening 22. Bxd3 forking the rooks.} -22. Rf3 -22... Bd8 {Black wisely takes time out from the attack to defend his own kingside.} -23. h4 {The pawn is threatening to queen in four moves. Is there any way for Black to stop it.} -23... d5 $1 {The classic counter to play on a wing is to open the center. If 24. exd5 cxd5 Black will break open the position with ... e4. Was it mere luck that Black had this stroke available? No, it was inherent in the logic of the position. When White played 6. f5 it left Black with the latent possibility of d5.} -24. h5 -24... dxe4 -25. dxe4 -25... Qg1+ -26. Kd2 -26... Be7 {Clearing the file for the rook.} -27. Rc1 -27... Rd8+ -28. Kc2 -28... Qe1 {Threatening 29. Qd2+ 30. Kb1 Rg8+ 31. Kh1 Qxc1#.} -29. Rf2 -29... Ba3 {The White king is surrounded.} -30. Qg4 {Returning to protect the king, but it is too late.} -30... Bd3# -0-1 - -[Event "?"] -[White "Steinitz"] -[Black "Mongredian"] -[Date "1862.??.??"] -[Result "1-0"] - -{Center Counter, 29 moves. Steinitz gets an advantage is space after Mongredian played the opening very passively. Steinitz uses his advantage space to launch a kingside attack. He sacrifices a rook on move 16 and mates 12 moves later. Steinitz was world champion from 1886-1894.} -1. e4 {This usually leads to more open games than 1. d4.} -1. d5 {The Center Counter. Black frees his game quickly but loses a tempo because his queen is exposed.} -2. exd5 {Any other move would be very passive. The modern way to play this for Black is to play 2... Nf6 since after 3. c4 c6 4. dxc6 Nxc6 Black has a good game. Instead of 3. c4 White normally plays either 3. Nf3 or 3. d4.} -2... Qxd5 -3. Nc3 {A natural move. White develops a knight and gains time attacking the queen.} -3... Qd8 {3... Qa5 is considered somewhat better.} -4. d4 {Taking possession of the central square d4 and opening lines for the bishop on c1.} -4... e6 {It is very passive to shut in the bishop this way. It would have been better to play 4... Bf5 or wait until White played Nf3 and play ... Bg4.} -5. Nf3 {Both sides now develop their pieces and castle.} -5... Nf6 -6. Bd3 -6... Be7 -7. 0-0 -7... 0-0 -8. Be3 {Developing his last minor piece.} -8... b6 {The placement of the bishop on b7 is not a good idea in this position because White's pieces are well placed to exploit the holes this pawn move creates at a6 and c6.} -9. Ne5 {A strong central position for the knight. Its effect is manifested both by the pressure it exerts on Black's kingside and on Black's weak square c6.} -9... Bb7 -10. f4 {Reinforcing the knight's position.} -10... Nbd7 -11. Qe2 {Preparing Ba6 to exchange off Black's bishop on b7, the defender of his queenside holes. Black should now try 11... c5 attacking White's center, although White would still have a significant advantage.} -11... Nd5? {Removing an important defender from the kingside.} -12. Nxd5 -12... exd5? {Very bad since Black's queen bishop is now shut in. Better was 12... Bxd5.} -13. Rf3 {Planning to bring the rook to h3 putting heavy pressure on the Black kingside. This move would not have been possible if Black had played 12... Bxd5. If Black now were to play 13... Nxe5 14. fxe5 f6 then 15. Rh3 g6 16. Rxh7 Kxh7 17. Qh5+ Kg8 18. Qxg6+ Kh8 19. Qh7#.} -13... f5 {To block the range of White's bishop.} -14. Rh3 {Threatening 15. Qh5 h6 16. Qg6 with many threats including 17. Rxh6, 17. Bxf5 and 17. Qe6+. If after 15. Qh5 Black were to play 15... Nf6 then 16. Qxf5 Bc8 (appearing to win the rook on h3) 17. Qxh7+ Nxh7 18. Bxh7+ Kh8 19. Ng6#.} -14... g6 -15. g4 -15... fxg4 {This loses immediately. 15... Nxe5 followed by 16... Bc8 would have held out a little longer.} -16. Rxh7 {What a move! If 16... Kxh7 then 17. Qxg4 (threatening Qxg6+) and Black can play either 17... Nf6 or 17... Rg8. After 17... Nf6 then 18. Qxg6+ Kh8 19. Qh6+ Kg8 20. Kh1 $1 and Black is helpless against the threat of 21. Rg1+. If 17... Rg8 then 18. Qh5+ Kg7 19. Qxg6+ Kf8 (19... Kh8 20. Qh7#) 20. Qf7#.} -16... Nxe5 -17. fxe5 -17... Kxh7 -18. Qxg4 {threatening 19. Qxg6+ and 20. Qh7#.} -18... Rg8 -19. Qh5+ -19... Kg7 -20. Qh6+ -20... Kf7 -21. Qh7+ {If 21... Rg7 then 22. Bxg6+ Kf8 (or 22... Ke6 23. Qh3#) 23. Qh8+ Rg8 24. Bh6#.} -21... Ke6 -22. Qh3+ {Bringing the king back into the line of fire.} -22... Kf7 -23. Rf1+ {If 23... Kg7 then 24. Qh6#. All White's pieces are now participating in the attack.} -23... Ke8 -24. Qe6 {Threatening the rook on g8.} -24... Rg7 -25. Bg5 {If now 25... Bc8 then 26. Qc6+ Bd2 (If 26... Qd2 then 27. Qxa8) 27. Qxg6+ Rxg6 28. Bxg6#.} -25... Qd7 -26. Bxg6+ {If 26... Kd8 then 27. Rf8+ Qe8 28. Rxe8#.} -26... Rxg6 -27. Qxg6+ -27... Kd8 -28. Rf8+ {The bishop cannot capture because it is pinned.} -28... Qe8 -29. Qxe8# -1-0 - -[Event "?"] -[White "Tal"] -[Black "Furster"] -[Date "1958.??.??"] -[Result "1-0"] - -{Caro-Kann Defense, 30 moves. Tal is known for his willingness to sacrifice material for an attack with unclear complications. In this game, Tal sacrifices a bishop to keep Fuster from castling. Tal was world champion from 1960-1961.} -1. e4 {Tal's favorite opening.} -1... c6 {The Caro-Kann defense.} -2. d4 {Controlling the center.} -2... d5 {Fighting back in the center.} -3. Nc3 {Developing a piece and protecting the pawn on e4.} -3... dxe4 -4. Nxe4 -4... Nd7 {So that after 5. Nf3 Ngf6 6. Nxf6 Black can recapture with 6... Nxf6 rather than gxf6. 4... Bf5 is more usual.} -5. Nf3 {A natural developing move.} -5... Ngf6 -6. Nxf6 {Better to exchange than retreat.} -6... Nxf6 {as planned.} -7. Bc4 {The bishop is placed in an aggressive position.} -7... Bf5 {Developing the bishop before it is blocked by a pawn on e6.} -8. Qe2 {White plans to castle queenside in the near future.} -8... e6 {Blocking White's bishop and preparing to develop his own.} -9. Bg5 {Pinning the knight and preparing to castle.} -9... Be7 {Breaking the pin.} -10. 0-0-0 -10... h6 {10... Nd5 may have turned out better.} -11. Bh4 -11... Ne4 {Hoping to exchange the bishops and castle.} -12. g4 $1 {Now if 12... Bxh4 then 13. gxf5 Nxf2 14. fxe6 fxe6 15. Nxh4 Qxh4 16. Rhe1 Nxd1 17. Qxe6+ Kd8 18. Qd6+ Kc8 19. Be6#.} -12... Bh7 -13. Bg3 -13... Nxg3 {So as to be able to play 14... Qc7 and 15... 0-0-0 getting the king to safety.} -14. fxg3 {It is normally better to capture toward the center (hxg3) but White wants the f file open.} -14... Qc7 {Black would like to castle queenside next move.} -15. Ne5 {Now if 15... 0-0-0 then 16. Nxf7} -15... Bd6 {Protecting f7 with the queen.} -16. h4 {Making 16... 0-0 dangerous. Black still can't play 16... 0-0-0 because17. Nxf7 Qxf7 18. Bxe6+ wins the queen. If 16... Bxe5 17. dxe5 Black cannot play 0-0-0 because of the rook on the open d file.} -16... f6 {Once the knight is chased away Black will finally be able to castle.} -17. Bxe6 $1 {Easier said then done! White gives up the knight to keep the Black king in the center.} -17... fxe5 -18. dxe5 {If Black plays 18... Bxe5 then 19. Rhe1 Bxg3 20. Bd7+ Kf8 (20... Kd8 21. Qe8+ Rxe8 22. Rxe8#.) 21. Qe7+ Kg8 22. Be6#.} -18... Be7 -19. Rhf1 {Threatening 10. Bf7+. Did Tal see this position when he captured the knight with the f pawn?} -19... Rf8 -20. Rxf8+ -20... Bxf8 -21. Qf3 {Threatening 22. Rd7.} -23... Qe7 {So if 24. Rd7 then 24... Qxe6.} -24. Qb3 {Threatening 25. Bd7+ Qxd7 26. Rxd7 Kxd7 27. Qxb7+ Ke8 28. Qxh8+} -24... Rb8 -25. Bd7+ -25... Qxd7 {Black will have a rook and 2 bishops for the queen. This is normally more than enough for the queen but Black's position is too shaky to survive.} -26. Rxd7 -26... Kxd7 -27. Qf7+ {Black will not be able to protect all his pieces.} -27... Be7 -28. e6+ {If 28... Kd6 then Qf4+ wins the rook.} -28... Kd8 -29. Qxg7 {Black's position is crumbling.} -29... Be4 -30. Qe5 {forking the rook and bishop. Black resigned last move.} -1-0 - -[Event "?"] -[White "Tartakover"] -[Black "Euwe"] -[Date "1948.??.??"] -[Result "0-1"] - -{Giuoco Piano, 42 moves. Tarkatover wins a pawn early in the game but underestimates Euwe's counterattack. Euwe sacrifices both knights and both rooks during the attack. Euwe was world champion from 1935-1937.} -1. e4 {A move that typically leads to more tactical possibilities than the positional 1. d4.} -1... e5 -2. Nf3 {Developing the knight and attacking the pawn.} -2... Nc6 {Developing and protecting the pawn.} -3. Bc4 {The bishop is more aggressively placed on c4 than on b5. However, 3. Bb5 leads to longer-lasting pressure.} -3... Bc5 {Also good is 3... Nf6.} -4. c3 {Planning to play 5. d4. At one time 4. d3 was common leading to a quiet position. That is why the opening is called the Giuoco Piano which means quiet game. Black can now play 4... Nf6 5. d4 exd4 5. cxd4 Bb4+ 6. Nc3 Nxe4 7. 0-0 with a complicated position.} -4... Bb6 {With this move, Black is able to keep the position closed.} -5. d4 {Occupying the center. Black should not now play 5... d6 because after 6. dxe5 Nxe5 7. Nxe5 dxe5 8. Bxf7+ Black cannot play Kxf7 because of Qxd8. If 6... dxe5 then 7. Qxd8+ Kxd8 8. Bxf7.} -5... Qe7 {This would be a poor move in an open postion; here it is effective. } -6. 0-0 {White does not worry about 6... exd4 7. cxd4 Qxe4 because of 8. Re1 pinning and winning the queen.} -6... d6 {Black intends to maintain his pawn on e5. If Black were to play 6... exd4 then after 6. cxd4 White's center would be overwhelming.} -7. h3 {To prevent Bg5 putting indirect pressure on d4.} -7... Nf6 -8. Re1 {Protecting the pawn.} -8... 0-0 9. Na3 {The knight is going to c4 where it will put pressure on Black's e pawn or to d5 via c2 and e3. Black cannot now play 9... exd4 10. cxd4 Nxe4 because 11. Ng5 wins the pinned knight on e4.} -9... Nd8 {To unblock the c pawn so that c6 can be used, if needed, to prevent Nd5. In an open position it would be suicidal to neglect development and move already-developed pieces. In a closed position, both sides can afford positional maneuvering.} -10. Bf1 -10... Ne8 {This allows Black to play f6 in response to 11. Nc4.} -11. Nc4 {Attacking the pawn on e5. If 11... exd4 12. cxd4 White's pawn center would cause Black serious trouble.} -11... f6 -12. a4 {Threatening a5 trapping the bishop. } -12... c6 {This gives the bishop an escape hatch, but it loses a pawn.} -13. Nxb6 -13... axb6 -14. Qb3+ {attacking the pawn on b6 and the king at the same time.} -14... Ne6 {The kinght will eventually move to f4 as part of an attack on the White king.} -15. Qxb6 -15... g5 {WIth the center securely closed, Black begins a kingside attack. } -16. Bc4? {The bishop should stay on f1 to provide the king protection.} -16... h6 -17. h4 -17... Kh7 {This unpins the knight on e6 .} -18. hxg5? {White opens lines for Black's rook.} -18... hxg5 {Now the h file is open.} -19. dxe5 -19... dxe5 -20. Be3 -20... Rh8 {Placing the rook on the open file.} -21. g3 {To prevent the knight from moving to f4.} -21... Kg6 {To get out of the way of the rook.} -22. Kg2 {White plans to move his own rook to the open h file.} -22... Nf4+ $1 {Black strikes while the iron is hot!} -23. gxf4 -23... Bh3+ {If 24. Kg1 then after 24... gxf4 25. Bc5 Qg7 White's king is in a mating net.} -24. Kg3 -24... exf4+ {White cannot play 25. Kh2 because of 25... Bg4+ 26. Kg1 Bxf3 followed by 27...Rh1#.} -25. Bxf4 -25... Qd7 $1 {Threatening 26... Qg4+ 27. Kh2 Qg2#.} -26. Nh2 -26... gxf4+ -27. Kxf4 {Both kings are out in the open. But it is Black's move.} -27... Rh4+ -28. Ke3 -28... Bg2 {Threatening ...Rxe4+} -29. Nf3 -29... Rxe4+ $1 {Just when White thought his king would be safe.} -30. Kxe4 -30... Nd6+ {Attacking the bishop and the king.} -31. Kd3 -31... Qf5+ -32. Kd4 -32... Qf4+ {If 33. Kc5 then 33... Qxc4+ 34. Kxd6 Qd5+ 35. Ke7 Qf7+ 36. Kd6 Qf8+ 37. Re7 Rd8+ 38. Qxd8 (38. Ke6 Bh3#.) 38... Qxd8+ 39. Rd7 Qb8+ 40. Ke6 Bxf3 and Black should win.} -33. Kd3 -33... Qxc4+ -34. Kc2 -34... Bxf3 {Material is now equal: Black has a knight and a bishop for a rook and a pawn.} -35. b3 {This gives the White king a little air.} -35... Be4+ {Black's pieces are more active than White's.} -36. Kb2 -36... Qd3 -37. Rg1+ -37... Kf7 -38. Rac1 -38... Qd2+ {The beginning of a winning combination. If 39. Ka1 then 39... Nc4 (threatening Qb2#) 40. Qxb7+ Ke6 41. Rb1 (Not 41. bxc4 Rxa4#.) 41... Qxc3+ 42. Ka2 Rxa4+ 43. bxa4 Qa3#.} -39. Ka3 -39... Nc4+ {White must capture or lose his queen.} -40. bxc4 -40... Rxa4+ -41. Kxa4 -41... Qa2+ -42. Kb4 -42... Qb2+ {If 43. Ka5 then 43... Qa3#. If 43. Kc5 then 43... Qxf2+ wins the queen.} -0-1 - -[Event "?"] -[White "Tarrasch"] -[Black "Schlecter"] -[Date "1894.??.??"] -[Result "1-0"] - -{Ruy Lopez, 36 moves. Tarrasch gains an advantage in the center and gradually builds up his position. When all his pieces are in their proper positions, he begins an unstoppable kingside attack.} -1. e4 {Controlling the center and opening lines for the bishop on f1.} -1... e5 -2. Nf3 {Developing and attacking the pawn.} -2... Nc6 {Guarding the pawn.} -3. Bb5 {The Ruy Lopez. The bishop attacks the the piece guarding the pawn. However, 4. Bxc6 dxc6 5. Nxe5 is not yet a threat because Black can answer with 5... Qd4 attacking the knight and the e pawn.} -3... d6 {This is called the Steinitz defense. It is sound but leads to a cramped position.} -4. d4 {Seizing the center and threatening to win a pawn by 5. Bxc6+ bxc6 7. dxe5 dxe5 8. Qxd8+ Kxd8 9. Nxe5} -4... Bd7 {Now if White plays 5. Bxc6 Black answers with 5... Bxc6 and the bishop is attacking the pawn on e4.} -5. Nc3 {Developing and protecting the center.} -5... Nf6 {Developing and attacking White's center.} -6. 0-0 {Moving the king to safety and bringing the rook into the game.} -6... Be7 {Developing and preparing to castle.} -7. Re1 {Now if 7... 0-0 then 8. Bxc6 Bxc6 9. dxe5 dxe5 10. Qxd8+ Raxd8 11. Nxe5 Bxe4 12. Nxe4 Nxe4 13. Nd3 (If 13. Rxe4 then 13... Rd8+ and mate next move) 13... f5 14. f3 and White wins a piece.} -7... Nxd4 {An alternative was 7... exd4 Black's move results in the exchange of pieces, which is good for the defending side. On the other hand, White ends up with a powerfully placed queen on d4. } -8. Nxd4 -8... exd4 -9. Bxd7+ -9... Qxd7 {Much better was 9... Nxd7. Black's pieces would then have had much more freedom of movement. The bishop on e7 could have gone to f6 and a rook could have been placed on e8 exerting pressure on the center.} -10. Qxd4 {White now has a clear advantage in space because the pawn on e4 controls more space than the pawn on d6 and because of the powerfully placed queen.} -10... 0-0 -11. b3 {The bishop on the a1-h8 diagonal will menace the Black king.} -11... Rfe8 {Placing the rook on the half-open file and leaving f8 open for the bishop where it will help guard g7.} -12. Bb2 -12... Bf8 -13. Rad1 {Developing the rook to the center. 14. e5 is now threatened becuase 14... dxe5 would be met by 15. Qxd7 Nxd7 16. Rxd7. If 14... Rxe5 then the same thing would happen after 15. Rxe5.} -13... Qc6 -14. Rd3 {The rook can attack Black's kingside and protect the pawn on e4 if necessary.} -14... Re6 {Black's plan is to put pressure on White's e pawn and eventually free himself with f5 or d5.} -15. Rde3 -15... Rae8 -16. h3 {To prevent ...Ng4} -16... Qb6 -17. Qd3 {The side with the advantage in space should generally avoid exchanges. Often, when the queens are exchanged, there is no attack left.} -17... c6 {Planning the freeing move: 18... d5.} -18. Na4 {White has found a way to prevent the freeing move.} -18... Qc7 -19. c4 -19... Nd7 {To allow ...f6 blocking the a1-h8 diagonal.} -20. Kh1 {White forsees that Black will play f6 and is preparing an eventual Rg1 followed by g4 and then g5 attacking the pawn on f6.} -20... f6 -21. Qc2 {White plans to bring the knight on a4 back to c3 but doesn't want Black to be able to attack the queen with ... Nc5.} -21... Ne5 {The knight is on its way to f7 to help defend the king.} -22. Nc3 {The knight is on its way to f5. Knights work most effectively at close range. Bishops work best at a distance.} -22... Nf7 -23. g4 {White cannot play Ne2 immediately because Black would answer with f5.} -23... Qa5 {So that 24. Ne2 would be met with 24... Qxe1+.} -24. Rd1 -24... Qb6 -25. h4 {White is justified attacking with pawns on the kingside as long as Black is unable to open up the center by exchanging pawns.} -25... Ne5 -26. Rg3 {Once the pawn on g4 is exchanged for the pawn of f6, this rook will be very threatening to the Black king.} -26... Nf7 -27. f3 {Freeing the knight of the responsibility of guarding the pawn on e4 } -27... Nh8 -28. Ne2 {The knight continues on its journey to f5.} -28... Qc7 {Bringing the queen back to help defend the king.} -29. Rdg1 {There is a lot of power ready to be unleashed against the Black king.} -29... Qf7 -30. Nd4 -30... R6e7 -31. g5 {White's attack has reached it climax and Black is defenseless.} -31... fxg5 -32. Rxg5 -32... g6 -33. Nf5 {All White's pieces are cooperating in the attack.} -33... Re5 -34. f4 $1 {If 34... Rxe4 then 35. Qc3 threatening 36. Qxh8#. Black would have nothing better than 35... Bg7 which loses to Nxg7. } -34... Rxf5 -35. exf5 -35... Bg7 -36. fxg6 {If 36... hxg6 then 37. Bxg7 37... Kxg7 (Not 37... Qxg7 38. Rxg6 Nxg6 39. Rxg6 winning the queen.) and White can play either 38. f5 or 38. h5 with an overwhelming position} -1-0 - -[Event "?"] -[Site "New York"] -[Date "1857"] -[White " Marache "] -[Black " Morphy "] -[Result "0-1"] - -1. e4 e5 -2. Nf3 Nc6 -3. Bc4 Bc5 -4. b4 {The Evans Gambit. White gives up a pawn in -order to gain time to play c3 attacking the bishop -and then d4 forming a strong pawn center.} -4... Bxb4 {Bb6 declining the pawn is also perfectly -playable.} -5. c3 Ba5 -6. d4 exd4 -7. e5? {A mistake which allows black to get in 7...d5 -opening the diagonal of his queen bishop and gaining -time attacking White's king bishop. 7. 0-0 is -correct.. then Black if he wishes can take yet -another pawn with 7...dxc3 but this variation which -is called the "Compromised Defense" does not have -it's name for nothing!} -7... d5 -8. exd6 {Black has no reason to fear the opening of -the king file for after 8...Qxd6 he will be as well -developed as White. It is when you are behind in -developement that you must be wary of the game -becoming more open.} -8... Qxd6 -9. 0-0 Nge7 {Developing his knight. He does not -place it on f6 for then White could check on the -king file.} -10. Ng5? {A premature attack. White has nothing -better than Ba3 followed by 11. cxd4 when he does -not have sufficient compensation for his pawn minus.} -10... 0-0 -11. Bd3 Bf5 $1 {A good exchange sacrifice. 11...h6 was -also an adequate defense.} -12. Bxf5 Nxf5 -13. Ba3 Qg6 -14. Bxf8 Qxg5 {Now White's kingside has no pieces to -defend it.} -15. Ba3 dxc3 {Picking up another pawn and making it -difficult for White to develop his knight.} -16. Bc1 {Bringing the bishop to the defense of his -king and vacating a3 for his knight.} -16... Qg6 -17. Bf4 Rd8 -18. Qc2 Ncd4 -19. Qe4 ({Leads to a beautiful finish. The variations -that follow after} 19. Qa4 {are also pretty.} 19...b5 $1 - 20. Qxa5 Ne2+ 21. Kh1 Nxf4 22. Rg1 (22. g3 -Qc6+ 23. f3 Qxf3+ $1 24. Rxf3 Rd1+ 25. Rf1 -Rxf1#) - 22...Rd1 23. g3 (23. g1xd1 Qxg2#) 23...Qc6+ -24. f3 Qxf3#) -19...Ng3 $1 {White resigns If 20. Qxg6 Nde2#).} -0-1 - -[Event " World Championship"] -[Site "London"] -[Date "1866"] -[White " Steinitz "] -[Black " Anderssen "] -[Result "0-1"] - -1. e4 e5 -2. f4 exf4 -3. Nf3 g5 -4. Bc4 g4 -5. Ne5 {The Salvio Gambit} -5... Qh4+ -6. Kf1 Nh6 {Guarding his f7 and developing his knight. - Later 6...Nc6 was shown to refute the Salvio. A -long analysis begins with 7. Nxf7 Bc5 8. Qe1 g3 -9. Nxh8 Bf2.} -7. d4 {Taking possession of d4 protecting his knight -thus making it more secure and opening the line of -his queen bishop.} -7... d6 {Developing with a tempo.} -8. Nd3 {The only move.} -8... f3 {This pawn was doubly threatened.} -9. g3 {9. g2xg3? would expose White's king too much -after 9...gxf3 followed by Bh3+.} -9... Qe7 {If Qh3+? 10. Ke1 Qg2? 11. Nf2 and the -Queen is trapped.} -10. Nc3 {Developing and guarding the king pawn.} -10... Be6 {Developing and offering the exchange of -bishops. After 11. Bxe6 fxe6 White's queen knight -would no longer exert pressure on his d5. 11. Bb3 -is best now.} -11. d5 $6 {The prelude to an enterprising knight -sacrifice which Anderssen however with ingenious -play refutes. } -11... Bd7 -12. e5 {Without this follow up White's last move -would simply be bad for it blocks his king bishop -diagonal denies his knight d5 and leaves his e5 and -d4 squares weak. } -12... dxe5 -13. Nxe5 Qxe5 -14. Bf4 {Bringing the bishop to this active position -with tempo the beginning of the attack.} -14... Qg7 $1 {14...Qh5 planning Qh3+ might look better -in view of White's dangerous looking reply but Black -is ready for it. After 14...Qh5 15. Qd4 the -position becomes wild.} -15. Nb5 {Threatening Nxc7+ winning the rook. If -15...Bxb5 16. Bxb5+ Nd7 17. Bxc7 White's bishops -are dangerous if 15...Na6 16.Qe1+ Kd8 17. d6 -with a powerful attack.} -15... Bd6 $1 {With this clever move Black offers the -exchange after 16. Bxd6 cxd6 17. Nc7+ Kd8 18. -Nxa8 Nf5 the advantage would be Black's. His pieces -are active while White's knight is useless at a8.} -16. Qe1+ {Preventing Black from castling and preparing -to bring the Queen to the attack.} -16... Kd8 -17. Bxd6 {Part of the same attacking plan begun with -his last move.} -17... cxd6 -18. Qb4 {Threatening 19. Nxd6 with enormous -pressure..18...Bxb5 would give up a vital defensive -piece.} -18... Nf5 {Guarding the queen pawn. 19. Nxd6 would -accomplish nothing now Black would simply exchange -knights.} -19. Bd3 {Threatening 20. Bxf5 followed by 21. Nxd6.} -19... Na6 {With this and his succeeding move Black -blocks White's queen off from the diagonal on which -it threatens his queen pawn.} -20. Qa3 Nc5 -21. Bxf5 {Expecting of course 21...Bxf5 after which -he would play 22. Nxd6. White would then win his -piece back for Black's bishop and knight would be -threatened simultaneously. It would then be anybody's - game.} -21... Qh6 $3 {What a shock this must have been to -White! Black now threatens Qd2 which would force -mate. From this square Black threatens Qe2+ 23. -Kg1 Qg2#. White could not defend with Rg1 or Re1 -for Black would mate on e2 in the first case and g2 -in the second.} -22. Bd3 {The only move. If 22. Re1 Qh3+ and Qg2#. -If 22. Rg1 Qh3+ 23. Ke1 Re8+ 24. Kd1 Qxh2 wins. - If then 25. Re1 Rxe1+ 26. Kxe1 Qe2#.} -22... Re8 {Threatening Qh3+ and Qg2#. White's reply -is forced.} -23. h4 Qd2 {Threatening Qg2#.} -24. Rg1 Re2 $1 {White resigns as mate is unavoidable. -A most entertaining finish.} -0-1 - -[Event " World Championship (17)"] -[Site "London"] -[Date "1834"] -[White " La Bourdonnais "] -[Black " McDonnell "] -[Result "1-0"] - -1. d4 d5 -2. c4 dxc4 -3. e3 e5 -4. Bxc4 exd4 -5. exd4 {White has an isolated queen pawn but -dynamic attacking possibilities as compensation. The -position is equal.} -5... Nf6 -6. Nc3 Be7 -7. Nf3 0-0 {Both sides have been developing.} -8. Be3 c6 {Taking possession of the central square -d5 and planning to plant a knight there.} -9. h3 {To prevent black from playing Bg4 which would -be an annoying pin and put indirect pressure on -White's isolated Queen pawn.} -9... Nd7 -10. Bb3 Nb6 -11. 0-0 Nfd5 {It is better to put the other knight -here and leave the King knight to defend the -kingside.} -12. a4 {A move that loses more than it gains. It -threatens to dislodge Black's knight by a5 and -forces Black to play a5 loosening his knight on b6. - But this is less serious than the weakening of -White's b4.} -12... a5 -13. Ne5 {This powerful outpost is typical of the -dynamic possibilities made possible by an isolated -Queen pawn.} -13... Be6 -14. Bc2 {Aiming at Black's kingside.} -14... f5? {This denies Black the option of ever -driving away White's knight with f6 and loosens his -bishop on e6. The move is aggressive in character -but in this position it is White who has the attacking - chances.} -15. Qe2 {Developing the Queen.} -15... f4? {Black continues his misguided attacking -attempt while reopening White's King bishop -diagonal. Overestimation of the attack was very -common in nineteenth century chess.} -16. Bd2 {Now White is threatening to win a pawn with -17. Nxc6} -16... Qe8 -17. Rae1 {It is not clear why White does not develop -his King rook to this square instead. According to -International Mast Jack Peters La Bourdonnais had a -strange liking for boxing in his King rook!} -17... Bf7 {Black hopes to continue his attack with -18...Bh5 at the same time this move involves a trap -which White deliberately falls into.} -18. Qe4 {Threatening 19. Qxh7# Black's reply is -forced for 18...Bg6? loses his pawn.} -18... g6 -19. Bxf4 $1 Nxf4 -20. Qxf4 Bc4 {Wins the exchange but...} -21. Qh6 Bxf1 -22. Bxg6 {Very elegant.} -22... hxg6 -23. Nxg6 {White menaces Black's King bishop and so -gains time to play 24. Qh8+ and drive the Black King -to its doom.} -23... Nc8 ({Black could have prolonged the game with} -23...Bf6 24. Rxe8 Rfxe8 25. Kxf1 Bxd4) -24. Qh8+ Kf7 -25. Qh7+ Kf6 -26. Nf4 {Threatening 27. Ne4#.} -26... Bd3 -27. Re6+ Kg5 -28. Qh6+ Kf5 -29. Re5# - -[Event " World Championship (4)"] -[Site "Havana"] -[Date "1892"] -[White "Steinitz"] -[Black "Tchigorin"] -[Result "1-0"] - -1. e4 e5 -2. Nf3 Nc6 -3. Bb5 Nf6 -4. d3 {This solid variation was a favorite of -Steinitz.} -4... d6 -5. c3 {Guards his d4 against a knight invasion -prepares for d4 if convenient and secures a retreat -for the king bishop at c2 so that Black can not -exchange it for his queen knight or queen bishop.} -5... g6 {The fianchetto of the king bishop is a sound -procedure. Also good was 5...a6 (to be able to drive -the bishop away with b5 when desirable.) 6. Ba4 Be7 -followed by 0-0.} -6. Nbd2 {A quite satisfactory developement for the -knight which is why it does not matter that it is -deprived of c3. There is nothing wrong with the -temporary blocking of the queen bishop for the Lopez -is a positional opening in which events develop -slowly. But 6. Bg5 or 6. 0-0 followed by 7. Bg5 is -also good.} -6...Bg7 -7. Nf1 {To maneuver the knight to e3 putting pressure -on Black's d5 and f5. This procedure was originated -by Steinitz in one of the games of his match with -Blackburne in 1876. Later it became standard in many -variations of the Lopez. Also very good was first 0-0 -and then Re1 followed by Nf1. But Steinitz was fond -of delaying castling when such a strategy was -playable In this way he kept open the option of -castling on the queenside.} -7... 0-0 -8. Ba4 {There is a good point to this seeming waste of -time. White plans to respond with Qe2 if Black should -play d5 guarding his king pawn and preventing the -exchange of queens. If Black should then play Bd7 -White wants to have a retreat for his king bishop at -c2 so that Black cannot force its exchange with -Nd4.} -8... Nd7 {This would be a good move if Black planned -to follow it up with Nb6 and d5 advancing in the -center. However Black played it with the idea of -continuing in this way; Nc5 Ne6 (The knight will be -loose on c5 after Black plays d5.) Ne7 and finally -d5. An awfully slow plan! Black had two good -alternatives; 8...a6 followed by b5 and d5 (or Na5 -followed by c5 putting pressure on Whites d4 if White -plays Bb3 instead of of Bc2 and 8...d5 at once. -Indeed there is a certain logic to the latter move; -White has lost a tempo with 8. Ba4 so Black can -afford to lose one by moving his queen pawn twice.} -9. Ne3 Nc5? -10. Bc2 Ne6 -11. h4 {Starting an attack against Black's king. -White plans to play h5 and hxg6 opening his rook -file. By playing this move White has definitely -committed himself to queenside castling for his -kingside will be too exposed for him to castle -there.} -11... Ne7 -(11...h6 12. h5 g5 13. Nf5 ) -(11... f5 12. exf5 gxf5 13. d4 $1 exd4 14. Nxf5 dxc3 -15. Nxg7 {eliminating -black's most important defensive piece.} 15...cxb2 -16. Bxb2 Nxg7 {and the exposed position of Black's -king especially his vulnerable dark squares mean a -lost game.}) -12. h5 d5 -13. hxg6 fxg6? {Much better was 13...hxg6 -after which Black's game might still be tenable. The -text move it is true opens Black's king bishop -file but he can make little use of it while there is -now a terrible weakness along Black's g8-a2 diagonal. - The way in which White takes advantage of this -weakness is most instructive.} -14. exd5 $1 {Surprising at first glance for White -eliminates his strong center pawn and is left with a -backward pawn on d3.} -14... Nxd5 -15. Nxd5 {The next step in White's plan.} -15... Qxd5 -16. Bb3 {Now we can see the point of White's last -two moves. this bishop bears down on Black's weak -diagonal.} -16... Qc6 -17. Qe2 {Developing the queen and clearing the first -rank for queenside castling.} -17... Bd7 {Developing the bishop.} -18. Be3 {White plans to get in d4 after he castles -which will get rid of his backward queen pawn and -give him access to the a1-h8 diagonal in addition to -the one he already possesses.} -18... Kh8 {Getting off the bishop's diagonal.} -19. 0-0-0 Rae8 {Developing the rook on the same file -as White's queen.} -20. Qf1 {It is necessary to remove the queen from the -indirect threat of Black's rook. At the same time -this move prepares a brilliant combination. -Precisely because this move is so necessary it had -the psychological advantage of not arousing black's -suspicion.} -20... a5 {Black hopes to start a counter attack with -a4 and a3. If he had seen what was coming he -probably would have avoided it with 20...Rf5 or Nf4.} -21. d4 exd4 {Forced if 21...e4? 22. d5 followed by -23. dxe6 attacking black's bishop.} -22. Nxd4 Bxd4 -( 22...Nxd4 23. Rxh7+ Kxh7 24. -Qh1+ {forces mate.}) -( 22...Qa6 23. Bc4 Qa8 {takes Black's queen out of -the game. }) -( 22...Qe4 23. Bc2 Qg4 (23...Qe5 -24. Bxg6) 24. f3 Qg3 25. Nf5 gxf5 26. Rxd7 -{with a crushing position.}) -23. Rxd4 $1 {A surprising move and the move that -follows is still more suprising!} -23... Nxd4 -24. Rxh7+ $3 {Leading to a swift and very colorful -conclusion.} -24... Kxh7 -25. Qh1+ Kg7 -26. Bh6+ Kf6 (26...Kh8 27. Bxf8+ {and mate the -next move.}) -27. Qh4+ Ke5 -28. Qxd4+ {Black resigns - If 28...Kf5 29. Qf4#} -1-0 - -[Event "World Championship (1)"] -[Site "New York"] -[Date "1907"] -[White "Marshall"] -[Black "Lasker"] -[Result "0-1"] - -1. e4 e5 -2. Nf3 Nc6 -3. Bb5 Nf6 -4. d4 {This move is objectively much less strong than -4. 0-0, but it leads to the type of open game that -Marshall loved.} -4.. exd4 -5. 0-0 Be7 {Developing the bishop and preparing to -castle. 5.. Nxe5 would lead to a disadvantage after -6. Re1, d5 7. Nxd4.} -6. e5 {This pawn on the fifth rank cramps Black's king -position . On the other hand, Black may be able to -play f6 at some time and open a file for his rook. -In some circumstances, the advanced pawn may even -become weak and subject to attack. Unlike any other -chess piece, a pawn can not move backwards!} -6.. Ne4 {There is no other square on the which this -knight could find security. At e5, it can be -protected by d4, and if White takes it e.p. d6, the -knight can recapture.} -7. Nxd4 {Regaining the pawn.} -7.. 0-0 {Continuing his developement. 7..Nxe5?? would -lose a piece after 8. Re1, f5 9. f3.} -8. Nf5 {To exchange this knight for Black's king -bishop, which would give White the two bishops and -leave Black slightly vulnerable on the dark squares.} -8.. d5 {This developing move protects his knight on -e5, and opens the diagonal of his queen bishop, which -now threatens White's knight.} -9. Bxc6 {The move that had usually been played here -was 9. Nxe7+, and this is probably best. After the -following exchanges, a position arises in which Black -has an advantage in developement, and also pressure -against White's king pawn. The situation is by no -means one sided, however; Black has some -vulnerability on the dark squares and his broken up -pawns on the queen side are weak.} -9.. bxc6 -10. Nxe7+ Qxe7 -11. Re1 {This move which indirectly protects the king -pawn, is forced. If 11. Bf4?, f6 12. f6, Rxf6 and -White already behind in developement, must lose more -time. If f3??, Qc5+ 12. Kh1, Nf2+ wins the exchange. - If Black now plays 11. Qxe5??, 12. f3 wins a piece.} -11.. Qh4 {This move is sometimes used as an example of -Lasker's well known skill in applying the -psychological element to chess. The objectively best -move here is 11..f6, which would open the king bishop -file and allow Black to make use of his more active -pieces. However, Lasker feels that for this -particular opponent it will be psychologically more -difficult if he plays more aggressively and goes over -to the attack. The reason? Marshall was a player -who always strove for the initiative, and he was one -of the greatest attacking and combinative players of -all time. The defense was an uncomfortable and -unfamiliar role for him.} -12. Be3 {Guarding his threatened f2. If 12. f3 at -once was probably also good.} -12.. f6 -13. f3 {To drive the knight away from the attack.} -13.. fxe5 $5 {An elegant and most surprising sacrifice.} -14. fxe4 d4 -15. g3? -(15. Bc1, Qf2+ 16. Kh1, Bg4 17. Qd2, -Qf1+ 18.Rxf1, Rxf1#) -( 15. Bd2, Bg4 16. Qc1, Rf2 -{and there is no defense to the threat of Rxg2+, -Kxg2, Bh3+, Kh1, Qf2 or Kg3, Qg4+ and mate next -move!}) -({-White should have played} 15. Qe2 dxe3 16. -Qxe3 { Black's pieces would still be more active, but -the position has been considerably simplified and -Black's horrible pawn position probably gives White a - slight edge.}) -15.. Qf6 -16. Bxd4 -(16. Bc1, Qf2+ 17. Kh1, Bg4 {wins the -exchange, for the threat of Bf3# forces White to -play} 18. Qxg4, Qxe1+) -(16. Bd2 Qf2+ - 17. Kh1 Bh3 18. Rg1 h5 $3 {The threat is now Bg4 -followed by Bf3+ and mate next move} 19. Na3 $1 (19. Qxh5 -Qxg1+ 20. Kxg1 Rf1# {a very pretty variation!}) - {But -is this the end of the story? Some annotators, -including Richard Reti in his famous book Masters of -the Chessboard, have thought so, but this is not the -case. Let this be a lesson; take no opinion as -gospel, even if it is expressed by a well known -Grandmaster! Tarasch carries out the above analysis -a move further; White has 19. Na3! Then after} -19..Bg4 20. Rf1 Bxd1 21. Rxf2 Rxf2 22. Rxd1 -Re2 23. Ba5 {Black has a rook and pawn for two -pieces, and the game would probably be a draw!}) -16.. exd4 -17. Rf1 {Black's attack is to strong for White to -avoid simplification.} -17.. Qxf1+ -18. Qxf1 Rxf1+ -19. Kxf1 {Black appears to have only a shade of -advantage in this ending. His bishop is better than -White's knight and his pieces will come into action -faster than White's. But as usual, his weak queenside -pawns affect the picture. Once White plays his -knight to b3, they will be under considerable -pressure. Now, however, Lasker with an almost -magical charm finds away to obtain a decisive -advantage.} -19.. Rb8 $1 {Instead of giving a bishop check on a6 or -h3, Black plays this surprising but far stronger -move. By forcing White's reply, Black denies White's -knight the crucial b3 square.} -20. b3 Rb5 $3 {Still leaving his bishop at home, -Black moves his rook to an active position on the -fourth rank. To his frustration, White now finds -that he can not develop his knight. If 21. Nd2, Rh5 -22. Kg1 Rc5 23. Rc1. (If 23. Nc4, Bh3. ) -23..Ba6 threatening Bd3, and White is helpless. To -avoid this, White is forced to advance his bishop pawn -to the forth rank, which will give Black a passed -queen pawn.} -21. c4 Rh5 {Forces White to take a move to protect -his queen rook pawn, thereby giving White no time to -play b4 to stop Black from playing c5.} -22. Kg1 c5 {Now it is a protected passed pawn.} -23. Nd2 Kf7 {If Black delayed developing his king, -White would play 24. Rf1 and temporarily keep it out -of the game.} -24. Rf1+? {Whites only chance was 24. a3, attempting -25. b4 to eliminate the protector of Black's passed -pawn.} -24.. Ke7 -25. a3 {To late!} -25.. Rh6 {The fourth rank now occupied by his bishop -pawn, Black places his rook on the third rank, which -by reason of the removal of this same pawn is now the -most active rank.} -26. h4 {So that his king will not be tied down to the -defense of this pawn. If 26. b4, Ra6 when 27. Ra1 -can be answered by 27..b4 and White's rook pawn is -pinned.} -26.. Ra6 {Forcing White either to tie his rook down to -this pawn's defence, or play a4 and renounce the -possibility of b4 forever.} -27. Ra1 Bg4 {Finally developing the bishop.} -28. Kf2 Ke6 {Bringing his king forward to help his -passed pawn.} -29. a4 {There is nothing better. If 29. Nf3 to -prevent Black's king from reaching e5, then 29..Bxf3 -30. Kxf3 Ke5 followed by Rf6+ wins the king pawn. -White, of course can not play Re1 without losing his -queen rook pawn.} -29.. Ke5 -30. Kg2 Rf6 {Now that he need not worry about b4 by -White, Black brings his rook to the open file.} -31. Re1 d3 {With the Black king so close for -protection, this pawn can safely advance.} -32. Rf1 Kd4 {If now 33. Nf3+, Bxf3+ {{Not 33.. -Kxe4??, 34. Re1+, Kf5 35. Re5+, Kg6 36. Rg5+ and -White wins the bishop! (Or 33.. Ke3?? 34. Re1#!) -34. Rxf3 d2 {and this pawn can not be stopped from -queening.} -33. Rxf6 gxf6 -34. Kf2 {At the moment, Whites K pawn is protected by -his knight, and his king keeps Black's king from -invading. But one of these pieces has no move! -Black's next two moves mark time, so that White -exhausts his reserve of pawn moves.} -34.. c6 -35. a5 a6 -36. Nf1 Kxe4 -37. Ke1 Be2 -38. Nd2+ Ke3 -39. Nb1 f5 {So that White can not check on e4 after -Black's capture of White's king knight pawn.} -40. Nd2 h5 -41. Nb1 Kf3 -42. Nc3 Kxg3 -43. Na4 f4 -44. Nxc5 f3 -45. Ne4+ Kf4 -46. Nd6 c5 {If now 47. Nb7 or any other knight move, -47.. Ke3 followed by mate with either pawn.} -47. b4 cxb4 -48. c5 b3 -49. Nc4 Kg3 -50. Ne3 b2 -0-1 - diff --git a/data/games/variations-nags-and-comments.pgn b/data/games/variations-nags-and-comments.pgn deleted file mode 100644 index 3a8a31b44..000000000 --- a/data/games/variations-nags-and-comments.pgn +++ /dev/null @@ -1,14 +0,0 @@ -[Event "?"] -[Site "?"] -[Date "????.??.??"] -[Round "?"] -[White "?"] -[Black "?"] -[Result "*"] - -{ Main opening: } 1. e4 c5 { Sicilian} ( { Scandinavian defense: } 1... d5 ) ( -1... h5 $2 { is nonesense} ) ( 1... e5 2. Qf3 $2 Bc5 3. Bc4 Nc6 $4 { falls for -mate} 4. Ne2 $4 { throws the mate away} ( 4. Qxf7# { would have been mate} ) -) 2. Nf3 g6 { is the accelerated dragon} 3. d4 cxd4 4. Qxd4 Nf6 5. Ba6 $4 { -loses the bishop} 5... bxa6 $16 6. O-O Nxe4 $2 7. Qxe4 $10 * - diff --git a/data/gaviota/MD5SUMS.txt b/data/gaviota/MD5SUMS.txt new file mode 100644 index 000000000..82cd01d61 --- /dev/null +++ b/data/gaviota/MD5SUMS.txt @@ -0,0 +1,145 @@ +a8f890093de502c3e136e73780356f59 kbbbk.gtb.cp4 +04bffa7e7414ae8d96b3a727ed5fe050 kbbkb.gtb.cp4 +4fcdcf8aeae40ed340524d3064db8f00 kbbk.gtb.cp4 +9b82696889d0144ed16975d4ae026fc9 kbbkn.gtb.cp4 +c69782fdcd8e206d47d4e76479342c93 kbbkp.gtb.cp4 +76bacddb2b06151ee853b7067b8de78f kbbkq.gtb.cp4 +d79daa3ab2c49b5f9bab0e9cb4293852 kbbkr.gtb.cp4 +6eb1d11108f2574fe8e6e3ff5436b717 kbbnk.gtb.cp4 +a94e07a402110066c29cfd4e5bbfe582 kbbpk.gtb.cp4 +ba458a182dab40ebe55b603436b2df6c kbkb.gtb.cp4 +d7a5b1b3ead671273ed96b41e0616510 kbk.gtb.cp4 +ab567cdcd5db194dc359a758b788de59 kbkn.gtb.cp4 +6faa8559ec6d859d11fd1b910670baf2 kbkp.gtb.cp4 +66142fc0b46b7940fc09df0997735eac kbnkb.gtb.cp4 +a8535ea4eaf24da8f39269405176c20d kbnk.gtb.cp4 +a4b4d2cc7428fc48fda81f8e55727802 kbnkn.gtb.cp4 +74b529ca7d73186ce6414ec3f026f18a kbnkp.gtb.cp4 +4a830baf7a59fa61ef14d22a7610f238 kbnkq.gtb.cp4 +dded1b638084872a87a0dad7ac13c744 kbnkr.gtb.cp4 +140f5d3b5b0bfa8bb81344a8616f1884 kbnnk.gtb.cp4 +62bc5067166360a75b6e8eca2264ebaf kbnpk.gtb.cp4 +3a1aae1fcd1cdb6ccad5e85a3c5a258a kbpkb.gtb.cp4 +15bf2c4eda7ce13f365ffcc415f43755 kbpk.gtb.cp4 +28c023da2920a6fae7fb1072d4ba2efc kbpkn.gtb.cp4 +acbfd3cbd7e1c599ad66536230471146 kbpkp.gtb.cp4 +77b78d4e0f3733971356ee327c8a11cd kbpkq.gtb.cp4 +2528ea44f6c998b766360b2419cb3bf5 kbpkr.gtb.cp4 +984b96cffc7abaf0652e56385b24bec1 kbppk.gtb.cp4 +5b56485e4c99f2d91172d4676a0de939 knk.gtb.cp4 +6dad70682e806c4b8857126fd0c00ef6 knkn.gtb.cp4 +5c6386b80580d428db86ac6660af0407 knkp.gtb.cp4 +d0ac83502ff3177704b49a14f05aae21 knnkb.gtb.cp4 +0c098f3f87e951148347ab05ba3f83ad knnk.gtb.cp4 +0fc7014da6ebb46639d73fa0c7019b25 knnkn.gtb.cp4 +5768291aec98fa3e5101ee8cdb840207 knnkp.gtb.cp4 +8680eeb6319ad7ad5ed64df0a5bede06 knnkq.gtb.cp4 +af8646512e16feb9fff32a0a974df267 knnkr.gtb.cp4 +18f41848a10dd0a29dd654f52f4bef1e knnnk.gtb.cp4 +97c84fed8d00a997d64283ab28a71eb9 knnpk.gtb.cp4 +39923cb8966170e600e57280f91bb2a2 knpkb.gtb.cp4 +181a3ea0ee0c9fff38074fa5c5c116d1 knpk.gtb.cp4 +6c7eda069bbc38cc8e52fc88fac46eb6 knpkn.gtb.cp4 +34fbb37b8d058e5b5cef3633009230fb knpkp.gtb.cp4 +58a30bb06cbb9ed62cc291cf512a1a36 knpkq.gtb.cp4 +2b51af797ecff8089fe88db53ceb2a23 knpkr.gtb.cp4 +4a88a971f2a15bb593a7161ef9d45649 knppk.gtb.cp4 +ecaa0490d03cc256b5183eddee44d035 kpk.gtb.cp4 +ce6140faf1be7b9a3f0b4f2bcc865cba kpkp.gtb.cp4 +9165a27cd193f45c7220d6a6b958b77d kppkb.gtb.cp4 +6394960362d45f3890966908faff8e08 kppk.gtb.cp4 +999d73c6ae63d1b9af9a502d6d4bdd75 kppkn.gtb.cp4 +a305cf31262bb8fe0c16c7a08a12e02c kppkp.gtb.cp4 +a3b310ca7ad2832d514397d7f555f5b0 kppkq.gtb.cp4 +65af4818e2900e9d71e3826a63b64690 kppkr.gtb.cp4 +482f44afc2f79e9a5fad4b4999f5ebb8 kpppk.gtb.cp4 +531ba8063886d60060f2109a651b9184 kqbbk.gtb.cp4 +6da22d75bfd0ea65158c92df4f91fbfd kqbkb.gtb.cp4 +4f2ce5825092badb27ac9f043618a757 kqbk.gtb.cp4 +c02c88aba3965c599c46fdc8b17083b4 kqbkn.gtb.cp4 +b1fbf3ef4b29228169b607a80ebb3c40 kqbkp.gtb.cp4 +2d9aa0de54333b7420e57caf304b090b kqbkq.gtb.cp4 +183cd91d512cd3f3b2c2fb02b87db5d1 kqbkr.gtb.cp4 +92618cb777f11d0852fd929f11b6aefb kqbnk.gtb.cp4 +c35ff872e9a96a1a16e9439cd4654309 kqbpk.gtb.cp4 +ca66e0dde89d878ae4e169c7d215f394 kqkb.gtb.cp4 +c80c5b3e32f601dfaa7f3f6b6a431ef7 kqk.gtb.cp4 +c2595ff5cbecce1da16a74ab6320a41f kqkn.gtb.cp4 +3f67e8e868da5e5d041149409ec68dda kqkp.gtb.cp4 +43d12fb52c7290b50a3291563f91c85b kqkq.gtb.cp4 +d0280706e743b4321aa5d17fc2b559e0 kqkr.gtb.cp4 +bd6afd6c2ffb765bf71ec92df4b54c78 kqnkb.gtb.cp4 +0f10dda2145623eedfb8448db0d142fd kqnk.gtb.cp4 +a3caf7f1eb2a2a1298e7defcd437dea9 kqnkn.gtb.cp4 +ec32dfa1fc5219e55cb7effa0a5780e5 kqnkp.gtb.cp4 +ccc3ff0a7f1de7f874e07c99de7eef25 kqnkq.gtb.cp4 +cc12538e4ff9e6243ab136144a8c9f52 kqnkr.gtb.cp4 +0d7d0ac820bcf5b726ddf25bcd4fdb29 kqnnk.gtb.cp4 +5424c1c560928cdffde9b9a9c04b794a kqnpk.gtb.cp4 +2c63aefb98b74d76e63b136b18359ef5 kqpkb.gtb.cp4 +4b3bca9064e50169830cd6df4140cc31 kqpk.gtb.cp4 +67e29251acef7501ec9aa3586ac849cb kqpkn.gtb.cp4 +210823e26ad07483bbd8313cb9d9226f kqpkp.gtb.cp4 +89a58dbed5a816bf95c43acafbd8d0cf kqpkq.gtb.cp4 +5e972e913ad9a9fd174c182055db3436 kqpkr.gtb.cp4 +72cfe4cf6b15098b9398e7cb86b0c622 kqppk.gtb.cp4 +0414d5ab06526ae141c0d3f6338e0412 kqqbk.gtb.cp4 +f236d8782ab4492264026acbd006218c kqqkb.gtb.cp4 +40cd9c8dbdc7a214c72f4d92d62ca293 kqqk.gtb.cp4 +b37688f6deaa0a333616ffdd9b886453 kqqkn.gtb.cp4 +d4bb160dc4aeaeec2e1953bd81b66cac kqqkp.gtb.cp4 +6df046cef68f3dd1cbcd822cf2dfb626 kqqkq.gtb.cp4 +80e306b557a9cc7af05495a151642a00 kqqkr.gtb.cp4 +785e8e5895856144695cd6ab88e45173 kqqnk.gtb.cp4 +5dfc76bc714ab8e045ce5a6dd840ac00 kqqpk.gtb.cp4 +868a980f137122641a80b1079e2e4e8b kqqqk.gtb.cp4 +0f117c298bc47dbbb138ca89331fd9cd kqqrk.gtb.cp4 +97e1b72d3dfc22e1ae629e801b8151d1 kqrbk.gtb.cp4 +b4dcc3d37b19b8118f8450297f9e7298 kqrkb.gtb.cp4 +98a640759dc1a41442a733a408614b3d kqrk.gtb.cp4 +3fa3f1d4c6a037d89c70931c9c173d68 kqrkn.gtb.cp4 +4a2b1f72ed228f3b630e31c4bc7b865b kqrkp.gtb.cp4 +43ba93d167fa2d3fc61b3aa7f661baa2 kqrkq.gtb.cp4 +b07d79302a632706d8397f0e0ad17358 kqrkr.gtb.cp4 +60ecea32b15a8134aa3d5ae7e7fd9155 kqrnk.gtb.cp4 +78503609013afef7680aeea8ad6fffc3 kqrpk.gtb.cp4 +1caf14ef4e63f1f11d3ad640905b30e3 kqrrk.gtb.cp4 +3ada834784208fedf8d063939fc2162a krbbk.gtb.cp4 +8b7af56135ec11b7a487c3a45781e400 krbkb.gtb.cp4 +94436bdbde50a729bfdc4b0c555b461b krbk.gtb.cp4 +6dd48d2c3c8f3d2f13a1bc0edf12dbeb krbkn.gtb.cp4 +9ed81ee94967377d112a416871991e4c krbkp.gtb.cp4 +ebd0fd750340258c017c5191f3bf8e87 krbkq.gtb.cp4 +5317cab585889301053879d864222fb5 krbkr.gtb.cp4 +fc60350011c4c9401cd1009a4c57f9f7 krbnk.gtb.cp4 +b61a73019d16632a184e204c5e4c853c krbpk.gtb.cp4 +495fe78e5114fc3f71fde18c200a7cb9 krkb.gtb.cp4 +959fd626c3ef3183aa4ddeca4ecf63a6 krk.gtb.cp4 +7205930e8b753b72e8126c9ddb71ef96 krkn.gtb.cp4 +c7265398554b100b27f3073c9fa40b02 krkp.gtb.cp4 +05cb36f60da56ba5bdf199e3073b391b krkr.gtb.cp4 +902a8495997a68268ab8ff13995ca406 krnkb.gtb.cp4 +774968a2412336ff2877c7bce065eede krnk.gtb.cp4 +e082f01333a90024fc893d9a8490d46c krnkn.gtb.cp4 +1005b5b5911975b14920ea74e972fb77 krnkp.gtb.cp4 +bc045beda2fe9d76b20fab45c4dff056 krnkq.gtb.cp4 +02db6817c92183ac3946fe11df091a05 krnkr.gtb.cp4 +209fd5a5243ae7f0485a1e9fe9ede45b krnnk.gtb.cp4 +b061faf8b6a17a098f8afbba343a55ef krnpk.gtb.cp4 +657436f28c4c739b2d449e94ee388bfe krpkb.gtb.cp4 +e16129bc69cdc655c11d0d58c02461c5 krpk.gtb.cp4 +346ff695f92adae7be6d4f8baa76d799 krpkn.gtb.cp4 +5c61d50b5e4ccbfe9cf1355f53365c02 krpkp.gtb.cp4 +d674b3296276a75260d18d2f4c3eb307 krpkq.gtb.cp4 +59f3e3f392937b02c2530244944a6c25 krpkr.gtb.cp4 +59bd05f7ac4359fe8a6b239991904e43 krppk.gtb.cp4 +c157625aab03ca7b809d3188063e6aa0 krrbk.gtb.cp4 +ac98073e8646b2c756853e7c74673a1d krrkb.gtb.cp4 +9e61da42b0b345c66a71db00f15a38b8 krrk.gtb.cp4 +215cc6e989bc50a209af13a52f481a66 krrkn.gtb.cp4 +9119c5f01ebcf3f1b189f9425fca1715 krrkp.gtb.cp4 +7f78c8b41d4b5abc610a1817ced75753 krrkq.gtb.cp4 +f7fe3ec24945f940cffc7a8e7a42c0d7 krrkr.gtb.cp4 +f975b76cf64ca964346b42808cded508 krrnk.gtb.cp4 +88bba6d0554e136ce8590d6c137085e7 krrpk.gtb.cp4 +edca4203628a99fd66b90411a975447b krrrk.gtb.cp4 diff --git a/data/gaviota/SOURCE.txt b/data/gaviota/SOURCE.txt new file mode 100644 index 000000000..732ec0a1c --- /dev/null +++ b/data/gaviota/SOURCE.txt @@ -0,0 +1,145 @@ +http://www.olympuschess.com/egtb/gaviota/kbk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kpk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbbk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbnk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbpk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knnk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knpk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kpkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kppk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqbk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqkq.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqkr.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqnk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqpk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqqk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqrk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krbk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krkr.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krnk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krpk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krrk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbbbk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbbkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbbkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbbkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbbkq.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbbkr.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbbnk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbbpk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbnkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbnkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbnkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbnkq.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbnkr.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbnnk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbnpk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbpkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbpkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbpkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbpkq.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbpkr.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kbppk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knnkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knnkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knnkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knnkq.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knnkr.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knnnk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knnpk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knpkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knpkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knpkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knpkq.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knpkr.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/knppk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kppkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kppkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kppkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kppkq.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kppkr.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kpppk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqbbk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqbkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqbkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqbkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqbkq.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqbkr.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqbnk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqbpk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqnkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqnkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqnkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqnkq.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqnkr.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqnnk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqnpk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqpkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqpkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqpkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqpkq.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqpkr.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqppk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqqbk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqqkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqqkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqqkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqqkq.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqqkr.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqqnk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqqpk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqqqk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqqrk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqrbk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqrkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqrkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqrkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqrkq.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqrkr.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqrnk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqrpk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/kqrrk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krbbk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krbkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krbkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krbkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krbkq.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krbkr.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krbnk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krbpk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krnkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krnkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krnkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krnkq.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krnkr.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krnnk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krnpk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krpkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krpkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krpkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krpkq.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krpkr.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krppk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krrbk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krrkb.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krrkn.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krrkp.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krrkq.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krrkr.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krrnk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krrpk.gtb.cp4 +http://www.olympuschess.com/egtb/gaviota/krrrk.gtb.cp4 diff --git a/data/gaviota/TEST-SOURCE.txt b/data/gaviota/TEST-SOURCE.txt new file mode 100644 index 000000000..7fec936fa --- /dev/null +++ b/data/gaviota/TEST-SOURCE.txt @@ -0,0 +1,17 @@ +https://syzygy-tables.info/gaviota/kqrnk.gtb.cp4 +https://syzygy-tables.info/gaviota/krpkn.gtb.cp4 +https://syzygy-tables.info/gaviota/kbpkp.gtb.cp4 +https://syzygy-tables.info/gaviota/krrpk.gtb.cp4 +https://syzygy-tables.info/gaviota/knppk.gtb.cp4 +https://syzygy-tables.info/gaviota/kbnkb.gtb.cp4 +https://syzygy-tables.info/gaviota/knnkn.gtb.cp4 +https://syzygy-tables.info/gaviota/krrnk.gtb.cp4 +https://syzygy-tables.info/gaviota/kqbbk.gtb.cp4 +https://syzygy-tables.info/gaviota/kppkp.gtb.cp4 +https://syzygy-tables.info/gaviota/kppkq.gtb.cp4 +https://syzygy-tables.info/gaviota/krrrk.gtb.cp4 +https://syzygy-tables.info/gaviota/krnkp.gtb.cp4 +https://syzygy-tables.info/gaviota/kpppk.gtb.cp4 +https://syzygy-tables.info/gaviota/knnkp.gtb.cp4 +https://syzygy-tables.info/gaviota/krnpk.gtb.cp4 +https://syzygy-tables.info/gaviota/knpkp.gtb.cp4 diff --git a/data/gaviota/kbbk.gtb.cp4 b/data/gaviota/kbbk.gtb.cp4 new file mode 100644 index 000000000..b628b6fbf Binary files /dev/null and b/data/gaviota/kbbk.gtb.cp4 differ diff --git a/data/gaviota/kbk.gtb.cp4 b/data/gaviota/kbk.gtb.cp4 new file mode 100644 index 000000000..9024c4e46 Binary files /dev/null and b/data/gaviota/kbk.gtb.cp4 differ diff --git a/data/gaviota/kbkb.gtb.cp4 b/data/gaviota/kbkb.gtb.cp4 new file mode 100644 index 000000000..3e9928d55 Binary files /dev/null and b/data/gaviota/kbkb.gtb.cp4 differ diff --git a/data/gaviota/kbkn.gtb.cp4 b/data/gaviota/kbkn.gtb.cp4 new file mode 100644 index 000000000..0dfaab7ac Binary files /dev/null and b/data/gaviota/kbkn.gtb.cp4 differ diff --git a/data/gaviota/kbkp.gtb.cp4 b/data/gaviota/kbkp.gtb.cp4 new file mode 100644 index 000000000..dc046bae3 Binary files /dev/null and b/data/gaviota/kbkp.gtb.cp4 differ diff --git a/data/gaviota/kbnk.gtb.cp4 b/data/gaviota/kbnk.gtb.cp4 new file mode 100644 index 000000000..571a2c449 Binary files /dev/null and b/data/gaviota/kbnk.gtb.cp4 differ diff --git a/data/gaviota/kbpk.gtb.cp4 b/data/gaviota/kbpk.gtb.cp4 new file mode 100644 index 000000000..1eef31f31 Binary files /dev/null and b/data/gaviota/kbpk.gtb.cp4 differ diff --git a/data/gaviota/knk.gtb.cp4 b/data/gaviota/knk.gtb.cp4 new file mode 100644 index 000000000..323c8c0f7 Binary files /dev/null and b/data/gaviota/knk.gtb.cp4 differ diff --git a/data/gaviota/knkn.gtb.cp4 b/data/gaviota/knkn.gtb.cp4 new file mode 100644 index 000000000..ad1abcc6f Binary files /dev/null and b/data/gaviota/knkn.gtb.cp4 differ diff --git a/data/gaviota/knkp.gtb.cp4 b/data/gaviota/knkp.gtb.cp4 new file mode 100644 index 000000000..8f5462cf7 Binary files /dev/null and b/data/gaviota/knkp.gtb.cp4 differ diff --git a/data/gaviota/knnk.gtb.cp4 b/data/gaviota/knnk.gtb.cp4 new file mode 100644 index 000000000..729c3efd2 Binary files /dev/null and b/data/gaviota/knnk.gtb.cp4 differ diff --git a/data/gaviota/knpk.gtb.cp4 b/data/gaviota/knpk.gtb.cp4 new file mode 100644 index 000000000..697da57e5 Binary files /dev/null and b/data/gaviota/knpk.gtb.cp4 differ diff --git a/data/gaviota/kpk.gtb.cp4 b/data/gaviota/kpk.gtb.cp4 new file mode 100644 index 000000000..e2615e213 Binary files /dev/null and b/data/gaviota/kpk.gtb.cp4 differ diff --git a/data/gaviota/kpkp.gtb.cp4 b/data/gaviota/kpkp.gtb.cp4 new file mode 100644 index 000000000..5a78d3720 Binary files /dev/null and b/data/gaviota/kpkp.gtb.cp4 differ diff --git a/data/gaviota/kppk.gtb.cp4 b/data/gaviota/kppk.gtb.cp4 new file mode 100644 index 000000000..77b697e75 Binary files /dev/null and b/data/gaviota/kppk.gtb.cp4 differ diff --git a/data/gaviota/kqbk.gtb.cp4 b/data/gaviota/kqbk.gtb.cp4 new file mode 100644 index 000000000..1b1de971c Binary files /dev/null and b/data/gaviota/kqbk.gtb.cp4 differ diff --git a/data/gaviota/kqk.gtb.cp4 b/data/gaviota/kqk.gtb.cp4 new file mode 100644 index 000000000..bbaf9b733 Binary files /dev/null and b/data/gaviota/kqk.gtb.cp4 differ diff --git a/data/gaviota/kqkb.gtb.cp4 b/data/gaviota/kqkb.gtb.cp4 new file mode 100644 index 000000000..a2c56d013 Binary files /dev/null and b/data/gaviota/kqkb.gtb.cp4 differ diff --git a/data/gaviota/kqkn.gtb.cp4 b/data/gaviota/kqkn.gtb.cp4 new file mode 100644 index 000000000..af013fa10 Binary files /dev/null and b/data/gaviota/kqkn.gtb.cp4 differ diff --git a/data/gaviota/kqkp.gtb.cp4 b/data/gaviota/kqkp.gtb.cp4 new file mode 100644 index 000000000..3a6660455 Binary files /dev/null and b/data/gaviota/kqkp.gtb.cp4 differ diff --git a/data/gaviota/kqkq.gtb.cp4 b/data/gaviota/kqkq.gtb.cp4 new file mode 100644 index 000000000..a114d6a2a Binary files /dev/null and b/data/gaviota/kqkq.gtb.cp4 differ diff --git a/data/gaviota/kqkr.gtb.cp4 b/data/gaviota/kqkr.gtb.cp4 new file mode 100644 index 000000000..8cb8a00ea Binary files /dev/null and b/data/gaviota/kqkr.gtb.cp4 differ diff --git a/data/gaviota/kqnk.gtb.cp4 b/data/gaviota/kqnk.gtb.cp4 new file mode 100644 index 000000000..f0e002112 Binary files /dev/null and b/data/gaviota/kqnk.gtb.cp4 differ diff --git a/data/gaviota/kqpk.gtb.cp4 b/data/gaviota/kqpk.gtb.cp4 new file mode 100644 index 000000000..8b868b5ed Binary files /dev/null and b/data/gaviota/kqpk.gtb.cp4 differ diff --git a/data/gaviota/kqqk.gtb.cp4 b/data/gaviota/kqqk.gtb.cp4 new file mode 100644 index 000000000..1945260dd Binary files /dev/null and b/data/gaviota/kqqk.gtb.cp4 differ diff --git a/data/gaviota/kqrk.gtb.cp4 b/data/gaviota/kqrk.gtb.cp4 new file mode 100644 index 000000000..76748c981 Binary files /dev/null and b/data/gaviota/kqrk.gtb.cp4 differ diff --git a/data/gaviota/krbk.gtb.cp4 b/data/gaviota/krbk.gtb.cp4 new file mode 100644 index 000000000..7c0b9423e Binary files /dev/null and b/data/gaviota/krbk.gtb.cp4 differ diff --git a/data/gaviota/krk.gtb.cp4 b/data/gaviota/krk.gtb.cp4 new file mode 100644 index 000000000..762a4f2ca Binary files /dev/null and b/data/gaviota/krk.gtb.cp4 differ diff --git a/data/gaviota/krkb.gtb.cp4 b/data/gaviota/krkb.gtb.cp4 new file mode 100644 index 000000000..6b2558341 Binary files /dev/null and b/data/gaviota/krkb.gtb.cp4 differ diff --git a/data/gaviota/krkn.gtb.cp4 b/data/gaviota/krkn.gtb.cp4 new file mode 100644 index 000000000..f59ffaa63 Binary files /dev/null and b/data/gaviota/krkn.gtb.cp4 differ diff --git a/data/gaviota/krkp.gtb.cp4 b/data/gaviota/krkp.gtb.cp4 new file mode 100644 index 000000000..ef2fd2c04 Binary files /dev/null and b/data/gaviota/krkp.gtb.cp4 differ diff --git a/data/gaviota/krkr.gtb.cp4 b/data/gaviota/krkr.gtb.cp4 new file mode 100644 index 000000000..9a7aee8f0 Binary files /dev/null and b/data/gaviota/krkr.gtb.cp4 differ diff --git a/data/gaviota/krnk.gtb.cp4 b/data/gaviota/krnk.gtb.cp4 new file mode 100644 index 000000000..fb076c449 Binary files /dev/null and b/data/gaviota/krnk.gtb.cp4 differ diff --git a/data/gaviota/krpk.gtb.cp4 b/data/gaviota/krpk.gtb.cp4 new file mode 100644 index 000000000..13e0ba10f Binary files /dev/null and b/data/gaviota/krpk.gtb.cp4 differ diff --git a/data/gaviota/krrk.gtb.cp4 b/data/gaviota/krrk.gtb.cp4 new file mode 100644 index 000000000..e4822a8c9 Binary files /dev/null and b/data/gaviota/krrk.gtb.cp4 differ diff --git a/data/opening-books/SOURCE.txt b/data/opening-books/SOURCE.txt deleted file mode 100644 index aa3c8da4f..000000000 --- a/data/opening-books/SOURCE.txt +++ /dev/null @@ -1 +0,0 @@ -http://wbec-ridderkerk.nl/html/download.htm diff --git a/data/perft-random.epd b/data/perft-random.epd new file mode 100644 index 000000000..1e282f867 --- /dev/null +++ b/data/perft-random.epd @@ -0,0 +1,61579 @@ + +#----------------------------------------------------------------------- +# +# perft-random.epd -- random test positions for move generator +# +#----------------------------------------------------------------------- +# +# Description: +# Huge test set of >6000 randomly generated positions with `perft' node +# counts to 6 ply. The positions were created by repeatedly playing +# random sequences of 3 half-moves from the starting position until +# a random game length. Duplicate positions were not removed. +# The `perft' node count for a given depth d is the number of d-ply +# sequences from the position. +# +# History: +# 2007-07-22 (marcelk) Initial version. Used Rookie 2.0 to generate +# and verify the 5-ply node counts for 6838 positions (6753 +# unique). The accumulated tree size is 136,397,513,922 moves. +# 2008-01-28 (marcelk) Added 6-ply counts calculated by Rookie 2.0 over the +# past month. Total test set is 4,322,280,020,055 moves now. +# 2008-01-31 (marcelk) Fixed 2^32 error in gentest-1392 +# 2008-02-03 (marcelk) Fixes 2^32 error in gentest-2009,2011 +# 2015-05-08 (marcelk) Normalized en passant target square for gentest-679 +# +#----------------------------------------------------------------------- +# This file is part of the Rookie(TM) Chess Program +# Copyright (C) 2007, 2008 by Marcel van Kervinck +# All rights reserved +#----------------------------------------------------------------------- + +id gentest-1 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-2 +epd rnbqkbnr/pp1ppppp/2p5/8/6P1/2P5/PP1PPP1P/RNBQKBNR b KQkq - +perft 1 21 +perft 2 463 +perft 3 11138 +perft 4 274234 +perft 5 7290026 +perft 6 195464529 + +id gentest-3 +epd rnb1kbnr/ppq1pppp/2pp4/8/6P1/2P5/PP1PPPBP/RNBQK1NR w KQkq - +perft 1 27 +perft 2 734 +perft 3 20553 +perft 4 579004 +perft 5 16988496 +perft 6 494216738 + +id gentest-4 +epd rnb1kbnr/p1q1pppp/1ppp4/8/4B1P1/2P5/PPQPPP1P/RNB1K1NR b KQkq - +perft 1 28 +perft 2 837 +perft 3 22536 +perft 4 699777 +perft 5 19118920 +perft 6 611385160 + +id gentest-5 +epd rn2kbnr/p1q1ppp1/1ppp3p/8/4B1b1/2P4P/PPQPPP2/RNB1K1NR w KQkq - +perft 1 29 +perft 2 827 +perft 3 24815 +perft 4 701084 +perft 5 21819626 +perft 6 622445426 + +id gentest-6 +epd rn1qkbnr/p3ppp1/1ppp2Qp/3B4/6b1/2P4P/PP1PPP2/RNB1K1NR b KQkq - +perft 1 25 +perft 2 976 +perft 3 23465 +perft 4 872551 +perft 5 21984216 +perft 6 798306998 + +id gentest-7 +epd rnkq1bnr/p3ppp1/1ppp3p/3B4/6b1/2PQ3P/PP1PPP2/RNB1K1NR w KQ - +perft 1 36 +perft 2 957 +perft 3 33542 +perft 4 891412 +perft 5 31155934 +perft 6 840073244 + +id gentest-8 +epd rnkq1bnr/p3ppp1/1ppp3p/5b2/8/2PQ3P/PP1PPPB1/RNB1K1NR b KQ - +perft 1 29 +perft 2 927 +perft 3 25822 +perft 4 832461 +perft 5 23480361 +perft 6 768311001 + +id gentest-9 +epd rn1q1bnr/p2kppp1/2pp3p/1p3b2/1P6/2PQ3P/P2PPPB1/RNB1K1NR w KQ - +perft 1 31 +perft 2 834 +perft 3 25926 +perft 4 715605 +perft 5 22575950 +perft 6 635681844 + +id gentest-10 +epd rn1q1bnr/3kppp1/p1pp3p/1p3b2/1P6/2P2N1P/P1QPPPB1/RNB1K2R b KQ - +perft 1 29 +perft 2 900 +perft 3 25008 +perft 4 781431 +perft 5 22075119 +perft 6 699176752 + +id gentest-11 +epd rn1q1bnr/3kppp1/2pp3p/pp6/1P2b3/2PQ1N1P/P2PPPB1/RNB1K2R w KQ - +perft 1 30 +perft 2 856 +perft 3 26922 +perft 4 784949 +perft 5 25488551 +perft 6 760364787 + +id gentest-12 +epd rn1q1bnr/3kpp2/2pp2pp/pp6/1P2b2N/2PQ3P/P2PPP2/RNB1KB1R b KQ - +perft 1 30 +perft 2 839 +perft 3 25287 +perft 4 743330 +perft 5 22844888 +perft 6 698863604 + +id gentest-13 +epd rnkq1bnr/4pp2/2pQ2pp/pp6/1P5N/2P4P/P2PPP2/RNB1KB1b w Q - +perft 1 36 +perft 2 857 +perft 3 29373 +perft 4 807330 +perft 5 26996998 +perft 6 806839269 + +id gentest-14 +epd rnk2bnr/2q1pp2/2pQ2pp/pp6/1P5N/2PPP2P/P4P2/RNB1KB1b b Q - +perft 1 28 +perft 2 1002 +perft 3 27640 +perft 4 960905 +perft 5 28434554 +perft 6 970730912 + +id gentest-15 +epd rn3bnr/1kq1pp2/2pQ2Np/pp6/1P6/2PPPb1P/P4P2/RNB1KB2 w Q - +perft 1 35 +perft 2 1122 +perft 3 38831 +perft 4 1259372 +perft 5 43220869 +perft 6 1429113787 + +id gentest-16 +epd rn3bnr/1kq1p3/2pQ2pp/Pp6/8/N1PPPb1P/P4P2/R1B1KB2 b Q - +perft 1 32 +perft 2 983 +perft 3 29665 +perft 4 924296 +perft 5 28997034 +perft 6 911965560 + +id gentest-17 +epd rn3b1r/1kq1p3/2pQ1npp/Pp6/4b3/2PPP2P/P4P2/RNB1KB2 w Q - +perft 1 35 +perft 2 1196 +perft 3 38978 +perft 4 1342725 +perft 5 42582894 +perft 6 1489481053 + +id gentest-18 +epd rn3b1r/1kq1p3/2p2npp/Pp3b2/7Q/2PPP2P/P4P2/RNB1KB2 b Q - +perft 1 42 +perft 2 1234 +perft 3 49419 +perft 4 1463588 +perft 5 57455473 +perft 6 1712959062 + +id gentest-19 +epd r4b1r/1k2p3/n1p2npp/Pp3b2/5Q2/2PPP1qP/P4P2/RNB1KB2 w Q - +perft 1 33 +perft 2 1470 +perft 3 44165 +perft 4 1909468 +perft 5 56317737 +perft 6 2375760546 + +id gentest-20 +epd r4br1/1k2p3/n1p2npp/Pp1Q1b2/8/2PPP1qP/P4P2/RNB1KB2 b Q - +perft 1 51 +perft 2 1687 +perft 3 73846 +perft 4 2271390 +perft 5 95410956 +perft 6 2858179589 + +id gentest-21 +epd r4br1/1k2p3/2p2npp/PpnQ4/P5b1/2PPP1qP/5P2/RNB1KB2 w Q - +perft 1 38 +perft 2 1935 +perft 3 61403 +perft 4 2903019 +perft 5 89326625 +perft 6 4018746673 + +id gentest-22 +epd r4br1/4p3/k1p2npp/PpnQ4/P5b1/2PPP1qP/5P2/RNB1KB2 b Q - +perft 1 53 +perft 2 1796 +perft 3 84197 +perft 4 2567078 +perft 5 113930150 +perft 6 3401183860 + +id gentest-23 +epd r4br1/8/k1p2npp/Ppn1p3/P7/2PPP1qP/4bPQ1/RNB1KB2 w Q - +perft 1 24 +perft 2 1036 +perft 3 25308 +perft 4 1095789 +perft 5 27999381 +perft 6 1209827199 + +id gentest-24 +epd r4br1/8/2Q2npp/Pkn1p3/8/2PPP1qP/4bP2/RNB1KB2 b Q - +perft 1 1 +perft 2 18 +perft 3 888 +perft 4 16244 +perft 5 779306 +perft 6 14947584 + +id gentest-25 +epd r4br1/8/3k1npp/P1n1p3/8/2PPP1qP/4bPB1/RNB1K3 w Q - +perft 1 24 +perft 2 1155 +perft 3 26440 +perft 4 1218982 +perft 5 27780951 +perft 6 1246603688 + +id gentest-26 +epd r4br1/8/3k2pp/P1nnp3/6P1/2PPP2P/4b1B1/RNB1K3 b Q - +perft 1 40 +perft 2 877 +perft 3 33568 +perft 4 756910 +perft 5 28087359 +perft 6 648643302 + +id gentest-27 +epd r4b2/6r1/3k2pp/P2np3/4n1P1/R1PPP2P/4b1B1/1NB1K3 w - - +perft 1 18 +perft 2 778 +perft 3 15302 +perft 4 631901 +perft 5 13282551 +perft 6 526146675 + +id gentest-28 +epd r4b2/4r3/3k2pp/P2np3/4n1P1/R1PPPB1P/3Nb3/2B1K3 b - - +perft 1 42 +perft 2 890 +perft 3 34042 +perft 4 751251 +perft 5 28408063 +perft 6 654106063 + +id gentest-29 +epd r4b2/2n1r3/3k2pp/P3p3/6P1/R1PPPBnP/1B1Nb3/4K3 w - - +perft 1 26 +perft 2 824 +perft 3 21597 +perft 4 697477 +perft 5 18277943 +perft 6 601047697 + +id gentest-30 +epd B4b2/2nkr3/6pp/P3p3/6P1/2PPP1nP/1B1Nb3/R3K3 b - - +perft 1 30 +perft 2 826 +perft 3 24543 +perft 4 660957 +perft 5 19956404 +perft 6 533917094 + +id gentest-31 +epd 4n3/3kr1b1/6pp/P3p3/4B1P1/2PPP1nP/1B1Nb3/R3K3 w - - +perft 1 28 +perft 2 669 +perft 3 18695 +perft 4 483244 +perft 5 13436830 +perft 6 366895496 + +id gentest-32 +epd B3n3/4r1b1/3k2pp/P3p3/6P1/2PPP1nP/RB1Nb3/4K3 b - - +perft 1 28 +perft 2 720 +perft 3 18852 +perft 4 489620 +perft 5 13402409 +perft 6 351329828 + +id gentest-33 +epd B3n3/6b1/3kr1pp/P3p3/4n1P1/2PPP2P/R2Nb3/B3K3 w - - +perft 1 22 +perft 2 494 +perft 3 11765 +perft 4 281677 +perft 5 6961428 +perft 6 175251672 + +id gentest-34 +epd 4n3/6b1/4r1pp/P1k1p3/4B1P1/2PPP2P/R3b3/B3KN2 b - - +perft 1 21 +perft 2 574 +perft 3 12583 +perft 4 337049 +perft 5 7727643 +perft 6 205099292 + +id gentest-35 +epd 4n3/6b1/r6p/P1k1p1p1/4B1P1/2PPP2P/R3b2N/B3K3 w - - +perft 1 25 +perft 2 557 +perft 3 13980 +perft 4 314612 +perft 5 7936760 +perft 6 183398372 + +id gentest-36 +epd 8/6b1/r2n2Bp/P1k1p1p1/6P1/2PPP2P/1R2b2N/B3K3 b - - +perft 1 25 +perft 2 660 +perft 3 15951 +perft 4 415723 +perft 5 10139775 +perft 6 263840094 + +id gentest-37 +epd 2n5/6bB/r7/P1k1p1pp/6P1/2PPP2P/1R2b2N/B3K3 w - - +perft 1 25 +perft 2 652 +perft 3 16626 +perft 4 412224 +perft 5 10731721 +perft 6 263414671 + +id gentest-38 +epd 8/n5bB/r7/P1k1p1pp/1R4PP/2PPP3/4b2N/B3K3 b - - +perft 1 26 +perft 2 706 +perft 3 16548 +perft 4 439782 +perft 5 10469492 +perft 6 278444889 + +id gentest-39 +epd 8/n6B/r4b2/P1k1p1pp/1R4bP/2PPP3/8/B3KN2 w - - +perft 1 27 +perft 2 596 +perft 3 15759 +perft 4 362146 +perft 5 9601859 +perft 6 226462631 + +id gentest-40 +epd 8/nR5B/r1k2b2/P3p1pp/6bP/2PPP3/8/B3KN2 b - - +perft 1 22 +perft 2 579 +perft 3 12243 +perft 4 318916 +perft 5 7127386 +perft 6 186298595 + +id gentest-41 +epd 2n5/1R5B/r1k2b2/P3p1pp/3P3P/2P1P3/4b3/B3KN2 w - - +perft 1 32 +perft 2 729 +perft 3 21803 +perft 4 509994 +perft 5 14720753 +perft 6 355107619 + +id gentest-42 +epd 2n5/3Rb2B/r1k5/P3p1pp/3P3P/2P1P3/3Kb3/B4N2 b - - +perft 1 27 +perft 2 701 +perft 3 16816 +perft 4 442872 +perft 5 10918832 +perft 6 288843367 + +id gentest-43 +epd 2n5/3R3B/r1kb4/P3p2p/3P3p/2P1P3/4b3/B1K2N2 w - - +perft 1 27 +perft 2 621 +perft 3 16508 +perft 4 392378 +perft 5 10462755 +perft 6 257103708 + +id gentest-44 +epd 2n5/3R4/r1kb4/P3p2p/3P3p/2PbP3/1K6/BB3N2 b - - +perft 1 30 +perft 2 633 +perft 3 15810 +perft 4 355398 +perft 5 8842726 +perft 6 205254422 + +id gentest-45 +epd 8/1R6/rn1b4/Pk2p2p/3P3p/2PbP3/1K6/BB3N2 w - - +perft 1 23 +perft 2 565 +perft 3 12698 +perft 4 327247 +perft 5 7504855 +perft 6 197773383 + +id gentest-46 +epd 6R1/8/rn1b4/P3p2p/2kP3p/2PbP3/1K6/BB3N2 b - - +perft 1 28 +perft 2 680 +perft 3 16989 +perft 4 386325 +perft 5 9821066 +perft 6 222582860 + +id gentest-47 +epd 5b2/8/rn6/P3p2p/2kP2Rp/2P1P3/1K2b3/BB3N2 w - - +perft 1 27 +perft 2 577 +perft 3 13661 +perft 4 322047 +perft 5 7601839 +perft 6 189928128 + +id gentest-48 +epd 5b2/8/rn6/P2Pp3/2k1B1pp/2P1P3/1K2b3/B4N2 b - - +perft 1 23 +perft 2 379 +perft 3 8948 +perft 4 143529 +perft 5 3601361 +perft 6 57854175 + +id gentest-49 +epd 8/8/r6b/P2np3/2k3pp/2P1P3/1KB1b3/B4N2 w - - +perft 1 17 +perft 2 443 +perft 3 7038 +perft 4 187436 +perft 5 2928081 +perft 6 80196329 + +id gentest-50 +epd 8/8/5r1b/P2np3/2k3pp/2P1P1N1/K1B1b3/B7 b - - +perft 1 34 +perft 2 664 +perft 3 19608 +perft 4 348692 +perft 5 10006963 +perft 6 172851987 + +id gentest-51 +epd 8/8/1r5b/P3p3/1nk3pp/K1P1P1N1/2B1b3/B7 w - - +perft 1 22 +perft 2 585 +perft 3 10957 +perft 4 287677 +perft 5 5057569 +perft 6 132126664 + +id gentest-52 +epd 8/8/r6b/P3p2N/1nk3pp/K1PBP3/4b3/B7 b - - +perft 1 5 +perft 2 72 +perft 3 1904 +perft 4 29157 +perft 5 786112 +perft 6 12796696 + +id gentest-53 +epd 8/8/r6b/P3pb2/1nk3pp/K1P1P1N1/8/B7 w - - +perft 1 11 +perft 2 361 +perft 3 3590 +perft 4 108753 +perft 5 1152635 +perft 6 33862240 + +id gentest-54 +epd 8/8/r6b/P3p3/1nk1b1pp/K1P1P3/1B6/7N b - - +perft 1 38 +perft 2 246 +perft 3 8542 +perft 4 74867 +perft 5 2469417 +perft 6 24788494 + +id gentest-55 +epd 8/6b1/r7/P3pb2/1nk3pp/K1P1P3/1B3N2/8 w - - +perft 1 11 +perft 2 361 +perft 3 3628 +perft 4 108745 +perft 5 1192409 +perft 6 34321020 + +id gentest-56 +epd 8/6b1/6r1/P3pb2/1nk3Np/K1P1P3/8/B7 b - - +perft 1 33 +perft 2 348 +perft 3 10253 +perft 4 109696 +perft 5 3244070 +perft 6 35680310 + +id gentest-57 +epd 8/6b1/7r/P3p3/1nk3Np/K1P1P3/1B6/1b6 w - - +perft 1 11 +perft 2 296 +perft 3 3301 +perft 4 85445 +perft 5 976836 +perft 6 25005923 + +id gentest-58 +epd 8/6b1/7r/Pk2p3/1n4Np/K1P1P3/1B6/1b6 b - - +perft 1 33 +perft 2 377 +perft 3 10572 +perft 4 125127 +perft 5 3449824 +perft 6 41620286 + +id gentest-59 +epd 8/6b1/5N1r/Pk2p3/1n5p/K1P1P3/1B6/1b6 w - - +perft 1 15 +perft 2 418 +perft 3 5061 +perft 4 133804 +perft 5 1609522 +perft 6 42418189 + +id gentest-60 +epd 8/6b1/7r/Pk2p3/1n5p/K1PbP1N1/1B6/8 b - - +perft 1 35 +perft 2 434 +perft 3 13169 +perft 4 153820 +perft 5 4443875 +perft 6 53243547 + +id gentest-61 +epd 8/6b1/5r2/Pk2p3/7p/1KPbP1N1/1Bn5/8 w - - +perft 1 13 +perft 2 429 +perft 3 5040 +perft 4 157837 +perft 5 1921415 +perft 6 59286441 + +id gentest-62 +epd 8/6b1/5r2/Pk2p3/7p/1KP1P3/2n1b3/2B4N b - - +perft 1 36 +perft 2 372 +perft 3 12010 +perft 4 135981 +perft 5 4297511 +perft 6 52475032 + +id gentest-63 +epd 5b2/8/8/Pk2p3/7p/1KP1Pr2/1Bn1b3/7N w - - +perft 1 10 +perft 2 291 +perft 3 2992 +perft 4 90496 +perft 5 1013174 +perft 6 30909673 + +id gentest-64 +epd 5b2/8/8/Pk2p3/2b4p/2P1Pr2/1Bn5/1K5N b - - +perft 1 38 +perft 2 331 +perft 3 11927 +perft 4 120416 +perft 5 4169323 +perft 6 46571292 + +id gentest-65 +epd 5b2/8/8/Pk2p3/2b5/B1P1P1rp/2n5/1K5N w - - +perft 1 14 +perft 2 490 +perft 3 6278 +perft 4 208386 +perft 5 2800497 +perft 6 89526750 + +id gentest-66 +epd 5b2/5b2/3B4/Pk2p3/8/2P1P1Np/2n5/1K6 b - - +perft 1 26 +perft 2 478 +perft 3 11790 +perft 4 204499 +perft 5 4930059 +perft 6 83220242 + +id gentest-67 +epd 8/5b2/P2b4/1k2p3/8/2P1n1Np/8/1K6 w - - +perft 1 11 +perft 2 338 +perft 3 3510 +perft 4 99518 +perft 5 1095683 +perft 6 29595829 + +id gentest-68 +epd B7/5b2/3b4/1k2p3/8/2P3Np/2n5/1K6 b - - +perft 1 30 +perft 2 477 +perft 3 12371 +perft 4 202322 +perft 5 4997277 +perft 6 83801521 + +id gentest-69 +epd 8/8/4b3/1k2p3/4B3/b1P3Np/2n5/1K6 w - - +perft 1 19 +perft 2 481 +perft 3 8111 +perft 4 198356 +perft 5 3210337 +perft 6 77007113 + +id gentest-70 +epd 8/8/4b3/k3p2N/8/b1PB3p/2n5/1K6 b - - +perft 1 26 +perft 2 412 +perft 3 10548 +perft 4 163093 +perft 5 4116528 +perft 6 65172297 + +id gentest-71 +epd 8/8/8/k3pb1N/8/b1P5/2B4p/1K6 w - - +perft 1 10 +perft 2 238 +perft 3 3078 +perft 4 70356 +perft 5 1038374 +perft 6 23760716 + +id gentest-72 +epd 8/8/6b1/k3p2N/8/b1PB4/K6p/8 b - - +perft 1 21 +perft 2 361 +perft 3 8211 +perft 4 128257 +perft 5 3061565 +perft 6 47317841 + +id gentest-73 +epd 1b6/8/6B1/k3p2N/8/2P5/K6p/8 w - - +perft 1 18 +perft 2 209 +perft 3 3734 +perft 4 54477 +perft 5 954283 +perft 6 16003896 + +id gentest-74 +epd 1b2B3/8/1k6/4p3/5N2/2P5/K6p/8 b - - +perft 1 15 +perft 2 302 +perft 3 4537 +perft 4 84303 +perft 5 1448252 +perft 6 25929658 + +id gentest-75 +epd 1b2B3/8/1k6/8/4pN2/1KP5/8/7q w - - +perft 1 23 +perft 2 623 +perft 3 11654 +perft 4 322322 +perft 5 5523536 +perft 6 155183754 + +id gentest-76 +epd 1b5q/3B4/1k6/8/2P1pN2/1K6/8/8 b - - +perft 1 31 +perft 2 656 +perft 3 18160 +perft 4 342342 +perft 5 9440766 +perft 6 164576855 + +id gentest-77 +epd 8/3B4/1k1b4/8/2P1pN2/8/1K6/8 w - - +perft 1 25 +perft 2 394 +perft 3 8219 +perft 4 116986 +perft 5 2283351 +perft 6 31501697 + +id gentest-78 +epd 8/2kB4/3b4/8/2P1p3/2K5/6N1/8 b - - +perft 1 15 +perft 2 246 +perft 3 3728 +perft 4 62176 +perft 5 876278 +perft 6 14756640 + +id gentest-79 +epd 3b4/2k5/2B5/8/2P1p3/2K5/6N1/8 w - - +perft 1 19 +perft 2 186 +perft 3 3184 +perft 4 40252 +perft 5 679381 +perft 6 8627238 + +id gentest-80 +epd 3b4/8/3k4/8/B1P1pN2/2K5/8/8 b - - +perft 1 12 +perft 2 223 +perft 3 2387 +perft 4 43315 +perft 5 514348 +perft 6 9050627 + +id gentest-81 +epd 8/2k5/8/2P5/B3pN1b/2K5/8/8 w - - +perft 1 23 +perft 2 267 +perft 3 5178 +perft 4 60640 +perft 5 1146671 +perft 6 13926198 + +id gentest-82 +epd 3k4/8/2B5/2P5/2K1pN1b/8/8/8 b - - +perft 1 10 +perft 2 219 +perft 3 2313 +perft 4 47069 +perft 5 535923 +perft 6 10526260 + +id gentest-83 +epd 3k4/8/2B5/2PN4/2K1pb2/8/8/8 w - - +perft 1 19 +perft 2 250 +perft 3 4795 +perft 4 54526 +perft 5 1028885 +perft 6 11864066 + +id gentest-84 +epd 3k4/8/2B5/2P5/4p3/2K1N3/7b/8 b - - +perft 1 10 +perft 2 213 +perft 3 2332 +perft 4 47793 +perft 5 551787 +perft 6 11049823 + +id gentest-85 +epd 3k4/8/8/2PBb3/4p3/2K1N3/8/8 w - - +perft 1 5 +perft 2 90 +perft 3 1950 +perft 4 27716 +perft 5 585553 +perft 6 7814002 + +id gentest-86 +epd 1b1k4/1B6/8/2P5/4p3/4N3/3K4/8 b - - +perft 1 11 +perft 2 222 +perft 3 2552 +perft 4 48238 +perft 5 595884 +perft 6 11156196 + +id gentest-87 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-88 +epd rnbqkbnr/1ppppppp/8/p7/2P5/P7/1P1PPPPP/RNBQKBNR b KQkq - +perft 1 21 +perft 2 441 +perft 3 10227 +perft 4 242685 +perft 5 6164778 +perft 6 161038368 + +id gentest-89 +epd 2bqkbnr/rppppppp/n7/p7/2P5/PP6/3PPPPP/RNBQKBNR w KQk - +perft 1 19 +perft 2 398 +perft 3 8820 +perft 4 204573 +perft 5 5072498 +perft 6 129375227 + +id gentest-90 +epd 2bqkbnr/rpp1pppp/n2p4/p7/2P3P1/PP5P/3PPP2/RNBQKBNR b KQk - +perft 1 26 +perft 2 470 +perft 3 13090 +perft 4 284308 +perft 5 8296635 +perft 6 202882781 + +id gentest-91 +epd 2bqkbnr/rpp1p1pp/n2p4/5p2/p1PP2P1/PP5P/4PP2/RNBQKBNR w KQk - +perft 1 27 +perft 2 666 +perft 3 18637 +perft 4 493990 +perft 5 14425855 +perft 6 405138216 + +id gentest-92 +epd 2bqkbnr/rpp1p2p/n2p4/5pp1/p1PP2P1/PP2P2P/1B3P2/RN1QKBNR b KQk - +perft 1 25 +perft 2 703 +perft 3 18885 +perft 4 549873 +perft 5 15608368 +perft 6 472614722 + +id gentest-93 +epd 2b1kbnr/rppqp3/n2p3p/5pp1/p1PP2P1/PP2P2P/1B2QP2/RN2KBNR w KQk - +perft 1 24 +perft 2 576 +perft 3 15712 +perft 4 417380 +perft 5 12214998 +perft 6 350439421 + +id gentest-94 +epd 2b1kbnB/rppqp3/3p3p/3P1pp1/pnP3P1/PP2P2P/4QP2/RN2KBNR b KQ - +perft 1 27 +perft 2 729 +perft 3 20665 +perft 4 613681 +perft 5 18161673 +perft 6 570898339 + +id gentest-95 +epd 2b1kbnB/r1pqp3/n2p3p/1p1P1pp1/p1P3P1/PP2P2P/Q4P2/RN2KBNR w KQ - +perft 1 30 +perft 2 689 +perft 3 21830 +perft 4 556204 +perft 5 18152100 +perft 6 497167912 + +id gentest-96 +epd 2b1kbn1/r1pqp3/n2p3p/3P1pp1/ppP3P1/PPB1P2P/Q4P2/RN2KBNR b KQ - +perft 1 23 +perft 2 685 +perft 3 17480 +perft 4 532817 +perft 5 14672791 +perft 6 460241394 + +id gentest-97 +epd 2bq1bn1/r1pkp3/n2p3p/3P1pp1/ppP3P1/PPB1P2P/2Q2P2/RN2KBNR w KQ - +perft 1 36 +perft 2 662 +perft 3 23474 +perft 4 495417 +perft 5 17463335 +perft 6 406740844 + +id gentest-98 +epd 2bq1bn1/1rpkp3/n2p3p/3P1pp1/ppP3P1/PPB1P2P/3QNP2/RN2KB1R b KQ - +perft 1 20 +perft 2 636 +perft 3 14063 +perft 4 465740 +perft 5 11130165 +perft 6 380417426 + +id gentest-99 +epd 1rbq1b2/2pkp3/n2p1n1p/3P1pp1/ppP3P1/PPB1P2P/3Q1P2/RN2KBNR w KQ - +perft 1 30 +perft 2 772 +perft 3 24764 +perft 4 635387 +perft 5 21077449 +perft 6 557764143 + +id gentest-100 +epd 1rbq1bn1/2pkp3/n2p3p/3P1pp1/ppP3P1/PPBQP2P/3N1P2/R3KBNR b KQ - +perft 1 20 +perft 2 718 +perft 3 15726 +perft 4 568525 +perft 5 13492527 +perft 6 492282858 + +id gentest-101 +epd 2bq1b2/2pkp3/nr1p1n1p/3P1pp1/ppP3P1/PPBQP2P/3N1P2/1R2KBNR w K - +perft 1 32 +perft 2 832 +perft 3 28170 +perft 4 725952 +perft 5 25411630 +perft 6 670418870 + +id gentest-102 +epd 2bq1b2/3kp3/nrpp1n1p/3P1pp1/pBP3P1/PP1QP2P/3NKP2/1R3BNR b - - +perft 1 29 +perft 2 869 +perft 3 24309 +perft 4 776907 +perft 5 22423608 +perft 6 748397890 + +id gentest-103 +epd 2b1qb2/3kp3/nrpp1n2/3P1ppp/pBP3P1/PP1QP2P/3NKP1R/1R3BN1 w - - +perft 1 32 +perft 2 913 +perft 3 30583 +perft 4 914591 +perft 5 31569084 +perft 6 978450277 + +id gentest-104 +epd 2b1qb2/2k1p3/nrpp1n2/3P1Qpp/pBP3P1/PP2P2P/3NKP1R/R4BN1 b - - +perft 1 33 +perft 2 1365 +perft 3 43571 +perft 4 1698889 +perft 5 55573497 +perft 6 2103522739 + +id gentest-105 +epd 2bkq3/4p3/nrpp1nQb/3P2pp/pBP3P1/PP2P2P/3NKP1R/R4BN1 w - - +perft 1 42 +perft 2 1463 +perft 3 57483 +perft 4 1957673 +perft 5 75078346 +perft 6 2542445133 + +id gentest-106 +epd 2bkq3/4p3/1rpp1nQb/2nP2pp/pBP3P1/PP2PN1P/3NKP1R/2R2B2 b - - +perft 1 40 +perft 2 1639 +perft 3 59995 +perft 4 2356499 +perft 5 83330544 +perft 6 3217360080 + +id gentest-107 +epd 2bkq3/2n1p3/1rpp1Q1b/3P2pp/pBP3P1/PP2PN1P/3NKP1R/2R2B2 w - - +perft 1 47 +perft 2 1401 +perft 3 61866 +perft 4 1846425 +perft 5 77925512 +perft 6 2354628674 + +id gentest-108 +epd 2bkq2Q/2n1p3/1r1p3b/2pP2pp/pBP3P1/PP2PN1P/3NKP1R/2R2B2 b - - +perft 1 29 +perft 2 1105 +perft 3 31573 +perft 4 1166929 +perft 5 33886402 +perft 6 1237909944 + +id gentest-109 +epd 2bkq2Q/2n1p3/r2p3b/3P2pp/ppP3P1/PP2PN1P/3NKPR1/2R2B2 w - - +perft 1 39 +perft 2 1032 +perft 3 38687 +perft 4 1086397 +perft 5 39629374 +perft 6 1162027164 + +id gentest-110 +epd 3kqQ2/2n1p3/r2p3b/3P1bpp/ppP3P1/PP2PN1P/3NKP2/2R2BR1 b - - +perft 1 30 +perft 2 1031 +perft 3 29103 +perft 4 1011703 +perft 5 29467967 +perft 6 1033347390 + +id gentest-111 +epd n1k1qQ2/4p3/r2p3b/3P1bpp/ppP3P1/PP2P2P/3NKP2/2R1NBR1 w - - +perft 1 36 +perft 2 1043 +perft 3 36054 +perft 4 1077115 +perft 5 37817626 +perft 6 1157399369 + +id gentest-112 +epd n1k1q3/4Q3/3p3b/r2P1bpp/ppP1N1P1/PP2P2P/4KP2/2R1NBR1 b - - +perft 1 30 +perft 2 1326 +perft 3 36039 +perft 4 1522310 +perft 5 43510151 +perft 6 1770402069 + +id gentest-113 +epd n1kq4/4Q3/3p3b/r2P1bpp/p1P1NPP1/pP2P2P/4K3/2R1NBR1 w - - +perft 1 48 +perft 2 1259 +perft 3 55261 +perft 4 1564035 +perft 5 65933246 +perft 6 1957580926 + +id gentest-114 +epd 2kq4/4Q3/1n1p3b/r1NP1bpp/pPP2PP1/p3P2P/4K3/2R1NBR1 b - - +perft 1 33 +perft 2 1452 +perft 3 43353 +perft 4 1829511 +perft 5 55661262 +perft 6 2275321404 + +id gentest-115 +epd 2kq4/4Q3/1n1pN2b/1r1P1bp1/pPP2PPp/p3P2P/4K3/2R1NBR1 w - - +perft 1 42 +perft 2 1035 +perft 3 39949 +perft 4 1063673 +perft 5 40527181 +perft 6 1137687204 + +id gentest-116 +epd 3q4/3k4/1n1pN2b/1r1P1bp1/pPP2PPp/p3P2P/4K3/R3NBR1 b - - +perft 1 33 +perft 2 899 +perft 3 28647 +perft 4 777314 +perft 5 25288947 +perft 6 685512696 + +id gentest-117 +epd n2q4/3k4/3pN2b/1r1P1bp1/pPP2PPp/4P2P/p3K1B1/R3N1R1 w - - +perft 1 30 +perft 2 977 +perft 3 28242 +perft 4 913433 +perft 5 26506034 +perft 6 869244486 + +id gentest-118 +epd n2q1b2/3k4/3pN3/1r1P1bp1/pPP1PPPp/7P/p1N1K1B1/R5R1 b - - +perft 1 30 +perft 2 1155 +perft 3 33718 +perft 4 1183963 +perft 5 35762316 +perft 6 1181413280 + +id gentest-119 +epd n1kq4/8/3p3b/1rNP1bp1/pPP1PPPp/7P/p1N1K1B1/R5R1 w - - +perft 1 39 +perft 2 1231 +perft 3 43211 +perft 4 1394054 +perft 5 46113152 +perft 6 1527707936 + +id gentest-120 +epd n1kq1b2/8/3pN3/1r1P1bp1/pPP1PPPp/7P/p1N1K1B1/3R2R1 b - - +perft 1 33 +perft 2 1245 +perft 3 41818 +perft 4 1463252 +perft 5 50111373 +perft 6 1655790737 + +id gentest-121 +epd 2k2b2/2n5/3pNq2/1r1P1bp1/pPP1PPPp/7P/p1N1K3/3R2RB w - - +perft 1 39 +perft 2 1613 +perft 3 56983 +perft 4 2271336 +perft 5 75105477 +perft 6 2926524379 + +id gentest-122 +epd 1rkN1b2/2n5/3p1q2/3P1bp1/pPP1PPPp/7P/p1N2K2/3R2RB b - - +perft 1 41 +perft 2 1382 +perft 3 54678 +perft 4 1746961 +perft 5 67741175 +perft 6 2093738115 + +id gentest-123 +epd 2kN1b2/2n5/3p4/3Pqbp1/prP1PPPp/N6P/p4K2/3R2RB w - - +perft 1 32 +perft 2 1390 +perft 3 40062 +perft 4 1688989 +perft 5 47729045 +perft 6 1973565059 + +id gentest-124 +epd 2kN1b2/2n5/3p4/3P1bp1/prP1qPPp/7P/p1NR1K2/6RB b - - +perft 1 47 +perft 2 1206 +perft 3 55482 +perft 4 1477788 +perft 5 66177203 +perft 6 1813799545 + +id gentest-125 +epd 2kNnb2/8/3p4/3P1bp1/prP2PPp/4K2P/p1NR4/6RB w - - +perft 1 34 +perft 2 1070 +perft 3 33425 +perft 4 1055159 +perft 5 32170746 +perft 6 1009082628 + +id gentest-126 +epd 2k1nb2/8/3p4/3P1bp1/pNP2PPp/4K2P/2NR4/b5RB b - - +perft 1 28 +perft 2 846 +perft 3 22764 +perft 4 677190 +perft 5 17633051 +perft 6 522450960 + +id gentest-127 +epd 1k2nb2/8/3p4/3Pbbp1/p1P2PPp/3NK2P/2NR4/6RB w - - +perft 1 35 +perft 2 973 +perft 3 29936 +perft 4 799546 +perft 5 24115604 +perft 6 625462056 + +id gentest-128 +epd 1kb1nb2/8/3p4/3Pb1p1/p1P2PPp/4K2P/3R1N2/4N1RB b - - +perft 1 26 +perft 2 651 +perft 3 16436 +perft 4 415339 +perft 5 10419772 +perft 6 268153175 + +id gentest-129 +epd 1kb1nb2/8/3p3b/3P1Pp1/p1P3Pp/4K2P/3R1N2/4N1RB w - - +perft 1 27 +perft 2 423 +perft 3 11278 +perft 4 192816 +perft 5 5135792 +perft 6 92716727 + +id gentest-130 +epd 1kb2b2/8/3p1n1b/3P1Pp1/p1P1B1Pp/4K2P/2R2N2/4N1R1 b - - +perft 1 21 +perft 2 517 +perft 3 9926 +perft 4 255650 +perft 5 4902072 +perft 6 129830088 + +id gentest-131 +epd 2b2bn1/1k6/3p3b/3P1Pp1/p1P3Pp/3BK2P/2R2N2/4N1R1 w - - +perft 1 25 +perft 2 365 +perft 3 9418 +perft 4 157288 +perft 5 4171305 +perft 6 74415101 + +id gentest-132 +epd 2b2bn1/1k4b1/3p4/3P1Pp1/p1P3Pp/4K2P/4RN2/1B2N1R1 b - - +perft 1 22 +perft 2 549 +perft 3 12382 +perft 4 317430 +perft 5 7313495 +perft 6 192964113 + +id gentest-133 +epd 2b2bn1/1k4b1/3p4/3P1Pp1/p1P3Pp/4K2P/4R3/1B1NN1R1 w - - +perft 1 29 +perft 2 615 +perft 3 17316 +perft 4 385647 +perft 5 10752347 +perft 6 245181172 + +id gentest-134 +epd 2b2bn1/1k4b1/3p4/3P1Pp1/2P3Pp/p3K2P/4R3/1B1NN1R1 b - - +perft 1 22 +perft 2 612 +perft 3 13947 +perft 4 388284 +perft 5 9118411 +perft 6 251773828 + +id gentest-135 +epd k1b3n1/4b1b1/3p4/3P1Pp1/2P3Pp/p3K2P/5R2/1B1NN1R1 w - - +perft 1 31 +perft 2 706 +perft 3 20059 +perft 4 442218 +perft 5 12196892 +perft 6 274254576 + +id gentest-136 +epd k5n1/4b1b1/3pb3/3P1Pp1/2P2RPp/p1N1K2P/8/1B2N1R1 b - - +perft 1 22 +perft 2 656 +perft 3 14616 +perft 4 420458 +perft 5 9669579 +perft 6 273871494 + +id gentest-137 +epd k5n1/4b3/3pb3/3PbPp1/2P2RPp/p1N1KN1P/8/1B4R1 w - - +perft 1 35 +perft 2 732 +perft 3 22209 +perft 4 494428 +perft 5 14925069 +perft 6 345139360 + +id gentest-138 +epd 6n1/1k2b3/3pb3/2PPbPp1/3R2Pp/p1N1KN1P/8/1B4R1 b - - +perft 1 25 +perft 2 938 +perft 3 22393 +perft 4 801728 +perft 5 19301945 +perft 6 668190713 + +id gentest-139 +epd 3b2n1/1k6/4b3/2pPbPp1/3R2Pp/p3KN1P/8/1B1N2R1 w - - +perft 1 34 +perft 2 1085 +perft 3 33909 +perft 4 1007127 +perft 5 31133588 +perft 6 891220430 + +id gentest-140 +epd 3b2n1/1k6/8/2pbbPp1/2R3PN/p3K2P/8/1B1N2R1 b - - +perft 1 39 +perft 2 1065 +perft 3 37400 +perft 4 1024337 +perft 5 33993440 +perft 6 944801270 + +id gentest-141 +epd 6n1/1k6/8/b1pbbP2/2R3Pp/p3K2P/6R1/1B1N4 w - - +perft 1 30 +perft 2 1115 +perft 3 29174 +perft 4 1018724 +perft 5 26075468 +perft 6 863847861 + +id gentest-142 +epd 6n1/1k6/1b6/2pbbP2/2RR2Pp/p3K2P/8/1B1N4 b - - +perft 1 34 +perft 2 781 +perft 3 24865 +perft 4 626245 +perft 5 18862068 +perft 6 491380646 + +id gentest-143 +epd 1k4n1/8/1b6/2p1bP2/R2R2Pp/p3K2P/b7/1B1N4 w - - +perft 1 32 +perft 2 808 +perft 3 23384 +perft 4 578656 +perft 5 16615826 +perft 6 412642615 + +id gentest-144 +epd 1k4n1/b7/8/2p1bP2/R2R2Pp/p2BK2P/b7/3N4 b - - +perft 1 25 +perft 2 703 +perft 3 16129 +perft 4 461885 +perft 5 10699069 +perft 6 311113767 + +id gentest-145 +epd 6n1/b1k5/8/4bP2/R2p2Pp/p2B3P/b3K3/3N4 w - - +perft 1 24 +perft 2 599 +perft 3 14581 +perft 4 360665 +perft 5 8848786 +perft 6 219891232 + +id gentest-146 +epd 6n1/bk6/5P2/4b3/3p2Pp/R2B3P/b3K3/3N4 b - - +perft 1 25 +perft 2 669 +perft 3 15146 +perft 4 424101 +perft 5 10000078 +perft 6 277514554 + +id gentest-147 +epd k5n1/b7/5P2/8/3p2Pp/R2B2bP/b3KN2/8 w - - +perft 1 26 +perft 2 441 +perft 3 11824 +perft 4 226618 +perft 5 6019782 +perft 6 123849364 + +id gentest-148 +epd 1k4n1/b7/5P2/8/3p2Pp/5RbP/b3KN2/1B6 b - - +perft 1 22 +perft 2 519 +perft 3 12057 +perft 4 281430 +perft 5 6789205 +perft 6 160564570 + +id gentest-149 +epd 1k4n1/b7/5P2/3b4/3p1bPp/6RP/4KN2/1B6 w - - +perft 1 25 +perft 2 757 +perft 3 16968 +perft 4 487323 +perft 5 10978571 +perft 6 304985390 + +id gentest-150 +epd 1k6/b3n3/5P2/3b4/3pNbPp/3K2RP/8/1B6 b - - +perft 1 31 +perft 2 494 +perft 3 14774 +perft 4 261280 +perft 5 7396506 +perft 6 141732967 + +id gentest-151 +epd 2k5/b3n3/5P2/2Nb4/3p1bP1/3K2pP/8/1B6 w - - +perft 1 16 +perft 2 524 +perft 3 7752 +perft 4 228853 +perft 5 3558624 +perft 6 99594791 + +id gentest-152 +epd 2k5/4n3/5P2/2bb4/3p1bP1/3K2NP/8/1B6 b - - +perft 1 37 +perft 2 504 +perft 3 17647 +perft 4 252394 +perft 5 8215987 +perft 6 126587107 + +id gentest-153 +epd 2k5/4n3/5P2/3b2b1/1b1p2P1/3K3P/4N3/1B6 w - - +perft 1 13 +perft 2 461 +perft 3 6186 +perft 4 204517 +perft 5 2999408 +perft 6 94351147 + +id gentest-154 +epd 2k5/4P3/8/2bb2b1/3p2PP/3K4/4N3/1B6 b - - +perft 1 31 +perft 2 449 +perft 3 11755 +perft 4 187665 +perft 5 4839227 +perft 6 84436997 + +id gentest-155 +epd 2k5/4P3/8/6b1/3p2PP/b2K4/B3N1b1/8 w - - +perft 1 22 +perft 2 515 +perft 3 10768 +perft 4 253977 +perft 5 5304799 +perft 6 125910634 + +id gentest-156 +epd 2kbR3/8/8/8/2Bp2PP/b2K4/4N1b1/8 b - - +perft 1 20 +perft 2 519 +perft 3 10177 +perft 4 268014 +perft 5 5651562 +perft 6 150428503 + +id gentest-157 +epd 1k1bRb2/8/B7/8/3p2PP/3K4/4N1b1/8 w - - +perft 1 23 +perft 2 451 +perft 3 10668 +perft 4 222543 +perft 5 5466380 +perft 6 118696831 + +id gentest-158 +epd 3b1R2/k7/B7/8/3p2PP/2NK4/6b1/8 b - - +perft 1 21 +perft 2 579 +perft 3 10086 +perft 4 269977 +perft 5 4652556 +perft 6 121545164 + +id gentest-159 +epd 5R2/8/k7/6b1/N2p2PP/3K4/6b1/8 w - - +perft 1 24 +perft 2 457 +perft 3 9669 +perft 4 179032 +perft 5 3718663 +perft 6 68154512 + +id gentest-160 +epd 8/8/k7/7R/N2p1bPP/3K4/6b1/8 b - - +perft 1 22 +perft 2 376 +perft 3 6889 +perft 4 126337 +perft 5 2301021 +perft 6 43722772 + +id gentest-161 +epd 8/8/k7/2R5/N2p2PP/3K2b1/8/5b2 w - - +perft 1 4 +perft 2 71 +perft 3 1453 +perft 4 24579 +perft 5 498115 +perft 6 8545408 + +id gentest-162 +epd 8/8/k2b4/2R5/N5PP/2K5/8/5b2 b - - +perft 1 17 +perft 2 330 +perft 3 5564 +perft 4 110536 +perft 5 1917159 +perft 6 39056971 + +id gentest-163 +epd 8/2R5/8/k7/N5PP/2K5/8/5b2 w - - +perft 1 21 +perft 2 192 +perft 3 4350 +perft 4 41007 +perft 5 924804 +perft 6 9388613 + +id gentest-164 +epd 8/7R/b7/k7/N5PP/2K5/8/8 b - - +perft 1 9 +perft 2 180 +perft 3 1762 +perft 4 36864 +perft 5 382021 +perft 6 8155404 + +id gentest-165 +epd 8/6R1/8/8/k5PP/2Kb4/8/8 w - - +perft 1 16 +perft 2 203 +perft 3 3537 +perft 4 39090 +perft 5 706790 +perft 6 7908503 + +id gentest-166 +epd 8/3R4/8/1k6/6PP/3b4/1K6/8 b - - +perft 1 17 +perft 2 356 +perft 3 4905 +perft 4 98651 +perft 5 1256790 +perft 6 24032274 + +id gentest-167 +epd 8/8/8/1k6/3R2PP/3b4/1K6/8 w - - +perft 1 18 +perft 2 230 +perft 3 4259 +perft 4 53654 +perft 5 1006739 +perft 6 12555575 + +id gentest-168 +epd 8/8/8/1k4P1/R1b4P/8/1K6/8 b - - +perft 1 13 +perft 2 250 +perft 3 3185 +perft 4 58314 +perft 5 757259 +perft 6 13937245 + +id gentest-169 +epd 8/8/6P1/8/1kb4P/8/1K6/8 w - - +perft 1 6 +perft 2 100 +perft 3 649 +perft 4 10016 +perft 5 77697 +perft 6 1114696 + +id gentest-170 +epd 8/8/6P1/8/2b4P/2k5/8/3K4 b - - +perft 1 16 +perft 2 73 +perft 3 1091 +perft 4 6579 +perft 5 97531 +perft 6 769922 + +id gentest-171 +epd 8/8/4b1P1/7P/8/3k4/8/3K4 w - - +perft 1 4 +perft 2 66 +perft 3 359 +perft 4 5458 +perft 5 42728 +perft 6 620333 + +id gentest-172 +epd 8/5b1P/6P1/8/8/3k4/8/3K4 b - - +perft 1 13 +perft 2 105 +perft 3 1314 +perft 4 15092 +perft 5 189534 +perft 6 2763067 + +id gentest-173 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-174 +epd rnbqkbnr/ppppp1pp/8/5p2/2P5/P7/1P1PPPPP/RNBQKBNR b KQkq - +perft 1 20 +perft 2 420 +perft 3 9328 +perft 4 221495 +perft 5 5414634 +perft 6 141156672 + +id gentest-175 +epd rnbqkb1r/ppppp1pp/5n2/8/P1P2p2/8/1P1PPPPP/RNBQKBNR w KQkq - +perft 1 21 +perft 2 504 +perft 3 12116 +perft 4 307209 +perft 5 8108637 +perft 6 218071184 + +id gentest-176 +epd rnbqkb1r/ppp1p1pp/5n2/3p4/P1P2p2/R2P4/1P2PPPP/1NBQKBNR b Kkq - +perft 1 33 +perft 2 920 +perft 3 30671 +perft 4 880242 +perft 5 29878598 +perft 6 882105476 + +id gentest-177 +epd rnbqkb1r/ppp4p/5n2/3pp1p1/P1P2p2/R2P3P/1P2PPP1/1NBQKBNR w Kkq - +perft 1 27 +perft 2 1077 +perft 3 29576 +perft 4 1166930 +perft 5 33211447 +perft 6 1308304348 + +id gentest-178 +epd rnbq1b1r/ppp2k1p/5n2/3pp1p1/P1P2p2/R2PB2P/1P1QPPP1/1N2KBNR b K - +perft 1 46 +perft 2 1319 +perft 3 58968 +perft 4 1756740 +perft 5 76415132 +perft 6 2348552017 + +id gentest-179 +epd rn1q1b1r/ppp2k2/1B3n2/3pp1pp/P1P2p2/R2P3b/1P1QPPP1/1N2KBNR w K - +perft 1 36 +perft 2 1690 +perft 3 59735 +perft 4 2688254 +perft 5 94521406 +perft 6 4130006716 + +id gentest-180 +epd rn1q3r/ppp2k2/1B3n2/3pp1pp/PbP2p2/1P1P3b/R2QPPP1/1N2KBNR b K - +perft 1 54 +perft 2 1565 +perft 3 78731 +perft 4 2361793 +perft 5 112535344 +perft 6 3508229269 + +id gentest-181 +epd rn5r/ppp2k2/1B3n2/3qp1pp/Pb3p2/1P1P3b/R2QPPP1/1N2KBNR w K - +perft 1 27 +perft 2 1630 +perft 3 45668 +perft 4 2552421 +perft 5 75207612 +perft 6 3955150683 + +id gentest-182 +epd rB5r/pp4k1/5n2/3qp1pp/Pb3p2/1P1P3b/R2QPPP1/1N2KBNR b K - +perft 1 60 +perft 2 1513 +perft 3 84307 +perft 4 2325605 +perft 5 121928751 +perft 6 3626493565 + +id gentest-183 +epd rB5r/pp4k1/5n2/q3p2p/Pb3pp1/1P1P3N/R2QPPP1/1N2KB1R w K - +perft 1 23 +perft 2 1010 +perft 3 25041 +perft 4 1067873 +perft 5 28954450 +perft 6 1216784742 + +id gentest-184 +epd r6r/pp3k2/3B1n2/q3p2p/Pb3pp1/1P1P3N/1R1QPPP1/1N2KB1R b K - +perft 1 46 +perft 2 1093 +perft 3 46923 +perft 4 1207848 +perft 5 51220974 +perft 6 1422543041 + +id gentest-185 +epd r6r/pp3k2/3B4/q3p2p/Pb3pp1/1PnP3N/1R1QPPP1/1N2KBR1 w - - +perft 1 25 +perft 2 1076 +perft 3 27378 +perft 4 1159671 +perft 5 30382685 +perft 6 1273725995 + +id gentest-186 +epd r7/pp3k1r/8/q1B1p2p/Pb3pp1/1PnPQ2N/1R2PPP1/1N2KBR1 b - - +perft 1 42 +perft 2 994 +perft 3 40592 +perft 4 1034200 +perft 5 42152761 +perft 6 1132852669 + +id gentest-187 +epd r7/p6r/1p3k2/q1B1p2p/Pb3pp1/1PnPQ2N/1R2PPP1/1N2KB1R w - - +perft 1 29 +perft 2 1122 +perft 3 29265 +perft 4 1127423 +perft 5 30696481 +perft 6 1179677424 + +id gentest-188 +epd r7/p3B2r/1p4k1/q3p2p/Pb3pp1/1PnPQ2N/1R1KPPP1/1N3B1R b - - +perft 1 41 +perft 2 1026 +perft 3 39620 +perft 4 1073189 +perft 5 41804862 +perft 6 1201784084 + +id gentest-189 +epd 5r2/p6r/1p3k2/q3p2p/PB3pp1/1PnPQ2N/1R1KPPP1/1N3B1R w - - +perft 1 31 +perft 2 1133 +perft 3 33454 +perft 4 1191780 +perft 5 36482906 +perft 6 1282575317 + +id gentest-190 +epd 5r2/p6r/1Q6/q3pk1p/PB3pp1/1PnPP2N/1R1K1PP1/1N3B1R b - - +perft 1 40 +perft 2 1505 +perft 3 54434 +perft 4 1992851 +perft 5 71884126 +perft 6 2649499976 + +id gentest-191 +epd 5r2/p4r2/1Q6/q3pk1p/PB3pp1/1PnPP2N/1RK2PP1/1N3B1R w - - +perft 1 41 +perft 2 1356 +perft 3 53762 +perft 4 1834477 +perft 5 69678895 +perft 6 2424831066 + +id gentest-192 +epd 4Qr2/p4r2/8/q3pk2/PB3ppp/1PnPP2N/1RK2PP1/1N3B1R b - - +perft 1 35 +perft 2 1302 +perft 3 39311 +perft 4 1423025 +perft 5 45146902 +perft 6 1639163584 + +id gentest-193 +epd 4Qr2/p1q2r2/8/4pk2/PB4pp/1PnPpP1N/1RK3P1/1N3B1R w - - +perft 1 36 +perft 2 1130 +perft 3 34217 +perft 4 1153685 +perft 5 38123678 +perft 6 1321159221 + +id gentest-194 +epd 5r2/p1qQ1r2/5k2/4p3/PB4pp/1PnPpP1N/1RK3P1/1N3BR1 b - - +perft 1 39 +perft 2 1155 +perft 3 37366 +perft 4 1189959 +perft 5 39705631 +perft 6 1318058707 + +id gentest-195 +epd 5r2/q2Q1r2/5k2/p3p3/PB4pp/1PnPpP1N/1RK3P1/1N3B1R w - - +perft 1 40 +perft 2 1156 +perft 3 44934 +perft 4 1370682 +perft 5 50975284 +perft 6 1631915257 + +id gentest-196 +epd 4r3/q4r2/5k2/p3p3/PB1Q2pp/1PnPpP1N/1RKN2P1/5B1R b - - +perft 1 45 +perft 2 1665 +perft 3 60577 +perft 4 2166254 +perft 5 78077692 +perft 6 2776446317 + +id gentest-197 +epd 4r3/5r2/1q3k2/p3p3/PB1Q3p/1PnPppPN/1RKN4/5B1R w - - +perft 1 39 +perft 2 1482 +perft 3 57365 +perft 4 2157199 +perft 5 82324145 +perft 6 3084141924 + +id gentest-198 +epd 8/4rr2/1q3k2/p3p3/P2Q3p/1PnPppPN/1RKN2B1/7R b - - +perft 1 41 +perft 2 1614 +perft 3 56616 +perft 4 2105288 +perft 5 74901981 +perft 6 2730585307 + +id gentest-199 +epd 8/3r3r/1q3k2/p3p3/P2Q3p/1PnPppPN/1RKN2B1/6R1 w - - +perft 1 39 +perft 2 1630 +perft 3 61802 +perft 4 2460084 +perft 5 91326769 +perft 6 3544106555 + +id gentest-200 +epd 3r4/7r/1q3k2/p3p3/PP1Q3p/2nPppPN/1RKN2B1/1R6 b - - +perft 1 54 +perft 2 2201 +perft 3 97281 +perft 4 3835695 +perft 5 164009993 +perft 6 6368039864 + +id gentest-201 +epd 3r4/7r/q4k2/p3p3/PP1Q3p/2nPppP1/1RKN2B1/1R4N1 w - - +perft 1 41 +perft 2 1838 +perft 3 73310 +perft 4 3155675 +perft 5 122724141 +perft 6 5122498430 + +id gentest-202 +epd 8/7r/q4k2/p3p3/PP1r2Pp/1KnPpp2/1R1N2B1/1R4N1 b - - +perft 1 52 +perft 2 1176 +perft 3 54270 +perft 4 1298865 +perft 5 58692925 +perft 6 1474607869 + +id gentest-203 +epd 8/8/q4k2/p6r/PP1rp1Pp/1KnPpp2/R2N2B1/1R4N1 w - - +perft 1 30 +perft 2 1329 +perft 3 36309 +perft 4 1585324 +perft 5 42328242 +perft 6 1837829086 + +id gentest-204 +epd 8/8/q4k2/p5r1/PP1rp1PN/1KnPp3/R2N2B1/1R6 b - - +perft 1 44 +perft 2 1262 +perft 3 51858 +perft 4 1450959 +perft 5 59987641 +perft 6 1677193062 + +id gentest-205 +epd 8/q7/5k2/p5r1/PP1rp1P1/1KnP1N2/R2Np1B1/1R6 w - - +perft 1 32 +perft 2 1474 +perft 3 43511 +perft 4 1979363 +perft 5 56738280 +perft 6 2566622072 + +id gentest-206 +epd 8/q7/5k2/p5r1/PP1rp1P1/1K1P4/2RNp1B1/1n2N3 b - - +perft 1 41 +perft 2 952 +perft 3 37264 +perft 4 889038 +perft 5 35400629 +perft 6 861140794 + +id gentest-207 +epd 8/q7/5k2/p2r3r/PP2p1P1/1K1P1N2/2R1p1B1/1n2N3 w - - +perft 1 30 +perft 2 1319 +perft 3 36032 +perft 4 1514645 +perft 5 39420646 +perft 6 1618758594 + +id gentest-208 +epd 8/q7/5k2/p2r3r/PP2p1P1/2KP4/2Rnp1B1/4N1N1 b - - +perft 1 51 +perft 2 928 +perft 3 42944 +perft 4 823315 +perft 5 36611625 +perft 6 748113467 + +id gentest-209 +epd 8/q7/5k2/p7/PP1rp1P1/2KP3B/2Rnp2r/4N1N1 w - - +perft 1 16 +perft 2 586 +perft 3 9555 +perft 4 366670 +perft 5 6577001 +perft 6 258217904 + +id gentest-210 +epd 8/8/5k2/p1q5/PP1rp1P1/3P1N1B/2RKp2r/6N1 b - - +perft 1 42 +perft 2 763 +perft 3 28895 +perft 4 566531 +perft 5 21004779 +perft 6 433156046 + +id gentest-211 +epd 8/8/5k2/p1q1N2r/PP1rp1P1/3P4/2RKp3/6N1 w - - +perft 1 24 +perft 2 939 +perft 3 19604 +perft 4 753644 +perft 5 16026136 +perft 6 610216588 + +id gentest-212 +epd 8/8/5k2/p1q1N1N1/PP1rp1P1/3P4/2RKp3/7r b - - +perft 1 47 +perft 2 934 +perft 3 36151 +perft 4 744017 +perft 5 28368703 +perft 6 600039464 + +id gentest-213 +epd 8/6kN/8/2q1N3/Pp1rp1P1/3P4/2RKp3/7r w - - +perft 1 19 +perft 2 861 +perft 3 15432 +perft 4 656842 +perft 5 12401507 +perft 6 507590831 + +id gentest-214 +epd 8/6kN/8/2q5/Pp1rp1P1/2RP1N2/3Kp3/1r6 b - - +perft 1 47 +perft 2 851 +perft 3 36652 +perft 4 670900 +perft 5 27100645 +perft 6 506328039 + +id gentest-215 +epd 8/6kN/8/6q1/Pp1rp3/2RP1N2/3Kp3/1r6 w - - +perft 1 4 +perft 2 155 +perft 3 2848 +perft 4 103116 +perft 5 1935527 +perft 6 69634302 + +id gentest-216 +epd 8/6k1/8/2q3N1/Pp1rp3/2RP1N2/4K3/1r6 b - - +perft 1 42 +perft 2 900 +perft 3 35044 +perft 4 740651 +perft 5 28133646 +perft 6 589858814 + +id gentest-217 +epd 3r4/6k1/8/6N1/Ppq1p3/2RP1N2/5K2/1r6 w - - +perft 1 25 +perft 2 1090 +perft 3 24178 +perft 4 988061 +perft 5 21767914 +perft 6 857628382 + +id gentest-218 +epd 3r4/6k1/8/6N1/Pp1qp2N/2RP4/6K1/1r6 b - - +perft 1 42 +perft 2 870 +perft 3 33611 +perft 4 703958 +perft 5 27706331 +perft 6 585536311 + +id gentest-219 +epd 3r4/5k2/4N3/3q4/Pp2p2N/2RP4/6K1/1r6 w - - +perft 1 27 +perft 2 1075 +perft 3 24878 +perft 4 983771 +perft 5 22462613 +perft 6 870483160 + +id gentest-220 +epd 3r4/5k2/4N1N1/3q4/P1R1p3/1p1P4/6K1/1r6 b - - +perft 1 41 +perft 2 1077 +perft 3 38667 +perft 4 930928 +perft 5 33841449 +perft 6 783503978 + +id gentest-221 +epd 8/5k2/4N1N1/3r2q1/P1R1p3/1p1P4/7K/1r6 w - - +perft 1 28 +perft 2 997 +perft 3 19921 +perft 4 723494 +perft 5 14319437 +perft 6 520323118 + +id gentest-222 +epd 8/5kN1/8/3rq3/P1R1pN2/1p1P4/7K/1r6 b - - +perft 1 40 +perft 2 758 +perft 3 29302 +perft 4 593298 +perft 5 22591938 +perft 6 474012455 + +id gentest-223 +epd 5k2/2R3q1/8/3r4/P3pN2/1p1P4/7K/1r6 w - - +perft 1 24 +perft 2 889 +perft 3 15980 +perft 4 580215 +perft 5 10173527 +perft 6 368429210 + +id gentest-224 +epd 5k2/4R1q1/8/5r2/P3p3/1p1P4/6NK/1r6 b - - +perft 1 43 +perft 2 627 +perft 3 22862 +perft 4 343776 +perft 5 12401221 +perft 6 192352873 + +id gentest-225 +epd 5k2/4R1q1/8/8/P3p2r/1p1P4/7K/1r6 w - - +perft 1 0 +perft 2 0 +perft 3 0 +perft 4 0 +perft 5 0 +perft 6 0 + +id gentest-226 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-227 +epd rnbqkbnr/ppppppp1/7p/8/7P/7N/PPPPPPP1/RNBQKB1R b KQkq - +perft 1 19 +perft 2 418 +perft 3 8955 +perft 4 213604 +perft 5 5117449 +perft 6 132503535 + +id gentest-228 +epd rnbqkbnr/1pppp1p1/p6p/5p2/7P/7N/PPPPPPP1/RNBQKBR1 w Qkq - +perft 1 20 +perft 2 358 +perft 3 8094 +perft 4 165912 +perft 5 4158765 +perft 6 95810744 + +id gentest-229 +epd rnbqkbnr/1p1pp1p1/p6p/2p2p2/7P/2P4N/PP1PPPP1/RNBQKB1R b Qkq - +perft 1 20 +perft 2 458 +perft 3 10414 +perft 4 264849 +perft 5 6615556 +perft 6 182563435 + +id gentest-230 +epd rnbqkbnr/1p1p2p1/4p2p/p1p2p2/7P/2P2P1N/PP1PP1P1/RNBQKB1R w Qkq - +perft 1 24 +perft 2 667 +perft 3 16857 +perft 4 482676 +perft 5 13132163 +perft 6 388285670 + +id gentest-231 +epd rnbqkbnr/1p4p1/3pp2p/p1p2p2/7P/2PP1P1N/PP1NP1P1/R1BQKB1R b Qkq - +perft 1 30 +perft 2 784 +perft 3 23151 +perft 4 638663 +perft 5 19171633 +perft 6 553146401 + +id gentest-232 +epd r1b1kbnr/1pq3p1/2npp2p/p1p2p2/4P2P/2PP1P1N/PP1N2P1/R1BQKB1R w Qkq - +perft 1 29 +perft 2 1031 +perft 3 30910 +perft 4 1053636 +perft 5 32507370 +perft 6 1091601083 + +id gentest-233 +epd r1b1kb1r/1pq1n1p1/2npp2p/p1p2p2/4P2P/2PP1P1N/PP1NB1P1/R1BQ1K1R b kq - +perft 1 33 +perft 2 955 +perft 3 31153 +perft 4 930788 +perft 5 30422817 +perft 6 938862213 + +id gentest-234 +epd r1bqkb1r/1p2n1p1/2npp2p/2p2p2/p3PN1P/2PP1P2/PP1NB1P1/R1BQ1K1R w kq - +perft 1 29 +perft 2 927 +perft 3 28090 +perft 4 904102 +perft 5 28404510 +perft 6 929227278 + +id gentest-235 +epd r2qkb1r/1p1bn1p1/2npp2p/2p2p2/Q3P2P/2PP1P1N/PP1NB1P1/R1B2K1R b kq - +perft 1 35 +perft 2 1306 +perft 3 45609 +perft 4 1642686 +perft 5 57784259 +perft 6 2060759810 + +id gentest-236 +epd r2q1b1r/1p1bnk2/2npp2p/2p2pp1/2Q1P2P/2PP1P1N/PP1NB1P1/R1B2K1R w - - +perft 1 34 +perft 2 1352 +perft 3 47686 +perft 4 1883115 +perft 5 67964398 +perft 6 2670458260 + +id gentest-237 +epd r4b1r/1p1bnk2/1qnpp2p/2p2pp1/2Q1PN1P/2PP1P2/PP1N2P1/R1BB1K1R b - - +perft 1 45 +perft 2 1782 +perft 3 75177 +perft 4 2963978 +perft 5 122154431 +perft 6 4802770826 + +id gentest-238 +epd r3kb1r/1p1b4/1qnpp2p/2pn1pp1/2Q1PN1P/1NPP1P2/PP4P1/R1BB1K1R w - - +perft 1 39 +perft 2 1770 +perft 3 69135 +perft 4 2979618 +perft 5 118000269 +perft 6 4928117816 + +id gentest-239 +epd r3kb1r/1p1b4/1qnpp2p/2p2pp1/1nQ1P2P/PNPP1P2/1P2N1P1/R1BB1K1R b - - +perft 1 41 +perft 2 1586 +perft 3 62376 +perft 4 2469594 +perft 5 96645684 +perft 6 3870626192 + +id gentest-240 +epd 1n1rkb1r/1p1b4/1q1pp2p/N1p2pp1/1nQ1P2P/P1PP1P2/1P2N1P1/R1BB1K1R w - - +perft 1 43 +perft 2 1336 +perft 3 57177 +perft 4 1827435 +perft 5 77485100 +perft 6 2540427138 + +id gentest-241 +epd 1n1rkb1r/1p1bN3/1q1pp2p/2p3p1/1nQ1p2P/P1PP1P2/1P2N1P1/R1BB1K1R b - - +perft 1 33 +perft 2 1526 +perft 3 50921 +perft 4 2304898 +perft 5 77407932 +perft 6 3430521627 + +id gentest-242 +epd 1n1rkbr1/1p1bN3/3pp2p/q1p3p1/1n2p2P/PQPP1P2/1P2N1P1/R1BB1K1R w - - +perft 1 42 +perft 2 1604 +perft 3 67090 +perft 4 2472800 +perft 5 102681196 +perft 6 3717522806 + +id gentest-243 +epd 1n1rkbr1/3bN3/3pp2p/qpp3p1/1nQ1P2P/P1PP4/1P2N1P1/R1BB1K1R b - - +perft 1 31 +perft 2 1307 +perft 3 41463 +perft 4 1749150 +perft 5 56037855 +perft 6 2360270858 + +id gentest-244 +epd 1n1rkbr1/3bN3/1n1pp2p/qpp3p1/2Q1P2P/P1PP4/1P2N1P1/1RBB1K1R w - - +perft 1 42 +perft 2 1291 +perft 3 54224 +perft 4 1707683 +perft 5 71201771 +perft 6 2289366876 + +id gentest-245 +epd 1n1rkbr1/q2bN3/1n1pp2p/1pp3p1/Q3P2P/PPPP4/4N1P1/1RBB1K1R b - - +perft 1 31 +perft 2 1178 +perft 3 37124 +perft 4 1414056 +perft 5 45263132 +perft 6 1730413533 + +id gentest-246 +epd 1n1rkb2/1q1b4/1nNpp1rp/1pp3p1/Q3P2P/PPPP4/4N1P1/1RBB1K1R w - - +perft 1 42 +perft 2 1276 +perft 3 49983 +perft 4 1557524 +perft 5 59937854 +perft 6 1915404587 + +id gentest-247 +epd 1n1rkb2/1q1b4/2Npp1rp/1pp3p1/2n1P2P/PPPPQ3/4N1P1/1RBB1K1R b - - +perft 1 31 +perft 2 1188 +perft 3 37951 +perft 4 1458071 +perft 5 47493366 +perft 6 1832181057 + +id gentest-248 +epd 1n1rkb2/1q1b4/2Npp2r/1pp5/2n1P2p/PPPP4/4N1P1/1RBB1K1R w - - +perft 1 36 +perft 2 1128 +perft 3 36638 +perft 4 1187713 +perft 5 38885470 +perft 6 1296943575 + +id gentest-249 +epd 1n1rkb2/1q1b4/2Npp2r/1pp5/4P2p/nPPP4/4N1P1/1RBB1K1R b - - +perft 1 28 +perft 2 924 +perft 3 27889 +perft 4 903728 +perft 5 28816272 +perft 6 929769807 + +id gentest-250 +epd 3rkb2/1q1b4/3pp2r/1pp1n3/7p/nPPP4/4N1P1/1RBB1K1R w - - +perft 1 26 +perft 2 1038 +perft 3 26307 +perft 4 1026466 +perft 5 26898917 +perft 6 1047269119 + +id gentest-251 +epd 3rkb2/1q1b4/3pp2r/1pp5/2P3np/nP1P4/4N1P1/1RBB1KR1 b - - +perft 1 39 +perft 2 700 +perft 3 27571 +perft 4 565643 +perft 5 22591540 +perft 6 504602847 + +id gentest-252 +epd 3rk3/1q1b2b1/3pp2r/1pp5/2n3np/1P1PB3/4N1P1/1R1B1KR1 w - - +perft 1 24 +perft 2 1155 +perft 3 25157 +perft 4 1168595 +perft 5 27015735 +perft 6 1227835174 + +id gentest-253 +epd 3rk3/1q1b2b1/4p2r/1ppp4/B1P3np/3PB3/4N1P1/1R3KR1 b - - +perft 1 41 +perft 2 1183 +perft 3 48140 +perft 4 1333706 +perft 5 54321267 +perft 6 1494703958 + +id gentest-254 +epd 3rk3/1q1b2b1/7r/1p1pp3/BpP3np/3PB3/4N1P1/5KR1 w - - +perft 1 26 +perft 2 1073 +perft 3 24664 +perft 4 1023884 +perft 5 23347785 +perft 6 979629984 + +id gentest-255 +epd 3rk3/1q4b1/4b2r/1pPpp3/Bp4np/3PB3/4N1P1/5K1R b - - +perft 1 42 +perft 2 1041 +perft 3 42598 +perft 4 1030120 +perft 5 42505078 +perft 6 1031823868 + +id gentest-256 +epd 4k3/3r2b1/1q2b2r/1pPpp3/Bp4np/3P4/4N1P1/5KBR w - - +perft 1 21 +perft 2 846 +perft 3 17253 +perft 4 697548 +perft 5 14989357 +perft 6 611729264 + +id gentest-257 +epd 3rk3/6b1/1q2b2r/1pPpp3/Bp1P2np/7R/4N1P1/5KB1 b - - +perft 1 39 +perft 2 936 +perft 3 36904 +perft 4 848525 +perft 5 34188112 +perft 6 802994381 + +id gentest-258 +epd 4k3/r5b1/1q2b2r/1pPpp3/Bp1P2nR/8/4N1P1/5KB1 w - - +perft 1 22 +perft 2 952 +perft 3 20825 +perft 4 902369 +perft 5 20850061 +perft 6 900833624 + +id gentest-259 +epd 3k4/r5b1/1qP1b2r/1p1pp3/Bp1P2n1/8/4N1PR/5KB1 b - - +perft 1 45 +perft 2 782 +perft 3 33700 +perft 4 678556 +perft 5 29075113 +perft 6 635584074 + +id gentest-260 +epd 3k4/r5b1/2P4r/1pqppb2/Bp1P2n1/2N5/6PR/5KB1 w - - +perft 1 24 +perft 2 1217 +perft 3 28126 +perft 4 1367656 +perft 5 32157613 +perft 6 1517592407 + +id gentest-261 +epd 3k1q2/r5b1/2P4r/1pNppb2/Bp1P2n1/8/6PR/5KB1 b - - +perft 1 51 +perft 2 944 +perft 3 41179 +perft 4 884926 +perft 5 38583900 +perft 6 891896903 + +id gentest-262 +epd 3k4/4qrb1/2P4r/1p1ppb2/Bp1PN1n1/8/6PR/5KB1 w - - +perft 1 24 +perft 2 1038 +perft 3 22391 +perft 4 935521 +perft 5 21164231 +perft 6 880457442 + +id gentest-263 +epd 2k5/2P1qrb1/3N3r/1p1ppb2/Bp1P2n1/8/6PR/5KB1 b - - +perft 1 4 +perft 2 82 +perft 3 3432 +perft 4 67484 +perft 5 2774078 +perft 6 59747507 + +id gentest-264 +epd 2k2q2/2P2rb1/3r4/1p1ppb2/Bp1P2n1/8/5BPR/5K2 w - - +perft 1 21 +perft 2 854 +perft 3 16866 +perft 4 690173 +perft 5 14231684 +perft 6 589290494 + +id gentest-265 +epd 2k2q2/2P2rb1/2r5/1p1ppb2/1p1P2n1/8/5BPR/3BK3 b - - +perft 1 46 +perft 2 1000 +perft 3 44644 +perft 4 988428 +perft 5 43744967 +perft 6 983199533 + +id gentest-266 +epd 2k2q2/2Pb1rb1/2r5/1p1pp3/1p1P2B1/8/5BPn/4K3 w - - +perft 1 17 +perft 2 647 +perft 3 10395 +perft 4 405980 +perft 5 6580211 +perft 6 263736586 + +id gentest-267 +epd 2k2q2/2P2rb1/2r1b3/1p1pP3/1p6/7B/5BPn/4K3 b - - +perft 1 40 +perft 2 604 +perft 3 23621 +perft 4 362345 +perft 5 14501179 +perft 6 230629399 + +id gentest-268 +epd 2k2q2/2P3b1/1B2b3/1p1pP3/1pr2r2/7B/6Pn/4K3 w - - +perft 1 15 +perft 2 598 +perft 3 8478 +perft 4 348811 +perft 5 5126989 +perft 6 214770074 + +id gentest-269 +epd 2k2q2/2P3b1/4b3/1p1pP3/1p2rr2/4B2B/4K1Pn/8 b - - +perft 1 38 +perft 2 345 +perft 3 12216 +perft 4 156664 +perft 5 5957085 +perft 6 86655815 + +id gentest-270 +epd 2k4q/2P3b1/4b3/1p1pP3/1p2rr2/4B2B/6P1/4Kn2 w - - +perft 1 7 +perft 2 227 +perft 3 2279 +perft 4 83063 +perft 5 1058901 +perft 6 40811469 + +id gentest-271 +epd 2k4q/2P3b1/4b3/1p1pP3/1p3r2/4r3/4B1P1/4Kn2 b - - +perft 1 50 +perft 2 231 +perft 3 10830 +perft 4 89503 +perft 5 4053167 +perft 6 42110869 + +id gentest-272 +epd 2k5/2P3b1/4b3/1p1pPr2/1p4P1/4r3/4B3/4Kn1q w - - +perft 1 3 +perft 2 129 +perft 3 780 +perft 4 33059 +perft 5 294542 +perft 6 12376909 + +id gentest-273 +epd 2k5/2P3b1/4b3/1p1pPP2/1p6/8/4r3/3K1n1q b - - +perft 1 40 +perft 2 144 +perft 3 5362 +perft 4 22408 +perft 5 814651 +perft 6 4490635 + +id gentest-274 +epd 2k5/2P3b1/4P3/1p1pP3/1p6/5r2/8/3K1n1q w - - +perft 1 5 +perft 2 176 +perft 3 853 +perft 4 28484 +perft 5 173557 +perft 6 5632567 + +id gentest-275 +epd 2k5/2P1P1b1/8/1p1pP3/1p3r2/8/4K3/5n1q b - - +perft 1 36 +perft 2 259 +perft 3 7388 +perft 4 57305 +perft 5 1706116 +perft 6 15432334 + +id gentest-276 +epd 8/2PkP1b1/8/1p1pP3/1p3r2/3K4/3n4/7q w - - +perft 1 13 +perft 2 391 +perft 3 4619 +perft 4 143831 +perft 5 1790560 +perft 6 57560235 + +id gentest-277 +epd 8/2k1P1b1/8/1p1pP3/1p3rB1/3K4/3n4/7q b - - +perft 1 45 +perft 2 670 +perft 3 27239 +perft 4 387368 +perft 5 14833983 +perft 6 213754364 + +id gentest-278 +epd 5b2/4P3/1k6/1p1pPB2/1p3r2/3K4/3n4/7q w - - +perft 1 21 +perft 2 914 +perft 3 15366 +perft 4 606454 +perft 5 9781151 +perft 6 364188898 + +id gentest-279 +epd 8/8/1k2N3/1p2PB2/1p1p1r2/3K4/3n4/7q b - - +perft 1 40 +perft 2 533 +perft 3 19260 +perft 4 269972 +perft 5 9265806 +perft 6 129304720 + +id gentest-280 +epd 8/8/1k2N3/1p2P3/1p1p2B1/3K1r2/3n4/7q w - - +perft 1 5 +perft 2 184 +perft 3 2372 +perft 4 84596 +perft 5 1195641 +perft 6 40794846 + +id gentest-281 +epd 8/8/1k2N3/1p2P2q/1p1p4/3K4/3nB3/8 b - - +perft 1 28 +perft 2 358 +perft 3 9704 +perft 4 130810 +perft 5 3452986 +perft 6 48704687 + +id gentest-282 +epd 1q6/8/1k6/1pN5/1p1p4/3K4/3nB3/8 w - - +perft 1 15 +perft 2 358 +perft 3 5524 +perft 4 141931 +perft 5 2104055 +perft 6 54720734 + +id gentest-283 +epd 8/8/1k6/1pN1q2B/1p1p4/8/2Kn4/8 b - - +perft 1 34 +perft 2 572 +perft 3 16501 +perft 4 255150 +perft 5 7231284 +perft 6 108220070 + +id gentest-284 +epd 8/8/1k6/1pNq4/1p1p4/8/2K1B3/5n2 w - - +perft 1 21 +perft 2 606 +perft 3 9294 +perft 4 257475 +perft 5 3939591 +perft 6 107444074 + +id gentest-285 +epd 8/8/1kq5/1pN5/1p1p4/5B2/8/3K1n2 b - - +perft 1 25 +perft 2 459 +perft 3 11626 +perft 4 193250 +perft 5 5047908 +perft 6 80460506 + +id gentest-286 +epd 8/2k5/8/1pq5/1p1p4/5B2/4K3/5n2 w - - +perft 1 14 +perft 2 371 +perft 3 4346 +perft 4 118591 +perft 5 1264240 +perft 6 34959161 + +id gentest-287 +epd 8/2k5/2B5/1pq5/3p4/1p6/8/5K2 b - - +perft 1 26 +perft 2 307 +perft 3 7692 +perft 4 84262 +perft 5 2139087 +perft 6 23104145 + +id gentest-288 +epd 8/1B6/4k3/1pq5/3p4/1p6/8/5K2 w - - +perft 1 14 +perft 2 360 +perft 3 4279 +perft 4 105537 +perft 5 1212767 +perft 6 30208208 + +id gentest-289 +epd 8/8/1qB1k3/1p6/3p4/1p6/8/4K3 b - - +perft 1 18 +perft 2 247 +perft 3 5330 +perft 4 67662 +perft 5 1591099 +perft 6 19124885 + +id gentest-290 +epd 8/8/1qB1k3/1p6/3p4/1p6/4K3/8 w - - +perft 1 17 +perft 2 296 +perft 3 4165 +perft 4 91405 +perft 5 1151927 +perft 6 27001740 + +id gentest-291 +epd 8/1B6/2q1k3/1p6/3p4/1p6/8/3K4 b - - +perft 1 29 +perft 2 239 +perft 3 5525 +perft 4 53185 +perft 5 1275362 +perft 6 13275339 + +id gentest-292 +epd 8/1B6/8/1p1qk3/3p4/1p6/4K3/8 w - - +perft 1 11 +perft 2 236 +perft 3 2332 +perft 4 54943 +perft 5 558376 +perft 6 13646443 + +id gentest-293 +epd 8/8/8/1p2k3/3p4/1p6/6B1/5K2 b - - +perft 1 8 +perft 2 95 +perft 3 876 +perft 4 11946 +perft 5 118080 +perft 6 1553341 + +id gentest-294 +epd 8/8/8/1p3k2/3p4/1p6/5KB1/8 w - - +perft 1 15 +perft 2 138 +perft 3 1959 +perft 4 18301 +perft 5 257152 +perft 6 2466124 + +id gentest-295 +epd 8/8/2B5/5k2/1p1p4/1p6/8/6K1 b - - +perft 1 9 +perft 2 144 +perft 3 1302 +perft 4 18073 +perft 5 166603 +perft 6 2222943 + +id gentest-296 +epd 8/5k2/8/8/1p1p4/1p6/6B1/6K1 w - - +perft 1 13 +perft 2 123 +perft 3 1650 +perft 4 14461 +perft 5 197310 +perft 6 1795332 + +id gentest-297 +epd 8/8/4k3/8/1p1p4/1p6/8/5B1K b - - +perft 1 10 +perft 2 97 +perft 3 883 +perft 4 9837 +perft 5 91520 +perft 6 1087866 + +id gentest-298 +epd 8/8/4k3/8/1p1p4/8/6B1/1b5K w - - +perft 1 10 +perft 2 138 +perft 3 1576 +perft 4 22649 +perft 5 269252 +perft 6 3961881 + +id gentest-299 +epd 8/8/8/3Bk3/1p1p4/8/7K/1b6 b - - +perft 1 14 +perft 2 231 +perft 3 3329 +perft 4 45501 +perft 5 665962 +perft 6 8707136 + +id gentest-300 +epd 8/8/4b3/4k3/1p1pB3/8/7K/8 w - - +perft 1 17 +perft 2 284 +perft 3 3835 +perft 4 60566 +perft 5 784800 +perft 6 12170166 + +id gentest-301 +epd 8/8/8/4kb2/1p1p4/8/8/1B5K b - - +perft 1 18 +perft 2 139 +perft 3 2115 +perft 4 21809 +perft 5 329081 +perft 6 3630837 + +id gentest-302 +epd 8/8/6b1/3k1B2/1p1p4/8/8/7K w - - +perft 1 13 +perft 2 170 +perft 3 1925 +perft 4 25908 +perft 5 307807 +perft 6 4302673 + +id gentest-303 +epd 8/8/4k3/7B/1p1p4/8/8/7K b - - +perft 1 9 +perft 2 90 +perft 3 762 +perft 4 8933 +perft 5 74705 +perft 6 922228 + +id gentest-304 +epd 8/5B2/8/4k3/1p6/3p4/8/7K w - - +perft 1 12 +perft 2 99 +perft 3 1177 +perft 4 10020 +perft 5 121190 +perft 6 1111155 + +id gentest-305 +epd 8/8/8/1B2k3/8/1p1p4/8/7K b - - +perft 1 10 +perft 2 102 +perft 3 947 +perft 4 10553 +perft 5 104312 +perft 6 1218788 + +id gentest-306 +epd 8/8/8/8/2B2k2/1p1p4/8/7K w - - +perft 1 11 +perft 2 99 +perft 3 1149 +perft 4 10014 +perft 5 117631 +perft 6 1079896 + +id gentest-307 +epd 6B1/8/8/8/6k1/1p1p4/6K1/8 b - - +perft 1 7 +perft 2 89 +perft 3 720 +perft 4 8957 +perft 5 80437 +perft 6 1023277 + +id gentest-308 +epd 6B1/8/8/8/7k/1p1p1K2/8/8 w - - +perft 1 11 +perft 2 56 +perft 3 730 +perft 4 5198 +perft 5 69538 +perft 6 634670 + +id gentest-309 +epd 8/8/8/6k1/8/1B1p2K1/8/8 b - - +perft 1 6 +perft 2 95 +perft 3 631 +perft 4 9412 +perft 5 74180 +perft 6 1036141 + +id gentest-310 +epd 8/5B2/8/6k1/8/6K1/8/3n4 w - - +perft 1 13 +perft 2 111 +perft 3 1549 +perft 4 15421 +perft 5 206318 +perft 6 2158321 + +id gentest-311 +epd 8/8/7k/8/8/6K1/B7/3n4 b - - +perft 1 9 +perft 2 121 +perft 3 1165 +perft 4 15779 +perft 5 154490 +perft 6 2129782 + +id gentest-312 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-313 +epd rnbqkbnr/ppp1pppp/8/3p4/6P1/5P2/PPPPP2P/RNBQKBNR b KQkq - +perft 1 27 +perft 2 541 +perft 3 15438 +perft 4 338556 +perft 5 10132901 +perft 6 239760596 + +id gentest-314 +epd rnbqkbnr/p1p2ppp/8/1p1pp3/6P1/1P3P2/P1PPP2P/RNBQKBNR w KQkq - +perft 1 21 +perft 2 798 +perft 3 17622 +perft 4 654393 +perft 5 15501201 +perft 6 570712190 + +id gentest-315 +epd r1bqkbnr/p1p2ppp/2n5/1p1pp3/6P1/PP3P2/2PPP1BP/RNBQK1NR b KQkq - +perft 1 39 +perft 2 759 +perft 3 29231 +perft 4 624373 +perft 5 24042145 +perft 6 558450140 + +id gentest-316 +epd r2qkbnr/p1p2ppp/2n5/1p2pb2/3p2P1/PP3P2/2PPP2P/RNBQKBNR w KQkq - +perft 1 19 +perft 2 811 +perft 3 16324 +perft 4 671745 +perft 5 14627325 +perft 6 590968180 + +id gentest-317 +epd r2qkbnr/p1p2ppp/2n5/1p3b2/3pp1PP/PPN2P2/2PPP3/R1BQKBNR b KQkq - +perft 1 43 +perft 2 1001 +perft 3 41787 +perft 4 1002742 +perft 5 41026679 +perft 6 1023707366 + +id gentest-318 +epd r3kb1r/p1p2ppp/2n4n/1p3bq1/P2pp1PP/1PN2P2/2PPP3/R1BQKBNR w KQkq - +perft 1 26 +perft 2 1166 +perft 3 30119 +perft 4 1307169 +perft 5 34774744 +perft 6 1484852572 + +id gentest-319 +epd r3kbr1/p1p2ppp/2n4n/1p3bq1/P2pp1PP/1PN2P1R/2PPPK2/R1BQ1BN1 b q - +perft 1 45 +perft 2 1146 +perft 3 49887 +perft 4 1305153 +perft 5 55459530 +perft 6 1496041822 + +id gentest-320 +epd r1bnkbr1/p1p2ppp/7n/1p4q1/P2pp1PP/1PN2P1R/1BPPPK2/R2Q1BN1 w q - +perft 1 30 +perft 2 1346 +perft 3 38069 +perft 4 1631657 +perft 5 47004887 +perft 6 1960693269 + +id gentest-321 +epd r1bnk1r1/p1p2ppp/7n/1p4q1/Pb1pp1PP/BPN2P1R/2PPPK2/RQ3BN1 b q - +perft 1 49 +perft 2 1329 +perft 3 61475 +perft 4 1710636 +perft 5 75644036 +perft 6 2155923454 + +id gentest-322 +epd r1bnk2r/p1p2ppp/7n/1p5q/Pb1pp1PP/BPN2P1R/Q1PPPK2/R4BN1 w q - +perft 1 29 +perft 2 1306 +perft 3 36695 +perft 4 1580613 +perft 5 45452027 +perft 6 1904453228 + +id gentest-323 +epd r1bn3r/p1pk1ppp/7n/1P1N3q/1b1pp1PP/BP3P1R/Q1PPPK2/R4BN1 b - - +perft 1 41 +perft 2 1290 +perft 3 49739 +perft 4 1580965 +perft 5 61328183 +perft 6 1982513166 + +id gentest-324 +epd r1bn3r/p1pk1ppp/7n/1P1N4/1b1ppqPP/BP3P1R/Q1PPPK2/4RBN1 w - - +perft 1 30 +perft 2 1248 +perft 3 34827 +perft 4 1433971 +perft 5 41976876 +perft 6 1710295694 + +id gentest-325 +epd r1bn3r/p1p2ppp/1N1k3n/1P4P1/1b1ppq1P/BP3P1R/Q1PPPK2/4RBN1 b - - +perft 1 46 +perft 2 1114 +perft 3 46048 +perft 4 1185296 +perft 5 49263201 +perft 6 1328847092 + +id gentest-326 +epd r1bn3r/2p3pp/1N1k2Pn/pP3p2/1b1ppq1P/BP3P1R/Q1PPPK2/4RBN1 w - - +perft 1 27 +perft 2 977 +perft 3 23522 +perft 4 878297 +perft 5 22336924 +perft 6 849941694 + +id gentest-327 +epd r2n3r/1bp3pp/1N1k2Pn/pP3p2/1b1ppq1P/BP3P1R/2PPPK2/1Q1R1BN1 b - - +perft 1 40 +perft 2 925 +perft 3 34689 +perft 4 851149 +perft 5 32863577 +perft 6 849634215 + +id gentest-328 +epd r2n3r/1bp3pp/1N1k2Pn/pP3p2/1b1ppq1P/BP3P1R/2PPPK2/1Q2RBN1 w - - +perft 1 27 +perft 2 979 +perft 3 23124 +perft 4 875724 +perft 5 21832529 +perft 6 845477564 + +id gentest-329 +epd r2n3r/1bp3pp/1N1k2Pn/pP3p2/1b1pp2P/BP3PqR/2PPP1B1/1Q2RKN1 b - - +perft 1 44 +perft 2 1135 +perft 3 45297 +perft 4 1200334 +perft 5 48267173 +perft 6 1321729425 + +id gentest-330 +epd r1Nn3r/1bpk2pp/6P1/pP3p2/1b1pp1nP/BP3PqR/2PPP1B1/1Q2RKN1 w - - +perft 1 28 +perft 2 1345 +perft 3 33864 +perft 4 1604160 +perft 5 42047385 +perft 6 1957350889 + +id gentest-331 +epd r2n3r/1bp1k1pp/1N4P1/pP3p2/1b1pp1nP/BP1P1PqR/2P1P1B1/1Q2RKN1 b - - +perft 1 49 +perft 2 1242 +perft 3 55490 +perft 4 1445881 +perft 5 64846110 +perft 6 1747657317 + +id gentest-332 +epd r6r/1bp1knpp/1N4P1/pP3p2/1b1p2nP/BP1P1pqR/1QP1P1B1/4RKN1 w - - +perft 1 31 +perft 2 1603 +perft 3 45495 +perft 4 2263658 +perft 5 66584818 +perft 6 3218953440 + +id gentest-333 +epd r6r/1bpk1npp/6P1/pP1N1p2/1b1p2nP/BP1P1pqR/2P1P1B1/Q3RKN1 b - - +perft 1 61 +perft 2 1963 +perft 3 106893 +perft 4 3419587 +perft 5 176942430 +perft 6 5703606317 + +id gentest-334 +epd r2n3r/1bpk2pp/6P1/pP1N1p2/1b1p1qnP/1P1P1p1R/2P1P1B1/Q1B1RKN1 w - - +perft 1 37 +perft 2 1758 +perft 3 58970 +perft 4 2740662 +perft 5 91290830 +perft 6 4178493281 + +id gentest-335 +epd r2n3r/1bNk2pp/6P1/pP3p2/3pPqnP/1P1P1p1R/2P3B1/Q1B1bKN1 b - e3 +perft 1 50 +perft 2 1630 +perft 3 76411 +perft 4 2468318 +perft 5 113665410 +perft 6 3693285671 + +id gentest-336 +epd r2n3r/1bNk2pp/6P1/pP3p2/3pPq1P/1P1PB2R/2P3p1/Q3bKN1 w - - +perft 1 3 +perft 2 129 +perft 3 4008 +perft 4 165481 +perft 5 5247775 +perft 6 214019551 + +id gentest-337 +epd r2n1r2/1bNk2pp/6P1/pP3p2/3pPq1P/1P1PBR2/2P3p1/Q3K1N1 b - - +perft 1 39 +perft 2 1418 +perft 3 53579 +perft 4 1901192 +perft 5 71359399 +perft 6 2503173498 + +id gentest-338 +epd r2n1r2/1bNk2pp/6P1/pP3p2/Q2pP2P/1P1PBR1q/2P3p1/4K1N1 w - - +perft 1 39 +perft 2 1222 +perft 3 44683 +perft 4 1415044 +perft 5 51039263 +perft 6 1643061120 + +id gentest-339 +epd r1bn1r2/2Nk2pp/6P1/pP3p2/3QP2P/1P1PBR1q/2P1N1p1/4K3 b - - +perft 1 2 +perft 2 95 +perft 3 2475 +perft 4 101758 +perft 5 2829591 +perft 6 113984424 + +id gentest-340 +epd r1bn1r2/2k3p1/6p1/pP3p2/4P2P/1P1PBR1q/2P1N1p1/Q3K3 w - - +perft 1 47 +perft 2 1384 +perft 3 53146 +perft 4 1648415 +perft 5 60262481 +perft 6 1952220550 + +id gentest-341 +epd r1bn1r2/2k3p1/6p1/pP3p2/4P2P/1P1P3R/2P1NB2/Q3K1n1 b - - +perft 1 27 +perft 2 1086 +perft 3 26365 +perft 4 1002897 +perft 5 25397051 +perft 6 934271658 + +id gentest-342 +epd r1b2r2/3k2p1/2n3p1/pP3p2/3BP2P/1P1P3R/2P1N3/Q3K1n1 w - - +perft 1 42 +perft 2 1256 +perft 3 49324 +perft 4 1412942 +perft 5 53460187 +perft 6 1518672410 + +id gentest-343 +epd r1br4/3k2p1/2n3p1/pP3p2/Q2BP2P/1P1P2R1/2P1N3/4K1n1 b - - +perft 1 26 +perft 2 1029 +perft 3 26726 +perft 4 1027974 +perft 5 27262148 +perft 6 1029168729 + +id gentest-344 +epd r1br4/2k3p1/6p1/pP3p2/1Q1nP2P/1P1P2R1/2P1N3/4K1n1 w - - +perft 1 34 +perft 2 895 +perft 3 27829 +perft 4 750360 +perft 5 23299508 +perft 6 638897846 + +id gentest-345 +epd r1br4/2k3p1/6p1/pn3pR1/1Q1PP2P/1P6/2P1N3/4K1n1 b - - +perft 1 32 +perft 2 1023 +perft 3 26693 +perft 4 845722 +perft 5 22174914 +perft 6 696910026 + +id gentest-346 +epd r1b1r3/1k4p1/6p1/pn3pR1/2QPP2P/1P6/2P1N3/4K1n1 w - - +perft 1 35 +perft 2 863 +perft 3 28827 +perft 4 712577 +perft 5 23430242 +perft 6 597212864 + +id gentest-347 +epd r1Qr4/1k4p1/6p1/pn3R2/3PP2P/1P6/2P1N3/4K1n1 b - - +perft 1 5 +perft 2 164 +perft 3 3975 +perft 4 117042 +perft 5 2911569 +perft 6 81260482 + +id gentest-348 +epd r1kr4/6p1/6p1/p4R2/3PP2P/1Pn5/4N3/4K1n1 w - - +perft 1 26 +perft 2 693 +perft 3 15435 +perft 4 405444 +perft 5 8652645 +perft 6 231031042 + +id gentest-349 +epd r1kr4/6p1/6p1/R7/1P1PP2P/8/4N3/3nK1n1 b - - +perft 1 24 +perft 2 572 +perft 3 14373 +perft 4 307219 +perft 5 8220109 +perft 6 167931363 + +id gentest-350 +epd 2kr4/6p1/6p1/r6P/1P1PP3/8/4N3/3nK1n1 w - - +perft 1 14 +perft 2 453 +perft 3 5864 +perft 4 183278 +perft 5 2284288 +perft 6 70143890 + +id gentest-351 +epd 2k2r2/6p1/6p1/r6P/1P1PP3/8/3K4/3n2N1 b - - +perft 1 36 +perft 2 496 +perft 3 16452 +perft 4 209109 +perft 5 6595995 +perft 6 82380893 + +id gentest-352 +epd 2k2r2/6p1/8/r3P1pP/1P1P4/2n5/3K4/6N1 w - - +perft 1 14 +perft 2 494 +perft 3 6047 +perft 4 200017 +perft 5 2462141 +perft 6 77962826 + +id gentest-353 +epd 2k2r2/6p1/4P3/r5pP/1P1P4/7N/n2K4/8 b - - +perft 1 30 +perft 2 421 +perft 3 12241 +perft 4 165001 +perft 5 4667154 +perft 6 63083594 + +id gentest-354 +epd 1k3r2/6p1/4P3/r6P/1P1P2p1/3K3N/n7/8 w - - +perft 1 15 +perft 2 509 +perft 3 6757 +perft 4 211370 +perft 5 2824791 +perft 6 83992717 + +id gentest-355 +epd 2k2r2/6p1/4P3/r2P3P/1P4p1/7N/n1K5/8 b - - +perft 1 30 +perft 2 405 +perft 3 11863 +perft 4 153995 +perft 5 4376351 +perft 6 57147838 + +id gentest-356 +epd 5r2/1k4p1/4P3/r2P3P/1P4p1/7N/nK6/8 w - - +perft 1 13 +perft 2 452 +perft 3 5805 +perft 4 183104 +perft 5 2418232 +perft 6 71819464 + +id gentest-357 +epd 5r2/1k6/4P3/r2P2pP/1P2N1p1/8/nK6/8 b - - +perft 1 33 +perft 2 540 +perft 3 14857 +perft 4 222436 +perft 5 6016135 +perft 6 85960459 + +id gentest-358 +epd 2k2r2/8/r3P3/1P1P2pP/4N1p1/8/nK6/8 w - - +perft 1 17 +perft 2 431 +perft 3 6641 +perft 4 166016 +perft 5 2435861 +perft 6 59924677 + +id gentest-359 +epd 2k5/4P3/r7/1PNP2pP/6p1/5r2/nK6/8 b - - +perft 1 32 +perft 2 579 +perft 3 14803 +perft 4 250268 +perft 5 6055912 +perft 6 98641214 + +id gentest-360 +epd 2k1N3/8/r7/1PNP2pP/6p1/5r2/nK6/8 w - - +perft 1 19 +perft 2 549 +perft 3 9244 +perft 4 245377 +perft 5 3898537 +perft 6 100692125 + +id gentest-361 +epd 2k1N3/1N6/r7/1P1P2pP/8/5rp1/n7/K7 b - - +perft 1 32 +perft 2 393 +perft 3 9985 +perft 4 124304 +perft 5 3169457 +perft 6 40920133 + +id gentest-362 +epd 2kNN3/r7/8/1P1P2pP/8/2n2rp1/8/K7 w - - +perft 1 1 +perft 2 36 +perft 3 474 +perft 4 15018 +perft 5 207452 +perft 6 6280867 + +id gentest-363 +epd 2kNN3/r7/8/1P1P2pP/8/2n1r1p1/2K5/8 b - - +perft 1 36 +perft 2 519 +perft 3 16477 +perft 4 237605 +perft 5 7169511 +perft 6 103601526 + +id gentest-364 +epd 2kNN3/5r2/7P/1P1n2p1/8/4r1p1/2K5/8 w - - +perft 1 15 +perft 2 512 +perft 3 7303 +perft 4 231451 +perft 5 3380632 +perft 6 103675425 + +id gentest-365 +epd 2Nk4/5r2/7P/1P1n2p1/8/4r1p1/2K5/8 b - - +perft 1 39 +perft 2 393 +perft 3 14022 +perft 4 141087 +perft 5 4652254 +perft 6 48401336 + +id gentest-366 +epd 2Nk4/4r3/7P/1P1n2p1/8/6p1/1K6/4r3 w - - +perft 1 10 +perft 2 363 +perft 3 3612 +perft 4 118116 +perft 5 1235124 +perft 6 38641485 + +id gentest-367 +epd 3k4/N2r4/7P/1P1n2p1/8/K5p1/8/4r3 b - - +perft 1 35 +perft 2 261 +perft 3 8089 +perft 4 68491 +perft 5 2120030 +perft 6 19771454 + +id gentest-368 +epd 4k3/5r2/2N4P/1P1n2p1/8/K5p1/8/4r3 w - - +perft 1 14 +perft 2 554 +perft 3 6287 +perft 4 226773 +perft 5 2559080 +perft 6 86572950 + +id gentest-369 +epd 4k2R/5r2/2N1r3/1P1n2p1/8/K5p1/8/8 b - - +perft 1 2 +perft 2 49 +perft 3 1451 +perft 4 30786 +perft 5 924634 +perft 6 18672728 + +id gentest-370 +epd 6R1/3k1r2/2N1r3/1P1n2p1/8/K7/6p1/8 w - - +perft 1 23 +perft 2 763 +perft 3 15176 +perft 4 498458 +perft 5 9562680 +perft 6 315950613 + +id gentest-371 +epd 6R1/3kNr2/4r3/1P1n4/6p1/8/1K4p1/8 b - - +perft 1 39 +perft 2 851 +perft 3 30034 +perft 4 604944 +perft 5 20553909 +perft 6 397015177 + +id gentest-372 +epd 3R4/4Nr2/1k2r3/1P1n4/6p1/8/1K4p1/8 w - - +perft 1 23 +perft 2 759 +perft 3 15841 +perft 4 530768 +perft 5 10662729 +perft 6 359371717 + +id gentest-373 +epd 3R4/4Nr2/1kr5/1P1n4/6p1/1K6/6p1/8 b - - +perft 1 40 +perft 2 818 +perft 3 26483 +perft 4 527481 +perft 5 17042884 +perft 6 334213093 + +id gentest-374 +epd 8/k3Nr2/2rR4/1P1n4/6p1/1K6/8/6n1 w - - +perft 1 20 +perft 2 576 +perft 3 11472 +perft 4 334167 +perft 5 6738685 +perft 6 196416999 + +id gentest-375 +epd 8/k4r2/3r4/1P1N4/K5p1/8/8/6n1 b - - +perft 1 30 +perft 2 362 +perft 3 10487 +perft 4 116524 +perft 5 3333637 +perft 6 36688998 + +id gentest-376 +epd 8/k2rN3/5r2/1P6/K5p1/8/8/6n1 w - - +perft 1 11 +perft 2 270 +perft 3 2907 +perft 4 79975 +perft 5 845937 +perft 6 23835832 + +id gentest-377 +epd 3r4/k3N3/5r2/1P6/6p1/2K5/8/6n1 b - - +perft 1 36 +perft 2 410 +perft 3 10880 +perft 4 130245 +perft 5 3590156 +perft 6 41349250 + +id gentest-378 +epd 5r2/k7/8/1P3N2/6p1/2Kr4/8/6n1 w - - +perft 1 5 +perft 2 146 +perft 3 1846 +perft 4 52164 +perft 5 578940 +perft 6 15992114 + +id gentest-379 +epd r7/k5N1/8/1P6/6p1/3r4/2K5/6n1 b - - +perft 1 28 +perft 2 245 +perft 3 6241 +perft 4 60472 +perft 5 1612682 +perft 6 16203952 + +id gentest-380 +epd 1r6/k5N1/3r4/1P6/6p1/8/8/1K4n1 w - - +perft 1 10 +perft 2 279 +perft 3 2755 +perft 4 75567 +perft 5 775187 +perft 6 21415063 + +id gentest-381 +epd 1r1N4/k7/8/1P1r4/6p1/8/8/1K4n1 b - - +perft 1 25 +perft 2 213 +perft 3 4894 +perft 4 44352 +perft 5 1127021 +perft 6 10826146 + +id gentest-382 +epd 1r6/k7/8/1P6/6p1/8/8/K2r2n1 w - - +perft 1 2 +perft 2 58 +perft 3 298 +perft 4 7794 +perft 5 43230 +perft 6 1186326 + +id gentest-383 +epd 1r6/k7/8/1P6/6p1/2K5/8/r5n1 b - - +perft 1 27 +perft 2 210 +perft 3 5621 +perft 4 33228 +perft 5 893481 +perft 6 5188840 + +id gentest-384 +epd 8/k7/4r3/1P6/2K3p1/8/8/r5n1 w - - +perft 1 8 +perft 2 229 +perft 3 1330 +perft 4 37234 +perft 5 213803 +perft 6 6037672 + +id gentest-385 +epd 4r3/k7/1P6/8/6p1/3K4/8/r5n1 b - - +perft 1 5 +perft 2 28 +perft 3 892 +perft 4 5233 +perft 5 164652 +perft 6 935323 + +id gentest-386 +epd k3r3/r7/1P6/8/6p1/8/2K5/6n1 w - - +perft 1 10 +perft 2 278 +perft 3 1711 +perft 4 43734 +perft 5 274876 +perft 6 7089235 + +id gentest-387 +epd k3r3/r7/1P6/8/6p1/7n/2K5/8 b - - +perft 1 33 +perft 2 281 +perft 3 7970 +perft 4 47817 +perft 5 1264909 +perft 6 7861559 + +id gentest-388 +epd k3r3/8/1P6/3r4/6p1/3K3n/8/8 w - - +perft 1 3 +perft 2 102 +perft 3 582 +perft 4 16090 +perft 5 99719 +perft 6 2778796 + +id gentest-389 +epd k3r3/8/1P6/r7/1K4p1/7n/8/8 b - - +perft 1 33 +perft 2 167 +perft 3 4261 +perft 4 25673 +perft 5 691794 +perft 6 4115471 + +id gentest-390 +epd r7/1k6/1P6/K7/6p1/7n/8/8 w - - +perft 1 2 +perft 2 45 +perft 3 217 +perft 4 4558 +perft 5 26972 +perft 6 568095 + +id gentest-391 +epd 5r2/1k6/1P6/8/K5p1/7n/8/8 b - - +perft 1 25 +perft 2 118 +perft 3 2615 +perft 4 15008 +perft 5 328754 +perft 6 2013955 + +id gentest-392 +epd 5r2/1P6/1k6/8/K5p1/7n/8/8 w - - +perft 1 7 +perft 2 132 +perft 3 1222 +perft 4 24270 +perft 5 261782 +perft 6 5161617 + +id gentest-393 +epd 1r6/8/1k6/8/1K4p1/7n/8/8 b - - +perft 1 18 +perft 2 91 +perft 3 2085 +perft 4 10276 +perft 5 243225 +perft 6 1363118 + +id gentest-394 +epd 7r/8/1k6/6n1/2K3p1/8/8/8 w - - +perft 1 6 +perft 2 168 +perft 3 1027 +perft 4 27110 +perft 5 159509 +perft 6 4107071 + +id gentest-395 +epd 7r/1k6/3K4/6n1/6p1/8/8/8 b - - +perft 1 27 +perft 2 136 +perft 3 3428 +perft 4 16684 +perft 5 405669 +perft 6 2159625 + +id gentest-396 +epd k7/3K4/8/6n1/6p1/8/7r/8 w - - +perft 1 7 +perft 2 163 +perft 3 801 +perft 4 17800 +perft 5 93543 +perft 6 2076111 + +id gentest-397 +epd k2K4/8/8/6n1/6p1/8/4r3/8 b - - +perft 1 24 +perft 2 81 +perft 3 1767 +perft 4 7499 +perft 5 165426 +perft 6 758525 + +id gentest-398 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-399 +epd rnbqkbnr/1ppppppp/p7/8/8/1P6/PBPPPPPP/RN1QKBNR b KQkq - +perft 1 19 +perft 2 511 +perft 3 10922 +perft 4 294596 +perft 5 7042743 +perft 6 195727106 + +id gentest-400 +epd rnbqkbnr/1p1p1ppp/p1p5/4p3/P7/1P6/1BPPPPPP/RN1QKBNR w KQkq - +perft 1 26 +perft 2 778 +perft 3 20611 +perft 4 621649 +perft 5 17065425 +perft 6 525950400 + +id gentest-401 +epd rnbqkb1r/1p1p1ppp/p1p2n2/4p3/P7/1P2P1P1/1BPP1P1P/RN1QKBNR b KQkq - +perft 1 28 +perft 2 1026 +perft 3 30801 +perft 4 1095857 +perft 5 34245244 +perft 6 1205146195 + +id gentest-402 +epd rnb1kb1r/1p1p1ppp/p1p2n2/1q2p3/P5P1/1P2P3/1BPP1P1P/RN1QKBNR w KQkq - +perft 1 34 +perft 2 1156 +perft 3 36880 +perft 4 1281512 +perft 5 41147926 +perft 6 1438787000 + +id gentest-403 +epd rnb1kb1r/1p1p1ppp/p1p2n2/4p3/P5P1/1qB1P3/2PPNP1P/RN1QKB1R b KQkq - +perft 1 38 +perft 2 1008 +perft 3 38047 +perft 4 1102194 +perft 5 41379431 +perft 6 1262436649 + +id gentest-404 +epd rnb1k2r/1p1p1ppp/pbp2n2/4p3/P4PP1/1qB1P3/2PPN2P/RN1QKB1R w KQkq - +perft 1 27 +perft 2 1093 +perft 3 31648 +perft 4 1264174 +perft 5 38255332 +perft 6 1502484971 + +id gentest-405 +epd rnb2k1r/1p1p1ppp/pbp2n2/4p3/P4PP1/1qB1P3/2PPQ2P/RN2KBNR b KQ - +perft 1 40 +perft 2 1225 +perft 3 47546 +perft 4 1530762 +perft 5 58722822 +perft 6 1950798405 + +id gentest-406 +epd rnb2k1r/1p1p1pp1/p1p2n1p/2b1p1P1/P4P2/1qB1P3/2PPQ2P/RN2KBNR w KQ - +perft 1 36 +perft 2 1559 +perft 3 56128 +perft 4 2293549 +perft 5 83128822 +perft 6 3275368833 + +id gentest-407 +epd rnb2k1r/1p1p1pp1/2p2n1p/1pb1pPP1/P7/1qB1P3/2PP3P/RN2KBNR b KQ - +perft 1 45 +perft 2 1334 +perft 3 57679 +perft 4 1681259 +perft 5 70241389 +perft 6 2044282765 + +id gentest-408 +epd rnb2k2/1p1p1p1r/2p2nPp/1pb1p1P1/P7/1qB1P3/2PP3P/RN2KBNR w KQ - +perft 1 33 +perft 2 1422 +perft 3 44995 +perft 4 1884769 +perft 5 58929251 +perft 6 2418166796 + +id gentest-409 +epd rnb2k2/bp1p1p1P/2p2P1p/1p2p3/P7/1qB1P3/2PP3P/RN2KBNR b KQ - +perft 1 25 +perft 2 746 +perft 3 18235 +perft 4 534014 +perft 5 13642878 +perft 6 400025565 + +id gentest-410 +epd r1b2k2/bp1p1p1P/n1p2P1p/4B3/Pp6/1q2P3/2PP3P/RN2KBNR w KQ - +perft 1 38 +perft 2 967 +perft 3 32474 +perft 4 835636 +perft 5 27121398 +perft 6 715986873 + +id gentest-411 +epd r1b1k2Q/bp1p1p2/n1pB1P1p/8/Pp6/1q2P3/2PP3P/RN2KBNR b KQ - +perft 1 0 +perft 2 0 +perft 3 0 +perft 4 0 +perft 5 0 +perft 6 0 + +id gentest-412 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-413 +epd rnbqkbnr/pppp1ppp/4p3/8/4P3/5P2/PPPP2PP/RNBQKBNR b KQkq - +perft 1 30 +perft 2 751 +perft 3 22822 +perft 4 586355 +perft 5 18209820 +perft 6 483925829 + +id gentest-414 +epd rnbqkbnr/1ppp1pp1/4p2p/p7/4P3/5P2/PPPP1KPP/RNBQ1BNR w kq - +perft 1 29 +perft 2 866 +perft 3 24021 +perft 4 726774 +perft 5 20567096 +perft 6 634517419 + +id gentest-415 +epd rnbqkbnr/1ppp1pp1/4p3/p6p/1P2P3/5P2/P1PPQKPP/RNB2BNR b kq - +perft 1 32 +perft 2 866 +perft 3 28056 +perft 4 807478 +perft 5 26471915 +perft 6 800412443 + +id gentest-416 +epd rnbqkbnr/1ppp4/4p1p1/p4p1p/1P2P3/5P2/P1PP1KPP/RNBQ1BNR w kq - +perft 1 32 +perft 2 1082 +perft 3 32640 +perft 4 1107158 +perft 5 33509021 +perft 6 1149251355 + +id gentest-417 +epd rnbqk1nr/1ppp4/4p1p1/pPb2p1p/3PP3/5P2/P1P2KPP/RNBQ1BNR b kq - +perft 1 34 +perft 2 1142 +perft 3 38630 +perft 4 1279346 +perft 5 43362539 +perft 6 1431196358 + +id gentest-418 +epd rnbqk2r/1ppp4/1b2p1pn/pP3p1p/3PP3/5PK1/P1P3PP/RNBQ1BNR w kq - +perft 1 32 +perft 2 979 +perft 3 27778 +perft 4 885259 +perft 5 25516750 +perft 6 836792697 + +id gentest-419 +epd rnbq3r/1ppp1k2/1b2p1pn/pP3p1p/3PP3/5PK1/P1P1Q1PP/RNB2BNR b - - +perft 1 36 +perft 2 1012 +perft 3 35127 +perft 4 999959 +perft 5 34334271 +perft 6 1000453608 + +id gentest-420 +epd rnbq1r2/1ppp1k2/1b2p2n/pP3ppp/3PP3/5PK1/PBP1Q1PP/RN3BNR w - - +perft 1 26 +perft 2 800 +perft 3 21175 +perft 4 664118 +perft 5 18469608 +perft 6 591122637 + +id gentest-421 +epd rnb2r2/1pppqk2/1b2p2n/pP3ppp/P2PP3/5PK1/1BPNQ1PP/R4BNR b - - +perft 1 34 +perft 2 918 +perft 3 31948 +perft 4 885742 +perft 5 31053279 +perft 6 891669868 + +id gentest-422 +epd rnb2r2/1pppqk2/1b2p3/pP3pp1/P2PP1np/5P1K/1BPNQ1PP/R4BNR w - - +perft 1 26 +perft 2 927 +perft 3 24504 +perft 4 878056 +perft 5 24452479 +perft 6 878851517 + +id gentest-423 +epd rnbr4/1pppqk2/1b2p3/pP3pp1/P2PP1np/3Q1P1K/1BPN2PP/1R3BNR b - - +perft 1 37 +perft 2 951 +perft 3 35039 +perft 4 971596 +perft 5 35437733 +perft 6 1035540207 + +id gentest-424 +epd rnbr4/1pppq3/1b2pk2/pP4p1/P2Pp1np/1Q3P1K/1BPN2PP/1R3BNR w - - +perft 1 31 +perft 2 1008 +perft 3 30917 +perft 4 1021059 +perft 5 31850214 +perft 6 1063850428 + +id gentest-425 +epd rnbr4/1pppq1k1/1b2p3/pP4p1/P2Pp1np/1QB2P1K/2PNB1PP/1R4NR b - - +perft 1 40 +perft 2 1179 +perft 3 44865 +perft 4 1395850 +perft 5 52005447 +perft 6 1667773530 + +id gentest-426 +epd rnbr4/1ppp2k1/1b2pq2/pP4p1/P2Pp2p/1QB1nP1K/1RPNB1PP/6NR w - - +perft 1 23 +perft 2 983 +perft 3 24318 +perft 4 985905 +perft 5 26550774 +perft 6 1046167043 + +id gentest-427 +epd r1br4/1ppp2k1/nb2pq2/pP4p1/P2Pp2p/1QB1nPPK/1RPN3P/5BNR b - - +perft 1 45 +perft 2 1049 +perft 3 45233 +perft 4 1173998 +perft 5 48617793 +perft 6 1360117809 + +id gentest-428 +epd r1b3r1/1ppp2k1/nb2p3/pP4p1/P2qp2p/Q1B1nPPK/1RPN3P/5BNR w - - +perft 1 29 +perft 2 968 +perft 3 28357 +perft 4 1022796 +perft 5 30845505 +perft 6 1172559902 + +id gentest-429 +epd r1b2r2/1ppp2k1/nb2p3/pP4p1/P2qp2p/2B1nPPK/QRP4P/1N3BNR b - - +perft 1 42 +perft 2 1033 +perft 3 43072 +perft 4 1133069 +perft 5 47837258 +perft 6 1324395277 + +id gentest-430 +epd r1b2r2/1p1p2k1/nbp5/pP2p1p1/P2qp2p/2B1nPPK/1RP4P/QN3BNR w - - +perft 1 23 +perft 2 1158 +perft 3 27536 +perft 4 1327163 +perft 5 33923949 +perft 6 1587131779 + +id gentest-431 +epd r1b2r2/1p1p2k1/nbp5/pP2p1p1/P1Bq3p/2B1npPK/R1P4P/QN4NR b - - +perft 1 50 +perft 2 1134 +perft 3 55446 +perft 4 1328245 +perft 5 63238046 +perft 6 1622659271 + +id gentest-432 +epd r1b2r2/1p1p2k1/nb1q4/pp2p1p1/P1B4p/2B1npPK/RQP4P/1N4NR w - - +perft 1 30 +perft 2 1545 +perft 3 45221 +perft 4 2206800 +perft 5 66434953 +perft 6 3121499676 + +id gentest-433 +epd r1b2r2/1p1p2k1/nb1q4/p3p1p1/PBp4p/4npPK/1QP4P/RN4NR b - - +perft 1 53 +perft 2 1229 +perft 3 59419 +perft 4 1447371 +perft 5 67473824 +perft 6 1739274850 + +id gentest-434 +epd r1b2r2/1p1p2k1/nb6/Bq2p1p1/P1p4p/4npPK/1QP4P/RN4NR w - - +perft 1 25 +perft 2 1143 +perft 3 28100 +perft 4 1262752 +perft 5 33064961 +perft 6 1454500780 + +id gentest-435 +epd r1b3r1/1p1p2k1/nb6/Bq2p1p1/P1pQ3p/4nNPK/2P4P/RN5R b - - +perft 1 45 +perft 2 1738 +perft 3 72622 +perft 4 2673665 +perft 5 108481201 +perft 6 3915954612 + +id gentest-436 +epd r1b3rk/1p6/nb6/Bq1pp1p1/P1pQ3p/4n1PK/2PN3P/RN5R w - - +perft 1 2 +perft 2 84 +perft 3 2188 +perft 4 90540 +perft 5 2575658 +perft 6 106845103 + +id gentest-437 +epd r1b3rk/1p6/n7/Bqbpp1p1/P1p3Qp/4n1PK/2PN3P/RN3R2 b - - +perft 1 45 +perft 2 1369 +perft 3 61162 +perft 4 1868162 +perft 5 82296949 +perft 6 2570806002 + +id gentest-438 +epd 1rb3rk/1p6/n7/Bqbpp1p1/P1p3Qp/5NPK/2P3nP/RN3R2 w - - +perft 1 33 +perft 2 1384 +perft 3 43908 +perft 4 1804816 +perft 5 58331759 +perft 6 2364462572 + +id gentest-439 +epd 1r4rk/1p6/n7/Bqbppbp1/P1p2RQN/6PK/2P3nP/RN6 b - - +perft 1 56 +perft 2 1468 +perft 3 73406 +perft 4 2127541 +perft 5 100047354 +perft 6 3163712164 + +id gentest-440 +epd 1r4rk/1p6/n7/Bq1pp1p1/P1p1R1bN/6PK/2P3nP/RN4b1 w - - +perft 1 3 +perft 2 134 +perft 3 3418 +perft 4 145880 +perft 5 3891950 +perft 6 165102035 + +id gentest-441 +epd 1r4rk/1p6/n7/B2pp1p1/P1p3KN/4R1P1/1qP3nP/RN4b1 b - - +perft 1 41 +perft 2 1146 +perft 3 46801 +perft 4 1268638 +perft 5 52497963 +perft 6 1423340850 + +id gentest-442 +epd 1r4rk/1p6/n7/B2pp1p1/P5KN/1p4P1/2q3nP/RN4b1 w - - +perft 1 20 +perft 2 965 +perft 3 17940 +perft 4 837242 +perft 5 16630421 +perft 6 762608864 + +id gentest-443 +epd r5rk/1p6/n7/3pp1p1/PB4K1/1p4P1/2q3NP/RN4b1 b - - +perft 1 51 +perft 2 1072 +perft 3 51344 +perft 4 1076950 +perft 5 49277574 +perft 6 1061804695 + +id gentest-444 +epd r5rk/1p6/n7/3pp1pq/PB6/1p4PK/6NP/RN4b1 w - - +perft 1 1 +perft 2 43 +perft 3 699 +perft 4 29691 +perft 5 518142 +perft 6 21779716 + +id gentest-445 +epd r5rk/1p2B3/n7/3pp1p1/P6N/1p3qPK/7P/RN4b1 b - - +perft 1 51 +perft 2 840 +perft 3 35919 +perft 4 667974 +perft 5 28414999 +perft 6 580512944 + +id gentest-446 +epd 6rk/rp6/n7/2bpp1B1/P6N/1p3qPK/7P/RN6 w - - +perft 1 18 +perft 2 754 +perft 3 13861 +perft 4 578135 +perft 5 11631715 +perft 6 483082411 + +id gentest-447 +epd 6rk/rp2B3/n7/2bpp3/P6N/1p4P1/6KP/RN6 b - - +perft 1 31 +perft 2 649 +perft 3 17913 +perft 4 415486 +perft 5 11689292 +perft 6 291869472 + +id gentest-448 +epd 7k/rp2B3/n7/2bpp3/P6N/Rp4P1/5rKP/1N6 w - - +perft 1 3 +perft 2 99 +perft 3 1581 +perft 4 46619 +perft 5 884321 +perft 6 26312528 + +id gentest-449 +epd 7k/rp2B3/n7/2bpp3/P4r1N/1p4PK/7P/RN6 b - - +perft 1 35 +perft 2 648 +perft 3 19066 +perft 4 401858 +perft 5 11963081 +perft 6 274981070 + +id gentest-450 +epd 6k1/rp6/n4B2/2bpp3/P4r1N/1p4PK/7P/RN6 w - - +perft 1 19 +perft 2 647 +perft 3 13388 +perft 4 429517 +perft 5 9678090 +perft 6 307074856 + +id gentest-451 +epd 6k1/rp6/n4B2/P1bppr2/8/1p4PK/6NP/RN6 b - - +perft 1 29 +perft 2 559 +perft 3 17012 +perft 4 358440 +perft 5 11237335 +perft 6 255267672 + +id gentest-452 +epd 6k1/rp6/n4B1r/P1bpp3/6K1/1p4P1/6NP/RN6 w - - +perft 1 22 +perft 2 687 +perft 3 15366 +perft 4 481170 +perft 5 11439721 +perft 6 360621927 + +id gentest-453 +epd 6k1/rp6/nb3B1r/P2pp1K1/8/1p4P1/7P/RN2N3 b - - +perft 1 27 +perft 2 527 +perft 3 14687 +perft 4 314442 +perft 5 9022442 +perft 6 206676072 + +id gentest-454 +epd 6k1/rp6/1b3B1r/P1npp1K1/8/6P1/1p1N3P/R3N3 w - - +perft 1 29 +perft 2 966 +perft 3 24207 +perft 4 819564 +perft 5 20541761 +perft 6 703683026 + +id gentest-455 +epd 5k2/rp6/Pb3B1r/R1npp1K1/8/6P1/1p1N3P/4N3 b - - +perft 1 30 +perft 2 730 +perft 3 22270 +perft 4 557140 +perft 5 17811926 +perft 6 455948027 + +id gentest-456 +epd 5k2/rp6/P4B1r/R2pp1K1/8/1n4P1/1p3b1P/1N2N3 w - - +perft 1 26 +perft 2 773 +perft 3 18845 +perft 4 583930 +perft 5 14490257 +perft 6 464670880 + +id gentest-457 +epd 3B1k2/rp6/P6r/R2pp1K1/8/1n1N2P1/1p5P/1N4b1 b - - +perft 1 36 +perft 2 961 +perft 3 32290 +perft 4 855487 +perft 5 28282354 +perft 6 752664255 + +id gentest-458 +epd 3B1k2/rp6/P7/R2pp1K1/8/6Pr/1p5P/nN2N1b1 w - - +perft 1 24 +perft 2 614 +perft 3 14400 +perft 4 401456 +perft 5 9893959 +perft 6 291058483 + +id gentest-459 +epd 5k2/1pB5/r7/3pp1K1/R7/6Pr/1p5P/nN2N1b1 b - - +perft 1 36 +perft 2 916 +perft 3 30634 +perft 4 769341 +perft 5 25811439 +perft 6 650488000 + +id gentest-460 +epd 5k2/2B5/r7/1p1pp1K1/R7/1n4Pr/1p4NP/1N4b1 w - - +perft 1 28 +perft 2 1048 +perft 3 25792 +perft 4 933062 +perft 5 22890658 +perft 6 817119920 + +id gentest-461 +epd 5k2/2B5/6r1/Rp1ppK2/8/1n4Pr/1p4NP/1N4b1 b - - +perft 1 40 +perft 2 847 +perft 3 30439 +perft 4 689748 +perft 5 24444089 +perft 6 575812639 + +id gentest-462 +epd 5k2/2B5/6rr/1p1ppK2/8/Rn4P1/1p4N1/1N4b1 w - - +perft 1 22 +perft 2 782 +perft 3 17013 +perft 4 622484 +perft 5 14164651 +perft 6 520743358 + +id gentest-463 +epd 1B3k2/6r1/7r/1p1ppK2/5N2/Rn4P1/1p6/1N4b1 b - - +perft 1 47 +perft 2 1046 +perft 3 40904 +perft 4 950815 +perft 5 35914680 +perft 6 855329069 + +id gentest-464 +epd 1B3k2/6r1/7r/1p1ppK2/4n3/R5P1/1p4N1/1N4b1 w - - +perft 1 24 +perft 2 1085 +perft 3 22792 +perft 4 941251 +perft 5 20505827 +perft 6 809275923 + +id gentest-465 +epd 1B3k1r/6r1/8/1p1ppK2/4n3/6P1/Rp1N2N1/6b1 b - - +perft 1 45 +perft 2 1019 +perft 3 42497 +perft 4 1010455 +perft 5 40610868 +perft 6 985580943 + +id gentest-466 +epd 1B3k2/6r1/8/1p1ppK1r/4N3/6P1/Rp4N1/6b1 w - - +perft 1 3 +perft 2 109 +perft 3 2464 +perft 4 83244 +perft 5 2042045 +perft 6 67510217 + +id gentest-467 +epd 1B3k2/6r1/8/1p1pp1N1/6K1/6P1/Rp4N1/6br b - - +perft 1 34 +perft 2 639 +perft 3 21088 +perft 4 464595 +perft 5 15122478 +perft 6 358971447 + +id gentest-468 +epd 1B3k2/2r5/1b6/1p1pp1N1/6K1/R5P1/1p4N1/7r w - - +perft 1 26 +perft 2 1050 +perft 3 25959 +perft 4 997991 +perft 5 24921881 +perft 6 918909597 + +id gentest-469 +epd 1B6/2r1k3/1b6/1p1pp1N1/8/R3NKP1/1p6/7r b - - +perft 1 42 +perft 2 1200 +perft 3 44895 +perft 4 1202493 +perft 5 43888003 +perft 6 1137469480 + +id gentest-470 +epd 1Br5/4k3/1b6/1p1pp3/8/R3NKPN/1p6/7r w - - +perft 1 31 +perft 2 1199 +perft 3 32682 +perft 4 1227470 +perft 5 32198356 +perft 6 1180073304 + +id gentest-471 +epd 2rb4/4k3/8/1p1pB3/6P1/R3NK1N/1p6/7r b - - +perft 1 32 +perft 2 1159 +perft 3 35286 +perft 4 1182713 +perft 5 37556207 +perft 6 1189870153 + +id gentest-472 +epd 2rb4/2r1k3/8/1p1pB3/6P1/R4K1N/1p6/3N4 w - - +perft 1 37 +perft 2 764 +perft 3 26054 +perft 4 645794 +perft 5 20670048 +perft 6 573258547 + +id gentest-473 +epd r2b4/2r1k3/8/1p1p4/6P1/R1N2KBN/1p6/8 b - - +perft 1 27 +perft 2 867 +perft 3 23435 +perft 4 724771 +perft 5 21123838 +perft 6 632769446 + +id gentest-474 +epd r2b4/2r2k2/8/1p6/3p2P1/R1N2KB1/1p6/6N1 w - - +perft 1 32 +perft 2 1089 +perft 3 32899 +perft 4 1122931 +perft 5 32840477 +perft 6 1126806542 + +id gentest-475 +epd r2b4/r4k2/8/1p6/3p1KP1/R1N3B1/1p6/6N1 b - - +perft 1 32 +perft 2 795 +perft 3 25501 +perft 4 640016 +perft 5 21060669 +perft 6 534062082 + +id gentest-476 +epd 2rb4/r7/6k1/1p6/3p1KP1/R1N2NB1/1p6/8 w - - +perft 1 30 +perft 2 1027 +perft 3 27793 +perft 4 944594 +perft 5 25173921 +perft 6 860821480 + +id gentest-477 +epd 2rb4/r7/6k1/1p6/3p1KP1/R1N2NB1/8/1r6 b - - +perft 1 44 +perft 2 1206 +perft 3 46058 +perft 4 1228059 +perft 5 46344569 +perft 6 1227865214 + +id gentest-478 +epd r1rb4/8/5k2/1p2N3/3p1KP1/R1N3B1/8/1r6 w - - +perft 1 30 +perft 2 776 +perft 3 21947 +perft 4 625979 +perft 5 17198382 +perft 6 523794528 + +id gentest-479 +epd r1rb4/6k1/8/1p6/2Np1KP1/1RN3B1/8/1r6 b - - +perft 1 41 +perft 2 1123 +perft 3 44226 +perft 4 1220378 +perft 5 47268334 +perft 6 1309100539 + +id gentest-480 +epd r1r5/6k1/5b2/1p6/2Np2P1/1RN2KB1/8/1r6 w - - +perft 1 36 +perft 2 1488 +perft 3 48819 +perft 4 1988941 +perft 5 62158299 +perft 6 2480264960 + +id gentest-481 +epd r1r5/8/5b1k/1p6/2Np2PB/1RN5/5K2/1r6 b - - +perft 1 41 +perft 2 1078 +perft 3 40711 +perft 4 1103781 +perft 5 40946471 +perft 6 1111183470 + +id gentest-482 +epd 2r5/8/5b1k/rp6/3p2PB/1RN5/1N3K2/3r4 w - - +perft 1 23 +perft 2 844 +perft 3 20081 +perft 4 723373 +perft 5 17822644 +perft 6 632047139 + +id gentest-483 +epd 2r5/8/5b1k/rp6/2Np2PB/1R6/5K2/1N2r3 b - - +perft 1 44 +perft 2 1164 +perft 3 46155 +perft 4 1156641 +perft 5 43837150 +perft 6 1097353371 + +id gentest-484 +epd 2r5/8/5b1k/1p6/2Np2P1/1R4B1/5K2/rN5r w - - +perft 1 30 +perft 2 1216 +perft 3 33106 +perft 4 1290524 +perft 5 34686893 +perft 6 1319061066 + +id gentest-485 +epd r7/8/5b1k/1p6/2Np2P1/1R4B1/5K2/rN5r b - - +perft 1 44 +perft 2 1204 +perft 3 46796 +perft 4 1250103 +perft 5 46526861 +perft 6 1240763008 + +id gentest-486 +epd r7/8/5b1k/1p6/2Np2P1/1R4B1/8/1r3K2 w - - +perft 1 5 +perft 2 173 +perft 3 4616 +perft 4 140147 +perft 5 3573384 +perft 6 104289739 + +id gentest-487 +epd r7/7k/5b2/1p6/2Np2P1/1R4B1/5K2/1r6 b - - +perft 1 38 +perft 2 968 +perft 3 33837 +perft 4 840135 +perft 5 27718872 +perft 6 687688729 + +id gentest-488 +epd 8/7k/5b2/1p6/3p2P1/1R4B1/r2N1K2/3r4 w - - +perft 1 20 +perft 2 628 +perft 3 13176 +perft 4 401420 +perft 5 8993982 +perft 6 271923308 + +id gentest-489 +epd r7/7k/5b2/1p2B3/3p2P1/1R6/3N1K2/3r4 b - - +perft 1 36 +perft 2 963 +perft 3 31019 +perft 4 795144 +perft 5 24844344 +perft 6 625383361 + +id gentest-490 +epd 8/7k/5b2/1R2B3/3p2P1/5r2/3N1K2/3r4 w - - +perft 1 4 +perft 2 107 +perft 3 2670 +perft 4 67966 +perft 5 1751559 +perft 6 44631161 + +id gentest-491 +epd 8/7k/5b2/R3B3/3p2P1/5r2/3N2K1/r7 b - - +perft 1 35 +perft 2 863 +perft 3 27164 +perft 4 704821 +perft 5 21080918 +perft 6 548650972 + +id gentest-492 +epd 8/7k/8/4B3/6Pb/3p1r2/R2N2K1/r7 w - - +perft 1 31 +perft 2 831 +perft 3 22318 +perft 4 611079 +perft 5 16378640 +perft 6 457370122 + +id gentest-493 +epd 8/7k/8/8/6Pb/3p1KB1/r2N4/8 b - - +perft 1 20 +perft 2 378 +perft 3 8535 +perft 4 148900 +perft 5 3412147 +perft 6 60154608 + +id gentest-494 +epd 8/5k2/8/8/6Pb/1N1p1KB1/r7/8 w - - +perft 1 19 +perft 2 520 +perft 3 9529 +perft 4 239797 +perft 5 4298508 +perft 6 104279517 + +id gentest-495 +epd 8/5k2/8/N7/6Pb/3p2B1/5K2/8 b - - +perft 1 14 +perft 2 184 +perft 3 2480 +perft 4 41627 +perft 5 586258 +perft 6 10217133 + +id gentest-496 +epd 8/1N6/6k1/8/6Pb/3p2B1/5K2/8 w - - +perft 1 12 +perft 2 132 +perft 3 2104 +perft 4 25265 +perft 5 426963 +perft 6 5575498 + +id gentest-497 +epd 8/1N6/7k/8/6Pb/3pK1B1/8/8 b - - +perft 1 10 +perft 2 182 +perft 3 2124 +perft 4 36294 +perft 5 458273 +perft 6 7879862 + +id gentest-498 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-499 +epd rnbqkbnr/pp1ppppp/8/2p5/8/P2P4/1PP1PPPP/RNBQKBNR b KQkq - +perft 1 22 +perft 2 551 +perft 3 13511 +perft 4 352927 +perft 5 9475535 +perft 6 257445174 + +id gentest-500 +epd rnbqkbnr/p2ppp1p/8/1pp3p1/8/P2P1N2/1PP1PPPP/RNBQKB1R w KQkq - +perft 1 28 +perft 2 674 +perft 3 18621 +perft 4 490486 +perft 5 13982737 +perft 6 396149636 + +id gentest-501 +epd rnbqkb1r/p2ppp1p/5n2/1pp3p1/5B2/P2P4/1PPNPPPP/RN1QKB1R b KQkq - +perft 1 27 +perft 2 738 +perft 3 21187 +perft 4 600908 +perft 5 18123208 +perft 6 530640296 + +id gentest-502 +epd rnb1kb1r/p2ppp1p/1q3n2/1pp5/5p2/PP1P4/2PNPPPP/RN1QKB1R w KQkq - +perft 1 19 +perft 2 612 +perft 3 12915 +perft 4 430332 +perft 5 9900651 +perft 6 338540975 + +id gentest-503 +epd rn2kb1r/p2ppp1p/bq3n2/1pp5/1P3p2/P1PP4/3NPPPP/RN1QKB1R b KQkq - +perft 1 28 +perft 2 589 +perft 3 17940 +perft 4 411320 +perft 5 13071714 +perft 6 319733683 + +id gentest-504 +epd rn2kbnr/p2ppp2/bq6/1pp4p/1P3p2/P1PP4/3NPPPP/RNQ1KB1R w KQkq - +perft 1 21 +perft 2 634 +perft 3 14586 +perft 4 444924 +perft 5 10977201 +perft 6 343829274 + +id gentest-505 +epd rn2kbnr/p2pp3/bq3p2/1pp4p/1P3p1P/P1PP1N2/4PPP1/RNQ1KB1R b KQkq - +perft 1 24 +perft 2 649 +perft 3 16924 +perft 4 457760 +perft 5 12650259 +perft 6 349269346 + +id gentest-506 +epd r3kbnr/p3p3/bqnp1p2/1pp4p/1P3p1P/P1PP1N2/3KPPP1/RNQ2B1R w kq - +perft 1 25 +perft 2 789 +perft 3 20061 +perft 4 630780 +perft 5 16454035 +perft 6 524512877 + +id gentest-507 +epd r3k1nr/p3p3/bqnp1p1b/1pp4p/1P3p1P/P1PP1N2/4PPPR/RNQK1B2 b kq - +perft 1 31 +perft 2 808 +perft 3 25081 +perft 4 674056 +perft 5 21250071 +perft 6 590071319 + +id gentest-508 +epd r2nk1nr/p3p3/b1qp1p1b/1pp4p/1P3pPP/P1PP1N2/4PP1R/RNQK1B2 w kq - +perft 1 29 +perft 2 864 +perft 3 25072 +perft 4 784614 +perft 5 23018537 +perft 6 741061216 + +id gentest-509 +epd r2nk1nr/p3p3/b1qp1p2/1pp3bp/1P3pPP/P1PP3B/4PP1R/RNQK4 b kq - +perft 1 33 +perft 2 739 +perft 3 25045 +perft 4 612529 +perft 5 21085951 +perft 6 546511390 + +id gentest-510 +epd r2nk1nr/p3p3/b1qp1p2/1pp3bp/PP3pPP/2PP3B/4PP1R/RNQK4 w kq - +perft 1 27 +perft 2 914 +perft 3 25380 +perft 4 879811 +perft 5 25368396 +perft 6 893140466 + +id gentest-511 +epd r2nk1nr/p3p3/b1qp1p2/2p3Pp/pP3pP1/2PP3B/3NPP1R/R1QK4 b kq - +perft 1 38 +perft 2 1104 +perft 3 42014 +perft 4 1265833 +perft 5 48090138 +perft 6 1493405064 + +id gentest-512 +epd r1bnk1nr/p3p3/1q1p1p2/2p3Pp/pP3pP1/2PP1N1B/4PP1R/R1QK4 w kq - +perft 1 33 +perft 2 1224 +perft 3 41033 +perft 4 1509358 +perft 5 51196131 +perft 6 1882582957 + +id gentest-513 +epd r1bnk1n1/p3p3/1q1p1p1r/2p3Pp/pPPN1pP1/3P3B/4PP1R/R1QK4 b q - +perft 1 38 +perft 2 1311 +perft 3 48570 +perft 4 1679934 +perft 5 61104658 +perft 6 2132199231 + +id gentest-514 +epd r1bnk1n1/p7/q2p1p1r/2p1p1Pp/pPPN1pP1/3P4/4PP1R/R1QK1B2 w q - +perft 1 38 +perft 2 1295 +perft 3 48099 +perft 4 1676557 +perft 5 61212990 +perft 6 2177712432 + +id gentest-515 +epd r1bnk1n1/p7/q2p3P/2p1pp1p/pPPN1pP1/3P3R/4PP2/R1QK1B2 b q - +perft 1 31 +perft 2 1187 +perft 3 37765 +perft 4 1407813 +perft 5 45620115 +perft 6 1674518519 + +id gentest-516 +epd r2nk1n1/p7/q1bp3P/2p1pp1p/pPPN1pP1/3P3R/2K1PP2/R1Q2B2 w q - +perft 1 40 +perft 2 1394 +perft 3 53196 +perft 4 1816796 +perft 5 68205186 +perft 6 2317441449 + +id gentest-517 +epd r3k1n1/p7/q1bpn2P/2p1pp1p/pPPN1pP1/3P3R/1QK1PP2/2R2B2 b q - +perft 1 42 +perft 2 1470 +perft 3 58548 +perft 4 2074049 +perft 5 79693536 +perft 6 2844244211 + +id gentest-518 +epd r5n1/p2bk3/q2pn2P/2p1pp1p/pPPN1pP1/Q2P3R/2K1PP2/2R2B2 w - - +perft 1 38 +perft 2 1361 +perft 3 49022 +perft 4 1748549 +perft 5 63042782 +perft 6 2252383887 + +id gentest-519 +epd r5n1/p2bk3/q2pn2P/2p1pp2/pPP2pPp/QN1P3R/2K1PP2/R4B2 b - - +perft 1 35 +perft 2 1169 +perft 3 41663 +perft 4 1400040 +perft 5 50483823 +perft 6 1708393606 + +id gentest-520 +epd 5rn1/p1nbk3/q2p3P/2p1pp2/pPP2pPp/Q2P3R/2KNPP2/R4B2 w - - +perft 1 36 +perft 2 1309 +perft 3 45420 +perft 4 1619451 +perft 5 56095614 +perft 6 2002461783 + +id gentest-521 +epd 5rn1/p1n1k3/q1bp3P/2P1pp2/p1P2pPp/Q2PR3/2KNPP2/R4B2 b - - +perft 1 43 +perft 2 1427 +perft 3 55608 +perft 4 1830415 +perft 5 69683095 +perft 6 2313545908 + +id gentest-522 +epd b4rn1/p3k3/q2pn2P/2P1pp2/p1P1NpPp/Q2PR3/2K1PP2/R4B2 w - - +perft 1 36 +perft 2 1280 +perft 3 43912 +perft 4 1598746 +perft 5 55160111 +perft 6 2028946504 + +id gentest-523 +epd b4rn1/p3k3/q2N3P/2P1ppn1/p1P2pPp/Q2PR3/4PP2/R2K1B2 b - - +perft 1 38 +perft 2 1236 +perft 3 44338 +perft 4 1470793 +perft 5 53449688 +perft 6 1807775613 + +id gentest-524 +epd b4rn1/p3k3/2qN3P/2P1pp2/p1P2pPp/Q2PRn2/4PP2/R1K2B2 w - - +perft 1 29 +perft 2 994 +perft 3 30816 +perft 4 1077938 +perft 5 34929896 +perft 6 1228918886 + +id gentest-525 +epd b4rn1/p3k3/2qN3P/2P1p3/p1P2ppp/Q2PRP2/1K3P2/R4B2 b - - +perft 1 34 +perft 2 996 +perft 3 31658 +perft 4 984666 +perft 5 31668153 +perft 6 1026877259 + +id gentest-526 +epd b4rn1/p2k4/2qN3P/2P1p3/p1P2p1p/1Q1PRPp1/1K3P2/R4B2 w - - +perft 1 41 +perft 2 1355 +perft 3 50445 +perft 4 1658139 +perft 5 59671035 +perft 6 1962616093 + +id gentest-527 +epd b1r3n1/p2k4/2qN3P/2P1p3/p1P2p1p/3PRPp1/1K3P2/3QRB2 b - - +perft 1 31 +perft 2 876 +perft 3 27912 +perft 4 800872 +perft 5 26277620 +perft 6 774512350 + +id gentest-528 +epd b1r3n1/p2k4/2qN3P/2P1p3/p1PP1p1p/4RPp1/1K3P2/3QRB2 w - - +perft 1 39 +perft 2 1213 +perft 3 41741 +perft 4 1332829 +perft 5 46079785 +perft 6 1505030712 + +id gentest-529 +epd b1r5/p2k4/2q4n/2P1p3/p1PPNp1p/4RPp1/1K3PB1/3QR3 b - - +perft 1 36 +perft 2 1191 +perft 3 41749 +perft 4 1399507 +perft 5 50230465 +perft 6 1702239670 + +id gentest-530 +epd 2r5/p2k4/2b4n/2Pqp3/p1PPNp1p/4RPp1/1K2RPB1/3Q4 w - - +perft 1 38 +perft 2 1265 +perft 3 42992 +perft 4 1484687 +perft 5 49576074 +perft 6 1752918079 + +id gentest-531 +epd 2r5/p1k5/2b4n/2Pqp3/Q1PPNp1p/4RPpB/1K2RP2/8 b - - +perft 1 36 +perft 2 1454 +perft 3 49837 +perft 4 1936628 +perft 5 66737875 +perft 6 2541809001 + +id gentest-532 +epd 6nr/p1k5/2b5/2Pqp3/Q1PPNp1p/4RPPB/1K2R3/8 w - - +perft 1 48 +perft 2 1352 +perft 3 60364 +perft 4 1851755 +perft 5 79393107 +perft 6 2544595718 + +id gentest-533 +epd 6nr/p1k5/2bN4/2P1p3/2PPqp1p/4RPPB/QK2R3/8 b - - +perft 1 31 +perft 2 1223 +perft 3 37493 +perft 4 1475983 +perft 5 46876636 +perft 6 1855588834 + +id gentest-534 +epd 6nr/2kB4/3N4/pbP1p3/2PPqp1p/4RPP1/QK2R3/8 w - - +perft 1 45 +perft 2 1332 +perft 3 53426 +perft 4 1633892 +perft 5 65135791 +perft 6 2038252484 + +id gentest-535 +epd 6nr/3k4/3N4/QbP1p3/2PPqp1p/R4PP1/1K2R3/8 b - - +perft 1 31 +perft 2 1270 +perft 3 36593 +perft 4 1484959 +perft 5 43636980 +perft 6 1741426036 + +id gentest-536 +epd 3r4/3k4/3N3n/QbP1p3/2PPqp1p/5PP1/1K2R3/R7 w - - +perft 1 52 +perft 2 1664 +perft 3 73587 +perft 4 2381671 +perft 5 100355765 +perft 6 3250934860 + +id gentest-537 +epd q2r4/3k4/3N3n/1QP1p3/2PP1p1p/5PP1/1K2R3/R7 b - - +perft 1 4 +perft 2 203 +perft 3 5223 +perft 4 229959 +perft 5 6243951 +perft 6 262225942 + +id gentest-538 +epd r7/3k4/2qN3n/1QP1p3/2PP1p1p/K4PP1/4R3/R7 w - - +perft 1 6 +perft 2 177 +perft 3 6958 +perft 4 190288 +perft 5 7255870 +perft 6 200139890 + +id gentest-539 +epd r7/3k1n2/2qN4/2P1p3/Q1PPRp1p/K4PP1/8/R7 b - - +perft 1 26 +perft 2 796 +perft 3 20049 +perft 4 637847 +perft 5 16701244 +perft 6 542729916 + +id gentest-540 +epd r7/2k2n2/2qN4/2PPp3/Q1P1R2p/K4Pp1/8/R7 w - - +perft 1 32 +perft 2 884 +perft 3 27225 +perft 4 722822 +perft 5 22952081 +perft 6 604028401 + +id gentest-541 +epd 6r1/2k2n2/2qN4/2PPp3/Q1P3Rp/K4Pp1/8/6R1 b - - +perft 1 33 +perft 2 1228 +perft 3 33462 +perft 4 1197005 +perft 5 31677869 +perft 6 1115277089 + +id gentest-542 +epd 1k4r1/3q1n2/3N4/Q1PPp3/2P3Rp/K4Pp1/8/6R1 w - - +perft 1 43 +perft 2 1107 +perft 3 44317 +perft 4 1128050 +perft 5 43684916 +perft 6 1115398177 + +id gentest-543 +epd 1k4r1/3q1n2/3N4/Q1PPp3/1KP2R2/5Ppp/8/6R1 b - - +perft 1 32 +perft 2 1117 +perft 3 28978 +perft 4 1038527 +perft 5 26646996 +perft 6 965037952 + +id gentest-544 +epd 1k6/qN3n2/8/Q1PPp1r1/1KP2R2/5Ppp/8/6R1 w - - +perft 1 35 +perft 2 756 +perft 3 22664 +perft 4 524984 +perft 5 15944039 +perft 6 389489602 + +id gentest-545 +epd 1k6/q4n2/3N4/1QPPp2r/1KP2R2/5Ppp/8/6R1 b - - +perft 1 4 +perft 2 127 +perft 3 2617 +perft 4 77806 +perft 5 1667741 +perft 6 51157750 + +id gentest-546 +epd 1k6/5n2/1q6/1QPPpNr1/1KP2R2/5Ppp/8/6R1 w - - +perft 1 29 +perft 2 575 +perft 3 16879 +perft 4 368728 +perft 5 11310748 +perft 6 259659823 + +id gentest-547 +epd 1k6/8/1q1N3n/1QPPp1r1/1KP2R2/5Ppp/8/3R4 b - - +perft 1 19 +perft 2 549 +perft 3 10812 +perft 4 318541 +perft 5 6854465 +perft 6 209250195 + +id gentest-548 +epd 1k6/8/1q1N3n/1QPPp1r1/1KP2R2/5Ppp/8/2R5 w - - +perft 1 30 +perft 2 540 +perft 3 15892 +perft 4 317762 +perft 5 9660295 +perft 6 210636505 + +id gentest-549 +epd 1k2N3/8/1q5n/1QPP2r1/1KP1p2R/5Ppp/8/2R5 b - - +perft 1 22 +perft 2 619 +perft 3 13644 +perft 4 405817 +perft 5 9378506 +perft 6 292291361 + +id gentest-550 +epd 8/2k5/1q5n/1QPP2r1/1KP1p2R/5Ppp/8/2R5 w - - +perft 1 25 +perft 2 707 +perft 3 18469 +perft 4 489546 +perft 5 13982868 +perft 6 364753053 + +id gentest-551 +epd 8/2k5/7n/1qPP2r1/2P1p2R/K4Ppp/8/6R1 b - - +perft 1 36 +perft 2 633 +perft 3 21212 +perft 4 389992 +perft 5 12702469 +perft 6 244172667 + +id gentest-552 +epd 8/2k5/q6R/2PP4/2P1p1r1/K4Ppp/8/6R1 w - - +perft 1 4 +perft 2 114 +perft 3 2752 +perft 4 72095 +perft 5 1705461 +perft 6 45300991 + +id gentest-553 +epd 8/2k5/7R/2PP4/2q1p1r1/K4Ppp/8/6R1 b - - +perft 1 30 +perft 2 578 +perft 3 16384 +perft 4 315221 +perft 5 9092224 +perft 6 176977341 + +id gentest-554 +epd 8/2k5/7R/2PP4/K3p2r/3q1Ppp/8/6R1 w - - +perft 1 26 +perft 2 679 +perft 3 12157 +perft 4 333002 +perft 5 6347514 +perft 6 175742988 + +id gentest-555 +epd 8/2k5/q6R/2PP4/4p2r/1K3Ppp/6R1/8 b - - +perft 1 34 +perft 2 733 +perft 3 20740 +perft 4 450219 +perft 5 12472237 +perft 6 271970768 + +id gentest-556 +epd 8/2k5/5q1R/2PP4/4p2r/2K2Pp1/6p1/8 w - - +perft 1 6 +perft 2 220 +perft 3 3574 +perft 4 108187 +perft 5 1777632 +perft 6 52618321 + +id gentest-557 +epd 8/2k5/8/2PP1R2/4p3/2K2Ppr/6p1/8 b - - +perft 1 18 +perft 2 321 +perft 3 5845 +perft 4 101623 +perft 5 1937042 +perft 6 33200190 + +id gentest-558 +epd 1r6/2k5/8/2PP1R2/4p3/1K3Pp1/6p1/8 w - - +perft 1 6 +perft 2 144 +perft 3 1997 +perft 4 38907 +perft 5 577253 +perft 6 11245312 + +id gentest-559 +epd 1r1k4/8/8/2PP2R1/4p3/2K2Pp1/6p1/8 b - - +perft 1 20 +perft 2 310 +perft 3 6168 +perft 4 97160 +perft 5 1946616 +perft 6 31057512 + +id gentest-560 +epd 3k4/8/8/2PP2R1/2K1p3/5Pp1/5rp1/8 w - - +perft 1 17 +perft 2 286 +perft 3 4720 +perft 4 84434 +perft 5 1384633 +perft 6 26187233 + +id gentest-561 +epd 8/3k2R1/8/2PP4/2K1p3/5Pp1/5rp1/8 b - - +perft 1 3 +perft 2 63 +perft 3 918 +perft 4 17198 +perft 5 286153 +perft 6 5074801 + +id gentest-562 +epd 2k5/6R1/8/2PP4/1K2p3/5Pp1/4r1p1/8 w - - +perft 1 23 +perft 2 331 +perft 3 6471 +perft 4 109499 +perft 5 1971975 +perft 6 36470344 + +id gentest-563 +epd 8/3k4/4R3/2PP4/1K2p3/5Pp1/4r1p1/8 b - - +perft 1 16 +perft 2 327 +perft 3 5476 +perft 4 100882 +perft 5 1850653 +perft 6 32077599 + +id gentest-564 +epd 8/3k4/8/2PPR3/1K2p3/5rp1/6p1/8 w - - +perft 1 13 +perft 2 228 +perft 3 3362 +perft 4 60162 +perft 5 941052 +perft 6 17629260 + +id gentest-565 +epd 8/4k3/8/2PPR3/1K2p3/5rp1/6p1/8 b - - +perft 1 5 +perft 2 65 +perft 3 1122 +perft 4 16510 +perft 5 295812 +perft 6 4619378 + +id gentest-566 +epd 4R3/5k2/8/2PP4/1K2p3/6p1/5rp1/8 w - - +perft 1 20 +perft 2 350 +perft 3 6200 +perft 4 116104 +perft 5 1986787 +perft 6 39612921 + +id gentest-567 +epd 7R/5k2/8/2PP4/1K2p3/5rp1/6p1/8 b - - +perft 1 19 +perft 2 381 +perft 3 7227 +perft 4 128697 +perft 5 2567429 +perft 6 43360805 + +id gentest-568 +epd 7R/8/6k1/2PP4/K3p3/5rp1/8/6q1 w - - +perft 1 19 +perft 2 571 +perft 3 8706 +perft 4 251525 +perft 5 3735223 +perft 6 108672474 + +id gentest-569 +epd 6R1/8/6k1/2PP4/K3p3/6p1/8/5rq1 b - - +perft 1 6 +perft 2 114 +perft 3 2400 +perft 4 39585 +perft 5 987959 +perft 6 15258910 + +id gentest-570 +epd 6R1/5k2/8/2PP4/1K2p3/6p1/8/2r3q1 w - - +perft 1 19 +perft 2 429 +perft 3 6486 +perft 4 162599 +perft 5 2387313 +perft 6 64245181 + +id gentest-571 +epd 8/5k2/6R1/2PP4/1K2p3/4q1p1/8/2r5 b - - +perft 1 31 +perft 2 398 +perft 3 11462 +perft 4 152924 +perft 5 4437250 +perft 6 60320937 + +id gentest-572 +epd 8/5k2/6R1/1KPP4/4p3/6p1/3q4/2r5 w - - +perft 1 18 +perft 2 587 +perft 3 8282 +perft 4 251768 +perft 5 3542311 +perft 6 106132699 + +id gentest-573 +epd 8/5k2/4R3/2PP4/1K2p3/6p1/8/2r5 b - - +perft 1 16 +perft 2 269 +perft 3 4244 +perft 4 70169 +perft 5 1134633 +perft 6 18610020 + +id gentest-574 +epd 8/5k2/4R3/K1PP4/4p3/6p1/8/4r3 w - - +perft 1 18 +perft 2 251 +perft 3 4063 +perft 4 61735 +perft 5 1000153 +perft 6 15878747 + +id gentest-575 +epd 8/5k2/7R/2PP4/1K6/4p1p1/8/4r3 b - - +perft 1 15 +perft 2 322 +perft 3 4949 +perft 4 92733 +perft 5 1502868 +perft 6 26336170 + +id gentest-576 +epd 8/6k1/8/2PP4/1K6/6p1/4p2R/4r3 w - - +perft 1 19 +perft 2 253 +perft 3 4342 +perft 4 73129 +perft 5 1219256 +perft 6 22518357 + +id gentest-577 +epd 5k2/8/3P4/2P5/1K5R/6p1/4p3/4r3 b - - +perft 1 12 +perft 2 231 +perft 3 3626 +perft 4 64660 +perft 5 1125148 +perft 6 19503793 + +id gentest-578 +epd 5k2/8/3P4/2P5/7R/1K4pr/4p3/8 w - - +perft 1 22 +perft 2 268 +perft 3 4995 +perft 4 83131 +perft 5 1457624 +perft 6 27857602 + +id gentest-579 +epd 5k2/3P4/8/2P4r/1R6/1K4p1/4p3/8 b - - +perft 1 21 +perft 2 475 +perft 3 8926 +perft 4 196892 +perft 5 4009634 +perft 6 85434344 + +id gentest-580 +epd 8/3Pk3/8/2P4r/6R1/1K4p1/8/4b3 w - - +perft 1 23 +perft 2 458 +perft 3 9974 +perft 4 198348 +perft 5 4257218 +perft 6 85754871 + +id gentest-581 +epd 3k4/3P4/8/2P4R/8/1K4p1/8/4b3 b - - +perft 1 9 +perft 2 172 +perft 3 1860 +perft 4 35972 +perft 5 420229 +perft 6 8225570 + +id gentest-582 +epd 3k4/3P4/8/2P5/7R/1K6/8/4b1b1 w - - +perft 1 21 +perft 2 298 +perft 3 5635 +perft 4 84820 +perft 5 1583235 +perft 6 24946858 + +id gentest-583 +epd 3Q4/4k3/8/2P5/1R6/1K6/8/4b1b1 b - - +perft 1 3 +perft 2 96 +perft 3 1197 +perft 4 38271 +perft 5 515558 +perft 6 16572719 + +id gentest-584 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-585 +epd rnbqkbnr/pppppp1p/6p1/8/2P5/8/PPQPPPPP/RNB1KBNR b KQkq - +perft 1 21 +perft 2 589 +perft 3 13630 +perft 4 407090 +perft 5 10272819 +perft 6 318951653 + +id gentest-586 +epd rnbqkbnr/p1pppp2/6pp/1p6/2P5/N7/PPQPPPPP/R1B1KBNR w KQkq - +perft 1 29 +perft 2 601 +perft 3 18344 +perft 4 419743 +perft 5 13267029 +perft 6 331139265 + +id gentest-587 +epd rnbqkbnr/p1p1pp2/3p2pp/1pP5/2N5/8/PPQPPPPP/R1B1KBNR b KQkq - +perft 1 28 +perft 2 966 +perft 3 26087 +perft 4 909494 +perft 5 25244240 +perft 6 886580647 + +id gentest-588 +epd rnb1qbnr/p1pkpp2/3p2pp/1pP5/2N5/4P3/PPQP1PPP/R1B1KBNR w KQ - +perft 1 37 +perft 2 799 +perft 3 29496 +perft 4 673655 +perft 5 24832541 +perft 6 597611031 + +id gentest-589 +epd rnb1qbnr/2pkpp2/p2p2Qp/1pP5/2N5/4P3/PP1P1PPP/R1B1KBNR b KQ - +perft 1 21 +perft 2 915 +perft 3 18268 +perft 4 750848 +perft 5 16451990 +perft 6 654431165 + +id gentest-590 +epd rnb2bnr/2pkp1Q1/p2p2qp/1pP2p2/2N5/4P3/PP1P1PPP/R1B1KBNR w KQ - +perft 1 40 +perft 2 1053 +perft 3 41060 +perft 4 1101005 +perft 5 41749488 +perft 6 1149235382 + +id gentest-591 +epd rnb2bnr/2p1p3/p2pk1qQ/1pP2p2/2N5/4P2P/PP1P1PP1/R1B1KBNR b KQ - +perft 1 24 +perft 2 817 +perft 3 22759 +perft 4 775616 +perft 5 22959346 +perft 6 782424152 + +id gentest-592 +epd rnb3nr/2p1p1b1/p3k1qQ/1pPp1p2/8/N3P2P/PP1P1PP1/R1B1KBNR w KQ - +perft 1 33 +perft 2 915 +perft 3 30346 +perft 4 896972 +perft 5 29698234 +perft 6 905819376 + +id gentest-593 +epd rnb3nr/2p1p3/p3k1q1/1pPp1p2/4PQ2/N1b4P/PP1P1PP1/R1B1KBNR b KQ - +perft 1 40 +perft 2 1465 +perft 3 49680 +perft 4 1790569 +perft 5 60208933 +perft 6 2150067704 + +id gentest-594 +epd rnb3nr/2p1p3/p3k3/1pPp1pq1/4P1Q1/N6P/PP1b1PP1/R1B1KBNR w KQ - +perft 1 3 +perft 2 108 +perft 3 3572 +perft 4 118738 +perft 5 4095070 +perft 6 134943828 + +id gentest-595 +epd rnb3nr/2p1p3/4k3/ppPp1pq1/4P1Q1/N5PP/PP1bKP2/R1B2BNR b - - +perft 1 40 +perft 2 1052 +perft 3 37630 +perft 4 1083773 +perft 5 38177755 +perft 6 1167510369 + +id gentest-596 +epd 1nb3nr/2p1p3/r3k3/ppP2pq1/1P1pP1Q1/N5PP/P2bKP2/R1B2BNR w - - +perft 1 26 +perft 2 949 +perft 3 25775 +perft 4 924987 +perft 5 27022030 +perft 6 958058694 + +id gentest-597 +epd 1nb3nr/2p1pk2/r7/ppP2pq1/1P1pP1Q1/N4KPP/P2b1P2/1RB2BNR b - - +perft 1 51 +perft 2 1276 +perft 3 55688 +perft 4 1531221 +perft 5 63713833 +perft 6 1885217088 + +id gentest-598 +epd 1nb3nr/2p1p3/4r1k1/ppP2pq1/1P1pP1Q1/N4KPP/P2b1P1R/1RB2BN1 w - - +perft 1 28 +perft 2 950 +perft 3 26067 +perft 4 902176 +perft 5 26008811 +perft 6 913929727 + +id gentest-599 +epd 1nb3nr/2p1p3/P1r3k1/1pP2pq1/3pP1Q1/N4KPP/P2b1P1R/1RB2BN1 b - - +perft 1 39 +perft 2 1074 +perft 3 37344 +perft 4 1091367 +perft 5 38479725 +perft 6 1188613993 + +id gentest-600 +epd 1nb3nr/2p1p3/P4rk1/bpP2pq1/3pP1Q1/N2B1KPP/P4P1R/1RB3N1 w - - +perft 1 33 +perft 2 1088 +perft 3 35253 +perft 4 1159999 +perft 5 38919041 +perft 6 1294765096 + +id gentest-601 +epd 1n4nr/P1p1p3/4brk1/bpP2pq1/3pP1Q1/N2BBKPP/P4P1R/1R4N1 b - - +perft 1 34 +perft 2 1350 +perft 3 44148 +perft 4 1725479 +perft 5 57637540 +perft 6 2243095097 + +id gentest-602 +epd 1n4nr/P1p1p3/4brk1/bpP2pq1/4P1QP/N2B1KP1/P3pP1R/1R4N1 w - - +perft 1 41 +perft 2 1297 +perft 3 47008 +perft 4 1586826 +perft 5 57385066 +perft 6 2018331606 + +id gentest-603 +epd 1n4nr/P1p1p1k1/4br2/bpP1Ppq1/6QP/N2B1KP1/P3pP1R/R5N1 b - - +perft 1 39 +perft 2 1571 +perft 3 61211 +perft 4 2366746 +perft 5 93763186 +perft 6 3563864349 + +id gentest-604 +epd 6nr/P1p1p3/n3br1k/bpP1Ppq1/6QP/N2B1KP1/P3pP2/R5NR w - - +perft 1 40 +perft 2 1429 +perft 3 49163 +perft 4 1766663 +perft 5 62368666 +perft 6 2267277610 + +id gentest-605 +epd 6nr/P1p1p3/n3br1k/bpP1P1q1/6pP/N5P1/P1B1pPK1/R5NR b - - +perft 1 42 +perft 2 1272 +perft 3 53461 +perft 4 1630260 +perft 5 69613559 +perft 6 2151245773 + +id gentest-606 +epd B4rnr/2p1p3/n6k/bpP1Pbq1/6pP/N5P1/P1B1pPK1/R5NR w - - +perft 1 32 +perft 2 1390 +perft 3 43247 +perft 4 1892584 +perft 5 58837205 +perft 6 2577869765 + +id gentest-607 +epd 1r4nr/2p1p3/n6k/bpP1Pbq1/4B1pP/N5P1/P3pPK1/RB4NR b - - +perft 1 42 +perft 2 1003 +perft 3 41323 +perft 4 1024405 +perft 5 42787168 +perft 6 1114695434 + +id gentest-608 +epd 1r4nr/2p1p3/7k/1pn1Pbq1/1b2B1pP/N2B2P1/P3pPK1/R5NR w - - +perft 1 31 +perft 2 1407 +perft 3 43563 +perft 4 1973950 +perft 5 61811749 +perft 6 2805738401 + +id gentest-609 +epd 1r4nr/2p1p3/n6k/1p2Pbq1/1b2B1pP/3B2P1/P1N1pPK1/4R1NR b - - +perft 1 39 +perft 2 1246 +perft 3 48104 +perft 4 1566387 +perft 5 61713502 +perft 6 2034730244 + +id gentest-610 +epd 1r4nr/2p1p3/n3b2k/1p2P3/1b2B1pP/3B2P1/P1NqNPK1/4R2R w - - +perft 1 38 +perft 2 1421 +perft 3 52767 +perft 4 2066184 +perft 5 75165867 +perft 6 3021179641 + +id gentest-611 +epd 6nr/2p1p2B/nr2b2k/1p2P3/1b4pP/3B2P1/P1Nq1PK1/4R1NR b - - +perft 1 36 +perft 2 1152 +perft 3 45195 +perft 4 1408784 +perft 5 57123858 +perft 6 1775740563 + +id gentest-612 +epd 6nr/2p1p2B/nrq1b2k/1p2P3/1b4pP/3B2P1/P4PK1/1R4NR w - - +perft 1 6 +perft 2 220 +perft 3 6280 +perft 4 235680 +perft 5 6894924 +perft 6 267062471 + +id gentest-613 +epd 6nr/2p1p2B/nr2b2k/1p2P3/1bq3pP/6P1/P4P1K/1R3BNR b - - +perft 1 39 +perft 2 1036 +perft 3 42166 +perft 4 1120504 +perft 5 46697652 +perft 6 1250997708 + +id gentest-614 +epd 6nr/2pbp2B/nr5k/1B2P3/1b4pP/6P1/q4P1K/1R4NR w - - +perft 1 28 +perft 2 1251 +perft 3 35692 +perft 4 1536493 +perft 5 44721962 +perft 6 1903705125 + +id gentest-615 +epd 6nr/2pbp2B/Br5k/4P3/1b4pP/q5P1/5P1K/3R2NR b - - +perft 1 43 +perft 2 1324 +perft 3 55899 +perft 4 1651559 +perft 5 70120828 +perft 6 2049603592 + +id gentest-616 +epd 6nr/3bp3/Br5k/2p1P3/6pP/q2B2P1/3b1P1K/3R2NR w - - +perft 1 28 +perft 2 1286 +perft 3 36219 +perft 4 1588037 +perft 5 45330228 +perft 6 1944065228 + +id gentest-617 +epd 2B3nr/q2bp3/1r5k/2p1P3/6pP/3B2P1/3b1P1K/5RNR b - - +perft 1 44 +perft 2 1138 +perft 3 48127 +perft 4 1263011 +perft 5 52656097 +perft 6 1411190390 + +id gentest-618 +epd 1rB3nr/q3p3/6Bk/1bp1P3/6pP/6P1/3b1P1K/5RNR w - - +perft 1 28 +perft 2 1072 +perft 3 29615 +perft 4 1170122 +perft 5 32433595 +perft 6 1309400682 + +id gentest-619 +epd 2r3nr/q3p3/6Bk/1bp1P3/6pP/6P1/3b1P1K/R5NR b - - +perft 1 42 +perft 2 1133 +perft 3 45899 +perft 4 1188864 +perft 5 47655295 +perft 6 1228716661 + +id gentest-620 +epd 2r3nr/4p3/q5Bk/1bp1P3/5PpP/4b1P1/7K/R5NR w - - +perft 1 26 +perft 2 1038 +perft 3 25041 +perft 4 1003013 +perft 5 24170623 +perft 6 977534499 + +id gentest-621 +epd 2r3nr/4p1k1/q7/1bp1P3/4BPpP/4b1P1/7K/1R4NR b - - +perft 1 47 +perft 2 1210 +perft 3 56249 +perft 4 1424338 +perft 5 65251704 +perft 6 1635452511 + +id gentest-622 +epd q1r3nr/4p1k1/8/1bp1P3/4BPpP/4b1P1/1R5K/6NR w - - +perft 1 29 +perft 2 1276 +perft 3 32245 +perft 4 1413398 +perft 5 35289421 +perft 6 1546336433 + +id gentest-623 +epd q1r3nr/4p1k1/8/2p1P3/4BPpP/3bb1P1/R5K1/6NR b - - +perft 1 42 +perft 2 996 +perft 3 42817 +perft 4 1052959 +perft 5 45801761 +perft 6 1165594223 + +id gentest-624 +epd 2r3nr/1q2pk2/8/2p1P3/4BPpP/3bb1P1/6K1/R5NR w - - +perft 1 25 +perft 2 1112 +perft 3 26628 +perft 4 1151941 +perft 5 28828957 +perft 6 1230732353 + +id gentest-625 +epd 5rnr/1q2pk2/R7/2p1P3/4BPpP/3bb1P1/6K1/6NR b - - +perft 1 45 +perft 2 1126 +perft 3 44914 +perft 4 1129389 +perft 5 45124428 +perft 6 1170838454 + +id gentest-626 +epd 2r4r/1q2pk2/5n2/2p1P3/R3BPpP/3bb1P1/6K1/6NR w - - +perft 1 24 +perft 2 1298 +perft 3 31534 +perft 4 1601708 +perft 5 41055255 +perft 6 1998497307 + +id gentest-627 +epd 2r4r/4pk2/1q3PB1/2p5/R4PpP/3bb1P1/6K1/6NR b - - +perft 1 6 +perft 2 152 +perft 3 7277 +perft 4 171569 +perft 5 7822919 +perft 6 191086866 + +id gentest-628 +epd 2r4r/4p3/bq3Pk1/2p5/R4PpP/4bNP1/6K1/7R w - - +perft 1 30 +perft 2 1455 +perft 3 39071 +perft 4 1823581 +perft 5 48122640 +perft 6 2181518202 + +id gentest-629 +epd 2r4r/4p3/b4Pk1/2p5/R4PpP/4b1PN/6K1/1q5R b - - +perft 1 58 +perft 2 1141 +perft 3 57474 +perft 4 1213332 +perft 5 57817209 +perft 6 1291058928 + +id gentest-630 +epd 4r2r/4p3/b4P1k/2p2P2/R5pP/4b1PN/6K1/1q5R w - - +perft 1 26 +perft 2 1214 +perft 3 25750 +perft 4 1132776 +perft 5 25481402 +perft 6 1086215863 + +id gentest-631 +epd 4r2r/4p3/b4P1k/2p2P2/7P/4b1Pp/R6K/1q5R b - - +perft 1 48 +perft 2 932 +perft 3 42362 +perft 4 879131 +perft 5 38747941 +perft 6 843266875 + +id gentest-632 +epd 4r2r/4p3/b4P1k/2p2P2/7P/1q4Pp/R6K/6R1 w - - +perft 1 25 +perft 2 1091 +perft 3 25284 +perft 4 1017732 +perft 5 23915442 +perft 6 938831722 + +id gentest-633 +epd 4r2r/4p3/b4P1k/1qp2P2/5R1P/6Pp/7K/6R1 b - - +perft 1 32 +perft 2 680 +perft 3 24218 +perft 4 540242 +perft 5 19983808 +perft 6 458976816 + +id gentest-634 +epd 2b1r2r/4p3/5P1k/2p2P2/5R1P/6Pp/4q2K/4R3 w - - +perft 1 5 +perft 2 169 +perft 3 3488 +perft 4 116716 +perft 5 2570969 +perft 6 87774938 + +id gentest-635 +epd 2br3r/4R3/5P1k/2p2P2/5R1P/6Pp/7K/8 b - - +perft 1 21 +perft 2 565 +perft 3 12122 +perft 4 310283 +perft 5 7247204 +perft 6 181504179 + +id gentest-636 +epd 2b4r/6R1/5P1k/2p2P2/5R1P/6Pp/7K/1r6 w - - +perft 1 24 +perft 2 566 +perft 3 12675 +perft 4 301555 +perft 5 6888912 +perft 6 170045893 + +id gentest-637 +epd 2b4r/R7/5P1k/2p2P2/2R4P/6Pp/7K/r7 b - - +perft 1 24 +perft 2 589 +perft 3 14350 +perft 4 343882 +perft 5 8833468 +perft 6 210528029 + +id gentest-638 +epd 7r/R7/5P1k/2p2P2/7P/1b4Pp/2R4K/r7 w - - +perft 1 28 +perft 2 820 +perft 3 20556 +perft 4 580549 +perft 5 14196509 +perft 6 398880119 + +id gentest-639 +epd 1r6/8/R4P1k/2p2P2/7P/1b4Pp/7K/r1R5 b - - +perft 1 30 +perft 2 765 +perft 3 22465 +perft 4 529164 +perft 5 15303046 +perft 6 352305478 + +id gentest-640 +epd 1r6/8/R4P1k/2p2P2/1rR4P/1b4Pp/7K/8 w - - +perft 1 26 +perft 2 625 +perft 3 15674 +perft 4 414173 +perft 5 10103837 +perft 6 281501758 + +id gentest-641 +epd 8/8/1r3P1k/2p2P2/1rR4P/1b4Pp/8/R6K b - - +perft 1 19 +perft 2 476 +perft 3 11479 +perft 4 263895 +perft 5 7096491 +perft 6 161277192 + +id gentest-642 +epd 8/8/1r3P1k/1rp2P2/4R2P/1b4P1/7p/R6K w - - +perft 1 31 +perft 2 652 +perft 3 17565 +perft 4 410826 +perft 5 10382438 +perft 6 263637624 + +id gentest-643 +epd 8/1r3P2/4R2k/1rp2P2/7P/1b4P1/7p/R6K b - - +perft 1 4 +perft 2 130 +perft 3 2653 +perft 4 75293 +perft 5 1715152 +perft 6 47157360 + +id gentest-644 +epd 8/1r3P1k/4b3/1rp2P1P/8/6P1/7p/R6K w - - +perft 1 23 +perft 2 554 +perft 3 11092 +perft 4 277220 +perft 5 5548946 +perft 6 146574409 + +id gentest-645 +epd 5R2/1r5k/4b3/2p2P1P/8/R5P1/1r5p/7K b - - +perft 1 34 +perft 2 782 +perft 3 22770 +perft 4 508390 +perft 5 14341477 +perft 6 318495952 + +id gentest-646 +epd 1R6/7k/4b3/2p2P1P/1r6/R5P1/r6p/7K w - - +perft 1 26 +perft 2 778 +perft 3 17459 +perft 4 499386 +perft 5 11020029 +perft 6 307266673 + +id gentest-647 +epd 1R6/7k/R3b3/2p2P1P/6P1/8/rr5p/7K b - - +perft 1 28 +perft 2 641 +perft 3 16310 +perft 4 345849 +perft 5 8807395 +perft 6 185944425 + +id gentest-648 +epd 2b3R1/7k/R7/2p2P1P/6P1/r7/1r5p/7K w - - +perft 1 23 +perft 2 616 +perft 3 12333 +perft 4 313582 +perft 5 6253574 +perft 6 157206804 + +id gentest-649 +epd R1b3R1/7k/8/2p2PPP/8/r7/6rp/7K b - - +perft 1 31 +perft 2 524 +perft 3 12090 +perft 4 219413 +perft 5 5076860 +perft 6 98111228 + +id gentest-650 +epd R1b2R2/7k/8/2p2PPP/8/8/6rp/r6K w - - +perft 1 2 +perft 2 42 +perft 3 863 +perft 4 15507 +perft 5 323820 +perft 6 5973924 + +id gentest-651 +epd 2b2R2/7k/8/2p2PPP/8/8/7p/6RK b - - +perft 1 11 +perft 2 165 +perft 3 1615 +perft 4 30796 +perft 5 317946 +perft 6 6608795 + +id gentest-652 +epd 5R2/3b3k/8/2p2PPP/8/8/8/6K1 w - - +perft 1 17 +perft 2 134 +perft 3 2249 +perft 4 20076 +perft 5 351255 +perft 6 3339647 + +id gentest-653 +epd 7k/3b1R2/8/2p2PPP/8/8/6K1/8 b - - +perft 1 9 +perft 2 159 +perft 3 1412 +perft 4 24740 +perft 5 231421 +perft 6 4123763 + +id gentest-654 +epd 7k/5R2/8/2p2PPP/b7/8/5K2/8 w - - +perft 1 20 +perft 2 167 +perft 3 3131 +perft 4 28902 +perft 5 542300 +perft 6 5216046 + +id gentest-655 +epd 7k/5R2/6P1/2p2P1P/8/5K2/2b5/8 b - - +perft 1 9 +perft 2 146 +perft 3 1254 +perft 4 22130 +perft 5 195136 +perft 6 3548411 + +id gentest-656 +epd 7k/R7/6P1/2p2P1P/8/3b1K2/8/8 w - - +perft 1 23 +perft 2 231 +perft 3 4515 +perft 4 42845 +perft 5 828407 +perft 6 8043903 + +id gentest-657 +epd 7k/R7/5PP1/2p4P/4K3/8/8/5b2 b - - +perft 1 9 +perft 2 166 +perft 3 1421 +perft 4 26060 +perft 5 228912 +perft 6 4258407 + +id gentest-658 +epd 7k/R7/b4PP1/2p2K1P/8/8/8/8 w - - +perft 1 18 +perft 2 130 +perft 3 2303 +perft 4 19191 +perft 5 352746 +perft 6 3081030 + +id gentest-659 +epd 2b4k/R7/5PP1/2p4P/5K2/8/8/8 b - - +perft 1 9 +perft 2 194 +perft 3 1757 +perft 4 36352 +perft 5 332795 +perft 6 6691712 + +id gentest-660 +epd 2b4k/5R2/5PP1/2p4P/5K2/8/8/8 w - - +perft 1 16 +perft 2 114 +perft 3 1925 +perft 4 16295 +perft 5 293745 +perft 6 2580223 + +id gentest-661 +epd 1R5k/3b4/5PP1/2p4P/5K2/8/8/8 b - - +perft 1 2 +perft 2 40 +perft 3 167 +perft 4 3519 +perft 5 28882 +perft 6 593203 + +id gentest-662 +epd 1Rb3k1/8/5PP1/2p4P/8/5K2/8/8 w - - +perft 1 19 +perft 2 103 +perft 3 1955 +perft 4 16797 +perft 5 324733 +perft 6 3191147 + +id gentest-663 +epd 2b3k1/8/5PP1/7P/2p5/5K2/8/R7 b - - +perft 1 10 +perft 2 202 +perft 3 1918 +perft 4 38487 +perft 5 375945 +perft 6 7437613 + +id gentest-664 +epd 6k1/8/5PP1/7P/2p3K1/8/8/R6b w - - +perft 1 23 +perft 2 207 +perft 3 4187 +perft 4 43843 +perft 5 844924 +perft 6 8971623 + +id gentest-665 +epd 7k/8/5PP1/7P/2p5/7K/8/3R3b b - - +perft 1 9 +perft 2 169 +perft 3 1712 +perft 4 30745 +perft 5 304830 +perft 6 5516526 + +id gentest-666 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-667 +epd rnbqkbnr/pp1ppppp/2p5/8/8/1P6/PBPPPPPP/RN1QKBNR b KQkq - +perft 1 21 +perft 2 563 +perft 3 13521 +perft 4 361756 +perft 5 9624190 +perft 6 264947279 + +id gentest-668 +epd rnbqkbnr/pp2p1pp/2p5/3p1p2/2P5/1P6/PB1PPPPP/RN1QKBNR w KQkq - +perft 1 28 +perft 2 754 +perft 3 21381 +perft 4 611204 +perft 5 17818988 +perft 6 533883182 + +id gentest-669 +epd rnbqkbnr/pp2p1p1/2p5/3p1p1p/1PP5/7N/PB1PPPPP/RN1QKB1R b KQkq - +perft 1 28 +perft 2 833 +perft 3 24569 +perft 4 743804 +perft 5 22819719 +perft 6 711808669 + +id gentest-670 +epd rnbqkbnr/pp2p1p1/8/3p1p1p/PpP5/7N/1B1PPPPP/RN1QKB1R w KQkq - +perft 1 29 +perft 2 840 +perft 3 25175 +perft 4 776716 +perft 5 24252616 +perft 6 782985729 + +id gentest-671 +epd rnbqkbnr/pp6/8/3pBp1p/PpP5/7N/3PPPPP/RN1QKB1R b KQkq - +perft 1 36 +perft 2 1167 +perft 3 42290 +perft 4 1365627 +perft 5 50088360 +perft 6 1654466908 + +id gentest-672 +epd rBb1kbnr/p7/1p6/3p1p1p/PpP4q/7N/3PPPPP/RN1QKB1R w KQkq - +perft 1 26 +perft 2 969 +perft 3 26990 +perft 4 1007791 +perft 5 30138364 +perft 6 1130678730 + +id gentest-673 +epd rB2kbnr/pb6/1p6/3p1p1p/PpP3Pq/1Q5N/3PPP1P/RN2KB1R b KQkq - +perft 1 34 +perft 2 1213 +perft 3 43008 +perft 4 1538359 +perft 5 56636332 +perft 6 2042428250 + +id gentest-674 +epd rB2kbnr/pb6/1p3q2/5p1P/PpPp4/1Q5N/3PPP1P/RN2KB1R w KQkq - +perft 1 35 +perft 2 1385 +perft 3 48116 +perft 4 1913479 +perft 5 66836437 +perft 6 2659333292 + +id gentest-675 +epd r3kbnr/p7/1p1B1q2/3b1p1P/PpPp4/2Q4N/3PPP1P/RN2KB1R b KQkq - +perft 1 44 +perft 2 1613 +perft 3 68653 +perft 4 2455013 +perft 5 103210254 +perft 6 3674650964 + +id gentest-676 +epd r2k1b1r/p3n3/1p1B1q2/3b1p1P/PpPp4/2Q5/3PPP1P/RN2KBNR w KQ - +perft 1 39 +perft 2 1530 +perft 3 57196 +perft 4 2238341 +perft 5 81922447 +perft 6 3214305391 + +id gentest-677 +epd r2k1bbr/p3n3/1p1B1q2/5p1P/PpPp4/2Q2N2/3PPPBP/RN2K2R b KQ - +perft 1 36 +perft 2 1423 +perft 3 50450 +perft 4 2010203 +perft 5 72481104 +perft 6 2901142689 + +id gentest-678 +epd r4bbr/3kB3/1p3q2/p4p1P/PpPp4/2Q2N2/3PPPBP/RN2K2R w KQ - +perft 1 37 +perft 2 1394 +perft 3 52523 +perft 4 1941947 +perft 5 73701340 +perft 6 2707464086 + +id gentest-679 +epd 5bbr/3kB3/rp3q2/p4p1P/PpPpP3/3Q1N2/3P1PBP/RN2K2R b KQ - +perft 1 34 +perft 2 1251 +perft 3 41369 +perft 4 1511211 +perft 5 51194727 +perft 6 1871415270 + +id gentest-680 +epd 5b1r/4k3/rp2bq2/p4p1P/PpPpP3/1Q3N2/3P1PBP/RN2K2R w KQ - +perft 1 33 +perft 2 972 +perft 3 31822 +perft 4 1044616 +perft 5 34070549 +perft 6 1183586373 + +id gentest-681 +epd 5b2/4k3/rp2bqN1/p4p1r/PpPpP3/1Q6/3P1PBP/RN2K2R b KQ - +perft 1 6 +perft 2 228 +perft 3 7993 +perft 4 286832 +perft 5 10472297 +perft 6 363165364 + +id gentest-682 +epd 5b2/8/rp2bqN1/p1k2p1r/PpPpP3/1Q5P/3P1PB1/RN2K2R w KQ - +perft 1 36 +perft 2 1169 +perft 3 40063 +perft 4 1365571 +perft 5 45338825 +perft 6 1586993472 + +id gentest-683 +epd 5b2/7r/rp2bqN1/p1k2p2/PpPpP3/1Q3P1P/3P4/RN2KB1R b KQ - +perft 1 39 +perft 2 1212 +perft 3 44109 +perft 4 1333688 +perft 5 48557393 +perft 6 1459090071 + +id gentest-684 +epd 2b2b1N/7r/rp6/p1k2pq1/PpPpP3/1Q3P1P/3P4/RN2KB1R w KQ - +perft 1 28 +perft 2 1160 +perft 3 29370 +perft 4 1133362 +perft 5 29375186 +perft 6 1107384396 + +id gentest-685 +epd 2b5/7r/rp1b2N1/p1k2pq1/PpPpP3/1Q3P1P/3PK3/RN3B1R b - - +perft 1 44 +perft 2 1234 +perft 3 49323 +perft 4 1339193 +perft 5 51726362 +perft 6 1404437765 + +id gentest-686 +epd 2b5/6r1/rp1b2N1/p1k2p2/PpPpP3/3Q1PqP/3PK3/RN3B1R w - - +perft 1 24 +perft 2 886 +perft 3 19692 +perft 4 724429 +perft 5 17275655 +perft 6 635726225 + +id gentest-687 +epd 2b5/6r1/rp1b2N1/p1k2p2/PpPpP3/3Q1q1P/3P4/RN2KBR1 b - - +perft 1 41 +perft 2 953 +perft 3 37293 +perft 4 941740 +perft 5 36019488 +perft 6 967679866 + +id gentest-688 +epd 2b5/r5r1/1p4N1/p1k1bp2/PpPpP3/R2Q1q1P/3P4/1N2KBR1 w - - +perft 1 27 +perft 2 1237 +perft 3 30597 +perft 4 1331284 +perft 5 35125268 +perft 6 1461599143 + +id gentest-689 +epd 2b5/6r1/rp4N1/p1k1bp2/PpPpP3/RQ1B1q1P/3P4/1N2K1R1 b - - +perft 1 41 +perft 2 894 +perft 3 35891 +perft 4 836880 +perft 5 33193321 +perft 6 824948575 + +id gentest-690 +epd 2b5/6r1/rp1k2N1/p3bpR1/PpPpP3/RQ1B3P/3P4/1N2K2q w - - +perft 1 4 +perft 2 144 +perft 3 3583 +perft 4 124471 +perft 5 3308688 +perft 6 116245804 + +id gentest-691 +epd 2b5/6r1/rpk5/p3bpR1/PpPpPN2/RQ1B3P/3PK3/1N5q b - - +perft 1 39 +perft 2 894 +perft 3 33679 +perft 4 831921 +perft 5 30816591 +perft 6 806592354 + +id gentest-692 +epd 8/3b2r1/rpk5/p3bpR1/PpPpPN2/R2B3P/2QPK3/1Nq5 w - - +perft 1 29 +perft 2 977 +perft 3 25721 +perft 4 906323 +perft 5 24719727 +perft 6 886722717 + +id gentest-693 +epd 8/3b2r1/rpk3N1/p4pR1/PpPpPb2/R1QB3P/3PK3/1Nq5 b - - +perft 1 40 +perft 2 1039 +perft 3 38267 +perft 4 1037122 +perft 5 37881269 +perft 6 1060061022 + +id gentest-694 +epd 8/3b2r1/rpk3N1/p4pR1/PpP1Pb2/R1pB3P/3P4/1N3K2 w - - +perft 1 29 +perft 2 780 +perft 3 22272 +perft 4 631726 +perft 5 17876289 +perft 6 526848836 + +id gentest-695 +epd 1b6/3b2r1/rpk3N1/p4p2/PpP1P3/2RB3P/3P2R1/1N3K2 b - - +perft 1 26 +perft 2 713 +perft 3 18454 +perft 4 501921 +perft 5 13608909 +perft 6 372219074 + +id gentest-696 +epd 1b6/5br1/rpk3N1/p4p2/PpP1P3/2RB2RP/3P4/1N3K2 w - - +perft 1 28 +perft 2 724 +perft 3 20153 +perft 4 546153 +perft 5 15182580 +perft 6 423952181 + +id gentest-697 +epd 1b4r1/5b2/rpk3N1/p4p2/PpP1P3/2RB2RP/3P4/1N2K3 b - - +perft 1 30 +perft 2 802 +perft 3 22842 +perft 4 630254 +perft 5 18218858 +perft 6 514003152 + +id gentest-698 +epd 1b6/5b2/rp4r1/p1k1Pp2/PpP5/2RB2RP/3P4/1N2K3 w - - +perft 1 23 +perft 2 610 +perft 3 15191 +perft 4 398930 +perft 5 10339869 +perft 6 272689854 + +id gentest-699 +epd rb6/5b2/1p4r1/p1k1Pp2/PpP1B3/2R4P/3P4/1N2K1R1 b - - +perft 1 29 +perft 2 936 +perft 3 26101 +perft 4 809039 +perft 5 22760867 +perft 6 691386323 + +id gentest-700 +epd rb6/5b2/1p2r3/p1k1P3/PpP1p3/2R4P/3P4/1N1K2R1 w - - +perft 1 26 +perft 2 601 +perft 3 14926 +perft 4 380530 +perft 5 9411099 +perft 6 251826813 + +id gentest-701 +epd rb6/5b2/1pr5/p1k1P3/PpP1p3/5R1P/3P2R1/1N1K4 b - - +perft 1 26 +perft 2 805 +perft 3 20801 +perft 4 594908 +perft 5 15813689 +perft 6 437103379 + +id gentest-702 +epd rb6/5b2/1pr5/p3P3/PpP1p3/3k3P/3P2R1/1N1K4 w - - +perft 1 17 +perft 2 435 +perft 3 7198 +perft 4 186885 +perft 5 3171862 +perft 6 85121857 + +id gentest-703 +epd rb4R1/8/1pr5/p1PbP3/Pp2p3/3k3P/3P4/1N1K4 b - - +perft 1 26 +perft 2 501 +perft 3 13291 +perft 4 241871 +perft 5 6700328 +perft 6 121549264 + +id gentest-704 +epd rb4b1/8/1pr5/p1P1P3/Pp2p3/3k3P/3P2R1/1N1K4 w - - +perft 1 17 +perft 2 428 +perft 3 7297 +perft 4 187709 +perft 5 3309691 +perft 6 87471458 + +id gentest-705 +epd rb4b1/2r5/1p6/p1P1P3/Pp2p3/N2k3P/3P3R/3K4 b - - +perft 1 26 +perft 2 346 +perft 3 9009 +perft 4 131423 +perft 5 3408701 +perft 6 54063860 + +id gentest-706 +epd rb4b1/r7/1p6/pNP1P3/Pp6/3kp2P/3P3R/3K4 w - - +perft 1 17 +perft 2 401 +perft 3 6786 +perft 4 170907 +perft 5 3055105 +perft 6 81322968 + +id gentest-707 +epd rb4b1/r7/1p6/p1P1P3/P1N5/1p1kp2P/3P3R/3K4 b - - +perft 1 24 +perft 2 387 +perft 3 9543 +perft 4 159754 +perft 5 4237329 +perft 6 73746169 + +id gentest-708 +epd rb6/r6b/8/p1p1P3/P1N4P/1p1kp3/3P3R/3K4 w - - +perft 1 16 +perft 2 299 +perft 3 4863 +perft 4 112040 +perft 5 1870449 +perft 6 47849573 + +id gentest-709 +epd rb6/r6b/8/p1p1P3/P1Nk3P/1p2p3/3P3R/3K4 b - - +perft 1 24 +perft 2 395 +perft 3 10195 +perft 4 171137 +perft 5 4683236 +perft 6 80542513 + +id gentest-710 +epd r7/2b3rb/8/p1p1P3/P1Nk3P/1p2p3/3P1R2/3K4 w - - +perft 1 23 +perft 2 804 +perft 3 16668 +perft 4 556785 +perft 5 11143090 +perft 6 363159031 + +id gentest-711 +epd r7/2b3r1/8/2p1Pb2/P1Nk3P/1p2p3/3P1R2/3K4 b - - +perft 1 47 +perft 2 922 +perft 3 36407 +perft 4 710752 +perft 5 26168619 +perft 6 507609548 + +id gentest-712 +epd r7/2b3r1/8/2p1P3/P1N1b2P/1p1kp3/3P4/3K1R2 w - - +perft 1 22 +perft 2 871 +perft 3 17442 +perft 4 663724 +perft 5 12921060 +perft 6 475510951 + +id gentest-713 +epd r7/2b3r1/1N6/2p1PR2/P3b2P/3kp3/1p1P4/3K4 b - - +perft 1 42 +perft 2 694 +perft 3 28661 +perft 4 488211 +perft 5 19356588 +perft 6 335150038 + +id gentest-714 +epd r7/2b3r1/1N2P3/2p2R2/P3b2P/3kp3/1p1P4/3K4 w - - +perft 1 22 +perft 2 941 +perft 3 17464 +perft 4 716501 +perft 5 13018294 +perft 6 514794489 + +id gentest-715 +epd r7/2b3r1/1N2P3/2p5/P2kb2P/4p3/1p1PR3/3K4 b - - +perft 1 50 +perft 2 734 +perft 3 32641 +perft 4 522561 +perft 5 22121775 +perft 6 377053578 + +id gentest-716 +epd 8/r1b3r1/1N2P3/2pb3P/P2k4/4p3/1p1PR3/3K4 w - - +perft 1 17 +perft 2 700 +perft 3 11608 +perft 4 463155 +perft 5 8112779 +perft 6 313529366 + +id gentest-717 +epd 8/r2N2r1/4P3/P1pbb2P/3k4/4p3/1p1PR3/3K4 b - - +perft 1 44 +perft 2 705 +perft 3 28954 +perft 4 485603 +perft 5 19176918 +perft 6 335703981 + +id gentest-718 +epd 8/r2N3r/4P3/P2bb2P/2pk4/4p3/1p1P2R1/3K4 w - - +perft 1 24 +perft 2 865 +perft 3 18040 +perft 4 650532 +perft 5 13185490 +perft 6 475581706 + +id gentest-719 +epd 8/r2N3r/2b1P3/P3b2P/2pk4/3Pp3/1p2R3/3K4 b - - +perft 1 41 +perft 2 734 +perft 3 29636 +perft 4 534017 +perft 5 20685051 +perft 6 379123620 + +id gentest-720 +epd 8/3N2r1/2b1P3/r3b2P/2pk4/3Pp3/1p1R4/3K4 w - - +perft 1 18 +perft 2 832 +perft 3 13987 +perft 4 621807 +perft 5 10890239 +perft 6 468591056 + +id gentest-721 +epd 6r1/3N4/2b1P3/r3b2P/2pk4/3Pp3/1p1R4/3K4 b - - +perft 1 53 +perft 2 833 +perft 3 39246 +perft 4 663557 +perft 5 29460549 +perft 6 520430990 + +id gentest-722 +epd 8/3N2r1/2b1P3/r3b2P/2pk4/3Pp3/1p1R4/4K3 w - - +perft 1 19 +perft 2 880 +perft 3 15233 +perft 4 677830 +perft 5 11979320 +perft 6 515068487 + +id gentest-723 +epd 8/3NP1r1/2b5/r3b2P/2pk4/3Pp3/3RK3/1q6 b - - +perft 1 59 +perft 2 857 +perft 3 45340 +perft 4 732001 +perft 5 36909396 +perft 6 661237121 + +id gentest-724 +epd 1b6/3NP1r1/2b5/r6P/2pk4/3Pp3/3R4/4K3 w - - +perft 1 23 +perft 2 1034 +perft 3 22796 +perft 4 943368 +perft 5 21428318 +perft 6 836704432 + +id gentest-725 +epd 1b6/4P1r1/2b5/r3N2P/2Pk4/8/3Rp3/4K3 b - - +perft 1 5 +perft 2 120 +perft 3 4152 +perft 4 93562 +perft 5 3176622 +perft 6 72243882 + +id gentest-726 +epd 1b6/4P3/2b3r1/r3k2P/2P5/8/3RpK2/8 w - - +perft 1 21 +perft 2 753 +perft 3 14098 +perft 4 510503 +perft 5 9526733 +perft 6 341899492 + +id gentest-727 +epd 1b2b3/1R2P3/6r1/r3k2P/2P5/8/4pK2/8 b - - +perft 1 43 +perft 2 669 +perft 3 25688 +perft 4 411283 +perft 5 15083911 +perft 6 248241694 + +id gentest-728 +epd 1b2b3/4P1r1/8/4k2P/r1P5/8/4pK2/1R6 w - - +perft 1 20 +perft 2 735 +perft 3 11872 +perft 4 430917 +perft 5 6978868 +perft 6 251094336 + +id gentest-729 +epd 1b2b3/4P1r1/8/4k2P/2P5/r7/2R1pK2/8 b - - +perft 1 45 +perft 2 454 +perft 3 17395 +perft 4 225320 +perft 5 8434542 +perft 6 124238064 + +id gentest-730 +epd 1b6/4P1r1/6b1/7P/2P1k3/r7/2R1p3/4K3 w - - +perft 1 16 +perft 2 498 +perft 3 7816 +perft 4 249515 +perft 5 4169392 +perft 6 136843652 + +id gentest-731 +epd 1b2b3/4P1r1/8/7P/2P1k3/r7/3RpK2/8 b - - +perft 1 45 +perft 2 614 +perft 3 23058 +perft 4 331202 +perft 5 12347165 +perft 6 187781588 + +id gentest-732 +epd 1b2b3/4P3/6r1/7P/2Pk4/r7/4pK2/8 w - - +perft 1 5 +perft 2 230 +perft 3 1328 +perft 4 57202 +perft 5 397717 +perft 6 16170553 + +id gentest-733 +epd 1b2Q3/5b2/6r1/2P4P/3k4/r7/4pK2/8 b - - +perft 1 51 +perft 2 994 +perft 3 34157 +perft 4 666227 +perft 5 22254444 +perft 6 440794576 + +id gentest-734 +epd 1b2Q3/5b2/8/2P4P/3kr3/r7/4p1K1/8 w - - +perft 1 20 +perft 2 680 +perft 3 13227 +perft 4 450064 +perft 5 8857033 +perft 6 295565558 + +id gentest-735 +epd 1b6/2Q2b2/8/2k4P/4r3/r7/4p1K1/8 b - - +perft 1 5 +perft 2 108 +perft 3 3381 +perft 4 68691 +perft 5 2212402 +perft 6 44007612 + +id gentest-736 +epd 1b6/5b2/8/3k3P/5r2/r7/4p1KQ/8 w - - +perft 1 9 +perft 2 403 +perft 3 6027 +perft 4 212940 +perft 5 3704648 +perft 6 123006289 + +id gentest-737 +epd 1b2b3/8/8/3k3P/3Q4/r7/4p1K1/8 b - - +perft 1 3 +perft 2 66 +perft 3 1720 +perft 4 35998 +perft 5 942198 +perft 6 19789311 + +id gentest-738 +epd 4b3/8/7P/8/3k4/r5b1/4p1K1/8 w - - +perft 1 4 +perft 2 160 +perft 3 648 +perft 4 23341 +perft 5 138593 +perft 6 4794553 + +id gentest-739 +epd 4b3/8/7P/8/3k4/5rb1/4p3/7K b - - +perft 1 40 +perft 2 114 +perft 3 4442 +perft 4 18544 +perft 5 650665 +perft 6 3629131 + +id gentest-740 +epd 4b3/2b5/7P/8/3k1r2/8/4p1K1/8 w - - +perft 1 6 +perft 2 210 +perft 3 948 +perft 4 33632 +perft 5 182087 +perft 6 6424108 + +id gentest-741 +epd 4b3/2b4P/8/8/3k1r2/8/7K/4n3 b - - +perft 1 35 +perft 2 221 +perft 3 7072 +perft 4 48020 +perft 5 1552093 +perft 6 14376329 + +id gentest-742 +epd 4b3/2b4P/8/4k3/8/8/5r2/4n1K1 w - - +perft 1 6 +perft 2 152 +perft 3 1177 +perft 4 32729 +perft 5 350834 +perft 6 10061706 + +id gentest-743 +epd 2R5/2b2b2/8/4k3/8/8/5r2/4n1K1 b - - +perft 1 38 +perft 2 375 +perft 3 12600 +perft 4 159834 +perft 5 5126867 +perft 6 66256704 + +id gentest-744 +epd 8/2R5/8/4kb2/8/8/5r2/4n1K1 w - - +perft 1 16 +perft 2 436 +perft 3 6025 +perft 4 161706 +perft 5 2231443 +perft 6 58377168 + +id gentest-745 +epd 2R5/8/4k3/5b2/8/8/5r2/4n2K b - - +perft 1 29 +perft 2 392 +perft 3 10475 +perft 4 137131 +perft 5 3658019 +perft 6 48054593 + +id gentest-746 +epd 8/8/2k5/5b2/8/8/5r2/4n2K w - - +perft 1 1 +perft 2 33 +perft 3 65 +perft 4 1905 +perft 5 4927 +perft 6 125932 + +id gentest-747 +epd 8/8/8/3k1b2/8/8/5K2/4n3 b - - +perft 1 23 +perft 2 133 +perft 3 2709 +perft 4 12275 +perft 5 244644 +perft 6 1163032 + +id gentest-748 +epd 8/8/8/2k5/8/8/8/1b2nK2 w - - +perft 1 4 +perft 2 72 +perft 3 368 +perft 4 6792 +perft 5 32474 +perft 6 597700 + +id gentest-749 +epd 8/8/8/8/3k4/8/5K2/1b2n3 b - - +perft 1 18 +perft 2 95 +perft 3 1685 +perft 4 7835 +perft 5 142682 +perft 6 669311 + +id gentest-750 +epd 8/8/8/3k4/8/8/2b5/4n1K1 w - - +perft 1 4 +perft 2 80 +perft 3 313 +perft 4 6072 +perft 5 26973 +perft 6 522190 + +id gentest-751 +epd 8/8/8/3k4/4b3/6K1/8/4n3 b - - +perft 1 20 +perft 2 110 +perft 3 2306 +perft 4 10487 +perft 5 216268 +perft 6 1024404 + +id gentest-752 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-753 +epd rnbqkb1r/pppppppp/7n/8/P2P4/8/1PP1PPPP/RNBQKBNR b KQkq - +perft 1 20 +perft 2 579 +perft 3 12934 +perft 4 390277 +perft 5 9653490 +perft 6 303024872 + +id gentest-754 +epd rnbqkb1r/pppp1ppp/8/4pn2/P2PP3/8/1PP2PPP/RNBQKBNR w KQkq - +perft 1 40 +perft 2 1341 +perft 3 51966 +perft 4 1729845 +perft 5 66597786 +perft 6 2232624013 + +id gentest-755 +epd rnbqkb1r/pppp1ppp/8/4p3/P2PPB2/4n3/1PP1QPPP/RN2KBNR b KQkq - +perft 1 37 +perft 2 1236 +perft 3 44982 +perft 4 1592016 +perft 5 57305859 +perft 6 2102299493 + +id gentest-756 +epd rnbqkbr1/pppp1ppp/8/4p3/P2PPB2/3Q4/1PP2PPP/RN2KnNR w KQq - +perft 1 44 +perft 2 1421 +perft 3 57831 +perft 4 1904130 +perft 5 74966717 +perft 6 2514384342 + +id gentest-757 +epd rnbqkbr1/ppp2ppp/3p4/4p3/P2PP3/3Q4/1PPB1PPP/RN2KnNR b KQq - +perft 1 35 +perft 2 1480 +perft 3 51711 +perft 4 2081723 +perft 5 73436472 +perft 6 2854666165 + +id gentest-758 +epd r1bqkbr1/p1p2ppp/n2p4/1p2p3/P2PP3/3Q4/1PPB1PPP/RN3KNR w q - +perft 1 42 +perft 2 1266 +perft 3 51786 +perft 4 1630302 +perft 5 64926234 +perft 6 2104938318 + +id gentest-759 +epd r1b1kbr1/p1p2ppp/n2p4/1p2p1B1/P2PP2q/2NQ4/1PP2PPP/R4KNR b q - +perft 1 34 +perft 2 1503 +perft 3 52112 +perft 4 2173716 +perft 5 76943929 +perft 6 3089090526 + +id gentest-760 +epd r1b1kbr1/p1p2ppp/n2p4/1N2p1B1/P2PP3/3Q4/1PP2PP1/R4KNq w q - +perft 1 44 +perft 2 1240 +perft 3 49371 +perft 4 1487011 +perft 5 57699450 +perft 6 1822944736 + +id gentest-761 +epd r1b1k1r1/p1p1bppp/n2p4/1N2p1B1/P2PP2Q/8/1PP2PP1/R4KNq b q - +perft 1 33 +perft 2 1230 +perft 3 40206 +perft 4 1490246 +perft 5 49869256 +perft 6 1825880329 + +id gentest-762 +epd r1b1k1r1/p1p1bppp/n2p4/1N2p1B1/P2PP3/8/1PP2PPQ/R4KNq w q - +perft 1 41 +perft 2 1242 +perft 3 46297 +perft 4 1463119 +perft 5 53289845 +perft 6 1743853465 + +id gentest-763 +epd r1b1k1r1/p1p1b1pp/n2p1p2/1N2P1B1/P3P3/2P5/1P3PPQ/R4KNq b q - +perft 1 31 +perft 2 1113 +perft 3 33822 +perft 4 1176938 +perft 5 37085293 +perft 6 1270416062 + +id gentest-764 +epd r2bk1r1/p1p3pp/n2p1p2/1N2P1B1/P3P1b1/2P5/1P3PPQ/2R2KNq w q - +perft 1 35 +perft 2 1105 +perft 3 35094 +perft 4 1103649 +perft 5 35143317 +perft 6 1115586701 + +id gentest-765 +epd r1bbk1r1/p1p3pp/n2p1B2/1N2P3/P3P3/2P3P1/1P3P1Q/2R2KNq b q - +perft 1 31 +perft 2 918 +perft 3 28050 +perft 4 845727 +perft 5 27221324 +perft 6 833703869 + +id gentest-766 +epd r1b3r1/p1p1k1pp/n2p1b2/1N2P3/P3P3/2P3PQ/1P3P2/2R2KNq w - - +perft 1 34 +perft 2 1069 +perft 3 32070 +perft 4 1076320 +perft 5 32085484 +perft 6 1118271017 + +id gentest-767 +epd r1b3r1/p1p1k1pp/n2pQ3/PN2P3/4P2b/2P3P1/1P3P2/2R2KNq b - - +perft 1 4 +perft 2 114 +perft 3 3199 +perft 4 81989 +perft 5 2538855 +perft 6 65513783 + +id gentest-768 +epd r1b2kr1/p1p3pp/n2p1b2/PN2P3/4P3/2P3P1/1P3P2/2R2KNq w - - +perft 1 21 +perft 2 741 +perft 3 14527 +perft 4 526835 +perft 5 10691219 +perft 6 396171048 + +id gentest-769 +epd r1b2kr1/p1p3pp/n2N1b2/P3P3/4P3/2P3P1/1P3Pq1/2R1K1N1 b - - +perft 1 33 +perft 2 719 +perft 3 25124 +perft 4 525365 +perft 5 18988779 +perft 6 392663505 + +id gentest-770 +epd 1r3kr1/p1p3pp/n2Nbb2/P3P3/4P3/2P3P1/1P3Pq1/3RK1N1 w - - +perft 1 26 +perft 2 1153 +perft 3 26746 +perft 4 1148563 +perft 5 25894699 +perft 6 1091286405 + +id gentest-771 +epd 1r3kr1/p1p3pp/n3bb2/P3PN2/4P3/2P3P1/1P3P1q/1R2K1N1 b - - +perft 1 43 +perft 2 968 +perft 3 41615 +perft 4 915715 +perft 5 38781964 +perft 6 844846990 + +id gentest-772 +epd 1r4r1/p1p2kpp/n3b3/P3PNb1/4P3/2P3P1/1P3P1q/R3K1N1 w - - +perft 1 25 +perft 2 1190 +perft 3 26884 +perft 4 1251801 +perft 5 27236046 +perft 6 1247486019 + +id gentest-773 +epd r5r1/p1p2kpp/n3b3/P3PNb1/4P3/R1P2PP1/1P5q/4K1N1 b - - +perft 1 51 +perft 2 913 +perft 3 40756 +perft 4 731549 +perft 5 32350563 +perft 6 586311240 + +id gentest-774 +epd rr6/p1p2kpp/n3b3/P3PNb1/4P3/2P2PP1/1P4q1/R3K1N1 w - - +perft 1 21 +perft 2 980 +perft 3 17399 +perft 4 813221 +perft 5 14308845 +perft 6 662255262 + +id gentest-775 +epd r2r4/p1p2kpp/n3b3/P3PNb1/4P3/1PP2PP1/4N1q1/R3K3 b - - +perft 1 50 +perft 2 909 +perft 3 41339 +perft 4 742625 +perft 5 33881608 +perft 6 609701053 + +id gentest-776 +epd r3r3/p1p2kp1/n3b2p/P3PNb1/4P3/1PP2PP1/4N1q1/1R2K3 w - - +perft 1 20 +perft 2 804 +perft 3 13765 +perft 4 573582 +perft 5 10051509 +perft 6 422670213 + +id gentest-777 +epd rr6/p1p2kp1/n3b2p/P3PNb1/4P3/1PP2PP1/2K1N1q1/1R6 b - - +perft 1 44 +perft 2 932 +perft 3 38469 +perft 4 826913 +perft 5 34875817 +perft 6 755037319 + +id gentest-778 +epd r7/p1p2kp1/n3b2p/Pr2PN2/2P1P3/1P2bPP1/2K1N1q1/1R6 w - - +perft 1 24 +perft 2 1121 +perft 3 26128 +perft 4 1200208 +perft 5 27816556 +perft 6 1257729195 + +id gentest-779 +epd 6r1/p1p2kp1/n3b2p/Pr2PN2/2P1P1P1/1P1KbP2/4N1q1/1R6 b - - +perft 1 51 +perft 2 1319 +perft 3 61300 +perft 4 1459426 +perft 5 66532275 +perft 6 1525652210 + +id gentest-780 +epd 1r6/p1p2kp1/n3b2p/Pr2PN2/2P1P1P1/1P1KbP2/1R2N2q/8 w - - +perft 1 26 +perft 2 1266 +perft 3 27946 +perft 4 1312957 +perft 5 28720751 +perft 6 1307899410 + +id gentest-781 +epd 1r6/p1p2kp1/n3b2p/Pr2P3/2PbP1P1/1P3PN1/1RK1N2q/8 b - - +perft 1 52 +perft 2 834 +perft 3 41984 +perft 4 756019 +perft 5 36789367 +perft 6 709326204 + +id gentest-782 +epd 3r4/p1p2kp1/n6p/Pr2P1P1/2bbP3/1P3PN1/1RK1N2q/8 w - - +perft 1 16 +perft 2 788 +perft 3 13461 +perft 4 664806 +perft 5 12309454 +perft 6 601669455 + +id gentest-783 +epd 3r4/p1p2kp1/n3P2p/P1r3P1/2bbP3/1P3PN1/2K1N2q/1R6 b - - +perft 1 7 +perft 2 132 +perft 3 6209 +perft 4 116813 +perft 5 5463241 +perft 6 106885593 + +id gentest-784 +epd 3r4/p1p3p1/n3P1kp/Pr4P1/2bbP3/1P3PN1/2K1N2q/2R5 w - - +perft 1 20 +perft 2 1093 +perft 3 21816 +perft 4 1126348 +perft 5 23615827 +perft 6 1166081373 + +id gentest-785 +epd 3r4/p1p3p1/n3P1kp/Pr4Pq/2bbP3/1P3PN1/2K1N3/2R5 b - - +perft 1 51 +perft 2 1141 +perft 3 54590 +perft 4 1261196 +perft 5 59145434 +perft 6 1378781526 + +id gentest-786 +epd 3r4/p1p3p1/n3P1kp/Pr4P1/3bP1q1/1P1b1PN1/3KN3/2R5 w - - +perft 1 30 +perft 2 1572 +perft 3 40938 +perft 4 2029965 +perft 5 49416145 +perft 6 2362203518 + +id gentest-787 +epd 3r4/p1p3p1/n3P1kp/P1r1P1P1/3b2q1/1P1b1PN1/4N3/2RK4 b - - +perft 1 50 +perft 2 1019 +perft 3 48239 +perft 4 982370 +perft 5 45731875 +perft 6 935933031 + +id gentest-788 +epd 3r4/p1p3p1/n2bP1kp/P1r3P1/6P1/1P1b2N1/4N3/2RK4 w - - +perft 1 20 +perft 2 711 +perft 3 14694 +perft 4 528837 +perft 5 11064418 +perft 6 399982579 + +id gentest-789 +epd 3r4/p1p3p1/n2bP1kp/P1r2bP1/2R3P1/1P6/4N3/3K3N b - - +perft 1 33 +perft 2 619 +perft 3 20575 +perft 4 395355 +perft 5 13625393 +perft 6 274868490 + +id gentest-790 +epd 3r4/p1p3p1/n3P1kp/P1r2bP1/2Rb2P1/1P6/4N3/2K4N w - - +perft 1 16 +perft 2 515 +perft 3 8886 +perft 4 299385 +perft 5 5681601 +perft 6 193596212 + +id gentest-791 +epd 3r4/p1p3p1/n1r1P1kP/P4b2/2Rb2P1/1P6/3KN3/7N b - - +perft 1 39 +perft 2 754 +perft 3 27560 +perft 4 563613 +perft 5 20412337 +perft 6 435782921 + +id gentest-792 +epd 3r4/p1p3p1/2r1P1kP/P1n5/2Rb2P1/1P1b2N1/3K4/7N w - - +perft 1 22 +perft 2 914 +perft 3 19692 +perft 4 787111 +perft 5 16827842 +perft 6 653239655 + +id gentest-793 +epd 1r6/p1p3p1/2r1P1kP/P1n3P1/2Rb4/1P1b2N1/3K1N2/8 b - - +perft 1 41 +perft 2 1039 +perft 3 41579 +perft 4 1045754 +perft 5 40518821 +perft 6 1005762480 + +id gentest-794 +epd 1r6/p1p3pP/2r1P1k1/P1n3P1/2Rb4/1P1b2N1/3K1N2/8 w - - +perft 1 29 +perft 2 1124 +perft 3 30265 +perft 4 1114960 +perft 5 30332340 +perft 6 1079839396 + +id gentest-795 +epd 1r5B/p1p3p1/2r1P1k1/P5P1/n1Rb4/1P1N2N1/3K4/8 b - - +perft 1 35 +perft 2 1080 +perft 3 33407 +perft 4 955027 +perft 5 28808431 +perft 6 786400344 + +id gentest-796 +epd 2r4B/p1p3p1/2r1P1k1/P5P1/nR6/1P1N2N1/1b1K4/8 w - - +perft 1 32 +perft 2 865 +perft 3 24190 +perft 4 682484 +perft 5 18683538 +perft 6 540011176 + +id gentest-797 +epd 5r1B/pRp3p1/2r1P1k1/P5P1/n7/1P1N4/1b1K4/7N b - - +perft 1 38 +perft 2 845 +perft 3 28482 +perft 4 627496 +perft 5 20695467 +perft 6 463686132 + +id gentest-798 +epd 4r2B/R1p3p1/2r1P3/P5k1/n7/1P1N4/1b1K4/7N w - - +perft 1 23 +perft 2 815 +perft 3 16921 +perft 4 577005 +perft 5 12175689 +perft 6 404888402 + +id gentest-799 +epd 4r2B/R1p5/P1r1P1p1/6k1/n7/1P6/1b1K4/4N2N b - - +perft 1 36 +perft 2 669 +perft 3 21598 +perft 4 439712 +perft 5 13950513 +perft 6 302730424 + +id gentest-800 +epd 4r2B/R1p5/Pnr1P1p1/8/6k1/1P6/1b6/3KN2N w - - +perft 1 19 +perft 2 659 +perft 3 13249 +perft 4 442552 +perft 5 9483903 +perft 6 311467318 + +id gentest-801 +epd 4r3/R1p5/Pn2P1p1/2r1B3/6k1/1P1N4/1b6/3K3N b - - +perft 1 38 +perft 2 1011 +perft 3 35305 +perft 4 895695 +perft 5 30405944 +perft 6 766010052 + +id gentest-802 +epd 5r2/R1p5/Pn2P1p1/2r1B3/6k1/1P1N4/8/b3K2N w - - +perft 1 28 +perft 2 1092 +perft 3 27654 +perft 4 993462 +perft 5 25312502 +perft 6 867600364 + +id gentest-803 +epd 5r1B/R1p5/Pn2P1p1/8/6k1/1PrN4/4K3/b6N b - - +perft 1 36 +perft 2 843 +perft 3 26784 +perft 4 627264 +perft 5 20006111 +perft 6 486973532 + +id gentest-804 +epd 7B/R1p5/Pn2P1p1/5k2/8/1PrN4/4KN2/b7 w - - +perft 1 28 +perft 2 565 +perft 3 15064 +perft 4 323289 +perft 5 8712791 +perft 6 196538969 + +id gentest-805 +epd 8/R1p5/Pn2P1p1/5k2/2r5/1PBNK3/5N2/b7 b - - +perft 1 22 +perft 2 615 +perft 3 13865 +perft 4 364371 +perft 5 8314187 +perft 6 217598476 + +id gentest-806 +epd n7/R1p5/P3P1p1/5k2/1r6/1P1NK3/3B1N2/b7 w - - +perft 1 22 +perft 2 527 +perft 3 12249 +perft 4 275169 +perft 5 6880513 +perft 6 151955678 + +id gentest-807 +epd n7/R7/P1p1P1p1/5k2/1r6/1PB1K3/5N2/b1N5 b - - +perft 1 20 +perft 2 601 +perft 3 11937 +perft 4 337483 +perft 5 6921478 +perft 6 191521996 + +id gentest-808 +epd 8/R1n5/P1p1P3/5kp1/1r6/1PB5/4KN2/b1N5 w - - +perft 1 29 +perft 2 737 +perft 3 20603 +perft 4 495482 +perft 5 13689029 +perft 6 324694881 + +id gentest-809 +epd 4n3/R7/P1p1P3/5kp1/1r6/1PB5/3K4/b1N4N b - - +perft 1 25 +perft 2 658 +perft 3 14793 +perft 4 392706 +perft 5 8854557 +perft 6 233991631 + +id gentest-810 +epd 4n3/R7/P1p1P3/5kp1/2r5/1PBN4/3K4/b6N w - - +perft 1 36 +perft 2 742 +perft 3 22598 +perft 4 474259 +perft 5 13599865 +perft 6 294220986 + +id gentest-811 +epd 4n3/R7/P1p1P3/5kp1/4r3/1PB5/2NK4/b6N b - - +perft 1 24 +perft 2 645 +perft 3 13941 +perft 4 375337 +perft 5 8229836 +perft 6 220572995 + +id gentest-812 +epd 4n3/R7/P1p1k3/6p1/r7/1PB3N1/2NK4/b7 w - - +perft 1 37 +perft 2 736 +perft 3 23971 +perft 4 485800 +perft 5 15127092 +perft 6 315632930 + +id gentest-813 +epd 4n3/R7/P1p5/5kp1/r7/1PB5/2N1K3/b4N2 b - - +perft 1 24 +perft 2 826 +perft 3 17283 +perft 4 548022 +perft 5 11651093 +perft 6 353450080 + +id gentest-814 +epd 4n3/7R/P1p5/5kp1/r7/1PB5/2N1K3/b4N2 w - - +perft 1 45 +perft 2 974 +perft 3 36916 +perft 4 781489 +perft 5 26903945 +perft 6 580582342 + +id gentest-815 +epd 4n3/8/P1p5/5kp1/5r2/1PB3N1/2N1K2R/b7 b - - +perft 1 3 +perft 2 114 +perft 3 2633 +perft 4 86862 +perft 5 2006577 +perft 6 64096322 + +id gentest-816 +epd 8/8/P1pnk3/6p1/5r2/1P4N1/2NBK2R/b7 w - - +perft 1 33 +perft 2 1121 +perft 3 34998 +perft 4 1080330 +perft 5 33380097 +perft 6 969934357 + +id gentest-817 +epd 8/8/P1pnk3/4b1pR/1P3r2/6N1/2NBK3/8 b - - +perft 1 35 +perft 2 958 +perft 3 30742 +perft 4 872153 +perft 5 26820789 +perft 6 779404085 + +id gentest-818 +epd 8/1n6/P1p1k3/4b1pR/1P6/N5N1/3BKr2/8 w - - +perft 1 5 +perft 2 164 +perft 3 4367 +perft 4 129359 +perft 5 3553310 +perft 6 98908977 + +id gentest-819 +epd 8/1n3k2/P1p5/4b1pR/1P6/6N1/2NB1r2/3K4 b - - +perft 1 35 +perft 2 961 +perft 3 29537 +perft 4 831422 +perft 5 23896361 +perft 6 686496771 + +id gentest-820 +epd 5k1b/1n6/P1p5/6p1/1P6/6N1/2NB1r2/3K4 w - - +perft 1 22 +perft 2 603 +perft 3 12498 +perft 4 336313 +perft 5 7036144 +perft 6 186772470 + +id gentest-821 +epd 5k2/1n6/P1p2b2/6p1/1P6/N7/3B1r2/3K1N2 b - - +perft 1 28 +perft 2 502 +perft 3 14735 +perft 4 272058 +perft 5 7859477 +perft 6 151614377 + +id gentest-822 +epd 3n1k1b/8/P1p5/6p1/1P6/N7/3B1r2/2K2N2 w - - +perft 1 17 +perft 2 469 +perft 3 8009 +perft 4 217778 +perft 5 3964108 +perft 6 106692995 + +id gentest-823 +epd 3n1k2/8/P1p5/1P4p1/8/N1b5/3B1r2/3K1N2 b - - +perft 1 31 +perft 2 541 +perft 3 16355 +perft 4 295741 +perft 5 8617166 +perft 6 164461175 + +id gentest-824 +epd 3n4/5kb1/P1p5/1P4p1/1B6/N7/5r2/3K1N2 w - - +perft 1 20 +perft 2 615 +perft 3 12065 +perft 4 357128 +perft 5 7205845 +perft 6 207604384 + +id gentest-825 +epd 3n4/4Bkb1/PPp2r2/6p1/8/N7/8/3K1N2 b - - +perft 1 21 +perft 2 403 +perft 3 9542 +perft 4 193649 +perft 5 4853137 +perft 6 101312584 + +id gentest-826 +epd 3n4/4Bk2/PPpr4/6p1/8/N7/1b2K3/5N2 w - - +perft 1 19 +perft 2 535 +perft 3 10685 +perft 4 283609 +perft 5 5953899 +perft 6 155016627 + +id gentest-827 +epd 3n4/4Bk2/PPp5/6p1/3r4/N5N1/1b6/4K3 b - - +perft 1 27 +perft 2 537 +perft 3 14862 +perft 4 305189 +perft 5 8301932 +perft 6 175527957 + +id gentest-828 +epd 3n4/4B1k1/PPp5/6p1/r7/N5N1/1b3K2/8 w - - +perft 1 26 +perft 2 637 +perft 3 15364 +perft 4 386364 +perft 5 9157069 +perft 6 232911293 + +id gentest-829 +epd 3n4/6k1/PPp2b2/2B3pN/r7/N7/5K2/8 b - - +perft 1 6 +perft 2 144 +perft 3 3492 +perft 4 79514 +perft 5 1965833 +perft 6 44682754 + +id gentest-830 +epd 3n4/4Bk2/PPp2b2/6pN/2r5/N7/5K2/8 w - - +perft 1 24 +perft 2 635 +perft 3 13737 +perft 4 351284 +perft 5 7605590 +perft 6 192320297 + +id gentest-831 +epd 3n4/4Bk2/PPp2b2/1Nr3pN/8/8/8/6K1 b - - +perft 1 25 +perft 2 506 +perft 3 11858 +perft 4 245958 +perft 5 5884571 +perft 6 123754455 + +id gentest-832 +epd 3n4/N3Bk2/PPp2b2/6pN/8/7r/8/6K1 w - - +perft 1 18 +perft 2 485 +perft 3 8668 +perft 4 228750 +perft 5 4326269 +perft 6 113181561 + +id gentest-833 +epd 3n4/N3Bk2/PPp2b2/6p1/8/1r6/4N3/6K1 b - - +perft 1 30 +perft 2 564 +perft 3 15863 +perft 4 313040 +perft 5 8566382 +perft 6 173080719 + +id gentest-834 +epd 3nk3/N3B3/PPp2b2/1r4p1/8/2N5/8/6K1 w - - +perft 1 24 +perft 2 553 +perft 3 11534 +perft 4 267416 +perft 5 5502750 +perft 6 130007108 + +id gentest-835 +epd 3nk3/N3B3/PPp2b2/5rp1/8/8/4N3/7K b - - +perft 1 25 +perft 2 468 +perft 3 12003 +perft 4 231027 +perft 5 5912261 +perft 6 116208712 + +id gentest-836 +epd 4k3/N4n2/PPpB1b2/6p1/8/5r2/4N3/7K w - - +perft 1 24 +perft 2 692 +perft 3 14174 +perft 4 396185 +perft 5 7904201 +perft 6 215377171 + +id gentest-837 +epd 3k4/N4n2/PPp2b2/6p1/8/B4rN1/8/7K b - - +perft 1 26 +perft 2 454 +perft 3 11363 +perft 4 205955 +perft 5 5246998 +perft 6 97598635 + +id gentest-838 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-839 +epd rnbqkbnr/1ppppppp/8/p7/2P5/7N/PP1PPPPP/RNBQKB1R b KQkq - +perft 1 21 +perft 2 462 +perft 3 10715 +perft 4 264284 +perft 5 6710109 +perft 6 181069771 + +id gentest-840 +epd r1bqkbnr/1pppp1pp/2n2p2/p7/2P5/8/PP1PPPPP/RNBQKBNR w KQkq - +perft 1 22 +perft 2 483 +perft 3 11840 +perft 4 279425 +perft 5 7412572 +perft 6 187091201 + +id gentest-841 +epd r1bqkbnr/1pppp1pp/2n5/p4p2/2PP4/4P3/PP3PPP/RNBQKBNR b KQkq - +perft 1 23 +perft 2 760 +perft 3 18400 +perft 4 594770 +perft 5 15652187 +perft 6 507963492 + +id gentest-842 +epd r1bqkbnr/2ppp2p/1pn3p1/p4p2/P1PP4/4P3/1P3PPP/RNBQKBNR w KQkq - +perft 1 32 +perft 2 770 +perft 3 24802 +perft 4 644780 +perft 5 20969518 +perft 6 583197256 + +id gentest-843 +epd r2qkbnr/2ppp2p/bpn3p1/p4p2/P1PP4/3BP3/1P1B1PPP/RN1QK1NR b KQkq - +perft 1 28 +perft 2 1012 +perft 3 29612 +perft 4 1063746 +perft 5 32482656 +perft 6 1171831730 + +id gentest-844 +epd r2qkbnr/1bppp2p/1p4p1/p4p2/P1Pn4/3BPP2/1P1B2PP/RN1QK1NR w KQkq - +perft 1 31 +perft 2 1084 +perft 3 33167 +perft 4 1139047 +perft 5 36288287 +perft 6 1247022165 + +id gentest-845 +epd r2qk1nr/1bppp2p/1p4pb/p4p2/P1PnP3/1Q1B1P2/1P1B2PP/RN2K1NR b KQkq - +perft 1 37 +perft 2 1228 +perft 3 44288 +perft 4 1488363 +perft 5 53036938 +perft 6 1811453524 + +id gentest-846 +epd r2qkb1r/1bppp2p/1p3np1/p4p2/P1PnP3/3B1P2/1P1B2PP/RN1QK1NR w KQkq - +perft 1 33 +perft 2 1287 +perft 3 41535 +perft 4 1586816 +perft 5 52624933 +perft 6 1989735298 + +id gentest-847 +epd 1r1qkb1r/1bppp2p/1p3np1/p4p2/P1PnP3/3BBP1N/1P4PP/RN1QK2R b KQk - +perft 1 37 +perft 2 1386 +perft 3 50077 +perft 4 1857193 +perft 5 66431176 +perft 6 2465963438 + +id gentest-848 +epd 1r1qkbr1/1bp1p2p/1p3np1/p2p1p2/P1PnP3/3BBP1N/1P1K2PP/RN1Q3R w - - +perft 1 40 +perft 2 1503 +perft 3 55186 +perft 4 2071481 +perft 5 76342260 +perft 6 2871100803 + +id gentest-849 +epd 1r1qkbr1/2p1p2p/1pb2np1/p2pPB2/P1Pn4/4BP1N/1P1K2PP/RN1Q3R b - - +perft 1 34 +perft 2 1403 +perft 3 46565 +perft 4 1888807 +perft 5 63497648 +perft 6 2555564262 + +id gentest-850 +epd br1qkbr1/2p1p2p/1p4p1/p2pPBN1/P1Pnn3/4BP2/1P1K2PP/RN1Q3R w - - +perft 1 6 +perft 2 191 +perft 3 8093 +perft 4 248065 +perft 5 10392067 +perft 6 323779715 + +id gentest-851 +epd br1qk1r1/2p1p2p/1p4pb/p2pPB2/P1PnN3/2K1BP2/1P4PP/RN1Q3R b - - +perft 1 33 +perft 2 1569 +perft 3 48215 +perft 4 2161223 +perft 5 67363691 +perft 6 2891981424 + +id gentest-852 +epd 1r1q1kr1/2pBp2p/1pb3pb/p2pP3/P1PnN3/2K1BP2/1P4PP/RN1Q3R w - - +perft 1 52 +perft 2 1569 +perft 3 71952 +perft 4 2231378 +perft 5 98395737 +perft 6 3108648708 + +id gentest-853 +epd 1r1q1kr1/2p1p1bp/1pb1B1p1/p2pP3/P1PnN3/1PK1BP2/6PP/RN1Q3R b - - +perft 1 32 +perft 2 1540 +perft 3 49050 +perft 4 2254043 +perft 5 71761494 +perft 6 3187519295 + +id gentest-854 +epd 1r1q1kr1/1bp1p1bp/1p4p1/p2BP3/P1P1N3/1PK1BP2/2n3PP/RN1Q3R w - - +perft 1 49 +perft 2 1515 +perft 3 67510 +perft 4 2134230 +perft 5 90566926 +perft 6 2920227131 + +id gentest-855 +epd 1r3kr1/1bp1p1bp/1p1qB1p1/p3P3/P1P1NB2/1PK2P2/2n3PP/RN1Q3R b - - +perft 1 41 +perft 2 1648 +perft 3 63682 +perft 4 2506103 +perft 5 93151491 +perft 6 3624453968 + +id gentest-856 +epd 1r3kr1/1bpqp2p/1p2Bbp1/p3P3/P1P1NB2/1PK2P1P/2n3P1/RN1Q3R w - - +perft 1 48 +perft 2 2020 +perft 3 86389 +perft 4 3381653 +perft 5 141417069 +perft 6 5299634862 + +id gentest-857 +epd r4kr1/1bpqp2p/1p2Bbp1/p3P3/P1P1NB2/1P3P1P/2K3P1/RN2Q2R b - - +perft 1 39 +perft 2 1822 +perft 3 64991 +perft 4 2946452 +perft 5 100680530 +perft 6 4465914433 + +id gentest-858 +epd r2qk1r1/1bp1p2p/1p2Bbp1/p1P1P3/P3NB2/1P3P1P/2K3P1/RN2Q2R w - - +perft 1 53 +perft 2 1624 +perft 3 73859 +perft 4 2233879 +perft 5 99276190 +perft 6 3014460354 + +id gentest-859 +epd r3k1r1/1bp1p2p/1p2Bbp1/p1P1P3/P3NB2/1PN2P1P/3K2P1/R3Q2R b - - +perft 1 26 +perft 2 1364 +perft 3 32117 +perft 4 1637698 +perft 5 38133256 +perft 6 1897901918 + +id gentest-860 +epd r3k1Br/1bp1p2p/5bp1/ppP1P3/P3NB2/1PN2P1P/3K2P1/R3Q2R w - - +perft 1 53 +perft 2 1250 +perft 3 61848 +perft 4 1456522 +perft 5 70166848 +perft 6 1660740224 + +id gentest-861 +epd 2r1k1Br/1bp1p2p/5bp1/ppP1P3/P3NB2/1PN2P1P/3K2P1/3RQ1R1 b - - +perft 1 23 +perft 2 950 +perft 3 20523 +perft 4 851494 +perft 5 18603401 +perft 6 778787964 + +id gentest-862 +epd 2r1k1Br/2p4p/4pbp1/ppP1P3/P3bB2/1PN1QP1P/3K2P1/3R2R1 w - - +perft 1 38 +perft 2 1019 +perft 3 39081 +perft 4 976763 +perft 5 38290606 +perft 6 929486513 + +id gentest-863 +epd 2r1k1Br/2p4p/4pbp1/ppP1P3/P4B2/1PNRQP1P/4K1P1/6R1 b - - +perft 1 18 +perft 2 778 +perft 3 13766 +perft 4 599779 +perft 5 10957687 +perft 6 480515393 + +id gentest-864 +epd 3rk1Br/2p5/4pbp1/ppP1P1Bp/P7/1PNRQP1P/4K1P1/6R1 w - - +perft 1 46 +perft 2 917 +perft 3 41939 +perft 4 861677 +perft 5 39011957 +perft 6 795997545 + +id gentest-865 +epd 4k1Br/2p5/4pbp1/ppP1P1Bp/P2Q4/1PNR1P1P/5KP1/6R1 b - - +perft 1 14 +perft 2 702 +perft 3 9381 +perft 4 447828 +perft 5 6089455 +perft 6 282328972 + +id gentest-866 +epd 4k1B1/7r/2p1pbp1/ppP1P1Bp/P2Q4/1PNRKP1P/6P1/6R1 w - - +perft 1 45 +perft 2 834 +perft 3 36659 +perft 4 595169 +perft 5 26274204 +perft 6 422317085 + +id gentest-867 +epd 4k1B1/8/2p1pbpr/ppP1P1Bp/PP1Q4/3RKP1P/6P1/1N4R1 b - - +perft 1 13 +perft 2 537 +perft 3 6368 +perft 4 271719 +perft 5 3456146 +perft 6 149439174 + +id gentest-868 +epd 4k1B1/r7/2pQpbp1/ppP1P1Bp/PP6/3RKP1P/6P1/1N4R1 w - - +perft 1 45 +perft 2 685 +perft 3 29809 +perft 4 432380 +perft 5 18828183 +perft 6 274139195 + +id gentest-869 +epd 3Qk1B1/r7/2p1p1p1/ppP1P1Bp/PP6/3RKP1P/6P1/1N4R1 b - - +perft 1 0 +perft 2 0 +perft 3 0 +perft 4 0 +perft 5 0 +perft 6 0 + +id gentest-870 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-871 +epd r1bqkbnr/pppppppp/2n5/8/1P2P3/8/P1PP1PPP/RNBQKBNR b KQkq - +perft 1 22 +perft 2 679 +perft 3 16154 +perft 4 504493 +perft 5 12885948 +perft 6 411324737 + +id gentest-872 +epd r1bqkbnr/pppp1p1p/2n1p1p1/8/1P2P3/3B4/P1PP1PPP/RNBQK1NR w KQkq - +perft 1 30 +perft 2 987 +perft 3 30343 +perft 4 986600 +perft 5 30790429 +perft 6 1010218060 + +id gentest-873 +epd r1bqkbnr/p1pp1p1p/2n1p1p1/1p6/1P2P1P1/3B3N/P1PP1P1P/RNBQK2R b KQkq - +perft 1 33 +perft 2 858 +perft 3 28143 +perft 4 754184 +perft 5 25044456 +perft 6 697052111 + +id gentest-874 +epd r1bqkbnr/p1p2p1p/4p1p1/1p1p2N1/1n2P1P1/3B4/P1PP1P1P/RNBQK2R w KQkq - +perft 1 30 +perft 2 1033 +perft 3 30258 +perft 4 1055955 +perft 5 31780406 +perft 6 1125582569 + +id gentest-875 +epd r1bqkbnr/p1p2p1p/4p1p1/1p1p2N1/4P1PP/3B4/P1nPKP2/RNBQ3R b kq - +perft 1 39 +perft 2 1152 +perft 3 42968 +perft 4 1303940 +perft 5 48259807 +perft 6 1511587113 + +id gentest-876 +epd r1b1kb1r/p1p1np1p/4p1p1/1p1p2q1/4P1PP/N2B4/P1nPKP2/R1BQ3R w kq - +perft 1 26 +perft 2 976 +perft 3 24471 +perft 4 924900 +perft 5 24820328 +perft 6 946657362 + +id gentest-877 +epd r1b1kbnr/p1p2p1p/4p1p1/1p1p2q1/4P1PP/N2B4/P1QPKP2/R1B2R2 b kq - +perft 1 41 +perft 2 1144 +perft 3 42044 +perft 4 1238842 +perft 5 44463477 +perft 6 1370876133 + +id gentest-878 +epd r3kbnr/p1p2p1p/b3p1p1/1p1pq3/4P1PP/N2B4/P1QPKP2/R1B3R1 w kq - +perft 1 32 +perft 2 1284 +perft 3 40641 +perft 4 1562977 +perft 5 50184262 +perft 6 1881050419 + +id gentest-879 +epd r3kbnr/p1p2p1p/b3p1p1/1p1p4/4PqPP/N2B1P2/P1QPK3/R1BR4 b kq - +perft 1 43 +perft 2 1047 +perft 3 40566 +perft 4 1092681 +perft 5 41252950 +perft 6 1184083284 + +id gentest-880 +epd r2k2nr/p1p2p1p/b3p1pb/1p1p4/2B1PqPP/N4P2/P1QPK3/R1BR4 w - - +perft 1 28 +perft 2 996 +perft 3 25861 +perft 4 922972 +perft 5 25691235 +perft 6 917678287 + +id gentest-881 +epd r2k2nr/p1p2p1p/b3p1pb/1p1pq3/2B1P1PP/N4P2/P2P1K2/RQBR4 b - - +perft 1 40 +perft 2 1108 +perft 3 42086 +perft 4 1198266 +perft 5 44215504 +perft 6 1309041607 + +id gentest-882 +epd 2rk2nr/pbp2p1p/4p1pb/1p1pq3/2B1P1PP/N4P2/P2P1K2/RQB4R w - - +perft 1 32 +perft 2 1311 +perft 3 39216 +perft 4 1529770 +perft 5 47319600 +perft 6 1798563326 + +id gentest-883 +epd 2rk2nr/pbp2p1p/4p1pb/1p1p4/4PqPP/N2B1P2/P2P1K1R/RQB5 b - - +perft 1 36 +perft 2 830 +perft 3 30525 +perft 4 793217 +perft 5 29223297 +perft 6 826616213 + +id gentest-884 +epd 2r3nr/pbp1kp1p/4p1pb/1N1p4/4PqPP/3B1P2/P2P1K1R/RQB5 w - - +perft 1 30 +perft 2 1109 +perft 3 32317 +perft 4 1190580 +perft 5 37136260 +perft 6 1361377402 + +id gentest-885 +epd 2r3nr/1bN1kp1p/p3p1pb/3p3P/4PqP1/3B1P2/P2P1K1R/RQB5 b - - +perft 1 38 +perft 2 1203 +perft 3 43053 +perft 4 1437122 +perft 5 51608214 +perft 6 1792221503 + +id gentest-886 +epd 2r3nr/2N1kp1p/p1b1p1pb/7P/2p1PqP1/5P2/P2P1K1R/RQB5 w - - +perft 1 33 +perft 2 1304 +perft 3 40336 +perft 4 1554006 +perft 5 49854585 +perft 6 1890776890 + +id gentest-887 +epd 2r3nr/4kp1p/N3p1pb/7P/b1p1PqP1/B4P2/P2P1K1R/RQ6 b - - +perft 1 6 +perft 2 236 +perft 3 8450 +perft 4 293895 +perft 5 10690348 +perft 6 374870675 + +id gentest-888 +epd 2r3nr/3k1p1p/N3p1pb/7P/bQp1PqP1/B4P2/P2P1K1R/R7 w - - +perft 1 41 +perft 2 1407 +perft 3 52842 +perft 4 1838047 +perft 5 69969537 +perft 6 2462246606 + +id gentest-889 +epd 6nr/3k1p1p/N1r1p1pb/7P/b1p1PqP1/B4P2/PQ1P1K1R/R7 b - - +perft 1 38 +perft 2 1469 +perft 3 52988 +perft 4 2038434 +perft 5 74722661 +perft 6 2869188828 + +id gentest-890 +epd 6nQ/3k1p1p/N3p1pb/2r4P/2p1PqP1/B4P2/P1bP1K1R/R7 w - - +perft 1 37 +perft 2 1577 +perft 3 54363 +perft 4 2159564 +perft 5 75644935 +perft 6 2901137172 + +id gentest-891 +epd 6nQ/3k1p1p/N3p1pb/3r3P/2p1PqP1/B4P2/P1bP1K1R/R7 b - - +perft 1 46 +perft 2 1616 +perft 3 66750 +perft 4 2365262 +perft 5 93888092 +perft 6 3362185209 + +id gentest-892 +epd 1Nk3nQ/7p/4pppb/3r3P/2p1PqP1/B4P2/P1bP1K1R/R7 w - - +perft 1 36 +perft 2 1514 +perft 3 48255 +perft 4 1888637 +perft 5 61176911 +perft 6 2317520789 + +id gentest-893 +epd 1Nk3nQ/7p/4pppb/3r3P/b1p1PqP1/5P2/P2P1K1R/2B4R b - - +perft 1 45 +perft 2 1113 +perft 3 45270 +perft 4 1204805 +perft 5 46966414 +perft 6 1331293219 + +id gentest-894 +epd 1Nk3nQ/7p/4pppb/3rq2P/2pPP1P1/1b3P2/P4K1R/2B4R w - - +perft 1 34 +perft 2 1178 +perft 3 37646 +perft 4 1306811 +perft 5 42995408 +perft 6 1493274130 + +id gentest-895 +epd 1Nk3nQ/7p/4pppb/3r3P/2pPPqP1/1b3P2/PR6/2B1K2R b - - +perft 1 41 +perft 2 1227 +perft 3 45437 +perft 4 1419154 +perft 5 50366572 +perft 6 1622523992 + +id gentest-896 +epd 1Nk3nQ/7p/5ppb/4P2P/2p1PqP1/1b3P2/PR1r4/2B1K2R w - - +perft 1 25 +perft 2 881 +perft 3 22399 +perft 4 758890 +perft 5 21045625 +perft 6 704930293 + +id gentest-897 +epd 1Nk3nQ/7p/4Pppb/7P/2p1PqP1/5P2/b2r4/1RB1K2R b - - +perft 1 36 +perft 2 879 +perft 3 30855 +perft 4 835835 +perft 5 28891064 +perft 6 840258391 + +id gentest-898 +epd 1Nk3nQ/7p/4Pppb/7P/2p1P1P1/8/b2r2q1/1RB1K1R1 w - - +perft 1 24 +perft 2 792 +perft 3 17863 +perft 4 604921 +perft 5 15387352 +perft 6 522746399 + +id gentest-899 +epd 1Nk3n1/6Qp/4Pppb/6PP/2p1P3/5q2/b2r4/1RB1K1R1 b - - +perft 1 41 +perft 2 1167 +perft 3 39014 +perft 4 1116594 +perft 5 36602767 +perft 6 1084763937 + +id gentest-900 +epd 1Nk5/4n2p/4PppQ/6PP/4P3/2p2q2/b2r4/1RB1K1R1 w - - +perft 1 25 +perft 2 1027 +perft 3 22583 +perft 4 870486 +perft 5 21228081 +perft 6 787747869 + +id gentest-901 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-902 +epd rnbqkbnr/ppppppp1/8/7p/8/P3P3/1PPP1PPP/RNBQKBNR b KQkq - +perft 1 21 +perft 2 607 +perft 3 14114 +perft 4 420571 +perft 5 10689894 +perft 6 328853102 + +id gentest-903 +epd rnbqkbnr/pp2ppp1/2pp4/1B5p/8/P3P3/1PPP1PPP/RNBQK1NR w KQkq - +perft 1 32 +perft 2 873 +perft 3 27875 +perft 4 788727 +perft 5 25350405 +perft 6 741162072 + +id gentest-904 +epd rnb1kbnr/ppq1ppp1/2pp4/7p/B5P1/P3P3/1PPP1P1P/RNBQK1NR b KQkq - +perft 1 29 +perft 2 718 +perft 3 20965 +perft 4 546835 +perft 5 16479302 +perft 6 450963967 + +id gentest-905 +epd rnb1kbnr/p1q1ppp1/2p5/1p1p3P/B7/P3P3/1PPP1P1P/RNBQK1NR w KQkq - +perft 1 24 +perft 2 906 +perft 3 23310 +perft 4 860387 +perft 5 23378066 +perft 6 853798419 + +id gentest-906 +epd rnb1kbnr/p1q1ppp1/8/1ppp3P/5P2/PB2P3/1PPP3P/RNBQK1NR b KQkq - +perft 1 37 +perft 2 919 +perft 3 33880 +perft 4 910152 +perft 5 33388279 +perft 6 952594979 + +id gentest-907 +epd rn2kbnr/p1q2pp1/8/1pppp2P/5Pb1/PB2P3/1PPPQ2P/RNB1K1NR w KQkq - +perft 1 31 +perft 2 1260 +perft 3 38967 +perft 4 1574750 +perft 5 49489054 +perft 6 1984205946 + +id gentest-908 +epd r3kbnr/p1qn1pp1/8/1ppBp2P/3P1Pb1/P3P3/1PP1Q2P/RNB1K1NR b KQkq - +perft 1 43 +perft 2 1824 +perft 3 76218 +perft 4 3085274 +perft 5 128355299 +perft 6 5049028365 + +id gentest-909 +epd r3kbnr/2qn2p1/8/pppBpp1P/3P1Pb1/P1P1P3/1P2Q2P/RNB1K1NR w KQkq - +perft 1 43 +perft 2 1674 +perft 3 67202 +perft 4 2613497 +perft 5 100202988 +perft 6 3920538052 + +id gentest-910 +epd r4bnr/1Bqnk1p1/8/ppp1pp1P/3P1Pb1/P1P1P3/1P3Q1P/RNB1K1NR b KQ - +perft 1 41 +perft 2 1450 +perft 3 57711 +perft 4 2016071 +perft 5 80287095 +perft 6 2782731786 + +id gentest-911 +epd r4bnr/1Bq1k1p1/5n2/1pp1pp1P/p2PPPb1/P1P5/1P3Q1P/RNB1K1NR w KQ - +perft 1 34 +perft 2 1499 +perft 3 50901 +perft 4 2159399 +perft 5 73338011 +perft 6 3038485452 + +id gentest-912 +epd r4bn1/2q1k1pr/B4n2/1pp1pp1P/p2PPPb1/P1P2Q2/1P5P/RNB1K1NR b KQ - +perft 1 42 +perft 2 1449 +perft 3 60445 +perft 4 1999837 +perft 5 82648526 +perft 6 2699699386 + +id gentest-913 +epd r4bn1/2q1k1pr/B4n2/1p3p1P/p1ppPPb1/P1P2Q2/1P2N2P/RNB1K2R w KQ - +perft 1 33 +perft 2 1417 +perft 3 46496 +perft 4 1937881 +perft 5 63036784 +perft 6 2594427655 + +id gentest-914 +epd r4bn1/4k1pr/B1q2n2/1p3p1P/p1ppPPb1/P1P4Q/1P2N2P/RNB1K2R b KQ - +perft 1 43 +perft 2 1308 +perft 3 56010 +perft 4 1684462 +perft 5 71290393 +perft 6 2161779655 + +id gentest-915 +epd r3qbn1/4k1pr/B4n2/1p3p1P/p1ppPP2/P1P1Q3/1P2b2P/RNB1K2R w KQ - +perft 1 28 +perft 2 1055 +perft 3 30337 +perft 4 1145504 +perft 5 33824421 +perft 6 1291523474 + +id gentest-916 +epd r3qbn1/4k1p1/B4n2/1p3p1r/p1ppPP1P/P1P1Q3/1P2b3/RNB1K2R b KQ - +perft 1 40 +perft 2 1082 +perft 3 42274 +perft 4 1191891 +perft 5 47109958 +perft 6 1373186471 + +id gentest-917 +epd 4qbn1/r3k3/B4np1/1p3p1r/p1ppPP1P/P1P1Q3/1P1Bb3/RN2K2R w KQ - +perft 1 24 +perft 2 920 +perft 3 24030 +perft 4 942258 +perft 5 25977085 +perft 6 1034545119 + +id gentest-918 +epd 5bn1/r3kq2/5np1/1B3p1r/p1ppPP1P/P1P1Q3/1P1Bb2R/RN2K3 b Q - +perft 1 38 +perft 2 1068 +perft 3 39399 +perft 4 1143719 +perft 5 42760633 +perft 6 1280422522 + +id gentest-919 +epd r4bn1/4k2q/5np1/1B3p1r/p1pQPP1P/P1P5/1P1Bb2R/RN2K3 w Q - +perft 1 34 +perft 2 855 +perft 3 29114 +perft 4 783225 +perft 5 26628255 +perft 6 758922310 + +id gentest-920 +epd r1Qk1bn1/7q/5np1/1B3p1r/p1p1PP1P/P1P5/1P1Bb2R/RN2K3 b Q - +perft 1 3 +perft 2 74 +perft 3 2316 +perft 4 58257 +perft 5 1911810 +perft 6 49384091 + +id gentest-921 +epd 2rk2n1/7q/5np1/1B3p1r/p1p1PP1P/b1P1B3/1P2b2R/RN2K3 w Q - +perft 1 31 +perft 2 1147 +perft 3 34668 +perft 4 1318644 +perft 5 39544580 +perft 6 1536915124 + +id gentest-922 +epd 2rk1bn1/7q/5np1/5p1r/p1B1PP1P/2P1B3/1P2R3/RN2K3 b Q - +perft 1 39 +perft 2 1347 +perft 3 50280 +perft 4 1709325 +perft 5 64721021 +perft 6 2183791373 + +id gentest-923 +epd r2k2n1/7q/3b1np1/5p1r/pPB1PP1P/2P1B3/4R3/RN2K3 w Q - +perft 1 36 +perft 2 1382 +perft 3 49409 +perft 4 1886876 +perft 5 66700353 +perft 6 2561443652 + +id gentest-924 +epd r2k2n1/4b2q/B4np1/5p1r/pP2PP1P/2P1B3/R3R3/1N2K3 b - - +perft 1 27 +perft 2 938 +perft 3 27397 +perft 4 923566 +perft 5 29717881 +perft 6 990013302 + +id gentest-925 +epd r3k1n1/4b3/BB3npq/5p1r/pP2PP1P/2P5/R3R3/1N2K3 w - - +perft 1 37 +perft 2 1044 +perft 3 37452 +perft 4 1140855 +perft 5 39636217 +perft 6 1275534719 + +id gentest-926 +epd r3kbn1/8/B4npq/5p1r/pP2PP1P/2P1B3/R3R3/1N1K4 b - - +perft 1 30 +perft 2 1051 +perft 3 33069 +perft 4 1129379 +perft 5 37262089 +perft 6 1250251977 + +id gentest-927 +epd 3k1bn1/B7/r4npq/5p1r/pP2PP1P/2P5/R3R3/1N1K4 w - - +perft 1 31 +perft 2 945 +perft 3 28031 +perft 4 912105 +perft 5 26445337 +perft 6 903548946 + +id gentest-928 +epd 1B1k2n1/6b1/r4npq/5p1r/pP2PP1P/2P5/R2NR3/3K4 b - - +perft 1 29 +perft 2 758 +perft 3 23120 +perft 4 632491 +perft 5 20300347 +perft 6 572216618 + +id gentest-929 +epd 1B1k2n1/6b1/2r3pq/5p1r/pPN1nP1P/2P5/R3R3/3K4 w - - +perft 1 31 +perft 2 1038 +perft 3 30010 +perft 4 986616 +perft 5 28472117 +perft 6 951724335 + +id gentest-930 +epd 1B1k2n1/6b1/2r3pq/4Rp1r/pPN2P1P/2P3n1/1R6/3K4 b - - +perft 1 29 +perft 2 967 +perft 3 27127 +perft 4 856910 +perft 5 25705613 +perft 6 779953946 + +id gentest-931 +epd 1B1k2n1/2r3b1/6p1/4Rp1r/pPN2q1P/2P3n1/8/1R1K4 w - - +perft 1 28 +perft 2 1155 +perft 3 27515 +perft 4 1145512 +perft 5 27370605 +perft 6 1139453049 + +id gentest-932 +epd 1B1k2n1/2r3b1/3q2p1/3R1p1r/pPN4P/2P3n1/8/2RK4 b - - +perft 1 37 +perft 2 771 +perft 3 27001 +perft 4 613078 +perft 5 22005639 +perft 6 534468814 + +id gentest-933 +epd 1B1k2nb/2r5/3q2p1/N2R1p1r/pP5P/2P5/8/2RK3n w - - +perft 1 19 +perft 2 549 +perft 3 11903 +perft 4 381715 +perft 5 9186417 +perft 6 318143149 + +id gentest-934 +epd 1B4nb/2r1k3/3R2p1/N4p1r/pP5P/2P5/4K3/2R4n b - - +perft 1 28 +perft 2 957 +perft 3 26119 +perft 4 849952 +perft 5 24011371 +perft 6 770027526 + +id gentest-935 +epd 1B4nb/4k3/2rR2p1/N4p1r/pP5P/2P2Kn1/8/2R5 w - - +perft 1 32 +perft 2 847 +perft 3 26958 +perft 4 756848 +perft 5 24207528 +perft 6 701822692 + +id gentest-936 +epd 1B1R2n1/4k1b1/2r3p1/5p1r/pPN4P/2P2Kn1/8/2R5 b - - +perft 1 34 +perft 2 1285 +perft 3 38772 +perft 4 1384200 +perft 5 41149080 +perft 6 1418335044 + +id gentest-937 +epd 1B6/4k1b1/2r2np1/5p1r/pPN4P/2PR1K2/4n3/2R5 w - - +perft 1 36 +perft 2 1192 +perft 3 39986 +perft 4 1338700 +perft 5 44096137 +perft 6 1474722533 + +id gentest-938 +epd 1B6/3R2b1/2r1knp1/5p1r/pP5P/2P1NK2/4n3/2R5 b - - +perft 1 33 +perft 2 1224 +perft 3 39842 +perft 4 1372259 +perft 5 44887534 +perft 6 1487479617 + +id gentest-939 +epd 1B6/5Rb1/2r1k1p1/5pnr/pP5P/2P1NK2/4n3/2R5 w - - +perft 1 4 +perft 2 125 +perft 3 4502 +perft 4 137632 +perft 5 4698549 +perft 6 145170321 + +id gentest-940 +epd 1B6/5R2/2r1kbp1/5pnr/pP5P/2P5/2N1nK2/2R5 b - - +perft 1 34 +perft 2 1091 +perft 3 34735 +perft 4 1080890 +perft 5 35000364 +perft 6 1069575251 + +id gentest-941 +epd 1B6/5R1n/2r1kbp1/5p1r/pP5P/2P5/2N5/2R3K1 w - - +perft 1 33 +perft 2 788 +perft 3 24484 +perft 4 608485 +perft 5 18929152 +perft 6 483911449 + +id gentest-942 +epd 5R2/2B4n/2r1kbp1/5p1r/1P5P/p1P5/2N5/2R3K1 b - - +perft 1 27 +perft 2 863 +perft 3 21889 +perft 4 688129 +perft 5 18157347 +perft 6 566552394 + +id gentest-943 +epd 3b2R1/2B4n/2r1k1p1/7r/1P3p1P/p1P5/2N5/2R3K1 w - - +perft 1 30 +perft 2 873 +perft 3 26246 +perft 4 744728 +perft 5 22659788 +perft 6 639633050 + +id gentest-944 +epd 6R1/7n/2r1kbp1/BP5r/5p1P/p1P5/2N5/2R3K1 b - - +perft 1 37 +perft 2 1113 +perft 3 35010 +perft 4 1058997 +perft 5 32221473 +perft 6 980836152 + +id gentest-945 +epd 1r6/7n/4kbp1/BP5r/5p1P/p1P5/2N5/2R3K1 w - - +perft 1 22 +perft 2 779 +perft 3 17314 +perft 4 582348 +perft 5 13340507 +perft 6 435832129 + +id gentest-946 +epd 8/1r5n/4kbp1/BP5r/2P2p1P/p7/8/2R1N1K1 b - - +perft 1 39 +perft 2 824 +perft 3 29318 +perft 4 646579 +perft 5 21686967 +perft 6 495383896 + +id gentest-947 +epd 7b/1r5n/1B2k3/1P4pr/2P2p1P/p7/8/2R1N1K1 w - - +perft 1 24 +perft 2 709 +perft 3 16725 +perft 4 479734 +perft 5 11429311 +perft 6 330289723 + +id gentest-948 +epd 7b/2r4n/4k3/1P4pr/2P2p1P/p7/8/3RN1K1 b - - +perft 1 30 +perft 2 636 +perft 3 18167 +perft 4 377699 +perft 5 10774027 +perft 6 221195619 + +id gentest-949 +epd 8/2r4n/4k3/1P2b1pr/2P4P/p4p2/8/2R1N1K1 w - - +perft 1 15 +perft 2 521 +perft 3 8037 +perft 4 266372 +perft 5 4428855 +perft 6 142777535 + +id gentest-950 +epd 8/3r3n/4k3/1P2b1pr/2P4P/p4R2/8/4N1K1 b - - +perft 1 35 +perft 2 786 +perft 3 24664 +perft 4 512675 +perft 5 15810487 +perft 6 317181424 + +id gentest-951 +epd 8/3rk2n/3b1R2/1P4pr/2P4P/p7/8/4N1K1 w - - +perft 1 22 +perft 2 444 +perft 3 8877 +perft 4 220699 +perft 5 4375912 +perft 6 119501009 + +id gentest-952 +epd 8/3rk2n/3b1R2/1P4P1/2P5/p6r/6K1/4N3 b - - +perft 1 29 +perft 2 577 +perft 3 16407 +perft 4 319050 +perft 5 9580962 +perft 6 185912310 + +id gentest-953 +epd 3r4/4k2n/8/1Pb3P1/2P5/p6r/5RK1/4N3 w - - +perft 1 20 +perft 2 719 +perft 3 12370 +perft 4 422575 +perft 5 7569345 +perft 6 251075058 + +id gentest-954 +epd 3r4/b3k2n/8/1P4P1/2P4N/p6r/5RK1/8 b - - +perft 1 37 +perft 2 714 +perft 3 21368 +perft 4 376906 +perft 5 11231938 +perft 6 202698399 + +id gentest-955 +epd 8/b3k3/5n2/1P3RP1/2Pr3N/p6r/6K1/8 w - - +perft 1 18 +perft 2 584 +perft 3 9838 +perft 4 302133 +perft 5 5158998 +perft 6 157267052 + +id gentest-956 +epd 8/b3k3/5n2/1P4P1/2Pr3N/p4R2/7r/6K1 b - - +perft 1 41 +perft 2 637 +perft 3 20416 +perft 4 320688 +perft 5 10091997 +perft 6 162855453 + +id gentest-957 +epd 6n1/b3k3/8/1PP3P1/5r1N/p4R2/7r/6K1 w - - +perft 1 17 +perft 2 472 +perft 3 7642 +perft 4 208161 +perft 5 3437633 +perft 6 94586812 + +id gentest-958 +epd 6n1/b3k3/1P6/2P3P1/5r1N/p4R2/r7/5K2 b - - +perft 1 30 +perft 2 390 +perft 3 9560 +perft 4 155903 +perft 5 3965045 +perft 6 70621341 + +id gentest-959 +epd 6n1/4k3/1b4P1/2P5/7N/p4r2/r7/5K2 w - - +perft 1 3 +perft 2 89 +perft 3 648 +perft 4 16923 +perft 5 133477 +perft 6 3521396 + +id gentest-960 +epd 6n1/4k3/2P3P1/b7/7N/p4r2/r7/6K1 b - - +perft 1 36 +perft 2 202 +perft 3 5981 +perft 4 44474 +perft 5 1307352 +perft 6 11754680 + +id gentest-961 +epd 6n1/4k3/2P3P1/8/7N/p4r2/1r6/4b2K w - - +perft 1 6 +perft 2 207 +perft 3 1628 +perft 4 52222 +perft 5 497487 +perft 6 15384588 + +id gentest-962 +epd 6n1/2P5/3k2P1/8/8/p4N2/1r6/4b2K b - - +perft 1 32 +perft 2 454 +perft 3 12230 +perft 4 170429 +perft 5 4216711 +perft 6 68540903 + +id gentest-963 +epd 2N3n1/2k5/6P1/b7/8/p4N2/1r6/7K w - - +perft 1 14 +perft 2 396 +perft 3 4843 +perft 4 125909 +perft 5 1602532 +perft 6 41276598 + +id gentest-964 +epd 6n1/2k1N3/6P1/b7/8/p7/6rN/7K b - - +perft 1 27 +perft 2 244 +perft 3 6076 +perft 4 65824 +perft 5 1701333 +perft 6 19762239 + +id gentest-965 +epd 6n1/2k1N3/6P1/b7/8/p3r3/7N/6K1 w - - +perft 1 13 +perft 2 333 +perft 3 4238 +perft 4 112618 +perft 5 1475389 +perft 6 39663776 + +id gentest-966 +epd 6n1/2k1N3/6P1/b7/8/p5K1/7N/8 b - - +perft 1 15 +perft 2 220 +perft 3 3634 +perft 4 53299 +perft 5 939606 +perft 6 13995250 + +id gentest-967 +epd 8/2k1N3/6P1/b6n/8/p4NK1/8/8 w - - +perft 1 6 +perft 2 96 +perft 3 1668 +perft 4 28564 +perft 5 474143 +perft 6 8461624 + +id gentest-968 +epd 1k6/4N3/6P1/b3N2n/8/p7/7K/8 b - - +perft 1 16 +perft 2 264 +perft 3 3986 +perft 4 66521 +perft 5 1101718 +perft 6 18507512 + +id gentest-969 +epd 1k6/4N3/6P1/4N2n/1b6/8/p7/7K w - - +perft 1 16 +perft 2 277 +perft 3 4154 +perft 4 81048 +perft 5 1247918 +perft 6 25699052 + +id gentest-970 +epd 1k6/4N3/6P1/7n/1b6/8/8/q5NK b - - +perft 1 36 +perft 2 298 +perft 3 9418 +perft 4 98381 +perft 5 3272603 +perft 6 37443259 + +id gentest-971 +epd 1k4N1/8/6P1/2b1q2n/8/8/8/6NK w - - +perft 1 8 +perft 2 329 +perft 3 3089 +perft 4 118429 +perft 5 1231357 +perft 6 44988126 + +id gentest-972 +epd 1k6/4N1q1/6P1/2b4n/8/7N/8/7K b - - +perft 1 31 +perft 2 327 +perft 3 10093 +perft 4 114605 +perft 5 3696030 +perft 6 44223299 + +id gentest-973 +epd 1k6/4b3/6P1/7n/8/2q5/5N2/7K w - - +perft 1 9 +perft 2 382 +perft 3 3394 +perft 4 129047 +perft 5 1173362 +perft 6 42672768 + +id gentest-974 +epd 1k5q/4b3/6P1/7n/8/3N4/7K/8 b - - +perft 1 32 +perft 2 348 +perft 3 10942 +perft 4 111965 +perft 5 3545673 +perft 6 35902704 + +id gentest-975 +epd 1k6/4b3/6P1/7n/8/2q5/1N5K/8 w - - +perft 1 8 +perft 2 331 +perft 3 2805 +perft 4 104699 +perft 5 940746 +perft 6 33585421 + +id gentest-976 +epd 1k6/4b3/6P1/N6n/8/5q2/7K/8 b - - +perft 1 41 +perft 2 238 +perft 3 8034 +perft 4 61268 +perft 5 2105490 +perft 6 18044637 + +id gentest-977 +epd 2k5/4b3/2N3P1/3q3n/8/8/7K/8 w - - +perft 1 11 +perft 2 384 +perft 3 3310 +perft 4 117291 +perft 5 1090545 +perft 6 37446867 + +id gentest-978 +epd 2k5/4b1P1/8/4Nq1n/8/8/7K/8 b - - +perft 1 36 +perft 2 470 +perft 3 15133 +perft 4 189922 +perft 5 6075778 +perft 6 77102172 + +id gentest-979 +epd 2k3B1/4bq2/8/4N2n/8/8/7K/8 w - - +perft 1 14 +perft 2 442 +perft 3 5883 +perft 4 182221 +perft 5 2492352 +perft 6 78279977 + +id gentest-980 +epd 2k1q1B1/4b3/8/7n/8/8/5N1K/8 b - - +perft 1 27 +perft 2 428 +perft 3 13236 +perft 4 200078 +perft 5 6556289 +perft 6 99020773 + +id gentest-981 +epd 2k5/8/8/1q5n/2B4b/8/5N1K/8 w - - +perft 1 20 +perft 2 652 +perft 3 10772 +perft 4 354795 +perft 5 5488694 +perft 6 182724583 + +id gentest-982 +epd 2k5/8/2B2n2/8/7b/8/5N1K/8 b - - +perft 1 14 +perft 2 248 +perft 3 3640 +perft 4 61542 +perft 5 965398 +perft 6 16079128 + +id gentest-983 +epd 2k5/8/2B5/8/7b/8/5nK1/8 w - - +perft 1 13 +perft 2 171 +perft 3 2247 +perft 4 34848 +perft 5 445209 +perft 6 7351727 + +id gentest-984 +epd 2k5/8/8/8/B6b/3n4/8/5K2 b - - +perft 1 19 +perft 2 186 +perft 3 3305 +perft 4 37066 +perft 5 667377 +perft 6 7835117 + +id gentest-985 +epd k7/8/8/8/7b/3n4/2B5/5K2 w - - +perft 1 8 +perft 2 136 +perft 3 1431 +perft 4 23130 +perft 5 264436 +perft 6 4378039 + +id gentest-986 +epd k7/8/6B1/8/5n1b/8/8/6K1 b - - +perft 1 18 +perft 2 190 +perft 3 3199 +perft 4 35738 +perft 5 616637 +perft 6 7160577 + +id gentest-987 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-988 +epd rnbqkbnr/p1pppppp/1p6/8/7P/P7/1PPPPPP1/RNBQKBNR b KQkq - +perft 1 21 +perft 2 420 +perft 3 9700 +perft 4 219822 +perft 5 5547801 +perft 6 139328782 + +id gentest-989 +epd rnbqkb1r/p2ppppp/1pp2n2/7P/8/P7/1PPPPPP1/RNBQKBNR w KQkq - +perft 1 21 +perft 2 441 +perft 3 10464 +perft 4 244919 +perft 5 6367151 +perft 6 162456913 + +id gentest-990 +epd rnb1kb1r/p1qppppp/1pp2n2/7P/8/P1NP4/1PP1PPP1/R1BQKBNR b KQkq - +perft 1 28 +perft 2 857 +perft 3 25426 +perft 4 788005 +perft 5 24212778 +perft 6 761333794 + +id gentest-991 +epd rnb1kb2/p1qppppr/1pp2n1p/7P/8/P1NP4/1PP1PPPR/R1BQKBN1 w Qq - +perft 1 30 +perft 2 807 +perft 3 24603 +perft 4 702291 +perft 5 21660693 +perft 6 644282179 + +id gentest-992 +epd rnb1kb2/p2ppppr/1pp2n1p/3P3P/5q2/P1N5/1PP1PPPR/R1BQKBN1 b Qq - +perft 1 39 +perft 2 1078 +perft 3 38592 +perft 4 1162500 +perft 5 40117094 +perft 6 1286826888 + +id gentest-993 +epd rnb1kb2/p2ppp1r/1p3npp/3p3P/5q2/P1N5/1PP1PPP1/R1BQKBNR w Qq - +perft 1 29 +perft 2 1119 +perft 3 34519 +perft 4 1237879 +perft 5 41229289 +perft 6 1444866429 + +id gentest-994 +epd rnb1kb2/p2p1p1r/1p3npp/3pp2P/5q1R/P1N5/1PPBPPP1/R2QKBN1 b Qq - +perft 1 41 +perft 2 1233 +perft 3 47984 +perft 4 1515114 +perft 5 57006554 +perft 6 1853227999 + +id gentest-995 +epd rnb1kb2/p2p1p1r/6pp/1p1pp2P/4nq2/P1N5/1PPBPPP1/R2QKBNR w Qq - +perft 1 27 +perft 2 1110 +perft 3 30509 +perft 4 1225510 +perft 5 35626649 +perft 6 1393377109 + +id gentest-996 +epd rnb1kb2/p2p3r/6pp/1pNppp1P/5q2/P7/1PPBPPP1/R2QKBNR b Qq - +perft 1 37 +perft 2 1231 +perft 3 44605 +perft 4 1487719 +perft 5 52687565 +perft 6 1777418528 + +id gentest-997 +epd rnb1kb2/p2p3r/7p/1pNppppP/2q5/P7/1PPBPPP1/R1Q1KBNR w Qq - +perft 1 34 +perft 2 1274 +perft 3 40740 +perft 4 1466876 +perft 5 46463114 +perft 6 1631030464 + +id gentest-998 +epd r1b1kb2/p2p3r/n3N2p/1p1ppppP/2q5/P7/1PPBPPP1/RQ2KBNR b Qq - +perft 1 41 +perft 2 1381 +perft 3 49785 +perft 4 1626177 +perft 5 56933097 +perft 6 1844931356 + +id gentest-999 +epd r1b1kb2/p2p3r/4N2p/1p1ppppP/1n2q3/P3P3/1PPB1PP1/RQ2KBNR w Qq - +perft 1 36 +perft 2 1187 +perft 3 39412 +perft 4 1330569 +perft 5 44063374 +perft 6 1506407779 + +id gentest-1000 +epd r1b1kb2/p2p3r/4N2p/1p1ppppP/1n6/P3P2R/1PPB2P1/RQ2KBN1 b Qq - +perft 1 26 +perft 2 891 +perft 3 22229 +perft 4 781301 +perft 5 19901798 +perft 6 711868944 + +id gentest-1001 +epd r1b1kb2/p2p1r2/n3N2p/1p1ppppP/1P6/P3P2R/2PB2P1/RQ2KBN1 w Qq - +perft 1 36 +perft 2 757 +perft 3 27806 +perft 4 617206 +perft 5 22862775 +perft 6 533813014 + +id gentest-1002 +epd r1b1k3/p2p1r2/n3N2p/1B1ppppP/1b6/PQ2P2R/2PB2P1/R3K1N1 b Qq - +perft 1 23 +perft 2 1105 +perft 3 24601 +perft 4 1165958 +perft 5 26920082 +perft 6 1253029608 + +id gentest-1003 +epd r1bNkb2/p2p1r2/n6p/1B1pp1pP/5p2/PQ2P2R/2PB2P1/R3K1N1 w Qq - +perft 1 48 +perft 2 1127 +perft 3 53129 +perft 4 1269315 +perft 5 58402716 +perft 6 1430777984 + +id gentest-1004 +epd r1bNk3/p2p1r2/n6p/1B1pp1pP/1b3p2/P1B1P2R/Q1P3P1/R3K1N1 b Qq - +perft 1 26 +perft 2 1035 +perft 3 26244 +perft 4 1071124 +perft 5 27327604 +perft 6 1132154695 + +id gentest-1005 +epd r1bNk3/p2p1r2/n2b3p/1B1pp1pP/3B1p2/P3P2R/Q1P3P1/R3K1N1 w Qq - +perft 1 46 +perft 2 1212 +perft 3 53530 +perft 4 1362333 +perft 5 59706578 +perft 6 1516578315 + +id gentest-1006 +epd r1b1k3/p2p1Nr1/n2b3p/3pp1pP/2BB1p2/P3P2R/Q1P3P1/R3K1N1 b Qq - +perft 1 26 +perft 2 1078 +perft 3 27519 +perft 4 1138857 +perft 5 29537643 +perft 6 1224563392 + +id gentest-1007 +epd r1b1k3/p2p1Nr1/3b3p/1n1pp1pP/2BB1P2/P6R/Q1P3P1/R3K1N1 w Qq - +perft 1 50 +perft 2 1407 +perft 3 65365 +perft 4 1837308 +perft 5 82946572 +perft 6 2340651116 + +id gentest-1008 +epd r1b5/p2pkNr1/3b3p/1n1pp1pP/2BB1P2/P5R1/Q1P3P1/2R1K1N1 b - - +perft 1 29 +perft 2 1339 +perft 3 38500 +perft 4 1713599 +perft 5 49202419 +perft 6 2144309671 + +id gentest-1009 +epd 1r6/p2pkNr1/b2b3p/1n1pp1pP/2BB1P2/P5R1/Q1P3P1/1R2K1N1 w - - +perft 1 52 +perft 2 1729 +perft 3 83846 +perft 4 2731013 +perft 5 127553042 +perft 6 4093036428 + +id gentest-1010 +epd 8/pr1pkNr1/b2b3p/1n1pB1pP/2B2P2/P5R1/Q1P1K1P1/1R4N1 b - - +perft 1 25 +perft 2 1156 +perft 3 29314 +perft 4 1309651 +perft 5 34529635 +perft 6 1504713198 + +id gentest-1011 +epd 8/prbpkNr1/b6p/3pB1pP/2B2P2/P1n3R1/Q1P3P1/1R2K1N1 w - - +perft 1 46 +perft 2 1489 +perft 3 65825 +perft 4 2057058 +perft 5 89173702 +perft 6 2743182051 + +id gentest-1012 +epd 8/p1bpkNr1/b2B3p/3p1PpP/1rB5/P1n3R1/Q1P3P1/1R2K1N1 b - - +perft 1 4 +perft 2 164 +perft 3 5434 +perft 4 215081 +perft 5 6842958 +perft 6 270165506 + +id gentest-1013 +epd 8/p2pkNr1/b2b3p/3p1P1P/1rB3p1/P1n3R1/Q1PK2P1/1R4N1 w - - +perft 1 41 +perft 2 1408 +perft 3 50677 +perft 4 1725768 +perft 5 60737131 +perft 6 2051637621 + +id gentest-1014 +epd 8/p2pkNr1/b2b3p/3p1P1P/2B3p1/P1n3R1/QrP3P1/3RK1N1 b - - +perft 1 39 +perft 2 1417 +perft 3 50338 +perft 4 1760394 +perft 5 60775160 +perft 6 2103640084 + +id gentest-1015 +epd 8/p2pkNr1/b6p/1n1p1P1P/1b4p1/P5R1/QrP1B1P1/3RK1N1 w - - +perft 1 6 +perft 2 166 +perft 3 6135 +perft 4 172559 +perft 5 6254109 +perft 6 180383520 + +id gentest-1016 +epd 3N4/p2pk1r1/b6p/1n3P1P/1b1p2p1/P5R1/QrP1B1P1/3R1KN1 b - - +perft 1 30 +perft 2 1157 +perft 3 31837 +perft 4 1170425 +perft 5 33005738 +perft 6 1191209028 + +id gentest-1017 +epd 3Nk3/p2p2r1/b6p/5P1P/1bBp2p1/P1n3R1/QrP3P1/3R1KN1 w - - +perft 1 33 +perft 2 1046 +perft 3 35057 +perft 4 1106298 +perft 5 37716047 +perft 6 1185550807 + +id gentest-1018 +epd 3Nk3/p5r1/b2p3p/5P1P/1bBp2p1/P1nR2R1/QrP3P1/4K1N1 b - - +perft 1 33 +perft 2 837 +perft 3 25220 +perft 4 705251 +perft 5 21416205 +perft 6 639535758 + +id gentest-1019 +epd 3Nk3/p5r1/b2p3p/5P1P/1bBp2p1/P5R1/QrPR2P1/4K1n1 w - - +perft 1 32 +perft 2 914 +perft 3 27140 +perft 4 778681 +perft 5 23774574 +perft 6 687882762 + +id gentest-1020 +epd 3Nk3/p5r1/b2p3p/5P1P/PbBp2p1/7R/QrPRn1P1/4K3 b - - +perft 1 35 +perft 2 1153 +perft 3 37179 +perft 4 1184184 +perft 5 37694021 +perft 6 1187087619 + +id gentest-1021 +epd 3Nk3/pr6/b2p3p/5P1P/Pb1p4/6pR/QrPRB1P1/4K3 w - - +perft 1 32 +perft 2 772 +perft 3 21856 +perft 4 557635 +perft 5 15941873 +perft 6 414687932 + +id gentest-1022 +epd 3Nk3/p4r2/b2p3p/5P1P/PbBp4/6pR/1QPR2P1/4K3 b - - +perft 1 24 +perft 2 747 +perft 3 16785 +perft 4 525862 +perft 5 11687462 +perft 6 373309317 + +id gentest-1023 +epd 3k4/pr6/b2p3p/5P1P/PbBp4/6pR/1QPR2P1/3K4 w - - +perft 1 34 +perft 2 790 +perft 3 25063 +perft 4 583895 +perft 5 18222256 +perft 6 423156034 + +id gentest-1024 +epd 3k4/pr4Q1/b2p3p/P4P1P/1bB5/3p2pR/2PR2P1/3K4 b - - +perft 1 19 +perft 2 695 +perft 3 13120 +perft 4 436325 +perft 5 8762556 +perft 6 283241228 + +id gentest-1025 +epd 3k4/p6r/b2pB2p/P4P1P/1b6/3p2pR/2PR2P1/3K4 w - - +perft 1 21 +perft 2 450 +perft 3 9233 +perft 4 208336 +perft 5 4408391 +perft 6 102596180 + +id gentest-1026 +epd 3k4/p2r4/b2p3p/P4P1P/1bP5/3p2pR/3R2P1/3K4 b - - +perft 1 20 +perft 2 275 +perft 3 6283 +perft 4 95559 +perft 5 2291876 +perft 6 37612035 + +id gentest-1027 +epd 3k4/3r4/p2p3p/Pb3P1P/1bP5/3p2pR/3R2P1/4K3 w - - +perft 1 9 +perft 2 179 +perft 3 1972 +perft 4 44435 +perft 5 605160 +perft 6 14344563 + +id gentest-1028 +epd 3k4/1r6/p2p3p/Pb3P1P/1bP5/3p2R1/3R1KP1/8 b - - +perft 1 25 +perft 2 540 +perft 3 12835 +perft 4 276570 +perft 5 6713011 +perft 6 146592951 + +id gentest-1029 +epd 3k4/7r/p2p1P1p/P6P/1bb5/3p2R1/3R1KP1/8 w - - +perft 1 21 +perft 2 503 +perft 3 10373 +perft 4 251924 +perft 5 5323007 +perft 6 130765630 + +id gentest-1030 +epd 3k2b1/6Rr/p2p1P1p/P6P/1b6/3p4/3R2P1/5K2 b - - +perft 1 16 +perft 2 373 +perft 3 7034 +perft 4 151357 +perft 5 3109575 +perft 6 65692861 + +id gentest-1031 +epd 6R1/3k3r/p2p1P1p/P6P/1b6/1b1p4/3R2P1/5K2 w - - +perft 1 25 +perft 2 539 +perft 3 12387 +perft 4 275076 +perft 5 6132952 +perft 6 140127954 + +id gentest-1032 +epd 4R3/3k3r/p4P1p/P2p3P/1b6/1b1p2P1/3R4/5K2 b - - +perft 1 22 +perft 2 597 +perft 3 13111 +perft 4 321393 +perft 5 7284540 +perft 6 171578484 + +id gentest-1033 +epd 8/6r1/p2k1P1p/P2pR2P/1b6/1b1p2P1/3R4/5K2 w - - +perft 1 26 +perft 2 666 +perft 3 15795 +perft 4 395549 +perft 5 9081346 +perft 6 226660397 + +id gentest-1034 +epd 8/6r1/p3kP1p/P2p3P/1b4R1/1b1p2P1/3R4/5K2 b - - +perft 1 31 +perft 2 719 +perft 3 19232 +perft 4 431368 +perft 5 10992972 +perft 6 245260893 + +id gentest-1035 +epd 8/6r1/p2k1P1p/P6P/1b1p2R1/1b1p2P1/3R4/4K3 w - - +perft 1 11 +perft 2 294 +perft 3 4208 +perft 4 108360 +perft 5 1881238 +perft 6 47935559 + +id gentest-1036 +epd 8/6r1/p4P1p/P3k2P/1b4R1/1b1p2P1/3R4/4K3 b - - +perft 1 33 +perft 2 460 +perft 3 11831 +perft 4 220679 +perft 5 5530632 +perft 6 114852010 + +id gentest-1037 +epd 5b2/6P1/p6p/P3k2P/6R1/1b1p2P1/3R4/4K3 w - - +perft 1 28 +perft 2 474 +perft 3 13304 +perft 4 207961 +perft 5 5786723 +perft 6 90259154 + +id gentest-1038 +epd 8/6P1/p2b3p/P3k2P/5R2/1b1p2P1/8/3RK3 b - - +perft 1 19 +perft 2 460 +perft 3 8206 +perft 4 198643 +perft 5 3519056 +perft 6 87580515 + +id gentest-1039 +epd 8/6P1/p2b3p/P3k2P/5R2/1b1p2P1/8/R3K3 w - - +perft 1 28 +perft 2 516 +perft 3 12966 +perft 4 235832 +perft 5 5985316 +perft 6 107843162 + +id gentest-1040 +epd 8/6P1/p2b3p/P3k2P/5RP1/1b6/3pK3/R7 b - - +perft 1 23 +perft 2 619 +perft 3 13422 +perft 4 349567 +perft 5 7539860 +perft 6 194958030 + +id gentest-1041 +epd 8/5bP1/p2b3p/P3k2P/5RP1/8/5K2/R2q4 w - - +perft 1 23 +perft 2 729 +perft 3 14955 +perft 4 464632 +perft 5 10332987 +perft 6 313985062 + +id gentest-1042 +epd 5Q2/5b2/p2bk2p/P6P/5RP1/8/5K2/R2q4 b - - +perft 1 33 +perft 2 809 +perft 3 21445 +perft 4 582569 +perft 5 15372375 +perft 6 442310443 + +id gentest-1043 +epd 5Q2/5b2/p2bk2p/P5qP/5R2/8/5K2/5R2 w - - +perft 1 34 +perft 2 948 +perft 3 27217 +perft 4 731427 +perft 5 21843935 +perft 6 580477397 + +id gentest-1044 +epd 5Q2/8/p2bk2p/P5qb/5R2/8/5K2/5R2 b - - +perft 1 37 +perft 2 1027 +perft 3 26219 +perft 4 770634 +perft 5 20696293 +perft 6 633615699 + +id gentest-1045 +epd 5Q2/6q1/p2bk2p/P6b/5R2/8/8/5RK1 w - - +perft 1 5 +perft 2 177 +perft 3 5313 +perft 4 127501 +perft 5 4109651 +perft 6 102273422 + +id gentest-1046 +epd 8/6Q1/p2bk2p/P7/5R2/8/4b3/2R3K1 b - - +perft 1 19 +perft 2 905 +perft 3 13909 +perft 4 598054 +perft 5 9126433 +perft 6 374198681 + +id gentest-1047 +epd 8/6Q1/p2bk2p/P7/5R2/8/4b3/4R1K1 w - - +perft 1 46 +perft 2 493 +perft 3 19006 +perft 4 245109 +perft 5 9422857 +perft 6 134067345 + +id gentest-1048 +epd 1b6/8/p3kR1p/P7/8/2Q5/4b3/4R1K1 b - - +perft 1 3 +perft 2 129 +perft 3 1705 +perft 4 67581 +perft 5 946778 +perft 6 37262109 + +id gentest-1049 +epd 8/3k4/p2b1R1p/P7/8/2Q5/4b3/3R2K1 w - - +perft 1 45 +perft 2 558 +perft 3 23231 +perft 4 351441 +perft 5 14129640 +perft 6 222592029 + +id gentest-1050 +epd 8/4k3/p2R3p/P7/5R2/2Q5/4b3/6K1 b - - +perft 1 11 +perft 2 587 +perft 3 5481 +perft 4 263528 +perft 5 2493971 +perft 6 113842382 + +id gentest-1051 +epd 4k3/8/p2R3p/P7/5R2/2Q2b2/8/7K w - - +perft 1 4 +perft 2 30 +perft 3 1596 +perft 4 13424 +perft 5 658601 +perft 6 6082984 + +id gentest-1052 +epd 4k3/8/p2R3p/P4R2/6b1/2Q5/7K/8 b - - +perft 1 8 +perft 2 425 +perft 3 3472 +perft 4 164648 +perft 5 1477254 +perft 6 66398734 + +id gentest-1053 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-1054 +epd r1bqkbnr/pppppppp/n7/8/6Q1/4P3/PPPP1PPP/RNB1KBNR b KQkq - +perft 1 20 +perft 2 893 +perft 3 19130 +perft 4 780737 +perft 5 18388507 +perft 6 718200429 + +id gentest-1055 +epd 1rbqkbnr/pppppppp/8/2n5/8/4P2Q/PPPP1PPP/RNB1KBNR w KQk - +perft 1 34 +perft 2 786 +perft 3 26974 +perft 4 650517 +perft 5 23002439 +perft 6 585609336 + +id gentest-1056 +epd 1rbqkbnr/pppppppp/8/8/8/3BP1Q1/PPPP1PPP/RNB1K1NR b KQk - +perft 1 19 +perft 2 733 +perft 3 15206 +perft 4 594607 +perft 5 13496625 +perft 6 527886272 + +id gentest-1057 +epd 1rbqkbnr/pppp2pp/4p3/5p2/8/4P1Q1/PPPP1PPP/RNB1KBNR w KQk - +perft 1 36 +perft 2 998 +perft 3 36530 +perft 4 1021334 +perft 5 37515720 +perft 6 1074843564 + +id gentest-1058 +epd r1bqkbnr/pppp2pp/4p3/5p2/3P4/2P1P1Q1/PP3PPP/RNB1KBNR b KQk - +perft 1 29 +perft 2 1032 +perft 3 29229 +perft 4 1048519 +perft 5 30050239 +perft 6 1083472965 + +id gentest-1059 +epd 1rbqkbnr/1ppp2pp/p3p3/5p2/3P3P/2P1P1Q1/PP3PP1/RNB1KBNR w KQk - +perft 1 37 +perft 2 993 +perft 3 36969 +perft 4 1003011 +perft 5 37414249 +perft 6 1039309281 + +id gentest-1060 +epd 1rbqkbnr/1ppp2pp/p7/1B2pp2/3P3P/1PP1P1Q1/P4PP1/RNB1K1NR b KQk - +perft 1 27 +perft 2 1095 +perft 3 28884 +perft 4 1141722 +perft 5 31283595 +perft 6 1212274597 + +id gentest-1061 +epd 1rbqkb1r/1p1p2pp/p1p2n2/1B2pp2/3P3P/1PP1P1Q1/P2K1PP1/RNB3NR w k - +perft 1 39 +perft 2 1171 +perft 3 43744 +perft 4 1338114 +perft 5 49376506 +perft 6 1532521673 + +id gentest-1062 +epd 1rbqkb1r/1p1p2Qp/p1p2n2/1B2p3/3P1p1P/BPP1P3/P2K1PP1/RN4NR b k - +perft 1 30 +perft 2 1304 +perft 3 34568 +perft 4 1448061 +perft 5 38794644 +perft 6 1579267876 + +id gentest-1063 +epd 1rb1k2r/1p1p2Qp/p1p2n2/qB2p3/3P1p1P/bPPKP3/P4PP1/RN4NR w k - +perft 1 38 +perft 2 1102 +perft 3 38972 +perft 4 1132105 +perft 5 40121214 +perft 6 1173373282 + +id gentest-1064 +epd 1rb1kb1r/1p1p2Qp/p1p2n2/qB2p3/3P1p1P/1PP1PP2/P2K2P1/RN4NR b k - +perft 1 34 +perft 2 1219 +perft 3 35707 +perft 4 1259538 +perft 5 36653521 +perft 6 1273601051 + +id gentest-1065 +epd 1rb1k2r/1p1p2Q1/p1pb1n2/qB2P2p/5p1P/1PP1PP2/P2K2P1/RN4NR w k - +perft 1 41 +perft 2 1116 +perft 3 39548 +perft 4 1059681 +perft 5 36656847 +perft 6 988720252 + +id gentest-1066 +epd 1rbk3r/1p1p1Q2/p1Bb1n2/q3P2p/5p1P/1PP1PP2/P2K2P1/RN4NR b - - +perft 1 36 +perft 2 1249 +perft 3 37558 +perft 4 1306666 +perft 5 39467881 +perft 6 1363476102 + +id gentest-1067 +epd 1rbk3r/1p1p3Q/p1Bb4/1q1nP2p/5p1P/1PP1PP2/P2K2P1/RN4NR w - - +perft 1 36 +perft 2 1176 +perft 3 39321 +perft 4 1282383 +perft 5 42286497 +perft 6 1383686256 + +id gentest-1068 +epd 1rbk3r/1p1p4/p1Bb2Q1/1q2P2p/5p1P/1PP1nPP1/P2K4/RN4NR b - - +perft 1 41 +perft 2 1319 +perft 3 46733 +perft 4 1484450 +perft 5 51612126 +perft 6 1637648054 + +id gentest-1069 +epd 1rbk3r/1p6/p1pb2Q1/1q2P2p/5pnP/1PP2P2/P2K4/RN4NR w - - +perft 1 32 +perft 2 1065 +perft 3 30810 +perft 4 1027346 +perft 5 29276092 +perft 6 987404399 + +id gentest-1070 +epd 1rbk2r1/1p5Q/p1pb4/1q2P2p/P4pnP/1PP2P2/3K4/RN4NR b - - +perft 1 39 +perft 2 1152 +perft 3 40175 +perft 4 1143772 +perft 5 40323970 +perft 6 1145951169 + +id gentest-1071 +epd 1rbk2r1/1p6/pq1b4/2p1PQ1p/P4pnP/1PP2P2/3K4/RN4NR w - - +perft 1 34 +perft 2 925 +perft 3 29977 +perft 4 883996 +perft 5 27574421 +perft 6 858989625 + +id gentest-1072 +epd r1bk2r1/1p3Q2/pq1b4/2p1P2p/P4pnP/1PP2P2/3KN3/RN5R b - - +perft 1 31 +perft 2 1291 +perft 3 37377 +perft 4 1415704 +perft 5 43538838 +perft 6 1556261374 + +id gentest-1073 +epd r1b3r1/1p1k4/p2b1Q2/q1p1P2p/P4pnP/1PP2P2/3KN3/RN5R w - - +perft 1 37 +perft 2 986 +perft 3 34512 +perft 4 938435 +perft 5 32143166 +perft 6 901110801 + +id gentest-1074 +epd r1b2br1/1p1k4/p4Q2/q1p1P2p/P4pnP/1PPK1P2/4N3/RN1R4 b - - +perft 1 28 +perft 2 892 +perft 3 19903 +perft 4 626388 +perft 5 15485007 +perft 6 482559333 + +id gentest-1075 +epd r1b3r1/1p1k4/p2b1Q2/2p1P2p/q4pnP/1PPK1P2/4N3/RNR5 w - - +perft 1 36 +perft 2 1063 +perft 3 32896 +perft 4 975145 +perft 5 30714878 +perft 6 917704084 + +id gentest-1076 +epd r1b3r1/1p6/p1kb1Q2/2p1P2p/R4pnP/1PPK1P2/4N3/1N1R4 b - - +perft 1 27 +perft 2 1025 +perft 3 27333 +perft 4 1015782 +perft 5 27576525 +perft 6 1007238785 + +id gentest-1077 +epd r7/1p6/p1kb1Q2/2p1Pbrp/R1K2pnP/1PP2P2/4N3/1N1R4 w - - +perft 1 40 +perft 2 1164 +perft 3 38323 +perft 4 1103266 +perft 5 35833843 +perft 6 1025039590 + +id gentest-1078 +epd 5r2/1p6/p1kR1Q2/2p1Pbrp/R1K2pnP/1PP2P2/4N3/1N6 b - - +perft 1 1 +perft 2 41 +perft 3 1104 +perft 4 38374 +perft 5 1012992 +perft 6 34923552 + +id gentest-1079 +epd 5r2/1pk3r1/p2R1Q2/2p1Pb1p/R1K2pPP/1PP5/4N3/1N6 w - - +perft 1 41 +perft 2 1173 +perft 3 44221 +perft 4 1153904 +perft 5 42779382 +perft 6 1072071415 + +id gentest-1080 +epd 5r2/1pk2Q2/p7/2p1Pb1p/R1K2pPP/1PPR4/4N3/1N6 b - - +perft 1 6 +perft 2 255 +perft 3 4726 +perft 4 168011 +perft 5 3159583 +perft 6 109193455 + +id gentest-1081 +epd 8/1pkbQr2/p7/2p1P2p/R1K2pPP/1PPR4/4N3/1N6 w - - +perft 1 39 +perft 2 544 +perft 3 19352 +perft 4 308249 +perft 5 10634567 +perft 6 178735114 + +id gentest-1082 +epd 5Q2/2kb1r2/p7/1ppKP2p/R4pPP/1PPR4/4N3/1N6 b - - +perft 1 20 +perft 2 773 +perft 3 14318 +perft 4 518222 +perft 5 9724714 +perft 6 340555056 + +id gentest-1083 +epd 5Q2/2kb3r/p7/1ppKP3/5ppP/1PPR4/4N3/RN6 w - - +perft 1 41 +perft 2 690 +perft 3 25195 +perft 4 446219 +perft 5 16062898 +perft 6 294881001 + +id gentest-1084 +epd 8/2kb3r/p4Q2/1p1KP3/2p2ppP/1PPR4/4N3/RN6 b - - +perft 1 21 +perft 2 794 +perft 3 15179 +perft 4 562240 +perft 5 10830588 +perft 6 398003306 + +id gentest-1085 +epd 8/2kb4/p3Q2r/1p1KP3/2p3pP/1PPR1p2/4N3/RN6 w - - +perft 1 37 +perft 2 730 +perft 3 25215 +perft 4 495296 +perft 5 17274382 +perft 6 343026910 + +id gentest-1086 +epd 2k5/3b4/p3Q2r/1p1KP3/2p3pP/1PP2R2/8/RNN5 b - - +perft 1 17 +perft 2 645 +perft 3 10355 +perft 4 374110 +perft 5 6398708 +perft 6 228864843 + +id gentest-1087 +epd 3k4/3b4/Q6r/1p1KP3/2p4P/1PP2p2/8/RNN5 w - - +perft 1 32 +perft 2 624 +perft 3 17050 +perft 4 321941 +perft 5 9017759 +perft 6 170463040 + +id gentest-1088 +epd 3k4/8/Q6r/Rp1KP3/2p3bP/1PP2p2/8/1NN5 b - - +perft 1 24 +perft 2 627 +perft 3 11834 +perft 4 330210 +perft 5 6061101 +perft 6 175968051 + +id gentest-1089 +epd 8/4k3/Q6r/Rp1KP3/6bP/1pP2p2/3N4/2N5 w - - +perft 1 33 +perft 2 677 +perft 3 21432 +perft 4 419043 +perft 5 13549927 +perft 6 267073347 + +id gentest-1090 +epd 8/4k3/3Q4/Rp1KP3/6bP/1pPN1p2/3N4/8 b - - +perft 1 2 +perft 2 88 +perft 3 840 +perft 4 33424 +perft 5 359168 +perft 6 13958554 + +id gentest-1091 +epd 4k3/2Qb4/8/Rp1KP3/7P/1pPN1p2/3N4/8 w - - +perft 1 39 +perft 2 413 +perft 3 14792 +perft 4 158715 +perft 5 5990246 +perft 6 68816815 + +id gentest-1092 +epd 8/3k4/8/Rp1KP3/1N5P/1pP2p2/3N4/8 b - - +perft 1 7 +perft 2 186 +perft 3 1419 +perft 4 37988 +perft 5 334964 +perft 6 8816427 + +id gentest-1093 +epd 8/4k3/8/1p1KP3/1N5P/2P2p2/Rp1N4/8 w - - +perft 1 25 +perft 2 237 +perft 3 6355 +perft 4 72089 +perft 5 1893467 +perft 6 25106116 + +id gentest-1094 +epd 8/4k3/N7/1p1KP3/2N4P/2P2p2/R7/1r6 b - - +perft 1 18 +perft 2 474 +perft 3 7998 +perft 4 201440 +perft 5 3301987 +perft 6 82267343 + +id gentest-1095 +epd 8/4k3/N7/1p1KP3/2N4P/R1P2p2/r7/8 w - - +perft 1 20 +perft 2 317 +perft 3 6665 +perft 4 103441 +perft 5 2283872 +perft 6 35714417 + +id gentest-1096 +epd 1N6/4k3/2K5/1p2P3/2N4P/R1P2p2/1r6/8 b - - +perft 1 18 +perft 2 417 +perft 3 6749 +perft 4 159567 +perft 5 2552281 +perft 6 60978708 + +id gentest-1097 +epd 1N6/4k3/2K5/1p2P3/R1N4P/2P2p2/1r6/8 w - - +perft 1 24 +perft 2 407 +perft 3 10067 +perft 4 161121 +perft 5 3970930 +perft 6 62816308 + +id gentest-1098 +epd 1N6/4k3/2K5/1p2PN2/R6P/2P2p2/3r4/8 b - - +perft 1 5 +perft 2 148 +perft 3 2703 +perft 4 72687 +perft 5 1165540 +perft 6 30467229 + +id gentest-1099 +epd 1N6/3r4/4k3/1pK1PN2/R6P/2P2p2/8/8 w - - +perft 1 29 +perft 2 491 +perft 3 11942 +perft 4 184205 +perft 5 4408234 +perft 6 67878536 + +id gentest-1100 +epd 3r4/4N3/N3k3/1pK1P3/R6P/2P2p2/8/8 b - - +perft 1 21 +perft 2 473 +perft 3 7966 +perft 4 174743 +perft 5 2804413 +perft 6 62344441 + +id gentest-1101 +epd r7/3kN3/N7/1pK1P3/5R1P/2P2p2/8/8 w - - +perft 1 28 +perft 2 382 +perft 3 9621 +perft 4 124569 +perft 5 3009021 +perft 6 40805021 + +id gentest-1102 +epd 4r3/2NkN3/8/1pK1P3/2P2R1P/5p2/8/8 b - - +perft 1 14 +perft 2 369 +perft 3 4877 +perft 4 122255 +perft 5 1673436 +perft 6 41139748 + +id gentest-1103 +epd r7/3kN3/N7/1pK1P3/2P2R1P/5p2/8/8 w - - +perft 1 25 +perft 2 354 +perft 3 8560 +perft 4 113294 +perft 5 2712587 +perft 6 37019497 + +id gentest-1104 +epd r7/3kN3/8/2K1P3/1Np1R2P/5p2/8/8 b - - +perft 1 21 +perft 2 498 +perft 3 8328 +perft 4 196947 +perft 5 3182957 +perft 6 75772366 + +id gentest-1105 +epd 2Nk4/r7/8/2K1P3/1Np1R2P/5p2/8/8 w - - +perft 1 26 +perft 2 455 +perft 3 10591 +perft 4 166007 +perft 5 3872615 +perft 6 60016508 + +id gentest-1106 +epd 2k5/r7/8/4P3/1NpK2RP/5p2/8/8 b - - +perft 1 21 +perft 2 460 +perft 3 7806 +perft 4 174332 +perft 5 2911999 +perft 6 64755473 + +id gentest-1107 +epd 3k4/6R1/8/4P3/1NpK3P/5p2/r7/8 w - - +perft 1 28 +perft 2 453 +perft 3 11174 +perft 4 167038 +perft 5 3888844 +perft 6 58759951 + +id gentest-1108 +epd 3k4/8/8/4P3/1N1K3P/2p2p2/r7/R7 b - - +perft 1 21 +perft 2 503 +perft 3 8511 +perft 4 193765 +perft 5 3218768 +perft 6 70787637 + +id gentest-1109 +epd 4k3/8/8/4P3/1NK4P/2p2p2/5r2/R7 w - - +perft 1 29 +perft 2 381 +perft 3 9751 +perft 4 146620 +perft 5 3449489 +perft 6 53916494 + +id gentest-1110 +epd 4k3/8/8/1K2P3/1N5P/2p2p2/R5r1/8 b - - +perft 1 21 +perft 2 530 +perft 3 9170 +perft 4 211279 +perft 5 3599011 +perft 6 80025685 + +id gentest-1111 +epd 8/5k2/8/1K2P3/1N5P/2p2p2/4Rr2/8 w - - +perft 1 23 +perft 2 300 +perft 3 6528 +perft 4 92121 +perft 5 1933131 +perft 6 29935974 + +id gentest-1112 +epd 5k2/8/8/1K2P3/1N2R2P/2p2p2/5r2/8 b - - +perft 1 14 +perft 2 298 +perft 3 4556 +perft 4 98227 +perft 5 1555078 +perft 6 33465073 + +id gentest-1113 +epd 6k1/8/8/1K2P3/1N1R3P/2p2p2/8/5r2 w - - +perft 1 26 +perft 2 358 +perft 3 8864 +perft 4 131557 +perft 5 3133272 +perft 6 49069802 + +id gentest-1114 +epd 6k1/8/8/K3P3/1N1R3P/2p2p2/8/6r1 b - - +perft 1 20 +perft 2 438 +perft 3 7513 +perft 4 166745 +perft 5 2807059 +perft 6 61745856 + +id gentest-1115 +epd 8/5k2/8/1K2P3/1N1R3P/2p2p2/8/7r w - - +perft 1 26 +perft 2 443 +perft 3 11030 +perft 4 181877 +perft 5 4333781 +perft 6 71274238 + +id gentest-1116 +epd 4k3/8/8/2K1P3/1N3R1P/2p2p2/8/7r b - - +perft 1 15 +perft 2 355 +perft 3 5317 +perft 4 122540 +perft 5 1888515 +perft 6 42483287 + +id gentest-1117 +epd 4k3/8/8/2K1PR2/1N5P/2p2p2/4r3/8 w - - +perft 1 22 +perft 2 332 +perft 3 6989 +perft 4 100961 +perft 5 2132496 +perft 6 31839335 + +id gentest-1118 +epd 3k4/8/2K5/4P3/1N3R1P/2p2p2/4r3/8 b - - +perft 1 16 +perft 2 345 +perft 3 4901 +perft 4 105615 +perft 5 1539542 +perft 6 33172663 + +id gentest-1119 +epd 3k4/8/1K6/4P3/1N3R1P/4rp2/2p5/8 w - - +perft 1 24 +perft 2 356 +perft 3 7899 +perft 4 132510 +perft 5 2821453 +perft 6 52332208 + +id gentest-1120 +epd 2k5/K7/8/4P3/1N1R3P/4rp2/2p5/8 b - - +perft 1 14 +perft 2 282 +perft 3 4329 +perft 4 85009 +perft 5 1523611 +perft 6 28978759 + +id gentest-1121 +epd 2k5/K7/8/4r3/1N5P/3R1p2/8/2b5 w - - +perft 1 21 +perft 2 435 +perft 3 8127 +perft 4 161052 +perft 5 2998837 +perft 6 60628525 + +id gentest-1122 +epd 2k5/K2R4/2N5/8/4r2P/5p2/8/2b5 b - - +perft 1 23 +perft 2 484 +perft 3 9078 +perft 4 178874 +perft 5 3456982 +perft 6 66261750 + +id gentest-1123 +epd 2k5/K3R3/2N5/8/7P/5p2/4r3/2b5 w - - +perft 1 22 +perft 2 419 +perft 3 8304 +perft 4 151000 +perft 5 2969069 +perft 6 56135585 + +id gentest-1124 +epd 2k5/K3R3/2N5/8/7P/5p2/3r4/2b5 b - - +perft 1 17 +perft 2 349 +perft 3 6490 +perft 4 132545 +perft 5 2488534 +perft 6 49327093 + +id gentest-1125 +epd 2k5/K2R4/2N5/8/7P/5p2/1b3r2/8 w - - +perft 1 24 +perft 2 319 +perft 3 6786 +perft 4 112707 +perft 5 2264165 +perft 6 41081303 + +id gentest-1126 +epd 2k5/K2R4/2N5/8/7P/5p2/1b5r/8 b - - +perft 1 19 +perft 2 422 +perft 3 7325 +perft 4 149623 +perft 5 2766533 +perft 6 54402120 + +id gentest-1127 +epd 8/1K1k4/2N5/4b3/7P/5p2/7r/8 w - - +perft 1 13 +perft 2 315 +perft 3 3405 +perft 4 84714 +perft 5 883660 +perft 6 21862487 + +id gentest-1128 +epd 8/3k4/K7/8/1N1b3P/5p2/7r/8 b - - +perft 1 31 +perft 2 285 +perft 3 7923 +perft 4 82950 +perft 5 2116989 +perft 6 22131554 + +id gentest-1129 +epd 8/3k4/KbN5/8/7P/5p2/4r3/8 w - - +perft 1 12 +perft 2 298 +perft 3 2930 +perft 4 71949 +perft 5 709342 +perft 6 16834420 + +id gentest-1130 +epd 8/3k4/Kb6/8/2N4P/5p2/3r4/8 b - - +perft 1 29 +perft 2 333 +perft 3 7693 +perft 4 77526 +perft 5 1836962 +perft 6 18411527 + +id gentest-1131 +epd 8/8/K3k3/4N3/3b3P/5p2/3r4/8 w - - +perft 1 12 +perft 2 337 +perft 3 3825 +perft 4 101687 +perft 5 1113550 +perft 6 29097330 + +id gentest-1132 +epd 8/8/3k4/1K2N2P/3b4/5p2/3r4/8 b - - +perft 1 25 +perft 2 323 +perft 3 7568 +perft 4 89069 +perft 5 2241639 +perft 6 24749166 + +id gentest-1133 +epd 8/8/3k2N1/1K5P/8/8/3r1p2/6b1 w - - +perft 1 13 +perft 2 233 +perft 3 2361 +perft 4 52168 +perft 5 519750 +perft 6 12976697 + +id gentest-1134 +epd 8/8/1K1k4/7P/5N2/3r4/5p2/6b1 b - - +perft 1 19 +perft 2 203 +perft 3 4421 +perft 4 48436 +perft 5 1145349 +perft 6 11859158 + +id gentest-1135 +epd 8/8/1K1k4/7P/4r3/8/5pN1/6b1 w - - +perft 1 10 +perft 2 248 +perft 3 2192 +perft 4 53041 +perft 5 480584 +perft 6 12008276 + +id gentest-1136 +epd 8/4r3/3k3P/1K6/8/8/5pN1/6b1 b - - +perft 1 24 +perft 2 230 +perft 3 5533 +perft 4 54004 +perft 5 1373649 +perft 6 14188732 + +id gentest-1137 +epd 4r3/8/3k3P/1K6/8/8/5p2/4N1b1 w - - +perft 1 11 +perft 2 307 +perft 3 3033 +perft 4 79958 +perft 5 820534 +perft 6 22215694 + +id gentest-1138 +epd 4r3/8/K3k2P/8/8/3N4/5p2/6b1 b - - +perft 1 20 +perft 2 240 +perft 3 5552 +perft 4 61043 +perft 5 1525151 +perft 6 16499355 + +id gentest-1139 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-1140 +epd rnbqkbnr/p1pppppp/1p6/8/2P3P1/8/PP1PPP1P/RNBQKBNR b KQkq - +perft 1 21 +perft 2 485 +perft 3 11099 +perft 4 282565 +perft 5 7040837 +perft 6 193961515 + +id gentest-1141 +epd rnbqkbnr/3ppppp/pp6/2p5/2P3P1/4P3/PP1P1P1P/RNBQKBNR w KQkq - +perft 1 27 +perft 2 485 +perft 3 13490 +perft 4 286279 +perft 5 8272850 +perft 6 198216986 + +id gentest-1142 +epd r1bqkbnr/3ppppp/ppn5/2p5/1PP3PP/4P3/P2P1P2/RNBQKBNR b KQkq - +perft 1 25 +perft 2 750 +perft 3 19612 +perft 4 596607 +perft 5 16583854 +perft 6 519099029 + +id gentest-1143 +epd r1bqk1nr/3pbppp/ppn5/2p1p3/QPP3PP/4P3/P2P1P2/RNB1KBNR w KQkq - +perft 1 33 +perft 2 951 +perft 3 31537 +perft 4 917769 +perft 5 30575622 +perft 6 916451465 + +id gentest-1144 +epd r1bqk2r/3pbppp/ppn2n2/2p1p2P/QPP3P1/4P3/P2P1P2/RNBK1BNR b kq - +perft 1 29 +perft 2 986 +perft 3 28742 +perft 4 972211 +perft 5 29283556 +perft 6 992757273 + +id gentest-1145 +epd 2bqk2r/1r1pbppp/ppn2n2/2p1p2P/QPP3P1/4PP2/P2P4/RNBK1BNR w k - +perft 1 32 +perft 2 922 +perft 3 29711 +perft 4 858773 +perft 5 27813156 +perft 6 824733578 + +id gentest-1146 +epd 2bqk2r/1r1pbppp/ppn5/Q1P1p2P/2P3n1/4PP2/P2P4/RNBK1BNR b k - +perft 1 35 +perft 2 1050 +perft 3 36640 +perft 4 1108358 +perft 5 38816777 +perft 6 1196458524 + +id gentest-1147 +epd 2bqkb1r/1r1p1ppp/ppn5/Q1P1p2P/2P2P2/4P3/P2P3n/RNBK1BNR w k - +perft 1 31 +perft 2 1048 +perft 3 32970 +perft 4 1127707 +perft 5 36032647 +perft 6 1254033879 + +id gentest-1148 +epd 2b1kb1r/1r1p1ppp/ppn2q2/Q1P1pP1P/2P5/4P3/P2PK2n/RNB2BNR b k - +perft 1 37 +perft 2 987 +perft 3 36109 +perft 4 999796 +perft 5 36344313 +perft 6 1045004645 + +id gentest-1149 +epd 2b1kb1r/r2p1ppp/ppn2q2/Q1P1pP1P/2P5/4P3/P2P1K2/RNB2nNR w k - +perft 1 29 +perft 2 1095 +perft 3 31331 +perft 4 1162455 +perft 5 34173215 +perft 6 1258550098 + +id gentest-1150 +epd 2b1kb1r/r4ppp/ppnp1q2/Q1P1pP1P/2P1P3/N7/P2P1K2/R1B2nNR b k - +perft 1 40 +perft 2 1035 +perft 3 39057 +perft 4 1099873 +perft 5 40117320 +perft 6 1198831515 + +id gentest-1151 +epd 2b1kb1r/r4ppp/p1np4/QpP1pP1P/2P1P2q/N4K2/P2P4/R1B2nNR w k - +perft 1 26 +perft 2 1108 +perft 3 24697 +perft 4 987483 +perft 5 24104807 +perft 6 930756437 + +id gentest-1152 +epd 2b1kb1r/r4ppp/p1n5/1pPppP1P/Q1P1P2R/N4K2/P2P4/R1B2nN1 b k - +perft 1 37 +perft 2 1008 +perft 3 35069 +perft 4 999247 +perft 5 33769865 +perft 6 1008932818 + +id gentest-1153 +epd 2b1kb1r/r5pp/p1n2p2/2PppP1P/Q1p1P2R/N4K2/PB1P4/R4nN1 w k - +perft 1 37 +perft 2 1097 +perft 3 37736 +perft 4 1165214 +perft 5 40903798 +perft 6 1290148644 + +id gentest-1154 +epd 4kb1r/rb4pp/p1n2p2/2PppP1P/Q1pBP1R1/N4K2/P2P4/R4nN1 b k - +perft 1 22 +perft 2 736 +perft 3 18333 +perft 4 643467 +perft 5 17349441 +perft 6 629269743 + +id gentest-1155 +epd 4k2r/rb2b2p/p1n2pp1/2PppP1P/Q1pBP1R1/N4K2/P2P4/3R1nN1 w k - +perft 1 39 +perft 2 1018 +perft 3 36747 +perft 4 1020037 +perft 5 37785535 +perft 6 1094321181 + +id gentest-1156 +epd 4k1r1/rb2b2p/p1n2pp1/2PppP1P/Q1pBP1R1/N7/P2PK3/3R1nN1 b - - +perft 1 26 +perft 2 995 +perft 3 27230 +perft 4 1061448 +perft 5 30669184 +perft 6 1210984892 + +id gentest-1157 +epd 3k4/rb2b1rp/p1n2pp1/2PppP1P/Q1p1P1R1/N7/P2PKB2/3R1nN1 w - - +perft 1 39 +perft 2 1055 +perft 3 39395 +perft 4 1089533 +perft 5 41786856 +perft 6 1191888962 + +id gentest-1158 +epd 2bk4/r3b1rp/p1n2pp1/2PppP1P/Q1p1P3/N5R1/P2P1B2/3R1KN1 b - - +perft 1 28 +perft 2 1150 +perft 3 32007 +perft 4 1326572 +perft 5 37822679 +perft 6 1572824893 + +id gentest-1159 +epd 2bk1b2/r3r2p/p1n2pp1/2PppP1P/Q1p1P3/NR6/P2P1B2/3R1KN1 w - - +perft 1 44 +perft 2 1395 +perft 3 59658 +perft 4 1797989 +perft 5 76025996 +perft 6 2233883909 + +id gentest-1160 +epd 2bkrb2/r6p/p1n2pp1/2PppP1P/Q1p1P2B/N2R4/P2P4/3R1KN1 b - - +perft 1 34 +perft 2 1354 +perft 3 40566 +perft 4 1646818 +perft 5 47953842 +perft 6 1966127847 + +id gentest-1161 +epd 2bkrb2/3r4/p1n2ppp/2PppP1P/Q1p1P2B/N2R1N2/P2P4/3R1K2 w - - +perft 1 40 +perft 2 1165 +perft 3 47752 +perft 4 1315395 +perft 5 54692164 +perft 6 1479111477 + +id gentest-1162 +epd 2bkrb2/5r2/p1n2ppp/2PppP1P/Q1p1P2B/NR3N2/P2P4/1R3K2 b - - +perft 1 34 +perft 2 1490 +perft 3 44464 +perft 4 1989603 +perft 5 56671594 +perft 6 2542035255 + +id gentest-1163 +epd 2b1rb2/3k1r2/Q1n2ppp/2P1pP1P/2p1p2B/NR3N2/P2P4/1R3K2 w - - +perft 1 47 +perft 2 1152 +perft 3 54049 +perft 4 1267239 +perft 5 58480874 +perft 6 1380169093 + +id gentest-1164 +epd 2b1rb2/3k1r2/Q4ppp/2P1pPBP/1np1p3/NR3N2/P2P4/1R2K3 b - - +perft 1 29 +perft 2 1167 +perft 3 27200 +perft 4 1113820 +perft 5 27138236 +perft 6 1118535867 + +id gentest-1165 +epd 2b1rb2/3kr3/n4pPp/2P1p1BP/2p1p3/NR3N2/P2P4/1R2K3 w - - +perft 1 34 +perft 2 655 +perft 3 22869 +perft 4 495964 +perft 5 17435905 +perft 6 413324336 + +id gentest-1166 +epd 2b1rb2/3k3r/n4BPp/1RP1p2P/2p1p3/N4N2/P2P4/1R2K3 b - - +perft 1 22 +perft 2 794 +perft 3 17639 +perft 4 628858 +perft 5 14987310 +perft 6 532972134 + +id gentest-1167 +epd 2b2b2/2nkr2r/5BPp/1RP1p2P/2p1p3/N4N2/PR1P4/4K3 w - - +perft 1 34 +perft 2 732 +perft 3 25274 +perft 4 549018 +perft 5 19080102 +perft 6 429859722 + +id gentest-1168 +epd 2b1rb2/2nk3P/7p/1RP1B2P/2p1p3/N4N2/PR1P4/4K3 b - - +perft 1 22 +perft 2 831 +perft 3 18902 +perft 4 705175 +perft 5 16642613 +perft 6 620354425 + +id gentest-1169 +epd 2b1rb2/2nk3P/7p/2P1B2P/2p1p3/NR3N2/PR1P4/4K3 w - - +perft 1 40 +perft 2 853 +perft 3 33277 +perft 4 747027 +perft 5 28888289 +perft 6 676712635 + +id gentest-1170 +epd 2b1rb2/3k3P/4n2p/2P1B2P/2N1p3/1R6/PR1P3N/4K3 b - - +perft 1 19 +perft 2 838 +perft 3 16433 +perft 4 692037 +perft 5 14908216 +perft 6 614757108 + +id gentest-1171 +epd 1bb1r3/3k3P/4n2p/2P1B2P/2N1p3/8/PR1P3N/4K3 w - - +perft 1 39 +perft 2 848 +perft 3 32175 +perft 4 721107 +perft 5 26508622 +perft 6 618788631 + +id gentest-1172 +epd 1bb5/3kr2P/4n2p/2P4P/2NBp3/P7/1R1P3N/4K3 b - - +perft 1 26 +perft 2 877 +perft 3 20880 +perft 4 701429 +perft 5 17260920 +perft 6 575737135 + +id gentest-1173 +epd 1bb4B/3kr3/7p/2P4P/2N1p3/Pn6/1R1P3N/4K3 w - - +perft 1 25 +perft 2 595 +perft 3 15757 +perft 4 396433 +perft 5 10877234 +perft 6 282825534 + +id gentest-1174 +epd 2b4B/b2kr3/7p/N1P4P/4p3/Pn6/R2P3N/4K3 b - - +perft 1 22 +perft 2 523 +perft 3 12273 +perft 4 292273 +perft 5 7296495 +perft 6 176622376 + +id gentest-1175 +epd 2b4B/bN1k3r/7p/2P4P/4p3/P7/R2P3N/n3K3 w - - +perft 1 24 +perft 2 370 +perft 3 8685 +perft 4 167383 +perft 5 4012805 +perft 6 85539458 + +id gentest-1176 +epd 2b5/bN1k3r/7p/2P4P/4p3/PnB5/R2P3N/5K2 b - - +perft 1 20 +perft 2 466 +perft 3 10134 +perft 4 236670 +perft 5 5573110 +perft 6 131934763 + +id gentest-1177 +epd 2k5/bb5r/7p/B1P4P/4p3/Pn6/R2P3N/5K2 w - - +perft 1 19 +perft 2 427 +perft 3 7782 +perft 4 187738 +perft 5 3635147 +perft 6 92299800 + +id gentest-1178 +epd 1k6/bb5r/7p/B1P4P/4p3/Pn6/3PK2N/R7 b - - +perft 1 22 +perft 2 469 +perft 3 11027 +perft 4 231591 +perft 5 5765027 +perft 6 121853424 + +id gentest-1179 +epd bk6/b6r/7p/B1P4P/4p3/P7/3nK2N/6R1 w - - +perft 1 30 +perft 2 540 +perft 3 14322 +perft 4 296004 +perft 5 7354121 +perft 6 164025034 + +id gentest-1180 +epd bk6/b5r1/7p/2P4P/4p3/P1B5/3K3N/6R1 b - - +perft 1 22 +perft 2 615 +perft 3 12480 +perft 4 335369 +perft 5 7130466 +perft 6 187137307 + +id gentest-1181 +epd bk6/b7/7p/2P4P/1B2p3/P7/3K3N/6r1 w - - +perft 1 11 +perft 2 244 +perft 3 3123 +perft 4 67616 +perft 5 966024 +perft 6 21536955 + +id gentest-1182 +epd bk6/b7/7p/B1P4P/4p1r1/P7/7N/3K4 b - - +perft 1 17 +perft 2 271 +perft 3 5302 +perft 4 83541 +perft 5 1773142 +perft 6 28180324 + +id gentest-1183 +epd 1k6/b7/2b4p/2P4P/4p3/P7/7N/3KB1r1 w - - +perft 1 8 +perft 2 188 +perft 3 2414 +perft 4 57578 +perft 5 817316 +perft 6 20060063 + +id gentest-1184 +epd bk6/b7/7p/2P4P/4p3/P3K3/7N/4B1r1 b - - +perft 1 18 +perft 2 251 +perft 3 5009 +perft 4 69089 +perft 5 1477251 +perft 6 21280321 + +id gentest-1185 +epd bk6/b7/7p/2P4P/3Kp3/P7/7N/5r2 w - - +perft 1 8 +perft 2 165 +perft 3 1505 +perft 4 32415 +perft 5 322005 +perft 6 7215607 + +id gentest-1186 +epd bk3r2/b7/7p/2P4P/P3p3/2K5/7N/8 b - - +perft 1 21 +perft 2 237 +perft 3 5218 +perft 4 57743 +perft 5 1327512 +perft 6 14733826 + +id gentest-1187 +epd b1k5/b7/5r1p/2P4P/P3p1N1/2K5/8/8 w - - +perft 1 15 +perft 2 358 +perft 3 4867 +perft 4 112905 +perft 5 1443737 +perft 6 33634974 + +id gentest-1188 +epd b1k5/b7/2P1r2N/7P/P3p3/2K5/8/8 b - - +perft 1 21 +perft 2 232 +perft 3 5195 +perft 4 61533 +perft 5 1410657 +perft 6 16913293 + +id gentest-1189 +epd b2k4/b3r3/2P4N/7P/PK2p3/8/8/8 w - - +perft 1 12 +perft 2 229 +perft 3 2598 +perft 4 54337 +perft 5 648139 +perft 6 14162704 + +id gentest-1190 +epd b7/b1Pkr3/7N/7P/P3p3/K7/8/8 b - - +perft 1 23 +perft 2 282 +perft 3 5982 +perft 4 86936 +perft 5 1926183 +perft 6 29692100 + +id gentest-1191 +epd b7/b1k1r3/7N/7P/P3p3/8/1K6/8 w - - +perft 1 13 +perft 2 332 +perft 3 3878 +perft 4 98282 +perft 5 1166007 +perft 6 30083645 + +id gentest-1192 +epd b7/b3rN2/1k6/7P/P3p3/8/2K5/8 b - - +perft 1 18 +perft 2 250 +perft 3 5074 +perft 4 64680 +perft 5 1438413 +perft 6 17468913 + +id gentest-1193 +epd b7/b3r3/1k5N/7P/P3p3/8/2K5/8 w - - +perft 1 12 +perft 2 225 +perft 3 2666 +perft 4 56318 +perft 5 664467 +perft 6 15150008 + +id gentest-1194 +epd b7/b2r4/1k5N/7P/P3p3/2K5/8/8 b - - +perft 1 24 +perft 2 233 +perft 3 5235 +perft 4 55122 +perft 5 1313025 +perft 6 14303393 + +id gentest-1195 +epd b7/b3r3/1k5N/7P/P3p3/8/3K4/8 w - - +perft 1 12 +perft 2 224 +perft 3 2492 +perft 4 52261 +perft 5 594157 +perft 6 13465211 + +id gentest-1196 +epd b7/b4N2/1k6/4r2P/P3p3/8/4K3/8 b - - +perft 1 21 +perft 2 276 +perft 3 5782 +perft 4 67131 +perft 5 1468441 +perft 6 16375198 + +id gentest-1197 +epd b7/b4N2/1k6/7P/P3p3/3rK3/8/8 w - - +perft 1 3 +perft 2 75 +perft 3 831 +perft 4 19204 +perft 5 205799 +perft 6 4798603 + +id gentest-1198 +epd b7/b4N2/8/2k4P/P3p3/3r4/5K2/8 b - - +perft 1 26 +perft 2 284 +perft 3 6992 +perft 4 74859 +perft 5 1812526 +perft 6 18948245 + +id gentest-1199 +epd bb1N4/8/1k6/7P/P3p3/3r4/5K2/8 w - - +perft 1 11 +perft 2 305 +perft 3 3171 +perft 4 83660 +perft 5 877653 +perft 6 22708437 + +id gentest-1200 +epd bb3N2/8/1k6/7P/P3p3/r7/5K2/8 b - - +perft 1 28 +perft 2 273 +perft 3 6814 +perft 4 67148 +perft 5 1739312 +perft 6 17462465 + +id gentest-1201 +epd b4N2/8/1k6/7P/P4b2/r3p3/8/6K1 w - - +perft 1 7 +perft 2 158 +perft 3 1252 +perft 4 32103 +perft 5 265796 +perft 6 6988930 + +id gentest-1202 +epd b4N2/1k6/7P/8/P4b2/r3p3/6K1/8 b - - +perft 1 22 +perft 2 186 +perft 3 4388 +perft 4 38143 +perft 5 926713 +perft 6 8680410 + +id gentest-1203 +epd b4N2/1k6/7P/P7/5b2/3r4/4p1K1/8 w - - +perft 1 9 +perft 2 284 +perft 3 2423 +perft 4 71175 +perft 5 666227 +perft 6 19589466 + +id gentest-1204 +epd b7/k7/4N2P/P7/5b2/3r4/4pK2/8 b - - +perft 1 39 +perft 2 449 +perft 3 15877 +perft 4 166012 +perft 5 5512163 +perft 6 57084207 + +id gentest-1205 +epd 8/k7/2b4P/P1N5/5b2/r7/4pK2/8 w - - +perft 1 13 +perft 2 499 +perft 3 5077 +perft 4 182597 +perft 5 1879221 +perft 6 64310978 + +id gentest-1206 +epd 8/k7/7P/Pb6/3N1b2/r7/4pK2/8 b - - +perft 1 37 +perft 2 429 +perft 3 13150 +perft 4 147301 +perft 5 4692371 +perft 6 51227930 + +id gentest-1207 +epd k7/8/7P/rb6/5b2/5N2/4pK2/8 w - - +perft 1 12 +perft 2 359 +perft 3 3549 +perft 4 113619 +perft 5 1149731 +perft 6 37697620 + +id gentest-1208 +epd k7/8/7P/rb6/8/4b3/4p2N/4K3 b - - +perft 1 27 +perft 2 112 +perft 3 3397 +perft 4 23064 +perft 5 682485 +perft 6 5700042 + +id gentest-1209 +epd k7/8/1b5P/1b6/8/r7/4p3/4KN2 w - - +perft 1 6 +perft 2 198 +perft 3 1387 +perft 4 43455 +perft 5 347093 +perft 6 10731613 + +id gentest-1210 +epd k7/8/1b5P/rb6/4N3/8/4p3/4K3 b - - +perft 1 24 +perft 2 228 +perft 3 6180 +perft 4 57585 +perft 5 1676109 +perft 6 15710497 + +id gentest-1211 +epd k7/8/bb5P/8/4N3/r7/3Kp3/8 w - - +perft 1 11 +perft 2 335 +perft 3 3365 +perft 4 104632 +perft 5 1019221 +perft 6 31939830 + +id gentest-1212 +epd k7/b6P/b7/6N1/8/r7/3Kp3/8 b - - +perft 1 29 +perft 2 302 +perft 3 8022 +perft 4 94615 +perft 5 2676195 +perft 6 34409389 + +id gentest-1213 +epd k7/bb5P/4N3/8/8/r7/3Kp3/8 w - - +perft 1 16 +perft 2 406 +perft 3 5336 +perft 4 148843 +perft 5 1970560 +perft 6 57003807 + +id gentest-1214 +epd k7/1b6/4N3/8/8/r1B5/3Kpb2/8 b - - +perft 1 31 +perft 2 550 +perft 3 17087 +perft 4 283639 +perft 5 9059362 +perft 6 147248347 + +id gentest-1215 +epd 1k6/1bN5/8/8/3b4/r1B5/3Kp3/8 w - - +perft 1 16 +perft 2 548 +perft 3 7834 +perft 4 260578 +perft 5 3791294 +perft 6 122168594 + +id gentest-1216 +epd 1k6/1bN5/8/8/1B1b4/6r1/4p3/4K3 b - - +perft 1 39 +perft 2 575 +perft 3 19335 +perft 4 277288 +perft 5 8749450 +perft 6 126669870 + +id gentest-1217 +epd 1k6/1bN5/3B4/8/8/6r1/4p3/b3K3 w - - +perft 1 17 +perft 2 364 +perft 3 5917 +perft 4 154705 +perft 5 2444920 +perft 6 68614890 + +id gentest-1218 +epd 1k3B2/1bN5/8/6r1/8/8/4K3/b7 b - - +perft 1 33 +perft 2 581 +perft 3 17821 +perft 4 299638 +perft 5 8945771 +perft 6 146439344 + +id gentest-1219 +epd 1k3B2/2N5/2b5/8/8/6r1/5K2/b7 w - - +perft 1 17 +perft 2 556 +perft 3 8863 +perft 4 269265 +perft 5 4294486 +perft 6 127273595 + +id gentest-1220 +epd 1k6/2N5/2b5/8/8/B3r3/5K2/b7 b - - +perft 1 36 +perft 2 547 +perft 3 17041 +perft 4 259327 +perft 5 7648855 +perft 6 117471657 + +id gentest-1221 +epd 1k2N3/8/2b5/7r/8/B7/5K2/b7 w - - +perft 1 17 +perft 2 569 +perft 3 9037 +perft 4 286191 +perft 5 4541731 +perft 6 140006780 + +id gentest-1222 +epd 2k1N3/8/2b5/2B4r/8/8/8/b3K3 b - - +perft 1 34 +perft 2 601 +perft 3 19232 +perft 4 315549 +perft 5 9939713 +perft 6 159829189 + +id gentest-1223 +epd 2k1N3/6b1/2b5/2B5/8/8/4K3/7r w - - +perft 1 19 +perft 2 645 +perft 3 10586 +perft 4 343615 +perft 5 5570094 +perft 6 175271772 + +id gentest-1224 +epd 2k5/6br/2bN4/2B5/8/3K4/8/8 b - - +perft 1 4 +perft 2 84 +perft 3 2312 +perft 4 44825 +perft 5 1314494 +perft 6 24480603 + +id gentest-1225 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-1226 +epd rnbqkbnr/1ppppppp/8/p7/3P4/8/PPPQPPPP/RNB1KBNR b KQkq - +perft 1 21 +perft 2 608 +perft 3 14236 +perft 4 452342 +perft 5 11549899 +perft 6 389158647 + +id gentest-1227 +epd 1nbqkb1r/1ppppppp/r4n2/p7/3P4/7P/PPPQPPP1/RNB1KBNR w KQk - +perft 1 28 +perft 2 726 +perft 3 22415 +perft 4 609289 +perft 5 20025881 +perft 6 564184168 + +id gentest-1228 +epd 1nbqkb1r/2pppppp/r4n2/pp6/2PP4/7P/PP2PPP1/RNBQKBNR b KQk - +perft 1 27 +perft 2 803 +perft 3 23065 +perft 4 704688 +perft 5 21109487 +perft 6 663590395 + +id gentest-1229 +epd rnbqkb1r/2p1pppp/5n2/pp1p2B1/2PP4/7P/PP2PPP1/RN1QKBNR w KQk - +perft 1 33 +perft 2 1051 +perft 3 34833 +perft 4 1100571 +perft 5 36975122 +perft 6 1195267340 + +id gentest-1230 +epd rn1qkb1r/1bp1pppp/5n2/pp1p2B1/2PP4/5P1P/PP1QP1P1/RN2KBNR b KQk - +perft 1 29 +perft 2 924 +perft 3 28078 +perft 4 920978 +perft 5 29083599 +perft 6 969862713 + +id gentest-1231 +epd rn1qkb1r/1bp2ppp/8/pp1pp2n/2PP1B2/5P1P/PP1QP1P1/RN2KBNR w KQk - +perft 1 32 +perft 2 1254 +perft 3 40050 +perft 4 1564987 +perft 5 50852309 +perft 6 1984963918 + +id gentest-1232 +epd 1n1qkb1r/1bp2ppp/r7/pp1pp2n/2PP1B2/1P3P1P/P3P1P1/RNQ1KBNR b KQk - +perft 1 46 +perft 2 1442 +perft 3 63634 +perft 4 1978598 +perft 5 84879594 +perft 6 2638284448 + +id gentest-1233 +epd 1n1qkb1r/1bp2ppp/r7/1p2B2n/p1pP4/1P3P1P/P3P1P1/RNQ1KBNR w KQk - +perft 1 36 +perft 2 1764 +perft 3 58711 +perft 4 2719707 +perft 5 89089791 +perft 6 4001579772 + +id gentest-1234 +epd 1n2kb1r/1bB2ppp/r7/1p5n/p1pP3q/1P3P1P/P3P1P1/RNQK1BNR b k - +perft 1 51 +perft 2 1700 +perft 3 81805 +perft 4 2662389 +perft 5 124570149 +perft 6 4016258887 + +id gentest-1235 +epd 1n2kbr1/1bB2p1p/r5p1/1p5n/pPpP3q/5P1P/P3P1P1/RNQK1BNR w - - +perft 1 32 +perft 2 1462 +perft 3 43775 +perft 4 1944381 +perft 5 58018191 +perft 6 2521903790 + +id gentest-1236 +epd 1n2kbr1/1bB2p1p/r5pQ/1p6/pPpP1n1q/5P1P/P3P1P1/RNK2BNR b - - +perft 1 49 +perft 2 1362 +perft 3 61891 +perft 4 1793519 +perft 5 78354908 +perft 6 2340808850 + +id gentest-1237 +epd 1n2kbr1/1bB4p/r3p3/1p4p1/pPpP1n1q/5P1P/P3P1P1/RNK2BNR w - - +perft 1 21 +perft 2 949 +perft 3 19680 +perft 4 869683 +perft 5 18803772 +perft 6 817854912 + +id gentest-1238 +epd 1n2kbr1/1b5p/1B1rp3/1p4p1/pPpP1n1q/5P1P/P3P1PR/RNK2BN1 b - - +perft 1 45 +perft 2 815 +perft 3 36124 +perft 4 695762 +perft 5 30429444 +perft 6 623209247 + +id gentest-1239 +epd 1n2kbr1/1b6/1B1r4/1p2p1pp/pPpP1n1q/P4P1P/4P1PR/RNK2BN1 w - - +perft 1 19 +perft 2 854 +perft 3 16329 +perft 4 721861 +perft 5 14726428 +perft 6 642884845 + +id gentest-1240 +epd 1n2kbr1/1b6/3r4/1pB1p1pp/pPpP1n2/P4PPq/4P2R/RNK2BN1 b - - +perft 1 52 +perft 2 1159 +perft 3 55381 +perft 4 1307118 +perft 5 59285711 +perft 6 1461178281 + +id gentest-1241 +epd 4kbr1/1b1n4/3rn3/1pB1p1pp/pPpP4/P4PPN/4P2R/RNK2B2 w - - +perft 1 24 +perft 2 858 +perft 3 21993 +perft 4 777942 +perft 5 20687084 +perft 6 727736005 + +id gentest-1242 +epd 4kbr1/1b1n4/1B2n3/1p1rp1pp/pPpP4/P4PP1/4PN1R/RNK2B2 b - - +perft 1 33 +perft 2 988 +perft 3 32765 +perft 4 958150 +perft 5 32093810 +perft 6 934520182 + +id gentest-1243 +epd 4k1r1/1b1n4/1B2n3/1p1r2pp/pbpp4/P3PPP1/5N1R/RNK2B2 w - - +perft 1 33 +perft 2 1339 +perft 3 42693 +perft 4 1672700 +perft 5 53058277 +perft 6 2047708064 + +id gentest-1244 +epd 4k1r1/1b1n4/1B2n3/1p1r2p1/pbpp3p/P3PPPR/3N1N2/R1K2B2 b - - +perft 1 40 +perft 2 1283 +perft 3 50432 +perft 4 1612858 +perft 5 62941769 +perft 6 2023866146 + +id gentest-1245 +epd 4k1r1/1b1nb3/1B2n3/1p1r2p1/p1p4p/P3pPP1/3N1N2/R1K2B1R w - - +perft 1 34 +perft 2 1517 +perft 3 48876 +perft 4 2118963 +perft 5 67939866 +perft 6 2895512114 + +id gentest-1246 +epd 4k1r1/1b1n4/1B1bn3/1p1r2p1/p1p2P1p/P3p1P1/3N1N2/R1K2BR1 b - - +perft 1 48 +perft 2 1577 +perft 3 73423 +perft 4 2347640 +perft 5 106549923 +perft 6 3386748453 + +id gentest-1247 +epd 4k1r1/3n4/1Bb1n3/1p1r2p1/p1p2P1p/b3p1P1/2KN1N2/R4BR1 w - - +perft 1 38 +perft 2 1685 +perft 3 59818 +perft 4 2593114 +perft 5 90952924 +perft 6 3907996440 + +id gentest-1248 +epd 4k1r1/8/1Bb1n3/1pnr2p1/p1p2P1p/b3pNP1/5N2/RK3BR1 b - - +perft 1 43 +perft 2 1389 +perft 3 60542 +perft 4 1961773 +perft 5 85468488 +perft 6 2797051852 + +id gentest-1249 +epd b3k1r1/8/1B2n3/1pn1r1p1/p1p2P1N/b3p1P1/5N2/RK3BR1 w - - +perft 1 30 +perft 2 1167 +perft 3 35125 +perft 4 1381459 +perft 5 42917733 +perft 6 1694767072 + +id gentest-1250 +epd b3k1r1/6n1/1B6/1pn1N1p1/p1p2P2/b3p1P1/5N2/RK3BR1 b - - +perft 1 30 +perft 2 970 +perft 3 30292 +perft 4 987735 +perft 5 31464036 +perft 6 1045173772 + +id gentest-1251 +epd 4k1r1/6n1/1B6/2n1N1p1/ppp1bP2/b3p1P1/8/RK3BR1 w - - +perft 1 3 +perft 2 99 +perft 3 2365 +perft 4 74875 +perft 5 1998471 +perft 6 62401115 + +id gentest-1252 +epd 4k1r1/8/8/2B1Nnp1/ppp1bP2/b3p1P1/K7/R4BR1 b - - +perft 1 29 +perft 2 793 +perft 3 23441 +perft 4 670288 +perft 5 19728722 +perft 6 583424868 + +id gentest-1253 +epd 4k1r1/8/2N5/2B2np1/ppp2P2/4p1P1/Kb4b1/R4BR1 w - - +perft 1 30 +perft 2 1035 +perft 3 30320 +perft 4 999451 +perft 5 29912743 +perft 6 963319076 + +id gentest-1254 +epd 4k1r1/N7/8/6p1/pBp2P1n/4p1P1/Kb4b1/R4BR1 b - - +perft 1 33 +perft 2 911 +perft 3 29266 +perft 4 841331 +perft 5 26463521 +perft 6 789946768 + +id gentest-1255 +epd b1N1k1r1/8/8/5np1/pBp2P2/4p1P1/Kb6/R4BR1 w - - +perft 1 28 +perft 2 930 +perft 3 27332 +perft 4 885454 +perft 5 27002079 +perft 6 864342786 + +id gentest-1256 +epd b3k1r1/8/1N6/5np1/pBp2P2/4p1P1/K5B1/b5R1 b - - +perft 1 31 +perft 2 1084 +perft 3 32583 +perft 4 1084673 +perft 5 32643022 +perft 6 1051915149 + +id gentest-1257 +epd b3k3/6b1/1N4r1/5np1/pBp2P2/4p1P1/6B1/1K4R1 w - - +perft 1 34 +perft 2 1113 +perft 3 35252 +perft 4 1158966 +perft 5 35798866 +perft 6 1166408159 + +id gentest-1258 +epd b3k3/8/1N4r1/4bnp1/pBp2P2/4p1PB/8/1K1R4 b - - +perft 1 39 +perft 2 1389 +perft 3 49768 +perft 4 1650240 +perft 5 56638471 +perft 6 1797417391 + +id gentest-1259 +epd b1N1k3/8/2r5/5np1/pBp2P2/2b1p1PB/8/1K1R4 w - - +perft 1 32 +perft 2 987 +perft 3 30183 +perft 4 933071 +perft 5 27640089 +perft 6 859383916 + +id gentest-1260 +epd b1N1k3/8/2r5/5np1/2p2P2/p1B1p1PB/8/2KR4 b - - +perft 1 24 +perft 2 814 +perft 3 20328 +perft 4 632226 +perft 5 16645926 +perft 6 498434534 + +id gentest-1261 +epd b1N1k2B/8/2r5/8/2p2p1n/p3p1PB/8/2KR4 w - - +perft 1 33 +perft 2 658 +perft 3 21073 +perft 4 484521 +perft 5 15007351 +perft 6 368177392 + +id gentest-1262 +epd b1N1k3/8/2r5/4B3/2p2P1n/4p2B/p7/2KR4 b - - +perft 1 23 +perft 2 701 +perft 3 17114 +perft 4 502263 +perft 5 13121280 +perft 6 375408001 + +id gentest-1263 +epd b1N1k3/8/8/6r1/2pB1P1n/4p2B/p7/2KR4 w - - +perft 1 31 +perft 2 945 +perft 3 27611 +perft 4 790785 +perft 5 22757866 +perft 6 643113553 + +id gentest-1264 +epd b3k3/8/1N6/2r5/2p2P1n/4B2B/p7/2KR4 b - - +perft 1 29 +perft 2 876 +perft 3 23803 +perft 4 688367 +perft 5 18685863 +perft 6 536367517 + +id gentest-1265 +epd b1r1k3/8/1N6/8/2p2P1n/4B2B/1K6/n2R4 w - - +perft 1 40 +perft 2 818 +perft 3 28627 +perft 4 639894 +perft 5 21230291 +perft 6 497155186 + +id gentest-1266 +epd 2r1k3/8/1N6/8/2pB1P1n/7B/1K6/n3R2b b - - +perft 1 4 +perft 2 167 +perft 3 3503 +perft 4 130387 +perft 5 2985925 +perft 6 105417427 + +id gentest-1267 +epd 2rk4/8/1N6/4B3/2p2P1n/1n5B/1K6/4R2b w - - +perft 1 37 +perft 2 814 +perft 3 28634 +perft 4 639400 +perft 5 21713725 +perft 6 501066403 + +id gentest-1268 +epd 3k4/2r5/8/8/N1p2P1n/1n5B/1K6/4R2b b - - +perft 1 28 +perft 2 808 +perft 3 21980 +perft 4 584667 +perft 5 16137542 +perft 6 412954839 + +id gentest-1269 +epd 3k4/2r5/6n1/8/N1pn1PB1/8/1K6/4R2b w - - +perft 1 33 +perft 2 1025 +perft 3 28778 +perft 4 878377 +perft 5 23430168 +perft 6 704525738 + +id gentest-1270 +epd 3k4/3r4/6n1/5P2/N1pn2B1/8/1K6/3R3b b - - +perft 1 35 +perft 2 853 +perft 3 26825 +perft 4 647040 +perft 5 19968227 +perft 6 482013741 + +id gentest-1271 +epd 3k4/3r4/2n3n1/5P2/2p3B1/2N2b2/1K6/3R4 w - - +perft 1 31 +perft 2 929 +perft 3 25012 +perft 4 753183 +perft 5 18964053 +perft 6 563262424 + +id gentest-1272 +epd 8/3rk3/2n3n1/5P2/2p5/2N5/1K4B1/3R4 b - - +perft 1 27 +perft 2 862 +perft 3 20905 +perft 4 612262 +perft 5 14812239 +perft 6 409040225 + +id gentest-1273 +epd 3n4/3rk3/8/5P2/2p4n/2N5/6B1/1K1R4 w - - +perft 1 32 +perft 2 596 +perft 3 16109 +perft 4 343513 +perft 5 9027064 +perft 6 201230317 + +id gentest-1274 +epd 3n4/r3k3/8/5P2/2p4n/2N5/3R2B1/2K5 b - - +perft 1 22 +perft 2 695 +perft 3 14791 +perft 4 432815 +perft 5 9646576 +perft 6 267286407 + +id gentest-1275 +epd 8/3rk3/4n3/5P2/2p4n/2N5/3R4/2K2B2 w - - +perft 1 32 +perft 2 767 +perft 3 20816 +perft 4 501650 +perft 5 12732280 +perft 6 309647581 + +id gentest-1276 +epd 8/3r1k2/4n3/5P2/2p4n/2N5/6R1/1K3B2 b - - +perft 1 27 +perft 2 746 +perft 3 18714 +perft 4 483929 +perft 5 12114720 +perft 6 302659245 + +id gentest-1277 +epd 3n4/5k2/8/3r1PR1/2p4n/2N5/8/1K3B2 w - - +perft 1 26 +perft 2 535 +perft 3 12785 +perft 4 277469 +perft 5 6669853 +perft 6 148150996 + +id gentest-1278 +epd 3n4/5k2/8/3r1n1R/2p5/2NB4/8/1K6 b - - +perft 1 28 +perft 2 744 +perft 3 18284 +perft 4 484580 +perft 5 11704564 +perft 6 306512659 + +id gentest-1279 +epd 3n2k1/8/3r4/5n1R/2p5/2N5/8/1K3B2 w - - +perft 1 26 +perft 2 630 +perft 3 15685 +perft 4 377216 +perft 5 9479531 +perft 6 225897241 + +id gentest-1280 +epd 3n2k1/8/7r/5n2/2p5/2N5/2K4R/5B2 b - - +perft 1 29 +perft 2 722 +perft 3 18175 +perft 4 444384 +perft 5 10818712 +perft 6 264659401 + +id gentest-1281 +epd 6kr/1n6/8/5n2/2p5/2N5/7R/2K2B2 w - - +perft 1 32 +perft 2 625 +perft 3 17016 +perft 4 357294 +perft 5 9113877 +perft 6 206146170 + +id gentest-1282 +epd 6kr/1n4n1/8/8/2p5/2N5/6R1/1K3B2 b - - +perft 1 14 +perft 2 389 +perft 3 7095 +perft 4 186894 +perft 5 3752558 +perft 6 96418330 + +id gentest-1283 +epd 5k1r/1n6/8/7n/2B5/2N5/6R1/1K6 w - - +perft 1 37 +perft 2 470 +perft 3 15872 +perft 4 276983 +perft 5 8634407 +perft 6 171968305 + +id gentest-1284 +epd 5kr1/1n6/8/7n/8/2N5/4B3/1K6 b - - +perft 1 20 +perft 2 385 +perft 3 8527 +perft 4 161782 +perft 5 3797091 +perft 6 69382278 + +id gentest-1285 +epd 5kr1/6n1/B2n4/8/8/2N5/8/1K6 w - - +perft 1 19 +perft 2 301 +perft 3 5493 +perft 4 98244 +perft 5 1763271 +perft 6 38234289 + +id gentest-1286 +epd 4nkr1/6n1/B7/8/4N3/8/1K6/8 b - - +perft 1 9 +perft 2 207 +perft 3 3396 +perft 4 71533 +perft 5 1369848 +perft 6 27252392 + +id gentest-1287 +epd 5kr1/8/B3nn2/2N5/8/8/1K6/8 w - - +perft 1 22 +perft 2 527 +perft 3 10502 +perft 4 263997 +perft 5 5032154 +perft 6 129087596 + +id gentest-1288 +epd 3n1kr1/3N4/5n2/1B6/8/8/1K6/8 b - - +perft 1 5 +perft 2 100 +perft 3 2057 +perft 4 39236 +perft 5 877347 +perft 6 16188424 + +id gentest-1289 +epd 6r1/4kn2/5n2/1BN5/8/8/1K6/8 w - - +perft 1 25 +perft 2 755 +perft 3 16284 +perft 4 453756 +perft 5 9073957 +perft 6 241513934 + +id gentest-1290 +epd 6r1/4k3/3nNn2/8/8/8/1K2B3/8 b - - +perft 1 33 +perft 2 753 +perft 3 22056 +perft 4 456587 +perft 5 12534678 +perft 6 242412405 + +id gentest-1291 +epd 6r1/3k1n2/4Nn2/8/8/8/1K6/3B4 w - - +perft 1 23 +perft 2 642 +perft 3 12808 +perft 4 334185 +perft 5 6305566 +perft 6 159915761 + +id gentest-1292 +epd 2k2Nr1/5n2/5n2/8/8/8/1KB5/8 b - - +perft 1 26 +perft 2 495 +perft 3 12279 +perft 4 219203 +perft 5 5408679 +perft 6 93539872 + +id gentest-1293 +epd 2k1nr2/5n2/8/8/8/K7/2B5/8 w - - +perft 1 14 +perft 2 223 +perft 3 3095 +perft 4 59505 +perft 5 822291 +perft 6 17669581 + +id gentest-1294 +epd 4nr2/2k2n2/6B1/8/K7/8/8/8 b - - +perft 1 19 +perft 2 248 +perft 3 5180 +perft 4 68596 +perft 5 1566508 +perft 6 20477382 + +id gentest-1295 +epd 3knr2/8/7n/7B/K7/8/8/8 w - - +perft 1 12 +perft 2 239 +perft 3 2953 +perft 4 61791 +perft 5 783356 +perft 6 17413679 + +id gentest-1296 +epd 2k1nr2/8/7n/7B/1K6/8/8/8 b - - +perft 1 22 +perft 2 305 +perft 3 6550 +perft 4 86562 +perft 5 1917187 +perft 6 24999761 + +id gentest-1297 +epd 2k1n1r1/8/8/8/1K4n1/8/8/8 w - - +perft 1 8 +perft 2 160 +perft 3 1015 +perft 4 22909 +perft 5 141544 +perft 6 3477390 + +id gentest-1298 +epd 2k3r1/6n1/8/8/1K4n1/8/8/8 b - - +perft 1 19 +perft 2 149 +perft 3 3292 +perft 4 20343 +perft 5 492672 +perft 6 3009898 + +id gentest-1299 +epd 2k3r1/6n1/8/1K6/2n5/8/8/8 w - - +perft 1 6 +perft 2 114 +perft 3 542 +perft 4 11659 +perft 5 64486 +perft 6 1511637 + +id gentest-1300 +epd 2k3r1/6n1/1n6/1K6/8/8/8/8 b - - +perft 1 18 +perft 2 102 +perft 3 2123 +perft 4 9690 +perft 5 221409 +perft 6 1091423 + +id gentest-1301 +epd 2k3r1/6n1/1n6/8/2K5/8/8/8 w - - +perft 1 7 +perft 2 126 +perft 3 767 +perft 4 16685 +perft 5 95925 +perft 6 2305445 + +id gentest-1302 +epd 2k4r/6n1/1K6/8/8/8/8/8 b - - +perft 1 18 +perft 2 102 +perft 3 1988 +perft 4 9589 +perft 5 200287 +perft 6 1045463 + +id gentest-1303 +epd 2k5/8/8/1K3n2/8/7r/8/8 w - - +perft 1 8 +perft 2 210 +perft 3 992 +perft 4 23975 +perft 5 125135 +perft 6 3004301 + +id gentest-1304 +epd 2k5/8/K2n4/8/8/7r/8/8 b - - +perft 1 25 +perft 2 71 +perft 3 1724 +perft 4 6924 +perft 5 165315 +perft 6 637722 + +id gentest-1305 +epd 2k5/5n2/8/K7/8/5r2/8/8 w - - +perft 1 5 +perft 2 112 +perft 3 544 +perft 4 12632 +perft 5 60549 +perft 6 1409124 + +id gentest-1306 +epd 2k5/5n2/8/8/2K5/3r4/8/8 b - - +perft 1 25 +perft 2 110 +perft 3 2461 +perft 4 13954 +perft 5 310830 +perft 6 1595055 + +id gentest-1307 +epd 2k4n/8/8/8/1K6/7r/8/8 w - - +perft 1 5 +perft 2 100 +perft 3 540 +perft 4 11082 +perft 5 59601 +perft 6 1245872 + +id gentest-1308 +epd 2k4n/8/8/8/2K5/8/8/7r b - - +perft 1 20 +perft 2 144 +perft 3 3055 +perft 4 20305 +perft 5 436142 +perft 6 2582304 + +id gentest-1309 +epd 2k4n/8/8/1K6/8/8/8/6r1 w - - +perft 1 8 +perft 2 162 +perft 3 890 +perft 4 18458 +perft 5 106332 +perft 6 2249528 + +id gentest-1310 +epd 2k5/5n2/8/1K6/8/8/8/6r1 b - - +perft 1 25 +perft 2 174 +perft 3 4089 +perft 4 20962 +perft 5 493956 +perft 6 2691085 + +id gentest-1311 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-1312 +epd rnbqkb1r/pppppppp/5n2/8/4P3/2P5/PP1P1PPP/RNBQKBNR b KQkq - +perft 1 22 +perft 2 679 +perft 3 16065 +perft 4 501702 +perft 5 12689916 +perft 6 404129911 + +id gentest-1313 +epd r1bqkb1r/pppppp1p/2n2np1/8/4P3/2P5/PP1PKPPP/RNBQ1BNR w kq - +perft 1 25 +perft 2 624 +perft 3 16142 +perft 4 432079 +perft 5 11777431 +perft 6 332748109 + +id gentest-1314 +epd r1bqkb1r/pppppp1p/2n2n2/6p1/4P3/2PP1K2/PP3PPP/RNBQ1BNR b kq - +perft 1 25 +perft 2 650 +perft 3 17414 +perft 4 472741 +perft 5 13321499 +perft 6 372861414 + +id gentest-1315 +epd r1bqkb1r/pppppp1p/2n5/6p1/4PB2/2PP1Kn1/PP3PPP/RN1Q1BNR w kq - +perft 1 34 +perft 2 952 +perft 3 28481 +perft 4 813248 +perft 5 24107615 +perft 6 707854547 + +id gentest-1316 +epd r1bqkb1r/pppppp1p/2n5/6B1/4P3/2PP1K2/PP3PPP/RN1Q1BNn b kq - +perft 1 23 +perft 2 740 +perft 3 18853 +perft 4 599565 +perft 5 16521361 +perft 6 518815967 + +id gentest-1317 +epd r1b1kb1r/ppp1pp1p/2nq4/3p2B1/2P1P3/3P1K2/PP3PPP/RN1Q1BNn w kq - +perft 1 36 +perft 2 1592 +perft 3 48683 +perft 4 2059860 +perft 5 63278636 +perft 6 2633450368 + +id gentest-1318 +epd r1b1kb1r/ppp1p2p/2nq4/3p1pB1/2P1P2P/3P1K2/PP1N1PP1/R2Q1BNn b kq - +perft 1 43 +perft 2 1268 +perft 3 51406 +perft 4 1537442 +perft 5 61070755 +perft 6 1854801758 + +id gentest-1319 +epd r1bqkb1r/ppp1p2p/2n5/3p1PB1/2P4P/3P1K2/PP1N1nP1/R2Q1BN1 w kq - +perft 1 36 +perft 2 1142 +perft 3 38880 +perft 4 1280062 +perft 5 43385701 +perft 6 1480509115 + +id gentest-1320 +epd r1bqkb1r/1pp1p2p/p1n5/3p1PB1/2P4P/1N1P1K2/PP2BnP1/R2Q2N1 b kq - +perft 1 33 +perft 2 1083 +perft 3 36667 +perft 4 1202592 +perft 5 41778587 +perft 6 1378964468 + +id gentest-1321 +epd r1b1kb1r/1ppqp2p/p1n5/5PBP/2Pp4/1N1P1K2/PP2BnP1/R2Q2N1 w kq - +perft 1 33 +perft 2 989 +perft 3 29842 +perft 4 940278 +perft 5 28520335 +perft 6 941841488 + +id gentest-1322 +epd 2b1kb1r/rppqp2p/p1n5/5P1P/2Pp4/1N1P1KB1/PP2BnP1/R2Q2N1 b k - +perft 1 28 +perft 2 738 +perft 3 22218 +perft 4 619339 +perft 5 19793987 +perft 6 573594693 + +id gentest-1323 +epd 2b1kb1r/r1p1p2p/p1n5/1p3q1P/2Pp1B2/1N1P1K2/PP2BnP1/R2Q2N1 w k - +perft 1 24 +perft 2 1023 +perft 3 23199 +perft 4 969675 +perft 5 24434635 +perft 6 1003470116 + +id gentest-1324 +epd 2b1kb1r/r1p4p/p1n1p3/1p3qPP/2Pp1B2/1N1P1K2/PP2Bn2/R2Q2N1 b k - +perft 1 45 +perft 2 947 +perft 3 41393 +perft 4 992882 +perft 5 42266679 +perft 6 1117141671 + +id gentest-1325 +epd 2b1kb1r/r1p4p/p1n1p3/1p3qPP/2Pp1B2/1N1P2K1/PP2Bn2/R2Q2N1 w k - +perft 1 35 +perft 2 1564 +perft 3 46787 +perft 4 2035873 +perft 5 62824629 +perft 6 2675689885 + +id gentest-1326 +epd 2b1kb1r/r1p4p/p1n1p3/1p4PP/2Pp1K2/PN1P4/1P2Bn2/R2Q2N1 b k - +perft 1 33 +perft 2 776 +perft 3 24907 +perft 4 624682 +perft 5 19728303 +perft 6 521059114 + +id gentest-1327 +epd 2b2b1r/r1p1k2p/p1n1p3/1p4PP/2Pp1K2/PN1n4/1P2B3/RQ4N1 w - - +perft 1 6 +perft 2 164 +perft 3 4731 +perft 4 129823 +perft 5 3955087 +perft 6 109278621 + +id gentest-1328 +epd 2b2b1r/r1p4p/p1nkp3/1p4PP/2Pp4/PN1Q1K2/1P2B3/R5N1 b - - +perft 1 22 +perft 2 757 +perft 3 16648 +perft 4 579260 +perft 5 13161795 +perft 6 464269445 + +id gentest-1329 +epd 2b2b1r/r1pk3p/p1n3Q1/1p2p1PP/2Pp4/PN3K2/1P2B3/R5N1 w - - +perft 1 39 +perft 2 785 +perft 3 29139 +perft 4 614526 +perft 5 22128965 +perft 6 490042195 + +id gentest-1330 +epd 2b2b1r/r1pk3p/p5Q1/np2p1PP/2Pp4/PN3K2/RP6/5BN1 b - - +perft 1 25 +perft 2 898 +perft 3 18443 +perft 4 625638 +perft 5 13707047 +perft 6 450309618 + +id gentest-1331 +epd 2b2b1r/1r1k3p/p5Q1/npp1p1PP/2Pp4/PN3K2/RP2B3/6N1 w - - +perft 1 36 +perft 2 612 +perft 3 20071 +perft 4 400053 +perft 5 12652808 +perft 6 279681478 + +id gentest-1332 +epd 2b4r/1r1kb2p/p1Q5/npp1p1PP/2Pp4/PN3K2/RP2B3/6N1 b - - +perft 1 3 +perft 2 74 +perft 3 1789 +perft 4 44044 +perft 5 1137828 +perft 6 29655138 + +id gentest-1333 +epd 3k3r/1r2b2p/p7/npp1p1PP/2PpQ1b1/PN3K2/RP2B3/6N1 w - - +perft 1 5 +perft 2 138 +perft 3 5004 +perft 4 140614 +perft 5 5032489 +perft 6 145420340 + +id gentest-1334 +epd 3k3r/1r5p/p4b2/npp1p1PP/2Pp4/PN3K1Q/RP2B3/6N1 b - - +perft 1 25 +perft 2 740 +perft 3 18241 +perft 4 547396 +perft 5 13944838 +perft 6 430429793 + +id gentest-1335 +epd 7r/1rk4p/p7/npp1p1bP/2Pp4/PN3K2/RP2B1Q1/6N1 w - - +perft 1 26 +perft 2 857 +perft 3 23431 +perft 4 732594 +perft 5 21402000 +perft 6 655862621 + +id gentest-1336 +epd 3k3r/1r5p/p6P/npp1p1b1/2Pp4/PN3K2/RP2B3/6NQ b - - +perft 1 31 +perft 2 648 +perft 3 19685 +perft 4 481420 +perft 5 14295450 +perft 6 385973914 + +id gentest-1337 +epd 3kr3/1r5p/p6P/npp1p3/2Pp1b2/P4K2/RP2B3/N5NQ w - - +perft 1 19 +perft 2 562 +perft 3 12668 +perft 4 380839 +perft 5 9478526 +perft 6 285162647 + +id gentest-1338 +epd 3kr3/1r5p/p6P/npp1p3/2PpK3/P3b3/RP6/N4BNQ b - - +perft 1 30 +perft 2 686 +perft 3 20574 +perft 4 516546 +perft 5 15579603 +perft 6 421132833 + +id gentest-1339 +epd 3kr3/6rp/p6P/npp1p3/2Pp4/P3bK2/RP6/N4BNQ w - - +perft 1 20 +perft 2 692 +perft 3 14654 +perft 4 473317 +perft 5 11292722 +perft 6 353089463 + +id gentest-1340 +epd 3kr3/4r2p/p6P/npp1p3/2Pp2K1/P3b3/RP2N3/N4B1Q b - - +perft 1 28 +perft 2 825 +perft 3 22622 +perft 4 656277 +perft 5 18551760 +perft 6 547935303 + +id gentest-1341 +epd 3kr3/3r3p/p6P/npp1p3/2Pp2K1/P6Q/RP2Nb2/N4B2 w - - +perft 1 28 +perft 2 793 +perft 3 21955 +perft 4 626986 +perft 5 18007859 +perft 6 518182314 + +id gentest-1342 +epd 3kr3/3r3p/p6P/npp1p3/1PPp2K1/P6Q/2R1N3/N4Bb1 b - - +perft 1 27 +perft 2 843 +perft 3 23082 +perft 4 747156 +perft 5 20845869 +perft 6 692757836 + +id gentest-1343 +epd 3k1r2/3r3p/p6P/1pp1p1K1/1Pnp4/P6Q/2R1N3/N4Bb1 w - - +perft 1 34 +perft 2 1176 +perft 3 36588 +perft 4 1210914 +perft 5 38768193 +perft 6 1240692212 + +id gentest-1344 +epd 5r2/3rk2p/p6P/1pp1p1K1/1PnN4/P6Q/R7/N4Bb1 b - - +perft 1 41 +perft 2 1530 +perft 3 52977 +perft 4 1891827 +perft 5 62847311 +perft 6 2200230647 + +id gentest-1345 +epd 4kr2/3r3p/p6P/1pp1p1K1/1Pnb4/P7/R5Q1/N4B2 w - - +perft 1 32 +perft 2 1122 +perft 3 32923 +perft 4 1107225 +perft 5 33372157 +perft 6 1094549090 + +id gentest-1346 +epd 4kr2/3r3p/7P/ppp1p1K1/1Pnb4/P7/6R1/N4B1Q b - - +perft 1 37 +perft 2 853 +perft 3 30432 +perft 4 818571 +perft 5 28274450 +perft 6 818905213 + +id gentest-1347 +epd 4kr2/4r2p/7P/ppp5/1Pnbp1K1/P7/6R1/N4B1Q w - - +perft 1 27 +perft 2 1059 +perft 3 27859 +perft 4 1046851 +perft 5 29165803 +perft 6 1057727363 + +id gentest-1348 +epd 4kr2/4r2p/7P/ppp5/1Pn1p3/P1b3K1/3R4/N4B1Q b - - +perft 1 38 +perft 2 1237 +perft 3 43561 +perft 4 1330219 +perft 5 45878370 +perft 6 1387837537 + +id gentest-1349 +epd 4kr2/7p/7P/ppp5/1Pn1p1r1/P1b5/3R3K/N4B1Q w - - +perft 1 28 +perft 2 1055 +perft 3 26276 +perft 4 961970 +perft 5 25188035 +perft 6 897165799 + +id gentest-1350 +epd 4k3/5r1p/7P/pppR4/1Pn1p1r1/P1b5/2N4K/5B1Q b - - +perft 1 45 +perft 2 1195 +perft 3 45510 +perft 4 1252930 +perft 5 45723844 +perft 6 1320562816 + +id gentest-1351 +epd 4k3/5r1p/7P/pppR3r/1Pn1p3/P1b4K/2N5/5B1Q w - - +perft 1 4 +perft 2 173 +perft 3 4777 +perft 4 175507 +perft 5 5062105 +perft 6 175178946 + +id gentest-1352 +epd 4k3/7p/5r1P/pppR3r/1Pn1Q3/P1b3K1/2N5/5B2 b - - +perft 1 6 +perft 2 222 +perft 3 7534 +perft 4 274078 +perft 5 8916463 +perft 6 315823208 + +id gentest-1353 +epd 5k2/7Q/5r1P/pppR3r/1P6/P1b1n1K1/2N5/5B2 w - - +perft 1 38 +perft 2 1303 +perft 3 40814 +perft 4 1312103 +perft 5 42722425 +perft 6 1320940640 + +id gentest-1354 +epd 5k2/7Q/3R1r1P/1pp4r/1p6/P1b1n1KB/2N5/8 b - - +perft 1 35 +perft 2 1087 +perft 3 31477 +perft 4 1014830 +perft 5 29413095 +perft 6 967258132 + +id gentest-1355 +epd 5k2/2Q5/3R3P/1pp2r1r/1p6/P1b3KB/2N3n1/8 w - - +perft 1 41 +perft 2 1024 +perft 3 34895 +perft 4 887331 +perft 5 30903906 +perft 6 802264452 + +id gentest-1356 +epd 5k2/4Q3/3R3P/1pp2r1r/8/Ppb3KB/2N3n1/8 b - - +perft 1 2 +perft 2 71 +perft 3 2052 +perft 4 62588 +perft 5 1794567 +perft 6 56488942 + +id gentest-1357 +epd 5rk1/8/3R3P/1pp1Q2r/8/Ppb3KB/2N3n1/8 w - - +perft 1 47 +perft 2 1403 +perft 3 56807 +perft 4 1664295 +perft 5 65510215 +perft 6 1912228055 + +id gentest-1358 +epd 5rk1/8/7P/1p2Q2r/3N4/Ppb3KB/6n1/8 b - - +perft 1 33 +perft 2 1117 +perft 3 30149 +perft 4 987775 +perft 5 27570202 +perft 6 877033918 + +id gentest-1359 +epd 5rk1/8/3r4/1p6/3NQ3/Ppb3KB/6n1/8 w - - +perft 1 40 +perft 2 1344 +perft 3 46282 +perft 4 1530710 +perft 5 50155607 +perft 6 1640991711 + +id gentest-1360 +epd 5r1k/8/3rB3/1p6/3NQ3/Ppb5/6K1/8 b - - +perft 1 31 +perft 2 1183 +perft 3 33807 +perft 4 1266527 +perft 5 36116814 +perft 6 1298711110 + +id gentest-1361 +epd 5r2/6k1/3rB3/1p6/3N3Q/Pp6/1b4K1/8 w - - +perft 1 40 +perft 2 987 +perft 3 36849 +perft 4 953873 +perft 5 33892842 +perft 6 911858331 + +id gentest-1362 +epd 8/6k1/3rBr2/Pp6/3N3Q/1p6/1b4K1/8 b - - +perft 1 26 +perft 2 908 +perft 3 20960 +perft 4 712596 +perft 5 17843574 +perft 6 587890984 + +id gentest-1363 +epd 5k2/8/2r1Br2/Pp6/3N4/1p4Q1/1b4K1/8 w - - +perft 1 42 +perft 2 1060 +perft 3 38041 +perft 4 996194 +perft 5 34009949 +perft 6 911735431 + +id gentest-1364 +epd 8/4k3/2r1Br2/Pp4Q1/3N4/1p5K/1b6/8 b - - +perft 1 21 +perft 2 828 +perft 3 18802 +perft 4 659156 +perft 5 16217176 +perft 6 540181698 + +id gentest-1365 +epd 3k4/8/4rr2/Pp5Q/3N4/1p5K/1b6/8 w - - +perft 1 31 +perft 2 766 +perft 3 20929 +perft 4 558041 +perft 5 14934017 +perft 6 409202894 + +id gentest-1366 +epd 3k4/8/2N2r1Q/Pp6/8/1p5K/1b2r3/8 b - - +perft 1 5 +perft 2 116 +perft 3 3315 +perft 4 78127 +perft 5 2228902 +perft 6 53543807 + +id gentest-1367 +epd 8/2k2r2/2N5/Pp6/7Q/1p5K/1b2r3/8 w - - +perft 1 28 +perft 2 879 +perft 3 21542 +perft 4 659384 +perft 5 16204355 +perft 6 482071040 + +id gentest-1368 +epd 3Q4/1k2Nr2/8/Pp6/8/1p5K/1b2r3/8 b - - +perft 1 33 +perft 2 749 +perft 3 18692 +perft 4 450571 +perft 5 12306339 +perft 6 300679948 + +id gentest-1369 +epd 8/1k2Nr2/3Q4/Pp6/4r3/1p5K/1b6/8 w - - +perft 1 33 +perft 2 917 +perft 3 24140 +perft 4 694880 +perft 5 17691428 +perft 6 515775797 + +id gentest-1370 +epd 8/1k2N3/P3Q3/1p3r2/4r3/1p5K/1b6/8 b - - +perft 1 4 +perft 2 103 +perft 3 2802 +perft 4 68646 +perft 5 1831577 +perft 6 45358321 + +id gentest-1371 +epd k7/4N3/P2Q4/1pr5/4r3/1p5K/1b6/8 w - - +perft 1 30 +perft 2 916 +perft 3 23991 +perft 4 686469 +perft 5 17622928 +perft 6 501195258 + +id gentest-1372 +epd 1kN5/8/P7/1pr5/4r3/1p5K/1b6/8 b - - +perft 1 39 +perft 2 286 +perft 3 9389 +perft 4 83602 +perft 5 2671289 +perft 6 24777399 + +id gentest-1373 +epd 1k6/2r5/P2N4/1p6/4r3/1p5K/8/2b5 w - - +perft 1 12 +perft 2 406 +perft 3 4261 +perft 4 138298 +perft 5 1460739 +perft 6 46319109 + +id gentest-1374 +epd 1k6/8/P1r5/1p3N2/4r3/1p6/6K1/2b5 b - - +perft 1 40 +perft 2 614 +perft 3 21907 +perft 4 266361 +perft 5 9050154 +perft 6 98077181 + +id gentest-1375 +epd 1k6/6N1/Pr6/1p4b1/4r3/1p6/6K1/8 w - - +perft 1 13 +perft 2 442 +perft 3 4515 +perft 4 146431 +perft 5 1513310 +perft 6 48534407 + +id gentest-1376 +epd 1k6/6N1/Pr6/1p6/4rb2/1p6/8/6K1 b - - +perft 1 35 +perft 2 292 +perft 3 9290 +perft 4 84440 +perft 5 2692234 +perft 6 25871187 + +id gentest-1377 +epd 1k6/6N1/Pr6/1p6/2r5/1p6/6Kb/8 w - - +perft 1 11 +perft 2 334 +perft 3 3241 +perft 4 96213 +perft 5 967819 +perft 6 28836173 + +id gentest-1378 +epd 1k6/8/P1r5/1p6/2r5/1p4N1/6Kb/8 b - - +perft 1 29 +perft 2 335 +perft 3 10310 +perft 4 100487 +perft 5 3172552 +perft 6 30653158 + +id gentest-1379 +epd 8/2k5/P1r5/1p6/8/1p6/2r1N1Kb/8 w - - +perft 1 7 +perft 2 212 +perft 3 1862 +perft 4 58613 +perft 5 554909 +perft 6 17340732 + +id gentest-1380 +epd 8/2k5/P5r1/1p6/8/1p4N1/2r4b/7K b - - +perft 1 34 +perft 2 201 +perft 3 7217 +perft 4 52272 +perft 5 1767219 +perft 6 14459701 + +id gentest-1381 +epd 8/P1k5/8/1p6/8/6r1/1pr4b/7K w - - +perft 1 4 +perft 2 108 +perft 3 1179 +perft 4 34172 +perft 5 436594 +perft 6 12950826 + +id gentest-1382 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-1383 +epd rnbqkbnr/pppppp1p/6p1/2P5/8/8/PP1PPPPP/RNBQKBNR b KQkq - +perft 1 20 +perft 2 442 +perft 3 9811 +perft 4 248473 +perft 5 6038154 +perft 6 169186117 + +id gentest-1384 +epd rnbqkb1r/1ppppp1p/6pn/p1P5/6P1/8/PP1PPP1P/RNBQKBNR w KQkq - +perft 1 23 +perft 2 457 +perft 3 11886 +perft 4 270161 +perft 5 7696588 +perft 6 193001780 + +id gentest-1385 +epd rnbqkb1r/2pppp1p/1P4pn/p7/6P1/5N2/PP1PPP1P/RNBQKB1R b KQkq - +perft 1 22 +perft 2 567 +perft 3 13851 +perft 4 398168 +perft 5 10614775 +perft 6 330150524 + +id gentest-1386 +epd rnbqkb1r/3pp2p/1Pp2ppn/p7/6P1/5N2/PPQPPP1P/RNB1KB1R w KQkq - +perft 1 34 +perft 2 720 +perft 3 25567 +perft 4 613437 +perft 5 22375784 +perft 6 586828492 + +id gentest-1387 +epd rn1qkb1r/1b1pp2p/1PQ2ppn/p7/1P4P1/5N2/P2PPP1P/RNB1KB1R b KQkq - +perft 1 24 +perft 2 894 +perft 3 23506 +perft 4 871466 +perft 5 25027657 +perft 6 927330739 + +id gentest-1388 +epd rn1qkb1r/3pp2p/bPQ3pn/p4pP1/1P6/5N2/P2PPP1P/RNB1KB1R w KQkq - +perft 1 41 +perft 2 889 +perft 3 34597 +perft 4 861183 +perft 5 32791389 +perft 6 904301020 + +id gentest-1389 +epd rn1qkb1r/1b1pp2p/1PQ3pn/p4pP1/1P1P3P/5N2/P3PP2/RNB1KB1R b KQkq - +perft 1 22 +perft 2 919 +perft 3 22550 +perft 4 892418 +perft 5 24439882 +perft 6 940901546 + +id gentest-1390 +epd rn2kb1r/1b1p3p/1PQ1p1pn/p4pq1/1P1PP2P/5N2/P4P2/RNB1KB1R w KQkq - +perft 1 48 +perft 2 1678 +perft 3 70535 +perft 4 2476476 +perft 5 102996946 +perft 6 3655148900 + +id gentest-1391 +epd rn2k2r/1b1p2bp/1PQ1p1Pn/p4pq1/1P1PP3/5N2/P4P2/RNB1KB1R b KQkq - +perft 1 41 +perft 2 1924 +perft 3 73005 +perft 4 3344835 +perft 5 126264209 +perft 6 5654822517 + +id gentest-1392 +epd 1n2k2r/rb1p2bp/1PQ1p1Pn/p2P1p2/1P2P3/5Nq1/P4P2/RNB1KB1R w KQk - +perft 1 56 +perft 2 2414 +perft 3 121299 +perft 4 5060975 +perft 5 241773574 +perft 6 9879139633 + +id gentest-1393 +epd 1n2k2r/rb1p2bp/1PQPp1Pn/5p2/pP2P3/5Nq1/P3KP2/RNB2B1R b k - +perft 1 43 +perft 2 1898 +perft 3 76592 +perft 4 3181227 +perft 5 125757170 +perft 6 5073769472 + +id gentest-1394 +epd 1n2k3/rb1p2br/1PQPp1pn/5p2/pP2P3/5NP1/P3K3/RNB2B1R w - - +perft 1 49 +perft 2 1388 +perft 3 63331 +perft 4 1861996 +perft 5 82586913 +perft 6 2487075154 + +id gentest-1395 +epd 4k3/rb1p2br/nPQPp1pn/5p2/pP2PB2/5NP1/P3K3/RN3BR1 b - - +perft 1 28 +perft 2 1193 +perft 3 33877 +perft 4 1415562 +perft 5 41886707 +perft 6 1733700970 + +id gentest-1396 +epd 4k3/rb1p3r/nPQPp1p1/5P2/pP3Bn1/5NP1/P3K3/bN3BR1 w - - +perft 1 43 +perft 2 1603 +perft 3 66905 +perft 4 2398184 +perft 5 98350854 +perft 6 3456963539 + +id gentest-1397 +epd 2b1k3/r2p3r/nP1Pp1p1/5P2/pP3Bn1/3K1NP1/P7/bN3BR1 b - - +perft 1 39 +perft 2 1161 +perft 3 42033 +perft 4 1244777 +perft 5 43002065 +perft 6 1290217639 + +id gentest-1398 +epd 2b1k3/r1np3r/1P1P2p1/5p2/pP3Bn1/3K1NP1/P7/bN3B1R w - - +perft 1 37 +perft 2 1378 +perft 3 45097 +perft 4 1587268 +perft 5 50942868 +perft 6 1734435797 + +id gentest-1399 +epd 2b1k3/r1np3r/1P1P4/4Npp1/pP3Bn1/P2K2P1/8/bN3B1R b - - +perft 1 34 +perft 2 961 +perft 3 31578 +perft 4 908552 +perft 5 29369347 +perft 6 855195015 + +id gentest-1400 +epd 2b1k3/r1np4/1P1P3n/4Npp1/pP6/P2KB1P1/7r/bN3B1R w - - +perft 1 29 +perft 2 933 +perft 3 26642 +perft 4 833139 +perft 5 24298532 +perft 6 752087883 + +id gentest-1401 +epd 2b1k3/r1np4/1P1P3n/4N1p1/pP3p2/P2KB1P1/3N2Br/b6R b - - +perft 1 30 +perft 2 1263 +perft 3 39247 +perft 4 1533662 +perft 5 48740318 +perft 6 1807314403 + +id gentest-1402 +epd 2b5/r1nN1k2/1P1P4/6p1/pP3pn1/P2KB1P1/3N2Br/b6R w - - +perft 1 42 +perft 2 1632 +perft 3 60994 +perft 4 2353206 +perft 5 85237115 +perft 6 3245599090 + +id gentest-1403 +epd 2b5/r1nN1kb1/1P1P4/1P4p1/p3Kpn1/P3B1P1/3N2Br/7R b - - +perft 1 42 +perft 2 1330 +perft 3 52391 +perft 4 1642322 +perft 5 62680660 +perft 6 1948561184 + +id gentest-1404 +epd 2b3k1/r1nN2b1/1P1P4/1P4p1/p3Kp2/P3n1PB/3N3r/7R w - - +perft 1 31 +perft 2 1244 +perft 3 36555 +perft 4 1440992 +perft 5 41265364 +perft 6 1600025685 + +id gentest-1405 +epd 2b3k1/r1nN4/1P1P4/1P2b1p1/p4p2/P2Kn1P1/3N2Br/7R b - - +perft 1 44 +perft 2 1517 +perft 3 62070 +perft 4 2019427 +perft 5 81164552 +perft 6 2558638757 + +id gentest-1406 +epd 2b3k1/r1nN4/1P1P4/1P1nb1p1/p4p2/P2K2P1/3N2r1/5R2 w - - +perft 1 29 +perft 2 1109 +perft 3 29136 +perft 4 1119312 +perft 5 28669196 +perft 6 1100324599 + +id gentest-1407 +epd 2b3k1/r1nN4/1P1P4/NP1n2p1/p4p2/P1bK2P1/6r1/5R2 b - - +perft 1 44 +perft 2 1094 +perft 3 45385 +perft 4 1123101 +perft 5 45655261 +perft 6 1120033587 + +id gentest-1408 +epd 2b5/r1n3k1/1P1P1N2/NP1n2p1/p4p2/P1bK2P1/2r5/5R2 w - - +perft 1 32 +perft 2 1385 +perft 3 38455 +perft 4 1641134 +perft 5 43474986 +perft 6 1812169317 + +id gentest-1409 +epd 2b5/r1n3k1/1P1P4/NP1n2p1/p3KpN1/P5P1/2rb4/5R2 b - - +perft 1 42 +perft 2 1122 +perft 3 46838 +perft 4 1201455 +perft 5 49221791 +perft 6 1241861523 + +id gentest-1410 +epd 2b5/r5k1/1n1P4/NP1n2p1/p3KPN1/P7/2rb4/5R2 w - - +perft 1 26 +perft 2 1193 +perft 3 27997 +perft 4 1223913 +perft 5 28524782 +perft 6 1199634287 + +id gentest-1411 +epd 2b5/r5k1/1n1P4/NP1n1Pp1/p3K1N1/P7/2r5/2R1b3 b - - +perft 1 48 +perft 2 973 +perft 3 41312 +perft 4 879086 +perft 5 35338849 +perft 6 772478838 + +id gentest-1412 +epd 2b5/r3nk2/1n1P4/NP3Pp1/p3K3/P7/2r2N2/2R1b3 w - - +perft 1 22 +perft 2 915 +perft 3 19286 +perft 4 752939 +perft 5 16216458 +perft 6 608173441 + +id gentest-1413 +epd 2b3n1/r4k2/1n1P4/NP3Pp1/p7/P3K3/2r2N2/2R1b3 b - - +perft 1 40 +perft 2 750 +perft 3 28863 +perft 4 568056 +perft 5 21016105 +perft 6 430680874 + +id gentest-1414 +epd 2b2kn1/r7/1n1P4/NP3Pp1/p5N1/P3K3/1r6/2R1b3 w - - +perft 1 26 +perft 2 1041 +perft 3 23064 +perft 4 869157 +perft 5 19253129 +perft 6 702643921 + +id gentest-1415 +epd 2b2kn1/r7/1n1P1N2/1P3P2/p5p1/PN2K3/1r6/2R1b3 b - - +perft 1 42 +perft 2 1035 +perft 3 37608 +perft 4 903418 +perft 5 32345185 +perft 6 757320098 + +id gentest-1416 +epd 2b2kn1/8/1n1P1N2/1Pr2P2/p5p1/PNR1K3/1r6/4b3 w - - +perft 1 24 +perft 2 836 +perft 3 17139 +perft 4 604727 +perft 5 12541540 +perft 6 443971804 + +id gentest-1417 +epd 2b3n1/3N1k2/1n1P4/1PN2P2/p5p1/P1R1K3/1r6/4b3 b - - +perft 1 29 +perft 2 530 +perft 3 15076 +perft 4 298523 +perft 5 8663001 +perft 6 178221352 + +id gentest-1418 +epd 2b5/3N1k2/1n1P1n2/1PN2P2/p5p1/P1RK4/r7/4b3 w - - +perft 1 17 +perft 2 520 +perft 3 10095 +perft 4 307925 +perft 5 6268262 +perft 6 189422115 + +id gentest-1419 +epd 8/3b1k2/1N1P1n2/1P3P2/p3N1p1/P1RK4/r7/4b3 b - - +perft 1 31 +perft 2 661 +perft 3 18792 +perft 4 402622 +perft 5 11236480 +perft 6 242991886 + +id gentest-1420 +epd 8/6k1/1N1P1n2/1b3P2/p3N1p1/P1R1K3/r7/4b3 w - - +perft 1 24 +perft 2 810 +perft 3 17295 +perft 4 548411 +perft 5 11788213 +perft 6 358694024 + +id gentest-1421 +epd 8/3n2k1/3P4/1b3P2/p1N1N1p1/P3K3/r1R5/4b3 b - - +perft 1 27 +perft 2 636 +perft 3 17098 +perft 4 378166 +perft 5 10244357 +perft 6 223066814 + +id gentest-1422 +epd 8/6k1/3P1n2/5P2/p1b1N1p1/P3K3/r1RN4/4b3 w - - +perft 1 19 +perft 2 590 +perft 3 12290 +perft 4 352809 +perft 5 7700481 +perft 6 214939569 + +id gentest-1423 +epd 6n1/6k1/3P4/5P2/p1R1N1p1/P2K4/r2N4/4b3 b - - +perft 1 18 +perft 2 418 +perft 3 7787 +perft 4 187467 +perft 5 3742631 +perft 6 90489155 + +id gentest-1424 +epd 5kn1/8/3P4/5P2/p1R1N1pb/P2K4/r7/5N2 w - - +perft 1 26 +perft 2 544 +perft 3 13161 +perft 4 271652 +perft 5 6567870 +perft 6 137840723 + +id gentest-1425 +epd 5kn1/8/3P4/5P2/p1R3pb/P1NK2N1/5r2/8 b - - +perft 1 22 +perft 2 566 +perft 3 12132 +perft 4 307334 +perft 5 6661806 +perft 6 164619055 + +id gentest-1426 +epd 4k1n1/8/3P4/1N3P2/p1R3pb/P2K2N1/8/5r2 w - - +perft 1 31 +perft 2 637 +perft 3 16451 +perft 4 340154 +perft 5 8258533 +perft 6 172968559 + +id gentest-1427 +epd 4k1n1/N3b3/3P4/5P2/p1R3p1/P2K4/4N3/5r2 b - - +perft 1 24 +perft 2 670 +perft 3 14872 +perft 4 379813 +perft 5 8397646 +perft 6 205324209 + +id gentest-1428 +epd 4k1n1/N7/3P4/5P2/p1R2bp1/P2K2N1/8/5r2 w - - +perft 1 27 +perft 2 578 +perft 3 13677 +perft 4 308860 +perft 5 7098019 +perft 6 162077682 + +id gentest-1429 +epd 4k1n1/8/2Nb4/5P2/p5p1/P2K2N1/8/2R2r2 b - - +perft 1 25 +perft 2 699 +perft 3 17076 +perft 4 440166 +perft 5 10691703 +perft 6 261403971 + +id gentest-1430 +epd 4k1n1/8/2Nb4/5P2/p5p1/P2K2N1/2R5/5r2 w - - +perft 1 32 +perft 2 844 +perft 3 23268 +perft 4 593062 +perft 5 15194401 +perft 6 379700157 + +id gentest-1431 +epd 4k1n1/8/2Nb4/5P2/p1K3p1/P5N1/6R1/1r6 b - - +perft 1 30 +perft 2 735 +perft 3 20149 +perft 4 489926 +perft 5 12882581 +perft 6 308977493 + +id gentest-1432 +epd 4k1n1/8/2Nb4/5P2/p1K3p1/P5N1/1R3r2/8 w - - +perft 1 31 +perft 2 772 +perft 3 20446 +perft 4 500671 +perft 5 12507591 +perft 6 304598578 + +id gentest-1433 +epd 4k1n1/8/2N5/1K3P2/pb4p1/P7/1R3r2/5N2 b - - +perft 1 26 +perft 2 656 +perft 3 15841 +perft 4 382246 +perft 5 9136008 +perft 6 216500763 + +id gentest-1434 +epd 4k1n1/8/2N5/1K3P2/1P4p1/p7/1r6/5N2 w - - +perft 1 18 +perft 2 329 +perft 3 5472 +perft 4 103664 +perft 5 1693159 +perft 6 32862274 + +id gentest-1435 +epd 4k1n1/8/8/1K3P2/1P4p1/pN6/5r2/5N2 b - - +perft 1 21 +perft 2 355 +perft 3 7339 +perft 4 116770 +perft 5 2409665 +perft 6 37987725 + +id gentest-1436 +epd 5kn1/8/2K5/5P2/1P4p1/pN3r2/8/5N2 w - - +perft 1 20 +perft 2 371 +perft 3 6324 +perft 4 121231 +perft 5 1982402 +perft 6 39147627 + +id gentest-1437 +epd 3K1kn1/8/8/5P2/1P4p1/pNr5/8/5N2 b - - +perft 1 20 +perft 2 243 +perft 3 4686 +perft 4 58300 +perft 5 1119319 +perft 6 14869829 + +id gentest-1438 +epd 3K1k2/8/5n2/8/1P4p1/1Nr5/p7/5N2 w - - +perft 1 11 +perft 2 302 +perft 3 3315 +perft 4 85879 +perft 5 1046502 +perft 6 27169357 + +id gentest-1439 +epd 3K1k2/8/8/8/1P2n1p1/2r5/p1N5/5N2 b - - +perft 1 28 +perft 2 304 +perft 3 8265 +perft 4 97437 +perft 5 2652713 +perft 6 33935206 + +id gentest-1440 +epd 3K1k2/8/8/8/1P2n1p1/6r1/8/N4N2 w - - +perft 1 10 +perft 2 181 +perft 3 2082 +perft 4 41659 +perft 5 519321 +perft 6 10776074 + +id gentest-1441 +epd 3K1k2/8/8/8/1P2n1p1/4Nr2/8/5N2 b - - +perft 1 21 +perft 2 286 +perft 3 6223 +perft 4 86502 +perft 5 1907841 +perft 6 26766383 + +id gentest-1442 +epd 2K5/6k1/8/8/1P2n1p1/4N1r1/8/5N2 w - - +perft 1 16 +perft 2 324 +perft 3 5106 +perft 4 106590 +perft 5 1671491 +perft 6 35292648 + +id gentest-1443 +epd 2K5/8/6k1/8/1P2n1N1/6r1/7N/8 b - - +perft 1 23 +perft 2 273 +perft 3 6003 +perft 4 82537 +perft 5 1816374 +perft 6 25762853 + +id gentest-1444 +epd 8/1K5k/8/8/1P4N1/6r1/3n3N/8 w - - +perft 1 16 +perft 2 313 +perft 3 4791 +perft 4 96787 +perft 5 1472122 +perft 6 30284816 + +id gentest-1445 +epd 8/1K5k/8/1P6/6N1/5nr1/8/8 b - - +perft 1 16 +perft 2 232 +perft 3 4433 +perft 4 54115 +perft 5 1118886 +perft 6 12930188 + +id gentest-1446 +epd 7k/1K6/5N2/1P6/6r1/5n2/8/8 w - - +perft 1 17 +perft 2 387 +perft 3 5160 +perft 4 106972 +perft 5 1242083 +perft 6 25738134 + +id gentest-1447 +epd 1K5k/7N/8/1P6/r7/5n2/8/8 b - - +perft 1 25 +perft 2 180 +perft 3 4033 +perft 4 36973 +perft 5 779992 +perft 6 7480116 + +id gentest-1448 +epd 1Kr4k/8/5N2/1P6/8/5n2/8/8 w - - +perft 1 3 +perft 2 53 +perft 3 662 +perft 4 12350 +perft 5 134870 +perft 6 2660283 + +id gentest-1449 +epd 7k/8/2K2N2/1P6/8/5n2/8/8 b - - +perft 1 9 +perft 2 125 +perft 3 925 +perft 4 12793 +perft 5 118420 +perft 6 1534735 + +id gentest-1450 +epd 7k/1K6/5N2/1P6/8/3n4/8/8 w - - +perft 1 17 +perft 2 167 +perft 3 2238 +perft 4 20198 +perft 5 243770 +perft 6 2363757 + +id gentest-1451 +epd K6k/8/8/1PnN4/8/8/8/8 b - - +perft 1 11 +perft 2 128 +perft 3 1248 +perft 4 13198 +perft 5 135708 +perft 6 1479855 + +id gentest-1452 +epd K6k/8/8/1Pn5/5N2/8/8/8 w - - +perft 1 11 +perft 2 111 +perft 3 1138 +perft 4 10982 +perft 5 113292 +perft 6 1153793 + +id gentest-1453 +epd K6k/8/8/1P6/n7/6N1/8/8 b - - +perft 1 7 +perft 2 62 +perft 3 584 +perft 4 5753 +perft 5 55622 +perft 6 580086 + +id gentest-1454 +epd 8/K6k/1n6/1P6/8/6N1/8/8 w - - +perft 1 10 +perft 2 101 +perft 3 996 +perft 4 9748 +perft 5 101893 +perft 6 1039621 + +id gentest-1455 +epd 8/8/7k/KP6/8/6N1/8/8 b - - +perft 1 4 +perft 2 44 +perft 3 281 +perft 4 3066 +perft 5 17267 +perft 6 196622 + +id gentest-1456 +epd 8/8/8/KP6/7k/8/4N3/8 w - - +perft 1 11 +perft 2 46 +perft 3 514 +perft 4 3080 +perft 5 35446 +perft 6 211869 + +id gentest-1457 +epd 8/8/1K6/1P6/6k1/6N1/8/8 b - - +perft 1 6 +perft 2 72 +perft 3 407 +perft 4 4646 +perft 5 28181 +perft 6 319468 + +id gentest-1458 +epd 8/8/8/1PK5/8/6N1/6k1/8 w - - +perft 1 14 +perft 2 86 +perft 3 1128 +perft 4 5446 +perft 5 69168 +perft 6 383233 + +id gentest-1459 +epd 8/8/8/1P6/1K6/7k/4N3/8 b - - +perft 1 4 +perft 2 56 +perft 3 286 +perft 4 3801 +perft 5 20223 +perft 6 259772 + +id gentest-1460 +epd 8/8/8/1P6/1K6/2N4k/8/8 w - - +perft 1 14 +perft 2 68 +perft 3 895 +perft 4 5679 +perft 5 72938 +perft 6 427709 + +id gentest-1461 +epd 8/8/K7/1P6/8/2N5/6k1/8 b - - +perft 1 8 +perft 2 96 +perft 3 516 +perft 4 5915 +perft 5 36004 +perft 6 417299 + +id gentest-1462 +epd 8/8/K7/1P6/8/8/4N1k1/8 w - - +perft 1 11 +perft 2 72 +perft 3 820 +perft 4 3933 +perft 5 45147 +perft 6 260251 + +id gentest-1463 +epd 8/K7/8/1P6/8/8/8/6k1 b - - +perft 1 5 +perft 2 30 +perft 3 174 +perft 4 1044 +perft 5 6587 +perft 6 42967 + +id gentest-1464 +epd 8/K7/1P6/8/8/7k/8/8 w - - +perft 1 5 +perft 2 25 +perft 3 150 +perft 4 1004 +perft 5 7242 +perft 6 44194 + +id gentest-1465 +epd K7/8/1P6/8/7k/8/8/8 b - - +perft 1 5 +perft 2 20 +perft 3 136 +perft 4 816 +perft 5 5502 +perft 6 37912 + +id gentest-1466 +epd 1K6/8/1P4k1/8/8/8/8/8 w - - +perft 1 6 +perft 2 48 +perft 3 272 +perft 4 1845 +perft 5 12468 +perft 6 83011 + +id gentest-1467 +epd 8/1K6/1P3k2/8/8/8/8/8 b - - +perft 1 8 +perft 2 56 +perft 3 432 +perft 4 2487 +perft 5 16989 +perft 6 112986 + +id gentest-1468 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-1469 +epd rnbqkbnr/1ppppppp/8/p7/3P4/5N2/PPP1PPPP/RNBQKB1R b KQkq - +perft 1 21 +perft 2 629 +perft 3 14663 +perft 4 447202 +perft 5 11405790 +perft 6 359371776 + +id gentest-1470 +epd rnbqkb1r/1pppp1pp/7n/p4p2/3P4/1P3N2/P1P1PPPP/RNBQKB1R w KQkq - +perft 1 31 +perft 2 644 +perft 3 19743 +perft 4 454114 +perft 5 14225456 +perft 6 357469114 + +id gentest-1471 +epd rnbqkb1r/2ppp1pp/1p5n/p4p2/P2P4/1P3N2/2PNPPPP/R1BQKB1R b KQkq - +perft 1 21 +perft 2 484 +perft 3 11182 +perft 4 290752 +perft 5 7317300 +perft 6 207317100 + +id gentest-1472 +epd rnbqkb1r/4p1pp/1ppp3n/p4p2/P2P3P/1P3N2/2PNPPP1/R1BQKB1R w KQkq - +perft 1 24 +perft 2 576 +perft 3 15324 +perft 4 381462 +perft 5 11060069 +perft 6 288137338 + +id gentest-1473 +epd rn1qkb1r/3bp1pp/1ppp3n/p4pN1/P2P3P/1P2P3/2PN1PP1/R1BQKB1R b KQkq - +perft 1 18 +perft 2 683 +perft 3 14009 +perft 4 532969 +perft 5 12152680 +perft 6 464400159 + +id gentest-1474 +epd 1n2kb1r/2qbp1pp/rppp3n/p4pN1/P1PP3P/1P2P3/3N1PP1/R1BQKB1R w KQk - +perft 1 34 +perft 2 678 +perft 3 23235 +perft 4 504508 +perft 5 17642950 +perft 6 413383648 + +id gentest-1475 +epd 1n2kb1r/2qbp1pp/rppp3n/p5NP/P1PP1p2/1P2P3/3NQPP1/R1B1KB1R b KQk - +perft 1 25 +perft 2 780 +perft 3 20290 +perft 4 654616 +perft 5 17574998 +perft 6 588545249 + +id gentest-1476 +epd 1n1qkb1r/3bp1pp/rppp4/p5NP/P1PP1pn1/1P2PN2/4QPP1/R1B1KB1R w KQk - +perft 1 35 +perft 2 783 +perft 3 28265 +perft 4 688515 +perft 5 25180829 +perft 6 655133174 + +id gentest-1477 +epd 1nq1kb1r/3bp1pp/rppp4/p5NP/P1PP1pn1/1P2PNP1/2Q2P2/R1B1KB1R b KQk - +perft 1 24 +perft 2 1105 +perft 3 27746 +perft 4 1218947 +perft 5 32514738 +perft 6 1391368060 + +id gentest-1478 +epd 1nq1kb1r/3bp1p1/rp1p2p1/p1p3NP/P1PP1pn1/1P2PNP1/5P2/R1B1KB1R w KQk - +perft 1 35 +perft 2 1092 +perft 3 38598 +perft 4 1249721 +perft 5 44002481 +perft 6 1467866902 + +id gentest-1479 +epd 1n2kb1r/1q1bp1p1/rp1p2p1/p1p3NP/P1PP1pn1/1P2PNPB/5P2/R1BK3R b k - +perft 1 36 +perft 2 1179 +perft 3 42039 +perft 4 1405190 +perft 5 49477113 +perft 6 1678276093 + +id gentest-1480 +epd 1n2kb1r/1q2p1p1/rpbp4/p1p3Np/P1PP1pn1/1P2PNPB/3B1P2/R2K3R w k - +perft 1 35 +perft 2 1196 +perft 3 40302 +perft 4 1379748 +perft 5 47959756 +perft 6 1652043039 + +id gentest-1481 +epd 1n2kb1r/1q2p1p1/rp1p4/B1p3Np/b1PP1pn1/RP2PNPB/5P2/3K3R b k - +perft 1 39 +perft 2 1291 +perft 3 48913 +perft 4 1674969 +perft 5 62030941 +perft 6 2175083444 + +id gentest-1482 +epd 1n2kb1r/q3p1p1/rp1p4/B1p3Np/b1PP1pn1/RP2PNPB/4KP2/7R w k - +perft 1 41 +perft 2 1298 +perft 3 51825 +perft 4 1641968 +perft 5 64193614 +perft 6 2069414179 + +id gentest-1483 +epd 1n2kb1r/q2bp1p1/rp1p4/2p3Np/2PP1pn1/RPB1P1PB/3NKP2/7R b k - +perft 1 33 +perft 2 1327 +perft 3 45452 +perft 4 1763826 +perft 5 61824871 +perft 6 2347042268 + +id gentest-1484 +epd q3kb1r/3bp1p1/rpnp4/2p3Np/2PP1pn1/RP2P1PB/3NKP2/B6R w k - +perft 1 37 +perft 2 1428 +perft 3 49695 +perft 4 1929090 +perft 5 66891548 +perft 6 2602840453 + +id gentest-1485 +epd q3kb1r/3bp1p1/rp1p4/n1p3Np/1PPP1pn1/R3P1PB/3NKP2/B3R3 b k - +perft 1 43 +perft 2 1623 +perft 3 67232 +perft 4 2488661 +perft 5 100231164 +perft 6 3664321079 + +id gentest-1486 +epd q1k2b1r/3bp1p1/rp1p4/n1p3Np/1PPPPpn1/R5PB/3NKP2/B3R3 w - - +perft 1 39 +perft 2 1535 +perft 3 56064 +perft 4 2125838 +perft 5 76506043 +perft 6 2875122936 + +id gentest-1487 +epd 2k2b1r/1q1bpNp1/rp1p4/n1p4p/1PPPPpn1/RN4PB/4KP2/B3R3 b - - +perft 1 40 +perft 2 1427 +perft 3 53852 +perft 4 1935896 +perft 5 72671687 +perft 6 2619575297 + +id gentest-1488 +epd 2k2b1r/1q1b1Np1/rp1p4/n3p2p/1pPPPpn1/RN4PB/4KP2/B1R5 w - - +perft 1 36 +perft 2 1329 +perft 3 45631 +perft 4 1686494 +perft 5 57831117 +perft 6 2164012879 + +id gentest-1489 +epd r1k2b1r/1q1b1Np1/1p1p4/n3p2p/1pPPPpn1/RNB3PB/4KP2/5R2 b - - +perft 1 40 +perft 2 1505 +perft 3 57999 +perft 4 2141267 +perft 5 82618867 +perft 6 3015031850 + +id gentest-1490 +epd rk3b1r/1q3Np1/1p1p4/nb2p2p/1pPPPpn1/RNB2PPB/4K3/5R2 w - - +perft 1 39 +perft 2 1574 +perft 3 57799 +perft 4 2274193 +perft 5 82802682 +perft 6 3225588905 + +id gentest-1491 +epd rk3b1N/6p1/qp1p4/nb2p2p/1pPPPpn1/RNB2PPB/4K3/7R b - - +perft 1 31 +perft 2 1118 +perft 3 35984 +perft 4 1250740 +perft 5 41331781 +perft 6 1416401758 + +id gentest-1492 +epd rk3b1N/q5p1/1p1p4/1b2p2p/1pnPPpn1/R1B2PPB/3NK3/7R w - - +perft 1 35 +perft 2 1258 +perft 3 37795 +perft 4 1365208 +perft 5 41481474 +perft 6 1516965672 + +id gentest-1493 +epd rk3b1N/q5p1/1p1p3n/1b2p2p/1pnPPp2/2B2PPB/R2NK3/3R4 b - - +perft 1 35 +perft 2 1152 +perft 3 41448 +perft 4 1353738 +perft 5 49829294 +perft 6 1622754275 + +id gentest-1494 +epd rk3bnN/q7/1p1p4/1b1Pp1pp/1pn1Pp2/2B2PPB/R2NK3/3R4 w - - +perft 1 39 +perft 2 1336 +perft 3 43971 +perft 4 1513183 +perft 5 49874268 +perft 6 1749217239 + +id gentest-1495 +epd rk3b1N/q7/1p1p1n2/1b1Pp1pp/1pn1Pp2/2B2PPB/2RNK3/5R2 b - - +perft 1 40 +perft 2 1158 +perft 3 45552 +perft 4 1358023 +perft 5 53219250 +perft 6 1620473071 + +id gentest-1496 +epd rk3b1N/q7/1p1p1n2/1b1Pp1pp/1p2np2/2B2PPB/2R2K2/5R2 w - - +perft 1 4 +perft 2 169 +perft 3 5278 +perft 4 218118 +perft 5 6943535 +perft 6 284464888 + +id gentest-1497 +epd r4b1N/q1k5/1p1p1n2/1b1Pp1pp/1p2np2/2B2PPB/2R5/4K1R1 b - - +perft 1 43 +perft 2 1247 +perft 3 45864 +perft 4 1314619 +perft 5 51084386 +perft 6 1460217519 + +id gentest-1498 +epd r1B2bnN/q1k5/1p1p4/1b1Pp1p1/1p2np1p/2B2PP1/2R5/4K1R1 w - - +perft 1 31 +perft 2 1031 +perft 3 31090 +perft 4 1113465 +perft 5 33247904 +perft 6 1243114186 + +id gentest-1499 +epd r1Bk1bnN/q7/1p1p4/Bb1Pp1p1/4np1p/5PP1/2R5/4K1R1 b - - +perft 1 40 +perft 2 1297 +perft 3 48765 +perft 4 1493013 +perft 5 55701934 +perft 6 1657796049 + +id gentest-1500 +epd 1rBk1bnN/q7/1p1p4/B2Pp1p1/2b1np1p/5PP1/2R3R1/4K3 w - - +perft 1 31 +perft 2 1200 +perft 3 36420 +perft 4 1359242 +perft 5 41213148 +perft 6 1517398285 + +id gentest-1501 +epd 1r1k1bnN/q7/1B1p4/3Pp1p1/2b2pBp/5PP1/2R2nR1/4K3 b - - +perft 1 5 +perft 2 137 +perft 3 5464 +perft 4 147271 +perft 5 5854880 +perft 6 163795223 + +id gentest-1502 +epd 1r1k1bnN/8/3p4/1q1Pp1p1/2b2pBP/5P2/2R2nR1/4K3 w - - +perft 1 24 +perft 2 925 +perft 3 21380 +perft 4 841270 +perft 5 20127118 +perft 6 798902725 + +id gentest-1503 +epd 1r1k1bnN/8/3p4/1q1Pp1p1/2R2pBP/3n1P2/4K1R1/8 b - - +perft 1 35 +perft 2 911 +perft 3 31249 +perft 4 790205 +perft 5 27787883 +perft 6 711598979 + +id gentest-1504 +epd 1r1k2nN/6b1/3p4/1q1Pp3/4RpBp/3n1P2/4K1R1/8 w - - +perft 1 22 +perft 2 767 +perft 3 16159 +perft 4 593510 +perft 5 13634447 +perft 6 508114784 + +id gentest-1505 +epd 2rk2nN/6b1/3p4/1q1PpB2/R4p1p/3n1P2/4K1R1/8 b - - +perft 1 43 +perft 2 1204 +perft 3 47235 +perft 4 1296356 +perft 5 49059105 +perft 6 1326860733 + +id gentest-1506 +epd 1r1k2nN/6b1/3p4/2qPpB2/R4p1p/3n1PR1/4K3/8 w - - +perft 1 34 +perft 2 1477 +perft 3 41230 +perft 4 1673161 +perft 5 44347584 +perft 6 1730791953 + +id gentest-1507 +epd 1r1k2nN/7B/3p3b/2qPp3/5R1p/3n1PR1/4K3/8 b - - +perft 1 48 +perft 2 1228 +perft 3 51479 +perft 4 1226096 +perft 5 50164368 +perft 6 1189648147 + +id gentest-1508 +epd 1r1k2nN/7B/3p3b/3Pp3/5R1p/5PR1/5q2/2nK4 w - - +perft 1 29 +perft 2 1153 +perft 3 25679 +perft 4 1004259 +perft 5 22436705 +perft 6 865416105 + +id gentest-1509 +epd 1r1k2nN/7B/3p3b/3Pp3/1R4Rp/5P2/7q/2nK4 b - - +perft 1 37 +perft 2 1088 +perft 3 37738 +perft 4 1026450 +perft 5 36011131 +perft 6 943450425 + +id gentest-1510 +epd 1r1k2nN/7B/3p4/3Pp1b1/4R1R1/5P1p/7q/2nK4 w - - +perft 1 22 +perft 2 800 +perft 3 18628 +perft 4 673669 +perft 5 16187745 +perft 6 582660321 + +id gentest-1511 +epd 3k2nN/7B/3p4/3Pp1b1/5R1R/1r3P1p/7q/2nK4 b - - +perft 1 41 +perft 2 837 +perft 3 31329 +perft 4 642039 +perft 5 23934772 +perft 6 502990050 + +id gentest-1512 +epd 3k2nN/8/3p2B1/3P2b1/4pq1R/1r3P1p/8/2nK4 w - - +perft 1 16 +perft 2 603 +perft 3 8894 +perft 4 334742 +perft 5 5097304 +perft 6 192816698 + +id gentest-1513 +epd 3k2nN/8/3p2B1/3P2b1/4pq1R/5P1p/1r6/2nK4 b - - +perft 1 44 +perft 2 626 +perft 3 24845 +perft 4 350968 +perft 5 13686399 +perft 6 204479705 + +id gentest-1514 +epd 3k2nN/8/3p1qB1/3P2b1/4pP1R/7p/4r3/2nK4 w - - +perft 1 15 +perft 2 524 +perft 3 7514 +perft 4 270247 +perft 5 4078395 +perft 6 147475931 + +id gentest-1515 +epd 3k1qn1/8/3p2N1/3P1Bb1/4pP1R/7p/4r3/2nK4 b - - +perft 1 31 +perft 2 519 +perft 3 16967 +perft 4 310503 +perft 5 10417105 +perft 6 195918539 + +id gentest-1516 +epd 3k1q2/3B4/3p2Nn/3P2b1/4pP1R/7p/5r2/2nK4 w - - +perft 1 21 +perft 2 724 +perft 3 13704 +perft 4 472353 +perft 5 8900459 +perft 6 309144052 + +id gentest-1517 +epd 3k1q2/3B4/3p2Nn/3P1Pb1/4pr1R/7p/8/2n1K3 b - - +perft 1 29 +perft 2 500 +perft 3 15222 +perft 4 271697 +perft 5 8570330 +perft 6 156694951 + +id gentest-1518 +epd 5q2/3Bk3/3p3n/3PNPb1/4pr1R/8/7p/2n1K3 w - - +perft 1 22 +perft 2 661 +perft 3 13215 +perft 4 419254 +perft 5 8402399 +perft 6 277376412 + +id gentest-1519 +epd 6q1/3Nk3/3pB2n/3P1Pb1/4pr1R/8/7p/2n1K3 b - - +perft 1 34 +perft 2 505 +perft 3 16720 +perft 4 271798 +perft 5 9123663 +perft 6 154379592 + +id gentest-1520 +epd 5Nq1/4k3/3pB3/3P1Pb1/4prnR/8/8/2n1K2n w - - +perft 1 18 +perft 2 476 +perft 3 8077 +perft 4 236547 +perft 5 4045992 +perft 6 125900976 + +id gentest-1521 +epd 5Nq1/3Bk3/3p4/3P1Pb1/4p1nR/8/8/2n2K1n b - - +perft 1 31 +perft 2 585 +perft 3 16727 +perft 4 326121 +perft 5 9654555 +perft 6 189188785 + +id gentest-1522 +epd 5N2/4k3/2Bp4/3q1Pb1/4p1nR/8/4n3/5K1n w - - +perft 1 23 +perft 2 826 +perft 3 16509 +perft 4 588925 +perft 5 11707125 +perft 6 415038210 + +id gentest-1523 +epd 5N2/4k3/2Bp1b2/3q4/4p1nR/8/4K3/7n b - - +perft 1 38 +perft 2 682 +perft 3 22905 +perft 4 437881 +perft 5 14586174 +perft 6 289293184 + +id gentest-1524 +epd 5N2/4k3/2Bp1b2/3q1n2/4p1nR/8/8/4K3 w - - +perft 1 21 +perft 2 738 +perft 3 14327 +perft 4 510272 +perft 5 10027825 +perft 6 356832416 + +id gentest-1525 +epd 8/4k2N/2Bp1b1R/3q1n2/4p3/8/7n/4K3 b - - +perft 1 37 +perft 2 594 +perft 3 21167 +perft 4 366328 +perft 5 12692907 +perft 6 230801830 + +id gentest-1526 +epd 8/4k2N/2Bp1b1n/8/3qp3/8/4K2n/8 w - - +perft 1 12 +perft 2 409 +perft 3 4432 +perft 4 153235 +perft 5 1785823 +perft 6 62188140 + +id gentest-1527 +epd 8/4k3/3p1N1n/1B6/3qp3/5n2/4K3/8 b - - +perft 1 36 +perft 2 476 +perft 3 15071 +perft 4 198568 +perft 5 6321887 +perft 6 84598499 + +id gentest-1528 +epd 8/4k3/3p1N1n/1B4n1/4p3/8/1q6/3K4 w - - +perft 1 18 +perft 2 579 +perft 3 7726 +perft 4 249063 +perft 5 3331810 +perft 6 104408670 + +id gentest-1529 +epd 6N1/8/3pk2n/6n1/2B1p3/8/1q6/3K4 b - - +perft 1 4 +perft 2 54 +perft 3 1709 +perft 4 18966 +perft 5 570797 +perft 6 6855565 + +id gentest-1530 +epd 6N1/5n2/3p4/1B3kn1/4p3/8/1q6/3K4 w - - +perft 1 13 +perft 2 382 +perft 3 4186 +perft 4 117054 +perft 5 1385389 +perft 6 38870398 + +id gentest-1531 +epd 8/3B1n2/3p1N2/4k1n1/4p3/8/1q6/3K4 b - - +perft 1 31 +perft 2 422 +perft 3 12537 +perft 4 170383 +perft 5 5002794 +perft 6 67527971 + +id gentest-1532 +epd 8/5n2/2Bp1N2/4k1n1/4p3/1q6/8/3K4 w - - +perft 1 4 +perft 2 140 +perft 3 2108 +perft 4 61492 +perft 5 869787 +perft 6 25223985 + +id gentest-1533 +epd 8/5n2/3p1N2/4k1n1/q3B3/8/4K3/8 b - - +perft 1 31 +perft 2 623 +perft 3 18395 +perft 4 322063 +perft 5 9434136 +perft 6 151289779 + +id gentest-1534 +epd 7n/1B6/3p1N2/4k1n1/8/8/4K3/q7 w - - +perft 1 21 +perft 2 579 +perft 3 9058 +perft 4 258452 +perft 5 3804248 +perft 6 108870771 + +id gentest-1535 +epd 7n/1B6/3p4/4k1n1/4N3/3K4/8/2q5 b - - +perft 1 31 +perft 2 360 +perft 3 10512 +perft 4 138766 +perft 5 3884338 +perft 6 54133768 + +id gentest-1536 +epd 7n/1B6/3p4/4k1N1/8/3K4/8/2q5 w - - +perft 1 16 +perft 2 376 +perft 3 4551 +perft 4 106690 +perft 5 1400183 +perft 6 33316154 + +id gentest-1537 +epd 7n/2q5/3p4/3Bk1N1/8/3K4/8/8 b - - +perft 1 24 +perft 2 464 +perft 3 10015 +perft 4 169804 +perft 5 3787363 +perft 6 61281909 + +id gentest-1538 +epd 8/5n2/3p4/3Bk1N1/8/8/2K5/8 w - - +perft 1 26 +perft 2 212 +perft 3 4679 +perft 4 42778 +perft 5 855696 +perft 6 8342315 + +id gentest-1539 +epd 8/5n2/3p4/5kN1/8/3K4/8/7B b - - +perft 1 12 +perft 2 212 +perft 3 2201 +perft 4 39194 +perft 5 403566 +perft 6 7095529 + +id gentest-1540 +epd 8/8/3p4/6n1/3K2k1/8/8/7B w - - +perft 1 12 +perft 2 145 +perft 3 1817 +perft 4 20492 +perft 5 267344 +perft 6 2972336 + +id gentest-1541 +epd 8/1B6/3p4/8/3K2k1/7n/8/8 b - - +perft 1 11 +perft 2 153 +perft 3 1599 +perft 4 21058 +perft 5 226157 +perft 6 2989029 + +id gentest-1542 +epd 8/8/3p4/8/3K1k2/5B2/8/6n1 w - - +perft 1 15 +perft 2 119 +perft 3 1396 +perft 4 13480 +perft 5 172141 +perft 6 1734599 + +id gentest-1543 +epd 8/8/3p4/8/1K3k2/5n2/8/8 b - - +perft 1 16 +perft 2 107 +perft 3 1587 +perft 4 9133 +perft 5 128229 +perft 6 776813 + +id gentest-1544 +epd 8/8/3p4/K3k3/3n4/8/8/8 w - - +perft 1 4 +perft 2 60 +perft 3 289 +perft 4 4194 +perft 5 22581 +perft 6 320001 + +id gentest-1545 +epd 8/8/8/2Kpk3/3n4/8/8/8 b - - +perft 1 13 +perft 2 51 +perft 3 682 +perft 4 4091 +perft 5 55009 +perft 6 311608 + +id gentest-1546 +epd 8/8/8/4k3/1K1p4/5n2/8/8 w - - +perft 1 7 +perft 2 95 +perft 3 540 +perft 4 7439 +perft 5 45078 +perft 6 611327 + +id gentest-1547 +epd 8/8/1K6/4k3/8/3p1n2/8/8 b - - +perft 1 16 +perft 2 120 +perft 3 1743 +perft 4 10664 +perft 5 152965 +perft 6 920037 + +id gentest-1548 +epd 8/1K6/8/8/3k4/3p4/8/6n1 w - - +perft 1 8 +perft 2 85 +perft 3 461 +perft 4 5444 +perft 5 33331 +perft 6 428452 + +id gentest-1549 +epd 8/1K6/8/8/8/2kp4/8/6n1 b - - +perft 1 11 +perft 2 88 +perft 3 1056 +perft 4 5930 +perft 5 74960 +perft 6 469834 + +id gentest-1550 +epd 2K5/8/8/8/k7/3p4/8/6n1 w - - +perft 1 5 +perft 2 45 +perft 3 297 +perft 4 3275 +perft 5 19623 +perft 6 237312 + +id gentest-1551 +epd 8/8/1K6/8/8/k2p4/8/6n1 b - - +perft 1 9 +perft 2 67 +perft 3 726 +perft 4 4544 +perft 5 54307 +perft 6 337734 + +id gentest-1552 +epd 8/2K5/8/8/8/k2p4/8/6n1 w - - +perft 1 8 +perft 2 72 +perft 3 485 +perft 4 5403 +perft 5 35521 +perft 6 429752 + +id gentest-1553 +epd 8/K7/8/8/8/1k1p4/8/6n1 b - - +perft 1 12 +perft 2 60 +perft 3 708 +perft 4 3927 +perft 5 49500 +perft 6 288472 + +id gentest-1554 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-1555 +epd rnbqkbnr/pppppp1p/6p1/8/8/8/PPPPPPPP/RNBQKBNR b KQkq - +perft 1 21 +perft 2 420 +perft 3 9799 +perft 4 216714 +perft 5 5553969 +perft 6 135553939 + +id gentest-1556 +epd r1bqkb1r/pppppp1p/2n3pn/8/2P5/8/PP1PPPPP/RNBQKBNR w KQkq - +perft 1 22 +perft 2 484 +perft 3 11882 +perft 4 294303 +perft 5 7825994 +perft 6 211609907 + +id gentest-1557 +epd r1bqkb1r/pppppp1p/6pn/4n3/2PP4/3Q4/PP2PPPP/RNB1KBNR b KQkq - +perft 1 23 +perft 2 841 +perft 3 21206 +perft 4 753041 +perft 5 20317640 +perft 6 711377920 + +id gentest-1558 +epd r1bqkbr1/p1pppp1p/6pn/1p2nQ2/2PP4/8/PP2PPPP/RNB1KBNR w KQq - +perft 1 43 +perft 2 1016 +perft 3 38400 +perft 4 987897 +perft 5 36314506 +perft 6 998762661 + +id gentest-1559 +epd r1bqkb2/p1pppprp/6pn/1p2n3/2PP2Q1/N7/PP2PPPP/R1B1KBNR b KQq - +perft 1 24 +perft 2 807 +perft 3 20422 +perft 4 693880 +perft 5 18651257 +perft 6 638283936 + +id gentest-1560 +epd r1bqkb2/3ppprp/p1p3pn/1p2n3/2PP2Q1/NP6/P3PPPP/R1B1KBNR w KQq - +perft 1 38 +perft 2 883 +perft 3 29263 +perft 4 751949 +perft 5 25272235 +perft 6 697446109 + +id gentest-1561 +epd r1b1kb2/3ppprp/pqp3pn/1p2n3/2PPP3/NP3Q2/P4PPP/R1B1KBNR b KQq - +perft 1 30 +perft 2 1055 +perft 3 32013 +perft 4 1126311 +perft 5 35294964 +perft 6 1248546551 + +id gentest-1562 +epd r1b1kb2/3pp1rp/1qp2ppn/pp2n3/2PPP3/NP3Q2/P3NPPP/R1B1KB1R w KQq - +perft 1 36 +perft 2 1252 +perft 3 43800 +perft 4 1492591 +perft 5 53067526 +perft 6 1806973447 + +id gentest-1563 +epd r1b1kb2/3pp1rp/1qp2ppn/pp1P4/2P1P1Q1/NP6/P3NPPP/R1B1KB1R b KQq - +perft 1 33 +perft 2 1254 +perft 3 39174 +perft 4 1492710 +perft 5 46918985 +perft 6 1791482647 + +id gentest-1564 +epd r1b2b2/q2kp1rp/2p2ppn/pp1P4/2P1P3/NP6/P3NPPP/R1B1KB1R w KQ - +perft 1 30 +perft 2 887 +perft 3 26588 +perft 4 818289 +perft 5 25046290 +perft 6 794669206 + +id gentest-1565 +epd r1b1kb2/q3p1rp/2p2ppn/Pp1P4/2P1P3/N7/P3NPPP/R1B1KB1R b KQ - +perft 1 36 +perft 2 1011 +perft 3 35811 +perft 4 1046510 +perft 5 37020528 +perft 6 1114143448 + +id gentest-1566 +epd r1b1kb2/4p1rp/1qp2ppn/Pp1P4/2P1P3/N7/PB2NPPP/R3KB1R w KQ - +perft 1 34 +perft 2 1306 +perft 3 41698 +perft 4 1546903 +perft 5 49383902 +perft 6 1800581308 + +id gentest-1567 +epd r1b1kb2/q3p1rp/2p3pn/Pp1P2B1/2P1P3/N7/P3NPPP/R3KB1R b KQ - +perft 1 34 +perft 2 1143 +perft 3 38804 +perft 4 1278011 +perft 5 43977397 +perft 6 1436776988 + +id gentest-1568 +epd 2b1kb2/r3p1rp/2p3pn/Pp1P2B1/2PqP3/N7/P4PPP/R1N1KB1R w KQ - +perft 1 30 +perft 2 1290 +perft 3 34755 +perft 4 1433399 +perft 5 39909238 +perft 6 1592862781 + +id gentest-1569 +epd 2b1kb2/r3p1rp/2p2Bpn/P2P4/1pPqP3/N5P1/P4P1P/R1N1KB1R b KQ - +perft 1 45 +perft 2 1148 +perft 3 48991 +perft 4 1310436 +perft 5 53454178 +perft 6 1481457078 + +id gentest-1570 +epd 2b1kb2/r3p1rp/2p3pn/P2P4/2PBP3/N5P1/p4P1P/R1N1KB1R w KQ - +perft 1 36 +perft 2 968 +perft 3 34825 +perft 4 920124 +perft 5 32970456 +perft 6 890776319 + +id gentest-1571 +epd 2b1kb2/1r2p1rp/2p3pn/P2PP3/2PB4/N5P1/p4PBP/R1N1K2R b KQ - +perft 1 28 +perft 2 993 +perft 3 27622 +perft 4 967837 +perft 5 26915001 +perft 6 936952912 + +id gentest-1572 +epd 2b1kbn1/4p1rp/2p3p1/Pr1PP3/2PB4/6P1/p4PBP/R1N1K2R w KQ - +perft 1 34 +perft 2 966 +perft 3 32043 +perft 4 876472 +perft 5 28732455 +perft 6 786208585 + +id gentest-1573 +epd 2b2bn1/3kp1rp/1Bp3p1/Pr1PP3/2P5/6P1/p3KPBP/R1N4R b - - +perft 1 20 +perft 2 683 +perft 3 13956 +perft 4 467170 +perft 5 10548948 +perft 6 349855066 + +id gentest-1574 +epd 2b1kb2/4p1rp/1Bp2np1/Pr1PP3/2P5/6PB/p3KP1P/R1N4R w - - +perft 1 39 +perft 2 1135 +perft 3 39685 +perft 4 1131467 +perft 5 38179008 +perft 6 1088267916 + +id gentest-1575 +epd 4kb2/1b2p1rp/1Bp2np1/Pr1PP3/2P5/1N4PB/p3KP1P/3R3R b - - +perft 1 28 +perft 2 1243 +perft 3 34719 +perft 4 1409082 +perft 5 40348880 +perft 6 1532779586 + +id gentest-1576 +epd 4kb2/1b2pr1p/PBp2np1/3PP3/1rP5/1N4PB/p3KP1P/3R3R w - - +perft 1 48 +perft 2 1281 +perft 3 56030 +perft 4 1619841 +perft 5 64891411 +perft 6 1980801129 + +id gentest-1577 +epd 4kb2/1b1npr1p/PBp3p1/3PP3/1rP5/1N1R2P1/p3KP1P/7R b - - +perft 1 31 +perft 2 1228 +perft 3 39919 +perft 4 1479331 +perft 5 49654895 +perft 6 1753184604 + +id gentest-1578 +epd 2b1kb2/3npr2/PBp3p1/3PP2p/1rP5/1N1R2P1/p4P1P/3K3R w - - +perft 1 36 +perft 2 1102 +perft 3 35977 +perft 4 1172250 +perft 5 37376526 +perft 6 1261719196 + +id gentest-1579 +epd 2b1kb2/3np3/P1p2rp1/B2PP2p/1rP5/1N1R2P1/p4P1P/2K4R b - - +perft 1 32 +perft 2 936 +perft 3 30848 +perft 4 919098 +perft 5 30754640 +perft 6 925258114 + +id gentest-1580 +epd 2b1kb2/3np3/P4rp1/B1pPP2p/1rP5/1N4P1/5P1P/n1KR3R w - - +perft 1 29 +perft 2 854 +perft 3 22452 +perft 4 668104 +perft 5 17733401 +perft 6 537733986 + +id gentest-1581 +epd 2b1kb2/3Np3/P5p1/B2PP2p/1rP2r2/6P1/5P1P/n1KR3R b - - +perft 1 31 +perft 2 774 +perft 3 23167 +perft 4 581884 +perft 5 17493994 +perft 6 448328664 + +id gentest-1582 +epd 2b1kb2/3Np3/P5p1/B2PP2p/2PR2r1/1r4P1/5P1P/n1K4R w - - +perft 1 32 +perft 2 914 +perft 3 26081 +perft 4 735386 +perft 5 20699297 +perft 6 585778273 + +id gentest-1583 +epd 2b1kb2/2BNp3/P5p1/3PP1rp/2P5/1r4P1/3R1P1P/n1K4R b - - +perft 1 27 +perft 2 780 +perft 3 20693 +perft 4 592040 +perft 5 16201414 +perft 6 462622167 + +id gentest-1584 +epd 1Nb1kb2/2B1p3/P5p1/3PP1rp/2P5/6r1/3R1P1P/n1K4R w - - +perft 1 30 +perft 2 781 +perft 3 21435 +perft 4 576202 +perft 5 16083362 +perft 6 446215260 + +id gentest-1585 +epd 1Nb1kb2/2B5/P3p1p1/3PP1rp/2P2P1P/6r1/3R4/n1K4R b - - +perft 1 28 +perft 2 773 +perft 3 22291 +perft 4 626710 +perft 5 18423394 +perft 6 523860688 + +id gentest-1586 +epd 1Nb1kb2/2B5/P3p1p1/3Pr2p/2P2P1P/8/4R1r1/n1K4R w - - +perft 1 33 +perft 2 959 +perft 3 27193 +perft 4 803147 +perft 5 22552093 +perft 6 677335964 + +id gentest-1587 +epd 1Nb1k3/6b1/P3p1p1/2BPr2p/2P2P1P/8/4R1r1/n1K4R b - - +perft 1 26 +perft 2 884 +perft 3 24862 +perft 4 771057 +perft 5 22718509 +perft 6 674707786 + +id gentest-1588 +epd 1N2k3/3b2b1/P3p1p1/2BPrPrp/2P4P/8/4R3/n1K4R w - - +perft 1 41 +perft 2 1019 +perft 3 35333 +perft 4 956656 +perft 5 30755788 +perft 6 883041819 + +id gentest-1589 +epd 1N1k4/3b2b1/P3p1p1/3PrPrp/2PB3P/8/4R2R/n1K5 b - - +perft 1 28 +perft 2 970 +perft 3 26915 +perft 4 869978 +perft 5 24891132 +perft 6 772742636 + +id gentest-1590 +epd 1N1k4/6b1/P3p1p1/1b1Prr1p/2PB3P/8/3KR2R/n7 w - - +perft 1 32 +perft 2 891 +perft 3 24920 +perft 4 728337 +perft 5 20340841 +perft 6 611553517 + +id gentest-1591 +epd 1N1k4/6b1/P3p1p1/1bPPr2p/3BR2P/8/3K3R/n4r2 b - - +perft 1 37 +perft 2 893 +perft 3 30624 +perft 4 770433 +perft 5 25561766 +perft 6 660645331 + +id gentest-1592 +epd 1N1k4/6b1/P3p1p1/1bPPr2p/3B2RP/8/3K3R/n4r2 w - - +perft 1 26 +perft 2 986 +perft 3 24316 +perft 4 870896 +perft 5 22161479 +perft 6 764575142 + +id gentest-1593 +epd 1N1k4/6b1/P3p1p1/2PPr2p/5R1P/8/3Kb2R/n4rB1 b - - +perft 1 32 +perft 2 783 +perft 3 24793 +perft 4 574148 +perft 5 18564837 +perft 6 433135893 + +id gentest-1594 +epd 1N1k4/6b1/P3p1p1/2PPr2p/5R1P/4B3/2nKb2R/2r5 w - - +perft 1 30 +perft 2 985 +perft 3 26609 +perft 4 878484 +perft 5 22895022 +perft 6 760981395 + +id gentest-1595 +epd 1N1k4/6b1/P3p1p1/2PPr2p/R4B1P/8/2nKb2R/1r6 b - - +perft 1 43 +perft 2 1065 +perft 3 40219 +perft 4 1026730 +perft 5 37457372 +perft 6 977802473 + +id gentest-1596 +epd 1N1k4/P5b1/4p1p1/2PP3p/R4BrP/8/2nKb2R/1r6 w - - +perft 1 33 +perft 2 1439 +perft 3 45057 +perft 4 1840204 +perft 5 56466858 +perft 6 2200001652 + +id gentest-1597 +epd 1N1k4/P1P3b1/4p1p1/3P2rp/R4B1P/8/2nKb2R/1r6 b - - +perft 1 3 +perft 2 101 +perft 3 4447 +perft 4 145113 +perft 5 5725617 +perft 6 188826987 + +id gentest-1598 +epd 2k5/P1P3b1/2N1p1p1/3P2rp/R4B1P/3b4/2nK3R/1r6 w - - +perft 1 34 +perft 2 1410 +perft 3 45523 +perft 4 1720360 +perft 5 55337999 +perft 6 1970609319 + +id gentest-1599 +epd 1Nk5/P1P3b1/4p1p1/3P2rp/R4B1P/3b4/2nK1R2/5r2 b - - +perft 1 39 +perft 2 1116 +perft 3 41810 +perft 4 1231918 +perft 5 43941842 +perft 6 1321585474 + +id gentest-1600 +epd 2k4b/P1P5/2N1p1p1/3P2rp/R4B1P/3b4/2nK1R2/5r2 w - - +perft 1 35 +perft 2 1177 +perft 3 38452 +perft 4 1266129 +perft 5 41360964 +perft 6 1342908977 + +id gentest-1601 +epd 2k4b/P1P5/2N1p1p1/3P2rp/R6P/3b2B1/2n2R2/3K4 b - - +perft 1 29 +perft 2 1152 +perft 3 29985 +perft 4 1112932 +perft 5 28731092 +perft 6 1027187312 + +id gentest-1602 +epd 2k4b/P1P5/2N1p1p1/3P2rp/R1b4P/6B1/6R1/3Kn3 w - - +perft 1 38 +perft 2 953 +perft 3 33057 +perft 4 826733 +perft 5 28703993 +perft 6 722545560 + +id gentest-1603 +epd 2k4b/P1P5/2N1p1p1/3P2rp/2R4P/6B1/bR6/3Kn3 b - - +perft 1 21 +perft 2 869 +perft 3 18617 +perft 4 709443 +perft 5 15916712 +perft 6 572236918 + +id gentest-1604 +epd 2k4b/P1P5/2N1p1p1/3r3p/2R4P/1R4B1/8/3Kn3 w - - +perft 1 6 +perft 2 145 +perft 3 5250 +perft 4 109621 +perft 5 3924816 +perft 6 81910850 + +id gentest-1605 +epd Q1k4b/2P5/4p1p1/6rp/2RN3P/1R4B1/8/3Kn3 b - - +perft 1 1 +perft 2 62 +perft 3 1009 +perft 4 56768 +perft 5 1022834 +perft 6 53311049 + +id gentest-1606 +epd 2k4b/2P5/2Q1p1p1/6rp/2RN3P/1R4B1/8/3Kn3 w - - +perft 1 51 +perft 2 754 +perft 3 36186 +perft 4 601422 +perft 5 27449960 +perft 6 490780140 + +id gentest-1607 +epd 2k4b/2P5/2Q3p1/4p1rp/2RN3P/1R4B1/8/3Kn3 b - - +perft 1 11 +perft 2 550 +perft 3 6892 +perft 4 319284 +perft 5 4628663 +perft 6 206187921 + +id gentest-1608 +epd 2k4b/2P5/2Q3p1/6rp/3p3P/1R3nB1/2R5/3K4 w - - +perft 1 50 +perft 2 770 +perft 3 36072 +perft 4 584433 +perft 5 26002195 +perft 6 448993416 + +id gentest-1609 +epd 2k5/2P5/5bp1/6rp/3pQ2P/1RR2nB1/8/3K4 b - - +perft 1 22 +perft 2 1001 +perft 3 18918 +perft 4 815067 +perft 5 15873364 +perft 6 667881381 + +id gentest-1610 +epd 8/2Pk4/5bp1/1R4rp/3pQ2P/2R3B1/3n4/3K4 w - - +perft 1 61 +perft 2 1089 +perft 3 56822 +perft 4 1093864 +perft 5 51541676 +perft 6 1023700117 + +id gentest-1611 +epd 8/2Pk4/5bp1/2R3rp/3pQ2P/1nR3B1/8/3K4 b - - +perft 1 19 +perft 2 932 +perft 3 15787 +perft 4 691515 +perft 5 12454234 +perft 6 520490019 + +id gentest-1612 +epd 8/2Pk4/n4bp1/6rp/3pQ2P/6B1/8/2RK4 w - - +perft 1 44 +perft 2 702 +perft 3 28030 +perft 4 514113 +perft 5 19715646 +perft 6 383263235 + +id gentest-1613 +epd 8/2Pk4/n4b1Q/1r5p/3p3P/6B1/8/2RK4 b - - +perft 1 29 +perft 2 945 +perft 3 21385 +perft 4 743706 +perft 5 15572660 +perft 6 555269702 + +id gentest-1614 +epd 3b3Q/2Pk4/n7/7p/3p3P/6B1/8/1rRK4 w - - +perft 1 30 +perft 2 457 +perft 3 14927 +perft 4 247000 +perft 5 8612065 +perft 6 150441103 + +id gentest-1615 +epd 1r1b3Q/2Pk4/n7/2R4p/3p3P/8/5B2/3K4 b - - +perft 1 22 +perft 2 862 +perft 3 15387 +perft 4 573146 +perft 5 10369037 +perft 6 378573128 + +id gentest-1616 +epd 3N3Q/2nk4/8/2R4p/1r1p3P/8/5B2/3K4 w - - +perft 1 37 +perft 2 601 +perft 3 21346 +perft 4 333989 +perft 5 11915710 +perft 6 189577544 + +id gentest-1617 +epd 3N3Q/2nk4/8/7p/3B3P/1rR5/8/3K4 b - - +perft 1 18 +perft 2 663 +perft 3 10817 +perft 4 400883 +perft 5 6430327 +perft 6 243020845 + +id gentest-1618 +epd 3N3Q/3k4/n7/1r5p/2RB3P/8/8/3K4 w - - +perft 1 39 +perft 2 660 +perft 3 24858 +perft 4 378844 +perft 5 14531262 +perft 6 221153850 + +id gentest-1619 +epd 3N4/1r1k4/n7/4Q2p/3B3P/2R5/8/3K4 b - - +perft 1 14 +perft 2 658 +perft 3 8238 +perft 4 370565 +perft 5 5176127 +perft 6 224271664 + +id gentest-1620 +epd 3N4/3k4/n1r5/4Q2p/7P/2R1B3/8/3K4 w - - +perft 1 49 +perft 2 683 +perft 3 30591 +perft 4 409940 +perft 5 17506453 +perft 6 249442059 + +id gentest-1621 +epd 3N4/2nk4/2r5/4Q2p/7P/3RB3/3K4/8 b - - +perft 1 3 +perft 2 132 +perft 3 1828 +perft 4 73773 +perft 5 1093808 +perft 6 44024345 + +id gentest-1622 +epd 3N4/3k4/3r4/2Qn3p/7P/3RB3/3K4/8 w - - +perft 1 36 +perft 2 534 +perft 3 19538 +perft 4 263921 +perft 5 9792133 +perft 6 145299770 + +id gentest-1623 +epd 2kN4/8/3r4/1Q1n3p/7P/3RB3/2K5/8 b - - +perft 1 19 +perft 2 745 +perft 3 12414 +perft 4 506864 +perft 5 8008927 +perft 6 325847693 + +id gentest-1624 +epd 2k5/1N6/8/1Q1n3p/7P/3RBr2/2K5/8 w - - +perft 1 42 +perft 2 713 +perft 3 27558 +perft 4 447796 +perft 5 17615450 +perft 6 288100486 + +id gentest-1625 +epd 2kN4/5r2/8/1Q1n3p/7P/1K1RB3/8/8 b - - +perft 1 24 +perft 2 949 +perft 3 15413 +perft 4 631251 +perft 5 9959952 +perft 6 409291606 + +id gentest-1626 +epd 2kN1r2/2n5/2Q5/7p/7P/1K1RB3/8/8 w - - +perft 1 53 +perft 2 630 +perft 3 30338 +perft 4 407444 +perft 5 18229535 +perft 6 265898430 + +id gentest-1627 +epd 2kNQr2/8/4n3/7p/5B1P/1K1R4/8/8 b - - +perft 1 14 +perft 2 539 +perft 3 7015 +perft 4 277690 +perft 5 3880475 +perft 6 150366829 + +id gentest-1628 +epd 2kn4/8/8/4Q2p/5r1P/1K1R4/8/8 w - - +perft 1 42 +perft 2 665 +perft 3 24112 +perft 4 382016 +perft 5 13099081 +perft 6 213100252 + +id gentest-1629 +epd 2k5/1n6/8/4Q2p/5r1P/5R2/2K5/8 b - - +perft 1 18 +perft 2 759 +perft 3 11564 +perft 4 425290 +perft 5 6769882 +perft 6 232831904 + +id gentest-1630 +epd 3k4/1n6/8/4Q2p/1r5P/5R2/1K6/8 w - - +perft 1 7 +perft 2 117 +perft 3 4361 +perft 4 60989 +perft 5 2049095 +perft 6 31035441 + +id gentest-1631 +epd 3k4/8/8/2n1Q2p/1r5P/6R1/8/2K5 b - - +perft 1 24 +perft 2 821 +perft 3 13386 +perft 4 450321 +perft 5 7537886 +perft 6 243691616 + +id gentest-1632 +epd 4k3/8/8/2n3Qp/7P/1r4R1/8/2K5 w - - +perft 1 28 +perft 2 463 +perft 3 13666 +perft 4 224525 +perft 5 6775391 +perft 6 111314598 + +id gentest-1633 +epd 8/4k3/8/2n2Q1p/7P/1r4R1/8/2K5 b - - +perft 1 23 +perft 2 788 +perft 3 13735 +perft 4 427572 +perft 5 7419724 +perft 6 227867699 + +id gentest-1634 +epd 5k2/7Q/8/2n4p/7P/4r1R1/8/2K5 w - - +perft 1 32 +perft 2 512 +perft 3 14021 +perft 4 221460 +perft 5 6348161 +perft 6 102185434 + +id gentest-1635 +epd 5k2/3n1Q2/8/7p/7P/4r1R1/3K4/8 b - - +perft 1 1 +perft 2 14 +perft 3 284 +perft 4 4279 +perft 5 86014 +perft 6 1328089 + +id gentest-1636 +epd 8/5k2/8/2n4p/7P/4R3/3K4/8 w - - +perft 1 20 +perft 2 258 +perft 3 4495 +perft 4 53017 +perft 5 919586 +perft 6 10044737 + +id gentest-1637 +epd 8/8/5k2/2n4p/7P/1R6/3K4/8 b - - +perft 1 15 +perft 2 285 +perft 3 3630 +perft 4 63665 +perft 5 755794 +perft 6 13361197 + +id gentest-1638 +epd 8/1n6/8/4k2p/7P/8/3K4/1R6 w - - +perft 1 21 +perft 2 222 +perft 3 4070 +perft 4 41364 +perft 5 743974 +perft 6 7745150 + +id gentest-1639 +epd 8/1n6/8/5k1p/7P/8/8/1RK5 b - - +perft 1 11 +perft 2 125 +perft 3 1318 +perft 4 21948 +perft 5 234194 +perft 6 4011681 + +id gentest-1640 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-1641 +epd r1bqkbnr/pppppppp/2n5/8/3P1B2/8/PPP1PPPP/RN1QKBNR b KQkq - +perft 1 22 +perft 2 698 +perft 3 16762 +perft 4 532558 +perft 5 13830060 +perft 6 447815701 + +id gentest-1642 +epd r1bqkbnr/ppp2ppp/2np4/4p3/3PPB2/8/PPP2PPP/RN1QKBNR w KQkq - +perft 1 40 +perft 2 1375 +perft 3 53941 +perft 4 1847613 +perft 5 71349363 +perft 6 2459614646 + +id gentest-1643 +epd r1bq1bnr/pppk1ppp/2np4/4p3/3PPB2/6P1/PPP1KP1P/RN1Q1BNR b - - +perft 1 31 +perft 2 1016 +perft 3 30780 +perft 4 1036367 +perft 5 31838047 +perft 6 1085683121 + +id gentest-1644 +epd r1bq1bnr/pppk1pp1/2np4/7p/3PPp1P/6P1/PPP1KP2/RN1Q1BNR w - - +perft 1 28 +perft 2 861 +perft 3 24532 +perft 4 764370 +perft 5 22821415 +perft 6 723774483 + +id gentest-1645 +epd r1bq1bnr/pppk1pp1/3p4/4n2p/3PPp1P/N4PP1/PPP1K3/R2Q1BNR b - - +perft 1 34 +perft 2 891 +perft 3 29437 +perft 4 820131 +perft 5 27167103 +perft 6 791052140 + +id gentest-1646 +epd r1bq1bnr/pppk1p2/3p4/6pp/3PPpnP/N1P2PP1/PP2K3/R2Q1BNR w - - +perft 1 30 +perft 2 948 +perft 3 29183 +perft 4 914777 +perft 5 28805208 +perft 6 912753139 + +id gentest-1647 +epd r1bq1bn1/pppk1p1r/3p4/6pp/3PPpnP/N1P2PPR/PP2K3/2RQ1BN1 b - - +perft 1 34 +perft 2 925 +perft 3 30150 +perft 4 864286 +perft 5 28304050 +perft 6 844107148 + +id gentest-1648 +epd r1b1q1n1/pppk1p1r/3p3b/3P2pp/4PpnP/N1P2PPR/PP2K3/2RQ1BN1 w - - +perft 1 27 +perft 2 781 +perft 3 21814 +perft 4 653206 +perft 5 19205433 +perft 6 593257382 + +id gentest-1649 +epd r1b3nQ/pppk1p1r/3pq2b/3P2pp/4PpnP/N1P2PPR/PP2K3/2R2BN1 b - - +perft 1 33 +perft 2 944 +perft 3 29981 +perft 4 892116 +perft 5 28111139 +perft 6 860947660 + +id gentest-1650 +epd r1b3nQ/pppk3r/3p1p1b/3q2pp/4PpnP/NPP2PPR/P3K3/2R2BN1 w - - +perft 1 24 +perft 2 895 +perft 3 20973 +perft 4 752791 +perft 5 19442231 +perft 6 685288575 + +id gentest-1651 +epd r1b3n1/ppp4r/2kp1pQb/3q2pp/4PpnP/NPP2PPR/P3K3/2R2BN1 b - - +perft 1 40 +perft 2 1057 +perft 3 39826 +perft 4 1125940 +perft 5 41946032 +perft 6 1242778472 + +id gentest-1652 +epd r1b3n1/ppp4r/1k1p1pQb/2q3pp/4PpnP/NPP2PPR/P3K3/1R3BN1 w - - +perft 1 31 +perft 2 1191 +perft 3 35175 +perft 4 1338685 +perft 5 40837818 +perft 6 1553708687 + +id gentest-1653 +epd r1b3n1/ppp4r/1k1p1p1b/5Qpp/4PpnP/NPq2PPR/P3K3/4RBN1 b - - +perft 1 42 +perft 2 1046 +perft 3 39206 +perft 4 1003922 +perft 5 38219167 +perft 6 1020463489 + +id gentest-1654 +epd r1b5/ppp1n2r/1k1p1p1b/5Qpp/4PpnP/NP3PPR/Pq2K1B1/4R1N1 w - - +perft 1 4 +perft 2 160 +perft 3 4441 +perft 4 167517 +perft 5 4665407 +perft 6 182319417 + +id gentest-1655 +epd r1b5/ppp1nr2/1k1p1p1b/4PQpp/5pnP/NP1K1PPR/Pq4B1/4R1N1 b - - +perft 1 45 +perft 2 1280 +perft 3 54879 +perft 4 1577379 +perft 5 65988601 +perft 6 1917677611 + +id gentest-1656 +epd r1b5/1pp1n1r1/pk1p1p1b/4P1Qp/5pnP/NP1K1PPR/Pq4B1/4R1N1 w - - +perft 1 33 +perft 2 1468 +perft 3 39467 +perft 4 1693697 +perft 5 46182148 +perft 6 1946000109 + +id gentest-1657 +epd r1b5/1pp3r1/pk1p1pnb/4P1Qp/1P3pnP/N2K1PP1/Pq4B1/4R1NR b - - +perft 1 46 +perft 2 1162 +perft 3 51074 +perft 4 1328473 +perft 5 57332876 +perft 6 1539176461 + +id gentest-1658 +epd r1b4n/1pp3r1/pk1p1p2/4P1bp/1P3pnP/N2K1PP1/Pq6/4RBNR w - - +perft 1 27 +perft 2 1184 +perft 3 25395 +perft 4 1094209 +perft 5 23998443 +perft 6 1020315821 + +id gentest-1659 +epd r1b4n/1pp3r1/pk1p1p2/4P1bp/1P3p1P/N2KnPP1/Pq6/2R2BNR b - - +perft 1 50 +perft 2 1207 +perft 3 54515 +perft 4 1290097 +perft 5 57293636 +perft 6 1349621763 + +id gentest-1660 +epd r1b5/1pp2nr1/pk1p1p2/4P1bp/1P3p1P/N2KnPP1/P1R5/5BNR w - - +perft 1 34 +perft 2 1066 +perft 3 31830 +perft 4 1018632 +perft 5 29282850 +perft 6 960854646 + +id gentest-1661 +epd r1b5/1pp2nr1/pk1p1p2/4P1bp/1P3p1P/N2K1PPR/P1n1N3/5B2 b - - +perft 1 32 +perft 2 671 +perft 3 21367 +perft 4 463014 +perft 5 15121170 +perft 6 338650402 + +id gentest-1662 +epd r7/1pp2nr1/pk1p1p2/1P2P1bp/5p1P/N2K1PPb/P3N3/4nB2 w - - +perft 1 5 +perft 2 198 +perft 3 3769 +perft 4 140774 +perft 5 2796395 +perft 6 102980250 + +id gentest-1663 +epd r7/1pp2nr1/pk1p1p2/1P2P1bp/5p1P/N1K2PP1/P7/4nbN1 b - - +perft 1 39 +perft 2 647 +perft 3 23866 +perft 4 390034 +perft 5 14505339 +perft 6 240030556 + +id gentest-1664 +epd r7/1pp3r1/pk1P4/1P2npbp/5p1P/N1K2PP1/P7/4nbN1 w - - +perft 1 16 +perft 2 690 +perft 3 11027 +perft 4 464014 +perft 5 7657451 +perft 6 314617527 + +id gentest-1665 +epd r7/1ppP3r/pk6/1P2npbp/1K3p1P/N4PP1/P7/4nbN1 b - - +perft 1 43 +perft 2 592 +perft 3 22804 +perft 4 364639 +perft 5 13685924 +perft 6 241295291 + +id gentest-1666 +epd 8/rppP1r2/pk6/1P2npPp/1K3p2/N4PP1/P7/4nbN1 w - - +perft 1 16 +perft 2 453 +perft 3 7088 +perft 4 202471 +perft 5 3552164 +perft 6 102628542 + +id gentest-1667 +epd 8/rppP1r2/pk6/1P2npPp/1K3p2/P4PPb/8/1N2n1N1 b - - +perft 1 27 +perft 2 356 +perft 3 9885 +perft 4 152966 +perft 5 4235635 +perft 6 72826743 + +id gentest-1668 +epd 8/rppP2r1/pkn3P1/1P3p1p/1K3p2/P4PPb/8/1N2n1N1 w - - +perft 1 5 +perft 2 127 +perft 3 1892 +perft 4 50333 +perft 5 853400 +perft 6 22801682 + +id gentest-1669 +epd 3R4/rpp3r1/1kn3P1/1p3p1p/5p2/P1K2PPb/8/1N2n1N1 b - - +perft 1 31 +perft 2 673 +perft 3 20901 +perft 4 421426 +perft 5 13037819 +perft 6 261668591 + +id gentest-1670 +epd 5Rr1/rpp5/1k4P1/1p3p1p/3n1p2/P1K2PPb/8/1N2n1N1 w - - +perft 1 20 +perft 2 602 +perft 3 10904 +perft 4 333675 +perft 5 6180047 +perft 6 189894563 + +id gentest-1671 +epd 6R1/rpp5/1kn3P1/1p3p1p/5P2/P1K2P1b/8/1N2n1N1 b - - +perft 1 24 +perft 2 377 +perft 3 9222 +perft 4 157077 +perft 5 3805373 +perft 6 68934616 + +id gentest-1672 +epd 6R1/rpp5/1k4P1/1p3p1p/5P2/P4P1b/n2K4/1N2n1N1 w - - +perft 1 17 +perft 2 384 +perft 3 6862 +perft 4 155066 +perft 5 2917966 +perft 6 65932630 + +id gentest-1673 +epd 8/1pp3R1/1k4P1/1p3p1p/r4P2/P4P1b/n7/1N1Kn1N1 b - - +perft 1 29 +perft 2 372 +perft 3 9897 +perft 4 157026 +perft 5 3903512 +perft 6 67963918 + +id gentest-1674 +epd 8/1pp3R1/1k4P1/1p3p1p/5P2/5r1b/n2N4/3Kn1N1 w - - +perft 1 17 +perft 2 410 +perft 3 7322 +perft 4 174492 +perft 5 3204591 +perft 6 75799829 + +id gentest-1675 +epd 8/1pp2R2/1k4P1/1p3p1p/1n3P2/5r1b/8/1N1Kn1N1 b - - +perft 1 29 +perft 2 523 +perft 3 13923 +perft 4 251721 +perft 5 6543361 +perft 6 121081033 + +id gentest-1676 +epd 8/1pp2R2/1k4P1/1p1n1p1p/5P2/r6b/8/1N2K1N1 w - - +perft 1 19 +perft 2 542 +perft 3 10206 +perft 4 269851 +perft 5 5230917 +perft 6 132852410 + +id gentest-1677 +epd 8/1pp5/3R2P1/1pkn1p1p/5P2/r6b/8/1N2K1N1 b - - +perft 1 32 +perft 2 587 +perft 3 15403 +perft 4 291640 +perft 5 7270851 +perft 6 142111868 + +id gentest-1678 +epd 8/1pp5/R5P1/1pk2p1p/5Pb1/r3n3/8/1N2K1N1 w - - +perft 1 19 +perft 2 478 +perft 3 8309 +perft 4 207292 +perft 5 3752992 +perft 6 92237184 + +id gentest-1679 +epd 8/1pp5/R5P1/1pk2p1p/5Pb1/r6N/2n5/1N3K2 b - - +perft 1 30 +perft 2 513 +perft 3 13958 +perft 4 241839 +perft 5 6211778 +perft 6 111962279 + +id gentest-1680 +epd 8/2p5/rp4P1/1pk2p1p/5Pb1/7N/2n3K1/1N6 w - - +perft 1 13 +perft 2 333 +perft 3 3987 +perft 4 97718 +perft 5 1248438 +perft 6 30151131 + +id gentest-1681 +epd 8/2p5/rp4P1/1pk2pNp/5P2/8/2n1bK2/1N6 b - - +perft 1 28 +perft 2 399 +perft 3 9565 +perft 4 140045 +perft 5 3382179 +perft 6 50230671 + +id gentest-1682 +epd 8/2p5/rp4P1/1pk2pNp/5P2/3bn3/3N1K2/8 w - - +perft 1 18 +perft 2 407 +perft 3 6261 +perft 4 151819 +perft 5 2300514 +perft 6 57216565 + +id gentest-1683 +epd 8/2p5/rp4P1/1pk2pNp/5P2/4n3/3N1K2/1b6 b - - +perft 1 26 +perft 2 461 +perft 3 10227 +perft 4 166524 +perft 5 3861964 +perft 6 61453132 + +id gentest-1684 +epd 8/2p5/rp4P1/1pk2p1p/4bP2/4n3/3N1K2/8 w - - +perft 1 12 +perft 2 324 +perft 3 3394 +perft 4 92495 +perft 5 988752 +perft 6 26826597 + +id gentest-1685 +epd 8/2p5/1p4P1/1pk2p1p/4bP2/4n2K/r2N4/8 b - - +perft 1 35 +perft 2 331 +perft 3 9561 +perft 4 87344 +perft 5 2610667 +perft 6 25520911 + +id gentest-1686 +epd 8/2p5/1p4P1/rp3p1p/1k2bP2/1N2n2K/8/8 w - - +perft 1 10 +perft 2 311 +perft 3 2966 +perft 4 82278 +perft 5 841528 +perft 6 23129482 + +id gentest-1687 +epd 8/2p5/1p4P1/rp3p2/1k2bP1p/4n3/7K/N7 b - - +perft 1 32 +perft 2 154 +perft 3 4036 +perft 4 26138 +perft 5 700612 +perft 6 6156431 + +id gentest-1688 +epd 8/2p5/1p4P1/1p3p2/1kn1bP1p/7K/8/r7 w - - +perft 1 3 +perft 2 118 +perft 3 502 +perft 4 17802 +perft 5 126733 +perft 6 4086611 + +id gentest-1689 +epd 6N1/2p5/1p6/1p3p2/1k2bP1p/7K/3n4/r7 b - - +perft 1 38 +perft 2 181 +perft 3 6266 +perft 4 41937 +perft 5 1295356 +perft 6 9494271 + +id gentest-1690 +epd 8/1bp5/1p3N2/1p3p2/1k3P1p/1n5K/8/r7 w - - +perft 1 10 +perft 2 327 +perft 3 2407 +perft 4 76771 +perft 5 586917 +perft 6 17294148 + +id gentest-1691 +epd 8/1bp5/1p6/1p3p2/5P1p/kn2N2K/8/r7 b - - +perft 1 29 +perft 2 276 +perft 3 6537 +perft 4 52265 +perft 5 1428931 +perft 6 11644123 + +id gentest-1692 +epd 8/2p5/1p6/1p3p2/1k3P1p/1n2N3/6K1/r7 w - - +perft 1 11 +perft 2 250 +perft 3 2619 +perft 4 58772 +perft 5 547214 +perft 6 12056817 + +id gentest-1693 +epd 8/2p5/1p6/1p3p2/5P1p/1nk1N3/6K1/r7 b - - +perft 1 28 +perft 2 308 +perft 3 7047 +perft 4 74771 +perft 5 1740511 +perft 6 16532141 + +id gentest-1694 +epd 8/2p5/1p6/1p3p2/5P1p/r1k5/3n2K1/5N2 w - - +perft 1 9 +perft 2 216 +perft 3 1809 +perft 4 42095 +perft 5 357935 +perft 6 8204087 + +id gentest-1695 +epd 8/2p5/1p6/1p3p2/5P1p/r1k2n1K/8/5N2 b - - +perft 1 25 +perft 2 131 +perft 3 3245 +perft 4 21816 +perft 5 504349 +perft 6 3827575 + +id gentest-1696 +epd 8/2p5/1p6/1p3p2/5P1p/2k2n1K/7N/r7 w - - +perft 1 4 +perft 2 118 +perft 3 805 +perft 4 20837 +perft 5 151496 +perft 6 3556369 + +id gentest-1697 +epd 8/2p5/1p5N/1p3p2/5P1p/2k2n1K/8/3r4 b - - +perft 1 32 +perft 2 161 +perft 3 4609 +perft 4 32236 +perft 5 863514 +perft 6 6709404 + +id gentest-1698 +epd 3r4/2p5/1p5N/1p2np2/5P1K/2k5/8/8 w - - +perft 1 9 +perft 2 289 +perft 3 2544 +perft 4 72169 +perft 5 685308 +perft 6 17922249 + +id gentest-1699 +epd 6r1/2p5/1p5N/1p2np2/5P1K/2k5/8/8 b - - +perft 1 33 +perft 2 225 +perft 3 6326 +perft 4 48880 +perft 5 1267227 +perft 6 11097394 + +id gentest-1700 +epd 6N1/2p5/1pn5/1p3p2/3k1P1K/8/8/8 w - - +perft 1 7 +perft 2 102 +perft 3 887 +perft 4 12510 +perft 5 114325 +perft 6 1552003 + +id gentest-1701 +epd 8/2p5/1pn2N2/1pk2pK1/5P2/8/8/8 b - - +perft 1 13 +perft 2 166 +perft 3 1956 +perft 4 20988 +perft 5 259410 +perft 6 2676981 + +id gentest-1702 +epd 1n6/2p5/1p3N2/2k2K2/1p3P2/8/8/8 w - - +perft 1 14 +perft 2 145 +perft 3 1731 +perft 4 18272 +perft 5 217750 +perft 6 2426116 + +id gentest-1703 +epd 1n6/2p5/1p3N2/8/1pk2P2/5K2/8/8 b - - +perft 1 13 +perft 2 203 +perft 3 2469 +perft 4 33500 +perft 5 400985 +perft 6 5234102 + +id gentest-1704 +epd 8/8/np6/2p5/1pk1NP2/5K2/8/8 w - - +perft 1 15 +perft 2 128 +perft 3 1843 +perft 4 17389 +perft 5 236542 +perft 6 2455407 + +id gentest-1705 +epd 8/8/np6/2pk2N1/1p3P2/8/4K3/8 b - - +perft 1 9 +perft 2 131 +perft 3 1311 +perft 4 17226 +perft 5 183549 +perft 6 2295646 + +id gentest-1706 +epd 8/2k2N2/np6/2p5/1p3P2/8/4K3/8 w - - +perft 1 15 +perft 2 141 +perft 3 1904 +perft 4 18958 +perft 5 242500 +perft 6 2526341 + +id gentest-1707 +epd 8/2k5/np6/6N1/1pp2P2/8/8/3K4 b - - +perft 1 12 +perft 2 142 +perft 3 1681 +perft 4 19693 +perft 5 239437 +perft 6 2755503 + +id gentest-1708 +epd 1n6/2k5/1p6/6N1/2p2P2/1p6/3K4/8 w - - +perft 1 13 +perft 2 145 +perft 3 1737 +perft 4 20833 +perft 5 245332 +perft 6 3121255 + +id gentest-1709 +epd 1n6/3k4/1p6/6N1/1Kp2P2/1p6/8/8 b - - +perft 1 12 +perft 2 130 +perft 3 1468 +perft 4 15574 +perft 5 183568 +perft 6 1922645 + +id gentest-1710 +epd 1n6/8/1p1kN3/8/1K3P2/1pp5/8/8 w - - +perft 1 14 +perft 2 145 +perft 3 1679 +perft 4 18981 +perft 5 206719 +perft 6 2534888 + +id gentest-1711 +epd 8/8/np1kN3/8/5P2/2K5/8/8 b - - +perft 1 10 +perft 2 140 +perft 3 1485 +perft 4 18636 +perft 5 196273 +perft 6 2374843 + +id gentest-1712 +epd 4n3/8/1p1kN3/8/5P2/8/2K5/8 w - - +perft 1 16 +perft 2 147 +perft 3 2087 +perft 4 22063 +perft 5 287971 +perft 6 3155701 + +id gentest-1713 +epd 8/6n1/1p1kN3/8/5P2/2K5/8/8 b - - +perft 1 10 +perft 2 140 +perft 3 1453 +perft 4 18537 +perft 5 200737 +perft 6 2425074 + +id gentest-1714 +epd 8/6N1/1p6/8/4kP2/2K5/8/8 w - - +perft 1 11 +perft 2 63 +perft 3 726 +perft 4 4912 +perft 5 56805 +perft 6 405243 + +id gentest-1715 +epd 8/6N1/1p6/8/5k2/8/8/3K4 b - - +perft 1 8 +perft 2 69 +perft 3 499 +perft 4 5068 +perft 5 35413 +perft 6 383252 + +id gentest-1716 +epd 8/6N1/1p6/8/5k2/8/2K5/8 w - - +perft 1 12 +perft 2 91 +perft 3 1032 +perft 4 7624 +perft 5 86951 +perft 6 624933 + +id gentest-1717 +epd 8/6N1/8/1p6/5k2/8/4K3/8 b - - +perft 1 6 +perft 2 64 +perft 3 422 +perft 4 4550 +perft 5 29864 +perft 6 331785 + +id gentest-1718 +epd 8/8/4N3/1p1k4/8/8/4K3/8 w - - +perft 1 16 +perft 2 110 +perft 3 1415 +perft 4 9597 +perft 5 115738 +perft 6 826289 + +id gentest-1719 +epd 8/8/4N3/1p6/2k5/8/4K3/8 b - - +perft 1 5 +perft 2 77 +perft 3 527 +perft 4 6993 +perft 5 45719 +perft 6 571364 + +id gentest-1720 +epd 8/2N5/8/1p6/8/2k5/4K3/8 w - - +perft 1 12 +perft 2 84 +perft 3 996 +perft 4 7043 +perft 5 83303 +perft 6 543409 + +id gentest-1721 +epd 8/2N5/8/1p6/8/1k6/4K3/8 b - - +perft 1 9 +perft 2 120 +perft 3 762 +perft 4 9426 +perft 5 59221 +perft 6 713529 + +id gentest-1722 +epd 8/8/8/1p1N4/2k5/8/4K3/8 w - - +perft 1 15 +perft 2 84 +perft 3 1093 +perft 4 7180 +perft 5 88622 +perft 6 580280 + +id gentest-1723 +epd 8/8/8/1p1N4/8/1k6/4K3/8 b - - +perft 1 7 +perft 2 108 +perft 3 629 +perft 4 8773 +perft 5 52589 +perft 6 687352 + +id gentest-1724 +epd 8/8/8/3N4/kp6/3K4/8/8 w - - +perft 1 15 +perft 2 69 +perft 3 929 +perft 4 4490 +perft 5 59162 +perft 6 344119 + +id gentest-1725 +epd 8/8/8/1k6/1p6/2N1K3/8/8 b - - +perft 1 7 +perft 2 100 +perft 3 657 +perft 4 8172 +perft 5 57960 +perft 6 699150 + +id gentest-1726 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-1727 +epd rnbqkbnr/pppp1ppp/4p3/8/3P4/7P/PPP1PPP1/RNBQKBNR b KQkq - +perft 1 30 +perft 2 783 +perft 3 23856 +perft 4 654281 +perft 5 20362581 +perft 6 588595079 + +id gentest-1728 +epd rnbqk1nr/ppp2ppp/3pp3/8/1b1P4/2N4P/PPP1PPP1/R1BQKBNR w KQkq - +perft 1 22 +perft 2 722 +perft 3 17409 +perft 4 576820 +perft 5 15198298 +perft 6 506936440 + +id gentest-1729 +epd rnbq2nr/ppp1kppp/3pp3/8/1b1P2PP/2N5/PPP1PP2/R1BQKBNR b KQ - +perft 1 31 +perft 2 767 +perft 3 23306 +perft 4 634738 +perft 5 19587475 +perft 6 571077765 + +id gentest-1730 +epd rn1q2nr/p1pbkppp/3pp3/1p6/1b1P2PP/2N4N/PPP1PP2/R1BQKB1R w KQ - +perft 1 25 +perft 2 696 +perft 3 18548 +perft 4 530445 +perft 5 15291018 +perft 6 447520000 + +id gentest-1731 +epd r2q2nr/p1pbkppp/2npp3/1p4P1/1b1P1N1P/2N5/PPP1PP2/R1BQKB1R b KQ - +perft 1 29 +perft 2 777 +perft 3 21880 +perft 4 630054 +perft 5 18623880 +perft 6 571548710 + +id gentest-1732 +epd 1r1q2nr/p1pbkppp/2npp3/bp4P1/3P1N1P/2N5/PPP1PP1R/R1BQKB2 w Q - +perft 1 28 +perft 2 734 +perft 3 21354 +perft 4 594631 +perft 5 18314499 +perft 6 533991110 + +id gentest-1733 +epd r2q2nr/p1pbkppp/2npp3/bp4P1/3P1N1P/2N1P3/PPPQ1P1R/R1B1KB2 b Q - +perft 1 28 +perft 2 1087 +perft 3 29800 +perft 4 1081824 +perft 5 31187304 +perft 6 1107261345 + +id gentest-1734 +epd r2q2nr/p1pbkppp/2n5/bp1p2P1/3P3P/2N1P3/PPPQ1P1R/R1B1KB2 w Q - +perft 1 31 +perft 2 970 +perft 3 29185 +perft 4 947889 +perft 5 28559963 +perft 6 952494107 + +id gentest-1735 +epd r4qnr/p1pbkppp/2n5/bp1p2P1/2BP3P/4P3/PPPQ1P1R/R1BNK3 b Q - +perft 1 38 +perft 2 957 +perft 3 33861 +perft 4 902629 +perft 5 31629371 +perft 6 881908752 + +id gentest-1736 +epd r4qnr/p1p1kpp1/2n4p/bp1p2P1/3P3P/1B2P2b/PPPQ1P1R/R1BNK3 w Q - +perft 1 22 +perft 2 798 +perft 3 18719 +perft 4 674094 +perft 5 17011653 +perft 6 612906090 + +id gentest-1737 +epd r4qnr/p1p1kpp1/1bn4p/Qp1p2P1/2PP3P/1B2P2b/PP3P1R/R1BNK3 b Q - +perft 1 40 +perft 2 1166 +perft 3 43560 +perft 4 1284082 +perft 5 47807160 +perft 6 1446984917 + +id gentest-1738 +epd r4qnr/p1p1kp2/1b4pp/Qp1p2P1/PnPP3P/1B2P2b/1P3P1R/R1BNK3 w Q - +perft 1 26 +perft 2 1008 +perft 3 26947 +perft 4 1007776 +perft 5 28582004 +perft 6 1048259996 + +id gentest-1739 +epd r5nr/p1p1kpq1/1Q4pp/1p1p2P1/PnPP3P/1B2P2b/1P1K1P1R/R1BN4 b - - +perft 1 41 +perft 2 1370 +perft 3 47361 +perft 4 1548791 +perft 5 52859634 +perft 6 1723036267 + +id gentest-1740 +epd 1r4nr/2p1kpq1/pQ4pp/1p1p2P1/PnPP3P/1B2P2b/1P2KP1R/R1BN4 w - - +perft 1 36 +perft 2 1229 +perft 3 41265 +perft 4 1395628 +perft 5 46329470 +perft 6 1566550761 + +id gentest-1741 +epd 1r4nr/2p1kp2/pQ3qpp/1p1p2P1/PnPP3P/4P2b/BP3P1R/R1BNK3 b - - +perft 1 44 +perft 2 1344 +perft 3 49139 +perft 4 1480083 +perft 5 53940679 +perft 6 1636805679 + +id gentest-1742 +epd 6nr/2p1kp2/pr3qpp/1p1p2P1/PnPP3P/1P2P3/B4P1R/R1BNKb2 w - - +perft 1 23 +perft 2 871 +perft 3 19147 +perft 4 729025 +perft 5 16476562 +perft 6 633021776 + +id gentest-1743 +epd 3k2nr/2p2p2/pr3qpp/1P1p2P1/Pn1P1P1P/1P2P3/B6R/R1BNKb2 b - - +perft 1 38 +perft 2 932 +perft 3 35704 +perft 4 845787 +perft 5 32595213 +perft 6 772504410 + +id gentest-1744 +epd 4k1nr/2p2p2/p3rqpp/1P1p2P1/Pn1P1P1P/1P2P3/7R/RBBNKb2 w - - +perft 1 34 +perft 2 1243 +perft 3 36934 +perft 4 1373036 +perft 5 39559740 +perft 6 1482212181 + +id gentest-1745 +epd 4k1nr/2p1qp2/p3r1pp/1P1p2P1/Pn1P1P1P/1P2P3/7R/RBBNKb2 b - - +perft 1 37 +perft 2 1125 +perft 3 42363 +perft 4 1233688 +perft 5 46735290 +perft 6 1334968007 + +id gentest-1746 +epd 4k1nr/2p2p2/p3r1pp/1P1p3q/Pn1P1P1P/1P2P3/4R3/RBBNKb2 w - - +perft 1 29 +perft 2 1065 +perft 3 26920 +perft 4 992157 +perft 5 24828455 +perft 6 919598899 + +id gentest-1747 +epd 4k1nr/2p2p2/p3r1pp/1P1p3q/Pn1P1P1P/1P1bP3/4R3/RBBNK3 b - - +perft 1 39 +perft 2 947 +perft 3 36555 +perft 4 854150 +perft 5 32717046 +perft 6 760190322 + +id gentest-1748 +epd 4k1nr/2p5/pr4pp/1P1p1p1q/Pn1P1P1P/1P1bP3/3KR3/RBBN4 w - - +perft 1 19 +perft 2 650 +perft 3 12933 +perft 4 449344 +perft 5 9392771 +perft 6 331664439 + +id gentest-1749 +epd 5knr/2p5/pr4pp/PP1p1p1q/1n1P1P1P/1P1bP3/1B1KR3/RB1N4 b - - +perft 1 32 +perft 2 659 +perft 3 21664 +perft 4 458391 +perft 5 15496321 +perft 6 341638413 + +id gentest-1750 +epd 5knr/2p5/p1r4p/PP1p1ppq/1n1P1P1P/1P1bP3/RB1KR3/1B1N4 w - - +perft 1 22 +perft 2 783 +perft 3 16988 +perft 4 605152 +perft 5 13600590 +perft 6 489048892 + +id gentest-1751 +epd 4k1nr/2p5/P1r4p/P2p1ppq/1n1P1P1P/1P1bP3/R2KR3/1BBN4 b - - +perft 1 38 +perft 2 765 +perft 3 28913 +perft 4 604281 +perft 5 22777530 +perft 6 498388939 + +id gentest-1752 +epd 6n1/2p1k2r/P1r4p/P2p1ppq/1n1P1P1P/1P1bP3/3KR3/RBBN4 w - - +perft 1 20 +perft 2 857 +perft 3 17415 +perft 4 713914 +perft 5 15374450 +perft 6 614856095 + +id gentest-1753 +epd 6n1/2p1k2r/P1r4p/P2p1ppq/1n1PPP1P/1P6/3K4/RBBNRb2 b - - +perft 1 47 +perft 2 990 +perft 3 41283 +perft 4 922744 +perft 5 37549394 +perft 6 881317498 + +id gentest-1754 +epd 6n1/2p1k2r/P2r3p/P2p1ppq/1n1PPP1P/1P5b/B2K4/R1BNR3 w - - +perft 1 21 +perft 2 805 +perft 3 17403 +perft 4 666709 +perft 5 15069815 +perft 6 571816879 + +id gentest-1755 +epd 6n1/2p1k2r/P2r3p/P2p1pP1/1n1PP2P/1P2K2b/B7/R1BqR3 b - - +perft 1 44 +perft 2 666 +perft 3 28743 +perft 4 476606 +perft 5 19786683 +perft 6 355309278 + +id gentest-1756 +epd 6n1/2prk2r/P6p/P2p1pP1/1n1PP2P/1P2K2b/B7/R1B2qR1 w - - +perft 1 18 +perft 2 689 +perft 3 10743 +perft 4 405499 +perft 5 7161030 +perft 6 267458043 + +id gentest-1757 +epd 6n1/2prk2r/P6p/P2p2P1/1n1Pp2P/BP2K2b/B7/1R3qR1 b - - +perft 1 38 +perft 2 624 +perft 3 22147 +perft 4 408389 +perft 5 14549536 +perft 6 290950479 + +id gentest-1758 +epd 6n1/2pr3r/P2k2Pp/P2p4/1n1Pp1bP/BP2K3/B7/1R3qR1 w - - +perft 1 19 +perft 2 716 +perft 3 12552 +perft 4 434865 +perft 5 8448946 +perft 6 282844138 + +id gentest-1759 +epd 6n1/2p2r1r/P2k2Pp/P2p4/1n1Pp1bP/1P2K3/BB6/R4qR1 b - - +perft 1 52 +perft 2 849 +perft 3 38690 +perft 4 706272 +perft 5 29381336 +perft 6 583537005 + +id gentest-1760 +epd 6nr/2p3r1/P2k2Pp/P2p4/1n1Pp1bP/1P2K3/BB6/5RR1 w - - +perft 1 26 +perft 2 708 +perft 3 18306 +perft 4 485736 +perft 5 12711927 +perft 6 337700354 + +id gentest-1761 +epd 6nr/2p3r1/P2k2Pp/P2p4/3Pp1bP/1P1nKR2/BB6/2R5 b - - +perft 1 30 +perft 2 898 +perft 3 24593 +perft 4 682567 +perft 5 18765955 +perft 6 507617582 + +id gentest-1762 +epd r7/2p3r1/P2k1nPp/P2p4/3Pp1bP/1P1nKR2/BB6/5R2 w - - +perft 1 24 +perft 2 956 +perft 3 23555 +perft 4 897191 +perft 5 22391525 +perft 6 817750581 + +id gentest-1763 +epd r7/2p3r1/P3knPp/P2p4/3Pp1bP/1P1nKR2/1B3R2/1B6 b - - +perft 1 39 +perft 2 907 +perft 3 32554 +perft 4 804004 +perft 5 27822274 +perft 6 709434122 + +id gentest-1764 +epd r7/2p1r1P1/P3kn1p/P2p4/3Pp1bP/1P1nKR2/1B3R2/1B6 w - - +perft 1 27 +perft 2 895 +perft 3 25390 +perft 4 824121 +perft 5 23819309 +perft 6 759310245 + +id gentest-1765 +epd r7/2pr2P1/P3kn1p/P2p3P/3Pp1b1/1P1nK2R/1B3R2/1B6 b - - +perft 1 37 +perft 2 1073 +perft 3 34879 +perft 4 995004 +perft 5 31650022 +perft 6 907464445 + +id gentest-1766 +epd r7/P1pr2Pn/4k2p/P2p3P/3Pp3/1P1nK2R/1B3R2/1B1b4 w - - +perft 1 31 +perft 2 959 +perft 3 29916 +perft 4 912833 +perft 5 28943315 +perft 6 869820309 + +id gentest-1767 +epd 1r6/P1pr2Pn/4k2p/P2p3P/3Pp3/1P2K2R/1BB2R2/3b4 b - - +perft 1 29 +perft 2 1071 +perft 3 27411 +perft 4 989857 +perft 5 24910926 +perft 6 893810186 + +id gentest-1768 +epd 1r4N1/P2r3n/2p1k2p/P2p3P/3Pp3/1P2Kb1R/1BB2R2/8 w - - +perft 1 34 +perft 2 1031 +perft 3 34281 +perft 4 946021 +perft 5 31990350 +perft 6 849913429 + +id gentest-1769 +epd 8/Pr1rN2n/2p1k2p/P2p3P/3Pp2R/1P2Kb2/1BB2R2/8 b - - +perft 1 25 +perft 2 840 +perft 3 20070 +perft 4 688953 +perft 5 16704614 +perft 6 581016877 + +id gentest-1770 +epd 8/r2rN3/2p1k2p/P2p2nP/3Pp3/1P2Kb1R/1BB2R2/8 w - - +perft 1 29 +perft 2 701 +perft 3 21042 +perft 4 510048 +perft 5 15518487 +perft 6 386952852 + +id gentest-1771 +epd 6N1/r2r4/2p1k2p/P2p2nb/3Pp3/1P2K3/1BB2R1R/8 b - - +perft 1 26 +perft 2 772 +perft 3 19717 +perft 4 610211 +perft 5 15797542 +perft 6 498417690 + +id gentest-1772 +epd 3r2N1/r4b2/2p1k2p/P2p2n1/3Pp3/1P2K3/2B2R1R/B7 w - - +perft 1 29 +perft 2 716 +perft 3 21862 +perft 4 545356 +perft 5 16991960 +perft 6 433276533 + +id gentest-1773 +epd 1r4N1/r4b2/2p1k2p/P2p2n1/3PpK2/1P6/2B1R2R/B7 b - - +perft 1 30 +perft 2 780 +perft 3 21367 +perft 4 577067 +perft 5 15948415 +perft 6 448852778 + +id gentest-1774 +epd 1r6/3r1b2/2p2k1p/P2p2n1/3PpK2/1P6/2B1R2R/B7 w - - +perft 1 24 +perft 2 783 +perft 3 18908 +perft 4 580039 +perft 5 14831959 +perft 6 443278467 + +id gentest-1775 +epd 1r6/3r1b2/5k1p/PBpp2n1/3PpK2/1P6/4R2R/B7 b - - +perft 1 33 +perft 2 935 +perft 3 28575 +perft 4 839657 +perft 5 25266360 +perft 6 749119898 + +id gentest-1776 +epd 1r1r4/5bk1/7p/PBpp2n1/3PpK2/1P6/1R5R/B7 w - - +perft 1 34 +perft 2 1052 +perft 3 31825 +perft 4 970075 +perft 5 28246746 +perft 6 853055216 + +id gentest-1777 +epd 1r6/3r1bk1/2B4p/P1pp2n1/3PpK2/1P6/6RR/B7 b - - +perft 1 33 +perft 2 1011 +perft 3 30180 +perft 4 921206 +perft 5 27258414 +perft 6 824303656 + +id gentest-1778 +epd 1r6/3r1b2/2B2k1p/P1pp2n1/3P1K1R/1P2p3/6R1/B7 w - - +perft 1 31 +perft 2 1033 +perft 3 29487 +perft 4 926743 +perft 5 26516964 +perft 6 813193465 + +id gentest-1779 +epd 7r/3r1b2/2B2k1p/P1pp2n1/3P1K1R/1PB1p3/5R2/8 b - - +perft 1 33 +perft 2 992 +perft 3 28757 +perft 4 856608 +perft 5 25350310 +perft 6 752860773 + +id gentest-1780 +epd 7r/r4b2/2B2k1p/P1pp2n1/1B1P1K1R/1P2p3/5R2/8 w - - +perft 1 32 +perft 2 972 +perft 3 29050 +perft 4 889851 +perft 5 26589476 +perft 6 815012788 + +id gentest-1781 +epd 7r/5b2/2B2k1p/r1pp2n1/1B1P1K2/1P2p3/4R3/7R b - - +perft 1 34 +perft 2 1223 +perft 3 40019 +perft 4 1378356 +perft 5 44462155 +perft 6 1484863617 + +id gentest-1782 +epd 6br/8/2B2k1p/r1pp4/3P1K2/1P2pn2/4R3/4B2R w - - +perft 1 35 +perft 2 922 +perft 3 31463 +perft 4 846637 +perft 5 27998300 +perft 6 775606063 + +id gentest-1783 +epd 6br/8/2B2k1p/r1Pp4/6K1/1P2p3/4R3/4B1nR b - - +perft 1 24 +perft 2 703 +perft 3 16110 +perft 4 470795 +perft 5 11403371 +perft 6 333269385 + +id gentest-1784 +epd 6br/5k2/2B4p/r1P5/3p2KB/1P2p3/4R3/6nR w - - +perft 1 34 +perft 2 640 +perft 3 21088 +perft 4 446327 +perft 5 14506590 +perft 6 335338293 + +id gentest-1785 +epd 6br/5k2/2B4p/r1P5/3p2KB/1P2p2R/R3n3/8 b - - +perft 1 21 +perft 2 715 +perft 3 15268 +perft 4 509657 +perft 5 11845830 +perft 6 389257465 + +id gentest-1786 +epd 6br/5k2/R1B4p/1rP5/3p1nKB/1P2p2R/8/8 w - - +perft 1 35 +perft 2 747 +perft 3 26205 +perft 4 568291 +perft 5 19617664 +perft 6 453329239 + +id gentest-1787 +epd 6br/5k2/2B4p/1rP5/5nK1/1P1pp2R/8/R3B3 b - - +perft 1 25 +perft 2 967 +perft 3 23352 +perft 4 832707 +perft 5 21075446 +perft 6 715351309 + +id gentest-1788 +epd 6br/5k2/2B1n2p/2r5/6K1/1PBpp2R/8/R7 w - - +perft 1 47 +perft 2 1123 +perft 3 43779 +perft 4 1091664 +perft 5 40459107 +perft 6 1040877752 + +id gentest-1789 +epd 6bB/2n2k2/7p/2r5/6K1/1P1pp2R/8/R6B b - - +perft 1 27 +perft 2 913 +perft 3 22708 +perft 4 767702 +perft 5 19161665 +perft 6 647793153 + +id gentest-1790 +epd 6bB/2n2k2/7p/8/6K1/1Prp1B1R/4p3/R7 w - - +perft 1 39 +perft 2 894 +perft 3 31680 +perft 4 789802 +perft 5 27467431 +perft 6 727062945 + +id gentest-1791 +epd 6b1/2n2k2/2B2B1p/8/6K1/1r1p3R/4p3/R7 b - - +perft 1 26 +perft 2 1157 +perft 3 30666 +perft 4 1230923 +perft 5 33663026 +perft 6 1259623942 + +id gentest-1792 +epd 1r6/2n2k1b/2B2B1p/8/6K1/3p4/4p3/R6R w - - +perft 1 50 +perft 2 1676 +perft 3 69314 +perft 4 2132580 +perft 5 82354822 +perft 6 2475757012 + +id gentest-1793 +epd 1r6/2n1k2b/2B4p/4B3/6K1/3p4/4p3/R2R4 b - - +perft 1 38 +perft 2 1434 +perft 3 47629 +perft 4 1736488 +perft 5 55292550 +perft 6 1956984792 + +id gentest-1794 +epd 1r6/1B2k2b/n6p/4B3/6K1/3p4/8/R2r4 w - - +perft 1 35 +perft 2 1062 +perft 3 32163 +perft 4 1004452 +perft 5 29618686 +perft 6 938443308 + +id gentest-1795 +epd B4r2/4k2b/n6p/8/6K1/2Bp4/8/R2r4 b - - +perft 1 38 +perft 2 978 +perft 3 33245 +perft 4 876272 +perft 5 29037850 +perft 6 774235763 + +id gentest-1796 +epd B5r1/4k2b/n7/7K/8/2Bp4/8/R2r4 w - - +perft 1 27 +perft 2 908 +perft 3 23777 +perft 4 758115 +perft 5 20095163 +perft 6 633277520 + +id gentest-1797 +epd 6r1/7b/n4k2/7K/8/3p1B2/8/R2r4 b - - +perft 1 36 +perft 2 676 +perft 3 22173 +perft 4 418415 +perft 5 13500384 +perft 6 258648398 + +id gentest-1798 +epd 6r1/6kb/n7/6K1/8/5B2/3p4/R2r4 w - - +perft 1 23 +perft 2 609 +perft 3 12067 +perft 4 377649 +perft 5 7689801 +perft 6 257212678 + +id gentest-1799 +epd 6r1/6k1/n7/8/6K1/5B2/2bp4/3R4 b - - +perft 1 27 +perft 2 446 +perft 3 13195 +perft 4 268630 +perft 5 8163109 +perft 6 171661944 + +id gentest-1800 +epd 6r1/7k/n7/3B4/6K1/8/2bp4/3R4 w - - +perft 1 6 +perft 2 153 +perft 3 3319 +perft 4 88396 +perft 5 1865461 +perft 6 51724292 + +id gentest-1801 +epd 6r1/1B5k/n7/8/8/7K/3p4/1b1R4 b - - +perft 1 28 +perft 2 503 +perft 3 13577 +perft 4 265788 +perft 5 7417473 +perft 6 150607452 + +id gentest-1802 +epd B5r1/7k/8/2n5/8/7K/2bp4/3R4 w - - +perft 1 17 +perft 2 583 +perft 3 10941 +perft 4 358166 +perft 5 6997318 +perft 6 223860471 + +id gentest-1803 +epd BR4r1/3n3k/8/8/8/7K/2bp4/8 b - - +perft 1 35 +perft 2 686 +perft 3 21180 +perft 4 420811 +perft 5 12862726 +perft 6 259426173 + +id gentest-1804 +epd 1R4r1/8/1n5k/8/8/7K/2bp2B1/8 w - - +perft 1 18 +perft 2 593 +perft 3 11562 +perft 4 359830 +perft 5 7250821 +perft 6 222183429 + +id gentest-1805 +epd 6r1/6R1/1n5k/8/8/7K/3p2B1/1b6 b - - +perft 1 27 +perft 2 585 +perft 3 16301 +perft 4 353522 +perft 5 10406245 +perft 6 221654281 + +id gentest-1806 +epd 6r1/5R2/7k/8/n7/7K/6B1/1b1q4 w - - +perft 1 24 +perft 2 986 +perft 3 18667 +perft 4 761303 +perft 5 14485721 +perft 6 589483251 + +id gentest-1807 +epd 6r1/2R5/7k/3q4/n6K/8/6B1/1b6 b - - +perft 1 50 +perft 2 934 +perft 3 39776 +perft 4 734321 +perft 5 30242210 +perft 6 557907296 + +id gentest-1808 +epd 7r/1q6/7k/8/n6K/8/6B1/1bR5 w - - +perft 1 24 +perft 2 944 +perft 3 19193 +perft 4 738935 +perft 5 14849333 +perft 6 574432522 + +id gentest-1809 +epd 7r/8/7k/8/n3q3/6KB/8/1bR5 b - - +perft 1 45 +perft 2 806 +perft 3 34541 +perft 4 635736 +perft 5 26253827 +perft 6 493796589 + +id gentest-1810 +epd 8/7r/7k/8/n3q3/6K1/2b5/2R2B2 w - - +perft 1 15 +perft 2 638 +perft 3 9723 +perft 4 411182 +perft 5 7025148 +perft 6 293718834 + +id gentest-1811 +epd 8/7r/7k/8/n1R1q3/3B2K1/8/1b6 b - - +perft 1 41 +perft 2 679 +perft 3 25166 +perft 4 483640 +perft 5 17659502 +perft 6 347644585 + +id gentest-1812 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-1813 +epd rnbqkbnr/ppppp1pp/8/5p2/8/1PN5/P1PPPPPP/R1BQKBNR b KQkq - +perft 1 20 +perft 2 459 +perft 3 10239 +perft 4 258319 +perft 5 6302413 +perft 6 171094418 + +id gentest-1814 +epd rnbq1bnr/pppppk1p/6p1/5p2/P7/1PN5/2PPPPPP/R1BQKBNR w KQ - +perft 1 24 +perft 2 597 +perft 3 15513 +perft 4 400297 +perft 5 11177282 +perft 6 301418941 + +id gentest-1815 +epd rnbq1bnr/ppp1pk1p/6p1/3p1p2/PP6/2NP4/2P1PPPP/R1BQKBNR b KQ - +perft 1 29 +perft 2 865 +perft 3 25959 +perft 4 782053 +perft 5 24110185 +perft 6 737840939 + +id gentest-1816 +epd rnbq1bnr/pp2p1kp/6p1/2pp1p2/PP5P/2NP4/2P1PPP1/R1BQKBNR w KQ - +perft 1 32 +perft 2 870 +perft 3 28104 +perft 4 798633 +perft 5 26109337 +perft 6 769294136 + +id gentest-1817 +epd rnb2bnr/pp2p1kp/6p1/q1pp1p2/PP3B1P/2NP4/2P1PPP1/R2QKBNR b KQ - +perft 1 27 +perft 2 1011 +perft 3 27577 +perft 4 989802 +perft 5 28263147 +perft 6 999297045 + +id gentest-1818 +epd rnb2b1r/pp2p1kp/6pn/2pN1p2/Pq3B1P/3P4/2P1PPP1/R2QKBNR w KQ - +perft 1 5 +perft 2 155 +perft 3 5421 +perft 4 163040 +perft 5 5725784 +perft 6 175752253 + +id gentest-1819 +epd rnb2b1r/pp2p1kp/6pn/2pN1p2/P4B1P/1qPP4/4PPP1/RQ2KBNR b KQ - +perft 1 32 +perft 2 1163 +perft 3 36029 +perft 4 1334908 +perft 5 41662004 +perft 6 1559999831 + +id gentest-1820 +epd r1b2b1r/pp2p1kp/2n3pn/2pN1p2/P4B1P/2PP4/4PPP1/R2QKBNR w KQ - +perft 1 40 +perft 2 896 +perft 3 35443 +perft 4 826627 +perft 5 32339687 +perft 6 784206145 + +id gentest-1821 +epd r1b2b1r/ppN3kp/2n1p1pn/2p2p2/P4B1P/2PP4/4PPP1/2RQKBNR b K - +perft 1 25 +perft 2 847 +perft 3 19574 +perft 4 675018 +perft 5 16513580 +perft 6 582450742 + +id gentest-1822 +epd r1b2b1r/ppN4p/2n1pkpn/5p2/P1p2B1P/2PP4/4PPP1/1R1QKBNR w K - +perft 1 41 +perft 2 1084 +perft 3 44280 +perft 4 1173935 +perft 5 47464310 +perft 6 1287923586 + +id gentest-1823 +epd r1b2b1r/pp3k1p/2n1p1pn/5p2/P1p2B1P/2PPN3/4PPP1/1R1QKBNR b K - +perft 1 30 +perft 2 1094 +perft 3 31975 +perft 4 1188154 +perft 5 35100630 +perft 6 1317993835 + +id gentest-1824 +epd rnb2br1/pp3k1p/4p1pn/5p2/P1p2B1P/2PPN2N/4PPP1/1R1QKB1R w K - +perft 1 37 +perft 2 842 +perft 3 32028 +perft 4 788779 +perft 5 30262200 +perft 6 789055299 + +id gentest-1825 +epd rnb2br1/pp3k1p/4p2n/5pp1/P1p2BPP/2PPN2N/4PP2/R2QKB1R b K - +perft 1 28 +perft 2 943 +perft 3 26553 +perft 4 941568 +perft 5 27198677 +perft 6 994722470 + +id gentest-1826 +epd rnb2br1/pp3n1p/4pk2/5pp1/P1P2BPP/2P1N2N/4PP2/R2QKB1R w K - +perft 1 38 +perft 2 1030 +perft 3 40488 +perft 4 1093528 +perft 5 43681164 +perft 6 1186402311 + +id gentest-1827 +epd rnb2br1/pp5p/4pk2/4npp1/P1PQ1BPP/2P1N2N/4PP2/1R2KB1R b K - +perft 1 27 +perft 2 1147 +perft 3 29524 +perft 4 1229299 +perft 5 33246005 +perft 6 1376173407 + +id gentest-1828 +epd rnb2br1/pp5p/4p1k1/4np2/P1PQ2Pp/2P1N2N/4PP1B/1R2KB1R w K - +perft 1 44 +perft 2 1310 +perft 3 54304 +perft 4 1557019 +perft 5 65011119 +perft 6 1853626353 + +id gentest-1829 +epd rnb3r1/pp5p/4p1kb/4npN1/P1PQ1PPp/2P1N3/4P2B/1R2KB1R b K - +perft 1 27 +perft 2 1107 +perft 3 28563 +perft 4 1189135 +perft 5 30883060 +perft 6 1283226341 + +id gentest-1830 +epd rnb3r1/pp5p/4p1kb/4npN1/P1PQ1PPp/2P1N3/4P2B/1R1K1B1R w - - +perft 1 42 +perft 2 1097 +perft 3 46708 +perft 4 1192987 +perft 5 50406362 +perft 6 1303107242 + +id gentest-1831 +epd rnb3r1/1p5p/4p1kb/p1P1np2/P2QNPPp/2P1N3/4P2B/1R1K1B1R b - - +perft 1 29 +perft 2 1212 +perft 3 33785 +perft 4 1406837 +perft 5 39276211 +perft 6 1627711952 + +id gentest-1832 +epd rnbr4/1p5p/4p1kb/p1P1n3/P2QpPPp/2P1N3/4P2B/1R2KB1R w - - +perft 1 39 +perft 2 1141 +perft 3 40948 +perft 4 1150629 +perft 5 40807620 +perft 6 1151088008 + +id gentest-1833 +epd rnb2r2/1p5p/4p1kb/p1P1n3/PQ2pPPp/2P1N3/4P2B/3RKB1R b - - +perft 1 31 +perft 2 1079 +perft 3 31812 +perft 4 1096086 +perft 5 32481696 +perft 6 1115698519 + +id gentest-1834 +epd rnb2r2/5k1p/1p2p2b/p1P1n3/PQ2pPPp/2P5/4P1NB/3RKB1R w - - +perft 1 34 +perft 2 1071 +perft 3 33693 +perft 4 1059622 +perft 5 33595958 +perft 6 1058022949 + +id gentest-1835 +epd rnb2r2/5k1p/1p2p3/p1P1n1b1/P3pP1p/2P5/1Q2P1NB/3RKB1R b - - +perft 1 36 +perft 2 1171 +perft 3 40849 +perft 4 1280402 +perft 5 43990384 +perft 6 1381760087 + +id gentest-1836 +epd rn3rk1/1b5p/1p2p3/p1P1n1b1/P1P1pP1p/8/1Q2P1NB/3RKB1R w - - +perft 1 37 +perft 2 1383 +perft 3 45870 +perft 4 1619147 +perft 5 53012232 +perft 6 1821537012 + +id gentest-1837 +epd rn3rk1/1b5p/1p2p3/p1P3b1/P1P1pP1p/5n2/1Q2PKN1/3R1BBR b - - +perft 1 35 +perft 2 1386 +perft 3 46790 +perft 4 1659619 +perft 5 56399169 +perft 6 1903618359 + +id gentest-1838 +epd 1n4k1/1b3r1p/rp2p3/p1P3b1/P1P1pP1p/4Nn2/1Q2PK2/3R1BBR w - - +perft 1 45 +perft 2 1444 +perft 3 58148 +perft 4 1902199 +perft 5 71586291 +perft 6 2352782520 + +id gentest-1839 +epd 1n4k1/1b2r2p/rpP1p3/p4Nb1/P1P1pP1p/5n2/1Q2PK2/3R1BBR b - - +perft 1 30 +perft 2 1412 +perft 3 40513 +perft 4 1738773 +perft 5 51579746 +perft 6 2095999046 + +id gentest-1840 +epd 1n2r1k1/1b5p/rpP1pb2/p4N2/P1P1pP1p/5n2/1Q2PK2/4RBBR w - - +perft 1 40 +perft 2 1392 +perft 3 50851 +perft 4 1685283 +perft 5 60350780 +perft 6 1962758786 + +id gentest-1841 +epd 1n2rQk1/7p/rpb1pb2/p4N2/P1P1pP1p/5n2/4PK2/4RBBR b - - +perft 1 2 +perft 2 46 +perft 3 1698 +perft 4 38073 +perft 5 1357065 +perft 6 31502946 + +id gentest-1842 +epd 1n2rk2/7p/rpb1p3/p4N2/P1P1pP1p/5n2/1b2PK2/2R2BBR w - - +perft 1 25 +perft 2 908 +perft 3 21386 +perft 4 748529 +perft 5 17825825 +perft 6 615384595 + +id gentest-1843 +epd 1n2rk2/7p/rpb1p3/p4N2/P1P1pP1p/8/1b2PKB1/3R2nR b - - +perft 1 33 +perft 2 1057 +perft 3 34555 +perft 4 1029368 +perft 5 33613146 +perft 6 972019951 + +id gentest-1844 +epd 1n2rk2/8/rpbRp2p/p4N2/P1P1pP1p/8/4PKB1/b5nR w - - +perft 1 30 +perft 2 877 +perft 3 24802 +perft 4 734280 +perft 5 21051854 +perft 6 635309816 + +id gentest-1845 +epd 1n2rk2/r7/1pb1p2p/p2R1N2/P1P1pP1p/8/4PKB1/b5nR b - - +perft 1 39 +perft 2 1186 +perft 3 43928 +perft 4 1299413 +perft 5 46701392 +perft 6 1357153177 + +id gentest-1846 +epd 1n2rk2/r2b4/1p5p/p2RpN2/P1P1pP1p/8/4P1B1/b3K1nR w - - +perft 1 33 +perft 2 977 +perft 3 28794 +perft 4 907124 +perft 5 26154409 +perft 6 850420925 + +id gentest-1847 +epd 1n2rk2/r2b4/1p5p/p2R4/P1P1pp1p/6N1/4P1B1/b4KnR b - - +perft 1 40 +perft 2 1099 +perft 3 42408 +perft 4 1116063 +perft 5 42840366 +perft 6 1120402617 + +id gentest-1848 +epd 1nr2k2/r7/1p5p/p2R4/b1P1pp1p/6N1/4PKB1/b5nR w - - +perft 1 31 +perft 2 1330 +perft 3 36525 +perft 4 1516041 +perft 5 41443433 +perft 6 1678772687 + +id gentest-1849 +epd 1nr2k2/7r/1p5p/p7/b1P1pp1p/6N1/4PKB1/b3R1nR b - - +perft 1 46 +perft 2 913 +perft 3 40209 +perft 4 853896 +perft 5 36359937 +perft 6 827247925 + +id gentest-1850 +epd 1nr2k2/1r6/1p5p/p7/b1P1pp1p/6N1/4PKB1/b4RnR w - - +perft 1 20 +perft 2 866 +perft 3 18077 +perft 4 757102 +perft 5 17277798 +perft 6 708340503 + +id gentest-1851 +epd 1nr2k2/1r6/1p5p/p7/b1PbNp1p/4P3/5KB1/5RnR b - - +perft 1 45 +perft 2 968 +perft 3 41769 +perft 4 1005208 +perft 5 41807428 +perft 6 1078603195 + +id gentest-1852 +epd 1nr3k1/7r/1p5p/p7/b1Pb1p1p/4P3/3N1KB1/5RnR w - - +perft 1 25 +perft 2 1077 +perft 3 26817 +perft 4 1083347 +perft 5 28029582 +perft 6 1109630429 + +id gentest-1853 +epd 1nr3k1/7r/1pb4p/p1P5/3b1p1p/4P3/5KB1/1N3RnR b - - +perft 1 47 +perft 2 892 +perft 3 38453 +perft 4 822792 +perft 5 33510119 +perft 6 782314056 + +id gentest-1854 +epd 1n3rk1/7r/1pb4p/p1P5/3b3p/4Pp2/5KB1/1N3RR1 w - - +perft 1 13 +perft 2 431 +perft 3 7113 +perft 4 246300 +perft 5 4744141 +perft 6 167902984 + +id gentest-1855 +epd 1n3rk1/3b3r/1p5p/p1P5/3b3p/4Pp2/5K2/1N1R2RB b - - +perft 1 5 +perft 2 123 +perft 3 4003 +perft 4 97145 +perft 5 3199748 +perft 6 80644359 + +id gentest-1856 +epd 1n1r2k1/3b2br/1p1R3p/p1P5/7p/4Pp2/5K2/1N4RB w - - +perft 1 33 +perft 2 763 +perft 3 23826 +perft 4 624577 +perft 5 18765475 +perft 6 534384036 + +id gentest-1857 +epd 1nbr2k1/6br/1p3R1p/p1P5/7p/N3Pp2/5K2/6RB b - - +perft 1 26 +perft 2 859 +perft 3 21792 +perft 4 675743 +perft 5 18322529 +perft 6 548856919 + +id gentest-1858 +epd 1n1r2k1/3b2br/6Rp/p1p5/7p/N3Pp2/5K2/6RB w - - +perft 1 32 +perft 2 683 +perft 3 20532 +perft 4 525798 +perft 5 15383867 +perft 6 430601176 + +id gentest-1859 +epd 1n1r2k1/3b2br/6Rp/p7/2p4p/4Pp2/2N2K2/5R1B b - - +perft 1 22 +perft 2 647 +perft 3 16976 +perft 4 476704 +perft 5 13670679 +perft 6 382032881 + +id gentest-1860 +epd 1n1r2kr/6b1/2b4p/p5R1/2p4p/4Pp2/2N2K2/5R1B w - - +perft 1 29 +perft 2 841 +perft 3 22875 +perft 4 669506 +perft 5 18308377 +perft 6 550622759 + +id gentest-1861 +epd 1n1r2kr/8/2b4p/pR6/2p4p/2b1Pp2/2N5/5RKB b - - +perft 1 37 +perft 2 1076 +perft 3 37536 +perft 4 1015965 +perft 5 35035483 +perft 6 935900989 + +id gentest-1862 +epd bn1r2kr/8/7p/pR2b3/2p4p/4Pp2/8/4NRKB w - - +perft 1 21 +perft 2 765 +perft 3 17262 +perft 4 586578 +perft 5 14200343 +perft 6 473199463 + +id gentest-1863 +epd b2r2kr/3n4/7p/pR2b3/2p4p/3NPp2/5R2/6KB b - - +perft 1 35 +perft 2 1082 +perft 3 36200 +perft 4 1088044 +perft 5 36606991 +perft 6 1080300102 + +id gentest-1864 +epd b2r3r/3n2k1/7p/1R2b3/pNp4p/4Pp2/5R2/6KB w - - +perft 1 26 +perft 2 964 +perft 3 26422 +perft 4 951969 +perft 5 26645810 +perft 6 948140614 + +id gentest-1865 +epd b2r3r/3n2k1/7p/1R6/pNp4p/4PB2/5R1b/5K2 b - - +perft 1 37 +perft 2 1372 +perft 3 46266 +perft 4 1671493 +perft 5 56140004 +perft 6 1964433873 + +id gentest-1866 +epd 3r4/3n2kr/7p/1R1b4/pNp4p/4PB2/1R5b/5K2 w - - +perft 1 34 +perft 2 1254 +perft 3 41584 +perft 4 1486060 +perft 5 49150966 +perft 6 1733374396 + +id gentest-1867 +epd 3r1n2/6kr/7p/1R1b4/p1p4p/4PB2/N2R3b/5K2 b - - +perft 1 34 +perft 2 1286 +perft 3 43042 +perft 4 1538584 +perft 5 52155233 +perft 6 1794828165 + +id gentest-1868 +epd 5n2/3r2kr/7p/1R1b4/p1p4p/4PBb1/N2RK3/8 w - - +perft 1 28 +perft 2 954 +perft 3 28443 +perft 4 954383 +perft 5 29421875 +perft 6 981296734 + +id gentest-1869 +epd 5n2/3r2kr/8/3R3p/p1p4p/4PBb1/3RK3/2N5 b - - +perft 1 29 +perft 2 820 +perft 3 23585 +perft 4 730339 +perft 5 21565674 +perft 6 690321215 + +id gentest-1870 +epd 5n2/3r2kr/8/3R3p/p1p4p/4PB2/Rb2K3/2N5 w - - +perft 1 30 +perft 2 814 +perft 3 24741 +perft 4 704887 +perft 5 21793206 +perft 6 636867710 + +id gentest-1871 +epd 5n2/2r3kr/8/3R3p/p1p4p/4PB2/1b3K2/R1N5 b - - +perft 1 29 +perft 2 988 +perft 3 28226 +perft 4 961060 +perft 5 28133623 +perft 6 940215349 + +id gentest-1872 +epd 5nk1/2r4r/8/3R3p/p6p/3pPB2/1b3K2/R7 w - - +perft 1 34 +perft 2 1176 +perft 3 37276 +perft 4 1234447 +perft 5 37884502 +perft 6 1236534375 + +id gentest-1873 +epd 2r2nk1/7r/8/1R5p/p6p/3pPB2/1b3K2/R7 b - - +perft 1 38 +perft 2 1405 +perft 3 48609 +perft 4 1646132 +perft 5 56340914 +perft 6 1794915264 + +id gentest-1874 +epd 2r3k1/7r/4n3/1R5p/p6p/3pPB2/8/b5K1 w - - +perft 1 31 +perft 2 1261 +perft 3 33230 +perft 4 1245268 +perft 5 30158737 +perft 6 1089143546 + +id gentest-1875 +epd 2r3k1/7r/2B5/1R4np/p6p/3pP3/8/b5K1 b - - +perft 1 35 +perft 2 910 +perft 3 30972 +perft 4 751905 +perft 5 25946394 +perft 6 593779677 + +id gentest-1876 +epd 2r5/7k/2B4r/6np/p6p/3pP3/8/bR4K1 w - - +perft 1 29 +perft 2 953 +perft 3 23043 +perft 4 802392 +perft 5 18001961 +perft 6 636087099 + +id gentest-1877 +epd 2r5/7k/6r1/1B4np/7p/3pP3/8/bR4K1 b - - +perft 1 41 +perft 2 742 +perft 3 28362 +perft 4 555002 +perft 5 20507660 +perft 6 409650085 + +id gentest-1878 +epd 8/7k/2B1r3/6np/7p/3pP3/8/bR4K1 w - - +perft 1 29 +perft 2 773 +perft 3 18823 +perft 4 512340 +perft 5 11623579 +perft 6 319382251 + +id gentest-1879 +epd 8/7k/B7/6np/7p/3pP3/8/bR4K1 b - - +perft 1 19 +perft 2 391 +perft 3 7410 +perft 4 152733 +perft 5 2939900 +perft 6 60909154 + +id gentest-1880 +epd 8/8/4n2k/1B5p/7p/3pP3/8/bR4K1 w - - +perft 1 21 +perft 2 424 +perft 3 9687 +perft 4 186714 +perft 5 4244434 +perft 6 82317630 + +id gentest-1881 +epd 8/8/4n2k/7p/7p/3BP3/1R6/6K1 b - - +perft 1 11 +perft 2 341 +perft 3 3268 +perft 4 84727 +perft 5 878341 +perft 6 21868988 + +id gentest-1882 +epd 8/5n2/7k/7p/7p/4P3/1R6/1B4K1 w - - +perft 1 26 +perft 2 208 +perft 3 5211 +perft 4 46793 +perft 5 1100570 +perft 6 10674827 + +id gentest-1883 +epd 8/2R5/7k/6np/7p/4P3/8/1B4K1 b - - +perft 1 7 +perft 2 135 +perft 3 1062 +perft 4 25179 +perft 5 210383 +perft 6 4802799 + +id gentest-1884 +epd 8/2R5/8/6kp/7p/4P2n/7K/1B6 w - - +perft 1 25 +perft 2 141 +perft 3 3335 +perft 4 24735 +perft 5 563207 +perft 6 4660127 + +id gentest-1885 +epd 8/8/8/6kp/5R1p/4P3/7K/1B4n1 b - - +perft 1 5 +perft 2 104 +perft 3 626 +perft 4 13085 +perft 5 98170 +perft 6 2072261 + +id gentest-1886 +epd 8/8/7k/7p/7p/4P2n/5R1K/1B6 w - - +perft 1 24 +perft 2 142 +perft 3 3041 +perft 4 22492 +perft 5 465313 +perft 6 3874012 + +id gentest-1887 +epd 8/8/7k/6np/4P2p/8/2R4K/1B6 b - - +perft 1 10 +perft 2 168 +perft 3 1702 +perft 4 32215 +perft 5 323056 +perft 6 6317320 + +id gentest-1888 +epd 8/7k/8/7p/4P2p/5n2/2R3K1/1B6 w - - +perft 1 19 +perft 2 225 +perft 3 4061 +perft 4 43101 +perft 5 821569 +perft 6 8509510 + +id gentest-1889 +epd 8/2R5/7k/4P2p/7p/5n2/6K1/1B6 b - - +perft 1 9 +perft 2 202 +perft 3 1553 +perft 4 35954 +perft 5 309662 +perft 6 7086258 + +id gentest-1890 +epd 8/2R5/4P2k/7p/4n2p/8/6K1/1B6 w - - +perft 1 25 +perft 2 271 +perft 3 6241 +perft 4 57264 +perft 5 1312557 +perft 6 12074236 + +id gentest-1891 +epd 8/7k/2R1P3/7p/4n2p/8/2B3K1/8 b - - +perft 1 6 +perft 2 111 +perft 3 1241 +perft 4 26840 +perft 5 283542 +perft 6 6411298 + +id gentest-1892 +epd 8/7k/2R1P3/7p/4n3/8/2B4p/6K1 w - - +perft 1 4 +perft 2 32 +perft 3 528 +perft 4 6391 +perft 5 122991 +perft 6 1587614 + +id gentest-1893 +epd 8/7k/2R1P3/7p/4n3/8/2B1K3/7q b - - +perft 1 18 +perft 2 229 +perft 3 4886 +perft 4 73706 +perft 5 1770107 +perft 6 29621916 + +id gentest-1894 +epd 8/7k/2R1P3/8/4n2p/5q2/2B5/4K3 w - - +perft 1 15 +perft 2 363 +perft 3 4938 +perft 4 127758 +perft 5 2098496 +perft 6 55055043 + +id gentest-1895 +epd 8/7k/3RP3/8/4n2p/8/8/3BK3 b - - +perft 1 14 +perft 2 269 +perft 3 3279 +perft 4 69212 +perft 5 787984 +perft 6 17440110 + +id gentest-1896 +epd 4n3/7k/4P3/7B/7p/8/8/4K3 w - - +perft 1 13 +perft 2 112 +perft 3 1514 +perft 4 14328 +perft 5 201473 +perft 6 2053881 + +id gentest-1897 +epd 4n3/6k1/4P3/8/7p/8/5K2/3B4 b - - +perft 1 11 +perft 2 165 +perft 3 1797 +perft 4 25314 +perft 5 283746 +perft 6 4075037 + +id gentest-1898 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-1899 +epd rnbqkbnr/pppppp1p/8/6p1/8/4PN2/PPPP1PPP/RNBQKB1R b KQkq - +perft 1 21 +perft 2 586 +perft 3 13334 +perft 4 394621 +perft 5 9694987 +perft 6 298447565 + +id gentest-1900 +epd rnbqkb1r/pppppp2/7n/6pp/3P4/4PN2/PPP2PPP/RNBQKB1R w KQkq - +perft 1 32 +perft 2 697 +perft 3 23208 +perft 4 554289 +perft 5 18947957 +perft 6 489300094 + +id gentest-1901 +epd rnbqkb1r/pppppp2/8/6pp/P2P2n1/4PN2/1PPQ1PPP/RNB1KB1R b KQkq - +perft 1 26 +perft 2 839 +perft 3 22769 +perft 4 772961 +perft 5 21880607 +perft 6 770083053 + +id gentest-1902 +epd rnbqkb1r/1pppp3/p4p2/6pp/P2P2n1/3QPN2/1PP2PPP/RNB1KB1R w KQkq - +perft 1 39 +perft 2 904 +perft 3 34814 +perft 4 861031 +perft 5 32884759 +perft 6 858341068 + +id gentest-1903 +epd rnbqkb1r/1pppp3/p7/5ppp/P1PP2n1/3QP3/1P3PPP/RNB1KBNR b KQkq - +perft 1 25 +perft 2 833 +perft 3 22313 +perft 4 741199 +perft 5 20871981 +perft 6 700464122 + +id gentest-1904 +epd rnbq1b1r/2pppk2/pp6/5ppp/P1PP2n1/2NQP3/1P3PPP/R1B1KBNR w KQ - +perft 1 36 +perft 2 1086 +perft 3 38696 +perft 4 1177972 +perft 5 41709294 +perft 6 1290710565 + +id gentest-1905 +epd rnb1qb1r/2pppk2/pp6/5ppp/P1PP2n1/4P3/NP3PPP/RQB1KBNR b KQ - +perft 1 30 +perft 2 787 +perft 3 23727 +perft 4 672715 +perft 5 20900751 +perft 6 627542090 + +id gentest-1906 +epd rnb1qb1r/2pppk2/pp6/5ppp/P1PP4/3nP3/NPQ2PPP/R1B1KBNR w KQ - +perft 1 5 +perft 2 149 +perft 3 4437 +perft 4 135716 +perft 5 4146658 +perft 6 129769653 + +id gentest-1907 +epd rnb1qb1r/2pppk2/pp6/5ppp/P1PP4/4P3/NP3PPP/RQnK1BNR b - - +perft 1 29 +perft 2 835 +perft 3 24658 +perft 4 731446 +perft 5 22430598 +perft 6 686183791 + +id gentest-1908 +epd rnb1qbkr/2ppp3/p7/1p3ppp/P1PP4/4P3/NPK2PPP/RQn2BNR w - - +perft 1 27 +perft 2 789 +perft 3 22128 +perft 4 677806 +perft 5 19668469 +perft 6 624306144 + +id gentest-1909 +epd rnb1qbkr/2ppp3/p7/5ppp/P1pP1N2/4P3/NPK2PPP/RQn2B1R b - - +perft 1 28 +perft 2 801 +perft 3 23308 +perft 4 681754 +perft 5 20827492 +perft 6 630470805 + +id gentest-1910 +epd rnb1qbkr/3pp3/p7/2p2p1p/P1pP1Np1/4P3/NPK2PPP/R1Q2B1R w - - +perft 1 32 +perft 2 694 +perft 3 22835 +perft 4 562837 +perft 5 18992767 +perft 6 509635868 + +id gentest-1911 +epd rn2qbkr/1b1pp3/p7/2p2p1p/P1pP2p1/1P2P3/N1K1NPPP/R1Q2B1R b - - +perft 1 30 +perft 2 845 +perft 3 26365 +perft 4 772979 +perft 5 24720902 +perft 6 747774285 + +id gentest-1912 +epd rn1q1bkr/1b1pp3/p7/2p2p1p/P1pP4/1P2P1p1/N1K1NPPP/R2Q1B1R w - - +perft 1 33 +perft 2 1031 +perft 3 32106 +perft 4 1024057 +perft 5 32240268 +perft 6 1051181518 + +id gentest-1913 +epd rn1q1bkr/1b1pp3/p7/2p2p1p/P2P4/1pN1P1p1/4NPPP/R1KQ1B1R b - - +perft 1 32 +perft 2 924 +perft 3 29436 +perft 4 886375 +perft 5 28888918 +perft 6 910652740 + +id gentest-1914 +epd rn3bkr/1bqpp3/p7/2p2p1p/P2P4/2N1P1p1/1p2NPPP/R1K1QB1R w - - +perft 1 5 +perft 2 198 +perft 3 5805 +perft 4 228659 +perft 5 6725857 +perft 6 263051707 + +id gentest-1915 +epd rn3b1r/1bqpp1k1/p7/2p2p1p/P2P4/2N1P1P1/1pK1NPP1/R3QB1R b - - +perft 1 43 +perft 2 1395 +perft 3 57901 +perft 4 1816208 +perft 5 73483488 +perft 6 2295253752 + +id gentest-1916 +epd rn3b1r/1bq1pk2/p2p4/2p2p1p/P2P4/1KN1P1P1/1p2NPP1/R3QB1R w - - +perft 1 35 +perft 2 1423 +perft 3 43585 +perft 4 1748763 +perft 5 53788828 +perft 6 2148282020 + +id gentest-1917 +epd rn3b1r/1bq1pk2/p2p4/2p2p1p/P2P4/4P1P1/2K1NPP1/Rr1NQB1R b - - +perft 1 42 +perft 2 1117 +perft 3 46577 +perft 4 1302119 +perft 5 53716386 +perft 6 1576433498 + +id gentest-1918 +epd rn3b1r/1bq1pk2/p2p4/2p2p1p/P2P4/4P1P1/1rK1NPPR/R2NQB2 w - - +perft 1 5 +perft 2 197 +perft 3 5135 +perft 4 201430 +perft 5 5582277 +perft 6 217543881 + +id gentest-1919 +epd rnq2b1r/1b2pk2/p2p4/2p2p1p/P2P4/4P1P1/K3NPPR/R2NQB2 b - - +perft 1 33 +perft 2 841 +perft 3 28268 +perft 4 804716 +perft 5 27418917 +perft 6 840053529 + +id gentest-1920 +epd rnq2b2/1b2pk1r/p2p4/2p4p/P2P1p2/4P1P1/K3NPP1/R2NQB1R w - - +perft 1 29 +perft 2 1077 +perft 3 31978 +perft 4 1169937 +perft 5 36834377 +perft 6 1337673614 + +id gentest-1921 +epd r1q2b2/1b1npk1r/p2p4/2p4p/P2P1N2/4P1P1/K2Q1PP1/R2N1B1R b - - +perft 1 32 +perft 2 1241 +perft 3 41181 +perft 4 1605409 +perft 5 55053049 +perft 6 2156245240 + +id gentest-1922 +epd r4b2/1b1npk1r/p2p4/P1pq3p/3P1N2/4P1P1/K2Q1PP1/R2N1B1R w - - +perft 1 5 +perft 2 164 +perft 3 5869 +perft 4 200833 +perft 5 7370068 +perft 6 259322893 + +id gentest-1923 +epd r4b2/1b1npk1r/p2p4/P1p4p/3q4/4P1PN/3Q1PP1/RK1N1B1R b - - +perft 1 49 +perft 2 1442 +perft 3 60789 +perft 4 1870035 +perft 5 75038000 +perft 6 2401164091 + +id gentest-1924 +epd r7/1b1npkbr/p2p4/P1p4p/8/2q1P1PN/5PP1/RK1NQB1R w - - +perft 1 23 +perft 2 1113 +perft 3 26355 +perft 4 1200408 +perft 5 31512423 +perft 6 1373120930 + +id gentest-1925 +epd r7/1b1npkbr/p2p4/P1p4p/6P1/4P2N/2K2PP1/R2NQB1R b - - +perft 1 42 +perft 2 1314 +perft 3 49147 +perft 4 1613253 +perft 5 57938812 +perft 6 1975981688 + +id gentest-1926 +epd 3r4/1b1npkbr/p2p4/P1p5/6Pp/4P2N/5PP1/R1KNQB1R w - - +perft 1 28 +perft 2 1072 +perft 3 32843 +perft 4 1191898 +perft 5 38950618 +perft 6 1365012657 + +id gentest-1927 +epd 3r4/3npkbr/p2p4/PBp5/R3b1Pp/4P2N/5PP1/2KNQ2R b - - +perft 1 46 +perft 2 1520 +perft 3 60699 +perft 4 2059136 +perft 5 77157509 +perft 6 2684615032 + +id gentest-1928 +epd 3r4/3npk2/p2p3r/PBp5/R3b1Pp/2b1P2N/5PP1/2KN2QR w - - +perft 1 26 +perft 2 1241 +perft 3 33604 +perft 4 1456218 +perft 5 42168845 +perft 6 1705571755 + +id gentest-1929 +epd 3r4/3npk2/p2pr3/P1p5/R3b1Pp/2b1P2N/B4PP1/2KN2QR b - - +perft 1 43 +perft 2 947 +perft 3 34818 +perft 4 880096 +perft 5 31212710 +perft 6 865380450 + +id gentest-1930 +epd 3r4/3npk2/p2p2r1/P1p5/Rb2b1Pp/4P2N/5PP1/1BKN2QR w - - +perft 1 21 +perft 2 831 +perft 3 19902 +perft 4 762827 +perft 5 20462767 +perft 6 757897643 + +id gentest-1931 +epd 3r4/3npk2/p2p2r1/P1pb4/Rb4Pp/4PP1N/B5P1/2KN2QR b - - +perft 1 37 +perft 2 853 +perft 3 29484 +perft 4 770692 +perft 5 26641842 +perft 6 764057754 + +id gentest-1932 +epd 3r4/3n1k2/p2p2r1/P1pbp3/R5Pp/4PP1N/B2b1QP1/2KN3R w - - +perft 1 5 +perft 2 173 +perft 3 5710 +perft 4 186164 +perft 5 6290532 +perft 6 204847070 + +id gentest-1933 +epd 3r4/3n1k2/p2p4/P1pbp3/R4Nrp/4PP2/B2K1QP1/3N3R b - - +perft 1 32 +perft 2 1216 +perft 3 39607 +perft 4 1489768 +perft 5 47877462 +perft 6 1802138954 + +id gentest-1934 +epd 3r4/3n1k2/p2p4/P1pbp3/R6p/4PPrN/B2K1QP1/3N3R w - - +perft 1 34 +perft 2 1034 +perft 3 35679 +perft 4 1098748 +perft 5 38476108 +perft 6 1186070586 + +id gentest-1935 +epd 3r4/3n1k2/p2pb3/P1p1p3/R3P2p/5PQN/B2K2P1/3N3R b - - +perft 1 22 +perft 2 853 +perft 3 17725 +perft 4 676360 +perft 5 14607927 +perft 6 554153815 + +id gentest-1936 +epd 2r5/3n1k2/p2p4/P1pbp3/R3PP1p/6QN/B2K2P1/3N3R w - - +perft 1 44 +perft 2 1008 +perft 3 41960 +perft 4 965759 +perft 5 38982826 +perft 6 901953543 + +id gentest-1937 +epd 2r5/3n1k2/p2p4/P1p1p3/1R2PP1p/1b1K2QN/B5P1/3N3R b - - +perft 1 27 +perft 2 955 +perft 3 22557 +perft 4 799309 +perft 5 18633196 +perft 6 666901964 + +id gentest-1938 +epd 2r1k3/8/p2p1n2/P1p1p3/1R2PP1p/1bK3QN/B5P1/3N3R w - - +perft 1 38 +perft 2 1067 +perft 3 38652 +perft 4 1000165 +perft 5 37468721 +perft 6 922542946 + +id gentest-1939 +epd 2r1k3/5b2/p2p1n2/P1p1p3/R3PP1p/2K2Q1N/B5P1/3N3R b - - +perft 1 27 +perft 2 899 +perft 3 22966 +perft 4 810603 +perft 5 20307114 +perft 6 743252379 + +id gentest-1940 +epd 2r1k1n1/5b2/p2p4/P3p3/R1p1PP1p/2K2Q1N/B5P1/3N2R1 w - - +perft 1 30 +perft 2 581 +perft 3 18802 +perft 4 383953 +perft 5 12965256 +perft 6 276191744 + +id gentest-1941 +epd 2rk2n1/5b2/p2p4/P3p3/1Rp1PP1p/2K4N/B3Q1P1/3N2R1 b - - +perft 1 19 +perft 2 744 +perft 3 15091 +perft 4 574544 +perft 5 12045451 +perft 6 458643679 + +id gentest-1942 +epd 3k2n1/r4b2/p2p4/P3P3/1Rp1P2p/2K4N/B3Q1P1/3N2R1 w - - +perft 1 41 +perft 2 798 +perft 3 32913 +perft 4 658945 +perft 5 27207402 +perft 6 558905055 + +id gentest-1943 +epd 6n1/r2k1b2/p2p4/PR2P3/2p1P2p/2K4N/B5P1/3NQ1R1 b - - +perft 1 21 +perft 2 749 +perft 3 14804 +perft 4 544998 +perft 5 11020693 +perft 6 417201549 + +id gentest-1944 +epd 6n1/r4b2/p2p4/Pk2P3/2p1P2p/7N/B2K2P1/3NQ1R1 w - - +perft 1 27 +perft 2 523 +perft 3 15274 +perft 4 310186 +perft 5 9709802 +perft 6 204765135 + +id gentest-1945 +epd r5n1/5b2/p2p4/Pk2P3/2p1P2p/1B5N/3K1QP1/3N2R1 b - - +perft 1 21 +perft 2 745 +perft 3 14625 +perft 4 521133 +perft 5 10818541 +perft 6 386704403 + +id gentest-1946 +epd r5n1/5b2/p7/P1kpP3/2p1P2p/1B5N/3K2P1/3N2R1 w - - +perft 1 24 +perft 2 497 +perft 3 12156 +perft 4 261972 +perft 5 6659664 +perft 6 148567491 + +id gentest-1947 +epd r7/5b2/p4n2/P1kPP3/2p4p/7N/2BK2P1/3N2R1 b - - +perft 1 27 +perft 2 693 +perft 3 17556 +perft 4 469907 +perft 5 11549711 +perft 6 316110231 + +id gentest-1948 +epd 4r3/5b2/p3Pn2/P1kP4/2p4p/7N/2BK2P1/3N2R1 w - - +perft 1 28 +perft 2 725 +perft 3 19458 +perft 4 491554 +perft 5 13528703 +perft 6 333026230 + +id gentest-1949 +epd 2r5/5b2/p3Pn2/P1kP1B2/2p4p/7N/6P1/2KN2R1 b - - +perft 1 28 +perft 2 713 +perft 3 18704 +perft 4 493391 +perft 5 12311178 +perft 6 333404687 + +id gentest-1950 +epd 2r5/8/p3Pn2/P1kP1B1b/7p/2p4N/6P1/1K1N2R1 w - - +perft 1 24 +perft 2 707 +perft 3 17080 +perft 4 472154 +perft 5 11908796 +perft 6 315602598 + +id gentest-1951 +epd 2r5/5b2/p3Pn2/P1kP4/7p/2pB3N/K5P1/3N2R1 b - - +perft 1 27 +perft 2 793 +perft 3 20679 +perft 4 581765 +perft 5 14826035 +perft 6 414104033 + +id gentest-1952 +epd 6b1/8/p1r1Pn2/P1kP4/7p/K1pB3N/6P1/3N2R1 w - - +perft 1 29 +perft 2 563 +perft 3 15869 +perft 4 323150 +perft 5 9076595 +perft 6 194111272 + +id gentest-1953 +epd 6b1/3n4/p1P1P3/P1k5/7p/K1p4N/4B1P1/3N2R1 b - - +perft 1 13 +perft 2 341 +perft 3 5242 +perft 4 137526 +perft 5 2237568 +perft 6 60187259 + +id gentest-1954 +epd 8/7b/p1P1Pn2/P1k3N1/7p/K1p5/4B1P1/3N2R1 w - - +perft 1 27 +perft 2 520 +perft 3 14333 +perft 4 267894 +perft 5 7582842 +perft 6 140583731 + +id gentest-1955 +epd 8/7b/B1P1P3/P1k3Nn/7p/K1p5/6P1/3N2R1 b - - +perft 1 17 +perft 2 440 +perft 3 7690 +perft 4 208742 +perft 5 3714093 +perft 6 104486232 + +id gentest-1956 +epd 8/7b/2P1Pn2/Pk4N1/7p/K1p5/6P1/3N2R1 w - - +perft 1 19 +perft 2 375 +perft 3 8029 +perft 4 154853 +perft 5 3587438 +perft 6 68676468 + +id gentest-1957 +epd 8/2P4b/4Pn2/P1k3N1/7p/K1p1N3/6P1/6R1 b - - +perft 1 20 +perft 2 600 +perft 3 10884 +perft 4 325756 +perft 5 5904921 +perft 6 177585265 + +id gentest-1958 +epd 6n1/2P4b/4P3/P1k3N1/7p/K7/2N3P1/6R1 w - - +perft 1 29 +perft 2 369 +perft 3 10968 +perft 4 159456 +perft 5 4803720 +perft 6 72859097 + +id gentest-1959 +epd 2N3n1/8/4P3/P1k3N1/7p/1K1b4/2N3P1/6R1 b - - +perft 1 17 +perft 2 468 +perft 3 7492 +perft 4 213215 +perft 5 3374258 +perft 6 98137290 + +id gentest-1960 +epd 2N3n1/8/4P3/P1k2bN1/8/1K2N2p/6P1/6R1 w - - +perft 1 33 +perft 2 495 +perft 3 14827 +perft 4 235246 +perft 5 7160661 +perft 6 117066936 + +id gentest-1961 +epd 2N3n1/7b/4P3/P1kN4/4N3/1K5p/6P1/6R1 b - - +perft 1 5 +perft 2 175 +perft 3 2142 +perft 4 68395 +perft 5 968422 +perft 6 29848954 + +id gentest-1962 +epd 2N3n1/8/4P3/P2k4/4b3/1K5p/6P1/4R3 w - - +perft 1 25 +perft 2 403 +perft 3 9529 +perft 4 154030 +perft 5 3566657 +perft 6 60851497 + +id gentest-1963 +epd 2N3n1/8/4P3/P2k4/6P1/1K5p/6b1/4R3 b - - +perft 1 11 +perft 2 269 +perft 3 3509 +perft 4 81059 +perft 5 1211862 +perft 6 27372686 + +id gentest-1964 +epd 2N3n1/8/4P3/P2k4/6P1/7p/1K4b1/4R3 w - - +perft 1 26 +perft 2 294 +perft 3 6978 +perft 4 98365 +perft 5 2259399 +perft 6 35265390 + +id gentest-1965 +epd 2N3n1/8/4P3/P7/2k3P1/7p/6b1/1K4R1 b - - +perft 1 20 +perft 2 343 +perft 3 6011 +perft 4 112447 +perft 5 1970498 +perft 6 38915212 + +id gentest-1966 +epd b1N3n1/8/4P3/P7/3k2P1/7p/8/1K3R2 w - - +perft 1 24 +perft 2 409 +perft 3 9181 +perft 4 153496 +perft 5 3424847 +perft 6 58163532 + +id gentest-1967 +epd b1N3n1/8/4P3/P1k5/5RP1/7p/8/1K6 b - - +perft 1 14 +perft 2 311 +perft 3 4542 +perft 4 101212 +perft 5 1570409 +perft 6 34873759 + +id gentest-1968 +epd 6n1/N7/3kP3/P7/5RP1/5b1p/8/1K6 w - - +perft 1 21 +perft 2 353 +perft 3 7506 +perft 4 118872 +perft 5 2559364 +perft 6 40560725 + +id gentest-1969 +epd 6n1/N4R2/3kP3/P7/6P1/7p/4b3/1K6 b - - +perft 1 16 +perft 2 348 +perft 3 5468 +perft 4 114917 +perft 5 1857899 +perft 6 38841885 + +id gentest-1970 +epd 8/N3n2R/b2kP3/P7/6P1/7p/8/1K6 w - - +perft 1 17 +perft 2 287 +perft 3 5313 +perft 4 88510 +perft 5 1724818 +perft 6 29109569 + +id gentest-1971 +epd 8/7R/b1NkP3/P4n2/6P1/7p/8/K7 b - - +perft 1 19 +perft 2 450 +perft 3 8119 +perft 4 173692 +perft 5 3077288 +perft 6 64456642 + +id gentest-1972 +epd 8/8/2NkP3/P6R/3n2P1/3b3p/8/K7 w - - +perft 1 23 +perft 2 508 +perft 3 9964 +perft 4 197730 +perft 5 3875080 +perft 6 73471791 + +id gentest-1973 +epd 8/4N3/4P3/P2k4/3n2P1/3b3p/8/K7 b - - +perft 1 6 +perft 2 60 +perft 3 1326 +perft 4 13515 +perft 5 287484 +perft 6 3091289 + +id gentest-1974 +epd 6N1/8/4P3/P4n2/4k1P1/3b3p/8/K7 w - - +perft 1 9 +perft 2 173 +perft 3 1704 +perft 4 33394 +perft 5 368443 +perft 6 7347229 + +id gentest-1975 +epd 6N1/8/4P3/P7/4k1P1/3b2np/8/K7 b - - +perft 1 19 +perft 2 157 +perft 3 3050 +perft 4 29974 +perft 5 590738 +perft 6 6612011 + +id gentest-1976 +epd 6N1/8/4P3/P2k1n2/6P1/3b3p/K7/8 w - - +perft 1 11 +perft 2 231 +perft 3 2490 +perft 4 51628 +perft 5 586915 +perft 6 11845069 + +id gentest-1977 +epd 6N1/4n3/4P3/P2k2P1/8/3b3p/1K6/8 b - - +perft 1 25 +perft 2 279 +perft 3 5722 +perft 4 59710 +perft 5 1187954 +perft 6 13085073 + +id gentest-1978 +epd 8/4N3/4P3/P4nP1/4k3/3b3p/1K6/8 w - - +perft 1 14 +perft 2 284 +perft 3 3738 +perft 4 74224 +perft 5 951209 +perft 6 19102348 + +id gentest-1979 +epd 8/8/4P2n/P2N2P1/4k3/K2b3p/8/8 b - - +perft 1 17 +perft 2 271 +perft 3 4835 +perft 4 71175 +perft 5 1312329 +perft 6 18736060 + +id gentest-1980 +epd 8/4n3/4P1P1/P2N4/4k3/K2b3p/8/8 w - - +perft 1 15 +perft 2 257 +perft 3 3431 +perft 4 66613 +perft 5 873877 +perft 6 17136665 + +id gentest-1981 +epd 8/4n3/4P1P1/P2N4/8/2Kb1k1p/8/8 b - - +perft 1 23 +perft 2 330 +perft 3 6866 +perft 4 97759 +perft 5 1963774 +perft 6 27800231 + +id gentest-1982 +epd 8/4n3/4P1P1/P2N4/3K4/5k1p/2b5/8 w - - +perft 1 14 +perft 2 280 +perft 3 3625 +perft 4 70760 +perft 5 932458 +perft 6 18037833 + +id gentest-1983 +epd 4N3/4n3/4P1P1/P7/3K4/7p/2b3k1/8 b - - +perft 1 22 +perft 2 237 +perft 3 4983 +perft 4 58748 +perft 5 1189678 +perft 6 14760384 + +id gentest-1984 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-1985 +epd rnbqkb1r/pppppppp/7n/8/2P2P2/8/PP1PP1PP/RNBQKBNR b KQkq - +perft 1 20 +perft 2 439 +perft 3 9785 +perft 4 239086 +perft 5 5902683 +perft 6 156402823 + +id gentest-1986 +epd rnbqkbnr/ppp1pppp/8/3p4/2P2P2/3P4/PP2P1PP/RNBQKBNR w KQkq - +perft 1 27 +perft 2 753 +perft 3 21149 +perft 4 615738 +perft 5 17906155 +perft 6 544287400 + +id gentest-1987 +epd rnbqkbnr/p1p1pppp/1p6/3p4/2P2P2/N2P3P/PP2P1P1/R1BQKBNR b KQkq - +perft 1 30 +perft 2 750 +perft 3 21890 +perft 4 586034 +perft 5 17626869 +perft 6 498650662 + +id gentest-1988 +epd rn1qkbnr/2p1pppp/pp2b3/1N1p4/2P2P2/3P3P/PP2P1P1/R1BQKBNR w KQkq - +perft 1 30 +perft 2 728 +perft 3 22432 +perft 4 573207 +perft 5 18136067 +perft 6 487799138 + +id gentest-1989 +epd rnq1kbnr/N1p1pppp/pp2b3/3p4/2P2PP1/3P3P/PP2P3/R1BQKBNR b KQkq - +perft 1 25 +perft 2 670 +perft 3 16904 +perft 4 486705 +perft 5 12785523 +perft 6 388456770 + +id gentest-1990 +epd rnqk1b1r/N1p1pppp/pp2b2n/3p4/2P2PP1/1Q1P3P/PP2P3/R1B1KBNR w KQ - +perft 1 30 +perft 2 689 +perft 3 21984 +perft 4 528517 +perft 5 17511753 +perft 6 442103483 + +id gentest-1991 +epd rn1k1b1r/Nqp1pppp/pp2b2n/3p4/2P2PP1/Q2P1N1P/PP2P3/R1B1KB1R b KQ - +perft 1 26 +perft 2 975 +perft 3 24770 +perft 4 920485 +perft 5 24428414 +perft 6 905632599 + +id gentest-1992 +epd rn3b1r/Nqpkp1pp/pp2b2n/3p1P2/2P2P2/Q2P1N1P/PP2P3/R1B1KB1R w KQ - +perft 1 38 +perft 2 786 +perft 3 29569 +perft 4 675114 +perft 5 25327035 +perft 6 627176843 + +id gentest-1993 +epd rnq2b1r/N1pkp1pp/Qp2b2n/3p1P2/2PP1P2/5N1P/PP2P3/R1B1KB1R b KQ - +perft 1 24 +perft 2 848 +perft 3 19004 +perft 4 675207 +perft 5 16164641 +perft 6 578492003 + +id gentest-1994 +epd rn2qb1r/N1pkp1pp/Qp2b3/3p1P2/2PP1Pn1/7P/PP1NP3/R1B1KB1R w KQ - +perft 1 31 +perft 2 762 +perft 3 25024 +perft 4 636665 +perft 5 21527061 +perft 6 571078834 + +id gentest-1995 +epd rn2qb1r/N1pkp1pp/Qp2b3/5P2/2pP1Pn1/4P2P/PP1N4/R1B1KBR1 b Q - +perft 1 29 +perft 2 1084 +perft 3 29347 +perft 4 1119593 +perft 5 31400393 +perft 6 1209855634 + +id gentest-1996 +epd rn2qb1r/N1pkp1pp/Qp6/3bnP2/2pP1P2/4P2P/PP1NB3/R1B1K1R1 w Q - +perft 1 45 +perft 2 1457 +perft 3 61279 +perft 4 1916981 +perft 5 79775362 +perft 6 2487489850 + +id gentest-1997 +epd rn2qb1r/N1pkp1pp/Qp6/3b1P2/2pP1P2/3BP2P/PP1N4/R1B1K2R b Q - +perft 1 31 +perft 2 1178 +perft 3 33897 +perft 4 1276238 +perft 5 37223691 +perft 6 1401357060 + +id gentest-1998 +epd rn2qb1r/N1pkpbp1/Qp6/5P1p/2pP1P2/3BP2P/PP1N4/1RB1K2R w - - +perft 1 37 +perft 2 820 +perft 3 31143 +perft 4 740911 +perft 5 28516079 +perft 6 726154641 + +id gentest-1999 +epd rn2qbr1/N1pkpbp1/Qp6/5P1p/2pPPP2/3B3P/PP1N4/1RB1KR2 b - - +perft 1 21 +perft 2 695 +perft 3 14859 +perft 4 514359 +perft 5 11937719 +perft 6 425602563 + +id gentest-2000 +epd rn2qbr1/N1pk1bp1/Qp2p3/5P1p/3PPP2/2pB1N1P/PP6/1RB1KR2 w - - +perft 1 40 +perft 2 897 +perft 3 36464 +perft 4 896892 +perft 5 36565867 +perft 6 965893515 + +id gentest-2001 +epd rn2qbr1/N1pk1b2/Qp2p3/5Ppp/B2PPP2/2p2N1P/PP6/1RB1KR2 b - - +perft 1 6 +perft 2 251 +perft 3 6606 +perft 4 275475 +perft 5 7639318 +perft 6 316602336 + +id gentest-2002 +epd rn2qb2/N2k1br1/Qpp1p3/5Ppp/B2PPP2/2p4P/PP5N/1RB1KR2 w - - +perft 1 38 +perft 2 926 +perft 3 36461 +perft 4 967481 +perft 5 38625028 +perft 6 1097763307 + +id gentest-2003 +epd rn2qb2/N2k1b1r/Qpp1p3/5Ppp/3PPP2/2p4P/PPB1K2N/1RB2R2 b - - +perft 1 29 +perft 2 1261 +perft 3 35428 +perft 4 1516657 +perft 5 44447406 +perft 6 1883631564 + +id gentest-2004 +epd rn1kqb2/NQ3b1r/1pp1p3/5Ppp/3PPP2/2p4P/PPB1K2N/1RB2R2 w - - +perft 1 45 +perft 2 979 +perft 3 43787 +perft 4 1064359 +perft 5 47049123 +perft 6 1251329760 + +id gentest-2005 +epd rn1k1b2/NQ1q1b1r/1pp1p3/5Ppp/3PPP2/2p2N1P/PP2K3/1RBB1R2 b - - +perft 1 34 +perft 2 1457 +perft 3 43583 +perft 4 1830664 +perft 5 56317289 +perft 6 2339990647 + +id gentest-2006 +epd rn1k1bb1/NQ1q3r/1pp1p3/5Ppp/3PPP2/P4N1P/1Pp1K3/1RBB1R2 w - - +perft 1 40 +perft 2 1445 +perft 3 55185 +perft 4 1952238 +perft 5 74010088 +perft 6 2614719519 + +id gentest-2007 +epd rn1k1bb1/N2q2r1/1pQ1P3/6pp/3PPP2/P4N1P/1Pp1K3/1RBB1R2 b - - +perft 1 41 +perft 2 1757 +perft 3 63303 +perft 4 2573261 +perft 5 93333024 +perft 6 3679279682 + +id gentest-2008 +epd rnNk2b1/6r1/1pQ1q3/6pp/1b1PPP2/P4N1P/1Pp1K3/1RBB1R2 w - - +perft 1 45 +perft 2 2236 +perft 3 92385 +perft 4 4398943 +perft 5 177476798 +perft 6 8209857757 + +id gentest-2009 +epd r1Nk2b1/3n2r1/1p2q3/6pp/Qb1PPP2/P3BN1P/1Pp1K3/1R1B1R2 b - - +perft 1 62 +perft 2 2375 +perft 3 133479 +perft 4 5070327 +perft 5 266193901 +perft 6 10101110190 + +id gentest-2010 +epd rnNk2b1/6r1/1p2q3/6pp/Qb1PPP2/P3BN1P/1P3K2/1b1B1R2 w - - +perft 1 41 +perft 2 2107 +perft 3 85695 +perft 4 4186042 +perft 5 169493574 +perft 6 7999907421 + +id gentest-2011 +epd rnNk4/6rb/1p2q3/6pp/Qb1PPP2/P3BN1P/1P4K1/1b1B3R b - - +perft 1 58 +perft 2 2426 +perft 3 124628 +perft 4 5113041 +perft 5 248149959 +perft 6 10082275414 + +id gentest-2012 +epd rnNk4/4b1rb/1p2q3/6pp/Q2PPP2/P4N1P/bP3BK1/3B3R w - - +perft 1 46 +perft 2 2046 +perft 3 85537 +perft 4 3753578 +perft 5 155233900 +perft 6 6783280929 + +id gentest-2013 +epd rnNk4/4b1rb/1p6/6pp/Q2PPPP1/P3BN2/bP4K1/3B3R b - - +perft 1 33 +perft 2 1607 +perft 3 53659 +perft 4 2500779 +perft 5 85195861 +perft 6 3859101719 + +id gentest-2014 +epd rnN5/2k3rb/1p6/6pp/Qb1PPPP1/PP2BN2/b5K1/3B3R w - - +perft 1 45 +perft 2 1405 +perft 3 60232 +perft 4 1860461 +perft 5 77555344 +perft 6 2410586498 + +id gentest-2015 +epd rnN5/2k3rb/1p6/1Q4p1/1b1PPPPp/PP2BN2/b6K/3B3R b - - +perft 1 33 +perft 2 1469 +perft 3 42933 +perft 4 1799741 +perft 5 53842184 +perft 6 2182489500 + +id gentest-2016 +epd rnNk4/4r2b/1p6/5Qp1/1b1PPPPp/PP2BN2/b6K/3B3R w - - +perft 1 40 +perft 2 1266 +perft 3 50350 +perft 4 1544295 +perft 5 61379317 +perft 6 1861882964 + +id gentest-2017 +epd rnNk4/5r1b/1p6/3Q2N1/1b1PPPPp/PP2B3/b6K/3B3R b - - +perft 1 6 +perft 2 232 +perft 3 6484 +perft 4 255304 +perft 5 7115487 +perft 6 281888902 + +id gentest-2018 +epd rnk5/5N1b/1p6/3Q4/3PPPPp/PP2B3/b6K/3Bb2R w - - +perft 1 39 +perft 2 702 +perft 3 26030 +perft 4 515573 +perft 5 19078385 +perft 6 410415494 + +id gentest-2019 +epd 1nk5/r4N1b/1p6/6Q1/3PPPPp/PP6/b4B1K/3Bb2R b - - +perft 1 29 +perft 2 1109 +perft 3 27830 +perft 4 1026348 +perft 5 26037923 +perft 6 948263453 + +id gentest-2020 +epd 8/r1k4b/np5N/6Q1/3PPPPp/PP6/b4B1K/3Bb2R w - - +perft 1 36 +perft 2 747 +perft 3 26199 +perft 4 591438 +perft 5 20688936 +perft 6 494878791 + +id gentest-2021 +epd 6b1/r1k5/np5N/6Q1/P2PPPPp/1P6/b4B1K/3BR3 b - - +perft 1 21 +perft 2 794 +perft 3 16130 +perft 4 601367 +perft 5 12744069 +perft 6 474131323 + +id gentest-2022 +epd 6b1/r5Q1/np1k3N/8/P2PPPP1/1P5p/b4B1K/3BR3 w - - +perft 1 39 +perft 2 656 +perft 3 24337 +perft 4 444961 +perft 5 16288183 +perft 6 312926455 + +id gentest-2023 +epd 6b1/2r3Q1/np1k3N/4P3/P2P1PP1/1P5K/b4B2/3BR3 b - - +perft 1 3 +perft 2 109 +perft 3 2052 +perft 4 73503 +perft 5 1409612 +perft 6 51004491 + +id gentest-2024 +epd 6b1/2r1k3/np5N/4P3/P2P1PP1/1P5K/b4B2/3BR3 w - - +perft 1 26 +perft 2 630 +perft 3 16524 +perft 4 417263 +perft 5 11314650 +perft 6 289294990 + +id gentest-2025 +epd 6b1/1r2k3/np5N/4P3/P2P1PP1/1P4BK/b7/3B1R2 b - - +perft 1 22 +perft 2 525 +perft 3 11346 +perft 4 284891 +perft 5 6524526 +perft 6 171171601 + +id gentest-2026 +epd 8/1r2kb2/np5N/4P3/P2P1PP1/1b4BK/2B5/5R2 w - - +perft 1 32 +perft 2 786 +perft 3 24079 +perft 4 597568 +perft 5 17898646 +perft 6 453046761 + +id gentest-2027 +epd 8/r3kb2/np5N/4PP2/P2P2P1/1b3RBK/2B5/8 b - - +perft 1 26 +perft 2 705 +perft 3 17204 +perft 4 470287 +perft 5 11776493 +perft 6 326584812 + +id gentest-2028 +epd 8/r3kb2/np5N/4PP2/P2P2P1/6BK/b1B2R2/8 w - - +perft 1 25 +perft 2 570 +perft 3 15169 +perft 4 358904 +perft 5 9905868 +perft 6 242485660 + +id gentest-2029 +epd 5k2/r4b2/np5N/P3PP2/3P2P1/6BK/b1B5/5R2 b - - +perft 1 27 +perft 2 835 +perft 3 22925 +perft 4 687865 +perft 5 18883834 +perft 6 562674157 + +id gentest-2030 +epd 6b1/r3k3/np5N/P2PPP2/6P1/6BK/b1B5/5R2 w - - +perft 1 31 +perft 2 601 +perft 3 18059 +perft 4 386150 +perft 5 11508824 +perft 6 260831202 + +id gentest-2031 +epd 6b1/3rk3/np5N/P2PPP2/6P1/6BK/b1B5/7R b - - +perft 1 23 +perft 2 663 +perft 3 14475 +perft 4 413438 +perft 5 9616741 +perft 6 276663699 + +id gentest-2032 +epd 6b1/1r2k3/1p5N/P2PPP2/1n4P1/6BK/b1B5/6R1 w - - +perft 1 30 +perft 2 605 +perft 3 17789 +perft 4 391718 +perft 5 11430001 +perft 6 267370325 + +id gentest-2033 +epd 6b1/1r2k3/1p5N/P2PPP2/Bn4P1/6BK/8/1b3R2 b - - +perft 1 23 +perft 2 728 +perft 3 15801 +perft 4 482185 +perft 5 11054093 +perft 6 332113971 + +id gentest-2034 +epd 6b1/1r1Bk3/1p5N/P2nPP2/4b1P1/6BK/8/5R2 w - - +perft 1 30 +perft 2 678 +perft 3 18536 +perft 4 454097 +perft 5 12547181 +perft 6 322662808 + +id gentest-2035 +epd 6b1/1r1Bk3/1p5N/P3PP2/4b1PK/4n3/8/4BR2 b - - +perft 1 33 +perft 2 826 +perft 3 23626 +perft 4 610325 +perft 5 17333023 +perft 6 459599983 + +id gentest-2036 +epd 6b1/1r1Bk3/1p2P2N/P4P2/6PK/8/2n3b1/4BR2 w - - +perft 1 24 +perft 2 544 +perft 3 14059 +perft 4 329426 +perft 5 8919299 +perft 6 216032130 + +id gentest-2037 +epd 6b1/1r1Bk3/1p2P2N/P4P1K/6P1/7b/2n5/4B1R1 b - - +perft 1 22 +perft 2 479 +perft 3 9494 +perft 4 227321 +perft 5 4840050 +perft 6 123149209 + +id gentest-2038 +epd 6b1/1r1Bk3/1p2P2N/P4P1K/6P1/n5R1/8/4Bb2 w - - +perft 1 27 +perft 2 567 +perft 3 15522 +perft 4 331186 +perft 5 9274823 +perft 6 204802789 + +id gentest-2039 +epd 6b1/2r1k3/1pB1P2N/P4P1K/6P1/n7/8/4BbR1 b - - +perft 1 25 +perft 2 704 +perft 3 16745 +perft 4 460687 +perft 5 11340505 +perft 6 315707386 + +id gentest-2040 +epd 8/2r1k2b/1pB1P2N/P4P1K/6P1/n7/6b1/4B2R w - - +perft 1 29 +perft 2 682 +perft 3 18589 +perft 4 461486 +perft 5 12697898 +perft 6 323610449 + +id gentest-2041 +epd 8/1B2k2b/1p2P2N/P4P1K/6PR/n7/2r3b1/4B3 b - - +perft 1 33 +perft 2 715 +perft 3 20024 +perft 4 460079 +perft 5 12488408 +perft 6 303921806 + +id gentest-2042 +epd 8/4k2b/2B1P2N/Pp3P1K/6PR/n7/1r4b1/4B3 w - - +perft 1 23 +perft 2 529 +perft 3 12203 +perft 4 286212 +perft 5 6907718 +perft 6 164389046 + +id gentest-2043 +epd 8/7b/2B1Pk1N/Pp3P1K/1B4P1/n7/1r4bR/8 b - - +perft 1 23 +perft 2 614 +perft 3 12798 +perft 4 337897 +perft 5 7223971 +perft 6 192684330 + +id gentest-2044 +epd 8/7b/2B1Pk1N/Pp3P1K/1B2b1PR/n7/7r/8 w - - +perft 1 22 +perft 2 483 +perft 3 10445 +perft 4 221246 +perft 5 5014166 +perft 6 107651666 + +id gentest-2045 +epd 6N1/8/2B1Pk2/Pp3P1K/1B2b1P1/n7/7R/8 b - - +perft 1 2 +perft 2 70 +perft 3 958 +perft 4 32722 +perft 5 431901 +perft 6 14202538 + +id gentest-2046 +epd 6N1/6k1/P1B1P3/1p3b1K/1B4P1/n7/7R/8 w - - +perft 1 38 +perft 2 510 +perft 3 16009 +perft 4 222463 +perft 5 7022840 +perft 6 99255106 + +id gentest-2047 +epd 6N1/6k1/P3P3/1p3P1K/1B2B3/8/7R/1n6 b - - +perft 1 6 +perft 2 223 +perft 3 1472 +perft 4 52174 +perft 5 382217 +perft 6 12976235 + +id gentest-2048 +epd 6k1/8/P3P3/1p3P1K/1B2B3/n6R/8/8 w - - +perft 1 37 +perft 2 213 +perft 3 7466 +perft 4 53603 +perft 5 1810506 +perft 6 14083763 + +id gentest-2049 +epd 6k1/8/P2BP3/1p3P1K/2n1B3/6R1/8/8 b - - +perft 1 2 +perft 2 80 +perft 3 800 +perft 4 28998 +perft 5 247711 +perft 6 8487857 + +id gentest-2050 +epd 8/7k/P2BP3/1p3P1K/8/6R1/1n6/7B w - - +perft 1 36 +perft 2 230 +perft 3 7997 +perft 4 62510 +perft 5 2073813 +perft 6 17180489 + +id gentest-2051 +epd 4B2k/8/P2BP3/1p3P1K/8/6R1/1n6/8 b - - +perft 1 6 +perft 2 211 +perft 3 1561 +perft 4 51134 +perft 5 403102 +perft 6 12815527 + +id gentest-2052 +epd 4B2k/8/P2BP1R1/1pn2P1K/8/8/8/8 w - - +perft 1 29 +perft 2 257 +perft 3 7783 +perft 4 60000 +perft 5 1715394 +perft 6 12835859 + +id gentest-2053 +epd 4B2k/8/n2BP1R1/1p3P1K/8/8/8/8 b - - +perft 1 6 +perft 2 175 +perft 3 1053 +perft 4 30524 +perft 5 210183 +perft 6 5835316 + +id gentest-2054 +epd 4B2k/8/4P1R1/1p3P1K/8/1n6/7B/8 w - - +perft 1 26 +perft 2 189 +perft 3 5129 +perft 4 35260 +perft 5 964944 +perft 6 7275615 + +id gentest-2055 +epd 4B2k/8/4P1R1/1p2BP1K/8/8/8/2n5 b - - +perft 1 1 +perft 2 31 +perft 3 159 +perft 4 4690 +perft 5 30632 +perft 6 827356 + +id gentest-2056 +epd 4B1k1/8/4PR2/1p2BP1K/8/8/8/2n5 w - - +perft 1 25 +perft 2 173 +perft 3 4241 +perft 4 31710 +perft 5 755566 +perft 6 5735474 + +id gentest-2057 +epd 8/2B2B1k/4PR2/1p3P1K/8/8/8/2n5 b - - +perft 1 7 +perft 2 128 +perft 3 941 +perft 4 18017 +perft 5 136754 +perft 6 2865827 + +id gentest-2058 +epd 8/2B2Bk1/4P2R/5P1K/1p6/8/8/2n5 w - - +perft 1 21 +perft 2 119 +perft 3 2654 +perft 4 17067 +perft 5 386378 +perft 6 2803224 + +id gentest-2059 +epd 5k2/5B2/3BP2R/5P2/1p5K/8/8/2n5 b - - +perft 1 1 +perft 2 26 +perft 3 144 +perft 4 3549 +perft 5 22643 +perft 6 546586 + +id gentest-2060 +epd 8/5Bk1/3BP2R/5P1K/1p6/3n4/8/8 w - - +perft 1 22 +perft 2 160 +perft 3 3217 +perft 4 23407 +perft 5 516653 +perft 6 3824396 + +id gentest-2061 +epd 1B6/5Bk1/4P2R/2n2PK1/1p6/8/8/8 b - - +perft 1 10 +perft 2 220 +perft 3 1565 +perft 4 38608 +perft 5 294035 +perft 6 7295127 + +id gentest-2062 +epd 8/5Bk1/4P2R/5PK1/1p3B2/8/8/2n5 w - - +perft 1 27 +perft 2 146 +perft 3 3961 +perft 4 25013 +perft 5 676055 +perft 6 4944781 + +id gentest-2063 +epd 5k2/4PB2/7R/5P2/1p3B1K/8/8/2n5 b - - +perft 1 3 +perft 2 104 +perft 3 742 +perft 4 24181 +perft 5 182046 +perft 6 5734998 + +id gentest-2064 +epd 8/4k3/4B2R/5P2/1p3B1K/3n4/8/8 w - - +perft 1 29 +perft 2 297 +perft 3 8581 +perft 4 84142 +perft 5 2424783 +perft 6 22869398 + +id gentest-2065 +epd 8/4k3/4B2R/4nP1K/1p3B2/8/8/8 b - - +perft 1 13 +perft 2 317 +perft 3 3068 +perft 4 80659 +perft 5 750185 +perft 6 20893689 + +id gentest-2066 +epd 8/4k3/2n1B2R/5P1K/8/1p6/8/2B5 w - - +perft 1 22 +perft 2 227 +perft 3 5825 +perft 4 56313 +perft 5 1536554 +perft 6 15502068 + +id gentest-2067 +epd 8/n3kB2/7R/5P1K/8/1p2B3/8/8 b - - +perft 1 8 +perft 2 239 +perft 3 2008 +perft 4 59955 +perft 5 571636 +perft 6 17128740 + +id gentest-2068 +epd 8/4kB2/7R/4nP2/7K/1p2B3/8/8 w - - +perft 1 33 +perft 2 391 +perft 3 10814 +perft 4 120796 +perft 5 3473715 +perft 6 38408927 + +id gentest-2069 +epd 6B1/B3k3/7R/4nP2/7K/8/1p6/8 b - - +perft 1 16 +perft 2 413 +perft 3 6375 +perft 4 169786 +perft 5 2862161 +perft 6 76929297 + +id gentest-2070 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-2071 +epd rnbqkb1r/pppppppp/7n/8/5P2/8/PPPPPKPP/RNBQ1BNR b kq - +perft 1 20 +perft 2 457 +perft 3 10211 +perft 4 245210 +perft 5 6081133 +perft 6 154385219 + +id gentest-2072 +epd rnbqkb1r/pppp1p1p/4p1pn/8/5P2/7N/PPPPPKPP/RNBQ1B1R w kq - +perft 1 24 +perft 2 694 +perft 3 15944 +perft 4 482203 +perft 5 11814327 +perft 6 368061310 + +id gentest-2073 +epd rnb1kb1r/ppppqp1p/4p1pn/8/1P3PP1/7N/P1PPPK1P/RNBQ1B1R b kq - +perft 1 27 +perft 2 639 +perft 3 18830 +perft 4 466232 +perft 5 14645615 +perft 6 381971143 + +id gentest-2074 +epd rnb1kbr1/ppp1qp1p/3pp1pn/8/1P3PP1/B6N/P1PPPK1P/RN1Q1B1R w q - +perft 1 24 +perft 2 644 +perft 3 15602 +perft 4 440761 +perft 5 11421682 +perft 6 336860851 + +id gentest-2075 +epd r1b1kbr1/pppnqp1p/3pp1pn/5P2/1P1P2P1/B6N/P1P1PK1P/RN1Q1B1R b q - +perft 1 28 +perft 2 748 +perft 3 21677 +perft 4 608308 +perft 5 18189308 +perft 6 534973742 + +id gentest-2076 +epd r1b1kbr1/pppnqpnp/3pp1p1/8/1P1P2P1/B6N/P1P1PK1P/RNQ2B1R w q - +perft 1 29 +perft 2 774 +perft 3 21677 +perft 4 596516 +perft 5 17351670 +perft 6 494344724 + +id gentest-2077 +epd r1b1kb1r/pppnqpnp/3pp1p1/6N1/1P1P2P1/B3Q3/P1P1PK1P/RN3B1R b q - +perft 1 25 +perft 2 870 +perft 3 23004 +perft 4 811256 +perft 5 22419570 +perft 6 792121026 + +id gentest-2078 +epd r1bk1b1r/pp1nqpnp/2ppp1p1/6N1/1P1P2P1/B1N1Q3/P1P1PK1P/R4B1R w - - +perft 1 40 +perft 2 1004 +perft 3 39418 +perft 4 1045184 +perft 5 40967651 +perft 6 1135487384 + +id gentest-2079 +epd r1bk1b1r/pp1nqp1p/2ppp1p1/7n/1P1PN1P1/B1N1Q3/P1P1PK1P/1R3B1R b - - +perft 1 30 +perft 2 1129 +perft 3 34444 +perft 4 1329748 +perft 5 41188653 +perft 6 1609328868 + +id gentest-2080 +epd r1bk1b1r/pp1nqp2/2ppp1pp/8/1P1P1nP1/B1N1Q3/P1PNPK1P/1R3B1R w - - +perft 1 37 +perft 2 1179 +perft 3 42303 +perft 4 1369731 +perft 5 50671313 +perft 6 1659320293 + +id gentest-2081 +epd r1bk1b1r/pp1nqp2/3pp1pp/1Pp5/3P1nP1/B1N1Q3/P1PNP2P/1R2KB1R b - - +perft 1 31 +perft 2 1110 +perft 3 35026 +perft 4 1298288 +perft 5 41428124 +perft 6 1570634703 + +id gentest-2082 +epd r1bk1b1r/1p2qp2/1n1pp1pp/pPp5/3P1nP1/B1N1Q2P/P1PNP3/1R2KB1R w - - +perft 1 36 +perft 2 1253 +perft 3 43592 +perft 4 1492559 +perft 5 53997344 +perft 6 1839435123 + +id gentest-2083 +epd 2bk1b1r/1p2qp2/rn1pp1pp/pPp5/3P1nP1/B1N2Q1P/P1PNP3/3RKB1R b - - +perft 1 35 +perft 2 1170 +perft 3 40198 +perft 4 1408524 +perft 5 47880868 +perft 6 1737618090 + +id gentest-2084 +epd r1bk1b1r/1p2qp2/1n1p2pp/pPp1p3/3P1nPP/B1N2Q2/P1PNP3/3RKB1R w - - +perft 1 39 +perft 2 1577 +perft 3 57990 +perft 4 2263188 +perft 5 85225871 +perft 6 3261319551 + +id gentest-2085 +epd r2k1b1r/1p2qp2/1n1p2pp/pPp1pP2/3P1n1P/2N2Q2/PBPNP3/3RKB1R b - - +perft 1 40 +perft 2 1581 +perft 3 60823 +perft 4 2380512 +perft 5 88684894 +perft 6 3482406648 + +id gentest-2086 +epd 3k1br1/rp2qp2/1n1p2pp/pPp1pP2/3P1Q1P/2N5/PBPNP3/3RKB1R w - - +perft 1 41 +perft 2 1319 +perft 3 53494 +perft 4 1664908 +perft 5 68124388 +perft 6 2096822478 + +id gentest-2087 +epd 3k1br1/rp3p2/1n1p2pp/pPp1pP2/3P1Q1R/P1N5/1BPNP3/3RKB2 b - - +perft 1 28 +perft 2 1159 +perft 3 30097 +perft 4 1270739 +perft 5 32025400 +perft 6 1363842327 + +id gentest-2088 +epd 3k1b2/rp3pr1/1n1p2pp/pPp2P1R/3P1p2/P1N5/1BPNP3/3RKB2 w - - +perft 1 31 +perft 2 763 +perft 3 24361 +perft 4 578964 +perft 5 18836731 +perft 6 445066262 + +id gentest-2089 +epd 3k1b2/rp3pr1/1n4pp/pPpp1P1R/2NP1p2/P1N5/1BP1P3/1R2KB2 b - - +perft 1 24 +perft 2 774 +perft 3 18349 +perft 4 595724 +perft 5 14297090 +perft 6 466876722 + +id gentest-2090 +epd 4kbr1/rp3p2/1n4pp/pPpp1P1R/2NP1p2/P1N5/2P1P3/BR2KB2 w - - +perft 1 35 +perft 2 781 +perft 3 26757 +perft 4 614621 +perft 5 20795073 +perft 6 495364450 + +id gentest-2091 +epd 4kbr1/rp3p2/1n5R/pPPp1Pp1/2N2p2/P1N5/2P1P3/BR2KB2 b - - +perft 1 24 +perft 2 972 +perft 3 22526 +perft 4 859943 +perft 5 20391737 +perft 6 755733810 + +id gentest-2092 +epd 2n1k1r1/rp2bp2/7R/pPPp1Pp1/5p2/P1N1N3/2P1P3/BR2KB2 w - - +perft 1 39 +perft 2 883 +perft 3 32399 +perft 4 749768 +perft 5 26913412 +perft 6 636212188 + +id gentest-2093 +epd 2n1k1r1/rp3p2/3b1P1R/pPPp2p1/5p2/P1N1N3/2P1P3/B1R1KB2 b - - +perft 1 23 +perft 2 725 +perft 3 16658 +perft 4 524216 +perft 5 12112343 +perft 6 385035240 + +id gentest-2094 +epd r1n1k1r1/1pb2p2/5P2/pPPp2p1/5p1R/P1N1N3/2P1P3/B1R1KB2 w - - +perft 1 32 +perft 2 809 +perft 3 26012 +perft 4 635878 +perft 5 20581564 +perft 6 495643496 + +id gentest-2095 +epd r1n1k1r1/2b2p2/2p2P2/pP1p2p1/5p1R/P1N1N3/1BP1P3/2R1KB2 b - - +perft 1 27 +perft 2 882 +perft 3 23226 +perft 4 745578 +perft 5 19339953 +perft 6 620223402 + +id gentest-2096 +epd r1n1k1rR/2b2p2/2p2P2/pP4p1/3p4/P1N1p3/1BP1P3/2R1KB2 w - - +perft 1 24 +perft 2 602 +perft 3 14235 +perft 4 352468 +perft 5 8575662 +perft 6 212056566 + +id gentest-2097 +epd r1n1k1r1/5p2/2p2P2/pP2b1p1/3p3R/P3p3/NBP1P3/2R1KB2 b - - +perft 1 27 +perft 2 690 +perft 3 18192 +perft 4 458078 +perft 5 12016606 +perft 6 304284207 + +id gentest-2098 +epd r1n1k1r1/5p2/2p2P2/1P2b3/p2p3p/P1P1p3/NB2P3/2R1KB2 w - - +perft 1 13 +perft 2 407 +perft 3 5902 +perft 4 178707 +perft 5 2857039 +perft 6 84338421 + +id gentest-2099 +epd r1n3r1/3k1p2/2p2P2/1P2b3/p2p3p/P1P1p3/NB2P3/2R1K2B b - - +perft 1 36 +perft 2 580 +perft 3 18325 +perft 4 329478 +perft 5 10181569 +perft 6 195099777 + +id gentest-2100 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-2101 +epd rnbqkbnr/pppppp1p/8/3P2p1/8/8/PPP1PPPP/RNBQKBNR b KQkq - +perft 1 20 +perft 2 564 +perft 3 12310 +perft 4 369350 +perft 5 8720822 +perft 6 276247626 + +id gentest-2102 +epd rnbqk1nr/ppppp2p/7b/3P1pp1/8/2N5/PPP1PPPP/R1BQKBNR w KQkq - +perft 1 28 +perft 2 507 +perft 3 15563 +perft 4 319039 +perft 5 10383685 +perft 6 234947987 + +id gentest-2103 +epd rnbqk1nr/pppp3p/7b/3Pppp1/8/P1N5/1PPQPPPP/R1B1KBNR b KQkq - +perft 1 21 +perft 2 608 +perft 3 14462 +perft 4 450755 +perft 5 11474641 +perft 6 377497753 + +id gentest-2104 +epd rnbqk1nr/p2p3p/1p5b/2pPppp1/8/P7/1PPQPPPP/RNB1KBNR w KQkq c6 +perft 1 29 +perft 2 643 +perft 3 19615 +perft 4 476024 +perft 5 15269657 +perft 6 394866509 + +id gentest-2105 +epd r1bqk1nr/p2p3p/np5b/Q1pPppp1/6P1/P7/1PP1PP1P/RNB1KBNR b KQkq - +perft 1 22 +perft 2 735 +perft 3 17486 +perft 4 584660 +perft 5 14818830 +perft 6 498543274 + +id gentest-2106 +epd r1bqk1nr/p2p3p/n6b/p1pPpP2/6p1/P7/1PP1PP1P/RNB1KBNR w KQkq - +perft 1 26 +perft 2 706 +perft 3 18003 +perft 4 517533 +perft 5 13350014 +perft 6 401386133 + +id gentest-2107 +epd 1rbqk1nr/p2p3p/n6b/p1pPpP2/P5p1/2P5/1P2PP1P/RNB1KBNR b KQk - +perft 1 32 +perft 2 759 +perft 3 24740 +perft 4 599525 +perft 5 19905290 +perft 6 492337571 + +id gentest-2108 +epd 2bqk1nr/p6p/n2p1P1b/p1pPp3/P5p1/1rP5/1P2PP1P/RNB1KBNR w KQk - +perft 1 22 +perft 2 728 +perft 3 16628 +perft 4 569488 +perft 5 13541598 +perft 6 474338652 + +id gentest-2109 +epd 3qk1nr/p2b3p/n2p1P1b/p1pPp3/P5p1/RrP5/1P2PP1P/1NB1KBNR b Kk - +perft 1 38 +perft 2 829 +perft 3 30003 +perft 4 690708 +perft 5 25079107 +perft 6 600014344 + +id gentest-2110 +epd 2bqk1nr/p5bp/n2p1P2/p1pPp3/P5p1/RrP5/1P1NPP1P/2B1KBNR w Kk - +perft 1 22 +perft 2 711 +perft 3 17071 +perft 4 564894 +perft 5 14326315 +perft 6 482320210 + +id gentest-2111 +epd 2b1k1nr/p5bp/n2p1q2/p1pPp3/P1P3p1/Rr6/1P1NPPBP/2B1K1NR b Kk - +perft 1 46 +perft 2 1069 +perft 3 45541 +perft 4 1089112 +perft 5 44033818 +perft 6 1081856348 + +id gentest-2112 +epd 1nb1k1nr/6bp/p2p1q2/p1pPp3/P1P3p1/Rr3P2/1P1NP1BP/2B1K1NR w Kk - +perft 1 19 +perft 2 783 +perft 3 16055 +perft 4 631131 +perft 5 13857499 +perft 6 526016397 + +id gentest-2113 +epd 1nb1k1nr/6bp/p2p1q2/p1pP4/P1P1p1p1/Rr3P2/1P1NPNBP/2B1K2R b Kk - +perft 1 47 +perft 2 1212 +perft 3 54073 +perft 4 1396715 +perft 5 59490486 +perft 6 1546919527 + +id gentest-2114 +epd 1nb1k1nr/6bp/p2p1q2/p1pP4/P1P1N1p1/R4P2/2r1PNBP/2B1K2R w Kk - +perft 1 35 +perft 2 1415 +perft 3 45022 +perft 4 1784793 +perft 5 55264686 +perft 6 2166945125 + +id gentest-2115 +epd 1nb2knr/6bp/p2N1q2/p1pP4/P1P3p1/R4P2/2r1PNBP/2B1K1R1 b - - +perft 1 38 +perft 2 1315 +perft 3 51348 +perft 4 1698679 +perft 5 66915247 +perft 6 2158753800 + +id gentest-2116 +epd 1nb2knr/7p/p2N4/p1pP4/P1Pb2p1/R3PP2/2r2NBP/q1B1K1R1 w - - +perft 1 31 +perft 2 1091 +perft 3 28554 +perft 4 1022724 +perft 5 26707435 +perft 6 972190473 + +id gentest-2117 +epd 1nb2knr/7p/p2N4/p1pP4/P1rb2p1/3RPP2/5N1P/q1B1KBR1 b - - +perft 1 33 +perft 2 1029 +perft 3 36162 +perft 4 1119115 +perft 5 40799066 +perft 6 1257572303 + +id gentest-2118 +epd 2N2knr/3n3p/p7/p1pP4/P1rb2p1/3RPP2/1q3N1P/2B1KBR1 w - - +perft 1 32 +perft 2 1255 +perft 3 33797 +perft 4 1275937 +perft 5 35971234 +perft 6 1332143291 + +id gentest-2119 +epd 5knr/3n3p/p7/pNpP4/P2b2p1/2rRPP2/1q3N1P/2B1KBR1 b - - +perft 1 39 +perft 2 1104 +perft 3 41746 +perft 4 1164215 +perft 5 43106139 +perft 6 1204287038 + +id gentest-2120 +epd 5knr/7p/p7/pNpPn3/P5P1/2rRb3/1q3N1P/2B1KBR1 w - - +perft 1 29 +perft 2 1255 +perft 3 30325 +perft 4 1238723 +perft 5 31361858 +perft 6 1236215155 + +id gentest-2121 +epd 5knr/7p/p7/pNpPn3/P5P1/2rR4/1q1bKN1P/2B2B1R b - - +perft 1 40 +perft 2 908 +perft 3 34877 +perft 4 814896 +perft 5 30994773 +perft 6 752347515 + +id gentest-2122 +epd 6nr/6kp/p7/pNpPn3/P5P1/2rR4/1q2KNBP/2b4R w - - +perft 1 4 +perft 2 162 +perft 3 4042 +perft 4 164412 +perft 5 4017891 +perft 6 163854318 + +id gentest-2123 +epd 7r/6kp/p4n2/pNpPn3/P5P1/2rR3N/1q4BP/2bK3R b - - +perft 1 53 +perft 2 1193 +perft 3 61687 +perft 4 1413829 +perft 5 70506719 +perft 6 1661724998 + +id gentest-2124 +epd 7r/6kp/p4n2/pNpP4/P1n1B1P1/2rR3N/7P/1qbK3R w - - +perft 1 28 +perft 2 1331 +perft 3 29305 +perft 4 1357320 +perft 5 32409256 +perft 6 1476542674 + +id gentest-2125 +epd 7r/6kp/p4n2/pNpP2P1/P1n1B3/r2R4/5N1P/1qbK3R b - - +perft 1 45 +perft 2 1092 +perft 3 48111 +perft 4 1235222 +perft 5 54450465 +perft 6 1455047169 + +id gentest-2126 +epd 2r5/6kp/p4n2/pNpP2P1/P1n5/r2B4/5N1P/2bK3R w - - +perft 1 30 +perft 2 1185 +perft 3 32276 +perft 4 1248532 +perft 5 33267562 +perft 6 1263069945 + +id gentest-2127 +epd 2r5/6kp/p4n2/p1pP2P1/P1nN4/1r1B3P/5N2/2bK3R b - - +perft 1 46 +perft 2 1323 +perft 3 54243 +perft 4 1499634 +perft 5 60014981 +perft 6 1629603125 + +id gentest-2128 +epd 2r5/6kp/p4nB1/prpP2P1/P2N4/7P/3n1N2/2bK3R w - - +perft 1 32 +perft 2 1135 +perft 3 34482 +perft 4 1202770 +perft 5 35174587 +perft 6 1217408645 + +id gentest-2129 +epd 2r3k1/7p/p4nB1/prpP2P1/P2N4/7P/3n1N2/2b1KR2 b - - +perft 1 36 +perft 2 997 +perft 3 33364 +perft 4 915410 +perft 5 30365254 +perft 6 829612384 + +id gentest-2130 +epd 2r5/5k1B/p4n2/prpP2P1/P2N4/7P/1b1n1N2/4KR2 w - - +perft 1 30 +perft 2 1007 +perft 3 28418 +perft 4 901042 +perft 5 25127290 +perft 6 787734461 + +id gentest-2131 +epd 2r5/5k1B/p4n2/prpP2P1/P1nN4/2N4P/1b6/4KR2 b - - +perft 1 29 +perft 2 974 +perft 3 27352 +perft 4 875512 +perft 5 25669732 +perft 6 798517866 + +id gentest-2132 +epd 4k3/2r4B/p4n2/prpP2P1/P1n5/2N4P/1b2N3/4KR2 w - - +perft 1 31 +perft 2 1068 +perft 3 31591 +perft 4 1034595 +perft 5 30051343 +perft 6 967904490 + +id gentest-2133 +epd 4k3/2r4B/p4n2/prpP2P1/P7/2N4P/1b1nN3/4KR2 b - - +perft 1 37 +perft 2 1113 +perft 3 37477 +perft 4 1084586 +perft 5 35450129 +perft 6 1001411469 + +id gentest-2134 +epd 4k3/2r4B/p7/prpP2P1/P3n3/1nN3NP/1b6/4KR2 w - - +perft 1 30 +perft 2 909 +perft 3 25891 +perft 4 778833 +perft 5 21594465 +perft 6 647948037 + +id gentest-2135 +epd 4k3/r6B/p2P4/pNp3P1/P3n3/1n4NP/1b6/4KR2 b - - +perft 1 32 +perft 2 870 +perft 3 23378 +perft 4 631753 +perft 5 16560205 +perft 6 446728579 + +id gentest-2136 +epd 4k3/r6B/p2P4/p1p3n1/P7/N5NP/1b1n4/4KR2 w - - +perft 1 31 +perft 2 905 +perft 3 24955 +perft 4 702236 +perft 5 19164545 +perft 6 526307700 + +id gentest-2137 +epd 4k3/r7/p2P2B1/p1p3n1/P7/N6P/1b6/1n2KR1N b - - +perft 1 4 +perft 2 106 +perft 3 2527 +perft 4 63219 +perft 5 1547722 +perft 6 39821027 + +id gentest-2138 +epd 4k3/4rn2/p2P2B1/p1p5/P7/N6P/1b3R2/1n2K2N w - - +perft 1 5 +perft 2 117 +perft 3 2961 +perft 4 67245 +perft 5 1750595 +perft 6 41123379 + +id gentest-2139 +epd 4k3/4rB2/p2P1b2/p1p5/P7/N6P/5R2/1n3K1N b - - +perft 1 5 +perft 2 132 +perft 3 3150 +perft 4 78336 +perft 5 1879094 +perft 6 47636634 + +id gentest-2140 +epd 5k2/3P1r2/p4b2/p1p5/P7/N6P/5R2/1n3K1N w - - +perft 1 25 +perft 2 497 +perft 3 9730 +perft 4 190530 +perft 5 4064182 +perft 6 86617684 + +id gentest-2141 +epd 5k2/1N3r2/p4b2/p1p5/P7/N1n4P/5R2/5K1N b - - +perft 1 27 +perft 2 596 +perft 3 14849 +perft 4 320677 +perft 5 7911417 +perft 6 177764097 + +id gentest-2142 +epd 5k2/1N3r2/p4b2/p1p5/P4n1P/N7/5R2/5K1N w - - +perft 1 21 +perft 2 619 +perft 3 14389 +perft 4 400317 +perft 5 8714114 +perft 6 230637901 + +id gentest-2143 +epd 5k2/1N3r2/p4b2/p1p4n/P7/N4R2/8/5K1N b - - +perft 1 25 +perft 2 534 +perft 3 11372 +perft 4 246524 +perft 5 5667746 +perft 6 128153671 + +id gentest-2144 +epd 5k2/1Nr5/p4b2/p1p5/P7/N4Rn1/4K3/7N w - - +perft 1 8 +perft 2 157 +perft 3 3541 +perft 4 77964 +perft 5 1845652 +perft 6 42312066 + +id gentest-2145 +epd 5k2/2r5/p2N1b2/p1p5/P3n3/N3KR2/8/7N b - - +perft 1 19 +perft 2 466 +perft 3 10365 +perft 4 240078 +perft 5 5682167 +perft 6 134203393 + +id gentest-2146 +epd 2N3k1/2r5/p4b2/p1p5/P7/N1n1KR2/8/7N w - - +perft 1 21 +perft 2 590 +perft 3 12320 +perft 4 322627 +perft 5 7289145 +perft 6 184209016 + +id gentest-2147 +epd 2N3k1/2r5/p4b2/p1p5/P7/N3KR2/8/1n5N b - - +perft 1 29 +perft 2 591 +perft 3 13912 +perft 4 311019 +perft 5 7278578 +perft 6 168960897 + +id gentest-2148 +epd 2N4b/2r3k1/p7/p1p5/P7/N3K3/8/1n3R1N w - - +perft 1 28 +perft 2 414 +perft 3 10283 +perft 4 189775 +perft 5 4618871 +perft 6 94501371 + +id gentest-2149 +epd 2N2R1b/2r5/p5k1/p1p5/P7/N3K3/8/1n5N b - - +perft 1 25 +perft 2 605 +perft 3 13850 +perft 4 331380 +perft 5 7682628 +perft 6 184183744 + +id gentest-2150 +epd 2N4R/1r6/p5k1/p7/P1p5/N3K3/8/1n5N w - - +perft 1 26 +perft 2 512 +perft 3 12700 +perft 4 233687 +perft 5 5850670 +perft 6 105629081 + +id gentest-2151 +epd 2N4R/8/p5k1/pN6/P1p5/4K1N1/8/1n6 b - - +perft 1 9 +perft 2 291 +perft 3 2615 +perft 4 78602 +perft 5 730304 +perft 6 21274485 + +id gentest-2152 +epd 2N4R/6k1/p7/pN6/P1pK4/2n3N1/8/8 w - - +perft 1 31 +perft 2 349 +perft 3 9378 +perft 4 97722 +perft 5 2724136 +perft 6 27807718 + +id gentest-2153 +epd 2N4R/5k2/p7/p1K5/P1p5/N1n3N1/8/8 b - - +perft 1 12 +perft 2 313 +perft 3 3254 +perft 4 92282 +perft 5 928576 +perft 6 26396444 + +id gentest-2154 +epd 2N4R/5k2/p1K5/p7/P7/N1p3N1/8/3n4 w - - +perft 1 32 +perft 2 256 +perft 3 8074 +perft 4 74609 +perft 5 2286784 +perft 6 23575222 + +id gentest-2155 +epd 2N1R3/5k2/p1K5/p6N/P7/N7/2p5/3n4 b - - +perft 1 10 +perft 2 238 +perft 3 2779 +perft 4 72398 +perft 5 957516 +perft 6 24774796 + +id gentest-2156 +epd 2N1R3/5k2/pK6/p6N/P7/N3n3/8/2r5 w - - +perft 1 24 +perft 2 502 +perft 3 11788 +perft 4 224581 +perft 5 5589210 +perft 6 106524685 + +id gentest-2157 +epd 2N2R2/5k2/pK3N2/p7/P7/N7/8/2r2n2 b - - +perft 1 4 +perft 2 91 +perft 3 1490 +perft 4 35034 +perft 5 627619 +perft 6 15726193 + +id gentest-2158 +epd 2N2R2/1K6/p3kN2/p7/P7/N7/3n4/2r5 w - - +perft 1 26 +perft 2 561 +perft 3 14930 +perft 4 287056 +perft 5 7885565 +perft 6 148446946 + +id gentest-2159 +epd 2N4R/1K6/p3k3/p7/P5N1/N7/3n4/7r b - - +perft 1 24 +perft 2 687 +perft 3 13443 +perft 4 383097 +perft 5 7279257 +perft 6 206261446 + +id gentest-2160 +epd 2N4R/1K6/p3k3/pN6/P3n1N1/8/8/3r4 w - - +perft 1 34 +perft 2 805 +perft 3 24002 +perft 4 513017 +perft 5 15000918 +perft 6 308130262 + +id gentest-2161 +epd 7R/1K6/p2Nk3/pN6/P3n3/8/5N2/5r2 b - - +perft 1 22 +perft 2 768 +perft 3 15853 +perft 4 516331 +perft 5 10526626 +perft 6 326213648 + +id gentest-2162 +epd 8/1K6/p2Nk3/pN5r/P3n3/8/5N2/8 w - - +perft 1 25 +perft 2 606 +perft 3 12915 +perft 4 279530 +perft 5 5671367 +perft 6 118961417 + +id gentest-2163 +epd 8/8/p1Knk3/pN5r/P7/8/8/3N4 b - - +perft 1 27 +perft 2 319 +perft 3 7036 +perft 4 88268 +perft 5 1971497 +perft 6 26014246 + +id gentest-2164 +epd 6k1/N7/p1Kn4/p6r/P7/8/8/3N4 w - - +perft 1 10 +perft 2 253 +perft 3 3040 +perft 4 70294 +perft 5 885743 +perft 6 19607920 + +id gentest-2165 +epd 6k1/N1K5/p7/p4r2/P7/8/8/3N4 b - - +perft 1 18 +perft 2 242 +perft 3 4291 +perft 4 55338 +perft 5 968459 +perft 6 12999292 + +id gentest-2166 +epd 2K3k1/N7/p7/p7/P7/8/8/3N1r2 w - - +perft 1 11 +perft 2 183 +perft 3 2263 +perft 4 39099 +perft 5 508375 +perft 6 8806646 + +id gentest-2167 +epd 2K2k2/8/p1N5/p7/P7/8/5N2/5r2 b - - +perft 1 12 +perft 2 208 +perft 3 3352 +perft 4 51490 +perft 5 840892 +perft 6 12672219 + +id gentest-2168 +epd 8/2K2k2/p1N5/p7/P7/8/5N2/2r5 w - - +perft 1 13 +perft 2 237 +perft 3 3691 +perft 4 62833 +perft 5 1002950 +perft 6 17046479 + +id gentest-2169 +epd 8/2K2k2/p1N5/p7/P7/8/1N6/r7 b - - +perft 1 17 +perft 2 292 +perft 3 4670 +perft 4 74388 +perft 5 1227212 +perft 6 18733506 + +id gentest-2170 +epd 1K6/5k2/p1N5/p7/P7/8/1N6/4r3 w - - +perft 1 15 +perft 2 287 +perft 3 4164 +perft 4 75912 +perft 5 1104108 +perft 6 19657629 + +id gentest-2171 +epd 1K2k3/8/p1N5/p7/P7/8/3N4/4r3 b - - +perft 1 16 +perft 2 272 +perft 3 4293 +perft 4 68703 +perft 5 1101439 +perft 6 16885237 + +id gentest-2172 +epd 1K2k3/4N3/p7/p7/P7/8/3N4/4r3 w - - +perft 1 17 +perft 2 288 +perft 3 4440 +perft 4 70733 +perft 5 1062171 +perft 6 16779881 + +id gentest-2173 +epd 1K2k3/4N3/p7/p7/P7/8/3N4/2r5 b - - +perft 1 19 +perft 2 270 +perft 3 4489 +perft 4 64826 +perft 5 1034241 +perft 6 14971924 + +id gentest-2174 +epd 1K6/4Nk2/p7/p7/P1N5/8/8/2r5 w - - +perft 1 19 +perft 2 309 +perft 3 4805 +perft 4 81777 +perft 5 1240531 +perft 6 21028626 + +id gentest-2175 +epd 8/1K2Nk2/p7/p7/P7/8/1N6/7r b - - +perft 1 20 +perft 2 322 +perft 3 5925 +perft 4 87303 +perft 5 1514857 +perft 6 22187791 + +id gentest-2176 +epd 8/K3Nk2/p7/p3r3/P7/8/1N6/8 w - - +perft 1 14 +perft 2 256 +perft 3 3449 +perft 4 59501 +perft 5 826611 +perft 6 14162977 + +id gentest-2177 +epd 4k3/K3N3/p7/p3r3/P7/8/1N6/8 b - - +perft 1 17 +perft 2 218 +perft 3 3645 +perft 4 47612 +perft 5 775095 +perft 6 10479185 + +id gentest-2178 +epd 4k3/K3N3/p4r2/p7/P7/8/8/3N4 w - - +perft 1 13 +perft 2 219 +perft 3 2999 +perft 4 47450 +perft 5 658347 +perft 6 10476926 + +id gentest-2179 +epd 4k3/K3N3/p1r5/p7/P3N3/8/8/8 b - - +perft 1 18 +perft 2 296 +perft 3 4479 +perft 4 70053 +perft 5 1057988 +perft 6 15929348 + +id gentest-2180 +epd 6N1/K2k4/p6r/p7/P3N3/8/8/8 w - - +perft 1 14 +perft 2 212 +perft 3 2921 +perft 4 42872 +perft 5 567352 +perft 6 8606732 + +id gentest-2181 +epd 3k2N1/K7/p6r/p7/P3N3/8/8/8 b - - +perft 1 17 +perft 2 236 +perft 3 3525 +perft 4 47870 +perft 5 705313 +perft 6 9503356 + +id gentest-2182 +epd 8/K2kN3/p6r/p7/P3N3/8/8/8 w - - +perft 1 17 +perft 2 279 +perft 3 4578 +perft 4 70708 +perft 5 1075219 +perft 6 16800265 + +id gentest-2183 +epd 4k3/K3N3/p6r/p7/P7/1N6/8/8 b - - +perft 1 18 +perft 2 271 +perft 3 4574 +perft 4 67167 +perft 5 1092386 +perft 6 15826675 + +id gentest-2184 +epd 4k3/K3N3/p7/p7/P6r/8/8/N7 w - - +perft 1 13 +perft 2 239 +perft 3 3079 +perft 4 51916 +perft 5 676391 +perft 6 11250797 + +id gentest-2185 +epd 4k3/K7/p6N/p7/r7/8/8/N7 b - - +perft 1 14 +perft 2 149 +perft 3 2457 +perft 4 28218 +perft 5 473135 +perft 6 5732811 + +id gentest-2186 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-2187 +epd rnbqkbnr/pp1ppppp/2p5/8/8/4P3/PPPPNPPP/RNBQKB1R b KQkq - +perft 1 21 +perft 2 481 +perft 3 11599 +perft 4 290439 +perft 5 7769383 +perft 6 211796571 + +id gentest-2188 +epd rnbqkb1r/p2ppppp/1pp2n2/8/3N4/4P3/PPPP1PPP/RNBQKB1R w KQkq - +perft 1 34 +perft 2 746 +perft 3 25626 +perft 4 614446 +perft 5 21437555 +perft 6 552424694 + +id gentest-2189 +epd rnbqkb1r/p2p1ppp/1pp1pn2/8/P2N4/3PP3/1PP2PPP/RNBQKB1R b KQkq - +perft 1 28 +perft 2 922 +perft 3 27379 +perft 4 914323 +perft 5 28128642 +perft 6 950090524 + +id gentest-2190 +epd rnbqk2r/p2pbpp1/1pp1pn1p/P7/3N4/3PP3/1PP2PPP/RNBQKB1R w KQkq - +perft 1 36 +perft 2 1078 +perft 3 37949 +perft 4 1157191 +perft 5 41140415 +perft 6 1278970378 + +id gentest-2191 +epd rnbqk2r/p2pbpp1/1pp1pn2/P6p/1P1N4/3PP3/2P2PPP/RNBQKB1R b KQkq - +perft 1 29 +perft 2 1035 +perft 3 30967 +perft 4 1106461 +perft 5 34094093 +perft 6 1224694190 + +id gentest-2192 +epd rnbqk2r/p2pbp2/1pp1pn2/P5p1/1P1N1P1p/3PP3/2P3PP/RNBQKB1R w KQkq - +perft 1 37 +perft 2 1145 +perft 3 40822 +perft 4 1257007 +perft 5 44769565 +perft 6 1394056326 + +id gentest-2193 +epd rnbqk2r/p2pbp2/1p2pn2/P1p3p1/1P1N1P1p/3PP3/1BPK2PP/RN1Q1B1R b kq - +perft 1 32 +perft 2 1191 +perft 3 37834 +perft 4 1398440 +perft 5 44693630 +perft 6 1646781409 + +id gentest-2194 +epd rnbqkb1r/p2p1p2/1p2p3/P1p3pQ/1P1N1P1p/3PP3/1BPK2PP/RN3B1R w kq - +perft 1 45 +perft 2 1225 +perft 3 53501 +perft 4 1503236 +perft 5 63998488 +perft 6 1853363449 + +id gentest-2195 +epd rnbqkb1r/3p1p2/pP2p3/2p2NpQ/1P3P1p/3PP3/1BPK2PP/RN3B1R b kq - +perft 1 25 +perft 2 1237 +perft 3 31286 +perft 4 1457642 +perft 5 39213449 +perft 6 1760136860 + +id gentest-2196 +epd rnb1k2r/3pqpb1/pP2p3/2p2NpQ/1P3P1p/B2PP3/2PK2PP/RN3B1R w kq - +perft 1 39 +perft 2 1148 +perft 3 42682 +perft 4 1245972 +perft 5 46330776 +perft 6 1372393339 + +id gentest-2197 +epd rnb1k2r/3pqpb1/1P2p1Q1/p1p2Np1/1P3P1p/B2PP3/2PK2PP/RN3B1R b kq - +perft 1 38 +perft 2 1366 +perft 3 45003 +perft 4 1664982 +perft 5 54024105 +perft 6 2033528709 + +id gentest-2198 +epd rnb1k1r1/3pqpb1/1P2p1Q1/p1p2Np1/1P1P1P2/B3P2p/2PK2PP/RN3B1R w q - +perft 1 43 +perft 2 1295 +perft 3 55687 +perft 4 1689056 +perft 5 72307741 +perft 6 2231886931 + +id gentest-2199 +epd rnbk2r1/3pqpb1/1P1Np1Q1/p1p3p1/1P1PPP2/B6p/2PK2PP/RN3B1R b - - +perft 1 31 +perft 2 1420 +perft 3 41371 +perft 4 1824142 +perft 5 53542536 +perft 6 2305190745 + +id gentest-2200 +epd rn1k2r1/1b1pqpb1/1P1N2Q1/p1p1p1p1/1PPPPP2/B6p/3K2PP/RN3B1R w - - +perft 1 42 +perft 2 1293 +perft 3 52613 +perft 4 1593982 +perft 5 63664761 +perft 6 1943229099 + +id gentest-2201 +epd rn1k2r1/3pqQb1/bP1N4/p1p1p1p1/1PPPPP2/B6p/6PP/RN2KB1R b - - +perft 1 28 +perft 2 1124 +perft 3 28695 +perft 4 1138342 +perft 5 30692433 +perft 6 1209904552 + +id gentest-2202 +epd rnNk1br1/3pqQ2/bP6/p1p1p1p1/1PPPPP2/B6p/6PP/RN2KB1R w - - +perft 1 40 +perft 2 1020 +perft 3 40328 +perft 4 1119801 +perft 5 43885242 +perft 6 1287432728 + +id gentest-2203 +epd rnNk1br1/1b1pQ3/1P6/p1p1p1p1/1PPPPP2/7p/6PP/RNB1KB1R b - - +perft 1 2 +perft 2 76 +perft 3 1888 +perft 4 70239 +perft 5 1783069 +perft 6 65357947 + +id gentest-2204 +epd rnk2br1/1b1pQ3/1P6/p3p1p1/1PPpPP2/7p/3N2PP/R1B1KB1R w - - +perft 1 38 +perft 2 773 +perft 3 29688 +perft 4 664102 +perft 5 25490683 +perft 6 611194806 + +id gentest-2205 +epd rnk1Q1r1/1b1p2b1/1P6/p3p1p1/1PPpPP2/7p/3N2PP/1RB1KB1R b - - +perft 1 1 +perft 2 22 +perft 3 604 +perft 4 14247 +perft 5 392928 +perft 6 9838498 + +id gentest-2206 +epd rnk4r/1b1p2b1/1P6/pP2p1p1/2PpPP2/7p/3N2PP/1RB1KB1R w - - +perft 1 21 +perft 2 579 +perft 3 13291 +perft 4 364465 +perft 5 8982266 +perft 6 248413220 + +id gentest-2207 +epd rnk5/1b1p2b1/1P6/pP2p1pr/2PpPP2/B5Pp/3N3P/1R2KB1R b - - +perft 1 24 +perft 2 680 +perft 3 16614 +perft 4 467547 +perft 5 11671281 +perft 6 333094969 + +id gentest-2208 +epd rn1k4/1b4b1/1P1p4/pP2p1pr/2PpPP2/B5PB/3N3P/1R2K2R w - - +perft 1 32 +perft 2 876 +perft 3 27753 +perft 4 775604 +perft 5 24585616 +perft 6 700940128 + +id gentest-2209 +epd rn1k4/1b4b1/1P1p4/pP2p2r/2PpPPp1/BN4P1/6BP/1R2K2R b - - +perft 1 30 +perft 2 915 +perft 3 27211 +perft 4 839048 +perft 5 24863128 +perft 6 772430122 + +id gentest-2210 +epd rn6/1b2k1b1/1P1p4/pP2pr2/2PpPPp1/BN4P1/3K2BP/1R5R w - - +perft 1 36 +perft 2 1064 +perft 3 36170 +perft 4 1060512 +perft 5 35072270 +perft 6 1034288751 + +id gentest-2211 +epd r7/1b2k1b1/nP1p4/pP2pr2/2PNPPp1/B5P1/1R1K2BP/7R b - - +perft 1 35 +perft 2 1351 +perft 3 43768 +perft 4 1639588 +perft 5 53072287 +perft 6 1940157064 + +id gentest-2212 +epd 8/rb4b1/nP1p1k2/pP2pr2/2PNPPp1/B3K1P1/1R4BP/7R w - - +perft 1 39 +perft 2 877 +perft 3 31864 +perft 4 809924 +perft 5 29465190 +perft 6 798705629 + +id gentest-2213 +epd 1n6/rb4b1/1P1p1k2/pP2Pr2/2P1P1p1/BN2K1P1/1R4BP/7R b - - +perft 1 8 +perft 2 282 +perft 3 8387 +perft 4 287802 +perft 5 8689389 +perft 6 300920064 + +id gentest-2214 +epd 1n6/rb2B1b1/1P4k1/pP2pr2/2P1P1p1/1N2K1P1/1R4BP/7R w - - +perft 1 39 +perft 2 1116 +perft 3 40499 +perft 4 1175188 +perft 5 42415422 +perft 6 1242564178 + +id gentest-2215 +epd 1n6/rb2B3/1P4kb/pP2pr2/2P1P1p1/1N1K2P1/6BP/1R5R b - - +perft 1 32 +perft 2 1146 +perft 3 35904 +perft 4 1241163 +perft 5 39080424 +perft 6 1317789201 + +id gentest-2216 +epd 1n6/rb2B1b1/1P4k1/pP2p3/2P1P1p1/1N1K2P1/1R4BP/5r1R w - - +perft 1 35 +perft 2 1158 +perft 3 38021 +perft 4 1185826 +perft 5 38992962 +perft 6 1185133245 + +id gentest-2217 +epd 1n6/rb2B1b1/1P4k1/pP2p3/2P1P1p1/1N3rP1/1R1K2BP/7R b - - +perft 1 32 +perft 2 1073 +perft 3 33828 +perft 4 1131339 +perft 5 35418100 +perft 6 1183498312 + +id gentest-2218 +epd 1n6/rb2B1b1/1P4k1/pP2p3/2P1P1p1/1N3rP1/1R4BP/4K2R w - - +perft 1 33 +perft 2 1062 +perft 3 33452 +perft 4 1054513 +perft 5 33482039 +perft 6 1044867594 + +id gentest-2219 +epd 1n1B4/rb4b1/1P4k1/pP2p3/2P1P1p1/1N2r1P1/1R4BP/5K1R b - - +perft 1 28 +perft 2 697 +perft 3 20363 +perft 4 535070 +perft 5 16019750 +perft 6 436462440 + +id gentest-2220 +epd 1nb2b2/r1B5/1P4k1/pP2p3/2P1P1p1/1N2r1P1/1R4BP/5K1R w - - +perft 1 26 +perft 2 916 +perft 3 24006 +perft 4 811453 +perft 5 21995248 +perft 6 722745522 + +id gentest-2221 +epd 1nb2b2/r7/1P4k1/pP2B3/2P1P1p1/1N4P1/1R3KBP/4r2R b - - +perft 1 40 +perft 2 1184 +perft 3 43419 +perft 4 1351160 +perft 5 46871251 +perft 6 1501466893 + +id gentest-2222 +epd 5b2/r1B5/nP4k1/pP3b2/2P1P1p1/1N4P1/1R3KBP/4r2R w - - +perft 1 31 +perft 2 1068 +perft 3 32299 +perft 4 1105756 +perft 5 34548813 +perft 6 1170898741 + +id gentest-2223 +epd 5b2/r1B5/nP4k1/pP2Pb2/2P3p1/1N4P1/5KBP/1R1r3R b - - +perft 1 41 +perft 2 1321 +perft 3 50309 +perft 4 1654153 +perft 5 60167588 +perft 6 1986931064 + +id gentest-2224 +epd 5b2/r1B5/nP6/pP2P1k1/2P1B1p1/1N1b2P1/5K1P/1R1r3R w - - +perft 1 36 +perft 2 1037 +perft 3 33464 +perft 4 1007345 +perft 5 32489166 +perft 6 994781401 + +id gentest-2225 +epd 5b2/r1B5/nP6/pP2P1k1/2P3p1/1N1bK1P1/3r2BP/1R5R b - - +perft 1 35 +perft 2 1218 +perft 3 41582 +perft 4 1380827 +perft 5 46927631 +perft 6 1529513205 + +id gentest-2226 +epd 5b2/r1B5/nP4k1/NP2P3/2P3p1/3bK1P1/1r4BP/1R5R w - - +perft 1 36 +perft 2 1322 +perft 3 43353 +perft 4 1531420 +perft 5 49563267 +perft 6 1712343648 + +id gentest-2227 +epd 5b2/r1B5/nP4k1/NP2P3/2P3p1/3bKBP1/5r1P/4R2R b - - +perft 1 38 +perft 2 1160 +perft 3 42431 +perft 4 1288429 +perft 5 46179719 +perft 6 1413393391 + +id gentest-2228 +epd 1B3b2/r7/nP4k1/NP2P3/2P3p1/4KBP1/2r4P/4Rb1R w - - +perft 1 33 +perft 2 1269 +perft 3 37449 +perft 4 1355264 +perft 5 40113129 +perft 6 1395182990 + +id gentest-2229 +epd 1B3b2/r7/nP4k1/1P2P3/2P3pP/1N1bKBP1/2r5/4R2R b - - +perft 1 41 +perft 2 1417 +perft 3 53310 +perft 4 1773162 +perft 5 64582330 +perft 6 2098351705 + +id gentest-2230 +epd 1B3b2/r1r5/nP4k1/1P1BP3/6pP/1N1bK1P1/8/4R2R w - - +perft 1 40 +perft 2 1375 +perft 3 51173 +perft 4 1710380 +perft 5 61981624 +perft 6 2043144150 + +id gentest-2231 +epd 1B3b2/r4r2/nP4k1/1PN1P3/6pP/3bK1P1/8/4R2R b - - +perft 1 39 +perft 2 1073 +perft 3 38514 +perft 4 1064834 +perft 5 36946741 +perft 6 1035030340 + +id gentest-2232 +epd 1B6/r2Nbr2/nP4k1/1b2P3/6pP/4K1P1/8/4R2R w - - +perft 1 24 +perft 2 821 +perft 3 20397 +perft 4 702369 +perft 5 18470084 +perft 6 636201962 + +id gentest-2233 +epd 1B6/1r1Nbr2/nP4k1/1b2P3/3K2pP/6P1/7R/4R3 b - - +perft 1 39 +perft 2 1110 +perft 3 40231 +perft 4 1120300 +perft 5 39913978 +perft 6 1106850582 + +id gentest-2234 +epd 1B6/1r1N3r/nP3bk1/1b2P3/3K2pP/6P1/2R5/4R3 w - - +perft 1 36 +perft 2 1212 +perft 3 37635 +perft 4 1207441 +perft 5 36546248 +perft 6 1152998149 + +id gentest-2235 +epd 1B3N2/1r4kr/nPR2b2/1b2P3/3K2pP/6P1/8/4R3 b - - +perft 1 31 +perft 2 953 +perft 3 28109 +perft 4 831180 +perft 5 24970497 +perft 6 721274740 + +id gentest-2236 +epd 1B3N2/1r4kr/nPR2b2/4P2P/3K2p1/6P1/4b3/4R3 w - - +perft 1 31 +perft 2 804 +perft 3 23584 +perft 4 642425 +perft 5 18623515 +perft 6 524090390 + +id gentest-2237 +epd 1r6/6kN/nP3b2/2R1P2P/3K2p1/6P1/4b3/4R3 b - - +perft 1 28 +perft 2 724 +perft 3 18883 +perft 4 492102 +perft 5 12945429 +perft 6 338534416 + +id gentest-2238 +epd 5N2/4r1k1/nP3b2/2R1P2P/3K2p1/6P1/4b3/4R3 w - - +perft 1 29 +perft 2 675 +perft 3 18037 +perft 4 444307 +perft 5 11683113 +perft 6 298228262 + +id gentest-2239 +epd 7k/4r3/nP2Nb1P/2R1P3/3K2p1/6P1/4b3/4R3 b - - +perft 1 25 +perft 2 707 +perft 3 17575 +perft 4 495857 +perft 5 12479749 +perft 6 349479462 + +id gentest-2240 +epd 3N3k/5r2/1P3b1P/2n1P3/3K2p1/6P1/4b3/4R3 w - - +perft 1 19 +perft 2 538 +perft 3 10070 +perft 4 285569 +perft 5 5542354 +perft 6 155909758 + +id gentest-2241 +epd 1B1N3k/4r3/5b1P/2n1P3/3K2p1/6P1/4b3/4R3 b - - +perft 1 31 +perft 2 587 +perft 3 16700 +perft 4 340453 +perft 5 9544670 +perft 6 201645201 + +id gentest-2242 +epd 1B1N3k/2r5/5P1P/1bn5/3K2p1/6P1/8/4R3 w - - +perft 1 26 +perft 2 656 +perft 3 14837 +perft 4 360132 +perft 5 8255184 +perft 6 194661240 + +id gentest-2243 +epd 3N3k/B4P2/2r4P/1bn5/3K2p1/6P1/8/4R3 b - - +perft 1 24 +perft 2 609 +perft 3 14112 +perft 4 347098 +perft 5 7946349 +perft 6 198285905 + +id gentest-2244 +epd 3N3k/B4P2/n6P/1b6/3K2p1/6P1/8/2r4R w - - +perft 1 24 +perft 2 567 +perft 3 13364 +perft 4 294812 +perft 5 7206468 +perft 6 156974546 + +id gentest-2245 +epd 3N1B1k/B7/n6P/1b6/3K2p1/2r3P1/7R/8 b - - +perft 1 27 +perft 2 705 +perft 3 16686 +perft 4 437053 +perft 5 10194305 +perft 6 269717341 + +id gentest-2246 +epd 3N1B1k/Bn5P/8/1b6/3K2p1/2r3P1/7R/8 w - - +perft 1 30 +perft 2 714 +perft 3 19120 +perft 4 428570 +perft 5 11377513 +perft 6 250979398 + +id gentest-2247 +epd 3N3k/Bn5P/7B/7R/3K2p1/2rb2P1/8/8 b - - +perft 1 25 +perft 2 675 +perft 3 15680 +perft 4 403066 +perft 5 9068683 +perft 6 233688217 + +id gentest-2248 +epd 3N3k/Bnr4b/7B/8/3K2p1/6P1/8/7R w - - +perft 1 28 +perft 2 555 +perft 3 14588 +perft 4 300199 +perft 5 7964429 +perft 6 169473972 + +id gentest-2249 +epd 3N2bk/1nr1B3/7B/8/3K2p1/6P1/8/7R b - - +perft 1 21 +perft 2 627 +perft 3 11248 +perft 4 325925 +perft 5 6520818 +perft 6 184747769 + +id gentest-2250 +epd 3N2b1/1n2r1k1/8/8/3K2p1/4B1P1/8/7R w - - +perft 1 27 +perft 2 560 +perft 3 13183 +perft 4 296537 +perft 5 6947478 +perft 6 162230893 + +id gentest-2251 +epd 3N4/1n2r1kb/8/8/2K3p1/4B1P1/8/7R b - - +perft 1 24 +perft 2 631 +perft 3 14401 +perft 4 369040 +perft 5 8698428 +perft 6 216893641 + +id gentest-2252 +epd 3N3k/1n2r3/7B/8/2K3p1/6P1/8/1b5R w - - +perft 1 27 +perft 2 489 +perft 3 11045 +perft 4 220935 +perft 5 5073776 +perft 6 107358620 + +id gentest-2253 +epd 3N3k/4r3/2Kn3B/8/6p1/6P1/8/1b5R b - - +perft 1 31 +perft 2 708 +perft 3 14523 +perft 4 330141 +perft 5 7310199 +perft 6 167590835 + +id gentest-2254 +epd 2nN4/4r1k1/2K5/8/5Bp1/6P1/8/1b5R w - - +perft 1 28 +perft 2 643 +perft 3 15198 +perft 4 361727 +perft 5 8429692 +perft 6 202287217 + +id gentest-2255 +epd 2n5/4rNk1/8/2K5/4bBp1/6P1/8/7R b - - +perft 1 29 +perft 2 879 +perft 3 23708 +perft 4 650628 +perft 5 17233483 +perft 6 444558032 + +id gentest-2256 +epd r1n5/5Nk1/8/2K5/4bBp1/6PR/8/8 w - - +perft 1 26 +perft 2 686 +perft 3 16870 +perft 4 438621 +perft 5 10648311 +perft 6 276903571 + +id gentest-2257 +epd r1n5/8/6kB/2K3N1/4b1p1/6PR/8/8 b - - +perft 1 25 +perft 2 366 +perft 3 9569 +perft 4 172136 +perft 5 4486438 +perft 6 89619180 + +id gentest-2258 +epd 2n5/8/6kB/1K4N1/6p1/6PR/r1b5/8 w - - +perft 1 15 +perft 2 337 +perft 3 5287 +perft 4 131301 +perft 5 2438218 +perft 6 60842140 + +id gentest-2259 +epd 2n5/8/K3N1kB/8/b5p1/6PR/r7/8 b - - +perft 1 25 +perft 2 389 +perft 3 8977 +perft 4 165398 +perft 5 3942374 +perft 6 81855696 + +id gentest-2260 +epd 2n5/8/4N1kB/1K6/6p1/rb4PR/8/8 w - - +perft 1 22 +perft 2 461 +perft 3 8706 +perft 4 210860 +perft 5 4357805 +perft 6 107387992 + +id gentest-2261 +epd 2n5/8/6kB/1K6/r5p1/1b1N2PR/8/8 b - - +perft 1 29 +perft 2 533 +perft 3 13761 +perft 4 270332 +perft 5 6914531 +perft 6 144988744 + +id gentest-2262 +epd 2n5/8/6kB/1KN5/6p1/6PR/2b5/r7 w - - +perft 1 22 +perft 2 639 +perft 3 12795 +perft 4 330661 +perft 5 7046285 +perft 6 177781388 + +id gentest-2263 +epd 2n2B2/8/6k1/2N5/2K3p1/6PR/2b5/3r4 b - - +perft 1 29 +perft 2 554 +perft 3 14386 +perft 4 299537 +perft 5 7520457 +perft 6 163141199 + +id gentest-2264 +epd 5B2/8/1n4k1/2N5/1K6/6Pp/2b5/3r4 w - - +perft 1 17 +perft 2 545 +perft 3 8702 +perft 4 262369 +perft 5 4322433 +perft 6 126584202 + +id gentest-2265 +epd 5B2/3n4/6k1/8/1K6/2N3Pp/2b5/3r4 b - - +perft 1 31 +perft 2 529 +perft 3 15861 +perft 4 263223 +perft 5 7751097 +perft 6 129300529 + +id gentest-2266 +epd 5B2/3n4/6k1/8/K7/2N3Pp/2b5/3r4 w - - +perft 1 4 +perft 2 124 +perft 3 2162 +perft 4 65182 +perft 5 1081585 +perft 6 32028986 + +id gentest-2267 +epd 5B2/3n4/3r2k1/1K1N4/8/6Pp/2b5/8 b - - +perft 1 25 +perft 2 366 +perft 3 9355 +perft 4 145326 +perft 5 3963767 +perft 6 63037563 + +id gentest-2268 +epd 5B2/3n4/r5k1/K2N1b2/8/6Pp/8/8 w - - +perft 1 3 +perft 2 75 +perft 3 1256 +perft 4 31139 +perft 5 533260 +perft 6 14162431 + +id gentest-2269 +epd 8/3n4/K5k1/2BN4/8/6Pp/2b5/8 b - - +perft 1 21 +perft 2 446 +perft 3 8663 +perft 4 172553 +perft 5 3344964 +perft 6 64335164 + +id gentest-2270 +epd 8/5k2/5n2/1KBN4/8/6Pp/2b5/8 w - - +perft 1 26 +perft 2 590 +perft 3 13033 +perft 4 270616 +perft 5 5619873 +perft 6 112254558 + +id gentest-2271 +epd 8/5k2/3B1nb1/3N4/K7/6Pp/8/8 b - - +perft 1 20 +perft 2 430 +perft 3 8250 +perft 4 164127 +perft 5 3183945 +perft 6 61811230 + +id gentest-2272 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-2273 +epd rnbqkbnr/p1pppppp/1p6/8/1P1P4/8/P1P1PPPP/RNBQKBNR b KQkq - +perft 1 21 +perft 2 610 +perft 3 14034 +perft 4 410437 +perft 5 10270936 +perft 6 311298889 + +id gentest-2274 +epd rnbqkbnr/p1p2ppp/1p1pp3/8/1P1P4/8/P1PKPPPP/RNBQ1BNR w kq - +perft 1 25 +perft 2 749 +perft 3 19607 +perft 4 590254 +perft 5 16320872 +perft 6 498313475 + +id gentest-2275 +epd rnbqkbnr/p1p3pp/1p1ppp2/8/PP1P3P/8/2PKPPP1/RNBQ1BNR b kq - +perft 1 26 +perft 2 703 +perft 3 18627 +perft 4 542851 +perft 5 14731988 +perft 6 450756403 + +id gentest-2276 +epd rnbqkb1r/p3n1pp/1p1ppp2/2p5/PP1P1P1P/8/2PKP1P1/RNBQ1BNR w kq - +perft 1 28 +perft 2 805 +perft 3 23568 +perft 4 685987 +perft 5 20923172 +perft 6 622410385 + +id gentest-2277 +epd rnbqkb1r/p3n1p1/1p1ppp2/2p3Pp/PP1P1P1P/8/2PKP3/RNBQ1BNR b kq - +perft 1 29 +perft 2 820 +perft 3 23938 +perft 4 711215 +perft 5 21084888 +perft 6 653127533 + +id gentest-2278 +epd rnbqkb1r/p5p1/1p1pp3/2pn2pp/PP1P1P1P/7R/2PKP3/RNBQ1BN1 w kq - +perft 1 31 +perft 2 1077 +perft 3 33829 +perft 4 1164017 +perft 5 37133231 +perft 6 1273871217 + +id gentest-2279 +epd rnbq1b1r/p4kp1/1p1pp3/1Ppn2pp/P2P1P1P/R7/2PKP3/RNBQ1BN1 b - - +perft 1 36 +perft 2 972 +perft 3 34056 +perft 4 955645 +perft 5 32617173 +perft 6 955662615 + +id gentest-2280 +epd r1bq1b1r/p2n1kp1/1p1pp3/1Pp3pp/Pn1P1P1P/7R/2PKP3/RNBQ1BN1 w - - +perft 1 31 +perft 2 1078 +perft 3 33377 +perft 4 1135849 +perft 5 35562428 +perft 6 1196382222 + +id gentest-2281 +epd r1bq1b2/p2n1kp1/1p1pp2r/1Pp3pp/Pn1P1P1P/2K1B2R/2P1P3/RN1Q1BN1 b - - +perft 1 36 +perft 2 914 +perft 3 31990 +perft 4 868968 +perft 5 29821362 +perft 6 859625153 + +id gentest-2282 +epd r1bq1b2/p2n1kp1/1p1pp2r/1Pp3pp/P1KP1P1P/4B2R/2P1P3/RNnQ1BN1 w - - +perft 1 26 +perft 2 845 +perft 3 23018 +perft 4 726519 +perft 5 21042171 +perft 6 660088364 + +id gentest-2283 +epd r1bq1b2/p4kp1/1p1pp2r/1Pp1P1pp/P1K2P1P/7R/2P1PB2/RNnQ1BN1 b - - +perft 1 30 +perft 2 1078 +perft 3 32360 +perft 4 1143051 +perft 5 34362552 +perft 6 1202982912 + +id gentest-2284 +epd r1bq1bkr/p5p1/1p1pp3/1Pp1P1pp/P1K2P1P/7R/2P1PBB1/RNnQ2N1 w - - +perft 1 45 +perft 2 1165 +perft 3 48863 +perft 4 1338103 +perft 5 53793270 +perft 6 1529693516 + +id gentest-2285 +epd r1bq1bk1/p5p1/1p1pp2r/1Pp1P1Rp/P1K2P1P/8/2P1PBB1/RNnQ2N1 b - - +perft 1 27 +perft 2 1100 +perft 3 29994 +perft 4 1196993 +perft 5 33608117 +perft 6 1313289429 + +id gentest-2286 +epd r4bk1/p1qb2p1/1p1pp2r/1Pp1P1Rp/P1K2P1P/6B1/2P1P1B1/RNnQ2N1 w - - +perft 1 39 +perft 2 1139 +perft 3 41832 +perft 4 1223635 +perft 5 44652580 +perft 6 1318709203 + +id gentest-2287 +epd r4b2/p1qb2k1/1p1pp2r/1Pp1P2p/P1K2P1P/3Q2B1/2P1P1B1/RNn3N1 b - - +perft 1 29 +perft 2 1075 +perft 3 31302 +perft 4 1078491 +perft 5 32589912 +perft 6 1084370023 + +id gentest-2288 +epd 2r2b2/p1qb2k1/1p2p2r/1Pp1p2p/P1K2P1P/6B1/2PQP1B1/RNn3N1 w - - +perft 1 37 +perft 2 1146 +perft 3 39873 +perft 4 1265706 +perft 5 42785488 +perft 6 1390846779 + +id gentest-2289 +epd 2r2b2/p1qb4/1p2pk1r/1PpBp2p/P1K2P1P/8/2PQP2B/RNn3N1 b - - +perft 1 32 +perft 2 935 +perft 3 29681 +perft 4 907444 +perft 5 29135861 +perft 6 904283779 + +id gentest-2290 +epd r4b2/pBqb2k1/1p2p2r/1Pp1p2p/P1K2P1P/8/2PQP2B/RNn3N1 w - - +perft 1 35 +perft 2 1142 +perft 3 37936 +perft 4 1221717 +perft 5 39683151 +perft 6 1281839652 + +id gentest-2291 +epd r4b2/p1qb2kr/1p2p3/1Pp1p2p/P1K1BP1P/5N2/2PQP2B/RNn5 b - - +perft 1 30 +perft 2 1079 +perft 3 32590 +perft 4 1145212 +perft 5 35163239 +perft 6 1216830913 + +id gentest-2292 +epd r4b1r/2qb2k1/pp2p3/1PpQp2p/P1K1BP1P/5N2/2P1P2B/RNn5 w - - +perft 1 36 +perft 2 1121 +perft 3 38148 +perft 4 1172284 +perft 5 40392209 +perft 6 1249136571 + +id gentest-2293 +epd r4br1/2qb2k1/pp2p3/1PpQp2p/P1K2P1P/3B1N2/2PNP2B/R1n5 b - - +perft 1 32 +perft 2 1096 +perft 3 33594 +perft 4 1175527 +perft 5 36712795 +perft 6 1298392077 + +id gentest-2294 +epd Qqb2br1/6k1/pp2p3/1Pp1p2p/P1K2P1P/3B1N2/2PNP2B/R1n5 w - - +perft 1 34 +perft 2 712 +perft 3 23725 +perft 4 568621 +perft 5 19009231 +perft 6 496800075 + +id gentest-2295 +epd Qqb3r1/4b1k1/pp2p3/1Pp1P2p/P1K4P/3B4/2PNP2B/R1n1N3 b - - +perft 1 28 +perft 2 911 +perft 3 26195 +perft 4 830250 +perft 5 24737106 +perft 6 783683024 + +id gentest-2296 +epd Qqb2r2/4b1k1/pp2p3/1Pp1P2p/P1K4P/1n1B4/2PNP1NB/R7 w - - +perft 1 40 +perft 2 1359 +perft 3 47448 +perft 4 1536203 +perft 5 52922428 +perft 6 1685673137 + +id gentest-2297 +epd Q1b2r2/q3b1k1/pp2p3/1Pp1P2p/P1K1B2P/1n6/2PNP1NB/3R4 b - - +perft 1 34 +perft 2 1197 +perft 3 38974 +perft 4 1387642 +perft 5 43651256 +perft 6 1558929210 + +id gentest-2298 +epd Q1b5/q3b1k1/pp2p3/1Pp1P2p/P1K1B2P/1n6/2P1P1NB/3r1N2 w - - +perft 1 30 +perft 2 1075 +perft 3 29859 +perft 4 974333 +perft 5 27493694 +perft 6 861618246 + +id gentest-2299 +epd 1Qb5/q3b1k1/pp2p3/1Pp1P2p/P3B2P/1n1K4/2P1P1NB/2r2N2 b - - +perft 1 31 +perft 2 924 +perft 3 28018 +perft 4 829657 +perft 5 25233510 +perft 6 741208262 + +id gentest-2300 +epd Q1b5/q3b1k1/pp2p3/1Pp1P2p/P3B2P/1n1K4/4P1NB/2r2N2 w - - +perft 1 26 +perft 2 848 +perft 3 21392 +perft 4 675675 +perft 5 17909958 +perft 6 562881444 + +id gentest-2301 +epd Q7/q2bb1k1/pp2p3/PPp1P2p/4B2P/1n1KP3/6NB/2r2N2 b - - +perft 1 31 +perft 2 751 +perft 3 22717 +perft 4 569640 +perft 5 17816370 +perft 6 459306818 + +id gentest-2302 +epd Q7/q2bb1k1/pp2p3/PPp1P2p/3nBB1P/3KP3/6N1/4rN2 w - - +perft 1 32 +perft 2 915 +perft 3 25803 +perft 4 774598 +perft 5 21809122 +perft 6 671591547 + +id gentest-2303 +epd Q7/q2bb1k1/pp2p2B/PPp1Pn1p/4B2P/3KP3/8/4NN2 b - - +perft 1 5 +perft 2 169 +perft 3 3574 +perft 4 111912 +perft 5 2594887 +perft 6 80897730 + +id gentest-2304 +epd 4b3/Q3b1k1/pp2p2n/PPp1P2p/4B2P/3KP3/8/4NN2 w - - +perft 1 31 +perft 2 525 +perft 3 14677 +perft 4 273653 +perft 5 7906879 +perft 6 148708457 + +id gentest-2305 +epd 4b3/4Qnk1/pp2p3/PPp1P2p/4B2P/4P3/3K4/4NN2 b - - +perft 1 9 +perft 2 354 +perft 3 3920 +perft 4 144956 +perft 5 1833312 +perft 6 64555003 + +id gentest-2306 +epd 7k/3bQn2/pp2p3/PPp1P2p/4B2P/4P3/4K3/4NN2 w - - +perft 1 37 +perft 2 465 +perft 3 16151 +perft 4 195936 +perft 5 6790132 +perft 6 84327032 + +id gentest-2307 +epd 7k/3Q1n2/pp2p3/PP2P2p/2p1B2P/4P3/3NK3/4N3 b - - +perft 1 10 +perft 2 429 +perft 3 3875 +perft 4 154929 +perft 5 1454244 +perft 6 54831366 + +id gentest-2308 +epd 7k/8/pp1Qp2n/PP2P2p/4B2P/2p1P3/3NK3/4N3 w - - +perft 1 44 +perft 2 414 +perft 3 16773 +perft 4 175344 +perft 5 6443168 +perft 6 73587898 + +id gentest-2309 +epd 7k/8/1p2p2n/Pp2P2p/7P/Q1p1P3/3NK3/4N2B b - - +perft 1 11 +perft 2 397 +perft 3 4760 +perft 4 156793 +perft 5 2027261 +perft 6 64216220 + +id gentest-2310 +epd B6k/8/1p2p2n/Pp2P2p/7P/Q3P3/4K3/3bN3 w - - +perft 1 5 +perft 2 69 +perft 3 1962 +perft 4 27575 +perft 5 797499 +perft 6 11621621 + +id gentest-2311 +epd B6k/8/4p2n/pp2P2p/7P/Q3P3/8/3bN1K1 b - - +perft 1 15 +perft 2 450 +perft 3 6582 +perft 4 196308 +perft 5 2932948 +perft 6 86791153 + +id gentest-2312 +epd B6k/5n2/4p3/pp2P2p/7P/Q3P3/2b2K2/4N3 w - - +perft 1 32 +perft 2 564 +perft 3 17359 +perft 4 290336 +perft 5 8747604 +perft 6 143291215 + +id gentest-2313 +epd 7k/1B3n2/4p1b1/pp2P2p/7P/Q2NP3/5K2/8 b - - +perft 1 14 +perft 2 485 +perft 3 7615 +perft 4 248315 +perft 5 3997974 +perft 6 126360393 + +id gentest-2314 +epd 8/1B3n1k/4p1b1/1p2P2p/p6P/Q2NP3/8/4K3 w - - +perft 1 33 +perft 2 474 +perft 3 15372 +perft 4 235513 +perft 5 7375537 +perft 6 118957350 + +id gentest-2315 +epd 3n4/1B5k/4p1b1/1p2P2p/p6P/Q3P3/3K4/2N5 b - - +perft 1 15 +perft 2 431 +perft 3 6497 +perft 4 185174 +perft 5 2813847 +perft 6 79794297 + +id gentest-2316 +epd 3n4/1B5k/4p1b1/1p2P2p/p6P/Q3P3/8/2N1K3 w - - +perft 1 31 +perft 2 450 +perft 3 13610 +perft 4 205984 +perft 5 6137712 +perft 6 93976246 + +id gentest-2317 +epd 3n2k1/8/4p1b1/1p2P2p/Q6P/4P3/8/2N1K2B b - - +perft 1 18 +perft 2 579 +perft 3 9155 +perft 4 284583 +perft 5 4391499 +perft 6 134127982 + +id gentest-2318 +epd 3n4/5k2/4p1b1/4P2p/Qp5P/4P3/4K3/2N4B w - - +perft 1 32 +perft 2 383 +perft 3 11223 +perft 4 165367 +perft 5 4819927 +perft 6 70923019 + +id gentest-2319 +epd 3n2k1/8/4p1b1/4P2p/Qp2P2P/8/3K4/2N4B b - - +perft 1 14 +perft 2 376 +perft 3 4858 +perft 4 129817 +perft 5 1754190 +perft 6 47753994 + +id gentest-2320 +epd 3nb3/5k2/4p3/4P2p/Qp2P2P/8/3K2B1/2N5 w - - +perft 1 29 +perft 2 316 +perft 3 8505 +perft 4 112894 +perft 5 3024919 +perft 6 40736165 + +id gentest-2321 +epd 3nb3/8/4p1k1/4P2p/Qp2P2P/4K3/N5B1/8 b - - +perft 1 13 +perft 2 327 +perft 3 4300 +perft 4 110903 +perft 5 1516359 +perft 6 39921320 + +id gentest-2322 +epd 3n4/5b1k/4p3/4P2p/Qp2P2P/8/N3K1B1/8 w - - +perft 1 28 +perft 2 299 +perft 3 8356 +perft 4 89225 +perft 5 2488511 +perft 6 28906978 + +id gentest-2323 +epd 3n4/5b2/4p1k1/4P2p/Qp2P2P/5B2/4K3/2N5 b - - +perft 1 8 +perft 2 230 +perft 3 2371 +perft 4 67132 +perft 5 745469 +perft 6 21123065 + +id gentest-2324 +epd 3nQ1b1/7k/4p3/4P2p/1p2P2P/5B2/4K3/2N5 w - - +perft 1 26 +perft 2 180 +perft 3 5028 +perft 4 41125 +perft 5 1171480 +perft 6 10826166 + +id gentest-2325 +epd 3nQ1b1/8/4p2k/4P2p/1p2P1BP/8/8/2NK4 b - - +perft 1 9 +perft 2 233 +perft 3 2007 +perft 4 54886 +perft 5 528783 +perft 6 14763049 + +id gentest-2326 +epd 8/5Q1b/4p2k/4P2p/1p2P1BP/8/8/2NK4 w - - +perft 1 33 +perft 2 167 +perft 3 4972 +perft 4 32984 +perft 5 926688 +perft 6 7750939 + +id gentest-2327 +epd 8/6kb/4p3/4PB1p/1p2P2P/8/8/2NK4 b - - +perft 1 10 +perft 2 121 +perft 3 1068 +perft 4 14075 +perft 5 128099 +perft 6 1726542 + +id gentest-2328 +epd 5k2/8/4p1b1/4PB1p/1p2P2P/8/4N3/3K4 w - - +perft 1 14 +perft 2 147 +perft 3 2162 +perft 4 21909 +perft 5 326936 +perft 6 3398007 + +id gentest-2329 +epd 8/4k3/4p1b1/4PB1p/1p2P2P/8/2K5/6N1 b - - +perft 1 11 +perft 2 146 +perft 3 1485 +perft 4 19313 +perft 5 198592 +perft 6 2621437 + +id gentest-2330 +epd 8/4kb2/4p3/4PB1p/4P2P/1p6/3K4/6N1 w - - +perft 1 15 +perft 2 132 +perft 3 1887 +perft 4 18785 +perft 5 265117 +perft 6 2857476 + +id gentest-2331 +epd 8/4kb2/4p3/4PB1p/4P2P/2K5/1p6/6N1 b - - +perft 1 12 +perft 2 167 +perft 3 2360 +perft 4 30911 +perft 5 485142 +perft 6 6240922 + +id gentest-2332 +epd 8/3k4/4p1B1/4P2p/4P2P/2K5/1p6/6N1 w - - +perft 1 16 +perft 2 139 +perft 3 1950 +perft 4 20107 +perft 5 265908 +perft 6 3346646 + +id gentest-2333 +epd 8/8/2k1p1B1/4P2p/4P2P/1K3N2/1p6/8 b - - +perft 1 10 +perft 2 153 +perft 3 1577 +perft 4 22617 +perft 5 244466 +perft 6 3341839 + +id gentest-2334 +epd 8/2k5/4p1B1/4P2p/4P2P/1K6/7N/1q6 w - - +perft 1 4 +perft 2 100 +perft 3 860 +perft 4 19828 +perft 5 193909 +perft 6 4405789 + +id gentest-2335 +epd 8/2k5/4p1B1/4P2p/4P2P/8/1K5N/8 b - - +perft 1 7 +perft 2 112 +perft 3 668 +perft 4 10223 +perft 5 60041 +perft 6 913719 + +id gentest-2336 +epd 4B3/8/k3p3/4P2p/4P2P/8/1K5N/8 w - - +perft 1 18 +perft 2 76 +perft 3 1294 +perft 4 7230 +perft 5 118773 +perft 6 617253 + +id gentest-2337 +epd 8/k2B4/4p3/4P2p/4P2P/8/7N/K7 b - - +perft 1 5 +perft 2 60 +perft 3 289 +perft 4 3998 +perft 5 19738 +perft 6 289863 + +id gentest-2338 +epd 8/k2B4/4p3/4P2p/4P2P/8/7N/1K6 w - - +perft 1 14 +perft 2 66 +perft 3 1016 +perft 4 4997 +perft 5 79983 +perft 6 401420 + +id gentest-2339 +epd 1k6/3B4/4p3/4P2p/4P2P/1K6/7N/8 b - - +perft 1 4 +perft 2 68 +perft 3 325 +perft 4 5361 +perft 5 25680 +perft 6 428031 + +id gentest-2340 +epd 1k6/3B4/4p3/4P2p/4P2P/K7/7N/8 w - - +perft 1 14 +perft 2 59 +perft 3 911 +perft 4 4346 +perft 5 69277 +perft 6 341456 + +id gentest-2341 +epd k7/3B4/4p3/K3P2p/4P2P/8/7N/8 b - - +perft 1 3 +perft 2 38 +perft 3 152 +perft 4 2171 +perft 5 8342 +perft 6 124972 + +id gentest-2342 +epd 1k6/8/2B1p3/K3P2p/4P2P/8/7N/8 w - - +perft 1 15 +perft 2 52 +perft 3 717 +perft 4 2717 +perft 5 38705 +perft 6 166249 + +id gentest-2343 +epd 8/k7/2B1p3/1K2P2p/4P2P/8/8/5N2 b - - +perft 1 1 +perft 2 16 +perft 3 50 +perft 4 782 +perft 5 2796 +perft 6 43636 + +id gentest-2344 +epd 8/k7/2B1p3/4P2p/K3P2P/8/8/5N2 w - - +perft 1 15 +perft 2 48 +perft 3 695 +perft 4 2824 +perft 5 42897 +perft 6 189109 + +id gentest-2345 +epd 1k6/8/4p3/1B2P2p/1K2P2P/8/8/5N2 b - - +perft 1 5 +perft 2 95 +perft 3 428 +perft 4 7798 +perft 5 36012 +perft 6 645152 + +id gentest-2346 +epd 1k6/8/B3p3/4P2p/1K2P2P/8/8/5N2 w - - +perft 1 18 +perft 2 63 +perft 3 1092 +perft 4 4489 +perft 5 76298 +perft 6 350216 + +id gentest-2347 +epd 8/k7/B3p3/2K1P2p/4P2P/8/3N4/8 b - - +perft 1 3 +perft 2 48 +perft 3 139 +perft 4 2134 +perft 5 8160 +perft 6 126113 + +id gentest-2348 +epd 8/1k6/4p3/2K1P2p/2B1P2P/8/3N4/8 w - - +perft 1 17 +perft 2 92 +perft 3 1655 +perft 4 6633 +perft 5 116053 +perft 6 532720 + +id gentest-2349 +epd 2k5/8/4p3/4P2p/1KB1P2P/5N2/8/8 b - - +perft 1 5 +perft 2 110 +perft 3 628 +perft 4 12689 +perft 5 62142 +perft 6 1186863 + +id gentest-2350 +epd 2k5/8/4p3/4P2p/1K2P2P/3B1N2/8/8 w - - +perft 1 21 +perft 2 103 +perft 3 1986 +perft 4 11113 +perft 5 201517 +perft 6 989059 + +id gentest-2351 +epd 8/2k5/4p3/4P2p/4P2P/1K3N2/2B5/8 b - - +perft 1 7 +perft 2 112 +perft 3 667 +perft 4 10558 +perft 5 58224 +perft 6 933223 + +id gentest-2352 +epd 8/8/k3p3/4P2p/K3P2P/5N2/2B5/8 w - - +perft 1 13 +perft 2 43 +perft 3 611 +perft 4 3590 +perft 5 53806 +perft 6 267146 + +id gentest-2353 +epd 8/8/1k2p3/1N2P2p/K3P2P/8/2B5/8 b - - +perft 1 4 +perft 2 54 +perft 3 223 +perft 4 3073 +perft 5 13855 +perft 6 202747 + +id gentest-2354 +epd 8/8/2k1p3/1N2P2p/K3P2P/1B6/8/8 w - - +perft 1 15 +perft 2 63 +perft 3 949 +perft 4 4544 +perft 5 71480 +perft 6 316882 + +id gentest-2355 +epd 8/8/1k1Np3/4P2p/K1B1P2P/8/8/8 b - - +perft 1 4 +perft 2 77 +perft 3 306 +perft 4 5536 +perft 5 23284 +perft 6 405894 + +id gentest-2356 +epd 8/8/2kNp3/4P2p/K3P2P/3B4/8/8 w - - +perft 1 18 +perft 2 72 +perft 3 1230 +perft 4 5629 +perft 5 94988 +perft 6 418127 + +id gentest-2357 +epd 8/8/1k1Np3/4P2p/K3P2P/8/6B1/8 b - - +perft 1 5 +perft 2 75 +perft 3 293 +perft 4 4335 +perft 5 19978 +perft 6 298767 + +id gentest-2358 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-2359 +epd rnbqkbnr/1ppppppp/8/p7/3P4/8/PPPNPPPP/R1BQKBNR b KQkq - +perft 1 21 +perft 2 483 +perft 3 11325 +perft 4 286109 +perft 5 7327437 +perft 6 201919255 + +id gentest-2360 +epd 1nbqkbnr/2pppppp/rp6/p7/3P4/8/PPPNPPPP/1RBQKBNR w Kk - +perft 1 22 +perft 2 439 +perft 3 10786 +perft 4 245032 +perft 5 6649709 +perft 6 166996501 + +id gentest-2361 +epd 1nbqkb1r/2pppppp/rp5n/p7/3PP3/5N2/PPPN1PPP/1RBQKB1R b Kk - +perft 1 20 +perft 2 540 +perft 3 12282 +perft 4 362660 +perft 5 9091190 +perft 6 285531964 + +id gentest-2362 +epd rnbqkb1r/2pppppp/1p5n/8/p1BPP3/5N2/PPPN1PPP/1RBQK2R w Kk - +perft 1 32 +perft 2 709 +perft 3 22998 +perft 4 558141 +perft 5 18561781 +perft 6 486238566 + +id gentest-2363 +epd rnbqkb1r/2pppppp/1p5n/8/1PBPP3/p4N2/P1PNQPPP/1RB1K2R b Kk - +perft 1 23 +perft 2 806 +perft 3 19569 +perft 4 704424 +perft 5 18374337 +perft 6 676968611 + +id gentest-2364 +epd rnbqkb1r/2ppp1pp/1p6/5p2/1PBPP1n1/p4N2/P1PN1PPP/1RBQK2R w Kk - +perft 1 35 +perft 2 947 +perft 3 32995 +perft 4 917880 +perft 5 32215254 +perft 6 926813913 + +id gentest-2365 +epd 1nbqkb1r/2ppp1pp/1p6/5p2/rP1PP1n1/pB3N2/PBPN1PPP/1R1QK2R b Kk - +perft 1 30 +perft 2 1013 +perft 3 29863 +perft 4 1011540 +perft 5 30518796 +perft 6 1046605965 + +id gentest-2366 +epd 1nbqkb1r/3pp1pp/1pp5/4Pp2/rP1P4/pB3N2/PBPN1PPn/1R1QK2R w Kk - +perft 1 32 +perft 2 738 +perft 3 23622 +perft 4 577406 +perft 5 19234379 +perft 6 495923477 + +id gentest-2367 +epd 1nbqkb1r/3pp1pp/1p6/2p1Pp2/rP1P4/pBB2N2/P1PN1PPn/2RQK2R b Kk - +perft 1 26 +perft 2 751 +perft 3 19478 +perft 4 602092 +perft 5 16243598 +perft 6 528560999 + +id gentest-2368 +epd 1n1qkb1r/1b1pp1pp/8/1pp1Pp2/rP1P4/pB3N2/PBPN1PPn/2RQK2R w Kk - +perft 1 32 +perft 2 1041 +perft 3 33358 +perft 4 1083554 +perft 5 35885598 +perft 6 1178243911 + +id gentest-2369 +epd 1n1q1b1r/1b1ppkpp/8/1pp1Pp2/rPNP4/pB3NP1/PBP2P1n/2RQK2R b K - +perft 1 39 +perft 2 1179 +perft 3 35951 +perft 4 1150678 +perft 5 36283529 +perft 6 1207904939 + +id gentest-2370 +epd 1n1q1b1r/1b2pkpp/8/1pppPp2/rPNP2n1/pB3NP1/PBP2P2/2RQK1R1 w - - +perft 1 29 +perft 2 1062 +perft 3 32357 +perft 4 1170099 +perft 5 37031836 +perft 6 1322995048 + +id gentest-2371 +epd 1n1q1b1r/1b2pkpp/8/1pppPp2/1r1P2n1/NB4P1/PBPN1P2/2RQK1R1 b - - +perft 1 37 +perft 2 1078 +perft 3 37540 +perft 4 1127701 +perft 5 39170425 +perft 6 1219481595 + +id gentest-2372 +epd 1n1q1br1/1b2pkpp/8/1pppP3/Br1P1pn1/N5P1/PBPN1P2/2RQK1R1 w - - +perft 1 29 +perft 2 1081 +perft 3 32859 +perft 4 1191489 +perft 5 37591750 +perft 6 1342299031 + +id gentest-2373 +epd 1n1q1br1/1b2pkpp/8/1NppP3/B1NP1pn1/1r4P1/PBP2P2/2RQK1R1 b - - +perft 1 42 +perft 2 1435 +perft 3 53098 +perft 4 1846973 +perft 5 66453034 +perft 6 2350539992 + +id gentest-2374 +epd 1n1q1br1/Nb2pkpp/8/2ppP3/B1NP1pn1/1r4P1/PBP2P2/2RQK1R1 w - - +perft 1 38 +perft 2 1424 +perft 3 52420 +perft 4 1909764 +perft 5 70870344 +perft 6 2536372238 + +id gentest-2375 +epd 1n1qBbr1/Nb2p1pp/4k3/2ppP3/P1NP1pn1/1r4P1/1BP2P2/2RQK1R1 b - - +perft 1 40 +perft 2 1403 +perft 3 50058 +perft 4 1782699 +perft 5 61905801 +perft 6 2237748969 + +id gentest-2376 +epd 1n1qBbr1/Nb2p1pp/3Nk3/2ppP3/P2P1pn1/1r4P1/1BP2P2/2RQK1R1 w - - +perft 1 39 +perft 2 1415 +perft 3 52780 +perft 4 1849913 +perft 5 69490484 +perft 6 2375280195 + +id gentest-2377 +epd 1n1qBbr1/1b2p1p1/2NNk3/2ppP2p/P2P1pn1/Br4P1/2P2P2/2RQK1R1 b - - +perft 1 40 +perft 2 1498 +perft 3 51887 +perft 4 1956603 +perft 5 65903645 +perft 6 2509133961 + +id gentest-2378 +epd 1n1q1br1/1b1kpBp1/2NN1n2/2ppP2p/P2P1p2/Br4P1/2P2P2/2RQK1R1 w - - +perft 1 46 +perft 2 1534 +perft 3 66208 +perft 4 2156016 +perft 5 92348718 +perft 6 2976333871 + +id gentest-2379 +epd 1n1qNbr1/1b1kpBp1/2N2n2/2ppP2p/P2P1p2/B1r3P1/5P2/2RQK1R1 b - - +perft 1 35 +perft 2 1420 +perft 3 44167 +perft 4 1797192 +perft 5 56414128 +perft 6 2310823037 + +id gentest-2380 +epd 1n1qnbr1/1b1kpBp1/2N5/2ppP2p/P2P4/B1r2Pp1/8/2RQK1R1 w - - +perft 1 35 +perft 2 982 +perft 3 34810 +perft 4 1005045 +perft 5 36621284 +perft 6 1086550249 + +id gentest-2381 +epd 1n1qnbr1/1b2pBp1/2k5/2BpP2p/P2P4/2r2Pp1/2R5/3QK1R1 b - - +perft 1 30 +perft 2 1060 +perft 3 30226 +perft 4 1061272 +perft 5 30870529 +perft 6 1089539921 + +id gentest-2382 +epd bn2nbr1/2q1p1p1/2k3B1/2BpP2p/P2P4/2r2Pp1/2R5/3QK1R1 w - - +perft 1 38 +perft 2 1018 +perft 3 36958 +perft 4 1022634 +perft 5 37081642 +perft 6 1067730667 + +id gentest-2383 +epd bn2nbr1/2q1p1p1/1Bk3B1/3pP2p/P2P4/2r2P2/2R3p1/Q3K1R1 b - - +perft 1 22 +perft 2 756 +perft 3 18536 +perft 4 634539 +perft 5 17356165 +perft 6 589652660 + +id gentest-2384 +epd b3nbr1/2qnp1p1/1Bk3B1/3pP2p/P2P4/5P2/Q1r3p1/4K1R1 w - - +perft 1 27 +perft 2 739 +perft 3 18953 +perft 4 537978 +perft 5 14426581 +perft 6 425399068 + +id gentest-2385 +epd b3nbr1/2qnpBp1/1k6/3pP2p/P2P4/5P2/2Q3p1/4K1R1 b - - +perft 1 29 +perft 2 956 +perft 3 24227 +perft 4 727613 +perft 5 19852550 +perft 6 581008734 + +id gentest-2386 +epd b3nbr1/2q1pBp1/1k6/3p3p/P2P4/5n2/2QK2p1/6R1 w - - +perft 1 5 +perft 2 190 +perft 3 5721 +perft 4 173258 +perft 5 5181350 +perft 6 163291647 + +id gentest-2387 +epd b3nbr1/1q2pBp1/1k6/3p3p/P2P4/3K1n2/6Q1/6R1 b - - +perft 1 29 +perft 2 892 +perft 3 25384 +perft 4 809651 +perft 5 24300963 +perft 6 765593048 + +id gentest-2388 +epd b3nbr1/5Bp1/qk2p3/3p3p/P2P4/2K2n2/6Q1/6R1 w - - +perft 1 32 +perft 2 1099 +perft 3 32646 +perft 4 1136179 +perft 5 33283355 +perft 6 1170302180 + +id gentest-2389 +epd b3nbr1/k4Bp1/q3p3/3p3p/P2P4/2K2nQ1/6R1/8 b - - +perft 1 37 +perft 2 1003 +perft 3 35250 +perft 4 997382 +perft 5 35791220 +perft 6 1013430989 + +id gentest-2390 +epd b3nbr1/k4Bp1/1q2p3/3p3p/P2P4/1K3nQ1/6R1/8 w - - +perft 1 3 +perft 2 120 +perft 3 3143 +perft 4 117817 +perft 5 3377528 +perft 6 126292707 + +id gentest-2391 +epd b3nbr1/k4Bp1/4p3/3p3p/P2P4/5nQ1/KR6/8 b - - +perft 1 24 +perft 2 953 +perft 3 21723 +perft 4 813569 +perft 5 19487652 +perft 6 703375778 + +id gentest-2392 +epd b3n1r1/k5p1/4B3/2bp3p/P2P4/5nQ1/KR6/8 w - - +perft 1 43 +perft 2 1019 +perft 3 41627 +perft 4 1021759 +perft 5 40046624 +perft 6 1027212048 + +id gentest-2393 +epd b3nbr1/k5p1/4B3/3p3p/P2P4/5n2/KR1Q4/8 b - - +perft 1 23 +perft 2 807 +perft 3 18176 +perft 4 672612 +perft 5 15935458 +perft 6 595110713 + +id gentest-2394 +epd 4n1r1/k5p1/2b1B3/3p3p/P2P4/b4n2/KR5Q/8 w - - +perft 1 41 +perft 2 1116 +perft 3 42023 +perft 4 1170120 +perft 5 42650254 +perft 6 1220579159 + +id gentest-2395 +epd 4n1r1/k5p1/2b5/3p3p/P2P4/b6B/K6Q/1R2n3 b - - +perft 1 26 +perft 2 915 +perft 3 23541 +perft 4 833284 +perft 5 22591187 +perft 6 795973469 + +id gentest-2396 +epd b3n1r1/k2B4/8/3p2pp/P2P4/b7/K6Q/1R2n3 w - - +perft 1 40 +perft 2 881 +perft 3 33623 +perft 4 804208 +perft 5 29542369 +perft 6 745244186 + +id gentest-2397 +epd b3n1r1/1k1B4/8/3p2pp/P2P4/K7/7Q/4n3 b - - +perft 1 17 +perft 2 487 +perft 3 8708 +perft 4 239912 +perft 5 4737990 +perft 6 128535406 + +id gentest-2398 +epd b3n1r1/1k1B4/8/3p2p1/P2P3p/8/1Kn4Q/8 w - - +perft 1 30 +perft 2 510 +perft 3 15358 +perft 4 290132 +perft 5 8554988 +perft 6 173252524 + +id gentest-2399 +epd b5r1/1k1B4/3n4/3p2p1/P2P3p/8/1Kn5/2Q5 b - - +perft 1 28 +perft 2 735 +perft 3 18298 +perft 4 508790 +perft 5 12330888 +perft 6 342437466 + +id gentest-2400 +epd b3r3/1k1B4/8/3p1np1/P2P3p/8/1KQ5/8 w - - +perft 1 32 +perft 2 664 +perft 3 20211 +perft 4 390970 +perft 5 11456946 +perft 6 222491942 + +id gentest-2401 +epd b3r3/1k1B4/8/3p1n2/P2P2pp/2Q5/1K6/8 b - - +perft 1 26 +perft 2 801 +perft 3 14983 +perft 4 447494 +perft 5 8400044 +perft 6 239922156 + +id gentest-2402 +epd b7/1k6/4r3/1B1p4/P2P2pp/2Q3n1/1K6/8 w - - +perft 1 33 +perft 2 703 +perft 3 20946 +perft 4 416404 +perft 5 11859396 +perft 6 231724667 + +id gentest-2403 +epd b7/1k6/8/1B1p4/P2P2pp/1Q4n1/1K6/4r3 b - - +perft 1 26 +perft 2 629 +perft 3 10768 +perft 4 280167 +perft 5 5329977 +perft 6 140883105 + +id gentest-2404 +epd b1k5/8/8/3p1n2/P2P2pp/1Q6/1K2B3/4r3 w - - +perft 1 30 +perft 2 594 +perft 3 15335 +perft 4 317104 +perft 5 8057854 +perft 6 170344861 + +id gentest-2405 +epd b1k5/8/8/3p4/P2n2pp/2Q5/1K2B3/4r3 b - - +perft 1 6 +perft 2 182 +perft 3 3862 +perft 4 105085 +perft 5 2311808 +perft 6 62528005 + +id gentest-2406 +epd 2k5/8/2b5/3p4/P2n2pp/2Q2B2/1K2r3/8 w - - +perft 1 7 +perft 2 183 +perft 3 4048 +perft 4 102750 +perft 5 2514129 +perft 6 62687449 + +id gentest-2407 +epd 8/2k5/2b5/3B4/P2n2pp/2Q5/4r3/2K5 b - - +perft 1 29 +perft 2 858 +perft 3 23559 +perft 4 653453 +perft 5 17579856 +perft 6 479343727 + +id gentest-2408 +epd 8/2k5/2b5/r2B4/3n2pp/2Q5/8/2K5 w - - +perft 1 33 +perft 2 907 +perft 3 25425 +perft 4 698430 +perft 5 19403065 +perft 6 525383090 + +id gentest-2409 +epd 8/8/1kb5/r7/3Q2pp/8/B7/2K5 b - - +perft 1 5 +perft 2 160 +perft 3 3362 +perft 4 106162 +perft 5 2242341 +perft 6 67492905 + +id gentest-2410 +epd 8/8/2bQ4/1k6/6pp/8/r7/2K5 w - - +perft 1 25 +perft 2 560 +perft 3 11979 +perft 4 254555 +perft 5 5455485 +perft 6 113078497 + +id gentest-2411 +epd 2Q5/1b6/8/1k6/6pp/8/r7/2K5 b - - +perft 1 30 +perft 2 570 +perft 3 10927 +perft 4 230622 +perft 5 4523963 +perft 6 96502490 + +id gentest-2412 +epd 8/1Q6/8/2k5/6pp/8/r7/2K4b w - - +perft 1 25 +perft 2 454 +perft 3 9390 +perft 4 175501 +perft 5 3687201 +perft 6 69440864 + +id gentest-2413 +epd 8/8/Q7/2k5/6pp/8/5r2/1K5b b - - +perft 1 26 +perft 2 547 +perft 3 9621 +perft 4 197432 +perft 5 3615063 +perft 6 75674169 + +id gentest-2414 +epd 8/Qb6/8/3k4/6pp/8/5r2/1K6 w - - +perft 1 16 +perft 2 287 +perft 3 5535 +perft 4 95487 +perft 5 1948926 +perft 6 34075183 + +id gentest-2415 +epd 8/1b6/2k5/8/6pp/2Q5/5r2/1K6 b - - +perft 1 5 +perft 2 135 +perft 3 2743 +perft 4 56357 +perft 5 1136534 +perft 6 23422397 + +id gentest-2416 +epd 8/1b6/2k5/8/6pp/8/5r2/1K6 w - - +perft 1 2 +perft 2 52 +perft 3 112 +perft 4 2892 +perft 5 12013 +perft 6 315943 + +id gentest-2417 +epd 8/1b6/2k5/8/6pp/8/3r4/1K6 b - - +perft 1 26 +perft 2 72 +perft 3 1833 +perft 4 5835 +perft 5 144927 +perft 6 690216 + +id gentest-2418 +epd 8/8/1k6/8/6pp/8/3r4/2K4b w - - +perft 1 2 +perft 2 48 +perft 3 214 +perft 4 4681 +perft 5 20692 +perft 6 432465 + +id gentest-2419 +epd 8/8/1k6/8/6pp/8/K7/3r3b b - - +perft 1 30 +perft 2 99 +perft 3 2927 +perft 4 14920 +perft 5 431557 +perft 6 1986660 + +id gentest-2420 +epd 8/8/1k6/8/6pp/1K6/8/r6b w - - +perft 1 5 +perft 2 145 +perft 3 735 +perft 4 20956 +perft 5 108661 +perft 6 3074197 + +id gentest-2421 +epd 8/1b6/1k6/8/6pp/2K5/8/r7 b - - +perft 1 32 +perft 2 228 +perft 3 6705 +perft 4 33631 +perft 5 958918 +perft 6 4953316 + +id gentest-2422 +epd 8/1b6/1k6/8/3K2p1/7p/8/2r5 w - - +perft 1 3 +perft 2 96 +perft 3 506 +perft 4 15063 +perft 5 73888 +perft 6 2130975 + +id gentest-2423 +epd b7/8/1k6/8/3K2p1/7p/8/2r5 b - - +perft 1 30 +perft 2 106 +perft 3 3015 +perft 4 15940 +perft 5 443778 +perft 6 2262154 + +id gentest-2424 +epd b7/8/1k5r/8/4K1p1/7p/8/8 w - - +perft 1 6 +perft 2 155 +perft 3 809 +perft 4 20833 +perft 5 113653 +perft 6 2969187 + +id gentest-2425 +epd 8/8/1kb4r/8/6p1/6Kp/8/8 b - - +perft 1 27 +perft 2 106 +perft 3 2924 +perft 4 13010 +perft 5 360044 +perft 6 1586687 + +id gentest-2426 +epd b7/8/1k5r/8/5Kp1/8/7p/8 w - - +perft 1 6 +perft 2 178 +perft 3 764 +perft 4 22699 +perft 5 111448 +perft 6 3369547 + +id gentest-2427 +epd b7/8/7r/k7/3K2p1/8/7p/8 b - - +perft 1 29 +perft 2 159 +perft 3 4589 +perft 4 22085 +perft 5 663902 +perft 6 3550678 + +id gentest-2428 +epd 8/8/r7/k7/2K1b1p1/8/7p/8 w - - +perft 1 4 +perft 2 118 +perft 3 534 +perft 4 15305 +perft 5 72019 +perft 6 2126483 + +id gentest-2429 +epd 8/8/1r6/k7/2K1b1p1/8/7p/8 b - - +perft 1 34 +perft 2 119 +perft 3 3837 +perft 4 16111 +perft 5 505133 +perft 6 2336649 + +id gentest-2430 +epd 8/8/7r/k7/4b1p1/1K6/8/7r w - - +perft 1 5 +perft 2 205 +perft 3 744 +perft 4 29208 +perft 5 116490 +perft 6 4447280 + +id gentest-2431 +epd 8/8/7r/k7/3Kb1p1/8/8/1r6 b - - +perft 1 46 +perft 2 250 +perft 3 10220 +perft 4 40565 +perft 5 1568042 +perft 6 7250995 + +id gentest-2432 +epd 7r/8/1k6/8/2K1b1p1/8/8/1r6 w - - +perft 1 2 +perft 2 91 +perft 3 376 +perft 4 16108 +perft 5 69771 +perft 6 2862154 + +id gentest-2433 +epd 3r4/8/1k6/8/4K1p1/8/8/1r6 b - - +perft 1 34 +perft 2 145 +perft 3 4813 +perft 4 26923 +perft 5 880526 +perft 6 4808707 + +id gentest-2434 +epd 4r3/8/8/1k6/3K2p1/8/8/1r6 w - - +perft 1 3 +perft 2 93 +perft 3 355 +perft 4 11349 +perft 5 48362 +perft 6 1517631 + +id gentest-2435 +epd 4r3/8/3K4/1k6/1r4p1/8/8/8 b - - +perft 1 28 +perft 2 104 +perft 3 2954 +perft 4 11228 +perft 5 320333 +perft 6 1437361 + +id gentest-2436 +epd 2r1r3/8/8/1k1K4/6p1/8/8/8 w - - +perft 1 2 +perft 2 56 +perft 3 134 +perft 4 4039 +perft 5 13548 +perft 6 401308 + +id gentest-2437 +epd 2r1r3/8/2k5/8/2K3p1/8/8/8 b - - +perft 1 21 +perft 2 99 +perft 3 2695 +perft 4 13249 +perft 5 384507 +perft 6 1870145 + +id gentest-2438 +epd 3r3r/8/2k5/8/3K2p1/8/8/8 w - - +perft 1 5 +perft 2 154 +perft 3 689 +perft 4 21442 +perft 5 119762 +perft 6 3776514 + +id gentest-2439 +epd 3r3r/8/1k6/8/6p1/8/4K3/8 b - - +perft 1 32 +perft 2 133 +perft 3 4282 +perft 4 19687 +perft 5 628526 +perft 6 2925706 + +id gentest-2440 +epd 3r4/8/8/2k5/6p1/7r/5K2/8 w - - +perft 1 5 +perft 2 185 +perft 3 656 +perft 4 22613 +perft 5 91572 +perft 6 3029785 + +id gentest-2441 +epd 3r4/8/8/2k4r/6p1/8/5K2/8 b - - +perft 1 34 +perft 2 216 +perft 3 7095 +perft 4 27501 +perft 5 889212 +perft 6 3981732 + +id gentest-2442 +epd 8/8/8/2kr4/6p1/7r/8/6K1 w - - +perft 1 3 +perft 2 99 +perft 3 424 +perft 4 13649 +perft 5 49530 +perft 6 1581838 + +id gentest-2443 +epd 8/8/3r4/2k5/6p1/7r/8/6K1 b - - +perft 1 36 +perft 2 112 +perft 3 3792 +perft 4 15240 +perft 5 499441 +perft 6 1889149 + +id gentest-2444 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-2445 +epd rnbqkbnr/1ppppppp/8/p7/2P2P2/8/PP1PP1PP/RNBQKBNR b KQkq - +perft 1 21 +perft 2 463 +perft 3 10766 +perft 4 264710 +perft 5 6738000 +perft 6 180076757 + +id gentest-2446 +epd rnb1kbnr/1p1ppppp/1q6/p1p5/2P2P2/8/PP1PPKPP/RNBQ1BNR w kq - +perft 1 25 +perft 2 794 +perft 3 20715 +perft 4 630906 +perft 5 16967616 +perft 6 520874238 + +id gentest-2447 +epd rnb1kb1r/1p1ppppp/1q3n2/p1p5/P1P2P2/8/1P1PP1PP/RNBQKBNR b kq - +perft 1 30 +perft 2 596 +perft 3 18357 +perft 4 418219 +perft 5 13249032 +perft 6 331238921 + +id gentest-2448 +epd rn2kb1r/1p2pppp/1q3n2/p1pp4/P1P2Pb1/8/1P1PP2P/RNBQKBNR w kq - +perft 1 21 +perft 2 816 +perft 3 19282 +perft 4 739981 +perft 5 19023030 +perft 6 723651066 + +id gentest-2449 +epd r3kb1r/1p2pppp/1qn2n2/p1pp4/P1P2Pb1/4PQ2/1P1P3P/RNB1KBNR b kq - +perft 1 42 +perft 2 1289 +perft 3 52928 +perft 4 1573356 +perft 5 63290508 +perft 6 1896986855 + +id gentest-2450 +epd r3kb1r/1p2pppp/1q6/p1pp3n/P1Pn1PQ1/4P3/1P1P3P/RNB1KBNR w kq - +perft 1 37 +perft 2 1403 +perft 3 47074 +perft 4 1711230 +perft 5 56725490 +perft 6 2025022915 + +id gentest-2451 +epd r3kb1r/1p2pppp/8/p1pQ3n/P1Pn1P2/4P3/1q1P3P/RNB1KBNR b kq - +perft 1 38 +perft 2 1248 +perft 3 41799 +perft 4 1369674 +perft 5 45587278 +perft 6 1493352509 + +id gentest-2452 +epd r3kb1r/4pppp/2p5/p1p4n/P1Pn1P2/4P3/q2P3P/RNB1KBNR w kq - +perft 1 20 +perft 2 682 +perft 3 13337 +perft 4 452555 +perft 5 9391479 +perft 6 319674339 + +id gentest-2453 +epd r3kb1r/4pppp/2p5/p1p4n/q1Pn1P2/R3P2N/3P3P/1NB1KB1R b kq - +perft 1 33 +perft 2 617 +perft 3 20853 +perft 4 446916 +perft 5 15343266 +perft 6 357915345 + +id gentest-2454 +epd 1r2kb1r/4p1pp/2p2p2/p1p4n/q1PnPP2/R6N/3P3P/1NB1KB1R w k - +perft 1 22 +perft 2 793 +perft 3 17229 +perft 4 607956 +perft 5 13982703 +perft 6 491211713 + +id gentest-2455 +epd 1r2kb1r/4p1pp/2p2p2/p1p2n1n/q1P1PP2/7N/R2PK2P/1NB2B1R b k - +perft 1 35 +perft 2 657 +perft 3 22768 +perft 4 459128 +perft 5 15914151 +perft 6 344494244 + +id gentest-2456 +epd 1r2kb1r/4p1pp/2p2p2/p1p2n1n/2P1PP2/2q5/R2PKN1P/1NB2B1R w k - +perft 1 26 +perft 2 1094 +perft 3 23556 +perft 4 924631 +perft 5 20814062 +perft 6 784281022 + +id gentest-2457 +epd 1r2kb1r/4p1pp/2p2p2/p1p2n1n/2PPPP2/6q1/R2K1N1P/1NB2B1R b k - +perft 1 43 +perft 2 1109 +perft 3 45424 +perft 4 1176891 +perft 5 46587776 +perft 6 1222478357 + +id gentest-2458 +epd 1r3b1r/3kp1pp/2p2p2/p1p2n1n/2PPPP1q/8/2RK1N1P/1NB2B1R w - - +perft 1 26 +perft 2 997 +perft 3 25195 +perft 4 931638 +perft 5 23934247 +perft 6 875813310 + +id gentest-2459 +epd 1r2kb1r/4p1pp/2p2p2/p1p1Pn1n/2PP1P1q/8/2R1KN1P/1NB2B1R b - - +perft 1 35 +perft 2 863 +perft 3 30783 +perft 4 763846 +perft 5 27429480 +perft 6 698746580 + +id gentest-2460 +epd 4kb1r/4p1pp/1rp2p2/p1p1P2n/2PP1P1q/4n3/1BR1KN1P/1N3B1R w - - +perft 1 29 +perft 2 1039 +perft 3 26802 +perft 4 952525 +perft 5 24608819 +perft 6 878730907 + +id gentest-2461 +epd 4kb1r/4p1pp/2p2p2/p1p1PP1n/2PP3q/4n2N/1rR1K2P/1N3B1R b - - +perft 1 39 +perft 2 660 +perft 3 25057 +perft 4 462933 +perft 5 17406380 +perft 6 345864038 + +id gentest-2462 +epd 4kb1r/4p1pp/2p2p2/p3PP1n/2Ppq3/4n2N/1rR1K2P/1N3BR1 w - - +perft 1 22 +perft 2 911 +perft 3 14827 +perft 4 607431 +perft 5 11632763 +perft 6 469714159 + +id gentest-2463 +epd 4kb1r/4p1pp/2p2p2/p3PP1n/2Ppq3/2N4N/1rR2KnP/5BR1 b - - +perft 1 40 +perft 2 709 +perft 3 27656 +perft 4 549916 +perft 5 20863426 +perft 6 461222087 + +id gentest-2464 +epd 4k2r/6pp/2p1pp2/p3PP1n/1bPpq3/2N4N/1rR2KBP/6R1 w - - +perft 1 28 +perft 2 1125 +perft 3 25963 +perft 4 1026170 +perft 5 25425310 +perft 6 991611684 + +id gentest-2465 +epd 4k2r/6pp/2p1pp2/p2BPP1n/1bPp4/2N4N/1rR2K1P/6R1 b - - +perft 1 30 +perft 2 1112 +perft 3 33204 +perft 4 1144379 +perft 5 34521839 +perft 6 1156805166 + +id gentest-2466 +epd 4k2r/6pp/2p1pP2/p2B1P1n/1bP5/2Np3N/2R2K1P/1r4R1 w - - +perft 1 39 +perft 2 1249 +perft 3 44046 +perft 4 1392454 +perft 5 47594632 +perft 6 1491394368 + +id gentest-2467 +epd 4k2r/6pp/2p2n2/p2B1P2/1bP5/2Np3N/2R2K1P/1r4R1 b - - +perft 1 35 +perft 2 1192 +perft 3 38460 +perft 4 1254312 +perft 5 40516107 +perft 6 1296829416 + +id gentest-2468 +epd 4k2r/6pp/5n2/p2p1P2/1bP1N3/7N/2Rp1K1P/1r4R1 w - - +perft 1 33 +perft 2 1148 +perft 3 31950 +perft 4 1109396 +perft 5 30629829 +perft 6 1061375332 + +id gentest-2469 +epd 4k2r/6Rp/5n2/p2p1P2/2P1N3/b3K2N/2Rp3P/1r6 b - - +perft 1 40 +perft 2 1361 +perft 3 45872 +perft 4 1443831 +perft 5 47494524 +perft 6 1431424624 + +id gentest-2470 +epd 4k2r/6Rp/5n2/p2p1P2/2P1N3/3K3N/2Rp3P/2b4r w - - +perft 1 37 +perft 2 869 +perft 3 26165 +perft 4 652712 +perft 5 19022519 +perft 6 498008372 + +id gentest-2471 +epd 3k3r/2R4p/5n2/p2p1P2/2P1N3/3K3N/2Rp3P/2b4r b - - +perft 1 28 +perft 2 787 +perft 3 21237 +perft 4 586949 +perft 5 16198634 +perft 6 448588419 + +id gentest-2472 +epd 3k3r/2R4p/8/p2p1P2/2P3n1/3K3N/2RN3P/2bq3r w - - +perft 1 23 +perft 2 635 +perft 3 12230 +perft 4 364803 +perft 5 7645284 +perft 6 243664666 + +id gentest-2473 +epd 3k3r/5R1p/8/p2p1P2/2P3n1/3K1N1N/2R4P/2b1q2r b - - +perft 1 42 +perft 2 1042 +perft 3 39876 +perft 4 1022295 +perft 5 38519234 +perft 6 1015631678 + +id gentest-2474 +epd 3k3r/5R1p/8/p1Pp1P2/6n1/3KbN1N/2R4P/4q1r1 w - - +perft 1 31 +perft 2 1079 +perft 3 27683 +perft 4 1004052 +perft 5 25916524 +perft 6 958288476 + +id gentest-2475 +epd 3k3r/7R/8/2Pp1P2/p5n1/3KbN1N/2R4P/4q1r1 b - - +perft 1 38 +perft 2 1033 +perft 3 39882 +perft 4 1058374 +perft 5 41733886 +perft 6 1095246064 + +id gentest-2476 +epd 3k3r/7R/8/2Pp1P2/p5n1/3K1N1N/3b3P/6r1 w - - +perft 1 28 +perft 2 831 +perft 3 20428 +perft 4 610082 +perft 5 14446920 +perft 6 431344663 + +id gentest-2477 +epd 3k3r/1R6/7n/2Pp1PN1/p7/3K1N2/3b3P/6r1 b - - +perft 1 31 +perft 2 998 +perft 3 27346 +perft 4 789737 +perft 5 22121138 +perft 6 597470948 + +id gentest-2478 +epd 3k3r/5R2/7n/2Pp1PN1/p7/3K1Nr1/7P/4b3 w - - +perft 1 22 +perft 2 453 +perft 3 10127 +perft 4 231860 +perft 5 5416326 +perft 6 133248818 + +id gentest-2479 +epd 3k3r/1R6/7n/2Pp1PN1/8/p2K1Nr1/7P/4b3 b - - +perft 1 23 +perft 2 620 +perft 3 14379 +perft 4 370725 +perft 5 9442549 +perft 6 239771690 + +id gentest-2480 +epd 3k3r/1R6/2P4n/3p1PN1/8/3K1Nr1/7P/n3b3 w - - +perft 1 27 +perft 2 556 +perft 3 13331 +perft 4 315489 +perft 5 7547882 +perft 6 194445968 + +id gentest-2481 +epd 3k3r/1R6/2P4n/3p1PN1/8/5NP1/2n1K3/4b3 b - - +perft 1 22 +perft 2 655 +perft 3 13696 +perft 4 386591 +perft 5 8599378 +perft 6 232218514 + +id gentest-2482 +epd 3k3r/1R6/2P4n/3p1PN1/8/5NP1/4n3/3Kb3 w - - +perft 1 32 +perft 2 625 +perft 3 17712 +perft 4 372298 +perft 5 10063297 +perft 6 224066934 + +id gentest-2483 +epd 3k3r/6R1/2P4n/3p1PN1/1b6/5NP1/4n3/3K4 b - - +perft 1 26 +perft 2 653 +perft 3 14322 +perft 4 360618 +perft 5 8156094 +perft 6 203007120 + +id gentest-2484 +epd 3kr3/6R1/2P4n/3p1PN1/1b6/6P1/3N4/2nK4 w - - +perft 1 26 +perft 2 613 +perft 3 15078 +perft 4 355322 +perft 5 8530768 +perft 6 204365759 + +id gentest-2485 +epd 3krb2/1R6/2P1N2n/3p1P2/8/6P1/3N4/2nK4 b - - +perft 1 2 +perft 2 60 +perft 3 1259 +perft 4 32233 +perft 5 740237 +perft 6 17757928 + +id gentest-2486 +epd 3k1b2/1R6/2P1r2n/3p1P2/8/6P1/2KNn3/8 w - - +perft 1 29 +perft 2 733 +perft 3 17760 +perft 4 455252 +perft 5 10323987 +perft 6 267607704 + +id gentest-2487 +epd 3k1b2/1R6/2P1r2n/3p1P2/8/6n1/2KN4/8 b - - +perft 1 30 +perft 2 829 +perft 3 22022 +perft 4 529034 +perft 5 13985069 +perft 6 310633944 + +id gentest-2488 +epd 3k1b2/R7/2P4n/3prP2/8/6n1/2KN4/8 w - - +perft 1 29 +perft 2 718 +perft 3 18168 +perft 4 460574 +perft 5 10500200 +perft 6 272170516 + +id gentest-2489 +epd 3krb2/3R4/2P4n/3p1P2/8/5Nn1/2K5/8 b - - +perft 1 1 +perft 2 28 +perft 3 671 +perft 4 16128 +perft 5 405989 +perft 6 9013261 + +id gentest-2490 +epd 2k1rbn1/3R4/2P5/3p1P2/3N4/6n1/2K5/8 w - - +perft 1 25 +perft 2 574 +perft 3 13030 +perft 4 301401 +perft 5 6573073 +perft 6 156834585 + +id gentest-2491 +epd 2k1rbn1/3R4/2P5/3p1P2/3N4/8/2K5/5n2 b - - +perft 1 23 +perft 2 498 +perft 3 10803 +perft 4 231286 +perft 5 5286788 +perft 6 111252577 + +id gentest-2492 +epd 2k1r3/3Rn3/2Pb4/3p1P2/3N4/8/8/3K1n2 w - - +perft 1 18 +perft 2 357 +perft 3 6599 +perft 4 145013 +perft 5 2774378 +perft 6 65233006 + +id gentest-2493 +epd 2k1r3/1R6/2nbN3/3p1P2/8/8/8/3K1n2 b - - +perft 1 31 +perft 2 766 +perft 3 21323 +perft 4 453615 +perft 5 12565586 +perft 6 255551083 + +id gentest-2494 +epd 2k3r1/5R2/2n1N3/3pbP2/8/8/8/3K1n2 w - - +perft 1 22 +perft 2 727 +perft 3 14653 +perft 4 451588 +perft 5 8991123 +perft 6 265062186 + +id gentest-2495 +epd 6r1/3k2N1/2n5/3pbP2/8/8/8/3K1n2 b - - +perft 1 37 +perft 2 280 +perft 3 10072 +perft 4 87498 +perft 5 2933513 +perft 6 27066592 + +id gentest-2496 +epd 3k2r1/6N1/2n5/3pbP2/8/8/7n/4K3 w - - +perft 1 8 +perft 2 220 +perft 3 1906 +perft 4 56320 +perft 5 497957 +perft 6 15031599 + +id gentest-2497 +epd 3k2r1/6N1/2n2P2/3p4/8/6b1/7n/3K4 b - - +perft 1 26 +perft 2 229 +perft 3 5840 +perft 4 60069 +perft 5 1610475 +perft 6 17812804 + +id gentest-2498 +epd 6r1/1k6/2n1NP2/3p4/8/6b1/7n/3K4 w - - +perft 1 13 +perft 2 411 +perft 3 5251 +perft 4 170635 +perft 5 2185141 +perft 6 68722116 + +id gentest-2499 +epd 6r1/1k3P2/2n5/6N1/3p4/6b1/7n/3K4 b - - +perft 1 36 +perft 2 564 +perft 3 17470 +perft 4 290678 +perft 5 8263633 +perft 6 141839038 + +id gentest-2500 +epd k4Nr1/8/2n5/6N1/3p4/6b1/7n/3K4 w - - +perft 1 14 +perft 2 398 +perft 3 5497 +perft 4 156938 +perft 5 2225359 +perft 6 64449313 + +id gentest-2501 +epd 5Nr1/1k6/2nN4/8/3p4/6b1/7n/3K4 b - - +perft 1 7 +perft 2 105 +perft 3 2839 +perft 4 40819 +perft 5 1169688 +perft 6 16611178 + +id gentest-2502 +epd 5Nr1/5N2/1kn5/8/3p4/6b1/8/3K1n2 w - - +perft 1 13 +perft 2 404 +perft 3 5285 +perft 4 166510 +perft 5 2220028 +perft 6 70049116 + +id gentest-2503 +epd 3N2r1/2kN4/2n5/8/3p4/6b1/8/3K1n2 b - - +perft 1 30 +perft 2 364 +perft 3 10571 +perft 4 135054 +perft 5 3825477 +perft 6 49441279 + +id gentest-2504 +epd 3N2r1/2kN4/2nb4/8/3p4/8/8/2K2n2 w - - +perft 1 14 +perft 2 459 +perft 3 6308 +perft 4 194109 +perft 5 2637202 +perft 6 79745057 + +id gentest-2505 +epd 3N1N2/2k5/2nb2r1/8/3p4/8/8/1K3n2 b - - +perft 1 35 +perft 2 425 +perft 3 12457 +perft 4 152426 +perft 5 4562577 +perft 6 57070496 + +id gentest-2506 +epd 5N2/2k2Nr1/2nb4/8/3p4/8/3n4/1K6 w - - +perft 1 5 +perft 2 180 +perft 3 2277 +perft 4 74905 +perft 5 936822 +perft 6 30084091 + +id gentest-2507 +epd 5N2/2k3r1/3N4/n7/3p4/8/K2n4/8 b - - +perft 1 27 +perft 2 394 +perft 3 9029 +perft 4 121904 +perft 5 2985100 +perft 6 39631660 + +id gentest-2508 +epd 8/2kN1r2/2nN4/8/3p4/8/K2n4/8 w - - +perft 1 17 +perft 2 418 +perft 3 6472 +perft 4 158463 +perft 5 2313947 +perft 6 57478383 + +id gentest-2509 +epd 8/2k1nr2/1N6/8/3pN3/8/K2n4/8 b - - +perft 1 27 +perft 2 451 +perft 3 11366 +perft 4 177427 +perft 5 4460448 +perft 6 65674254 + +id gentest-2510 +epd 8/2k4r/1N4n1/8/3p4/8/K2N4/8 w - - +perft 1 17 +perft 2 372 +perft 3 5882 +perft 4 130145 +perft 5 1999112 +perft 6 43926871 + +id gentest-2511 +epd 8/2k5/1N4n1/8/3p4/8/8/K4N1r b - - +perft 1 22 +perft 2 211 +perft 3 4228 +perft 4 49471 +perft 5 1078655 +perft 6 13841897 + +id gentest-2512 +epd 8/2k5/8/4n3/2N5/3p4/8/K4N1r w - - +perft 1 11 +perft 2 253 +perft 3 2729 +perft 4 62982 +perft 5 791947 +perft 6 18672092 + +id gentest-2513 +epd 3k4/8/8/4n3/8/3pN3/8/1K3N1r b - - +perft 1 22 +perft 2 253 +perft 3 5783 +perft 4 73453 +perft 5 1698540 +perft 6 22296706 + +id gentest-2514 +epd 4k3/8/8/4n3/8/3p4/6N1/1K3N1r w - - +perft 1 8 +perft 2 172 +perft 3 1882 +perft 4 42592 +perft 5 519514 +perft 6 11913038 + +id gentest-2515 +epd 4k3/8/8/4n3/8/3p3r/1K1N2N1/8 b - - +perft 1 22 +perft 2 361 +perft 3 8042 +perft 4 122486 +perft 5 2727083 +perft 6 41066942 + +id gentest-2516 +epd 4k2r/8/2n5/8/8/1K1p4/3N2N1/8 w - - +perft 1 15 +perft 2 332 +perft 3 5052 +perft 4 113911 +perft 5 1739874 +perft 6 39669421 + +id gentest-2517 +epd 4k2r/4n3/8/8/8/1K1p2N1/6N1/8 b - - +perft 1 20 +perft 2 335 +perft 3 7157 +perft 4 114490 +perft 5 2512109 +perft 6 39117433 + +id gentest-2518 +epd 3k4/4n3/8/8/7N/1K1p2N1/8/8 w - - +perft 1 17 +perft 2 188 +perft 3 3080 +perft 4 36928 +perft 5 593492 +perft 6 7513269 + +id gentest-2519 +epd 3k4/8/8/5n1N/8/1K1p1N2/8/8 b - - +perft 1 14 +perft 2 254 +perft 3 3301 +perft 4 56744 +perft 5 735895 +perft 6 12261104 + +id gentest-2520 +epd 3k4/8/6n1/7N/8/2Kp1N2/8/8 w - - +perft 1 19 +perft 2 221 +perft 3 3941 +perft 4 44607 +perft 5 772468 +perft 6 9129015 + +id gentest-2521 +epd 2k5/8/6n1/7N/8/3K1N2/8/8 b - - +perft 1 11 +perft 2 196 +perft 3 2130 +perft 4 37679 +perft 5 418011 +perft 6 7275358 + +id gentest-2522 +epd 2k3n1/8/8/7N/8/5N2/4K3/8 w - - +perft 1 19 +perft 2 150 +perft 3 2707 +perft 4 26347 +perft 5 461245 +perft 6 4704168 + +id gentest-2523 +epd 2k5/8/5N1n/8/8/8/3NK3/8 b - - +perft 1 8 +perft 2 165 +perft 3 1609 +perft 4 29733 +perft 5 301314 +perft 6 5328628 + +id gentest-2524 +epd 2k5/8/5N1n/8/8/8/3N4/3K4 w - - +perft 1 18 +perft 2 149 +perft 3 2541 +perft 4 24871 +perft 5 416358 +perft 6 4218261 + +id gentest-2525 +epd 2k3n1/8/8/8/8/4N3/3N4/3K4 b - - +perft 1 8 +perft 2 136 +perft 3 1349 +perft 4 22923 +perft 5 236071 +perft 6 4039840 + +id gentest-2526 +epd 2k3n1/8/8/8/8/8/3N2N1/3K4 w - - +perft 1 14 +perft 2 112 +perft 3 1712 +perft 4 16947 +perft 5 268837 +perft 6 2797138 + +id gentest-2527 +epd 3k2n1/8/8/8/8/1N6/6N1/4K3 b - - +perft 1 8 +perft 2 112 +perft 3 1096 +perft 4 16559 +perft 5 168614 +perft 6 2658867 + +id gentest-2528 +epd 6n1/5k2/8/8/8/1N6/6N1/3K4 w - - +perft 1 15 +perft 2 145 +perft 3 2213 +perft 4 22240 +perft 5 354758 +perft 6 3664709 + +id gentest-2529 +epd 6n1/6k1/8/8/7N/8/8/N2K4 b - - +perft 1 9 +perft 2 99 +perft 3 839 +perft 4 10980 +perft 5 109156 +perft 6 1498575 + +id gentest-2530 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-2531 +epd rnbqkbnr/ppppppp1/7p/8/8/1P1P4/P1P1PPPP/RNBQKBNR b KQkq - +perft 1 19 +perft 2 531 +perft 3 11436 +perft 4 316231 +perft 5 7645220 +perft 6 214492317 + +id gentest-2532 +epd rnbqkbnr/pp1ppp2/2p4p/6B1/8/1P1P4/P1P1PPPP/RN1QKBNR w KQkq - +perft 1 30 +perft 2 595 +perft 3 17125 +perft 4 398912 +perft 5 11592527 +perft 6 301579199 + +id gentest-2533 +epd rnbqkbnr/pp1ppp2/2p5/6p1/8/1P1P4/P1PNPPPP/R1Q1KBNR b KQkq - +perft 1 26 +perft 2 668 +perft 3 19090 +perft 4 508223 +perft 5 15471034 +perft 6 428553879 + +id gentest-2534 +epd rnbqk1n1/pp1pppb1/2p5/6p1/8/1P1P4/P1P1PPPr/RNQ1KBNR w KQq - +perft 1 27 +perft 2 953 +perft 3 26236 +perft 4 899836 +perft 5 26217818 +perft 6 894708773 + +id gentest-2535 +epd rnbqk1nr/pp1pppb1/2p5/6p1/8/NP1P4/P1PQPPP1/R3KBNR b KQq - +perft 1 34 +perft 2 1139 +perft 3 38423 +perft 4 1289227 +perft 5 43685127 +perft 6 1479697105 + +id gentest-2536 +epd rn1qk1nr/pb1pppb1/2p5/Qp4p1/8/NP1P4/P1P1PPP1/R3KBNR w KQq - +perft 1 38 +perft 2 1264 +perft 3 45045 +perft 4 1483418 +perft 5 52731892 +perft 6 1750762059 + +id gentest-2537 +epd rn1qk1nr/pb2ppb1/2pp4/1p4p1/4P3/NPQP4/P1P2PP1/R3KBNR b KQq - +perft 1 36 +perft 2 1315 +perft 3 45824 +perft 4 1680279 +perft 5 58503218 +perft 6 2146001615 + +id gentest-2538 +epd rn1qk1nr/p3pp2/b1pp4/1p4p1/3bP3/NPQP4/P1P1NPP1/R3KB1R w KQq - +perft 1 36 +perft 2 1197 +perft 3 40925 +perft 4 1375354 +perft 5 47437234 +perft 6 1606822869 + +id gentest-2539 +epd rn1qk1nr/p3pp2/b1pp4/1p4p1/1Q2P3/NP1P4/P1P1NbP1/2KR1B1R b q - +perft 1 34 +perft 2 1185 +perft 3 40775 +perft 4 1408223 +perft 5 48737765 +perft 6 1684947227 + +id gentest-2540 +epd rn1qk1nr/pb2pp2/2pp4/1p4p1/1QN1P3/1P1P4/P1P1N1P1/2KRbB1R w q - +perft 1 41 +perft 2 1396 +perft 3 53717 +perft 4 1852247 +perft 5 69769285 +perft 6 2425546576 + +id gentest-2541 +epd rnbqk1nr/p3pp2/2pp4/1p4p1/2N1P3/1P1P4/P1P1N1P1/2KRbBQR b q - +perft 1 42 +perft 2 1510 +perft 3 58811 +perft 4 2112863 +perft 5 80157868 +perft 6 2899741031 + +id gentest-2542 +epd rnb1k1n1/p3pp1r/1qpp4/1p4p1/P1N1P3/1P1P4/2P1N1P1/2KRbBQR w q - +perft 1 36 +perft 2 1692 +perft 3 58936 +perft 4 2572000 +perft 5 90295785 +perft 6 3738507500 + +id gentest-2543 +epd rnb1k1n1/p3pp1r/1qpp4/1p6/P3P1p1/1P1PN3/2PRN1P1/2K1bBQR b q - +perft 1 43 +perft 2 1189 +perft 3 49237 +perft 4 1461557 +perft 5 58351228 +perft 6 1814424439 + +id gentest-2544 +epd rn2k1n1/p3pp1r/bqpp4/1p2P3/P5p1/1P1PN3/2PRN1P1/2K1bBQR w q - +perft 1 30 +perft 2 1059 +perft 3 32491 +perft 4 1136985 +perft 5 36051366 +perft 6 1259900797 + +id gentest-2545 +epd rn2k1n1/p4p1R/bqppp3/1p2P3/PP4p1/3PN3/2PRN1P1/2K1bBQ1 b q - +perft 1 28 +perft 2 863 +perft 3 24393 +perft 4 782460 +perft 5 22343523 +perft 6 735953997 + +id gentest-2546 +epd rnb1k1n1/p6R/1qppp3/Pp2Pp2/1P4p1/3PN3/2PRN1P1/2K1bBQ1 w q - +perft 1 37 +perft 2 1028 +perft 3 35077 +perft 4 962993 +perft 5 32371038 +perft 6 888668768 + +id gentest-2547 +epd rnb1k3/p3n2R/Pqppp3/1p1NPp2/1P4p1/3P4/2PRN1P1/2K1bBQ1 b q - +perft 1 31 +perft 2 1086 +perft 3 28714 +perft 4 984312 +perft 5 25986414 +perft 6 881452187 + +id gentest-2548 +epd rnb1k3/p5R1/Pqppp3/1p1nPp2/1P4p1/3P2b1/2PRN1P1/2K2BQ1 w q - +perft 1 30 +perft 2 909 +perft 3 27143 +perft 4 794231 +perft 5 23561321 +perft 6 676245699 + +id gentest-2549 +epd rnb1k3/p7/Pqppp3/1p1nP3/1P4p1/3P2b1/2PRN1PQ/2K2B2 b q - +perft 1 35 +perft 2 763 +perft 3 23481 +perft 4 540121 +perft 5 15988624 +perft 6 383978220 + +id gentest-2550 +epd rnb1k3/p7/P1ppp3/1pq1P3/1P3np1/2PP2b1/3RN1PQ/2K2B2 w q - +perft 1 25 +perft 2 737 +perft 3 17459 +perft 4 499594 +perft 5 12165736 +perft 6 342888471 + +id gentest-2551 +epd rn2k3/pb6/P1ppp3/1pqPP3/1P3np1/2P3b1/3RN1PQ/2K2B2 b q - +perft 1 32 +perft 2 823 +perft 3 24776 +perft 4 660460 +perft 5 19753369 +perft 6 541884181 + +id gentest-2552 +epd rn2k3/pb6/P1ppp3/1pqPP3/1P4p1/2P5/3RBbPQ/2K5 w q - +perft 1 34 +perft 2 824 +perft 3 26397 +perft 4 661699 +perft 5 20615727 +perft 6 531670633 + +id gentest-2553 +epd Rn6/p2k4/2ppp3/1pqPP3/1P4p1/2P5/3RBbPQ/2K5 b - - +perft 1 25 +perft 2 825 +perft 3 19343 +perft 4 632994 +perft 5 14992365 +perft 6 489061732 + +id gentest-2554 +epd Rn5Q/p1k5/2ppp3/1pqPP3/1P4p1/2P5/3RBbP1/2K5 w - - +perft 1 40 +perft 2 814 +perft 3 30362 +perft 4 648095 +perft 5 23397953 +perft 6 520910806 + +id gentest-2555 +epd Rn5Q/p1k5/2pPp3/1pqP4/1P1b2p1/2P5/2KRB1P1/8 b - - +perft 1 5 +perft 2 202 +perft 3 4357 +perft 4 162891 +perft 5 3687624 +perft 6 132888339 + +id gentest-2556 +epd Rn5Q/p1k5/2pqP3/1pb5/1P4p1/2P5/2KRB1P1/8 w - - +perft 1 40 +perft 2 870 +perft 3 33345 +perft 4 794114 +perft 5 30079237 +perft 6 743767979 + +id gentest-2557 +epd 2R5/p1k5/n1pqP2Q/1pb5/1P4p1/2P5/2KRB1P1/8 b - - +perft 1 3 +perft 2 123 +perft 3 3026 +perft 4 117449 +perft 5 3090148 +perft 6 121172691 + +id gentest-2558 +epd 2R5/p1q5/nkp1PQ2/1pb5/1P4p1/2P5/2KRB1P1/8 w - - +perft 1 49 +perft 2 1166 +perft 3 51690 +perft 4 1223299 +perft 5 52561957 +perft 6 1273722657 + +id gentest-2559 +epd 2R5/p1q5/nkB1PQ2/8/1P4p1/2P5/2KR2P1/6b1 b - - +perft 1 25 +perft 2 1181 +perft 3 27807 +perft 4 1266843 +perft 5 30439836 +perft 6 1347931849 + +id gentest-2560 +epd R2q4/p7/nkB1PQ2/8/1P4p1/2P5/2KR2Pb/8 w - - +perft 1 47 +perft 2 1249 +perft 3 54198 +perft 4 1358764 +perft 5 58320406 +perft 6 1455263430 + +id gentest-2561 +epd R2q4/p7/1kB1PQ2/8/1P4p1/3R4/2K3Pb/8 b - - +perft 1 28 +perft 2 1466 +perft 3 36171 +perft 4 1710905 +perft 5 40509680 +perft 6 1800233127 + +id gentest-2562 +epd R7/p7/1kBqP2Q/8/1P3bp1/3R4/2K3P1/8 w - - +perft 1 49 +perft 2 1328 +perft 3 55805 +perft 4 1551325 +perft 5 63705122 +perft 6 1724915161 + +id gentest-2563 +epd 7R/p7/1kB1P2Q/3q4/1P3bp1/8/2KR2P1/8 b - - +perft 1 37 +perft 2 1215 +perft 3 37707 +perft 4 1370480 +perft 5 38577528 +perft 6 1467360500 + +id gentest-2564 +epd 7R/8/1kB1P2Q/p7/1P3bp1/1K6/3q2P1/8 w - - +perft 1 36 +perft 2 1140 +perft 3 31768 +perft 4 962135 +perft 5 28833323 +perft 6 826964746 + +id gentest-2565 +epd 1R6/8/1kB1P2Q/p7/1P4p1/K5b1/3q2P1/8 b - - +perft 1 5 +perft 2 177 +perft 3 5178 +perft 4 142526 +perft 5 3817915 +perft 6 109339237 + +id gentest-2566 +epd 1R6/6Q1/k1B1P3/8/1p4p1/K5b1/3q2P1/8 w - - +perft 1 3 +perft 2 91 +perft 3 3159 +perft 4 77687 +perft 5 2591799 +perft 6 63551358 + +id gentest-2567 +epd 8/1B1q2Q1/k3P3/8/1R4p1/K5b1/6P1/8 b - - +perft 1 3 +perft 2 116 +perft 3 2847 +perft 4 94163 +perft 5 2273841 +perft 6 72018470 + +id gentest-2568 +epd 4q3/kB6/4P3/8/1R4p1/K1Q3b1/6P1/8 w - - +perft 1 43 +perft 2 1005 +perft 3 38733 +perft 4 892567 +perft 5 32606325 +perft 6 757110160 + +id gentest-2569 +epd 4q3/k7/4P3/3B4/1R4p1/K7/5bP1/4Q3 b - - +perft 1 26 +perft 2 961 +perft 3 23085 +perft 4 809570 +perft 5 19454567 +perft 6 664123919 + +id gentest-2570 +epd 4q3/8/k3P3/3B4/1R4pb/K3Q3/6P1/8 w - - +perft 1 47 +perft 2 994 +perft 3 39445 +perft 4 833232 +perft 5 31094669 +perft 6 677774682 + +id gentest-2571 +epd 4q3/8/k1B1P3/8/1R4p1/KQ6/6P1/4b3 b - - +perft 1 23 +perft 2 800 +perft 3 16611 +perft 4 579238 +perft 5 12534867 +perft 6 435842164 + +id gentest-2572 +epd 5q2/k7/2B1P3/8/5Rp1/KQ6/6P1/4b3 w - - +perft 1 7 +perft 2 166 +perft 3 6368 +perft 4 137139 +perft 5 5062803 +perft 6 113050367 + +id gentest-2573 +epd 8/k7/2B1P3/8/6p1/KQb2R2/6P1/8 b - - +perft 1 14 +perft 2 480 +perft 3 5117 +perft 4 181861 +perft 5 1923943 +perft 6 69493764 + +id gentest-2574 +epd 8/k5b1/2B1P3/8/8/1Q3p2/K5P1/8 w - - +perft 1 32 +perft 2 329 +perft 3 10469 +perft 4 116555 +perft 5 3760636 +perft 6 44739152 + +id gentest-2575 +epd 8/6b1/1kB1P3/8/8/QK3p2/6P1/8 b - - +perft 1 13 +perft 2 407 +perft 3 4987 +perft 4 152651 +perft 5 1906462 +perft 6 58102356 + +id gentest-2576 +epd 8/8/1kB1P3/8/Q7/1K3p2/6P1/b7 w - - +perft 1 32 +perft 2 310 +perft 3 9931 +perft 4 117560 +perft 5 3757629 +perft 6 47422309 + +id gentest-2577 +epd 8/8/1k2P3/4b3/Q3B3/1K3p2/6P1/8 b - - +perft 1 17 +perft 2 581 +perft 3 6885 +perft 4 234358 +perft 5 2857726 +perft 6 94290724 + +id gentest-2578 +epd 8/8/1k2P3/4b3/4B3/1K3p2/Q5P1/8 w - - +perft 1 33 +perft 2 546 +perft 3 17202 +perft 4 238025 +perft 5 7458522 +perft 6 99350287 + +id gentest-2579 +epd 8/Q1b5/1k2P3/8/8/1K3B2/6P1/8 b - - +perft 1 2 +perft 2 53 +perft 3 499 +perft 4 12741 +perft 5 125032 +perft 6 3222526 + +id gentest-2580 +epd 1b6/8/4P3/1k6/3Q4/1K3B2/6P1/8 w - - +perft 1 44 +perft 2 333 +perft 3 12412 +perft 4 114804 +perft 5 3979036 +perft 6 39029178 + +id gentest-2581 +epd 1b6/8/1k2P3/8/2Q3B1/1K6/6P1/8 b - - +perft 1 10 +perft 2 322 +perft 3 2980 +perft 4 98469 +perft 5 1042978 +perft 6 34026733 + +id gentest-2582 +epd 8/k7/4P3/8/2Q2bB1/8/1K4P1/8 w - - +perft 1 35 +perft 2 428 +perft 3 13479 +perft 4 143145 +perft 5 4522908 +perft 6 47164860 + +id gentest-2583 +epd 8/k7/4P3/8/6B1/2Q5/6P1/1Kb5 b - - +perft 1 12 +perft 2 437 +perft 3 4224 +perft 4 138151 +perft 5 1386199 +perft 6 44070885 + +id gentest-2584 +epd 8/k7/1b2P3/8/6B1/2Q5/2K3P1/8 w - - +perft 1 38 +perft 2 377 +perft 3 13032 +perft 4 134554 +perft 5 4470448 +perft 6 46271950 + +id gentest-2585 +epd 8/k7/4P3/8/3b4/5B2/2KQ2P1/8 b - - +perft 1 15 +perft 2 519 +perft 3 5770 +perft 4 196825 +perft 5 2110566 +perft 6 70943551 + +id gentest-2586 +epd B7/k7/4P3/8/8/8/2KQ2P1/6b1 w - - +perft 1 33 +perft 2 280 +perft 3 9249 +perft 4 89161 +perft 5 2900516 +perft 6 29117721 + +id gentest-2587 +epd 8/k7/4P3/Q7/8/5B2/2K2bP1/8 b - - +perft 1 1 +perft 2 41 +perft 3 364 +perft 4 13307 +perft 5 122353 +perft 6 4232679 + +id gentest-2588 +epd 2k5/8/4P3/Q6B/8/8/2K2bP1/8 w - - +perft 1 38 +perft 2 376 +perft 3 13256 +perft 4 134780 +perft 5 4551624 +perft 6 46853944 + +id gentest-2589 +epd 1k6/8/4P3/7B/8/3Q4/2K2bP1/8 b - - +perft 1 14 +perft 2 544 +perft 3 6237 +perft 4 220826 +perft 5 2436868 +perft 6 82237630 + +id gentest-2590 +epd 8/b1k5/4P3/7B/8/7Q/2K3P1/8 w - - +perft 1 30 +perft 2 377 +perft 3 11511 +perft 4 128396 +perft 5 3990298 +perft 6 47008650 + +id gentest-2591 +epd 8/2k5/1b2P3/8/6B1/7Q/6P1/3K4 b - - +perft 1 13 +perft 2 316 +perft 3 4064 +perft 4 110424 +perft 5 1308305 +perft 6 37294309 + +id gentest-2592 +epd 8/2k5/4P3/8/8/7Q/4BbP1/3K4 w - - +perft 1 30 +perft 2 415 +perft 3 12431 +perft 4 151205 +perft 5 4643840 +perft 6 53571027 + +id gentest-2593 +epd 7Q/b1k5/4P3/8/8/8/4B1P1/3K4 b - - +perft 1 11 +perft 2 389 +perft 3 3928 +perft 4 129619 +perft 5 1429928 +perft 6 45745447 + +id gentest-2594 +epd 8/b1k5/4P3/8/8/8/4B1P1/Q2K4 w - - +perft 1 30 +perft 2 341 +perft 3 10876 +perft 4 108925 +perft 5 3480898 +perft 6 37519099 + +id gentest-2595 +epd 3k1Q2/b7/4P3/8/8/8/4B1P1/3K4 b - - +perft 1 1 +perft 2 36 +perft 3 328 +perft 4 10896 +perft 5 102490 +perft 6 3304472 + +id gentest-2596 +epd 6Q1/b7/2k1P3/8/8/8/4B1P1/3K4 w - - +perft 1 29 +perft 2 317 +perft 3 9732 +perft 4 101389 +perft 5 3162179 +perft 6 34399005 + +id gentest-2597 +epd 8/bk6/4P1Q1/8/8/8/6P1/3K1B2 b - - +perft 1 13 +perft 2 374 +perft 3 4275 +perft 4 127685 +perft 5 1467050 +perft 6 44701260 + +id gentest-2598 +epd k7/8/4P3/5Q2/3b4/8/6P1/3K1B2 w - - +perft 1 34 +perft 2 455 +perft 3 14647 +perft 4 156576 +perft 5 4965450 +perft 6 52441363 + +id gentest-2599 +epd k7/8/4P3/2b2Q2/8/3K4/6P1/5B2 b - - +perft 1 14 +perft 2 393 +perft 3 4117 +perft 4 122141 +perft 5 1289831 +perft 6 38400297 + +id gentest-2600 +epd 8/1k6/3bPQ2/8/8/3K4/6P1/5B2 w - - +perft 1 31 +perft 2 497 +perft 3 15116 +perft 4 192073 +perft 5 5772398 +perft 6 66448989 + +id gentest-2601 +epd 8/4P3/2kb4/8/5Q2/3K4/6P1/5B2 b - - +perft 1 15 +perft 2 524 +perft 3 5952 +perft 4 192453 +perft 5 2119447 +perft 6 68807742 + +id gentest-2602 +epd 1b2Q3/1k6/8/8/5Q2/3K4/6P1/5B2 w - - +perft 1 55 +perft 2 444 +perft 3 21708 +perft 4 172814 +perft 5 7994613 +perft 6 72134860 + +id gentest-2603 +epd 8/1k6/3b4/1Q6/8/3K4/6PQ/5B2 b - - +perft 1 4 +perft 2 172 +perft 3 1569 +perft 4 66088 +perft 5 574757 +perft 6 24329604 + +id gentest-2604 +epd kb6/8/8/6Q1/8/3K4/6PQ/5B2 w - - +perft 1 46 +perft 2 336 +perft 3 13740 +perft 4 129773 +perft 5 5380714 +perft 6 50554558 + +id gentest-2605 +epd 1b6/k7/8/8/3K2Q1/8/6PQ/5B2 b - - +perft 1 9 +perft 2 329 +perft 3 3515 +perft 4 129604 +perft 5 1298803 +perft 6 49668652 + +id gentest-2606 +epd 8/k7/3b4/8/6Q1/3K4/6PQ/5B2 w - - +perft 1 43 +perft 2 575 +perft 3 23498 +perft 4 251338 +perft 5 10438323 +perft 6 106076012 + +id gentest-2607 +epd 8/k7/7Q/4b3/8/3K1Q2/6P1/5B2 b - - +perft 1 14 +perft 2 660 +perft 3 6176 +perft 4 278978 +perft 5 2658289 +perft 6 118860693 + +id gentest-2608 +epd 7Q/k7/8/b7/8/3K1Q2/6P1/5B2 w - - +perft 1 48 +perft 2 362 +perft 3 16806 +perft 4 140199 +perft 5 6385759 +perft 6 56318885 + +id gentest-2609 +epd 3b4/k7/8/8/8/3K1Q1Q/6P1/5B2 b - - +perft 1 10 +perft 2 396 +perft 3 3770 +perft 4 157237 +perft 5 1502956 +perft 6 64586643 + +id gentest-2610 +epd 8/k7/8/8/8/3K1QbQ/8/5B2 w - - +perft 1 43 +perft 2 433 +perft 3 18735 +perft 4 179368 +perft 5 8040054 +perft 6 76429599 + +id gentest-2611 +epd 8/8/1k6/8/8/3K3Q/6Q1/5B2 b - - +perft 1 6 +perft 2 267 +perft 3 1027 +perft 4 46892 +perft 5 172313 +perft 6 8083615 + +id gentest-2612 +epd 8/3Q4/1k6/8/8/3K4/6Q1/5B2 w - - +perft 1 51 +perft 2 140 +perft 3 6967 +perft 4 16927 +perft 5 829535 +perft 6 2494936 + +id gentest-2613 +epd 8/3Q4/8/2k5/4Q3/3K4/8/5B2 b - - +perft 1 1 +perft 2 54 +perft 3 143 +perft 4 7321 +perft 5 15058 +perft 6 759669 + +id gentest-2614 +epd 4Q3/3Q4/8/2k5/8/3K4/8/5B2 w - - +perft 1 45 +perft 2 86 +perft 3 4225 +perft 4 11111 +perft 5 551351 +perft 6 1407756 + +id gentest-2615 +epd 4Q3/5Q2/1k6/8/8/3K3B/8/8 b - - +perft 1 3 +perft 2 163 +perft 3 427 +perft 4 22906 +perft 5 67747 +perft 6 3571177 + +id gentest-2616 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-2617 +epd rnbqkbnr/pppp1ppp/4p3/8/2P5/1P6/P2PPPPP/RNBQKBNR b KQkq - +perft 1 30 +perft 2 622 +perft 3 19134 +perft 4 437655 +perft 5 13859313 +perft 6 346816230 + +id gentest-2618 +epd rnb1kbnr/pppp1pp1/4pq1p/8/2P1P3/1P6/P2P1PPP/RNBQKBNR w KQkq - +perft 1 28 +perft 2 1014 +perft 3 28303 +perft 4 1011835 +perft 5 29006315 +perft 6 1029823913 + +id gentest-2619 +epd rnb1kbnr/pppp1pp1/4p2p/8/P1PPP2q/1P6/5PPP/RNBQKBNR b KQkq - +perft 1 38 +perft 2 1219 +perft 3 44735 +perft 4 1468477 +perft 5 53005646 +perft 6 1772443749 + +id gentest-2620 +epd rnb2bnr/ppppkpp1/4p2p/8/P1PPP3/1P4q1/3K1PPP/RNBQ1BNR w - - +perft 1 31 +perft 2 1089 +perft 3 30973 +perft 4 1032281 +perft 5 31214114 +perft 6 1016200790 + +id gentest-2621 +epd rnb2bnr/ppppk1p1/4p2p/5p2/P1PPP3/RP3Qq1/3K1PPP/1NB2BNR b - - +perft 1 35 +perft 2 1133 +perft 3 38324 +perft 4 1240556 +perft 5 40585428 +perft 6 1339694293 + +id gentest-2622 +epd rnb2bnr/p1ppk3/4p1pp/1p3p2/P1PPP3/RP4Q1/3K1PPP/1NB2BNR w - - +perft 1 41 +perft 2 948 +perft 3 38010 +perft 4 912456 +perft 5 35929032 +perft 6 891157865 + +id gentest-2623 +epd rnb2bnr/p1p1k3/4p1pp/1p1p1p2/PPPPP3/R2B2Q1/3K1PPP/1NB3NR b - - +perft 1 27 +perft 2 1092 +perft 3 27639 +perft 4 1125496 +perft 5 29211556 +perft 6 1192895271 + +id gentest-2624 +epd rn3bnr/p1p5/b2Qpkpp/1p1p1p2/PPPPP3/R2B4/3K1PPP/1NB3NR w - - +perft 1 46 +perft 2 920 +perft 3 40594 +perft 4 855744 +perft 5 36800674 +perft 6 820936711 + +id gentest-2625 +epd r4bnr/p1pn4/b2Qpkpp/1p1p1p2/PPPPP3/R7/2B2PPP/1NBK2NR b - - +perft 1 28 +perft 2 1415 +perft 3 35965 +perft 4 1726615 +perft 5 44863035 +perft 6 2069358982 + +id gentest-2626 +epd rn3bnr/p7/b2ppkpp/1p1p1p2/PPPPP3/R2B4/5PPP/1NBK2NR w - - +perft 1 36 +perft 2 681 +perft 3 24292 +perft 4 499254 +perft 5 17674073 +perft 6 391295115 + +id gentest-2627 +epd rn3bnr/p7/b2ppkpp/1p3p2/PPpPP3/R2B4/3B1PPP/1N1K2NR b - - +perft 1 20 +perft 2 670 +perft 3 14012 +perft 4 468347 +perft 5 10575211 +perft 6 353120915 + +id gentest-2628 +epd rn3bnr/p7/b2ppkpp/5p2/pP1PP3/R2p4/3BNPPP/1N1K3R w - - +perft 1 34 +perft 2 658 +perft 3 20710 +perft 4 449141 +perft 5 13910222 +perft 6 328210490 + +id gentest-2629 +epd rn3bnr/p7/b2ppk1p/5pp1/pP1PP3/R2p4/4NPPP/1NK1B2R b - - +perft 1 22 +perft 2 609 +perft 3 14291 +perft 4 399581 +perft 5 9997865 +perft 6 280882741 + +id gentest-2630 +epd rn3bnr/p7/3ppk1p/1b1P1pp1/pP2P3/R7/3pNPPP/1NK1B2R w - - +perft 1 6 +perft 2 182 +perft 3 5932 +perft 4 176385 +perft 5 5433647 +perft 6 162977844 + +id gentest-2631 +epd rn3bnr/8/p2ppk1p/1b1P1pp1/pP2P3/3R4/3KNPPP/1N2B2R b - - +perft 1 25 +perft 2 792 +perft 3 20201 +perft 4 619077 +perft 5 16312889 +perft 6 488456684 + +id gentest-2632 +epd rn4n1/4b2r/p2ppk1p/1b1P1pp1/pP2P3/3R4/2K1NPPP/1N2B2R w - - +perft 1 37 +perft 2 888 +perft 3 29617 +perft 4 753764 +perft 5 24093770 +perft 6 640106984 + +id gentest-2633 +epd rn4n1/4b2r/p2ppk1p/1b1P1pp1/1P2P2P/p2R2P1/2K1NP2/1N2B2R b - - +perft 1 27 +perft 2 884 +perft 3 23553 +perft 4 726111 +perft 5 20210190 +perft 6 604620138 + +id gentest-2634 +epd rn4n1/4b2r/3pPk1p/pb3p2/1P2P1pP/p2R2P1/2K1NP2/1N2B2R w - - +perft 1 35 +perft 2 928 +perft 3 28468 +perft 4 793128 +perft 5 23389725 +perft 6 677213319 + +id gentest-2635 +epd rn4n1/4b1kr/3pP2p/pb3p2/1P2P1pP/pKR3P1/4NP2/1N2B2R b - - +perft 1 31 +perft 2 859 +perft 3 26549 +perft 4 758757 +perft 5 23538764 +perft 6 681225308 + +id gentest-2636 +epd rn4n1/4b1kr/3pP2p/1b6/pP2PppP/p1R3P1/2K1NP2/1N2B2R w - - +perft 1 28 +perft 2 801 +perft 3 22686 +perft 4 646112 +perft 5 18397225 +perft 6 537014133 + +id gentest-2637 +epd rn2b1n1/4b1kr/3pP2p/8/pP2PppP/p1R3P1/2KB1P2/1NN4R b - - +perft 1 28 +perft 2 876 +perft 3 24692 +perft 4 767455 +perft 5 22031994 +perft 6 684864497 + +id gentest-2638 +epd rn2bknr/4b3/3pP2p/8/pP2PPpP/p1R5/2KB1P2/1NN4R w - - +perft 1 32 +perft 2 732 +perft 3 23113 +perft 4 578528 +perft 5 18047012 +perft 6 482030905 + +id gentest-2639 +epd rn2bk1r/4b3/2RpPn1p/8/pP2PPpP/p7/2KB1P2/1NN4R b - - +perft 1 26 +perft 2 793 +perft 3 21712 +perft 4 665380 +perft 5 19086097 +perft 6 588822069 + +id gentest-2640 +epd rnR1b2r/4b2k/3pPn1p/8/pP2PPpP/p7/2KB1P2/1NN4R w - - +perft 1 31 +perft 2 858 +perft 3 27508 +perft 4 785564 +perft 5 25132606 +perft 6 745141898 + +id gentest-2641 +epd rn2b2r/4b2k/2RpPn1p/8/pP2PP1P/p5p1/2KB1P1R/1NN5 b - - +perft 1 30 +perft 2 850 +perft 3 26673 +perft 4 767289 +perft 5 24862066 +perft 6 725605846 + +id gentest-2642 +epd rn2b1nr/4b2k/1R1pP3/7p/pP2PP1P/p5p1/2KB1P1R/1NN5 w - - +perft 1 26 +perft 2 656 +perft 3 18082 +perft 4 477933 +perft 5 13580203 +perft 6 375457080 + +id gentest-2643 +epd rn4nr/4b2k/1R1pP3/1b5p/pP2PP1P/p2N2P1/2KB3R/1N6 b - - +perft 1 24 +perft 2 687 +perft 3 17708 +perft 4 515951 +perft 5 14067963 +perft 6 417410872 + +id gentest-2644 +epd rn5r/3bb2k/1R1pP2n/7p/pP2PP1P/p1NN2P1/2KB3R/8 w - - +perft 1 35 +perft 2 1011 +perft 3 34847 +perft 4 1046443 +perft 5 35560632 +perft 6 1098914072 + +id gentest-2645 +epd rn4nr/3bb2k/1R1pP3/4N2p/pP2PPPP/p1N5/2KB3R/8 b - - +perft 1 23 +perft 2 845 +perft 3 21217 +perft 4 761219 +perft 5 20068120 +perft 6 711586435 + +id gentest-2646 +epd rnb4r/4b2k/1R1pPn2/4N2p/pP2PPPP/p1N5/3B3R/1K6 w - - +perft 1 35 +perft 2 1001 +perft 3 34111 +perft 4 988565 +perft 5 33714701 +perft 6 998111690 + +id gentest-2647 +epd rnb4r/4b2k/1R1pP3/4N2P/pP2nP1P/p1N5/3B4/1K5R b - - +perft 1 32 +perft 2 1119 +perft 3 35883 +perft 4 1241435 +perft 5 39939235 +perft 6 1371082859 + +id gentest-2648 +epd rnb5/4b1kr/1R1pP3/4N2P/pP2nP1P/p1N5/8/1KB4R w - - +perft 1 37 +perft 2 1130 +perft 3 38034 +perft 4 1153122 +perft 5 39016084 +perft 6 1195014200 + +id gentest-2649 +epd rRbb4/6kr/3pP3/1P2N2P/p3nP1P/p1N5/8/1KB4R b - - +perft 1 33 +perft 2 1054 +perft 3 32015 +perft 4 1049715 +perft 5 31109451 +perft 6 1035552484 + +id gentest-2650 +epd rRb5/2b3kr/3pP3/1P1NN2P/p3nP1P/8/p7/1KB4R w - - +perft 1 4 +perft 2 120 +perft 3 4143 +perft 4 115424 +perft 5 3977857 +perft 6 110867492 + +id gentest-2651 +epd rR6/2b3kr/3pb3/1P1NN2P/p3nP1P/8/8/1KB4R b - - +perft 1 29 +perft 2 1070 +perft 3 30922 +perft 4 1097133 +perft 5 32350744 +perft 6 1123801117 + +id gentest-2652 +epd rR6/2b3k1/3pb3/1P1NN2r/p4P1P/2n5/2K5/2B4R w - - +perft 1 40 +perft 2 1346 +perft 3 50280 +perft 4 1678048 +perft 5 60380649 +perft 6 1985600177 + +id gentest-2653 +epd rR6/2b3k1/4b3/1P1Np2r/p4P1P/2n2R2/2K5/2B5 b - - +perft 1 37 +perft 2 1208 +perft 3 42300 +perft 4 1343056 +perft 5 46063488 +perft 6 1442539185 + +id gentest-2654 +epd rR6/6k1/4b3/1P1Np2r/pb3P1P/2n5/2K5/2B2R2 w - - +perft 1 32 +perft 2 1145 +perft 3 35671 +perft 4 1282534 +perft 5 39866013 +perft 6 1422554476 + +id gentest-2655 +epd R7/4Nk2/4b3/1P2p2r/pb3P1P/2n5/2K5/2B2R2 b - - +perft 1 33 +perft 2 1022 +perft 3 32538 +perft 4 993938 +perft 5 31388206 +perft 6 957261751 + +id gentest-2656 +epd R7/3bNk2/8/1P2pr2/pb3P1P/2n5/2KB4/5R2 w - - +perft 1 36 +perft 2 982 +perft 3 33968 +perft 4 956619 +perft 5 31851086 +perft 6 910469712 + +id gentest-2657 +epd 8/3bNk2/8/RP2Pr2/pb2n2P/8/2KB4/5R2 b - - +perft 1 31 +perft 2 1074 +perft 3 32134 +perft 4 1033684 +perft 5 30980448 +perft 6 964477811 + +id gentest-2658 +epd 8/3bk3/8/bP2Pr2/p3n2P/8/3B4/1K3R2 w - - +perft 1 26 +perft 2 833 +perft 3 19091 +perft 4 603337 +perft 5 13466562 +perft 6 422478902 + +id gentest-2659 +epd 4b3/4k3/8/bP2Pr2/p3n2P/2B5/1K6/5R2 b - - +perft 1 35 +perft 2 802 +perft 3 25191 +perft 4 552943 +perft 5 16936190 +perft 6 365173493 + +id gentest-2660 +epd 4b3/4k3/8/1P2Pr2/p6P/6n1/1K6/4bR2 w - - +perft 1 16 +perft 2 492 +perft 3 7370 +perft 4 219506 +perft 5 3305862 +perft 6 98643800 + +id gentest-2661 +epd 4b3/4k3/4P3/bP3R2/p6P/6n1/1K6/8 b - - +perft 1 23 +perft 2 422 +perft 3 9394 +perft 4 161871 +perft 5 3610310 +perft 6 60415451 + +id gentest-2662 +epd 3bb3/4k3/4P3/1P6/7P/p5n1/1K6/5R2 w - - +perft 1 8 +perft 2 142 +perft 3 2596 +perft 4 51714 +perft 5 882577 +perft 6 19021723 + +id gentest-2663 +epd 4b3/4k3/1b2P3/1P6/7P/p5n1/8/KR6 b - - +perft 1 27 +perft 2 300 +perft 3 7721 +perft 4 102211 +perft 5 2515350 +perft 6 35549130 + +id gentest-2664 +epd 8/4kb2/1b2P3/1P6/7P/p5n1/8/K3R3 w - - +perft 1 14 +perft 2 347 +perft 3 4824 +perft 4 113175 +perft 5 1639843 +perft 6 37118265 + +id gentest-2665 +epd 8/4kP2/8/1P6/7P/p3b1n1/4R3/K7 b - - +perft 1 14 +perft 2 220 +perft 3 3974 +perft 4 68203 +perft 5 1218445 +perft 6 22275449 + +id gentest-2666 +epd 8/4kP2/8/1P6/7P/p3b1n1/K3R3/8 w - - +perft 1 18 +perft 2 271 +perft 3 5139 +perft 4 91832 +perft 5 1818625 +perft 6 31880924 + +id gentest-2667 +epd 3k4/5P2/8/1P6/7P/pK2R1n1/8/8 b - - +perft 1 10 +perft 2 239 +perft 3 2166 +perft 4 51092 +perft 5 510263 +perft 6 12017460 + +id gentest-2668 +epd 3k1N2/8/8/1P6/7P/pK2R3/5n2/8 w - - +perft 1 25 +perft 2 215 +perft 3 5135 +perft 4 47414 +perft 5 1073458 +perft 6 11013390 + +id gentest-2669 +epd 5N2/2k5/8/1P6/7P/pK6/4Rn2/8 b - - +perft 1 13 +perft 2 330 +perft 3 3589 +perft 4 84345 +perft 5 907130 +perft 6 20459669 + +id gentest-2670 +epd 1k3N2/8/8/1P6/7P/1K2R3/p4n2/8 w - - +perft 1 26 +perft 2 356 +perft 3 8198 +perft 4 117673 +perft 5 2545537 +perft 6 39657527 + +id gentest-2671 +epd 5N2/k7/8/1P6/7P/2K3R1/p4n2/8 b - - +perft 1 14 +perft 2 259 +perft 3 3627 +perft 4 75022 +perft 5 1125984 +perft 6 23290434 + +id gentest-2672 +epd 5N2/k5b1/8/1P6/1K5P/6R1/5n2/8 w - - +perft 1 25 +perft 2 422 +perft 3 8951 +perft 4 149891 +perft 5 3134855 +perft 6 51900083 + +id gentest-2673 +epd 5N2/k5b1/5R2/1P6/1K4nP/8/8/8 b - - +perft 1 13 +perft 2 289 +perft 3 4075 +perft 4 81399 +perft 5 1238165 +perft 6 24675114 + +id gentest-2674 +epd 5N2/k5b1/8/1P3R2/1K4nP/8/8/8 w - - +perft 1 23 +perft 2 393 +perft 3 8223 +perft 4 134298 +perft 5 2767277 +perft 6 44934279 + +id gentest-2675 +epd 8/k6N/5b2/1P3R2/2K3nP/8/8/8 b - - +perft 1 20 +perft 2 392 +perft 3 6798 +perft 4 133365 +perft 5 2196898 +perft 6 44226521 + +id gentest-2676 +epd 8/7N/1k6/1P3R2/6nP/1Kb5/8/8 w - - +perft 1 22 +perft 2 441 +perft 3 9138 +perft 4 165417 +perft 5 3407575 +perft 6 58996323 + +id gentest-2677 +epd 8/7N/8/1k6/6nP/2b2R2/K7/8 b - - +perft 1 25 +perft 2 493 +perft 3 10119 +perft 4 198499 +perft 5 3769546 +perft 6 74821664 + +id gentest-2678 +epd 8/7N/8/8/1k4nP/8/K7/4bR2 w - - +perft 1 17 +perft 2 268 +perft 3 4949 +perft 4 80551 +perft 5 1545510 +perft 6 25632842 + +id gentest-2679 +epd 8/7N/8/8/1k5P/3R4/K6n/4b3 b - - +perft 1 13 +perft 2 271 +perft 3 3801 +perft 4 78057 +perft 5 1160430 +perft 6 23759852 + +id gentest-2680 +epd 8/3R3N/8/8/1k5b/5n2/K7/8 w - - +perft 1 19 +perft 2 338 +perft 3 6518 +perft 4 111068 +perft 5 2158555 +perft 6 36273309 + +id gentest-2681 +epd 8/7N/8/4n3/1k5b/4R3/K7/8 b - - +perft 1 20 +perft 2 363 +perft 3 6179 +perft 4 118126 +perft 5 2002601 +perft 6 38742834 + +id gentest-2682 +epd 8/8/8/4n1N1/1k5b/4R3/K7/8 w - - +perft 1 20 +perft 2 318 +perft 3 6444 +perft 4 103819 +perft 5 2140939 +perft 6 35043969 + +id gentest-2683 +epd 8/8/8/4n1N1/k6b/2R5/K7/8 b - - +perft 1 15 +perft 2 328 +perft 3 4778 +perft 4 100493 +perft 5 1539496 +perft 6 32114670 + +id gentest-2684 +epd 8/3n4/8/6b1/k7/1R6/K7/8 w - - +perft 1 17 +perft 2 256 +perft 3 3994 +perft 4 60824 +perft 5 948774 +perft 6 14909062 + +id gentest-2685 +epd 2R5/8/5n2/6b1/k7/8/K7/8 b - - +perft 1 17 +perft 2 288 +perft 3 4670 +perft 4 75248 +perft 5 1235736 +perft 6 19612589 + +id gentest-2686 +epd 5nR1/8/8/6b1/k7/8/K7/8 w - - +perft 1 8 +perft 2 117 +perft 3 1539 +perft 4 22073 +perft 5 331424 +perft 6 4932162 + +id gentest-2687 +epd 5n2/8/8/8/k4b2/8/K7/6R1 b - - +perft 1 18 +perft 2 295 +perft 3 4873 +perft 4 74797 +perft 5 1226753 +perft 6 19243986 + +id gentest-2688 +epd 8/6R1/6n1/8/k7/8/K2b4/8 w - - +perft 1 12 +perft 2 197 +perft 3 3019 +perft 4 47112 +perft 5 741630 +perft 6 11681671 + +id gentest-2689 +epd 8/R7/6n1/8/1k6/8/3b4/1K6 b - - +perft 1 18 +perft 2 316 +perft 3 5498 +perft 4 87471 +perft 5 1522507 +perft 6 24313156 + +id gentest-2690 +epd 8/R7/8/8/1k5n/8/K7/4b3 w - - +perft 1 15 +perft 2 173 +perft 3 2800 +perft 4 40006 +perft 5 650486 +perft 6 10159857 + +id gentest-2691 +epd 8/8/8/2R5/1k5n/2b5/K7/8 b - - +perft 1 15 +perft 2 204 +perft 3 2845 +perft 4 40805 +perft 5 622440 +perft 6 9223375 + +id gentest-2692 +epd 8/8/6n1/6R1/1k6/8/Kb6/8 w - - +perft 1 14 +perft 2 219 +perft 3 3159 +perft 4 48320 +perft 5 716652 +perft 6 11274020 + +id gentest-2693 +epd 8/8/8/1R6/1k5n/8/Kb6/8 b - - +perft 1 4 +perft 2 47 +perft 3 575 +perft 4 7985 +perft 5 113056 +perft 6 1672817 + +id gentest-2694 +epd 1R6/8/8/8/7n/2k5/K7/2b5 w - - +perft 1 16 +perft 2 230 +perft 3 3529 +perft 4 53202 +perft 5 818143 +perft 6 12953522 + +id gentest-2695 +epd 8/8/8/8/2k4n/5R2/K7/2b5 b - - +perft 1 16 +perft 2 246 +perft 3 3980 +perft 4 61721 +perft 5 1021486 +perft 6 16103204 + +id gentest-2696 +epd 8/5R2/8/8/1k5n/8/K7/2b5 w - - +perft 1 16 +perft 2 243 +perft 3 3763 +perft 4 58506 +perft 5 910691 +perft 6 14622592 + +id gentest-2697 +epd 8/8/8/1k6/4R2n/8/K7/2b5 b - - +perft 1 16 +perft 2 279 +perft 3 4515 +perft 4 75982 +perft 5 1256237 +perft 6 20864453 + +id gentest-2698 +epd 8/8/4R3/1k6/8/5n2/Kb6/8 w - - +perft 1 17 +perft 2 342 +perft 3 5444 +perft 4 100412 +perft 5 1575092 +perft 6 27899919 + +id gentest-2699 +epd 8/8/3R4/1k6/3b4/1K3n2/8/8 b - - +perft 1 22 +perft 2 346 +perft 3 6217 +perft 4 100906 +perft 5 1765232 +perft 6 28821706 + +id gentest-2700 +epd 8/8/8/1k6/3R3n/1K6/8/6b1 w - - +perft 1 19 +perft 2 254 +perft 3 4774 +perft 4 71642 +perft 5 1289844 +perft 6 20513438 + +id gentest-2701 +epd 8/8/8/1kb1R3/7n/1K6/8/8 b - - +perft 1 8 +perft 2 133 +perft 3 2121 +perft 4 37187 +perft 5 642635 +perft 6 11261080 + +id gentest-2702 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-2703 +epd r1bqkbnr/pppppppp/2n5/8/3P4/2N5/PPP1PPPP/R1BQKBNR b KQkq - +perft 1 22 +perft 2 637 +perft 3 15262 +perft 4 463750 +perft 5 11954763 +perft 6 378782596 + +id gentest-2704 +epd r1bqkb1r/pppp1ppp/2n1p2n/8/3P4/2N5/PPPQPPPP/R1B1KBNR w KQkq - +perft 1 29 +perft 2 920 +perft 3 28907 +perft 4 931780 +perft 5 30806903 +perft 6 1010723447 + +id gentest-2705 +epd r1bqkb1r/pppp1p1p/2n1p2n/6p1/3P4/6P1/PPPQPP1P/RNB1KBNR b KQkq - +perft 1 30 +perft 2 861 +perft 3 26388 +perft 4 811180 +perft 5 25294953 +perft 6 820683691 + +id gentest-2706 +epd r1bqkb1r/p1pp1p1p/2n4n/1p2p1p1/3P4/3Q2P1/PPP1PP1P/RNB1KBNR w KQkq - +perft 1 41 +perft 2 1266 +perft 3 48284 +perft 4 1508602 +perft 5 56333154 +perft 6 1793082683 + +id gentest-2707 +epd r2qkb1r/p1pp1p1p/b1n4n/1p2p1B1/2QP4/6P1/PPP1PP1P/RN2KBNR b KQkq - +perft 1 32 +perft 2 1307 +perft 3 40411 +perft 4 1613865 +perft 5 50740758 +perft 6 1991390841 + +id gentest-2708 +epd rq2kb1r/p1pp1p1p/b6n/np2p1B1/2QP4/6P1/PPP1PP1P/RN1K1BNR w kq - +perft 1 45 +perft 2 1275 +perft 3 54714 +perft 4 1611221 +perft 5 66437861 +perft 6 2021875429 + +id gentest-2709 +epd rq2k2r/p1pp1pbp/b6n/np1Qp1B1/3PP3/6P1/PPP2P1P/RN1K1BNR b kq - +perft 1 26 +perft 2 1261 +perft 3 31638 +perft 4 1460883 +perft 5 38660861 +perft 6 1716640821 + +id gentest-2710 +epd r1q1k2r/p1p2pbp/b2p3n/np1Qp1B1/3PP3/P5P1/1PP2P1P/RN1K1BNR w kq - +perft 1 48 +perft 2 1291 +perft 3 57318 +perft 4 1594947 +perft 5 68002120 +perft 6 1976840584 + +id gentest-2711 +epd r1q1k2r/p1p2pbp/b2p3n/1p1Qp3/3PP3/Pn2B1PN/1PP2P1P/RN1K1B1R b kq - +perft 1 34 +perft 2 1282 +perft 3 38044 +perft 4 1475021 +perft 5 45158472 +perft 6 1771880718 + +id gentest-2712 +epd r1q1kr2/p1p2pbp/b2p3n/1p2p3/2QPP3/P3B1PN/1PP2P1P/nN1K1B1R w q - +perft 1 41 +perft 2 1106 +perft 3 42760 +perft 4 1224115 +perft 5 46473183 +perft 6 1400038166 + +id gentest-2713 +epd r1q2r2/p1pk1pbp/b2p3n/Pp2p3/2QPP3/4B1PN/1PP2P1P/nN1K1B1R b - - +perft 1 28 +perft 2 1131 +perft 3 30914 +perft 4 1205150 +perft 5 34989563 +perft 6 1332987941 + +id gentest-2714 +epd r1q4r/pbpk1pbp/3p3n/Pp2p3/2QPP3/4B1PN/1PP1BP1P/nN1K3R w - - +perft 1 44 +perft 2 1275 +perft 3 54418 +perft 4 1642806 +perft 5 68093567 +perft 6 2127158985 + +id gentest-2715 +epd r1q4r/pbpk1pbp/P2p3n/4p3/2pPP3/6PN/1PPBBP1P/nN1K3R b - - +perft 1 33 +perft 2 1114 +perft 3 36256 +perft 4 1168704 +perft 5 38643738 +perft 6 1212821410 + +id gentest-2716 +epd r3q2r/pb1k1pbp/P1pp3n/4p3/2pPP3/6P1/1PPBBP1P/nN1K2NR w - - +perft 1 32 +perft 2 992 +perft 3 30753 +perft 4 966136 +perft 5 29392257 +perft 6 940071649 + +id gentest-2717 +epd r3q2r/pb1k2bp/P1pp1p1n/4p1B1/2pPP3/6P1/1PP1BP1P/nN1K2NR b - - +perft 1 35 +perft 2 1106 +perft 3 37358 +perft 4 1139126 +perft 5 38282191 +perft 6 1144648232 + +id gentest-2718 +epd r3q2r/pb1k2bp/P1p2p1n/3pp1B1/2pPP3/1P4P1/1P2BP1P/1N1K2NR w - - +perft 1 32 +perft 2 1080 +perft 3 33618 +perft 4 1122231 +perft 5 34439907 +perft 6 1141468182 + +id gentest-2719 +epd r3q2r/pb1k2bp/P1p2p2/3pp1B1/1PBPP1n1/6P1/1P3P1P/1N1K2NR b - - +perft 1 37 +perft 2 1195 +perft 3 43045 +perft 4 1350369 +perft 5 47690470 +perft 6 1472504560 + +id gentest-2720 +epd r1q4r/pb1k2bp/P1p2p2/3pp1B1/1PBPP3/6P1/1P2Kn1P/1N4NR w - - +perft 1 31 +perft 2 1034 +perft 3 31610 +perft 4 1047648 +perft 5 31747058 +perft 6 1052595446 + +id gentest-2721 +epd rq5r/pb1k2bp/P1p2B2/3pp3/1PBPP3/6P1/1P1NKn1P/6NR b - - +perft 1 34 +perft 2 1012 +perft 3 33108 +perft 4 974420 +perft 5 31528277 +perft 6 922806545 + +id gentest-2722 +epd r4q1r/pb1k2bp/P1p2B2/3pp3/1PBPP3/5NP1/1P1NKn1P/7R w - - +perft 1 38 +perft 2 1373 +perft 3 50094 +perft 4 1783230 +perft 5 62608240 +perft 6 2220029765 + +id gentest-2723 +epd r4q1r/pb1k2b1/P1p4p/3Pp1B1/1PBP4/5NP1/1P1NKn1P/7R b - - +perft 1 39 +perft 2 1458 +perft 3 53537 +perft 4 1922793 +perft 5 70051365 +perft 6 2446434138 + +id gentest-2724 +epd r6r/pb1k4/P1p4p/3Pb1B1/1PBP1q2/6P1/1P1NKn1P/7R w - - +perft 1 34 +perft 2 1550 +perft 3 46853 +perft 4 2033933 +perft 5 59910039 +perft 6 2516772455 + +id gentest-2725 +epd r6r/pb1k4/P6p/2pPb1B1/1PBP1q2/6P1/1P3n1P/1N2K2R b - - +perft 1 51 +perft 2 1383 +perft 3 65212 +perft 4 1729359 +perft 5 78578981 +perft 6 2055853206 + +id gentest-2726 +epd r3r3/pb1k4/P6p/2pPb1B1/1PBP2q1/6P1/1P3n1P/1N2KR2 w - - +perft 1 31 +perft 2 1472 +perft 3 35700 +perft 4 1639240 +perft 5 41852651 +perft 6 1861802592 + +id gentest-2727 +epd r3r3/pb1k4/P6B/2PPb3/1PB1n1q1/6P1/1P5P/1N2KR2 b - - +perft 1 52 +perft 2 1471 +perft 3 67576 +perft 4 1849276 +perft 5 82821318 +perft 6 2284504952 + +id gentest-2728 +epd r3r3/p2k2B1/P1b5/2PPb1q1/1PB1n3/6P1/1P5P/1N2KR2 w - - +perft 1 31 +perft 2 1461 +perft 3 40518 +perft 4 1836575 +perft 5 49462518 +perft 6 2183756312 + +id gentest-2729 +epd r3r3/p2k2B1/P1b5/2PPbq2/BP2n3/6P1/1P5P/1N2KR2 b - - +perft 1 49 +perft 2 1288 +perft 3 57129 +perft 4 1445924 +perft 5 62701156 +perft 6 1591951393 + +id gentest-2730 +epd r2r4/p2k2B1/P1b5/1PPPbq2/B7/2n3P1/1P5P/1N2KR2 w - - +perft 1 28 +perft 2 1231 +perft 3 32605 +perft 4 1382400 +perft 5 36741025 +perft 6 1521292920 + +id gentest-2731 +epd r2r4/p2k1RB1/P1b5/1PPPb1q1/B7/2n3P1/1P5P/1N2K3 b - - +perft 1 3 +perft 2 102 +perft 3 3787 +perft 4 108139 +perft 5 4165491 +perft 6 117166417 + +id gentest-2732 +epd 1r1rk3/p4RB1/P1P5/2PPb1q1/B7/2n3P1/1P5P/1N2K3 w - - +perft 1 34 +perft 2 1270 +perft 3 36245 +perft 4 1371846 +perft 5 38056382 +perft 6 1435445809 + +id gentest-2733 +epd 1r1rk2B/p4R2/P1P5/1nPPb1q1/B7/N5P1/1P5P/4K3 b - - +perft 1 39 +perft 2 1156 +perft 3 42299 +perft 4 1188671 +perft 5 43141902 +perft 6 1185333782 + +id gentest-2734 +epd 1r1rk2B/p4R2/P1P5/1nPP4/B4b2/N5P1/1P2K2P/2q5 w - - +perft 1 35 +perft 2 1148 +perft 3 29680 +perft 4 998825 +perft 5 26328296 +perft 6 889475881 + +id gentest-2735 +epd 1r1rk2B/p1b5/P1P5/1RPP4/B7/N5P1/1P2K2P/2q5 b - - +perft 1 35 +perft 2 755 +perft 3 25922 +perft 4 588536 +perft 5 19930319 +perft 6 467559824 + +id gentest-2736 +epd r3k2B/pRb5/P1P5/2Pr4/B7/N5P1/1P2K2P/2q5 w - - +perft 1 27 +perft 2 1119 +perft 3 25578 +perft 4 968017 +perft 5 22809965 +perft 6 823884647 + +id gentest-2737 +epd r6B/pRb1k3/P1P5/2Pr4/B1N5/5KP1/1P5P/2q5 b - - +perft 1 40 +perft 2 1029 +perft 3 39168 +perft 4 971092 +perft 5 36676679 +perft 6 898659156 + +id gentest-2738 +epd r4k1B/p1b5/PRP5/2P4r/B1N5/5KP1/1P5P/2q5 w - - +perft 1 30 +perft 2 1191 +perft 3 29422 +perft 4 1145789 +perft 5 27752830 +perft 6 1061948470 + +id gentest-2739 +epd 4rk2/p1b5/PRP5/2P4r/2N5/2B2KP1/1P5P/2qB4 b - - +perft 1 44 +perft 2 1222 +perft 3 50438 +perft 4 1347835 +perft 5 54494084 +perft 6 1425835541 + +id gentest-2740 +epd 4r1k1/p5B1/PRP5/2P4r/2N5/5Kb1/1P5P/2qB4 w - - +perft 1 31 +perft 2 1440 +perft 3 38446 +perft 4 1671742 +perft 5 43639275 +perft 6 1823785173 + +id gentest-2741 +epd 3r2k1/p7/PRP5/2P1B2r/2N5/5KP1/1P6/2qB4 b - - +perft 1 38 +perft 2 994 +perft 3 37129 +perft 4 953378 +perft 5 34765414 +perft 6 881696927 + +id gentest-2742 +epd 3r2k1/p7/PRP5/2PqB2r/8/5KP1/1PB5/8 w - - +perft 1 6 +perft 2 225 +perft 3 5055 +perft 4 188532 +perft 5 4296868 +perft 6 157791111 + +id gentest-2743 +epd 3r2k1/p7/PRP5/2P1q2r/8/6P1/1PB2K2/8 b - - +perft 1 48 +perft 2 818 +perft 3 34199 +perft 4 618697 +perft 5 24652870 +perft 6 460944217 + +id gentest-2744 +epd 1r4k1/p7/PRP5/2P4r/B7/4q1P1/1P3K2/8 w - - +perft 1 3 +perft 2 119 +perft 3 1621 +perft 4 57008 +perft 5 864830 +perft 6 30161914 + +id gentest-2745 +epd 1r4k1/p7/PRP5/2Pr4/8/4K1P1/1PB5/8 b - - +perft 1 24 +perft 2 498 +perft 3 10979 +perft 4 227079 +perft 5 4999107 +perft 6 104729711 + +id gentest-2746 +epd 4r1k1/p7/PRP5/2P1r3/8/5KP1/1PB5/8 w - - +perft 1 22 +perft 2 458 +perft 3 8992 +perft 4 200110 +perft 5 4051060 +perft 6 92026863 + +id gentest-2747 +epd 1r4k1/p7/P1P5/2P1r3/1R6/3B1KP1/1P6/8 b - - +perft 1 25 +perft 2 639 +perft 3 14168 +perft 4 340940 +perft 5 7543424 +perft 6 177745394 + +id gentest-2748 +epd 5rk1/p7/P1P5/2P2r2/1R4K1/3B2P1/1P6/8 w - - +perft 1 22 +perft 2 449 +perft 3 9375 +perft 4 199401 +perft 5 4233692 +perft 6 92012031 + +id gentest-2749 +epd 5r2/p6k/P1P5/2P2r2/1R4PK/3B4/1P6/8 b - - +perft 1 14 +perft 2 336 +perft 3 5839 +perft 4 127275 +perft 5 2547183 +perft 6 55304201 + +id gentest-2750 +epd 8/p6k/P1P5/2P2r2/1R4rK/8/1P2B3/8 w - - +perft 1 4 +perft 2 78 +perft 3 1597 +perft 4 29672 +perft 5 607150 +perft 6 11473438 + +id gentest-2751 +epd 8/p6k/P1P5/2P2r2/1R5K/6r1/1P2B3/8 b - - +perft 1 31 +perft 2 606 +perft 3 15673 +perft 4 297475 +perft 5 7293128 +perft 6 141402094 + +id gentest-2752 +epd 1R6/p6k/P1P5/2P3r1/7K/8/1P2Br2/8 w - - +perft 1 25 +perft 2 570 +perft 3 11318 +perft 4 258561 +perft 5 5022218 +perft 6 115434437 + +id gentest-2753 +epd 6R1/p6k/P1P5/2P3r1/5rBK/8/1P6/8 b - - +perft 1 24 +perft 2 363 +perft 3 7542 +perft 4 133544 +perft 5 2816718 +perft 6 53669030 + +id gentest-2754 +epd 6R1/p6k/P1P5/2P1r3/6BK/1P6/5r2/8 w - - +perft 1 23 +perft 2 562 +perft 3 11649 +perft 4 270700 +perft 5 5370197 +perft 6 123254397 + +id gentest-2755 +epd 6R1/p6k/P1P5/2P1rr2/7K/1P6/8/5B2 b - - +perft 1 20 +perft 2 391 +perft 3 8933 +perft 4 166739 +perft 5 3831093 +perft 6 71492247 + +id gentest-2756 +epd 6R1/p1P4k/P7/2P5/4r2K/1P3r2/8/5B2 w - - +perft 1 3 +perft 2 84 +perft 3 1662 +perft 4 38834 +perft 5 806589 +perft 6 18152911 + +id gentest-2757 +epd 8/p1P4k/P7/2P5/4r1R1/1P4K1/8/5r2 b - - +perft 1 29 +perft 2 479 +perft 3 11506 +perft 4 214299 +perft 5 4982961 +perft 6 98760822 + +id gentest-2758 +epd 2Q2r2/p6k/P7/2P5/r5R1/1P4K1/8/8 w - - +perft 1 29 +perft 2 557 +perft 3 15984 +perft 4 287143 +perft 5 8323044 +perft 6 150945094 + +id gentest-2759 +epd 2Q5/p6k/P7/2P5/r2R4/1P3r2/7K/8 b - - +perft 1 24 +perft 2 720 +perft 3 13699 +perft 4 402362 +perft 5 7637562 +perft 6 222705512 + +id gentest-2760 +epd 2Q5/p4r1k/P7/2P5/8/1P6/3R3K/r7 w - - +perft 1 33 +perft 2 752 +perft 3 22863 +perft 4 482519 +perft 5 14459558 +perft 6 297294492 + +id gentest-2761 +epd 6Q1/p6k/P7/2P5/8/1P6/5rRK/r7 b - - +perft 1 1 +perft 2 22 +perft 3 390 +perft 4 10023 +perft 5 181886 +perft 6 5150127 + +id gentest-2762 +epd 8/p4Q2/P6k/2P5/8/1P6/1r4RK/r7 w - - +perft 1 30 +perft 2 452 +perft 3 12457 +perft 4 188859 +perft 5 5295323 +perft 6 88596213 + +id gentest-2763 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-2764 +epd rnbqkbnr/ppppppp1/8/7P/8/8/PPPPPP1P/RNBQKBNR b KQkq - +perft 1 21 +perft 2 440 +perft 3 10549 +perft 4 242735 +perft 5 6411155 +perft 6 161302508 + +id gentest-2765 +epd rnbqkbn1/ppppppp1/8/8/2P5/8/PP1PPP1r/RNBQKBNR w KQq - +perft 1 21 +perft 2 546 +perft 3 13881 +perft 4 376773 +perft 5 10813645 +perft 6 307006307 + +id gentest-2766 +epd rnbqkbn1/pp1pppp1/2p5/8/2P5/7R/PP1PPP2/RNBQKBN1 b Qq - +perft 1 19 +perft 2 605 +perft 3 13678 +perft 4 424005 +perft 5 10777488 +perft 6 340848022 + +id gentest-2767 +epd rnbq1bn1/pp1ppkp1/2p5/5p2/P1P5/7R/1P1PPP2/RNBQKBN1 w Q - +perft 1 32 +perft 2 728 +perft 3 22753 +perft 4 546322 +perft 5 17404060 +perft 6 441961845 + +id gentest-2768 +epd rnbq1bn1/p2ppkp1/1pp5/5p2/P1P5/1R6/RP1PPP2/1NBQKBN1 b - - +perft 1 22 +perft 2 593 +perft 3 13954 +perft 4 388565 +perft 5 9683337 +perft 6 282271232 + +id gentest-2769 +epd rn1q1bn1/p2p1kp1/bpp1p3/5p2/P1P5/5R2/RP1PPP2/1NBQKBN1 w - - +perft 1 26 +perft 2 779 +perft 3 21676 +perft 4 652399 +perft 5 19033819 +perft 6 579239058 + +id gentest-2770 +epd rn1q1bn1/p2p1kp1/1pp1p3/5p2/P1b5/R4R1B/1P1PPP2/1NBQK1N1 b - - +perft 1 37 +perft 2 1021 +perft 3 35760 +perft 4 995227 +perft 5 34195024 +perft 6 997267525 + +id gentest-2771 +epd rn1q1b2/p2p2p1/1pp1pnk1/5p2/PPb5/R4R1B/3PPP2/1NBQK1N1 w - - +perft 1 28 +perft 2 935 +perft 3 26895 +perft 4 901958 +perft 5 27312513 +perft 6 916845452 + +id gentest-2772 +epd rn1q1b2/p2p2p1/1pp1pnk1/3b1p2/PP1R4/5R1B/3PPP2/1NBQK1N1 b - - +perft 1 32 +perft 2 984 +perft 3 30510 +perft 4 961303 +perft 5 30653795 +perft 6 995005332 + +id gentest-2773 +epd rn1q4/p2p2p1/1pp1p1k1/3b1p1n/Pb1R4/4PR1B/3P1P2/1NBQK1N1 w - - +perft 1 27 +perft 2 937 +perft 3 26865 +perft 4 915565 +perft 5 27896039 +perft 6 937370830 + +id gentest-2774 +epd rn1q4/p2p2p1/1pp1p1k1/5p1n/Pb3R2/N3Pb1B/3P1P2/2BQK1N1 b - - +perft 1 41 +perft 2 1052 +perft 3 38151 +perft 4 1044830 +perft 5 36569110 +perft 6 1059826527 + +id gentest-2775 +epd rn1q4/p2p2p1/1pp1p2k/5p1n/P4R2/N3Pb1B/3K1P2/2BQ2N1 w - - +perft 1 31 +perft 2 1001 +perft 3 32843 +perft 4 1030768 +perft 5 34822625 +perft 6 1075560724 + +id gentest-2776 +epd rn6/p2p2p1/1pp1pq1k/5p1n/PR6/N3Pb2/3K1PB1/2BQ2N1 b - - +perft 1 34 +perft 2 1085 +perft 3 35944 +perft 4 1156448 +perft 5 37574367 +perft 6 1231835166 + +id gentest-2777 +epd rn6/p2p2p1/1pp1pqk1/5p2/P2R1n2/N3Pb2/3K1PB1/2BQ2N1 w - - +perft 1 32 +perft 2 1072 +perft 3 33620 +perft 4 1105618 +perft 5 35362563 +perft 6 1153502717 + +id gentest-2778 +epd rn6/p2pq1p1/1pp1p1k1/4Rp2/P4n2/N3Pb2/3K1PB1/2BQ2N1 b - - +perft 1 37 +perft 2 1079 +perft 3 36924 +perft 4 1124521 +perft 5 37403301 +perft 6 1180333925 + +id gentest-2779 +epd rn6/p2pq3/1pp1p1pk/4Rp2/P4P2/N4b2/3K1PB1/2BQ2N1 w - - +perft 1 34 +perft 2 1041 +perft 3 34015 +perft 4 978251 +perft 5 32815241 +perft 6 921063143 + +id gentest-2780 +epd rn6/p2p1q2/1pp1p1pk/4Rp2/P4P2/N2Q1b2/3K1PB1/2B3N1 b - - +perft 1 25 +perft 2 1119 +perft 3 28401 +perft 4 1178757 +perft 5 30757081 +perft 6 1224567294 + +id gentest-2781 +epd rn6/p2p1q1k/1pp1p1p1/1R3p2/P4P2/N2Q4/3K1Pb1/2B3N1 w - - +perft 1 42 +perft 2 1016 +perft 3 39961 +perft 4 1027527 +perft 5 38183416 +perft 6 1025176824 + +id gentest-2782 +epd rn6/p2p2qk/1pp1p1p1/1R3p2/P4P2/N7/2K1QPb1/2B3N1 b - - +perft 1 30 +perft 2 1000 +perft 3 29323 +perft 4 983932 +perft 5 28739194 +perft 6 954922302 + +id gentest-2783 +epd rn5k/p2p2q1/1pp1p3/1R3pp1/P4P2/N7/3KQPb1/2B3N1 w - - +perft 1 36 +perft 2 1057 +perft 3 35567 +perft 4 1016100 +perft 5 34211609 +perft 6 969209353 + +id gentest-2784 +epd rn6/p2p2qk/1pp1p3/1R3pp1/P4P2/N3Q3/3K1Pb1/2B3N1 b - - +perft 1 33 +perft 2 1161 +perft 3 36419 +perft 4 1266046 +perft 5 38742454 +perft 6 1338360090 + +id gentest-2785 +epd rn5k/3p2q1/1pp1p3/pR3pp1/P4P2/4Q3/2NK1Pb1/2B3N1 w - - +perft 1 41 +perft 2 1194 +perft 3 43644 +perft 4 1235949 +perft 5 43862715 +perft 6 1241836425 + +id gentest-2786 +epd rn5k/3p4/1pp1p3/pR3pp1/P4P2/3Q1N2/2NK1Pb1/q1B5 b - - +perft 1 28 +perft 2 1071 +perft 3 29035 +perft 4 1041797 +perft 5 28700770 +perft 6 991502136 + +id gentest-2787 +epd rn5k/3pq3/1pp1p3/pR1Q1pp1/P4P2/5N2/2NK1Pb1/2B5 w - - +perft 1 42 +perft 2 1139 +perft 3 44359 +perft 4 1219673 +perft 5 45707297 +perft 6 1267607556 + +id gentest-2788 +epd rn5k/3p3q/1pp1p3/pR1Q1pp1/P4P2/5P2/2NK2b1/2B3N1 b - - +perft 1 28 +perft 2 1006 +perft 3 26000 +perft 4 917875 +perft 5 24034743 +perft 6 832239728 + +id gentest-2789 +epd rn4k1/7q/1pppp3/pR1Q1pp1/P4P2/B4P2/2NK2b1/6N1 w - - +perft 1 39 +perft 2 1250 +perft 3 47814 +perft 4 1433914 +perft 5 52931359 +perft 6 1561987676 + +id gentest-2790 +epd rn4k1/7q/1pp1p3/pR1p1pp1/P4P2/B2Q1P2/3K2b1/N5N1 b - - +perft 1 32 +perft 2 1231 +perft 3 37353 +perft 4 1383526 +perft 5 41399299 +perft 6 1481420726 + +id gentest-2791 +epd rn4k1/7q/1p1Bp3/pp1p1pp1/P4P2/3Q1b2/3K4/N5N1 w - - +perft 1 35 +perft 2 1231 +perft 3 41769 +perft 4 1369685 +perft 5 45104557 +perft 6 1443372333 + +id gentest-2792 +epd rn4k1/2q5/1p1Bp3/pp1p1pp1/P4P2/3QKb2/2N5/6N1 b - - +perft 1 37 +perft 2 1146 +perft 3 39554 +perft 4 1203798 +perft 5 39635355 +perft 6 1202073820 + +id gentest-2793 +epd r5k1/2q5/1pn1p3/pp1pBpp1/P4P2/3QK3/2N3b1/6N1 w - - +perft 1 35 +perft 2 1365 +perft 3 44467 +perft 4 1642789 +perft 5 52815130 +perft 6 1873684770 + +id gentest-2794 +epd r5k1/2q5/1pn1p3/pp1pBp2/P4Pp1/3QN3/5Kb1/6N1 b - - +perft 1 38 +perft 2 1463 +perft 3 53287 +perft 4 1937559 +perft 5 67492652 +perft 6 2343524554 + +id gentest-2795 +epd 2r3k1/2q5/1pn1p3/pp1NBp2/P4Pp1/3Q3b/5K2/6N1 w - - +perft 1 42 +perft 2 1276 +perft 3 47763 +perft 4 1465541 +perft 5 51241802 +perft 6 1602634571 + +id gentest-2796 +epd 2r3k1/2q1n1B1/1p2p3/pp1N1p2/P4Pp1/2Q4b/5K2/6N1 b - - +perft 1 29 +perft 2 1069 +perft 3 32425 +perft 4 1081428 +perft 5 33752136 +perft 6 1072228595 + +id gentest-2797 +epd 2r5/2Q1n1k1/1p2p3/p2N1p2/Pp3Pp1/7b/5K2/6N1 w - - +perft 1 29 +perft 2 667 +perft 3 17643 +perft 4 410720 +perft 5 10855753 +perft 6 249273058 + +id gentest-2798 +epd r1Q5/4n1k1/1p2p3/p2N1p2/Pp3Pp1/7b/4NK2/8 b - - +perft 1 20 +perft 2 600 +perft 3 11700 +perft 4 322516 +perft 5 6515850 +perft 6 177018202 + +id gentest-2799 +epd r7/4n2k/1pQ1p3/p2N1p2/Pp3Pp1/7b/4NK2/8 w - - +perft 1 31 +perft 2 724 +perft 3 21337 +perft 4 456216 +perft 5 13190459 +perft 6 278535020 + +id gentest-2800 +epd 8/r3n2k/1NQ1p3/p4p2/Pp1N1Pp1/7b/5K2/8 b - - +perft 1 20 +perft 2 668 +perft 3 13386 +perft 4 421679 +perft 5 8599101 +perft 6 261241331 + +id gentest-2801 +epd 8/r3n2k/2Q1p3/p2N1p2/Pp1N1Pp1/7b/5K2/8 w - - +perft 1 35 +perft 2 673 +perft 3 21785 +perft 4 419996 +perft 5 13076486 +perft 6 260099910 + +id gentest-2802 +epd 8/r6k/2n1p3/p4p2/PN3Pp1/7b/2N2K2/8 b - - +perft 1 24 +perft 2 346 +perft 3 8253 +perft 4 118310 +perft 5 2795113 +perft 6 39694083 + +id gentest-2803 +epd 8/1r5k/2N1p3/p4p2/P4Pp1/7b/2N2K2/8 w - - +perft 1 19 +perft 2 407 +perft 3 6468 +perft 4 130507 +perft 5 1960266 +perft 6 39216246 + +id gentest-2804 +epd 8/1r6/2N1p1k1/p4p2/PN3Pp1/7b/8/4K3 b - - +perft 1 22 +perft 2 344 +perft 3 6657 +perft 4 101975 +perft 5 2011260 +perft 6 29741842 + +id gentest-2805 +epd 8/1r2Nk2/4p3/p4p2/PN3Pp1/8/8/4Kb2 w - - +perft 1 16 +perft 2 372 +perft 3 5337 +perft 4 119238 +perft 5 1695469 +perft 6 37423412 + +id gentest-2806 +epd 2N5/3r1k2/4p3/p4p2/P4Pp1/8/N7/4Kb2 b - - +perft 1 26 +perft 2 234 +perft 3 5449 +perft 4 59645 +perft 5 1366400 +perft 6 16287524 + +id gentest-2807 +epd 2N5/3r4/4p1k1/p4p2/PN3Pp1/3b4/8/4K3 w - - +perft 1 13 +perft 2 325 +perft 3 4194 +perft 4 99645 +perft 5 1302775 +perft 6 29857661 + +id gentest-2808 +epd 8/2r5/3Np1k1/p4p2/P4Pp1/3N4/8/4K3 b - - +perft 1 21 +perft 2 381 +perft 3 6715 +perft 4 115700 +perft 5 1938673 +perft 6 31731495 + +id gentest-2809 +epd 8/4r2k/3Np3/p1N2p2/P4Pp1/8/8/4K3 w - - +perft 1 20 +perft 2 271 +perft 3 4947 +perft 4 71580 +perft 5 1259241 +perft 6 18881893 + +id gentest-2810 +epd 8/4r3/3NN2k/p4p2/P4Pp1/8/3K4/8 b - - +perft 1 13 +perft 2 278 +perft 3 3711 +perft 4 69065 +perft 5 949866 +perft 6 16357695 + +id gentest-2811 +epd 8/2r5/3NN2k/p4p2/P4Pp1/2K5/8/8 w - - +perft 1 8 +perft 2 125 +perft 3 2289 +perft 4 30910 +perft 5 544055 +perft 6 7498026 + +id gentest-2812 +epd 8/6r1/3NN2k/p4p2/P4Pp1/2K5/8/8 b - - +perft 1 14 +perft 2 293 +perft 3 3512 +perft 4 67550 +perft 5 857900 +perft 6 15298306 + +id gentest-2813 +epd 8/4rN1k/4N3/p4p2/P4Pp1/2K5/8/8 w - - +perft 1 20 +perft 2 219 +perft 3 3625 +perft 4 50060 +perft 5 781198 +perft 6 11309975 + +id gentest-2814 +epd 8/4r2k/3NN3/p4p2/P1K2P2/6p1/8/8 b - - +perft 1 13 +perft 2 250 +perft 3 3535 +perft 4 62282 +perft 5 919605 +perft 6 15066004 + +id gentest-2815 +epd 8/r7/4N2k/pN3p2/P1K2P2/6p1/8/8 w - - +perft 1 19 +perft 2 230 +perft 3 3891 +perft 4 51626 +perft 5 844194 +perft 6 12128561 + +id gentest-2816 +epd 8/2N2r2/4N2k/p2K1p2/P4P2/6p1/8/8 b - - +perft 1 11 +perft 2 158 +perft 3 1940 +perft 4 28522 +perft 5 394244 +perft 6 5671896 + +id gentest-2817 +epd 8/2Nr4/4N2k/p4p2/P1K2P2/6p1/8/8 w - - +perft 1 15 +perft 2 244 +perft 3 3615 +perft 4 54174 +perft 5 787309 +perft 6 12040465 + +id gentest-2818 +epd 8/2Nr4/4N2k/p4p2/P1K2P2/8/6p1/8 b - - +perft 1 19 +perft 2 276 +perft 3 5319 +perft 4 77626 +perft 5 1595557 +perft 6 22300511 + +id gentest-2819 +epd 4N3/3r4/4N2k/p4p2/P1K2P2/8/5b2/8 w - - +perft 1 14 +perft 2 338 +perft 3 4518 +perft 4 96019 +perft 5 1337308 +perft 6 27098547 + +id gentest-2820 +epd 4N3/8/4N2k/p2r1p2/P1K2P2/8/5b2/8 b - - +perft 1 22 +perft 2 289 +perft 3 5714 +perft 4 73697 +perft 5 1415737 +perft 6 19169319 + +id gentest-2821 +epd 4N3/8/1b2N3/p2r1p1k/P4P2/2K5/8/8 w - - +perft 1 15 +perft 2 259 +perft 3 3563 +perft 4 66194 +perft 5 919506 +perft 6 17649349 + +id gentest-2822 +epd 4N3/8/1b2N3/p3rp1k/P4P2/8/8/K7 b - - +perft 1 20 +perft 2 258 +perft 3 4341 +perft 4 55232 +perft 5 1011238 +perft 6 13269198 + +id gentest-2823 +epd 3NN3/8/1b6/p4p2/P4Pk1/8/4r3/K7 w - - +perft 1 9 +perft 2 224 +perft 3 2325 +perft 4 55365 +perft 5 607093 +perft 6 13972511 + +id gentest-2824 +epd 4N3/8/1b5N/p4p2/P4P2/5k2/4r3/K7 b - - +perft 1 28 +perft 2 239 +perft 3 6057 +perft 4 64447 +perft 5 1519169 +perft 6 17351912 + +id gentest-2825 +epd 4r3/8/7N/p1b2p2/P4P2/5k2/8/1K6 w - - +perft 1 9 +perft 2 288 +perft 3 2678 +perft 4 72498 +perft 5 688538 +perft 6 17612433 + +id gentest-2826 +epd 4r3/8/7N/p4p2/P4P2/4bk2/8/1K6 b - - +perft 1 26 +perft 2 207 +perft 3 5561 +perft 4 50270 +perft 5 1250948 +perft 6 11696358 + +id gentest-2827 +epd 8/4r3/8/p4N2/P2b1P2/5k2/8/1K6 w - - +perft 1 11 +perft 2 297 +perft 3 3111 +perft 4 81362 +perft 5 831458 +perft 6 20576041 + +id gentest-2828 +epd 8/4r3/8/p7/P2b1P2/4k3/6N1/1K6 b - - +perft 1 6 +perft 2 39 +perft 3 1110 +perft 4 8885 +perft 5 230063 +perft 6 1998573 + +id gentest-2829 +epd 8/b3r3/8/p4P2/P7/8/5kN1/1K6 w - - +perft 1 10 +perft 2 238 +perft 3 2359 +perft 4 54788 +perft 5 550382 +perft 6 12760319 + +id gentest-2830 +epd 8/b3r3/8/p4P2/P6N/8/2K5/5k2 b - - +perft 1 24 +perft 2 256 +perft 3 6023 +perft 4 58698 +perft 5 1347540 +perft 6 13603577 + +id gentest-2831 +epd 8/b7/8/p4P2/P3r2N/8/8/1K4k1 w - - +perft 1 9 +perft 2 198 +perft 3 1811 +perft 4 41054 +perft 5 385798 +perft 6 8792959 + +id gentest-2832 +epd 5N2/b7/8/p4P2/P7/8/4r3/1K4k1 b - - +perft 1 25 +perft 2 184 +perft 3 4373 +perft 4 37638 +perft 5 885282 +perft 6 8128558 + +id gentest-2833 +epd 8/4r3/4N3/p1b2P2/P7/8/8/1K4k1 w - - +perft 1 14 +perft 2 334 +perft 3 3919 +perft 4 94214 +perft 5 1062358 +perft 6 25379754 + +id gentest-2834 +epd 8/2N2r2/8/p1b2P2/P7/8/2K5/6k1 b - - +perft 1 23 +perft 2 326 +perft 3 7728 +perft 4 94274 +perft 5 2268382 +perft 6 25733665 + +id gentest-2835 +epd 8/2N3r1/8/p1b2P2/P7/2K5/7k/8 w - - +perft 1 13 +perft 2 376 +perft 3 4470 +perft 4 118139 +perft 5 1377351 +perft 6 34566268 + +id gentest-2836 +epd 8/r7/4N3/p1b2P2/P7/8/3K3k/8 b - - +perft 1 24 +perft 2 356 +perft 3 8117 +perft 4 107330 +perft 5 2417419 +perft 6 29333284 + +id gentest-2837 +epd 8/r7/4N3/p4P2/Pb6/8/4K3/6k1 w - - +perft 1 13 +perft 2 255 +perft 3 3009 +perft 4 61142 +perft 5 710359 +perft 6 14901138 + +id gentest-2838 +epd 8/r5N1/8/p4P2/Pb6/3K4/6k1/8 b - - +perft 1 24 +perft 2 229 +perft 3 5332 +perft 4 52958 +perft 5 1215278 +perft 6 12445888 + +id gentest-2839 +epd 8/3r2N1/8/p4P2/Pb6/8/4K1k1/8 w - - +perft 1 5 +perft 2 133 +perft 3 1017 +perft 4 24138 +perft 5 214520 +perft 6 4979122 + +id gentest-2840 +epd 4N3/8/8/p4P2/Pb1r4/4K3/6k1/8 b - - +perft 1 26 +perft 2 180 +perft 3 4318 +perft 4 35700 +perft 5 827569 +perft 6 7596030 + +id gentest-2841 +epd 4N3/8/5P2/p7/Pb6/3rK3/6k1/8 w - - +perft 1 4 +perft 2 100 +perft 3 766 +perft 4 17554 +perft 5 167094 +perft 6 3785748 + +id gentest-2842 +epd 4N3/8/5P2/p3K3/Pb6/2r5/6k1/8 b - - +perft 1 27 +perft 2 245 +perft 3 6409 +perft 4 62451 +perft 5 1580559 +perft 6 16633324 + +id gentest-2843 +epd 4N3/8/5P2/p2K4/Pb6/7r/8/5k2 w - - +perft 1 10 +perft 2 268 +perft 3 2678 +perft 4 67109 +perft 5 731926 +perft 6 17708947 + +id gentest-2844 +epd 8/8/3N1P2/p7/Pb1K4/r7/8/5k2 b - - +perft 1 20 +perft 2 233 +perft 3 5063 +perft 4 54165 +perft 5 1182140 +perft 6 13175138 + +id gentest-2845 +epd 8/8/5P2/p4N2/Pb1K4/5r2/8/4k3 w - - +perft 1 12 +perft 2 271 +perft 3 2907 +perft 4 63492 +perft 5 686075 +perft 6 15094491 + +id gentest-2846 +epd 8/8/5P2/p7/Pb1K2N1/5r2/3k4/8 b - - +perft 1 23 +perft 2 199 +perft 3 4555 +perft 4 43601 +perft 5 979302 +perft 6 10198627 + +id gentest-2847 +epd 5b2/8/5r2/p3K3/P5N1/8/3k4/8 w - - +perft 1 9 +perft 2 214 +perft 3 1969 +perft 4 42312 +perft 5 389751 +perft 6 8409607 + +id gentest-2848 +epd 8/6b1/4KN2/p7/P7/8/3k4/8 b - - +perft 1 12 +perft 2 169 +perft 3 2174 +perft 4 24918 +perft 5 334489 +perft 6 3757530 + +id gentest-2849 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-2850 +epd rnbqkb1r/pppppppp/5n2/5P2/8/8/PPPPP1PP/RNBQKBNR b KQkq - +perft 1 22 +perft 2 423 +perft 3 10042 +perft 4 220261 +perft 5 5612839 +perft 6 137535509 + +id gentest-2851 +epd rnbqkb1r/pp1ppp1p/5np1/2p2P2/3P4/8/PPP1P1PP/RNBQKBNR w KQkq - +perft 1 29 +perft 2 776 +perft 3 23032 +perft 4 652632 +perft 5 20312976 +perft 6 605673485 + +id gentest-2852 +epd rnbqkb1r/pp1ppp1p/3P1n2/2p2Pp1/8/8/PPP1P1PP/RNBQKBNR b KQkq - +perft 1 24 +perft 2 651 +perft 3 16373 +perft 4 484097 +perft 5 12638427 +perft 6 398568794 + +id gentest-2853 +epd rnbqk2r/pp1pppbp/3P4/2pn1Pp1/8/8/PPPBP1PP/RN1QKBNR w KQkq - +perft 1 27 +perft 2 939 +perft 3 26525 +perft 4 884800 +perft 5 26250686 +perft 6 854384776 + +id gentest-2854 +epd rnb1k2r/pp1pppbp/1q1P4/2pn1Pp1/6P1/2P5/PP1BP2P/RN1QKBNR b KQkq - +perft 1 38 +perft 2 937 +perft 3 34769 +perft 4 935668 +perft 5 33929504 +perft 6 972853064 + +id gentest-2855 +epd rnb1k2r/pp1p1p1p/1q1P4/2pnpPp1/6P1/2N5/PP1BP2P/R2QKBNR w KQkq e6 +perft 1 31 +perft 2 949 +perft 3 30132 +perft 4 912423 +perft 5 29893981 +perft 6 897824213 + +id gentest-2856 +epd r1b1k2r/pp1p1p1p/1qnP4/2pnpPp1/6P1/1QN4P/PP1BP3/R3KBNR b KQkq - +perft 1 33 +perft 2 1111 +perft 3 35600 +perft 4 1224307 +perft 5 38483591 +perft 6 1335232912 + +id gentest-2857 +epd r1b1k2r/ppqp1p1p/2nP4/2pN1Pp1/4p1P1/1Q5P/PP1BP3/R3KBNR w KQkq - +perft 1 44 +perft 2 1128 +perft 3 46927 +perft 4 1163424 +perft 5 46376755 +perft 6 1148850016 + +id gentest-2858 +epd r1b1k2r/ppqp1p2/2nP4/2pN1Ppp/4p1P1/1QB4P/PP2PK2/R4BNR b kq - +perft 1 29 +perft 2 1184 +perft 3 31329 +perft 4 1275842 +perft 5 33154697 +perft 6 1331106107 + +id gentest-2859 +epd r1b1k2r/ppqp1p2/2nP4/2pN1Ppp/4p1P1/1Q5P/PP2PK2/R3BBNR w kq - +perft 1 42 +perft 2 1153 +perft 3 46121 +perft 4 1220459 +perft 5 47631852 +perft 6 1249981508 + +id gentest-2860 +epd rqb1k2r/pp1p1p2/2nP4/2p2Ppp/1N2p1P1/1Q5P/PP2PKB1/R3B1NR b kq - +perft 1 25 +perft 2 882 +perft 3 21141 +perft 4 746925 +perft 5 18534822 +perft 6 660422738 + +id gentest-2861 +epd rqb1k2r/pp1p1p2/3P2n1/2p2Ppp/1N2p1P1/Q6P/PP2PKB1/R3B1NR w kq - +perft 1 34 +perft 2 805 +perft 3 27442 +perft 4 650803 +perft 5 22713912 +perft 6 558345256 + +id gentest-2862 +epd rqbk3r/pp1p1p2/3P2n1/2pN1Ppp/4p1P1/Q4N1P/PP2PKB1/R3B2R b - - +perft 1 23 +perft 2 1026 +perft 3 23289 +perft 4 1022801 +perft 5 24075885 +perft 6 1041812257 + +id gentest-2863 +epd rqbk1r2/pp1p1p2/3P4/2pN1PNp/4p1Pn/Q6P/PP2PKB1/R3B2R w - - +perft 1 47 +perft 2 778 +perft 3 34220 +perft 4 649338 +perft 5 28353696 +perft 6 593869569 + +id gentest-2864 +epd rqbk2r1/pp1p1p2/1N1P4/2p2PNp/4p1Pn/Q6P/PP2PK2/R3BB1R b - - +perft 1 20 +perft 2 775 +perft 3 16210 +perft 4 622373 +perft 5 14049395 +perft 6 537793284 + +id gentest-2865 +epd rqb1k1r1/pp1p1p2/1N1P4/2p2PNp/4p1P1/2Q4P/PP2PKn1/R3BB1R w - - +perft 1 47 +perft 2 959 +perft 3 41026 +perft 4 869973 +perft 5 35662173 +perft 6 808907984 + +id gentest-2866 +epd rqb1k1r1/pp1p1p2/1N1P4/2p2PN1/4p1Pp/P1Q4P/1P1BPKn1/R4B1R b - - +perft 1 18 +perft 2 773 +perft 3 14846 +perft 4 605029 +perft 5 12744958 +perft 6 502497571 + +id gentest-2867 +epd rqb1k1r1/pp1p1p2/1N1P4/2Q2PN1/4p1Pp/P6P/1P1BPKn1/R4B1R w - - +perft 1 47 +perft 2 768 +perft 3 33209 +perft 4 610455 +perft 5 25230505 +perft 6 521012351 + +id gentest-2868 +epd rqb1k1r1/pp1N1N2/3P4/2Q2P2/4p1Pp/P3n2P/1P1BPK2/R4B1R b - - +perft 1 23 +perft 2 1020 +perft 3 23274 +perft 4 1004628 +perft 5 24400743 +perft 6 1018954430 + +id gentest-2869 +epd rqb1k3/1p1N1N2/3P4/p4P2/4p1rp/P3Q2P/1P1BPK2/R4B1R w - - +perft 1 43 +perft 2 784 +perft 3 29749 +perft 4 639299 +perft 5 24388590 +perft 6 587767868 + +id gentest-2870 +epd rqb1kN2/5N2/3P4/pp3P2/4p1rp/P3Q2P/1P1BPKB1/R6R b - - +perft 1 23 +perft 2 1086 +perft 3 27942 +perft 4 1263295 +perft 5 35312352 +perft 6 1558200638 + +id gentest-2871 +epd r3kN2/2q2N2/3P4/pp3b2/4p1rp/P3Q2P/1P1BPKB1/R1R5 w - - +perft 1 53 +perft 2 1853 +perft 3 88125 +perft 4 2923058 +perft 5 133967790 +perft 6 4379885577 + +id gentest-2872 +epd r3kN2/2qb1N2/3P4/pp6/4B1rp/P3Q2P/1P1BPK2/R5R1 b - - +perft 1 35 +perft 2 1978 +perft 3 57100 +perft 4 3040888 +perft 5 93773040 +perft 6 4818741133 + +id gentest-2873 +epd r3k3/3N1N2/3P4/pp6/4B1rp/P3q2P/1P1BPK2/R5R1 w - - +perft 1 4 +perft 2 110 +perft 3 4371 +perft 4 124599 +perft 5 4779551 +perft 6 138435631 + +id gentest-2874 +epd rN2k3/5N2/3P4/pp6/4B2p/P3K2P/1P1BP3/R5r1 b - - +perft 1 21 +perft 2 813 +perft 3 14421 +perft 4 527748 +perft 5 9440843 +perft 6 333893820 + +id gentest-2875 +epd rN6/5Nk1/3P4/pp6/3KB2p/P6P/1P1BP3/R5r1 w - - +perft 1 48 +perft 2 966 +perft 3 40925 +perft 4 813428 +perft 5 32020763 +perft 6 638554794 + +id gentest-2876 +epd rN1N4/6k1/3P4/pp6/3KB1Pp/P7/1P1BP3/R7 b - - +perft 1 10 +perft 2 484 +perft 3 4907 +perft 4 219949 +perft 5 2452707 +perft 6 103095581 + +id gentest-2877 +epd rN6/5k2/3P4/pp6/3KB1Pp/P7/1P1BP3/R7 w - - +perft 1 45 +perft 2 528 +perft 3 22092 +perft 4 258684 +perft 5 10176856 +perft 6 128422117 + +id gentest-2878 +epd BN6/8/3Pk2B/pp6/3K2Pp/P7/1P2P3/R7 b - - +perft 1 6 +perft 2 222 +perft 3 1383 +perft 4 50388 +perft 5 328704 +perft 6 11860930 + +id gentest-2879 +epd BN6/6B1/3k4/p7/1p1K2Pp/P7/1P2P3/R7 w - - +perft 1 33 +perft 2 218 +perft 3 7565 +perft 4 51094 +perft 5 1816207 +perft 6 12533615 + +id gentest-2880 +epd B7/3Nk1B1/8/p7/1p1K2Pp/P7/1P2P3/5R2 b - - +perft 1 9 +perft 2 393 +perft 3 3031 +perft 4 124041 +perft 5 899980 +perft 6 35240958 + +id gentest-2881 +epd B7/3N2B1/3k4/p7/1p1K2P1/P4R1p/1P2P3/8 w - - +perft 1 38 +perft 2 269 +perft 3 10274 +perft 4 74138 +perft 5 2794088 +perft 6 21786742 + +id gentest-2882 +epd B7/2kN2B1/8/p5P1/1p1K1R2/P6p/1P2P3/8 b - - +perft 1 8 +perft 2 318 +perft 3 2491 +perft 4 95673 +perft 5 790553 +perft 6 29286816 + +id gentest-2883 +epd B7/2kN4/7B/p5P1/1p1K1R2/P6p/1P2P3/8 w - - +perft 1 38 +perft 2 298 +perft 3 10870 +perft 4 83465 +perft 5 2957804 +perft 6 24039111 + +id gentest-2884 +epd B7/3k4/7B/p3P1P1/1p1K1R2/P6p/1P6/8 b - - +perft 1 10 +perft 2 297 +perft 3 2420 +perft 4 72731 +perft 5 588854 +perft 6 17680403 + +id gentest-2885 +epd 3k4/8/7B/3BP1P1/pp1K1R2/P6p/1P6/8 w - - +perft 1 34 +perft 2 256 +perft 3 8350 +perft 4 59322 +perft 5 1893625 +perft 6 14730774 + +id gentest-2886 +epd 4k3/8/7B/2K1P1P1/pp3R2/P4B1p/1P6/8 b - - +perft 1 6 +perft 2 208 +perft 3 1353 +perft 4 45045 +perft 5 333053 +perft 6 10629266 + +id gentest-2887 +epd 8/5k2/7B/2K1P1P1/ppR5/P4B1p/1P6/8 w - - +perft 1 33 +perft 2 237 +perft 3 7545 +perft 4 49951 +perft 5 1574166 +perft 6 11060971 + +id gentest-2888 +epd 8/8/4k2B/2K1P1PB/pp6/P6p/1P6/2R5 b - - +perft 1 7 +perft 2 200 +perft 3 1347 +perft 4 39526 +perft 5 295432 +perft 6 8579845 + +id gentest-2889 +epd 4B3/8/7B/2K1PkP1/pp6/P7/1P5p/2R5 w - - +perft 1 31 +perft 2 306 +perft 3 9116 +perft 4 101743 +perft 5 2913553 +perft 6 37429042 + +id gentest-2890 +epd 4B3/8/7B/4P1P1/ppK1k3/PP6/7p/2R5 b - - +perft 1 11 +perft 2 287 +perft 3 3195 +perft 4 86554 +perft 5 1092067 +perft 6 28947278 + +id gentest-2891 +epd 4B3/8/7B/4P1P1/ppK1k2q/PP6/8/R7 w - - +perft 1 24 +perft 2 393 +perft 3 8158 +perft 4 160641 +perft 5 3619908 +perft 6 73486670 + +id gentest-2892 +epd 4B3/8/7B/4P1P1/pK2k3/PP5q/8/6R1 b - - +perft 1 27 +perft 2 664 +perft 3 13928 +perft 4 323989 +perft 5 6747677 +perft 6 153660634 + +id gentest-2893 +epd 4q3/8/7B/4P1P1/pK2k3/PP4R1/8/8 w - - +perft 1 17 +perft 2 334 +perft 3 5306 +perft 4 109149 +perft 5 1817004 +perft 6 37637053 + +id gentest-2894 +epd 4q3/3R4/7B/4P1P1/1K2k3/Pp6/8/8 b - - +perft 1 20 +perft 2 427 +perft 3 9235 +perft 4 172783 +perft 5 3824897 +perft 6 69242328 + +id gentest-2895 +epd q7/3R4/7B/4PkP1/2K5/Pp6/8/8 w - - +perft 1 26 +perft 2 621 +perft 3 11512 +perft 4 251614 +perft 5 4452256 +perft 6 96542316 + +id gentest-2896 +epd q7/R7/7B/4P1P1/3K1k2/Pp6/8/8 b - - +perft 1 20 +perft 2 323 +perft 3 6888 +perft 4 108858 +perft 5 2382133 +perft 6 38703423 + +id gentest-2897 +epd q7/8/7B/R3P1P1/3K1k2/Pp6/8/8 w - - +perft 1 16 +perft 2 323 +perft 3 4610 +perft 4 97778 +perft 5 1472169 +perft 6 32246813 + +id gentest-2898 +epd 8/8/3K3B/R3P1P1/5k2/Pp3q2/8/8 b - - +perft 1 24 +perft 2 364 +perft 3 8357 +perft 4 130289 +perft 5 3015019 +perft 6 49373304 + +id gentest-2899 +epd 8/8/7B/R1K1P1P1/4qk2/P7/1p6/8 w - - +perft 1 13 +perft 2 360 +perft 3 4727 +perft 4 129748 +perft 5 1922279 +perft 6 52817465 + +id gentest-2900 +epd 8/6B1/8/R1K1P1P1/P3qk2/8/8/1b6 b - - +perft 1 29 +perft 2 333 +perft 3 10159 +perft 4 141380 +perft 5 4223208 +perft 6 65808387 + +id gentest-2901 +epd 8/6B1/1K6/R3P1P1/P4k2/3b4/4q3/8 w - - +perft 1 17 +perft 2 539 +perft 3 9013 +perft 4 282625 +perft 5 4927040 +perft 6 151652625 + +id gentest-2902 +epd 8/6B1/1K6/4P1P1/P3qk2/3b4/2R5/8 b - - +perft 1 30 +perft 2 602 +perft 3 18515 +perft 4 358703 +perft 5 10842723 +perft 6 209285093 + +id gentest-2903 +epd 8/6B1/1K6/4P1k1/P3q3/8/4bR2/8 w - - +perft 1 20 +perft 2 569 +perft 3 10260 +perft 4 285473 +perft 5 5280720 +perft 6 144986991 + +id gentest-2904 +epd 8/8/1K5B/1b2P1k1/P3q3/8/5R2/8 b - - +perft 1 5 +perft 2 138 +perft 3 4469 +perft 4 96066 +perft 5 2818635 +perft 6 57168676 + +id gentest-2905 +epd 8/8/bK6/4P3/P3qBk1/8/5R2/8 w - - +perft 1 23 +perft 2 729 +perft 3 14041 +perft 4 405393 +perft 5 7904707 +perft 6 221987870 + +id gentest-2906 +epd 8/8/bK6/4q3/P5k1/8/7R/2B5 b - - +perft 1 37 +perft 2 685 +perft 3 21108 +perft 4 395737 +perft 5 11679820 +perft 6 223814260 + +id gentest-2907 +epd 8/7R/1K6/6q1/P5k1/3b4/8/2B5 w - - +perft 1 25 +perft 2 776 +perft 3 15104 +perft 4 448417 +perft 5 8819050 +perft 6 262184785 + +id gentest-2908 +epd 8/2K4R/8/5bq1/P5k1/8/3B4/8 b - - +perft 1 23 +perft 2 468 +perft 3 12899 +perft 4 254564 +perft 5 7209903 +perft 6 142874843 + +id gentest-2909 +epd 8/2K4R/6bq/6B1/P5k1/8/8/8 w - - +perft 1 24 +perft 2 580 +perft 3 11792 +perft 4 293691 +perft 5 5850276 +perft 6 154499202 + +id gentest-2910 +epd 1K6/7R/6b1/6q1/P5kB/8/8/8 b - - +perft 1 29 +perft 2 507 +perft 3 15414 +perft 4 280088 +perft 5 8358401 +perft 6 157257828 + +id gentest-2911 +epd 1K6/R7/6b1/5q2/P6B/5k2/8/8 w - - +perft 1 21 +perft 2 611 +perft 3 10564 +perft 4 329278 +perft 5 5956673 +perft 6 185641406 + +id gentest-2912 +epd 8/R1K1B3/6b1/5q2/P7/8/6k1/8 b - - +perft 1 35 +perft 2 583 +perft 3 20163 +perft 4 334545 +perft 5 11340006 +perft 6 201412636 + +id gentest-2913 +epd 2K5/R3B3/5q2/8/P3b3/8/6k1/8 w - - +perft 1 18 +perft 2 748 +perft 3 12514 +perft 4 453171 +perft 5 7883016 +perft 6 266561008 + +id gentest-2914 +epd 2K5/R7/3B1q2/P7/8/3b4/6k1/8 b - - +perft 1 39 +perft 2 783 +perft 3 28037 +perft 4 505821 +perft 5 17148186 +perft 6 309252509 + +id gentest-2915 +epd 2K5/R7/b5q1/P7/8/8/6kB/8 w - - +perft 1 6 +perft 2 191 +perft 3 2358 +perft 4 73905 +perft 5 1115920 +perft 6 33796776 + +id gentest-2916 +epd R7/3K4/b5q1/P7/8/8/7k/8 b - - +perft 1 34 +perft 2 344 +perft 3 10884 +perft 4 119345 +perft 5 3662421 +perft 6 44556648 + +id gentest-2917 +epd 8/R2K4/8/P7/2b5/8/2q4k/8 w - - +perft 1 12 +perft 2 396 +perft 3 4489 +perft 4 148521 +perft 5 1820940 +perft 6 58415094 + +id gentest-2918 +epd 4R3/3K4/8/P7/2b5/8/7k/1q6 b - - +perft 1 37 +perft 2 628 +perft 3 19423 +perft 4 295296 +perft 5 8949135 +perft 6 132941793 + +id gentest-2919 +epd 5R2/3K4/1q6/P7/2b5/8/7k/8 w - - +perft 1 19 +perft 2 639 +perft 3 8267 +perft 4 254153 +perft 5 3430874 +perft 6 102567800 + +id gentest-2920 +epd 3K4/8/2q5/P7/2b2R2/8/7k/8 b - - +perft 1 37 +perft 2 462 +perft 3 14062 +perft 4 185228 +perft 5 5433924 +perft 6 74168918 + +id gentest-2921 +epd 3K1R2/8/2q1b3/P7/8/8/8/7k w - - +perft 1 12 +perft 2 337 +perft 3 3803 +perft 4 111433 +perft 5 1396120 +perft 6 39887797 + +id gentest-2922 +epd 3K4/2R5/4b3/P7/8/8/8/7k b - - +perft 1 14 +perft 2 241 +perft 3 2711 +perft 4 45994 +perft 5 533276 +perft 6 9104744 + +id gentest-2923 +epd 3Kb3/8/8/P1R5/8/8/8/7k w - - +perft 1 18 +perft 2 151 +perft 3 2599 +perft 4 25948 +perft 5 459331 +perft 6 4905243 + +id gentest-2924 +epd 2RK4/8/P7/8/b7/8/8/7k b - - +perft 1 10 +perft 2 122 +perft 3 1304 +perft 4 20942 +perft 5 235056 +perft 6 4111163 + +id gentest-2925 +epd 3Kb3/2R5/P7/8/8/8/6k1/8 w - - +perft 1 18 +perft 2 227 +perft 3 3861 +perft 4 45432 +perft 5 790114 +perft 6 9571457 + +id gentest-2926 +epd 1K2b3/2R5/P7/8/8/8/8/7k b - - +perft 1 10 +perft 2 176 +perft 3 1845 +perft 4 31913 +perft 5 351653 +perft 6 6117025 + +id gentest-2927 +epd 2K1b3/2R5/P7/8/8/8/8/5k2 w - - +perft 1 17 +perft 2 176 +perft 3 2915 +perft 4 33729 +perft 5 576894 +perft 6 6926473 + +id gentest-2928 +epd 3K4/5R2/P7/7b/8/8/8/5k2 b - - +perft 1 6 +perft 2 103 +perft 3 1047 +perft 4 16980 +perft 5 201116 +perft 6 3435999 + +id gentest-2929 +epd 3K4/8/P5b1/8/8/5R2/8/4k3 w - - +perft 1 19 +perft 2 213 +perft 3 3933 +perft 4 46526 +perft 5 868329 +perft 6 10592948 + +id gentest-2930 +epd 8/3K3b/P7/8/8/1R6/8/4k3 b - - +perft 1 12 +perft 2 252 +perft 3 3105 +perft 4 61913 +perft 5 784137 +perft 6 15227906 + +id gentest-2931 +epd 8/3K3b/P7/8/8/8/1R6/4k3 w - - +perft 1 23 +perft 2 213 +perft 3 4221 +perft 4 48954 +perft 5 940476 +perft 6 11431734 + +id gentest-2932 +epd 8/8/P3K3/8/8/8/3R4/1b2k3 b - - +perft 1 9 +perft 2 146 +perft 3 1544 +perft 4 26592 +perft 5 294811 +perft 6 5268625 + +id gentest-2933 +epd 8/8/P3K3/8/8/8/2b1R3/5k2 w - - +perft 1 17 +perft 2 162 +perft 3 2885 +perft 4 29872 +perft 5 541861 +perft 6 6048770 + +id gentest-2934 +epd 8/8/P2K4/8/8/8/2b4R/4k3 b - - +perft 1 11 +perft 2 240 +perft 3 2571 +perft 4 52621 +perft 5 611253 +perft 6 12253959 + +id gentest-2935 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-2936 +epd rnbqkbnr/pppp1ppp/8/4p3/5P2/P7/1PPPP1PP/RNBQKBNR b KQkq - +perft 1 31 +perft 2 597 +perft 3 18646 +perft 4 399908 +perft 5 12718221 +perft 6 302128389 + +id gentest-2937 +epd r1bqkbnr/pp1p1ppp/n1p5/4p3/4PP2/P7/1PPP2PP/RNBQKBNR w KQkq - +perft 1 29 +perft 2 948 +perft 3 27551 +perft 4 885371 +perft 5 26661862 +perft 6 860893506 + +id gentest-2938 +epd r1b1kbnr/pp1p1ppp/n1p2q2/4p3/4PP2/P7/1PPPB1PP/RNBQ1KNR b kq - +perft 1 34 +perft 2 868 +perft 3 29629 +perft 4 803782 +perft 5 27627724 +perft 6 786614245 + +id gentest-2939 +epd 1rb1k1nr/pp1p1ppp/n1p2q2/4p3/P3PP2/b7/1PPPB1PP/RNBQ1KNR w k - +perft 1 29 +perft 2 991 +perft 3 29105 +perft 4 993496 +perft 5 30222799 +perft 6 1041301718 + +id gentest-2940 +epd 1rbk2nr/pp1p1ppp/n1p2q2/4p3/P1B1PP2/b6P/1PPP2P1/RNBQ1KNR b - - +perft 1 34 +perft 2 1152 +perft 3 39454 +perft 4 1327868 +perft 5 46100473 +perft 6 1553838762 + +id gentest-2941 +epd 1rbk2nr/pp1pbppp/n1pq4/4p3/P1B1PP2/2P4P/1P1P2P1/RNBQ1KNR w - - +perft 1 35 +perft 2 1175 +perft 3 39028 +perft 4 1323568 +perft 5 43314736 +perft 6 1486333015 + +id gentest-2942 +epd 1rbk1bnr/pp1p1ppp/n1pq4/4pP1Q/P1B1P3/2P4P/1P1P2P1/RNB2KNR b - - +perft 1 31 +perft 2 1107 +perft 3 33091 +perft 4 1136579 +perft 5 34495551 +perft 6 1167218839 + +id gentest-2943 +epd 1rbk1bnr/pp1p1ppp/n1q5/2p1pP1Q/P1B1P3/2PP3P/1P4P1/RNB2KNR w - - +perft 1 40 +perft 2 1135 +perft 3 44932 +perft 4 1262150 +perft 5 48978974 +perft 6 1399141722 + +id gentest-2944 +epd 1rbk1bnr/pp1p1ppp/n4q2/2p1p2Q/P1B1P3/2PP3P/1P4P1/RNB1K1NR b - - +perft 1 31 +perft 2 1153 +perft 3 34800 +perft 4 1292844 +perft 5 39133555 +perft 6 1452419167 + +id gentest-2945 +epd 1rbk1bnr/pp3pp1/n2p1q1p/2p1p2Q/P1B1P3/2PP3P/1P1K2P1/RNB3NR w - - +perft 1 36 +perft 2 1063 +perft 3 34810 +perft 4 1062454 +perft 5 35291483 +perft 6 1113512036 + +id gentest-2946 +epd 1r1k1bnr/pp1b1pp1/B2p1q1p/2p1p2Q/P3P1P1/2PP3P/1P1K4/RNB3NR b - - +perft 1 34 +perft 2 865 +perft 3 28483 +perft 4 791347 +perft 5 25742977 +perft 6 760097849 + +id gentest-2947 +epd 1r1k1bnr/pp1bqpp1/B6p/2ppp2Q/P3P1P1/2PP3P/1P1KN3/RNB4R w - - +perft 1 34 +perft 2 1053 +perft 3 36350 +perft 4 1119516 +perft 5 39844655 +perft 6 1245002265 + +id gentest-2948 +epd 1r1k1bnr/pp1bqpp1/B6p/2p1p2Q/P3p1PP/2PP4/1P1K4/RNB3NR b - - +perft 1 31 +perft 2 844 +perft 3 26517 +perft 4 806522 +perft 5 25776504 +perft 6 836174494 + +id gentest-2949 +epd r2k1bnr/pp2qpp1/B6p/2p1p2Q/P3p1bP/R1PP4/1P1K4/1NB3NR w - - +perft 1 27 +perft 2 921 +perft 3 27477 +perft 4 900148 +perft 5 29060941 +perft 6 950900379 + +id gentest-2950 +epd r2k1bnr/pp2qp2/B6p/1Pp1p1pQ/P3p1bP/R1PP4/3K4/1NB3NR b - - +perft 1 32 +perft 2 775 +perft 3 24702 +perft 4 696377 +perft 5 22350477 +perft 6 685368052 + +id gentest-2951 +epd r2k1bnr/pp3p2/B3q2p/1Pp1p1pQ/P5bP/R1PPp3/8/1NB1K1NR w - - +perft 1 24 +perft 2 967 +perft 3 27206 +perft 4 1039444 +perft 5 32001154 +perft 6 1184886448 + +id gentest-2952 +epd r2k1bnr/pp6/B3qp1p/1Pp1p1Q1/P1P3bP/R2Pp3/8/1NB1K1NR b - - +perft 1 37 +perft 2 1145 +perft 3 40164 +perft 4 1329144 +perft 5 45186350 +perft 6 1555074992 + +id gentest-2953 +epd r1qk1bn1/pp5r/B4p1p/1Pp1p1Q1/P1P3bP/R2PB3/8/1N2K1NR w - - +perft 1 35 +perft 2 1165 +perft 3 43536 +perft 4 1406059 +perft 5 54191193 +perft 6 1742398790 + +id gentest-2954 +epd r1qk1bn1/pp5r/B4p1p/1Pp1p2Q/P1P4P/2RPBb2/8/1N2K1NR b - - +perft 1 35 +perft 2 1238 +perft 3 41225 +perft 4 1495619 +perft 5 48989015 +perft 6 1814335108 + +id gentest-2955 +epd r2k1bn1/pp5r/B4p1p/1Pp1p2Q/P1P4P/2Rq1b2/8/1NB1K1NR w - - +perft 1 31 +perft 2 1303 +perft 3 37968 +perft 4 1512471 +perft 5 47842041 +perft 6 1822685549 + +id gentest-2956 +epd r2k1bn1/pB5r/5p1p/1Pp1p2Q/P1P4P/2R2b2/3N4/2B1K1NR b - - +perft 1 30 +perft 2 1164 +perft 3 30634 +perft 4 1256456 +perft 5 31764611 +perft 6 1341388874 + +id gentest-2957 +epd r2k1bn1/pB5r/5p1p/1Pp1p2Q/P1P4P/2R2N2/8/2B1K1NR w - - +perft 1 42 +perft 2 813 +perft 3 35480 +perft 4 667804 +perft 5 29800465 +perft 6 574041820 + +id gentest-2958 +epd r3kbn1/pB5r/1P3p1p/2p1p3/P1P4P/2R2N2/8/2B1K1NR b - - +perft 1 24 +perft 2 826 +perft 3 18750 +perft 4 657090 +perft 5 14839015 +perft 6 528756403 + +id gentest-2959 +epd r3kbn1/pB2r3/1P3p1p/2p1p2P/P1P5/2R2N2/8/2B1K1NR w - - +perft 1 36 +perft 2 661 +perft 3 23941 +perft 4 487689 +perft 5 17798415 +perft 6 377226654 + +id gentest-2960 +epd r3kbn1/p1r5/1PB2p1B/2p1p2P/P1P5/2R2N2/8/4K1NR b - - +perft 1 5 +perft 2 188 +perft 3 3809 +perft 4 142138 +perft 5 3013776 +perft 6 111918224 + +id gentest-2961 +epd r1k2bn1/p1r5/1PB2p1B/P1p1p2P/2P5/2R2N2/8/4K1NR w - - +perft 1 41 +perft 2 764 +perft 3 30408 +perft 4 575088 +perft 5 22476211 +perft 6 438779893 + +id gentest-2962 +epd B1k2bn1/p4r2/1P3p1B/P1p1p2P/2P5/2R2N2/4N3/4K2R b - - +perft 1 19 +perft 2 754 +perft 3 14139 +perft 4 553133 +perft 5 10473607 +perft 6 408285160 + +id gentest-2963 +epd B4b2/p2k1r2/1P3p1n/P1p1p2P/2P2N2/2R2N2/8/4K2R w - - +perft 1 37 +perft 2 657 +perft 3 24558 +perft 4 446645 +perft 5 16694504 +perft 6 314537803 + +id gentest-2964 +epd B1k2b2/p4r2/1P3p1n/P1p1p1NP/2P2N2/R7/8/4K2R b - - +perft 1 21 +perft 2 859 +perft 3 17680 +perft 4 696792 +perft 5 14255832 +perft 6 550607405 + +id gentest-2965 +epd 2k2b2/p4r2/1P6/P1p1pnpP/2P2N2/R4B2/8/4K2R w - - +perft 1 37 +perft 2 965 +perft 3 34881 +perft 4 868137 +perft 5 30405503 +perft 6 732649957 + +id gentest-2966 +epd 3k1b2/p4r2/1P6/P1p1pnpP/2P5/R4B1R/6N1/4K3 b - - +perft 1 27 +perft 2 820 +perft 3 20973 +perft 4 646646 +perft 5 15953798 +perft 6 490598959 + +id gentest-2967 +epd 3k1b2/p6r/1P1n4/P1p1p1pP/2P3B1/R6R/6N1/4K3 w - - +perft 1 37 +perft 2 923 +perft 3 32212 +perft 4 718518 +perft 5 24275125 +perft 6 518147357 + +id gentest-2968 +epd 3k1b2/p3r3/1P1n4/P1p1p1pP/2P3B1/R4R2/6N1/4K3 b - - +perft 1 22 +perft 2 796 +perft 3 15796 +perft 4 558481 +perft 5 11229188 +perft 6 387831024 + +id gentest-2969 +epd 3k1b2/pn4r1/1P2B3/P1p1p1pP/2P5/R4R2/6N1/4K3 w - - +perft 1 39 +perft 2 623 +perft 3 23082 +perft 4 399215 +perft 5 14293335 +perft 6 257076075 + +id gentest-2970 +epd 3k1b2/pn1r4/1P2B3/P1pNp1pP/2P5/R4R2/8/4K3 b - - +perft 1 19 +perft 2 777 +perft 3 13599 +perft 4 519655 +perft 5 9238957 +perft 6 339781192 + +id gentest-2971 +epd 3knb2/p2r4/1P2B3/P1pNp1pP/2P5/R7/8/4KR2 w - - +perft 1 40 +perft 2 849 +perft 3 32655 +perft 4 636298 +perft 5 23827201 +perft 6 460381704 + +id gentest-2972 +epd 3knb2/p5r1/1P2B3/P1p1p1pP/1NP5/6R1/8/4KR2 b - - +perft 1 19 +perft 2 782 +perft 3 14991 +perft 4 589382 +perft 5 11447743 +perft 6 435029324 + +id gentest-2973 +epd 3knb2/p4r2/PP2B3/2p3pP/1NP1p3/6R1/8/4KR2 w - - +perft 1 37 +perft 2 834 +perft 3 29148 +perft 4 606653 +perft 5 20804071 +perft 6 428088973 + +id gentest-2974 +epd 3knb2/p5r1/PP2B3/2p2RpP/1NP1p3/1R6/8/4K3 b - - +perft 1 18 +perft 2 673 +perft 3 12133 +perft 4 445667 +perft 5 8319715 +perft 6 297602740 + +id gentest-2975 +epd 3knR2/pr6/PP2B3/2p4P/1NP1p1p1/1R6/8/4K3 w - - +perft 1 39 +perft 2 494 +perft 3 18018 +perft 4 246709 +perft 5 8624093 +perft 6 126490721 + +id gentest-2976 +epd 3kn3/1r3R2/Pp6/2p2B1P/1NP1p1p1/1R6/8/4K3 b - - +perft 1 14 +perft 2 489 +perft 3 6841 +perft 4 235031 +perft 5 3489395 +perft 6 116764225 + +id gentest-2977 +epd 2rkn3/5R1B/Pp6/2p4P/1NP1p1p1/1R6/8/4K3 w - - +perft 1 38 +perft 2 441 +perft 3 15770 +perft 4 208224 +perft 5 7208173 +perft 6 104442635 + +id gentest-2978 +epd 3kn3/R1r4B/Pp6/2p4P/1NP1p1p1/3R4/8/4K3 b - - +perft 1 5 +perft 2 140 +perft 3 2136 +perft 4 58519 +perft 5 946368 +perft 6 26093483 + +id gentest-2979 +epd 3k4/R6B/Pprn4/2p4P/1NP1p1p1/3R4/8/3K4 w - - +perft 1 32 +perft 2 304 +perft 3 9438 +perft 4 121984 +perft 5 3698441 +perft 6 54994926 + +id gentest-2980 +epd 3k4/R7/Pprn4/2p4P/2P1B3/3R2p1/2N5/3K4 b - - +perft 1 6 +perft 2 222 +perft 3 2450 +perft 4 85507 +perft 5 1175217 +perft 6 39667844 + +id gentest-2981 +epd 3k4/r7/Pp1n4/2p4P/2PNB3/3R2p1/8/3K4 w - - +perft 1 31 +perft 2 662 +perft 3 20668 +perft 4 396727 +perft 5 12117013 +perft 6 230117640 + +id gentest-2982 +epd 8/r2k4/Pp1n4/2p4P/2P5/3R1Np1/8/3K3B b - - +perft 1 13 +perft 2 304 +perft 3 5290 +perft 4 130649 +perft 5 2423319 +perft 6 60914788 + +id gentest-2983 +epd r7/2k5/Pp1n4/2p4P/2P5/3R1Np1/6B1/3K4 w - - +perft 1 26 +perft 2 582 +perft 3 16072 +perft 4 295823 +perft 5 8117577 +perft 6 147319846 + +id gentest-2984 +epd r7/2k2n2/Pp6/2pR3P/2P5/5Np1/4K1B1/8 b - - +perft 1 19 +perft 2 539 +perft 3 8851 +perft 4 237741 +perft 5 3892251 +perft 6 102622730 + +id gentest-2985 +epd r7/2k5/Pp4n1/2pR3P/2P5/6p1/4K1B1/6N1 w - - +perft 1 28 +perft 2 496 +perft 3 12834 +perft 4 209660 +perft 5 5411614 +perft 6 90548686 + +id gentest-2986 +epd 4r3/2k5/Pp4n1/2p3RP/2P5/6p1/6B1/3K2N1 b - - +perft 1 26 +perft 2 623 +perft 3 13247 +perft 4 327669 +perft 5 6536601 +perft 6 165059106 + +id gentest-2987 +epd 1k6/8/Pp4P1/2p3R1/2P1r3/6p1/6B1/3K2N1 w - - +perft 1 20 +perft 2 313 +perft 3 6795 +perft 4 97076 +perft 5 2247800 +perft 6 32715667 + +id gentest-2988 +epd 1k2r3/8/PpB3P1/2R5/2P5/6p1/8/3K2N1 b - - +perft 1 18 +perft 2 417 +perft 3 6250 +perft 4 154529 +perft 5 2260272 +perft 6 57459212 + +id gentest-2989 +epd 1k6/6r1/Pp4P1/2R5/2P5/6p1/6B1/3K2N1 w - - +perft 1 28 +perft 2 335 +perft 3 8823 +perft 4 115471 +perft 5 3041666 +perft 6 41493102 + +id gentest-2990 +epd 1k6/3r4/Pp4P1/3R4/2P1B3/6p1/8/3K2N1 b - - +perft 1 16 +perft 2 408 +perft 3 5829 +perft 4 164130 +perft 5 2270408 +perft 6 64432996 + +id gentest-2991 +epd 1k6/8/Pp4r1/3R4/2P1B3/5Np1/8/3K4 w - - +perft 1 33 +perft 2 446 +perft 3 14559 +perft 4 200985 +perft 5 6279483 +perft 6 90693740 + +id gentest-2992 +epd k7/P7/1p4r1/3R4/2P1B3/5Np1/8/2K5 b - - +perft 1 13 +perft 2 439 +perft 3 4180 +perft 4 136456 +perft 5 1622478 +perft 6 50844728 + +id gentest-2993 +epd 8/8/kp4r1/7R/2P1B3/5Np1/8/2K5 w - - +perft 1 37 +perft 2 434 +perft 3 14743 +perft 4 199320 +perft 5 6268727 +perft 6 91682558 + +id gentest-2994 +epd 8/7B/k7/1p5R/2P5/5Np1/8/2K5 b - - +perft 1 7 +perft 2 230 +perft 3 1701 +perft 4 51435 +perft 5 418157 +perft 6 12139825 + +id gentest-2995 +epd 8/7B/8/kp5R/2P5/8/6p1/2K1N3 w - - +perft 1 29 +perft 2 232 +perft 3 6380 +perft 4 69444 +perft 5 1819042 +perft 6 24159485 + +id gentest-2996 +epd 6BR/8/1k6/1p6/2P5/8/6p1/2K1N3 b - - +perft 1 13 +perft 2 275 +perft 3 3334 +perft 4 78822 +perft 5 1045553 +perft 6 25437122 + +id gentest-2997 +epd 6B1/7R/1k6/1p6/2P5/5n2/8/2K1N3 w - - +perft 1 27 +perft 2 355 +perft 3 9326 +perft 4 110096 +perft 5 2848712 +perft 6 32051406 + +id gentest-2998 +epd 6B1/R7/k7/1p6/2P5/5n2/8/2K1N3 b - - +perft 1 2 +perft 2 42 +perft 3 533 +perft 4 12036 +perft 5 135109 +perft 6 3107727 + +id gentest-2999 +epd 6B1/k7/8/8/1pP5/5n2/8/1K2N3 w - - +perft 1 14 +perft 2 185 +perft 3 2660 +perft 4 30709 +perft 5 470865 +perft 6 5259378 + +id gentest-3000 +epd 6B1/k7/8/2P5/1p1n4/3N4/8/1K6 b - - +perft 1 13 +perft 2 243 +perft 3 2831 +perft 4 50250 +perft 5 556161 +perft 6 9901646 + +id gentest-3001 +epd k5B1/8/4n3/2P1N3/1p6/8/8/1K6 w - - +perft 1 17 +perft 2 192 +perft 3 3499 +perft 4 34669 +perft 5 618670 +perft 6 6187787 + +id gentest-3002 +epd k5B1/4N3/4n3/2P5/8/1p6/8/1K6 b - - +perft 1 12 +perft 2 167 +perft 3 1596 +perft 4 25057 +perft 5 242741 +perft 6 3956287 + +id gentest-3003 +epd k7/4N3/2n5/2P5/2B5/1p6/8/1K6 w - - +perft 1 19 +perft 2 206 +perft 3 3743 +perft 4 33255 +perft 5 579546 +perft 6 5475787 + +id gentest-3004 +epd kn6/4N3/8/2P5/2B5/1p6/8/1K6 b - - +perft 1 6 +perft 2 120 +perft 3 898 +perft 4 16730 +perft 5 139234 +perft 6 2494469 + +id gentest-3005 +epd kn6/8/6N1/2P5/2B5/1p6/8/1K6 w - - +perft 1 20 +perft 2 112 +perft 3 2075 +perft 4 16276 +perft 5 293698 +perft 6 2526186 + +id gentest-3006 +epd k7/8/n5N1/2P5/8/1B6/1K6/8 b - - +perft 1 7 +perft 2 158 +perft 3 1260 +perft 4 25592 +perft 5 230262 +perft 6 4526868 + +id gentest-3007 +epd 2k5/8/n5N1/2P5/8/8/1K6/3B4 w - - +perft 1 22 +perft 2 183 +perft 3 3681 +perft 4 31673 +perft 5 608296 +perft 6 5573174 + +id gentest-3008 +epd 7N/3k4/n7/2P4B/8/8/1K6/8 b - - +perft 1 10 +perft 2 175 +perft 3 1637 +perft 4 27029 +perft 5 260689 +perft 6 4296707 + +id gentest-3009 +epd 7N/3k1B2/8/2P5/8/8/nK6/8 w - - +perft 1 17 +perft 2 129 +perft 3 2124 +perft 4 16697 +perft 5 271599 +perft 6 2344623 + +id gentest-3010 +epd 7N/2k5/8/2P5/8/8/B7/1K6 b - - +perft 1 6 +perft 2 77 +perft 3 402 +perft 4 6532 +perft 5 31453 +perft 6 534781 + +id gentest-3011 +epd 4k2N/8/4B3/2P5/8/8/8/1K6 w - - +perft 1 19 +perft 2 61 +perft 3 1074 +perft 4 4417 +perft 5 76688 +perft 6 334686 + +id gentest-3012 +epd 8/4k3/3NB3/2P5/8/8/8/1K6 b - - +perft 1 4 +perft 2 89 +perft 3 331 +perft 4 6576 +perft 5 33182 +perft 6 641205 + +id gentest-3013 +epd 8/4k3/3N4/2P5/6B1/8/8/1K6 w - - +perft 1 23 +perft 2 94 +perft 3 2008 +perft 4 8531 +perft 5 175944 +perft 6 903183 + +id gentest-3014 +epd 3k4/8/8/1NP5/6B1/8/8/K7 b - - +perft 1 2 +perft 2 38 +perft 3 176 +perft 4 3339 +perft 5 16281 +perft 6 310017 + +id gentest-3015 +epd 5k2/8/8/1NP5/6B1/8/8/1K6 w - - +perft 1 21 +perft 2 97 +perft 3 2015 +perft 4 11498 +perft 5 236519 +perft 6 1205724 + +id gentest-3016 +epd 8/2NB1k2/8/2P5/8/8/8/1K6 b - - +perft 1 6 +perft 2 126 +perft 3 693 +perft 4 13789 +perft 5 70909 +perft 6 1394421 + +id gentest-3017 +epd 8/2NB2k1/8/2P5/8/8/K7/8 w - - +perft 1 21 +perft 2 159 +perft 3 3185 +perft 4 15149 +perft 5 300453 +perft 6 1621375 + +id gentest-3018 +epd 4N2k/8/8/2P5/B7/8/K7/8 b - - +perft 1 2 +perft 2 32 +perft 3 129 +perft 4 2245 +perft 5 8944 +perft 6 162342 + +id gentest-3019 +epd 7k/8/5N2/2P5/B7/8/K7/8 w - - +perft 1 21 +perft 2 35 +perft 3 660 +perft 4 3467 +perft 5 65068 +perft 6 283258 + +id gentest-3020 +epd 8/6k1/8/2P5/B3N3/8/1K6/8 b - - +perft 1 7 +perft 2 161 +perft 3 752 +perft 4 16262 +perft 5 85768 +perft 6 1799356 + +id gentest-3021 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-3022 +epd rnbqkbnr/p1pppppp/1p6/8/8/N1P5/PP1PPPPP/R1BQKBNR b KQkq - +perft 1 21 +perft 2 483 +perft 3 11075 +perft 4 281870 +perft 5 6996150 +perft 6 194065920 + +id gentest-3023 +epd rnbqkbnr/p1p1p1pp/1p1p1p2/8/7P/N1P5/PP1PPPP1/R1BQKBNR w KQkq - +perft 1 24 +perft 2 624 +perft 3 16458 +perft 4 421449 +perft 5 12057698 +perft 6 313684316 + +id gentest-3024 +epd rnbq1bnr/p1pkp1pp/1p1p1p2/8/7P/N1P1P2R/PP1P1PP1/R1BQKBN1 b Q - +perft 1 22 +perft 2 768 +perft 3 16784 +perft 4 574252 +perft 5 13260905 +perft 6 452051376 + +id gentest-3025 +epd rnbq1bnr/2pk2pp/1p1p1p2/p3p3/7P/N1P1P3/PP1P1PP1/R1BQKBNR w Q - +perft 1 34 +perft 2 814 +perft 3 27380 +perft 4 697557 +perft 5 23552398 +perft 6 628659907 + +id gentest-3026 +epd rnbq1bnr/2pk2p1/1p1p1p2/pN2p2p/3P3P/2P1P3/PP3PP1/R1BQKBNR b Q - +perft 1 26 +perft 2 962 +perft 3 25534 +perft 4 944902 +perft 5 25812452 +perft 6 959704886 + +id gentest-3027 +epd rnbq1b1r/2pk2p1/1p1p1p1n/1N2p2p/p2P3P/2P1PQ2/PP3PP1/R1B1KBNR w Q - +perft 1 39 +perft 2 995 +perft 3 38274 +perft 4 1024011 +perft 5 39304543 +perft 6 1094593883 + +id gentest-3028 +epd r1bq1b1r/2pk2p1/np1p1p1n/1N2p2p/p2P3P/1PP1PQ2/P4PP1/1RB1KBNR b - - +perft 1 28 +perft 2 1162 +perft 3 31403 +perft 4 1277431 +perft 5 36225433 +perft 6 1458273384 + +id gentest-3029 +epd r1bq1b1r/2p3p1/np1pkp1n/1N2p2p/3P3P/1pP1PQ2/P3NPP1/1RB1KB1R w - - +perft 1 39 +perft 2 967 +perft 3 37011 +perft 4 992244 +perft 5 37539671 +perft 6 1071175430 + +id gentest-3030 +epd Q1bq1b1r/6p1/np1pkp1n/2p1p2p/3P3P/NpP1P3/P3NPP1/1RB1KB1R b - - +perft 1 31 +perft 2 1081 +perft 3 31054 +perft 4 1110407 +perft 5 32579451 +perft 6 1185865075 + +id gentest-3031 +epd 2bq1b1r/6p1/Qp1pkp2/2p4p/3p2nP/NpP1P3/P3NPP1/1RB1KB1R w - - +perft 1 35 +perft 2 1009 +perft 3 35795 +perft 4 1031772 +perft 5 36776700 +perft 6 1077726092 + +id gentest-3032 +epd Q1bq1b1r/6p1/1p1pkp2/2p4p/3p3P/NpP1n1N1/P4PP1/1RB1KB1R b - - +perft 1 33 +perft 2 1241 +perft 3 37573 +perft 4 1449489 +perft 5 43912198 +perft 6 1716878559 + +id gentest-3033 +epd Q1bq1b2/6pr/1p1pkp2/2p4p/3p3P/NpP3N1/P1n2PP1/1RB1KBR1 w - - +perft 1 4 +perft 2 112 +perft 3 4344 +perft 4 118677 +perft 5 4599531 +perft 6 129605371 + +id gentest-3034 +epd Q1bq1b2/6pr/1p1pkp2/2p4p/3p3P/N1P3N1/Pp3PP1/1RB1KBR1 b - - +perft 1 26 +perft 2 943 +perft 3 24020 +perft 4 881898 +perft 5 23273290 +perft 6 863238862 + +id gentest-3035 +epd 2bq1b2/5kp1/1p1p1p1r/2p4p/3pQ2P/N1P3N1/Pp3PP1/1RB1KBR1 w - - +perft 1 47 +perft 2 1152 +perft 3 46503 +perft 4 1229633 +perft 5 48248670 +perft 6 1334140479 + +id gentest-3036 +epd 2bq1b2/4k1p1/1p1p1p1r/2p2Q1N/3p3P/N1P5/Pp3PP1/1RB1KBR1 b - - +perft 1 25 +perft 2 1043 +perft 3 25886 +perft 4 1042258 +perft 5 27657634 +perft 6 1090994666 + +id gentest-3037 +epd 2bq1b2/4k3/1p3ppr/2pp1Q1N/3p3P/2P5/PpN2PP1/1RB1KBR1 w - - +perft 1 48 +perft 2 1167 +perft 3 50170 +perft 4 1316696 +perft 5 54670654 +perft 6 1524459278 + +id gentest-3038 +epd 2bq1b2/8/1p1k1ppr/2ppQ2N/3p3P/2P5/PpN1BPP1/1RB1K1R1 b - - +perft 1 4 +perft 2 184 +perft 3 4964 +perft 4 205245 +perft 5 5935558 +perft 6 237508881 + +id gentest-3039 +epd 3q1b2/3b4/1pk2ppr/2ppQ2N/3p3P/P1P5/1pN1BPP1/1RB1K1R1 w - - +perft 1 52 +perft 2 1359 +perft 3 62706 +perft 4 1755453 +perft 5 77385890 +perft 6 2278608084 + +id gentest-3040 +epd 3q1b2/3b4/Bpk2ppr/2ppQ2N/3p3P/P1P5/2NK1PP1/1Rr3R1 b - - +perft 1 32 +perft 2 1582 +perft 3 43927 +perft 4 2013647 +perft 5 58624017 +perft 6 2541942379 + +id gentest-3041 +epd 3qbb2/7r/Bpk2Np1/2ppQ3/3p3P/P1P5/2NK1PP1/1Rr3R1 w - - +perft 1 61 +perft 2 1858 +perft 3 95101 +perft 4 2817390 +perft 5 135245456 +perft 6 4046449515 + +id gentest-3042 +epd 3q1b2/5b1N/1pk3p1/2ppQ3/2Bp3P/P1P5/2NK1PP1/1Rr3R1 b - - +perft 1 31 +perft 2 1528 +perft 3 40472 +perft 4 1854380 +perft 5 50691981 +perft 6 2192374276 + +id gentest-3043 +epd 1q3b2/5b1N/1k4p1/2ppQ3/2Bp3P/P1P5/2NK1PP1/2r3R1 w - - +perft 1 52 +perft 2 1511 +perft 3 62498 +perft 4 1941375 +perft 5 76314627 +perft 6 2421451273 + +id gentest-3044 +epd 5b2/1q3b1N/1k4p1/2pp3Q/2Bp3P/P1P3P1/2NK1P2/2r3R1 b - - +perft 1 32 +perft 2 1104 +perft 3 36854 +perft 4 1276940 +perft 5 43058808 +perft 6 1491778478 + +id gentest-3045 +epd 5b2/1q3b1N/1k4p1/2pQ4/2Bp3P/P1P3P1/2NK1P2/2r3R1 w - - +perft 1 47 +perft 2 1330 +perft 3 54326 +perft 4 1712575 +perft 5 67940119 +perft 6 2226771234 + +id gentest-3046 +epd 5b2/1q3b1N/1k1Q4/2p3p1/2Bp3P/P1P3P1/2NK1P2/2r1R3 b - - +perft 1 4 +perft 2 208 +perft 3 7178 +perft 4 318006 +perft 5 11043563 +perft 6 460324563 + +id gentest-3047 +epd 5b2/k3qb1N/3Q4/2p3p1/2Bp3P/P1P3P1/2NK1P2/2r4R w - - +perft 1 51 +perft 2 1566 +perft 3 64268 +perft 4 2112861 +perft 5 85493292 +perft 6 2882252590 + +id gentest-3048 +epd 5b2/k3Q2N/8/2pb2p1/2Bp3P/P1P3P1/2NK1P2/2r4R b - - +perft 1 5 +perft 2 243 +perft 3 5729 +perft 4 235732 +perft 5 5620070 +perft 6 224106248 + +id gentest-3049 +epd 1k3b2/4Q2N/8/2pb2pP/2Bp4/P1P3P1/2NK1P2/3r3R w - - +perft 1 3 +perft 2 66 +perft 3 2869 +perft 4 52188 +perft 5 2199693 +perft 6 40496240 + +id gentest-3050 +epd 1k3b2/4Q3/4b3/2p3NP/2Bp4/P1P3P1/2N1KP2/3r3R b - - +perft 1 25 +perft 2 971 +perft 3 20619 +perft 4 828232 +perft 5 17488343 +perft 6 704451685 + +id gentest-3051 +epd 1k3b2/4Q3/8/2p3NP/2bp4/P1P2KP1/2N2P2/1r5R w - - +perft 1 46 +perft 2 1170 +perft 3 47460 +perft 4 1148562 +perft 5 44377163 +perft 6 1055713890 + +id gentest-3052 +epd 3Q1b2/k7/8/2p3NP/2bp4/P1P2KP1/2N2P1R/1r6 b - - +perft 1 33 +perft 2 1140 +perft 3 28032 +perft 4 989698 +perft 5 23480539 +perft 6 829213301 + +id gentest-3053 +epd k4b2/4Q3/8/2p3NP/2bp4/P1P2KP1/1rN2P1R/8 w - - +perft 1 41 +perft 2 956 +perft 3 34865 +perft 4 800379 +perft 5 28344267 +perft 6 653086791 + +id gentest-3054 +epd k4b2/8/8/2pb2NP/3p1K2/P1P1Q1P1/1rN2P1R/8 b - - +perft 1 32 +perft 2 1068 +perft 3 30180 +perft 4 1003136 +perft 5 27024460 +perft 6 899064161 + +id gentest-3055 +epd k4b2/8/8/2p3NP/4bK2/P1P1p1P1/1rN2PR1/8 w - - +perft 1 23 +perft 2 657 +perft 3 14296 +perft 4 402290 +perft 5 8606392 +perft 6 239957693 + +id gentest-3056 +epd k4b2/8/7N/7P/2p1bK2/P1P1p1P1/1rN2PR1/8 b - - +perft 1 31 +perft 2 572 +perft 3 17318 +perft 4 325256 +perft 5 9655540 +perft 6 186258618 + +id gentest-3057 +epd k7/8/5b1N/7P/2p1bKP1/P1P1p3/1rN2PR1/8 w - - +perft 1 18 +perft 2 591 +perft 3 10796 +perft 4 339525 +perft 5 6547572 +perft 6 198379269 + +id gentest-3058 +epd k7/8/5b1N/6PP/2pNbK2/PrP1p3/5PR1/8 b - - +perft 1 32 +perft 2 742 +perft 3 22353 +perft 4 511507 +perft 5 14865434 +perft 6 339075726 + +id gentest-3059 +epd k7/8/5b1N/6PP/2pNb1K1/2P1p3/5PR1/r7 w - - +perft 1 23 +perft 2 816 +perft 3 17908 +perft 4 583524 +perft 5 12747383 +perft 6 392587087 + +id gentest-3060 +epd k7/8/5P1N/5N1P/2p1b1K1/2P1p3/5PR1/2r5 b - - +perft 1 23 +perft 2 447 +perft 3 10324 +perft 4 211604 +perft 5 4820730 +perft 6 102608928 + +id gentest-3061 +epd k7/8/5P1N/7P/2pNb1K1/2P1p3/4rPR1/8 w - - +perft 1 23 +perft 2 469 +perft 3 10458 +perft 4 206449 +perft 5 4742871 +perft 6 97745564 + +id gentest-3062 +epd k7/8/5P1N/7P/2pNb2K/2P1p3/1r3PR1/8 b - - +perft 1 28 +perft 2 764 +perft 3 18656 +perft 4 488541 +perft 5 11315614 +perft 6 287252038 + +id gentest-3063 +epd 6R1/1k5b/5P1N/7P/2pN3K/2P1p3/1r3P2/8 w - - +perft 1 33 +perft 2 723 +perft 3 21611 +perft 4 467914 +perft 5 13112486 +perft 6 284295957 + +id gentest-3064 +epd 5R2/1k5b/5P1N/5N1P/2p4K/2P5/1r3p2/8 b - - +perft 1 21 +perft 2 453 +perft 3 9827 +perft 4 219086 +perft 5 5192347 +perft 6 115260378 + +id gentest-3065 +epd 3R4/1k5b/5P1N/5N1P/2p4K/2P5/1r6/2r5 w - - +perft 1 28 +perft 2 765 +perft 3 19091 +perft 4 531682 +perft 5 12871844 +perft 6 363928546 + +id gentest-3066 +epd 2R5/1k2N2b/5P1N/1r5P/2p4K/2P5/8/2r5 b - - +perft 1 31 +perft 2 700 +perft 3 19743 +perft 4 439894 +perft 5 12392732 +perft 6 276534401 + +id gentest-3067 +epd 2R5/1k2N2b/5P1N/6r1/2p3K1/2P5/8/2r5 w - - +perft 1 5 +perft 2 151 +perft 3 3291 +perft 4 90615 +perft 5 1946846 +perft 6 53567270 + +id gentest-3068 +epd 1R6/1k2N2b/5P1N/6r1/2p2K2/2P5/2r5/8 b - - +perft 1 4 +perft 2 98 +perft 3 2596 +perft 4 55759 +perft 5 1471510 +perft 6 31592687 + +id gentest-3069 +epd 7R/4N2b/k4P1N/6r1/2p2K2/2P5/3r4/8 w - - +perft 1 22 +perft 2 780 +perft 3 15253 +perft 4 483611 +perft 5 9916712 +perft 6 296763160 + +id gentest-3070 +epd 7R/7b/k4P1N/7r/1Np2K2/2P5/3r4/8 b - - +perft 1 5 +perft 2 115 +perft 3 3712 +perft 4 78314 +perft 5 2404354 +perft 6 51644430 + +id gentest-3071 +epd 5R2/1k6/5P1N/7r/1Np2K2/2Pb4/3r4/8 w - - +perft 1 23 +perft 2 655 +perft 3 14091 +perft 4 412188 +perft 5 8966675 +perft 6 263819355 + +id gentest-3072 +epd 5R1r/1k6/5P2/5N2/2p2K2/2PN4/3r4/8 b - - +perft 1 24 +perft 2 657 +perft 3 15109 +perft 4 394096 +perft 5 9334553 +perft 6 236339389 + +id gentest-3073 +epd 5R1r/8/2kN1P2/8/2p2K2/2PN4/7r/8 w - - +perft 1 32 +perft 2 767 +perft 3 20170 +perft 4 464582 +perft 5 11660840 +perft 6 269104659 + +id gentest-3074 +epd 5R1r/5N2/2k2P1r/8/2p2K2/2P5/8/4N3 b - - +perft 1 18 +perft 2 390 +perft 3 7081 +perft 4 153428 +perft 5 3054878 +perft 6 67169027 + +id gentest-3075 +epd 5R1r/k4N2/5P1r/8/2p5/2P3K1/8/4N3 w - - +perft 1 22 +perft 2 296 +perft 3 5790 +perft 4 101606 +perft 5 2114664 +perft 6 41102918 + +id gentest-3076 +epd 2r5/k4N2/5P1r/8/2p5/2P2K2/8/4N3 b - - +perft 1 24 +perft 2 371 +perft 3 8839 +perft 4 134122 +perft 5 3231339 +perft 6 49392412 + +id gentest-3077 +epd 2r5/k4Nr1/5P2/8/2p1K3/2P5/8/4N3 w - - +perft 1 18 +perft 2 437 +perft 3 6968 +perft 4 165221 +perft 5 2585316 +perft 6 61197764 + +id gentest-3078 +epd k1r5/5Nr1/5P2/8/2pK4/2P5/6N1/8 b - - +perft 1 20 +perft 2 267 +perft 3 5796 +perft 4 80510 +perft 5 1799798 +perft 6 25829268 + +id gentest-3079 +epd k7/2r2N2/5P2/6r1/2pK4/2P5/8/4N3 w - - +perft 1 12 +perft 2 292 +perft 3 3733 +perft 4 87408 +perft 5 1192532 +perft 6 27772309 + +id gentest-3080 +epd k5N1/8/2r2P2/6r1/2pK4/2P5/8/4N3 b - - +perft 1 25 +perft 2 218 +perft 3 5410 +perft 4 60445 +perft 5 1480797 +perft 6 18521977 + +id gentest-3081 +epd k7/8/5r1N/8/2pK4/2P5/6r1/4N3 w - - +perft 1 14 +perft 2 408 +perft 3 5203 +perft 4 141406 +perft 5 1871087 +perft 6 49686347 + +id gentest-3082 +epd k7/8/4r3/8/2pK2N1/2P2N2/6r1/8 b - - +perft 1 27 +perft 2 397 +perft 3 10475 +perft 4 152158 +perft 5 3991157 +perft 6 58412598 + +id gentest-3083 +epd k7/8/8/8/2pK4/2P1rN2/6r1/8 w - - +perft 1 11 +perft 2 292 +perft 3 2707 +perft 4 68578 +perft 5 677566 +perft 6 17317048 + +id gentest-3084 +epd k7/8/8/8/2pK4/2P1r3/4N3/8 b - - +perft 1 14 +perft 2 98 +perft 3 1433 +perft 4 13554 +perft 5 210531 +perft 6 2093674 + +id gentest-3085 +epd k7/8/8/3K4/2p4r/2P5/4N3/8 w - - +perft 1 10 +perft 2 137 +perft 3 1507 +perft 4 22573 +perft 5 246591 +perft 6 3844867 + +id gentest-3086 +epd k7/7r/8/8/2pK4/2P5/4N3/8 b - - +perft 1 17 +perft 2 151 +perft 3 2472 +perft 4 25505 +perft 5 417948 +perft 6 4367315 + +id gentest-3087 +epd k7/4r3/8/8/2pK4/2P5/8/6N1 w - - +perft 1 6 +perft 2 101 +perft 3 878 +perft 4 14118 +perft 5 135831 +perft 6 2182775 + +id gentest-3088 +epd k7/8/8/8/2pK4/2P1r3/8/2N5 b - - +perft 1 15 +perft 2 109 +perft 3 1649 +perft 4 14729 +perft 5 232835 +perft 6 2265700 + +id gentest-3089 +epd k7/7r/8/8/2pK4/2PN4/8/8 w - - +perft 1 14 +perft 2 242 +perft 3 2812 +perft 4 46150 +perft 5 520040 +perft 6 8431979 + +id gentest-3090 +epd k7/2r5/8/8/2p2K2/2PN4/8/8 b - - +perft 1 14 +perft 2 186 +perft 3 2837 +perft 4 35316 +perft 5 556155 +perft 6 6401857 + +id gentest-3091 +epd k7/r7/8/8/2p2K2/2P5/8/2N5 w - - +perft 1 12 +perft 2 181 +perft 3 1982 +perft 4 29839 +perft 5 321549 +perft 6 5052387 + +id gentest-3092 +epd k7/1r6/8/5K2/2p5/2PN4/8/8 b - - +perft 1 17 +perft 2 239 +perft 3 3751 +perft 4 46617 +perft 5 723196 +perft 6 8505951 + +id gentest-3093 +epd k5r1/8/8/6K1/2p5/2PN4/8/8 w - - +perft 1 6 +perft 2 102 +perft 3 1105 +perft 4 17816 +perft 5 188122 +perft 6 3018029 + +id gentest-3094 +epd k7/8/6r1/8/2p2K2/2P5/8/4N3 b - - +perft 1 17 +perft 2 159 +perft 3 2607 +perft 4 26347 +perft 5 433908 +perft 6 4597043 + +id gentest-3095 +epd k7/8/8/4K3/2p5/2P3r1/8/4N3 w - - +perft 1 12 +perft 2 176 +perft 3 1789 +perft 4 27517 +perft 5 291056 +perft 6 4665689 + +id gentest-3096 +epd k7/8/8/4K3/2p5/2P4r/1N6/8 b - - +perft 1 15 +perft 2 156 +perft 3 2492 +perft 4 25275 +perft 5 411735 +perft 6 4318568 + +id gentest-3097 +epd k7/4r3/8/8/2pK4/2P5/1N6/8 w - - +perft 1 7 +perft 2 120 +perft 3 1099 +perft 4 17357 +perft 5 174546 +perft 6 2772551 + +id gentest-3098 +epd k7/8/8/3K4/2N1r3/2P5/8/8 b - - +perft 1 15 +perft 2 160 +perft 3 2319 +perft 4 26421 +perft 5 402884 +perft 6 4605579 + +id gentest-3099 +epd k7/8/3N4/3K4/8/2P5/4r3/8 w - - +perft 1 13 +perft 2 210 +perft 3 2571 +perft 4 39067 +perft 5 463391 +perft 6 7119280 + +id gentest-3100 +epd k7/4r3/8/3KN3/8/2P5/8/8 b - - +perft 1 13 +perft 2 177 +perft 3 2656 +perft 4 33287 +perft 5 513333 +perft 6 6275457 + +id gentest-3101 +epd k7/8/3K4/7r/8/2P5/8/8 w - - +perft 1 6 +perft 2 99 +perft 3 673 +perft 4 10961 +perft 5 70744 +perft 6 1162259 + +id gentest-3102 +epd k7/8/4K3/8/8/2P5/8/7r b - - +perft 1 17 +perft 2 135 +perft 3 2287 +perft 4 17362 +perft 5 296075 +perft 6 2073934 + +id gentest-3103 +epd k7/8/8/5K1r/8/2P5/8/8 w - - +perft 1 6 +perft 2 102 +perft 3 646 +perft 4 10680 +perft 5 74536 +perft 6 1257616 + +id gentest-3104 +epd k7/8/8/3r4/2P3K1/8/8/8 b - - +perft 1 17 +perft 2 117 +perft 3 1887 +perft 4 12627 +perft 5 208714 +perft 6 1419030 + +id gentest-3105 +epd k7/1r6/8/7K/2P5/8/8/8 w - - +perft 1 6 +perft 2 96 +perft 3 614 +perft 4 9734 +perft 5 64490 +perft 6 1037711 + +id gentest-3106 +epd 8/kr6/8/8/2P3K1/8/8/8 b - - +perft 1 17 +perft 2 138 +perft 3 2346 +perft 4 16354 +perft 5 279667 +perft 6 1943696 + +id gentest-3107 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-3108 +epd rnbqkbnr/ppppp1pp/8/5p2/8/1P5P/P1PPPPP1/RNBQKBNR b KQkq - +perft 1 20 +perft 2 399 +perft 3 8921 +perft 4 198366 +perft 5 4891220 +perft 6 119561165 + +id gentest-3109 +epd rnbqkbnr/ppp1p1pp/8/3p1p2/6P1/1P5P/P1PPPP2/RNBQKBNR w KQkq - +perft 1 21 +perft 2 544 +perft 3 12608 +perft 4 348037 +perft 5 8754362 +perft 6 256143826 + +id gentest-3110 +epd rnbqkbnr/p1p1p1pp/1p6/3p1p2/PP4P1/7P/2PPPP2/RNBQKBNR b KQkq - +perft 1 27 +perft 2 591 +perft 3 16555 +perft 4 402435 +perft 5 11802075 +perft 6 310323955 + +id gentest-3111 +epd rnb1kbnr/p1p3pp/1p2pq2/3p1p2/PP4P1/5P1P/2PPP3/RNBQKBNR w KQkq - +perft 1 21 +perft 2 851 +perft 3 19098 +perft 4 746156 +perft 5 17976207 +perft 6 688334021 + +id gentest-3112 +epd rnbqkbnr/p1p3pp/1p2p3/3p1p2/PP4P1/B4P1P/2PPP1B1/RN1QK1NR b KQkq - +perft 1 35 +perft 2 710 +perft 3 24711 +perft 4 544797 +perft 5 19032671 +perft 6 452160773 + +id gentest-3113 +epd rnbqkbnr/6pp/1p2p3/p1pp1p2/PPP3P1/B4P1P/3PP1B1/RN1QK1NR w KQkq - +perft 1 23 +perft 2 800 +perft 3 19523 +perft 4 687211 +perft 5 18053564 +perft 6 641924053 + +id gentest-3114 +epd rnbq1bnr/4k1pp/Pp2p3/2pp1p2/P1P3P1/B4P1P/3PP1B1/RN1QK1NR b KQ - +perft 1 29 +perft 2 690 +perft 3 20601 +perft 4 533878 +perft 5 16716156 +perft 6 465106289 + +id gentest-3115 +epd rnbq1bnr/6pp/Pp1kp3/2p2p2/P1p3P1/B1N2P1P/3PP1B1/R2QK1NR w KQ - +perft 1 30 +perft 2 884 +perft 3 26866 +perft 4 815131 +perft 5 25834017 +perft 6 799405665 + +id gentest-3116 +epd rnb1qbnr/6pp/Pp1kp3/2p2p2/P1p3P1/BQN2P1P/3PPKB1/R5NR b - - +perft 1 35 +perft 2 1421 +perft 3 44754 +perft 4 1734554 +perft 5 54146397 +perft 6 2036202854 + +id gentest-3117 +epd rnb1qbnr/6pp/1p1kp3/2p2p2/P1p3P1/BQN1KP1P/3PP1B1/R5NR w - - +perft 1 36 +perft 2 1198 +perft 3 40819 +perft 4 1321505 +perft 5 44174131 +perft 6 1418008478 + +id gentest-3118 +epd 1nb1qbnr/6pp/1p1kp3/r1p2p2/PQp3P1/B1N2P1P/3PPKB1/R5NR b - - +perft 1 38 +perft 2 1366 +perft 3 45498 +perft 4 1594520 +perft 5 52075193 +perft 6 1810200283 + +id gentest-3119 +epd 1n2qbnr/4k1pp/bp2p3/r1p2p2/PQp1N1P1/B4P1P/3PPKB1/R5NR w - - +perft 1 36 +perft 2 1110 +perft 3 40453 +perft 4 1215286 +perft 5 44208165 +perft 6 1344248458 + +id gentest-3120 +epd 1n2qbnr/4k2p/bp2p1p1/r1p2p2/P1p1N1P1/BQ2KP1P/3PP1B1/R5NR b - - +perft 1 31 +perft 2 1094 +perft 3 33829 +perft 4 1152480 +perft 5 36314040 +perft 6 1215805162 + +id gentest-3121 +epd 1nq2bnr/3k3p/bp2p1p1/r1p2p2/P1p1N1P1/BQ2KP1P/3PP1B1/3R2NR w - - +perft 1 36 +perft 2 1040 +perft 3 35126 +perft 4 1057110 +perft 5 35499952 +perft 6 1114329327 + +id gentest-3122 +epd 1nq3nr/3k3p/bp2p1pb/r1p2p2/P1p1N1P1/BQ3P1P/3PPKB1/5RNR b - - +perft 1 32 +perft 2 1130 +perft 3 34531 +perft 4 1192914 +perft 5 38100296 +perft 6 1309400937 + +id gentest-3123 +epd 1nq3nr/3k3p/bp2p1p1/r1B5/P1p1pbP1/1Q3P1P/3PPKB1/5RNR w - - +perft 1 34 +perft 2 1273 +perft 3 38398 +perft 4 1448864 +perft 5 44164653 +perft 6 1681183753 + +id gentest-3124 +epd 1nq3nr/3k3p/bp2p1p1/r1B5/P3QbP1/2p2P1P/3PPKB1/5RNR b - - +perft 1 39 +perft 2 1327 +perft 3 46190 +perft 4 1519577 +perft 5 55595029 +perft 6 1810106530 + +id gentest-3125 +epd 1nq3nr/3k3p/1p2p1p1/r2b4/PB2QbP1/2p2P1P/3PPKB1/5RNR w - - +perft 1 32 +perft 2 1387 +perft 3 43354 +perft 4 1803452 +perft 5 57397171 +perft 6 2336546911 + +id gentest-3126 +epd 1nq3nr/3k3p/1p2p1p1/r2b4/PB3bP1/2Q2P1P/3pPKB1/5RNR b - - +perft 1 48 +perft 2 1518 +perft 3 65787 +perft 4 2032584 +perft 5 89347215 +perft 6 2738084317 + +id gentest-3127 +epd rnq2Bnr/3k3p/1p2p1p1/8/P4bP1/2Q2b1P/3pPKB1/5RNR w - - +perft 1 44 +perft 2 1708 +perft 3 62677 +perft 4 2499457 +perft 5 88464305 +perft 6 3593737986 + +id gentest-3128 +epd rnq2Bnr/3k3p/1p2p1p1/8/P4bP1/2Q2b1P/4PKB1/3r1RNR b - - +perft 1 53 +perft 2 2043 +perft 3 89897 +perft 4 3104258 +perft 5 136987678 +perft 6 4616426254 + +id gentest-3129 +epd rnq3nr/3k2Bp/1p2p1p1/8/P5P1/2Q4P/3bPKb1/3r1RNR w - - +perft 1 38 +perft 2 1574 +perft 3 52246 +perft 4 2226215 +perft 5 72963887 +perft 6 3151185804 + +id gentest-3130 +epd rnq4r/3kn2p/1p2p1p1/8/P2B2P1/7P/3bPKb1/2Qr1RNR b - - +perft 1 55 +perft 2 1644 +perft 3 82248 +perft 4 2420572 +perft 5 117705403 +perft 6 3548125247 + +id gentest-3131 +epd rn2k2r/4n2p/1p2p1p1/8/P2B2P1/2q4P/3bPKb1/3r1RNR w - - +perft 1 18 +perft 2 1052 +perft 3 18276 +perft 4 1024402 +perft 5 19487771 +perft 6 1060583108 + +id gentest-3132 +epd rn2k2r/4n2p/1p2p1p1/8/P2q2P1/4P2P/3b1KbR/3r1RN1 b - - +perft 1 61 +perft 2 706 +perft 3 39885 +perft 4 569813 +perft 5 30985287 +perft 6 497458497 + +id gentest-3133 +epd rn1qk1r1/4n2p/1p2p1p1/8/P5P1/4P2P/3b1KbR/3rR1N1 w - - +perft 1 14 +perft 2 636 +perft 3 8926 +perft 4 423337 +perft 5 6556030 +perft 6 318238971 + +id gentest-3134 +epd rn1qk1r1/4n2p/1p2p1p1/8/P3P1P1/7P/3bRKbR/1r4N1 b - - +perft 1 53 +perft 2 609 +perft 3 31821 +perft 4 451256 +perft 5 23343178 +perft 6 376736151 + +id gentest-3135 +epd r2qk1r1/4n2p/1pn1p3/6p1/P3P1P1/7P/3b1KbR/1r2R1N1 w - - +perft 1 16 +perft 2 863 +perft 3 13395 +perft 4 717581 +perft 5 11997659 +perft 6 639459710 + +id gentest-3136 +epd r3k1r1/4n2p/1pn1p3/6p1/P3P1P1/3q3P/3R1KbR/1r4N1 b - - +perft 1 65 +perft 2 876 +perft 3 51340 +perft 4 792288 +perft 5 43718322 +perft 6 734014624 + +id gentest-3137 +epd r3k1r1/7p/1pn1p3/5np1/P3P1P1/5N1P/3R1KbR/1r6 w - - +perft 1 26 +perft 2 1213 +perft 3 29587 +perft 4 1311047 +perft 5 30947814 +perft 6 1316433117 + +id gentest-3138 +epd r2nk1r1/7p/1p2p3/5Pp1/P5P1/5N1P/3RK1bR/1r6 b - - +perft 1 36 +perft 2 835 +perft 3 29316 +perft 4 698174 +perft 5 24774450 +perft 6 597172214 + +id gentest-3139 +epd r2nkr2/7p/1p2p3/5Pp1/P5P1/5b1P/1R2K2R/1r6 w - - +perft 1 5 +perft 2 186 +perft 3 4024 +perft 4 153188 +perft 5 3266284 +perft 6 124130533 + +id gentest-3140 +epd r2n1r2/4k2p/1p2p3/5Pp1/P5P1/5b1P/1R1K2R1/1r6 b - - +perft 1 41 +perft 2 779 +perft 3 31246 +perft 4 641547 +perft 5 25675183 +perft 6 545749568 + +id gentest-3141 +epd r2n1r2/4k2p/1p6/5pp1/P5P1/7P/1R1Kb3/1r6 w - - +perft 1 14 +perft 2 583 +perft 3 8830 +perft 4 352301 +perft 5 5464942 +perft 6 213224084 + +id gentest-3142 +epd r4r2/4k2p/1p2n3/5pp1/P5P1/4K2P/4b3/1R6 b - - +perft 1 41 +perft 2 721 +perft 3 28309 +perft 4 476612 +perft 5 17828829 +perft 6 297055350 + +id gentest-3143 +epd 7r/r3k2p/1p2n3/5pp1/P5P1/4K2P/4b3/7R w - - +perft 1 14 +perft 2 564 +perft 3 8971 +perft 4 345665 +perft 5 5607836 +perft 6 207980606 + +id gentest-3144 +epd 7r/r3k2p/4n3/1p3pp1/P5P1/7P/4K2R/8 b - - +perft 1 34 +perft 2 479 +perft 3 16018 +perft 4 244014 +perft 5 7903507 +perft 6 125795564 + +id gentest-3145 +epd r7/4k2p/4n3/1p3pp1/r5PP/8/4K2R/8 w - - +perft 1 15 +perft 2 627 +perft 3 9656 +perft 4 373735 +perft 5 5844459 +perft 6 212760779 + +id gentest-3146 +epd r3k3/7p/4n3/1p3pp1/r5PP/5K1R/8/8 b - - +perft 1 36 +perft 2 354 +perft 3 12521 +perft 4 162314 +perft 5 5616306 +perft 6 83099207 + +id gentest-3147 +epd r3k3/7p/8/1pn2pp1/2r3PP/5K2/7R/8 w - - +perft 1 17 +perft 2 608 +perft 3 8949 +perft 4 322512 +perft 5 4800610 +perft 6 169837332 + +id gentest-3148 +epd r3k3/7p/8/1pn2pp1/4r1PP/4RK2/8/8 b - - +perft 1 32 +perft 2 418 +perft 3 13625 +perft 4 194169 +perft 5 6534813 +perft 6 100015598 + +id gentest-3149 +epd r7/3k3p/8/1p3pp1/4r1PP/3n1K2/4R3/8 w - - +perft 1 15 +perft 2 697 +perft 3 9944 +perft 4 403128 +perft 5 5913187 +perft 6 221422631 + +id gentest-3150 +epd 8/3k3p/8/rp3Pp1/4r2P/3n1K2/8/4R3 b - - +perft 1 41 +perft 2 616 +perft 3 22135 +perft 4 335827 +perft 5 11476808 +perft 6 175679212 + +id gentest-3151 +epd 8/3k3p/8/rpn2Pp1/7P/5K2/4r3/5R2 w - - +perft 1 14 +perft 2 506 +perft 3 7304 +perft 4 252258 +perft 5 3745555 +perft 6 124957728 + +id gentest-3152 +epd 8/3k4/5P1p/rpn3p1/7P/5K2/4rR2/8 b - - +perft 1 37 +perft 2 399 +perft 3 13419 +perft 4 181638 +perft 5 5844975 +perft 6 87657554 + +id gentest-3153 +epd 8/3k4/n4P1p/rp4p1/7P/8/2r2RK1/8 w - - +perft 1 13 +perft 2 357 +perft 3 5169 +perft 4 139712 +perft 5 2160150 +perft 6 58437524 + +id gentest-3154 +epd 8/3k4/n4P1p/1p4p1/7P/8/2r2RK1/r7 b - - +perft 1 38 +perft 2 408 +perft 3 13073 +perft 4 177984 +perft 5 5507205 +perft 6 83658944 + +id gentest-3155 +epd 8/8/n3kP1p/1p6/6pP/8/2rR2K1/r7 w - - +perft 1 8 +perft 2 226 +perft 3 2593 +perft 4 70726 +perft 5 1018178 +perft 6 27583092 + +id gentest-3156 +epd 8/8/n3kP1p/rp6/6pP/8/2r2R2/6K1 b - - +perft 1 28 +perft 2 394 +perft 3 10816 +perft 4 147308 +perft 5 4022816 +perft 6 57464767 + +id gentest-3157 +epd 8/8/4kP1p/rpr5/1n4pP/8/1R6/6K1 w - - +perft 1 17 +perft 2 538 +perft 3 8357 +perft 4 253881 +perft 5 3932585 +perft 6 117977134 + +id gentest-3158 +epd 8/8/4kP1p/rpr5/6pP/8/2n5/6KR b - - +perft 1 33 +perft 2 249 +perft 3 8316 +perft 4 96887 +perft 5 3094316 +perft 6 41509935 + +id gentest-3159 +epd 8/8/5k1p/rp4r1/6pP/8/2n2K2/7R w - - +perft 1 16 +perft 2 469 +perft 3 6640 +perft 4 190295 +perft 5 2741112 +perft 6 79086911 + +id gentest-3160 +epd 6r1/8/5k1p/rp6/6pP/8/2n1K2R/8 b - - +perft 1 33 +perft 2 322 +perft 3 9879 +perft 4 114875 +perft 5 3561498 +perft 6 44966110 + +id gentest-3161 +epd 3r4/8/4k2p/rp6/6pP/7R/2n1K3/8 w - - +perft 1 12 +perft 2 417 +perft 3 5688 +perft 4 186396 +perft 5 2589456 +perft 6 82067133 + +id gentest-3162 +epd 8/8/4k2p/rp5P/3r2p1/2R5/2n1K3/8 b - - +perft 1 34 +perft 2 500 +perft 3 14686 +perft 4 200987 +perft 5 5874701 +perft 6 79479462 + +id gentest-3163 +epd 8/8/4k2p/rp1r3P/6p1/n1R1K3/8/8 w - - +perft 1 14 +perft 2 360 +perft 3 5236 +perft 4 134308 +perft 5 1913147 +perft 6 50015253 + +id gentest-3164 +epd 5R2/8/4k2p/rp5r/6p1/n3K3/8/8 b - - +perft 1 23 +perft 2 402 +perft 3 9453 +perft 4 147999 +perft 5 3687591 +perft 6 55240699 + +id gentest-3165 +epd 7R/4k3/7p/1p5r/r5p1/n3K3/8/8 w - - +perft 1 13 +perft 2 318 +perft 3 4348 +perft 4 113035 +perft 5 1588127 +perft 6 42230029 + +id gentest-3166 +epd 8/4k3/7R/1p4r1/r5p1/n2K4/8/8 b - - +perft 1 27 +perft 2 451 +perft 3 11739 +perft 4 176745 +perft 5 4712478 +perft 6 69353056 + +id gentest-3167 +epd 8/4k3/8/1p4r1/2n3pR/3K4/8/r7 w - - +perft 1 13 +perft 2 482 +perft 3 6486 +perft 4 223030 +perft 5 3160005 +perft 6 103583675 + +id gentest-3168 +epd 8/8/3k4/1p4r1/2nK2p1/7R/8/r7 b - - +perft 1 37 +perft 2 572 +perft 3 18934 +perft 4 255584 +perft 5 8228446 +perft 6 111087822 + +id gentest-3169 +epd 8/8/3k2r1/1p6/r1nK2p1/5R2/8/8 w - - +perft 1 17 +perft 2 455 +perft 3 5524 +perft 4 160404 +perft 5 2131945 +perft 6 64028917 + +id gentest-3170 +epd 8/8/3k2r1/1p6/2nK2p1/5R2/r7/8 b - - +perft 1 35 +perft 2 565 +perft 3 17629 +perft 4 249894 +perft 5 7728285 +perft 6 107897526 + +id gentest-3171 +epd 5R2/8/3k2r1/1p6/2nK2p1/8/6r1/8 w - - +perft 1 17 +perft 2 439 +perft 3 6636 +perft 4 180903 +perft 5 2591961 +perft 6 73304483 + +id gentest-3172 +epd R7/8/3k4/1p4r1/2n3p1/2K5/6r1/8 b - - +perft 1 34 +perft 2 552 +perft 3 16670 +perft 4 233149 +perft 5 6940852 +perft 6 93515748 + +id gentest-3173 +epd 8/8/1n1k4/Rp4r1/6p1/2K5/r7/8 w - - +perft 1 11 +perft 2 364 +perft 3 4337 +perft 4 132802 +perft 5 1711050 +perft 6 50739295 + +id gentest-3174 +epd 8/R7/1n1k4/1p4r1/6p1/1K6/6r1/8 b - - +perft 1 30 +perft 2 469 +perft 3 13860 +perft 4 185397 +perft 5 5446448 +perft 6 72748446 + +id gentest-3175 +epd R7/8/8/1pkn2r1/6p1/1K6/6r1/8 w - - +perft 1 15 +perft 2 405 +perft 3 4948 +perft 4 135946 +perft 5 1696877 +perft 6 47657535 + +id gentest-3176 +epd 8/8/8/1pkn2r1/6p1/1K6/8/4R1r1 b - - +perft 1 25 +perft 2 392 +perft 3 10330 +perft 4 155583 +perft 5 4313376 +perft 6 61791963 + +id gentest-3177 +epd 6r1/8/8/1p1n4/3k2p1/1K6/8/2R3r1 w - - +perft 1 17 +perft 2 477 +perft 3 6935 +perft 4 203343 +perft 5 2882448 +perft 6 85766865 + +id gentest-3178 +epd 8/6r1/8/1p1n4/3k2p1/8/8/K1R3r1 b - - +perft 1 31 +perft 2 242 +perft 3 6852 +perft 4 72974 +perft 5 2074697 +perft 6 25485400 + +id gentest-3179 +epd 8/6r1/8/1p6/4k1p1/4n3/8/K4Rr1 w - - +perft 1 8 +perft 2 227 +perft 3 2290 +perft 4 64038 +perft 5 749574 +perft 6 20958996 + +id gentest-3180 +epd 8/r7/8/1p6/4k1p1/4n3/8/1K4R1 b - - +perft 1 30 +perft 2 303 +perft 3 7540 +perft 4 93462 +perft 5 2247977 +perft 6 30744137 + +id gentest-3181 +epd 8/r7/8/1p6/4k3/6p1/6n1/1K1R4 w - - +perft 1 15 +perft 2 328 +perft 3 4916 +perft 4 105431 +perft 5 1612171 +perft 6 34609660 + +id gentest-3182 +epd 8/7r/8/1p6/4k3/6p1/1K4n1/5R2 b - - +perft 1 24 +perft 2 506 +perft 3 10897 +perft 4 190062 +perft 5 4089440 +perft 6 66402342 + +id gentest-3183 +epd 8/7r/8/1pk5/8/6p1/6n1/1K3R2 w - - +perft 1 17 +perft 2 388 +perft 3 6514 +perft 4 142322 +perft 5 2308547 +perft 6 49584030 + +id gentest-3184 +epd 8/8/8/1pk5/8/4R1p1/6nr/1K6 b - - +perft 1 19 +perft 2 303 +perft 3 5837 +perft 4 92909 +perft 5 1885062 +perft 6 29650929 + +id gentest-3185 +epd 7r/8/8/1pk5/8/4n1p1/8/K7 w - - +perft 1 3 +perft 2 93 +perft 3 469 +perft 4 13558 +perft 5 54668 +perft 6 1517205 + +id gentest-3186 +epd 8/8/8/1pk5/8/4n1pr/8/1K6 b - - +perft 1 24 +perft 2 97 +perft 3 2383 +perft 4 10290 +perft 5 259078 +perft 6 1139650 + +id gentest-3187 +epd 8/8/1k6/1p5r/8/4n1p1/K7/8 w - - +perft 1 5 +perft 2 145 +perft 3 642 +perft 4 17630 +perft 5 80389 +perft 6 2153406 + +id gentest-3188 +epd 8/8/1k6/1p6/8/K3n1p1/7r/8 b - - +perft 1 31 +perft 2 78 +perft 3 2121 +perft 4 8544 +perft 5 229192 +perft 6 935173 + +id gentest-3189 +epd 8/8/1k6/1p6/1K6/4n1p1/5r2/8 w - - +perft 1 3 +perft 2 93 +perft 3 300 +perft 4 8304 +perft 5 32597 +perft 6 877956 + +id gentest-3190 +epd 8/8/1k6/1p6/8/K3n1p1/4r3/8 b - - +perft 1 25 +perft 2 51 +perft 3 1287 +perft 4 4210 +perft 5 107892 +perft 6 389618 + +id gentest-3191 +epd 8/8/1k6/3n4/1K6/6p1/4r3/8 w - - +perft 1 4 +perft 2 116 +perft 3 375 +perft 4 10232 +perft 5 40743 +perft 6 1073664 + +id gentest-3192 +epd 8/8/1k6/8/1n6/1K4p1/4r3/8 b - - +perft 1 29 +perft 2 130 +perft 3 3352 +perft 4 12769 +perft 5 316378 +perft 6 1397906 + +id gentest-3193 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-3194 +epd rnbqkbnr/pp1ppppp/8/2p5/2P5/7P/PP1PPPP1/RNBQKBNR b KQkq - +perft 1 21 +perft 2 420 +perft 3 9998 +perft 4 229003 +perft 5 5989877 +perft 6 151861033 + +id gentest-3195 +epd r1bqkbnr/pp2pppp/2n5/2pp4/2P5/P6P/1P1PPPP1/RNBQKBNR w KQkq - +perft 1 20 +perft 2 656 +perft 3 15096 +perft 4 510637 +perft 5 12977723 +perft 6 450355960 + +id gentest-3196 +epd r1bqkbnr/pp2pppp/2n5/2p5/2PpP3/PQ5P/1P1P1PP1/RNB1KBNR b KQkq - +perft 1 32 +perft 2 952 +perft 3 31262 +perft 4 888903 +perft 5 29627557 +perft 6 839159302 + +id gentest-3197 +epd 1r1qkbnr/pp2pppp/1Qn1b3/2p5/2PpP3/P6P/1P1P1PP1/RNB1KBNR w KQk - +perft 1 30 +perft 2 880 +perft 3 26345 +perft 4 792849 +perft 5 23948550 +perft 6 740647551 + +id gentest-3198 +epd 1r1qkbnr/1p2pppp/1pn1b3/2p5/2PpP3/P2P2PP/1P3P2/RNB1KBNR b KQk - +perft 1 28 +perft 2 678 +perft 3 19624 +perft 4 487367 +perft 5 14651136 +perft 6 374249525 + +id gentest-3199 +epd 1r1qkbnr/1p1bpppp/1pn5/2p5/2PpP3/P2P2PP/1P1N1P2/R1B1KBNR w KQk - +perft 1 20 +perft 2 479 +perft 3 10151 +perft 4 269333 +perft 5 6066856 +perft 6 171852624 + +id gentest-3200 +epd 1r1qkbnr/1p1bppp1/1pn5/2p4p/2PpP3/PN1P1PPP/1P6/R1B1KBNR b KQk - +perft 1 25 +perft 2 604 +perft 3 16810 +perft 4 426538 +perft 5 12665804 +perft 6 333569116 + +id gentest-3201 +epd 1rbqkb1r/1p2ppp1/1pn2n2/2p4p/2PpP3/PN1P1PPP/1P2K3/R1B2BNR w k - +perft 1 22 +perft 2 663 +perft 3 15826 +perft 4 485646 +perft 5 12185004 +perft 6 385589671 + +id gentest-3202 +epd 1rb1kb1r/1p1qppp1/1pn2n2/2p1P2p/2Pp3P/PN1P1PP1/1P2K3/R1B2BNR b k - +perft 1 27 +perft 2 668 +perft 3 19382 +perft 4 494015 +perft 5 14890234 +perft 6 389490432 + +id gentest-3203 +epd 1rb1k2r/1p1qppb1/1pn1Pnp1/2p4p/2Pp3P/PN1P1PP1/1P2K3/R1B2BNR w k - +perft 1 25 +perft 2 658 +perft 3 16882 +perft 4 472305 +perft 5 12524543 +perft 6 367063294 + +id gentest-3204 +epd 1rb2rk1/1p1qppb1/1pn1Pnp1/2p4p/2Pp3P/PN1PBPP1/1P6/R2K1BNR b - - +perft 1 27 +perft 2 852 +perft 3 24004 +perft 4 727414 +perft 5 21654124 +perft 6 641220479 + +id gentest-3205 +epd 1rb2rk1/np2ppb1/1p1qPnp1/2p4p/2Pp3P/PN1PBPP1/1P2N3/R2K1B1R w - - +perft 1 34 +perft 2 992 +perft 3 32236 +perft 4 983237 +perft 5 31063998 +perft 6 988167155 + +id gentest-3206 +epd 1rb2rk1/np1qppb1/1p2Pnp1/2p4p/2Pp1N1P/P2PBPP1/1P1N4/R2K1B1R b - - +perft 1 27 +perft 2 808 +perft 3 22196 +perft 4 674002 +perft 5 19294407 +perft 6 588150242 + +id gentest-3207 +epd 1rb2rk1/np1qppb1/1p3np1/2p4p/2Pp1N1P/P2PBPP1/1P1NB3/R2K3R w - - +perft 1 29 +perft 2 896 +perft 3 25976 +perft 4 817022 +perft 5 23980614 +perft 6 774103636 + +id gentest-3208 +epd 1rbq1rk1/np2ppb1/1p3np1/2p4p/P1Pp1N1P/3PBPP1/RP1NB3/3K3R b - - +perft 1 29 +perft 2 819 +perft 3 24869 +perft 4 724536 +perft 5 22872155 +perft 6 678797034 + +id gentest-3209 +epd 1r1q1rk1/np1bpp2/1p3npb/2p4p/P1PB1N1P/3P1PP1/RP1NB3/3K3R w - - +perft 1 32 +perft 2 1084 +perft 3 34300 +perft 4 1150681 +perft 5 36466996 +perft 6 1237981790 + +id gentest-3210 +epd 1r1q1rk1/np2pp2/1p3npb/2p2b1p/P1PB1N1P/3P1PP1/1P1NB3/2RK3R b - - +perft 1 37 +perft 2 1227 +perft 3 44443 +perft 4 1438454 +perft 5 52523178 +perft 6 1666146100 + +id gentest-3211 +epd 1r3rk1/npq1ppb1/1p3np1/2p2b1p/P1PB1N1P/3P1PP1/1P1NB3/2RKR3 w - - +perft 1 30 +perft 2 1165 +perft 3 35147 +perft 4 1346038 +perft 5 40561965 +perft 6 1552867317 + +id gentest-3212 +epd 1r3rk1/np2ppb1/1p3np1/2p2b1p/PPPB1q1P/3P1PP1/3NB3/1R1KR3 b - - +perft 1 46 +perft 2 1212 +perft 3 53387 +perft 4 1391741 +perft 5 59661069 +perft 6 1569462627 + +id gentest-3213 +epd 1r3rk1/np2ppb1/1p3np1/2p2b1p/PPq1N2P/3P1PP1/4B3/1R1KR3 w - - +perft 1 23 +perft 2 981 +perft 3 20855 +perft 4 892739 +perft 5 19469247 +perft 6 833297650 + +id gentest-3214 +epd 1rN2rk1/np2ppb1/1p3np1/1qp2b1p/PP5P/3P1PP1/4B3/1R1KR3 b - - +perft 1 38 +perft 2 743 +perft 3 27830 +perft 4 579465 +perft 5 22465455 +perft 6 493931574 + +id gentest-3215 +epd 1r3rk1/np2p1b1/1p1N1pp1/1qpn1b1p/PP5P/3P1PP1/4B3/1R1KR3 w - - +perft 1 25 +perft 2 1004 +perft 3 23108 +perft 4 903575 +perft 5 21423460 +perft 6 831490058 + +id gentest-3216 +epd 1r2Nrk1/np2p1b1/1p3pp1/1qpn3p/PP5P/1R1P1PPb/4B3/3KR3 b - - +perft 1 40 +perft 2 762 +perft 3 29018 +perft 4 604652 +perft 5 23229351 +perft 6 519467092 + +id gentest-3217 +epd 1r2rbk1/np2p3/1p3pp1/1qpn3p/PP5P/3P1PPb/1R2B3/3KR3 w - - +perft 1 18 +perft 2 697 +perft 3 12522 +perft 4 481141 +perft 5 9388288 +perft 6 361353278 + +id gentest-3218 +epd 1r2rb2/np2p1k1/1p3pp1/Pqpn3p/1P5P/3P1PPb/1R2B3/2K1R3 b - - +perft 1 39 +perft 2 793 +perft 3 31100 +perft 4 653338 +perft 5 25769350 +perft 6 562272495 + +id gentest-3219 +epd 1r2rbk1/np2p3/1p3pp1/Pqp4p/1P5P/3PnPPb/1R2B3/2K2R2 w - - +perft 1 19 +perft 2 818 +perft 3 16244 +perft 4 690430 +perft 5 14189011 +perft 6 601420216 + +id gentest-3220 +epd 1r2rbk1/np2p3/1pq2pp1/P1p4p/1P3P1P/3Pn1Pb/1R1KB3/5R2 b - - +perft 1 48 +perft 2 1270 +perft 3 58144 +perft 4 1492193 +perft 5 66397741 +perft 6 1686434236 + +id gentest-3221 +epd 1r2rbk1/np2p3/1P3pp1/2p4p/1P3P1P/3Pn1Pb/1R1KB1q1/5R2 w - - +perft 1 23 +perft 2 970 +perft 3 21263 +perft 4 897176 +perft 5 20288294 +perft 6 854560391 + +id gentest-3222 +epd 1r2rbk1/np2p3/1P3pp1/2p4p/1P3PnP/3P2Pb/1R1KB1q1/R7 b - - +perft 1 36 +perft 2 976 +perft 3 36679 +perft 4 887761 +perft 5 34403946 +perft 6 826666301 + +id gentest-3223 +epd 1r2rbk1/np2p3/1P3ppn/2p4p/RP3P1P/3P2Pb/1R1KB3/5q2 w - - +perft 1 24 +perft 2 936 +perft 3 20877 +perft 4 807762 +perft 5 18617727 +perft 6 722245471 + +id gentest-3224 +epd 1r1r1bk1/np2p3/1P3ppn/1Pp4p/R4PPP/3P3b/1R1KB3/5q2 b - - +perft 1 40 +perft 2 896 +perft 3 36305 +perft 4 800863 +perft 5 32598813 +perft 6 730867935 + +id gentest-3225 +epd 1r1r1bk1/np2p3/1P3ppn/1Pp4p/R4P1P/3P1b2/1R1K4/5q2 w - - +perft 1 21 +perft 2 941 +perft 3 15888 +perft 4 709036 +perft 5 12368546 +perft 6 547981557 + +id gentest-3226 +epd 1r1r1bk1/1p2p3/1Pn2ppn/1Pp4p/R2P1P1P/5b2/R2K4/5q2 b - - +perft 1 48 +perft 2 694 +perft 3 33170 +perft 4 543036 +perft 5 25740566 +perft 6 446147572 + +id gentest-3227 +epd 1r1r1bk1/1p2p3/1Pn2ppn/1Pp4p/R2P1P1P/R7/3K4/q2b4 w - - +perft 1 21 +perft 2 832 +perft 3 15952 +perft 4 658495 +perft 5 12351002 +perft 6 519062266 + +id gentest-3228 +epd 1r1r1bk1/1p2p3/1P3ppn/1Pp4p/1n1P1P1P/1R6/3K4/R2b4 b - - +perft 1 33 +perft 2 861 +perft 3 28710 +perft 4 671269 +perft 5 22502907 +perft 6 505418045 + +id gentest-3229 +epd 1r1r1b2/1p2p2k/1P3ppn/1Pp4p/1n1P1P1P/5b2/3K4/R7 w - - +perft 1 20 +perft 2 718 +perft 3 11356 +perft 4 401411 +perft 5 6117360 +perft 6 214348651 + +id gentest-3230 +epd 1r1r1bn1/1p2p2k/RP3pp1/1Pp4p/1n1P1P1P/5b2/3K4/8 b - - +perft 1 35 +perft 2 452 +perft 3 15338 +perft 4 216321 +perft 5 7199461 +perft 6 105773343 + +id gentest-3231 +epd 1r1r1bn1/1p2p2k/1P3pp1/1Ppb3p/1n1P1P1P/8/R2K4/8 w - - +perft 1 17 +perft 2 560 +perft 3 9383 +perft 4 309114 +perft 5 4848443 +perft 6 158948577 + +id gentest-3232 +epd 1rr2bn1/1p2p2k/1P3pp1/1PPb3p/1n3P1P/8/R7/4K3 b - - +perft 1 31 +perft 2 585 +perft 3 18128 +perft 4 290674 +perft 5 9060060 +perft 6 141733021 + +id gentest-3233 +epd 1rr3n1/1p5k/1P2ppp1/1Pbb3p/1n3P1P/8/R3K3/8 w - - +perft 1 15 +perft 2 527 +perft 3 7441 +perft 4 270014 +perft 5 3760929 +perft 6 138277672 + +id gentest-3234 +epd 1rr3n1/1p5k/1P2p1p1/1Pbb1p1p/1n3P1P/8/5R2/3K4 b - - +perft 1 34 +perft 2 413 +perft 3 14925 +perft 4 181833 +perft 5 6731267 +perft 6 83958736 + +id gentest-3235 +epd 1rr3n1/1p5k/1P2p1p1/1Pb2p1p/1n3P1P/8/1R6/3K3b w - - +perft 1 14 +perft 2 452 +perft 3 5642 +perft 4 193453 +perft 5 2452052 +perft 6 86594727 + +id gentest-3236 +epd 1rr3n1/1p5k/1Pn1p1p1/1Pb2p1p/5P1P/1R6/2K5/7b b - - +perft 1 34 +perft 2 561 +perft 3 18854 +perft 4 277457 +perft 5 9514087 +perft 6 141493176 + +id gentest-3237 +epd r1r3n1/1p5k/1PP1p1p1/5p1p/5P1P/1R6/2K2b2/7b w - - +perft 1 19 +perft 2 673 +perft 3 10908 +perft 4 396562 +perft 5 6264041 +perft 6 230909292 + +id gentest-3238 +epd r1r3n1/1p5k/1PP1p1p1/5p1p/R4P1P/6b1/2K5/7b b - - +perft 1 30 +perft 2 556 +perft 3 17763 +perft 4 303305 +perft 5 10094177 +perft 6 163756332 + +id gentest-3239 +epd r1r4k/1pP1n3/1P2p1p1/5p1p/R4P1P/6b1/2K5/7b w - - +perft 1 19 +perft 2 558 +perft 3 9507 +perft 4 295666 +perft 5 4867621 +perft 6 155465748 + +id gentest-3240 +epd r6k/1pr1n3/1P2p1p1/5p1p/5P1P/6b1/R2K4/7b b - - +perft 1 39 +perft 2 468 +perft 3 16907 +perft 4 232909 +perft 5 8391395 +perft 6 114539108 + +id gentest-3241 +epd 7k/1pr1n3/rP2p1p1/5p1p/5P1P/6b1/R7/3K3b w - - +perft 1 15 +perft 2 496 +perft 3 5985 +perft 4 204027 +perft 5 2545578 +perft 6 87584988 + +id gentest-3242 +epd 7k/1pr1n3/rP2p1p1/5p1p/R4P1P/5bb1/3K4/8 b - - +perft 1 35 +perft 2 391 +perft 3 14074 +perft 4 167327 +perft 5 5994813 +perft 6 74317975 + +id gentest-3243 +epd 7k/rpr1n3/1P2p1p1/5p1p/5b1P/5b2/R2K4/8 w - - +perft 1 2 +perft 2 80 +perft 3 1156 +perft 4 45698 +perft 5 592263 +perft 6 23022965 + +id gentest-3244 +epd 7k/rpr5/1P2p1p1/R2n1p1p/5b1P/5b2/8/4K3 b - - +perft 1 41 +perft 2 495 +perft 3 20591 +perft 4 257050 +perft 5 10288113 +perft 6 134134258 + +id gentest-3245 +epd 7k/rp6/1P2p1p1/2Rn1p1p/5b1P/2r5/6b1/4K3 w - - +perft 1 12 +perft 2 484 +perft 3 5919 +perft 4 232781 +perft 5 2956875 +perft 6 113343168 + +id gentest-3246 +epd 8/rp4k1/1PR1p1p1/3n1p1p/5b1P/2r5/4K1b1/8 b - - +perft 1 51 +perft 2 521 +perft 3 22955 +perft 4 272382 +perft 5 11356256 +perft 6 145946006 + +id gentest-3247 +epd 8/rp4k1/1P2pnp1/5p1p/2R4P/2r5/3bK1b1/8 w - - +perft 1 15 +perft 2 654 +perft 3 8966 +perft 4 385762 +perft 5 5206946 +perft 6 216282515 + +id gentest-3248 +epd 7k/Pp6/4pnp1/5p1p/5R1P/2r5/3bK1b1/8 b - - +perft 1 39 +perft 2 606 +perft 3 21719 +perft 4 336528 +perft 5 11843048 +perft 6 189708368 + +id gentest-3249 +epd 7k/P7/4pnp1/1p1b1p1p/7P/2r5/3bK3/5R2 w - - +perft 1 18 +perft 2 688 +perft 3 10702 +perft 4 397564 +perft 5 6237121 +perft 6 225556163 + +id gentest-3250 +epd 8/P5k1/4pnp1/1p1b1R1p/7P/2r5/3b4/5K2 b - - +perft 1 47 +perft 2 663 +perft 3 27385 +perft 4 436687 +perft 5 16377338 +perft 6 286273079 + +id gentest-3251 +epd 8/P5k1/4pnp1/1p1R3p/7P/6r1/8/4bK2 w - - +perft 1 19 +perft 2 565 +perft 3 10126 +perft 4 285162 +perft 5 5486899 +perft 6 149539969 + +id gentest-3252 +epd 8/P2n2k1/4p1p1/1p5p/5R1P/6r1/8/4bK2 b - - +perft 1 29 +perft 2 505 +perft 3 14170 +perft 4 262136 +perft 5 7205423 +perft 6 140799179 + +id gentest-3253 +epd 8/P2n2k1/4p1p1/7p/1p5P/7r/5R2/4bK2 w - - +perft 1 21 +perft 2 557 +perft 3 10617 +perft 4 277818 +perft 5 5447275 +perft 6 139958160 + +id gentest-3254 +epd 8/3n2k1/4p1p1/7p/1p5P/2b4r/5R2/5K1B b - - +perft 1 27 +perft 2 578 +perft 3 15970 +perft 4 319690 +perft 5 8951565 +perft 6 179354129 + +id gentest-3255 +epd 5n2/7k/4p1p1/7p/1p5P/2b4r/2R5/5K1B w - - +perft 1 20 +perft 2 468 +perft 3 9214 +perft 4 223628 +perft 5 4540694 +perft 6 111898080 + +id gentest-3256 +epd 5n2/7k/4p1p1/7p/1p5P/7r/1R6/4bK1B b - - +perft 1 23 +perft 2 433 +perft 3 10004 +perft 4 190447 +perft 5 4481873 +perft 6 87980730 + +id gentest-3257 +epd 5n2/7k/4p1p1/7p/1b5P/3r4/8/5K1B w - - +perft 1 11 +perft 2 314 +perft 3 3492 +perft 4 94483 +perft 5 1103456 +perft 6 29563670 + +id gentest-3258 +epd 5n2/7k/6p1/4p2p/Bb5P/3r4/8/5K2 b - - +perft 1 30 +perft 2 310 +perft 3 8729 +perft 4 95874 +perft 5 2605227 +perft 6 29304738 + +id gentest-3259 +epd 4Bn2/7k/6p1/b3p2p/7P/3r4/8/5K2 w - - +perft 1 10 +perft 2 265 +perft 3 2830 +perft 4 74404 +perft 5 828075 +perft 6 21660411 + +id gentest-3260 +epd 5n2/7k/2B3p1/b3p2p/7P/8/4K3/3r4 b - - +perft 1 29 +perft 2 399 +perft 3 10758 +perft 4 129116 +perft 5 3387710 +perft 6 40069030 + +id gentest-3261 +epd 5n1k/8/6p1/4p2p/B6P/8/4K3/3rb3 w - - +perft 1 11 +perft 2 253 +perft 3 2679 +perft 4 65038 +perft 5 717895 +perft 6 17872893 + +id gentest-3262 +epd 5n1k/8/6p1/4p2p/B6P/4K3/8/2r1b3 b - - +perft 1 25 +perft 2 255 +perft 3 6578 +perft 4 71768 +perft 5 1881650 +perft 6 20697804 + +id gentest-3263 +epd 5n1k/8/2B3p1/4p2p/4r2P/4K3/8/4b3 w - - +perft 1 4 +perft 2 74 +perft 3 841 +perft 4 16841 +perft 5 191612 +perft 6 4049343 + +id gentest-3264 +epd 5n1k/8/2B3p1/4p2p/4r2P/8/3b1K2/8 b - - +perft 1 26 +perft 2 329 +perft 3 8430 +perft 4 105470 +perft 5 2719485 +perft 6 33335069 + +id gentest-3265 +epd 5n1k/8/2B3p1/4p1bp/7P/8/6K1/4r3 w - - +perft 1 15 +perft 2 380 +perft 3 4844 +perft 4 122187 +perft 5 1461763 +perft 6 37238114 + +id gentest-3266 +epd 5n1k/8/6p1/4p2p/6BP/4b3/6K1/4r3 b - - +perft 1 28 +perft 2 337 +perft 3 9285 +perft 4 99847 +perft 5 2720246 +perft 6 29770817 + +id gentest-3267 +epd 5n1k/8/6p1/4p2p/5bBP/5K2/8/2r5 w - - +perft 1 10 +perft 2 284 +perft 3 3076 +perft 4 84698 +perft 5 912492 +perft 6 24505289 + +id gentest-3268 +epd 5n1k/8/4B1p1/4p2p/5b1P/5K2/8/4r3 b - - +perft 1 24 +perft 2 287 +perft 3 7074 +perft 4 77299 +perft 5 1931784 +perft 6 21250383 + +id gentest-3269 +epd 5n1k/8/4B1p1/4p2p/5b1P/5r2/5K2/8 w - - +perft 1 5 +perft 2 106 +perft 3 1317 +perft 4 31046 +perft 5 352403 +perft 6 8584620 + +id gentest-3270 +epd 5n1k/3B4/6p1/4p2p/7P/5Kb1/8/8 b - - +perft 1 13 +perft 2 158 +perft 3 2230 +perft 4 26624 +perft 5 395401 +perft 6 4780238 + +id gentest-3271 +epd 5n1k/8/2B3p1/4p2p/7P/4bK2/8/8 w - - +perft 1 13 +perft 2 233 +perft 3 2960 +perft 4 49162 +perft 5 629199 +perft 6 10365805 + +id gentest-3272 +epd 2B2n1k/8/6p1/4p2p/7P/5K2/8/6b1 b - - +perft 1 15 +perft 2 155 +perft 3 2481 +perft 4 28078 +perft 5 459755 +perft 6 5408827 + +id gentest-3273 +epd 5n1k/3B4/6p1/4p2p/7P/5K2/8/4b3 w - - +perft 1 13 +perft 2 195 +perft 3 2376 +perft 4 36938 +perft 5 455042 +perft 6 7259363 + +id gentest-3274 +epd 5n1k/8/2B3p1/4p2p/1b5P/8/6K1/8 b - - +perft 1 16 +perft 2 266 +perft 3 4386 +perft 4 65349 +perft 5 1100942 +perft 6 15133848 + +id gentest-3275 +epd 5n1k/8/2B3p1/4p2p/7P/b7/7K/8 w - - +perft 1 16 +perft 2 222 +perft 3 3090 +perft 4 47479 +perft 5 629762 +perft 6 10203927 + +id gentest-3276 +epd B4n1k/8/3b2p1/4p2p/7P/8/7K/8 b - - +perft 1 14 +perft 2 160 +perft 3 2443 +perft 4 30948 +perft 5 498177 +perft 6 6480771 + +id gentest-3277 +epd 5n1k/1B6/3b2p1/4p2p/7P/8/7K/8 w - - +perft 1 14 +perft 2 194 +perft 3 2542 +perft 4 38699 +perft 5 504138 +perft 6 8103597 + +id gentest-3278 +epd 5n1k/8/6p1/4p2p/7P/b7/7K/5B2 b - - +perft 1 14 +perft 2 168 +perft 3 2600 +perft 4 31435 +perft 5 513209 +perft 6 6501792 + +id gentest-3279 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-3280 +epd rnbqkbnr/pppp1ppp/8/4p3/6P1/7B/PPPPPP1P/RNBQK1NR b KQkq - +perft 1 30 +perft 2 563 +perft 3 17253 +perft 4 361797 +perft 5 11375866 +perft 6 263681542 + +id gentest-3281 +epd rnbqkb1r/p1pp1ppp/1p3n2/4p3/P5P1/7B/1PPPPP1P/RNBQK1NR w KQkq - +perft 1 20 +perft 2 579 +perft 3 13064 +perft 4 398902 +perft 5 9849229 +perft 6 311512474 + +id gentest-3282 +epd r1bqkb1r/p1pp1ppp/1pn2n2/4p3/P2P2P1/7B/RPP1PP1P/1NBQK1NR b Kkq - +perft 1 32 +perft 2 897 +perft 3 29728 +perft 4 868546 +perft 5 29484812 +perft 6 898416251 + +id gentest-3283 +epd r1bqkb1r/p1pp1ppp/1p3n2/6B1/Pn1p2P1/7B/RPP1PP1P/1N1QK1NR w Kkq - +perft 1 29 +perft 2 905 +perft 3 26302 +perft 4 843889 +perft 5 25851545 +perft 6 855326188 + +id gentest-3284 +epd r1bqkb1r/p2p1ppp/1p3n2/2p5/Pn1p1BP1/7B/RPPKPP1P/1N1Q2NR b kq - +perft 1 31 +perft 2 848 +perft 3 27363 +perft 4 777164 +perft 5 25998799 +perft 6 767117129 + +id gentest-3285 +epd r1b1kb1r/p1qp1ppp/5n2/1pp5/Pn1p1BP1/8/RPPKPP1P/1N1Q1BNR w kq - +perft 1 30 +perft 2 1161 +perft 3 34596 +perft 4 1331750 +perft 5 41069648 +perft 6 1581517265 + +id gentest-3286 +epd r1b1kb1r/p1qp1ppp/5n2/1pp3P1/P2p1B2/8/RPK1PP1P/1N1Q1BNR b kq - +perft 1 33 +perft 2 1136 +perft 3 38237 +perft 4 1321476 +perft 5 45033261 +perft 6 1576857563 + +id gentest-3287 +epd r1b1kb1r/p4ppp/3p1n2/1pp1q1P1/P2p4/8/RPK1PP1P/1NBQ1BNR w kq - +perft 1 31 +perft 2 1229 +perft 3 35506 +perft 4 1399722 +perft 5 42088017 +perft 6 1645466118 + +id gentest-3288 +epd r1b1kb1r/p4ppp/3p1n2/1pp3P1/P2p1q2/R7/1PK1P2P/1NBQ1BNR b kq - +perft 1 43 +perft 2 1257 +perft 3 52002 +perft 4 1536287 +perft 5 62485545 +perft 6 1903995725 + +id gentest-3289 +epd r3kb1r/p4ppp/3p1n2/1pp3P1/P2pP3/R6b/1PK4P/1NBQ1qNR w kq - +perft 1 35 +perft 2 1436 +perft 3 42957 +perft 4 1743727 +perft 5 52597845 +perft 6 2106531575 + +id gentest-3290 +epd 3rkb1r/p4ppp/3p1n2/1pp3PQ/P2pP3/R6b/1PKN3P/2B2qNR b k - +perft 1 41 +perft 2 1284 +perft 3 50312 +perft 4 1516709 +perft 5 58567894 +perft 6 1760540836 + +id gentest-3291 +epd 3rkb1r/p4p1Q/3p1np1/1pp3P1/P2pP3/R6b/1PKN2qP/2B3NR w k - +perft 1 31 +perft 2 1249 +perft 3 35705 +perft 4 1428249 +perft 5 41057490 +perft 6 1627327131 + +id gentest-3292 +epd 3rkb1r/p4p1Q/3p1np1/1pp3P1/P2pP3/5R1b/1PK4P/1NB3qR b k - +perft 1 44 +perft 2 1424 +perft 3 58317 +perft 4 1792782 +perft 5 71524747 +perft 6 2160228857 + +id gentest-3293 +epd 3rk2r/p4p1Q/3p1npb/1pp3P1/P2pP3/4qR1b/1PKN3P/2B4R w k - +perft 1 31 +perft 2 1293 +perft 3 35865 +perft 4 1450461 +perft 5 40881971 +perft 6 1612753668 + +id gentest-3294 +epd 3rk2r/p4pQ1/3p1npb/1pp3P1/P2pN3/5R1b/1PK4P/2B4R b k - +perft 1 32 +perft 2 1392 +perft 3 38303 +perft 4 1561118 +perft 5 42657172 +perft 6 1679170375 + +id gentest-3295 +epd 3rk2r/p4pQ1/3p2pb/1pp3P1/P2p4/2n2R1b/1PKN3P/2B4R w k - +perft 1 38 +perft 2 1049 +perft 3 37850 +perft 4 1032776 +perft 5 37185689 +perft 6 1017748582 + +id gentest-3296 +epd 3r3r/p2k1pQ1/3p2pb/1pp3P1/P2p4/2nR3b/1PK4P/2B2N1R b - - +perft 1 36 +perft 2 1185 +perft 3 41246 +perft 4 1341951 +perft 5 45586296 +perft 6 1497317803 + +id gentest-3297 +epd r1k4r/p4pQ1/3p2pb/1pp3P1/P2p4/2nR2Nb/1PK4P/2B4R w - - +perft 1 36 +perft 2 1128 +perft 3 42509 +perft 4 1332516 +perft 5 50976527 +perft 6 1601107553 + +id gentest-3298 +epd r1k4r/p4pQ1/3p2pb/1pp2NP1/P2R4/7b/1PK4P/1nB4R b - - +perft 1 29 +perft 2 1116 +perft 3 30654 +perft 4 1181520 +perft 5 33683017 +perft 6 1300780226 + +id gentest-3299 +epd r1k4r/5pQ1/p2p3b/1pp2pP1/P2R4/7b/1PK4P/1nB2R2 w - - +perft 1 41 +perft 2 1060 +perft 3 41099 +perft 4 1118099 +perft 5 42738483 +perft 6 1202274829 + +id gentest-3300 +epd r1k4r/5pQ1/p2p3b/Ppp2pP1/3R4/n6b/1P1K3P/2B2R2 b - - +perft 1 26 +perft 2 834 +perft 3 21420 +perft 4 697950 +perft 5 18417679 +perft 6 603573615 + +id gentest-3301 +epd 3r3r/2k2p2/p2p3b/Ppp1QpP1/3R4/n6b/1P1K3P/2B2R2 w - - +perft 1 44 +perft 2 1246 +perft 3 47301 +perft 4 1336107 +perft 5 49051836 +perft 6 1394973783 + +id gentest-3302 +epd 2kr3r/5p2/p2p3b/Ppp1QpP1/3R4/n4R1b/1P2K2P/2B5 b - - +perft 1 28 +perft 2 1310 +perft 3 34728 +perft 4 1441105 +perft 5 38587886 +perft 6 1505629146 + +id gentest-3303 +epd k2r3r/5p2/p2p3b/Ppp1QpP1/3R4/R6b/1P2K2P/2B5 w - - +perft 1 50 +perft 2 1216 +perft 3 51348 +perft 4 1265450 +perft 5 50416919 +perft 6 1271030969 + +id gentest-3304 +epd k2r1b1r/5p2/p2p1Q2/Ppp2pP1/3R4/R2K3b/1P5P/2B5 b - - +perft 1 23 +perft 2 756 +perft 3 18156 +perft 4 619053 +perft 5 15498627 +perft 6 533488635 + +id gentest-3305 +epd k4b1r/5Q2/p2p4/Ppp2pP1/3R4/R2K3b/1P2r2P/2B5 w - - +perft 1 41 +perft 2 1067 +perft 3 36294 +perft 4 941519 +perft 5 30122674 +perft 6 793964338 + +id gentest-3306 +epd 1k3b1r/8/p2p2Q1/Ppp2pP1/1R6/R2K3b/1P2r2P/2B5 b - - +perft 1 33 +perft 2 941 +perft 3 27064 +perft 4 782913 +perft 5 22085581 +perft 6 654204729 + +id gentest-3307 +epd 1k6/4b3/p2p2Qr/Ppp2pP1/4R3/R2K3b/1P2r2P/2B5 w - - +perft 1 36 +perft 2 1019 +perft 3 32017 +perft 4 906071 +perft 5 27994161 +perft 6 786522596 + +id gentest-3308 +epd 1k6/4b2r/p2p3Q/Ppp2pP1/R7/R2K3b/1P2r2P/2B5 b - - +perft 1 32 +perft 2 836 +perft 3 25445 +perft 4 690564 +perft 5 21160975 +perft 6 592558205 + +id gentest-3309 +epd 1k6/4b2r/p2p3Q/Ppp2pP1/3R4/R2K3b/1P5r/2B5 w - - +perft 1 32 +perft 2 847 +perft 3 24376 +perft 4 684652 +perft 5 19965076 +perft 6 575639390 + +id gentest-3310 +epd 8/2k1b2r/p2p3Q/Ppp2pP1/3R1B2/3K3b/1P5r/R7 b - - +perft 1 27 +perft 2 912 +perft 3 24456 +perft 4 815062 +perft 5 22434523 +perft 6 743931342 + +id gentest-3311 +epd 1k1b4/7r/p2p3Q/Ppp2pP1/3R1B2/3K3b/RP5r/8 w - - +perft 1 31 +perft 2 955 +perft 3 28652 +perft 4 854153 +perft 5 26375685 +perft 6 778041911 + +id gentest-3312 +epd 1k6/2b4r/p3Q3/Ppp2pP1/3R1B2/3K3b/RP5r/8 b - - +perft 1 27 +perft 2 1081 +perft 3 27461 +perft 4 984986 +perft 5 26190884 +perft 6 907367945 + +id gentest-3313 +epd 1k3r2/2b5/p7/Ppp2pP1/3RQB2/3K3b/RP5r/8 w - - +perft 1 38 +perft 2 871 +perft 3 29600 +perft 4 743536 +perft 5 25320008 +perft 6 675053414 + +id gentest-3314 +epd 1k1r4/2b5/p7/Ppp2pP1/3R1B2/3K3b/RP5r/6Q1 b - - +perft 1 29 +perft 2 833 +perft 3 23532 +perft 4 690585 +perft 5 20014644 +perft 6 604689177 + +id gentest-3315 +epd 1k1r4/2b5/p7/PppR1pP1/5B2/3K3b/RP6/2r3Q1 w - - +perft 1 34 +perft 2 938 +perft 3 27225 +perft 4 773540 +perft 5 23379408 +perft 6 676320416 + +id gentest-3316 +epd 2kr4/2b5/p7/PppR1pP1/5B2/3K3b/RP1Q4/2r5 b - - +perft 1 30 +perft 2 769 +perft 3 22236 +perft 4 631463 +perft 5 18304999 +perft 6 550724916 + +id gentest-3317 +epd 2kr4/8/pb6/PppR1pP1/8/3KB3/RP1Q2b1/2r5 w - - +perft 1 26 +perft 2 781 +perft 3 20195 +perft 4 612825 +perft 5 17360815 +perft 6 530999025 + +id gentest-3318 +epd 2kr4/8/pb6/PppR1pP1/8/R3B2b/1P1QK3/2r5 b - - +perft 1 29 +perft 2 871 +perft 3 24457 +perft 4 779389 +perft 5 22270631 +perft 6 736011023 + +id gentest-3319 +epd 3r4/1k6/pb4P1/PppR1p2/8/R1r1B2b/1P1QK3/8 w - - +perft 1 36 +perft 2 1109 +perft 3 38177 +perft 4 1132976 +perft 5 39971118 +perft 6 1166413111 + +id gentest-3320 +epd 2r5/1k6/pb4P1/PppR1p2/5B2/RPr4b/3QK3/8 b - - +perft 1 29 +perft 2 917 +perft 3 25882 +perft 4 878771 +perft 5 24769285 +perft 6 868696740 + +id gentest-3321 +epd 2r5/1kb5/p5P1/PppR1p2/2r2B2/RP5b/3Q4/4K3 w - - +perft 1 39 +perft 2 1166 +perft 3 42344 +perft 4 1260034 +perft 5 45761079 +perft 6 1353356072 + +id gentest-3322 +epd 6r1/1kb5/p2B2PQ/PppR1p2/2r5/RP5b/8/4K3 b - - +perft 1 34 +perft 2 1106 +perft 3 35386 +perft 4 1197581 +perft 5 36887631 +perft 6 1282010374 + +id gentest-3323 +epd r7/1kb4Q/p2B2P1/PppR1p2/5r2/RP5b/8/4K3 w - - +perft 1 32 +perft 2 851 +perft 3 26842 +perft 4 704787 +perft 5 23609109 +perft 6 624968709 + +id gentest-3324 +epd r7/1kb4Q/p2B2P1/Ppp2p2/3Rr3/RP5b/3K4/8 b - - +perft 1 30 +perft 2 1005 +perft 3 28908 +perft 4 989580 +perft 5 28233059 +perft 6 978814493 + +id gentest-3325 +epd rr6/1kb2Q2/p2B2P1/Ppp2p2/3R4/RP5b/3K4/8 w - - +perft 1 43 +perft 2 709 +perft 3 28941 +perft 4 568192 +perft 5 22530882 +perft 6 484671979 + +id gentest-3326 +epd 1r6/rkb2Q2/p5P1/Ppp2p2/1P1R4/R6b/3K3B/8 b - - +perft 1 18 +perft 2 882 +perft 3 17658 +perft 4 798703 +perft 5 16981339 +perft 6 733393459 + +id gentest-3327 +epd kr6/r1Q5/p5P1/Pp3p2/1P1p4/R6b/3K3B/8 w - - +perft 1 43 +perft 2 661 +perft 3 24875 +perft 4 441583 +perft 5 15409256 +perft 6 307563244 + +id gentest-3328 +epd k7/rr6/pQ4P1/Pp3p2/1P1p4/7b/R2K3B/8 b - - +perft 1 13 +perft 2 389 +perft 3 5861 +perft 4 178865 +perft 5 3026574 +perft 6 93670101 + +id gentest-3329 +epd k7/2r4r/p5P1/PpQ2p2/1P1p4/7b/R2K3B/8 w - - +perft 1 35 +perft 2 769 +perft 3 25573 +perft 4 545480 +perft 5 17769520 +perft 6 388204490 + +id gentest-3330 +epd k7/6rr/p2B2P1/PpQ2p2/1P1p4/3K3b/R7/8 b - - +perft 1 17 +perft 2 593 +perft 3 11473 +perft 4 392916 +perft 5 7981858 +perft 6 266975654 + +id gentest-3331 +epd k7/1r6/p2B2Pr/Pp3Q2/1P1p4/3K3b/R7/8 w - - +perft 1 44 +perft 2 809 +perft 3 30526 +perft 4 623385 +perft 5 22437999 +perft 6 491091080 + +id gentest-3332 +epd k7/1r6/p1QB2r1/Pp6/1P1p4/3K3b/R7/8 b - - +perft 1 19 +perft 2 665 +perft 3 12529 +perft 4 426489 +perft 5 9088751 +perft 6 300248326 + +id gentest-3333 +epd k7/1r6/p1QB4/Pp6/1P1p4/3K3b/3r4/R7 w - - +perft 1 2 +perft 2 27 +perft 3 946 +perft 4 14945 +perft 5 518889 +perft 6 9894646 + +id gentest-3334 +epd k7/1r6/pQ1B4/Pp6/1P6/3p3b/3K4/R7 b - - +perft 1 16 +perft 2 577 +perft 3 8499 +perft 4 300914 +perft 5 4677446 +perft 6 164937926 + +id gentest-3335 +epd k7/4Br2/pQ2b3/Pp6/1P6/3p4/3K4/R7 w - - +perft 1 38 +perft 2 653 +perft 3 23152 +perft 4 409423 +perft 5 14216389 +perft 6 256064736 + +id gentest-3336 +epd 8/1k2Br2/p3b3/PpQ5/1P6/3p4/8/R1K5 b - - +perft 1 22 +perft 2 642 +perft 3 11918 +perft 4 360926 +perft 5 7046881 +perft 6 213938430 + +id gentest-3337 +epd 2k5/4Br2/p7/PQ6/1Pb5/3p4/8/R1K5 w - - +perft 1 30 +perft 2 428 +perft 3 11514 +perft 4 195908 +perft 5 5454379 +perft 6 99059009 + +id gentest-3338 +epd 2k5/4Br1Q/p3b3/P7/1P6/3p4/8/R1K5 b - - +perft 1 23 +perft 2 601 +perft 3 12904 +perft 4 367431 +perft 5 7599134 +perft 6 227342299 + +id gentest-3339 +epd 2k5/4B1Q1/p3b3/P7/1r6/3p4/8/R1K5 w - - +perft 1 31 +perft 2 744 +perft 3 22831 +perft 4 483641 +perft 5 15153259 +perft 6 306263812 + +id gentest-3340 +epd 2k5/4Bb2/p7/P7/1r6/3p4/8/QRK5 b - - +perft 1 28 +perft 2 621 +perft 3 13681 +perft 4 357782 +perft 5 7209904 +perft 6 206725595 + +id gentest-3341 +epd 2k5/5b2/p7/Pr4B1/8/3p4/8/QRK5 w - - +perft 1 24 +perft 2 585 +perft 3 15228 +perft 4 312247 +perft 5 8849200 +perft 6 170692861 + +id gentest-3342 +epd 2k1b3/2Q5/p7/Pr4B1/8/3p4/8/1RK5 b - - +perft 1 1 +perft 2 15 +perft 3 325 +perft 4 5397 +perft 5 112210 +perft 6 2025058 + +id gentest-3343 +epd 4b3/1k6/p7/Pr4B1/8/3p4/8/1R1K4 w - - +perft 1 18 +perft 2 293 +perft 3 4818 +perft 4 92348 +perft 5 1607459 +perft 6 32566540 + +id gentest-3344 +epd 4b3/1k6/p7/Pr6/1R6/4B3/3p4/3K4 b - - +perft 1 12 +perft 2 256 +perft 3 4798 +perft 4 97339 +perft 5 2019623 +perft 6 40826372 + +id gentest-3345 +epd k7/8/p1b5/Pr6/1R6/8/3p1B2/3K4 w - - +perft 1 23 +perft 2 504 +perft 3 10657 +perft 4 233630 +perft 5 4719602 +perft 6 105082605 + +id gentest-3346 +epd k7/8/p1b5/r7/2R5/8/3pKB2/8 b - - +perft 1 27 +perft 2 607 +perft 3 15363 +perft 4 326388 +perft 5 8256324 +perft 6 170965823 + +id gentest-3347 +epd k7/8/p1b5/3r4/8/8/4KB2/2Rq4 w - - +perft 1 2 +perft 2 59 +perft 3 887 +perft 4 26589 +perft 5 442403 +perft 6 13127176 + +id gentest-3348 +epd k7/8/p1b5/8/8/8/4K3/3rB3 b - - +perft 1 25 +perft 2 246 +perft 3 5930 +perft 4 61353 +perft 5 1470365 +perft 6 16839032 + +id gentest-3349 +epd k7/8/p1b5/4r3/8/8/5K2/8 w - - +perft 1 3 +perft 2 84 +perft 3 333 +perft 4 8658 +perft 5 35221 +perft 6 892702 + +id gentest-3350 +epd k7/8/2b5/p3r3/8/8/7K/8 b - - +perft 1 27 +perft 2 87 +perft 3 2213 +perft 4 9521 +perft 5 243652 +perft 6 1040802 + +id gentest-3351 +epd 4b3/1k6/8/p3r3/8/6K1/8/8 w - - +perft 1 8 +perft 2 224 +perft 3 1093 +perft 4 29994 +perft 5 155444 +perft 6 4218274 + +id gentest-3352 +epd 8/1k6/8/p3r3/b7/6K1/8/8 b - - +perft 1 28 +perft 2 202 +perft 3 5551 +perft 4 27440 +perft 5 739183 +perft 6 3866299 + +id gentest-3353 +epd 2k5/8/8/p3r3/8/1b5K/8/8 w - - +perft 1 5 +perft 2 140 +perft 3 774 +perft 4 21380 +perft 5 105440 +perft 6 2885304 + +id gentest-3354 +epd 2k5/8/8/p2br3/8/8/8/6K1 b - - +perft 1 29 +perft 2 95 +perft 3 2721 +perft 4 9987 +perft 5 277832 +perft 6 1266318 + +id gentest-3355 +epd 2k5/4rb2/8/p7/8/8/5K2/8 w - - +perft 1 5 +perft 2 130 +perft 3 737 +perft 4 19454 +perft 5 102429 +perft 6 2724590 + +id gentest-3356 +epd 8/1k2rb2/8/p7/8/8/8/5K2 b - - +perft 1 27 +perft 2 85 +perft 3 2367 +perft 4 13192 +perft 5 368227 +perft 6 1795703 + +id gentest-3357 +epd 8/4r3/k5b1/p7/8/8/8/6K1 w - - +perft 1 5 +perft 2 140 +perft 3 667 +perft 4 17889 +perft 5 91482 +perft 6 2453119 + +id gentest-3358 +epd 8/k3r3/6b1/p7/8/8/8/6K1 b - - +perft 1 28 +perft 2 128 +perft 3 3508 +perft 4 16293 +perft 5 442804 +perft 6 2214952 + +id gentest-3359 +epd k3r3/8/6b1/p7/8/8/8/5K2 w - - +perft 1 3 +perft 2 75 +perft 3 432 +perft 4 11047 +perft 5 53623 +perft 6 1380080 + +id gentest-3360 +epd 4r3/1k6/6b1/p7/8/8/8/5K2 b - - +perft 1 31 +perft 2 106 +perft 3 3110 +perft 4 17351 +perft 5 494254 +perft 6 2432685 + +id gentest-3361 +epd 4r3/1k5b/8/p7/8/8/8/6K1 w - - +perft 1 5 +perft 2 150 +perft 3 711 +perft 4 20013 +perft 5 102714 +perft 6 2844799 + +id gentest-3362 +epd 8/1k5b/8/p7/8/7K/4r3/8 b - - +perft 1 30 +perft 2 99 +perft 3 2839 +perft 4 15282 +perft 5 429905 +perft 6 2045880 + +id gentest-3363 +epd 8/1k5b/8/p7/7K/8/2r5/8 w - - +perft 1 5 +perft 2 140 +perft 3 688 +perft 4 19220 +perft 5 94187 +perft 6 2619052 + +id gentest-3364 +epd 2k5/7b/8/p7/8/6K1/2r5/8 b - - +perft 1 24 +perft 2 128 +perft 3 3298 +perft 4 16411 +perft 5 433254 +perft 6 2227125 + +id gentest-3365 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-3366 +epd rnbqkbnr/p1pppppp/1p6/8/3P4/4B3/PPP1PPPP/RN1QKBNR b KQkq - +perft 1 21 +perft 2 567 +perft 3 13085 +perft 4 367754 +perft 5 9267735 +perft 6 270355369 + +id gentest-3367 +epd rnbqkbnr/p1pp1pp1/1p5p/4p3/3P4/2N1B3/PPP1PPPP/R2QKBNR w KQkq - +perft 1 31 +perft 2 954 +perft 3 29751 +perft 4 923031 +perft 5 29225863 +perft 6 922852194 + +id gentest-3368 +epd rnbqk1nr/p1pp1pp1/1p5p/4p3/1b1P2P1/2N5/PPPBPP1P/R2QKBNR b KQkq - +perft 1 34 +perft 2 1010 +perft 3 34110 +perft 4 992552 +perft 5 33429271 +perft 6 985582255 + +id gentest-3369 +epd rn1qk1nr/p1pp1pp1/bp5p/8/1b1p1PP1/2N5/PPPBP2P/R2QKBNR w KQkq - +perft 1 25 +perft 2 897 +perft 3 22871 +perft 4 802938 +perft 5 21753775 +perft 6 758938528 + +id gentest-3370 +epd rn2k1nr/p1pp1pp1/bp5p/6q1/1b1p1PP1/2N1B3/PPP1P2P/2RQKBNR b Kkq - +perft 1 46 +perft 2 972 +perft 3 41856 +perft 4 1008569 +perft 5 41486250 +perft 6 1107737308 + +id gentest-3371 +epd rnb1k1nr/p1ppbpp1/1p5p/6q1/1P1p1PP1/2N1B3/P1P1P2P/2RQKBNR w Kkq - +perft 1 26 +perft 2 1004 +perft 3 27067 +perft 4 1020256 +perft 5 29186007 +perft 6 1080313784 + +id gentest-3372 +epd rnb1k1nr/2ppbpp1/1p5p/p5q1/NP1p1PP1/3QB3/P1P1P2P/2R1KBNR b Kkq - +perft 1 38 +perft 2 1405 +perft 3 53601 +perft 4 1930284 +perft 5 73271710 +perft 6 2640325526 + +id gentest-3373 +epd rnb1k1nr/2ppbpp1/1p3q1p/pQ6/NP1p1PP1/4B3/P1P1P2P/2R1KBNR w Kkq - +perft 1 38 +perft 2 1180 +perft 3 43117 +perft 4 1463855 +perft 5 53998675 +perft 6 1921418889 + +id gentest-3374 +epd rnb1k1nr/2ppbpp1/1p5p/pQ3q2/NP1p1PP1/4B3/P1P1P2P/2R1KBNR b Kkq - +perft 1 42 +perft 2 1445 +perft 3 56698 +perft 4 2013697 +perft 5 77748147 +perft 6 2808557989 + +id gentest-3375 +epd rnb1k1nr/2pp2p1/1p3p1p/pQb2q2/NP1p1PP1/4B2P/P1P1P3/2R1KBNR w Kkq - +perft 1 32 +perft 2 1098 +perft 3 36506 +perft 4 1273346 +perft 5 43590661 +perft 6 1535029409 + +id gentest-3376 +epd rnb1k1nr/2pp2p1/1N3p1p/p1b5/1PQp1PP1/4B2P/P1q1P3/2R1KBNR b Kkq - +perft 1 44 +perft 2 1392 +perft 3 52786 +perft 4 1762950 +perft 5 64970315 +perft 6 2247274662 + +id gentest-3377 +epd 1nb1k1nr/r1pp4/1N3ppp/p1b3P1/1PQp1P2/4B2P/P1q1P3/2R1KBNR w Kk - +perft 1 37 +perft 2 1414 +perft 3 46792 +perft 4 1743435 +perft 5 59607454 +perft 6 2200115079 + +id gentest-3378 +epd Nnb1k1nr/r1pp4/5pp1/p1b3p1/1P1p1P2/1Q2B2P/P1q1P3/2R1KBNR b Kk - +perft 1 45 +perft 2 1313 +perft 3 52606 +perft 4 1620303 +perft 5 65544429 +perft 6 2105480167 + +id gentest-3379 +epd Nnb3nr/r1ppk3/5pp1/pPb3p1/3p1P2/1Q2B2P/P2qP3/2R1KBNR w K - +perft 1 3 +perft 2 100 +perft 3 3759 +perft 4 123251 +perft 5 4410599 +perft 6 147839983 + +id gentest-3380 +epd Nnb3nr/r1pp4/3k1pp1/pPb3p1/3p1P2/5Q1P/P2BP3/2R1KBNR b K - +perft 1 25 +perft 2 974 +perft 3 24282 +perft 4 921004 +perft 5 23546968 +perft 6 883511910 + +id gentest-3381 +epd 2b3n1/r1Np4/2nk1ppr/pPb3p1/3p1P2/5Q1P/P2BP3/2R1KBNR w K - +perft 1 42 +perft 2 1051 +perft 3 42908 +perft 4 1091601 +perft 5 43490988 +perft 6 1126739911 + +id gentest-3382 +epd 2b3n1/r1Npk3/2n2ppr/pPb3p1/P2p1P2/2R2Q1P/3BP3/4KBNR b K - +perft 1 30 +perft 2 1076 +perft 3 30185 +perft 4 1114122 +perft 5 31965009 +perft 6 1194564397 + +id gentest-3383 +epd 2b3n1/r1Npk2r/2n3p1/pPb2pp1/P2p1P2/2R3QP/3BP3/4KBNR w K - +perft 1 36 +perft 2 1099 +perft 3 39742 +perft 4 1226960 +perft 5 44420699 +perft 6 1370663745 + +id gentest-3384 +epd 2b3n1/r2p3r/2nk2p1/pPbN1pp1/P2p1P2/6QP/2RBP3/4KBNR b K - +perft 1 30 +perft 2 1220 +perft 3 34763 +perft 4 1321764 +perft 5 36952489 +perft 6 1372322763 + +id gentest-3385 +epd 2b5/r2pn2r/1bnk2p1/pP1N1pQ1/P2p1P2/7P/2RBP3/4KBNR w K - +perft 1 38 +perft 2 846 +perft 3 31445 +perft 4 723318 +perft 5 26619531 +perft 6 629691334 + +id gentest-3386 +epd 2b5/r2pn2r/1Nn1k1p1/pP3pQ1/P2p1P1P/8/2RBP3/4KBNR b K - +perft 1 23 +perft 2 883 +perft 3 18650 +perft 4 726827 +perft 5 15965598 +perft 6 627965655 + +id gentest-3387 +epd 2b5/1r2n2r/1Nn1k1p1/pP1p1p1Q/P2p1P1P/8/2RBP3/4KBNR w K - +perft 1 35 +perft 2 746 +perft 3 26807 +perft 4 584179 +perft 5 21301637 +perft 6 481339674 + +id gentest-3388 +epd 2b4Q/1r2n3/1N2k1p1/pP1p1p2/Pn1p1P1P/8/2RBP3/4KBNR b K - +perft 1 17 +perft 2 619 +perft 3 10454 +perft 4 399109 +perft 5 7052020 +perft 6 274859647 + +id gentest-3389 +epd 1rb4Q/4n3/1N2k1p1/pP1p1p2/Pn3P1P/3p4/3BP3/2R1KBNR w K - +perft 1 45 +perft 2 701 +perft 3 28764 +perft 4 493664 +perft 5 20022824 +perft 6 368237068 + +id gentest-3390 +epd 1rbQ2n1/8/1N2k1p1/pP1p1p2/Pn3P1P/3p3R/3BP3/2R1KBN1 b - - +perft 1 17 +perft 2 697 +perft 3 10450 +perft 4 432452 +perft 5 7014579 +perft 6 291519164 + +id gentest-3391 +epd 1rbQ4/8/1Nn1k1pn/pP1p1p2/P4P1P/3p3R/3BP3/2RK1BN1 w - - +perft 1 43 +perft 2 659 +perft 3 27553 +perft 4 453420 +perft 5 19018668 +perft 6 331940403 + +id gentest-3392 +epd 1rb1Q3/5k2/1Nn3pn/pP1p1p2/P4P1P/3pR3/3BP3/2RK1BN1 b - - +perft 1 2 +perft 2 90 +perft 3 1413 +perft 4 61465 +perft 5 1040547 +perft 6 45165322 + +id gentest-3393 +epd 1rb5/5k2/1NQ3pn/pP1p1p2/P4P1P/3pR3/3BP3/2RK1BN1 w - - +perft 1 46 +perft 2 591 +perft 3 25669 +perft 4 389578 +perft 5 16934266 +perft 6 279836975 + +id gentest-3394 +epd 1rb5/5k2/1NQ3p1/pP1p1p2/P4PnP/3pR2N/3BP3/2R1KB2 b - - +perft 1 19 +perft 2 850 +perft 3 14424 +perft 4 630068 +perft 5 11471110 +perft 6 496449295 + +id gentest-3395 +epd 1r4k1/1b6/1NQ3p1/pP1p1p2/P4PnP/3pR3/3BPN2/2R1KB2 w - - +perft 1 49 +perft 2 986 +perft 3 47111 +perft 4 953063 +perft 5 44289104 +perft 6 908720827 + +id gentest-3396 +epd 1r4k1/1b6/1NQ3p1/1P1p1p2/Pp3PnP/3pR3/4PNB1/2R1K3 b - - +perft 1 25 +perft 2 1253 +perft 3 27685 +perft 4 1330913 +perft 5 29421234 +perft 6 1371684395 + +id gentest-3397 +epd 4Q3/1b4k1/1N4p1/1P1p1p2/Pp3PnP/3pR3/4PNB1/2R1K3 w - - +perft 1 56 +perft 2 865 +perft 3 43533 +perft 4 656844 +perft 5 31508945 +perft 6 476360141 + +id gentest-3398 +epd 2R3k1/1b1Q4/1N4p1/1P1p1p2/Pp3PnP/3pR3/4PNB1/4K3 b - - +perft 1 1 +perft 2 46 +perft 3 606 +perft 4 24756 +perft 5 332967 +perft 6 13055904 + +id gentest-3399 +epd 2bQ4/6k1/1N4p1/1P1p1p2/Pp3PnP/3pR3/4PNB1/4K3 w - - +perft 1 44 +perft 2 665 +perft 3 26996 +perft 4 391915 +perft 5 15628621 +perft 6 225254714 + +id gentest-3400 +epd 3Q4/6k1/1N2b1p1/1P1p1p2/Pp3PnP/3P4/4RNB1/4K3 b - - +perft 1 16 +perft 2 701 +perft 3 9721 +perft 4 410357 +perft 5 5683150 +perft 6 235824085 + +id gentest-3401 +epd 3Q4/3b2k1/1N4p1/1P1pnp2/Pp3P1P/3P4/4R1B1/4K2N w - - +perft 1 40 +perft 2 590 +perft 3 22136 +perft 4 332911 +perft 5 12957459 +perft 6 193324484 + +id gentest-3402 +epd 7Q/3b4/1N3kp1/1P1pnp2/Pp3P1P/3P4/4R1B1/4K2N b - - +perft 1 3 +perft 2 123 +perft 3 1334 +perft 4 51501 +perft 5 628120 +perft 6 24162847 + +id gentest-3403 +epd 7Q/3b4/1N2k1p1/1P1p1p2/Ppn2P1P/3P4/5RB1/4K2N w - - +perft 1 42 +perft 2 637 +perft 3 24889 +perft 4 347722 +perft 5 13092621 +perft 6 181157295 + +id gentest-3404 +epd 7Q/3b4/1N1k2p1/1P1p1p2/Ppn2P1P/3P3B/5R2/5K1N b - - +perft 1 19 +perft 2 700 +perft 3 10601 +perft 4 391437 +perft 5 5647752 +perft 6 209114714 + +id gentest-3405 +epd 7Q/3b4/1N1k4/1P1p1pp1/P1n2P1P/1p1P1R1B/8/5K1N w - - +perft 1 41 +perft 2 696 +perft 3 25204 +perft 4 392314 +perft 5 14134662 +perft 6 211439338 + +id gentest-3406 +epd 8/3b4/1N1k4/1P1pnBp1/P4P1P/1p1P1R2/8/5K1N b - - +perft 1 21 +perft 2 582 +perft 3 11115 +perft 4 296980 +perft 5 5538538 +perft 6 146233987 + +id gentest-3407 +epd 8/3bk3/1N6/1P1pnB1P/P4p2/1p1P1R2/8/5K1N w - - +perft 1 27 +perft 2 532 +perft 3 13927 +perft 4 264430 +perft 5 6824541 +perft 6 125694198 + +id gentest-3408 +epd 8/4k3/1N2b3/1P1pn2P/P4pB1/1p1P1R2/6K1/7N b - - +perft 1 22 +perft 2 520 +perft 3 9972 +perft 4 237137 +perft 5 4386777 +perft 6 105853080 + +id gentest-3409 +epd 8/5n2/1N2bk2/PP1p3P/5pB1/1p1P1R2/6K1/7N w - - +perft 1 25 +perft 2 366 +perft 3 9110 +perft 4 149104 +perft 5 3717989 +perft 6 62884853 + +id gentest-3410 +epd N7/4kn2/4b3/PP1p3P/5pB1/1p1P2R1/6K1/7N b - - +perft 1 20 +perft 2 413 +perft 3 8098 +perft 4 169255 +perft 5 3199537 +perft 6 69294138 + +id gentest-3411 +epd 8/2N2n2/3k4/PP1p3P/5pb1/1p1P2R1/6K1/7N w - - +perft 1 18 +perft 2 371 +perft 3 6930 +perft 4 130441 +perft 5 2574607 +perft 6 46703379 + +id gentest-3412 +epd 7n/8/1P1kN3/P2p3P/5pb1/1p1P2R1/6K1/7N b - - +perft 1 18 +perft 2 336 +perft 3 5814 +perft 4 113593 +perft 5 1895718 +perft 6 38540481 + +id gentest-3413 +epd 7n/8/1P1kN3/P6P/3p1p2/1p1P2R1/8/3b2KN w - - +perft 1 25 +perft 2 374 +perft 3 8611 +perft 4 126614 +perft 5 2845132 +perft 6 42845828 + +id gentest-3414 +epd 7n/8/PP1kN3/7P/3p1pR1/3P4/1p6/3b2KN b - - +perft 1 19 +perft 2 457 +perft 3 8773 +perft 4 192696 +perft 5 3674660 +perft 6 80575180 + +id gentest-3415 +epd 8/8/PP1kN1P1/8/3p1pR1/3P4/8/1r1b2KN w - - +perft 1 22 +perft 2 438 +perft 3 7135 +perft 4 142844 +perft 5 2712669 +perft 6 54527323 + +id gentest-3416 +epd 8/8/PP1kN1P1/8/3p1p1R/3P4/5N2/r2b2K1 b - - +perft 1 21 +perft 2 418 +perft 3 8353 +perft 4 187264 +perft 5 3683651 +perft 6 87323387 + +id gentest-3417 +epd 8/8/PP4P1/4k3/3p1N1R/3P1b2/5N2/r5K1 w - - +perft 1 2 +perft 2 48 +perft 3 999 +perft 4 21185 +perft 5 468505 +perft 6 9493508 + +id gentest-3418 +epd 8/8/PP4P1/4k3/3p1N2/r2P1b2/7R/3N2K1 b - - +perft 1 23 +perft 2 648 +perft 3 13364 +perft 4 339492 +perft 5 6822959 +perft 6 170893147 + +id gentest-3419 +epd 7R/8/PP4P1/8/3p1k2/1r1P1b2/8/3N2K1 w - - +perft 1 24 +perft 2 531 +perft 3 11722 +perft 4 249873 +perft 5 5357665 +perft 6 112129918 + +id gentest-3420 +epd 7R/P7/1P4P1/8/1r1p1k2/3P1b2/7K/3N4 b - - +perft 1 22 +perft 2 508 +perft 3 10400 +perft 4 242155 +perft 5 4908458 +perft 6 117809037 + +id gentest-3421 +epd 7R/P7/1P4P1/3b4/3p1k2/3P3K/1r6/3N4 w - - +perft 1 22 +perft 2 573 +perft 3 11728 +perft 4 268833 +perft 5 5878916 +perft 6 126225775 + +id gentest-3422 +epd Q6R/6P1/1P6/3b4/3p1k2/1r1P3K/8/3N4 b - - +perft 1 23 +perft 2 743 +perft 3 14615 +perft 4 467335 +perft 5 8874555 +perft 6 290160805 + +id gentest-3423 +epd 7R/6P1/1P6/1r1b1k2/3p4/3P3K/8/Q2N4 w - - +perft 1 35 +perft 2 829 +perft 3 28279 +perft 4 602145 +perft 5 20775925 +perft 6 423521341 + +id gentest-3424 +epd 8/6P1/1P6/r2b1k2/3p4/3P3K/8/Q1RN4 b - - +perft 1 28 +perft 2 752 +perft 3 18264 +perft 4 549421 +perft 5 12217070 +perft 6 393399405 + +id gentest-3425 +epd 8/1P4P1/5k2/3b4/r2p4/3P3K/8/Q1RN4 w - - +perft 1 31 +perft 2 808 +perft 3 26667 +perft 4 613386 +perft 5 21930297 +perft 6 469048771 + +id gentest-3426 +epd 1N6/6P1/5k2/r2b4/3p4/3P3K/8/QR1N4 b - - +perft 1 30 +perft 2 806 +perft 3 20415 +perft 4 627645 +perft 5 14418368 +perft 6 481005774 + +id gentest-3427 +epd 1N6/6P1/6k1/3b4/r2p4/3P3K/1N6/QR6 w - - +perft 1 23 +perft 2 579 +perft 3 15351 +perft 4 337036 +perft 5 10141404 +perft 6 206725402 + +id gentest-3428 +epd 1N6/6P1/6k1/r2b4/2Np2K1/3P4/8/QR6 b - - +perft 1 25 +perft 2 880 +perft 3 20190 +perft 4 722533 +perft 5 15756157 +perft 6 578676150 + +id gentest-3429 +epd 1N4Q1/1b6/5k2/r7/2Np2K1/3P4/8/QR6 w - - +perft 1 46 +perft 2 788 +perft 3 34802 +perft 4 543802 +perft 5 24816322 +perft 6 391157061 + +id gentest-3430 +epd 1N4Q1/8/1Nb2k2/r7/3p2K1/3P4/Q7/1R6 b - - +perft 1 26 +perft 2 1264 +perft 3 20583 +perft 4 985148 +perft 5 15471071 +perft 6 735305699 + +id gentest-3431 +epd 1N4Q1/8/1N3k2/5r2/3pb1K1/3P4/5Q2/1R6 w - - +perft 1 56 +perft 2 653 +perft 3 29979 +perft 4 437178 +perft 5 19844874 +perft 6 312556404 + +id gentest-3432 +epd 1N4Q1/8/1N3k2/8/3pbr2/3P3K/4Q3/1R6 b - - +perft 1 20 +perft 2 948 +perft 3 13187 +perft 4 614723 +perft 5 8930757 +perft 6 409616642 + +id gentest-3433 +epd 1N4Q1/8/3k4/3N4/3pbr2/3P3K/4Q3/1R6 w - - +perft 1 57 +perft 2 1003 +perft 3 46573 +perft 4 782180 +perft 5 36828642 +perft 6 616975077 + +id gentest-3434 +epd 1N6/8/4Q3/2k5/3pbr2/2NP3K/4Q3/1R6 b - - +perft 1 21 +perft 2 1055 +perft 3 16436 +perft 4 820135 +perft 5 12738454 +perft 6 623813339 + +id gentest-3435 +epd 1N6/8/4Q3/2k5/3pbr2/2NP2K1/4Q3/1R6 w - - +perft 1 63 +perft 2 978 +perft 3 52955 +perft 4 808558 +perft 5 41964432 +perft 6 652674123 + +id gentest-3436 +epd 1N6/8/4Q3/2k5/4PK2/2p5/4Q3/1R6 b - - +perft 1 2 +perft 2 122 +perft 3 461 +perft 4 21417 +perft 5 135547 +perft 6 6005714 + +id gentest-3437 +epd 1N6/8/3k4/8/4PK2/8/2p1Q3/1R6 w - - +perft 1 39 +perft 2 356 +perft 3 10989 +perft 4 108879 +perft 5 3350766 +perft 6 37679896 + +id gentest-3438 +epd 1N6/8/3k4/4R3/4PK2/8/4Q3/2n5 b - - +perft 1 5 +perft 2 123 +perft 3 824 +perft 4 27148 +perft 5 195888 +perft 6 6424545 + +id gentest-3439 +epd 1N6/8/3k4/4R1K1/3nP3/8/4Q3/8 w - - +perft 1 36 +perft 2 317 +perft 3 9428 +perft 4 77484 +perft 5 2566598 +perft 6 20508600 + +id gentest-3440 +epd 1N6/8/2nk4/4R2K/4P3/5Q2/8/8 b - - +perft 1 10 +perft 2 335 +perft 3 2422 +perft 4 79879 +perft 5 621717 +perft 6 20331176 + +id gentest-3441 +epd 1n6/3k4/8/4R2K/4PQ2/8/8/8 w - - +perft 1 30 +perft 2 177 +perft 3 5851 +perft 4 37583 +perft 5 1269230 +perft 6 9324704 + +id gentest-3442 +epd 1nk2Q2/4R3/8/7K/4P3/8/8/8 b - - +perft 1 0 +perft 2 0 +perft 3 0 +perft 4 0 +perft 5 0 +perft 6 0 + +id gentest-3443 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-3444 +epd rnbqkbnr/ppp1pppp/8/3p4/1P6/5P2/P1PPP1PP/RNBQKBNR b KQkq - +perft 1 28 +perft 2 559 +perft 3 16313 +perft 4 359803 +perft 5 10912306 +perft 6 261001148 + +id gentest-3445 +epd r1bqkbnr/ppp2ppp/2n5/3pp3/1P2P3/5P2/P1PP2PP/RNBQKBNR w KQkq - +perft 1 27 +perft 2 1021 +perft 3 27435 +perft 4 1032315 +perft 5 28540029 +perft 6 1079828764 + +id gentest-3446 +epd r1bqkbnr/ppp2ppp/2n5/1B2p3/1P1pP3/3P1P2/P1P3PP/RNBQK1NR b KQkq - +perft 1 31 +perft 2 912 +perft 3 28359 +perft 4 837429 +perft 5 26831328 +perft 6 806036073 + +id gentest-3447 +epd r1b2bnr/ppp1kppp/2n5/1B1qp3/1P1pP3/3P1P2/P1PQ2PP/RNB1K1NR w KQ - +perft 1 32 +perft 2 1143 +perft 3 37131 +perft 4 1292477 +perft 5 42770890 +perft 6 1479225383 + +id gentest-3448 +epd r4bnr/ppp1kppp/2n5/1B1qpb2/1P1pP3/3P1P1N/P1P1Q1PP/RNB1K2R b KQ - +perft 1 41 +perft 2 1586 +perft 3 61141 +perft 4 2244498 +perft 5 84609542 +perft 6 3020468733 + +id gentest-3449 +epd r4bnr/ppp1kp1p/2n5/1B1qpb2/1P1pP1p1/3P1P1N/P1P1Q1PP/RNB2K1R w - - +perft 1 36 +perft 2 1458 +perft 3 51319 +perft 4 1995877 +perft 5 69446839 +perft 6 2638304812 + +id gentest-3450 +epd r4bnr/ppp2p1p/2n1k3/1B1qpb2/1P1pP1p1/3P1P1N/P1PNQ1PP/R1B2KR1 b - - +perft 1 42 +perft 2 1222 +perft 3 44014 +perft 4 1355850 +perft 5 48580001 +perft 6 1558453712 + +id gentest-3451 +epd r4bnr/ppp2p1p/4k3/1B1q1b2/1n1pPpp1/3P1P2/P1PNQ1PP/R1B2KR1 w - - +perft 1 30 +perft 2 1197 +perft 3 36412 +perft 4 1446904 +perft 5 44908685 +perft 6 1781871764 + +id gentest-3452 +epd r4bnr/ppp2p1p/4k1b1/1B1q4/1n1pPpp1/1N1P1P2/P1P1Q1PP/R1B2K1R b - - +perft 1 48 +perft 2 1654 +perft 3 69188 +perft 4 2398388 +perft 5 98705966 +perft 6 3446264401 + +id gentest-3453 +epd r3B1nr/ppp2p1p/4k1b1/2b4q/1n1pPpp1/1N1P1P2/P1P1Q1PP/R1B2K1R w - - +perft 1 33 +perft 2 1214 +perft 3 40812 +perft 4 1529900 +perft 5 52042399 +perft 6 1972007926 + +id gentest-3454 +epd r3B1nr/ppp2p1p/4k1bq/2b5/1n1pPpp1/3P1PP1/P1PNQ2P/R1B2K1R b - - +perft 1 39 +perft 2 1135 +perft 3 42380 +perft 4 1275659 +perft 5 48042035 +perft 6 1491299599 + +id gentest-3455 +epd 4B1nr/pppr1p1p/4k1bq/2b5/1n1pPpp1/3P1PP1/P1PNQ2P/R1B2KR1 w - - +perft 1 27 +perft 2 988 +perft 3 27668 +perft 4 1008188 +perft 5 29616852 +perft 6 1075594517 + +id gentest-3456 +epd 4B1nr/pppr1p1p/6bq/2b1k3/1n1pPpp1/3P1PPP/P1P1Q3/RNB2KR1 b - - +perft 1 38 +perft 2 1133 +perft 3 40756 +perft 4 1218777 +perft 5 43779285 +perft 6 1327851164 + +id gentest-3457 +epd 4Bbnr/p1pr1p1p/1p4bq/4k3/1n1pPpp1/3PQPPP/P1P5/RNB2KR1 w - - +perft 1 28 +perft 2 969 +perft 3 27594 +perft 4 949095 +perft 5 27942741 +perft 6 958169021 + +id gentest-3458 +epd 4Bbnr/p1pr1p1p/1pn3bq/4k3/3pPpp1/2QP1PPP/P1P5/RNB2KR1 b - - +perft 1 37 +perft 2 1157 +perft 3 36127 +perft 4 1149342 +perft 5 35784041 +perft 6 1163583044 + +id gentest-3459 +epd 1n2Bbnr/p1pr1p1p/1p4bq/4k3/3pPp2/2QP1pPP/P1P2K2/RNB3R1 w - - +perft 1 34 +perft 2 958 +perft 3 31360 +perft 4 905244 +perft 5 29506509 +perft 6 873124359 + +id gentest-3460 +epd 1n2Bbnr/p1pr1p1p/1p4b1/4k3/3pPpPq/2QP1K1P/P1P5/RNB3R1 b - - +perft 1 43 +perft 2 1245 +perft 3 42934 +perft 4 1262476 +perft 5 41855785 +perft 6 1256932647 + +id gentest-3461 +epd 1n2Bbnr/p2r1p1p/1p3kb1/2p5/3pPBPq/2QP1K1P/P1P5/RN4R1 w - - +perft 1 38 +perft 2 1157 +perft 3 38874 +perft 4 1175640 +perft 5 39807840 +perft 6 1208564525 + +id gentest-3462 +epd 1n4nr/p2r1B1p/1p3kbb/2p5/3pPBPq/2QP1K1P/P1P5/RNR5 b - - +perft 1 33 +perft 2 1094 +perft 3 33686 +perft 4 1105403 +perft 5 35110215 +perft 6 1148913510 + +id gentest-3463 +epd 1n4nr/p2r1B1p/1p5b/2p1B1kb/3pP1Pq/2QP1K1P/P1P5/RNR5 w - - +perft 1 40 +perft 2 973 +perft 3 29771 +perft 4 774631 +perft 5 23890891 +perft 6 660754280 + +id gentest-3464 +epd 1n4nr/p2r1B1p/1p5b/2p3kb/3pP1P1/2QP3q/P1P1K2B/RNR5 b - - +perft 1 33 +perft 2 982 +perft 3 32074 +perft 4 944766 +perft 5 31946223 +perft 6 943012878 + +id gentest-3465 +epd 1n4nr/3r1B1p/1p5b/p1p3kb/3pP1Pq/3P4/PQP1K2B/RNR5 w - - +perft 1 40 +perft 2 1105 +perft 3 35786 +perft 4 1062213 +perft 5 33991882 +perft 6 1062998842 + +id gentest-3466 +epd 1n4nr/3r3p/7b/pppB2kb/3pP1Pq/3P4/PQPK3B/RNR5 b - - +perft 1 31 +perft 2 886 +perft 3 28262 +perft 4 821000 +perft 5 27358004 +perft 6 811083393 + +id gentest-3467 +epd 1n3bnr/7p/8/pppr2kb/3pP1Pq/1Q1P4/P1PK3B/RNR5 w - - +perft 1 31 +perft 2 957 +perft 3 27112 +perft 4 877889 +perft 5 24750306 +perft 6 827421207 + +id gentest-3468 +epd 1n3bnr/7p/8/pppQ2kb/3pP1q1/3P4/P1PK3B/RN4R1 b - - +perft 1 4 +perft 2 160 +perft 3 4113 +perft 4 135952 +perft 5 3733616 +perft 6 123818355 + +id gentest-3469 +epd 1n3b1r/7p/5k1n/pppQ3b/3pP1R1/3P4/P1PK3B/RN6 w - - +perft 1 44 +perft 2 643 +perft 3 25924 +perft 4 430931 +perft 5 16477309 +perft 6 302913882 + +id gentest-3470 +epd 1n3b1r/4k2p/3Q3n/ppp4b/3pP1R1/3P4/P1P1K2B/RN6 b - - +perft 1 2 +perft 2 74 +perft 3 1033 +perft 4 36645 +perft 5 626548 +perft 6 22267426 + +id gentest-3471 +epd 1n3b1r/5k1p/3Q4/ppp4b/P2pP1n1/3P4/2P1K2B/RN6 w - - +perft 1 37 +perft 2 670 +perft 3 18857 +perft 4 382583 +perft 5 11039809 +perft 6 243850199 + +id gentest-3472 +epd 1n3b1r/5k1p/7Q/ppp4b/P2pP3/3Pn3/2P2K1B/RN6 b - - +perft 1 27 +perft 2 839 +perft 3 19179 +perft 4 609077 +perft 5 14764327 +perft 6 472785325 + +id gentest-3473 +epd 1n3bkr/2B4p/7Q/pppn3b/P2pP3/3P4/2P2K2/RN6 w - - +perft 1 40 +perft 2 898 +perft 3 33523 +perft 4 759718 +perft 5 27090817 +perft 6 626870788 + +id gentest-3474 +epd 1n3bkr/2B4p/6b1/pppn4/P2pP3/3P4/2PN1K2/R7 b - - +perft 1 27 +perft 2 909 +perft 3 24213 +perft 4 739398 +perft 5 19815361 +perft 6 569283806 + +id gentest-3475 +epd 1n4kr/2B4p/3b2b1/ppp5/Pn1pP3/3P4/2PN1K2/3R4 w - - +perft 1 27 +perft 2 741 +perft 3 19008 +perft 4 526586 +perft 5 13537060 +perft 6 380644211 + +id gentest-3476 +epd 1n4kr/2B4p/2nb2b1/ppp5/P1PpP3/3P4/5K2/1N1R4 b - c3 +perft 1 28 +perft 2 630 +perft 3 16823 +perft 4 375145 +perft 5 10091232 +perft 6 226936527 + +id gentest-3477 +epd 6kr/3n3p/3b2b1/Bpp1n3/P1PpP3/3P4/5K2/1N1R4 w - - +perft 1 24 +perft 2 639 +perft 3 13802 +perft 4 386183 +perft 5 8348822 +perft 6 241533544 + +id gentest-3478 +epd 5nkr/7p/3b2b1/Bpp1n3/P1PpP3/3P2K1/8/1N2R3 b - - +perft 1 24 +perft 2 445 +perft 3 11499 +perft 4 226734 +perft 5 6084657 +perft 6 124625930 + +id gentest-3479 +epd 6kr/3n3p/3b2b1/B1p1n3/PpPpP3/3P2K1/8/1NR5 w - - +perft 1 20 +perft 2 502 +perft 3 8858 +perft 4 235283 +perft 5 4335520 +perft 6 120025756 + +id gentest-3480 +epd 6kr/3n3p/3b2b1/B1p1n3/P1PpP3/1p1P3K/8/1N4R1 b - - +perft 1 20 +perft 2 474 +perft 3 11244 +perft 4 244120 +perft 5 6366954 +perft 6 134822587 + +id gentest-3481 +epd 7r/3n2kp/3b2b1/B1p1n3/P1PpP3/1p1P4/6K1/1N4R1 w - - +perft 1 21 +perft 2 682 +perft 3 14728 +perft 4 466744 +perft 5 10193304 +perft 6 327177574 + +id gentest-3482 +epd 5r2/3n2kp/3b2b1/B1p1n3/P1PpP3/1pNP4/6K1/1R6 b - - +perft 1 40 +perft 2 897 +perft 3 33827 +perft 4 769904 +perft 5 28272675 +perft 6 643184062 + +id gentest-3483 +epd 4b3/3n2kp/3b4/B1pNn3/P1PpPr2/1p1P4/6K1/1R6 w - - +perft 1 29 +perft 2 1064 +perft 3 27731 +perft 4 963437 +perft 5 23768171 +perft 6 807743131 + +id gentest-3484 +epd 1n2b3/6kp/3b4/2pNn3/P1PpPr2/1pBP3K/8/1R6 b - - +perft 1 41 +perft 2 1039 +perft 3 38158 +perft 4 934306 +perft 5 32799111 +perft 6 776347257 + +id gentest-3485 +epd 1n6/6kp/2bb4/2pNnr2/P1PpP3/1pBP3K/8/5R2 w - - +perft 1 31 +perft 2 1112 +perft 3 29982 +perft 4 1048628 +perft 5 26373625 +perft 6 905140167 + +id gentest-3486 +epd 1n6/4Nnkp/2bb4/2p2r2/P1PpP3/1pBP3K/8/4R3 b - - +perft 1 38 +perft 2 933 +perft 3 31217 +perft 4 741819 +perft 5 24509561 +perft 6 567863365 + +id gentest-3487 +epd 1n3k2/5n1p/2b5/2p2N2/P1PpP3/1pBP3K/7b/4R3 w - - +perft 1 29 +perft 2 808 +perft 3 21382 +perft 4 569247 +perft 5 14578329 +perft 6 379444412 + +id gentest-3488 +epd 1n3k2/7p/2bn4/2p5/P1PpP1KN/1pBP4/7b/4R3 b - - +perft 1 31 +perft 2 740 +perft 3 21119 +perft 4 502412 +perft 5 14158043 +perft 6 334357897 + +id gentest-3489 +epd 1n3k2/7p/2bn4/B1p5/P1PpPbKN/1p1P4/8/4R3 w - - +perft 1 24 +perft 2 770 +perft 3 18276 +perft 4 558272 +perft 5 13293453 +perft 6 390154217 + +id gentest-3490 +epd 1n3k2/8/2bn4/B1p4K/P1PpPb1N/1p1PR3/8/8 b - - +perft 1 31 +perft 2 575 +perft 3 16293 +perft 4 318116 +perft 5 8748463 +perft 6 177736343 + +id gentest-3491 +epd bn3k2/8/3n4/B1p5/P1PpP1KN/1p1Pb3/8/8 w - - +perft 1 16 +perft 2 425 +perft 3 7084 +perft 4 184146 +perft 5 3086552 +perft 6 79820852 + +id gentest-3492 +epd bnn2k2/8/1B6/P1p5/2PpP1KN/1p1Pb3/8/8 b - - +perft 1 24 +perft 2 358 +perft 3 8122 +perft 4 122126 +perft 5 2878147 +perft 6 44513305 + +id gentest-3493 +epd bnn1k3/8/1B6/P1p5/2PpP2N/1p1P3K/8/6b1 w - - +perft 1 13 +perft 2 247 +perft 3 3650 +perft 4 74577 +perft 5 1156305 +perft 6 24823020 + +id gentest-3494 +epd 1nnBk3/1b6/8/P1p5/2PpP1KN/1p1P4/8/6b1 b - - +perft 1 20 +perft 2 345 +perft 3 7300 +perft 4 122572 +perft 5 2681252 +perft 6 44981053 + +id gentest-3495 +epd 4k3/nb1n4/8/P1p3B1/2PpP1KN/1p1P4/8/6b1 w - - +perft 1 20 +perft 2 413 +perft 3 7554 +perft 4 162298 +perft 5 2882534 +perft 6 64299971 + +id gentest-3496 +epd 4k3/nb6/5n2/P1p5/2PpP2N/1p1P3K/8/6b1 b - - +perft 1 25 +perft 2 204 +perft 3 5027 +perft 4 50934 +perft 5 1237840 +perft 6 13041072 + +id gentest-3497 +epd b3k3/n7/5nN1/P1p5/2PpP3/3P3K/1p6/6b1 w - - +perft 1 11 +perft 2 275 +perft 3 2831 +perft 4 73310 +perft 5 775213 +perft 6 20610958 + +id gentest-3498 +epd b3k3/n7/5n2/P1p5/2PpPN2/3Pb3/1p4K1/8 b - - +perft 1 28 +perft 2 355 +perft 3 10175 +perft 4 122479 +perft 5 3532994 +perft 6 39939892 + +id gentest-3499 +epd b3k3/n7/P7/2p5/2PpPN2/3Pb3/1p4Kn/8 w - - +perft 1 10 +perft 2 243 +perft 3 2522 +perft 4 62701 +perft 5 622433 +perft 6 16313037 + +id gentest-3500 +epd b3k3/n7/P7/2p5/2PpP3/3P2KN/1p5n/2b5 b - - +perft 1 24 +perft 2 212 +perft 3 5499 +perft 4 50877 +perft 5 1378616 +perft 6 13212407 + +id gentest-3501 +epd b2k4/n7/P7/2p3N1/2PpPb2/3P2K1/1p5n/8 w - - +perft 1 5 +perft 2 131 +perft 3 1135 +perft 4 26800 +perft 5 244997 +perft 6 6394461 + +id gentest-3502 +epd b1k5/n4N2/P7/2p5/2PpPb2/3P4/1p4Kn/8 b - - +perft 1 26 +perft 2 270 +perft 3 6619 +perft 4 61437 +perft 5 1590395 +perft 6 14647807 + +id gentest-3503 +epd b7/n1k2N2/P7/2p3b1/2PpP3/3P2K1/1p5n/8 w - - +perft 1 11 +perft 2 307 +perft 3 3083 +perft 4 82862 +perft 5 824887 +perft 6 22212861 + +id gentest-3504 +epd b2N4/n1k5/P7/2p5/2PpPK1b/3P4/1p5n/8 b - - +perft 1 27 +perft 2 187 +perft 3 4539 +perft 4 37626 +perft 5 973132 +perft 6 8596300 + +id gentest-3505 +epd 8/nbk5/P7/2p5/2PpPK1b/3P4/1p5n/8 w - - +perft 1 4 +perft 2 115 +perft 3 564 +perft 4 14375 +perft 5 92544 +perft 6 2304799 + +id gentest-3506 +epd 8/nbk5/P7/2p5/2PpPKnb/3P4/1p6/8 b - - +perft 1 33 +perft 2 162 +perft 3 4897 +perft 4 28508 +perft 5 785349 +perft 6 5339815 + +id gentest-3507 +epd 8/1P6/2nk4/2p5/2PpPKnb/3P4/1p6/8 w - - +perft 1 8 +perft 2 148 +perft 3 1393 +perft 4 29835 +perft 5 329324 +perft 6 7341872 + +id gentest-3508 +epd 1R6/8/2nk4/2p2K2/2PpP1nb/3P4/8/1b6 b - - +perft 1 26 +perft 2 388 +perft 3 8556 +perft 4 117605 +perft 5 2533360 +perft 6 35089494 + +id gentest-3509 +epd 1n6/8/2k3K1/2p5/2PpP1nb/3P4/8/1b6 w - - +perft 1 6 +perft 2 137 +perft 3 752 +perft 4 16901 +perft 5 90769 +perft 6 2053788 + +id gentest-3510 +epd 1n4K1/8/2k5/2p1n3/2PpP2b/3P4/8/1b6 b - - +perft 1 24 +perft 2 103 +perft 3 2479 +perft 4 11658 +perft 5 278862 +perft 6 1402084 + +id gentest-3511 +epd 1n5K/3n4/1k6/2p5/2PpP2b/3P4/8/1b6 w - - +perft 1 4 +perft 2 84 +perft 3 436 +perft 4 9416 +perft 5 49446 +perft 6 1095381 + +id gentest-3512 +epd 1n1b2K1/3n4/1k6/2p1P3/2Pp4/3P4/8/1b6 b - - +perft 1 19 +perft 2 92 +perft 3 1878 +perft 4 9912 +perft 5 209215 +perft 6 1115219 + +id gentest-3513 +epd 1n1b2K1/8/1k2P3/2p1n3/2Pp4/3b4/8/8 w - - +perft 1 4 +perft 2 117 +perft 3 646 +perft 4 17170 +perft 5 123856 +perft 6 3104023 + +id gentest-3514 +epd 1n1b4/6K1/1k2P3/2p1n3/2Pp4/8/8/5b2 b - - +perft 1 28 +perft 2 176 +perft 3 4689 +perft 4 27537 +perft 5 696131 +perft 6 5302556 + +id gentest-3515 +epd 1n1b4/2k1PnK1/8/2p5/2Pp4/8/8/5b2 w - - +perft 1 14 +perft 2 244 +perft 3 2988 +perft 4 56382 +perft 5 708720 +perft 6 14257804 + +id gentest-3516 +epd 1n6/2B2nK1/2k5/2p5/2Pp4/8/8/5b2 b - - +perft 1 17 +perft 2 236 +perft 3 4156 +perft 4 50780 +perft 5 934451 +perft 6 10908209 + +id gentest-3517 +epd 1n1B4/3k2K1/8/2p5/2Pp4/8/8/5b2 w - - +perft 1 15 +perft 2 206 +perft 3 2554 +perft 4 36785 +perft 5 442547 +perft 6 6862052 + +id gentest-3518 +epd 1n3K2/3k4/8/2p5/2bp3B/8/8/8 b - - +perft 1 19 +perft 2 173 +perft 3 3075 +perft 4 31671 +perft 5 557921 +perft 6 6073807 + +id gentest-3519 +epd 1n2K3/8/2k5/2p5/2bp3B/8/8/8 w - - +perft 1 10 +perft 2 194 +perft 3 1936 +perft 4 34591 +perft 5 360067 +perft 6 6379209 + +id gentest-3520 +epd 1n1K4/8/2k1b3/2p5/3p4/8/8/4B3 b - - +perft 1 20 +perft 2 187 +perft 3 3419 +perft 4 32774 +perft 5 588889 +perft 6 5928804 + +id gentest-3521 +epd 1n1K4/8/2k5/2p5/2b4B/3p4/8/8 w - - +perft 1 9 +perft 2 142 +perft 3 1422 +perft 4 22988 +perft 5 242447 +perft 6 4127561 + +id gentest-3522 +epd 1nK5/4B3/2k5/2p5/2b5/8/3p4/8 b - - +perft 1 20 +perft 2 166 +perft 3 3462 +perft 4 32486 +perft 5 721530 +perft 6 7205325 + +id gentest-3523 +epd 1n1K4/3bB3/2k5/2p5/8/8/3p4/8 w - - +perft 1 6 +perft 2 99 +perft 3 933 +perft 4 18767 +perft 5 179086 +perft 6 3904551 + +id gentest-3524 +epd 1n1K4/3b4/5B2/1kp5/8/8/3p4/8 b - - +perft 1 21 +perft 2 249 +perft 3 5586 +perft 4 60522 +perft 5 1408258 +perft 6 15782156 + +id gentest-3525 +epd 1n1K4/3b4/8/1kp5/3q4/8/1B6/8 w - - +perft 1 7 +perft 2 243 +perft 3 1821 +perft 4 59735 +perft 5 542116 +perft 6 17828496 + +id gentest-3526 +epd 1n6/3bK3/5B2/1kp5/8/8/8/6q1 b - - +perft 1 35 +perft 2 408 +perft 3 14407 +perft 4 171151 +perft 5 6012160 +perft 6 66273532 + +id gentest-3527 +epd 1n6/3bK3/8/1kp5/8/8/8/B5q1 w - - +perft 1 12 +perft 2 417 +perft 3 4582 +perft 4 161292 +perft 5 1794282 +perft 6 62926498 + +id gentest-3528 +epd 1n2K3/8/4b3/1kp5/8/8/8/B5q1 b - - +perft 1 40 +perft 2 353 +perft 3 13695 +perft 4 145769 +perft 5 5490802 +perft 6 58132643 + +id gentest-3529 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-3530 +epd rnbqkbnr/1ppppppp/p7/8/8/7P/PPPPPPPR/RNBQKBN1 b Qkq - +perft 1 19 +perft 2 361 +perft 3 7754 +perft 4 165962 +perft 5 3992889 +perft 6 95412713 + +id gentest-3531 +epd rnbqkb1r/1pp1pppp/p4n2/3p4/6P1/7P/PPPPPP1R/RNBQKBN1 w Qkq - +perft 1 20 +perft 2 561 +perft 3 12563 +perft 4 362982 +perft 5 8912418 +perft 6 268736612 + +id gentest-3532 +epd rnbqkb1r/1pp1pppp/5n2/p2p4/1P4P1/3P3P/P1P1PP1R/RNBQKBN1 b Qkq - +perft 1 31 +perft 2 894 +perft 3 28300 +perft 4 803592 +perft 5 26228357 +perft 6 755323044 + +id gentest-3533 +epd r2qkb1r/1ppbpppp/2n2n2/p2p4/1P4P1/3P3P/PBP1PP1R/RN1QKBN1 w Qkq - +perft 1 29 +perft 2 893 +perft 3 26174 +perft 4 835411 +perft 5 24901396 +perft 6 819143951 + +id gentest-3534 +epd r2qkb1r/1ppbpppp/2n2n2/p7/1P1p2P1/3PP2P/PBP2PBR/RN1QK1N1 b Qkq - +perft 1 31 +perft 2 1082 +perft 3 34916 +perft 4 1187320 +perft 5 39679438 +perft 6 1333216487 + +id gentest-3535 +epd 3qkb1r/1ppbppp1/r1n2n2/p6p/1P1p2P1/B2PP2P/P1P2PBR/RN1QK1N1 w Qk - +perft 1 31 +perft 2 1017 +perft 3 31664 +perft 4 1085160 +perft 5 34194490 +perft 6 1215653389 + +id gentest-3536 +epd 3qkb1r/1ppbpp2/r1n2np1/p6p/1P1p2P1/B2PPP1P/P1PN2BR/R2QK1N1 b Qk - +perft 1 34 +perft 2 977 +perft 3 34970 +perft 4 1018012 +perft 5 37693349 +perft 6 1117948621 + +id gentest-3537 +epd 3qkb1r/2pbpp2/r1n3p1/pp5n/1P1p4/B2PPP1P/P1PN2BR/R2QK1N1 w Qk - +perft 1 26 +perft 2 836 +perft 3 22297 +perft 4 772298 +perft 5 21221352 +perft 6 772525328 + +id gentest-3538 +epd 3qkb1r/2p1pp2/r1n1b1p1/pp5n/1PPp4/B2PPP1P/P2N2BR/1R1QK1N1 b k - +perft 1 37 +perft 2 1039 +perft 3 39368 +perft 4 1138903 +perft 5 44123893 +perft 6 1316111751 + +id gentest-3539 +epd 4kbr1/2p1pp2/r1nqb1p1/pp5n/1PPp4/3PPP1P/PB1N2BR/1R1QK1N1 w - - +perft 1 31 +perft 2 1274 +perft 3 39063 +perft 4 1610030 +perft 5 50140451 +perft 6 2068777209 + +id gentest-3540 +epd r3kbr1/2p1pp2/2nqb1p1/pp5n/1PPp4/B2PPP1P/P2N2BR/1R1Q1KN1 b - - +perft 1 43 +perft 2 1138 +perft 3 48679 +perft 4 1331778 +perft 5 56323141 +perft 6 1595940583 + +id gentest-3541 +epd r4br1/2pkpp2/2nqb1p1/pp6/1PPp1n2/B2PPP1P/P2N2BR/1R1QK1N1 w - - +perft 1 27 +perft 2 1077 +perft 3 28703 +perft 4 1178760 +perft 5 32550954 +perft 6 1360157303 + +id gentest-3542 +epd r2k1br1/2p1pp2/2nqb1p1/pp6/QPPp1n2/B2PPP1P/P2N2B1/1R2K1NR b - - +perft 1 40 +perft 2 1081 +perft 3 44360 +perft 4 1220750 +perft 5 50480880 +perft 6 1435045815 + +id gentest-3543 +epd r2k1br1/2p1p3/2nqb1p1/pP3p2/p1Pp1n2/B2PPP1P/P2N2B1/1R2K1NR w - - +perft 1 27 +perft 2 912 +perft 3 22937 +perft 4 803846 +perft 5 20351194 +perft 6 729814225 + +id gentest-3544 +epd r2k1br1/2p1p3/2n1b1p1/pPq2p2/p1Pp1P2/B2P1P1P/P2N1KB1/1R4NR b - - +perft 1 30 +perft 2 768 +perft 3 22854 +perft 4 571531 +perft 5 17289248 +perft 6 434278875 + +id gentest-3545 +epd r4b2/2pkp1r1/2n1b1p1/pPq2p2/p1Pp1P2/B2P1P1P/P2N1KB1/5RNR w - - +perft 1 20 +perft 2 609 +perft 3 13513 +perft 4 401365 +perft 5 9417723 +perft 6 283487112 + +id gentest-3546 +epd r4b2/2p1p1r1/2Pkb1p1/p1q2p2/p1Pp1P2/B2P1P1P/P2N2B1/4KRNR b - - +perft 1 19 +perft 2 265 +perft 3 5089 +perft 4 82325 +perft 5 1838112 +perft 6 32987100 + +id gentest-3547 +epd 4rb2/2p1p1r1/2Pkb3/p1q2pp1/p1Pp1P2/B2P1P1P/P5B1/1N2KRNR w - - +perft 1 15 +perft 2 288 +perft 3 4942 +perft 4 111469 +perft 5 2080687 +perft 6 52425712 + +id gentest-3548 +epd 4rb2/2p1p1r1/2k1b3/p1q2pp1/p1Pp1P2/3P1P1P/PB2K1B1/1N3RNR b - - +perft 1 30 +perft 2 592 +perft 3 18260 +perft 4 366507 +perft 5 11610954 +perft 6 239210353 + +id gentest-3549 +epd 4rb2/1kp1p3/4b1r1/p1q2pp1/p1Pp1P2/3P1P1P/PB1K2B1/1N3RNR w - - +perft 1 21 +perft 2 778 +perft 3 16303 +perft 4 600857 +perft 5 13019530 +perft 6 481246911 + +id gentest-3550 +epd 4rb2/1kpbp3/6r1/p1q2pp1/p1Pp1P2/2NP1P1P/PBK3B1/5RNR b - - +perft 1 43 +perft 2 1077 +perft 3 43573 +perft 4 1047997 +perft 5 40524608 +perft 6 972896730 + +id gentest-3551 +epd 3krb2/2pbp3/6r1/p1q2pp1/p1Pp1P2/2NP1P1P/PBK2RB1/6NR w - - +perft 1 23 +perft 2 751 +perft 3 17554 +perft 4 563913 +perft 5 13289638 +perft 6 426664152 + +id gentest-3552 +epd 3krb2/2p1p3/4b1r1/pNq2pp1/p1Pp1P2/3P1P1P/PB3RB1/2K3NR b - - +perft 1 28 +perft 2 656 +perft 3 19516 +perft 4 461581 +perft 5 14250623 +perft 6 344960844 + +id gentest-3553 +epd 3krb2/2p1p3/4b2r/pN3pP1/pqPp4/3P1P1P/PB3RB1/2K3NR w - - +perft 1 26 +perft 2 786 +perft 3 17487 +perft 4 552853 +perft 5 12876454 +perft 6 415209773 + +id gentest-3554 +epd 3krb1r/2p1p3/4b3/pN3pP1/pqPp4/3P1P1P/PBK2R2/5BNR b - - +perft 1 30 +perft 2 689 +perft 3 21396 +perft 4 492324 +perft 5 15609594 +perft 6 366972117 + +id gentest-3555 +epd 3krbb1/2p1p3/8/pN3pP1/pqPp3r/3P1P2/PBK2R2/5BNR w - - +perft 1 30 +perft 2 1048 +perft 3 27355 +perft 4 941483 +perft 5 24895972 +perft 6 852759889 + +id gentest-3556 +epd 3krbb1/2p1p3/8/pN3pP1/p1Pp3r/P2P1P2/1BK3R1/4qBNR b - - +perft 1 39 +perft 2 832 +perft 3 30360 +perft 4 706491 +perft 5 24521915 +perft 6 607239145 + +id gentest-3557 +epd 3kr1b1/2p1b3/8/pN2ppP1/p1Pp3r/P2P1PR1/1BK5/4qBNR w - - +perft 1 23 +perft 2 940 +perft 3 19497 +perft 4 764488 +perft 5 17011496 +perft 6 655208289 + +id gentest-3558 +epd 3kr1b1/2p5/5b2/pN2ppP1/p1P4r/P2P1PR1/2K5/B3qBNR b - - +perft 1 44 +perft 2 972 +perft 3 40543 +perft 4 943709 +perft 5 37988374 +perft 6 926499215 + +id gentest-3559 +epd 3k2b1/2p1r3/5b2/pN2ppPr/p1P4R/P2P1PR1/2K5/B3qBN1 w - - +perft 1 31 +perft 2 1188 +perft 3 30119 +perft 4 1155917 +perft 5 29420167 +perft 6 1125967088 + +id gentest-3560 +epd 3k2b1/2p1r3/5b2/pN3pPr/p1Pp2R1/P2P1P2/2K5/B3qBN1 b - - +perft 1 50 +perft 2 1018 +perft 3 45703 +perft 4 961461 +perft 5 41057144 +perft 6 890092047 + +id gentest-3561 +epd 3k2b1/2p1r3/3N4/p4pbr/p1Pp2R1/P2P1P2/2K5/B4qN1 w - - +perft 1 22 +perft 2 943 +perft 3 17680 +perft 4 733631 +perft 5 14386718 +perft 6 588404908 + +id gentest-3562 +epd 3k2b1/2p1r3/3N4/p4pbr/p1Pp2R1/P1BP1P2/6q1/3K2N1 b - - +perft 1 51 +perft 2 1113 +perft 3 48633 +perft 4 1060424 +perft 5 43967215 +perft 6 964808695 + +id gentest-3563 +epd 3k2br/2p3r1/3N4/p4pb1/p1Pp3R/P1BP1P2/6q1/3K2N1 w - - +perft 1 30 +perft 2 1200 +perft 3 28217 +perft 4 1113783 +perft 5 25466144 +perft 6 999872808 + +id gentest-3564 +epd 3k2br/2p3r1/3N4/p5b1/pBPp1p2/P2P1P2/6q1/3K2NR b - - +perft 1 41 +perft 2 802 +perft 3 29100 +perft 4 592923 +perft 5 21553412 +perft 6 448581249 + +id gentest-3565 +epd 3k2b1/2p3r1/3N2r1/p5b1/pBPp1p2/P2P1P2/6q1/4K1NR w - - +perft 1 22 +perft 2 745 +perft 3 13417 +perft 4 472257 +perft 5 8924275 +perft 6 320701202 + +id gentest-3566 +epd 4k1b1/1Np3r1/6r1/p5b1/pBPp1p2/P2P1P1N/6q1/4K2R b - - +perft 1 40 +perft 2 624 +perft 3 23920 +perft 4 398832 +perft 5 15261307 +perft 6 276616126 + +id gentest-3567 +epd 4k1b1/1Np3r1/3r4/B5b1/p1Pp1p2/P2P1q1N/8/4K2R w - - +perft 1 17 +perft 2 755 +perft 3 12524 +perft 4 538646 +perft 5 9999696 +perft 6 417382181 + +id gentest-3568 +epd 4k1b1/1NB3r1/3r4/6b1/p1Pp1p2/P2P3N/4K3/7R b - - +perft 1 31 +perft 2 811 +perft 3 23551 +perft 4 609930 +perft 5 17537276 +perft 6 452088001 + +id gentest-3569 +epd 4k3/1NB3r1/3r1b2/3b4/p1Pp1p2/P2P4/4K3/6NR w - - +perft 1 25 +perft 2 868 +perft 3 20176 +perft 4 667823 +perft 5 16090585 +perft 6 516406339 + +id gentest-3570 +epd 3bk2R/1N4r1/3r4/B2b4/p1Pp1p2/P2P4/4K3/6N1 b - - +perft 1 5 +perft 2 144 +perft 3 4640 +perft 4 117784 +perft 5 3714207 +perft 6 93417523 + +id gentest-3571 +epd 3b3R/1N2k3/3r4/B2b4/p1Pp1p2/P2P1N2/4K3/6r1 w - - +perft 1 33 +perft 2 1096 +perft 3 30754 +perft 4 962307 +perft 5 26127958 +perft 6 792804880 + +id gentest-3572 +epd 3b3R/1N2k3/3r4/B7/p1bp1p1N/P2P4/5K2/6r1 b - - +perft 1 40 +perft 2 940 +perft 3 28107 +perft 4 683300 +perft 5 19939204 +perft 6 495830114 + +id gentest-3573 +epd 3B3R/1N1k4/4r3/8/p1bp1p1N/P2P4/5K2/6r1 w - - +perft 1 22 +perft 2 713 +perft 3 16680 +perft 4 507971 +perft 5 12481425 +perft 6 363871551 + +id gentest-3574 +epd 3B4/1N1k4/7R/8/p1bprp2/P2P4/5KN1/6r1 b - - +perft 1 27 +perft 2 741 +perft 3 19190 +perft 4 487776 +perft 5 12981359 +perft 6 324095934 + +id gentest-3575 +epd 3B4/3k4/7R/N7/p1bp1p2/P2P4/4rKN1/1r6 w - - +perft 1 2 +perft 2 66 +perft 3 1849 +perft 4 52422 +perft 5 1381088 +perft 6 37785568 + +id gentest-3576 +epd 6b1/3kB3/7R/N7/p2p1p2/P2P1K2/4r1N1/1r6 b - - +perft 1 37 +perft 2 1071 +perft 3 34991 +perft 4 940462 +perft 5 28648278 +perft 6 753485006 + +id gentest-3577 +epd 6b1/3k4/4R3/N7/p2p1p2/P2P1K2/4r1N1/1r6 w - - +perft 1 24 +perft 2 741 +perft 3 15386 +perft 4 448358 +perft 5 9321047 +perft 6 265071917 + +id gentest-3578 +epd 6b1/3k4/4R3/N7/p2pKp2/P2P4/3r4/1r2N3 b - - +perft 1 28 +perft 2 560 +perft 3 14802 +perft 4 301069 +perft 5 8104784 +perft 6 168654203 + +id gentest-3579 +epd 6b1/r2k4/4R3/N7/p2p1K2/P2P4/3r4/4N3 w - - +perft 1 27 +perft 2 571 +perft 3 13490 +perft 4 323519 +perft 5 7341207 +perft 6 186485031 + +id gentest-3580 +epd 6b1/r1k5/2NR4/8/p2p1K2/P2P4/3r4/4N3 b - - +perft 1 24 +perft 2 577 +perft 3 14070 +perft 4 328211 +perft 5 8085565 +perft 6 185846940 + +id gentest-3581 +epd 8/r7/1kN5/8/p2R1K2/Pb1P4/3r4/4N3 w - - +perft 1 26 +perft 2 791 +perft 3 18824 +perft 4 529960 +perft 5 12387296 +perft 6 341273390 + +id gentest-3582 +epd 8/r7/2k5/8/pR3K2/Pb1P4/2Nr4/8 b - - +perft 1 29 +perft 2 584 +perft 3 15439 +perft 4 305857 +perft 5 8299007 +perft 6 159429741 + +id gentest-3583 +epd 8/r7/1R6/2k5/p4K2/Pb1P4/2N4r/8 w - - +perft 1 26 +perft 2 725 +perft 3 15685 +perft 4 431799 +perft 5 8749482 +perft 6 239630160 + +id gentest-3584 +epd 8/3r4/2R5/2k5/pN3K2/Pb1P4/7r/8 b - - +perft 1 2 +perft 2 50 +perft 3 1535 +perft 4 32217 +perft 5 949977 +perft 6 18845176 + +id gentest-3585 +epd 8/r7/2R5/1k6/pN6/Pb1P1K2/7r/8 w - - +perft 1 24 +perft 2 722 +perft 3 15111 +perft 4 434677 +perft 5 8899825 +perft 6 249941168 + +id gentest-3586 +epd 8/r7/8/1k6/pN1P4/P4K2/2b4r/2R5 b - - +perft 1 32 +perft 2 582 +perft 3 18408 +perft 4 351222 +perft 5 10616103 +perft 6 205566607 + +id gentest-3587 +epd 8/1r6/8/1k6/pN1P4/P5K1/7r/2Rb4 w - - +perft 1 19 +perft 2 537 +perft 3 9443 +perft 4 251401 +perft 5 4630597 +perft 6 124933081 + +id gentest-3588 +epd 8/r7/8/1k2N3/p2P4/P5K1/7r/2Rb4 b - - +perft 1 33 +perft 2 671 +perft 3 18580 +perft 4 375230 +perft 5 10160663 +perft 6 205012981 + +id gentest-3589 +epd 8/r7/8/1k2N3/p2P4/Pb4K1/8/R6r w - - +perft 1 22 +perft 2 726 +perft 3 14541 +perft 4 448014 +perft 5 8837116 +perft 6 263668710 + +id gentest-3590 +epd 8/r7/8/1kN5/p2P4/P5K1/b7/R6r b - - +perft 1 35 +perft 2 691 +perft 3 21423 +perft 4 410826 +perft 5 12137763 +perft 6 233404889 + +id gentest-3591 +epd 8/r7/8/k1N5/p2P1K2/P7/b7/Rr6 w - - +perft 1 19 +perft 2 513 +perft 3 9344 +perft 4 253634 +perft 5 4685175 +perft 6 128342079 + +id gentest-3592 +epd 8/r7/1r6/k7/N2P1K2/P7/R7/8 b - - +perft 1 26 +perft 2 488 +perft 3 11883 +perft 4 226016 +perft 5 5494248 +perft 6 106742870 + +id gentest-3593 +epd 8/1r6/r7/k7/N2P4/P4K2/R7/8 w - - +perft 1 21 +perft 2 510 +perft 3 9843 +perft 4 228141 +perft 5 4450929 +perft 6 105497528 + +id gentest-3594 +epd 1r6/8/r7/k7/3P4/P1N2K2/5R2/8 b - - +perft 1 24 +perft 2 541 +perft 3 12585 +perft 4 281379 +perft 5 6726231 +perft 6 150429237 + +id gentest-3595 +epd 1r6/8/8/k7/N2P4/P4K2/5R2/6r1 w - - +perft 1 17 +perft 2 506 +perft 3 9687 +perft 4 260149 +perft 5 5118473 +perft 6 130711127 + +id gentest-3596 +epd 8/1r6/8/k7/N2P1K2/P7/3R4/6r1 b - - +perft 1 31 +perft 2 547 +perft 3 15378 +perft 4 291120 +perft 5 7627726 +perft 6 147145864 + +id gentest-3597 +epd 1r6/8/8/k7/N2P1K2/P2R4/8/6r1 w - - +perft 1 18 +perft 2 539 +perft 3 9750 +perft 4 264438 +perft 5 4977685 +perft 6 127743287 + +id gentest-3598 +epd 1r6/8/1k6/8/3P1K2/P6R/1N6/6r1 b - - +perft 1 29 +perft 2 644 +perft 3 16441 +perft 4 346341 +perft 5 8942754 +perft 6 186177701 + +id gentest-3599 +epd 6r1/8/1k6/8/3P2K1/P6R/1N6/3r4 w - - +perft 1 5 +perft 2 155 +perft 3 2827 +perft 4 73236 +perft 5 1411027 +perft 6 35860717 + +id gentest-3600 +epd 6r1/8/k7/8/3P4/P4K1R/8/3N4 b - - +perft 1 19 +perft 2 348 +perft 3 5903 +perft 4 124114 +perft 5 2024653 +perft 6 43817845 + +id gentest-3601 +epd 3r4/k7/8/8/3P4/P3K2R/8/3N4 w - - +perft 1 21 +perft 2 322 +perft 3 7082 +perft 4 109525 +perft 5 2412924 +perft 6 37965041 + +id gentest-3602 +epd 3r4/1k6/8/8/3PK3/P1N4R/8/8 b - - +perft 1 19 +perft 2 453 +perft 3 7405 +perft 4 173125 +perft 5 2768419 +perft 6 63242987 + +id gentest-3603 +epd k1r5/8/8/8/3PK3/P6R/4N3/8 w - - +perft 1 27 +perft 2 417 +perft 3 9565 +perft 4 142993 +perft 5 3186342 +perft 6 47918720 + +id gentest-3604 +epd k7/8/5K2/8/2rP4/P6R/4N3/8 b - - +perft 1 13 +perft 2 336 +perft 3 4899 +perft 4 117391 +perft 5 1761151 +perft 6 40747570 + +id gentest-3605 +epd k5r1/5K2/8/8/3P4/P6R/4N3/8 w - - +perft 1 24 +perft 2 358 +perft 3 7557 +perft 4 111974 +perft 5 2413980 +perft 6 36354752 + +id gentest-3606 +epd k3r3/5K2/8/8/3P1N2/P4R2/8/8 b - - +perft 1 16 +perft 2 325 +perft 3 5019 +perft 4 110317 +perft 5 1696859 +perft 6 38218790 + +id gentest-3607 +epd 1k3r2/4K3/8/8/3P1N2/P4R2/8/8 w - - +perft 1 22 +perft 2 290 +perft 3 5935 +perft 4 84689 +perft 5 1775326 +perft 6 26383065 + +id gentest-3608 +epd 1k6/5r2/4K3/8/3P1N2/P7/5R2/8 b - - +perft 1 16 +perft 2 318 +perft 3 4910 +perft 4 104603 +perft 5 1603414 +perft 6 34854812 + +id gentest-3609 +epd 2k5/7r/4K3/8/3P4/P6N/5R2/8 w - - +perft 1 24 +perft 2 358 +perft 3 7380 +perft 4 110496 +perft 5 2238439 +perft 6 33931298 + +id gentest-3610 +epd 3k4/7r/4K3/8/3P1R2/P6N/8/8 b - - +perft 1 15 +perft 2 262 +perft 3 3683 +perft 4 66062 +perft 5 952356 +perft 6 17709480 + +id gentest-3611 +epd 3k4/7r/5K2/8/3P1R2/P6N/8/8 w - - +perft 1 17 +perft 2 279 +perft 3 4901 +perft 4 74205 +perft 5 1382811 +perft 6 20986896 + +id gentest-3612 +epd 3k4/5K2/7r/8/3P1R2/P7/8/6N1 b - - +perft 1 17 +perft 2 269 +perft 3 4249 +perft 4 75113 +perft 5 1178886 +perft 6 22239370 + +id gentest-3613 +epd 3k4/5K2/1r6/8/3P2R1/P7/8/6N1 w - - +perft 1 17 +perft 2 277 +perft 3 4996 +perft 4 78334 +perft 5 1512451 +perft 6 23538898 + +id gentest-3614 +epd 2k1K3/8/1r6/8/3P4/P7/6R1/6N1 b - - +perft 1 17 +perft 2 336 +perft 3 5082 +perft 4 96479 +perft 5 1474480 +perft 6 28306669 + +id gentest-3615 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-3616 +epd rnbqkbnr/ppppp1pp/5p2/8/6P1/2N5/PPPPPP1P/R1BQKBNR b KQkq - +perft 1 19 +perft 2 438 +perft 3 9280 +perft 4 231308 +perft 5 5338058 +perft 6 141890546 + +id gentest-3617 +epd rnbqkb1r/pppppnpp/5p2/8/5PP1/2N5/PPPPP2P/R1BQKBNR w KQkq - +perft 1 23 +perft 2 503 +perft 3 12617 +perft 4 292864 +perft 5 7820901 +perft 6 193299666 + +id gentest-3618 +epd rnbqkb1r/ppppp1pp/5p1n/8/N4PP1/7P/PPPPP3/R1BQKBNR b KQkq - +perft 1 21 +perft 2 420 +perft 3 9542 +perft 4 219176 +perft 5 5372985 +perft 6 136179030 + +id gentest-3619 +epd rnbqkb1r/ppp1p1pp/7n/3p1p2/N4PP1/7P/PPPPPK2/R1BQ1BNR w kq - +perft 1 25 +perft 2 623 +perft 3 15975 +perft 4 422910 +perft 5 11426976 +perft 6 321342833 + +id gentest-3620 +epd rnbqkbnr/ppp1p1pp/8/3p1p2/N4PP1/P2P3P/1PP1PK2/R1BQ1BNR b kq - +perft 1 25 +perft 2 674 +perft 3 18016 +perft 4 502451 +perft 5 14293915 +perft 6 413057870 + +id gentest-3621 +epd rnbqkbnr/pp2p1pp/8/2p2p2/N1Pp1PP1/P2P3P/1P2PK2/R1BQ1BNR w kq - +perft 1 25 +perft 2 650 +perft 3 17346 +perft 4 481064 +perft 5 13425718 +perft 6 390562005 + +id gentest-3622 +epd rnb1kbnr/pp2p1pp/3q4/2p2P2/N1Pp1P2/PP1P3P/4PK2/R1BQ1BNR b kq - +perft 1 34 +perft 2 799 +perft 3 26094 +perft 4 664056 +perft 5 21467579 +perft 6 578883012 + +id gentest-3623 +epd r1b1kbnr/pp2p1pp/n6q/2p2P2/NPPp1P2/P2P3P/4PK2/R1BQ1BNR w kq - +perft 1 26 +perft 2 752 +perft 3 19474 +perft 4 590210 +perft 5 15985917 +perft 6 501415235 + +id gentest-3624 +epd r1b1kbnr/p3p1pp/np5q/2p2P2/NPPp1P2/P2P3P/4P2R/R1BQKBN1 b kq - +perft 1 28 +perft 2 684 +perft 3 20913 +perft 4 559570 +perft 5 17898619 +perft 6 509813312 + +id gentest-3625 +epd r1b1kbnr/p3p1pp/np1q4/2P2P2/N1Pp1P2/P2P3P/4P2R/R1BQKBN1 w kq - +perft 1 25 +perft 2 869 +perft 3 23999 +perft 4 808429 +perft 5 23713073 +perft 6 805999165 + +id gentest-3626 +epd r3kbnr/p3p1pp/np1P4/5b2/2Pp1P2/P2P3P/1N2P2R/R1BQKBN1 b kq - +perft 1 29 +perft 2 679 +perft 3 18504 +perft 4 483893 +perft 5 13448428 +perft 6 380414864 + +id gentest-3627 +epd r3kbnr/p1n1p1pp/1p1P2b1/8/2Pp1P1P/P2P4/1N2P2R/R1BQKBN1 w kq - +perft 1 28 +perft 2 672 +perft 3 19996 +perft 4 502281 +perft 5 15729910 +perft 6 409308887 + +id gentest-3628 +epd r4bnr/p1n1pkpp/1p1P2b1/2P5/Q2p1P1P/P2P4/1N2P2R/R1B1KBN1 b - - +perft 1 26 +perft 2 992 +perft 3 25068 +perft 4 946787 +perft 5 24716344 +perft 6 936186032 + +id gentest-3629 +epd r4b1r/p1n1pkpp/3P1nb1/2p5/3p1P1P/P2P4/1NQ1P2R/R1B1KBN1 w - - +perft 1 34 +perft 2 1021 +perft 3 35108 +perft 4 1029013 +perft 5 36105817 +perft 6 1057883867 + +id gentest-3630 +epd r4b1r/p3pkpp/n2P1nb1/2p5/3Q1P1P/P2P4/1N2P2R/R1B1KBN1 b - - +perft 1 29 +perft 2 1034 +perft 3 27397 +perft 4 999607 +perft 5 26772387 +perft 6 997457947 + +id gentest-3631 +epd r4bkr/p3p1pp/n2P1Q2/2p5/5P1P/P2b4/1N2P2R/R1B1KBN1 w - - +perft 1 39 +perft 2 838 +perft 3 32906 +perft 4 714319 +perft 5 28471658 +perft 6 632153896 + +id gentest-3632 +epd r4bkr/p1n1p1pp/3P1Q2/2p5/5P1P/P2bP3/7R/R1BNKBN1 b - - +perft 1 31 +perft 2 1376 +perft 3 36592 +perft 4 1590549 +perft 5 41027217 +perft 6 1772768862 + +id gentest-3633 +epd r4bkr/p1n1p1pp/3P4/8/2pQ1P1P/P3P3/7R/RbBNKBN1 w - - +perft 1 47 +perft 2 1098 +perft 3 49816 +perft 4 1187993 +perft 5 53018454 +perft 6 1293686489 + +id gentest-3634 +epd 4rbkr/p1n1p1pp/3P4/8/2pQ1P1P/P1N1P3/7R/1RB1KBN1 b - - +perft 1 19 +perft 2 1073 +perft 3 20252 +perft 4 1092785 +perft 5 21684674 +perft 6 1128206828 + +id gentest-3635 +epd 4rbkr/2n1p2p/3P2p1/p7/2pQ1P1P/P1N1P3/4K2R/1RB2BN1 w - - +perft 1 49 +perft 2 872 +perft 3 42617 +perft 4 828709 +perft 5 39740491 +perft 6 817764368 + +id gentest-3636 +epd 4rbkr/2n4p/3P2p1/p3p3/2pQ1P1P/P1N1PK2/7R/R1B2BN1 b - - +perft 1 24 +perft 2 1166 +perft 3 27146 +perft 4 1245357 +perft 5 29338866 +perft 6 1304302205 + +id gentest-3637 +epd 4rbkr/2n5/3P2p1/p3p2p/2pQ1P1P/P3PK2/7R/R1BN1BN1 w - - +perft 1 45 +perft 2 1091 +perft 3 45813 +perft 4 1122380 +perft 5 46462886 +perft 6 1147269247 + +id gentest-3638 +epd 4rbkr/3P4/6p1/p2np2p/2pQ1P1P/P3P3/5K1R/R1BN1BN1 b - - +perft 1 32 +perft 2 1416 +perft 3 40217 +perft 4 1771396 +perft 5 47932537 +perft 6 2112923620 + +id gentest-3639 +epd 4rbkr/3P4/6p1/p2np2p/2p2P1P/P3P3/3Q1K1R/R1BN1BN1 w - - +perft 1 44 +perft 2 1270 +perft 3 55076 +perft 4 1496424 +perft 5 64038350 +perft 6 1703290169 + +id gentest-3640 +epd 5bkr/3P4/4r1p1/p2Qp2p/2p2P1P/P3P3/3B1K1R/R2N1BN1 b - - +perft 1 17 +perft 2 848 +perft 3 15877 +perft 4 768267 +perft 5 15989434 +perft 6 762435906 + +id gentest-3641 +epd 6kr/3Pb3/4r1p1/p2Qp2p/5P1P/P1p1P3/3B3R/R2NKBN1 w - - +perft 1 51 +perft 2 1048 +perft 3 47124 +perft 4 1043995 +perft 5 46920162 +perft 6 1116780210 + +id gentest-3642 +epd 6k1/3Pb3/4r1pr/p3p2p/5P1P/P1pQP3/3B3R/2RNKBN1 b - - +perft 1 27 +perft 2 1054 +perft 3 25847 +perft 4 1046369 +perft 5 25147662 +perft 6 1050919566 + +id gentest-3643 +epd 6k1/3Pb3/2r3pr/p3p2p/P4P1P/3QP3/3p3R/2RNKBN1 w - - +perft 1 5 +perft 2 163 +perft 3 7021 +perft 4 184339 +perft 5 7889262 +perft 6 196748097 + +id gentest-3644 +epd 6kr/3Pb3/2r3p1/p3p2p/P3PP1P/3Q4/3pK2R/2RN1BN1 b - - +perft 1 33 +perft 2 1411 +perft 3 39314 +perft 4 1597028 +perft 5 43968445 +perft 6 1757852484 + +id gentest-3645 +epd 3b3r/5k2/2r3p1/p3p2p/P3PP1P/3Q4/3pK2R/2RN1BN1 w - - +perft 1 43 +perft 2 1357 +perft 3 53500 +perft 4 1555494 +perft 5 59392668 +perft 6 1660499359 + +id gentest-3646 +epd 3b3r/5k2/6p1/p3p2p/P3PP1P/4Q3/2rp1K1R/2RN1BN1 b - - +perft 1 33 +perft 2 1113 +perft 3 32787 +perft 4 1139932 +perft 5 32294344 +perft 6 1151368522 + +id gentest-3647 +epd 3b1r2/4k3/6p1/p3p2p/P3PP1P/1Q6/2rp1K1R/2RN1BN1 w - - +perft 1 46 +perft 2 1140 +perft 3 40951 +perft 4 1012272 +perft 5 36996627 +perft 6 919685029 + +id gentest-3648 +epd 2rb1r2/4k3/B5p1/pQ2p2p/P3PP1P/8/3p1K1R/2RN2N1 b - - +perft 1 28 +perft 2 1115 +perft 3 26347 +perft 4 1027677 +perft 5 24693798 +perft 6 950653925 + +id gentest-3649 +epd 5r2/2b1k3/B5p1/p3p2p/P3PP1P/1Q6/2rp1K1R/2RN2N1 w - - +perft 1 47 +perft 2 1415 +perft 3 53421 +perft 4 1503730 +perft 5 56599029 +perft 6 1542277829 + +id gentest-3650 +epd 5r2/2b2k2/B5p1/p1Q1p2p/P3PP1P/8/2rp1K1R/2RN2N1 b - - +perft 1 28 +perft 2 1075 +perft 3 27596 +perft 4 1053994 +perft 5 27572789 +perft 6 1050780957 + +id gentest-3651 +epd 5r2/b4k2/B5p1/p1Q1p2p/P3PP1P/8/2rp1K1R/1R1N2N1 w - - +perft 1 37 +perft 2 809 +perft 3 30032 +perft 4 704428 +perft 5 26802731 +perft 6 653218434 + +id gentest-3652 +epd 5r2/5k2/1b4p1/p1Q1p2p/P3PPBP/8/2rp1K1R/1R1N2N1 b - - +perft 1 24 +perft 2 827 +perft 3 20199 +perft 4 740594 +perft 5 18334273 +perft 6 702941114 + +id gentest-3653 +epd 3b1r2/5k2/6p1/p3p2p/P3PPBP/Q7/3p1K1R/1RrN2N1 w - - +perft 1 50 +perft 2 1133 +perft 3 48747 +perft 4 1170976 +perft 5 48483480 +perft 6 1215600693 + +id gentest-3654 +epd 3b1r2/6k1/6p1/p3p2p/P3PP1P/7B/1Q1p1K1R/1RrN2N1 b - - +perft 1 29 +perft 2 976 +perft 3 26665 +perft 4 978045 +perft 5 26594317 +perft 6 1015966662 + +id gentest-3655 +epd 5r2/1Qb3k1/6p1/p3p2p/P3PP1P/2r4B/3p1K1R/1R1N2N1 w - - +perft 1 38 +perft 2 1185 +perft 3 43591 +perft 4 1272067 +perft 5 48312439 +perft 6 1350799868 + +id gentest-3656 +epd 8/2b3k1/4Brp1/p3p2p/P3PP1P/1Qr5/3p1K1R/1R1N2N1 b - - +perft 1 26 +perft 2 896 +perft 3 23236 +perft 4 871492 +perft 5 22613752 +perft 6 876286839 + +id gentest-3657 +epd 3b4/5Bk1/5rp1/p3p2p/P1r1PP1P/1Q6/3p1K1R/1R1N2N1 w - - +perft 1 41 +perft 2 1170 +perft 3 46497 +perft 4 1296496 +perft 5 52004069 +perft 6 1448624630 + +id gentest-3658 +epd 3b4/5rk1/6p1/p3p2p/P1r1PP1P/8/Q2pK2R/1R1N2N1 b - - +perft 1 34 +perft 2 1138 +perft 3 36126 +perft 4 1238630 +perft 5 36837436 +perft 6 1283487672 + +id gentest-3659 +epd 3b4/1r4k1/6p1/p3p2p/P2rPP1P/8/3QK2R/1R1N2N1 w - - +perft 1 36 +perft 2 1240 +perft 3 43477 +perft 4 1379001 +perft 5 49191825 +perft 6 1475459105 + +id gentest-3660 +epd 3b4/1r4k1/3r2p1/p3p2p/P3PP1P/1R2N3/3QK2R/6N1 b - - +perft 1 35 +perft 2 1469 +perft 3 45664 +perft 4 1886417 +perft 5 55357694 +perft 6 2257221955 + +id gentest-3661 +epd 3b3k/8/3r2p1/p3p2p/Pr2PP1P/1R2N3/3QK1R1/6N1 w - - +perft 1 40 +perft 2 1172 +perft 3 46806 +perft 4 1289983 +perft 5 51938280 +perft 6 1392562327 + +id gentest-3662 +epd 7k/8/3r2p1/p3p1bp/PR2PP1P/8/3QK1R1/3N2N1 b - - +perft 1 22 +perft 2 836 +perft 3 16784 +perft 4 653017 +perft 5 12807786 +perft 6 501842305 + +id gentest-3663 +epd 7k/8/5rpb/p3p2p/PR2PP1P/2N5/3QK1R1/6N1 w - - +perft 1 44 +perft 2 792 +perft 3 33717 +perft 4 584194 +perft 5 24230412 +perft 6 423171970 + +id gentest-3664 +epd 7k/8/3Qr1Rb/p3p2p/PR2PP1P/2N5/4K3/6N1 b - - +perft 1 12 +perft 2 585 +perft 3 7682 +perft 4 347034 +perft 5 4914686 +perft 6 212491689 + +id gentest-3665 +epd 6R1/4r2k/3Q3b/p3p2p/PR2PP1P/2N5/4K3/6N1 w - - +perft 1 58 +perft 2 786 +perft 3 41191 +perft 4 584804 +perft 5 28183538 +perft 6 420256066 + +id gentest-3666 +epd 6R1/6rk/3Q3b/p3p2p/PR2PP1P/2N2N2/5K2/8 b - - +perft 1 18 +perft 2 1002 +perft 3 15162 +perft 4 780875 +perft 5 11668510 +perft 6 559764617 + +id gentest-3667 +epd 6R1/1r5k/3Q3b/3Np2p/Pp2PP1P/5N2/5K2/8 w - - +perft 1 54 +perft 2 730 +perft 3 35710 +perft 4 496846 +perft 5 22624563 +perft 6 325999995 + +id gentest-3668 +epd 1r1R4/7k/3Q3b/3NP2p/Pp2P2P/5N2/5K2/8 b - - +perft 1 15 +perft 2 606 +perft 3 7797 +perft 4 317799 +perft 5 4425599 +perft 6 178438891 + +id gentest-3669 +epd 1R6/6k1/3Q4/3NP2p/Pp2Pb1P/5N2/5K2/8 w - - +perft 1 46 +perft 2 422 +perft 3 16916 +perft 4 147602 +perft 5 5994615 +perft 6 54393250 + +id gentest-3670 +epd 1R6/6k1/3Q4/3NP2p/Pp2P2P/8/3b2K1/4N3 b - - +perft 1 10 +perft 2 454 +perft 3 3930 +perft 4 174556 +perft 5 1564087 +perft 6 67938600 + +id gentest-3671 +epd 1R6/7k/3Q3b/4P2p/PN2P2P/8/6K1/4N3 w - - +perft 1 47 +perft 2 343 +perft 3 15509 +perft 4 124859 +perft 5 5458011 +perft 6 47211426 + +id gentest-3672 +epd 5R2/6bk/3Q4/4P2p/PN2P2P/3N4/6K1/8 b - - +perft 1 5 +perft 2 230 +perft 3 1760 +perft 4 80448 +perft 5 649727 +perft 6 29017253 + +id gentest-3673 +epd 5b2/6k1/8/3QP2p/PN2P2P/3N4/6K1/8 w - - +perft 1 36 +perft 2 282 +perft 3 9708 +perft 4 96430 +perft 5 3233593 +perft 6 32199305 + +id gentest-3674 +epd 5b2/7k/4P3/3Q3p/P3P2P/3N4/N5K1/8 b - - +perft 1 12 +perft 2 447 +perft 3 4679 +perft 4 167361 +perft 5 1788635 +perft 6 62015304 + +id gentest-3675 +epd 8/7k/4P3/3Qb2p/P3P2P/2NN4/6K1/8 w - - +perft 1 35 +perft 2 513 +perft 3 18772 +perft 4 227077 +perft 5 8142597 +perft 6 91960138 + +id gentest-3676 +epd 8/7k/3bP3/7p/P3P2P/2NN4/8/6K1 b - - +perft 1 16 +perft 2 306 +perft 3 4139 +perft 4 76844 +perft 5 964696 +perft 6 17591958 + +id gentest-3677 +epd 8/4b2k/4P3/7p/P3P2P/2N5/5N2/6K1 w - - +perft 1 17 +perft 2 238 +perft 3 4004 +perft 4 51783 +perft 5 876641 +perft 6 10786378 + +id gentest-3678 +epd 8/7k/4P3/7p/P3P2b/7N/N7/6K1 b - - +perft 1 12 +perft 2 151 +perft 3 1852 +perft 4 26036 +perft 5 327107 +perft 6 4933332 + +id gentest-3679 +epd 7k/8/4P3/7p/P3P3/6bN/N7/5K2 w - - +perft 1 13 +perft 2 160 +perft 3 2351 +perft 4 28685 +perft 5 452248 +perft 6 5652452 + +id gentest-3680 +epd 7k/8/4P3/6N1/P3P2p/6b1/N5K1/8 b - - +perft 1 11 +perft 2 164 +perft 3 1861 +perft 4 27890 +perft 5 329022 +perft 6 5158351 + +id gentest-3681 +epd 7k/8/4P3/6N1/P3P3/7p/N4K2/8 w - - +perft 1 17 +perft 2 53 +perft 3 911 +perft 4 5035 +perft 5 85577 +perft 6 549523 + +id gentest-3682 +epd 8/6k1/4P3/8/P3P3/5N1p/N7/5K2 b - - +perft 1 8 +perft 2 144 +perft 3 854 +perft 4 13893 +perft 5 96005 +perft 6 1566059 + +id gentest-3683 +epd 8/7k/4P3/8/P3P3/7p/N7/5KN1 w - - +perft 1 12 +perft 2 71 +perft 3 1036 +perft 4 6871 +perft 5 104321 +perft 6 792643 + +id gentest-3684 +epd 8/8/4P2k/8/P3P3/7N/N5K1/8 b - - +perft 1 4 +perft 2 68 +perft 3 355 +perft 4 6000 +perft 5 27013 +perft 6 466018 + +id gentest-3685 +epd 6k1/8/4P3/8/P3P3/7N/N7/6K1 w - - +perft 1 14 +perft 2 55 +perft 3 853 +perft 4 3944 +perft 5 65361 +perft 6 296144 + +id gentest-3686 +epd 5k2/8/4P3/8/P3P3/7N/N7/6K1 b - - +perft 1 4 +perft 2 55 +perft 3 266 +perft 4 4090 +perft 5 18323 +perft 6 298235 + +id gentest-3687 +epd 8/7k/4P3/8/P3P3/7N/N7/5K2 w - - +perft 1 15 +perft 2 74 +perft 3 1187 +perft 4 5387 +perft 5 91909 +perft 6 439279 + +id gentest-3688 +epd 8/6k1/4P3/8/P3P3/7N/N7/5K2 b - - +perft 1 7 +perft 2 105 +perft 3 455 +perft 4 7220 +perft 5 36284 +perft 6 612987 + +id gentest-3689 +epd 8/7k/4P3/4P3/P7/7N/N7/5K2 w - - +perft 1 14 +perft 2 69 +perft 3 1068 +perft 4 4663 +perft 5 77778 +perft 6 357669 + +id gentest-3690 +epd 6k1/8/4P3/P3P3/8/7N/N5K1/8 b - - +perft 1 4 +perft 2 64 +perft 3 285 +perft 4 4675 +perft 5 20230 +perft 6 348194 + +id gentest-3691 +epd 6k1/8/4P3/P3P3/8/8/N5K1/6N1 w - - +perft 1 15 +perft 2 60 +perft 3 936 +perft 4 4229 +perft 5 70338 +perft 6 317437 + +id gentest-3692 +epd 8/6k1/4P3/P3P3/8/3N4/6K1/6N1 b - - +perft 1 6 +perft 2 114 +perft 3 507 +perft 4 9174 +perft 5 43936 +perft 6 788469 + +id gentest-3693 +epd 8/8/4P1k1/P3P3/8/3N4/7K/6N1 w - - +perft 1 16 +perft 2 94 +perft 3 1533 +perft 4 7710 +perft 5 127354 +perft 6 605072 + +id gentest-3694 +epd 8/4P3/7k/P3P3/8/3N2K1/8/6N1 b - - +perft 1 5 +perft 2 115 +perft 3 556 +perft 4 12802 +perft 5 56496 +perft 6 1294882 + +id gentest-3695 +epd 8/4P3/6k1/P3P3/8/3N4/6K1/6N1 w - - +perft 1 23 +perft 2 153 +perft 3 3487 +perft 4 16754 +perft 5 376161 +perft 6 1733768 + +id gentest-3696 +epd 4B3/6k1/8/P3P3/8/3N1N2/6K1/8 b - - +perft 1 5 +perft 2 150 +perft 3 526 +perft 4 14873 +perft 5 64318 +perft 6 1755763 + +id gentest-3697 +epd 4B3/7k/8/P3P3/8/5N2/6K1/2N5 w - - +perft 1 27 +perft 2 112 +perft 3 2964 +perft 4 11627 +perft 5 302164 +perft 6 1307525 + +id gentest-3698 +epd 6k1/8/2B5/P3P3/8/5N2/8/2N2K2 b - - +perft 1 5 +perft 2 130 +perft 3 632 +perft 4 16503 +perft 5 80230 +perft 6 2077838 + +id gentest-3699 +epd 8/5k2/2B5/P3P3/8/5N2/4K3/2N5 w - - +perft 1 27 +perft 2 160 +perft 3 4322 +perft 4 20975 +perft 5 562438 +perft 6 2694836 + +id gentest-3700 +epd 8/6k1/2B1P3/P7/8/5N2/8/2N2K2 b - - +perft 1 7 +perft 2 189 +perft 3 818 +perft 4 21791 +perft 5 110957 +perft 6 2909616 + +id gentest-3701 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-3702 +epd rnbqkbnr/ppppp1pp/8/5p2/4P3/5P2/PPPP2PP/RNBQKBNR b KQkq - +perft 1 21 +perft 2 563 +perft 3 12798 +perft 4 349811 +perft 5 8637221 +perft 6 241986719 + +id gentest-3703 +epd r1bqkb1r/ppppp1pp/2n4n/4Pp2/8/5P2/PPPP2PP/RNBQKBNR w KQkq - +perft 1 26 +perft 2 542 +perft 3 14490 +perft 4 323037 +perft 5 8827612 +perft 6 209254694 + +id gentest-3704 +epd r1bqkb1r/p1ppp1pp/1pn4n/4Pp2/6P1/5P2/PPPPQ2P/RNB1KBNR b KQkq - +perft 1 23 +perft 2 682 +perft 3 16698 +perft 4 520659 +perft 5 13382763 +perft 6 430880874 + +id gentest-3705 +epd r1bqkb1r/p1p1pnpp/1pn5/3pPp2/6P1/2N2P2/PPPPQ2P/R1B1KBNR w KQkq d6 +perft 1 34 +perft 2 976 +perft 3 33659 +perft 4 987048 +perft 5 34510101 +perft 6 1039133404 + +id gentest-3706 +epd r1bqkb1r/p1p1pn1p/Qpn5/3pPpp1/N5P1/5P2/PPPP3P/R1B1KBNR b KQkq - +perft 1 26 +perft 2 917 +perft 3 25009 +perft 4 854886 +perft 5 24406607 +perft 6 830875526 + +id gentest-3707 +epd 1rbqk2r/p1p1pn1p/Qpn4b/1B1pPpp1/N5P1/5P2/PPPP3P/R1B1K1NR w KQk - +perft 1 32 +perft 2 681 +perft 3 22541 +perft 4 530115 +perft 5 17911447 +perft 6 461142665 + +id gentest-3708 +epd r1bqk2r/p1p1pn1p/Qpn4b/1B1pPpp1/NP4P1/5P2/P1PP3P/R1BK2NR b k - +perft 1 20 +perft 2 611 +perft 3 13713 +perft 4 440500 +perft 5 11008139 +perft 6 364269894 + +id gentest-3709 +epd r1b1k2r/p1pqpn1p/Qp5b/1B1pPpp1/1P1n2P1/5P2/PNPP3P/R1BK2NR w k - +perft 1 31 +perft 2 824 +perft 3 25629 +perft 4 738958 +perft 5 22996986 +perft 6 698849312 + +id gentest-3710 +epd r1b1k2r/p1p1pn1p/Qpq4b/1B1pPpp1/1P1n2P1/3P1P2/PNP4P/R1B1K1NR b k - +perft 1 27 +perft 2 828 +perft 3 23718 +perft 4 743388 +perft 5 22832445 +perft 6 730956367 + +id gentest-3711 +epd r1b1k2r/p1p1p2p/Qpqn3b/1B1pP1p1/1P1n1pP1/3P1P2/PNPB3P/R3K1NR w k - +perft 1 33 +perft 2 1017 +perft 3 31699 +perft 4 1016399 +perft 5 32160991 +perft 6 1074059093 + +id gentest-3712 +epd r1bk3r/p1p1p2p/Qpqn3b/1B1pP1p1/1PPn1pP1/3P1P2/PN1B3P/1R2K1NR b - - +perft 1 36 +perft 2 1072 +perft 3 36846 +perft 4 1130632 +perft 5 38619728 +perft 6 1213740061 + +id gentest-3713 +epd 1rbkr3/p1p1p2p/Qpqn3b/1B1pP1p1/1PPn1pP1/3P1P2/PN1B3P/2R1K1NR w - - +perft 1 32 +perft 2 1096 +perft 3 34148 +perft 4 1157201 +perft 5 37012981 +perft 6 1251589316 + +id gentest-3714 +epd 1rbkr3/p1p1p2p/Qpqn3b/1n1pP1p1/1PP2pP1/3PBP2/PN2N2P/2R1K2R b - - +perft 1 31 +perft 2 1297 +perft 3 41123 +perft 4 1638918 +perft 5 53796012 +perft 6 2069694436 + +id gentest-3715 +epd 1rbk1r2/p1p1p2p/Qp1n3b/1n1pP1p1/1Pq2pP1/P2PBP2/1N2N2P/2R1K2R w - - +perft 1 41 +perft 2 1609 +perft 3 60336 +perft 4 2302067 +perft 5 84267464 +perft 6 3154738459 + +id gentest-3716 +epd 1rbk1r2/p1p1p2p/Qp5b/1nBpPnp1/1Pq2pP1/P2P1P2/1N2N2P/1R2K2R b - - +perft 1 38 +perft 2 1326 +perft 3 48270 +perft 4 1625561 +perft 5 59153223 +perft 6 1957031578 + +id gentest-3717 +epd 1rbk1r2/p1p1p2p/1p5b/QnBpPnp1/1P3pP1/P2PqP2/1N2N2P/1R2K2R w - - +perft 1 26 +perft 2 988 +perft 3 24564 +perft 4 923250 +perft 5 24576001 +perft 6 914423102 + +id gentest-3718 +epd 1rb1kr2/p1p1p2p/1p2P2b/QnBp1np1/1P3pP1/P2PqP2/1N2N2P/3RK2R b - - +perft 1 38 +perft 2 858 +perft 3 31164 +perft 4 769020 +perft 5 27867010 +perft 6 739509790 + +id gentest-3719 +epd 1rb1k1r1/p1p1p2p/1p2P2b/Qn1p1np1/1P1B1pP1/P2P1P2/1N1qN2P/3RK2R w - - +perft 1 4 +perft 2 132 +perft 3 4250 +perft 4 138537 +perft 5 4409007 +perft 6 146128446 + +id gentest-3720 +epd 1rb1k1r1/p1p1p2p/1p2P2b/Q2p1np1/NP1B1pP1/P1nP1P2/3qN2P/3R1K1R b - - +perft 1 41 +perft 2 1348 +perft 3 53178 +perft 4 1678867 +perft 5 65118358 +perft 6 2029277798 + +id gentest-3721 +epd 1rb1k1r1/p1p1p2p/1p2P2b/Q2p1np1/NP1B1pP1/P1nP1PN1/4q2P/3R1K1R w - - +perft 1 2 +perft 2 80 +perft 3 2546 +perft 4 95781 +perft 5 2994218 +perft 6 109425287 + +id gentest-3722 +epd 1rb1k1r1/p1p1p2p/1p2P2b/Q2p2p1/NP1B1pP1/P1nP1Pn1/4N2P/3R2KR b - - +perft 1 32 +perft 2 1048 +perft 3 31177 +perft 4 1040883 +perft 5 29924203 +perft 6 1017719808 + +id gentest-3723 +epd 1rb1k1r1/p1p1p1bp/1p2P3/Qn1p2p1/NP1B1NP1/P2P1Pn1/7P/3R2KR w - - +perft 1 35 +perft 2 1138 +perft 3 37780 +perft 4 1213056 +perft 5 41006367 +perft 6 1303038181 + +id gentest-3724 +epd 1rb1k1r1/p1p1p1bp/1N2P3/3p2p1/QP1B1NP1/P1nP1Pn1/7P/3R2KR b - - +perft 1 6 +perft 2 224 +perft 3 7699 +perft 4 272720 +perft 5 9074843 +perft 6 327359686 + +id gentest-3725 +epd 1rb1k1r1/p3p1Bp/1N2P3/1npp2p1/QP3NP1/P2P1Pn1/7P/3R2KR w - - +perft 1 39 +perft 2 1007 +perft 3 37939 +perft 4 986148 +perft 5 37670846 +perft 6 996287958 + +id gentest-3726 +epd 1rb1k1r1/p3p1Bp/1N2P3/1npN2p1/QP4P1/P2P1P2/4n1KP/3R3R b - - +perft 1 24 +perft 2 980 +perft 3 23021 +perft 4 949864 +perft 5 23538518 +perft 6 980273261 + +id gentest-3727 +epd 2b1k3/p3p1rp/1r2P3/1npN2p1/1P4P1/PQ1P1P2/4n1KP/3R3R w - - +perft 1 33 +perft 2 991 +perft 3 32916 +perft 4 993720 +perft 5 33806954 +perft 6 1031531742 + +id gentest-3728 +epd 2b1k3/p3p1rp/1r2P3/1np3p1/1P3nP1/PQNP1P2/5K1P/3R3R b - - +perft 1 34 +perft 2 1117 +perft 3 36991 +perft 4 1213503 +perft 5 39414566 +perft 6 1302733670 + +id gentest-3729 +epd 2b1k3/4p1rp/1r1nP3/p1p3p1/1P3nP1/PQNP1P2/5K1P/5R1R w - - +perft 1 34 +perft 2 1152 +perft 3 35954 +perft 4 1179405 +perft 5 37546427 +perft 6 1206791550 + +id gentest-3730 +epd 2b1k3/4p1rp/1r1nP3/p5p1/Pp3nP1/1QNP1P2/7P/4KR1R b - - +perft 1 31 +perft 2 745 +perft 3 22846 +perft 4 577478 +perft 5 17427901 +perft 6 464514047 + +id gentest-3731 +epd 2b1k3/4p2p/1r1nP1r1/p5p1/Pp4P1/1Q1n1P2/N6P/4KR1R w - - +perft 1 4 +perft 2 118 +perft 3 3088 +perft 4 91337 +perft 5 2524735 +perft 6 74953228 + +id gentest-3732 +epd 2b1k3/4p3/1r1nP1r1/p5pP/Pp6/1Q1n1P2/N3K2P/5R1R b - - +perft 1 30 +perft 2 825 +perft 3 25169 +perft 4 731116 +perft 5 22166590 +perft 6 674789880 + +id gentest-3733 +epd 4k3/3bp3/1r1nPr2/p5pP/Pp6/3n1P2/N1Q1K2P/5R1R w - - +perft 1 33 +perft 2 1107 +perft 3 34835 +perft 4 1144893 +perft 5 36396175 +perft 6 1180243985 + +id gentest-3734 +epd 4k3/1r1bp3/3nPr2/p1Q3pP/PN6/3n1P2/4K2P/5R1R b - - +perft 1 37 +perft 2 1430 +perft 3 48593 +perft 4 1751365 +perft 5 57956195 +perft 6 2040419691 + +id gentest-3735 +epd 4k3/1r2p3/3nP1r1/p5pP/bN6/3n1P2/4KQ1P/5R1R w - - +perft 1 31 +perft 2 1104 +perft 3 32741 +perft 4 1117314 +perft 5 34362620 +perft 6 1137969932 + +id gentest-3736 +epd 4k3/1r1bp3/3nP1r1/p5pP/1N6/3nQP2/4K2P/1R5R b - - +perft 1 35 +perft 2 1376 +perft 3 46504 +perft 4 1794836 +perft 5 59383110 +perft 6 2263140853 + +id gentest-3737 +epd 4k3/1r1bp3/3nP1r1/p5pP/1N2Q3/5P2/4K2P/1R5n w - - +perft 1 41 +perft 2 1133 +perft 3 42945 +perft 4 1203816 +perft 5 44176095 +perft 6 1252368504 + +id gentest-3738 +epd 4k3/1r1bp3/N2nP1r1/p6P/4Q1p1/5P2/4K2P/3R3n b - - +perft 1 33 +perft 2 1271 +perft 3 39094 +perft 4 1439409 +perft 5 43569122 +perft 6 1559740367 + +id gentest-3739 +epd Q1n1k3/2rbp3/N3P1r1/p6P/6p1/5P2/4K2P/3R3n w - - +perft 1 36 +perft 2 828 +perft 3 24723 +perft 4 595207 +perft 5 18206229 +perft 6 461619963 + +id gentest-3740 +epd Q1n1k3/2rbp3/N3P1r1/p6P/8/3K1P1p/8/3R3n b - - +perft 1 28 +perft 2 685 +perft 3 17824 +perft 4 475811 +perft 5 12893744 +perft 6 360994832 + +id gentest-3741 +epd 2n1k3/3bp3/N3P1r1/p1r4P/4Q3/3K1P1p/8/3R3n w - - +perft 1 37 +perft 2 1151 +perft 3 38283 +perft 4 1162780 +perft 5 38243438 +perft 6 1150151441 + +id gentest-3742 +epd 2n1k3/1Q1bp3/N3P1r1/p6P/4K3/2r2P1p/8/3R3n b - - +perft 1 34 +perft 2 1050 +perft 3 31186 +perft 4 934810 +perft 5 27366351 +perft 6 811168589 + +id gentest-3743 +epd 2n2k2/3bp3/N3P1r1/p6P/1Q2K3/5P1p/2r5/3R3n w - - +perft 1 45 +perft 2 1655 +perft 3 57231 +perft 4 1954990 +perft 5 64719060 +perft 6 2121000489 + +id gentest-3744 +epd 2n2k2/3bp3/N3P3/p6P/4K3/1Q3P1p/2r5/4R1rn b - - +perft 1 37 +perft 2 1142 +perft 3 39744 +perft 4 1217006 +perft 5 40592422 +perft 6 1244071070 + +id gentest-3745 +epd 2n2k2/3bp3/N3P3/p6P/4K3/1Q2RP1p/5r2/6rn w - - +perft 1 33 +perft 2 1162 +perft 3 35231 +perft 4 1148886 +perft 5 34634338 +perft 6 1099487166 + +id gentest-3746 +epd 2n2k2/4p3/N3b3/p6P/4K3/4RP1p/5r1Q/6rn b - - +perft 1 40 +perft 2 971 +perft 3 35403 +perft 4 901348 +perft 5 31582423 +perft 6 839579792 + +id gentest-3747 +epd 2n2k2/3bp3/N7/p6P/4K3/R4P1p/5r1Q/1r5n w - - +perft 1 31 +perft 2 1182 +perft 3 32090 +perft 4 1157578 +perft 5 31817796 +perft 6 1110077969 + +id gentest-3748 +epd 2n2k2/3bp3/N7/p6P/5P2/R3K2p/2r4Q/1r5n b - - +perft 1 45 +perft 2 1063 +perft 3 44293 +perft 4 1147337 +perft 5 44829561 +perft 6 1221389245 + +id gentest-3749 +epd 2n2k2/3bp3/N7/p6P/5P2/1R2K2p/7Q/1r4rn w - - +perft 1 33 +perft 2 1221 +perft 3 36880 +perft 4 1333039 +perft 5 40261554 +perft 6 1436732774 + +id gentest-3750 +epd 1Qn2k2/4p3/N3b3/p4P1P/8/1R2K2p/8/1r4rn b - - +perft 1 33 +perft 2 996 +perft 3 33669 +perft 4 1039076 +perft 5 35826797 +perft 6 1118713782 + +id gentest-3751 +epd 1Qn3k1/4pb2/N7/p4P1P/1R6/4K2p/8/1r4rn w - - +perft 1 36 +perft 2 1262 +perft 3 40252 +perft 4 1435235 +perft 5 45602849 +perft 6 1622029513 + +id gentest-3752 +epd 1Qn3k1/4pb2/N7/p4P1P/3K4/7p/1R4r1/1r5n b - - +perft 1 37 +perft 2 1213 +perft 3 43351 +perft 4 1378035 +perft 5 49463200 +perft 6 1559208584 + +id gentest-3753 +epd 2n3k1/1Q2p3/N7/p4P1P/3K4/1b5p/1R1r4/1r5n w - - +perft 1 6 +perft 2 238 +perft 3 6988 +perft 4 236166 +perft 5 7102659 +perft 6 235089853 + +id gentest-3754 +epd 6k1/3Qp3/Nn6/p1K2P1P/8/1b5p/1R1r4/1r5n b - - +perft 1 44 +perft 2 1172 +perft 3 40637 +perft 4 1129579 +perft 5 37842535 +perft 6 1081971583 + +id gentest-3755 +epd 3Q4/4p2k/Nn6/p1K2P1P/8/7p/1R1r4/1r1b3n w - - +perft 1 32 +perft 2 1016 +perft 3 28470 +perft 4 901728 +perft 5 25617379 +perft 6 816571012 + +id gentest-3756 +epd 3Q4/4p2k/Nn1r1P2/p1K4P/8/7p/R7/1r1b3n b - - +perft 1 36 +perft 2 878 +perft 3 29443 +perft 4 753974 +perft 5 25707716 +perft 6 687392133 + +id gentest-3757 +epd 1N1Q4/4p2k/3r1P2/p1K4P/2n5/1r5p/R7/3b3n w - - +perft 1 29 +perft 2 1103 +perft 3 29813 +perft 4 1091535 +perft 5 29865074 +perft 6 1069694988 + +id gentest-3758 +epd 1N6/4p3/3Q1P1k/p1K4P/2n5/1r5p/4R3/3b3n b - - +perft 1 33 +perft 2 1141 +perft 3 32956 +perft 4 1055956 +perft 5 30047945 +perft 6 940232324 + +id gentest-3759 +epd 1N6/8/3p1P1k/p6P/2nK4/1r6/4R2p/3b3n w - - +perft 1 21 +perft 2 637 +perft 3 11264 +perft 4 331718 +perft 5 5726109 +perft 6 166498546 + +id gentest-3760 +epd 1N2R3/8/3p1P1k/p6P/2nK4/7r/7p/3b3n b - - +perft 1 29 +perft 2 502 +perft 3 13377 +perft 4 225641 +perft 5 6078932 +perft 6 102713881 + +id gentest-3761 +epd 1NR5/8/3p1P1k/p3n2r/3K4/8/7p/3b3n w - - +perft 1 20 +perft 2 473 +perft 3 8003 +perft 4 208183 +perft 5 3526333 +perft 6 96309903 + +id gentest-3762 +epd 2R5/8/3p1P1k/N3n1r1/3K4/8/7p/3b3n b - - +perft 1 30 +perft 2 627 +perft 3 18506 +perft 4 346645 +perft 5 10280797 +perft 6 190526635 + +id gentest-3763 +epd 3R4/8/3p1P1k/N2r4/3K2n1/8/7p/3b3n w - - +perft 1 4 +perft 2 90 +perft 3 1265 +perft 4 30258 +perft 5 484867 +perft 6 12271951 + +id gentest-3764 +epd 3R4/1N6/3p1P1k/4r3/6n1/2K5/7p/3b3n b - - +perft 1 29 +perft 2 510 +perft 3 14123 +perft 4 257021 +perft 5 7179553 +perft 6 134871038 + +id gentest-3765 +epd 2R5/1N6/3p1P1k/8/6n1/r1K5/7p/3b3n w - - +perft 1 5 +perft 2 150 +perft 3 2956 +perft 4 81361 +perft 5 1492077 +perft 6 41658561 + +id gentest-3766 +epd 7R/1N6/3p1P1k/8/1K4n1/r4b2/7p/7n b - - +perft 1 2 +perft 2 42 +perft 3 1172 +perft 4 21542 +perft 5 633252 +perft 6 11677251 + +id gentest-3767 +epd 8/1N6/3p1P2/8/1K3kn1/r4b1R/7p/7n w - - +perft 1 16 +perft 2 457 +perft 3 7886 +perft 4 229325 +perft 5 4137784 +perft 6 120870573 + +id gentest-3768 +epd 8/1N6/3p1P2/3b4/5knR/K7/7p/7n b - - +perft 1 20 +perft 2 305 +perft 3 6212 +perft 4 113174 +perft 5 2409434 +perft 6 46657027 + +id gentest-3769 +epd 8/1N6/3p1P1R/1b6/5kn1/K7/7p/7n w - - +perft 1 16 +perft 2 370 +perft 3 6900 +perft 4 151261 +perft 5 2983491 +perft 6 64950761 + +id gentest-3770 +epd 3N4/8/3p1P1R/1b6/5kn1/6n1/1K5p/8 b - - +perft 1 31 +perft 2 598 +perft 3 17179 +perft 4 323052 +perft 5 9022364 +perft 6 173407733 + +id gentest-3771 +epd 3N4/3b4/3p1P2/8/5kn1/6nR/1K6/7q w - - +perft 1 18 +perft 2 684 +perft 3 11913 +perft 4 430197 +perft 5 7563253 +perft 6 265993740 + +id gentest-3772 +epd 3N4/3b4/3p1P2/8/5kn1/6R1/K7/2q5 b - - +perft 1 37 +perft 2 513 +perft 3 15932 +perft 4 243503 +perft 5 7654917 +perft 6 123421584 + +id gentest-3773 +epd 8/8/2Np1P2/1bq5/5kn1/6R1/K7/8 w - - +perft 1 23 +perft 2 785 +perft 3 14378 +perft 4 470114 +perft 5 8385707 +perft 6 272365356 + +id gentest-3774 +epd 8/4NP2/3p4/1b3q2/5kn1/6R1/K7/8 b - - +perft 1 36 +perft 2 754 +perft 3 21833 +perft 4 469441 +perft 5 13624676 +perft 6 297058612 + +id gentest-3775 +epd 5N2/4N3/3p4/5q2/5k2/3b2R1/K4n2/8 w - - +perft 1 25 +perft 2 671 +perft 3 13911 +perft 4 397280 +perft 5 8208446 +perft 6 240308119 + +id gentest-3776 +epd 5N2/8/2Np4/5q2/2b2k2/K5R1/5n2/8 b - - +perft 1 41 +perft 2 1030 +perft 3 33916 +perft 4 782830 +perft 5 24771797 +perft 6 544246733 + +id gentest-3777 +epd 5N2/8/b1Np4/q7/5k2/6R1/1K3n2/8 w - - +perft 1 30 +perft 2 913 +perft 3 19542 +perft 4 596047 +perft 5 12778226 +perft 6 385986885 + +id gentest-3778 +epd 8/7N/b1Np4/q7/5k2/6R1/8/2Kn4 b - - +perft 1 33 +perft 2 759 +perft 3 23058 +perft 4 500342 +perft 5 14836063 +perft 6 311140267 + +id gentest-3779 +epd q7/7N/2Np4/8/2b2k2/4R3/8/2Kn4 w - - +perft 1 29 +perft 2 960 +perft 3 23619 +perft 4 737053 +perft 5 16701768 +perft 6 509620424 + +id gentest-3780 +epd 8/N7/3p1N2/8/2b2k2/4R3/8/2Kn4 b - - +perft 1 19 +perft 2 505 +perft 3 8063 +perft 4 196105 +perft 5 3233898 +perft 6 76567266 + +id gentest-3781 +epd 6N1/N7/3p4/8/2b2k2/4R3/8/2Kn4 w - - +perft 1 24 +perft 2 445 +perft 3 9704 +perft 4 170699 +perft 5 3651893 +perft 6 63141125 + +id gentest-3782 +epd 6N1/N7/3p4/8/5k2/3b4/3K4/3nR3 b - - +perft 1 21 +perft 2 413 +perft 3 7483 +perft 4 155491 +perft 5 2717264 +perft 6 58547232 + +id gentest-3783 +epd 6N1/8/2Np4/5b2/5k2/8/3K4/3nR3 w - - +perft 1 25 +perft 2 455 +perft 3 10841 +perft 4 186986 +perft 5 4398379 +perft 6 73946215 + +id gentest-3784 +epd 2b3N1/8/3p4/8/3N1k2/8/3K4/3R4 b - - +perft 1 13 +perft 2 310 +perft 3 3933 +perft 4 98343 +perft 5 1240102 +perft 6 31955715 + +id gentest-3785 +epd 8/4N3/3pb3/8/3N1k2/8/3K4/3R4 w - - +perft 1 27 +perft 2 392 +perft 3 10679 +perft 4 141484 +perft 5 3910037 +perft 6 49685104 + +id gentest-3786 +epd 8/8/2Np4/8/5k2/1b3N2/3K4/3R4 b - - +perft 1 15 +perft 2 396 +perft 3 5451 +perft 4 141447 +perft 5 1851577 +perft 6 47970289 + +id gentest-3787 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-3788 +epd rnbqkb1r/pppppppp/7n/1B6/8/4P3/PPPP1PPP/RNBQK1NR b KQkq - +perft 1 17 +perft 2 574 +perft 3 11015 +perft 4 367804 +perft 5 8115152 +perft 6 270199459 + +id gentest-3789 +epd r1bqkb1r/pppppppp/2n5/1B6/3P2n1/4P3/PPP2PPP/RNBQK1NR w KQkq - +perft 1 35 +perft 2 904 +perft 3 31947 +perft 4 823395 +perft 5 28884134 +perft 6 769148049 + +id gentest-3790 +epd rnbqkb1r/pppppppp/8/8/3P1Pn1/4P3/PPP3PP/RNBQKBNR b KQkq - +perft 1 25 +perft 2 795 +perft 3 20361 +perft 4 656227 +perft 5 17579556 +perft 6 576744381 + +id gentest-3791 +epd rnbqkbr1/pp1ppppp/B1p5/8/3P1Pn1/4P3/PPP3PP/RNBQK1NR w KQq - +perft 1 33 +perft 2 823 +perft 3 27097 +perft 4 708304 +perft 5 23524221 +perft 6 655206713 + +id gentest-3792 +epd rnbqkbr1/pp2pppp/B1p5/3p4/2PP1Pn1/P3P3/1P4PP/RNBQK1NR b KQq - +perft 1 31 +perft 2 924 +perft 3 29108 +perft 4 897464 +perft 5 28761568 +perft 6 909917331 + +id gentest-3793 +epd rnbqkbr1/pp2ppp1/B7/2pp3p/2PP1Pn1/P3P3/1P2K1PP/RNBQ2NR w q - +perft 1 30 +perft 2 878 +perft 3 27174 +perft 4 840917 +perft 5 26563615 +perft 6 852322694 + +id gentest-3794 +epd rnb1kbr1/pB2ppp1/1q6/2pp3p/2PP1Pn1/P3P3/RP2K1PP/1NBQ2NR b q - +perft 1 42 +perft 2 1351 +perft 3 51157 +perft 4 1658614 +perft 5 61272934 +perft 6 2008946030 + +id gentest-3795 +epd rn2kbr1/pb2ppp1/2q5/2pp3p/2PP1Pn1/P1N1P3/RP2K1PP/2BQ2NR w q - +perft 1 31 +perft 2 1109 +perft 3 34926 +perft 4 1232286 +perft 5 39136889 +perft 6 1381690119 + +id gentest-3796 +epd rn2kbr1/pb2ppp1/1Nq5/2p4p/2PP1P2/P3P3/RP2K1Pn/2BQ2NR b q - +perft 1 35 +perft 2 995 +perft 3 35437 +perft 4 1051159 +perft 5 37629671 +perft 6 1151913429 + +id gentest-3797 +epd rn2kbr1/pb2pp2/1N4p1/1qp4p/2PP1P2/PQ2P3/RP2K1Pn/2B3NR w q - +perft 1 30 +perft 2 1058 +perft 3 30873 +perft 4 1092321 +perft 5 32649399 +perft 6 1169172915 + +id gentest-3798 +epd rn2k1r1/pb2ppb1/1N4p1/1qpP3p/2P2P2/P3P3/RP2K1Pn/2BQ2NR b q - +perft 1 41 +perft 2 1176 +perft 3 47000 +perft 4 1400907 +perft 5 55129459 +perft 6 1695370704 + +id gentest-3799 +epd rn3kr1/pb2pp2/1N4pb/1PpP3p/5P2/P3P3/RP2K1Pn/2BQ2NR w - - +perft 1 30 +perft 2 786 +perft 3 25203 +perft 4 691603 +perft 5 22930153 +perft 6 651489378 + +id gentest-3800 +epd rn3kr1/1b2pp2/1N4pb/pPpP3p/5P2/P3P3/RP1Q2Pn/2B1K1NR b - - +perft 1 27 +perft 2 803 +perft 3 22061 +perft 4 698466 +perft 5 19918482 +perft 6 658582466 + +id gentest-3801 +epd rn3k1r/1b2p3/1N3ppb/pPpP3p/5P2/P1Q1P3/RP4Pn/2B1K1NR w - - +perft 1 34 +perft 2 904 +perft 3 30657 +perft 4 854162 +perft 5 29637320 +perft 6 855512474 + +id gentest-3802 +epd rn3k1r/1b2p3/1N3ppb/pPpP1Q2/5P1p/P3P3/RP4Pn/2B1K1NR b - - +perft 1 28 +perft 2 977 +perft 3 26251 +perft 4 921888 +perft 5 25587384 +perft 6 907137791 + +id gentest-3803 +epd r5kr/1b2p3/1Nn2ppb/pPpP1Q2/5P1p/P3PN2/RP4Pn/2B1K2R w - - +perft 1 44 +perft 2 1374 +perft 3 57051 +perft 4 1759436 +perft 5 71307660 +perft 6 2189388414 + +id gentest-3804 +epd r4bkr/1b2p3/1Nn2pp1/pPpP4/1P3P1p/P3PN1Q/R5Pn/2B1K2R b - - +perft 1 33 +perft 2 1424 +perft 3 45277 +perft 4 1897192 +perft 5 59764912 +perft 6 2456652899 + +id gentest-3805 +epd r4bk1/1b2p3/1Nn3p1/pPpP1p1r/1P3P1p/P3PN1Q/R5Pn/2B1K1R1 w - - +perft 1 39 +perft 2 1304 +perft 3 49801 +perft 4 1620287 +perft 5 61983191 +perft 6 1987842604 + +id gentest-3806 +epd r1N2bk1/1b2p2r/2n3p1/pPpP1p2/1P3P1p/P3PN1Q/R4KPn/2B3R1 b - - +perft 1 32 +perft 2 1191 +perft 3 37107 +perft 4 1376728 +perft 5 42916336 +perft 6 1594513487 + +id gentest-3807 +epd r1N2b2/nb2p1kr/6p1/pPpP1p2/1P1N1P1p/P3P2Q/R4KPn/2B3R1 w - - +perft 1 38 +perft 2 1018 +perft 3 37563 +perft 4 1034598 +perft 5 38423021 +perft 6 1088696476 + +id gentest-3808 +epd r4b2/nb2N1kr/6p1/pPpPpp2/1P1N1P1p/P3P2Q/5KPn/R1B3R1 b - - +perft 1 31 +perft 2 1099 +perft 3 32452 +perft 4 1165579 +perft 5 35341431 +perft 6 1283606460 + +id gentest-3809 +epd r7/n3b1kr/b1N3p1/pPpPpp2/1P1N1P1p/P3P2Q/5KPn/R1B3R1 w - - +perft 1 38 +perft 2 1378 +perft 3 51932 +perft 4 1811444 +perft 5 68738441 +perft 6 2350284816 + +id gentest-3810 +epd r7/n3b1kr/b5p1/pP1PNp2/PP1p1P1p/4P2Q/5KPn/R1B3R1 b - - +perft 1 35 +perft 2 1132 +perft 3 38554 +perft 4 1277983 +perft 5 43129223 +perft 6 1459275036 + +id gentest-3811 +epd 2r5/n3b1kr/6p1/pb1P1p2/PPNp1P1p/4P2Q/5KPn/R1B3R1 w - - +perft 1 32 +perft 2 1344 +perft 3 42018 +perft 4 1653997 +perft 5 52797150 +perft 6 2007683363 + +id gentest-3812 +epd 2r5/n3b1kr/6p1/p2P1p2/PPbp1P1p/B3P1Q1/5KPn/R5R1 b - - +perft 1 45 +perft 2 1140 +perft 3 47840 +perft 4 1244067 +perft 5 50488584 +perft 6 1374189795 + +id gentest-3813 +epd 2r5/n3b3/5kp1/pP1P1p1r/P1bp1P1p/B3P1Q1/5KPn/R5R1 w - - +perft 1 30 +perft 2 1012 +perft 3 28168 +perft 4 964091 +perft 5 27459552 +perft 6 947592777 + +id gentest-3814 +epd 2r5/n3b3/5kp1/pP1P1p1r/P1b2P1p/B2pP1Q1/6Pn/3RK1R1 b - - +perft 1 35 +perft 2 825 +perft 3 24426 +perft 4 597538 +perft 5 18484256 +perft 6 470134109 + +id gentest-3815 +epd 3r4/n7/3P1kp1/pP3p1r/P1b2P1p/b2pP1Q1/6Pn/3RK1R1 w - - +perft 1 20 +perft 2 651 +perft 3 13107 +perft 4 445102 +perft 5 9598802 +perft 6 332473249 + +id gentest-3816 +epd 3r4/n7/3P1kp1/pP3p1r/P1b2P1p/3RP3/6PQ/2b1K1R1 b - - +perft 1 33 +perft 2 702 +perft 3 22946 +perft 4 502014 +perft 5 16359274 +perft 6 384825448 + +id gentest-3817 +epd 1r6/n6r/3P1kp1/pP3p2/P1b2PPp/3RP3/7Q/2b1K1R1 w - - +perft 1 31 +perft 2 1141 +perft 3 32995 +perft 4 1180284 +perft 5 34030136 +perft 6 1188625169 + +id gentest-3818 +epd 1r6/n6r/3P1kp1/pP3p2/P1b2PPp/b3P3/3R1Q2/4K1R1 b - - +perft 1 43 +perft 2 1078 +perft 3 41113 +perft 4 1118370 +perft 5 41372294 +perft 6 1181469692 + +id gentest-3819 +epd r7/n6r/3P1k2/pP3pp1/P1b2PPp/b3P3/3R1Q2/4KR2 w - - +perft 1 23 +perft 2 903 +perft 3 23722 +perft 4 897945 +perft 5 25253950 +perft 6 932495811 + +id gentest-3820 +epd r7/n4b1r/3P1k2/pP3pp1/P2R1PPQ/b3P3/8/4KR2 b - - +perft 1 34 +perft 2 941 +perft 3 30157 +perft 4 873463 +perft 5 28524390 +perft 6 854084161 + +id gentest-3821 +epd 2r5/5b1r/2nP1k2/pP3pp1/P3RPPQ/b3P3/8/4KR2 w - - +perft 1 29 +perft 2 970 +perft 3 28337 +perft 4 975485 +perft 5 29048858 +perft 6 1000133630 + +id gentest-3822 +epd 2r5/5b2/2nP1k2/pP3ppr/P3RPP1/b3PR2/8/4K2Q b - - +perft 1 40 +perft 2 1079 +perft 3 39905 +perft 4 1107635 +perft 5 39915653 +perft 6 1141507331 + +id gentest-3823 +epd 1r5r/5b2/2nP1k2/pP3pp1/P2R1PP1/b3PR2/8/4K2Q w - - +perft 1 32 +perft 2 1317 +perft 3 41312 +perft 4 1582632 +perft 5 49801530 +perft 6 1826282037 + +id gentest-3824 +epd 1r5r/5bk1/2nP4/pP3pp1/P2R1PPQ/b3PR2/5K2/8 b - - +perft 1 45 +perft 2 1313 +perft 3 49122 +perft 4 1445231 +perft 5 52629219 +perft 6 1562542505 + +id gentest-3825 +epd 6r1/5bk1/2nP3r/pP3pp1/P2R1PP1/b3PR2/5K2/8 w - - +perft 1 21 +perft 2 932 +perft 3 19836 +perft 4 828013 +perft 5 18282820 +perft 6 730231719 + +id gentest-3826 +epd 3r4/5bk1/2nP3r/pP3pp1/P4PP1/b2RPRK1/8/8 b - - +perft 1 48 +perft 2 795 +perft 3 35497 +perft 4 661557 +perft 5 28026296 +perft 6 571479055 + +id gentest-3827 +epd 2r3k1/3P1b2/2n4r/pP3pp1/P4PP1/b2RPRK1/8/8 w - - +perft 1 25 +perft 2 934 +perft 3 23302 +perft 4 871867 +perft 5 22513509 +perft 6 832825821 + +id gentest-3828 +epd 2B3k1/5b2/2n4r/pP3pp1/P4PP1/2R1PRK1/8/2b5 b - - +perft 1 36 +perft 2 766 +perft 3 25565 +perft 4 583848 +perft 5 18553374 +perft 6 445641172 + +id gentest-3829 +epd 2Bn2k1/5b2/7r/pP3p2/P4pP1/2R1PR2/5K2/2b5 w - - +perft 1 27 +perft 2 920 +perft 3 23873 +perft 4 732044 +perft 5 19330953 +perft 6 571513872 + +id gentest-3830 +epd 3n2k1/5b2/8/pP3B2/P4pP1/1R2PR2/5K2/2b4r b - - +perft 1 29 +perft 2 623 +perft 3 17486 +perft 4 389679 +perft 5 11066959 +perft 6 258281783 + +id gentest-3831 +epd 6k1/5b2/3n4/pP3B2/P4pP1/1R2PR2/6K1/2b4r w - - +perft 1 26 +perft 2 816 +perft 3 19557 +perft 4 597917 +perft 5 14454325 +perft 6 435414384 + +id gentest-3832 +epd 6k1/5b1r/3n4/pP6/P4pP1/1R2PR2/2B2K2/2b5 b - - +perft 1 30 +perft 2 662 +perft 3 20346 +perft 4 471638 +perft 5 14557200 +perft 6 348658710 + +id gentest-3833 +epd 7k/5b1B/3n4/pP6/P4pP1/1R2PR1r/5K2/2b5 w - - +perft 1 25 +perft 2 747 +perft 3 16385 +perft 4 477524 +perft 5 10772419 +perft 6 311303567 + +id gentest-3834 +epd 7k/5b1B/8/pP6/P1n1PpP1/1R3R1r/4K3/2b5 b - - +perft 1 27 +perft 2 648 +perft 3 18131 +perft 4 406096 +perft 5 11484967 +perft 6 255864371 + +id gentest-3835 +epd 7k/5b2/7r/pP3B2/P3PpP1/1R3R2/3nK3/2b5 w - - +perft 1 27 +perft 2 833 +perft 3 20639 +perft 4 591447 +perft 5 14508139 +perft 6 408859512 + +id gentest-3836 +epd 7k/5b2/1P6/p4BP1/P3Pp2/1R3R1r/3nK3/2b5 b - - +perft 1 26 +perft 2 690 +perft 3 18199 +perft 4 455545 +perft 5 12265893 +perft 6 305432538 + +id gentest-3837 +epd 7k/5b2/1P4B1/p5P1/P3Pp2/5R1r/3nK3/2b5 w - - +perft 1 20 +perft 2 528 +perft 3 9190 +perft 4 245831 +perft 5 4390284 +perft 6 118092298 + +id gentest-3838 +epd 6k1/5b2/1P4B1/p5P1/P3Pp2/7R/3n4/2b1K3 b - - +perft 1 18 +perft 2 395 +perft 3 6985 +perft 4 139590 +perft 5 2629044 +perft 6 52663645 + +id gentest-3839 +epd 6k1/5b2/1P4B1/p5P1/P3Pp2/6R1/7n/2b1K3 w - - +perft 1 19 +perft 2 323 +perft 3 5711 +perft 4 104542 +perft 5 1910702 +perft 6 36388719 + +id gentest-3840 +epd 8/5bk1/1P4B1/p5P1/P3Pp2/8/7n/2b1KR2 b - - +perft 1 20 +perft 2 252 +perft 3 5077 +perft 4 75097 +perft 5 1532452 +perft 6 25193756 + +id gentest-3841 +epd 8/6k1/1P4B1/p2b2P1/P3Pp2/4bR2/7n/4K3 w - - +perft 1 16 +perft 2 372 +perft 3 6062 +perft 4 134218 +perft 5 2403039 +perft 6 52398464 + +id gentest-3842 +epd 8/6k1/1P4B1/p2b2P1/P3Pp2/7R/4K2n/2b5 b - - +perft 1 21 +perft 2 464 +perft 3 9188 +perft 4 184344 +perft 5 3700143 +perft 6 73417278 + +id gentest-3843 +epd 8/6k1/1P4BR/p2b2P1/P3Pp2/8/4K2n/2b5 w - - +perft 1 18 +perft 2 337 +perft 3 6391 +perft 4 118499 +perft 5 2342317 +perft 6 44354828 + +id gentest-3844 +epd 8/6kR/1P4B1/p2b2P1/P3Ppn1/8/4K3/2b5 b - - +perft 1 3 +perft 2 74 +perft 3 1497 +perft 4 29787 +perft 5 595363 +perft 6 11519617 + +id gentest-3845 +epd 6k1/7R/1P6/p2b2PB/P3Ppn1/8/1b2K3/8 w - - +perft 1 23 +perft 2 529 +perft 3 10993 +perft 4 238423 +perft 5 4911240 +perft 6 103618545 + +id gentest-3846 +epd b5k1/7R/1P2B3/p5P1/P3Pp2/8/1b2K3/8 b - - +perft 1 2 +perft 2 56 +perft 3 824 +perft 4 20306 +perft 5 313532 +perft 6 7404687 + +id gentest-3847 +epd b4k2/2R5/1P2B3/p5P1/P3P3/5p2/1b2K3/8 w - - +perft 1 8 +perft 2 118 +perft 3 3481 +perft 4 51500 +perft 5 1350472 +perft 6 21240518 + +id gentest-3848 +epd b4k2/6R1/1P2B3/p5P1/P2bP3/5p2/3K4/8 b - - +perft 1 18 +perft 2 441 +perft 3 7035 +perft 4 157818 +perft 5 2604502 +perft 6 56088894 + +id gentest-3849 +epd b4k2/6R1/1P6/p3bBP1/P3P3/8/3K1p2/8 w - - +perft 1 24 +perft 2 489 +perft 3 10249 +perft 4 202676 +perft 5 4197814 +perft 6 87698893 + +id gentest-3850 +epd b4k2/6RB/1P6/p5P1/P3Pb2/8/2K2p2/8 b - - +perft 1 20 +perft 2 377 +perft 3 6861 +perft 4 123897 +perft 5 2416083 +perft 6 44230889 + +id gentest-3851 +epd b4k2/4R2B/1P6/p5P1/P3P3/8/2K2p1b/8 w - - +perft 1 23 +perft 2 337 +perft 3 6816 +perft 4 117546 +perft 5 2287764 +perft 6 43879287 + +id gentest-3852 +epd b4k2/4R2B/1P6/p5P1/P3P3/6b1/1K3p2/8 b - - +perft 1 16 +perft 2 330 +perft 3 6020 +perft 4 116270 +perft 5 2324559 +perft 6 44523602 + +id gentest-3853 +epd 1b3k2/7B/1P6/p5P1/P3R3/8/1K3p2/8 w - - +perft 1 26 +perft 2 330 +perft 3 8038 +perft 4 121936 +perft 5 2841823 +perft 6 48470286 + +id gentest-3854 +epd 1b6/6kB/1P6/p5P1/P3R3/8/1K3p2/8 b - - +perft 1 15 +perft 2 361 +perft 3 5674 +perft 4 131276 +perft 5 2277538 +perft 6 50788893 + +id gentest-3855 +epd 8/6kB/1P6/p5P1/PR6/6b1/1K3p2/8 w - - +perft 1 25 +perft 2 385 +perft 3 8775 +perft 4 150968 +perft 5 3325068 +perft 6 61765351 + +id gentest-3856 +epd 5k2/8/1P6/p4BP1/P2R4/6b1/1K3p2/8 b - - +perft 1 16 +perft 2 520 +perft 3 8736 +perft 4 243766 +perft 5 4338007 +perft 6 110707280 + +id gentest-3857 +epd 5k2/8/1P6/p2R1BP1/P4r2/6b1/1K6/8 w - - +perft 1 32 +perft 2 625 +perft 3 16613 +perft 4 349266 +perft 5 8706517 +perft 6 183608927 + +id gentest-3858 +epd 6k1/8/1P6/p4BP1/P4r2/3R2b1/1K6/8 b - - +perft 1 19 +perft 2 521 +perft 3 10456 +perft 4 271425 +perft 5 5593804 +perft 6 139134148 + +id gentest-3859 +epd 6k1/8/1P6/p4BP1/r7/2R3b1/1K6/8 w - - +perft 1 30 +perft 2 611 +perft 3 15867 +perft 4 322882 +perft 5 8064066 +perft 6 166601704 + +id gentest-3860 +epd 6k1/8/1P2B3/p5P1/4r3/6R1/1K6/8 b - - +perft 1 5 +perft 2 144 +perft 3 2361 +perft 4 56072 +perft 5 898638 +perft 6 20787012 + +id gentest-3861 +epd 5k2/8/1P2B3/p5P1/7r/1R6/1K6/8 w - - +perft 1 27 +perft 2 470 +perft 3 11868 +perft 4 189295 +perft 5 4696841 +perft 6 73701411 + +id gentest-3862 +epd 5k2/8/1P6/pR1B2P1/5r2/8/1K6/8 b - - +perft 1 17 +perft 2 399 +perft 3 6721 +perft 4 153935 +perft 5 2542596 +perft 6 58448244 + +id gentest-3863 +epd 5k2/8/1P6/pR4P1/8/8/1K4B1/3r4 w - - +perft 1 23 +perft 2 430 +perft 3 9562 +perft 4 167237 +perft 5 3830373 +perft 6 64161930 + +id gentest-3864 +epd 5k2/8/1P1r2P1/pR6/8/K7/6B1/8 b - - +perft 1 17 +perft 2 406 +perft 3 6570 +perft 4 152843 +perft 5 2429455 +perft 6 56585463 + +id gentest-3865 +epd 8/4k3/1Pr3P1/pR6/4B3/K7/8/8 w - - +perft 1 26 +perft 2 480 +perft 3 11872 +perft 4 197740 +perft 5 4838631 +perft 6 79063957 + +id gentest-3866 +epd 5k2/8/1Pr3P1/pR6/4B3/K7/8/8 b - - +perft 1 17 +perft 2 433 +perft 3 6913 +perft 4 166295 +perft 5 2612727 +perft 6 61960161 + +id gentest-3867 +epd 8/6k1/1P3rP1/pR1B4/8/K7/8/8 w - - +perft 1 24 +perft 2 407 +perft 3 9510 +perft 4 160515 +perft 5 3722262 +perft 6 60802329 + +id gentest-3868 +epd B7/6k1/1P4P1/pR6/8/1K6/5r2/8 b - - +perft 1 21 +perft 2 393 +perft 3 7123 +perft 4 150329 +perft 5 2538453 +perft 6 56343129 + +id gentest-3869 +epd B7/6k1/1P4P1/pR3r2/8/2K5/8/8 w - - +perft 1 24 +perft 2 455 +perft 3 10263 +perft 4 179513 +perft 5 4112681 +perft 6 68800228 + +id gentest-3870 +epd B4k2/8/1P4P1/p4r2/8/2K5/8/1R6 b - - +perft 1 17 +perft 2 400 +perft 3 6672 +perft 4 155485 +perft 5 2546499 +perft 6 59873029 + +id gentest-3871 +epd 7k/8/1P4P1/p4r2/8/2K5/6B1/1R6 w - - +perft 1 29 +perft 2 434 +perft 3 10565 +perft 4 157724 +perft 5 3778645 +perft 6 56072359 + +id gentest-3872 +epd 6k1/8/1P4P1/p4r2/8/2K5/6B1/4R3 b - - +perft 1 17 +perft 2 474 +perft 3 7303 +perft 4 190611 +perft 5 2879979 +perft 6 72623342 + +id gentest-3873 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-3874 +epd r1bqkbnr/pppppppp/2n5/8/3P4/2P5/PP2PPPP/RNBQKBNR b KQkq - +perft 1 22 +perft 2 639 +perft 3 15321 +perft 4 459575 +perft 5 11884685 +perft 6 369044250 + +id gentest-3875 +epd r1bqkbnr/pppppp1p/8/6p1/3n1P2/2P5/PP2P1PP/RNBQKBNR w KQkq - +perft 1 28 +perft 2 790 +perft 3 22327 +perft 4 619095 +perft 5 18759653 +perft 6 527889811 + +id gentest-3876 +epd r1bqkbnr/pppppp2/8/6pp/3n1P2/2P4P/PP1NP1P1/R1BQKBNR b KQkq - +perft 1 30 +perft 2 696 +perft 3 20885 +perft 4 547442 +perft 5 16579877 +perft 6 477298284 + +id gentest-3877 +epd r1bqkbnr/p1pppp2/1p6/1n4pp/5P2/2P4P/PP1NP1PR/R1BQKBN1 w Qkq - +perft 1 24 +perft 2 620 +perft 3 16959 +perft 4 468434 +perft 5 13986805 +perft 6 405596034 + +id gentest-3878 +epd r1bqkbnr/p1p1pp2/1p6/1n1p2pp/4PP2/2P4P/PP1N1KPR/R1BQ1BN1 b kq - +perft 1 34 +perft 2 1246 +perft 3 42156 +perft 4 1484216 +perft 5 51290482 +perft 6 1781216985 + +id gentest-3879 +epd r1bqkbnr/p3pp2/1pp5/1n3Ppp/4p3/2P4P/PP1N1KPR/R1BQ1BN1 w kq - +perft 1 34 +perft 2 1153 +perft 3 36802 +perft 4 1281678 +perft 5 41485383 +perft 6 1475593848 + +id gentest-3880 +epd r1b1kbnr/p3pp2/1pp2P2/1n4pp/4N3/2Pq3P/PP3KPR/R1BQ1BN1 b kq - +perft 1 47 +perft 2 1479 +perft 3 62916 +perft 4 2071968 +perft 5 84585836 +perft 6 2889948686 + +id gentest-3881 +epd r3k1nr/p3ppb1/1pp2P2/1n4pp/4N1b1/2Pq1Q1P/PP3KPR/R1B2BN1 w kq - +perft 1 34 +perft 2 1568 +perft 3 49830 +perft 4 2191094 +perft 5 73511508 +perft 6 3119209483 + +id gentest-3882 +epd r3k1nr/p3ppb1/1pp2P2/1n5p/6b1/2P2N1P/PP3KPR/R1B2BN1 b kq - +perft 1 32 +perft 2 1012 +perft 3 32754 +perft 4 1037624 +perft 5 33585205 +perft 6 1079333621 + +id gentest-3883 +epd r3k1nr/p4p2/1pp1pP1b/1n5p/2B3b1/2P2N1P/PP3KPR/R1B3N1 w kq - +perft 1 32 +perft 2 941 +perft 3 29398 +perft 4 893505 +perft 5 28225270 +perft 6 876330869 + +id gentest-3884 +epd 2kr2nr/p4p2/1pp1pP1b/1n5p/6b1/1BP4P/PP1N1KPR/R1B3N1 b - - +perft 1 36 +perft 2 829 +perft 3 29648 +perft 4 727605 +perft 5 26386913 +perft 6 682098320 + +id gentest-3885 +epd 2k3nr/p4p2/1pp1pP1b/1n5p/8/1BPr2PP/PP1N1K1R/R1Bb2N1 w - - +perft 1 24 +perft 2 900 +perft 3 21243 +perft 4 796155 +perft 5 19760447 +perft 6 739683984 + +id gentest-3886 +epd 2k3nr/p4p2/1pp1pP1b/1n5p/8/1BP2rPP/PP1N2K1/R1Bb2NR b - - +perft 1 36 +perft 2 724 +perft 3 25633 +perft 4 572570 +perft 5 20513118 +perft 6 491675900 + +id gentest-3887 +epd 3k2nr/p4p2/1pp1pP1b/1n5p/8/1BP2rPP/PPbN2KR/R1B3N1 w - - +perft 1 21 +perft 2 813 +perft 3 18041 +perft 4 677185 +perft 5 16135109 +perft 6 593495217 + +id gentest-3888 +epd 2k3nr/p4p2/1pp1pP1b/1n5p/2B1N3/2P2rPP/PPb3KR/R1B3N1 b - - +perft 1 40 +perft 2 1093 +perft 3 39621 +perft 4 1120063 +perft 5 40293595 +perft 6 1175505236 + +id gentest-3889 +epd 2k4r/p4p2/1pp1pn1b/1n5p/2B1b3/2P2rPP/PP4K1/R1B3NR w - - +perft 1 23 +perft 2 1030 +perft 3 22011 +perft 4 972087 +perft 5 22584461 +perft 6 977969678 + +id gentest-3890 +epd 2k4r/p4p2/1pp1pn1b/1n3b1p/2B2B2/2P2rPP/PP4K1/R5NR b - - +perft 1 44 +perft 2 1295 +perft 3 54907 +perft 4 1605646 +perft 5 67568329 +perft 6 1981297779 + +id gentest-3891 +epd 2k4r/p2n1p2/1pp1p2b/1n5p/2B2B2/2P2rPb/PP5K/R5NR w - - +perft 1 30 +perft 2 1187 +perft 3 34648 +perft 4 1367948 +perft 5 40113497 +perft 6 1573545057 + +id gentest-3892 +epd 2k4r/p2n1p2/1pp1p2b/1n5p/2B2rP1/2P4b/PP5K/2R3NR b - - +perft 1 42 +perft 2 976 +perft 3 41023 +perft 4 986328 +perft 5 41210239 +perft 6 1018871765 + +id gentest-3893 +epd 2k4r/p2n1p2/1pp1p2b/1n5p/2B2rP1/2P4K/PP6/2R3NR w - - +perft 1 26 +perft 2 1017 +perft 3 26108 +perft 4 1020582 +perft 5 26927871 +perft 6 1050204765 + +id gentest-3894 +epd 2k4r/p2n1p2/1pp1p2b/1n5p/1P4P1/1BP4K/P4r2/2R3NR b - - +perft 1 46 +perft 2 961 +perft 3 42248 +perft 4 936472 +perft 5 39859992 +perft 6 940301238 + +id gentest-3895 +epd 2k4r/p2n1p2/1pp1p2b/8/1P4K1/1Bn5/P4r2/2R3NR w - - +perft 1 28 +perft 2 1316 +perft 3 33187 +perft 4 1470651 +perft 5 37790214 +perft 6 1612460756 + +id gentest-3896 +epd 7r/p1kn1p2/1pp1p2b/8/1P4K1/1Bn2N2/P4r2/4R2R b - - +perft 1 49 +perft 2 1650 +perft 3 78301 +perft 4 2498197 +perft 5 114269891 +perft 6 3529856770 + +id gentest-3897 +epd 7r/pk1n1p2/1pp1p2b/8/1P4K1/1Bn5/Pr1N4/4R2R w - - +perft 1 37 +perft 2 1650 +perft 3 54298 +perft 4 2348712 +perft 5 74980156 +perft 6 3161481181 + +id gentest-3898 +epd 7r/pk1n1p2/1p2p2b/1Pp5/B5K1/2n5/Pr1N4/4R2R b - - +perft 1 43 +perft 2 1247 +perft 3 52481 +perft 4 1483973 +perft 5 60550115 +perft 6 1686485368 + +id gentest-3899 +epd 7r/1k1n1p2/1p2p3/pPp5/B5K1/2n1b2R/Pr1N4/4R3 w - - +perft 1 31 +perft 2 1454 +perft 3 39486 +perft 4 1715482 +perft 5 46683246 +perft 6 1915050203 + +id gentest-3900 +epd 7r/1k1n1p2/1p6/pPp1p3/B5K1/2n1b2R/PN6/4R3 b - - +perft 1 40 +perft 2 1075 +perft 3 38634 +perft 4 1049439 +perft 5 34817760 +perft 6 958715308 + +id gentest-3901 +epd 5r2/1k1n1p2/1p5b/pPp1p3/B5K1/2n4R/PN6/2R5 w - - +perft 1 31 +perft 2 969 +perft 3 27589 +perft 4 830648 +perft 5 23574362 +perft 6 693776128 + +id gentest-3902 +epd 1n3r2/1k3p2/1p5b/pPp1p3/B5K1/2n1R3/PN6/2R5 b - - +perft 1 28 +perft 2 828 +perft 3 23222 +perft 4 665391 +perft 5 18835404 +perft 6 535902467 + +id gentest-3903 +epd 1n3r2/1k3p2/1p5b/pPp1p3/B5K1/2n3R1/PN6/2R5 w - - +perft 1 28 +perft 2 823 +perft 3 23223 +perft 4 668152 +perft 5 19204948 +perft 6 550864418 + +id gentest-3904 +epd 5r2/1k1n1p2/1p5b/pPp1p3/B7/2R3RK/PN6/8 b - - +perft 1 24 +perft 2 709 +perft 3 17240 +perft 4 505865 +perft 5 12209803 +perft 6 357980657 + +id gentest-3905 +epd 5r2/1k1n1p2/1p5b/pPp1p3/B7/2RN2RK/P7/8 w - - +perft 1 31 +perft 2 722 +perft 3 22738 +perft 4 545016 +perft 5 16935625 +perft 6 407854821 + +id gentest-3906 +epd 6r1/1k1n1p2/1p5b/pPN1p3/B7/6RK/P7/2R5 b - - +perft 1 7 +perft 2 248 +perft 3 6851 +perft 4 220920 +perft 5 5662564 +perft 6 173752155 + +id gentest-3907 +epd 2k3r1/3n4/1p3p1b/pPN1p3/B7/2R4K/P7/2R5 w - - +perft 1 29 +perft 2 617 +perft 3 18389 +perft 4 377811 +perft 5 11135333 +perft 6 236493330 + +id gentest-3908 +epd 1k4r1/3n4/1p3p1b/pPN1p3/B7/2R4K/P7/2R5 b - - +perft 1 28 +perft 2 785 +perft 3 18547 +perft 4 533515 +perft 5 12340720 +perft 6 358235258 + +id gentest-3909 +epd 1k6/8/1p3p1b/pPn1p1r1/B7/2RN3K/P7/2R5 w - - +perft 1 26 +perft 2 665 +perft 3 17457 +perft 4 425618 +perft 5 11588278 +perft 6 289625749 + +id gentest-3910 +epd 1k3b2/8/1p3p2/pPn1p1r1/B7/2RN4/P1R4K/8 b - - +perft 1 28 +perft 2 599 +perft 3 15274 +perft 4 369333 +perft 5 9049346 +perft 6 235064557 + +id gentest-3911 +epd 1k3br1/8/1p3p2/pP2p3/B3n3/2R5/P1R2N1K/8 w - - +perft 1 26 +perft 2 638 +perft 3 16254 +perft 4 409937 +perft 5 10878359 +perft 6 275057604 + +id gentest-3912 +epd 1k3br1/8/1pR5/pP2pp2/B3n3/8/P1R4K/3N4 b - - +perft 1 27 +perft 2 687 +perft 3 17457 +perft 4 446746 +perft 5 11404632 +perft 6 298394495 + +id gentest-3913 +epd 1k3br1/8/1p5R/pP2pp2/B7/8/P1R4K/1n1N4 w - - +perft 1 31 +perft 2 672 +perft 3 18803 +perft 4 441386 +perft 5 12101533 +perft 6 290947723 + +id gentest-3914 +epd 1k3b2/8/1pR1R3/pP2pp2/B7/6r1/P6K/1n1N4 b - - +perft 1 29 +perft 2 674 +perft 3 15769 +perft 4 399940 +perft 5 9126750 +perft 6 241398563 + +id gentest-3915 +epd 5br1/1k6/1pR1R3/pP2pp2/B7/8/P4N1K/1n6 w - - +perft 1 28 +perft 2 572 +perft 3 15767 +perft 4 356124 +perft 5 10168120 +perft 6 234314822 + +id gentest-3916 +epd 5b1r/1k6/1pR1R3/pP2pp2/B7/3N2K1/P7/1n6 b - - +perft 1 23 +perft 2 627 +perft 3 14318 +perft 4 402693 +perft 5 9305310 +perft 6 268373666 + +id gentest-3917 +epd 2R4r/1k6/1p2R3/pPb1pp2/B7/3N2K1/P7/1n6 w - - +perft 1 33 +perft 2 767 +perft 3 22077 +perft 4 499418 +perft 5 14317426 +perft 6 321236312 + +id gentest-3918 +epd 2R4r/1k6/1p2R3/pP2pp2/8/b5K1/PN6/1n1B4 b - - +perft 1 25 +perft 2 779 +perft 3 17121 +perft 4 512568 +perft 5 11415602 +perft 6 336779269 + +id gentest-3919 +epd 2R1r3/1k2b3/1p5R/pP2pp2/8/6K1/PN6/1n1B4 w - - +perft 1 41 +perft 2 823 +perft 3 27987 +perft 4 597190 +perft 5 19468454 +perft 6 429066708 + +id gentest-3920 +epd 2R1r3/1k2bR2/1p6/1P2pp2/p7/6K1/PN6/1n1B4 b - - +perft 1 13 +perft 2 351 +perft 3 5541 +perft 4 148510 +perft 5 2749113 +perft 6 74681240 + +id gentest-3921 +epd 2r5/1k2bR2/1p6/1P3p2/p3p3/6K1/PNR5/1n1B4 w - - +perft 1 31 +perft 2 653 +perft 3 18305 +perft 4 395393 +perft 5 11312076 +perft 6 250922556 + +id gentest-3922 +epd 1r6/1k2b3/1p3R2/1P3p2/p3p3/6K1/PN2R3/1n1B4 b - - +perft 1 24 +perft 2 630 +perft 3 14908 +perft 4 406927 +perft 5 9721658 +perft 6 275154723 + +id gentest-3923 +epd kr1b4/8/1p3R2/1P3p2/B3p3/6K1/PN2R3/1n6 w - - +perft 1 30 +perft 2 375 +perft 3 9715 +perft 4 162039 +perft 5 4293070 +perft 6 83113833 + +id gentest-3924 +epd kr1b4/8/1p3R2/1P3p2/4p3/nB4K1/PN6/4R3 b - - +perft 1 13 +perft 2 411 +perft 3 6750 +perft 4 207418 +perft 5 3946996 +perft 6 119705335 + +id gentest-3925 +epd 1r1b4/1k6/1p3R2/1P3p2/B7/n3p1K1/PN6/4R3 w - - +perft 1 30 +perft 2 436 +perft 3 11916 +perft 4 202063 +perft 5 5649431 +perft 6 109324578 + +id gentest-3926 +epd 1r1b4/1k6/1p3R2/1P3p2/B1n5/3Np1K1/P7/3R4 b - - +perft 1 17 +perft 2 512 +perft 3 9137 +perft 4 273676 +perft 5 5464772 +perft 6 161545226 + +id gentest-3927 +epd 1rkb4/8/1p3R2/1P3p2/B7/3Np2K/P2n4/3R4 w - - +perft 1 32 +perft 2 487 +perft 3 14976 +perft 4 252118 +perft 5 7646974 +perft 6 141566339 + +id gentest-3928 +epd 1rk5/4b3/1p3R2/1P3p2/B6K/3Np3/P2n4/R7 b - - +perft 1 21 +perft 2 472 +perft 3 9783 +perft 4 242516 +perft 5 5188125 +perft 6 138856262 + +id gentest-3929 +epd 1rk5/8/1p3R2/1P3p2/7K/b2Np3/P1Bn4/R7 w - - +perft 1 32 +perft 2 619 +perft 3 18710 +perft 4 375305 +perft 5 11394312 +perft 6 241532410 + +id gentest-3930 +epd 1rk5/8/1p3R2/1P3p2/P6K/4p3/1bBn4/R3N3 b - - +perft 1 21 +perft 2 529 +perft 3 10772 +perft 4 285551 +perft 5 6179278 +perft 6 169500472 + +id gentest-3931 +epd 2k5/1r6/1p3R2/1P3p2/P6K/3Bpn2/1b6/R3N3 w - - +perft 1 4 +perft 2 108 +perft 3 2906 +perft 4 69404 +perft 5 1906508 +perft 6 45643963 + +id gentest-3932 +epd 1rk5/8/1p3R2/1P3p1K/P7/3BpN2/1b6/R7 b - - +perft 1 15 +perft 2 548 +perft 3 8803 +perft 4 301904 +perft 5 5400956 +perft 6 179760904 + +id gentest-3933 +epd 1r6/3k4/1p3R2/1P3pNK/P7/3Bp3/8/b7 w - - +perft 1 26 +perft 2 480 +perft 3 11823 +perft 4 224040 +perft 5 5520669 +perft 6 109197253 + +id gentest-3934 +epd 1r6/3k1N2/1p3R2/1P3p1K/P7/4p3/1bB5/8 b - - +perft 1 21 +perft 2 478 +perft 3 9290 +perft 4 217800 +perft 5 4329115 +perft 6 103089396 + +id gentest-3935 +epd 1r6/3k1N2/1p4R1/1P3p1K/P7/8/1bB5/4b3 w - - +perft 1 28 +perft 2 738 +perft 3 18651 +perft 4 479345 +perft 5 11904961 +perft 6 303257797 + +id gentest-3936 +epd 1r6/4kN2/1p2B1R1/1P5K/P7/8/1b6/4b3 b - - +perft 1 26 +perft 2 699 +perft 3 18142 +perft 4 490834 +perft 5 12219958 +perft 6 325421646 + +id gentest-3937 +epd 3r4/4k3/1p2B1RN/1P5K/P7/8/8/b3b3 w - - +perft 1 26 +perft 2 712 +perft 3 18295 +perft 4 474644 +perft 5 12002924 +perft 6 304784246 + +id gentest-3938 +epd 3r1k2/8/1p2B2N/1P5K/P7/6R1/8/b3b3 b - - +perft 1 26 +perft 2 827 +perft 3 20350 +perft 4 565484 +perft 5 14098055 +perft 6 370091724 + +id gentest-3939 +epd 3r1k2/8/1p2B2N/1P2b3/P5K1/6R1/8/b7 w - - +perft 1 28 +perft 2 745 +perft 3 20460 +perft 4 511779 +perft 5 13821214 +perft 6 343622809 + +id gentest-3940 +epd 5k2/6R1/1p2B2N/1P2b3/P7/5K2/8/b2r4 b - - +perft 1 29 +perft 2 939 +perft 3 24231 +perft 4 682744 +perft 5 17461022 +perft 6 463165085 + +id gentest-3941 +epd 5k2/6R1/1p2B2N/1P6/P7/4K3/7b/b4r2 w - - +perft 1 34 +perft 2 862 +perft 3 21899 +perft 4 559270 +perft 5 13808283 +perft 6 355117260 + +id gentest-3942 +epd 5k2/2R5/1p2B2N/1P6/P7/8/5K1b/b2r4 b - - +perft 1 27 +perft 2 750 +perft 3 19478 +perft 4 508444 +perft 5 13283045 +perft 6 337913095 + +id gentest-3943 +epd 5k2/2R2N2/1p2B3/1P1r4/P7/8/5K1b/b7 w - - +perft 1 30 +perft 2 815 +perft 3 21489 +perft 4 559196 +perft 5 14712445 +perft 6 381272950 + +id gentest-3944 +epd 5k2/2Rr1N2/1p2B3/1P6/P7/5K2/7b/b7 b - - +perft 1 27 +perft 2 771 +perft 3 19828 +perft 4 550557 +perft 5 14060396 +perft 6 380260863 + +id gentest-3945 +epd 5k2/2R5/1p2B2N/1P6/P7/3r1K2/7b/b7 w - - +perft 1 5 +perft 2 140 +perft 3 4142 +perft 4 106557 +perft 5 2876805 +perft 6 74064498 + +id gentest-3946 +epd 5k2/2R5/1p2B2N/PP6/6K1/2r5/7b/b7 b - - +perft 1 22 +perft 2 603 +perft 3 14448 +perft 4 379059 +perft 5 9544045 +perft 6 245324803 + +id gentest-3947 +epd 1b3k2/8/1p2B2N/PP6/6K1/2R5/1b6/8 w - - +perft 1 34 +perft 2 534 +perft 3 16641 +perft 4 285285 +perft 5 8431246 +perft 6 147743351 + +id gentest-3948 +epd 1b3k2/8/1p5N/PP6/2B3K1/5R2/8/2b5 b - - +perft 1 5 +perft 2 152 +perft 3 2298 +perft 4 66120 +perft 5 1122555 +perft 6 31347850 + +id gentest-3949 +epd 5k2/2b5/1p5N/PP6/2B2bK1/8/5R2/8 w - - +perft 1 29 +perft 2 329 +perft 3 9348 +perft 4 147386 +perft 5 4146442 +perft 6 70361562 + +id gentest-3950 +epd 5k2/2b5/1p5N/PP6/2B5/5K2/6R1/2b5 b - - +perft 1 17 +perft 2 547 +perft 3 9555 +perft 4 283863 +perft 5 5003619 +perft 6 143966343 + +id gentest-3951 +epd 5k2/2b5/1p3b1N/PP6/8/5K2/6R1/5B2 w - - +perft 1 28 +perft 2 573 +perft 3 15215 +perft 4 287941 +perft 5 7570354 +perft 6 141814600 + +id gentest-3952 +epd 5k1b/2b5/1p5N/PP6/4K3/8/4R3/5B2 b - - +perft 1 18 +perft 2 396 +perft 3 7087 +perft 4 174370 +perft 5 3160874 +perft 6 80586148 + +id gentest-3953 +epd 4k2b/8/1p5N/PP6/4K3/6b1/3R4/5B2 w - - +perft 1 30 +perft 2 565 +perft 3 15490 +perft 4 293627 +perft 5 7833704 +perft 6 147629713 + +id gentest-3954 +epd 1b2k2b/8/1p5N/PP6/4K3/8/1R6/5B2 b - - +perft 1 18 +perft 2 458 +perft 3 8881 +perft 4 224044 +perft 5 4335435 +perft 6 109314467 + +id gentest-3955 +epd 7b/3k4/1p5N/PP6/4Kb2/8/1R4B1/8 w - - +perft 1 23 +perft 2 521 +perft 3 12246 +perft 4 257631 +perft 5 6240667 +perft 6 126340214 + +id gentest-3956 +epd 7b/8/1p2k3/PP3N2/4Kb2/8/1R6/5B2 b - - +perft 1 21 +perft 2 573 +perft 3 10826 +perft 4 283569 +perft 5 5323993 +perft 6 136494122 + +id gentest-3957 +epd 7b/8/1p3k2/PP3N2/2B1K3/4b3/1R6/8 w - - +perft 1 33 +perft 2 434 +perft 3 13307 +perft 4 178246 +perft 5 5165483 +perft 6 75053042 + +id gentest-3958 +epd 7b/8/1p3k2/PPb2N2/1R2K3/3B4/8/8 b - - +perft 1 14 +perft 2 335 +perft 3 5102 +perft 4 120409 +perft 5 1959221 +perft 6 47286826 + +id gentest-3959 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-3960 +epd rnbqkb1r/pppppppp/7n/8/3PP3/8/PPP2PPP/RNBQKBNR b KQkq - +perft 1 20 +perft 2 759 +perft 3 16820 +perft 4 635081 +perft 5 15475268 +perft 6 582864927 + +id gentest-3961 +epd rnbqkbr1/pp1ppppp/2p4n/7Q/3PP3/8/PPP2PPP/RNB1KBNR w KQq - +perft 1 49 +perft 2 884 +perft 3 38964 +perft 4 849866 +perft 5 36308268 +perft 6 893197210 + +id gentest-3962 +epd rnb1kbr1/pp1ppppp/1qp4n/6Q1/3PP3/8/PPP2PPP/RNB1KBNR b KQq - +perft 1 25 +perft 2 1116 +perft 3 30176 +perft 4 1275760 +perft 5 36652536 +perft 6 1497308724 + +id gentest-3963 +epd rnb1kbr1/pp1ppppp/2p4n/6Q1/3PPP2/2q5/P1P3PP/RNB1KBNR w KQq - +perft 1 6 +perft 2 185 +perft 3 6365 +perft 4 193007 +perft 5 6688629 +perft 6 204494861 + +id gentest-3964 +epd r1b1kbr1/pp1ppppp/n1p4n/6Q1/3PPP2/2q5/P1PBK1PP/RN3BNR b q - +perft 1 35 +perft 2 1093 +perft 3 36035 +perft 4 1146374 +perft 5 37344349 +perft 6 1212544280 + +id gentest-3965 +epd r1b1kb1r/pp1ppppp/n1p4n/6Q1/3PPP2/4B3/P1P1K1PP/RN2qBNR w q - +perft 1 3 +perft 2 86 +perft 3 2847 +perft 4 82223 +perft 5 2693821 +perft 6 80040481 + +id gentest-3966 +epd r1b1kb1r/pp1ppppp/n1p4n/6Q1/1q1PPP2/P2KB3/2P3PP/RN3BNR b q - +perft 1 34 +perft 2 975 +perft 3 31314 +perft 4 903584 +perft 5 28723186 +perft 6 846528901 + +id gentest-3967 +epd r1b1kb1r/pp1pp1pp/n1p2p1Q/8/3PPP2/q2KB3/2P3PP/RN3BNR w q - +perft 1 7 +perft 2 194 +perft 3 5602 +perft 4 152504 +perft 5 4707858 +perft 6 132049061 + +id gentest-3968 +epd r1b1kb1r/pp1pp1pp/n1p2p1Q/8/q2PPP2/4B3/2PKB1PP/RN4NR b q - +perft 1 29 +perft 2 975 +perft 3 27661 +perft 4 948284 +perft 5 27800329 +perft 6 975421711 + +id gentest-3969 +epd r1b1kb1r/ppnpp1pp/2p2p1Q/8/1q1PPP2/4B3/2P1B1PP/RN1K2NR w q - +perft 1 40 +perft 2 1327 +perft 3 48676 +perft 4 1587760 +perft 5 59326622 +perft 6 1920417044 + +id gentest-3970 +epd r1b1kb1r/p1npp1pp/2p2p1Q/1p6/1q1PPP2/4B3/2P3PP/RNK2BNR b q - +perft 1 33 +perft 2 1019 +perft 3 32318 +perft 4 1058260 +perft 5 33840276 +perft 6 1153734175 + +id gentest-3971 +epd r3kb1r/pbnpp2p/2p2p1p/Rp6/1q1PPP2/4B3/2P3PP/1NK2BNR w q - +perft 1 29 +perft 2 990 +perft 3 25772 +perft 4 885082 +perft 5 24179960 +perft 6 833948896 + +id gentest-3972 +epd r3kb1r/pbnpp2p/2p2p1p/Rp6/3PPP2/4B3/2P1B1PP/1K4NR b q - +perft 1 22 +perft 2 732 +perft 3 16515 +perft 4 551317 +perft 5 13055868 +perft 6 437252213 + +id gentest-3973 +epd r3kb1r/pbnpp2p/2p2p2/R6p/1p1PPP2/4BN2/2P1B1PP/1K5R w q - +perft 1 47 +perft 2 1183 +perft 3 51601 +perft 4 1327820 +perft 5 54896930 +perft 6 1443345278 + +id gentest-3974 +epd r1b1kb1r/p1npp2p/2p2p2/R3N2p/1p1PPP2/4B3/K1P1B1PP/7R b q - +perft 1 21 +perft 2 934 +perft 3 20889 +perft 4 890255 +perft 5 21175515 +perft 6 873641300 + +id gentest-3975 +epd r1b1kbr1/p2pp2p/2p1npN1/R6p/1p1PPP2/4B3/K1P1B1PP/7R w q - +perft 1 49 +perft 2 1300 +perft 3 57474 +perft 4 1532493 +perft 5 64434174 +perft 6 1748480555 + +id gentest-3976 +epd 1rb1kbr1/p2pp2p/2p1npN1/1R5p/1p1PPP2/4B3/2P1B1PP/1K5R b - - +perft 1 31 +perft 2 1348 +perft 3 40959 +perft 4 1690376 +perft 5 50533834 +perft 6 2001147163 + +id gentest-3977 +epd 1rbk1br1/p1npp2p/2p2pN1/1R5p/1p1PPP1P/4B3/2P1B1P1/1K5R w - - +perft 1 44 +perft 2 1312 +perft 3 53599 +perft 4 1557318 +perft 5 60185408 +perft 6 1729722981 + +id gentest-3978 +epd 1rbk1br1/pR1pp2p/n1p2pN1/7p/1p1PPP1P/8/2P1BBP1/1K5R b - - +perft 1 20 +perft 2 823 +perft 3 17908 +perft 4 694478 +perft 5 16269487 +perft 6 603569805 + +id gentest-3979 +epd 1rbk1brN/pR1pp2p/2p5/2n2p1p/1p1PPP1P/8/2P1BBP1/1K5R w - - +perft 1 41 +perft 2 1137 +perft 3 42865 +perft 4 1189630 +perft 5 42211094 +perft 6 1180807471 + +id gentest-3980 +epd 1rbk1brN/pR1p3p/2p5/2n1pp1p/1p1PPP1P/6P1/2P1B3/1K2B2R b - - +perft 1 31 +perft 2 1148 +perft 3 33919 +perft 4 1189326 +perft 5 35196697 +perft 6 1191222151 + +id gentest-3981 +epd 1rbk1b1N/pR4rp/2pp4/2n1pp1p/1p1PPP1P/6PR/2P1B3/1K2B3 w - - +perft 1 39 +perft 2 1234 +perft 3 43921 +perft 4 1351782 +perft 5 45507295 +perft 6 1385853506 + +id gentest-3982 +epd 1r1k1b1N/pR1b2rp/2pp4/2n1pP1p/1p1P1P1P/6PR/2P1BB2/1K6 b - - +perft 1 33 +perft 2 1134 +perft 3 34560 +perft 4 1142726 +perft 5 34872907 +perft 6 1131968575 + +id gentest-3983 +epd 1r1k1b1N/pn1b2rp/2p5/3ppP1p/1p1P1P1P/6PR/2P1B3/1K4B1 w - - +perft 1 26 +perft 2 775 +perft 3 19453 +perft 4 592841 +perft 5 14733674 +perft 6 455004592 + +id gentest-3984 +epd 1r1k3N/pn1b2rp/2pb4/3ppP1p/1p1P1P1P/2P3PR/4B2B/1K6 b - - +perft 1 32 +perft 2 714 +perft 3 22230 +perft 4 476999 +perft 5 14935073 +perft 6 318477808 + +id gentest-3985 +epd 1r1k3N/1n1b2rp/3b4/p1pppP1p/1p1P1PPP/2P4R/4B2B/1K6 w - - +perft 1 28 +perft 2 861 +perft 3 23243 +perft 4 716051 +perft 5 19209840 +perft 6 589761298 + +id gentest-3986 +epd 1r1k3N/1n1b3p/3b1Pr1/p1ppp2p/1p1P1PPP/2P4R/2K1B2B/8 b - - +perft 1 32 +perft 2 900 +perft 3 27395 +perft 4 746689 +perft 5 22548639 +perft 6 609140404 + +id gentest-3987 +epd 1r1k3N/1n1b3p/3b1P2/p1ppp1rp/3P1PPP/2p1R3/2K1B2B/8 w - - +perft 1 32 +perft 2 893 +perft 3 25494 +perft 4 704328 +perft 5 19465564 +perft 6 541370168 + +id gentest-3988 +epd 1r1k3N/1n1b3p/B2b1P2/p1ppp1r1/3P1PpP/2p3R1/2K4B/8 b - - +perft 1 28 +perft 2 779 +perft 3 21244 +perft 4 563987 +perft 5 15543004 +perft 6 404271473 + +id gentest-3989 +epd 1r5N/1n1bkP1p/B2b4/p2pp1r1/2pP1PpP/2p3R1/2K4B/8 w - - +perft 1 27 +perft 2 842 +perft 3 21386 +perft 4 654993 +perft 5 16822725 +perft 6 510658281 + +id gentest-3990 +epd 1r5N/3bkP1p/2Bb4/p2ppr2/2pP1PpP/2p3R1/2K4B/8 b - - +perft 1 37 +perft 2 935 +perft 3 29285 +perft 4 731805 +perft 5 22140748 +perft 6 553330594 + +id gentest-3991 +epd 7r/2bbkP1p/8/pB1ppr2/2pP1PpP/2p3R1/2K4B/8 w - - +perft 1 25 +perft 2 765 +perft 3 18980 +perft 4 558950 +perft 5 13808058 +perft 6 399959519 + +id gentest-3992 +epd 5B1r/2bb1k1p/8/pB1ppr2/2pP1PpP/2p5/2K3RB/8 b - - +perft 1 28 +perft 2 732 +perft 3 20620 +perft 4 532585 +perft 5 15131064 +perft 6 389225805 + +id gentest-3993 +epd 1b3Bkr/3b3p/8/pB1ppr2/2pP1PpP/2p5/2KR3B/8 w - - +perft 1 26 +perft 2 617 +perft 3 15911 +perft 4 388131 +perft 5 9887199 +perft 6 247159186 + +id gentest-3994 +epd 1b3Bkr/3b3p/8/pB1pp1rP/2pP1Pp1/2p5/3R3B/2K5 b - - +perft 1 23 +perft 2 634 +perft 3 14898 +perft 4 401320 +perft 5 9609432 +perft 6 254419150 + +id gentest-3995 +epd 1b5r/3b2kp/8/pB1pp1rP/2pP1Pp1/2p5/3R3B/3K4 w - - +perft 1 23 +perft 2 644 +perft 3 14427 +perft 4 408379 +perft 5 9116751 +perft 6 260854290 + +id gentest-3996 +epd 1b5r/6kp/2b4P/p2pp1r1/B1pP1Pp1/2p5/3R3B/3K4 b - - +perft 1 6 +perft 2 126 +perft 3 3174 +perft 4 64823 +perft 5 1664469 +perft 6 34371600 + +id gentest-3997 +epd 7r/7p/2bb2kP/p2pp1r1/B1pP1Pp1/2p5/6RB/3K4 w - - +perft 1 23 +perft 2 670 +perft 3 14168 +perft 4 411562 +perft 5 8603213 +perft 6 250384985 + +id gentest-3998 +epd 7r/7p/3b2kP/pb1pP1r1/B1p2Pp1/2p5/6R1/3K2B1 b - - +perft 1 30 +perft 2 753 +perft 3 20955 +perft 4 511603 +perft 5 14333268 +perft 6 344145863 + +id gentest-3999 +epd 7r/7p/2bb2kP/p2pP1r1/B1p2P2/2p1B1p1/6R1/3K4 w - - +perft 1 29 +perft 2 837 +perft 3 21592 +perft 4 622510 +perft 5 15500428 +perft 6 450878880 + +id gentest-4000 +epd 4r3/7p/1Bbb2kP/p2pP1r1/B1p2P2/2p3p1/2R5/3K4 b - - +perft 1 33 +perft 2 885 +perft 3 27767 +perft 4 702782 +perft 5 21723332 +perft 6 536127209 + +id gentest-4001 +epd 8/7p/2bb2kP/p2pr2r/B1p2P2/2p3p1/2R2B2/3K4 w - - +perft 1 20 +perft 2 673 +perft 3 13795 +perft 4 456739 +perft 5 9578614 +perft 6 312493879 + +id gentest-4002 +epd 8/7p/2bb2kP/p2pr3/2p2P1r/1Bp3p1/2R5/3K2B1 b - - +perft 1 39 +perft 2 808 +perft 3 29832 +perft 4 609159 +perft 5 21643213 +perft 6 441126210 + +id gentest-4003 +epd 8/5k1p/2bb3P/3pr3/p1p2P1r/1BR3p1/8/3K2B1 w - - +perft 1 23 +perft 2 922 +perft 3 20396 +perft 4 776762 +perft 5 17176259 +perft 6 628583908 + +id gentest-4004 +epd 8/4rk1p/1Bbb3P/3p4/p1p2P1r/1B4p1/2R5/3K4 b - - +perft 1 42 +perft 2 991 +perft 3 39902 +perft 4 911577 +perft 5 35252601 +perft 6 789557921 + +id gentest-4005 +epd 8/4rk1p/2b4P/3p4/p1p2b2/1B2B1p1/2R4r/3K4 w - - +perft 1 24 +perft 2 1027 +perft 3 21112 +perft 4 841967 +perft 5 17007117 +perft 6 641414148 + +id gentest-4006 +epd 4k3/4r2p/2b4P/3p4/p1p2b2/1B4p1/3BR2r/3K4 b - - +perft 1 35 +perft 2 732 +perft 3 24615 +perft 4 506835 +perft 5 17136659 +perft 6 346915189 + +id gentest-4007 +epd 4k3/4r2p/2b4P/3p4/p1p5/6p1/1bBBR2r/3K4 w - - +perft 1 26 +perft 2 829 +perft 3 19779 +perft 4 634324 +perft 5 14856365 +perft 6 479281970 + +id gentest-4008 +epd 4k3/4r2p/2b4P/3p4/p1pb1B2/6p1/2B3Rr/3K4 b - - +perft 1 41 +perft 2 969 +perft 3 35700 +perft 4 854901 +perft 5 30354789 +perft 6 729809938 + +id gentest-4009 +epd 4k3/7p/2b4P/3p4/p1pb1B2/4r1p1/2B2R1r/3K4 w - - +perft 1 23 +perft 2 856 +perft 3 20165 +perft 4 714325 +perft 5 16810080 +perft 6 580038080 + +id gentest-4010 +epd 8/3k3p/2b3BP/3p4/p1pb1B2/4r1p1/3K1R1r/8 b - - +perft 1 41 +perft 2 812 +perft 3 29266 +perft 4 610453 +perft 5 21517215 +perft 6 471634230 + +id gentest-4011 +epd 3k4/7p/2b4P/3p4/p1pb1B2/4r1p1/2BK1R2/7r w - - +perft 1 21 +perft 2 861 +perft 3 17552 +perft 4 677471 +perft 5 14313840 +perft 6 528310749 + +id gentest-4012 +epd 3k4/7p/2b4P/3pb3/p1p5/4rRp1/2BK4/7r b - - +perft 1 45 +perft 2 757 +perft 3 30470 +perft 4 517849 +perft 5 19874842 +perft 6 342598066 + +id gentest-4013 +epd 4k3/7p/2b4P/3pb3/p1p5/1B3Rp1/3Kr3/7r w - - +perft 1 1 +perft 2 36 +perft 3 618 +perft 4 19092 +perft 5 336460 +perft 6 9984188 + +id gentest-4014 +epd 4k3/7p/2b4P/3p4/p1p2R2/1Bb3p1/4K3/7r b - - +perft 1 35 +perft 2 638 +perft 3 18904 +perft 4 327939 +perft 5 9421469 +perft 6 162356881 + +id gentest-4015 +epd 4k3/5R1p/2b4P/3pr3/p1p5/1Bb3p1/4K3/8 w - - +perft 1 3 +perft 2 81 +perft 3 1409 +perft 4 36425 +perft 5 603106 +perft 6 15855197 + +id gentest-4016 +epd 4k3/R6p/2b4P/3pr3/p7/1pb2Kp1/8/8 b - - +perft 1 26 +perft 2 342 +perft 3 8655 +perft 4 111822 +perft 5 2963935 +perft 6 38563809 + +id gentest-4017 +epd R7/3k3p/2b4P/3p3r/p7/1pb2Kp1/8/8 w - - +perft 1 17 +perft 2 466 +perft 3 6740 +perft 4 186826 +perft 5 2586006 +perft 6 72371149 + +id gentest-4018 +epd 8/3k1R1p/2b4P/3p4/p6r/1pb2Kp1/8/8 b - - +perft 1 5 +perft 2 75 +perft 3 2189 +perft 4 31087 +perft 5 886237 +perft 6 12202753 + +id gentest-4019 +epd 2k5/6Rp/2b4P/3p4/pr6/1pb2Kp1/8/8 w - - +perft 1 16 +perft 2 429 +perft 3 5883 +perft 4 156807 +perft 5 2170834 +perft 6 57928942 + +id gentest-4020 +epd 1rk5/7p/2bR3P/3p4/p7/1pb2Kp1/8/8 b - - +perft 1 27 +perft 2 344 +perft 3 7937 +perft 4 105535 +perft 5 2538718 +perft 6 36054133 + +id gentest-4021 +epd 1r6/3k3p/2R4P/3p4/p7/1p3Kp1/1b6/8 w - - +perft 1 19 +perft 2 465 +perft 3 7876 +perft 4 189765 +perft 5 3060154 +perft 6 73696553 + +id gentest-4022 +epd 1r6/3k3p/7P/3p4/p7/1p4K1/8/b1R5 b - - +perft 1 26 +perft 2 528 +perft 3 12989 +perft 4 236309 +perft 5 5781193 +perft 6 97507285 + +id gentest-4023 +epd 1r1k4/2R4p/7P/3p4/8/pp4K1/8/b7 w - - +perft 1 22 +perft 2 366 +perft 3 6839 +perft 4 126158 +perft 5 2184045 +perft 6 44018754 + +id gentest-4024 +epd 1r1k3b/R6p/7P/3p4/8/pp4K1/8/8 b - - +perft 1 18 +perft 2 336 +perft 3 6326 +perft 4 107214 +perft 5 2167452 +perft 6 35063609 + +id gentest-4025 +epd 2rk3b/R6p/7P/3p4/8/p7/1p4K1/8 w - - +perft 1 20 +perft 2 399 +perft 3 6759 +perft 4 157631 +perft 5 2499509 +perft 6 63727285 + +id gentest-4026 +epd 2rk4/7p/7P/3p4/R7/2b5/1p4K1/8 b - - +perft 1 24 +perft 2 495 +perft 3 13177 +perft 4 230041 +perft 5 6388458 +perft 6 102367284 + +id gentest-4027 +epd 2rk4/7p/7P/8/2Rp4/8/1p1b2K1/8 w - - +perft 1 18 +perft 2 383 +perft 3 6127 +perft 4 146504 +perft 5 2257393 +perft 6 58409273 + +id gentest-4028 +epd 2r5/2k4p/7P/8/3R4/8/1p1b3K/8 b - - +perft 1 24 +perft 2 417 +perft 3 10339 +perft 4 172323 +perft 5 4611471 +perft 6 74108197 + +id gentest-4029 +epd 1r6/2k4p/7P/8/3R1b2/8/1p6/7K w - - +perft 1 14 +perft 2 351 +perft 3 5000 +perft 4 125315 +perft 5 1813580 +perft 6 46334074 + +id gentest-4030 +epd 1r6/2k4p/7P/8/8/R5b1/1p6/7K b - - +perft 1 30 +perft 2 426 +perft 3 10979 +perft 4 152378 +perft 5 3913197 +perft 6 55332310 + +id gentest-4031 +epd 8/2k4p/7P/8/1r6/5Rb1/8/1q5K w - - +perft 1 2 +perft 2 84 +perft 3 879 +perft 4 33171 +perft 5 404208 +perft 6 15287243 + +id gentest-4032 +epd 8/2k4p/7P/5q2/1r6/2R3b1/6K1/8 b - - +perft 1 8 +perft 2 123 +perft 3 5249 +perft 4 70273 +perft 5 2841178 +perft 6 37291761 + +id gentest-4033 +epd 8/1k5p/7P/5q2/1r6/8/6K1/2R1b3 w - - +perft 1 14 +perft 2 590 +perft 3 7190 +perft 4 287906 +perft 5 3637290 +perft 6 142518856 + +id gentest-4034 +epd 8/7p/2k4P/5q2/1r6/8/8/4b2K b - - +perft 1 51 +perft 2 124 +perft 3 5991 +perft 4 18322 +perft 5 860208 +perft 6 2337387 + +id gentest-4035 +epd 8/7p/2k4P/8/8/5q2/1r6/4b1K1 w - - +perft 1 0 +perft 2 0 +perft 3 0 +perft 4 0 +perft 5 0 +perft 6 0 + +id gentest-4036 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-4037 +epd rnbqkbnr/ppppppp1/7p/8/8/3P2P1/PPP1PP1P/RNBQKBNR b KQkq - +perft 1 19 +perft 2 531 +perft 3 11436 +perft 4 326113 +perft 5 7873344 +perft 6 230435644 + +id gentest-4038 +epd rnbqkbnr/pp1pp1p1/2p2p1p/8/P7/3P2P1/1PP1PP1P/RNBQKBNR w KQkq - +perft 1 29 +perft 2 553 +perft 3 15878 +perft 4 348681 +perft 5 10302571 +perft 6 251094524 + +id gentest-4039 +epd rnbqkbnr/pp1p2p1/2p2p1p/4p3/P4B2/1P1P2P1/2P1PP1P/RN1QKBNR b KQkq - +perft 1 27 +perft 2 733 +perft 3 20301 +perft 4 578559 +perft 5 16530544 +perft 6 487732162 + +id gentest-4040 +epd rnb1kbnr/pp2q1p1/2pp1p1p/4p3/P4B2/1P1P2P1/R1P1PP1P/1N1QKBNR w Kkq - +perft 1 30 +perft 2 836 +perft 3 25672 +perft 4 738264 +perft 5 23051133 +perft 6 687830205 + +id gentest-4041 +epd rn2kbnr/pp2q1p1/2ppbp1p/P3p3/5B2/1P1P2PP/R1P1PP2/1N1QKBNR b Kkq - +perft 1 30 +perft 2 868 +perft 3 26010 +perft 4 782152 +perft 5 23875737 +perft 6 739439186 + +id gentest-4042 +epd rn2kbnr/p3q1p1/2pp1p1p/Pp1bp3/4PB2/1P1P2PP/R1P2P2/1N1QKBNR w Kkq b6 +perft 1 36 +perft 2 878 +perft 3 30628 +perft 4 809788 +perft 5 28130696 +perft 6 786452515 + +id gentest-4043 +epd rn2kbnr/p3q1p1/2ppbp1p/Pp2p3/4PB2/1P1P2PP/R1PN1P2/Q3KBNR b Kkq - +perft 1 29 +perft 2 929 +perft 3 27001 +perft 4 895205 +perft 5 26497056 +perft 6 897608781 + +id gentest-4044 +epd rn2kbnr/p3q1p1/2ppbp2/P3p2p/Rp2PB2/1P1P2PP/2PN1P2/Q3KBNR w Kkq - +perft 1 33 +perft 2 993 +perft 3 33197 +perft 4 994766 +perft 5 33777199 +perft 6 1028646924 + +id gentest-4045 +epd rn2kbnr/p3q1p1/2pp1p2/P2bp2p/Rp2PB1P/1PQP2P1/2PN1P2/4KBNR b Kkq - +perft 1 26 +perft 2 875 +perft 3 23793 +perft 4 830044 +perft 5 23593778 +perft 6 842605736 + +id gentest-4046 +epd rn2kbnr/p3qbp1/2pp1p1B/P3p2p/Rp2P2P/1PQP2P1/2PN1P2/4KBNR w Kkq - +perft 1 34 +perft 2 817 +perft 3 28635 +perft 4 735487 +perft 5 26267923 +perft 6 713366586 + +id gentest-4047 +epd r3kbnr/p3qbp1/n1pp1p1B/P3p2p/Rp2P2P/1P1P2P1/2P2P2/QN2KBNR b Kkq - +perft 1 28 +perft 2 969 +perft 3 28436 +perft 4 986483 +perft 5 30101636 +perft 6 1047754979 + +id gentest-4048 +epd 1r2kbn1/p3qbp1/n1pp1p1r/P3Q2p/Rp2P2P/1P1P2P1/2P2P2/1N2KBNR w K - +perft 1 39 +perft 2 1063 +perft 3 38792 +perft 4 1121380 +perft 5 39683218 +perft 6 1203436463 + +id gentest-4049 +epd 1r2kbnr/p3qbp1/n1pp1p2/P6p/Rp2P2P/1P1P1PP1/2P5/QN2KBNR b K - +perft 1 30 +perft 2 882 +perft 3 27947 +perft 4 842800 +perft 5 27618388 +perft 6 851795296 + +id gentest-4050 +epd 5bnr/p2kqbp1/nrpp1Q2/P6p/Rp2P2P/1P1P1PP1/2P5/1N2KBNR w K - +perft 1 40 +perft 2 1114 +perft 3 40999 +perft 4 1228957 +perft 5 43863629 +perft 6 1381936652 + +id gentest-4051 +epd 5bnr/p2kq1p1/nrppb3/P5Qp/1p2P2P/1P1P1PP1/R1P5/1N2KBNR b K - +perft 1 29 +perft 2 1166 +perft 3 36087 +perft 4 1368127 +perft 5 44315729 +perft 6 1620659368 + +id gentest-4052 +epd 2q2bnr/p2k2p1/nrppb3/P6p/1p2P1QP/1P1P1PP1/R1P5/1N2KBNR w K - +perft 1 32 +perft 2 890 +perft 3 29301 +perft 4 866320 +perft 5 29081582 +perft 6 897232471 + +id gentest-4053 +epd 1q3bnr/p2k2p1/nrppb3/P6p/1p2P1QP/1P1P1PPB/R1P2K2/1N4NR b - - +perft 1 28 +perft 2 802 +perft 3 22772 +perft 4 691400 +perft 5 20512945 +perft 6 651829910 + +id gentest-4054 +epd 1q1k1bnr/pr4p1/n1ppQ3/P6p/1p2P2P/1P1P1PPB/R1P2K2/1N4NR w - - +perft 1 39 +perft 2 764 +perft 3 29361 +perft 4 639090 +perft 5 23932733 +perft 6 567100483 + +id gentest-4055 +epd 1q1k1bnr/p4rp1/n1pp3Q/P6p/1p2P2P/1P1P1PPB/2P2K2/RN4NR b - - +perft 1 30 +perft 2 1054 +perft 3 29705 +perft 4 1024716 +perft 5 29509259 +perft 6 1013940974 + +id gentest-4056 +epd 3k1bnr/p4r2/nqpp2pQ/P6p/1p2P2P/1P1P1PPB/2P5/RN3KNR w - - +perft 1 35 +perft 2 1219 +perft 3 39291 +perft 4 1314681 +perft 5 42857597 +perft 6 1412038992 + +id gentest-4057 +epd 3k1bnr/p4r2/nqp3pQ/P2p3p/1pP1P2P/1P1P1PPB/8/RN3KNR b - - +perft 1 41 +perft 2 1324 +perft 3 48345 +perft 4 1596634 +perft 5 56173884 +perft 6 1884922755 + +id gentest-4058 +epd 3k1bnr/p2B1r2/nqp3pQ/P2p3p/1pP1P2P/1P1P1PP1/8/RN3KNR w - - +perft 1 39 +perft 2 1439 +perft 3 51152 +perft 4 1818075 +perft 5 64502449 +perft 6 2239986265 + +id gentest-4059 +epd 3k1bnr/p2B3r/nqp3pQ/P2P3p/1p1PP2P/1P3PP1/8/RN3KNR b - - +perft 1 29 +perft 2 1001 +perft 3 28400 +perft 4 973793 +perft 5 28529135 +perft 6 976536624 + +id gentest-4060 +epd 3k2nr/p2B3r/n1p3Q1/PqbP3p/1p1PP2P/1P3PP1/8/RN3KNR w - - +perft 1 4 +perft 2 111 +perft 3 4107 +perft 4 107406 +perft 5 3907822 +perft 6 106237413 + +id gentest-4061 +epd 3k2nr/p2B3r/n5Q1/Pqbp3p/1p1PP2P/1P3PP1/R3N3/1N3K1R b - - +perft 1 29 +perft 2 1260 +perft 3 33782 +perft 4 1415607 +perft 5 39355007 +perft 6 1611854060 + +id gentest-4062 +epd 6nr/p2k4/n6r/Pqbp2Qp/1p1PP2P/1P3PP1/R3N3/1N3K1R w - - +perft 1 37 +perft 2 1038 +perft 3 36435 +perft 4 1048488 +perft 5 36541019 +perft 6 1090856044 + +id gentest-4063 +epd 6nr/p2k3r/n5Q1/Pqbp3p/Rp1PP2P/1P3PP1/4N3/1N3K1R b - - +perft 1 28 +perft 2 954 +perft 3 23549 +perft 4 803926 +perft 5 21684260 +perft 6 739203799 + +id gentest-4064 +epd 6nr/pk5r/n6Q/Pqbp3p/Rp1PP2P/1P3PP1/4N3/1N3K1R w - - +perft 1 35 +perft 2 924 +perft 3 30560 +perft 4 886202 +perft 5 29178235 +perft 6 895231810 + +id gentest-4065 +epd 6nr/pk1q3r/n6Q/P1bp3p/Rp1PPP1P/1P4PR/4N3/1N3K2 b - - +perft 1 34 +perft 2 1040 +perft 3 31516 +perft 4 969539 +perft 5 30113720 +perft 6 934813851 + +id gentest-4066 +epd 1n4nr/p1kq3r/7Q/P1bp3p/Rp1PPP1P/1P4PR/3NN3/5K2 w - - +perft 1 34 +perft 2 1004 +perft 3 33084 +perft 4 984675 +perft 5 32457395 +perft 6 988892512 + +id gentest-4067 +epd 1n4nr/p1kq3r/Qb6/P2p3p/Rp1PPP1P/1P4PR/3N4/2N2K2 b - - +perft 1 30 +perft 2 855 +perft 3 22432 +perft 4 672552 +perft 5 18947471 +perft 6 584233130 + +id gentest-4068 +epd 1n4nr/2k1q2r/1p6/P2p3p/Rp1PPP1P/1P4PR/3N4/2N2K2 w - - +perft 1 23 +perft 2 688 +perft 3 16417 +perft 4 500251 +perft 5 12163093 +perft 6 379994302 + +id gentest-4069 +epd 1n4nr/2k4r/1p1q4/P2p3p/Rp1PPPPP/1P6/3N3R/2N2K2 b - - +perft 1 32 +perft 2 841 +perft 3 27222 +perft 4 726542 +perft 5 24101665 +perft 6 648386858 + +id gentest-4070 +epd 1n4nr/2k4r/8/Pp1p3p/Rp1PPqPP/1P3N2/7R/2N2K2 w - - +perft 1 26 +perft 2 898 +perft 3 21492 +perft 4 746564 +perft 5 17568512 +perft 6 613410402 + +id gentest-4071 +epd 6nr/2k4r/2n5/Pp1p3p/Rp1PPqPP/1P3N2/8/2N1K2R b - - +perft 1 40 +perft 2 881 +perft 3 34838 +perft 4 753409 +perft 5 29371081 +perft 6 644758039 + +id gentest-4072 +epd 6nr/1k5r/2n5/Pp1pN2p/Rp1PP1PP/1P6/7q/2N1K2R w - - +perft 1 23 +perft 2 852 +perft 3 17151 +perft 4 616069 +perft 5 12956006 +perft 6 462149478 + +id gentest-4073 +epd 6nr/1k1r4/2n5/Pp1p3p/1p1PP1PP/1P3N2/7q/R1N1K2R b - - +perft 1 44 +perft 2 857 +perft 3 33689 +perft 4 688345 +perft 5 26236907 +perft 6 562422164 + +id gentest-4074 +epd 6nr/1k1r4/2n5/Pp1p2Pp/1p1PP2P/1P3N2/8/RqN1K2R w - - +perft 1 21 +perft 2 685 +perft 3 14039 +perft 4 468200 +perft 5 9747865 +perft 6 332529286 + +id gentest-4075 +epd 6nr/3r4/k1n5/Pp1p2Pp/1p1PP2P/1P3N2/4K3/RqN3R1 b - - +perft 1 32 +perft 2 705 +perft 3 22712 +perft 4 482587 +perft 5 15949158 +perft 6 339314753 + +id gentest-4076 +epd 6nr/2r5/k7/np1P2Pp/1p1P3P/1P3N2/4K3/RqN3R1 w - - +perft 1 26 +perft 2 831 +perft 3 17383 +perft 4 554804 +perft 5 11690964 +perft 6 385071826 + +id gentest-4077 +epd 6nr/k1r5/8/np1P2Pp/1p1P3P/RP2KN2/8/1qN3R1 b - - +perft 1 35 +perft 2 719 +perft 3 24721 +perft 4 523073 +perft 5 18349358 +perft 6 395499975 + +id gentest-4078 +epd k5nr/4r3/8/np1P2Pp/1p1P3P/RP2KN2/8/1qN4R w - - +perft 1 4 +perft 2 128 +perft 3 2478 +perft 4 78996 +perft 5 1598687 +perft 6 52700988 + +id gentest-4079 +epd k5nr/4r3/8/np1P2Pp/1p1P3P/RP1N1N2/5K2/q6R b - - +perft 1 34 +perft 2 802 +perft 3 25167 +perft 4 606026 +perft 5 19213454 +perft 6 468462938 + +id gentest-4080 +epd k5nr/4r3/4q3/np1P2Pp/1p1P3P/RP1N1N2/6K1/7R w - - +perft 1 34 +perft 2 1127 +perft 3 31933 +perft 4 1116942 +perft 5 30575238 +perft 6 1067266921 + +id gentest-4081 +epd k3r1nr/8/4q3/np1P2Pp/1p1P3P/1P1N1N2/6K1/R6R b - - +perft 1 33 +perft 2 1157 +perft 3 39565 +perft 4 1228577 +perft 5 42656562 +perft 6 1247774460 + +id gentest-4082 +epd k5nr/4r3/8/np1P2Pp/1p1Pq2P/1P1N1N2/6K1/6RR w - - +perft 1 23 +perft 2 837 +perft 3 18747 +perft 4 709234 +perft 5 16708925 +perft 6 635249332 + +id gentest-4083 +epd k5nr/r7/8/np1PN1Pp/1p1Pq2P/1P3N2/5K2/6RR b - - +perft 1 35 +perft 2 761 +perft 3 28048 +perft 4 651465 +perft 5 24333392 +perft 6 581902518 + +id gentest-4084 +epd k5nr/r2N4/8/np1P2Pp/1p1P3P/1P3N2/3q1K2/6RR w - - +perft 1 3 +perft 2 74 +perft 3 1415 +perft 4 39745 +perft 5 859305 +perft 6 26249871 + +id gentest-4085 +epd k5nr/r2N4/8/np1P2Pp/1p1P1K1P/1P3N2/5q2/6RR b - - +perft 1 29 +perft 2 522 +perft 3 16447 +perft 4 339764 +perft 5 11425203 +perft 6 251915333 + +id gentest-4086 +epd k5nr/rn1N4/8/1p1PK1Pp/1p1P3P/1P3q2/8/6RR w - - +perft 1 19 +perft 2 633 +perft 3 11093 +perft 4 377895 +perft 5 7164045 +perft 6 249447725 + +id gentest-4087 +epd k4Nnr/1n6/4K3/1p1P2Pp/1p1P3P/rP3q2/8/6RR b - - +perft 1 38 +perft 2 486 +perft 3 17901 +perft 4 284660 +perft 5 10422692 +perft 6 184989760 + +id gentest-4088 +epd k4N1r/8/4K2n/1pPP2Pp/1p5P/rP3q2/8/6RR w - - +perft 1 22 +perft 2 821 +perft 3 14957 +perft 4 546558 +perft 5 10632810 +perft 6 386989910 + +id gentest-4089 +epd k4N1r/8/2P1K2n/1p1P2Pp/1p5P/rPq5/8/R6R b - - +perft 1 34 +perft 2 743 +perft 3 24745 +perft 4 518428 +perft 5 17485308 +perft 6 366488461 + +id gentest-4090 +epd k4Nr1/r7/2P1K2n/1p1P2Pp/1p5P/1Pq5/8/5R1R w - - +perft 1 23 +perft 2 955 +perft 3 19911 +perft 4 759721 +perft 5 16348514 +perft 6 598010490 + +id gentest-4091 +epd k4Nr1/r7/2P4n/1p1PK1Pp/1p5P/1P5q/8/6RR b - - +perft 1 38 +perft 2 692 +perft 3 24541 +perft 4 467102 +perft 5 16104469 +perft 6 321131377 + +id gentest-4092 +epd k4N2/r7/2P4n/1p1PK1Rp/1p5P/1P4q1/8/7R w - - +perft 1 5 +perft 2 166 +perft 3 3408 +perft 4 104381 +perft 5 2179488 +perft 6 64036975 + +id gentest-4093 +epd k4N2/r7/2P1K2n/1p1P3p/1p5P/1P4R1/7q/7R b - - +perft 1 30 +perft 2 750 +perft 3 22912 +perft 4 522883 +perft 5 15700834 +perft 6 353655815 + +id gentest-4094 +epd k4N2/r7/1qP1K2n/1p1P3p/1p5P/1P4R1/8/4R3 w - - +perft 1 30 +perft 2 885 +perft 3 22839 +perft 4 630763 +perft 5 15255615 +perft 6 423196763 + +id gentest-4095 +epd k4N2/8/1qP1K2n/1p1P3p/1p5P/1P6/8/r1R1R3 b - - +perft 1 27 +perft 2 591 +perft 3 15944 +perft 4 356458 +perft 5 9777509 +perft 6 220884160 + +id gentest-4096 +epd k4N2/8/2P1K2n/rp1P3p/1p5P/1P6/4R3/2R3q1 w - - +perft 1 31 +perft 2 926 +perft 3 23557 +perft 4 674154 +perft 5 16354802 +perft 6 466836766 + +id gentest-4097 +epd k7/3N4/2P1K2n/rp1P3p/1p5P/1P6/2R1R3/3q4 b - - +perft 1 24 +perft 2 586 +perft 3 14923 +perft 4 362819 +perft 5 9598563 +perft 6 233530974 + +id gentest-4098 +epd k5n1/3N4/2P1K3/rp1P3p/1p2R2P/1P6/2R5/6q1 w - - +perft 1 32 +perft 2 912 +perft 3 25126 +perft 4 676758 +perft 5 17521306 +perft 6 471995406 + +id gentest-4099 +epd k5n1/2P5/4KNq1/rp1P3p/1p2R2P/1P6/2R5/8 b - - +perft 1 24 +perft 2 561 +perft 3 14048 +perft 4 350418 +perft 5 9209719 +perft 6 237694484 + +id gentest-4100 +epd k5n1/2P5/4KNq1/rp1P3p/1p2R2P/1PR5/8/8 w - - +perft 1 27 +perft 2 642 +perft 3 14301 +perft 4 369752 +perft 5 8984898 +perft 6 240832167 + +id gentest-4101 +epd k5n1/2P5/4K3/rp1PR2p/1p4NP/1PR3q1/8/8 b - - +perft 1 27 +perft 2 696 +perft 3 18777 +perft 4 474529 +perft 5 13099934 +perft 6 334266220 + +id gentest-4102 +epd k7/2q1n3/4K3/rp1P3R/1p4NP/1PR5/8/8 w - - +perft 1 26 +perft 2 775 +perft 3 16424 +perft 4 488217 +perft 5 10418212 +perft 6 310025105 + +id gentest-4103 +epd k7/4n3/1q1PK2N/rp5R/1p5P/1PR5/8/8 b - - +perft 1 29 +perft 2 717 +perft 3 20137 +perft 4 484906 +perft 5 13868146 +perft 6 330642121 + +id gentest-4104 +epd k7/2R1n3/1q1PK2N/1p5R/1p5P/1P6/8/5r2 w - - +perft 1 24 +perft 2 748 +perft 3 17011 +perft 4 511834 +perft 5 11802813 +perft 6 348866876 + +id gentest-4105 +epd 1R6/k3n3/1q1PK2N/1p5R/1p5P/1P6/8/5r2 b - - +perft 1 35 +perft 2 682 +perft 3 20692 +perft 4 433677 +perft 5 13053413 +perft 6 281535059 + +id gentest-4106 +epd 7R/k3n3/2qPK2N/1p5R/1p5P/1P6/8/r7 w - - +perft 1 22 +perft 2 807 +perft 3 16892 +perft 4 576087 +perft 5 12594347 +perft 6 411246029 + +id gentest-4107 +epd 3R4/k3n3/3PK2N/1p1R4/1pq4P/1P6/8/r7 b - - +perft 1 38 +perft 2 760 +perft 3 25465 +perft 4 560729 +perft 5 18393223 +perft 6 423490504 + +id gentest-4108 +epd 3R2N1/k3n3/3PK3/1p1R4/1pq4P/1P6/8/6r1 w - - +perft 1 18 +perft 2 614 +perft 3 11820 +perft 4 391759 +perft 5 8204147 +perft 6 264346122 + +id gentest-4109 +epd 3R4/k3n3/3P1N2/1p1RK3/1pq4P/1P6/8/7r b - - +perft 1 36 +perft 2 711 +perft 3 23195 +perft 4 470507 +perft 5 14966140 +perft 6 318972686 + +id gentest-4110 +epd 3R4/1k2n3/2qP1N2/1p2K3/1p5P/1P6/8/3R3r w - - +perft 1 33 +perft 2 965 +perft 3 23837 +perft 4 725203 +perft 5 17341498 +perft 6 529259305 + +id gentest-4111 +epd 5R2/1k2n3/3P1N2/1p2K3/1p1R3P/1P6/6q1/7r b - - +perft 1 40 +perft 2 932 +perft 3 33579 +perft 4 804650 +perft 5 27727991 +perft 6 664296126 + +id gentest-4112 +epd 5R2/1k2n3/3P1N2/1p6/1p1RK2P/1P6/4q3/7r w - - +perft 1 1 +perft 2 39 +perft 3 791 +perft 4 28253 +perft 5 607608 +perft 6 20726998 + +id gentest-4113 +epd 5R2/1k6/3P1Nn1/1p6/1p1R3P/1P4K1/4q3/7r b - - +perft 1 41 +perft 2 862 +perft 3 30641 +perft 4 687574 +perft 5 23484466 +perft 6 542221264 + +id gentest-4114 +epd 5R2/8/k2P2n1/1p6/1p1RN2P/1P3qK1/8/7r w - - +perft 1 2 +perft 2 40 +perft 3 1017 +perft 4 19297 +perft 5 514532 +perft 6 9703618 + +id gentest-4115 +epd 8/8/k2P2n1/1p6/1p2N2P/1P1R1RK1/8/2r5 b - - +perft 1 24 +perft 2 619 +perft 3 12985 +perft 4 352297 +perft 5 6959408 +perft 6 194039087 + +id gentest-4116 +epd 8/8/k2P4/1p2n3/1p2NK1P/1P1R1R2/8/r7 w - - +perft 1 25 +perft 2 543 +perft 3 13252 +perft 4 271258 +perft 5 7005277 +perft 6 137738438 + +id gentest-4117 +epd 8/8/1k1P4/1p2n1K1/1p5P/1PNR1R2/8/r7 b - - +perft 1 29 +perft 2 799 +perft 3 18950 +perft 4 532307 +perft 5 11556783 +perft 6 328323708 + +id gentest-4118 +epd 8/5n2/k2P4/1p6/1p4KP/1PNR1R2/8/r7 w - - +perft 1 29 +perft 2 601 +perft 3 16310 +perft 4 310371 +perft 5 8665988 +perft 6 161305006 + +id gentest-4119 +epd 8/5n2/k2P4/1p6/1p3K1P/rP1R1R2/8/3N4 b - - +perft 1 15 +perft 2 324 +perft 3 5051 +perft 4 122005 +perft 5 1994476 +perft 6 51836289 + +id gentest-4120 +epd 8/8/1k1n4/1p5P/1p3K2/rP1R1R2/8/3N4 w - - +perft 1 21 +perft 2 443 +perft 3 11125 +perft 4 216179 +perft 5 5931858 +perft 6 110536788 + +id gentest-4121 +epd 8/8/1k1n4/1p5P/1p4K1/1P1R3R/8/r2N4 b - - +perft 1 24 +perft 2 591 +perft 3 12838 +perft 4 320238 +perft 5 6475829 +perft 6 167742484 + +id gentest-4122 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-4123 +epd rnbqkbnr/ppppppp1/7p/6P1/8/8/PPPPPP1P/RNBQKBNR b KQkq - +perft 1 19 +perft 2 417 +perft 3 9025 +perft 4 213463 +perft 5 5158846 +perft 6 131836359 + +id gentest-4124 +epd rnbqkbnr/pp1pppp1/2p5/6Pp/8/3P4/PPP1PP1P/RNBQKBNR w KQkq - +perft 1 26 +perft 2 545 +perft 3 14363 +perft 4 341701 +perft 5 9400789 +perft 6 245723070 + +id gentest-4125 +epd rnbqkb1r/pp1pppp1/2p4n/6Pp/8/3PB2P/PPP1PP2/RN1QKBNR b KQkq - +perft 1 22 +perft 2 588 +perft 3 14288 +perft 4 390995 +perft 5 10371588 +perft 6 291448301 + +id gentest-4126 +epd rnbqkb1r/1p1p1pp1/p1p1p2n/6Pp/8/3PB2P/PPPQPP2/RN2KBNR w KQkq - +perft 1 28 +perft 2 802 +perft 3 23856 +perft 4 707778 +perft 5 21924775 +perft 6 666031148 + +id gentest-4127 +epd rnbqk2r/1p1pbpp1/p1p1p2n/6Pp/8/P2PB2P/1PP1PP2/RN1QKBNR b KQkq - +perft 1 30 +perft 2 762 +perft 3 23120 +perft 4 608495 +perft 5 18803006 +perft 6 512283753 + +id gentest-4128 +epd rnbqk2r/1p1p1pp1/p1p1pb1n/7p/8/P1NPB2P/1PP1PP2/R2QKBNR w KQkq - +perft 1 32 +perft 2 954 +perft 3 28438 +perft 4 869646 +perft 5 25681141 +perft 6 806537286 + +id gentest-4129 +epd rnbqk2r/1p1p1pp1/2p1pb1n/p6p/8/P2P3P/1PP1PP2/RNBQKBNR b KQkq - +perft 1 32 +perft 2 740 +perft 3 24391 +perft 4 590047 +perft 5 19960888 +perft 6 507104817 + +id gentest-4130 +epd rnbqk3/1p3ppr/2p1pb1n/p2p3p/1P6/P2P3P/2P1PP2/RNBQKBNR w KQq - +perft 1 25 +perft 2 862 +perft 3 21555 +perft 4 766788 +perft 5 19975850 +perft 6 724308919 + +id gentest-4131 +epd rnb1k3/1p1q1ppr/2p1pb1n/p2p3p/PP5P/3P4/2P1PP2/RNBQKBNR b KQq - +perft 1 31 +perft 2 867 +perft 3 27797 +perft 4 779151 +perft 5 25928748 +perft 6 746822795 + +id gentest-4132 +epd rnbk4/1p1qbppr/2p1p2n/p2p3p/PP5P/3P3N/2P1PP2/RNBQKB1R w KQ - +perft 1 29 +perft 2 833 +perft 3 23608 +perft 4 706508 +perft 5 20703324 +perft 6 646996565 + +id gentest-4133 +epd rnbk4/1p1qbppr/2p1p2n/3p3p/Pp3N1P/3P1P2/2P1P3/RNBQKB1R b KQ - +perft 1 30 +perft 2 844 +perft 3 25998 +perft 4 758588 +perft 5 24598491 +perft 6 738780682 + +id gentest-4134 +epd r1b1k3/1p1qbppr/n1p1p2n/3p3N/Pp5P/3P1P2/2P1P3/RNBQKB1R w KQ - +perft 1 31 +perft 2 910 +perft 3 27511 +perft 4 850320 +perft 5 26347156 +perft 6 853400521 + +id gentest-4135 +epd r1b1k3/3qbppr/n1p1p2n/1p1p3N/Pp5P/2PP1P1B/4P3/RNBQK2R b KQ - +perft 1 34 +perft 2 1246 +perft 3 42036 +perft 4 1522016 +perft 5 53058587 +perft 6 1926294372 + +id gentest-4136 +epd 2b1k3/r2qbpr1/n1p1p2n/1p1p4/Pp5P/2PP1P1B/4P3/RNBQK2R w KQ - +perft 1 34 +perft 2 1317 +perft 3 42717 +perft 4 1664224 +perft 5 54615698 +perft 6 2147314539 + +id gentest-4137 +epd 2b1k1n1/r2qbpr1/n1p1p2B/1p1p4/Pp5P/N1PP1P1B/4P3/R2QK2R b KQ - +perft 1 38 +perft 2 1356 +perft 3 51467 +perft 4 1846766 +perft 5 70516554 +perft 6 2548443462 + +id gentest-4138 +epd r1b1k1n1/3q1pr1/n1p1p2B/1pbp4/Pp2P2P/N1PP1P1B/8/R2QK2R w KQ - +perft 1 39 +perft 2 1610 +perft 3 61176 +perft 4 2514237 +perft 5 96852143 +perft 6 3979849263 + +id gentest-4139 +epd r1b1k1n1/4qpr1/n1p1p3/1pbP4/Pp5P/N1PPBP1B/8/R2QK2R b KQ - +perft 1 42 +perft 2 1735 +perft 3 73970 +perft 4 2972410 +perft 5 127494816 +perft 6 5062231267 + +id gentest-4140 +epd r1b1k1n1/5pr1/n1p5/1pbPp1q1/Pp5P/N1PPBP1B/8/2RQK2R w K - +perft 1 42 +perft 2 1890 +perft 3 71770 +perft 4 3233859 +perft 5 122457926 +perft 6 5514224647 + +id gentest-4141 +epd 2B1k1n1/r4pr1/n1p5/1pbPp1q1/Pp5P/N1PPBP2/2Q5/2R1K2R b K - +perft 1 43 +perft 2 1901 +perft 3 80316 +perft 4 3458024 +perft 5 146155933 +perft 6 6168807989 + +id gentest-4142 +epd 2B1k1n1/r1n2p2/2p3r1/1pbPp1q1/Pp3P1P/N1PPB3/2Q5/2R1K2R w K - +perft 1 49 +perft 2 2220 +perft 3 99215 +perft 4 4425251 +perft 5 191463568 +perft 6 8427397678 + +id gentest-4143 +epd 2B1k1n1/r1n2p2/2p3r1/1pBPp1q1/P4P1P/N1pP4/6Q1/2R1K2R b K - +perft 1 37 +perft 2 2041 +perft 3 75559 +perft 4 3779344 +perft 5 140520118 +perft 6 6581688085 + +id gentest-4144 +epd 2B1k1n1/r1n5/2p2pr1/1pBPp3/P4P1P/N1pP4/6q1/2R1KQ1R w K - +perft 1 43 +perft 2 1739 +perft 3 63721 +perft 4 2510256 +perft 5 92525277 +perft 6 3590381087 + +id gentest-4145 +epd 2B1k1n1/r1n5/2p2pr1/1PBPp3/5P1P/2pP3q/8/1NR1KQ1R b K - +perft 1 44 +perft 2 1711 +perft 3 71820 +perft 4 2699378 +perft 5 110477465 +perft 6 4102583438 + +id gentest-4146 +epd n3k1n1/rB6/2p2pr1/1PBPp3/5P1P/2pP4/6q1/1NR1KQ1R w K - +perft 1 38 +perft 2 1533 +perft 3 49829 +perft 4 1957006 +perft 5 64904252 +perft 6 2502092167 + +id gentest-4147 +epd n5n1/r4k2/2B2pr1/1P1Pp3/3B1P1P/2pP4/6q1/1NR1KQ1R b K - +perft 1 44 +perft 2 1230 +perft 3 48824 +perft 4 1453359 +perft 5 55283849 +perft 6 1738897955 + +id gentest-4148 +epd n4kn1/r2B4/5pr1/1P1Pp3/3B1P1P/2pP3q/8/1NR1KQ1R w K - +perft 1 38 +perft 2 1471 +perft 3 50494 +perft 4 1904297 +perft 5 65752307 +perft 6 2432867224 + +id gentest-4149 +epd n4kn1/1r1B4/5pr1/1P1Pp3/3B1P1P/2pP3q/2Q5/1NR1K2R b K - +perft 1 37 +perft 2 1282 +perft 3 46504 +perft 4 1615546 +perft 5 58417154 +perft 6 2045146904 + +id gentest-4150 +epd n4kn1/1r1B4/5pr1/1P1Pp3/3B1P1P/2pP4/2Q2K2/1NR3qR w - - +perft 1 4 +perft 2 120 +perft 3 4247 +perft 4 127680 +perft 5 4640585 +perft 6 140986497 + +id gentest-4151 +epd n4kn1/3r4/5pr1/1P1Pp1R1/3B1P1P/2pP4/2Q2K2/1N5R b - - +perft 1 26 +perft 2 1167 +perft 3 29215 +perft 4 1249019 +perft 5 31457182 +perft 6 1302270887 + +id gentest-4152 +epd 5kn1/2n3r1/5pr1/1P1PR3/3B1P1P/2pP4/2Q2K2/1N5R w - - +perft 1 43 +perft 2 869 +perft 3 35113 +perft 4 817263 +perft 5 32462688 +perft 6 807165232 + +id gentest-4153 +epd 5kn1/2n3r1/6r1/1P1Pp3/3B1P1P/2pP4/2Q2KR1/1N6 b - - +perft 1 30 +perft 2 1010 +perft 3 30328 +perft 4 1053898 +perft 5 31315365 +perft 6 1110162403 + +id gentest-4154 +epd 4k1n1/2n3r1/8/1P1Pp3/3B1P1P/2pP2r1/5KR1/1NQ5 w - - +perft 1 32 +perft 2 995 +perft 3 31119 +perft 4 943379 +perft 5 30286802 +perft 6 902870102 + +id gentest-4155 +epd 4k1n1/2n2r2/8/1P1PB3/5P1P/2pP2r1/5KR1/1N4Q1 b - - +perft 1 30 +perft 2 766 +perft 3 22223 +perft 4 645533 +perft 5 18295836 +perft 6 572546438 + +id gentest-4156 +epd 4k1n1/2n5/8/1P1P4/5B1P/2pP3r/5KR1/1N4Q1 w - - +perft 1 33 +perft 2 638 +perft 3 20944 +perft 4 414972 +perft 5 14046353 +perft 6 284749289 + +id gentest-4157 +epd n3k1n1/8/8/1P1P4/3P3P/2p4r/5KRB/1N4Q1 b - - +perft 1 17 +perft 2 402 +perft 3 7016 +perft 4 194625 +perft 5 3666319 +perft 6 109956783 + +id gentest-4158 +epd n2k4/8/5nR1/1P1P4/3P3P/2p4r/5K1B/1N4Q1 w - - +perft 1 33 +perft 2 636 +perft 3 19298 +perft 4 366322 +perft 5 11805273 +perft 6 230924863 + +id gentest-4159 +epd 3k4/8/1n3n2/1P1P4/3P3P/2p3Rr/5K1B/1N4Q1 b - - +perft 1 23 +perft 2 569 +perft 3 11875 +perft 4 328540 +perft 5 6913258 +perft 6 205647479 + +id gentest-4160 +epd 3k4/8/1n6/1P1P4/3Pn2P/2p3R1/5KQr/1N6 w - - +perft 1 6 +perft 2 138 +perft 3 3533 +perft 4 81529 +perft 5 2161138 +perft 6 49188017 + +id gentest-4161 +epd 3k4/8/1n6/1P1P2n1/3P3P/2p1K1R1/6Qr/1N6 b - - +perft 1 22 +perft 2 552 +perft 3 12514 +perft 4 321004 +perft 5 7218701 +perft 6 190608845 + +id gentest-4162 +epd n7/3k4/8/1P1P2n1/3P3P/2p1K1R1/Q6r/1N6 w - - +perft 1 31 +perft 2 692 +perft 3 19782 +perft 4 411462 +perft 5 11714711 +perft 6 238179844 + +id gentest-4163 +epd n7/3k4/8/1P1P2n1/3P3P/2p1K2R/2Q5/1N6 b - - +perft 1 14 +perft 2 442 +perft 3 6045 +perft 4 178335 +perft 5 2418493 +perft 6 70778262 + +id gentest-4164 +epd n2k4/8/8/1P1P1Q2/3Pn2P/2p1K2R/8/1N6 w - - +perft 1 32 +perft 2 354 +perft 3 11235 +perft 4 134828 +perft 5 4091776 +perft 6 51715253 + +id gentest-4165 +epd 3k4/8/1n6/1P1P1Q2/3Pn2P/2R5/4K3/1N6 b - - +perft 1 16 +perft 2 615 +perft 3 8259 +perft 4 305392 +perft 5 3841847 +perft 6 137810427 + +id gentest-4166 +epd 5Q2/3k4/1n6/1PnP4/3P3P/2R5/4K3/1N6 w - - +perft 1 42 +perft 2 477 +perft 3 19054 +perft 4 210319 +perft 5 7688171 +perft 6 90371215 + +id gentest-4167 +epd 2n3Q1/3k4/8/1PRP4/3P3P/8/4K3/1N6 b - - +perft 1 6 +perft 2 221 +perft 3 1217 +perft 4 44317 +perft 5 289706 +perft 6 10297505 + +id gentest-4168 +epd 6Q1/3k1n2/8/1P1P4/2RP3P/8/4K3/1N6 w - - +perft 1 39 +perft 2 274 +perft 3 10361 +perft 4 67269 +perft 5 2461311 +perft 6 17822109 + +id gentest-4169 +epd 6Q1/3k4/3n4/1P1P4/2RP3P/8/4K3/1N6 b - - +perft 1 9 +perft 2 337 +perft 3 2399 +perft 4 83462 +perft 5 588411 +perft 6 20549300 + +id gentest-4170 +epd 7Q/4k3/8/1P1P4/2nP3P/8/4K3/1N6 w - - +perft 1 25 +perft 2 219 +perft 3 5585 +perft 4 44503 +perft 5 1166173 +perft 6 9085742 + +id gentest-4171 +epd 3k4/8/6Q1/1P1P4/2nP3P/8/4K3/1N6 b - - +perft 1 12 +perft 2 411 +perft 3 3651 +perft 4 109944 +perft 5 944441 +perft 6 26742776 + +id gentest-4172 +epd 4k3/8/3Q4/1P1P4/3P3P/n7/4K3/1N6 w - - +perft 1 33 +perft 2 162 +perft 3 4719 +perft 4 32001 +perft 5 858939 +perft 6 6472089 + +id gentest-4173 +epd 1Q2k3/8/8/1P1P4/3P3P/8/2n1K3/1N6 b - - +perft 1 3 +perft 2 84 +perft 3 629 +perft 4 16385 +perft 5 122963 +perft 6 3289296 + +id gentest-4174 +epd 8/Q7/5k2/1P1P4/3P3P/8/2n1K3/1N6 w - - +perft 1 29 +perft 2 226 +perft 3 5711 +perft 4 47193 +perft 5 1219526 +perft 6 10722334 + +id gentest-4175 +epd 8/7Q/1P3k2/3P4/1n1P3P/8/4K3/1N6 b - - +perft 1 6 +perft 2 174 +perft 3 1009 +perft 4 25593 +perft 5 177226 +perft 6 4768173 + +id gentest-4176 +epd 8/4k3/1P5Q/3n4/3P3P/8/4K3/1N6 w - - +perft 1 27 +perft 2 254 +perft 3 6407 +perft 4 62905 +perft 5 1696762 +perft 6 15440746 + +id gentest-4177 +epd 8/8/1P1k4/3n2Q1/3P3P/8/8/1N3K2 b - - +perft 1 11 +perft 2 314 +perft 3 2717 +perft 4 78141 +perft 5 662236 +perft 6 18880227 + +id gentest-4178 +epd 8/8/1P1k4/3n1Q2/3P3P/8/8/1N3K2 w - - +perft 1 30 +perft 2 249 +perft 3 7118 +perft 4 61122 +perft 5 1764157 +perft 6 14978367 + +id gentest-4179 +epd 2Q5/4n3/1P1k4/8/3P3P/8/3N4/5K2 b - - +perft 1 7 +perft 2 207 +perft 3 1379 +perft 4 39049 +perft 5 293654 +perft 6 8373452 + +id gentest-4180 +epd 2Q3n1/4k3/1P6/8/3P3P/8/3N2K1/8 w - - +perft 1 37 +perft 2 203 +perft 3 6978 +perft 4 46879 +perft 5 1520851 +perft 6 11806246 + +id gentest-4181 +epd 6n1/5k2/1P6/8/3P3P/8/3N2K1/2Q5 b - - +perft 1 10 +perft 2 330 +perft 3 3047 +perft 4 98338 +perft 5 890837 +perft 6 27961214 + +id gentest-4182 +epd 2n5/5k2/1P6/8/3P3P/8/3N2K1/7Q w - - +perft 1 25 +perft 2 286 +perft 3 7815 +perft 4 78271 +perft 5 2237189 +perft 6 21543553 + +id gentest-4183 +epd 2n5/6k1/1P6/8/3P3P/8/6K1/1N4Q1 b - - +perft 1 12 +perft 2 252 +perft 3 2286 +perft 4 58984 +perft 5 540833 +perft 6 15065536 + +id gentest-4184 +epd 8/8/1n3k2/8/3P3P/5K2/8/1N4Q1 w - - +perft 1 28 +perft 2 268 +perft 3 7061 +perft 4 65855 +perft 5 1771572 +perft 6 16852784 + +id gentest-4185 +epd 8/3n4/5k2/8/3P1K1P/N7/8/6Q1 b - - +perft 1 8 +perft 2 228 +perft 3 2139 +perft 4 56501 +perft 5 543813 +perft 6 14936062 + +id gentest-4186 +epd 5n2/5k2/8/8/3P3P/N4K2/8/6Q1 w - - +perft 1 31 +perft 2 262 +perft 3 7449 +perft 4 69366 +perft 5 1933688 +perft 6 17678159 + +id gentest-4187 +epd 8/3n1k2/8/7P/3P4/N3K3/8/6Q1 b - - +perft 1 11 +perft 2 316 +perft 3 3024 +perft 4 85394 +perft 5 837223 +perft 6 23512301 + +id gentest-4188 +epd 4k3/8/8/2n3QP/3P4/N3K3/8/8 w - - +perft 1 29 +perft 2 264 +perft 3 7991 +perft 4 65940 +perft 5 1957673 +perft 6 16598011 + +id gentest-4189 +epd 4Q3/3k4/8/2n4P/3P4/N3K3/8/8 b - - +perft 1 3 +perft 2 70 +perft 3 622 +perft 4 15714 +perft 5 133053 +perft 6 3512423 + +id gentest-4190 +epd 3Q4/3n4/3k4/7P/3P4/N3K3/8/8 w - - +perft 1 28 +perft 2 138 +perft 3 3867 +perft 4 29695 +perft 5 816757 +perft 6 6513226 + +id gentest-4191 +epd 1n6/8/3k4/7P/3PK3/N7/8/8 b - - +perft 1 8 +perft 2 94 +perft 3 853 +perft 4 10579 +perft 5 103525 +perft 6 1328637 + +id gentest-4192 +epd 8/4k3/n7/7P/3PK3/8/2N5/8 w - - +perft 1 14 +perft 2 160 +perft 3 2020 +perft 4 20954 +perft 5 269215 +perft 6 2809281 + +id gentest-4193 +epd 1n6/4k3/8/7P/3P4/4K3/8/N7 b - - +perft 1 11 +perft 2 121 +perft 3 1216 +perft 4 14224 +perft 5 150761 +perft 6 1782475 + +id gentest-4194 +epd 8/4k3/8/4n2P/3P4/8/4K3/N7 w - - +perft 1 11 +perft 2 165 +perft 3 1808 +perft 4 23747 +perft 5 265907 +perft 6 3267533 + +id gentest-4195 +epd 8/5k2/8/4P2P/8/8/8/N4K2 b - - +perft 1 6 +perft 2 53 +perft 3 286 +perft 4 3105 +perft 5 16640 +perft 6 192913 + +id gentest-4196 +epd 8/8/8/3kP2P/8/1N6/8/5K2 w - - +perft 1 13 +perft 2 70 +perft 3 872 +perft 4 5544 +perft 5 70038 +perft 6 444639 + +id gentest-4197 +epd 8/8/8/4P2P/2k1N3/8/8/5K2 b - - +perft 1 6 +perft 2 89 +perft 3 566 +perft 4 7851 +perft 5 46974 +perft 6 643018 + +id gentest-4198 +epd 8/8/8/4P2P/3k4/8/3N4/5K2 w - - +perft 1 12 +perft 2 72 +perft 3 911 +perft 4 5405 +perft 5 67880 +perft 6 428208 + +id gentest-4199 +epd 8/8/8/3kP2P/8/4K3/3N4/8 b - - +perft 1 4 +perft 2 54 +perft 3 311 +perft 4 4449 +perft 5 27989 +perft 6 401170 + +id gentest-4200 +epd 8/3k4/8/4P2P/5K2/8/3N4/8 w - - +perft 1 15 +perft 2 105 +perft 3 1528 +perft 4 8370 +perft 5 122233 +perft 6 721887 + +id gentest-4201 +epd 2k5/8/8/4P2P/8/1N2K3/8/8 b - - +perft 1 5 +perft 2 80 +perft 3 497 +perft 4 7563 +perft 5 40772 +perft 6 603047 + +id gentest-4202 +epd 8/8/2k5/4P2P/4K3/1N6/8/8 w - - +perft 1 14 +perft 2 77 +perft 3 1096 +perft 4 7023 +perft 5 100330 +perft 6 545939 + +id gentest-4203 +epd 8/2k5/7P/4P3/3K4/1N6/8/8 b - - +perft 1 7 +perft 2 95 +perft 3 539 +perft 4 7764 +perft 5 41695 +perft 6 611651 + +id gentest-4204 +epd 8/3k4/7P/4P3/8/1N2K3/8/8 w - - +perft 1 16 +perft 2 109 +perft 3 1664 +perft 4 8913 +perft 5 135365 +perft 6 764476 + +id gentest-4205 +epd 3k4/8/7P/4P3/8/1N3K2/8/8 b - - +perft 1 5 +perft 2 80 +perft 3 462 +perft 4 7190 +perft 5 39865 +perft 6 611546 + +id gentest-4206 +epd 3k4/8/7P/2N1P3/8/5K2/8/8 w - - +perft 1 18 +perft 2 78 +perft 3 1299 +perft 4 6240 +perft 5 99030 +perft 6 503962 + +id gentest-4207 +epd 8/3Nk2P/8/4P3/8/5K2/8/8 b - - +perft 1 5 +perft 2 84 +perft 3 397 +perft 4 6725 +perft 5 30922 +perft 6 533369 + +id gentest-4208 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-4209 +epd rnbqkbnr/p1pppppp/1p6/8/P7/7N/1PPPPPPP/RNBQKB1R b KQkq - +perft 1 21 +perft 2 441 +perft 3 10183 +perft 4 239574 +perft 5 6046659 +perft 6 156453781 + +id gentest-4210 +epd r1bqkbnr/p2ppppp/np6/2p5/P7/7N/RPPPPPPP/1NBQKB1R w Kkq - +perft 1 21 +perft 2 421 +perft 3 9904 +perft 4 227500 +perft 5 5891946 +perft 6 150605381 + +id gentest-4211 +epd r1bqkb1r/p2ppppp/np3n2/2p5/P7/5P2/RPPPP1PP/1NBQKBNR b Kkq - +perft 1 22 +perft 2 437 +perft 3 10785 +perft 4 236461 +perft 5 6379236 +perft 6 152244454 + +id gentest-4212 +epd r1bqkb1r/p2p1pp1/np2pn2/2p4p/P4P2/8/RPPPP1PP/1NBQKBNR w Kkq - +perft 1 21 +perft 2 549 +perft 3 12762 +perft 4 362769 +perft 5 9158647 +perft 6 276044908 + +id gentest-4213 +epd r1bqkb1r/p2p1pp1/np2Pn2/7p/P1p5/8/RPPPP1PP/1NBQKBNR b Kkq - +perft 1 31 +perft 2 664 +perft 3 20408 +perft 4 479246 +perft 5 15653896 +perft 6 398191737 + +id gentest-4214 +epd r1bqkbr1/p2p2p1/np2pn2/7p/P1pP4/8/RPP1P1PP/1NBQKBNR w Kq - +perft 1 27 +perft 2 757 +perft 3 20999 +perft 4 632364 +perft 5 18346834 +perft 6 581030619 + +id gentest-4215 +epd r1bqkbr1/p2p2p1/1p2pn2/2n4p/P1pP4/N6P/RPP1P1P1/2BQKBNR b Kq - +perft 1 30 +perft 2 739 +perft 3 23545 +perft 4 630845 +perft 5 20805907 +perft 6 592344222 + +id gentest-4216 +epd 1rbqkbr1/p2p2pn/1p2p3/2n4p/PPpP4/N6P/R1P1P1P1/2BQKBNR w K - +perft 1 28 +perft 2 883 +perft 3 24612 +perft 4 787293 +perft 5 23026129 +perft 6 750909817 + +id gentest-4217 +epd 1rbqkbr1/p2p2pn/1p2p3/2n4p/PP1P4/2p3PP/R1P1P3/1NBQKBNR b K - +perft 1 31 +perft 2 827 +perft 3 26459 +perft 4 719963 +perft 5 23637490 +perft 6 673985658 + +id gentest-4218 +epd 1rbqkbr1/p2p2pn/1p2p3/2n4p/PP1P4/2p3PP/2P1P3/RNBQKBNR w K - +perft 1 27 +perft 2 830 +perft 3 22509 +perft 4 709534 +perft 5 20255751 +perft 6 654485304 + +id gentest-4219 +epd 1rbqkbr1/p2p2pn/1p2p3/2P5/P2P2Pp/2p4P/2P1P3/RNBQKBNR b K - +perft 1 25 +perft 2 618 +perft 3 16927 +perft 4 432781 +perft 5 12631060 +perft 6 342406634 + +id gentest-4220 +epd 1rbqkbr1/p2p3n/1P2p3/6p1/P2P2Pp/2p4P/2P1P3/RNBQKBNR w K - +perft 1 23 +perft 2 650 +perft 3 16179 +perft 4 477632 +perft 5 12819578 +perft 6 395274429 + +id gentest-4221 +epd 1rb1kbr1/pP1p3n/1q2p3/6p1/P2P2Pp/2p4P/2P1P1B1/RNBQK1NR b K - +perft 1 36 +perft 2 1076 +perft 3 35825 +perft 4 1081636 +perft 5 36143694 +perft 6 1116052443 + +id gentest-4222 +epd 1rb1kbr1/pB1p4/4pn2/6p1/P2P2Pp/2p4P/2P1P3/RNBQK1NR w K - +perft 1 29 +perft 2 810 +perft 3 23046 +perft 4 666515 +perft 5 19222668 +perft 6 567279167 + +id gentest-4223 +epd 1rb1kbr1/p2p4/B3p3/6pn/P2P2Pp/2p4P/2P1P3/RNBQ1KNR b - - +perft 1 30 +perft 2 827 +perft 3 24554 +perft 4 688888 +perft 5 20470256 +perft 6 593724757 + +id gentest-4224 +epd 2b1k1r1/p2p2b1/B3p3/6pn/Pr1P2Pp/2p4P/R1P1P3/1NBQ1KNR w - - +perft 1 30 +perft 2 903 +perft 3 25683 +perft 4 773417 +perft 5 22711130 +perft 6 686020773 + +id gentest-4225 +epd 1rb1k1r1/p2p2b1/B3p3/6pn/P2P2Pp/2p4P/R1P1P3/1N1QBKNR b - - +perft 1 28 +perft 2 719 +perft 3 20881 +perft 4 568849 +perft 5 16817129 +perft 6 482069455 + +id gentest-4226 +epd 1rb1k1r1/p5b1/B2ppn2/6p1/P2P2Pp/2p2N1P/R1P1P3/1N1QBK1R w - - +perft 1 34 +perft 2 966 +perft 3 32523 +perft 4 947558 +perft 5 31812362 +perft 6 941636711 + +id gentest-4227 +epd 2b1k1r1/p5b1/B2ppn2/6p1/Pr1PP1Pp/R1p2N1P/2P5/1N1QBK1R b - - +perft 1 31 +perft 2 1078 +perft 3 32857 +perft 4 1134111 +perft 5 34604317 +perft 6 1197491737 + +id gentest-4228 +epd 1rb3r1/p4kb1/B2ppn2/3P2p1/P3P1Pp/R1p2N1P/2P5/1N1QBK1R w - - +perft 1 38 +perft 2 1102 +perft 3 40799 +perft 4 1218263 +perft 5 45243382 +perft 6 1363443039 + +id gentest-4229 +epd 1rb3r1/p4k2/B2ppn1b/P2PP1p1/6Pp/R1p2N1P/2P5/1N1QBK1R b - - +perft 1 33 +perft 2 1210 +perft 3 36609 +perft 4 1355848 +perft 5 39821690 +perft 6 1491465053 + +id gentest-4230 +epd 2b2kr1/p7/B2ppn1b/Pr1PP1N1/6Pp/R1p4P/2P5/1N1QBK1R w - - +perft 1 35 +perft 2 1024 +perft 3 37907 +perft 4 1097925 +perft 5 41342197 +perft 6 1208040412 + +id gentest-4231 +epd 2b2kr1/p7/B2ppn1b/P2rP1N1/6Pp/2R4P/2P5/1N1QBKR1 b - - +perft 1 27 +perft 2 1079 +perft 3 27983 +perft 4 1109305 +perft 5 29918831 +perft 6 1184379205 + +id gentest-4232 +epd 2b2k1r/p6n/B2pp2b/P2rP1N1/6Pp/2R4P/2P2B2/1N1Q1KR1 w - - +perft 1 47 +perft 2 900 +perft 3 37752 +perft 4 822524 +perft 5 34389397 +perft 6 813379288 + +id gentest-4233 +epd 2b1k2r/p6N/B2pp2b/P2rP3/6Pp/6RP/2P2B2/1N1Q1KR1 b - - +perft 1 27 +perft 2 1014 +perft 3 26567 +perft 4 1013518 +perft 5 26667300 +perft 6 1029270976 + +id gentest-4234 +epd 2b1k2r/p6N/B2pp3/P3r3/5bPp/N5RP/2P2B2/3Q1KR1 w - - +perft 1 41 +perft 2 1120 +perft 3 43834 +perft 4 1204810 +perft 5 47678374 +perft 6 1315691996 + +id gentest-4235 +epd 2b1kr2/p6N/B2pp3/P3r3/5bPp/NR5P/2P2BK1/3Q2R1 b - - +perft 1 31 +perft 2 1575 +perft 3 46728 +perft 4 2229656 +perft 5 65169220 +perft 6 3021106931 + +id gentest-4236 +epd 4kr2/pb5N/B2pp2b/P3r3/6Pp/NR5P/2P2B2/3Q1KR1 w - - +perft 1 39 +perft 2 1391 +perft 3 51087 +perft 4 1693920 +perft 5 64824224 +perft 6 2060956903 + +id gentest-4237 +epd 4kr2/1B5N/p2pp2b/P3r3/6Pp/NR5P/2P2B2/3Q1K1R b - - +perft 1 30 +perft 2 1211 +perft 3 33507 +perft 4 1412622 +perft 5 37951712 +perft 6 1636322628 + +id gentest-4238 +epd 4k3/1B5N/p2pp2b/PRr5/6Pp/N6P/2P2r2/3Q1K1R w - - +perft 1 3 +perft 2 102 +perft 3 3626 +perft 4 106838 +perft 5 3892138 +perft 6 107540995 + +id gentest-4239 +epd 4k3/1B4bN/p2pp3/PRr5/6Pp/N1P4P/5K2/3Q3R b - - +perft 1 25 +perft 2 1149 +perft 3 25191 +perft 4 1119902 +perft 5 23287643 +perft 6 1015014780 + +id gentest-4240 +epd 8/1B2k1bN/p2p4/PRr1p3/6Pp/N1P4P/8/3Q1K1R w - - +perft 1 43 +perft 2 776 +perft 3 33057 +perft 4 590814 +perft 5 24866296 +perft 6 444560995 + +id gentest-4241 +epd 8/1Br1k1bN/p2p4/P3p1P1/7p/N1P4P/8/1R1Q1K1R b - - +perft 1 18 +perft 2 757 +perft 3 13244 +perft 4 560695 +perft 5 9826880 +perft 6 417857764 + +id gentest-4242 +epd 8/1Brk3N/p2p1b2/P2Qp1P1/7p/N1P4P/8/1R3K1R w - - +perft 1 46 +perft 2 597 +perft 3 27214 +perft 4 419218 +perft 5 18774066 +perft 6 305841885 + +id gentest-4243 +epd 8/1B1k3N/p2p1b2/P3p1P1/1Qr4p/N1P4P/8/1R3K1R b - - +perft 1 22 +perft 2 780 +perft 3 13619 +perft 4 522522 +perft 5 8871122 +perft 6 354016101 + +id gentest-4244 +epd 4k2b/1B5N/p2p4/P3p1P1/1Qr4p/N1P4P/6K1/1R5R w - - +perft 1 40 +perft 2 636 +perft 3 25703 +perft 4 400987 +perft 5 16689636 +perft 6 259663000 + +id gentest-4245 +epd 4k3/1B4bN/p2p4/P3p1P1/1Qr4p/N1P4P/4K3/1R5R b - - +perft 1 20 +perft 2 865 +perft 3 15339 +perft 4 664721 +perft 5 11335694 +perft 6 492378687 + +id gentest-4246 +epd 4k2b/1B5N/p2p4/P1r1p1P1/1Q5p/N1P4P/4K2R/1R6 w - - +perft 1 48 +perft 2 703 +perft 3 33127 +perft 4 501021 +perft 5 23227228 +perft 6 358199833 + +id gentest-4247 +epd 4k2b/1B5N/p1rp4/P3p1P1/1RQ4p/N1P4P/4K2R/8 b - - +perft 1 12 +perft 2 525 +perft 3 6922 +perft 4 310561 +perft 5 4464275 +perft 6 199108956 + +id gentest-4248 +epd 4k3/1B5N/Q1r2b2/P2pp1P1/1R5p/N1P4P/4K2R/8 w - - +perft 1 42 +perft 2 758 +perft 3 31147 +perft 4 561590 +perft 5 23261775 +perft 6 405879997 + +id gentest-4249 +epd 2B1k3/7N/Q1r2b2/P2p2P1/R3p2p/N1P4P/4K2R/8 b - - +perft 1 22 +perft 2 756 +perft 3 14949 +perft 4 546292 +perft 5 10322334 +perft 6 391870340 + +id gentest-4250 +epd 2B1k3/7N/Q4b2/PN1p2P1/R6p/2r1p2P/4K2R/8 w - - +perft 1 40 +perft 2 684 +perft 3 27069 +perft 4 465629 +perft 5 18742901 +perft 6 319519887 + +id gentest-4251 +epd 2B1k2b/2N4N/Q7/P2p2P1/R6p/2r1p2P/4K1R1/8 b - - +perft 1 4 +perft 2 177 +perft 3 2906 +perft 4 121112 +perft 5 2138936 +perft 6 89214978 + +id gentest-4252 +epd 2Bk4/2N4N/Q4b2/P2p2P1/5R1p/2r1p2P/4K1R1/8 w - - +perft 1 46 +perft 2 764 +perft 3 33387 +perft 4 583797 +perft 5 25331589 +perft 6 445558337 + +id gentest-4253 +epd 2Bk4/2N4N/1Q6/P2pb1P1/1R5p/2r1p2P/4K1R1/8 b - - +perft 1 21 +perft 2 964 +perft 3 17116 +perft 4 771774 +perft 5 13423537 +perft 6 593673328 + +id gentest-4254 +epd 2Bk4/2N4N/1Q6/P2p2P1/1R3b1p/3Kp2P/6R1/2r5 w - - +perft 1 51 +perft 2 997 +perft 3 45762 +perft 4 843164 +perft 5 38120071 +perft 6 701351216 + +id gentest-4255 +epd 2B1k3/7N/1Q6/PN1p2P1/1R3b1p/4p2P/4K1R1/2r5 b - - +perft 1 24 +perft 2 1032 +perft 3 18548 +perft 4 799906 +perft 5 13985559 +perft 6 606645570 + +id gentest-4256 +epd 2B1k3/7N/1Q6/PN1p2P1/5b1p/1R2p2P/4K1R1/3r4 w - - +perft 1 45 +perft 2 711 +perft 3 28979 +perft 4 461387 +perft 5 19097630 +perft 6 309368873 + +id gentest-4257 +epd 2B1k3/7N/1Q4P1/PN1p4/5b1p/1R2p1RP/4K3/6r1 b - - +perft 1 19 +perft 2 760 +perft 3 11678 +perft 4 468223 +perft 5 7362419 +perft 6 298573735 + +id gentest-4258 +epd 2B1k3/2b4N/1Q4P1/P2p4/3N3p/1R2p1RP/4K3/1r6 w - - +perft 1 46 +perft 2 756 +perft 3 31460 +perft 4 513536 +perft 5 21349753 +perft 6 347937619 + +id gentest-4259 +epd 2B1k3/2Q4N/P5P1/3p4/3N4/1R2p1pP/4K3/1r6 b - - +perft 1 10 +perft 2 412 +perft 3 4275 +perft 4 173238 +perft 5 1872010 +perft 6 74457963 + +id gentest-4260 +epd 2B5/4k2N/P5P1/3p4/2QN4/1R2p1pP/4K3/r7 w - - +perft 1 42 +perft 2 590 +perft 3 23375 +perft 4 302162 +perft 5 12043203 +perft 6 154973712 + +id gentest-4261 +epd 8/4k2N/P5P1/3p4/2Q3B1/1R2pNpP/4K3/2r5 b - - +perft 1 16 +perft 2 638 +perft 3 8655 +perft 4 336787 +perft 5 4467029 +perft 6 171511165 + +id gentest-4262 +epd 4k3/7N/P5P1/3p4/2Q3B1/4pNpP/4K3/1R2r3 w - - +perft 1 4 +perft 2 29 +perft 3 1268 +perft 4 10103 +perft 5 426748 +perft 6 4278244 + +id gentest-4263 +epd 8/4k3/P5P1/3p2N1/2Q3B1/4p1pP/4K3/1R2N3 b - - +perft 1 8 +perft 2 381 +perft 3 2315 +perft 4 102620 +perft 5 644942 +perft 6 26839784 + +id gentest-4264 +epd 5k2/8/P5P1/3p2N1/2Q3B1/4p1pP/4K3/2R1N3 w - - +perft 1 44 +perft 2 261 +perft 3 11423 +perft 4 67155 +perft 5 2850477 +perft 6 17505574 + +id gentest-4265 +epd 6k1/7N/P5P1/3p4/3Q2B1/4p1pP/4K3/2R1N3 b - - +perft 1 1 +perft 2 50 +perft 3 229 +perft 4 8819 +perft 5 59546 +perft 6 2012023 + +id gentest-4266 +epd 6k1/7N/P5P1/3pQ3/6B1/4p2P/4K3/2R1N1b1 w - - +perft 1 52 +perft 2 170 +perft 3 8191 +perft 4 42676 +perft 5 1886948 +perft 6 13547725 + +id gentest-4267 +epd 7k/7N/P5P1/3p4/6B1/4p2P/8/2RKN1b1 b - - +perft 1 6 +perft 2 143 +perft 3 1054 +perft 4 27189 +perft 5 242807 +perft 6 6576824 + +id gentest-4268 +epd 8/6kN/P3B1P1/3p4/8/4p2P/8/2RKN1b1 w - - +perft 1 27 +perft 2 191 +perft 3 4892 +perft 4 38593 +perft 5 1043714 +perft 6 9820102 + +id gentest-4269 +epd 8/6kN/P3B1P1/3p4/8/2R4P/4p3/2K1N1b1 b - - +perft 1 11 +perft 2 325 +perft 3 3782 +perft 4 108961 +perft 5 1350152 +perft 6 38636686 + +id gentest-4270 +epd 8/b4B1N/P5Pk/3p4/8/2R4P/4p3/2K1N3 w - - +perft 1 29 +perft 2 305 +perft 3 8242 +perft 4 97804 +perft 5 2677031 +perft 6 33879586 + +id gentest-4271 +epd 5N2/b4B2/P5Pk/8/3p4/7P/2R1p3/2K1N3 b - - +perft 1 7 +perft 2 195 +perft 3 1860 +perft 4 50751 +perft 5 564501 +perft 6 15431261 + +id gentest-4272 +epd 5N2/b1R2B2/P5Pk/8/3p4/7P/4p3/2K1N3 w - - +perft 1 30 +perft 2 208 +perft 3 6201 +perft 4 56914 +perft 5 1623740 +perft 6 17920576 + +id gentest-4273 +epd 5N2/5B2/Pb4Pk/8/3p3P/8/2R1p3/2K1N3 b - - +perft 1 8 +perft 2 224 +perft 3 2260 +perft 4 60655 +perft 5 684201 +perft 6 18354762 + +id gentest-4274 +epd 5N2/5B2/P5P1/2b4k/3p3P/8/2R1p1N1/2K5 w - - +perft 1 25 +perft 2 309 +perft 3 7079 +perft 4 96114 +perft 5 2346566 +perft 6 33684558 + +id gentest-4275 +epd 8/3N1B2/P5P1/2b4k/3p3P/8/1KR3N1/4r3 b - - +perft 1 24 +perft 2 633 +perft 3 12059 +perft 4 333945 +perft 5 6379014 +perft 6 182796289 + +id gentest-4276 +epd 8/3NbB2/P5P1/2R5/3p2kP/8/1K4N1/4r3 w - - +perft 1 36 +perft 2 761 +perft 3 23632 +perft 4 506028 +perft 5 15463563 +perft 6 326070207 + +id gentest-4277 +epd 8/3NbB2/P1R3P1/7k/3p3P/8/K5N1/4r3 b - - +perft 1 24 +perft 2 671 +perft 3 13649 +perft 4 382464 +perft 5 7548425 +perft 6 215070303 + +id gentest-4278 +epd 8/3Nb3/P1R3P1/4r2k/7P/1B1p4/K5N1/8 w - - +perft 1 33 +perft 2 671 +perft 3 19866 +perft 4 403072 +perft 5 11944416 +perft 6 244803780 + +id gentest-4279 +epd 1N3b2/8/P1R3P1/3Br2k/7P/3p4/K5N1/8 b - - +perft 1 20 +perft 2 522 +perft 3 10115 +perft 4 278573 +perft 5 5599851 +perft 6 156824892 + +id gentest-4280 +epd 1N6/8/P1R3P1/3Br2k/7P/3p4/1K4N1/2b5 w - - +perft 1 7 +perft 2 127 +perft 3 3420 +perft 4 61898 +perft 5 1720202 +perft 6 32169538 + +id gentest-4281 +epd 1N6/8/P4RP1/3B2rk/7P/3p4/6N1/K1b5 b - - +perft 1 15 +perft 2 428 +perft 3 7360 +perft 4 199506 +perft 5 3650468 +perft 6 97958634 + +id gentest-4282 +epd 1N6/8/P4RP1/3B2rk/7P/3p4/K5N1/2b5 w - - +perft 1 32 +perft 2 478 +perft 3 13579 +perft 4 234394 +perft 5 6723772 +perft 6 123563447 + +id gentest-4283 +epd 1N4B1/8/P5P1/4r2k/7P/3p4/K5N1/2b2R2 b - - +perft 1 24 +perft 2 634 +perft 3 13416 +perft 4 356230 +perft 5 7444014 +perft 6 200420260 + +id gentest-4284 +epd 1N4B1/3r4/P5P1/7k/7P/3p4/K7/2b1NR2 w - - +perft 1 26 +perft 2 551 +perft 3 15098 +perft 4 314975 +perft 5 8887862 +perft 6 184964843 + +id gentest-4285 +epd 1N4B1/8/P5P1/3r1R1k/7P/3p4/K7/2b1N3 b - - +perft 1 6 +perft 2 151 +perft 3 2707 +perft 4 68908 +perft 5 1350094 +perft 6 35824284 + +id gentest-4286 +epd 1N3RB1/8/P5k1/2r5/7P/3p4/K7/2b1N3 w - - +perft 1 27 +perft 2 566 +perft 3 14965 +perft 4 308580 +perft 5 8509434 +perft 6 176776277 + +id gentest-4287 +epd 1N1R4/8/P5k1/2r3b1/2B4P/3p4/K7/4N3 b - - +perft 1 25 +perft 2 710 +perft 3 15740 +perft 4 438089 +perft 5 9714617 +perft 6 270742106 + +id gentest-4288 +epd 1N1R4/P7/6k1/4r1b1/2B4P/8/K2p4/4N3 w - - +perft 1 39 +perft 2 1106 +perft 3 39052 +perft 4 1085532 +perft 5 36098751 +perft 6 991795169 + +id gentest-4289 +epd BN1R4/8/6k1/4r1P1/2B5/8/K7/3bN3 b - - +perft 1 25 +perft 2 871 +perft 3 18362 +perft 4 626375 +perft 5 12784711 +perft 6 432233327 + +id gentest-4290 +epd BN2rR2/8/6k1/6P1/2B5/8/K7/3bN3 w - - +perft 1 38 +perft 2 728 +perft 3 25299 +perft 4 484676 +perft 5 16546413 +perft 6 318793453 + +id gentest-4291 +epd BNr5/8/6k1/6P1/2B5/8/K4R2/3bN3 b - - +perft 1 21 +perft 2 800 +perft 3 15792 +perft 4 561035 +perft 5 11089037 +perft 6 381294908 + +id gentest-4292 +epd 1N6/6k1/8/6P1/2r1B3/8/K4R2/3bN3 w - - +perft 1 38 +perft 2 793 +perft 3 23356 +perft 4 491920 +perft 5 14023896 +perft 6 296229352 + +id gentest-4293 +epd 1N6/6k1/8/2r3P1/4B3/8/K1R5/3bN3 b - - +perft 1 21 +perft 2 626 +perft 3 13399 +perft 4 387975 +perft 5 8292914 +perft 6 236761540 + +id gentest-4294 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-4295 +epd rnbqkbnr/pp1ppppp/8/2p5/7P/N7/PPPPPPP1/R1BQKBNR b KQkq - +perft 1 22 +perft 2 459 +perft 3 11280 +perft 4 263160 +perft 5 7036823 +perft 6 180587185 + +id gentest-4296 +epd rnbqkbnr/pp1p1pp1/4p2p/2p5/7P/NP6/P1PPPPP1/R1BQKBNR w KQkq - +perft 1 21 +perft 2 586 +perft 3 13952 +perft 4 397722 +perft 5 10426143 +perft 6 306486114 + +id gentest-4297 +epd rnbqkbnr/pp1p1pp1/4p2p/8/2p4P/NP5N/P1PPPPP1/1RBQKB1R b Kkq - +perft 1 32 +perft 2 697 +perft 3 22816 +perft 4 543191 +perft 5 18067125 +perft 6 467244712 + +id gentest-4298 +epd rnbqkbnr/pp4p1/3pp2p/5p1P/2p5/NP5N/P1PPPPP1/1RBQKB1R w Kkq - +perft 1 21 +perft 2 623 +perft 3 14633 +perft 4 434395 +perft 5 11185633 +perft 6 336230787 + +id gentest-4299 +epd rnbqkbnr/pp6/3pp2p/5ppP/P1N5/1P5N/2PPPPP1/1RBQKB1R b Kkq - +perft 1 26 +perft 2 697 +perft 3 18510 +perft 4 503452 +perft 5 14092863 +perft 6 397331299 + +id gentest-4300 +epd r1bq1bnr/pp3k2/2npp2p/5ppP/P1N5/1P6/2PPPPP1/1RBQKBNR w K - +perft 1 27 +perft 2 807 +perft 3 22308 +perft 4 664309 +perft 5 18935001 +perft 6 571440507 + +id gentest-4301 +epd r1bq1bnr/1p3k2/p1npp2p/5ppP/P7/1P2NN2/2PPPPP1/1RBQKB1R b K - +perft 1 33 +perft 2 851 +perft 3 25250 +perft 4 668537 +perft 5 19819573 +perft 6 541383027 + +id gentest-4302 +epd r1bq2nr/1p2bk2/p1np3p/4pppP/P1N5/1P3N2/2PPPPP1/1RBQKB1R w K - +perft 1 30 +perft 2 830 +perft 3 24379 +perft 4 696711 +perft 5 20580774 +perft 6 609742683 + +id gentest-4303 +epd 2bq2nr/rp2bk2/p1np3p/4pppP/P1N5/1P3N2/1BPPPPP1/1R1QKBR1 b - - +perft 1 29 +perft 2 864 +perft 3 23209 +perft 4 685600 +perft 5 19400987 +perft 6 576083703 + +id gentest-4304 +epd 1nbq1bnr/rp3k2/p2p3p/4pppP/P1NB4/1P3N2/2PPPPP1/1R1QKBR1 w - - +perft 1 32 +perft 2 847 +perft 3 26351 +perft 4 708753 +perft 5 22018219 +perft 6 613011023 + +id gentest-4305 +epd 1nbq1bn1/rp3k1r/p2p3p/N3pppP/P2B2P1/1P3N2/2PPPP2/1R1QKBR1 b - - +perft 1 30 +perft 2 919 +perft 3 26226 +perft 4 818896 +perft 5 23771705 +perft 6 757311563 + +id gentest-4306 +epd 1nb1qbn1/rp3k1r/p2p3p/N4ppP/P2N2P1/1P6/2PPPP2/1R1QKBR1 w - - +perft 1 26 +perft 2 773 +perft 3 21005 +perft 4 628934 +perft 5 18027355 +perft 6 551377905 + +id gentest-4307 +epd 1nb1qbn1/r4k1r/pp1p3p/N4ppP/P5P1/1P3N2/2PPPPR1/1R1QKB2 b - - +perft 1 36 +perft 2 841 +perft 3 27915 +perft 4 688752 +perft 5 23096994 +perft 6 601575307 + +id gentest-4308 +epd 1nb1qbn1/r4k1r/pp1p3p/N4ppP/P5P1/1P6/2PPPPRN/1R1QKB2 w - - +perft 1 20 +perft 2 711 +perft 3 15565 +perft 4 539154 +perft 5 12970759 +perft 6 446414621 + +id gentest-4309 +epd 1nb1qbn1/4rk1r/ppNp3p/5ppP/P5P1/1P3P2/2PPP1RN/1R1QKB2 b - - +perft 1 29 +perft 2 714 +perft 3 20587 +perft 4 501386 +perft 5 15472121 +perft 6 386067072 + +id gentest-4310 +epd 2b1qbn1/4r1kr/ppnp3p/5ppP/P5P1/1P3P2/2PPPR1N/1R1QKB2 w - - +perft 1 17 +perft 2 593 +perft 3 10843 +perft 4 385258 +perft 5 7702873 +perft 6 274759274 + +id gentest-4311 +epd 2b1qbn1/6kr/ppnp3p/5ppP/P2P2P1/1P2rP2/2P1PR1N/2RQKB2 b - - +perft 1 41 +perft 2 620 +perft 3 24782 +perft 4 439747 +perft 5 17085226 +perft 6 346231300 + +id gentest-4312 +epd 2b1qb2/4n1kr/ppnp3p/6pP/P2P2p1/1P2rP2/2P1P1RN/2RQKB2 w - - +perft 1 18 +perft 2 680 +perft 3 13328 +perft 4 511193 +perft 5 11119161 +perft 6 428010028 + +id gentest-4313 +epd 4qb2/4n1kr/ppnpb2p/6pP/PP1P2p1/4rP2/2P1P1RN/1R1QKB2 b - - +perft 1 47 +perft 2 981 +perft 3 44035 +perft 4 996859 +perft 5 43032489 +perft 6 1049380554 + +id gentest-4314 +epd 4qb1r/6k1/ppnpb1np/6pP/PP1P2p1/4rP2/2PKP1RN/1R1Q1B2 w - - +perft 1 22 +perft 2 1034 +perft 3 22793 +perft 4 1046505 +perft 5 24444328 +perft 6 1092425957 + +id gentest-4315 +epd 4qb1r/6k1/ppnpb1np/6pP/PP1Pr1p1/5P2/2PKPR1N/1RQ2B2 b - - +perft 1 45 +perft 2 1070 +perft 3 46873 +perft 4 1196476 +perft 5 51077387 +perft 6 1371053856 + +id gentest-4316 +epd 5b1r/5qk1/ppnpb1np/1P4pP/P2P2p1/5P2/2PKrR1N/1RQ2B2 w - - +perft 1 6 +perft 2 267 +perft 3 7173 +perft 4 303223 +perft 5 8629020 +perft 6 350941330 + +id gentest-4317 +epd 5b1r/5qk1/pp1pb1np/1P2n1pP/P2P2p1/5P2/2P1KR1N/1RQ2B2 b - - +perft 1 37 +perft 2 962 +perft 3 35451 +perft 4 983813 +perft 5 35737433 +perft 6 1029818506 + +id gentest-4318 +epd 5b1r/6k1/pp1p2np/1P2nqpP/P1bP2p1/4KP2/2P2R1N/1RQ2B2 w - - +perft 1 27 +perft 2 1056 +perft 3 27919 +perft 4 1067535 +perft 5 29437503 +perft 6 1112107850 + +id gentest-4319 +epd 5b1r/8/pp1p1knp/1P2nqpP/P1bP1Pp1/1R2K3/2P2R1N/2Q2B2 b - - +perft 1 37 +perft 2 1095 +perft 3 37966 +perft 4 1123386 +perft 5 40184620 +perft 6 1204207580 + +id gentest-4320 +epd 5b1r/8/pp1p1k1p/1P2n1pP/P1bP1np1/1R1BK3/2P2R1N/2Q5 w - - +perft 1 38 +perft 2 937 +perft 3 33589 +perft 4 896565 +perft 5 30839457 +perft 6 853069613 + +id gentest-4321 +epd 5b1r/6k1/pp1p3p/PP2n1pP/2bP1Rp1/1R1BK3/2P4N/2Q5 b - - +perft 1 22 +perft 2 886 +perft 3 19564 +perft 4 751129 +perft 5 16838584 +perft 6 635964358 + +id gentest-4322 +epd 5b2/3n2kr/pp1p3p/PP4pP/2bP1Rp1/1R1BK3/2P4N/5Q2 w - - +perft 1 41 +perft 2 801 +perft 3 31825 +perft 4 634880 +perft 5 25017291 +perft 6 515930805 + +id gentest-4323 +epd 5bk1/3n3r/pp1p2Bp/PP4pP/2bP2p1/1R2KR2/2P4N/5Q2 b - - +perft 1 25 +perft 2 971 +perft 3 22183 +perft 4 849767 +perft 5 19556161 +perft 6 741524840 + +id gentest-4324 +epd 5bk1/3n1b1r/1p1p2Bp/Pp4pP/3P2p1/1R1QKR2/2P4N/8 w - - +perft 1 38 +perft 2 745 +perft 3 28638 +perft 4 573561 +perft 5 22042806 +perft 6 456625466 + +id gentest-4325 +epd 5bk1/5b1r/1p1p2Bp/Ppn2RpP/3P2p1/1R2K3/2P1Q2N/8 b - - +perft 1 24 +perft 2 984 +perft 3 22261 +perft 4 901229 +perft 5 20363602 +perft 6 815150042 + +id gentest-4326 +epd 6k1/5bbr/np1p2Bp/Pp3RpP/3P2p1/1R2K3/2P3QN/8 w - - +perft 1 47 +perft 2 967 +perft 3 41254 +perft 4 834091 +perft 5 34313688 +perft 6 718787921 + +id gentest-4327 +epd 6k1/2n2Rbr/1p1p2Bp/Pp4pP/3P2p1/1R2K3/2P3Q1/5N2 b - - +perft 1 16 +perft 2 696 +perft 3 10229 +perft 4 440228 +perft 5 6624911 +perft 6 279444500 + +id gentest-4328 +epd 5bk1/2n2R1r/1p4Bp/Pp1p2pP/3P2p1/R3K3/2P3Q1/5N2 w - - +perft 1 44 +perft 2 722 +perft 3 30492 +perft 4 514802 +perft 5 20842971 +perft 6 365291634 + +id gentest-4329 +epd 4nbk1/5R1r/1p4Bp/Pp1p2pP/3P2p1/4K1N1/R1P3Q1/8 b - - +perft 1 16 +perft 2 706 +perft 3 11343 +perft 4 461831 +perft 5 7818830 +perft 6 308038950 + +id gentest-4330 +epd 4n1k1/5R1r/6Bp/ppbp2pP/3P2p1/4K3/R1P3Q1/7N w - - +perft 1 44 +perft 2 841 +perft 3 33044 +perft 4 621103 +perft 5 23628799 +perft 6 449681607 + +id gentest-4331 +epd 4n2k/7r/5RBp/ppbp2pP/3P2p1/8/R1P2KQ1/7N b - - +perft 1 24 +perft 2 854 +perft 3 18718 +perft 4 686519 +perft 5 14817395 +perft 6 553657877 + +id gentest-4332 +epd 4n2k/5r2/5RBp/pp1p2pP/3P2p1/b5N1/R1P2KQ1/8 w - - +perft 1 32 +perft 2 760 +perft 3 27172 +perft 4 607185 +perft 5 22736527 +perft 6 496374194 + +id gentest-4333 +epd 4n3/5Bk1/5R1p/pp1p2pP/3P2p1/R5N1/2P2KQ1/8 b - - +perft 1 9 +perft 2 372 +perft 3 3398 +perft 4 136101 +perft 5 1287634 +perft 6 50873022 + +id gentest-4334 +epd 4n3/5B1k/5R1p/pp1p2pP/3P2p1/6N1/2P2KQ1/R7 w - - +perft 1 46 +perft 2 353 +perft 3 15393 +perft 4 128055 +perft 5 5351575 +perft 6 47760417 + +id gentest-4335 +epd 8/7k/3R1nBp/pp1p2pP/3P2p1/6N1/2P2KQ1/R7 b - - +perft 1 3 +perft 2 135 +perft 3 1371 +perft 4 56650 +perft 5 529904 +perft 6 22368757 + +id gentest-4336 +epd 6k1/8/3R1nBp/p2p2pP/1p1P2p1/6NQ/2P2K2/R7 w - - +perft 1 44 +perft 2 466 +perft 3 18802 +perft 4 201857 +perft 5 8209323 +perft 6 87107819 + +id gentest-4337 +epd 8/5k2/3R1n1p/p2p2pP/1p1P2p1/6N1/2P2K1Q/R7 b - - +perft 1 13 +perft 2 462 +perft 3 5173 +perft 4 185949 +perft 5 2035407 +perft 6 73244972 + +id gentest-4338 +epd 4k3/3n4/3R3p/p2p1NpP/1p1P2p1/8/2P2K1Q/R7 w - - +perft 1 43 +perft 2 481 +perft 3 19548 +perft 4 201100 +perft 5 7920512 +perft 6 84505246 + +id gentest-4339 +epd 4k3/3n4/3R3p/3p1NpP/pp1P2p1/8/2P1K3/R6Q b - - +perft 1 12 +perft 2 555 +perft 3 5690 +perft 4 245256 +perft 5 2643351 +perft 6 108255228 + +id gentest-4340 +epd 5k2/6N1/3R1n1p/3p2pP/pp1P2p1/8/2P1K3/R6Q w - - +perft 1 42 +perft 2 500 +perft 3 19874 +perft 4 216797 +perft 5 8247664 +perft 6 90345991 + +id gentest-4341 +epd 8/4k1N1/2R2n1p/3p2pP/pp1P2p1/8/2P1K3/R3Q3 b - - +perft 1 13 +perft 2 518 +perft 3 5451 +perft 4 212150 +perft 5 2247821 +perft 6 85848358 + +id gentest-4342 +epd 6k1/6N1/3R1n1p/3p2pP/pp1P2p1/8/2P1K3/R3Q3 w - - +perft 1 37 +perft 2 462 +perft 3 17719 +perft 4 208987 +perft 5 7906545 +perft 6 89267963 + +id gentest-4343 +epd 6k1/6N1/3R1n1p/3p2pP/pp1P4/2Q2Kp1/2P5/R7 b - - +perft 1 16 +perft 2 575 +perft 3 7927 +perft 4 282827 +perft 5 3622003 +perft 6 127777228 + +id gentest-4344 +epd 8/7k/3R1n1p/3p2pP/pp1P4/2Q2Kp1/2P5/6R1 w - - +perft 1 35 +perft 2 433 +perft 3 14492 +perft 4 167388 +perft 5 5547231 +perft 6 64200051 + +id gentest-4345 +epd 8/7k/3R3p/3p2pn/pp1P4/2Q2Kp1/2P5/6R1 b - - +perft 1 11 +perft 2 359 +perft 3 3963 +perft 4 131438 +perft 5 1542427 +perft 6 51056863 + +id gentest-4346 +epd 8/7k/5n1p/3R2p1/1p1P4/p1Q2Kp1/2P5/6R1 w - - +perft 1 36 +perft 2 549 +perft 3 18982 +perft 4 266036 +perft 5 9170992 +perft 6 127026438 + +id gentest-4347 +epd 8/7k/5n1p/6p1/1p1PR3/2Q2Kp1/p1P5/6R1 b - - +perft 1 20 +perft 2 707 +perft 3 12979 +perft 4 445295 +perft 5 8123417 +perft 6 276053349 + +id gentest-4348 +epd 4R3/7k/5n1p/6p1/1p1P4/1nQ2Kp1/2P5/6R1 w - - +perft 1 42 +perft 2 716 +perft 3 24935 +perft 4 401381 +perft 5 13851172 +perft 6 219374198 + +id gentest-4349 +epd 4R3/7k/5n1p/8/1Q1P2p1/1n2K1p1/2P5/6R1 b - - +perft 1 16 +perft 2 644 +perft 3 9290 +perft 4 360400 +perft 5 5151793 +perft 6 197508506 + +id gentest-4350 +epd 4n3/7k/7p/8/3P2p1/4K1p1/2PQ4/6R1 w - - +perft 1 27 +perft 2 262 +perft 3 7282 +perft 4 78757 +perft 5 2207853 +perft 6 24641537 + +id gentest-4351 +epd 4n3/7k/7p/8/3P2p1/4K3/2PQ2p1/6R1 b - - +perft 1 10 +perft 2 258 +perft 3 3157 +perft 4 80719 +perft 5 1063134 +perft 6 28219114 + +id gentest-4352 +epd 8/7k/7p/1n6/3PK1p1/8/2PQ2p1/6R1 w - - +perft 1 31 +perft 2 395 +perft 3 10640 +perft 4 144809 +perft 5 4093385 +perft 6 58551040 + +id gentest-4353 +epd 8/6k1/7p/1n6/3P2p1/2QK4/2P3p1/6R1 b - - +perft 1 15 +perft 2 387 +perft 3 5435 +perft 4 155531 +perft 5 2181483 +perft 6 63895672 + +id gentest-4354 +epd 8/8/6kp/1n6/3P2p1/2QK4/2P5/1R4n1 w - - +perft 1 28 +perft 2 465 +perft 3 13606 +perft 4 206933 +perft 5 6247526 +perft 6 91189956 + +id gentest-4355 +epd 8/8/6kp/1n1P4/6p1/Q2K3n/2P5/1R6 b - - +perft 1 19 +perft 2 601 +perft 3 10003 +perft 4 308786 +perft 5 4864277 +perft 6 149805336 + +id gentest-4356 +epd 8/8/6k1/1n1P2np/6p1/Q2K4/1RP5/8 w - - +perft 1 26 +perft 2 472 +perft 3 13487 +perft 4 232887 +perft 5 6794619 +perft 6 112696263 + +id gentest-4357 +epd 8/8/4n1k1/1n1P3p/6p1/7Q/1RPK4/8 b - - +perft 1 24 +perft 2 681 +perft 3 13123 +perft 4 373397 +perft 5 6640982 +perft 6 193384773 + +id gentest-4358 +epd 8/8/6k1/1n1P3p/3n4/3K3p/1RP5/8 w - - +perft 1 12 +perft 2 247 +perft 3 3690 +perft 4 73560 +perft 5 1177464 +perft 6 22344118 + +id gentest-4359 +epd 8/8/6k1/1n1P3p/4K3/1P5p/1R6/8 b - - +perft 1 14 +perft 2 197 +perft 3 2621 +perft 4 42159 +perft 5 551409 +perft 6 9286486 + +id gentest-4360 +epd 8/6k1/8/1n1P3p/4K3/1P5p/3R4/8 w - - +perft 1 18 +perft 2 272 +perft 3 4538 +perft 4 61134 +perft 5 1049869 +perft 6 13579691 + +id gentest-4361 +epd 8/7k/3P4/1n2K2p/8/1P5p/3R4/8 b - - +perft 1 13 +perft 2 243 +perft 3 3048 +perft 4 54743 +perft 5 672971 +perft 6 12219668 + +id gentest-4362 +epd 7k/8/3n4/4K2p/8/1P5p/7R/8 w - - +perft 1 16 +perft 2 190 +perft 3 3100 +perft 4 34336 +perft 5 597358 +perft 6 6742053 + +id gentest-4363 +epd 8/7k/3n4/7p/8/1P1K3p/7R/8 b - - +perft 1 14 +perft 2 233 +perft 3 3021 +perft 4 50185 +perft 5 616482 +perft 6 10648711 + +id gentest-4364 +epd 8/5n1k/8/8/7p/1P1K3p/8/7R w - - +perft 1 18 +perft 2 211 +perft 3 3735 +perft 4 40193 +perft 5 724327 +perft 6 8358037 + +id gentest-4365 +epd 8/7k/8/6n1/7p/1P5p/2K5/3R4 b - - +perft 1 10 +perft 2 207 +perft 3 2435 +perft 4 45050 +perft 5 540038 +perft 6 9809538 + +id gentest-4366 +epd 8/8/7k/6n1/7p/1P6/2K4p/2R5 w - - +perft 1 14 +perft 2 210 +perft 3 3804 +perft 4 58301 +perft 5 1001054 +perft 6 16244750 + +id gentest-4367 +epd 8/8/7k/8/3Rn2p/1P6/2K4p/8 b - - +perft 1 18 +perft 2 331 +perft 3 5415 +perft 4 95261 +perft 5 1539051 +perft 6 26364788 + +id gentest-4368 +epd 8/8/5k2/8/R3n2p/1P6/2K4p/8 w - - +perft 1 17 +perft 2 311 +perft 3 5256 +perft 4 93762 +perft 5 1580062 +perft 6 27688109 + +id gentest-4369 +epd 8/8/8/5k2/4n2p/1P6/2K4p/7R b - - +perft 1 16 +perft 2 234 +perft 3 3901 +perft 4 59061 +perft 5 980256 +perft 6 15493205 + +id gentest-4370 +epd 8/8/8/2n2k2/1P6/7p/2K4p/7R w - - +perft 1 16 +perft 2 260 +perft 3 4190 +perft 4 67227 +perft 5 1109259 +perft 6 18176616 + +id gentest-4371 +epd 8/8/6k1/2P5/8/3K3p/7p/7R b - - +perft 1 8 +perft 2 135 +perft 3 1102 +perft 4 20467 +perft 5 196274 +perft 6 3582896 + +id gentest-4372 +epd 7k/8/8/2P5/3K4/7p/7p/7R w - - +perft 1 16 +perft 2 78 +perft 3 1423 +perft 4 12591 +perft 5 222875 +perft 6 2523296 + +id gentest-4373 +epd 8/6k1/8/2P5/2K5/7p/7p/2R5 b - - +perft 1 12 +perft 2 202 +perft 3 2255 +perft 4 40135 +perft 5 506867 +perft 6 8661558 + +id gentest-4374 +epd 8/8/7k/2PK4/8/7p/7p/2R5 w - - +perft 1 18 +perft 2 159 +perft 3 2635 +perft 4 27183 +perft 5 467810 +perft 6 5485118 + +id gentest-4375 +epd 8/8/3K3k/2P5/8/7p/2R5/7b b - - +perft 1 13 +perft 2 206 +perft 3 2976 +perft 4 51256 +perft 5 740906 +perft 6 13106448 + +id gentest-4376 +epd 7k/8/3K4/2P5/8/7p/5R2/7b w - - +perft 1 20 +perft 2 194 +perft 3 3625 +perft 4 42742 +perft 5 783158 +perft 6 9796038 + +id gentest-4377 +epd b6k/2K5/5R2/2P5/8/7p/8/8 b - - +perft 1 11 +perft 2 226 +perft 3 2647 +perft 4 49726 +perft 5 612255 +perft 6 11194473 + +id gentest-4378 +epd 7k/1b6/1K3R2/2P5/8/7p/8/8 w - - +perft 1 18 +perft 2 187 +perft 3 3434 +perft 4 38522 +perft 5 693192 +perft 6 8377654 + +id gentest-4379 +epd 6k1/1b6/1K1R4/2P5/8/7p/8/8 b - - +perft 1 15 +perft 2 265 +perft 3 3337 +perft 4 60314 +perft 5 779482 +perft 6 13939159 + +id gentest-4380 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-4381 +epd rnbqkbnr/pppp1ppp/8/4p3/8/P2P4/1PP1PPPP/RNBQKBNR b KQkq - +perft 1 30 +perft 2 756 +perft 3 23300 +perft 4 606139 +perft 5 19269338 +perft 6 519286744 + +id gentest-4382 +epd rnbqkbnr/pp1p2pp/8/2p1ppB1/8/P2P4/1PP1PPPP/RN1QKBNR w KQkq - +perft 1 31 +perft 2 821 +perft 3 23985 +perft 4 670734 +perft 5 19742352 +perft 6 577624112 + +id gentest-4383 +epd rnbqkbnr/pp1p3p/6p1/2p1ppB1/2N5/P2P4/1PP1PPPP/R2QKBNR b KQkq - +perft 1 26 +perft 2 910 +perft 3 24012 +perft 4 816801 +perft 5 22637052 +perft 6 762051290 + +id gentest-4384 +epd r1b1kbnr/pp1p3p/2n3p1/q1p1ppB1/2N5/P2P4/1PPQPPPP/R3KBNR w KQkq - +perft 1 36 +perft 2 1148 +perft 3 40863 +perft 4 1285056 +perft 5 46104674 +perft 6 1458425385 + +id gentest-4385 +epd r1b1kbnr/pp1p3p/2n3p1/2p1NpB1/q7/P2PP3/1PPQ1PPP/R3KBNR b KQkq - +perft 1 38 +perft 2 1578 +perft 3 57360 +perft 4 2253448 +perft 5 80316190 +perft 6 3057879289 + +id gentest-4386 +epd r1b1kbnr/1p1p3p/6p1/p1p1np2/q4B2/P2PP3/1PPQ1PPP/R3KBNR w KQkq - +perft 1 32 +perft 2 1179 +perft 3 35953 +perft 4 1328268 +perft 5 41111810 +perft 6 1517802854 + +id gentest-4387 +epd r1b1kbnr/1p1p3p/6p1/pqp1np2/1P2PB2/P2P4/2PQ1PPP/R3KBNR b KQkq - +perft 1 37 +perft 2 1178 +perft 3 44411 +perft 4 1454834 +perft 5 55227816 +perft 6 1853480361 + +id gentest-4388 +epd r1b1kbnr/1p1p3p/6p1/pqp2p2/1n2PB2/P7/2PQKPPP/R4BNR w kq - +perft 1 6 +perft 2 210 +perft 3 7996 +perft 4 276805 +perft 5 10553681 +perft 6 367158021 + +id gentest-4389 +epd r1b1kbnr/1p1p3p/6p1/pqp2p2/2P1PB2/P4N2/n2QKPPP/R4B1R b kq - +perft 1 33 +perft 2 1378 +perft 3 45107 +perft 4 1790696 +perft 5 59177879 +perft 6 2263802486 + +id gentest-4390 +epd r1b1kbnr/1p1p3p/6p1/p1p2p2/2q1PB2/P4N2/4KPPP/R1Q2B1R w kq - +perft 1 5 +perft 2 177 +perft 3 5912 +perft 4 199964 +perft 5 7029180 +perft 6 233382735 + +id gentest-4391 +epd r1b1kbnr/1p1p3p/6p1/p1p2p2/4PB2/P1q2N2/4KPPP/R1Q2B1R b kq - +perft 1 40 +perft 2 1179 +perft 3 44858 +perft 4 1396804 +perft 5 51047210 +perft 6 1664735295 + +id gentest-4392 +epd r1b1kbnr/1p1p2qp/6p1/p3Pp2/2p2B2/P4N2/4KPPP/R1Q2B1R w kq - +perft 1 33 +perft 2 923 +perft 3 31270 +perft 4 902957 +perft 5 31992275 +perft 6 953182883 + +id gentest-4393 +epd r1b1kb1r/1p1p2qp/4Pnp1/p4p2/P1p2B2/5N2/4KPPP/R1Q2B1R b kq - +perft 1 29 +perft 2 1141 +perft 3 34877 +perft 4 1357703 +perft 5 43199042 +perft 6 1679608140 + +id gentest-4394 +epd r1b1kb1r/2Bpq2p/1p2Pnp1/p4p2/P1p5/5N2/4KPPP/R1Q2B1R w kq - +perft 1 39 +perft 2 1163 +perft 3 44177 +perft 4 1403010 +perft 5 53152585 +perft 6 1761646448 + +id gentest-4395 +epd r1b1kb1r/2Bpq2p/1p2P1p1/p4p2/P1p1n3/5N2/2Q1KPPP/R4B1R b kq - +perft 1 36 +perft 2 1368 +perft 3 49282 +perft 4 1852766 +perft 5 67708654 +perft 6 2532058306 + +id gentest-4396 +epd r1b1kb1r/2Bp3p/1p2P1p1/p4pq1/P1p5/5Nn1/Q3KPPP/R4B1R w kq - +perft 1 5 +perft 2 179 +perft 3 5706 +perft 4 195394 +perft 5 6612528 +perft 6 226353468 + +id gentest-4397 +epd r1b2b1r/2Bpk2p/1p2P1p1/p4pq1/P1p5/6P1/Q3KPP1/R3NB1R b - - +perft 1 29 +perft 2 811 +perft 3 22548 +perft 4 693768 +perft 5 20264197 +perft 6 662605205 + +id gentest-4398 +epd r1b2b1r/2Bpk2p/1p2P1p1/p4p2/P4q2/2p3P1/Q3KPPR/R3NB2 w - - +perft 1 32 +perft 2 987 +perft 3 27436 +perft 4 837281 +perft 5 25533543 +perft 6 784800774 + +id gentest-4399 +epd 2b2b1r/3pk2p/rp2P1p1/p3Bp2/P4q2/2p3PR/Q3KPP1/R3NB2 b - - +perft 1 32 +perft 2 860 +perft 3 24940 +perft 4 756153 +perft 5 22414551 +perft 6 727939876 + +id gentest-4400 +epd 2b2b1r/3pk2p/r3P1p1/pp2Bp2/P1q5/2p3PR/Q4PP1/R2KNB2 w - - +perft 1 38 +perft 2 1335 +perft 3 43908 +perft 4 1483880 +perft 5 51464605 +perft 6 1725042339 + +id gentest-4401 +epd 2b2b1r/4k2p/r3P1p1/pp1p1p2/P1q2B2/Q1p3PR/5PP1/R2KNB2 b - - +perft 1 8 +perft 2 303 +perft 3 9395 +perft 4 319581 +perft 5 10514558 +perft 6 367077817 + +id gentest-4402 +epd 2b2b1r/6kp/r3P1p1/pp1p1p2/PQq2B2/2p3PR/5PP1/R2KNB2 w - - +perft 1 43 +perft 2 1307 +perft 3 48186 +perft 4 1533072 +perft 5 56910754 +perft 6 1865733169 + +id gentest-4403 +epd r1b2b1r/6kp/4P1p1/pp1p1p2/PQq5/2p3PR/R2B1PP1/3KNB2 b - - +perft 1 37 +perft 2 1347 +perft 3 43965 +perft 4 1615658 +perft 5 54108903 +perft 6 2009912024 + +id gentest-4404 +epd r1b4r/6kp/4P1p1/pp1p1p1R/Pb6/2p3P1/R2B1PP1/3KNq2 w - - +perft 1 25 +perft 2 772 +perft 3 17931 +perft 4 591238 +perft 5 14012037 +perft 6 481367632 + +id gentest-4405 +epd r1b4R/8/4Pkp1/pp1p1p2/Pb6/2p3P1/R2B1PP1/3KNq2 b - - +perft 1 30 +perft 2 791 +perft 3 23173 +perft 4 592183 +perft 5 18068757 +perft 6 460682143 + +id gentest-4406 +epd r6R/1b6/4Pkp1/pp1p1p2/Pbq5/2p3P1/3B1PP1/R2KN3 w - - +perft 1 34 +perft 2 1238 +perft 3 34631 +perft 4 1220071 +perft 5 32972568 +perft 6 1141421638 + +id gentest-4407 +epd rR6/8/2b1Pkp1/pp1p1p2/Pbq2P2/2p3P1/3B2P1/R2KN3 b - - +perft 1 28 +perft 2 603 +perft 3 18085 +perft 4 389429 +perft 5 12332308 +perft 6 272223122 + +id gentest-4408 +epd 1R6/r3P3/2b2kp1/pp1p1p2/Pbq2P2/6P1/2pB2P1/R2KN3 w - - +perft 1 2 +perft 2 67 +perft 3 1748 +perft 4 55044 +perft 5 1395976 +perft 6 44520981 + +id gentest-4409 +epd 1R2Q3/r7/2b2kp1/pp1p1p2/Pb3P2/1q4P1/2pB2P1/R1K1N3 b - - +perft 1 35 +perft 2 945 +perft 3 23525 +perft 4 669484 +perft 5 17581567 +perft 6 519703742 + +id gentest-4410 +epd 1R6/r3k3/2Q3p1/pp1p1p2/Pb3P2/5qP1/2pB2P1/R1K1N3 w - - +perft 1 42 +perft 2 921 +perft 3 31426 +perft 4 719478 +perft 5 24263455 +perft 6 586494139 + +id gentest-4411 +epd 1R6/r2k4/Q5p1/pp1p1p2/Pb3P2/4BqP1/2p3P1/R1K1N3 b - - +perft 1 28 +perft 2 909 +perft 3 21084 +perft 4 679560 +perft 5 16431398 +perft 6 532808108 + +id gentest-4412 +epd 1R6/r3k3/Q5p1/pp1p1p2/P4P2/4BqP1/2K3P1/R3b3 w - - +perft 1 43 +perft 2 979 +perft 3 32625 +perft 4 761246 +perft 5 25442814 +perft 6 609755797 + +id gentest-4413 +epd 1R6/Q4k2/6p1/pp1p1p2/P4P2/3KBqP1/6P1/R3b3 b - - +perft 1 2 +perft 2 68 +perft 3 1143 +perft 4 33972 +perft 5 601517 +perft 6 19615250 + +id gentest-4414 +epd 1R6/Q7/5kp1/pp1p1p2/P4P2/R2KB1P1/4q1P1/4b3 w - - +perft 1 2 +perft 2 33 +perft 3 999 +perft 4 14103 +perft 5 439860 +perft 6 6615104 + +id gentest-4415 +epd 8/QR6/5kp1/p2p1p2/p4P2/R3B1P1/4K1P1/4b3 b - - +perft 1 8 +perft 2 306 +perft 3 2359 +perft 4 93685 +perft 5 797075 +perft 6 32254323 + +id gentest-4416 +epd 8/Q7/5kp1/p2p1p2/5P2/Rp2B1P1/4KbP1/8 w - - +perft 1 32 +perft 2 254 +perft 3 8122 +perft 4 76951 +perft 5 2463889 +perft 6 26660785 + +id gentest-4417 +epd 8/Q7/5kp1/p2p1p2/R4P2/4B1P1/1p3bP1/5K2 b - - +perft 1 11 +perft 2 282 +perft 3 3036 +perft 4 84328 +perft 5 1023977 +perft 6 29279812 + +id gentest-4418 +epd 8/Q7/1B3k2/p2p1pp1/R4P2/6P1/1p4P1/4bK2 w - - +perft 1 32 +perft 2 401 +perft 3 12819 +perft 4 175491 +perft 5 5262816 +perft 6 77389548 + +id gentest-4419 +epd 8/1Q6/5k2/p2p1pp1/R4P2/4B1P1/6P1/1b2bK2 b - - +perft 1 14 +perft 2 508 +perft 3 6380 +perft 4 221381 +perft 5 3000519 +perft 6 100836615 + +id gentest-4420 +epd 8/4k3/1Q6/p2p1pp1/R3bP2/4B1P1/6P1/4bK2 w - - +perft 1 39 +perft 2 543 +perft 3 18370 +perft 4 274342 +perft 5 9039596 +perft 6 139956109 + +id gentest-4421 +epd 8/1Q2k3/8/p2p1p2/R3bp2/4B1P1/6P1/4bK2 b - - +perft 1 6 +perft 2 246 +perft 3 3310 +perft 4 113730 +perft 5 1595347 +perft 6 52878572 + +id gentest-4422 +epd 5k2/1Q6/8/p2p1p2/R4p2/5bP1/3B2P1/4bK2 w - - +perft 1 40 +perft 2 463 +perft 3 15471 +perft 4 201589 +perft 5 6653824 +perft 6 92787026 + +id gentest-4423 +epd 1Q3k2/8/8/p2p1p2/R4p2/5bP1/3B1bP1/5K2 b - - +perft 1 3 +perft 2 117 +perft 3 1994 +perft 4 67254 +perft 5 1134471 +perft 6 37299089 + +id gentest-4424 +epd 1Q6/4k3/8/3p1p2/p4p2/5bP1/3B1bP1/R4K2 w - - +perft 1 37 +perft 2 591 +perft 3 19243 +perft 4 312435 +perft 5 9974634 +perft 6 162618911 + +id gentest-4425 +epd 8/4k3/8/3p1p2/p4Qb1/6P1/3B1bP1/3R1K2 b - - +perft 1 22 +perft 2 572 +perft 3 9059 +perft 4 271545 +perft 5 4331978 +perft 6 133168347 + +id gentest-4426 +epd 5k2/8/8/5p2/p2p1Qb1/6P1/5bP1/2BR1K2 w - - +perft 1 23 +perft 2 288 +perft 3 7509 +perft 4 99556 +perft 5 2819629 +perft 6 39339107 + +id gentest-4427 +epd Q7/6k1/8/5p2/p2p2b1/6P1/5bP1/2BR1K2 b - - +perft 1 16 +perft 2 423 +perft 3 6245 +perft 4 181289 +perft 5 2777792 +perft 6 83960599 + +id gentest-4428 +epd Q7/6k1/8/5p2/3p2b1/p3b1P1/6P1/2BRK3 w - - +perft 1 25 +perft 2 420 +perft 3 10758 +perft 4 179271 +perft 5 4991788 +perft 6 83306291 + +id gentest-4429 +epd 6Q1/6k1/8/8/3p1pb1/p3b1P1/6P1/2BRK3 b - - +perft 1 3 +perft 2 63 +perft 3 996 +perft 4 24005 +perft 5 388621 +perft 6 10169898 + +id gentest-4430 +epd 6Q1/3b4/5k2/8/3p1p2/p2Rb1P1/6P1/2B1K3 w - - +perft 1 34 +perft 2 540 +perft 3 16555 +perft 4 264675 +perft 5 8098907 +perft 6 131414798 + +id gentest-4431 +epd 8/3b4/4k3/8/3p1p2/p3b1P1/6P1/2BRK3 b - - +perft 1 20 +perft 2 201 +perft 3 4214 +perft 4 57148 +perft 5 1188850 +perft 6 18196545 + +id gentest-4432 +epd 8/3b4/4k3/8/3p1b2/B5p1/6P1/3RK3 w - - +perft 1 15 +perft 2 298 +perft 3 4707 +perft 4 93821 +perft 5 1608904 +perft 6 32078229 + +id gentest-4433 +epd 8/3b4/2R2k2/8/3p1b2/B5p1/6P1/4K3 b - - +perft 1 8 +perft 2 170 +perft 3 3290 +perft 4 63629 +perft 5 1264831 +perft 6 24304345 + +id gentest-4434 +epd 8/8/2Rb1k2/8/3p4/6pb/1B4P1/4K3 w - - +perft 1 20 +perft 2 318 +perft 3 6228 +perft 4 118065 +perft 5 2305345 +perft 6 43953302 + +id gentest-4435 +epd 8/5k2/2Rb4/8/3p4/6pb/1B4P1/2K5 b - - +perft 1 24 +perft 2 435 +perft 3 8365 +perft 4 159316 +perft 5 3021967 +perft 6 59071819 + +id gentest-4436 +epd 6k1/8/1R1b4/8/3p2b1/6p1/1B4P1/2K5 w - - +perft 1 15 +perft 2 327 +perft 3 5913 +perft 4 119075 +perft 5 2291731 +perft 6 43958753 + +id gentest-4437 +epd 6k1/8/1R6/4b3/3p2b1/B5p1/6P1/1K6 b - - +perft 1 21 +perft 2 489 +perft 3 9147 +perft 4 195748 +perft 5 3575826 +perft 6 75107901 + +id gentest-4438 +epd 6k1/7b/1R6/4b3/3p4/B5p1/1K4P1/8 w - - +perft 1 21 +perft 2 323 +perft 3 6359 +perft 4 105240 +perft 5 2132838 +perft 6 36768208 + +id gentest-4439 +epd 6k1/8/3R4/4b3/3p4/B5p1/2b3P1/2K5 b - - +perft 1 20 +perft 2 313 +perft 3 5230 +perft 4 96522 +perft 5 1638895 +perft 6 31509498 + +id gentest-4440 +epd 5k1b/8/3R4/8/3p4/B5p1/1Kb3P1/8 w - - +perft 1 17 +perft 2 135 +perft 3 2535 +perft 4 28522 +perft 5 564876 +perft 6 7612156 + +id gentest-4441 +epd 6kb/8/5R2/8/3p4/B5p1/K1b3P1/8 b - - +perft 1 14 +perft 2 272 +perft 3 3630 +perft 4 70473 +perft 5 1010901 +perft 6 19981895 + +id gentest-4442 +epd 6k1/5R2/5b2/5b2/3p4/B5p1/K5P1/8 w - - +perft 1 19 +perft 2 348 +perft 3 6487 +perft 4 110572 +perft 5 2199544 +perft 6 36801159 + +id gentest-4443 +epd 6k1/7R/8/2B2b2/3p3b/6p1/K5P1/8 b - - +perft 1 17 +perft 2 344 +perft 3 5354 +perft 4 109291 +perft 5 1781999 +perft 6 36616537 + +id gentest-4444 +epd 6k1/1R6/8/2B5/3p3b/5bp1/K5P1/8 w - - +perft 1 28 +perft 2 423 +perft 3 9805 +perft 4 159503 +perft 5 3557712 +perft 6 60486602 + +id gentest-4445 +epd 6k1/1b2B3/8/8/3p3b/6p1/K5P1/8 b - - +perft 1 16 +perft 2 201 +perft 3 3454 +perft 4 41414 +perft 5 746655 +perft 6 8875306 + +id gentest-4446 +epd 5Bk1/8/b7/8/7b/3p2p1/K5P1/8 w - - +perft 1 12 +perft 2 153 +perft 3 1758 +perft 4 27616 +perft 5 324700 +perft 6 5700893 + +id gentest-4447 +epd 3b2k1/8/b7/8/8/B2p2p1/6P1/K7 b - - +perft 1 16 +perft 2 151 +perft 3 2599 +perft 4 27076 +perft 5 497637 +perft 6 5516097 + +id gentest-4448 +epd 6k1/8/b7/6b1/8/6p1/3p2P1/K1B5 w - - +perft 1 6 +perft 2 144 +perft 3 1137 +perft 4 27500 +perft 5 243214 +perft 6 5862824 + +id gentest-4449 +epd 6k1/8/8/6b1/8/6p1/2Kpb1P1/2B5 b - - +perft 1 29 +perft 2 185 +perft 3 4888 +perft 4 40871 +perft 5 1052414 +perft 6 9924699 + +id gentest-4450 +epd 3b2k1/8/8/8/8/2K3p1/3p2P1/2B2b2 w - - +perft 1 9 +perft 2 209 +perft 3 1712 +perft 4 40246 +perft 5 374287 +perft 6 8849397 + +id gentest-4451 +epd 3b2k1/8/8/8/8/2K3p1/3pb1P1/2B5 b - - +perft 1 29 +perft 2 236 +perft 3 6318 +perft 4 52116 +perft 5 1357691 +perft 6 12926059 + +id gentest-4452 +epd 6k1/4b3/8/8/8/B1K3p1/4b1P1/3n4 w - - +perft 1 4 +perft 2 104 +perft 3 958 +perft 4 23043 +perft 5 238225 +perft 6 5582812 + +id gentest-4453 +epd 6k1/4b3/8/7b/4K3/B5p1/6P1/3n4 b - - +perft 1 24 +perft 2 248 +perft 3 5631 +perft 4 60414 +perft 5 1361537 +perft 6 15117256 + +id gentest-4454 +epd 5bk1/5b2/8/8/5K2/B5p1/6P1/3n4 w - - +perft 1 14 +perft 2 289 +perft 3 3477 +perft 4 75720 +perft 5 899478 +perft 6 20017087 + +id gentest-4455 +epd 6k1/5b2/8/2b5/3B1K2/6p1/6P1/3n4 b - - +perft 1 22 +perft 2 367 +perft 3 8755 +perft 4 117707 +perft 5 2826622 +perft 6 35714349 + +id gentest-4456 +epd 8/B4bk1/8/8/1b3K2/6p1/6P1/3n4 w - - +perft 1 14 +perft 2 373 +perft 3 4557 +perft 4 116799 +perft 5 1396590 +perft 6 34845553 + +id gentest-4457 +epd 8/B4bk1/8/8/1b3K2/4n1p1/6P1/8 b - - +perft 1 33 +perft 2 347 +perft 3 9512 +perft 4 102094 +perft 5 2626193 +perft 6 29934125 + +id gentest-4458 +epd 7k/B7/6b1/8/1b2K3/4n1p1/6P1/8 w - - +perft 1 5 +perft 2 137 +perft 3 1117 +perft 4 26682 +perft 5 265340 +perft 6 6081477 + +id gentest-4459 +epd 8/7k/6b1/8/1b1B4/4nKp1/6P1/8 b - - +perft 1 27 +perft 2 391 +perft 3 9832 +perft 4 121044 +perft 5 2980538 +perft 6 35815729 + +id gentest-4460 +epd 6k1/8/6b1/8/1b1B4/6p1/6K1/8 w - - +perft 1 19 +perft 2 412 +perft 3 5975 +perft 4 126170 +perft 5 1626778 +perft 6 34075016 + +id gentest-4461 +epd 6k1/B7/8/8/1b6/6K1/8/1b6 b - - +perft 1 21 +perft 2 287 +perft 3 6044 +perft 4 79493 +perft 5 1673552 +perft 6 22138986 + +id gentest-4462 +epd 6k1/B7/3b4/8/5K2/8/8/1b6 w - - +perft 1 4 +perft 2 92 +perft 3 1002 +perft 4 21777 +perft 5 260009 +perft 6 5520152 + +id gentest-4463 +epd 6k1/8/8/4b3/8/5K2/5B2/1b6 b - - +perft 1 25 +perft 2 325 +perft 3 7331 +perft 4 95674 +perft 5 2081320 +perft 6 27178913 + +id gentest-4464 +epd 6k1/8/8/8/1b5B/5K2/8/1b6 w - - +perft 1 14 +perft 2 290 +perft 3 3770 +perft 4 77483 +perft 5 1001196 +perft 6 20590454 + +id gentest-4465 +epd 6k1/8/3b4/6K1/7B/8/8/1b6 b - - +perft 1 23 +perft 2 153 +perft 3 3291 +perft 4 33957 +perft 5 707722 +perft 6 7707387 + +id gentest-4466 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-4467 +epd rnbqkbnr/pppppp1p/6p1/8/3P2P1/8/PPP1PP1P/RNBQKBNR b KQkq - +perft 1 21 +perft 2 609 +perft 3 14069 +perft 4 418862 +perft 5 10554006 +perft 6 324970633 + +id gentest-4468 +epd r1bqkbnr/pp1ppp1p/n1p3p1/8/3P2P1/8/PPPQPP1P/RNB1KBNR w KQkq - +perft 1 30 +perft 2 716 +perft 3 22956 +perft 4 595259 +perft 5 19894900 +perft 6 552929252 + +id gentest-4469 +epd 1rbqkbnr/pp1ppp1p/n1p3p1/8/3P1PP1/P7/1PPQP2P/RNB1KBNR b KQk - +perft 1 23 +perft 2 598 +perft 3 15419 +perft 4 435984 +perft 5 12129296 +perft 6 366042959 + +id gentest-4470 +epd 1rbqkbnr/pp1ppp1p/n1p3p1/8/3PPPP1/P7/1PPQ3P/RNB1KBNR w KQk - +perft 1 35 +perft 2 801 +perft 3 27711 +perft 4 705986 +perft 5 24523200 +perft 6 674315687 + +id gentest-4471 +epd 1rb1kbnr/pp1ppp1p/nqp3p1/4P3/3P1PP1/P4N2/1PPQ3P/RNB1KB1R b KQk - +perft 1 27 +perft 2 961 +perft 3 27749 +perft 4 975626 +perft 5 29296348 +perft 6 1036229498 + +id gentest-4472 +epd r1b1kbnr/pp1ppp1p/1qp3p1/2n1P3/3P1PP1/P4N1B/1PPQ3P/RNB1K2R w KQk - +perft 1 33 +perft 2 978 +perft 3 31632 +perft 4 970176 +perft 5 31872285 +perft 6 1003910551 + +id gentest-4473 +epd r1b1kb1r/pp1ppp1p/1qp3pn/2nPP3/5PP1/P4N1B/1PPQ3P/RNB2K1R b k - +perft 1 29 +perft 2 941 +perft 3 29782 +perft 4 968169 +perft 5 31886498 +perft 6 1050179426 + +id gentest-4474 +epd 1rb1kb1r/pp1ppp1p/2p3pn/q1nPP3/5PP1/P6B/1PPQ3P/RNB1NK1R w k - +perft 1 31 +perft 2 981 +perft 3 29802 +perft 4 968066 +perft 5 30246986 +perft 6 1002430565 + +id gentest-4475 +epd 1rb1kb1r/pp1pp2p/2p2Ppn/q1nP4/5PP1/P1P4B/1P1Q3P/RNB1NK1R b k - +perft 1 33 +perft 2 907 +perft 3 29965 +perft 4 891707 +perft 5 30025292 +perft 6 939070516 + +id gentest-4476 +epd r1b1kb1r/pp1pp2p/5Ppn/q1np4/5PP1/P1P4B/1PNQ3P/RNB2K1R w k - +perft 1 29 +perft 2 917 +perft 3 27835 +perft 4 897714 +perft 5 28685749 +perft 6 944609500 + +id gentest-4477 +epd r1b1kb1r/pp1ppP1p/6pn/q2p4/n4PP1/P1P4B/1PNQK2P/RNB4R b k - +perft 1 3 +perft 2 87 +perft 3 2571 +perft 4 73516 +perft 5 2300762 +perft 6 70205191 + +id gentest-4478 +epd r1bk1b1r/1p1ppP1p/p5pn/q2p4/n4PP1/P1PK3B/1PNQ3P/RNB4R w - - +perft 1 25 +perft 2 648 +perft 3 16151 +perft 4 454423 +perft 5 12477010 +perft 6 371732932 + +id gentest-4479 +epd r1bk1b1r/1p1ppP1p/p5p1/q2p2P1/n4Pn1/P1PK3B/1PNQ3P/RNB3R1 b - - +perft 1 30 +perft 2 704 +perft 3 21736 +perft 4 574965 +perft 5 18110356 +perft 6 526425418 + +id gentest-4480 +epd r1bk1b1r/1pq1pP1p/p2p2p1/3p2P1/n4Pn1/P1PKQ2B/1PN4P/RNB3R1 w - - +perft 1 37 +perft 2 1237 +perft 3 38119 +perft 4 1250883 +perft 5 39947848 +perft 6 1310060533 + +id gentest-4481 +epd r1bk1b1r/1p2pP1p/pq1p2p1/3p2P1/nP3PR1/P1PKQ2B/2N4P/RNB5 b - - +perft 1 29 +perft 2 757 +perft 3 21648 +perft 4 609422 +perft 5 18102246 +perft 6 540348918 + +id gentest-4482 +epd r2k1b1r/1p2pP1p/p2pQ1p1/2qp2P1/nP3PR1/P1PK3B/2N4P/RNB5 w - - +perft 1 33 +perft 2 895 +perft 3 25656 +perft 4 695622 +perft 5 21119626 +perft 6 583051267 + +id gentest-4483 +epd r2k1b1r/1p2pP1p/p5p1/2qpp1P1/nP3PR1/P1P4B/2NK3P/RNB5 b - - +perft 1 36 +perft 2 655 +perft 3 21628 +perft 4 471061 +perft 5 15074319 +perft 6 363836025 + +id gentest-4484 +epd r2k1b1r/1p2pP1p/p2q2p1/4p1P1/nP1p1PR1/P1P4B/3K3P/RNB1N3 w - - +perft 1 21 +perft 2 682 +perft 3 15682 +perft 4 504221 +perft 5 12482398 +perft 6 401531186 + +id gentest-4485 +epd r2k1b1r/4pP1p/p2q2p1/1p2p1P1/nP1p1P2/P1P3RB/3K2NP/RNB5 b - - +perft 1 29 +perft 2 655 +perft 3 19641 +perft 4 486485 +perft 5 14916880 +perft 6 393395488 + +id gentest-4486 +epd r2k1b1r/4pP1p/pn1q2p1/1p2p1P1/1PP2P2/P2p2RB/3K2NP/RNB5 w - - +perft 1 24 +perft 2 697 +perft 3 17339 +perft 4 512043 +perft 5 13636590 +perft 6 411450423 + +id gentest-4487 +epd r2k3r/4pP1p/pn1q2pb/1p2p1P1/1PP2PBP/P2p2R1/3K2N1/RNB5 b - - +perft 1 30 +perft 2 923 +perft 3 27062 +perft 4 826996 +perft 5 25011217 +perft 6 767553363 + +id gentest-4488 +epd r2k1B1r/4p2p/1n4pb/pp2p1P1/1PPq1PBP/P2p2R1/3K2N1/RNB5 w - - +perft 1 31 +perft 2 1050 +perft 3 27930 +perft 4 955651 +perft 5 26245702 +perft 6 904010458 + +id gentest-4489 +epd r4B1r/2k1p2p/1n4pb/pP2p1P1/1P1q1PBP/P2p2R1/6N1/RNB1K3 b - - +perft 1 42 +perft 2 1146 +perft 3 46069 +perft 4 1298309 +perft 5 50413572 +perft 6 1460096097 + +id gentest-4490 +epd r6r/2k1p1Bp/1n4pb/pP2p1P1/1P3PBP/P2p2R1/6q1/RNB1K3 w - - +perft 1 32 +perft 2 1447 +perft 3 39280 +perft 4 1646903 +perft 5 46134370 +perft 6 1836869724 + +id gentest-4491 +epd r6r/2k1p1Bp/1n4pb/pP2pBP1/1P3P1P/P2p2R1/5K2/RNB5 b - - +perft 1 32 +perft 2 1175 +perft 3 33959 +perft 4 1219673 +perft 5 34243526 +perft 6 1213498050 + +id gentest-4492 +epd r1n2B1r/2k4p/4p1pb/pP2pBP1/1P3P1P/P2p2R1/5K2/RNB5 w - - +perft 1 36 +perft 2 806 +perft 3 28212 +perft 4 660294 +perft 5 22715899 +perft 6 552383697 + +id gentest-4493 +epd 2n2B1r/2k4p/r3p1pb/pP2pBP1/1P3P1P/P1Np4/5K2/R1B3R1 b - - +perft 1 26 +perft 2 1080 +perft 3 26737 +perft 4 1054736 +perft 5 26641208 +perft 6 1013366403 + +id gentest-4494 +epd 5B1r/2k1n2p/2r1p1pb/pP2pBP1/1P3P1P/P2p4/N4K2/R1B3R1 w - - +perft 1 34 +perft 2 1003 +perft 3 32881 +perft 4 937008 +perft 5 30690059 +perft 6 863896985 + +id gentest-4495 +epd 5B1r/2k1n2p/1r2p1pb/p3pBP1/1P3P1P/P2p2K1/N7/R1B3R1 b - - +perft 1 31 +perft 2 895 +perft 3 26286 +perft 4 800306 +perft 5 23028896 +perft 6 726579947 + +id gentest-4496 +epd 2k2B1r/4n2p/1r2p2P/p3pBp1/1P3P1P/P2p2K1/N7/R1B3R1 w - - +perft 1 32 +perft 2 848 +perft 3 25730 +perft 4 676096 +perft 5 21527913 +perft 6 564974667 + +id gentest-4497 +epd 2k2B1r/7p/1r2p2P/p2npBp1/1P3P1P/P2p3K/N7/R1B1R3 b - - +perft 1 30 +perft 2 933 +perft 3 26838 +perft 4 855983 +perft 5 24338294 +perft 6 794728858 + +id gentest-4498 +epd 1k3B1r/7p/1r2p2P/p3pBp1/1n3P1P/P1Np3K/8/R1B1R3 w - - +perft 1 42 +perft 2 1009 +perft 3 39614 +perft 4 993324 +perft 5 38368028 +perft 6 995098742 + +id gentest-4499 +epd 1k3B1r/7p/1r2p2P/R4Bp1/1P2pP1P/2Np3K/8/2B1R3 b - - +perft 1 18 +perft 2 785 +perft 3 14877 +perft 4 629622 +perft 5 12694456 +perft 6 524458131 + +id gentest-4500 +epd 5B1r/2k4p/4p2P/R5p1/1r2BP1P/2Np3K/8/2B1R3 w - - +perft 1 54 +perft 2 1162 +perft 3 58071 +perft 4 1233007 +perft 5 59195193 +perft 6 1281733892 + +id gentest-4501 +epd 5B1r/3k3p/4p2P/2RB2p1/1r3P1P/2Np3K/8/2B1R3 b - - +perft 1 22 +perft 2 982 +perft 3 19695 +perft 4 855778 +perft 5 17573720 +perft 6 751781124 + +id gentest-4502 +epd 5B1r/3k3p/7P/2Rp2p1/3rRP1P/2Np3K/8/2B5 w - - +perft 1 37 +perft 2 429 +perft 3 14894 +perft 4 234954 +perft 5 8238306 +perft 6 153079298 + +id gentest-4503 +epd 5Br1/3k3p/7P/2RpR1p1/3r1P1P/2Np4/6K1/2B5 b - - +perft 1 14 +perft 2 531 +perft 3 9019 +perft 4 339812 +perft 5 6534927 +perft 6 239935318 + +id gentest-4504 +epd 5Br1/3k3p/7P/2R1R1pP/2rp1P2/2Np4/6K1/2B5 w - - +perft 1 42 +perft 2 546 +perft 3 20490 +perft 4 335448 +perft 5 12321116 +perft 6 231896963 + +id gentest-4505 +epd 5Br1/3k3p/7P/2R4P/2rp1Pp1/3p4/N3R1K1/2B5 b - - +perft 1 15 +perft 2 526 +perft 3 9167 +perft 4 305168 +perft 5 6039275 +perft 6 195563634 + +id gentest-4506 +epd 3k1Br1/7p/7P/2R4P/2rp1Pp1/8/N1Rp2K1/2B5 w - - +perft 1 29 +perft 2 575 +perft 3 17181 +perft 4 366528 +perft 5 10875998 +perft 6 246636754 + +id gentest-4507 +epd 3k1B2/7p/7P/6rP/2Rp1Pp1/8/N1Rp2K1/2B5 b - - +perft 1 22 +perft 2 648 +perft 3 12406 +perft 4 360700 +perft 5 6898343 +perft 6 202514597 + +id gentest-4508 +epd 3k1B2/7p/7P/7r/5Pp1/2Rp4/N1Rp2K1/2B5 w - - +perft 1 25 +perft 2 500 +perft 3 13296 +perft 4 254481 +perft 5 7088686 +perft 6 134694111 + +id gentest-4509 +epd 5B2/3k3p/7P/7r/5Pp1/2Rp4/N5K1/2BR4 b - - +perft 1 17 +perft 2 511 +perft 3 7646 +perft 4 237876 +perft 5 3554022 +perft 6 113946334 + +id gentest-4510 +epd 5B2/3k3p/7P/8/5Pp1/2Rp2Kr/N7/2BR4 w - - +perft 1 3 +perft 2 38 +perft 3 996 +perft 4 12546 +perft 5 353751 +perft 6 4825568 + +id gentest-4511 +epd 5B2/7p/4k2P/8/5Pp1/B1Rp3r/N5K1/3R4 b - - +perft 1 15 +perft 2 473 +perft 3 6250 +perft 4 198007 +perft 5 2671233 +perft 6 85859541 + +id gentest-4512 +epd 8/6Bp/7P/5k2/5P2/B1Rp2pr/N5K1/3R4 w - - +perft 1 36 +perft 2 375 +perft 3 12704 +perft 4 142515 +perft 5 4896219 +perft 6 61211771 + +id gentest-4513 +epd 8/6Bp/7P/8/1N3Pk1/BR1p2pr/6K1/3R4 b - - +perft 1 10 +perft 2 296 +perft 3 3178 +perft 4 98239 +perft 5 1224067 +perft 6 40072698 + +id gentest-4514 +epd 8/6Bp/8/8/1N3Pk1/BR1R2p1/6Kr/8 w - - +perft 1 2 +perft 2 40 +perft 3 1157 +perft 4 17927 +perft 5 552360 +perft 6 8139633 + +id gentest-4515 +epd 8/7p/8/7k/1N3P2/BR1R2p1/7r/B5K1 b - - +perft 1 16 +perft 2 425 +perft 3 5930 +perft 4 174064 +perft 5 2404582 +perft 6 76277431 + +id gentest-4516 +epd 8/7p/8/3N4/5P1k/BR1R2pr/8/B5K1 w - - +perft 1 39 +perft 2 259 +perft 3 8861 +perft 4 76078 +perft 5 2660489 +perft 6 29319546 + +id gentest-4517 +epd 8/7p/8/3N4/1R3P1k/B2R2p1/6K1/B6r b - - +perft 1 13 +perft 2 400 +perft 3 4997 +perft 4 162878 +perft 5 2058003 +perft 6 70472461 + +id gentest-4518 +epd 8/8/8/3N3p/1R3P1k/B5p1/6K1/r2R4 w - - +perft 1 34 +perft 2 217 +perft 3 6000 +perft 4 61409 +perft 5 1799469 +perft 6 20886221 + +id gentest-4519 +epd 1R6/8/8/3N3p/5P1k/B5p1/3R2K1/3r4 b - - +perft 1 9 +perft 2 272 +perft 3 3156 +perft 4 102102 +perft 5 1196126 +perft 6 39334465 + +id gentest-4520 +epd 8/8/8/3N4/5Pkp/BR4p1/3R2K1/3r4 w - - +perft 1 35 +perft 2 372 +perft 3 9773 +perft 4 124778 +perft 5 3556234 +perft 6 47377424 + +id gentest-4521 +epd 8/8/8/2BN4/5Pkp/1R4p1/5RK1/4r3 b - - +perft 1 18 +perft 2 608 +perft 3 9029 +perft 4 288387 +perft 5 4236547 +perft 6 133632670 + +id gentest-4522 +epd 8/8/8/2BN4/5Pkp/R1r3p1/5RK1/8 w - - +perft 1 35 +perft 2 433 +perft 3 13985 +perft 4 191473 +perft 5 5987920 +perft 6 86580796 + +id gentest-4523 +epd 8/8/1B6/3N4/5Pk1/R1r3pp/5R2/5K2 b - - +perft 1 18 +perft 2 545 +perft 3 8798 +perft 4 263186 +perft 5 4257560 +perft 6 127954092 + +id gentest-4524 +epd 8/8/1B3N2/5k2/5P2/R2r2pp/5R2/5K2 w - - +perft 1 36 +perft 2 613 +perft 3 18703 +perft 4 317823 +perft 5 9538390 +perft 6 160765823 + +id gentest-4525 +epd R7/8/1B3N2/5k2/5P2/3r3p/4KRp1/8 b - - +perft 1 21 +perft 2 625 +perft 3 13040 +perft 4 372628 +perft 5 7831809 +perft 6 223788051 + +id gentest-4526 +epd 7R/8/1B3N2/5k2/5P2/r6p/4KR2/6b1 w - - +perft 1 35 +perft 2 660 +perft 3 20605 +perft 4 379941 +perft 5 11872924 +perft 6 221976812 + +id gentest-4527 +epd 7R/8/8/2BN4/4kP2/r6p/4KR2/6b1 b - - +perft 1 18 +perft 2 585 +perft 3 9479 +perft 4 304989 +perft 5 5167652 +perft 6 165190524 + +id gentest-4528 +epd 7R/r7/8/2B5/1N2kP2/7p/4KR2/6b1 w - - +perft 1 34 +perft 2 594 +perft 3 19356 +perft 4 330138 +perft 5 10827227 +perft 6 193437143 + +id gentest-4529 +epd 3R4/4r3/1B6/8/1N2kP2/7p/4KR2/6b1 b - - +perft 1 14 +perft 2 448 +perft 3 6748 +perft 4 218327 +perft 5 3579119 +perft 6 115245743 + +id gentest-4530 +epd 3R4/6r1/1B6/8/1N2kP2/7p/4K2b/5R2 w - - +perft 1 42 +perft 2 729 +perft 3 27718 +perft 4 454224 +perft 5 16690662 +perft 6 286315684 + +id gentest-4531 +epd 8/6r1/8/5k2/1N1B1P2/7p/4K2b/3R1R2 b - - +perft 1 21 +perft 2 680 +perft 3 12581 +perft 4 413321 +perft 5 7611043 +perft 6 248511584 + +id gentest-4532 +epd 8/2r5/8/5k2/3B1P2/3N3p/4K3/3R1Rb1 w - - +perft 1 32 +perft 2 736 +perft 3 20404 +perft 4 444689 +perft 5 12664718 +perft 6 268881346 + +id gentest-4533 +epd 8/3r4/8/5k2/3B1P2/3N3p/8/3R1KR1 b - - +perft 1 14 +perft 2 477 +perft 3 7276 +perft 4 238607 +perft 5 3754056 +perft 6 123548155 + +id gentest-4534 +epd 4r1R1/8/8/5k2/3B1P2/3N3p/8/3R1K2 w - - +perft 1 37 +perft 2 567 +perft 3 19917 +perft 4 292521 +perft 5 10238729 +perft 6 155064718 + +id gentest-4535 +epd 4rR2/8/4k3/8/3B1P2/7p/8/2NR1K2 b - - +perft 1 11 +perft 2 343 +perft 3 4220 +perft 4 135505 +perft 5 1799467 +perft 6 59247999 + +id gentest-4536 +epd 5R2/3k4/8/5P2/3B4/4r2p/8/2NR1K2 w - - +perft 1 30 +perft 2 347 +perft 3 10613 +perft 4 133082 +perft 5 4237458 +perft 6 57436487 + +id gentest-4537 +epd 5R2/4k3/1B6/5P2/8/4r2p/N7/3R1K2 b - - +perft 1 13 +perft 2 384 +perft 3 4739 +perft 4 142200 +perft 5 1883846 +perft 6 57025153 + +id gentest-4538 +epd 5R2/4k3/2r5/B4P2/8/7p/N7/3R1K2 w - - +perft 1 35 +perft 2 468 +perft 3 15336 +perft 4 196787 +perft 5 6234860 +perft 6 83780388 + +id gentest-4539 +epd 4k3/5R2/2rR4/B4P2/8/7p/N7/5K2 b - - +perft 1 12 +perft 2 386 +perft 3 4813 +perft 4 144838 +perft 5 1887406 +perft 6 55407339 + +id gentest-4540 +epd 8/5k2/4r3/B4P2/8/7p/N2R4/5K2 w - - +perft 1 25 +perft 2 477 +perft 3 11729 +perft 4 199164 +perft 5 4840593 +perft 6 80330662 + +id gentest-4541 +epd 8/4rk2/8/5P2/1B6/7p/N5R1/5K2 b - - +perft 1 16 +perft 2 384 +perft 3 5757 +perft 4 136292 +perft 5 2164506 +perft 6 51230924 + +id gentest-4542 +epd 8/5k2/3r4/5PR1/1B6/7p/N7/5K2 w - - +perft 1 22 +perft 2 383 +perft 3 8976 +perft 4 133520 +perft 5 3173095 +perft 6 49299874 + +id gentest-4543 +epd 6R1/5k2/8/3r1P2/8/7p/N7/4BK2 b - - +perft 1 16 +perft 2 392 +perft 3 6148 +perft 4 145038 +perft 5 2313682 +perft 6 54314448 + +id gentest-4544 +epd 4k3/8/8/3r1P2/8/8/N6p/4BK2 w - - +perft 1 14 +perft 2 289 +perft 3 3838 +perft 4 77639 +perft 5 1099382 +perft 6 22699258 + +id gentest-4545 +epd 4k3/8/8/3r1P2/8/2N5/5K2/4B2r b - - +perft 1 27 +perft 2 365 +perft 3 9847 +perft 4 142079 +perft 5 3771057 +perft 6 59231312 + +id gentest-4546 +epd 4k3/8/5P1r/5r2/8/2N5/5K2/4B3 w - - +perft 1 5 +perft 2 125 +perft 3 1759 +perft 4 42589 +perft 5 643318 +perft 6 15887274 + +id gentest-4547 +epd 4k3/8/5P1r/8/5K2/2N5/8/4B3 b - - +perft 1 13 +perft 2 234 +perft 3 3455 +perft 4 60608 +perft 5 918854 +perft 6 16022993 + +id gentest-4548 +epd 3k4/8/5P2/8/5K1r/8/4N3/4B3 w - - +perft 1 7 +perft 2 112 +perft 3 1872 +perft 4 28683 +perft 5 495012 +perft 6 7652986 + +id gentest-4549 +epd 3k4/8/5P2/7r/8/5KN1/8/4B3 b - - +perft 1 18 +perft 2 313 +perft 3 5054 +perft 4 90079 +perft 5 1449189 +perft 6 26174614 + +id gentest-4550 +epd 3k4/8/5P2/8/2r5/6N1/5K2/4B3 w - - +perft 1 17 +perft 2 286 +perft 3 4683 +perft 4 74825 +perft 5 1298019 +perft 6 20780956 + +id gentest-4551 +epd 3k4/2B5/5P2/8/8/6N1/5K2/8 b - - +perft 1 4 +perft 2 77 +perft 3 350 +perft 4 6296 +perft 5 32811 +perft 6 585932 + +id gentest-4552 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-4553 +epd rnbqkbnr/pppppp1p/6p1/8/8/3P2P1/PPP1PP1P/RNBQKBNR b KQkq - +perft 1 21 +perft 2 586 +perft 3 13623 +perft 4 387170 +perft 5 9861676 +perft 6 287832883 + +id gentest-4554 +epd rnbqkb1r/pppppp1p/5n2/6p1/5B2/3P2P1/PPP1PP1P/RN1QKBNR w KQkq - +perft 1 30 +perft 2 710 +perft 3 21645 +perft 4 547191 +perft 5 16950977 +perft 6 454275243 + +id gentest-4555 +epd rnbqkb1r/pppp1p1p/4pn2/6p1/5B2/NP1P2P1/P1P1PP1P/R2QKBNR b KQkq - +perft 1 30 +perft 2 860 +perft 3 25864 +perft 4 759541 +perft 5 23106494 +perft 6 695537139 + +id gentest-4556 +epd rnbqkb1r/p1pp1p1p/1p2p3/6p1/5Bn1/NP1PP1P1/P1P2P1P/R2QKBNR w KQkq - +perft 1 31 +perft 2 1036 +perft 3 32126 +perft 4 1062847 +perft 5 33824431 +perft 6 1120227365 + +id gentest-4557 +epd rnb1kb1r/p1pp1p1p/1p2pq2/6p1/5Bn1/NPPPP1P1/P4P1P/RQ2KBNR b KQkq - +perft 1 40 +perft 2 1045 +perft 3 41188 +perft 4 1149535 +perft 5 44827444 +perft 6 1314968248 + +id gentest-4558 +epd rnb1kbr1/p1pp1p1p/1p2pq2/6p1/2P2B2/NP1PP1P1/P4n1P/RQ2KBNR w KQq - +perft 1 26 +perft 2 1196 +perft 3 31745 +perft 4 1378427 +perft 5 39089172 +perft 6 1637102977 + +id gentest-4559 +epd rnb2br1/p1ppkp1p/1p2Bq2/6p1/2P2B2/NP1PP1P1/P4n1P/RQ2K1NR b KQ - +perft 1 43 +perft 2 1199 +perft 3 48673 +perft 4 1438385 +perft 5 57555102 +perft 6 1786446011 + +id gentest-4560 +epd rnb2br1/p1ppkp1p/1p2q3/1N4p1/2P2B2/1P1PP1Pn/P6P/RQ2K1NR w KQ - +perft 1 28 +perft 2 1011 +perft 3 29488 +perft 4 1069129 +perft 5 32702855 +perft 6 1196810099 + +id gentest-4561 +epd rnb2br1/p1ppkp1p/1p6/1N1q2p1/2P2BP1/1P1PP2n/P6P/R2QK1NR b KQ - +perft 1 41 +perft 2 1279 +perft 3 48630 +perft 4 1503346 +perft 5 56412502 +perft 6 1764593938 + +id gentest-4562 +epd rnb1kbr1/p1Bp1p1p/1p6/1N1q2p1/2P3P1/1P1PP2n/P6P/R2QK1NR w KQ - +perft 1 33 +perft 2 1261 +perft 3 40746 +perft 4 1538701 +perft 5 49733366 +perft 6 1868827920 + +id gentest-4563 +epd rnb1k1r1/p2p1p1p/1p6/3q2p1/1bP3P1/1PNPP1Bn/P6P/R2QK1NR b KQ - +perft 1 45 +perft 2 1194 +perft 3 50721 +perft 4 1406005 +perft 5 57745344 +perft 6 1678850376 + +id gentest-4564 +epd rnb1k2r/p2p1p1p/1p6/6p1/1bPq2P1/1PNPP1Bn/P2K3P/R2Q2NR w - - +perft 1 29 +perft 2 1162 +perft 3 31989 +perft 4 1259827 +perft 5 36592765 +perft 6 1428827620 + +id gentest-4565 +epd rnb1k2r/p2p1p1p/1p6/6p1/1bP2qP1/1PNPP2n/P2KN2P/R2QB2R b - - +perft 1 42 +perft 2 909 +perft 3 36986 +perft 4 884745 +perft 5 35453372 +perft 6 925696029 + +id gentest-4566 +epd rnb1kr2/p2p1p1p/1p6/2b3p1/2P2qP1/1PNPP2n/P2KN2P/2RQB2R w - - +perft 1 24 +perft 2 924 +perft 3 23270 +perft 4 878659 +perft 5 23473705 +perft 6 884671799 + +id gentest-4567 +epd rnb1kr2/p2p1p1p/1p6/6p1/1bP2qP1/1PNPP2n/P1RKN2P/3QB1R1 b - - +perft 1 40 +perft 2 858 +perft 3 33498 +perft 4 777247 +perft 5 30051413 +perft 6 756878443 + +id gentest-4568 +epd rnb1kr2/p2p1p2/1p6/2b3pp/2P2qP1/1PNPP2n/P1RKN2P/1Q2B1R1 w - - +perft 1 30 +perft 2 1162 +perft 3 34027 +perft 4 1293798 +perft 5 38661154 +perft 6 1464877577 + +id gentest-4569 +epd rnb1k1r1/p2p1p2/1p6/2b3pp/2P2qP1/1PNPP2n/P1RK3P/1QN1BR2 b - - +perft 1 44 +perft 2 1065 +perft 3 45259 +perft 4 1158499 +perft 5 47904946 +perft 6 1289487534 + +id gentest-4570 +epd rnb3r1/p2p1pk1/1p6/2b3pp/2P2qP1/1PNPP2n/PR1K3P/1QN1BR2 w - - +perft 1 27 +perft 2 1227 +perft 3 32047 +perft 4 1384351 +perft 5 37485619 +perft 6 1575006119 + +id gentest-4571 +epd rnb3r1/p2p1pk1/1p6/2N1q1pp/2P3P1/1P1PP2n/PR1K3P/1QN1BR2 b - - +perft 1 43 +perft 2 1171 +perft 3 46309 +perft 4 1315608 +perft 5 50826394 +perft 6 1493926358 + +id gentest-4572 +epd r1b3r1/p2p1pk1/np6/2N1q1p1/2P3Pp/1P1PP2n/P1RK3P/1QN1BR2 w - - +perft 1 29 +perft 2 1134 +perft 3 31715 +perft 4 1174297 +perft 5 33820491 +perft 6 1238408809 + +id gentest-4573 +epd r1b3r1/p2p1pk1/np6/4q1p1/N1P2RPp/1P1PP3/P1RK3P/1QN1B1n1 b - - +perft 1 44 +perft 2 1087 +perft 3 42084 +perft 4 1086203 +perft 5 41185645 +perft 6 1114012422 + +id gentest-4574 +epd 1rb3r1/p2p1pk1/1N6/4q1p1/1nP2RPp/1P1PP3/P1RK3P/1QN1B1n1 w - - +perft 1 28 +perft 2 1313 +perft 3 35352 +perft 4 1560464 +perft 5 43362599 +perft 6 1855902968 + +id gentest-4575 +epd 1rb3r1/p2p1pk1/1N6/4q3/PnP2pPp/1P1PP3/1R1K3P/1QN1B1n1 b - - +perft 1 52 +perft 2 1066 +perft 3 52243 +perft 4 1172276 +perft 5 54690076 +perft 6 1316817858 + +id gentest-4576 +epd 1rb1q1r1/3p1pk1/1N6/p7/PnP2pPp/1P1PP3/1R1K1B1P/1QN3n1 w - - +perft 1 24 +perft 2 854 +perft 3 20127 +perft 4 736776 +perft 5 18317100 +perft 6 690520083 + +id gentest-4577 +epd 2b1q1r1/1r1p1pk1/1N6/p7/PnP2PPp/1P1P4/1R1K1B1P/Q1N3n1 b - - +perft 1 35 +perft 2 828 +perft 3 27046 +perft 4 671306 +perft 5 23399466 +perft 6 603788022 + +id gentest-4578 +epd 2b3r1/1r1p1p2/1N5k/p7/PnP2PPp/1P1P3P/1R1K1B2/Q1N1q1n1 w - - +perft 1 2 +perft 2 56 +perft 3 1273 +perft 4 34619 +perft 5 880945 +perft 6 24051600 + +id gentest-4579 +epd N1b3r1/1r1p1p2/6k1/p7/PnP2PPp/1P1P3P/1R1K4/Q1N1B1n1 b - - +perft 1 27 +perft 2 536 +perft 3 14468 +perft 4 331191 +perft 5 9173502 +perft 6 228588165 + +id gentest-4580 +epd N1b3r1/3p1p2/6k1/pr6/P1P2PPp/1P1P3P/R1nK4/Q1N1B1n1 w - - +perft 1 27 +perft 2 764 +perft 3 20710 +perft 4 576080 +perft 5 16021457 +perft 6 448616402 + +id gentest-4581 +epd 2b3r1/2Np1p2/6k1/pr6/P1P2PPp/1P1P3P/R2KN3/Q3n1n1 b - - +perft 1 31 +perft 2 1049 +perft 3 29361 +perft 4 932393 +perft 5 26107556 +perft 6 807012313 + +id gentest-4582 +epd 2b3r1/2Np3k/8/pr3p2/P1P2PPp/1P1P3P/RQ1KN3/4n1n1 w - - +perft 1 36 +perft 2 1004 +perft 3 32099 +perft 4 892621 +perft 5 27751357 +perft 6 774371322 + +id gentest-4583 +epd 2b1r3/2Np3k/8/pr3p2/P1P2PPp/1P1P3P/2QKN3/R3n1n1 b - - +perft 1 35 +perft 2 1079 +perft 3 35457 +perft 4 1028266 +perft 5 32427166 +perft 6 916350597 + +id gentest-4584 +epd 1rb1r3/2Np3k/8/p4p2/P1P2PPp/1P1n3P/2QK4/R1N3n1 w - - +perft 1 25 +perft 2 896 +perft 3 22459 +perft 4 735411 +perft 5 19322096 +perft 6 610038092 + +id gentest-4585 +epd 2b1r3/2Np3k/8/p1P2p2/Pr3PPp/1P1n3P/2QK4/1RN3n1 b - - +perft 1 41 +perft 2 927 +perft 3 34183 +perft 4 832680 +perft 5 28560792 +perft 6 741162437 + +id gentest-4586 +epd 2b2r2/1rNp3k/8/p1P2p2/P4PPp/1P1n3P/N1QK4/1R4n1 w - - +perft 1 30 +perft 2 928 +perft 3 28001 +perft 4 820571 +perft 5 25269409 +perft 6 731673180 + +id gentest-4587 +epd 2b2r1k/1r1p4/N7/p1P2p2/P4PPp/1P1n3P/N2K4/1RQ3n1 b - - +perft 1 29 +perft 2 697 +perft 3 19408 +perft 4 488836 +perft 5 14187324 +perft 6 379136912 + +id gentest-4588 +epd 2b2r1k/1r1p4/N1P5/p4p2/P4PPp/1P1n3P/N2K4/1RQ3n1 w - - +perft 1 29 +perft 2 797 +perft 3 23174 +perft 4 651241 +perft 5 19547973 +perft 6 557939876 + +id gentest-4589 +epd 2b2r1k/1r1p4/2P5/p1N2p2/P4PPp/1P5P/NQ1K1n2/1R4n1 b - - +perft 1 3 +perft 2 106 +perft 3 2631 +perft 4 85781 +perft 5 2232951 +perft 6 73152280 + +id gentest-4590 +epd 2b4k/1r6/2Pp1r2/p1N2p2/P4PPp/1P5P/NQ1K1n2/R5n1 w - - +perft 1 33 +perft 2 920 +perft 3 28170 +perft 4 791245 +perft 5 24359709 +perft 6 693662611 + +id gentest-4591 +epd 2b4k/8/2Pp1r2/p1N1Qp2/Pr3PPp/1P5P/3K1n2/R5n1 b - - +perft 1 30 +perft 2 988 +perft 3 28201 +perft 4 903611 +perft 5 25928263 +perft 6 814291554 + +id gentest-4592 +epd 2b4k/8/2Pp1r2/p1N2p2/P2Q1PPp/1P3n1P/3K1n2/R7 w - - +perft 1 5 +perft 2 115 +perft 3 3621 +perft 4 85186 +perft 5 2673053 +perft 6 64653603 + +id gentest-4593 +epd 2b4k/8/2Pp1r2/p4pn1/P2Q1PPp/1P1N3P/5n2/R1K5 b - - +perft 1 21 +perft 2 633 +perft 3 13546 +perft 4 419250 +perft 5 9446252 +perft 6 292195823 + +id gentest-4594 +epd 2b4k/5n2/1QP2r2/p2p1p2/P4PPp/1P1N3P/5n2/R1K5 w - - +perft 1 30 +perft 2 709 +perft 3 20239 +perft 4 485957 +perft 5 14231831 +perft 6 344312903 + +id gentest-4595 +epd 2bQ4/5n1k/2P2r2/p2p1p2/PN3PPp/1P5P/5n2/R1K5 b - - +perft 1 27 +perft 2 711 +perft 3 16910 +perft 4 458188 +perft 5 10680416 +perft 6 299229872 + +id gentest-4596 +epd 2bQ4/5n2/2P2rk1/3p1p2/Pp3PPp/1P5P/2K2n2/R7 w - - +perft 1 30 +perft 2 642 +perft 3 17870 +perft 4 381711 +perft 5 10421088 +perft 6 226227853 + +id gentest-4597 +epd 2bQ4/5n2/2P2rk1/3p1p2/Pp3PPp/1P5P/2K5/5R1n b - - +perft 1 20 +perft 2 607 +perft 3 11547 +perft 4 338316 +perft 5 6674959 +perft 6 191450770 + +id gentest-4598 +epd 2b5/8/2n2rk1/3p1p2/Pp3PPp/1P5P/2K5/6Rn w - - +perft 1 18 +perft 2 394 +perft 3 6396 +perft 4 148009 +perft 5 2328769 +perft 6 55937023 + +id gentest-4599 +epd 2b5/8/2n2r1k/P2p1p2/1p3PPp/1P5P/2K5/4R2n b - - +perft 1 23 +perft 2 499 +perft 3 11477 +perft 4 206948 +perft 5 4864452 +perft 6 81310483 + +id gentest-4600 +epd 2b5/8/4nr1k/P2p1p2/1p3PPp/1P2R2P/2K5/7n w - - +perft 1 18 +perft 2 358 +perft 3 5968 +perft 4 133623 +perft 5 2185878 +perft 6 51203278 + +id gentest-4601 +epd 2b5/8/4nr1k/P2p1p2/1p3PPp/1P2R2P/3K1n2/8 b - - +perft 1 25 +perft 2 409 +perft 3 10320 +perft 4 161585 +perft 5 4154571 +perft 6 63519762 + +id gentest-4602 +epd 2b5/8/4nr1k/P2p1p2/1p3PPp/1P2R2P/3n4/3K4 w - - +perft 1 17 +perft 2 395 +perft 3 6211 +perft 4 153620 +perft 5 2356984 +perft 6 59596908 + +id gentest-4603 +epd 2b5/8/5r1k/P2p1pn1/1p3PPp/1P2R2P/3n4/2K5 b - - +perft 1 29 +perft 2 478 +perft 3 12683 +perft 4 201350 +perft 5 5264728 +perft 6 82330892 + +id gentest-4604 +epd 2b5/4R3/r6k/P2p1pn1/1p3PPp/1P5P/8/2K2n2 w - - +perft 1 20 +perft 2 447 +perft 3 7485 +perft 4 171162 +perft 5 2752668 +perft 6 64698766 + +id gentest-4605 +epd 2b1R3/7n/r6k/P2p1p2/1p3PPp/1P5P/8/3K1n2 b - - +perft 1 23 +perft 2 402 +perft 3 8652 +perft 4 139597 +perft 5 3061530 +perft 6 48243528 + +id gentest-4606 +epd 2b1Rn2/8/7k/r2p1p2/1p3PPp/1P5P/8/2K2n2 w - - +perft 1 16 +perft 2 365 +perft 3 5433 +perft 4 125808 +perft 5 1842909 +perft 6 43409287 + +id gentest-4607 +epd 2b5/8/6nk/r2p1pP1/1p3P1p/1P2R2P/8/2K2n2 b - - +perft 1 3 +perft 2 45 +perft 3 1115 +perft 4 14541 +perft 5 361211 +perft 6 4623778 + +id gentest-4608 +epd 2b5/6k1/4R1n1/r4pP1/1p1p1P1p/1P5P/8/2K2n2 w - - +perft 1 17 +perft 2 454 +perft 3 6384 +perft 4 167967 +perft 5 2270258 +perft 6 59341434 + +id gentest-4609 +epd 2b5/6k1/6n1/1r3pP1/1p1p1P1p/1P5P/1K6/4Rn2 b - - +perft 1 26 +perft 2 436 +perft 3 10842 +perft 4 155516 +perft 5 3898417 +perft 6 53102562 + +id gentest-4610 +epd 2b5/6k1/1r6/5pP1/1p1p1n1p/1P5P/1K6/1R3n2 w - - +perft 1 10 +perft 2 325 +perft 3 3907 +perft 4 117107 +perft 5 1527706 +perft 6 44025612 + +id gentest-4611 +epd 8/6k1/br6/5pP1/1p1p1n1p/1P5P/8/K2R1n2 b - - +perft 1 34 +perft 2 374 +perft 3 12080 +perft 4 149001 +perft 5 4608017 +perft 6 59470717 + +id gentest-4612 +epd 5k2/8/b7/1r3pP1/1p1p1n1p/1P5P/8/KR3n2 w - - +perft 1 8 +perft 2 209 +perft 3 2316 +perft 4 60403 +perft 5 754921 +perft 6 20111570 + +id gentest-4613 +epd 5k2/8/b7/1r1n1pP1/1p1p3p/1P5P/K7/2R2n2 b - - +perft 1 25 +perft 2 377 +perft 3 9287 +perft 4 124822 +perft 5 3182760 +perft 6 42842692 + +id gentest-4614 +epd 5k2/8/b7/r1Rn1pP1/1p1p3p/1P4nP/K7/8 w - - +perft 1 3 +perft 2 90 +perft 3 1121 +perft 4 30476 +perft 5 404805 +perft 6 10827740 + +id gentest-4615 +epd 5k2/8/8/r2n1pP1/1p1p3p/1P1b2nP/2R5/1K6 b - - +perft 1 34 +perft 2 169 +perft 3 5498 +perft 4 67785 +perft 5 2138020 +perft 6 27175710 + +id gentest-4616 +epd 5k2/2n5/8/rb3pP1/1pRp3p/1P4nP/8/1K6 w - - +perft 1 12 +perft 2 374 +perft 3 4955 +perft 4 149827 +perft 5 2028005 +perft 6 59793734 + +id gentest-4617 +epd 8/2n3k1/8/rb3pP1/1pRp3p/1P4nP/8/1K6 b - - +perft 1 31 +perft 2 364 +perft 3 11207 +perft 4 145448 +perft 5 4457921 +perft 6 59570408 + +id gentest-4618 +epd 8/6k1/n7/rb3pP1/1pRp3p/1P5P/8/2K4n w - - +perft 1 14 +perft 2 309 +perft 3 4406 +perft 4 105414 +perft 5 1469943 +perft 6 36422105 + +id gentest-4619 +epd 8/6k1/n7/rb3pP1/1pRp3p/1P4nP/8/2K5 b - - +perft 1 25 +perft 2 316 +perft 3 8233 +perft 4 111027 +perft 5 2980069 +perft 6 40447031 + +id gentest-4620 +epd 8/6k1/n7/rb3pP1/1p1p3p/1P4nP/1K6/8 w - - +perft 1 4 +perft 2 112 +perft 3 518 +perft 4 14810 +perft 5 68686 +perft 6 1980260 + +id gentest-4621 +epd 8/6k1/n5P1/r4p2/1p1p3p/1P4nP/8/1K3b2 b - - +perft 1 29 +perft 2 96 +perft 3 2739 +perft 4 11882 +perft 5 339416 +perft 6 1521871 + +id gentest-4622 +epd 7k/8/n5P1/r7/1p1p1p1p/1P4nP/8/2K2b2 w - - +perft 1 6 +perft 2 148 +perft 3 700 +perft 4 16882 +perft 5 82100 +perft 6 2039595 + +id gentest-4623 +epd 7k/8/n5P1/r7/1pbp1p1p/1P4nP/2K5/8 b - - +perft 1 33 +perft 2 213 +perft 3 5745 +perft 4 31234 +perft 5 787837 +perft 6 4240366 + +id gentest-4624 +epd 6k1/8/n5P1/r7/1p1p1p1p/1P4nP/8/2K2b2 w - - +perft 1 6 +perft 2 180 +perft 3 854 +perft 4 24969 +perft 5 117128 +perft 6 3388688 + +id gentest-4625 +epd 6k1/6P1/n7/r6n/1p1p1p1p/1P5P/3K4/5b2 b - - +perft 1 27 +perft 2 114 +perft 3 3087 +perft 4 15659 +perft 5 425242 +perft 6 2482667 + +id gentest-4626 +epd 8/5kP1/n7/r6n/1p1p1p1p/1P5P/4b3/2K5 w - - +perft 1 8 +perft 2 198 +perft 3 1669 +perft 4 43281 +perft 5 444872 +perft 6 11947747 + +id gentest-4627 +epd 6R1/5k2/8/r1n4n/1p1p1p1p/1P5P/3Kb3/8 b - - +perft 1 33 +perft 2 516 +perft 3 15634 +perft 4 219479 +perft 5 6608725 +perft 6 89684111 + +id gentest-4628 +epd 2R5/8/5k2/r1n4n/1p1p1p1p/1P5P/3K4/3b4 w - - +perft 1 13 +perft 2 352 +perft 3 4910 +perft 4 135687 +perft 5 1888856 +perft 6 52002608 + +id gentest-4629 +epd 1R6/8/4k3/r1n4n/1p1p1p1p/1P5P/8/2Kb4 b - - +perft 1 33 +perft 2 451 +perft 3 13214 +perft 4 172739 +perft 5 4977350 +perft 6 65436418 + +id gentest-4630 +epd 8/8/4k3/rR5n/1p3p1p/1n1p3P/8/2Kb4 w - - +perft 1 3 +perft 2 77 +perft 3 846 +perft 4 21685 +perft 5 264369 +perft 6 6941314 + +id gentest-4631 +epd 8/8/4k3/r6n/1R3pbp/1n1p3P/8/1K6 b - - +perft 1 36 +perft 2 417 +perft 3 11984 +perft 4 155261 +perft 5 4462689 +perft 6 59384331 + +id gentest-4632 +epd 8/8/4k3/r6n/1R3p1p/3p3P/3nb3/2K5 w - - +perft 1 14 +perft 2 408 +perft 3 5017 +perft 4 141957 +perft 5 1785600 +perft 6 49728848 + +id gentest-4633 +epd 4R3/8/8/r4k1n/5p1p/3p3P/3nb3/2K5 b - - +perft 1 28 +perft 2 379 +perft 3 9873 +perft 4 126756 +perft 5 3342350 +perft 6 42901730 + +id gentest-4634 +epd 8/6n1/4R3/5k2/5p1p/r2p3P/3nb3/2K5 w - - +perft 1 15 +perft 2 346 +perft 3 4280 +perft 4 103466 +perft 5 1271373 +perft 6 31855481 + +id gentest-4635 +epd 2R5/6n1/8/5k2/5p1p/r2p3P/3n4/2Kb4 b - - +perft 1 32 +perft 2 458 +perft 3 12620 +perft 4 165549 +perft 5 4507263 +perft 6 57825166 + +id gentest-4636 +epd 5R2/6n1/4k3/7b/5p1p/r2p3P/3n4/2K5 w - - +perft 1 13 +perft 2 348 +perft 3 4244 +perft 4 115097 +perft 5 1432709 +perft 6 39183407 + +id gentest-4637 +epd 2R5/8/4k3/5n1b/5p1p/r2p3P/3n4/2K5 b - - +perft 1 37 +perft 2 515 +perft 3 16288 +perft 4 209599 +perft 5 6427267 +perft 6 81520400 + +id gentest-4638 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-4639 +epd rnbqkb1r/pppppppp/7n/8/1P6/7P/P1PPPPP1/RNBQKBNR b KQkq - +perft 1 20 +perft 2 401 +perft 3 8962 +perft 4 200647 +perft 5 4963473 +perft 6 122581649 + +id gentest-4640 +epd rnbqkb1r/ppppp2p/5ppn/8/1P4P1/7P/P1PPPP2/RNBQKBNR w KQkq - +perft 1 20 +perft 2 419 +perft 3 9488 +perft 4 218491 +perft 5 5456966 +perft 6 135934212 + +id gentest-4641 +epd rnbqkb1r/ppppp2p/5p1n/6p1/1P4P1/2N2N1P/P1PPPP2/R1BQKB1R b KQkq - +perft 1 20 +perft 2 504 +perft 3 11213 +perft 4 299815 +perft 5 7223917 +perft 6 203938408 + +id gentest-4642 +epd rnbqkb1r/ppppp2p/5p1n/6p1/1P4P1/2N1PN1P/P1PP1P2/R1BQKB1R w KQkq - +perft 1 32 +perft 2 633 +perft 3 20517 +perft 4 447156 +perft 5 14730460 +perft 6 348530907 + +id gentest-4643 +epd rnbq1b1r/pppppk1p/5p1n/4N1p1/1P4P1/P1N1P2P/2PP1P2/R1BQKB1R b KQ - +perft 1 5 +perft 2 173 +perft 3 3482 +perft 4 118004 +perft 5 2569658 +perft 6 87217542 + +id gentest-4644 +epd rnbq1b1r/ppppp2p/4kp2/4N1p1/1P1P2n1/P1N1P2P/2P2P2/R1BQKB1R w KQ - +perft 1 42 +perft 2 971 +perft 3 39093 +perft 4 925873 +perft 5 36215950 +perft 6 883283352 + +id gentest-4645 +epd rnbq1b1r/pp1pp2p/2p1kp2/6p1/1P1PP1n1/P1NN3P/2P2P2/R1BQKB1R b KQ - +perft 1 25 +perft 2 878 +perft 3 20987 +perft 4 745935 +perft 5 18687529 +perft 6 675473029 + +id gentest-4646 +epd rnbq1b1r/pp1ppk1p/2p2p2/2N3p1/1P1PP3/P1N4P/2P2n2/R1BQKB1R w KQ - +perft 1 42 +perft 2 1212 +perft 3 48586 +perft 4 1436113 +perft 5 57664017 +perft 6 1740641665 + +id gentest-4647 +epd rnbq1b1r/pp1ppk2/2p2p1p/6p1/1P1PP1Q1/P1NN3P/2P2n2/R1B1KB1R b KQ - +perft 1 29 +perft 2 1228 +perft 3 34781 +perft 4 1453528 +perft 5 42319574 +perft 6 1756093477 + +id gentest-4648 +epd rnbq1b1r/pp1pp3/2p2pkp/1P4p1/3Pn1Q1/P1NN3P/2P5/R1B1KB1R w KQ - +perft 1 45 +perft 2 1133 +perft 3 49364 +perft 4 1321777 +perft 5 56675766 +perft 6 1587222402 + +id gentest-4649 +epd rnbq1br1/pp1pp3/2p2pkp/1P4p1/3Pn3/P1NN3P/2PB4/R3KBQR b KQ - +perft 1 31 +perft 2 1230 +perft 3 36381 +perft 4 1448549 +perft 5 43507029 +perft 6 1739932074 + +id gentest-4650 +epd rnbq1br1/p2p4/1pp2pkp/1P1Np1p1/3Pn3/P2N3P/2PB4/R3KBQR w KQ - +perft 1 45 +perft 2 1420 +perft 3 61444 +perft 4 1950811 +perft 5 82955548 +perft 6 2657820636 + +id gentest-4651 +epd rnbq1b1r/p2p4/1pp2pkp/1P1Np1p1/3PnNQ1/P6P/2PB4/R3KB1R b KQ - +perft 1 4 +perft 2 192 +perft 3 5836 +perft 4 268108 +perft 5 8297361 +perft 6 369712856 + +id gentest-4652 +epd rnbq3r/p2p3k/1pp2p1p/1PbNp1p1/3PnN1Q/P6P/2PB4/R3KB1R w KQ - +perft 1 43 +perft 2 1457 +perft 3 61820 +perft 4 2074858 +perft 5 87197603 +perft 6 2914976379 + +id gentest-4653 +epd rnbq3r/p2p3k/1pp2p2/1PbNp1pp/3PnN1Q/P6P/2PB4/2R1KB1R b K - +perft 1 36 +perft 2 1374 +perft 3 46805 +perft 4 1812459 +perft 5 61259518 +perft 6 2394173342 + +id gentest-4654 +epd rnbq3r/p2p3k/1p3p2/1Pbpp1pp/3P1N2/P5nP/2PB4/2R1KB1R w K - +perft 1 28 +perft 2 969 +perft 3 27052 +perft 4 927652 +perft 5 25919749 +perft 6 888465566 + +id gentest-4655 +epd rnbq1b1r/p2p3k/1p3p2/1P1pp1pp/3P1N2/P1P3nP/3B1K2/2R2B1R b - - +perft 1 33 +perft 2 920 +perft 3 29921 +perft 4 832059 +perft 5 27342441 +perft 6 769596458 + +id gentest-4656 +epd rnbq3r/p2p3k/1p3p2/1Pbpp1pp/3P1N2/P1P4P/3BBK2/2R4R w - - +perft 1 38 +perft 2 1140 +perft 3 39821 +perft 4 1181195 +perft 5 40238045 +perft 6 1198175669 + +id gentest-4657 +epd rnbq3r/p2p3k/1p3p2/1Pbpp2p/3P1NP1/P1P2K2/3BB3/2R4R b - - +perft 1 29 +perft 2 1054 +perft 3 29200 +perft 4 1022664 +perft 5 28867905 +perft 6 994729959 + +id gentest-4658 +epd rnbq2r1/p2p3k/1p3p2/1P1pp2p/3P1NP1/b1P2K2/4B3/2R1B2R w - - +perft 1 33 +perft 2 1029 +perft 3 32522 +perft 4 1011499 +perft 5 31880559 +perft 6 997578719 + +id gentest-4659 +epd rnbq2r1/p2p4/1p3p1k/1P1pp2p/3P2P1/b1P3K1/4B1N1/2R1B2R b - - +perft 1 33 +perft 2 885 +perft 3 26355 +perft 4 708309 +perft 5 21317500 +perft 6 586586786 + +id gentest-4660 +epd rnbq2r1/p2pb3/1p3p1k/1P1p3p/3p2P1/2P3K1/4BBN1/2R4R w - - +perft 1 36 +perft 2 999 +perft 3 30467 +perft 4 843986 +perft 5 25652407 +perft 6 726072871 + +id gentest-4661 +epd rnbq2r1/3pb3/pp3p1k/1P1p3p/3p2P1/2P3K1/4B1N1/1R2B2R b - - +perft 1 29 +perft 2 823 +perft 3 22344 +perft 4 640150 +perft 5 18145173 +perft 6 529198142 + +id gentest-4662 +epd rnbq3r/3p4/pp3p1k/1Pbp3p/3p2PN/2P3K1/4B3/1R2B2R w - - +perft 1 32 +perft 2 791 +perft 3 23584 +perft 4 629181 +perft 5 18816177 +perft 6 535826860 + +id gentest-4663 +epd rnb1q2r/3p4/pp3p1k/1Pbp3p/3p2PN/2P3K1/4BB2/1R4R1 b - - +perft 1 32 +perft 2 1040 +perft 3 32387 +perft 4 1004922 +perft 5 32452411 +perft 6 994249612 + +id gentest-4664 +epd rnb2b1r/3p4/pp3p1k/1P1p3p/3p2PN/2P1q1K1/4BB2/1R3R2 w - - +perft 1 5 +perft 2 149 +perft 3 3937 +perft 4 132640 +perft 5 3731956 +perft 6 127673253 + +id gentest-4665 +epd rnb2b1r/3p4/pp3p1k/1P1p3p/3p2PN/2P2B2/5BK1/1R3R2 b - - +perft 1 21 +perft 2 690 +perft 3 14746 +perft 4 493636 +perft 5 11332263 +perft 6 387673941 + +id gentest-4666 +epd rnb2b1r/3p3k/1p3p2/pP1p3P/3p3N/2P2B2/5BK1/1R3R2 w - - +perft 1 32 +perft 2 678 +perft 3 21780 +perft 4 480500 +perft 5 16036312 +perft 6 369051004 + +id gentest-4667 +epd rnb4r/3p3k/1p3p2/pP1p3P/1P1p3N/5B2/5BK1/1RR5 b - - +perft 1 18 +perft 2 603 +perft 3 11712 +perft 4 412870 +perft 5 8598229 +perft 6 310411215 + +id gentest-4668 +epd 1nb4r/3p3k/1p3p2/rP1p3P/1p1p3N/5B2/5B1K/1RR5 w - - +perft 1 37 +perft 2 825 +perft 3 30693 +perft 4 708946 +perft 5 26282108 +perft 6 630720192 + +id gentest-4669 +epd 1nb4r/7k/1p1p1p1P/rP1p4/1p1p3N/5BB1/7K/1RR5 b - - +perft 1 27 +perft 2 923 +perft 3 23923 +perft 4 844245 +perft 5 22484226 +perft 6 801926064 + +id gentest-4670 +epd 1nb4r/7k/1p1p1p1P/1P1p4/1p1p3N/5BB1/7K/1r4R1 w - - +perft 1 25 +perft 2 625 +perft 3 16057 +perft 4 405253 +perft 5 10601169 +perft 6 275958404 + +id gentest-4671 +epd 1n5r/7k/1p1Bbp1P/1P1p2R1/1p1p3N/5B2/7K/1r6 b - - +perft 1 29 +perft 2 890 +perft 3 24386 +perft 4 694893 +perft 5 19304411 +perft 6 532797258 + +id gentest-4672 +epd 1n3B1r/5b1k/1p3p1P/1P1p2R1/1p1p3N/5B2/7K/3r4 w - - +perft 1 30 +perft 2 652 +perft 3 17132 +perft 4 403679 +perft 5 10496904 +perft 6 261909784 + +id gentest-4673 +epd 1n3B1r/5b1k/1p3p1P/1P1p1NR1/1p1p4/5B2/6K1/4r3 b - - +perft 1 27 +perft 2 712 +perft 3 17684 +perft 4 470872 +perft 5 11605852 +perft 6 309923373 + +id gentest-4674 +epd 1n3B1r/5b1k/1p3pRP/1P1p1N2/1p1p4/5B2/6K1/6r1 w - - +perft 1 4 +perft 2 84 +perft 3 2298 +perft 4 48990 +perft 5 1273773 +perft 6 28981276 + +id gentest-4675 +epd 1n3B1r/5b1k/1p3pRP/1P1p1N2/1p6/3p1B2/7K/8 b - - +perft 1 13 +perft 2 415 +perft 3 6058 +perft 4 180761 +perft 5 3005461 +perft 6 86582335 + +id gentest-4676 +epd 5B1r/3n3k/1p2bpRP/1P1p1N2/1p6/3p4/6BK/8 w - - +perft 1 28 +perft 2 395 +perft 3 10387 +perft 4 174369 +perft 5 4564257 +perft 6 85855517 + +id gentest-4677 +epd 5B1r/3n3k/1p2bpRP/1P1p4/8/1p1pN3/6B1/7K b - - +perft 1 16 +perft 2 400 +perft 3 6947 +perft 4 174787 +perft 5 3354834 +perft 6 85494926 + +id gentest-4678 +epd 5Bbr/3n3k/1p3pRP/1P1p4/8/1p1pN3/6BK/8 w - - +perft 1 29 +perft 2 308 +perft 3 8940 +perft 4 116615 +perft 5 3318770 +perft 6 51797663 + +id gentest-4679 +epd 6br/3n3k/1p4RP/1PBp1p2/6N1/1p1p4/6BK/8 b - - +perft 1 14 +perft 2 411 +perft 3 5857 +perft 4 159487 +perft 5 2616631 +perft 6 70062446 + +id gentest-4680 +epd 5B1r/5b1k/1p4RP/1Pnp1p2/6N1/1p1p4/6BK/8 w - - +perft 1 26 +perft 2 452 +perft 3 11785 +perft 4 217628 +perft 5 5780151 +perft 6 113812683 + +id gentest-4681 +epd 6r1/5b1k/1p1B2RP/1Pnp1p2/6N1/1p1p3K/6B1/8 b - - +perft 1 25 +perft 2 651 +perft 3 14816 +perft 4 396193 +perft 5 9102194 +perft 6 246471506 + +id gentest-4682 +epd 1r6/5b1k/1p4RP/1Pnp1p2/6N1/1p1p2BK/6B1/8 w - - +perft 1 29 +perft 2 670 +perft 3 18448 +perft 4 423759 +perft 5 11641651 +perft 6 270244767 + +id gentest-4683 +epd 1r5k/5b2/1p4RP/1Pnp1p2/6NB/1p1p3K/6B1/8 b - - +perft 1 23 +perft 2 606 +perft 3 13240 +perft 4 352364 +perft 5 7945494 +perft 6 216415511 + +id gentest-4684 +epd 1r5k/5b2/1p4RP/1Pnp4/6pB/3p3K/1p6/5B2 w - - +perft 1 5 +perft 2 128 +perft 3 3077 +perft 4 75121 +perft 5 1764192 +perft 6 45010563 + +id gentest-4685 +epd 1r2b2k/8/1p3R1P/1Pnp4/6pB/3p2K1/1p6/5B2 b - - +perft 1 25 +perft 2 526 +perft 3 12928 +perft 4 294252 +perft 5 7481103 +perft 6 176354611 + +id gentest-4686 +epd 1r5k/5b2/1p3R1P/1Pnp2B1/6p1/3p2K1/8/1b3B2 w - - +perft 1 26 +perft 2 650 +perft 3 16381 +perft 4 397279 +perft 5 10092214 +perft 6 245503541 + +id gentest-4687 +epd 1r5k/5b2/1p5P/1Pnp2B1/5Rp1/3p2K1/2b3B1/8 b - - +perft 1 27 +perft 2 709 +perft 3 18111 +perft 4 489433 +perft 5 12495614 +perft 6 335558020 + +id gentest-4688 +epd 4r2k/3n1b2/1p5P/1P1p2B1/5RK1/3p4/2b3B1/8 w - - +perft 1 27 +perft 2 764 +perft 3 18041 +perft 4 482052 +perft 5 11653408 +perft 6 306450824 + +id gentest-4689 +epd 7k/3n1b2/1p5P/1P1p2B1/4r2R/3p2K1/2b3B1/8 b - - +perft 1 32 +perft 2 768 +perft 3 21493 +perft 4 516052 +perft 5 13914575 +perft 6 337775486 + +id gentest-4690 +epd 7k/3n4/1p5P/1P1p2Bb/4r1R1/6K1/2bp2B1/8 w - - +perft 1 21 +perft 2 654 +perft 3 14167 +perft 4 435114 +perft 5 9993751 +perft 6 306434505 + +id gentest-4691 +epd 7k/3n4/1p3B1P/1P1p3b/4r1R1/3b1BK1/3p4/8 b - - +perft 1 2 +perft 2 46 +perft 3 1448 +perft 4 33472 +perft 5 1068274 +perft 6 25102763 + +id gentest-4692 +epd 7k/8/1p3n1P/1P1p3b/6RK/3b1B2/3pr3/8 w - - +perft 1 22 +perft 2 707 +perft 3 13857 +perft 4 450550 +perft 5 8614319 +perft 6 283889017 + +id gentest-4693 +epd 7k/8/1p3n1P/1P1p1bKb/3R4/5B2/3pr3/8 b - - +perft 1 38 +perft 2 758 +perft 3 26537 +perft 4 496189 +perft 5 16823423 +perft 6 314430625 + +id gentest-4694 +epd 7k/8/1p3n1P/1P1p1bKb/8/5B2/3Rr3/8 w - - +perft 1 20 +perft 2 682 +perft 3 12859 +perft 4 394545 +perft 5 7505368 +perft 6 220005662 + +id gentest-4695 +epd 7k/3b4/1p3n1P/1P1pR1Kb/8/5B2/8/8 b - - +perft 1 21 +perft 2 405 +perft 3 7816 +perft 4 153768 +perft 5 2903360 +perft 6 58679040 + +id gentest-4696 +epd 7k/3b4/1p3n1P/1P1p2Kb/8/5B2/4R3/8 w - - +perft 1 24 +perft 2 477 +perft 3 10309 +perft 4 198690 +perft 5 4206496 +perft 6 80424882 + +id gentest-4697 +epd 7k/8/1pb2n1P/1P1B2Kb/8/8/6R1/8 b - - +perft 1 21 +perft 2 464 +perft 3 9286 +perft 4 212693 +perft 5 4202735 +perft 6 94720948 + +id gentest-4698 +epd 7k/8/1pb2n1P/1P1B1K2/8/8/2b3R1/8 w - - +perft 1 7 +perft 2 149 +perft 3 3584 +perft 4 68481 +perft 5 1607993 +perft 6 30466664 + +id gentest-4699 +epd 7k/8/1p3nRP/1b1B4/5K2/8/2b5/8 b - - +perft 1 26 +perft 2 660 +perft 3 15007 +perft 4 352116 +perft 5 7595389 +perft 6 173968704 + +id gentest-4700 +epd 7k/7n/1p1R3P/1b1B4/4bK2/8/8/8 w - - +perft 1 22 +perft 2 447 +perft 3 10450 +perft 4 204834 +perft 5 4741589 +perft 6 92540580 + +id gentest-4701 +epd 7k/3b3n/1R5P/3B4/4bK2/8/8/8 b - - +perft 1 21 +perft 2 568 +perft 3 11078 +perft 4 274272 +perft 5 5272348 +perft 6 126632720 + +id gentest-4702 +epd 7k/7n/R3b2P/3B4/5K2/8/2b5/8 w - - +perft 1 26 +perft 2 510 +perft 3 12815 +perft 4 243451 +perft 5 5992104 +perft 6 114750944 + +id gentest-4703 +epd 7k/1B5n/3R3P/5b2/5K2/8/2b5/8 b - - +perft 1 18 +perft 2 462 +perft 3 8685 +perft 4 207996 +perft 5 4011992 +perft 6 94259513 + +id gentest-4704 +epd 7k/8/3R3P/3B1bn1/5K2/3b4/8/8 w - - +perft 1 26 +perft 2 570 +perft 3 13582 +perft 4 298143 +perft 5 7005992 +perft 6 148158573 + +id gentest-4705 +epd 7k/3R4/7P/3B1bn1/4b3/6K1/8/8 b - - +perft 1 18 +perft 2 423 +perft 3 8302 +perft 4 199421 +perft 5 3981980 +perft 6 93632723 + +id gentest-4706 +epd 3R4/7k/7P/3B1bn1/8/5bK1/8/8 w - - +perft 1 24 +perft 2 514 +perft 3 12647 +perft 4 261448 +perft 5 6212793 +perft 6 129006278 + +id gentest-4707 +epd 3R4/1B5k/7P/5b2/4n2K/5b2/8/8 b - - +perft 1 22 +perft 2 456 +perft 3 9965 +perft 4 200833 +perft 5 4407057 +perft 6 90958388 + +id gentest-4708 +epd 8/1B5k/b6P/3R1b2/4n2K/8/8/8 w - - +perft 1 17 +perft 2 368 +perft 3 7224 +perft 4 159937 +perft 5 3269799 +perft 6 70631657 + +id gentest-4709 +epd 8/1B5k/7P/1b3R2/4n3/7K/8/8 b - - +perft 1 21 +perft 2 443 +perft 3 8022 +perft 4 174463 +perft 5 2915527 +perft 6 64810601 + +id gentest-4710 +epd 8/1B5k/7P/1b1R4/8/7K/8/5n2 w - - +perft 1 20 +perft 2 291 +perft 3 6423 +perft 4 93158 +perft 5 2046961 +perft 6 30075646 + +id gentest-4711 +epd 8/1B5k/2b4P/6R1/7K/8/8/5n2 b - - +perft 1 16 +perft 2 355 +perft 3 5087 +perft 4 108577 +perft 5 1559041 +perft 6 32959658 + +id gentest-4712 +epd 7k/1B6/7P/6RK/b7/8/8/5n2 w - - +perft 1 26 +perft 2 301 +perft 3 5980 +perft 4 77333 +perft 5 1600374 +perft 6 21479746 + +id gentest-4713 +epd B6k/8/2b3KP/6R1/8/8/8/5n2 b - - +perft 1 16 +perft 2 270 +perft 3 3675 +perft 4 70339 +perft 5 941681 +perft 6 18877123 + +id gentest-4714 +epd B6k/8/6KP/8/8/3b4/8/5nR1 w - - +perft 1 5 +perft 2 73 +perft 3 1431 +perft 4 20098 +perft 5 431511 +perft 6 6042721 + +id gentest-4715 +epd 7k/8/6KP/8/8/3B4/7n/6R1 b - - +perft 1 4 +perft 2 95 +perft 3 588 +perft 4 12862 +perft 5 79107 +perft 6 1846410 + +id gentest-4716 +epd 6k1/8/6KP/8/8/3B1n2/8/4R3 w - - +perft 1 27 +perft 2 247 +perft 3 5262 +perft 4 38395 +perft 5 896300 +perft 6 6467609 + +id gentest-4717 +epd 6k1/8/6KP/1B6/3n4/8/8/7R b - - +perft 1 10 +perft 2 236 +perft 3 2072 +perft 4 45578 +perft 5 361721 +perft 6 8274586 + +id gentest-4718 +epd 6k1/4n3/7P/1B3K2/8/8/8/7R w - - +perft 1 7 +perft 2 61 +perft 3 1521 +perft 4 13716 +perft 5 338946 +perft 6 2887966 + +id gentest-4719 +epd 6k1/8/2n1K2P/1B6/8/8/8/4R3 b - - +perft 1 11 +perft 2 249 +perft 3 2057 +perft 4 50947 +perft 5 401549 +perft 6 9868094 + +id gentest-4720 +epd 6k1/8/5K1P/1B6/8/1n6/8/4R3 w - - +perft 1 30 +perft 2 243 +perft 3 6651 +perft 4 50050 +perft 5 1287645 +perft 6 9615433 + +id gentest-4721 +epd 6k1/3BR3/5K1P/8/3n4/8/8/8 b - - +perft 1 10 +perft 2 229 +perft 3 1771 +perft 4 43044 +perft 5 307923 +perft 6 7352003 + +id gentest-4722 +epd 6k1/n2BR3/7P/5K2/8/8/8/8 w - - +perft 1 25 +perft 2 125 +perft 3 3111 +perft 4 18474 +perft 5 438628 +perft 6 3056100 + +id gentest-4723 +epd 5k2/n2BR3/3K3P/8/8/8/8/8 b - - +perft 1 4 +perft 2 61 +perft 3 384 +perft 4 8360 +perft 5 53451 +perft 6 1160607 + +id gentest-4724 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-4725 +epd rnbqkbnr/ppp1pppp/8/3p4/5P2/8/PPPPP1PP/RNBQKBNR b KQkq - +perft 1 28 +perft 2 557 +perft 3 16262 +perft 4 359553 +perft 5 10932394 +perft 6 265969132 + +id gentest-4726 +epd rnbq1bnr/p1pkpppp/1p6/3p4/5P2/6P1/PPPPP2P/RNBQKBNR w KQ - +perft 1 21 +perft 2 504 +perft 3 11778 +perft 4 302845 +perft 5 7748542 +perft 6 210794882 + +id gentest-4727 +epd rnbq1b1r/p1pkpppp/1p3n2/3p4/4PP1P/6P1/PPPP4/RNBQKBNR b KQ - +perft 1 28 +perft 2 912 +perft 3 24691 +perft 4 797284 +perft 5 22638722 +perft 6 736695267 + +id gentest-4728 +epd rn1q1b1r/p1p1pppp/1pk2n2/3p4/4PPbP/6P1/PPPP2B1/RNBQK1NR w KQ - +perft 1 27 +perft 2 936 +perft 3 27032 +perft 4 891122 +perft 5 26790225 +perft 6 864434025 + +id gentest-4729 +epd rn1q1b1r/p1p1pppp/1pk2n2/3p4/2P1PP1P/6PN/PP1Pb1B1/RNBQK2R b KQ - +perft 1 36 +perft 2 1040 +perft 3 34010 +perft 4 1022100 +perft 5 33445171 +perft 6 1036785011 + +id gentest-4730 +epd rn1q1b1r/pkp2ppp/1p2pn2/3p4/2P1PP1P/6P1/PP1PbNB1/RNBQK2R w KQ - +perft 1 30 +perft 2 1261 +perft 3 39168 +perft 4 1614692 +perft 5 51491112 +perft 6 2089803988 + +id gentest-4731 +epd r2q1b1r/pkp2ppp/1pn1pn2/3P4/4PPNP/6P1/PP1Pb1B1/RNBQK2R b KQ - +perft 1 48 +perft 2 1549 +perft 3 71094 +perft 4 2311992 +perft 5 104010608 +perft 6 3435844451 + +id gentest-4732 +epd rq5r/pkp2ppp/1pn1pn2/3P4/Pb2PPNP/6P1/1P1Pb1B1/RNBQK2R w KQ - +perft 1 30 +perft 2 1399 +perft 3 42661 +perft 4 1903821 +perft 5 60254929 +perft 6 2595002236 + +id gentest-4733 +epd rq5r/pkp2ppp/1pn2n2/3Pp3/Pb2PPNP/6P1/1P1PK1B1/RNBQ1R2 b - - +perft 1 39 +perft 2 1327 +perft 3 48983 +perft 4 1670844 +perft 5 60848058 +perft 6 2100745175 + +id gentest-4734 +epd r3q2r/pkp2ppp/1pn2N2/2bPp3/P3PP1P/6P1/1P1PK1B1/RNBQ1R2 w - - +perft 1 35 +perft 2 1354 +perft 3 47361 +perft 4 1772284 +perft 5 63008927 +perft 6 2308455806 + +id gentest-4735 +epd rn2q2r/pkp2ppp/1p3N2/2bPp3/P3PP1P/6P1/1P1PK1B1/RNBQ1R2 b - - +perft 1 36 +perft 2 1203 +perft 3 41782 +perft 4 1440593 +perft 5 49163715 +perft 6 1733720903 + +id gentest-4736 +epd r3q2r/pkpn1pp1/1p3N2/2bPpP1p/P3P2P/6P1/1P1PK1B1/RNBQ1R2 w - - +perft 1 32 +perft 2 1142 +perft 3 37939 +perft 4 1308456 +perft 5 44704167 +perft 6 1505196286 + +id gentest-4737 +epd r3q1r1/pkp2pp1/1p6/2NPpP1p/P3P2P/6P1/1P1PK1B1/RNBQ1R2 b - - +perft 1 3 +perft 2 99 +perft 3 2152 +perft 4 71176 +perft 5 1651885 +perft 6 56086401 + +id gentest-4738 +epd r5r1/pkp1qpp1/8/2pPpP1p/P3P2P/6P1/1P1PKRB1/RNBQ4 w - - +perft 1 30 +perft 2 904 +perft 3 27858 +perft 4 806385 +perft 5 25291360 +perft 6 722956794 + +id gentest-4739 +epd r5r1/1kp1qpp1/8/p1pPpP1p/P3P2P/6PB/1PQPKR2/RNB5 b - - +perft 1 32 +perft 2 994 +perft 3 28982 +perft 4 918323 +perft 5 26024418 +perft 6 841547635 + +id gentest-4740 +epd r1r5/1kp1qp2/6p1/p1pPpP1p/P3P1PP/7B/1PQPKR2/RNB5 w - - +perft 1 32 +perft 2 865 +perft 3 28409 +perft 4 773135 +perft 5 25786077 +perft 6 709988467 + +id gentest-4741 +epd r1r5/1kp1qp2/6p1/p2PpP1p/P1P1P1PP/7B/1PQ1KR2/RNB5 b - - +perft 1 31 +perft 2 1135 +perft 3 33725 +perft 4 1225847 +perft 5 36190392 +perft 6 1321228654 + +id gentest-4742 +epd rkr5/2p2p2/6p1/p2PpP1p/P1P1P1Pq/7B/1PQ2R2/RNB1K3 w - - +perft 1 30 +perft 2 665 +perft 3 20796 +perft 4 507662 +perft 5 16557223 +perft 6 429662265 + +id gentest-4743 +epd rk1r4/2p2p2/6p1/p2PpP1p/P1P1P1Pq/3Q3B/1P2KR2/RNB5 b - - +perft 1 26 +perft 2 979 +perft 3 25810 +perft 4 938340 +perft 5 25501592 +perft 6 910831145 + +id gentest-4744 +epd rk2r3/2p5/5pp1/p2PpP1p/P1P1P1Pq/3Q3B/1P2K3/RNB2R2 w - - +perft 1 39 +perft 2 879 +perft 3 29846 +perft 4 708042 +perft 5 23714411 +perft 6 592209361 + +id gentest-4745 +epd rk6/2p1r3/5pp1/p2PpP1p/P1P1P1Pq/3Q3B/1P1K4/RNB3R1 b - - +perft 1 22 +perft 2 657 +perft 3 15708 +perft 4 477677 +perft 5 12255842 +perft 6 378334397 + +id gentest-4746 +epd rk6/2p1r3/5pp1/p2PpP1p/P1P1P1P1/7B/1P1KQ3/RNB2qR1 w - - +perft 1 30 +perft 2 810 +perft 3 21075 +perft 4 579335 +perft 5 15902286 +perft 6 444151107 + +id gentest-4747 +epd rk6/2p1r3/5pp1/p2PpP1p/P1P1PqP1/4Q2B/1P1K2R1/RNB5 b - - +perft 1 27 +perft 2 687 +perft 3 17916 +perft 4 512707 +perft 5 13543496 +perft 6 405619510 + +id gentest-4748 +epd 8/rkp1r3/5pp1/p2PpP1p/P1P1PqP1/2N1Q2B/1P1K2R1/R1B5 w - - +perft 1 26 +perft 2 743 +perft 3 21513 +perft 4 587292 +perft 5 18145715 +perft 6 491644075 + +id gentest-4749 +epd 4r3/rkp5/5pp1/p2PpP1P/P1P1Pq2/4Q2B/NP1K2R1/R1B5 b - - +perft 1 32 +perft 2 898 +perft 3 26241 +perft 4 806906 +perft 5 22687041 +perft 6 719395059 + +id gentest-4750 +epd 4r3/rkp5/5pp1/p2P1P1P/P1P1Pp2/7B/NP1K2Rq/R1B5 w - - +perft 1 21 +perft 2 603 +perft 3 13804 +perft 4 385160 +perft 5 9236400 +perft 6 261406825 + +id gentest-4751 +epd 4r3/rkp5/5pp1/p2P1P1P/P1P1Pp2/1P5q/N1K3R1/R1B5 b - - +perft 1 37 +perft 2 932 +perft 3 32092 +perft 4 835793 +perft 5 27463996 +perft 6 740383821 + +id gentest-4752 +epd 6r1/rkp5/5pp1/p2P1P1P/P1P1P3/1P3p1q/N1K3R1/1RB5 w - - +perft 1 32 +perft 2 960 +perft 3 29409 +perft 4 888973 +perft 5 27064332 +perft 6 826564899 + +id gentest-4753 +epd 6r1/rkp5/5pP1/p2P1P2/P1P1P1q1/1P3p2/N1K5/1RB3R1 b - - +perft 1 30 +perft 2 786 +perft 3 23316 +perft 4 634585 +perft 5 19050830 +perft 6 530980198 + +id gentest-4754 +epd 8/rk6/2p2pr1/p2P1P2/P1P1P1q1/1P3p2/N7/1RBK2R1 w - - +perft 1 26 +perft 2 619 +perft 3 15476 +perft 4 424340 +perft 5 10786051 +perft 6 316913669 + +id gentest-4755 +epd 8/rk6/5pP1/p1pP4/P1P1P1q1/1P3p2/N7/1RBK3R b - - +perft 1 24 +perft 2 599 +perft 3 14841 +perft 4 376429 +perft 5 9633183 +perft 6 249432380 + +id gentest-4756 +epd 8/rk6/5pP1/p1pP4/PNP4q/1P3p2/8/1RBK3R w - - +perft 1 24 +perft 2 614 +perft 3 14703 +perft 4 376826 +perft 5 9301478 +perft 6 242989419 + +id gentest-4757 +epd 8/rk6/5pP1/p1pP4/PNPq4/1P3p2/1B6/1R2K2R b - - +perft 1 26 +perft 2 439 +perft 3 11579 +perft 4 229194 +perft 5 6087988 +perft 6 133527398 + +id gentest-4758 +epd 8/r7/1k3pP1/p1pP4/PNP5/1Pq2p2/1B6/1R2K1R1 w - - +perft 1 4 +perft 2 95 +perft 3 1862 +perft 4 45862 +perft 5 977029 +perft 6 24843716 + +id gentest-4759 +epd 8/8/rk1P1pP1/p1p5/PNP5/1Pq2p2/1B6/1R3KR1 b - - +perft 1 20 +perft 2 364 +perft 3 7994 +perft 4 162392 +perft 5 3799493 +perft 6 84800727 + +id gentest-4760 +epd k7/8/r2P1pP1/p1p5/PNP5/1Pq2p2/8/1RB2KR1 w - - +perft 1 23 +perft 2 530 +perft 3 10972 +perft 4 265367 +perft 5 5853744 +perft 6 144108808 + +id gentest-4761 +epd 1k6/8/r2P1pP1/p1p5/P1P2B2/1Pq2p2/N7/1R3KR1 b - - +perft 1 24 +perft 2 508 +perft 3 11916 +perft 4 256880 +perft 5 6187366 +perft 6 139703162 + +id gentest-4762 +epd 1k6/8/3r1pP1/p1p5/P1P2B2/1P3p2/N4K2/1Rq3R1 w - - +perft 1 28 +perft 2 533 +perft 3 11322 +perft 4 264443 +perft 5 6117363 +perft 6 153991213 + +id gentest-4763 +epd 1k6/8/3r1pP1/p1p5/P1P2q2/1P3p2/N4K2/R1R5 b - - +perft 1 31 +perft 2 403 +perft 3 13112 +perft 4 199586 +perft 5 6327111 +perft 6 108817692 + +id gentest-4764 +epd 1k6/8/3r1pP1/p1p5/P1Pq4/1P3K2/N7/R1R5 w - - +perft 1 16 +perft 2 464 +perft 3 7007 +perft 4 216424 +perft 5 3689142 +perft 6 114023525 + +id gentest-4765 +epd 1k6/8/3r1pP1/p1p5/P1P5/1P6/N4K2/R1R5 b - - +perft 1 17 +perft 2 330 +perft 3 5655 +perft 4 115396 +perft 5 1931372 +perft 6 42446146 + +id gentest-4766 +epd 1k6/8/5pP1/p1p5/P1P5/1P3K2/Nr6/R1R5 w - - +perft 1 18 +perft 2 270 +perft 3 5157 +perft 4 82673 +perft 5 1733716 +perft 6 28194011 + +id gentest-4767 +epd 1k6/8/5pP1/p1p5/P1P3K1/1P6/N4r2/R3R3 b - - +perft 1 17 +perft 2 369 +perft 3 6026 +perft 4 135045 +perft 5 2194131 +perft 6 51054861 + +id gentest-4768 +epd 8/1k6/5pP1/p1p5/P1P3K1/1P6/N3Rr2/R7 w - - +perft 1 27 +perft 2 442 +perft 3 10575 +perft 4 164846 +perft 5 3995507 +perft 6 62753952 + +id gentest-4769 +epd 1k6/8/5pP1/p1p5/PPP5/7K/N3Rr2/R7 b - - +perft 1 15 +perft 2 353 +perft 3 5550 +perft 4 133366 +perft 5 2127725 +perft 6 51938398 + +id gentest-4770 +epd 1k6/8/5pP1/p1p1r3/PPP4K/8/N7/R7 w - - +perft 1 16 +perft 2 299 +perft 3 5000 +perft 4 91788 +perft 5 1651928 +perft 6 29650643 + +id gentest-4771 +epd 8/2k5/5pP1/P1p1r3/PNP4K/8/8/R7 b - - +perft 1 19 +perft 2 342 +perft 3 6035 +perft 4 112795 +perft 5 1930566 +perft 6 37162428 + +id gentest-4772 +epd 8/2k5/P4pP1/2pr4/PNP4K/8/8/R7 w - - +perft 1 21 +perft 2 371 +perft 3 7322 +perft 4 118160 +perft 5 2387637 +perft 6 38039638 + +id gentest-4773 +epd 8/2k3P1/P4p2/2p5/PNP4K/3r4/8/3R4 b - - +perft 1 22 +perft 2 488 +perft 3 7998 +perft 4 185468 +perft 5 2872159 +perft 6 68471621 + +id gentest-4774 +epd 8/2k3P1/P4p2/2p5/PNP4K/7r/8/R7 w - - +perft 1 2 +perft 2 30 +perft 3 656 +perft 4 9571 +perft 5 217819 +perft 6 3252712 + +id gentest-4775 +epd 6Q1/8/Pk3p2/2p5/PNP5/7K/8/R7 b - - +perft 1 5 +perft 2 188 +perft 3 863 +perft 4 31508 +perft 5 146668 +perft 6 5279981 + +id gentest-4776 +epd 1k6/8/P4p2/2p5/PNP5/7K/8/R7 w - - +perft 1 21 +perft 2 117 +perft 3 2509 +perft 4 13283 +perft 5 286871 +perft 6 1583641 + +id gentest-4777 +epd 1k6/8/P7/2p2p2/PNP5/7K/8/R7 b - - +perft 1 6 +perft 2 115 +perft 3 633 +perft 4 12683 +perft 5 71514 +perft 6 1463402 + +id gentest-4778 +epd k7/8/P7/2p5/PNP2p2/7K/8/2R5 w - - +perft 1 20 +perft 2 73 +perft 3 1450 +perft 4 6399 +perft 5 130642 +perft 6 653105 + +id gentest-4779 +epd 1k6/8/P7/2p5/PNP2p2/8/6K1/5R2 b - - +perft 1 6 +perft 2 118 +perft 3 638 +perft 4 12612 +perft 5 70465 +perft 6 1428680 + +id gentest-4780 +epd 3k4/8/P7/2p5/P1P2p2/3N4/6K1/5R2 w - - +perft 1 26 +perft 2 149 +perft 3 3281 +perft 4 21507 +perft 5 480092 +perft 6 2933972 + +id gentest-4781 +epd 8/2k5/P7/2p5/P1P2p2/3N4/6K1/6R1 b - - +perft 1 8 +perft 2 168 +perft 3 989 +perft 4 21995 +perft 5 133375 +perft 6 3068320 + +id gentest-4782 +epd 8/k7/P7/2p1N3/P1P2p2/8/6K1/6R1 w - - +perft 1 21 +perft 2 96 +perft 3 2120 +perft 4 8799 +perft 5 194676 +perft 6 915926 + +id gentest-4783 +epd 8/8/Pk6/2p5/P1P2p2/5N2/6K1/4R3 b - - +perft 1 5 +perft 2 142 +perft 3 656 +perft 4 16644 +perft 5 82509 +perft 6 1926583 + +id gentest-4784 +epd 8/8/P7/2p5/PkP2p2/5N2/6K1/3R4 w - - +perft 1 30 +perft 2 177 +perft 3 4535 +perft 4 23240 +perft 5 553695 +perft 6 3131814 + +id gentest-4785 +epd 8/8/P7/2p5/P1P2p2/2k2N2/6K1/3R4 b - - +perft 1 5 +perft 2 150 +perft 3 819 +perft 4 20915 +perft 5 114184 +perft 6 2723276 + +id gentest-4786 +epd 8/8/P7/2p5/P1PR1p2/2k2N2/6K1/8 w - - +perft 1 24 +perft 2 130 +perft 3 2860 +perft 4 18948 +perft 5 417558 +perft 6 2468936 + +id gentest-4787 +epd 8/8/P7/2p5/PkP1Rp2/5N2/7K/8 b - - +perft 1 5 +perft 2 108 +perft 3 584 +perft 4 12801 +perft 5 74362 +perft 6 1664448 + +id gentest-4788 +epd 8/8/P7/k1p3N1/P1P1R3/5p2/7K/8 w - - +perft 1 21 +perft 2 104 +perft 3 2279 +perft 4 13384 +perft 5 281210 +perft 6 2026647 + +id gentest-4789 +epd 8/8/P3R3/2p5/k1P5/5p1N/7K/8 b - - +perft 1 5 +perft 2 105 +perft 3 684 +perft 4 13855 +perft 5 107005 +perft 6 2123820 + +id gentest-4790 +epd 8/P7/4R3/2p5/2P5/5p1N/2k4K/8 w - - +perft 1 25 +perft 2 207 +perft 3 5273 +perft 4 36867 +perft 5 942484 +perft 6 7011491 + +id gentest-4791 +epd 8/P7/4R3/2p3N1/2P5/5pK1/8/2k5 b - - +perft 1 6 +perft 2 181 +perft 3 1246 +perft 4 36268 +perft 5 267756 +perft 6 7502361 + +id gentest-4792 +epd 8/P7/8/2p1R1N1/2P5/6K1/8/2k2q2 w - - +perft 1 23 +perft 2 448 +perft 3 7792 +perft 4 166691 +perft 5 3387617 +perft 6 72547247 + +id gentest-4793 +epd R7/8/8/2p3N1/2P5/6K1/4R3/3k1q2 b - - +perft 1 15 +perft 2 304 +perft 3 5616 +perft 4 134144 +perft 5 2572769 +perft 6 62998192 + +id gentest-4794 +epd R7/8/8/2p3N1/2P5/6K1/6R1/1k3q2 w - - +perft 1 32 +perft 2 486 +perft 3 10380 +perft 4 177278 +perft 5 4023833 +perft 6 73184117 + +id gentest-4795 +epd R7/8/8/2p5/2P4K/5N2/6R1/2k2q2 b - - +perft 1 12 +perft 2 311 +perft 3 5265 +perft 4 129056 +perft 5 2440026 +perft 6 58794836 + +id gentest-4796 +epd R7/8/8/2p4K/2P5/5N2/2q3R1/2k5 w - - +perft 1 38 +perft 2 699 +perft 3 20272 +perft 4 377965 +perft 5 10555387 +perft 6 202466971 + +id gentest-4797 +epd R7/8/8/2p3RK/2P5/3q4/3N4/2k5 b - - +perft 1 26 +perft 2 676 +perft 3 14550 +perft 4 364433 +perft 5 7744012 +perft 6 191362401 + +id gentest-4798 +epd 4q3/R7/8/2p3RK/2P5/8/3N4/2k5 w - - +perft 1 5 +perft 2 122 +perft 3 3201 +perft 4 66985 +perft 5 1686922 +perft 6 35109654 + +id gentest-4799 +epd 8/R7/6R1/2p3K1/q1P5/8/3N4/2k5 b - - +perft 1 19 +perft 2 607 +perft 3 11252 +perft 4 325554 +perft 5 6366538 +perft 6 175334515 + +id gentest-4800 +epd 8/R7/6R1/2p3K1/1qP5/5N2/8/3k4 w - - +perft 1 37 +perft 2 592 +perft 3 19654 +perft 4 369215 +perft 5 11118367 +perft 6 214521645 + +id gentest-4801 +epd 8/R7/6R1/2p3K1/2P5/5N2/8/3kq3 b - - +perft 1 20 +perft 2 494 +perft 3 9429 +perft 4 252989 +perft 5 4987795 +perft 6 133406402 + +id gentest-4802 +epd 8/4R3/6R1/2p3K1/2P5/4qN2/8/3k4 w - - +perft 1 6 +perft 2 112 +perft 3 2955 +perft 4 52211 +perft 5 1384178 +perft 6 26477329 + +id gentest-4803 +epd 8/4R3/6R1/2p3q1/2P5/5N1K/8/3k4 b - - +perft 1 19 +perft 2 437 +perft 3 8315 +perft 4 207759 +perft 5 4090921 +perft 6 102777008 + +id gentest-4804 +epd 8/4R3/6R1/2p5/2P5/7K/3N4/q2k4 w - - +perft 1 38 +perft 2 685 +perft 3 21067 +perft 4 405132 +perft 5 11285404 +perft 6 217619828 + +id gentest-4805 +epd 8/4R3/6R1/2p2K2/2Pq4/8/3N4/3k4 b - - +perft 1 24 +perft 2 582 +perft 3 12096 +perft 4 297861 +perft 5 5984203 +perft 6 147589287 + +id gentest-4806 +epd 8/4R3/R7/2p2K2/2P5/2q5/3k4/8 w - - +perft 1 34 +perft 2 720 +perft 3 17248 +perft 4 363943 +perft 5 8555617 +perft 6 178786895 + +id gentest-4807 +epd 8/5R2/R7/2p5/2P1K3/1q6/3k4/8 b - - +perft 1 25 +perft 2 590 +perft 3 11959 +perft 4 273175 +perft 5 5550227 +perft 6 123533845 + +id gentest-4808 +epd 8/4R3/R7/2p5/2P1K3/q1k5/8/8 w - - +perft 1 28 +perft 2 420 +perft 3 11221 +perft 4 205535 +perft 5 4924564 +perft 6 95647954 + +id gentest-4809 +epd 8/4R3/1R6/2p5/2P1K3/q7/3k4/8 b - - +perft 1 23 +perft 2 543 +perft 3 10483 +perft 4 236940 +perft 5 4608851 +perft 6 102985161 + +id gentest-4810 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-4811 +epd rnbqkbnr/p1pppppp/8/1p6/6P1/7B/PPPPPP1P/RNBQK1NR b KQkq - +perft 1 21 +perft 2 399 +perft 3 9231 +perft 4 198188 +perft 5 5015655 +perft 6 119034029 + +id gentest-4812 +epd rnbqkbnr/3ppppp/p1p5/1p6/2P3P1/7B/PP1PPP1P/RNBQK1NR w KQkq - +perft 1 22 +perft 2 460 +perft 3 11242 +perft 4 266477 +perft 5 7079128 +perft 6 184752782 + +id gentest-4813 +epd rnbqkbnr/3ppppp/p1p5/6P1/2p5/3P3B/PP2PP1P/RNBQK1NR b KQkq - +perft 1 20 +perft 2 579 +perft 3 13048 +perft 4 398946 +perft 5 10033322 +perft 6 319082590 + +id gentest-4814 +epd rn1qkbnr/1b1pp1pp/p1p2p2/6P1/2P5/7B/PP2PP1P/RNBQK1NR w KQkq - +perft 1 35 +perft 2 627 +perft 3 22049 +perft 4 446838 +perft 5 16083804 +perft 6 359912236 + +id gentest-4815 +epd rn1qkbnr/1b1pp1pp/p1p5/6B1/2P5/7B/PP2PP1P/RN1QK1NR b KQkq - +perft 1 18 +perft 2 668 +perft 3 13538 +perft 4 508673 +perft 5 11617262 +perft 6 438852836 + +id gentest-4816 +epd rn2kb1r/1bqpp1pp/p1p4n/3Q2B1/2P5/7B/PP2PP1P/RN2K1NR w KQkq - +perft 1 48 +perft 2 1092 +perft 3 47520 +perft 4 1149963 +perft 5 47350843 +perft 6 1219241603 + +id gentest-4817 +epd rn2kb1r/1b1pp1pp/p1p4n/6B1/2P5/5Q1B/PP1KPP1q/RN4NR b kq - +perft 1 25 +perft 2 1055 +perft 3 26172 +perft 4 1046634 +perft 5 27721725 +perft 6 1085015460 + +id gentest-4818 +epd rn2kb1r/1b2p1pp/p1p4n/3p2B1/2P5/3Q3B/PP1KPP1q/RN4NR w kq - +perft 1 46 +perft 2 1185 +perft 3 51200 +perft 4 1402699 +perft 5 58563889 +perft 6 1678504478 + +id gentest-4819 +epd rn2kb1r/1b2p1pp/p1p4n/8/2PpQB2/7B/PP1KPP1q/RN4NR b kq - +perft 1 24 +perft 2 1032 +perft 3 25731 +perft 4 1072853 +perft 5 28844821 +perft 6 1176354066 + +id gentest-4820 +epd r3kb1r/1b1np1pp/p1p4n/8/2PpQB2/2N4B/PP1KPq2/R5NR w kq - +perft 1 51 +perft 2 1779 +perft 3 78171 +perft 4 2697682 +perft 5 116596657 +perft 6 4020150684 + +id gentest-4821 +epd r3kb1r/1b1n2pp/p1p4n/4p3/1PPp1B2/2N4B/P2KPq2/RQ4NR b kq - +perft 1 41 +perft 2 1411 +perft 3 55574 +perft 4 1946565 +perft 5 76815080 +perft 6 2755344081 + +id gentest-4822 +epd r3k2r/1b1nb2p/p1p3pn/3Np3/1PPp1B2/7B/P2KPq2/RQ4NR w kq - +perft 1 39 +perft 2 1652 +perft 3 60099 +perft 4 2495117 +perft 5 92564372 +perft 6 3777778288 + +id gentest-4823 +epd r3k2r/1b1Bb2p/p1p3pB/3Np3/1PPp4/5q2/P2KP3/RQ4NR b kq - +perft 1 3 +perft 2 134 +perft 3 5846 +perft 4 225469 +perft 5 8852526 +perft 6 342044036 + +id gentest-4824 +epd r6r/1b1Bb2p/p1p3kB/3Np3/1PPp4/5q2/P2KP3/R5NR w - - +perft 1 41 +perft 2 1778 +perft 3 63276 +perft 4 2472455 +perft 5 87601204 +perft 6 3231692370 + +id gentest-4825 +epd rr6/1b1Bb2p/p1p3kB/3Np3/1PPp4/5q2/P3P3/3K1RNR b - - +perft 1 43 +perft 2 1566 +perft 3 53713 +perft 4 1986274 +perft 5 65287904 +perft 6 2414724836 + +id gentest-4826 +epd rr6/1b1Bb2p/p1p3k1/3Npq2/1PP5/3pB3/P3P3/3K1RNR w - - +perft 1 42 +perft 2 1458 +perft 3 58530 +perft 4 1968863 +perft 5 78139103 +perft 6 2611554274 + +id gentest-4827 +epd rr6/1b5p/p1p1B1k1/2bNpq2/1PP5/3p4/P3P3/2BK1RNR b - - +perft 1 39 +perft 2 1508 +perft 3 51748 +perft 4 1965753 +perft 5 66913663 +perft 6 2513493732 + +id gentest-4828 +epd r5r1/1bN4p/p1p1B1k1/2b1pq2/1PP5/3p4/P3P3/2BK1RNR w - - +perft 1 40 +perft 2 1625 +perft 3 61570 +perft 4 2357404 +perft 5 88283537 +perft 6 3258704252 + +id gentest-4829 +epd 4r1r1/1bN4p/p1p1B1k1/2b1pq2/1PP5/3p4/PB2P2R/3K1RN1 b - - +perft 1 44 +perft 2 1763 +perft 3 68032 +perft 4 2681500 +perft 5 100336323 +perft 6 3895946027 + +id gentest-4830 +epd 1r3br1/1bN4p/p1p1B1k1/4pq2/1PP4R/3p4/PB2P3/3K1RN1 w - - +perft 1 44 +perft 2 1436 +perft 3 58592 +perft 4 1951699 +perft 5 78121848 +perft 6 2627338454 + +id gentest-4831 +epd 1rB2br1/1bN4p/p1p3k1/2P1p3/1P5R/3p1q2/PB2P3/3K1RN1 b - - +perft 1 37 +perft 2 1439 +perft 3 46825 +perft 4 1794742 +perft 5 57649373 +perft 6 2170410318 + +id gentest-4832 +epd 1rB3r1/1bN1b2p/p1p3k1/2P1p3/1PR2q2/3p4/PB2P3/3K1RN1 w - - +perft 1 37 +perft 2 1690 +perft 3 58570 +perft 4 2371850 +perft 5 82956559 +perft 6 3165544869 + +id gentest-4833 +epd 1r4r1/1bNBb3/p1p3kp/2P1p3/1PR1Pq2/3p4/PB6/3K1RN1 b - - +perft 1 45 +perft 2 1425 +perft 3 55215 +perft 4 1783874 +perft 5 65128720 +perft 6 2136181264 + +id gentest-4834 +epd 1r3br1/1bNB4/p1p3kp/2P1p3/1PR1P3/3p1q2/PB1K4/5RN1 w - - +perft 1 39 +perft 2 1307 +perft 3 43691 +perft 4 1411381 +perft 5 47428477 +perft 6 1539674529 + +id gentest-4835 +epd 1r3br1/1bNB4/p1p2Bkp/2P5/1PR1P3/3p4/P2K4/5qN1 b - - +perft 1 32 +perft 2 936 +perft 3 30695 +perft 4 878281 +perft 5 29931256 +perft 6 849478376 + +id gentest-4836 +epd 1r4r1/1bNB4/p1p2Bkp/2b5/1PR1P3/3p4/P7/3K2N1 w - - +perft 1 40 +perft 2 1116 +perft 3 42331 +perft 4 1157445 +perft 5 42172866 +perft 6 1148838431 + +id gentest-4837 +epd 1r4r1/1bNB2B1/p1p3kp/8/1P2P3/3p4/P7/2RK2b1 b - - +perft 1 29 +perft 2 996 +perft 3 26679 +perft 4 880228 +perft 5 23991763 +perft 6 768153180 + +id gentest-4838 +epd br4r1/3B2B1/p1p4p/1N5k/1P2P3/3p4/P7/2RK2b1 w - - +perft 1 34 +perft 2 933 +perft 3 30271 +perft 4 842845 +perft 5 26395297 +perft 6 748424426 + +id gentest-4839 +epd br4r1/1B4B1/p6p/1Np4k/1P2P3/3p4/P7/2RK2b1 b - - +perft 1 25 +perft 2 772 +perft 3 20894 +perft 4 609009 +perft 5 17623759 +perft 6 497427440 + +id gentest-4840 +epd br4r1/6B1/p6p/1N1B3k/1Pp1P3/3p4/P4b2/2RK4 w - - +perft 1 31 +perft 2 1021 +perft 3 29732 +perft 4 975297 +perft 5 27577780 +perft 6 901174594 + +id gentest-4841 +epd Br4r1/6B1/p6p/1N5k/PPp1P3/3p4/8/2RK2b1 b - - +perft 1 29 +perft 2 752 +perft 3 22904 +perft 4 576614 +perft 5 17788816 +perft 6 446627007 + +id gentest-4842 +epd Br2rB2/b7/p6p/1N5k/PPp1P3/3p4/8/2RK4 w - - +perft 1 23 +perft 2 606 +perft 3 14401 +perft 4 398370 +perft 5 9716063 +perft 6 275222875 + +id gentest-4843 +epd Br2rB2/b7/p5kp/P7/1PpNP3/3p4/8/2RK4 b - - +perft 1 25 +perft 2 604 +perft 3 16378 +perft 4 392478 +perft 5 10869501 +perft 6 265217902 + +id gentest-4844 +epd Br3B2/4r3/pb2N1kp/P7/1Pp1P3/3p4/8/2RK4 w - - +perft 1 23 +perft 2 673 +perft 3 16176 +perft 4 461411 +perft 5 11426583 +perft 6 320621907 + +id gentest-4845 +epd 1r3B2/4r3/p3N1kp/P2B4/1PpbP3/3p4/3K4/2R5 b - - +perft 1 37 +perft 2 979 +perft 3 30243 +perft 4 820897 +perft 5 23704030 +perft 6 652030638 + +id gentest-4846 +epd 1r3B2/4r3/p3Nbkp/P2B4/1P2P3/2Rp4/3K4/8 w - - +perft 1 33 +perft 2 944 +perft 3 28562 +perft 4 792358 +perft 5 23645346 +perft 6 641900959 + +id gentest-4847 +epd 5B2/1r2r3/p3Nbkp/PP1B4/4P3/2Rp4/8/4K3 b - - +perft 1 26 +perft 2 765 +perft 3 20361 +perft 4 600495 +perft 5 16057771 +perft 6 476366213 + +id gentest-4848 +epd B4B2/3r1r2/p3Nbkp/PP6/4P3/2Rp4/8/4K3 w - - +perft 1 34 +perft 2 866 +perft 3 24508 +perft 4 668275 +perft 5 18523905 +perft 6 518588597 + +id gentest-4849 +epd B4B2/3r1r2/p3N1kp/PP2b3/8/2Rp4/8/3K4 b - - +perft 1 36 +perft 2 1211 +perft 3 39507 +perft 4 1266674 +perft 5 39691387 +perft 6 1239661233 + +id gentest-4850 +epd B4B2/5r2/p3N1kp/PP2b3/2r5/2Rp4/3K4/8 w - - +perft 1 34 +perft 2 1368 +perft 3 42732 +perft 4 1537142 +perft 5 47259396 +perft 6 1586179572 + +id gentest-4851 +epd B7/5r2/p2BN1kp/PP2b3/5r2/3R4/3K4/8 b - - +perft 1 36 +perft 2 1333 +perft 3 43503 +perft 4 1553201 +perft 5 49509780 +perft 6 1716741170 + +id gentest-4852 +epd B7/5r2/p3N1k1/PP5p/5B2/3R4/1b1K4/8 w - - +perft 1 42 +perft 2 991 +perft 3 36743 +perft 4 821448 +perft 5 29645265 +perft 6 648779509 + +id gentest-4853 +epd B7/5r2/p3N1k1/PP1Rb2p/8/8/3K3B/8 b - - +perft 1 33 +perft 2 958 +perft 3 24375 +perft 4 742801 +perft 5 17140962 +perft 6 538574788 + +id gentest-4854 +epd B2N4/5rk1/8/Pp1Rb2p/8/8/3K3B/8 w - - +perft 1 25 +perft 2 696 +perft 3 18460 +perft 4 462251 +perft 5 13136553 +perft 6 309821162 + +id gentest-4855 +epd 3N4/5rk1/2B5/Pp1R3p/5b2/2K5/7B/8 b - - +perft 1 28 +perft 2 784 +perft 3 19190 +perft 4 566712 +perft 5 13132951 +perft 6 399153850 + +id gentest-4856 +epd 3N4/5r1k/2BB4/Pp1R3p/8/2K5/8/2b5 w - - +perft 1 35 +perft 2 869 +perft 3 26842 +perft 4 614904 +perft 5 19300935 +perft 6 422988414 + +id gentest-4857 +epd 3N4/1r5k/2BB4/Pp1R3p/8/8/2K5/2b5 b - - +perft 1 22 +perft 2 766 +perft 3 15809 +perft 4 555339 +perft 5 11172162 +perft 6 392624491 + +id gentest-4858 +epd 1B1N4/1r5k/1bB5/Pp1R3p/8/8/2K5/8 w - - +perft 1 36 +perft 2 738 +perft 3 25979 +perft 4 529242 +perft 5 18418391 +perft 6 375624341 + +id gentest-4859 +epd 1B6/1r5k/1bB1N3/Pp1R4/7p/3K4/8/8 b - - +perft 1 22 +perft 2 768 +perft 3 15102 +perft 4 522504 +perft 5 10278659 +perft 6 354545423 + +id gentest-4860 +epd 1B6/5r2/1bB1N2k/Pp1R4/4K2p/8/8/8 w - - +perft 1 37 +perft 2 918 +perft 3 30767 +perft 4 692539 +perft 5 22585759 +perft 6 488101030 + +id gentest-4861 +epd 1B6/6r1/1bB4k/Pp3R2/4KN1p/8/8/8 b - - +perft 1 26 +perft 2 807 +perft 3 17984 +perft 4 570921 +perft 5 12223098 +perft 6 390263068 + +id gentest-4862 +epd 1B6/1r4k1/1bB5/PpR5/4KN1p/8/8/8 w - - +perft 1 36 +perft 2 674 +perft 3 22117 +perft 4 422047 +perft 5 13597931 +perft 6 265917442 + +id gentest-4863 +epd 1B6/1r4k1/2B5/Pp6/4KN1p/8/R4b2/8 b - - +perft 1 24 +perft 2 737 +perft 3 15824 +perft 4 503492 +perft 5 10755075 +perft 6 344787316 + +id gentest-4864 +epd 1B2B3/1r4k1/1b6/Pp6/4KN1p/8/R7/8 w - - +perft 1 35 +perft 2 712 +perft 3 23635 +perft 4 489054 +perft 5 15956431 +perft 6 333833195 + +id gentest-4865 +epd 1B6/1r3Bk1/8/Pp6/4KN1p/8/5b1R/8 b - - +perft 1 23 +perft 2 728 +perft 3 14764 +perft 4 461899 +perft 5 9440955 +perft 6 292742932 + +id gentest-4866 +epd 1B6/1r3Bk1/1b6/Pp6/4KN1p/8/R7/8 w - - +perft 1 37 +perft 2 755 +perft 3 25879 +perft 4 530125 +perft 5 17536353 +perft 6 363775858 + +id gentest-4867 +epd 8/1rB2Bk1/1b6/P7/1p2K2p/7N/R7/8 b - - +perft 1 18 +perft 2 651 +perft 3 11768 +perft 4 399315 +perft 5 7633215 +perft 6 246839494 + +id gentest-4868 +epd 6Bk/1rB5/8/P7/1p2K2p/4b2N/R7/8 w - - +perft 1 35 +perft 2 665 +perft 3 22280 +perft 4 423386 +perft 5 13576666 +perft 6 266970239 + +id gentest-4869 +epd 7k/2r4B/8/P7/1p2K2p/4b3/R7/6N1 b - - +perft 1 29 +perft 2 603 +perft 3 15752 +perft 4 333248 +perft 5 8214048 +perft 6 176995876 + +id gentest-4870 +epd 7k/3r3B/8/P4K2/1p5p/8/R2b4/6N1 w - - +perft 1 18 +perft 2 405 +perft 3 7621 +perft 4 174509 +perft 5 3571259 +perft 6 80538258 + +id gentest-4871 +epd 7k/3r3B/6K1/P7/1p6/R6p/3b4/6N1 b - - +perft 1 22 +perft 2 341 +perft 3 7767 +perft 4 135330 +perft 5 3048232 +perft 6 57796923 + +id gentest-4872 +epd 7k/4r2B/6K1/P5b1/1p6/R6p/4N3/8 w - - +perft 1 21 +perft 2 473 +perft 3 9211 +perft 4 206799 +perft 5 4221683 +perft 6 92134171 + +id gentest-4873 +epd 7k/4r2B/8/P4K2/1p3b2/2R4p/4N3/8 b - - +perft 1 29 +perft 2 679 +perft 3 16516 +perft 4 379628 +perft 5 8729367 +perft 6 199714373 + +id gentest-4874 +epd 7k/7B/P7/5K2/1p3b2/2r4p/4N3/8 w - - +perft 1 15 +perft 2 382 +perft 3 5819 +perft 4 133346 +perft 5 2155858 +perft 6 48578637 + +id gentest-4875 +epd 8/P5kB/8/8/1p3K2/2r4p/4N3/8 b - - +perft 1 21 +perft 2 411 +perft 3 7797 +perft 4 166204 +perft 5 3021486 +perft 6 67526280 + +id gentest-4876 +epd 8/P6B/7k/8/1p3K2/r5Np/8/8 w - - +perft 1 21 +perft 2 324 +perft 3 6699 +perft 4 102718 +perft 5 2212126 +perft 6 35495166 + +id gentest-4877 +epd 8/P6B/7k/8/1p2N1K1/2r4p/8/8 b - - +perft 1 17 +perft 2 305 +perft 3 5007 +perft 4 98905 +perft 5 1622340 +perft 6 34680708 + +id gentest-4878 +epd 8/P6B/2r4k/6N1/1p4K1/7p/8/8 w - - +perft 1 22 +perft 2 346 +perft 3 7433 +perft 4 118675 +perft 5 2668294 +perft 6 42833518 + +id gentest-4879 +epd 6B1/P7/4N2k/8/1p4K1/7p/8/2r5 b - - +perft 1 17 +perft 2 302 +perft 3 4860 +perft 4 95961 +perft 5 1551954 +perft 6 33055943 + +id gentest-4880 +epd 5NB1/P7/7k/8/1p4K1/7p/8/5r2 w - - +perft 1 18 +perft 2 310 +perft 3 5830 +perft 4 95402 +perft 5 1978980 +perft 6 32152139 + +id gentest-4881 +epd 5N2/P6B/7k/8/1p6/6Kp/8/1r6 b - - +perft 1 14 +perft 2 253 +perft 3 3922 +perft 4 77054 +perft 5 1247124 +perft 6 26304786 + +id gentest-4882 +epd 5N2/P6B/7k/8/rp4K1/7p/8/8 w - - +perft 1 20 +perft 2 193 +perft 3 3713 +perft 4 56096 +perft 5 1166889 +perft 6 18367665 + +id gentest-4883 +epd Q4N2/8/7k/8/1p4K1/3B3p/r7/8 b - - +perft 1 17 +perft 2 584 +perft 3 8419 +perft 4 277116 +perft 5 4002459 +perft 6 129569446 + +id gentest-4884 +epd Q4N2/8/7k/8/1p5K/3B2rp/8/8 w - - +perft 1 34 +perft 2 437 +perft 3 13155 +perft 4 178705 +perft 5 5380957 +perft 6 74125731 + +id gentest-4885 +epd Q7/2N5/6rk/8/1p5K/3B3p/8/8 b - - +perft 1 17 +perft 2 608 +perft 3 8479 +perft 4 280729 +perft 5 4022357 +perft 6 128988129 + +id gentest-4886 +epd 8/2N1r3/7k/8/Qp5K/3B3p/8/8 w - - +perft 1 35 +perft 2 512 +perft 3 16116 +perft 4 236373 +perft 5 7385137 +perft 6 110184413 + +id gentest-4887 +epd 8/Q1Nr4/6Bk/8/1p5K/7p/8/8 b - - +perft 1 16 +perft 2 482 +perft 3 7402 +perft 4 228017 +perft 5 3392070 +perft 6 104970033 + +id gentest-4888 +epd 4r3/2N5/6Bk/8/1p1Q3K/7p/8/8 w - - +perft 1 43 +perft 2 614 +perft 3 22842 +perft 4 306074 +perft 5 10753161 +perft 6 147045813 + +id gentest-4889 +epd N2Qr3/8/6Bk/8/7K/1p5p/8/8 b - - +perft 1 15 +perft 2 420 +perft 3 5999 +perft 4 174046 +perft 5 2492678 +perft 6 73747569 + +id gentest-4890 +epd NQ6/8/6Bk/8/5r1K/1p5p/8/8 w - - +perft 1 3 +perft 2 39 +perft 3 1083 +perft 4 16375 +perft 5 475047 +perft 6 7106636 + +id gentest-4891 +epd N7/6k1/8/8/4BQ1K/1p5p/8/8 b - - +perft 1 4 +perft 2 152 +perft 3 813 +perft 4 29679 +perft 5 221319 +perft 6 7625053 + +id gentest-4892 +epd N5k1/8/8/8/4BQK1/1p6/7p/8 w - - +perft 1 39 +perft 2 255 +perft 3 9719 +perft 4 87947 +perft 5 2974360 +perft 6 35171599 + +id gentest-4893 +epd N4Q1k/8/8/8/4B3/1p3K2/7p/8 b - - +perft 1 0 +perft 2 0 +perft 3 0 +perft 4 0 +perft 5 0 +perft 6 0 + +id gentest-4894 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-4895 +epd rnbqkbnr/pp1ppppp/8/2p5/1P6/P7/2PPPPPP/RNBQKBNR b KQkq - +perft 1 23 +perft 2 458 +perft 3 11543 +perft 4 259281 +perft 5 7087832 +perft 6 176404262 + +id gentest-4896 +epd rnbqkbnr/1p1ppp1p/p5p1/2p5/1P3P2/P7/2PPP1PP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 457 +perft 3 10419 +perft 4 262228 +perft 5 6606668 +perft 6 180170663 + +id gentest-4897 +epd rnbqkbnr/1p1ppp1p/p7/2p3p1/PP3PP1/8/2PPP2P/RNBQKBNR b KQkq - +perft 1 23 +perft 2 549 +perft 3 13677 +perft 4 352527 +perft 5 9476516 +perft 6 259948029 + +id gentest-4898 +epd rnbqkbnr/1p1ppp1p/8/p5p1/PPp2PP1/3P4/2P1P2P/RNBQKBNR w KQkq - +perft 1 27 +perft 2 640 +perft 3 17682 +perft 4 464985 +perft 5 13251267 +perft 6 377939172 + +id gentest-4899 +epd rnbqkbnr/1p2pp1p/3p4/p5p1/PPp2PP1/3P4/R1P1P2P/1NBQKBNR b Kkq - +perft 1 30 +perft 2 839 +perft 3 25861 +perft 4 729818 +perft 5 23178449 +perft 6 672681117 + +id gentest-4900 +epd rnbqkbnr/1p2pp1p/3p4/6p1/P1p2PP1/1p1P4/2P1P2P/RNBQKBNR w Kkq - +perft 1 27 +perft 2 907 +perft 3 24852 +perft 4 862095 +perft 5 24661026 +perft 6 879904215 + +id gentest-4901 +epd rn1qkbnr/1p2pp1p/3p4/5Pp1/P1p3b1/1p1P3B/2P1P2P/RNBQK1NR b Kkq - +perft 1 34 +perft 2 891 +perft 3 31739 +perft 4 863095 +perft 5 31746960 +perft 6 907637426 + +id gentest-4902 +epd r2qkbnr/1pn1pp1p/3p4/5Pp1/P1p3b1/1p1P3B/1BP1P2P/RN1QK1NR w Kkq - +perft 1 30 +perft 2 1019 +perft 3 30885 +perft 4 1081786 +perft 5 33705422 +perft 6 1208180210 + +id gentest-4903 +epd r2qkbnr/1pn2p1p/3pp3/5Pp1/P1p3B1/1P1P4/1B2P2P/RN1QK1NR b Kkq - +perft 1 33 +perft 2 1131 +perft 3 37055 +perft 4 1282740 +perft 5 42093683 +perft 6 1489148795 + +id gentest-4904 +epd 2q1kbnr/rpn2p1p/3pp3/5PpB/P1p5/1P1P4/1B2P2P/RN1QK1NR w Kk - +perft 1 36 +perft 2 1079 +perft 3 39126 +perft 4 1199779 +perft 5 44286056 +perft 6 1394826108 + +id gentest-4905 +epd 2q1kbnr/rp3p1p/3pp3/3n1PpB/PPp5/3P4/1BQ1P2P/RN2K1NR b Kk - +perft 1 36 +perft 2 1375 +perft 3 47915 +perft 4 1821754 +perft 5 63455706 +perft 6 2419426655 + +id gentest-4906 +epd 2q1k1nr/1p3p1p/3pp2b/r2n1PpB/PPp5/N2P4/1BQ1P2P/R3K1NR w Kk - +perft 1 41 +perft 2 1426 +perft 3 57682 +perft 4 2001000 +perft 5 80090543 +perft 6 2770592190 + +id gentest-4907 +epd 2q1k2r/1p3p1p/3ppn1b/rN1n2pB/PPp5/3P4/1BQ1P2P/R3K1NR b Kk - +perft 1 38 +perft 2 1541 +perft 3 55154 +perft 4 2183493 +perft 5 78961847 +perft 6 3095914585 + +id gentest-4908 +epd 2qk3r/1pN2pbp/3ppn2/r2n2pB/PPp5/3P4/1BQ1P2P/R3K1NR w K - +perft 1 42 +perft 2 1523 +perft 3 62436 +perft 4 2360849 +perft 5 95038871 +perft 6 3651112708 + +id gentest-4909 +epd 2qk1r2/1pN2pbp/3ppn2/P2n2p1/P1p3B1/3P4/1BQ1P2P/R3K1NR b K - +perft 1 32 +perft 2 1316 +perft 3 42252 +perft 4 1693983 +perft 5 55906269 +perft 6 2219681549 + +id gentest-4910 +epd q2k1r2/1pN2p1p/3ppn1b/P2n2p1/P1p3BP/3P4/1BQ1P3/R3K1NR w K - +perft 1 44 +perft 2 1338 +perft 3 56965 +perft 4 1776037 +perft 5 75281611 +perft 6 2386442073 + +id gentest-4911 +epd q2k1r2/1pN2p1p/3ppn1b/P5pP/P1p2nB1/3P4/2Q1P3/R1B1K1NR b K - +perft 1 33 +perft 2 1215 +perft 3 38892 +perft 4 1483469 +perft 5 47513088 +perft 6 1857440549 + +id gentest-4912 +epd 3k1r2/1pN2p1p/3ppn1b/q5pP/P1p3B1/3P4/2QKP1n1/R1B3NR w - - +perft 1 2 +perft 2 77 +perft 3 2377 +perft 4 84514 +perft 5 2830298 +perft 6 98759281 + +id gentest-4913 +epd 3k1r2/1pN2p1p/3ppn1b/q5pP/P1p3Bn/3P4/1Q2P3/R1BK2NR b - - +perft 1 40 +perft 2 1542 +perft 3 55253 +perft 4 2151718 +perft 5 74949184 +perft 6 2934368590 + +id gentest-4914 +epd 5r2/1pk2p1p/3ppn1b/q5BP/P1p3B1/3P1n2/1Q2P3/R2K2NR w - - +perft 1 42 +perft 2 1969 +perft 3 74651 +perft 4 3235617 +perft 5 120465860 +perft 6 4966745183 + +id gentest-4915 +epd 5r2/1pk2p1p/3ppn1b/6BP/P1pQ2B1/3P1n2/2K1P3/R3q1NR b - - +perft 1 48 +perft 2 1726 +perft 3 70841 +perft 4 2588455 +perft 5 102382090 +perft 6 3780245446 + +id gentest-4916 +epd r7/1pk2p1p/3ppn1b/6BP/P1pQ2B1/R2P1n2/2K1P3/6qR w - - +perft 1 42 +perft 2 2001 +perft 3 75322 +perft 4 3355827 +perft 5 126543470 +perft 6 5360448645 + +id gentest-4917 +epd r1k5/1p3p1p/3ppn1b/4Q2P/P1p3BB/R2P1n2/2K1P3/6qR b - - +perft 1 53 +perft 2 2019 +perft 3 91579 +perft 4 3390908 +perft 5 144176810 +perft 6 5322451827 + +id gentest-4918 +epd r1k5/1p3pnp/3pp2b/4Q2P/P1p3BB/R2P1n2/2K1P3/6R1 w - - +perft 1 53 +perft 2 1543 +perft 3 68735 +perft 4 1958380 +perft 5 84237046 +perft 6 2389437661 + +id gentest-4919 +epd 2k5/1p3pnp/r2pp2b/4Q2P/P1pP3B/R4B2/2K1P3/6R1 b - - +perft 1 24 +perft 2 1320 +perft 3 30518 +perft 4 1545207 +perft 5 35921264 +perft 6 1717806436 + +id gentest-4920 +epd 2k2b2/1p3p1p/r2pp3/4Qn1P/P1pP3B/R7/2K1P1B1/6R1 w - - +perft 1 57 +perft 2 1398 +perft 3 70090 +perft 4 1670231 +perft 5 80317423 +perft 6 1887634292 + +id gentest-4921 +epd 2k2b2/1p3p1p/r2pp2n/4Q2P/P1pP3B/3R4/2K1P3/6RB b - - +perft 1 22 +perft 2 1255 +perft 3 27027 +perft 4 1401821 +perft 5 30767852 +perft 6 1488075165 + +id gentest-4922 +epd 2k2b2/1p5p/3pp2n/4Qp1P/r1pP3B/7R/2K1P3/6RB w - - +perft 1 58 +perft 2 1208 +perft 3 61138 +perft 4 1340860 +perft 5 63198906 +perft 6 1430886097 + +id gentest-4923 +epd 2k5/1p2B1bp/3pp2n/3Q1p1P/r1pP4/7R/2K1P3/6RB b - - +perft 1 25 +perft 2 1216 +perft 3 28420 +perft 4 1305063 +perft 5 30836056 +perft 6 1364892759 + +id gentest-4924 +epd 2k5/1p2B1bp/3pp2n/3Q1p1P/2pP4/r6R/2K1P1B1/6R1 w - - +perft 1 46 +perft 2 1229 +perft 3 52396 +perft 4 1321044 +perft 5 56147832 +perft 6 1382861131 + +id gentest-4925 +epd 2k5/1p2B1bp/3pp2n/r2Q1p1P/2pP4/2R5/4P1B1/1K4R1 b - - +perft 1 26 +perft 2 1027 +perft 3 23175 +perft 4 942285 +perft 5 21563228 +perft 6 886119107 + +id gentest-4926 +epd 1k6/1p2B1bp/3pp2n/3Q1p1P/2pP4/2R5/4P1B1/K5R1 w - - +perft 1 44 +perft 2 698 +perft 3 30976 +perft 4 487904 +perft 5 21695235 +perft 6 344182279 + +id gentest-4927 +epd 1k4n1/1p2B1bp/3pp3/3Q1p1P/2pP4/1R6/4P1B1/K5R1 b - - +perft 1 21 +perft 2 923 +perft 3 16135 +perft 4 704692 +perft 5 11672207 +perft 6 506954282 + +id gentest-4928 +epd 1k4n1/1p2B2p/3pp2b/3Q1p1P/2pP4/1R2P3/6B1/K5R1 w - - +perft 1 42 +perft 2 666 +perft 3 28774 +perft 4 454741 +perft 5 19684193 +perft 6 314576517 + +id gentest-4929 +epd 1k4n1/1p2B2p/3pp3/4Qp1P/2pP4/1R2b3/8/K5RB b - - +perft 1 22 +perft 2 1113 +perft 3 21227 +perft 4 1011494 +perft 5 18427095 +perft 6 838047029 + +id gentest-4930 +epd 1k6/1p2B2p/3pp3/4QpRP/2pPn3/1R2b3/8/K6B w - - +perft 1 44 +perft 2 967 +perft 3 40497 +perft 4 839781 +perft 5 34946278 +perft 6 689195319 + +id gentest-4931 +epd 1k6/4B2p/3pp3/1Q3pRP/2pPn3/4b3/8/KR5B b - - +perft 1 4 +perft 2 176 +perft 3 2651 +perft 4 113840 +perft 5 1723361 +perft 6 74736536 + +id gentest-4932 +epd 2k5/4B2p/3pp3/5QbP/2pPn3/8/8/KR5B w - - +perft 1 43 +perft 2 768 +perft 3 31300 +perft 4 545708 +perft 5 21453280 +perft 6 361792945 + +id gentest-4933 +epd 2k5/4B2Q/3pp3/7P/2pPn2b/8/8/K1R4B b - - +perft 1 20 +perft 2 633 +perft 3 10062 +perft 4 349593 +perft 5 5356539 +perft 6 193509469 + +id gentest-4934 +epd 8/3kB2Q/3pp3/2n4P/2pP3b/8/2R5/K6B w - - +perft 1 38 +perft 2 574 +perft 3 20950 +perft 4 324135 +perft 5 12015554 +perft 6 186024805 + +id gentest-4935 +epd 8/3kB2Q/4p3/2np3P/2pPB2b/2R5/8/K7 b - - +perft 1 18 +perft 2 623 +perft 3 9723 +perft 4 347199 +perft 5 5405039 +perft 6 196964151 + +id gentest-4936 +epd 8/4B2Q/2k1p3/3p3P/2pP3b/2RB4/8/K7 w - - +perft 1 34 +perft 2 381 +perft 3 14020 +perft 4 165403 +perft 5 6249571 +perft 6 73699685 + +id gentest-4937 +epd 8/4B2Q/4p3/1k1p3P/2BP3b/8/2R5/K7 b - - +perft 1 5 +perft 2 189 +perft 3 1898 +perft 4 75272 +perft 5 809026 +perft 6 32027472 + +id gentest-4938 +epd 8/7Q/4pb2/2Bp3P/k1BP4/8/2R5/K7 w - - +perft 1 42 +perft 2 417 +perft 3 16000 +perft 4 150843 +perft 5 6017905 +perft 6 57851283 + +id gentest-4939 +epd 8/7Q/4pb2/2B4P/k1RP4/8/8/1K6 b - - +perft 1 3 +perft 2 99 +perft 3 1010 +perft 4 34010 +perft 5 336733 +perft 6 11898967 + +id gentest-4940 +epd 8/4Q3/4p3/1kB3bP/2RP4/8/8/1K6 w - - +perft 1 30 +perft 2 334 +perft 3 11084 +perft 4 115374 +perft 5 4001425 +perft 6 40744172 + +id gentest-4941 +epd 8/8/4Q3/1kB4P/3P3b/2R5/8/1K6 b - - +perft 1 9 +perft 2 435 +perft 3 3528 +perft 4 156802 +perft 5 1323643 +perft 6 56596146 + +id gentest-4942 +epd 8/8/4Q2P/1kB5/3P4/2R3b1/8/1K6 w - - +perft 1 47 +perft 2 440 +perft 3 19527 +perft 4 177783 +perft 5 7661474 +perft 6 69290147 + +id gentest-4943 +epd 8/8/6QP/1kB5/3P4/2R5/5b2/1K6 b - - +perft 1 8 +perft 2 353 +perft 3 2937 +perft 4 125825 +perft 5 1121630 +perft 6 47251041 + +id gentest-4944 +epd 8/B7/6QP/1k6/3P4/2R5/8/1Kb5 w - - +perft 1 44 +perft 2 360 +perft 3 14873 +perft 4 132490 +perft 5 5327824 +perft 6 48991640 + +id gentest-4945 +epd 8/B7/5Q1P/8/k2P4/2R5/8/1Kb5 b - - +perft 1 10 +perft 2 421 +perft 3 3798 +perft 4 154079 +perft 5 1389120 +perft 6 54943734 + +id gentest-4946 +epd 8/B1R5/5Q1P/8/1k1P4/8/1b6/1K6 w - - +perft 1 41 +perft 2 350 +perft 3 13574 +perft 4 106223 +perft 5 4121774 +perft 6 36377434 + +id gentest-4947 +epd 8/B1R5/7P/1Q6/3P4/k7/1b6/1K6 b - - +perft 1 4 +perft 2 168 +perft 3 1078 +perft 4 41724 +perft 5 326024 +perft 6 12736109 + +id gentest-4948 +epd 8/B1R5/7P/b4Q2/3P4/k7/8/1K6 w - - +perft 1 45 +perft 2 354 +perft 3 14132 +perft 4 112479 +perft 5 4308781 +perft 6 37197085 + +id gentest-4949 +epd 8/B7/2R4P/8/3P4/k1bQ4/8/1K6 b - - +perft 1 3 +perft 2 106 +perft 3 739 +perft 4 28131 +perft 5 215180 +perft 6 8403234 + +id gentest-4950 +epd 8/B6Q/2R4P/8/1k1P4/8/8/bK6 w - - +perft 1 34 +perft 2 245 +perft 3 8432 +perft 4 61809 +perft 5 2223430 +perft 6 19517090 + +id gentest-4951 +epd 7Q/B7/6RP/k7/3P4/8/8/bK6 b - - +perft 1 6 +perft 2 196 +perft 3 1660 +perft 4 56014 +perft 5 505922 +perft 6 17998567 + +id gentest-4952 +epd 8/B7/5QRP/k7/3P4/2b5/8/1K6 w - - +perft 1 34 +perft 2 246 +perft 3 9559 +perft 4 82057 +perft 5 3252268 +perft 6 29688690 + +id gentest-4953 +epd 8/8/Q5RP/k1B5/3P4/8/8/bK6 b - - +perft 1 0 +perft 2 0 +perft 3 0 +perft 4 0 +perft 5 0 +perft 6 0 + +id gentest-4954 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-4955 +epd rnbqkbnr/pppppp1p/8/6p1/2P5/8/PP1PPPPP/RNBQKBNR b KQkq - +perft 1 21 +perft 2 462 +perft 3 10556 +perft 4 259039 +perft 5 6427261 +perft 6 171946254 + +id gentest-4956 +epd rn1qkbnr/ppp1pp1p/4b3/3p2p1/2P5/1Q6/PP1PPPPP/RNB1KBNR w KQkq - +perft 1 33 +perft 2 906 +perft 3 29311 +perft 4 842072 +perft 5 27253917 +perft 6 810869744 + +id gentest-4957 +epd rn1qkbnr/p1p1pp1p/4b3/1p1p2p1/2P5/NQ2P3/PP1P1PPP/R1B1KBNR b KQkq - +perft 1 29 +perft 2 864 +perft 3 25107 +perft 4 775794 +perft 5 23249302 +perft 6 738996969 + +id gentest-4958 +epd rn1qkbnr/p1p1p2p/4bp2/1p4p1/2p1P3/NQ6/PP1P1PPP/R1B1KBNR w KQkq - +perft 1 34 +perft 2 1081 +perft 3 35178 +perft 4 1117318 +perft 5 36541695 +perft 6 1172623510 + +id gentest-4959 +epd rn2kbnr/p1p1p2p/3qbp2/1p4p1/2B1P3/NQ6/PP1P1PPP/R1BK2NR b kq - +perft 1 43 +perft 2 1430 +perft 3 53648 +perft 4 1809963 +perft 5 64702348 +perft 6 2205979759 + +id gentest-4960 +epd rn2kbnr/p1p1p2p/4Bp2/1p4p1/1q2P3/NQ5b/PP1P1PPP/R1BK2NR w kq - +perft 1 39 +perft 2 1120 +perft 3 38890 +perft 4 1151975 +perft 5 39601674 +perft 6 1203871707 + +id gentest-4961 +epd rn2kbnr/p1p1p2p/4Bp2/1p4p1/1q2P1b1/N3Q3/PP1P1PPP/R1B1K1NR b kq - +perft 1 33 +perft 2 1229 +perft 3 39862 +perft 4 1457212 +perft 5 47726366 +perft 6 1723858328 + +id gentest-4962 +epd rn3bnr/p1pBpk1p/5p2/1p4p1/4q1b1/N3Q3/PP1P1PPP/R1B1K1NR w - - +perft 1 27 +perft 2 1068 +perft 3 34875 +perft 4 1250559 +perft 5 43618971 +perft 6 1506063664 + +id gentest-4963 +epd rn3bnr/pBp1pk1p/5p2/1p4p1/6b1/N3Q3/PP1P1PPP/R1B1K1NR b - - +perft 1 28 +perft 2 1179 +perft 3 30344 +perft 4 1237350 +perft 5 31616814 +perft 6 1267752608 + +id gentest-4964 +epd rn3b1r/pBp1pk1p/4bp1n/1p4p1/8/N3Q3/PP1P1PPP/R1B2KNR w - - +perft 1 44 +perft 2 1181 +perft 3 47975 +perft 4 1261222 +perft 5 49848182 +perft 6 1310873122 + +id gentest-4965 +epd rn3b1r/p1p1p2p/B3kp1n/1p4p1/8/N7/PP1P1PPP/R1B2KNR b - - +perft 1 20 +perft 2 457 +perft 3 9313 +perft 4 222070 +perft 5 4725709 +perft 6 117843662 + +id gentest-4966 +epd rn3b1r/p1p1p2p/B1k2p1n/1p4p1/8/N7/PP1P1PPP/R1B1K1NR w - - +perft 1 24 +perft 2 402 +perft 3 9998 +perft 4 191096 +perft 5 4928004 +perft 6 102895527 + +id gentest-4967 +epd rn3b1r/p1p1p2p/B1k4n/1p3pp1/8/8/PPNPKPPP/R1B3NR b - - +perft 1 17 +perft 2 485 +perft 3 8989 +perft 4 249909 +perft 5 5205688 +perft 6 144165616 + +id gentest-4968 +epd rn3b1r/p1p1p2p/B1k4n/5pp1/8/1p3N2/PPNPKPPP/R1B4R w - - +perft 1 35 +perft 2 551 +perft 3 18329 +perft 4 342242 +perft 5 11067839 +perft 6 232045693 + +id gentest-4969 +epd rn3b1r/p1p1p2p/B1k4n/5pN1/8/8/PPpP1PPP/R1B2K1R b - - +perft 1 15 +perft 2 427 +perft 3 7788 +perft 4 217032 +perft 5 4548523 +perft 6 125772830 + +id gentest-4970 +epd rn3b1r/p3p2p/B1pk3n/5pN1/8/8/PPpP1PPP/R1B1K2R w - - +perft 1 30 +perft 2 473 +perft 3 13724 +perft 4 245920 +perft 5 6991944 +perft 6 142885527 + +id gentest-4971 +epd rn5r/p3p1bp/B1pk3n/5pN1/3P1B2/8/PPp2PPP/R3K2R b - - +perft 1 4 +perft 2 151 +perft 3 3218 +perft 4 109900 +perft 5 2613607 +perft 6 88592807 + +id gentest-4972 +epd rn4r1/p2kp1bp/B1p4n/4BpN1/3P4/8/PPp2PPP/R3K2R w - - +perft 1 39 +perft 2 843 +perft 3 29389 +perft 4 712385 +perft 5 24608427 +perft 6 641474146 + +id gentest-4973 +epd rn4r1/p2kp1bp/B1p4n/4BpN1/3P4/8/PP2KPPP/R1r4R b - - +perft 1 28 +perft 2 1060 +perft 3 29354 +perft 4 1104057 +perft 5 31347985 +perft 6 1160018790 + +id gentest-4974 +epd rn4r1/p2kpn1p/B1p2b2/4Bp2/3P4/5N2/PP2KPPP/R1r4R w - - +perft 1 35 +perft 2 1407 +perft 3 48985 +perft 4 1804803 +perft 5 63325550 +perft 6 2220749302 + +id gentest-4975 +epd rn4r1/p2kpn1p/B1p2b2/2r1Bp2/P2P3P/5N2/1P2KPP1/R6R b - - +perft 1 38 +perft 2 1667 +perft 3 57981 +perft 4 2352659 +perft 5 79127423 +perft 6 3044355081 + +id gentest-4976 +epd rn4r1/p2kpn1p/B1pB4/r4p2/P2b3P/5N2/1P2KPP1/R6R w - - +perft 1 48 +perft 2 2042 +perft 3 87559 +perft 4 3392403 +perft 5 135906342 +perft 6 4972637568 + +id gentest-4977 +epd rn4r1/p2kp2p/B1pB4/r3np2/P2b3P/5N1R/1P2KPP1/5R2 b - - +perft 1 39 +perft 2 1428 +perft 3 51718 +perft 4 1868428 +perft 5 66598863 +perft 6 2366156904 + +id gentest-4978 +epd rn4r1/p2kp2p/B1pB4/r3np2/P2b3P/5N1R/1P2KPP1/6R1 w - - +perft 1 37 +perft 2 1350 +perft 3 49968 +perft 4 1781403 +perft 5 64895531 +perft 6 2281815742 + +id gentest-4979 +epd rn4r1/p2kp2p/2pB4/1B2Np2/r2b3P/7R/1P2KPP1/6R1 b - - +perft 1 6 +perft 2 276 +perft 3 10196 +perft 4 434053 +perft 5 15673121 +perft 6 630832585 + +id gentest-4980 +epd rn6/p2Np1rp/2pBk3/1B3p2/r2b3P/7R/1P2KPP1/6R1 w - - +perft 1 50 +perft 2 1624 +perft 3 73480 +perft 4 2452091 +perft 5 102830688 +perft 6 3449081533 + +id gentest-4981 +epd rn6/p2Np1rp/2pBk3/rB3p2/3b3P/8/1P3PPR/4K1R1 b - - +perft 1 34 +perft 2 1103 +perft 3 35711 +perft 4 1116160 +perft 5 36785084 +perft 6 1129509832 + +id gentest-4982 +epd rn4r1/p2Np2p/2p1k3/rBb2p2/5B1P/8/1P3PPR/4K1R1 w - - +perft 1 37 +perft 2 1126 +perft 3 37095 +perft 4 1126717 +perft 5 36282734 +perft 6 1117797899 + +id gentest-4983 +epd rn4r1/p2kp2p/2p5/rBb2p2/5B1P/8/1P3PPR/2K3R1 b - - +perft 1 35 +perft 2 1038 +perft 3 33502 +perft 4 990667 +perft 5 32071943 +perft 6 945027465 + +id gentest-4984 +epd rn4r1/p2k3p/2pb4/rB2Bp2/7P/8/1P3PPR/2K3R1 w - - +perft 1 32 +perft 2 1123 +perft 3 34713 +perft 4 1175271 +perft 5 36030065 +perft 6 1196467649 + +id gentest-4985 +epd rn4r1/p3k2p/2pb4/rB3p2/6PP/6B1/1P3P1R/2K3R1 b - - +perft 1 38 +perft 2 1033 +perft 3 36033 +perft 4 996595 +perft 5 34176434 +perft 6 963682834 + +id gentest-4986 +epd rn6/p3k2p/2pb1r2/rB2Bp2/6PP/8/1P3P1R/2K3R1 w - - +perft 1 33 +perft 2 982 +perft 3 31686 +perft 4 963366 +perft 5 31087909 +perft 6 965744171 + +id gentest-4987 +epd rn6/p3k2p/2pb1B2/1r3p2/6PP/8/1P3P1R/2K3R1 b - - +perft 1 6 +perft 2 160 +perft 3 4866 +perft 4 123492 +perft 5 3618744 +perft 6 93256723 + +id gentest-4988 +epd rn6/p4k1p/2p2B2/1r3p2/1P3bPP/8/5P1R/2K3R1 w - - +perft 1 4 +perft 2 124 +perft 3 3459 +perft 4 103918 +perft 5 2885124 +perft 6 85692245 + +id gentest-4989 +epd rn3k2/p6p/2p2B2/1r3p2/1P3bPP/8/1K3PRR/8 b - - +perft 1 28 +perft 2 606 +perft 3 15863 +perft 4 365445 +perft 5 9739870 +perft 6 236812405 + +id gentest-4990 +epd rn3k2/p6p/2pb1B2/1r3p2/1P4PP/8/5PR1/K7 w - - +perft 1 20 +perft 2 493 +perft 3 9812 +perft 4 247596 +perft 5 5138875 +perft 6 133380806 + +id gentest-4991 +epd rn3k2/p6p/2p5/1r2Bp2/1b4PP/8/5PR1/K7 b - - +perft 1 27 +perft 2 546 +perft 3 14238 +perft 4 266293 +perft 5 7213669 +perft 6 136834291 + +id gentest-4992 +epd rn3k2/p6p/2p5/4Bp2/1b4PP/8/5P2/K1r3R1 w - - +perft 1 3 +perft 2 83 +perft 3 2098 +perft 4 53349 +perft 5 1252366 +perft 6 32056549 + +id gentest-4993 +epd rn3k2/p6p/2p5/4Bp2/6PP/8/5P2/KR2b3 b - - +perft 1 18 +perft 2 496 +perft 3 8766 +perft 4 227105 +perft 5 4271881 +perft 6 107203047 + +id gentest-4994 +epd rn4k1/p6p/2p5/4Bp2/6PP/8/K4b2/1R6 w - - +perft 1 34 +perft 2 633 +perft 3 18647 +perft 4 365310 +perft 5 9903510 +perft 6 202790802 + +id gentest-4995 +epd rn4k1/p6p/2p5/5p2/3b2PP/6B1/K7/1R6 b - - +perft 1 25 +perft 2 665 +perft 3 15032 +perft 4 377332 +perft 5 8424587 +perft 6 205467762 + +id gentest-4996 +epd r5k1/p2n2bp/2p5/5p2/6PP/1R4B1/K7/8 w - - +perft 1 25 +perft 2 710 +perft 3 18003 +perft 4 498269 +perft 5 12262498 +perft 6 336588722 + +id gentest-4997 +epd r4nk1/p5bp/2p5/5p1P/6P1/4R1B1/K7/8 b - - +perft 1 23 +perft 2 604 +perft 3 14618 +perft 4 371944 +perft 5 9265328 +perft 6 228235106 + +id gentest-4998 +epd r4nk1/6bp/p1p1R3/7P/5pP1/6B1/K7/8 w - - +perft 1 22 +perft 2 477 +perft 3 10321 +perft 4 232266 +perft 5 4991180 +perft 6 116047172 + +id gentest-4999 +epd r4nk1/6bp/2p5/p6P/5pP1/8/K4B2/4R3 b - - +perft 1 23 +perft 2 610 +perft 3 14596 +perft 4 357098 +perft 5 8719653 +perft 6 203182046 + +id gentest-5000 +epd r4n2/6bp/2p2k2/p6P/5pP1/8/K3RB2/8 w - - +perft 1 26 +perft 2 397 +perft 3 10098 +perft 4 182634 +perft 5 4409799 +perft 6 88325702 + +id gentest-5001 +epd r4n2/7p/2p2k1b/p6P/5pP1/4R3/K4B2/8 b - - +perft 1 18 +perft 2 412 +perft 3 7515 +perft 4 176068 +perft 5 3444664 +perft 6 78840139 + +id gentest-5002 +epd r4n2/7p/2p2k1b/p6P/5pP1/8/K4B2/4R3 w - - +perft 1 28 +perft 2 447 +perft 3 11426 +perft 4 205504 +perft 5 4949845 +perft 6 96755151 + +id gentest-5003 +epd r4n2/6kp/2p4b/p5PP/5p2/K7/5B2/4R3 b - - +perft 1 16 +perft 2 440 +perft 3 7451 +perft 4 186496 +perft 5 3460550 +perft 6 81788935 + +id gentest-5004 +epd 3r1n1k/7p/2p4b/p5PP/5p2/K3R3/5B2/8 w - - +perft 1 23 +perft 2 485 +perft 3 11064 +perft 4 225883 +perft 5 4997602 +perft 6 103953326 + +id gentest-5005 +epd 3r1nk1/7p/2p4b/p5PP/5p2/K2RB3/8/8 b - - +perft 1 21 +perft 2 454 +perft 3 9243 +perft 4 211034 +perft 5 4436743 +perft 6 99717943 + +id gentest-5006 +epd 4rn2/6kp/2p4b/p5PP/K4p2/3RB3/8/8 w - - +perft 1 24 +perft 2 418 +perft 3 9610 +perft 4 179900 +perft 5 4010307 +perft 6 78747217 + +id gentest-5007 +epd r4n2/6kp/2p4b/p2R2PP/K4p2/8/5B2/8 b - - +perft 1 16 +perft 2 388 +perft 3 6334 +perft 4 142432 +perft 5 2540038 +perft 6 55616362 + +id gentest-5008 +epd 5nk1/7p/r1p4b/p5PP/K4p2/3R4/5B2/8 w - - +perft 1 27 +perft 2 345 +perft 3 8214 +perft 4 127679 +perft 5 2853072 +perft 6 49835384 + +id gentest-5009 +epd 5n2/5k1p/r1p4P/p6P/K4p2/3R4/8/4B3 b - - +perft 1 13 +perft 2 298 +perft 3 4178 +perft 4 84638 +perft 5 1305743 +perft 6 25873951 + +id gentest-5010 +epd 3R1n2/7p/r4k1P/p1p4P/K4p2/8/8/4B3 w - - +perft 1 22 +perft 2 326 +perft 3 6732 +perft 4 110124 +perft 5 2229652 +perft 6 38504519 + +id gentest-5011 +epd 3R1n2/7p/r4k1P/p1p4P/K7/4Bp2/8/8 b - - +perft 1 16 +perft 2 366 +perft 3 5706 +perft 4 124179 +perft 5 2081680 +perft 6 44290234 + +id gentest-5012 +epd 3R4/7p/3r1knP/p1p4P/K4B2/5p2/8/8 w - - +perft 1 22 +perft 2 418 +perft 3 9100 +perft 4 176574 +perft 5 3792781 +perft 6 74260058 + +id gentest-5013 +epd 7R/7p/5knP/K1p4P/3r1B2/5p2/8/8 b - - +perft 1 24 +perft 2 466 +perft 3 9936 +perft 4 191471 +perft 5 3988854 +perft 6 78349951 + +id gentest-5014 +epd 7R/7p/5k1P/1Kp4P/r4B1n/5p2/8/8 w - - +perft 1 22 +perft 2 410 +perft 3 8480 +perft 4 158867 +perft 5 3372000 +perft 6 64361720 + +id gentest-5015 +epd R7/7p/5k1P/1K5P/r1p4n/5pB1/8/8 b - - +perft 1 18 +perft 2 390 +perft 3 6734 +perft 4 147770 +perft 5 2701894 +perft 6 60107615 + +id gentest-5016 +epd R7/7p/2K4P/6kP/1rp4n/5pB1/8/8 w - - +perft 1 28 +perft 2 451 +perft 3 11142 +perft 4 202485 +perft 5 4766761 +perft 6 92192495 + +id gentest-5017 +epd RB6/7p/2K4P/6kP/2p4n/1r3p2/8/8 b - - +perft 1 21 +perft 2 384 +perft 3 7691 +perft 4 165194 +perft 5 3366363 +perft 6 74827062 + +id gentest-5018 +epd 1r6/R6p/2K4P/6kP/2p4n/5p2/8/8 w - - +perft 1 19 +perft 2 427 +perft 3 6881 +perft 4 149661 +perft 5 2436084 +perft 6 52319208 + +id gentest-5019 +epd 6r1/7p/2K4P/6kP/2p4n/5p2/R7/8 b - - +perft 1 20 +perft 2 398 +perft 3 8583 +perft 4 154896 +perft 5 3328034 +perft 6 56249549 + +id gentest-5020 +epd 7r/R6p/2K4P/5k1P/2p4n/5p2/8/8 w - - +perft 1 22 +perft 2 360 +perft 3 6343 +perft 4 117402 +perft 5 1991991 +perft 6 39283474 + +id gentest-5021 +epd 4r3/1R5p/7P/3K1k1P/2p4n/5p2/8/8 b - - +perft 1 22 +perft 2 379 +perft 3 7796 +perft 4 126188 +perft 5 2600598 +perft 6 41308249 + +id gentest-5022 +epd 8/7p/7P/3K2kP/2p1r2n/5p2/1R6/8 w - - +perft 1 18 +perft 2 351 +perft 3 5364 +perft 4 106594 +perft 5 1643654 +perft 6 33727992 + +id gentest-5023 +epd 8/7p/R6P/3K2kP/4r2n/2p2p2/8/8 b - - +perft 1 22 +perft 2 352 +perft 3 7510 +perft 4 112131 +perft 5 2387686 +perft 6 36788255 + +id gentest-5024 +epd 8/7p/2R4P/3K2kP/5r1n/2p2p2/8/8 w - - +perft 1 15 +perft 2 262 +perft 3 3575 +perft 4 65627 +perft 5 951922 +perft 6 18766833 + +id gentest-5025 +epd 8/2R4p/7P/3K1nkP/5r2/2p2p2/8/8 b - - +perft 1 22 +perft 2 318 +perft 3 7053 +perft 4 96378 +perft 5 2138075 +perft 6 30765128 + +id gentest-5026 +epd 8/7p/2R4P/3K1nkP/2r5/2p2p2/8/8 w - - +perft 1 13 +perft 2 280 +perft 3 3399 +perft 4 70344 +perft 5 936406 +perft 6 19649163 + +id gentest-5027 +epd 8/8/4K1pP/5nkP/2r5/2p2p2/8/8 b - - +perft 1 27 +perft 2 160 +perft 3 4135 +perft 4 25782 +perft 5 651543 +perft 6 4730068 + +id gentest-5028 +epd 8/3K4/6pP/5nk1/2r5/2p2p2/8/8 w - - +perft 1 4 +perft 2 107 +perft 3 569 +perft 4 14150 +perft 5 100240 +perft 6 2362837 + +id gentest-5029 +epd 2r5/3K4/6pP/5nk1/8/2p2p2/8/8 b - - +perft 1 27 +perft 2 102 +perft 3 2446 +perft 4 14138 +perft 5 330417 +perft 6 2349813 + +id gentest-5030 +epd 2r5/8/4K1pP/5n2/7k/2p5/5p2/8 w - - +perft 1 6 +perft 2 173 +perft 3 929 +perft 4 25718 +perft 5 162919 +perft 6 4441141 + +id gentest-5031 +epd 3r4/8/6KP/5n2/7k/2p5/5p2/8 b - - +perft 1 29 +perft 2 134 +perft 3 3871 +perft 4 18693 +perft 5 511544 +perft 6 3065899 + +id gentest-5032 +epd 3r4/7K/7P/8/3n3k/2p5/8/5r2 w - - +perft 1 2 +perft 2 74 +perft 3 247 +perft 4 9057 +perft 5 36271 +perft 6 1196962 + +id gentest-5033 +epd 6K1/8/3r3P/8/3n3k/2p5/8/5r2 b - - +perft 1 38 +perft 2 155 +perft 3 5777 +perft 4 24395 +perft 5 837731 +perft 6 3775907 + +id gentest-5034 +epd 7K/8/3r3P/8/3n3k/2p5/8/1r6 w - - +perft 1 4 +perft 2 152 +perft 3 588 +perft 4 22003 +perft 5 109900 +perft 6 3840053 + +id gentest-5035 +epd 7K/8/3r3P/8/3n3k/2p5/8/7r b - - +perft 1 33 +perft 2 120 +perft 3 4210 +perft 4 15724 +perft 5 557893 +perft 6 2822311 + +id gentest-5036 +epd 8/7K/2nr3P/8/7k/2p5/8/1r6 w - - +perft 1 3 +perft 2 117 +perft 3 574 +perft 4 21937 +perft 5 99796 +perft 6 3601636 + +id gentest-5037 +epd 7K/1r6/2nr3P/8/7k/2p5/8/8 b - - +perft 1 39 +perft 2 88 +perft 3 3294 +perft 4 8832 +perft 5 320536 +perft 6 1512911 + +id gentest-5038 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-5039 +epd rnbqkbnr/pppp1ppp/4p3/8/2P5/8/PPQPPPPP/RNB1KBNR b KQkq - +perft 1 30 +perft 2 860 +perft 3 26337 +perft 4 785252 +perft 5 24602596 +perft 6 754751295 + +id gentest-5040 +epd rnbqk1nr/pppp2pp/4p3/5p2/2P5/b7/PPQPPPPP/R1B1KBNR w KQkq - +perft 1 26 +perft 2 818 +perft 3 22431 +perft 4 712453 +perft 5 20322900 +perft 6 654337104 + +id gentest-5041 +epd rnbqk2r/pppp2pp/4p2n/5p2/2P5/b3P3/PPQP1PPP/1RB1KBNR b Kkq - +perft 1 33 +perft 2 926 +perft 3 31073 +perft 4 906324 +perft 5 30628460 +perft 6 919292560 + +id gentest-5042 +epd rnbqk2r/ppppb1pp/4p2n/5p2/2P5/3QP3/PP1P1PPP/1RB1KBNR w Kkq - +perft 1 30 +perft 2 868 +perft 3 26743 +perft 4 788234 +perft 5 24774597 +perft 6 747448248 + +id gentest-5043 +epd rnbqk2r/pppp2pp/4pb1n/5p2/2P5/1P2P3/P1QP1PPP/1RB1KBNR b Kkq - +perft 1 32 +perft 2 957 +perft 3 30990 +perft 4 951179 +perft 5 31185502 +perft 6 978896203 + +id gentest-5044 +epd rnbqk1nr/ppppb1pp/4p3/5p2/2P5/1P2P3/P2P1PPP/1RBQKBNR w Kkq - +perft 1 28 +perft 2 756 +perft 3 21273 +perft 4 605175 +perft 5 17462818 +perft 6 517991261 + +id gentest-5045 +epd rnbqk1nr/ppppb2p/4p1p1/2P2p2/8/1P2PP2/P2P2PP/1RBQKBNR b Kkq - +perft 1 24 +perft 2 624 +perft 3 16179 +perft 4 433591 +perft 5 11959057 +perft 6 332274636 + +id gentest-5046 +epd rnbq2nr/ppppbk1p/2P1p1p1/5p2/8/1P2PP2/P2P2PP/1RBQKBNR w K - +perft 1 28 +perft 2 862 +perft 3 23913 +perft 4 750076 +perft 5 21548757 +perft 6 685201138 + +id gentest-5047 +epd rnb2qnr/pppPbk1p/4p1p1/5p2/8/1P2PP2/PR1P2PP/2BQKBNR b K - +perft 1 31 +perft 2 936 +perft 3 29500 +perft 4 895759 +perft 5 28804663 +perft 6 891320588 + +id gentest-5048 +epd rnb2q1r/pp1Pbk1p/4p1pn/2p2p2/8/1P2PP2/PR1PQ1PP/2B1KBNR w K - +perft 1 30 +perft 2 791 +perft 3 24008 +perft 4 675596 +perft 5 21717632 +perft 6 639131856 + +id gentest-5049 +epd r1b2q1r/pp1Pbk1p/n3p1pn/2p2p2/6P1/PP2PP2/1R1PQ2P/2B1KBNR b K - +perft 1 27 +perft 2 840 +perft 3 23950 +perft 4 770026 +perft 5 23033167 +perft 6 764848090 + +id gentest-5050 +epd r1bB1qr1/p3bk1p/np2p1pn/2p2p2/6P1/PP2PP2/1R1PQ2P/2B1KBNR w K - +perft 1 28 +perft 2 717 +perft 3 20873 +perft 4 582873 +perft 5 17964538 +perft 6 536721710 + +id gentest-5051 +epd r2B1qr1/p2bbk1p/np2p1pn/2p2p2/6PP/PP2PP2/1R1PQ3/2B1KBNR b K - +perft 1 31 +perft 2 893 +perft 3 28530 +perft 4 876293 +perft 5 28856058 +perft 6 928682175 + +id gentest-5052 +epd r2B1qr1/p2bbk1p/np2p1pn/2p2p2/4P2P/PP3P2/1R1PQ3/2B1KBNR w K - +perft 1 30 +perft 2 928 +perft 3 29350 +perft 4 929745 +perft 5 31039725 +perft 6 1015022123 + +id gentest-5053 +epd r2B1qr1/p1nbbk1p/1p2p1pn/2p2p2/4P2P/PP3P1N/1R1P1Q2/2B1KB1R b K - +perft 1 34 +perft 2 1151 +perft 3 38390 +perft 4 1372713 +perft 5 46389484 +perft 6 1708298765 + +id gentest-5054 +epd r2B1qr1/p1n1bk1p/1p2p1pn/1bp5/4Pp1P/PP3P1N/1R1P4/2B1KBQR w K - +perft 1 32 +perft 2 1037 +perft 3 34142 +perft 4 1116454 +perft 5 38164636 +perft 6 1275871497 + +id gentest-5055 +epd r2B1qr1/p1n2k1p/1p2p1pn/1bp3b1/4Pp1P/PP3P2/1R1P2B1/2B1K1QR b K - +perft 1 34 +perft 2 858 +perft 3 30274 +perft 4 837355 +perft 5 30089029 +perft 6 885336217 + +id gentest-5056 +epd r4qr1/p1B2k1p/1p2p1p1/2p3b1/4PpnP/PP1b1P2/1R1P2B1/2B1K1QR w K - +perft 1 26 +perft 2 1121 +perft 3 30789 +perft 4 1260276 +perft 5 36641211 +perft 6 1452723331 + +id gentest-5057 +epd r4qr1/p1B2k1p/1p2p1p1/2p1n1b1/3QPp1P/PP1b1P2/1R1P2B1/2B1K2R b K - +perft 1 43 +perft 2 1415 +perft 3 55455 +perft 4 1773016 +perft 5 66634656 +perft 6 2130367239 + +id gentest-5058 +epd r2b1qr1/p1B2k1p/1p2p1p1/2p1n3/P1bQPp1P/1P3P2/1R1P2B1/2B1K2R w K - +perft 1 33 +perft 2 1139 +perft 3 35487 +perft 4 1204926 +perft 5 38648093 +perft 6 1312478574 + +id gentest-5059 +epd r2b1qr1/p1Bn1k1p/1p2p1p1/2p5/P1bQPp1P/1P3P2/1R1P2B1/2BK1R2 b - - +perft 1 34 +perft 2 1151 +perft 3 37243 +perft 4 1224535 +perft 5 40373490 +perft 6 1318671318 + +id gentest-5060 +epd r4qr1/p1B2k1p/1p2pnp1/2p5/P1b1Pp1P/1P3P2/1R1P2B1/2BK1R2 w - - +perft 1 24 +perft 2 872 +perft 3 20723 +perft 4 741287 +perft 5 18320071 +perft 6 653233225 + +id gentest-5061 +epd 3r1qr1/p4k1p/1B2pnp1/2p5/P1b1Pp1P/1P3P1B/1R1P4/2BK1R2 b - - +perft 1 40 +perft 2 921 +perft 3 34193 +perft 4 832045 +perft 5 30492843 +perft 6 778609057 + +id gentest-5062 +epd 1r3qr1/p4k2/1B2pnp1/2p2B1p/P1b1Pp1P/1P3P2/1R1P4/2BK1R2 w - - +perft 1 24 +perft 2 838 +perft 3 20379 +perft 4 722598 +perft 5 18455539 +perft 6 665304463 + +id gentest-5063 +epd 1r2kqr1/p1B5/4pnp1/2p2B1p/P1b1Pp1P/1P3P2/1R1P4/2BKR3 b - - +perft 1 36 +perft 2 877 +perft 3 30574 +perft 4 779909 +perft 5 27485935 +perft 6 731751544 + +id gentest-5064 +epd 1r2kqr1/2B5/p3pnp1/2p2B1p/P3Pp1P/1P3P2/1RKP4/2B1Rb2 w - - +perft 1 25 +perft 2 815 +perft 3 20282 +perft 4 671389 +perft 5 17141895 +perft 6 578200930 + +id gentest-5065 +epd 1r2kq2/6r1/p3pnp1/2p2B1p/P3PB1P/1P3P2/R1KP4/2B1Rb2 b - - +perft 1 43 +perft 2 1306 +perft 3 52800 +perft 4 1597686 +perft 5 63077020 +perft 6 1911272836 + +id gentest-5066 +epd 1r1k1q2/6r1/p3pnp1/2p2B1p/P3PB1P/1P3P2/R2Pb3/2BKR3 w - - +perft 1 3 +perft 2 120 +perft 3 3713 +perft 4 139808 +perft 5 4336135 +perft 6 160613981 + +id gentest-5067 +epd 1r1k4/6r1/p2qpnp1/2p4p/P3PB1P/1P3P1B/R2PK3/2B1R3 b - - +perft 1 43 +perft 2 1284 +perft 3 51376 +perft 4 1540425 +perft 5 59011020 +perft 6 1788314412 + +id gentest-5068 +epd 1r1k4/3q2r1/p3pnpB/7p/P1p1P2P/1P3P1B/R2PK3/2B1R3 w - - +perft 1 30 +perft 2 1216 +perft 3 35450 +perft 4 1398495 +perft 5 41864838 +perft 6 1612276941 + +id gentest-5069 +epd 1r1kq3/6r1/p3pnpB/7p/P1p1P2P/1P3P1B/R2P4/2BK3R b - - +perft 1 39 +perft 2 1133 +perft 3 42229 +perft 4 1266649 +perft 5 46180839 +perft 6 1417894649 + +id gentest-5070 +epd 4q3/4k1r1/p3pnpB/7p/P1p1P2P/1r3P1B/R2PK3/2B4R w - - +perft 1 29 +perft 2 1166 +perft 3 33609 +perft 4 1279945 +perft 5 37407121 +perft 6 1380962952 + +id gentest-5071 +epd 8/4kqr1/p3pnpB/7p/P1pPP2P/1r3P1B/R4K2/2B4R b - d3 +perft 1 34 +perft 2 1140 +perft 3 36312 +perft 4 1206620 +perft 5 39031027 +perft 6 1279785036 + +id gentest-5072 +epd q7/4k1r1/p3pnpB/7p/P1pPP2P/1r3P1B/R4K2/2B1R3 w - - +perft 1 37 +perft 2 1564 +perft 3 52335 +perft 4 2061285 +perft 5 67915836 +perft 6 2555348205 + +id gentest-5073 +epd q2k4/6r1/p3pnpB/7p/P1pPP2P/1r3P1B/R4K2/2B1R3 b - - +perft 1 43 +perft 2 1479 +perft 3 60368 +perft 4 2035026 +perft 5 79905783 +perft 6 2657937848 + +id gentest-5074 +epd q2k4/4r3/p3pnp1/7p/P1pPPB1P/4rP1B/R4K2/2B1R3 w - - +perft 1 38 +perft 2 1342 +perft 3 45260 +perft 4 1574209 +perft 5 52681268 +perft 6 1827984750 + +id gentest-5075 +epd q7/2k1r3/p3pnp1/7p/P1pPP2P/4rP2/R4KB1/2B1R3 b - - +perft 1 44 +perft 2 1106 +perft 3 44727 +perft 4 1114903 +perft 5 42808935 +perft 6 1077631850 + +id gentest-5076 +epd 8/1qk1r3/p3pnp1/7p/P1pP3P/4rP2/3R1KB1/2B1R3 w - - +perft 1 24 +perft 2 1076 +perft 3 23723 +perft 4 1001391 +perft 5 23293069 +perft 6 941242169 + +id gentest-5077 +epd 2q5/2k1r3/p3pnp1/7p/P1pP3P/4rP2/3RRK2/2B2B2 b - - +perft 1 40 +perft 2 713 +perft 3 27614 +perft 4 580038 +perft 5 21857167 +perft 6 512459795 + +id gentest-5078 +epd 6q1/2k4r/p3pnp1/7p/P1pP3P/4rPK1/3RR3/2B2B2 w - - +perft 1 21 +perft 2 828 +perft 3 18490 +perft 4 704386 +perft 5 16955396 +perft 6 629539105 + +id gentest-5079 +epd 6q1/2k4r/4pnp1/p6p/P1pP3P/B3rPK1/3R3R/5B2 b - - +perft 1 39 +perft 2 1104 +perft 3 41157 +perft 4 1083538 +perft 5 39680758 +perft 6 1022718624 + +id gentest-5080 +epd 6q1/7r/1k2p1p1/p2n3p/P1p4P/B3rPK1/3R3R/5B2 w - - +perft 1 30 +perft 2 1138 +perft 3 30842 +perft 4 1143282 +perft 5 30387623 +perft 6 1114128414 + +id gentest-5081 +epd 5Bq1/7r/1k2p1p1/p2n3p/P1p4P/2r2PK1/3R3R/5B2 b - - +perft 1 33 +perft 2 964 +perft 3 30845 +perft 4 842656 +perft 5 27696947 +perft 6 740682514 + +id gentest-5082 +epd 5Bq1/k4r2/4p1p1/p2n3p/P1p4P/2rR1PK1/7R/5B2 w - - +perft 1 29 +perft 2 999 +perft 3 26983 +perft 4 924685 +perft 5 24803506 +perft 6 857412710 + +id gentest-5083 +epd 7q/k4r2/4p1p1/p2n3p/PBp4P/2rR1PK1/1R6/5B2 b - - +perft 1 45 +perft 2 1274 +perft 3 50773 +perft 4 1434854 +perft 5 54497462 +perft 6 1531799093 + +id gentest-5084 +epd 7q/1k3r2/4p1p1/p2n3p/PBp4P/2r2PK1/1R1R4/5B2 w - - +perft 1 29 +perft 2 1105 +perft 3 30367 +perft 4 1144473 +perft 5 32054000 +perft 6 1197886804 + +id gentest-5085 +epd 8/1k3r2/4p1p1/p2nq2p/PBp4P/2r2P2/1R1R2K1/5B2 b - - +perft 1 50 +perft 2 1163 +perft 3 45191 +perft 4 1127536 +perft 5 44036853 +perft 6 1142711427 + +id gentest-5086 +epd 8/k4r2/4p1p1/p2n3p/PBp4P/2rB1P2/1R1R2Kq/8 w - - +perft 1 2 +perft 2 78 +perft 3 1891 +perft 4 65720 +perft 5 1712152 +perft 6 57611540 + +id gentest-5087 +epd 8/k4r2/4p1p1/p2n3p/PBp4P/2rB1P2/1R4R1/5K2 b - - +perft 1 32 +perft 2 1027 +perft 3 29630 +perft 4 910218 +perft 5 25269096 +perft 6 762367016 + +id gentest-5088 +epd 8/k1r2r2/4p1p1/p2n3p/PB5P/3p1P2/6R1/1R3K2 w - - +perft 1 31 +perft 2 1016 +perft 3 27987 +perft 4 870559 +perft 5 23632324 +perft 6 715215121 + +id gentest-5089 +epd 5r2/k1r5/4p1p1/p2n3p/PB5P/3p1P2/6R1/1R3K2 b - - +perft 1 41 +perft 2 1154 +perft 3 40442 +perft 4 1113446 +perft 5 35962735 +perft 6 978764157 + +id gentest-5090 +epd 5r2/k7/4p1p1/p6p/P6P/3pnP2/6R1/1Rr1BK2 w - - +perft 1 2 +perft 2 70 +perft 3 1561 +perft 4 50061 +perft 5 1172814 +perft 6 36007445 + +id gentest-5091 +epd 5r2/k7/4p1p1/p6p/P6P/2rpnP2/5KR1/1R2B3 b - - +perft 1 34 +perft 2 675 +perft 3 21060 +perft 4 466535 +perft 5 14067016 +perft 6 330587142 + +id gentest-5092 +epd 7r/k7/6p1/p3p2p/P6P/2rpnP2/5K1R/1R2B3 w - - +perft 1 19 +perft 2 552 +perft 3 10970 +perft 4 311893 +perft 5 6740664 +perft 6 189467861 + +id gentest-5093 +epd 7r/k7/6p1/p3p2p/PRr4P/3pnP2/5K1R/4B3 b - - +perft 1 35 +perft 2 587 +perft 3 18340 +perft 4 373157 +perft 5 11153100 +perft 6 243321970 + +id gentest-5094 +epd 7r/k7/6p1/p2np2p/P3R2P/3p1P2/5K1R/4B3 w - - +perft 1 20 +perft 2 489 +perft 3 10901 +perft 4 253382 +perft 5 5930176 +perft 6 133423825 + +id gentest-5095 +epd 7r/k7/6p1/p3p2p/Pn2R2P/2Bp1P2/6KR/8 b - - +perft 1 21 +perft 2 530 +perft 3 10792 +perft 4 278683 +perft 5 5732021 +perft 6 149360529 + +id gentest-5096 +epd 8/8/1k4pr/p3p2p/PB2R2P/3p1P2/6KR/8 w - - +perft 1 26 +perft 2 255 +perft 3 6757 +perft 4 81504 +perft 5 2167742 +perft 6 30245736 + +id gentest-5097 +epd 8/8/k5pr/B3p2p/P3R2P/3p1P2/6KR/8 b - - +perft 1 7 +perft 2 168 +perft 3 1924 +perft 4 48860 +perft 5 685670 +perft 6 17692526 + +id gentest-5098 +epd 8/8/k5pr/B3p2p/P3RP1P/3p4/6KR/8 w - - +perft 1 25 +perft 2 200 +perft 3 5262 +perft 4 61450 +perft 5 1658422 +perft 6 23411522 + +id gentest-5099 +epd 8/8/1k4pr/4p2p/P1R2P1P/2Bp4/6KR/8 b - - +perft 1 9 +perft 2 246 +perft 3 2637 +perft 4 75714 +perft 5 975280 +perft 6 28458332 + +id gentest-5100 +epd 8/1k6/6pr/7p/PBR1pP1P/3p4/6KR/8 w - - +perft 1 28 +perft 2 277 +perft 3 8076 +perft 4 90440 +perft 5 2674041 +perft 6 36458585 + +id gentest-5101 +epd 8/8/1k4pr/7p/PB2RP1P/3p4/6KR/8 b - - +perft 1 9 +perft 2 262 +perft 3 2903 +perft 4 88836 +perft 5 1155896 +perft 6 35466454 + +id gentest-5102 +epd 1r6/8/1k4p1/7p/P3RP1P/2Bp4/6KR/8 w - - +perft 1 32 +perft 2 455 +perft 3 14535 +perft 4 244363 +perft 5 7680794 +perft 6 128286119 + +id gentest-5103 +epd 1r6/8/1k4p1/7p/P4P1P/2B5/3pR2R/7K b - - +perft 1 19 +perft 2 475 +perft 3 9298 +perft 4 238282 +perft 5 4714126 +perft 6 125520872 + +id gentest-5104 +epd 1r6/8/1k6/4B1pp/P4P1P/8/4R2R/3q3K w - - +perft 1 2 +perft 2 69 +perft 3 1735 +perft 4 54544 +perft 5 1446381 +perft 6 45908365 + +id gentest-5105 +epd 1r6/8/1k6/4BPpp/P6P/8/4R1KR/4q3 b - - +perft 1 31 +perft 2 711 +perft 3 20777 +perft 4 512017 +perft 5 15386511 +perft 6 386548196 + +id gentest-5106 +epd 1r6/1k6/8/4BPpp/Pq5P/8/1R4KR/8 w - - +perft 1 30 +perft 2 633 +perft 3 18307 +perft 4 512892 +perft 5 14278080 +perft 6 437394981 + +id gentest-5107 +epd 2r5/1k6/1B6/5Ppp/Pq5P/8/1R4KR/8 b - - +perft 1 41 +perft 2 1019 +perft 3 31943 +perft 4 800502 +perft 5 24700309 +perft 6 621164142 + +id gentest-5108 +epd 8/1k6/1B6/5Ppp/P1r4P/2q5/1R4K1/7R w - - +perft 1 34 +perft 2 1014 +perft 3 28144 +perft 4 910268 +perft 5 24805254 +perft 6 801168316 + +id gentest-5109 +epd 2r5/1k6/1B6/5Ppp/PR5P/2q5/6K1/R7 b - - +perft 1 40 +perft 2 1150 +perft 3 35641 +perft 4 999451 +perft 5 31072046 +perft 6 865972276 + +id gentest-5110 +epd 8/1k6/1B6/5Ppp/PRr4P/6K1/8/R1q5 w - - +perft 1 26 +perft 2 593 +perft 3 12792 +perft 4 331241 +perft 5 7307130 +perft 6 201413018 + +id gentest-5111 +epd 3B4/1k6/8/5Ppp/Pr5P/8/7K/R1q5 b - - +perft 1 39 +perft 2 540 +perft 3 19579 +perft 4 306256 +perft 5 10676343 +perft 6 182171972 + +id gentest-5112 +epd 3B4/1k6/8/4qPpp/Pr5P/7K/8/R7 w - - +perft 1 19 +perft 2 843 +perft 3 14247 +perft 4 545218 +perft 5 9707793 +perft 6 347484910 + +id gentest-5113 +epd 8/1k6/8/4qPpp/r6P/7K/8/R3B3 b - - +perft 1 49 +perft 2 673 +perft 3 25933 +perft 4 447647 +perft 5 15810724 +perft 6 291423880 + +id gentest-5114 +epd 8/1k6/8/3q1PP1/r6p/7K/8/R3B3 w - - +perft 1 16 +perft 2 636 +perft 3 11101 +perft 4 395887 +perft 5 7421415 +perft 6 248909791 + +id gentest-5115 +epd 8/1k6/6P1/5P2/r6p/1qB4K/8/R7 b - - +perft 1 36 +perft 2 635 +perft 3 21084 +perft 4 418569 +perft 5 13625769 +perft 6 283060198 + +id gentest-5116 +epd r7/1k6/6P1/5P2/7p/q1B4K/8/4R3 w - - +perft 1 20 +perft 2 603 +perft 3 13866 +perft 4 433786 +perft 5 10333286 +perft 6 328933245 + +id gentest-5117 +epd 8/rk4P1/5P2/8/7p/q1B4K/8/4R3 b - - +perft 1 25 +perft 2 630 +perft 3 16918 +perft 4 435160 +perft 5 12543279 +perft 6 325718307 + +id gentest-5118 +epd 8/r3R1P1/1k3P2/2q5/7p/2B4K/8/8 w - - +perft 1 29 +perft 2 910 +perft 3 22521 +perft 4 688926 +perft 5 17042012 +perft 6 519836527 + +id gentest-5119 +epd 8/r5P1/1k3P2/8/6Kp/2B5/4Rq2/8 b - - +perft 1 34 +perft 2 723 +perft 3 22110 +perft 4 493584 +perft 5 15215520 +perft 6 356352505 + +id gentest-5120 +epd 8/r5P1/1k3q2/8/6K1/7p/4R3/4B3 w - - +perft 1 27 +perft 2 980 +perft 3 21342 +perft 4 741478 +perft 5 17008312 +perft 6 563194784 + +id gentest-5121 +epd 8/5rP1/1k3q2/4R3/6K1/6Bp/8/8 b - - +perft 1 29 +perft 2 521 +perft 3 16031 +perft 4 339993 +perft 5 10764751 +perft 6 244554593 + +id gentest-5122 +epd 8/5rP1/k1q5/4R3/6K1/7p/5B2/8 w - - +perft 1 32 +perft 2 1175 +perft 3 27415 +perft 4 905432 +perft 5 21340234 +perft 6 684365027 + +id gentest-5123 +epd 2Q5/3r4/k1q5/4R3/6K1/7p/5B2/8 b - - +perft 1 3 +perft 2 120 +perft 3 2683 +perft 4 77007 +perft 5 1966630 +perft 6 59410675 + +id gentest-5124 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-5125 +epd rnbqkbnr/ppp1pppp/8/3p4/3PP3/8/PPP2PPP/RNBQKBNR b KQkq - +perft 1 28 +perft 2 1060 +perft 3 30267 +perft 4 1136220 +perft 5 33887398 +perft 6 1266809011 + +id gentest-5126 +epd rnbqkb1r/1pp1pppp/5n2/p2p4/3PP3/8/PPPN1PPP/R1BQKBNR w KQkq - +perft 1 32 +perft 2 966 +perft 3 31637 +perft 4 975038 +perft 5 32893725 +perft 6 1046624144 + +id gentest-5127 +epd rnbqkb1r/1pp1pppp/8/p2p4/3Pn3/P4Q2/1PPN1PPP/R1B1KBNR b KQkq - +perft 1 35 +perft 2 1358 +perft 3 45143 +perft 4 1722128 +perft 5 57789886 +perft 6 2185421041 + +id gentest-5128 +epd rn1qkbr1/1pp1pppp/4b3/p2p4/3Pn1P1/P4Q2/1PPN1P1P/R1B1KBNR w KQq - +perft 1 39 +perft 2 1217 +perft 3 45569 +perft 4 1424936 +perft 5 52588129 +perft 6 1658705667 + +id gentest-5129 +epd rn1qkbr1/1pp1pp1p/4b1p1/p2p4/3Pn1P1/P4Q2/1PPNNP1P/R1BK1B1R b q - +perft 1 35 +perft 2 1129 +perft 3 38155 +perft 4 1287446 +perft 5 43564432 +perft 6 1512202030 + +id gentest-5130 +epd rn1qkb1r/2p1pp1p/4b1p1/pp1p4/1P1Pn1P1/P4Q2/2PNNP1P/R1BK1B1R w q - +perft 1 34 +perft 2 1080 +perft 3 36303 +perft 4 1168613 +perft 5 40800142 +perft 6 1336336335 + +id gentest-5131 +epd rn2kb1r/2pqpp1p/4b1p1/pp1p4/1P1Pn1P1/P1P2Q2/3NNP1P/R1B1KB1R b q - +perft 1 31 +perft 2 936 +perft 3 28899 +perft 4 937482 +perft 5 30198688 +perft 6 1022360289 + +id gentest-5132 +epd rn2kb1r/2p1pp1p/6p1/pp1p1q2/1P1Pn1b1/PNP2Q2/4NP1P/R1B1KB1R w q - +perft 1 32 +perft 2 1271 +perft 3 43219 +perft 4 1745508 +perft 5 60493338 +perft 6 2452890113 + +id gentest-5133 +epd r3kb1r/2p1pp1p/n5pB/pp1p1q2/1P1Pn1b1/PNP2Q2/4NP1P/1R2KB1R b q - +perft 1 41 +perft 2 1554 +perft 3 64502 +perft 4 2403795 +perft 5 99415978 +perft 6 3661826380 + +id gentest-5134 +epd 3rk2r/2p1ppbp/n5pB/pp1p1q2/1P1Pn1b1/P1P2Q2/3NNP1P/1R2KB1R w - - +perft 1 34 +perft 2 1523 +perft 3 54320 +perft 4 2374473 +perft 5 85456804 +perft 6 3661659186 + +id gentest-5135 +epd 3rk2r/2p1ppbp/n5pB/pp1p4/1P1Pnqb1/P1P2Q2/3NNP1P/1R2KB1R b - - +perft 1 52 +perft 2 1666 +perft 3 81101 +perft 4 2738119 +perft 5 125922950 +perft 6 4371101755 + +id gentest-5136 +epd 3rk2r/2p1ppbp/n4npB/pp1p2q1/1P1P2b1/P1P2Q2/3N1P1P/1RN1KB1R w - - +perft 1 39 +perft 2 1501 +perft 3 53753 +perft 4 2079536 +perft 5 75081506 +perft 6 2905557275 + +id gentest-5137 +epd 3rk1r1/2p1ppbp/nN3npB/pp1p2q1/1P1P2b1/P1P2Q2/5P1P/1RN1KB1R b - - +perft 1 40 +perft 2 1532 +perft 3 60736 +perft 4 2289006 +perft 5 90467175 +perft 6 3413687456 + +id gentest-5138 +epd 3rkbr1/2pbpp1p/nN3npB/pp1p2q1/1P1P4/P1P4Q/5P1P/1RN1KB1R w - - +perft 1 40 +perft 2 1488 +perft 3 54888 +perft 4 2034846 +perft 5 76163985 +perft 6 2834043248 + +id gentest-5139 +epd 3rkbr1/3bpp1p/n4npB/pppN2q1/PP1P4/2P4Q/5P1P/1RN1KB1R b - - +perft 1 41 +perft 2 1548 +perft 3 58793 +perft 4 2275739 +perft 5 87433202 +perft 6 3425158575 + +id gentest-5140 +epd 3rkbr1/2nbpp1p/5npB/ppp5/PP1P4/2P4Q/5P1P/1RN1KBqR w - - +perft 1 36 +perft 2 1287 +perft 3 45016 +perft 4 1691561 +perft 5 59846615 +perft 6 2315788363 + +id gentest-5141 +epd 1r2kbr1/2nbpp1p/5npB/ppp5/PP1P4/1RP4Q/5P1P/2NK1BqR b - - +perft 1 40 +perft 2 1330 +perft 3 52970 +perft 4 1829431 +perft 5 74162292 +perft 6 2615622994 + +id gentest-5142 +epd 3rkbr1/2n1pp1p/5npB/ppP5/PP6/1RP4b/5P1P/2NK1BqR w - - +perft 1 5 +perft 2 219 +perft 3 4548 +perft 4 194315 +perft 5 4369931 +perft 6 185683528 + +id gentest-5143 +epd 3rkbr1/2n1pp1p/5np1/p1P5/pP6/2P4b/3B1P1P/1RNK1BqR b - - +perft 1 46 +perft 2 810 +perft 3 36363 +perft 4 752382 +perft 5 33259280 +perft 6 756496098 + +id gentest-5144 +epd 3rkb2/4pprp/2P1nnp1/p7/pP6/2P4b/3B1P1P/1RNK1BqR w - - +perft 1 17 +perft 2 648 +perft 3 12781 +perft 4 495084 +perft 5 11015231 +perft 6 429085590 + +id gentest-5145 +epd 3rkb2/4pprp/2P2np1/p7/pP3n2/1RP4b/3B1P1P/2NK1BR1 b - - +perft 1 37 +perft 2 939 +perft 3 32807 +perft 4 882039 +perft 5 29760064 +perft 6 833163812 + +id gentest-5146 +epd 3rkbr1/5p1p/2P2nR1/p3p3/pP3n2/1RP4b/3B1P1P/2NK1B2 w - - +perft 1 29 +perft 2 1307 +perft 3 37340 +perft 4 1571154 +perft 5 46165977 +perft 6 1861963572 + +id gentest-5147 +epd 3rkbr1/5p1p/2P2n2/p3p1R1/1P3n2/pRPN3b/3B1P1P/3K1B2 b - - +perft 1 44 +perft 2 1459 +perft 3 59859 +perft 4 1928939 +perft 5 77162435 +perft 6 2477043943 + +id gentest-5148 +epd 4kb2/5p1p/2Pr1nr1/p3p1R1/1P3N2/pRP4b/3B1P1P/3K1B2 w - - +perft 1 35 +perft 2 1232 +perft 3 40348 +perft 4 1409755 +perft 5 46039018 +perft 6 1603174863 + +id gentest-5149 +epd 4kb2/5p1p/2P2nr1/p3p1R1/1P1r4/pRPN3b/3B1PBP/3K4 b - - +perft 1 41 +perft 2 1430 +perft 3 54680 +perft 4 1843854 +perft 5 68544931 +perft 6 2300682582 + +id gentest-5150 +epd 4k3/3n1p1p/2Pb2r1/p3p1R1/1P1r4/pRPNB2b/5PBP/3K4 w - - +perft 1 32 +perft 2 1188 +perft 3 40258 +perft 4 1477938 +perft 5 52224719 +perft 6 1887999012 + +id gentest-5151 +epd 8/3k1p1p/3b2r1/p3p1R1/1P1r4/pRPNB2b/3K1PBP/8 b - - +perft 1 38 +perft 2 1190 +perft 3 42661 +perft 4 1460407 +perft 5 51583230 +perft 6 1839162707 + +id gentest-5152 +epd 8/3k1p1p/6r1/p2rp1R1/1b6/pRPNBB1b/3K1P1P/8 w - - +perft 1 31 +perft 2 1186 +perft 3 39360 +perft 4 1391693 +perft 5 48830548 +perft 6 1654821537 + +id gentest-5153 +epd 8/3k1p2/6r1/p2rp1Rp/1b6/p1PNB2b/3K1P1P/1R5B b - - +perft 1 39 +perft 2 1309 +perft 3 47394 +perft 4 1679474 +perft 5 57918980 +perft 6 2105523558 + +id gentest-5154 +epd 8/3k1p2/6r1/p1Brp1Rp/1b6/p1PN3b/3K1P1P/1R5B w - - +perft 1 38 +perft 2 1277 +perft 3 46396 +perft 4 1500655 +perft 5 54409364 +perft 6 1735976483 + +id gentest-5155 +epd 8/3k1p2/r7/p1Brp1Rp/1b6/p1PN3b/R2K1P1P/7B b - - +perft 1 31 +perft 2 1015 +perft 3 30667 +perft 4 1033871 +perft 5 31113641 +perft 6 1067739565 + +id gentest-5156 +epd 8/5p2/r2k4/p1r1p2p/1b6/p1PN2Rb/R2K1P1P/7B w - - +perft 1 37 +perft 2 1007 +perft 3 34727 +perft 4 979947 +perft 5 32687862 +perft 6 950604742 + +id gentest-5157 +epd 6R1/5p2/r2k4/p2rp2p/1b6/p1PN3b/R2K1PBP/8 b - - +perft 1 26 +perft 2 778 +perft 3 20481 +perft 4 645514 +perft 5 17930046 +perft 6 577408385 + +id gentest-5158 +epd 1R6/5p2/2rk4/p2r3p/1b2p3/p1PN3b/R2K1PBP/8 w - - +perft 1 29 +perft 2 889 +perft 3 25129 +perft 4 775593 +perft 5 22669081 +perft 6 706141180 + +id gentest-5159 +epd 1R6/3k1p2/2r5/p2r3p/1b2p3/p1PN3b/1R2KPBP/8 b - - +perft 1 41 +perft 2 1442 +perft 3 49989 +perft 4 1639800 +perft 5 55703460 +perft 6 1751232162 + +id gentest-5160 +epd 1R6/3k1p2/4r3/p5rp/1b2p3/p1PN3B/1R2KP1P/8 w - - +perft 1 37 +perft 2 946 +perft 3 32757 +perft 4 870234 +perft 5 29373006 +perft 6 798053395 + +id gentest-5161 +epd 1R6/4kp2/4r3/p5rp/1b2p3/p1P4B/1R3P1P/2N2K2 b - - +perft 1 33 +perft 2 1048 +perft 3 31095 +perft 4 985254 +perft 5 28837503 +perft 6 912952597 + +id gentest-5162 +epd 1R6/3k1p2/4r3/pr5p/1b2p3/p1P4B/5P1P/1RN2K2 w - - +perft 1 30 +perft 2 638 +perft 3 19245 +perft 4 471008 +perft 5 14364612 +perft 6 372875315 + +id gentest-5163 +epd 1R6/3k1p2/4r3/pr6/1b2p2p/pRP4B/5P1P/2N1K3 b - - +perft 1 23 +perft 2 633 +perft 3 15234 +perft 4 437470 +perft 5 11136185 +perft 6 327625285 + +id gentest-5164 +epd 1R6/2k5/4r3/pr3p2/1b2p2p/pRP4B/4NP1P/4K3 w - - +perft 1 29 +perft 2 791 +perft 3 22411 +perft 4 600709 +perft 5 17267028 +perft 6 462830428 + +id gentest-5165 +epd R7/2k1b3/4r3/pr3p2/4p2p/R1P4B/4NP1P/4K3 b - - +perft 1 34 +perft 2 969 +perft 3 30045 +perft 4 861834 +perft 5 25907459 +perft 6 752825704 + +id gentest-5166 +epd Rr6/2k1b3/5r2/p4p2/4p2p/R1P4B/5P1P/2N1K3 w - - +perft 1 24 +perft 2 879 +perft 3 23281 +perft 4 742352 +perft 5 20644948 +perft 6 623376446 + +id gentest-5167 +epd Rr6/1k2b3/5r2/p4p2/4p2p/R1P5/4NP1P/4KB2 b - - +perft 1 31 +perft 2 683 +perft 3 19362 +perft 4 485717 +perft 5 13835284 +perft 6 370066219 + +id gentest-5168 +epd Rr6/2k1b3/7r/p4p2/4p2p/1RP5/4NP1P/4KB2 w - - +perft 1 25 +perft 2 874 +perft 3 24789 +perft 4 772182 +perft 5 22969636 +perft 6 671729388 + +id gentest-5169 +epd Rr6/2k1b3/2r5/p4p2/3Np2p/R1P5/5P1P/4KB2 b - - +perft 1 42 +perft 2 1312 +perft 3 43312 +perft 4 1362200 +perft 5 41556046 +perft 6 1305894279 + +id gentest-5170 +epd R7/2k1b3/8/p4p2/3Np2p/R1r4B/5P1P/1r2K3 w - - +perft 1 2 +perft 2 82 +perft 3 2296 +perft 4 74534 +perft 5 2103560 +perft 6 65195216 + +id gentest-5171 +epd R7/2k5/3b4/p4p2/4p2p/R1r2N1B/3K1P1P/1r6 b - - +perft 1 41 +perft 2 989 +perft 3 33509 +perft 4 836965 +perft 5 26747851 +perft 6 690234613 + +id gentest-5172 +epd R7/2k5/3b4/p4p2/4p2p/R1r4B/3K1P1P/1r4N1 w - - +perft 1 26 +perft 2 937 +perft 3 22466 +perft 4 749775 +perft 5 18538809 +perft 6 588525728 + +id gentest-5173 +epd 3R4/2k5/3b4/p4B2/2r1p2p/R7/3K1P1P/1r4N1 b - - +perft 1 37 +perft 2 1097 +perft 3 35279 +perft 4 1025098 +perft 5 31434764 +perft 6 906609161 + +id gentest-5174 +epd 3R4/2k5/8/p1r5/4B2p/R7/3K1P1b/1r4N1 w - - +perft 1 44 +perft 2 1376 +perft 3 48249 +perft 4 1428552 +perft 5 47844939 +perft 6 1391740177 + +id gentest-5175 +epd 3R4/2k5/8/p7/4B2p/1R1K4/2r2P1b/1r4N1 b - - +perft 1 26 +perft 2 827 +perft 3 19842 +perft 4 628930 +perft 5 15755241 +perft 6 495822324 + +id gentest-5176 +epd 3R4/2k5/1R6/p3b3/4B2p/3K4/2r2P2/6r1 w - - +perft 1 39 +perft 2 1334 +perft 3 43130 +perft 4 1344878 +perft 5 41510060 +perft 6 1236784558 + +id gentest-5177 +epd 3R4/1Rk5/8/p3b3/7p/3K1B2/2r2P2/r7 b - - +perft 1 1 +perft 2 26 +perft 3 907 +perft 4 21150 +perft 5 689884 +perft 6 15536232 + +id gentest-5178 +epd 3k4/4R3/8/4b3/p6p/3K1B2/2r2P2/r7 w - - +perft 1 24 +perft 2 786 +perft 3 17404 +perft 4 530674 +perft 5 11680731 +perft 6 347334154 + +id gentest-5179 +epd 3k4/4R3/8/4b3/p3B2p/3K4/2r2P2/5r2 b - - +perft 1 37 +perft 2 812 +perft 3 25437 +perft 4 572469 +perft 5 17382405 +perft 6 383173726 + +id gentest-5180 +epd 3k4/4R3/8/3B4/p6p/3K2b1/2r2P2/6r1 w - - +perft 1 34 +perft 2 974 +perft 3 25535 +perft 4 749540 +perft 5 17967229 +perft 6 533458582 + +id gentest-5181 +epd 3k4/8/2r5/3BR3/p6p/3K2b1/5P2/6r1 b - - +perft 1 31 +perft 2 849 +perft 3 25668 +perft 4 658743 +perft 5 20043965 +perft 6 487754538 + +id gentest-5182 +epd 3k4/8/2r5/3BR3/p4P1p/3K2b1/8/6r1 w - - +perft 1 27 +perft 2 788 +perft 3 19349 +perft 4 555878 +perft 5 12965245 +perft 6 375277369 + +id gentest-5183 +epd 3kR3/8/6r1/3B4/p4P1p/4K1b1/8/6r1 b - - +perft 1 3 +perft 2 82 +perft 3 2149 +perft 4 48432 +perft 5 1317722 +perft 6 28968911 + +id gentest-5184 +epd 4R3/2k5/1r6/8/p4P1p/4K1b1/B7/6r1 w - - +perft 1 25 +perft 2 742 +perft 3 16496 +perft 4 486030 +perft 5 10698011 +perft 6 316384402 + +id gentest-5185 +epd 1r4R1/2k5/8/8/p4P1p/4K1b1/B7/6r1 b - - +perft 1 32 +perft 2 657 +perft 3 19307 +perft 4 409376 +perft 5 12025506 +perft 6 256456164 + +id gentest-5186 +epd r5R1/3k4/8/8/p3KP1p/6b1/B7/6r1 w - - +perft 1 26 +perft 2 628 +perft 3 14664 +perft 4 382879 +perft 5 8594211 +perft 6 233052722 + +id gentest-5187 +epd rR6/3k4/8/8/5P1p/p3K1b1/B7/6r1 b - - +perft 1 22 +perft 2 527 +perft 3 13131 +perft 4 298791 +perft 5 7961277 +perft 6 177412284 + +id gentest-5188 +epd r7/3k4/8/1R6/5P1p/p3K1b1/B7/1r6 w - - +perft 1 28 +perft 2 854 +perft 3 20061 +perft 4 578342 +perft 5 13212097 +perft 6 374317866 + +id gentest-5189 +epd r7/2k5/4B3/1R6/3K1P1p/p5b1/8/1r6 b - - +perft 1 31 +perft 2 882 +perft 3 25529 +perft 4 632057 +perft 5 18170573 +perft 6 420713911 + +id gentest-5190 +epd 4r3/2k5/8/1R6/3K1P1p/p5b1/B7/1r6 w - - +perft 1 27 +perft 2 884 +perft 3 19280 +perft 4 591556 +perft 5 12610916 +perft 6 376366479 + +id gentest-5191 +epd 4r3/3k4/8/1RK5/5P1p/p5b1/8/1B6 b - - +perft 1 25 +perft 2 446 +perft 3 9535 +perft 4 201130 +perft 5 4300643 +perft 6 94025668 + +id gentest-5192 +epd 5r2/4k3/8/2K5/5P1p/p5b1/1R6/1B6 w - - +perft 1 28 +perft 2 609 +perft 3 14195 +perft 4 299642 +perft 5 6850318 +perft 6 148388340 + +id gentest-5193 +epd 7r/4k3/1R4B1/2K5/5P1p/p5b1/8/8 b - - +perft 1 19 +perft 2 462 +perft 3 8415 +perft 4 205841 +perft 5 3981623 +perft 6 94823553 + +id gentest-5194 +epd 8/5k2/1R5r/2K5/5P1p/p5b1/8/8 w - - +perft 1 20 +perft 2 377 +perft 3 6388 +perft 4 125149 +perft 5 2075929 +perft 6 42845095 + +id gentest-5195 +epd 8/1R3k2/3r4/2K5/5P1p/p5b1/8/8 b - - +perft 1 7 +perft 2 129 +perft 3 2526 +perft 4 38143 +perft 5 787781 +perft 6 12229188 + +id gentest-5196 +epd 8/8/3rk3/2K5/5P1p/pR4b1/8/8 w - - +perft 1 17 +perft 2 311 +perft 3 4452 +perft 4 92027 +perft 5 1387296 +perft 6 29987218 + +id gentest-5197 +epd 8/1R6/3r1k2/2K2P2/7p/p5b1/8/8 b - - +perft 1 21 +perft 2 330 +perft 3 7686 +perft 4 113023 +perft 5 2707566 +perft 6 41072402 + +id gentest-5198 +epd 8/1R6/1K3k2/5P2/3r3p/p5b1/8/8 w - - +perft 1 14 +perft 2 342 +perft 3 5450 +perft 4 129515 +perft 5 1948555 +perft 6 46751505 + +id gentest-5199 +epd 8/8/1K3k2/5P2/3r3p/p7/5b2/2R5 b - - +perft 1 25 +perft 2 339 +perft 3 8578 +perft 4 121555 +perft 5 3084603 +perft 6 45081844 + +id gentest-5200 +epd 8/8/2K2k2/3r1P2/7p/p7/8/2R3b1 w - - +perft 1 13 +perft 2 322 +perft 3 4519 +perft 4 106148 +perft 5 1565395 +perft 6 36661875 + +id gentest-5201 +epd 8/8/2K2k2/5r2/7p/p7/8/3R2b1 b - - +perft 1 27 +perft 2 449 +perft 3 10968 +perft 4 174616 +perft 5 4269726 +perft 6 67127092 + +id gentest-5202 +epd 8/8/1K3k2/7r/7p/p7/7b/3R4 w - - +perft 1 18 +perft 2 432 +perft 3 7047 +perft 4 162065 +perft 5 2550283 +perft 6 59489485 + +id gentest-5203 +epd 8/8/2K5/5k1r/7p/p7/7b/2R5 b - - +perft 1 21 +perft 2 325 +perft 3 6740 +perft 4 109143 +perft 5 2394785 +perft 6 38237850 + +id gentest-5204 +epd 8/8/8/1K3k1r/7p/p1b5/8/2R5 w - - +perft 1 15 +perft 2 339 +perft 3 4991 +perft 4 110347 +perft 5 1738088 +perft 6 39280542 + +id gentest-5205 +epd 8/8/8/1K3k1r/3b3p/p7/8/4R3 b - - +perft 1 24 +perft 2 425 +perft 3 9215 +perft 4 154284 +perft 5 3482581 +perft 6 56634127 + +id gentest-5206 +epd 7r/8/2K3k1/8/3b3p/p7/8/4R3 w - - +perft 1 20 +perft 2 573 +perft 3 10209 +perft 4 272790 +perft 5 4591343 +perft 6 117439265 + +id gentest-5207 +epd 7r/8/2K2Rk1/8/7p/p7/8/8 b - - +perft 1 5 +perft 2 84 +perft 3 1116 +perft 4 18391 +perft 5 277597 +perft 6 4659085 + +id gentest-5208 +epd 8/5R2/2K4r/7k/7p/p7/8/8 w - - +perft 1 7 +perft 2 92 +perft 3 1477 +perft 4 21051 +perft 5 353006 +perft 6 5643978 + +id gentest-5209 +epd 5R1r/8/2K5/7k/7p/p7/8/8 b - - +perft 1 10 +perft 2 187 +perft 3 2529 +perft 4 45136 +perft 5 707501 +perft 6 12078774 + +id gentest-5210 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-5211 +epd rnbqkbnr/pppppp1p/6p1/8/8/2N2P2/PPPPP1PP/R1BQKBNR b KQkq - +perft 1 21 +perft 2 441 +perft 3 10235 +perft 4 235576 +perft 5 5926162 +perft 6 146261834 + +id gentest-5212 +epd rnbqk1nr/ppppp1bp/5pp1/3N4/8/5P2/PPPPP1PP/R1BQKBNR w KQkq - +perft 1 26 +perft 2 495 +perft 3 13057 +perft 4 274963 +perft 5 7501937 +perft 6 172156341 + +id gentest-5213 +epd rnbq1knr/ppppp1bp/5pp1/3N4/6P1/4PP2/PPPP3P/R1BQKBNR b KQ - +perft 1 20 +perft 2 660 +perft 3 14190 +perft 4 455024 +perft 5 10494459 +perft 6 332322796 + +id gentest-5214 +epd rnbq1knr/pp1p2bp/5pp1/2pNp3/6P1/4PP1P/PPPP4/R1BQKBNR w KQ - +perft 1 31 +perft 2 724 +perft 3 22093 +perft 4 542753 +perft 5 16533109 +perft 6 429123454 + +id gentest-5215 +epd r1bq1knr/pp1p2bp/2n2pp1/2pNp3/6P1/4PP1P/PPPP4/R1BQKBNR b KQ - +perft 1 27 +perft 2 830 +perft 3 23027 +perft 4 692812 +perft 5 19741247 +perft 6 592747438 + +id gentest-5216 +epd r1b2knr/ppqp2bp/1N3pp1/2p1p3/1n4P1/4PP1P/PPPP4/R1BQKBNR w KQ - +perft 1 29 +perft 2 822 +perft 3 22057 +perft 4 646865 +perft 5 17728122 +perft 6 536905476 + +id gentest-5217 +epd r1b2knr/ppqp2bp/1N3pp1/2p1p3/6P1/3nPP1P/PPPPK3/R1BQ1BNR b - - +perft 1 29 +perft 2 592 +perft 3 17133 +perft 4 364171 +perft 5 10979619 +perft 6 246628771 + +id gentest-5218 +epd N1b2knr/ppqp2bp/5p2/2p1p1p1/6P1/4PP1P/PPPPK3/R1BQnBNR w - - +perft 1 19 +perft 2 500 +perft 3 10724 +perft 4 293325 +perft 5 6812997 +perft 6 193430496 + +id gentest-5219 +epd N1b2knr/ppq3bp/5p2/2ppp1p1/6P1/2P1PP1P/PP1PK3/R1B1QBNR b - - +perft 1 29 +perft 2 639 +perft 3 18610 +perft 4 439525 +perft 5 12976419 +perft 6 325092927 + +id gentest-5220 +epd N1b2knr/pp1q2bp/5p2/2ppp1p1/6P1/2P1PP1P/PP1PK3/R1BQ1BNR w - - +perft 1 22 +perft 2 619 +perft 3 14882 +perft 4 424156 +perft 5 10999869 +perft 6 317601757 + +id gentest-5221 +epd N1b2knr/pp3qbp/5p2/2ppp1p1/1P4P1/2P1PP1P/P2PK1B1/R1BQ2NR b - - +perft 1 27 +perft 2 701 +perft 3 19586 +perft 4 528999 +perft 5 15066186 +perft 6 424425453 + +id gentest-5222 +epd N1b3nr/pp2kq1p/5p1b/2ppp1p1/1P4P1/B1P1PP1P/P2PK1B1/R2Q2NR w - - +perft 1 27 +perft 2 721 +perft 3 20446 +perft 4 544442 +perft 5 15938209 +perft 6 426750298 + +id gentest-5223 +epd N5nr/pp2kq1p/5p1b/2pppbp1/1P4P1/B1P1PP1P/P2P1KB1/R3Q1NR b - - +perft 1 31 +perft 2 824 +perft 3 24358 +perft 4 678405 +perft 5 19632139 +perft 6 568906406 + +id gentest-5224 +epd 4q1nr/pp2k2p/1N3p1b/2ppp1p1/1P4P1/B1P1PP1P/P1bP1KB1/R3Q1NR w - - +perft 1 30 +perft 2 988 +perft 3 29782 +perft 4 941007 +perft 5 28696889 +perft 6 883185365 + +id gentest-5225 +epd 4q1nr/pp3k1p/1N3p1b/2ppp1p1/1P4P1/B1P1PP1P/P1bPK1BR/R3Q1N1 b - - +perft 1 35 +perft 2 1006 +perft 3 33882 +perft 4 971318 +perft 5 31644468 +perft 6 916318403 + +id gentest-5226 +epd 4q1nr/1p3k1p/1N3p1b/p1ppp1p1/1P2P1P1/B1P2P1P/P2PK1BR/R2bQ1N1 w - - +perft 1 7 +perft 2 202 +perft 3 6060 +perft 4 170730 +perft 5 5223606 +perft 6 145015774 + +id gentest-5227 +epd 6nr/1p3k1p/5p1b/pqppp1p1/1PN1P1P1/B1P2P1P/P2PK1BR/3RQ1N1 b - - +perft 1 25 +perft 2 593 +perft 3 14848 +perft 4 398043 +perft 5 10212371 +perft 6 293181188 + +id gentest-5228 +epd 6nr/1p3k1p/5p1b/pqp1p1p1/1PN3P1/B1P1pPQP/P2PK1BR/3R2N1 w - - +perft 1 26 +perft 2 632 +perft 3 17801 +perft 4 439828 +perft 5 13227640 +perft 6 338926504 + +id gentest-5229 +epd 6nr/1p3k1p/5p1b/1qp1p1p1/pPN3P1/B1P1pP1P/P2PKQBR/4R1N1 b - - +perft 1 23 +perft 2 572 +perft 3 13931 +perft 4 372350 +perft 5 9530424 +perft 6 267695522 + +id gentest-5230 +epd 5bnr/1p3k1p/5p2/1q2p1p1/ppN3P1/B1P1pP1P/P2PKQ1R/4R1NB w - - +perft 1 25 +perft 2 769 +perft 3 20392 +perft 4 624990 +perft 5 17708702 +perft 6 546291379 + +id gentest-5231 +epd 5bnr/1p3k2/5p2/1q2p1Qp/ppN3P1/B1P1pP1P/P2PK2R/4R1NB b - - +perft 1 31 +perft 2 1027 +perft 3 28410 +perft 4 977428 +perft 5 27959885 +perft 6 984172584 + +id gentest-5232 +epd 5bnr/1p3k2/8/q3p1pp/ppN2PP1/B1P1p2P/P2PK2R/4R1NB w - - +perft 1 37 +perft 2 1213 +perft 3 43752 +perft 4 1423234 +perft 5 50072736 +perft 6 1633756774 + +id gentest-5233 +epd 5bnr/1pq2k2/8/4p1pp/ppN1BPP1/B1P1p2P/P2PK2R/5RN1 b - - +perft 1 36 +perft 2 1607 +perft 3 52457 +perft 4 2169874 +perft 5 72191075 +perft 6 2823541187 + +id gentest-5234 +epd 6nr/1pq1bk2/8/4p1pp/ppN1BPP1/B1P4P/P2pK3/5RNR w - - +perft 1 42 +perft 2 1364 +perft 3 49686 +perft 4 1719296 +perft 5 59415902 +perft 6 2124421947 + +id gentest-5235 +epd 3b2nr/1pq2k2/8/4pPpp/ppN3P1/B1P4P/P2pK1B1/5RNR b - - +perft 1 34 +perft 2 1076 +perft 3 35494 +perft 4 1071320 +perft 5 36417465 +perft 6 1070279451 + +id gentest-5236 +epd 6nr/1pq1bk2/8/5Ppp/ppN1p1P1/B1P4P/P2pK1B1/3R2NR w - - +perft 1 29 +perft 2 986 +perft 3 26806 +perft 4 950621 +perft 5 25512331 +perft 6 923708818 + +id gentest-5237 +epd 6nr/1pq1b1k1/1N6/5Ppp/pp2B1P1/B1P4P/P2pK3/3R2NR b - - +perft 1 33 +perft 2 1079 +perft 3 36461 +perft 4 1111699 +perft 5 38728983 +perft 6 1145149107 + +id gentest-5238 +epd N2q2nr/1p2b3/7k/5Ppp/pp2B1P1/B1P4P/P2pK3/3R2NR w - - +perft 1 30 +perft 2 859 +perft 3 24822 +perft 4 750929 +perft 5 21123307 +perft 6 669177340 + +id gentest-5239 +epd N2q2nr/1p2b1k1/8/5Ppp/pp2B1P1/B1P2N1P/P2pK3/R6R b - - +perft 1 37 +perft 2 1398 +perft 3 51304 +perft 4 1790842 +perft 5 66030351 +perft 6 2200899685 + +id gentest-5240 +epd N2q2nr/1p4k1/8/2b2Ppp/pp4P1/B1PB1N1P/P3K3/R2q3R w - - +perft 1 3 +perft 2 123 +perft 3 4060 +perft 4 153041 +perft 5 5055313 +perft 6 184672099 + +id gentest-5241 +epd N2q2nr/bp4k1/8/5Ppp/pp4PN/B1PB3P/P7/R2K3R b - - +perft 1 39 +perft 2 950 +perft 3 34203 +perft 4 947382 +perft 5 33806914 +perft 6 983779062 + +id gentest-5242 +epd N5nr/bp6/7k/5Ppp/pp1q2PN/2PB3P/P7/R1BK3R w - - +perft 1 26 +perft 2 786 +perft 3 21283 +perft 4 679545 +perft 5 19415061 +perft 6 637850398 + +id gentest-5243 +epd N5nr/bp4q1/7k/5Ppp/ppP2BPN/3B3P/P7/R2K3R b - - +perft 1 30 +perft 2 976 +perft 3 29323 +perft 4 927833 +perft 5 28631437 +perft 6 903103444 + +id gentest-5244 +epd Nb4nr/1pq5/7k/5Ppp/ppP2BPN/3B3P/P7/R2K1R2 w - - +perft 1 34 +perft 2 865 +perft 3 29022 +perft 4 808322 +perft 5 26568725 +perft 6 783781252 + +id gentest-5245 +epd Nb4nr/1p4q1/3B3k/5Ppp/ppP3PN/3B3P/P7/R2K1R2 b - - +perft 1 26 +perft 2 869 +perft 3 23667 +perft 4 769593 +perft 5 21951704 +perft 6 708953124 + +id gentest-5246 +epd Nb4n1/4B1qr/1p5k/5Ppp/ppP3PN/3B3P/P7/R2K1R2 w - - +perft 1 33 +perft 2 825 +perft 3 25883 +perft 4 703438 +perft 5 21822961 +perft 6 630384807 + +id gentest-5247 +epd Nb4n1/4B1qr/1p5k/5Ppp/1pP3PN/p4R1P/P3B3/R2K4 b - - +perft 1 25 +perft 2 690 +perft 3 17898 +perft 4 500496 +perft 5 13800201 +perft 6 392058519 + +id gentest-5248 +epd Nb6/4B1qr/1p3n1k/5P1P/1pP3pN/p4R1P/P3B3/R2K4 w - - +perft 1 29 +perft 2 796 +perft 3 24450 +perft 4 711650 +perft 5 21989949 +perft 6 672996226 + +id gentest-5249 +epd Nb2n3/4B1qr/1p5k/5P1P/1pP3pN/p4R1P/P7/R1K2B2 b - - +perft 1 30 +perft 2 745 +perft 3 22222 +perft 4 594848 +perft 5 18343565 +perft 6 513686346 + +id gentest-5250 +epd Nb6/4B1nr/1p5k/5P1P/1pP3pN/p4R1P/Pq6/R2K1B2 w - - +perft 1 28 +perft 2 862 +perft 3 19781 +perft 4 610219 +perft 5 15086160 +perft 6 470613082 + +id gentest-5251 +epd Nb6/4B1nr/1p5k/5P1P/1pPq2pN/p6P/P2R4/R2K1B2 b - - +perft 1 35 +perft 2 951 +perft 3 30486 +perft 4 867262 +perft 5 27532651 +perft 6 807410684 + +id gentest-5252 +epd Nb6/4B1nr/1p5k/3q1P1P/2P3pN/pp5P/P1KR4/R4B2 w - - +perft 1 6 +perft 2 237 +perft 3 7565 +perft 4 254125 +perft 5 8102409 +perft 6 265435619 + +id gentest-5253 +epd Nb6/4Bqnr/1p5k/5P1P/2P3p1/pp3N1P/P2R4/RK3B2 b - - +perft 1 30 +perft 2 1101 +perft 3 32798 +perft 4 1105721 +perft 5 34068476 +perft 6 1090459465 + +id gentest-5254 +epd N7/4B1nr/1p5k/5P1q/2P3p1/pp1B1N1P/P2R3b/RK6 w - - +perft 1 35 +perft 2 787 +perft 3 25922 +perft 4 658683 +perft 5 21413787 +perft 6 599048081 + +id gentest-5255 +epd N7/6nr/1p5k/4bP1q/2P3P1/Bp1B1N2/P2R4/RK6 b - - +perft 1 28 +perft 2 861 +perft 3 23738 +perft 4 747147 +perft 5 21543827 +perft 6 689291947 + +id gentest-5256 +epd N7/6nr/1p5k/5Pq1/2P3P1/Bp1B1N2/P1R4b/RK6 w - - +perft 1 32 +perft 2 823 +perft 3 24283 +perft 4 670460 +perft 5 20368492 +perft 6 598238386 + +id gentest-5257 +epd N7/6nr/1p1B1P1k/8/2P3P1/1p1B1N2/P1Rq3b/RK6 b - - +perft 1 28 +perft 2 871 +perft 3 24598 +perft 4 776825 +perft 5 23070172 +perft 6 738903514 + +id gentest-5258 +epd N7/6nr/1p1B1P1k/8/2Pb2P1/1p1B4/P1Rq4/RK6 w - - +perft 1 30 +perft 2 926 +perft 3 23165 +perft 4 709254 +perft 5 18497167 +perft 6 584038359 + +id gentest-5259 +epd N7/6nr/5P1k/1p2B3/2Pb2P1/1pRB4/P2q4/RK6 b - - +perft 1 33 +perft 2 675 +perft 3 21517 +perft 4 500163 +perft 5 16647037 +perft 6 421355655 + +id gentest-5260 +epd N7/6nr/5P1k/8/1pPb2P1/2RB4/Pp1q3B/RK6 w - - +perft 1 26 +perft 2 817 +perft 3 17942 +perft 4 590102 +perft 5 13674345 +perft 6 471115279 + +id gentest-5261 +epd N7/2B3nr/5P1k/8/1pP3P1/3Bb3/Pp1q4/RKR5 b - - +perft 1 33 +perft 2 756 +perft 3 24929 +perft 4 588662 +perft 5 20502885 +perft 6 499001086 + +id gentest-5262 +epd N7/2B4r/5P1k/5B2/1pP3P1/8/Pp1q4/RKR3b1 w - - +perft 1 29 +perft 2 1083 +perft 3 26129 +perft 4 941651 +perft 5 23269917 +perft 6 828010907 + +id gentest-5263 +epd N7/2B4r/5P1k/8/1pP3P1/P7/2Bq4/nKR3b1 b - - +perft 1 36 +perft 2 981 +perft 3 33158 +perft 4 876176 +perft 5 29804259 +perft 6 792056634 + +id gentest-5264 +epd N4b2/2B4r/5P1k/8/PpP3P1/8/2Bq4/nKR5 w - - +perft 1 29 +perft 2 853 +perft 3 21723 +perft 4 654713 +perft 5 16876957 +perft 6 514703771 + +id gentest-5265 +epd N4b2/2B4r/3q1P1k/8/PpP3P1/1B6/8/nK3R2 b - - +perft 1 31 +perft 2 797 +perft 3 23519 +perft 4 600349 +perft 5 18111309 +perft 6 461028678 + +id gentest-5266 +epd N4b2/7r/qB3P1k/8/PpP3P1/1B6/2n5/1K3R2 w - - +perft 1 29 +perft 2 749 +perft 3 20414 +perft 4 578637 +perft 5 15569976 +perft 6 465385206 + +id gentest-5267 +epd N4b2/7r/1B3P1k/8/qpP3P1/8/B1n5/2K2R2 b - - +perft 1 31 +perft 2 796 +perft 3 23736 +perft 4 583521 +perft 5 18255366 +perft 6 444464769 + +id gentest-5268 +epd N4b2/1r6/5Pk1/8/qpP3P1/4B3/B1n5/2K2R2 w - - +perft 1 29 +perft 2 993 +perft 3 25887 +perft 4 880676 +perft 5 22160342 +perft 6 757671191 + +id gentest-5269 +epd N4b2/1r6/5Pk1/8/qpP3P1/4B3/B3K3/n4R2 b - - +perft 1 33 +perft 2 1007 +perft 3 32194 +perft 4 891351 +perft 5 28807351 +perft 6 760006631 + +id gentest-5270 +epd q4b2/1r6/5Pk1/8/1pP3P1/4B3/B1n1K3/2R5 w - - +perft 1 29 +perft 2 980 +perft 3 24908 +perft 4 891855 +perft 5 21117118 +perft 6 763318253 + +id gentest-5271 +epd q7/1r6/3b1Pk1/8/1pP3P1/3KB3/B1n5/5R2 b - - +perft 1 40 +perft 2 1153 +perft 3 46751 +perft 4 1169944 +perft 5 46363110 +perft 6 1097312081 + +id gentest-5272 +epd q7/1r6/5Pk1/4b3/1pP2RP1/3Kn3/B7/8 w - - +perft 1 15 +perft 2 677 +perft 3 10431 +perft 4 445085 +perft 5 7367034 +perft 6 301127327 + +id gentest-5273 +epd q7/1r6/5P1k/4b3/1pPR2P1/3Kn3/8/1B6 b - - +perft 1 44 +perft 2 620 +perft 3 24932 +perft 4 407315 +perft 5 15620313 +perft 6 278021386 + +id gentest-5274 +epd q7/6r1/5P1k/8/1pP1R1P1/3Kn1b1/8/1B6 w - - +perft 1 17 +perft 2 779 +perft 3 13079 +perft 4 529160 +perft 5 9498657 +perft 6 355164873 + +id gentest-5275 +epd q7/6r1/3b1P1k/8/1pP1R1P1/3Kn3/8/1B6 b - - +perft 1 50 +perft 2 797 +perft 3 34141 +perft 4 576795 +perft 5 22056361 +perft 6 396949238 + +id gentest-5276 +epd 8/6r1/5P1k/8/qpP1R1P1/4n3/3K3b/1B6 w - - +perft 1 19 +perft 2 738 +perft 3 13632 +perft 4 495611 +perft 5 9722820 +perft 6 344014927 + +id gentest-5277 +epd 8/6rk/5P2/2P5/qp2R1P1/4K3/7b/1B6 b - - +perft 1 36 +perft 2 644 +perft 3 15883 +perft 4 299406 +perft 5 7774759 +perft 6 152476175 + +id gentest-5278 +epd 8/5Pr1/7k/2P5/1p2R1P1/4K3/7b/qB6 w - - +perft 1 22 +perft 2 590 +perft 3 12657 +perft 4 364760 +perft 5 8163679 +perft 6 241661568 + +id gentest-5279 +epd 8/5Pr1/3b3k/2P5/1pR3P1/8/3K4/qB6 b - - +perft 1 30 +perft 2 692 +perft 3 21512 +perft 4 460493 +perft 5 14277409 +perft 6 315042342 + +id gentest-5280 +epd 8/5Pr1/3b3k/2P5/1p4P1/8/2RKq3/1B6 w - - +perft 1 2 +perft 2 58 +perft 3 927 +perft 4 23945 +perft 5 477154 +perft 6 12713350 + +id gentest-5281 +epd 8/5Pr1/7k/2P5/1p3bP1/8/2R2K2/1B6 b - - +perft 1 20 +perft 2 374 +perft 3 6470 +perft 4 139935 +perft 5 2441328 +perft 6 58481903 + +id gentest-5282 +epd 1b6/5Pr1/8/2P3k1/1p4P1/8/5K2/1BR5 w - - +perft 1 27 +perft 2 470 +perft 3 12107 +perft 4 218506 +perft 5 5840348 +perft 6 109124497 + +id gentest-5283 +epd 1b4r1/5P2/8/2P3k1/1p2B1P1/8/5K2/6R1 b - - +perft 1 19 +perft 2 646 +perft 3 12602 +perft 4 381855 +perft 5 7501015 +perft 6 216440869 + +id gentest-5284 +epd 4r3/5P2/2P5/6k1/1p2B1P1/6b1/5K2/6R1 w - - +perft 1 7 +perft 2 157 +perft 3 4024 +perft 4 81503 +perft 5 2103695 +perft 6 40934165 + +id gentest-5285 +epd r7/2P2P2/8/6k1/1p2B1P1/6b1/4K3/6R1 b - - +perft 1 28 +perft 2 966 +perft 3 23076 +perft 4 755103 +perft 5 16503572 +perft 6 534262994 + +id gentest-5286 +epd r6b/2P2P2/8/5Bk1/1p4P1/8/4K3/6R1 w - - +perft 1 34 +perft 2 821 +perft 3 25769 +perft 4 578838 +perft 5 18367740 +perft 6 397281014 + +id gentest-5287 +epd r1Q5/5P2/8/4bBk1/1p4P1/8/4K3/2R5 b - - +perft 1 27 +perft 2 1273 +perft 3 30073 +perft 4 1330277 +perft 5 29163213 +perft 6 1246653718 + +id gentest-5288 +epd 8/5P2/8/4bB2/rpQ3Pk/8/4K3/2R5 w - - +perft 1 48 +perft 2 1088 +perft 3 50205 +perft 4 1065045 +perft 5 48522929 +perft 6 1029412672 + +id gentest-5289 +epd 7b/5P2/4Q3/5B2/rp4Pk/8/2R1K3/8 b - - +perft 1 18 +perft 2 779 +perft 3 15200 +perft 4 663792 +perft 5 13322205 +perft 6 581411720 + +id gentest-5290 +epd 7b/2r2P2/2R1Q3/5B2/1p4Pk/8/4K3/8 w - - +perft 1 43 +perft 2 739 +perft 3 31981 +perft 4 602333 +perft 5 26048128 +perft 6 506553699 + +id gentest-5291 +epd 8/2r2P2/2R5/8/1pQ1B1Pk/8/1b2K3/8 b - - +perft 1 21 +perft 2 910 +perft 3 18641 +perft 4 825571 +perft 5 16838924 +perft 6 751099771 + +id gentest-5292 +epd 8/2r2P2/7R/8/1pQ1B1k1/8/1b2K3/8 w - - +perft 1 53 +perft 2 894 +perft 3 44642 +perft 4 812075 +perft 5 38641244 +perft 6 725249027 + +id gentest-5293 +epd 8/2r2P2/7R/Q7/1p2Bk2/8/1b2K3/8 b - - +perft 1 25 +perft 2 1253 +perft 3 25808 +perft 4 1193342 +perft 5 23961670 +perft 6 1057918361 + +id gentest-5294 +epd 8/2r2P2/5R2/Q7/1p2B2k/8/1b2K3/8 w - - +perft 1 54 +perft 2 1164 +perft 3 54623 +perft 4 1145095 +perft 5 51191677 +perft 6 1056020621 + +id gentest-5295 +epd 8/2r2P2/8/Q7/1p2BRk1/8/1b2K3/8 b - - +perft 1 3 +perft 2 136 +perft 3 2950 +perft 4 121860 +perft 5 2513587 +perft 6 102346161 + +id gentest-5296 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-5297 +epd rnbqkbnr/ppppppp1/8/7p/8/3P4/PPPQPPPP/RNB1KBNR b KQkq - +perft 1 21 +perft 2 586 +perft 3 13754 +perft 4 419311 +perft 5 10730679 +perft 6 348067988 + +id gentest-5298 +epd rnbqkbnr/p2pppp1/8/1pp4p/8/3PQ3/PPP1PPPP/RNB1KBNR w KQkq - +perft 1 34 +perft 2 797 +perft 3 27674 +perft 4 719243 +perft 5 25761048 +perft 6 720914462 + +id gentest-5299 +epd rnbqkbn1/p2ppppr/8/1pp4p/7P/3PQ1P1/PPP1PP2/RNB1KBNR b KQq - +perft 1 23 +perft 2 731 +perft 3 18399 +perft 4 634916 +perft 5 17336311 +perft 6 624993363 + +id gentest-5300 +epd r1bqkbnr/p2pppp1/n7/1pQ4p/7P/3P2P1/PPP1PP2/RNB1KBNR w KQq - +perft 1 47 +perft 2 1005 +perft 3 42581 +perft 4 1046990 +perft 5 42785749 +perft 6 1163529772 + +id gentest-5301 +epd r1bqkbnr/p1Qpp1p1/n4p2/1p5p/7P/3P2PN/PPP1PP2/RNB1KB1R b KQq - +perft 1 19 +perft 2 781 +perft 3 17100 +perft 4 667856 +perft 5 16476592 +perft 6 630091061 + +id gentest-5302 +epd 1rbqkbnr/p1Q1p1p1/n2p1p2/1p4Np/7P/3P2P1/PPP1PP2/RNB1KB1R w KQ - +perft 1 45 +perft 2 1013 +perft 3 43686 +perft 4 1079349 +perft 5 44985842 +perft 6 1194756513 + +id gentest-5303 +epd 1r1qkbnr/p1Q1p1p1/n2p1p2/1p5p/4N1bP/3PP1P1/PPP2P2/RNB1KB1R b KQ - +perft 1 29 +perft 2 1149 +perft 3 29824 +perft 4 1140401 +perft 5 31235743 +perft 6 1173124487 + +id gentest-5304 +epd 1r2kbnr/p1q1p3/n2p1pp1/1p5p/2P1N1bP/3PP1P1/PP3P2/RNB1KB1R w KQ - +perft 1 26 +perft 2 940 +perft 3 24643 +perft 4 898038 +perft 5 24162298 +perft 6 886790539 + +id gentest-5305 +epd 1r2kbnr/p1q1p3/3p1pp1/1pn4p/1PPPN1bP/4P1P1/P4P2/RNB1KB1R b KQ - +perft 1 44 +perft 2 1212 +perft 3 47752 +perft 4 1321161 +perft 5 51064726 +perft 6 1437100243 + +id gentest-5306 +epd 1r2kbnr/p2bp3/2qp1pp1/1pP4p/2PPN2P/4P1P1/P4P2/RNB1KB1R w KQ - +perft 1 29 +perft 2 987 +perft 3 28967 +perft 4 1004309 +perft 5 29751448 +perft 6 1043311927 + +id gentest-5307 +epd 1r2kb1r/p2bp3/2qp1ppn/1pP4p/2PPN2P/N3P1P1/P4P2/R1B1KBR1 b Q - +perft 1 38 +perft 2 992 +perft 3 35361 +perft 4 973239 +perft 5 35188503 +perft 6 1000726034 + +id gentest-5308 +epd r4b1r/p2bpk2/2qp1ppn/1pPP3p/2P1N2P/N3P1P1/P4P2/R1B1KBR1 w Q - +perft 1 26 +perft 2 843 +perft 3 23333 +perft 4 771397 +perft 5 22186860 +perft 6 742999366 + +id gentest-5309 +epd r4b1r/3bpk2/p1qp1ppn/1pPP3p/2P4P/N1N1P1P1/P3BP2/R1B1K1R1 b Q - +perft 1 34 +perft 2 1018 +perft 3 35230 +perft 4 1047073 +perft 5 36431794 +perft 6 1082880384 + +id gentest-5310 +epd 2b2b1r/r3pk2/p1qp1ppn/1pPP3p/2P4P/N1N1P1P1/P4P2/R1BBK1R1 w Q - +perft 1 31 +perft 2 1083 +perft 3 32819 +perft 4 1105171 +perft 5 33186031 +perft 6 1106828809 + +id gentest-5311 +epd 2b2bnr/r3pk2/p1qp1pp1/1NPP3p/2P4P/N3P1P1/P2K1P2/R1BB2R1 b - - +perft 1 33 +perft 2 989 +perft 3 30597 +perft 4 909645 +perft 5 28074639 +perft 6 832402498 + +id gentest-5312 +epd q1b2bnr/r3pk2/p2p2p1/1NPP1p1B/2P4P/N3P1P1/P2K1P2/R1B3R1 w - - +perft 1 31 +perft 2 783 +perft 3 23684 +perft 4 642093 +perft 5 19618497 +perft 6 564601199 + +id gentest-5313 +epd q1b2bnr/r3p1k1/p2p2p1/1NPP1p2/2P4P/N3P1P1/PB1KBP2/R5R1 b - - +perft 1 5 +perft 2 221 +perft 3 5372 +perft 4 214474 +perft 5 5778151 +perft 6 221041699 + +id gentest-5314 +epd q1b2bnr/r3p2k/p2N4/2PP1pp1/2P4P/N3P1P1/PB1KBP2/R5R1 w - - +perft 1 48 +perft 2 1087 +perft 3 47239 +perft 4 1188227 +perft 5 49151658 +perft 6 1338567142 + +id gentest-5315 +epd q1b2bnr/r6k/p1PN4/3Pppp1/2P4P/N3PPP1/PB1KB3/R5R1 b - - +perft 1 27 +perft 2 1133 +perft 3 31884 +perft 4 1251285 +perft 5 37118589 +perft 6 1403131893 + +id gentest-5316 +epd q1b2bnr/2r4k/p1PN4/3Pppp1/2P4P/N2KPPP1/PB2B3/R5R1 w - - +perft 1 37 +perft 2 1083 +perft 3 38434 +perft 4 1140892 +perft 5 40137457 +perft 6 1234921064 + +id gentest-5317 +epd q1b2bnr/r6k/p1PN4/3Pppp1/2PB3P/N2KPPP1/P3B3/4R1R1 b - - +perft 1 28 +perft 2 996 +perft 3 28825 +perft 4 1023811 +perft 5 30996403 +perft 6 1101653967 + +id gentest-5318 +epd q1b2bnr/1r5k/p1PN4/3Pp1p1/2P2p1P/N2KPPP1/P3B3/B3R1R1 w - - +perft 1 36 +perft 2 1260 +perft 3 42486 +perft 4 1436076 +perft 5 49052420 +perft 6 1665973540 + +id gentest-5319 +epd q1b2b1r/1P2n2k/p7/3PpNp1/2P2p1P/N2KPPP1/P3B3/B3R1R1 b - - +perft 1 23 +perft 2 904 +perft 3 23422 +perft 4 890825 +perft 5 24904947 +perft 6 936088008 + +id gentest-5320 +epd qB3b1r/1b2n2k/p7/3PpNp1/2P4P/N2KPPp1/P3B3/B3R1R1 w - - +perft 1 37 +perft 2 788 +perft 3 28609 +perft 4 695804 +perft 5 25326210 +perft 6 679876259 + +id gentest-5321 +epd qBn2b1r/1b5k/p7/3PpNp1/2P4P/N2KPPp1/P1B5/B3R1R1 b - - +perft 1 23 +perft 2 848 +perft 3 20945 +perft 4 780083 +perft 5 20541267 +perft 6 771210588 + +id gentest-5322 +epd qBn4r/1b5k/p2b4/3PpN2/2P4p/N3PPp1/P1B1K3/B3R1R1 w - - +perft 1 37 +perft 2 735 +perft 3 27863 +perft 4 629215 +perft 5 24138668 +perft 6 599226212 + +id gentest-5323 +epd qBn4r/1b5k/3b4/pN1PpN2/2P4p/4PPp1/P1B1K3/B3RR2 b - - +perft 1 26 +perft 2 1045 +perft 3 24875 +perft 4 980245 +perft 5 25648604 +perft 6 1002083991 + +id gentest-5324 +epd qBn4r/1b5k/3b4/pN1P1N2/2P1p2p/3BPP2/P3K1p1/B3RR2 w - - +perft 1 40 +perft 2 1451 +perft 3 52205 +perft 4 1838515 +perft 5 67515813 +perft 6 2371938405 + +id gentest-5325 +epd qbn4r/1bN4k/8/p2P1N2/2PBp2p/3BPP2/P3K1p1/4RR2 b - - +perft 1 29 +perft 2 967 +perft 3 29633 +perft 4 1017435 +perft 5 32558313 +perft 6 1132799477 + +id gentest-5326 +epd bbn4r/q1N4k/8/p2P1N2/2PBp2p/3BPP2/P3K1p1/2R2R2 w - - +perft 1 45 +perft 2 1401 +perft 3 52359 +perft 4 1785976 +perft 5 66044334 +perft 6 2381936291 + +id gentest-5327 +epd bbn4r/q1N4k/7N/p2P4/2PBp2p/3BPP2/P2K4/2R2Rr1 b - - +perft 1 31 +perft 2 1290 +perft 3 43605 +perft 4 1715198 +perft 5 61898393 +perft 6 2352513075 + +id gentest-5328 +epd bbn4r/2N5/1q5k/p2P4/2PBB2p/4PP2/P2K4/2R2Rr1 w - - +perft 1 41 +perft 2 1677 +perft 3 61763 +perft 4 2517090 +perft 5 91273979 +perft 6 3719976204 + +id gentest-5329 +epd bbn4r/2N5/1q5k/p2P4/2P1BP1p/4P3/PB1K4/2R2r2 b - - +perft 1 40 +perft 2 1303 +perft 3 51552 +perft 4 1640862 +perft 5 65793546 +perft 6 2047164430 + +id gentest-5330 +epd bbn1N2r/8/1q6/p2P3k/2P1BP1p/4P3/PB1K4/2R4r w - - +perft 1 39 +perft 2 1552 +perft 3 51325 +perft 4 1985018 +perft 5 64054450 +perft 6 2460343166 + +id gentest-5331 +epd bb2N2r/8/1q1n4/p6k/2P1BP1p/4P3/PB1K4/1R5r b - - +perft 1 44 +perft 2 1420 +perft 3 57002 +perft 4 1836259 +perft 5 74151205 +perft 6 2352351046 + +id gentest-5332 +epd bb2N2r/8/3n4/p6k/2P1BP1p/3KP3/Pq6/1Rr5 w - - +perft 1 21 +perft 2 871 +perft 3 16136 +perft 4 672533 +perft 5 13748868 +perft 6 569905573 + +id gentest-5333 +epd bb2N2r/8/1q1n4/p4B1k/2P1PP1p/3K4/P7/1Rr5 b - - +perft 1 47 +perft 2 1008 +perft 3 39763 +perft 4 878850 +perft 5 34796911 +perft 6 779512946 + +id gentest-5334 +epd bR2N2r/8/3n4/p4B1k/2P1PP1p/3K4/P7/5rq1 w - - +perft 1 29 +perft 2 1079 +perft 3 26580 +perft 4 1009739 +perft 5 23976222 +perft 6 927220079 + +id gentest-5335 +epd b6r/8/3N4/p4B1k/2P1PP1p/3K4/P7/1Rr3q1 b - - +perft 1 40 +perft 2 893 +perft 3 33414 +perft 4 760163 +perft 5 28158351 +perft 6 647547279 + +id gentest-5336 +epd b6r/8/3N4/p1q2B1k/2P1PP1p/3K4/P7/R6r w - - +perft 1 26 +perft 2 969 +perft 3 21258 +perft 4 784700 +perft 5 17706157 +perft 6 649455934 + +id gentest-5337 +epd b4r2/8/3N4/p1q1PB1k/2P2P1p/3K4/P7/7R b - - +perft 1 35 +perft 2 880 +perft 3 28348 +perft 4 723585 +perft 5 23401963 +perft 6 599695578 + +id gentest-5338 +epd b4r2/8/8/p3qB1k/2P2P1p/8/P1K5/7R w - - +perft 1 29 +perft 2 1060 +perft 3 24607 +perft 4 879366 +perft 5 19405437 +perft 6 689990458 + +id gentest-5339 +epd b4r2/8/4q3/p4B1k/P1P2P1p/8/2K5/3R4 b - - +perft 1 39 +perft 2 1000 +perft 3 34282 +perft 4 801276 +perft 5 26886772 +perft 6 598026976 + +id gentest-5340 +epd b4r2/8/3R4/p4B1k/q1P2P1p/8/2K5/8 w - - +perft 1 6 +perft 2 174 +perft 3 3836 +perft 4 109122 +perft 5 2288860 +perft 6 67481103 + +id gentest-5341 +epd b5r1/8/R7/p4B1k/q1P2P1p/8/1K6/8 b - - +perft 1 33 +perft 2 629 +perft 3 19244 +perft 4 368122 +perft 5 11340920 +perft 6 219458585 + +id gentest-5342 +epd b7/3q4/R7/p4Brk/2P2P1p/8/8/1K6 w - - +perft 1 26 +perft 2 870 +perft 3 18594 +perft 4 598996 +perft 5 12554366 +perft 6 402069326 + +id gentest-5343 +epd b7/3q4/R7/pP5k/5P1p/3B4/8/1K6 b - - +perft 1 30 +perft 2 665 +perft 3 17030 +perft 4 353415 +perft 5 9065672 +perft 6 183403787 + +id gentest-5344 +epd b7/3q4/R5Bk/1P6/p4P1p/8/8/1K6 w - - +perft 1 24 +perft 2 544 +perft 3 10822 +perft 4 254566 +perft 5 4863876 +perft 6 122903736 + +id gentest-5345 +epd 8/3q3B/R6k/1P3P2/p6p/5b2/8/1K6 b - - +perft 1 8 +perft 2 141 +perft 3 4197 +perft 4 65327 +perft 5 1978532 +perft 6 31426449 + +id gentest-5346 +epd 8/q7/R1b3Bk/1P3P2/p6p/8/8/1K6 w - - +perft 1 17 +perft 2 431 +perft 3 7284 +perft 4 179829 +perft 5 3071708 +perft 6 79530463 + +id gentest-5347 +epd 8/q7/R1P5/5P1k/p6p/8/8/1K6 b - - +perft 1 21 +perft 2 201 +perft 3 4488 +perft 4 50770 +perft 5 1145601 +perft 6 14783378 + +id gentest-5348 +epd 8/1q6/2P2P2/7k/p6p/8/8/1K6 w - - +perft 1 5 +perft 2 102 +perft 3 565 +perft 4 11829 +perft 5 81776 +perft 6 1823049 + +id gentest-5349 +epd 8/q7/2P2P2/7k/p6p/8/1K6/8 b - - +perft 1 23 +perft 2 174 +perft 3 4124 +perft 4 25254 +perft 5 607335 +perft 6 4467051 + +id gentest-5350 +epd 8/q7/2P2P2/8/p4k1p/K7/8/8 w - - +perft 1 5 +perft 2 126 +perft 3 848 +perft 4 21218 +perft 5 161906 +perft 6 3936799 + +id gentest-5351 +epd 8/3q4/2P2P2/8/p4k1p/8/1K6/8 b - - +perft 1 31 +perft 2 251 +perft 3 7016 +perft 4 45576 +perft 5 1195273 +perft 6 9188872 + +id gentest-5352 +epd 2q5/8/2P2P2/8/p5kp/2K5/8/8 w - - +perft 1 9 +perft 2 206 +perft 3 1791 +perft 4 43035 +perft 5 356010 +perft 6 8468810 + +id gentest-5353 +epd 8/8/2P1qP2/8/p5kp/8/8/1K6 b - - +perft 1 28 +perft 2 149 +perft 3 4302 +perft 4 26321 +perft 5 710414 +perft 6 5307970 + +id gentest-5354 +epd 6q1/8/2P2P2/8/p5kp/8/1K6/8 w - - +perft 1 8 +perft 2 202 +perft 3 1423 +perft 4 34885 +perft 5 289141 +perft 6 6818961 + +id gentest-5355 +epd 6q1/8/2P2P2/8/6kp/p1K5/8/8 b - - +perft 1 26 +perft 2 178 +perft 3 4567 +perft 4 36849 +perft 5 911351 +perft 6 7563672 + +id gentest-5356 +epd 8/8/2P2P2/8/1K4kp/p7/7q/8 w - - +perft 1 10 +perft 2 248 +perft 3 1797 +perft 4 44007 +perft 5 347307 +perft 6 8687169 + +id gentest-5357 +epd 8/2q2P2/2P5/8/6kp/pK6/8/8 b - - +perft 1 25 +perft 2 241 +perft 3 6189 +perft 4 64315 +perft 5 1580579 +perft 6 19198285 + +id gentest-5358 +epd 3q1Q2/8/2P5/8/6k1/pK5p/8/8 w - - +perft 1 26 +perft 2 515 +perft 3 11111 +perft 4 212340 +perft 5 4460917 +perft 6 87881066 + +id gentest-5359 +epd 3q4/8/2P5/8/7k/K4Q1p/8/8 b - - +perft 1 22 +perft 2 433 +perft 3 7332 +perft 4 149601 +perft 5 2771371 +perft 6 56455984 + +id gentest-5360 +epd 3q4/8/2P4k/8/8/K5Qp/8/8 w - - +perft 1 28 +perft 2 520 +perft 3 10977 +perft 4 212711 +perft 5 4358760 +perft 6 87793150 + +id gentest-5361 +epd 8/8/1qP4k/8/K7/7p/8/4Q3 b - - +perft 1 24 +perft 2 403 +perft 3 8218 +perft 4 151953 +perft 5 3070462 +perft 6 59975835 + +id gentest-5362 +epd 8/8/2P5/7k/K7/7p/1q6/7Q w - - +perft 1 15 +perft 2 321 +perft 3 5269 +perft 4 106915 +perft 5 1990778 +perft 6 40192021 + +id gentest-5363 +epd 8/8/2P4k/8/K7/7p/1Q6/8 b - - +perft 1 5 +perft 2 145 +perft 3 867 +perft 4 22611 +perft 5 146743 +perft 6 3823382 + +id gentest-5364 +epd 8/8/2P4k/8/K7/7p/2Q5/8 w - - +perft 1 25 +perft 2 106 +perft 3 2811 +perft 4 16661 +perft 5 447189 +perft 6 2789759 + +id gentest-5365 +epd 8/8/2P4k/1K6/8/8/4Q2p/8 b - - +perft 1 8 +perft 2 232 +perft 3 2171 +perft 4 59187 +perft 5 676949 +perft 6 17144553 + +id gentest-5366 +epd 8/8/2P5/1K6/6k1/8/7p/8 w - - +perft 1 8 +perft 2 96 +perft 3 762 +perft 4 9819 +perft 5 83049 +perft 6 1249615 + +id gentest-5367 +epd 8/8/2P5/1K6/5k2/8/7p/8 b - - +perft 1 12 +perft 2 96 +perft 3 1327 +perft 4 9918 +perft 5 159691 +perft 6 1277129 + +id gentest-5368 +epd 8/8/2P5/K7/5k2/6n1/8/8 w - - +perft 1 6 +perft 2 78 +perft 3 593 +perft 4 7647 +perft 5 65066 +perft 6 807587 + +id gentest-5369 +epd 8/8/2P5/2K5/5k2/8/4n3/8 b - - +perft 1 13 +perft 2 90 +perft 3 1158 +perft 4 8928 +perft 5 113154 +perft 6 925509 + +id gentest-5370 +epd 8/8/2P5/5n2/1K3k2/8/8/8 w - - +perft 1 9 +perft 2 135 +perft 3 1020 +perft 4 14278 +perft 5 121487 +perft 6 1597143 + +id gentest-5371 +epd 8/2P5/8/5n2/8/K5k1/8/8 b - - +perft 1 15 +perft 2 134 +perft 3 1841 +perft 4 23038 +perft 5 281233 +perft 6 4306463 + +id gentest-5372 +epd 2Q5/8/8/5n2/7k/K7/8/8 w - - +perft 1 24 +perft 2 246 +perft 3 6428 +perft 4 59963 +perft 5 1528883 +perft 6 13869988 + +id gentest-5373 +epd 8/7Q/7n/8/7k/K7/8/8 b - - +perft 1 5 +perft 2 105 +perft 3 756 +perft 4 19104 +perft 5 147773 +perft 6 3838511 + +id gentest-5374 +epd 8/5n2/8/8/6k1/K7/8/8 w - - +perft 1 5 +perft 2 70 +perft 3 470 +perft 4 5992 +perft 5 37383 +perft 6 465839 + +id gentest-5375 +epd 8/5n2/8/1K3k2/8/8/8/8 b - - +perft 1 14 +perft 2 108 +perft 3 1388 +perft 4 8589 +perft 5 108901 +perft 6 705795 + +id gentest-5376 +epd 8/8/4n3/5k2/2K5/8/8/8 w - - +perft 1 6 +perft 2 87 +perft 3 597 +perft 4 8295 +perft 5 52766 +perft 6 705164 + +id gentest-5377 +epd 3n4/8/K7/5k2/8/8/8/8 b - - +perft 1 12 +perft 2 49 +perft 3 617 +perft 4 3568 +perft 5 44621 +perft 6 243880 + +id gentest-5378 +epd 8/1K3n2/6k1/8/8/8/8/8 w - - +perft 1 8 +perft 2 104 +perft 3 555 +perft 4 6786 +perft 5 41130 +perft 6 489716 + +id gentest-5379 +epd 8/8/3K2k1/4n3/8/8/8/8 b - - +perft 1 15 +perft 2 87 +perft 3 1168 +perft 4 7341 +perft 5 91777 +perft 6 564537 + +id gentest-5380 +epd 8/6k1/8/4K3/8/8/8/8 w - - +perft 1 7 +perft 2 52 +perft 3 385 +perft 4 1994 +perft 5 14904 +perft 6 90662 + +id gentest-5381 +epd 8/8/4K1k1/8/8/8/8/8 b - - +perft 1 5 +perft 2 36 +perft 3 185 +perft 4 1344 +perft 5 7488 +perft 6 51915 + +id gentest-5382 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-5383 +epd rnbqkbnr/ppppppp1/7p/8/8/4P2N/PPPP1PPP/RNBQKB1R b KQkq - +perft 1 19 +perft 2 550 +perft 3 11624 +perft 4 357283 +perft 5 8387800 +perft 6 268057495 + +id gentest-5384 +epd rnbqkbnr/1ppppp2/p6p/6p1/8/4P2N/PPPPQPPP/RNB1KB1R w KQkq - +perft 1 28 +perft 2 501 +perft 3 15345 +perft 4 317204 +perft 5 10360381 +perft 6 239670673 + +id gentest-5385 +epd rnbqkbnr/1ppp1p2/p3p2p/6p1/6Q1/2N1P2N/PPPP1PPP/R1B1KB1R b KQkq - +perft 1 25 +perft 2 1096 +perft 3 27771 +perft 4 1157565 +perft 5 30620511 +perft 6 1241961350 + +id gentest-5386 +epd rnbqk1nr/1ppp1p2/p2bp2p/6pQ/8/2N1P2N/PPPP1PPP/R1B1KB1R w KQkq - +perft 1 39 +perft 2 972 +perft 3 37730 +perft 4 969284 +perft 5 37552285 +perft 6 1007078922 + +id gentest-5387 +epd rnbqk1nr/1ppp1p2/p3p2p/6Q1/1b6/2N1P2N/PPPP1PPP/R1BK1B1R b kq - +perft 1 28 +perft 2 1201 +perft 3 32490 +perft 4 1333820 +perft 5 37363748 +perft 6 1492145090 + +id gentest-5388 +epd rnbqk1n1/1ppp3r/p3pp1p/6Q1/1b6/2N1P2N/PPPP1PPP/1RBK1B1R w q - +perft 1 42 +perft 2 1140 +perft 3 46424 +perft 4 1225194 +perft 5 48947342 +perft 6 1300260731 + +id gentest-5389 +epd rnbqk1n1/1ppp3r/p3p2p/5p2/1b6/2N1PQ1N/PPPP1PPP/1RBK1B1R b q - +perft 1 32 +perft 2 1120 +perft 3 35218 +perft 4 1271536 +perft 5 40386038 +perft 6 1485597066 + +id gentest-5390 +epd rnbqk1n1/1ppp3r/p3pb1p/5p2/8/2NPPQ1N/PPP2PPP/1RBK1B1R w q - +perft 1 33 +perft 2 933 +perft 3 32009 +perft 4 917717 +perft 5 32341797 +perft 6 947644880 + +id gentest-5391 +epd rnbq2n1/1pppk2r/p3pb1p/1N3p2/8/3PPQ1N/PPPB1PPP/1R1K1B1R b - - +perft 1 28 +perft 2 1134 +perft 3 32305 +perft 4 1301504 +perft 5 37602368 +perft 6 1508787729 + +id gentest-5392 +epd rnbq2n1/1pppk2r/p4b2/1N2ppNp/8/3PPQ2/PPPB1PPP/1R1K1B1R w - - +perft 1 46 +perft 2 1096 +perft 3 48892 +perft 4 1229887 +perft 5 53550959 +perft 6 1416743893 + +id gentest-5393 +epd rnbq2n1/1pQpk2r/p4b2/1N3pNp/4p3/3PP3/PPPB1PPP/1R1K1B1R b - - +perft 1 25 +perft 2 1263 +perft 3 31479 +perft 4 1495399 +perft 5 40407452 +perft 6 1836786662 + +id gentest-5394 +epd rnbq1kn1/1pQp3r/p7/1N3pNp/4p3/2bPPP2/PPPB2PP/1R1K1B1R w - - +perft 1 48 +perft 2 1532 +perft 3 70833 +perft 4 2220165 +perft 5 99378757 +perft 6 3137913085 + +id gentest-5395 +epd rQb2kn1/1p1pq2r/p7/1N3pNp/P3p3/2bPPP2/1PPB2PP/1R1K1B1R b - - +perft 1 40 +perft 2 1663 +perft 3 59190 +perft 4 2405059 +perft 5 83607989 +perft 6 3348495751 + +id gentest-5396 +epd rQb2kn1/1p1pq2r/p7/1N3pN1/PbP1p2p/3PPP2/1P1B2PP/1R1K1B1R w - - +perft 1 42 +perft 2 1381 +perft 3 56226 +perft 4 1874352 +perft 5 74803261 +perft 6 2521531210 + +id gentest-5397 +epd r1b2kn1/1p2q2r/p2p4/1N3pN1/PbP1p2p/3PPP1Q/1P1B2PP/1R1K1B1R b - - +perft 1 35 +perft 2 1219 +perft 3 41618 +perft 4 1452909 +perft 5 50943852 +perft 6 1794077277 + +id gentest-5398 +epd r1b2kn1/1p3q1r/p2p4/1N6/PbP1Np1p/3PPP1Q/1P1B2PP/1R1K1B1R w - - +perft 1 39 +perft 2 1459 +perft 3 56061 +perft 4 2131758 +perft 5 80945281 +perft 6 3090685681 + +id gentest-5399 +epd r1b2kn1/Np5r/p2pq3/8/PbP1Np1p/3PPP1Q/1P1B2PP/1R2KB1R b - - +perft 1 42 +perft 2 1332 +perft 3 52820 +perft 4 1726082 +perft 5 66612195 +perft 6 2240881035 + +id gentest-5400 +epd r1b2kn1/Np5r/p2p1q2/8/PbP1Np1p/3PPP1Q/1P1B2PP/3RKB1R w - - +perft 1 33 +perft 2 1396 +perft 3 46515 +perft 4 1841227 +perft 5 62475830 +perft 6 2407497315 + +id gentest-5401 +epd 1rb2kn1/Np5r/p2p1q2/2N5/PBP2p1p/3PPP1Q/1P4PP/3RKB1R b - - +perft 1 40 +perft 2 1373 +perft 3 48190 +perft 4 1682078 +perft 5 57994902 +perft 6 2052406817 + +id gentest-5402 +epd 1r3kn1/Np1b3r/N2p1q2/p7/PBP2p1p/3PPP1Q/1P4PP/3RKB1R w - - +perft 1 34 +perft 2 1421 +perft 3 48594 +perft 4 1899913 +perft 5 66071078 +perft 6 2490952234 + +id gentest-5403 +epd 1r2bkn1/Np5r/N2p1q2/B7/P1P2pQp/3PPP2/1P4PP/3RKB1R b - - +perft 1 42 +perft 2 1740 +perft 3 64814 +perft 4 2636383 +perft 5 94668530 +perft 6 3807754374 + +id gentest-5404 +epd 1r2bk2/Np2q2r/N2p3n/B7/P1P2pQp/3PPP2/1P4PP/2R1KB1R w - - +perft 1 44 +perft 2 1402 +perft 3 58924 +perft 4 1947841 +perft 5 80884885 +perft 6 2734593305 + +id gentest-5405 +epd 1r3k2/Np2qb1r/N2p3n/B6Q/P1P2p1p/3PPP2/1P1K2PP/2R2B1R b - - +perft 1 35 +perft 2 1471 +perft 3 50685 +perft 4 2125489 +perft 5 73890574 +perft 6 3084751852 + +id gentest-5406 +epd 1r3kb1/Np2q1r1/N2p3n/B6Q/P1P2pPp/3PPP2/1P1K3P/2R2B1R w - - +perft 1 46 +perft 2 1462 +perft 3 62966 +perft 4 2094535 +perft 5 89594205 +perft 6 3033558785 + +id gentest-5407 +epd 1r3k2/Np2q1r1/N2pb2n/B6Q/P1P2pPp/3PPP2/1P1K3P/4RB1R b - - +perft 1 36 +perft 2 1561 +perft 3 54545 +perft 4 2326571 +perft 5 82050561 +perft 6 3463302303 + +id gentest-5408 +epd 2r2k2/Np2qr2/N2pb2n/B6Q/P1P2pPp/1P1PPP2/3K3P/4RB1R w - - +perft 1 43 +perft 2 1405 +perft 3 58963 +perft 4 1965576 +perft 5 81913339 +perft 6 2775504923 + +id gentest-5409 +epd 2N2k2/4qr2/Np1pb2n/B3Q3/P1P2pPp/1P1PPP2/3K3P/4RB1R b - - +perft 1 29 +perft 2 1357 +perft 3 39574 +perft 4 1763958 +perft 5 52599158 +perft 6 2268704256 + +id gentest-5410 +epd 2N2k2/4qr2/N2pQ2n/Bp6/P1P3Pp/1P1PpP2/3K3P/4RB1R w - - +perft 1 8 +perft 2 215 +perft 3 9289 +perft 4 240457 +perft 5 10516431 +perft 6 277001282 + +id gentest-5411 +epd 2N2k2/4qr2/N2p4/Bp3n2/P1P3Pp/1P1PQP2/7P/2K1RB1R b - - +perft 1 28 +perft 2 1283 +perft 3 37064 +perft 4 1651629 +perft 5 49012098 +perft 6 2160496556 + +id gentest-5412 +epd 2N3k1/5r2/N2p1q2/Bp3n2/P1P3Pp/1P1P1P2/4Q2P/2K1RB1R w - - +perft 1 44 +perft 2 1481 +perft 3 58268 +perft 4 1938365 +perft 5 78057244 +perft 6 2561319887 + +id gentest-5413 +epd 2N4k/5r2/N2p1q2/1p3n2/P1P3Pp/1P1P1P2/3BQ1BP/2K1R2R b - - +perft 1 34 +perft 2 1335 +perft 3 44121 +perft 4 1778048 +perft 5 57864342 +perft 6 2380525349 + +id gentest-5414 +epd 2N4k/4q2r/N2p4/1p3n2/P1P3Pp/1P1P1P2/3BQ2P/2K1RB1R w - - +perft 1 41 +perft 2 1207 +perft 3 49414 +perft 4 1476237 +perft 5 60412508 +perft 6 1790273558 + +id gentest-5415 +epd 2N4k/7r/N2p4/1p3nP1/P1P4p/1P1P1P2/3B3P/2KQqB1R b - - +perft 1 34 +perft 2 1002 +perft 3 32100 +perft 4 979404 +perft 5 30785461 +perft 6 974965701 + +id gentest-5416 +epd 2N4k/8/N2p4/1p3nPr/P1P4p/1P1P1P2/3Q3P/2K2B1R w - - +perft 1 38 +perft 2 607 +perft 3 22336 +perft 4 362913 +perft 5 13136631 +perft 6 220907462 + +id gentest-5417 +epd 2N5/7k/N2p4/1p3nPr/P1PP3p/1P2QP2/7P/2K2B1R b - - +perft 1 17 +perft 2 658 +perft 3 10350 +perft 4 395273 +perft 5 6333423 +perft 6 240426151 + +id gentest-5418 +epd 2N5/7k/N2p4/1p3n2/P1PP1Q1p/1P3P2/7P/2K2BrR w - - +perft 1 32 +perft 2 661 +perft 3 22416 +perft 4 428716 +perft 5 15168340 +perft 6 279274708 + +id gentest-5419 +epd 2N5/3N3k/3p3n/1p6/P1PP1Q1p/1P3P2/7P/2K2BrR b - - +perft 1 22 +perft 2 794 +perft 3 13451 +perft 4 504671 +perft 5 8296592 +perft 6 315157920 + +id gentest-5420 +epd 2N5/3N1n1k/3p1Q2/1p4r1/P1PP3p/1P3P2/7P/2K2B1R w - - +perft 1 40 +perft 2 716 +perft 3 28848 +perft 4 486196 +perft 5 19437500 +perft 6 315904774 + +id gentest-5421 +epd 8/3N1n1k/1N1p2Q1/6r1/P1pP3p/1P3P2/7P/2K2B1R b - - +perft 1 3 +perft 2 93 +perft 3 1759 +perft 4 56133 +perft 5 1010630 +perft 6 32595012 + +id gentest-5422 +epd 5N1k/5n2/1N1p2Q1/1r6/P1pP3p/1P3P2/7P/2K2B1R w - - +perft 1 45 +perft 2 703 +perft 3 29401 +perft 4 442757 +perft 5 17568802 +perft 6 267806956 + +id gentest-5423 +epd 5N1k/5n2/1N1pQ3/4r3/P1pP3p/1P3P2/1K5P/5B1R b - - +perft 1 21 +perft 2 835 +perft 3 14780 +perft 4 582895 +perft 5 9760450 +perft 6 382136552 + +id gentest-5424 +epd 5N1k/5n2/1N1pQ3/5r2/P2P3p/KPp2P2/7P/5B1R w - - +perft 1 40 +perft 2 663 +perft 3 26677 +perft 4 431773 +perft 5 17183215 +perft 6 281009731 + +id gentest-5425 +epd 5N1k/4Qn2/1N1p4/2r5/P1BP3p/KPp2P2/7P/7R b - - +perft 1 20 +perft 2 937 +perft 3 15242 +perft 4 675779 +perft 5 10655118 +perft 6 455598619 + +id gentest-5426 +epd 5N1k/2r5/1N1Q4/6n1/P1BP3p/KPp2P2/7P/7R w - - +perft 1 46 +perft 2 822 +perft 3 36873 +perft 4 618300 +perft 5 27066324 +perft 6 452613325 + +id gentest-5427 +epd 2r2N1k/8/1N6/1B4n1/P2P3p/KPp2PQ1/7P/7R b - - +perft 1 20 +perft 2 878 +perft 3 15210 +perft 4 648501 +perft 5 11108139 +perft 6 461245084 + +id gentest-5428 +epd N1r2N1k/8/4n3/1B6/P2P4/KPp2PQp/7P/7R w - - +perft 1 43 +perft 2 678 +perft 3 27988 +perft 4 418289 +perft 5 16607341 +perft 6 262561083 + +id gentest-5429 +epd N1r1QN1k/2n5/8/1B6/P2P4/KPp2P1p/7P/7R b - - +perft 1 13 +perft 2 449 +perft 3 6120 +perft 4 217859 +perft 5 3171766 +perft 6 113448876 + +id gentest-5430 +epd r4Nk1/2n5/8/1B6/P2P4/KPp1QP1p/7P/7R w - - +perft 1 41 +perft 2 682 +perft 3 24469 +perft 4 395396 +perft 5 14192982 +perft 6 233733333 + +id gentest-5431 +epd 4rNk1/2n5/8/8/P1BP4/KPp2P1p/3Q3P/7R b - - +perft 1 6 +perft 2 233 +perft 3 3794 +perft 4 132646 +perft 5 2404761 +perft 6 81552680 + +id gentest-5432 +epd 3r1Nk1/8/4n3/8/P1BP4/KPp2P1p/2Q4P/7R w - - +perft 1 39 +perft 2 498 +perft 3 18273 +perft 4 286055 +perft 5 10116459 +perft 6 171092713 + +id gentest-5433 +epd 5Nk1/8/3rn3/8/P2P4/KPp2P1p/7P/3Q1B1R b - - +perft 1 20 +perft 2 510 +perft 3 10380 +perft 4 285465 +perft 5 5737271 +perft 6 166417560 + +id gentest-5434 +epd 5N2/8/3rnk2/8/P2P4/KPpQ1P1p/7P/5B1R w - - +perft 1 28 +perft 2 481 +perft 3 14790 +perft 4 255123 +perft 5 8063915 +perft 6 143604087 + +id gentest-5435 +epd 5N2/8/1r2nk2/8/P2P4/KPp2P1p/7P/4QB1R b - - +perft 1 22 +perft 2 670 +perft 3 11997 +perft 4 365398 +perft 5 6539301 +perft 6 203699433 + +id gentest-5436 +epd 5N2/5k2/Br2n3/8/P2P4/KPp2P1p/7P/4Q2R w - - +perft 1 34 +perft 2 728 +perft 3 24293 +perft 4 483749 +perft 5 16186142 +perft 6 310259546 + +id gentest-5437 +epd 5N2/1r3k2/B3n3/8/P2P4/1Pp2P1p/K6P/3Q3R b - - +perft 1 24 +perft 2 716 +perft 3 15410 +perft 4 480289 +perft 5 9736955 +perft 6 311521819 + +id gentest-5438 +epd 5N2/4k3/B3n3/1r6/P2P4/1Pp2P1p/7P/K2Q3R w - - +perft 1 26 +perft 2 616 +perft 3 18223 +perft 4 383144 +perft 5 11960420 +perft 6 237739733 + +id gentest-5439 +epd 3n1N2/4k3/B7/1r6/P2P4/1Pp2P1p/K6P/3Q1R2 b - - +perft 1 22 +perft 2 610 +perft 3 11587 +perft 4 348216 +perft 5 6598553 +perft 6 209258288 + +id gentest-5440 +epd 3n1N2/1r2k3/B7/8/P2P4/1P3P1p/K1pQ3P/5R2 w - - +perft 1 39 +perft 2 657 +perft 3 23523 +perft 4 452663 +perft 5 15789321 +perft 6 319586238 + +id gentest-5441 +epd 3nkN2/1r6/B7/8/PQ1P4/1P3P1p/K1p4P/6R1 b - - +perft 1 19 +perft 2 750 +perft 3 14436 +perft 4 542643 +perft 5 10898560 +perft 6 399028375 + +id gentest-5442 +epd 3nkNR1/8/B7/8/Pr1P4/1P3P1p/K1p4P/8 w - - +perft 1 25 +perft 2 382 +perft 3 8886 +perft 4 168006 +perft 5 4011553 +perft 6 84396602 + +id gentest-5443 +epd 3nk3/3N4/B7/8/P2r4/1P3P1p/K1p3RP/8 b - - +perft 1 25 +perft 2 662 +perft 3 15387 +perft 4 385038 +perft 5 9128236 +perft 6 222491098 + +id gentest-5444 +epd 4k3/3N4/4n3/1B6/P1r5/1P3P1p/K1p3RP/8 w - - +perft 1 27 +perft 2 539 +perft 3 13585 +perft 4 264719 +perft 5 6614585 +perft 6 137032182 + +id gentest-5445 +epd 4k3/8/4n3/1B2N3/P7/1Pr2P1p/K1p4P/6R1 b - - +perft 1 4 +perft 2 138 +perft 3 2760 +perft 4 80741 +perft 5 1714859 +perft 6 46015431 + +id gentest-5446 +epd 4k3/8/2r5/1B2N3/P4n2/1P3PRp/K1p4P/8 w - - +perft 1 26 +perft 2 420 +perft 3 10228 +perft 4 203740 +perft 5 4945955 +perft 6 110011751 + +id gentest-5447 +epd 4k3/8/2r5/4N3/P7/1P1B1PRp/1Kp4P/8 b - - +perft 1 19 +perft 2 541 +perft 3 9173 +perft 4 257672 +perft 5 4472979 +perft 6 123932618 + +id gentest-5448 +epd 4k3/8/4r3/4N3/P7/1P1B1PRp/2K4P/8 w - - +perft 1 32 +perft 2 383 +perft 3 11310 +perft 4 153991 +perft 5 4521475 +perft 6 62497662 + +id gentest-5449 +epd 4k3/8/r7/PB2N3/8/1P3PRp/2K4P/8 b - - +perft 1 4 +perft 2 108 +perft 3 1213 +perft 4 37238 +perft 5 462060 +perft 6 13780931 + +id gentest-5450 +epd 8/8/r1Nk4/PB6/8/1P3PRp/2K4P/8 w - - +perft 1 30 +perft 2 290 +perft 3 8451 +perft 4 95243 +perft 5 2817722 +perft 6 35264741 + +id gentest-5451 +epd 8/8/r1N5/PB1k4/8/1P3PRp/7P/2K5 b - - +perft 1 8 +perft 2 207 +perft 3 2119 +perft 4 59765 +perft 5 714384 +perft 6 20187675 + +id gentest-5452 +epd 1N6/8/8/1B1k4/r7/1P3PRp/7P/2K5 w - - +perft 1 28 +perft 2 438 +perft 3 11140 +perft 4 157364 +perft 5 4051492 +perft 6 56798973 + +id gentest-5453 +epd 1N6/8/8/3k4/B5r1/1P3P1p/7P/2K5 b - - +perft 1 19 +perft 2 243 +perft 3 3830 +perft 4 55244 +perft 5 840243 +perft 6 12698264 + +id gentest-5454 +epd 8/3N4/8/3k4/8/rP3P1p/7P/2K5 w - - +perft 1 13 +perft 2 154 +perft 3 1811 +perft 4 26610 +perft 5 309674 +perft 6 4791308 + +id gentest-5455 +epd 8/3N4/8/8/3k4/rP3P1p/4K2P/8 b - - +perft 1 10 +perft 2 119 +perft 3 1784 +perft 4 20733 +perft 5 314827 +perft 6 3605364 + +id gentest-5456 +epd 8/8/8/2N5/3k4/rP3P1p/4K2P/8 w - - +perft 1 14 +perft 2 148 +perft 3 1822 +perft 4 25780 +perft 5 299909 +perft 6 4500192 + +id gentest-5457 +epd 8/8/3N4/3k4/8/rP3P1p/4K2P/8 b - - +perft 1 14 +perft 2 211 +perft 3 3281 +perft 4 43993 +perft 5 695750 +perft 6 8699083 + +id gentest-5458 +epd 8/8/r2N4/4k3/8/1P2KP1p/7P/8 w - - +perft 1 14 +perft 2 195 +perft 3 2493 +perft 4 37794 +perft 5 471723 +perft 6 7368554 + +id gentest-5459 +epd 8/5N2/r3k3/8/8/1P1K1P1p/7P/8 b - - +perft 1 16 +perft 2 228 +perft 3 3888 +perft 4 49838 +perft 5 834356 +perft 6 10219966 + +id gentest-5460 +epd 8/8/8/5kN1/8/1P1K1P1p/7P/r7 w - - +perft 1 14 +perft 2 258 +perft 3 3227 +perft 4 52527 +perft 5 634891 +perft 6 10175375 + +id gentest-5461 +epd 8/8/8/5kN1/8/1P1K1P1p/7P/6r1 b - - +perft 1 16 +perft 2 196 +perft 3 2963 +perft 4 34194 +perft 5 525008 +perft 6 6053302 + +id gentest-5462 +epd 8/8/2r5/5k2/4N3/1P1K1P1p/7P/8 w - - +perft 1 14 +perft 2 229 +perft 3 2941 +perft 4 46573 +perft 5 585474 +perft 6 9331669 + +id gentest-5463 +epd 8/8/3r4/5kN1/8/1P3P1p/4K2P/8 b - - +perft 1 19 +perft 2 208 +perft 3 3373 +perft 4 37957 +perft 5 597394 +perft 6 6763362 + +id gentest-5464 +epd 8/7N/3r4/5k2/8/1P3P1p/4K2P/8 w - - +perft 1 9 +perft 2 163 +perft 3 1575 +perft 4 25384 +perft 5 260018 +perft 6 4090141 + +id gentest-5465 +epd 8/7N/5r2/5k2/8/1P3P1p/3K3P/8 b - - +perft 1 13 +perft 2 154 +perft 3 2328 +perft 4 25197 +perft 5 386638 +perft 6 4205339 + +id gentest-5466 +epd 8/3k3N/5r2/8/8/1P3P1p/7P/3K4 w - - +perft 1 10 +perft 2 173 +perft 3 1841 +perft 4 29340 +perft 5 320247 +perft 6 5199333 + +id gentest-5467 +epd 3k4/8/5N2/8/5P2/1P5p/7P/3K4 b - - +perft 1 3 +perft 2 45 +perft 3 266 +perft 4 3559 +perft 5 20102 +perft 6 269907 + +id gentest-5468 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-5469 +epd rnbqkbnr/ppppppp1/8/7p/1P6/5N2/P1PPPPPP/RNBQKB1R b KQkq - +perft 1 21 +perft 2 483 +perft 3 11260 +perft 4 280455 +perft 5 7154758 +perft 6 190659130 + +id gentest-5470 +epd rnbq1bnr/pppppkp1/5p2/7p/1P6/5N2/PBPPPPPP/RN1QKB1R w KQ - +perft 1 28 +perft 2 603 +perft 3 16844 +perft 4 387672 +perft 5 11126054 +perft 6 273057885 + +id gentest-5471 +epd rnbq1bn1/pppppkp1/5p1r/7p/PP6/2P2N2/1B1PPPPP/RN1QKB1R b KQ - +perft 1 23 +perft 2 575 +perft 3 12578 +perft 4 335143 +perft 5 7917062 +perft 6 223760273 + +id gentest-5472 +epd rnbq1bn1/pppppkp1/6r1/5p1p/PP6/B1P2N2/3PPPPP/RN1QKB1R w KQ - +perft 1 23 +perft 2 626 +perft 3 15637 +perft 4 424496 +perft 5 11391667 +perft 6 315704563 + +id gentest-5473 +epd r1bq1bn1/pppppkp1/2n3r1/5p1p/PP2P3/B1P2N2/3P1PPP/RN1QKBR1 b Q - +perft 1 31 +perft 2 891 +perft 3 24888 +perft 4 734610 +perft 5 21113517 +perft 6 642198009 + +id gentest-5474 +epd r1bq1bn1/ppppp1p1/4k1r1/P4p1p/P3P3/B1P2N2/3P1PPP/RN1QKBR1 w Q - +perft 1 32 +perft 2 609 +perft 3 19940 +perft 4 411315 +perft 5 13759924 +perft 6 305506978 + +id gentest-5475 +epd 1rbq1bn1/ppppp1p1/4k1r1/P4P1p/P7/B1P2N1P/3P1PP1/RN1QKBR1 b Q - +perft 1 4 +perft 2 125 +perft 3 2808 +perft 4 88980 +perft 5 2042403 +perft 6 67081431 + +id gentest-5476 +epd 1rbq1bn1/ppppp1p1/6r1/PB3k2/P6p/B1P2N1P/3P1PP1/RN1QK1R1 w Q - +perft 1 33 +perft 2 750 +perft 3 24631 +perft 4 553868 +perft 5 18803545 +perft 6 435427953 + +id gentest-5477 +epd 1rbq1bn1/ppppp1p1/8/PB3k2/P5rp/B1P4P/3PQPPN/RN2K1R1 b Q - +perft 1 28 +perft 2 1054 +perft 3 23325 +perft 4 870787 +perft 5 19946435 +perft 6 741484122 + +id gentest-5478 +epd 1rb1qbn1/ppppp1p1/8/PB3k2/P2r3p/B1P2P1P/3PQ1PN/RN2K1R1 w Q - +perft 1 36 +perft 2 917 +perft 3 32503 +perft 4 845496 +perft 5 29774016 +perft 6 795943391 + +id gentest-5479 +epd 1rb1qbn1/ppppp1p1/8/P2r1k2/P6p/B1PB1P1P/3PQ1PN/RN3KR1 b - - +perft 1 4 +perft 2 120 +perft 3 2927 +perft 4 94162 +perft 5 2397909 +perft 6 79478306 + +id gentest-5480 +epd 1rb1qbn1/ppppp1p1/6k1/P7/P6p/B1Pr1P1P/3P2PN/RN1Q1KR1 w - - +perft 1 22 +perft 2 606 +perft 3 14382 +perft 4 406668 +perft 5 10390026 +perft 6 304353981 + +id gentest-5481 +epd 1rb1qbn1/ppppp1p1/3r2k1/P7/P1P3Pp/B4P1P/3P3N/RN1Q1KR1 b - - +perft 1 26 +perft 2 652 +perft 3 16804 +perft 4 451529 +perft 5 11890030 +perft 6 340003752 + +id gentest-5482 +epd 1rb1qb2/ppppp1p1/5rkn/P7/P1P3Pp/B4P1P/R2P3N/1N1Q1KR1 w - - +perft 1 28 +perft 2 755 +perft 3 21876 +perft 4 588321 +perft 5 17942558 +perft 6 496369573 + +id gentest-5483 +epd 1rb1qbn1/ppppp1p1/5rk1/P7/P1P2PPp/B6P/R2P3N/1NQ2KR1 b - - +perft 1 24 +perft 2 647 +perft 3 15455 +perft 4 465194 +perft 5 11816675 +perft 6 380467287 + +id gentest-5484 +epd 1rb1qbn1/ppppprp1/7k/P4P2/P1P3Pp/B6P/R2P3N/1NQ2KR1 w - - +perft 1 28 +perft 2 457 +perft 3 13570 +perft 4 264097 +perft 5 8394113 +perft 6 186888385 + +id gentest-5485 +epd 1rb1qbn1/ppppprp1/8/P4Pk1/P1P3Pp/B6P/RQ1P1K1N/1N4R1 b - - +perft 1 18 +perft 2 663 +perft 3 12903 +perft 4 474610 +perft 5 10423737 +perft 6 381313083 + +id gentest-5486 +epd 1rbq1bn1/pppp1rp1/4p3/P4Pk1/P1P3Pp/B6P/R2P1K1N/1NQ3R1 w - - +perft 1 35 +perft 2 862 +perft 3 28341 +perft 4 698666 +perft 5 23205863 +perft 6 589091299 + +id gentest-5487 +epd 1rbq2n1/pppp1rp1/P2bp3/5Pk1/P1P3Pp/B6P/R2P1KRN/1NQ5 b - - +perft 1 32 +perft 2 948 +perft 3 26466 +perft 4 809829 +perft 5 22717021 +perft 6 717152721 + +id gentest-5488 +epd 1rbq2n1/p1pp2p1/P2bp3/1p3rk1/P1P3Pp/B6P/R2P2RN/1NQ1K3 w - - +perft 1 27 +perft 2 959 +perft 3 26429 +perft 4 914458 +perft 5 27040297 +perft 6 924159048 + +id gentest-5489 +epd 1rbq2n1/p2p2p1/P1pbp3/1p3rk1/PBP3Pp/7P/R2PR2N/1NQ1K3 b - - +perft 1 43 +perft 2 1311 +perft 3 47882 +perft 4 1500687 +perft 5 52648694 +perft 6 1696339200 + +id gentest-5490 +epd 1rbq4/p2pn1p1/P1p1p3/1pP2rk1/PB4Pp/7P/R2PR2b/1NQ1K3 w - - +perft 1 28 +perft 2 1017 +perft 3 27933 +perft 4 969781 +perft 5 27737747 +perft 6 940647105 + +id gentest-5491 +epd 1rbq4/p2p2p1/P1p1p3/1pPn1Pk1/P6p/B6P/R2PR2b/1NQ1K3 b - - +perft 1 39 +perft 2 1017 +perft 3 34011 +perft 4 931393 +perft 5 30224343 +perft 6 870307892 + +id gentest-5492 +epd 1rb1q3/p2p2p1/P1p1R3/1pPn1P1k/P6p/B6P/R2P3b/1NQ1K3 w - - +perft 1 26 +perft 2 850 +perft 3 24225 +perft 4 776771 +perft 5 23626013 +perft 6 751584955 + +id gentest-5493 +epd 1rb1q3/p2p2p1/P1p1R3/1pPn1P1k/P2P1b1p/B6P/2R5/1NQ1K3 b - - +perft 1 37 +perft 2 1128 +perft 3 38061 +perft 4 1233356 +perft 5 40031555 +perft 6 1333721041 + +id gentest-5494 +epd 1rb1q3/p2pn1p1/P1p1R3/1pP2P1k/P2P3p/B3b2P/2R1K3/1NQ5 w - - +perft 1 36 +perft 2 1054 +perft 3 38314 +perft 4 1095017 +perft 5 38984367 +perft 6 1114866072 + +id gentest-5495 +epd 2b1q3/p2pn1p1/Prp1R3/1pP2P1k/PB1P3p/4b2P/R3K3/1NQ5 b - - +perft 1 30 +perft 2 1340 +perft 3 38464 +perft 4 1580887 +perft 5 45121262 +perft 6 1763268603 + +id gentest-5496 +epd 2b1q3/p1rpn1p1/P1p1R3/1pP2P1k/PB1P3p/4b2P/R3K3/1N2Q3 w - - +perft 1 40 +perft 2 1046 +perft 3 41817 +perft 4 1090437 +perft 5 42069929 +perft 6 1110688523 + +id gentest-5497 +epd 2b2q2/p1rpn1p1/P1p5/1pP2P1k/PB1P3p/4R2P/1R2K3/1N2Q3 b - - +perft 1 21 +perft 2 861 +perft 3 19408 +perft 4 750768 +perft 5 17511676 +perft 6 661803327 + +id gentest-5498 +epd 2b1q3/p1r1n1p1/P1pp4/1pP2P1k/PB1P3p/4R2P/R3K3/1N2Q3 w - - +perft 1 43 +perft 2 1053 +perft 3 42923 +perft 4 1093377 +perft 5 43414538 +perft 6 1135840544 + +id gentest-5499 +epd 2b1q3/p1r3p1/P1pp4/1PPn1P1k/1B1P3p/4R2P/R3K3/1N1Q4 b - - +perft 1 34 +perft 2 1290 +perft 3 37282 +perft 4 1373233 +perft 5 40621023 +perft 6 1491287916 + +id gentest-5500 +epd 2b4q/p1r1n1p1/P1pp4/1PP2P1k/1B1P3p/4R2P/R1Q1K3/1N6 w - - +perft 1 45 +perft 2 1079 +perft 3 47068 +perft 4 1185373 +perft 5 49691453 +perft 6 1291941566 + +id gentest-5501 +epd 2b3q1/p1r1n1p1/P1pp4/1PP2P1k/1B1P3p/1Q2R2P/1R2K3/1N6 b - - +perft 1 27 +perft 2 1095 +perft 3 29749 +perft 4 1176222 +perft 5 32183221 +perft 6 1249970307 + +id gentest-5502 +epd 7q/p1rbn1p1/P1ppR3/1PP2P1k/1B1P3p/1Q5P/1R2K3/1N6 w - - +perft 1 44 +perft 2 1060 +perft 3 45953 +perft 4 1076551 +perft 5 45122203 +perft 6 1074661886 + +id gentest-5503 +epd q7/p1rbn1p1/P1ppR3/1PP2P1k/1B1PN2p/1Q5P/1R2K3/8 b - - +perft 1 23 +perft 2 1082 +perft 3 22483 +perft 4 1018531 +perft 5 21880365 +perft 6 963053137 + +id gentest-5504 +epd q1r5/p2bn1p1/P2pR3/1pP2P1k/1B1P3p/1Q5P/1R2KN2/8 w - - +perft 1 44 +perft 2 1254 +perft 3 51381 +perft 4 1472399 +perft 5 59164952 +perft 6 1693228426 + +id gentest-5505 +epd q1r5/p3n1p1/P1bpR3/1pP2P1k/1B1P3p/2Q4P/1R3N2/5K2 b - - +perft 1 26 +perft 2 1013 +perft 3 26582 +perft 4 1051947 +perft 5 28292399 +perft 6 1129941859 + +id gentest-5506 +epd q1r3n1/p5p1/P2pR3/1pP2P1k/1B1Pb2p/7P/1RQ2N2/5K2 w - - +perft 1 39 +perft 2 999 +perft 3 38119 +perft 4 1001344 +perft 5 38921711 +perft 6 1059712052 + +id gentest-5507 +epd q1r3n1/p7/P2p1R2/1pP2Ppk/1B1Pb2p/7P/1RQ2N2/6K1 b - - +perft 1 26 +perft 2 895 +perft 3 22239 +perft 4 803780 +perft 5 21162814 +perft 6 787965811 + +id gentest-5508 +epd q1r3n1/p7/P2p1R2/BpP2Ppk/3P2bp/7P/1RQ2N2/6K1 w - - +perft 1 40 +perft 2 959 +perft 3 36808 +perft 4 949008 +perft 5 37274779 +perft 6 1012196130 + +id gentest-5509 +epd q5n1/p1r2R2/P2p4/BpP2Ppk/3P2bp/7P/1R3N2/1Q4K1 b - - +perft 1 31 +perft 2 1193 +perft 3 34165 +perft 4 1356787 +perft 5 38789781 +perft 6 1557714310 + +id gentest-5510 +epd q5n1/p6r/P7/BpPp1Ppk/3P2bp/7P/1R3N2/1Q4K1 w - - +perft 1 35 +perft 2 842 +perft 3 29638 +perft 4 760543 +perft 5 26655519 +perft 6 713996117 + +id gentest-5511 +epd q5n1/p6r/P1P2P2/Bp1p2pk/3P3p/5b1P/1R3N2/1Q4K1 b - - +perft 1 27 +perft 2 946 +perft 3 25033 +perft 4 883437 +perft 5 24187126 +perft 6 855501321 + +id gentest-5512 +epd q5n1/p2r4/P1P2P2/Bp1p2pk/3P3p/7P/1R6/1Q1b2KN w - - +perft 1 36 +perft 2 853 +perft 3 30803 +perft 4 756254 +perft 5 27148881 +perft 6 695333107 + +id gentest-5513 +epd 5qn1/p2r4/P1P2P2/Bp1p2pk/3P3p/7P/5R2/3Q2KN b - - +perft 1 3 +perft 2 117 +perft 3 3111 +perft 4 116583 +perft 5 2882885 +perft 6 104786180 + +id gentest-5514 +epd 5q2/p2Pn3/P4Pk1/Bp1p2p1/3P3p/7P/5R2/3Q2KN w - - +perft 1 42 +perft 2 783 +perft 3 31901 +perft 4 617680 +perft 5 24748974 +perft 6 492055248 + +id gentest-5515 +epd 5q2/p2P4/P1n2Pk1/Bp1p2p1/3P3p/7P/6R1/4Q1KN b - - +perft 1 31 +perft 2 1345 +perft 3 32516 +perft 4 1291688 +perft 5 29084514 +perft 6 1108229283 + +id gentest-5516 +epd 3B1q2/p6k/P4P2/Bp1pn1p1/3P3p/7P/6R1/4Q1KN w - - +perft 1 40 +perft 2 999 +perft 3 37150 +perft 4 863523 +perft 5 31662267 +perft 6 720386236 + +id gentest-5517 +epd 5q2/p6k/PBn2P2/Bp1p2p1/3P3p/7P/5NR1/4Q1K1 b - - +perft 1 30 +perft 2 1038 +perft 3 25471 +perft 4 911833 +perft 5 21354774 +perft 6 771678180 + +id gentest-5518 +epd 1n1q4/p1B4k/P4P2/Bp1p2p1/3P3p/7P/5NR1/4Q1K1 w - - +perft 1 40 +perft 2 707 +perft 3 28351 +perft 4 559043 +perft 5 22135532 +perft 6 457601396 + +id gentest-5519 +epd 1n6/p1B4k/P2q1P2/Bp1p2p1/3P3p/7P/5NR1/4Q1K1 b - - +perft 1 26 +perft 2 931 +perft 3 20477 +perft 4 761468 +perft 5 16486255 +perft 6 616272641 + +id gentest-5520 +epd 1n6/p6k/P4P2/1pqp2p1/3P3p/2B4P/5NR1/4Q1K1 w - - +perft 1 32 +perft 2 610 +perft 3 20073 +perft 4 411603 +perft 5 13453446 +perft 6 280742958 + +id gentest-5521 +epd 8/p2n3k/P4P2/1pqp2p1/3P3p/2BN3P/3Q2R1/6K1 b - - +perft 1 23 +perft 2 761 +perft 3 17914 +perft 4 607248 +perft 5 13989765 +perft 6 478527768 + +id gentest-5522 +epd 8/p2n3k/P4P2/qp1p2p1/3P3p/2B4P/3Q2R1/2N3K1 w - - +perft 1 30 +perft 2 604 +perft 3 19475 +perft 4 399305 +perft 5 13004615 +perft 6 272627639 + +id gentest-5523 +epd 8/p6k/P4n2/qp1p2Q1/3P3p/7P/6R1/B1N3K1 b - - +perft 1 20 +perft 2 644 +perft 3 10737 +perft 4 352607 +perft 5 6304345 +perft 6 205910674 + +id gentest-5524 +epd 8/p6k/P7/1p1p2Q1/q2Pn1Rp/7P/8/B1N3K1 w - - +perft 1 30 +perft 2 439 +perft 3 13052 +perft 4 217121 +perft 5 6640616 +perft 6 118431241 + +id gentest-5525 +epd 8/p6k/P4n2/1p1p2Q1/q2P1R1p/7P/4N3/B5K1 b - - +perft 1 19 +perft 2 532 +perft 3 8456 +perft 4 256363 +perft 5 4468458 +perft 6 137621895 + +id gentest-5526 +epd 8/p6k/P7/1p1p2Q1/3P2np/7P/4N3/B2q1RK1 w - - +perft 1 28 +perft 2 418 +perft 3 12005 +perft 4 211248 +perft 5 6263212 +perft 6 119173013 + +id gentest-5527 +epd 8/p6k/P7/1p1p4/3P2Qp/7P/3qN3/B2R2K1 b - - +perft 1 19 +perft 2 468 +perft 3 6932 +perft 4 189715 +perft 5 2960841 +perft 6 84295681 + +id gentest-5528 +epd 8/p6k/P7/1p1p4/3P2Qp/7P/3qN2K/B7 w - - +perft 1 21 +perft 2 272 +perft 3 6067 +perft 4 92560 +perft 5 2064235 +perft 6 33583683 + +id gentest-5529 +epd 5Qk1/p7/P7/1p1p4/3P3p/7P/3qN2K/B7 b - - +perft 1 2 +perft 2 31 +perft 3 498 +perft 4 9867 +perft 5 167672 +perft 6 3453570 + +id gentest-5530 +epd 8/p5k1/P7/1p1p4/3P3p/7P/3qN2K/B7 w - - +perft 1 5 +perft 2 122 +perft 3 1079 +perft 4 24957 +perft 5 233785 +perft 6 5206069 + +id gentest-5531 +epd 8/p5k1/P7/1p1p4/3P3p/7P/4N1K1/B2q4 b - - +perft 1 23 +perft 2 202 +perft 3 4539 +perft 4 40288 +perft 5 873861 +perft 6 8419779 + +id gentest-5532 +epd 8/p4k2/P7/1p1p4/3P3p/7P/4NK2/B2q4 w - - +perft 1 10 +perft 2 241 +perft 3 2055 +perft 4 46659 +perft 5 438424 +perft 6 9568325 + +id gentest-5533 +epd 8/p4k2/P7/1p1p4/3P3p/2N2K1P/8/B1q5 b - - +perft 1 25 +perft 2 259 +perft 3 6554 +perft 4 62512 +perft 5 1454671 +perft 6 14275640 + +id gentest-5534 +epd 8/p3k3/P7/1p1p4/3P1q1p/2N4P/4K3/B7 w - - +perft 1 11 +perft 2 304 +perft 3 2837 +perft 4 70889 +perft 5 714127 +perft 6 16798618 + +id gentest-5535 +epd 8/p3k3/P7/1N1p4/3P3p/6qP/8/B2K4 b - - +perft 1 29 +perft 2 262 +perft 3 6471 +perft 4 63172 +perft 5 1422585 +perft 6 14745087 + +id gentest-5536 +epd 8/p3k3/P7/1N1p2q1/3P3p/7P/8/B1K5 w - - +perft 1 4 +perft 2 92 +perft 3 903 +perft 4 21627 +perft 5 221401 +perft 6 4996822 + +id gentest-5537 +epd 8/p3k3/P4q2/1N1p4/3P3p/1K5P/8/B7 b - - +perft 1 25 +perft 2 325 +perft 3 7884 +perft 4 90101 +perft 5 2048523 +perft 6 23346396 + +id gentest-5538 +epd 8/p3k3/P7/1N1p4/1K1P3p/7q/8/B7 w - - +perft 1 10 +perft 2 227 +perft 3 2422 +perft 4 56081 +perft 5 612200 +perft 6 14325161 + +id gentest-5539 +epd 8/p3k3/P7/K2p4/3P3p/2N5/6q1/B7 b - - +perft 1 28 +perft 2 315 +perft 3 7794 +perft 4 77193 +perft 5 1880372 +perft 6 19814267 + +id gentest-5540 +epd 8/p7/P3k3/K2p4/3Pq2p/2N5/1B6/8 w - - +perft 1 14 +perft 2 301 +perft 3 3754 +perft 4 87276 +perft 5 1079854 +perft 6 24930771 + +id gentest-5541 +epd 8/p7/PN2k3/K7/3P3p/8/1B2q3/8 b - - +perft 1 26 +perft 2 268 +perft 3 6593 +perft 4 74202 +perft 5 1766757 +perft 6 21508958 + +id gentest-5542 +epd 8/p7/PN2q3/5k2/1K1P3p/8/1B6/8 w - - +perft 1 17 +perft 2 478 +perft 3 6138 +perft 4 160899 +perft 5 2079947 +perft 6 51262492 + +id gentest-5543 +epd 8/p7/P2q4/5k2/N1KP3p/8/1B6/8 b - - +perft 1 30 +perft 2 317 +perft 3 7899 +perft 4 92037 +perft 5 2230410 +perft 6 28307195 + +id gentest-5544 +epd 8/p7/Pq6/1K3k2/N2P3p/8/1B6/8 w - - +perft 1 2 +perft 2 35 +perft 3 382 +perft 4 6675 +perft 5 79466 +perft 6 1558422 + +id gentest-5545 +epd 8/p7/P5q1/2K2k2/N2P3p/8/1B6/8 b - - +perft 1 25 +perft 2 259 +perft 3 6315 +perft 4 72558 +perft 5 1746754 +perft 6 21267117 + +id gentest-5546 +epd 8/p7/P7/5k2/N1KP3p/5q2/1B6/8 w - - +perft 1 11 +perft 2 306 +perft 3 3622 +perft 4 89228 +perft 5 1123332 +perft 6 26940955 + +id gentest-5547 +epd 8/p7/P7/3P1k2/N4q1p/1K6/1B6/8 b - - +perft 1 25 +perft 2 334 +perft 3 8312 +perft 4 118995 +perft 5 2880075 +perft 6 43127170 + +id gentest-5548 +epd 8/p1q5/P7/3Pk3/N6p/1K6/8/2B5 w - - +perft 1 16 +perft 2 351 +perft 3 4988 +perft 4 110308 +perft 5 1638627 +perft 6 35353217 + +id gentest-5549 +epd 8/p2q4/P6B/3Pk3/N6p/1K6/8/8 b - - +perft 1 25 +perft 2 382 +perft 3 8352 +perft 4 130640 +perft 5 2842834 +perft 6 44281565 + +id gentest-5550 +epd 8/p7/P6B/4k3/N2q3p/2K5/8/8 w - - +perft 1 2 +perft 2 56 +perft 3 624 +perft 4 15699 +perft 5 199794 +perft 6 4781397 + +id gentest-5551 +epd 8/p7/P6B/4k3/K6p/8/8/8 b - - +perft 1 8 +perft 2 96 +perft 3 724 +perft 4 9488 +perft 5 69931 +perft 6 948292 + +id gentest-5552 +epd 8/p7/P3k2B/1K6/8/7p/8/8 w - - +perft 1 13 +perft 2 103 +perft 3 1399 +perft 4 10741 +perft 5 150756 +perft 6 1240061 + +id gentest-5553 +epd 8/p2k4/P7/BK6/8/7p/8/8 b - - +perft 1 6 +perft 2 69 +perft 3 465 +perft 4 6064 +perft 5 50749 +perft 6 671258 + +id gentest-5554 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-5555 +epd rnbqkbnr/p1pppppp/1p6/8/8/5PP1/PPPPP2P/RNBQKBNR b KQkq - +perft 1 21 +perft 2 420 +perft 3 9700 +perft 4 214121 +perft 5 5396695 +perft 6 129304435 + +id gentest-5556 +epd r1bqkbnr/p2ppppp/np6/2p5/1P6/5PP1/P1PPP2P/RNBQKBNR w KQkq - +perft 1 22 +perft 2 460 +perft 3 10867 +perft 4 253898 +perft 5 6389155 +perft 6 164501481 + +id gentest-5557 +epd r1bqkbnr/p2pppp1/np6/2p4p/1P6/3P1PPN/P1P1P2P/RNBQKB1R b KQkq - +perft 1 22 +perft 2 654 +perft 3 16134 +perft 4 468178 +perft 5 12668286 +perft 6 371150086 + +id gentest-5558 +epd r1bqkbn1/p2p1pp1/np5r/2p1p2p/1P3N2/3P1PP1/P1P1P2P/RNBQKB1R w KQq - +perft 1 31 +perft 2 1039 +perft 3 32521 +perft 4 1066043 +perft 5 33549075 +perft 6 1104471909 + +id gentest-5559 +epd r1bqkbn1/p2p1pp1/np5r/2p1p3/1P3NPp/3P1P1B/P1P1P2P/RNBQK2R b KQq - +perft 1 33 +perft 2 1014 +perft 3 32531 +perft 4 1012871 +perft 5 32392571 +perft 6 1021036480 + +id gentest-5560 +epd r1bqk1n1/p2pbpp1/npr5/2p1p3/1P1P1NPp/5P1B/P1P1P2P/RNBQK2R w KQq - +perft 1 35 +perft 2 1099 +perft 3 38353 +perft 4 1173039 +perft 5 40776258 +perft 6 1246096720 + +id gentest-5561 +epd r1bqk1n1/p2p1pp1/nprb4/2pNp3/1P1P2Pp/4BP1B/P1P1P2P/RN1QK2R b KQq - +perft 1 28 +perft 2 1025 +perft 3 28279 +perft 4 1019226 +perft 5 29202185 +perft 6 1042243047 + +id gentest-5562 +epd r1bqk1n1/p2p1pp1/nprb4/3Np3/3P2Pp/2p1BP1B/P3P2P/RN1QK2R w KQq - +perft 1 35 +perft 2 1075 +perft 3 38037 +perft 4 1211094 +perft 5 43107262 +perft 6 1409319379 + +id gentest-5563 +epd r1bqk1n1/p2p1pp1/1prb4/3Np3/1n1P1PPp/2p1B2B/P2QP2P/RN2K2R b KQq - +perft 1 36 +perft 2 996 +perft 3 34181 +perft 4 1025611 +perft 5 35917776 +perft 6 1139079392 + +id gentest-5564 +epd r2qk1n1/p2p1pp1/bprb4/3N4/1n1p1PPp/2p1B3/P2QP2P/RN2KB1R w KQq - +perft 1 28 +perft 2 1112 +perft 3 32126 +perft 4 1283262 +perft 5 39422967 +perft 6 1578069860 + +id gentest-5565 +epd r2qk1n1/p2pNpp1/bprb4/8/3p1PPp/2p1B3/P1Q1P2P/RN2KB1R b KQq - +perft 1 37 +perft 2 1295 +perft 3 48315 +perft 4 1649814 +perft 5 60806198 +perft 6 2077910875 + +id gentest-5566 +epd r2qk1n1/p2p2p1/1prb2N1/5p2/2bp1PPp/2p1B3/P1Q1P2P/RN2KB1R w KQq - +perft 1 33 +perft 2 1300 +perft 3 42886 +perft 4 1702304 +perft 5 56890882 +perft 6 2254286176 + +id gentest-5567 +epd r3k1n1/p2p2p1/1prb2N1/5pq1/2bp1PPp/2pQ4/P3PB1P/RN2KB1R b KQq - +perft 1 43 +perft 2 1544 +perft 3 64627 +perft 4 2258812 +perft 5 95387294 +perft 6 3327067414 + +id gentest-5568 +epd r3k1n1/p2p2p1/1pr3N1/5pq1/2b2PPp/b1pQ4/P3PB1P/R3KB1R w KQq - +perft 1 40 +perft 2 1754 +perft 3 66795 +perft 4 2868997 +perft 5 106764600 +perft 6 4506056720 + +id gentest-5569 +epd r3k1n1/p2p2p1/1p4N1/2r2pq1/2b2PPp/b1p5/P3PB1P/RQ1K1B1R b q - +perft 1 44 +perft 2 1294 +perft 3 54944 +perft 4 1655001 +perft 5 69355325 +perft 6 2151191277 + +id gentest-5570 +epd 1r2k1n1/p2pq1p1/1p4N1/2r2p2/2b2PPp/b1p5/P3P2P/RQ1KBB1R w - - +perft 1 29 +perft 2 1316 +perft 3 35746 +perft 4 1563050 +perft 5 44760160 +perft 6 1913302282 + +id gentest-5571 +epd 1r2k1n1/p2p2p1/1p4N1/2r2p2/2b2PPp/b1pQq3/P2BP2P/R2K1B1R b - - +perft 1 50 +perft 2 1422 +perft 3 63678 +perft 4 1863274 +perft 5 82348852 +perft 6 2471810829 + +id gentest-5572 +epd 1r2k1n1/p1rp2p1/1p4N1/5p2/2b2PPp/2pQq3/Pb2P2P/R1BK1B1R w - - +perft 1 31 +perft 2 1339 +perft 3 37647 +perft 4 1590470 +perft 5 46079633 +perft 6 1913091510 + +id gentest-5573 +epd 1r2k1n1/p1rp2p1/1p6/4Np2/2bq1PPp/2pQ4/Pb2P1BP/R1BK3R b - - +perft 1 45 +perft 2 1371 +perft 3 61198 +perft 4 1939118 +perft 5 84708659 +perft 6 2773359535 + +id gentest-5574 +epd 1r3kn1/p1rp2p1/1p2b3/4NpP1/3q1P1p/2pQ4/Pb2P1BP/R1BK3R w - - +perft 1 32 +perft 2 1307 +perft 3 40658 +perft 4 1633502 +perft 5 53687353 +perft 6 2136338738 + +id gentest-5575 +epd 1r3kn1/p1rp2p1/1p6/4NpP1/3q1P1p/1bpQ4/Pb1BP1BP/R3K2R b - - +perft 1 48 +perft 2 1963 +perft 3 85869 +perft 4 3328420 +perft 5 142978751 +perft 6 5380204873 + +id gentest-5576 +epd 1r3k2/p2p2p1/1p5n/4NpP1/2rq1P1p/1bpQ3B/Pb1BP2P/R3K2R w - - +perft 1 37 +perft 2 1433 +perft 3 49872 +perft 4 2035363 +perft 5 70997117 +perft 6 2962934564 + +id gentest-5577 +epd 1r3k2/p2p2p1/1p5n/4NpP1/P1r1PP1p/1bpq3B/1b1B3P/R3K2R b - - +perft 1 48 +perft 2 1071 +perft 3 48109 +perft 4 1109610 +perft 5 50189814 +perft 6 1191659441 + +id gentest-5578 +epd 1r3k2/p2p2p1/1p1q3n/4NpP1/P1r1PP1p/1bp4B/1b5P/R4K1R w - - +perft 1 27 +perft 2 1190 +perft 3 30554 +perft 4 1366466 +perft 5 34749533 +perft 6 1558761153 + +id gentest-5579 +epd 5k2/pr1p2p1/1p1q3n/4NpP1/P1r1PP1p/1bp4B/1b5P/R4K1R b - - +perft 1 45 +perft 2 1137 +perft 3 47207 +perft 4 1181707 +perft 5 49725062 +perft 6 1237072220 + +id gentest-5580 +epd 5k2/pr1p1np1/1p5q/4NpP1/P1r1PP1p/1bp4B/1b5P/3R1K1R w - - +perft 1 31 +perft 2 1200 +perft 3 35259 +perft 4 1383326 +perft 5 39181523 +perft 6 1553938122 + +id gentest-5581 +epd 5k2/pr1R2p1/1p5q/5pn1/P1N1PP1p/1bp4B/1b5P/5K1R b - - +perft 1 33 +perft 2 1025 +perft 3 34691 +perft 4 995011 +perft 5 35186189 +perft 6 976899639 + +id gentest-5582 +epd 5k2/p1R3p1/1p5q/5pn1/P1N1PP1p/1b5B/1bp4P/5K1R w - - +perft 1 30 +perft 2 1009 +perft 3 28287 +perft 4 977558 +perft 5 27052880 +perft 6 956550173 + +id gentest-5583 +epd 5k2/p1R3p1/1p5q/5pn1/P1N1PP1p/1b5B/1b3K1P/2q4R b - - +perft 1 45 +perft 2 1147 +perft 3 49947 +perft 4 1325374 +perft 5 57935240 +perft 6 1554266886 + +id gentest-5584 +epd 5k2/p5p1/1p2n1q1/2R2p2/P1N1PP1p/1b5B/1b3K1P/2q4R w - - +perft 1 30 +perft 2 1379 +perft 3 33273 +perft 4 1527488 +perft 5 37571581 +perft 6 1710704497 + +id gentest-5585 +epd 5k2/6p1/pp1Nn1q1/1R3p2/P3PP1p/1b5B/1b3K1P/2q4R b - - +perft 1 51 +perft 2 1137 +perft 3 54568 +perft 4 1283662 +perft 5 60532052 +perft 6 1483142856 + +id gentest-5586 +epd 5k2/6p1/pp1N2q1/1R3pn1/P3PP1p/1b2K2B/1bq4P/7R w - - +perft 1 29 +perft 2 1371 +perft 3 32369 +perft 4 1559496 +perft 5 37373418 +perft 6 1788480514 + +id gentest-5587 +epd 5k2/6p1/pp1N2q1/1R3pn1/P2KPP1p/1b5B/2q4P/4R3 b - - +perft 1 44 +perft 2 1059 +perft 3 45197 +perft 4 1115236 +perft 5 46849210 +perft 6 1163442786 + +id gentest-5588 +epd 4qk2/5Np1/pp4q1/1R3pn1/P2KPP1p/1b5B/7P/4R3 w - - +perft 1 34 +perft 2 1347 +perft 3 36867 +perft 4 1427359 +perft 5 38164992 +perft 6 1473950264 + +id gentest-5589 +epd 4qk2/5Np1/pp4q1/2R2p2/P2KPP1p/1b5n/7P/3R4 b - - +perft 1 45 +perft 2 1196 +perft 3 50893 +perft 4 1296781 +perft 5 53250853 +perft 6 1316185519 + +id gentest-5590 +epd 5k2/5Np1/pp4q1/3R1p2/P2KPP1p/1b5n/7P/3R1q2 w - - +perft 1 27 +perft 2 1093 +perft 3 24338 +perft 4 973768 +perft 5 21444588 +perft 6 850240512 + +id gentest-5591 +epd 5k2/5Np1/1p4q1/p4p2/P1RKPP1p/1b5n/7P/3R1q2 b - - +perft 1 39 +perft 2 839 +perft 3 32889 +perft 4 705031 +perft 5 27779108 +perft 6 593831634 + +id gentest-5592 +epd 5k2/6p1/1p4q1/p4pN1/P1RKPP1p/1b5n/7P/3R1q2 w - - +perft 1 26 +perft 2 867 +perft 3 18964 +perft 4 680412 +perft 5 14779925 +perft 6 545013138 + +id gentest-5593 +epd 5k2/6p1/6q1/pp2Kp2/P1R1PP1p/1b3N1n/7P/3R1q2 b - - +perft 1 43 +perft 2 1181 +perft 3 47933 +perft 4 1162024 +perft 5 46757761 +perft 6 1090009509 + +id gentest-5594 +epd 5k2/2R3p1/8/pp2Kp2/P3PP1p/1b3Nqn/7P/3R2q1 w - - +perft 1 37 +perft 2 1369 +perft 3 41900 +perft 4 1564566 +perft 5 43960095 +perft 6 1642723990 + +id gentest-5595 +epd 5k2/2R2bp1/8/pp2Kp2/P3PP1p/3R2qn/3N3P/6q1 b - - +perft 1 45 +perft 2 1355 +perft 3 54062 +perft 4 1495464 +perft 5 58673222 +perft 6 1536873330 + +id gentest-5596 +epd 5k2/5bp1/8/pp2Kp2/P3PP1p/3R2qn/3N3P/6q1 w - - +perft 1 21 +perft 2 893 +perft 3 16351 +perft 4 682634 +perft 5 12029275 +perft 6 493511041 + +id gentest-5597 +epd 5k2/6p1/3Kb3/pp1R1p2/P3PP1p/6qn/3N3P/6q1 b - - +perft 1 45 +perft 2 767 +perft 3 32356 +perft 4 568295 +perft 5 23523522 +perft 6 416706313 + +id gentest-5598 +epd 5k2/6p1/3Kb3/pR6/P3pP1p/6qn/3N3P/7q w - - +perft 1 26 +perft 2 1043 +perft 3 22498 +perft 4 873929 +perft 5 17366426 +perft 6 671178224 + +id gentest-5599 +epd 5k2/6p1/3K4/7R/P3pP1p/1b4qn/3N3P/7q b - - +perft 1 42 +perft 2 912 +perft 3 34419 +perft 4 688179 +perft 5 25963561 +perft 6 496101104 + +id gentest-5600 +epd 5k2/6p1/3K4/8/b3pP1R/6qn/3N3P/3q4 w - - +perft 1 12 +perft 2 489 +perft 3 7190 +perft 4 294358 +perft 5 4520838 +perft 6 184154813 + +id gentest-5601 +epd 5k2/6p1/8/4K3/b3pP1R/6qn/7P/1N3q2 b - - +perft 1 49 +perft 2 668 +perft 3 29127 +perft 4 390158 +perft 5 16547950 +perft 6 229532138 + +id gentest-5602 +epd 5k2/6p1/8/4K3/b3pP1R/3q2Pn/8/1N6 w - - +perft 1 13 +perft 2 450 +perft 3 5980 +perft 4 195572 +perft 5 2790381 +perft 6 88048588 + +id gentest-5603 +epd 5k2/6p1/2b5/4K2R/4pP2/3q2Pn/8/1N6 b - - +perft 1 38 +perft 2 487 +perft 3 15438 +perft 4 213530 +perft 5 6752634 +perft 6 99017418 + +id gentest-5604 +epd 5k2/6p1/8/4K2R/b3pP2/N2q2Pn/8/8 w - - +perft 1 15 +perft 2 485 +perft 3 7009 +perft 4 223317 +perft 5 3378362 +perft 6 104781067 + +id gentest-5605 +epd R7/4k1p1/8/4K3/b3pP2/N2q2Pn/8/8 b - - +perft 1 36 +perft 2 580 +perft 3 17863 +perft 4 291708 +perft 5 8811805 +perft 6 145283948 + +id gentest-5606 +epd R7/4kqp1/8/5K2/b3pP2/N5Pn/8/8 w - - +perft 1 3 +perft 2 89 +perft 3 1324 +perft 4 36981 +perft 5 587049 +perft 6 16735774 + +id gentest-5607 +epd 3R4/4k1p1/8/8/b3KP2/N5Pn/q7/8 b - - +perft 1 33 +perft 2 581 +perft 3 17490 +perft 4 292052 +perft 5 8809285 +perft 6 144453469 + +id gentest-5608 +epd 3R1q2/4k1p1/8/8/b1N1KP2/6Pn/8/8 w - - +perft 1 28 +perft 2 667 +perft 3 13525 +perft 4 347610 +perft 5 6680147 +perft 6 180577776 + +id gentest-5609 +epd 3R4/4k1p1/8/5q2/b4P2/N3K1Pn/8/8 b - - +perft 1 38 +perft 2 737 +perft 3 23973 +perft 4 438427 +perft 5 13895423 +perft 6 249232944 + +id gentest-5610 +epd 3R4/4k1p1/8/8/b4q2/N2K2Pn/8/8 w - - +perft 1 19 +perft 2 651 +perft 3 9689 +perft 4 317229 +perft 5 4972678 +perft 6 159077453 + +id gentest-5611 +epd 1q2R3/4k1p1/8/8/b5P1/N2K3n/8/8 b - - +perft 1 7 +perft 2 137 +perft 3 4266 +perft 4 66477 +perft 5 2073667 +perft 6 32144267 + +id gentest-5612 +epd 1q2R3/6p1/5k2/8/b5P1/3K4/2N2n2/8 w - - +perft 1 6 +perft 2 210 +perft 3 3906 +perft 4 123973 +perft 5 2193417 +perft 6 69345084 + +id gentest-5613 +epd 1q2R3/6p1/8/2K3k1/b5P1/8/2N2n2/8 b - - +perft 1 37 +perft 2 614 +perft 3 21055 +perft 4 345784 +perft 5 11428495 +perft 6 189315855 + +id gentest-5614 +epd 4R3/6p1/8/6k1/b2K2P1/8/2q2n2/8 w - - +perft 1 17 +perft 2 584 +perft 3 7006 +perft 4 237206 +perft 5 2898789 +perft 6 96525042 + +id gentest-5615 +epd 2R5/6p1/7k/6P1/b2K4/8/2q2n2/8 b - - +perft 1 4 +perft 2 66 +perft 3 1986 +perft 4 24573 +perft 5 772317 +perft 6 9576923 + +id gentest-5616 +epd 4R3/6p1/8/6k1/b2K4/8/5n2/2q5 w - - +perft 1 16 +perft 2 602 +perft 3 7380 +perft 4 258671 +perft 5 3211018 +perft 6 109417617 + +id gentest-5617 +epd 6R1/6p1/8/4K1k1/b3n3/8/8/2q5 b - - +perft 1 39 +perft 2 384 +perft 3 13489 +perft 4 160121 +perft 5 5730194 +perft 6 69847232 + +id gentest-5618 +epd 4R3/6p1/5n2/4K1k1/8/8/8/2qb4 w - - +perft 1 12 +perft 2 422 +perft 3 4815 +perft 4 171119 +perft 5 2026540 +perft 6 71528492 + +id gentest-5619 +epd 1R6/6p1/8/6k1/3K2n1/8/8/2qb4 b - - +perft 1 33 +perft 2 438 +perft 3 14577 +perft 4 176665 +perft 5 5951942 +perft 6 72194402 + +id gentest-5620 +epd 1R6/6p1/8/6k1/4K1n1/8/8/3bq3 w - - +perft 1 3 +perft 2 108 +perft 3 1474 +perft 4 50885 +perft 5 657399 +perft 6 22461585 + +id gentest-5621 +epd 1R6/6p1/8/6k1/2K3n1/8/3q4/3b4 b - - +perft 1 39 +perft 2 466 +perft 3 16991 +perft 4 200412 +perft 5 7092421 +perft 6 88232092 + +id gentest-5622 +epd 8/6p1/8/qR6/2K2kn1/8/8/3b4 w - - +perft 1 18 +perft 2 604 +perft 3 6552 +perft 4 215284 +perft 5 2505277 +perft 6 82033959 + +id gentest-5623 +epd 8/6p1/8/qR3k2/2K3n1/8/8/3b4 b - - +perft 1 7 +perft 2 93 +perft 3 2960 +perft 4 30398 +perft 5 971182 +perft 6 11145937 + +id gentest-5624 +epd 8/1R4p1/8/q7/2K3n1/6k1/8/3b4 w - - +perft 1 15 +perft 2 556 +perft 3 6279 +perft 4 224598 +perft 5 2654550 +perft 6 92789730 + +id gentest-5625 +epd 8/6p1/1R6/7q/2K3n1/6k1/8/3b4 b - - +perft 1 37 +perft 2 574 +perft 3 19230 +perft 4 272283 +perft 5 9057166 +perft 6 127759961 + +id gentest-5626 +epd 8/6p1/3R4/8/2K3n1/6k1/7q/3b4 w - - +perft 1 21 +perft 2 643 +perft 3 10178 +perft 4 318116 +perft 5 4804326 +perft 6 152424344 + +id gentest-5627 +epd 8/6p1/8/8/2K3n1/3R1bk1/7q/8 b - - +perft 1 27 +perft 2 411 +perft 3 12329 +perft 4 183461 +perft 5 5947884 +perft 6 88876188 + +id gentest-5628 +epd 8/6p1/7q/8/2K3n1/2R2bk1/8/8 w - - +perft 1 13 +perft 2 410 +perft 3 5597 +perft 4 184330 +perft 5 2633591 +perft 6 89746359 + +id gentest-5629 +epd 2R5/6p1/5n1q/8/8/1K3bk1/8/8 b - - +perft 1 41 +perft 2 821 +perft 3 31977 +perft 4 543997 +perft 5 20215291 +perft 6 321102598 + +id gentest-5630 +epd 5Rn1/6p1/7q/8/4b3/1K4k1/8/8 w - - +perft 1 20 +perft 2 790 +perft 3 13163 +perft 4 480341 +perft 5 7482593 +perft 6 262555742 + +id gentest-5631 +epd 6n1/6p1/7q/5R2/4b1k1/1K6/8/8 b - - +perft 1 38 +perft 2 652 +perft 3 22002 +perft 4 348721 +perft 5 11608619 +perft 6 175918895 + +id gentest-5632 +epd 6n1/5Rp1/6q1/8/4b1k1/1K6/8/8 w - - +perft 1 20 +perft 2 604 +perft 3 9726 +perft 4 320491 +perft 5 4857856 +perft 6 164652963 + +id gentest-5633 +epd 1R6/6p1/6qn/8/4b1k1/1K6/8/8 b - - +perft 1 34 +perft 2 527 +perft 3 18606 +perft 4 282214 +perft 5 10080531 +perft 6 146646441 + +id gentest-5634 +epd 7R/6p1/3q3n/8/4b3/1K4k1/8/8 w - - +perft 1 14 +perft 2 678 +perft 3 8386 +perft 4 364395 +perft 5 4659774 +perft 6 188932022 + +id gentest-5635 +epd 5R2/6p1/3q3n/8/2K1bk2/8/8/8 b - - +perft 1 10 +perft 2 139 +perft 3 5755 +perft 4 67005 +perft 5 2670339 +perft 6 32948515 + +id gentest-5636 +epd 6R1/6p1/4q2n/4k3/2K1b3/8/8/8 w - - +perft 1 4 +perft 2 172 +perft 3 1781 +perft 4 67908 +perft 5 837445 +perft 6 30369993 + +id gentest-5637 +epd R7/5qp1/7n/2K1k3/4b3/8/8/8 b - - +perft 1 43 +perft 2 622 +perft 3 23360 +perft 4 314171 +perft 5 11115766 +perft 6 148671224 + +id gentest-5638 +epd R7/6p1/7n/qK2k3/4b3/8/8/8 w - - +perft 1 3 +perft 2 93 +perft 3 1049 +perft 4 26563 +perft 5 367922 +perft 6 9699030 + +id gentest-5639 +epd 8/6p1/7n/R1Kbk3/8/8/8/8 b - - +perft 1 24 +perft 2 287 +perft 3 5377 +perft 4 88134 +perft 5 1697466 +perft 6 28926743 + +id gentest-5640 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-5641 +epd rnbqkbnr/ppppppp1/8/7p/8/3PB3/PPP1PPPP/RN1QKBNR b KQkq - +perft 1 21 +perft 2 625 +perft 3 14654 +perft 4 430274 +perft 5 11087675 +perft 6 326887682 + +id gentest-5642 +epd r1bqkbn1/pppppppr/2n5/7p/5B2/3P4/PPP1PPPP/RN1QKBNR w KQq - +perft 1 31 +perft 2 713 +perft 3 21989 +perft 4 552748 +perft 5 16979183 +perft 6 461067687 + +id gentest-5643 +epd r1bqkbn1/pppp1ppr/2n1p3/7p/1PP2B2/3P4/P3PPPP/RN1QKBNR b KQq - +perft 1 33 +perft 2 1018 +perft 3 33408 +perft 4 1035570 +perft 5 34433604 +perft 6 1080120703 + +id gentest-5644 +epd r1bq1bn1/pppp1ppr/2nkp3/7p/1PP5/3P4/P3PPPP/RN1QKBNR w KQ - +perft 1 24 +perft 2 690 +perft 3 17769 +perft 4 506299 +perft 5 13638785 +perft 6 389867861 + +id gentest-5645 +epd r1bq1bn1/pppp1p1r/2nkp1p1/7p/1PP5/P2P1P2/4P1PP/RN1QKBNR b KQ - +perft 1 32 +perft 2 682 +perft 3 20768 +perft 4 485263 +perft 5 14664766 +perft 6 364238407 + +id gentest-5646 +epd 2bq1bn1/1ppp1p1r/r1nkp1p1/p6p/1PP5/P2P1P2/R3P1PP/1N1QKBNR w K - +perft 1 26 +perft 2 849 +perft 3 22096 +perft 4 704735 +perft 5 18842595 +perft 6 594007789 + +id gentest-5647 +epd 2bq1bn1/1ppp1p1r/r2kp1p1/p6p/1nP5/P2P1P2/R1QNP1PP/4KBNR b K - +perft 1 37 +perft 2 886 +perft 3 29592 +perft 4 745446 +perft 5 24232990 +perft 6 635189989 + +id gentest-5648 +epd 2b2bn1/rpppqp1r/3kp1p1/p6p/1nP5/P2P1P2/R2NP1PP/2Q1KBNR w K - +perft 1 26 +perft 2 783 +perft 3 19661 +perft 4 591189 +perft 5 15537656 +perft 6 471610063 + +id gentest-5649 +epd 2b2bn1/r1ppqp1r/3kp1p1/pp5p/1nP1N3/P2P1PP1/R3P2P/2Q1KBNR b K - +perft 1 2 +perft 2 76 +perft 3 2449 +perft 4 84386 +perft 5 2761195 +perft 6 92591843 + +id gentest-5650 +epd 2b2bn1/r2pqp1r/4p1p1/ppp1k1Np/1nP5/P2P1PP1/R3P2P/2Q1KBNR w K - +perft 1 34 +perft 2 931 +perft 3 29716 +perft 4 840246 +perft 5 26610771 +perft 6 773916341 + +id gentest-5651 +epd 2b2bn1/r2pqp1r/4pkp1/ppp3Np/1nPP4/P4PP1/3RP2P/2Q1KBNR b K - +perft 1 31 +perft 2 926 +perft 3 26997 +perft 4 837936 +perft 5 24781881 +perft 6 791039985 + +id gentest-5652 +epd r1b3n1/3pqpbr/4Nkp1/ppp4p/1nPP4/P4PP1/3RP2P/2Q1KBNR w K - +perft 1 34 +perft 2 1122 +perft 3 36182 +perft 4 1199204 +perft 5 39030162 +perft 6 1307984028 + +id gentest-5653 +epd r1b3nr/3pqpb1/4Nkp1/pppP3p/1nP5/P4PP1/3RP2P/3QKBNR b K - +perft 1 30 +perft 2 902 +perft 3 28049 +perft 4 861685 +perft 5 27427480 +perft 6 862666131 + +id gentest-5654 +epd r1b3nr/3pqp2/4Nk1b/pppP2pp/QnP5/P4PP1/3RP2P/4KBNR w K - +perft 1 34 +perft 2 995 +perft 3 30995 +perft 4 941711 +perft 5 29519042 +perft 6 917534975 + +id gentest-5655 +epd r1b3nr/3pqp2/4Nk1b/pppP2p1/1nP4p/P4PP1/2QRPK1P/5BNR b - - +perft 1 28 +perft 2 1003 +perft 3 27842 +perft 4 944516 +perft 5 27551413 +perft 6 911683788 + +id gentest-5656 +epd r5nr/1b1p1p2/3qNk1b/pppP2p1/1nP4P/P4P2/2QRPK1P/5BNR w - - +perft 1 39 +perft 2 1439 +perft 3 50649 +perft 4 1811642 +perft 5 62252429 +perft 6 2206799839 + +id gentest-5657 +epd r5nr/1b1p1p2/2nqNk1b/pppP2p1/2P4P/P4P1B/1Q1RPK1P/6NR b - - +perft 1 5 +perft 2 199 +perft 3 6885 +perft 4 257913 +perft 5 9115508 +perft 6 333059528 + +id gentest-5658 +epd r5nr/1b1p1p2/2nqNk1b/pppP2p1/2P4P/P4P1B/3RPK1P/2Q3NR w - - +perft 1 38 +perft 2 1359 +perft 3 49033 +perft 4 1724704 +perft 5 61455258 +perft 6 2144036518 + +id gentest-5659 +epd r5nr/nb1p1p2/3qNk1b/pppP2p1/2P4P/P3KP1B/3RP2P/1Q4NR b - - +perft 1 37 +perft 2 1348 +perft 3 42834 +perft 4 1415536 +perft 5 45057380 +perft 6 1434774883 + +id gentest-5660 +epd r5nr/nb1p1p2/4N2b/pppqk1p1/2P4P/P3KP2/3RP2P/1Q3BNR w - - +perft 1 41 +perft 2 1286 +perft 3 39294 +perft 4 1242371 +perft 5 36492444 +perft 6 1174061173 + +id gentest-5661 +epd r5nr/nb1p1p2/4k2b/pppR2p1/2P4P/P3KP1N/4P2P/1Q3B1R b - - +perft 1 26 +perft 2 956 +perft 3 22667 +perft 4 762808 +perft 5 19547984 +perft 6 634817445 + +id gentest-5662 +epd 2r3nr/nb1p4/4k1pb/pppR2p1/2P4P/P3KP1N/4P2P/5B1R w - - +perft 1 25 +perft 2 597 +perft 3 13293 +perft 4 345777 +perft 5 7755675 +perft 6 214879442 + +id gentest-5663 +epd b1r3nr/n2p4/4k1pb/ppp2Rp1/2P2N1P/P3KP2/4P2P/5B1R b - - +perft 1 4 +perft 2 72 +perft 3 1789 +perft 4 39462 +perft 5 1025826 +perft 6 23595425 + +id gentest-5664 +epd b2r2nr/n2p4/6pb/ppp2kp1/2P2N1P/P4P2/3KP2P/5B1R w - - +perft 1 24 +perft 2 587 +perft 3 12786 +perft 4 334303 +perft 5 7097913 +perft 6 195577428 + +id gentest-5665 +epd b2r2nr/n2p4/6pb/p1p2kp1/2p2N1P/P4P2/4P2P/3K1B1R b - - +perft 1 27 +perft 2 519 +perft 3 13766 +perft 4 257990 +perft 5 7149712 +perft 6 134383189 + +id gentest-5666 +epd 3r2nr/1b1p4/2n3pb/p1p2kp1/2p2N1P/P4P2/2K1P2P/5B1R w - - +perft 1 22 +perft 2 574 +perft 3 11643 +perft 4 315508 +perft 5 6368493 +perft 6 178768737 + +id gentest-5667 +epd b2r2nr/3p4/2n3pb/p1p2kP1/2p2N2/P4P2/4P2P/3K1B1R b - - +perft 1 24 +perft 2 467 +perft 3 11425 +perft 4 217168 +perft 5 5645436 +perft 6 106891906 + +id gentest-5668 +epd b4rnr/3p4/2n3pb/p1p3k1/2p2N2/P4P1B/4P2P/3K3R w - - +perft 1 22 +perft 2 550 +perft 3 12413 +perft 4 320698 +perft 5 7256619 +perft 6 197656688 + +id gentest-5669 +epd b5nr/3p4/2n3pb/p1p3k1/2p2r2/P4P2/2K1P1BP/7R b - - +perft 1 30 +perft 2 576 +perft 3 17054 +perft 4 321085 +perft 5 9772523 +perft 6 182349904 + +id gentest-5670 +epd b5nr/n2p4/6pb/p1p4k/2p1Pr2/P4P2/2K3BP/7R w - - +perft 1 19 +perft 2 530 +perft 3 9555 +perft 4 286674 +perft 5 5177826 +perft 6 161917222 + +id gentest-5671 +epd b6r/n2p4/5npb/p1p4k/P1p1Pr2/5P2/2K3BP/1R6 b - - +perft 1 34 +perft 2 821 +perft 3 28346 +perft 4 581684 +perft 5 20260521 +perft 6 392291944 + +id gentest-5672 +epd 7r/n7/3p1npb/p1p4k/P1p1br2/5P2/1RK3BP/8 w - - +perft 1 5 +perft 2 185 +perft 3 3497 +perft 4 127009 +perft 5 2309342 +perft 6 83162121 + +id gentest-5673 +epd 7r/8/2np1npb/pRp4k/P1p1br2/5P2/3K2BP/8 b - - +perft 1 39 +perft 2 725 +perft 3 27426 +perft 4 493795 +perft 5 18724919 +perft 6 330066228 + +id gentest-5674 +epd 7r/8/2n2npb/pRpp3k/P1p1b2r/2K2P2/6BP/8 w - - +perft 1 16 +perft 2 622 +perft 3 9794 +perft 4 362688 +perft 5 5752613 +perft 6 207357450 + +id gentest-5675 +epd 7r/R7/2n2npb/2pp2k1/P1p1b2r/2K2P2/6BP/8 b - - +perft 1 38 +perft 2 680 +perft 3 24103 +perft 4 413835 +perft 5 14361077 +perft 6 246203440 + +id gentest-5676 +epd 1n1r4/2R5/5npb/2pp2k1/P1p1b2r/2K2P2/6BP/8 w - - +perft 1 19 +perft 2 575 +perft 3 10383 +perft 4 312853 +perft 5 5550712 +perft 6 170003279 + +id gentest-5677 +epd 1n1r4/3R4/5npb/2pp1k2/P1p1b2r/2K2P1P/6B1/8 b - - +perft 1 36 +perft 2 524 +perft 3 16408 +perft 4 246547 +perft 5 7849552 +perft 6 121631710 + +id gentest-5678 +epd 1n1r4/6R1/5n1b/2pp1kp1/P1p4r/2K2P1P/6B1/1b6 w - - +perft 1 16 +perft 2 505 +perft 3 7859 +perft 4 240946 +perft 5 3868434 +perft 6 118507339 + +id gentest-5679 +epd 1n1r4/5R2/7b/2pp1kpn/P1p4r/2K2P1P/6B1/1b6 b - - +perft 1 4 +perft 2 66 +perft 3 1871 +perft 4 29518 +perft 5 876131 +perft 6 14102315 + +id gentest-5680 +epd 1n3R2/8/3r3b/2ppk1pn/P1p4r/2K2P1P/6B1/1b6 w - - +perft 1 16 +perft 2 442 +perft 3 6852 +perft 4 202243 +perft 5 3195854 +perft 6 97017941 + +id gentest-5681 +epd 1n3R2/8/3rk2b/2pp2pn/P1p2P1r/7P/1K4B1/1b6 b - - +perft 1 30 +perft 2 600 +perft 3 16126 +perft 4 319345 +perft 5 9016732 +perft 6 177685228 + +id gentest-5682 +epd 1n3R2/3k4/3r3b/2pp2pn/P1p2P2/7r/1K6/1b3B2 w - - +perft 1 20 +perft 2 659 +perft 3 12294 +perft 4 407948 +perft 5 7749029 +perft 6 258029463 + +id gentest-5683 +epd 1n3R2/3k4/3r3b/2pp2Pn/P7/2p4r/8/1bK2B2 b - - +perft 1 36 +perft 2 763 +perft 3 24132 +perft 4 492030 +perft 5 16047573 +perft 6 317204254 + +id gentest-5684 +epd 1n3R2/3k4/5r1b/2pp2Pn/P6r/2pB4/8/1bK5 w - - +perft 1 23 +perft 2 816 +perft 3 17024 +perft 4 591703 +perft 5 11991492 +perft 6 411741941 + +id gentest-5685 +epd 1n1R4/4k3/5r1b/2pp2Pn/P6r/2p5/4B3/1bK5 b - - +perft 1 45 +perft 2 905 +perft 3 34749 +perft 4 676086 +perft 5 24860909 +perft 6 473522335 + +id gentest-5686 +epd 1n1R4/4k3/5r2/2p3bn/P2p3r/2p5/4B3/1b1K4 w - - +perft 1 20 +perft 2 788 +perft 3 14469 +perft 4 559281 +perft 5 10153827 +perft 6 390606941 + +id gentest-5687 +epd 3R4/1B1nk3/5r2/2p3bn/P2p3r/2p5/8/1b1K4 b - - +perft 1 46 +perft 2 828 +perft 3 33784 +perft 4 598033 +perft 5 24251068 +perft 6 436566564 + +id gentest-5688 +epd 2R5/1B1nk3/5r2/2p3bn/P2pb1r1/2p5/8/3K4 w - - +perft 1 18 +perft 2 838 +perft 3 13911 +perft 4 612383 +perft 5 10446515 +perft 6 445393585 + +id gentest-5689 +epd 8/4k3/Bn3r2/2R3bn/P2pb1r1/2p5/8/3K4 b - - +perft 1 54 +perft 2 1029 +perft 3 47728 +perft 4 856037 +perft 5 38212708 +perft 6 687890128 + +id gentest-5690 +epd 8/5k2/Bnb2r2/4R1bn/P2p2r1/2p5/8/3K4 w - - +perft 1 24 +perft 2 1032 +perft 3 19905 +perft 4 841984 +perft 5 15585698 +perft 6 649787328 + +id gentest-5691 +epd 8/5k2/Bn3r2/6bn/b2p2r1/2p5/2R5/3K4 b - - +perft 1 44 +perft 2 396 +perft 3 16254 +perft 4 186089 +perft 5 7771182 +perft 6 105816541 + +id gentest-5692 +epd 2B5/5k2/5r2/6bn/b1np3r/2p5/2R5/3K4 w - - +perft 1 9 +perft 2 374 +perft 3 3964 +perft 4 167257 +perft 5 2188470 +perft 6 93840331 + +id gentest-5693 +epd 6B1/6k1/5r2/6bn/b1np3r/2p5/2R5/3K4 b - - +perft 1 47 +perft 2 337 +perft 3 15183 +perft 4 184265 +perft 5 8213297 +perft 6 115147789 + +id gentest-5694 +epd 6B1/5rk1/8/6bn/b1np3r/2p5/2R1K3/8 w - - +perft 1 10 +perft 2 497 +perft 3 5668 +perft 4 260997 +perft 5 3625616 +perft 6 159320602 + +id gentest-5695 +epd 6B1/5rk1/2b5/6bn/2np3r/2p5/3R4/3K4 b - - +perft 1 56 +perft 2 744 +perft 3 38212 +perft 4 539219 +perft 5 25908208 +perft 6 397007280 + +id gentest-5696 +epd 6B1/r5k1/8/6bn/2np3r/2p2b2/3R4/4K3 w - - +perft 1 17 +perft 2 911 +perft 3 15124 +perft 4 759261 +perft 5 13034930 +perft 6 628641498 + +id gentest-5697 +epd 8/r5k1/6B1/3b2bn/2np3r/2p5/3R4/4K3 b - - +perft 1 55 +perft 2 1100 +perft 3 58283 +perft 4 1094378 +perft 5 55338090 +perft 6 1006899228 + +id gentest-5698 +epd 8/r5k1/6B1/6bn/2np2r1/2p5/6b1/3RK3 w - - +perft 1 17 +perft 2 891 +perft 3 14339 +perft 4 721283 +perft 5 12154934 +perft 6 590252046 + +id gentest-5699 +epd 8/r3b1kB/8/7n/2np2r1/2p5/4K1b1/3R4 b - - +perft 1 53 +perft 2 929 +perft 3 47764 +perft 4 822785 +perft 5 40946771 +perft 6 712300053 + +id gentest-5700 +epd 8/r3b1kB/8/7n/3p3r/2p5/1n2K1b1/7R w - - +perft 1 19 +perft 2 886 +perft 3 14681 +perft 4 661139 +perft 5 10977316 +perft 6 485630411 + +id gentest-5701 +epd 8/r3b1kB/8/7n/3p4/2p4r/1n3KbR/8 b - - +perft 1 48 +perft 2 608 +perft 3 26838 +perft 4 384773 +perft 5 16817245 +perft 6 259589576 + +id gentest-5702 +epd 8/2r1b1kB/2b5/7n/3p4/2p4r/1n3K2/7R w - - +perft 1 20 +perft 2 871 +perft 3 15030 +perft 4 652424 +perft 5 11402728 +perft 6 494574126 + +id gentest-5703 +epd 8/2r1b1kB/2b5/8/3p4/2p3nr/1n6/4K1R1 b - - +perft 1 42 +perft 2 473 +perft 3 19500 +perft 4 270394 +perft 5 11545286 +perft 6 171368296 + +id gentest-5704 +epd 8/2r1b1k1/8/5B2/4b3/2pp2nr/1n6/4K1R1 w - - +perft 1 13 +perft 2 535 +perft 3 7140 +perft 4 298618 +perft 5 4315069 +perft 6 181735732 + +id gentest-5705 +epd 2B5/2r1b1k1/8/8/4b3/2pp2r1/1n6/4K3 b - - +perft 1 47 +perft 2 384 +perft 3 17083 +perft 4 149434 +perft 5 6482700 +perft 6 57456686 + +id gentest-5706 +epd 2B5/2r1b1k1/8/6r1/4b3/2p5/1n1p1K2/8 w - - +perft 1 10 +perft 2 544 +perft 3 5507 +perft 4 286950 +perft 5 2866061 +perft 6 145217333 + +id gentest-5707 +epd 8/1Br1b1k1/8/6r1/4b3/2p5/1n6/3n1K2 b - - +perft 1 51 +perft 2 386 +perft 3 18508 +perft 4 161425 +perft 5 7490014 +perft 6 70141950 + +id gentest-5708 +epd B7/2r1b3/7k/6r1/4b3/2p5/1n3n2/5K2 w - - +perft 1 7 +perft 2 354 +perft 3 3387 +perft 4 162057 +perft 5 1666757 +perft 6 77380490 + +id gentest-5709 +epd 2B5/2r1b3/7k/3r4/4b3/2p5/1n3n2/5K2 b - - +perft 1 54 +perft 2 539 +perft 3 27827 +perft 4 278835 +perft 5 13881673 +perft 6 141181079 + +id gentest-5710 +epd 2Bb4/2r5/7k/3r4/4b3/2p5/1n2Kn2/8 w - - +perft 1 11 +perft 2 555 +perft 3 5544 +perft 4 271673 +perft 5 2704405 +perft 6 129034970 + +id gentest-5711 +epd 2Bb4/2r5/7k/8/4b3/2pr4/1n2Kn2/8 b - - +perft 1 48 +perft 2 433 +perft 3 20362 +perft 4 191207 +perft 5 8898603 +perft 6 85553053 + +id gentest-5712 +epd 3b4/2r5/7k/8/4b3/2p4B/1n2K3/3r3n w - - +perft 1 8 +perft 2 390 +perft 3 3042 +perft 4 142441 +perft 5 1235215 +perft 6 56388312 + +id gentest-5713 +epd b2bB3/2r5/7k/8/8/2p5/1n2K3/3r3n b - - +perft 1 42 +perft 2 307 +perft 3 13027 +perft 4 109267 +perft 5 4671379 +perft 6 41793093 + +id gentest-5714 +epd b2b4/5r2/7k/8/8/2p5/1n2K3/6rn w - - +perft 1 1 +perft 2 52 +perft 3 109 +perft 4 5408 +perft 5 13669 +perft 6 660204 + +id gentest-5715 +epd b2b4/6r1/7k/8/5K2/2p5/1n6/6rn b - - +perft 1 47 +perft 2 122 +perft 3 5677 +perft 4 18248 +perft 5 843803 +perft 6 2507492 + +id gentest-5716 +epd b2b4/5r2/7k/5K2/8/2p5/1n6/6rn w - - +perft 1 2 +perft 2 104 +perft 3 304 +perft 4 14526 +perft 5 44480 +perft 6 2069919 + +id gentest-5717 +epd b2b4/5r2/4K2k/8/8/2p5/1n6/2r4n b - - +perft 1 46 +perft 2 128 +perft 3 5334 +perft 4 17931 +perft 5 752841 +perft 6 2495195 + +id gentest-5718 +epd b7/1rb5/3K3k/8/8/2p5/1n6/2r4n w - - +perft 1 6 +perft 2 204 +perft 3 851 +perft 4 31682 +perft 5 114091 +perft 6 4513684 + +id gentest-5719 +epd b7/1rb5/8/3K3k/8/2p5/1n6/2r4n b - - +perft 1 34 +perft 2 156 +perft 3 5832 +perft 4 20281 +perft 5 794789 +perft 6 2959395 + +id gentest-5720 +epd b7/2b5/4K3/3r3k/8/2p5/1n6/2r4n w - - +perft 1 3 +perft 2 126 +perft 3 628 +perft 4 27098 +perft 5 112909 +perft 6 4954279 + +id gentest-5721 +epd b7/8/4K3/3r3k/5b2/2p5/1n6/2r4n b - - +perft 1 44 +perft 2 136 +perft 3 5896 +perft 4 27674 +perft 5 1226491 +perft 6 5058123 + +id gentest-5722 +epd b7/5K2/8/2r4k/8/2p3b1/1n6/2r4n w - - +perft 1 7 +perft 2 297 +perft 3 1402 +perft 4 60085 +perft 5 267108 +perft 6 11657971 + +id gentest-5723 +epd b7/7K/8/6rk/8/2p3b1/1n6/2r4n b - - +perft 1 40 +perft 2 54 +perft 3 2324 +perft 4 5306 +perft 5 224867 +perft 6 773979 + +id gentest-5724 +epd b6K/8/7k/6r1/2n5/2p3b1/8/2r4n w - - +perft 1 0 +perft 2 0 +perft 3 0 +perft 4 0 +perft 5 0 +perft 6 0 + +id gentest-5725 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-5726 +epd rnbqkbnr/pppppp1p/6p1/8/7P/3P4/PPP1PPP1/RNBQKBNR b KQkq - +perft 1 21 +perft 2 586 +perft 3 13622 +perft 4 388092 +perft 5 9897664 +perft 6 289611652 + +id gentest-5727 +epd rnbqkbnr/pppp3p/6pB/4pp2/7P/3P4/PPP1PPP1/RN1QKBNR w KQkq - +perft 1 31 +perft 2 904 +perft 3 27146 +perft 4 804926 +perft 5 24515336 +perft 6 748971327 + +id gentest-5728 +epd rnbqk1nr/pppp3p/6pB/4pp2/7P/b1PP3R/PP2PPP1/RN1QKBN1 b Qkq - +perft 1 28 +perft 2 907 +perft 3 26581 +perft 4 847050 +perft 5 25690641 +perft 6 819060993 + +id gentest-5729 +epd rnbqk1nr/pppp3p/6pB/2b1pp2/7P/2PPR3/PP2PPP1/RN1QKBN1 w Qkq - +perft 1 30 +perft 2 851 +perft 3 25955 +perft 4 758853 +perft 5 23425844 +perft 6 706424294 + +id gentest-5730 +epd rnbqk2r/ppppn2p/6pB/2b1pp2/1PP4P/3PR3/P3PPP1/RN1QKBN1 b Qkq - +perft 1 23 +perft 2 660 +perft 3 16609 +perft 4 494313 +perft 5 13401921 +perft 6 411362182 + +id gentest-5731 +epd rnbqk2r/2ppn2p/1p4p1/p1b1ppB1/1PP4P/3PR3/P3PPP1/RN1QKBN1 w Qkq - +perft 1 31 +perft 2 860 +perft 3 26425 +perft 4 766330 +perft 5 24120469 +perft 6 727868806 + +id gentest-5732 +epd rnbq1rk1/2ppn2p/1p4p1/p1b1ppB1/1PP4P/3P1R2/P2NPPP1/R2QKBN1 b Q - +perft 1 30 +perft 2 918 +perft 3 28386 +perft 4 895569 +perft 5 28529291 +perft 6 924702995 + +id gentest-5733 +epd rnbq1r1k/2ppn2p/1p1b2p1/p3ppB1/1PP4P/1N1P1R2/P3PPP1/R2QKBN1 w Q - +perft 1 36 +perft 2 951 +perft 3 32921 +perft 4 907969 +perft 5 31604488 +perft 6 912570681 + +id gentest-5734 +epd rnbq1r1k/2ppn2p/1p1b2p1/P4pB1/2Pp3P/1N3R2/P3PPP1/R2QKBN1 b Q - +perft 1 32 +perft 2 1163 +perft 3 35986 +perft 4 1316186 +perft 5 41949908 +perft 6 1556034459 + +id gentest-5735 +epd 1nbq3k/2ppnr1p/rp1b2p1/P4pB1/2PN3P/5R2/P3PPP1/R2QKBN1 w Q - +perft 1 42 +perft 2 1232 +perft 3 50768 +perft 4 1559221 +perft 5 65113441 +perft 6 2080429883 + +id gentest-5736 +epd 1nbq1r1k/2ppn2p/rp1P2p1/P4pB1/3N3P/5R2/P3PPP1/R2QKBN1 b Q - +perft 1 23 +perft 2 978 +perft 3 23348 +perft 4 1016463 +perft 5 25868567 +perft 6 1142688977 + +id gentest-5737 +epd 1nbq1r1k/2pp3p/rpnP2p1/P5B1/3N1p1P/1Q3R2/P3PPP1/R3KBN1 w Q - +perft 1 49 +perft 2 1202 +perft 3 57542 +perft 4 1539487 +perft 5 72064837 +perft 6 2064254825 + +id gentest-5738 +epd 1nbq1r1k/2ppn2p/rp1P2p1/P5BP/3N1p2/1Q3R2/P3PPP1/R2K1BN1 b - - +perft 1 23 +perft 2 1138 +perft 3 27614 +perft 4 1351108 +perft 5 35206290 +perft 6 1704158842 + +id gentest-5739 +epd 1n1q1r1k/1b1pnQ1p/rp1P2p1/P1p3BP/3N1p2/5R2/P3PPP1/R2K1BN1 w - - +perft 1 50 +perft 2 1233 +perft 3 60605 +perft 4 1586242 +perft 5 76234277 +perft 6 2113189608 + +id gentest-5740 +epd 1n1q1r1k/1b1pP2p/rp4p1/P5BP/2Qp1p2/5R2/P3PPP1/R2K1BN1 b - - +perft 1 27 +perft 2 1488 +perft 3 39746 +perft 4 2032970 +perft 5 57834957 +perft 6 2816924949 + +id gentest-5741 +epd 1n4rk/1bqpP2p/rp4p1/P5BP/3p1p2/5R2/P3PPP1/R2K1BN1 w - - +perft 1 30 +perft 2 973 +perft 3 29645 +perft 4 993508 +perft 5 31661352 +perft 6 1081145900 + +id gentest-5742 +epd 1n3r1k/1bqpP2p/Bp4p1/P5BP/3pPp2/5R2/P4PP1/R2K2N1 b - - +perft 1 34 +perft 2 1273 +perft 3 39650 +perft 4 1479078 +perft 5 46064822 +perft 6 1714541478 + +id gentest-5743 +epd 1n3r1k/2qpP2p/B5p1/Pp1b2BP/3pPp2/5R2/P4PP1/R3K1N1 w - - +perft 1 40 +perft 2 1456 +perft 3 53761 +perft 4 1817163 +perft 5 67078205 +perft 6 2194309424 + +id gentest-5744 +epd 1n3R1k/3p3p/B1q3p1/Pp1b2BP/3pPp2/5R2/P4PP1/R4KN1 b - - +perft 1 2 +perft 2 84 +perft 3 2061 +perft 4 77903 +perft 5 1982063 +perft 6 75226827 + +id gentest-5745 +epd 1n3R2/3p2kp/B5p1/Pp1b2BP/P1qpPp2/5R2/5PP1/R4KN1 w - - +perft 1 3 +perft 2 87 +perft 3 3288 +perft 4 90242 +perft 5 3457355 +perft 6 96469122 + +id gentest-5746 +epd 1n3R2/3pBbkp/B5p1/Pp5P/P1qpPp2/5R2/5PP1/R3K1N1 b - - +perft 1 31 +perft 2 1083 +perft 3 30635 +perft 4 1112399 +perft 5 31355924 +perft 6 1163287412 + +id gentest-5747 +epd 1n3R2/3pBbk1/B6p/Pp4pP/P1qpPp2/5R2/5PP1/1R2K1N1 w - - +perft 1 40 +perft 2 1154 +perft 3 40166 +perft 4 1148946 +perft 5 41340008 +perft 6 1160548180 + +id gentest-5748 +epd 1n3R2/3p2k1/B6p/Pp1b2BP/P1qpPp2/5R2/5PP1/R3K1N1 b - - +perft 1 30 +perft 2 1010 +perft 3 28537 +perft 4 971678 +perft 5 27347701 +perft 6 943575525 + +id gentest-5749 +epd 5R2/3pB1k1/B1n4p/Pp1b3P/P2pPp2/5R2/5PP1/R3KqN1 w - - +perft 1 2 +perft 2 49 +perft 3 1850 +perft 4 44089 +perft 5 1615744 +perft 6 38895094 + +id gentest-5750 +epd 8/3pBRk1/B1n4p/Pp5P/P2pPp2/5R2/b2K1PP1/R4qN1 b - - +perft 1 4 +perft 2 145 +perft 3 4299 +perft 4 129906 +perft 5 3700678 +perft 6 111533172 + +id gentest-5751 +epd 8/4Bk2/B1n4p/Pp1p3P/P2pPp2/3R4/b2K1PP1/R4qN1 w - - +perft 1 36 +perft 2 1035 +perft 3 29077 +perft 4 791055 +perft 5 21743979 +perft 6 575887058 + +id gentest-5752 +epd 8/4Bk2/B1n4p/Pp1p3P/P2pPp2/5R1N/b2K1PP1/Rq6 b - - +perft 1 31 +perft 2 757 +perft 3 21031 +perft 4 535346 +perft 5 14272882 +perft 6 377967219 + +id gentest-5753 +epd 6k1/8/B1n4p/Pp1p3P/P2pPp1B/5R1N/b2K1PP1/R6q w - - +perft 1 34 +perft 2 925 +perft 3 28237 +perft 4 730569 +perft 5 21965299 +perft 6 556628790 + +id gentest-5754 +epd 6k1/8/B6p/Pp1p3P/Pn1pPp1B/2R2R1N/b2K1PP1/7q b - - +perft 1 26 +perft 2 711 +perft 3 17485 +perft 4 482046 +perft 5 11913935 +perft 6 330584002 + +id gentest-5755 +epd 6k1/8/n6p/Pp1p3P/P2pPp1B/2R2R1N/b4PP1/3K4 w - - +perft 1 33 +perft 2 522 +perft 3 15640 +perft 4 244873 +perft 5 7143840 +perft 6 112632905 + +id gentest-5756 +epd 1n4k1/8/7p/Pp1p3P/P2pPN1B/4RR2/b4PP1/3K4 b - - +perft 1 16 +perft 2 439 +perft 3 6552 +perft 4 182136 +perft 5 2718857 +perft 6 77424105 + +id gentest-5757 +epd 1n4k1/8/4N2p/Pp1p3P/P2pP2B/4RR2/b4PP1/3K4 w - - +perft 1 37 +perft 2 458 +perft 3 15252 +perft 4 202543 +perft 5 6604013 +perft 6 92024814 + +id gentest-5758 +epd 1n5k/2N5/7p/Pp1p3P/P2pPR1B/4R3/b4PP1/3K4 b - - +perft 1 14 +perft 2 480 +perft 3 6584 +perft 4 216456 +perft 5 3055966 +perft 6 98183757 + +id gentest-5759 +epd 1n6/2N4k/7p/Pp1p3P/P2pPR1B/2R5/b4PP1/3K4 w - - +perft 1 41 +perft 2 537 +perft 3 19190 +perft 4 260086 +perft 5 8901848 +perft 6 124436475 + +id gentest-5760 +epd 1n6/2N3k1/7p/Pp1p3P/P2pPR1B/1R6/b4PP1/3K4 b - - +perft 1 12 +perft 2 435 +perft 3 5092 +perft 4 177526 +perft 5 2233663 +perft 6 75472216 + +id gentest-5761 +epd 7k/2N5/2n4p/Pp1p3P/P2pPR1B/7R/b4PP1/3K4 w - - +perft 1 38 +perft 2 604 +perft 3 20763 +perft 4 306280 +perft 5 10132534 +perft 6 148451806 + +id gentest-5762 +epd 4N2k/8/7p/np1p3P/P2pPR1B/4R3/b4PP1/3K4 b - - +perft 1 14 +perft 2 442 +perft 3 5998 +perft 4 182662 +perft 5 2539412 +perft 6 76449154 + +id gentest-5763 +epd 4N3/7k/7p/np1pP2P/P2p1R1B/4R3/b4PP1/3K4 w - - +perft 1 37 +perft 2 445 +perft 3 14362 +perft 4 179657 +perft 5 5564571 +perft 6 72318926 + +id gentest-5764 +epd 3BN3/7k/7p/1p1pP2P/P2p1R2/1n2R3/b4PP1/4K3 b - - +perft 1 12 +perft 2 442 +perft 3 5358 +perft 4 180496 +perft 5 2289197 +perft 6 73389702 + +id gentest-5765 +epd 3BNR2/7k/7p/1p1pP2P/P2p4/3nR3/b4PP1/4K3 w - - +perft 1 5 +perft 2 61 +perft 3 2021 +perft 4 22725 +perft 5 707331 +perft 6 8396998 + +id gentest-5766 +epd 3BNR2/7k/7p/1p1pP2P/Pn1p4/1R6/b2K1PP1/8 b - - +perft 1 8 +perft 2 301 +perft 3 3017 +perft 4 106240 +perft 5 1118797 +perft 6 37283332 + +id gentest-5767 +epd 4NR2/7k/7p/1p1pP1BP/P7/1R1p4/b1nK1PP1/8 w - - +perft 1 36 +perft 2 410 +perft 3 14349 +perft 4 151020 +perft 5 4834770 +perft 6 53627687 + +id gentest-5768 +epd 4N3/7k/7B/1p1pP2P/P7/1R1pnR2/b2K1PP1/8 b - - +perft 1 15 +perft 2 439 +perft 3 5752 +perft 4 170330 +perft 5 2139543 +perft 6 62952695 + +id gentest-5769 +epd 4N2k/8/7B/1p1pP2P/P4R2/1R1pn3/b2K1PP1/8 w - - +perft 1 37 +perft 2 481 +perft 3 14795 +perft 4 187417 +perft 5 5842712 +perft 6 72778841 + +id gentest-5770 +epd 7k/5R2/3N3B/1p1pP2P/P7/1b1pn3/3K1PP1/8 b - - +perft 1 16 +perft 2 500 +perft 3 6625 +perft 4 198041 +perft 5 2532053 +perft 6 72244174 + +id gentest-5771 +epd 7k/5R2/3N4/1p1pP1BP/P7/3pn3/3K1PP1/3b4 w - - +perft 1 40 +perft 2 621 +perft 3 20244 +perft 4 292574 +perft 5 8942192 +perft 6 125413036 + +id gentest-5772 +epd 7k/1N3R2/8/1p1pP1BP/P7/1b1pP3/3K2P1/8 b - - +perft 1 9 +perft 2 292 +perft 3 2361 +perft 4 70913 +perft 5 629879 +perft 6 18003706 + +id gentest-5773 +epd 6k1/1N1R4/8/1p1pP1BP/P7/3pP3/2bK2P1/8 w - - +perft 1 28 +perft 2 246 +perft 3 6796 +perft 4 58165 +perft 5 1584589 +perft 6 13955938 + +id gentest-5774 +epd 3N2k1/7R/8/1p1pP1BP/P7/3pP3/3K2P1/3b4 b - - +perft 1 12 +perft 2 336 +perft 3 3367 +perft 4 89073 +perft 5 876092 +perft 6 22613052 + +id gentest-5775 +epd 3N2k1/7R/8/Pp1pP1BP/8/1b1pP3/3K2P1/8 w - - +perft 1 28 +perft 2 239 +perft 3 6319 +perft 4 52000 +perft 5 1321404 +perft 6 11604346 + +id gentest-5776 +epd 6k1/7R/4N2B/Pp1pP2P/b7/3pP3/3K2P1/8 b - - +perft 1 6 +perft 2 159 +perft 3 1234 +perft 4 30583 +perft 5 251805 +perft 6 6132073 + +id gentest-5777 +epd 3N4/7k/7B/P2pP2P/bp6/3pP3/3K2P1/8 w - - +perft 1 16 +perft 2 189 +perft 3 3125 +perft 4 33814 +perft 5 569462 +perft 6 6223151 + +id gentest-5778 +epd 3N4/7k/7B/P3P2P/bp1p2P1/3KP3/8/8 b - - +perft 1 12 +perft 2 184 +perft 3 2125 +perft 4 33522 +perft 5 392235 +perft 6 6387732 + +id gentest-5779 +epd 3N4/7k/7B/P3P2P/1pKpb1P1/4P3/8/8 w - - +perft 1 17 +perft 2 292 +perft 3 5009 +perft 4 68909 +perft 5 1210763 +perft 6 15430086 + +id gentest-5780 +epd 3N4/7k/7P/P3P1B1/1pK1b1P1/4p3/8/8 b - - +perft 1 17 +perft 2 267 +perft 3 3769 +perft 4 64443 +perft 5 869162 +perft 6 15555113 + +id gentest-5781 +epd 3N2k1/8/7P/P3P1B1/1p4P1/1K2p3/6b1/8 w - - +perft 1 18 +perft 2 226 +perft 3 3920 +perft 4 48260 +perft 5 856465 +perft 6 10821624 + +id gentest-5782 +epd 3N2k1/8/2b4P/P3P3/1K3BP1/4p3/8/8 b - - +perft 1 15 +perft 2 268 +perft 3 3407 +perft 4 62453 +perft 5 784144 +perft 6 14627568 + +id gentest-5783 +epd 6k1/1b6/7P/P3P3/1K3BP1/4p3/8/8 w - - +perft 1 15 +perft 2 199 +perft 3 2946 +perft 4 39328 +perft 5 596102 +perft 6 8023450 + +id gentest-5784 +epd 8/1b5k/7P/P3P3/6P1/2K1p1B1/8/8 b - - +perft 1 14 +perft 2 207 +perft 3 2876 +perft 4 42275 +perft 5 586246 +perft 6 8658532 + +id gentest-5785 +epd 8/7k/2b4P/P3P3/2K3P1/4p1B1/8/8 w - - +perft 1 14 +perft 2 223 +perft 3 3149 +perft 4 44398 +perft 5 647296 +perft 6 8836899 + +id gentest-5786 +epd 8/3b3k/7P/P3P3/2K3P1/4p3/3B4/8 b - - +perft 1 14 +perft 2 193 +perft 3 2596 +perft 4 35738 +perft 5 480889 +perft 6 6712277 + +id gentest-5787 +epd 5k2/3b4/7P/P3P3/2K3P1/4B3/8/8 w - - +perft 1 21 +perft 2 240 +perft 3 4205 +perft 4 48806 +perft 5 837155 +perft 6 9908402 + +id gentest-5788 +epd 4k3/3b4/7P/P3P1B1/6P1/3K4/8/8 b - - +perft 1 9 +perft 2 141 +perft 3 1631 +perft 4 26357 +perft 5 304326 +perft 6 4938496 + +id gentest-5789 +epd 4k3/8/7P/Pb2P1B1/6P1/8/3K4/8 w - - +perft 1 15 +perft 2 168 +perft 3 2672 +perft 4 31268 +perft 5 507922 +perft 6 6077039 + +id gentest-5790 +epd 4k3/8/5B1P/P3P3/6P1/8/2K1b3/8 b - - +perft 1 11 +perft 2 161 +perft 3 1878 +perft 4 28502 +perft 5 335630 +perft 6 5124319 + +id gentest-5791 +epd 3Bk3/5b2/7P/P3P3/6P1/8/2K5/8 w - - +perft 1 17 +perft 2 178 +perft 3 2659 +perft 4 31353 +perft 5 482901 +perft 6 5640124 + +id gentest-5792 +epd 5k2/2B2b2/7P/P3P3/6P1/3K4/8/8 b - - +perft 1 12 +perft 2 163 +perft 3 1801 +perft 4 26241 +perft 5 297461 +perft 6 4528165 + +id gentest-5793 +epd 5k2/2B2b2/7P/P3P3/2K3P1/8/8/8 w - - +perft 1 7 +perft 2 80 +perft 3 1121 +perft 4 11882 +perft 5 174117 +perft 6 1908381 + +id gentest-5794 +epd 8/4kb2/3B3P/P1K1P3/6P1/8/8/8 b - - +perft 1 4 +perft 2 51 +perft 3 493 +perft 4 7098 +perft 5 75497 +perft 6 1129213 + +id gentest-5795 +epd 8/2Bk1b2/7P/P1K1P3/6P1/8/8/8 w - - +perft 1 12 +perft 2 158 +perft 3 2077 +perft 4 23037 +perft 5 318046 +perft 6 3659048 + +id gentest-5796 +epd 4b3/3k4/P2B3P/2K1P3/6P1/8/8/8 b - - +perft 1 6 +perft 2 78 +perft 3 790 +perft 4 11922 +perft 5 118658 +perft 6 1860564 + +id gentest-5797 +epd 4bB2/2k5/P6P/2K1P3/6P1/8/8/8 w - - +perft 1 11 +perft 2 118 +perft 3 1657 +perft 4 17461 +perft 5 271203 +perft 6 3013892 + +id gentest-5798 +epd 5B2/2k5/P6P/4P3/b1K3P1/8/8/8 b - - +perft 1 13 +perft 2 190 +perft 3 2193 +perft 4 33373 +perft 5 390197 +perft 6 6258797 + +id gentest-5799 +epd 5B2/P1k5/7P/4P3/2K3P1/8/2b5/8 w - - +perft 1 19 +perft 2 252 +perft 3 4691 +perft 4 57476 +perft 5 1132800 +perft 6 13293676 + +id gentest-5800 +epd 5B2/P1k5/7P/4P3/2K1b1P1/8/8/8 b - - +perft 1 19 +perft 2 338 +perft 3 4707 +perft 4 87051 +perft 5 1094503 +perft 6 21235484 + +id gentest-5801 +epd 5B2/P1k5/7P/4P1P1/2K1b3/8/8/8 w - - +perft 1 19 +perft 2 321 +perft 3 6036 +perft 4 81297 +perft 5 1594277 +perft 6 19749657 + +id gentest-5802 +epd B4B2/2k5/2b4P/2K1P1P1/8/8/8/8 b - - +perft 1 15 +perft 2 218 +perft 3 2540 +perft 4 44877 +perft 5 509516 +perft 6 9847215 + +id gentest-5803 +epd B2k1B2/3b4/7P/4P1P1/1K6/8/8/8 w - - +perft 1 20 +perft 2 226 +perft 3 4924 +perft 4 54814 +perft 5 1227534 +perft 6 13815325 + +id gentest-5804 +epd 3k1B2/1B5P/8/4PbP1/1K6/8/8/8 b - - +perft 1 14 +perft 2 375 +perft 3 4470 +perft 4 116474 +perft 5 1339165 +perft 6 34295780 + +id gentest-5805 +epd 3k4/1B5P/7B/4P1P1/1K6/8/8/1b6 w - - +perft 1 25 +perft 2 258 +perft 3 6000 +perft 4 69236 +perft 5 1562031 +perft 6 18188537 + +id gentest-5806 +epd 8/3k3P/6PB/3BP3/1K6/8/8/1b6 b - - +perft 1 11 +perft 2 364 +perft 3 4020 +perft 4 119673 +perft 5 1369708 +perft 6 38385877 + +id gentest-5807 +epd B7/3k3P/6PB/4P3/1K6/8/2b5/8 w - - +perft 1 26 +perft 2 337 +perft 3 8913 +perft 4 105795 +perft 5 2825368 +perft 6 32384980 + +id gentest-5808 +epd 8/7P/2B1k1P1/4P3/1K6/8/2bB4/8 b - - +perft 1 11 +perft 2 325 +perft 3 3354 +perft 4 95780 +perft 5 1024013 +perft 6 28903709 + +id gentest-5809 +epd 8/7P/4k1P1/4P3/1Kb1B3/8/3B4/8 w - - +perft 1 29 +perft 2 301 +perft 3 8493 +perft 4 93367 +perft 5 2661761 +perft 6 29187303 + +id gentest-5810 +epd 8/7P/4k1P1/4P3/1K2B3/4B3/4b3/8 b - - +perft 1 12 +perft 2 400 +perft 3 4224 +perft 4 132980 +perft 5 1429905 +perft 6 43308157 + +id gentest-5811 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-5812 +epd r1bqkbnr/pppppppp/2n5/8/P7/2P5/1P1PPPPP/RNBQKBNR b KQkq - +perft 1 22 +perft 2 461 +perft 3 11095 +perft 4 260364 +perft 5 6781695 +perft 6 175929387 + +id gentest-5813 +epd r1bqkbnr/ppp1p1pp/2np1p2/8/P7/2P5/RP1PPPPP/1NBQKBNR w Kkq - +perft 1 21 +perft 2 564 +perft 3 13459 +perft 4 374543 +perft 5 9810767 +perft 6 279829399 + +id gentest-5814 +epd r1bqkbnr/ppp1p2p/2np1p2/6p1/P7/1PP5/3PPPPP/RNBQKBNR b Kkq - +perft 1 28 +perft 2 584 +perft 3 16971 +perft 4 392493 +perft 5 11647768 +perft 6 294068721 + +id gentest-5815 +epd r1bqkbnr/ppp4p/3p1p2/4p1p1/Pn6/1PP4N/3PPPPP/RNBQKB1R w Kkq - +perft 1 21 +perft 2 708 +perft 3 15656 +perft 4 526284 +perft 5 12861288 +perft 6 433306467 + +id gentest-5816 +epd r2qkbnr/ppp4p/3p1p2/4p1p1/Pn4b1/RPP3PN/3PPP1P/1NBQKB1R b Kkq - +perft 1 39 +perft 2 672 +perft 3 25655 +perft 4 540869 +perft 5 20131579 +perft 6 481608338 + +id gentest-5817 +epd r2q1bnr/ppp1k2p/2np1p2/4p1p1/P5b1/1PP3PN/3PPP1P/RNBQKB1R w K - +perft 1 20 +perft 2 681 +perft 3 15958 +perft 4 539873 +perft 5 14005452 +perft 6 473585716 + +id gentest-5818 +epd r1q2bnr/ppp1k2p/2np1p2/4p1N1/P1P3b1/1P4P1/3PPP1P/RNBQKB1R b K - +perft 1 35 +perft 2 942 +perft 3 32972 +perft 4 927640 +perft 5 32496444 +perft 6 961506642 + +id gentest-5819 +epd 4rbnr/ppp1k2p/2np1p2/4pqN1/P1P3b1/BP4P1/3PPP1P/RN1QKB1R w K - +perft 1 29 +perft 2 1068 +perft 3 30764 +perft 4 1166487 +perft 5 34582097 +perft 6 1327492694 + +id gentest-5820 +epd 3nrbnr/ppp1k2p/3p1p2/4pq2/P1P3b1/BP4PN/3PPP1P/RNQ1KB1R b K - +perft 1 35 +perft 2 844 +perft 3 29241 +perft 4 767543 +perft 5 27012291 +perft 6 755795428 + +id gentest-5821 +epd 2qnrbnr/ppp1k2p/3pbp2/2P1p3/P7/BP4PN/3PPP1P/RNQ1KB1R w K - +perft 1 26 +perft 2 725 +perft 3 20934 +perft 4 603013 +perft 5 18620768 +perft 6 548905963 + +id gentest-5822 +epd 2qnrb1r/ppp1k2p/2Bpbp1n/2P1p3/P7/BP4PN/3PPP1P/RNQ1K2R b K - +perft 1 30 +perft 2 1019 +perft 3 30294 +perft 4 1048072 +perft 5 31618668 +perft 6 1112181030 + +id gentest-5823 +epd 3nrb1r/ppp1k2p/3pqp1n/2P1p3/P7/BP4Pb/3PPPBP/RNQ1K2R w K - +perft 1 32 +perft 2 959 +perft 3 30449 +perft 4 962706 +perft 5 30904368 +perft 6 1010996135 + +id gentest-5824 +epd 3nrb1r/pppk3p/3pqp1n/2P1p3/P2P4/BPQ3Pb/4PPBP/RN2K2R b K - +perft 1 33 +perft 2 1269 +perft 3 42229 +perft 4 1556399 +perft 5 53589418 +perft 6 1934343247 + +id gentest-5825 +epd 4rb1r/pppk1n1p/3p1p1n/2P1p3/PQ1P2q1/BP4Pb/4PPBP/RN2K2R w K - +perft 1 34 +perft 2 1302 +perft 3 43316 +perft 4 1615249 +perft 5 54682721 +perft 6 2018749388 + +id gentest-5826 +epd 4rb1r/pppk1n1p/5p1n/2p1p3/PQ1P1Pq1/BP4Pb/4P2P/RN2KB1R b K - +perft 1 47 +perft 2 1214 +perft 3 51585 +perft 4 1471652 +perft 5 59182691 +perft 6 1788793536 + +id gentest-5827 +epd 4r2r/pppkbn1p/5p1n/4p3/P1Qp1Pq1/BP4Pb/4P2P/RN2KB1R w K - +perft 1 35 +perft 2 1306 +perft 3 43272 +perft 4 1635019 +perft 5 54539523 +perft 6 2079934703 + +id gentest-5828 +epd 4r2r/pppk1n1p/3b1p1n/Q3p3/P2p1Pq1/BP4Pb/4P2P/RN2KB1R b K - +perft 1 47 +perft 2 1336 +perft 3 56595 +perft 4 1671759 +perft 5 68738250 +perft 6 2103814861 + +id gentest-5829 +epd 4rr2/pppk1n1p/3b1p1n/Q3p3/P2p1Pq1/BP4P1/R3P2P/1N2Kb1R w K - +perft 1 35 +perft 2 1550 +perft 3 50920 +perft 4 2168466 +perft 5 71097032 +perft 6 2963727047 + +id gentest-5830 +epd 4rr2/Qppk1n1p/3b1p1n/2B5/P2ppPq1/1P4P1/R3P2P/1N2Kb1R b K - +perft 1 46 +perft 2 1372 +perft 3 60282 +perft 4 1826006 +perft 5 76739659 +perft 6 2367902601 + +id gentest-5831 +epd 4r2r/Qppk1n1p/3b1p1n/2B5/P2ppP1q/1P4P1/R3P2P/1N2KbR1 w - - +perft 1 32 +perft 2 1360 +perft 3 43132 +perft 4 1764470 +perft 5 56499778 +perft 6 2253558504 + +id gentest-5832 +epd 4r2r/Qppk1n1p/3b1p2/2B2n2/PP1ppP1q/6P1/R3P2P/1N1K1bR1 b - - +perft 1 48 +perft 2 1398 +perft 3 64215 +perft 4 1928988 +perft 5 84645968 +perft 6 2617123240 + +id gentest-5833 +epd 4r2r/Qppk1n1p/3b1p2/2B2n2/PP3P1q/2p1p1P1/R3P2P/3K1bR1 w - - +perft 1 26 +perft 2 1225 +perft 3 32565 +perft 4 1425765 +perft 5 39316149 +perft 6 1650366795 + +id gentest-5834 +epd 2r4r/Qppk1n1p/3b1p2/2B2n2/PP3P1q/2p1p1P1/3RP2P/4KbR1 b - - +perft 1 43 +perft 2 1091 +perft 3 44720 +perft 4 1157370 +perft 5 46101993 +perft 6 1221409842 + +id gentest-5835 +epd 2r4r/1ppk3p/3b1p1n/Q1B2n2/PP3P2/2p1p1Pq/3RP2P/4KbR1 w - - +perft 1 25 +perft 2 834 +perft 3 20353 +perft 4 706975 +perft 5 17952910 +perft 6 639132346 + +id gentest-5836 +epd 2r4r/1pp1k2p/3b1p1n/Q4n2/PP3P2/2p1B1Pq/4P2P/3RKbR1 b - - +perft 1 41 +perft 2 1255 +perft 3 48455 +perft 4 1461321 +perft 5 56716440 +perft 6 1710895996 + +id gentest-5837 +epd 6rr/1pp1k2p/5p1n/Q4n2/PP3bP1/2p1B2q/4P2P/3RKbR1 w - - +perft 1 36 +perft 2 1359 +perft 3 44495 +perft 4 1715654 +perft 5 55181892 +perft 6 2157009323 + +id gentest-5838 +epd 4k1rr/1ppR3p/5p1n/Q4n2/PP1B1bP1/2p4q/4P2P/4KbR1 b - - +perft 1 40 +perft 2 1318 +perft 3 47216 +perft 4 1538825 +perft 5 55435599 +perft 6 1792861681 + +id gentest-5839 +epd 4kr1r/2pR3p/1p3p1n/Q4n2/PP1B1bP1/2p4q/4P2P/4KR2 w - - +perft 1 37 +perft 2 1198 +perft 3 38161 +perft 4 1224946 +perft 5 38510745 +perft 6 1240878143 + +id gentest-5840 +epd 4kr1r/2pR3p/1B3p1n/Q4n2/PP3bP1/2pq4/4PR1P/4K3 b - - +perft 1 43 +perft 2 1329 +perft 3 47488 +perft 4 1478137 +perft 5 50546425 +perft 6 1594790336 + +id gentest-5841 +epd 4kr1r/2pR2np/1B3p1n/Q7/PP3RP1/2p4q/4P2P/4K3 w - - +perft 1 42 +perft 2 939 +perft 3 34081 +perft 4 818448 +perft 5 28746054 +perft 6 727413013 + +id gentest-5842 +epd 4kr1r/2pR2np/1B3p2/Q7/PP3Rn1/2p4q/4P2P/4K3 b - - +perft 1 29 +perft 2 1065 +perft 3 28107 +perft 4 982786 +perft 5 26625627 +perft 6 910203347 + +id gentest-5843 +epd 4k2r/B1pR1rn1/5p1p/Q7/PP3Rn1/2p4q/4P2P/4K3 w - - +perft 1 40 +perft 2 1040 +perft 3 36754 +perft 4 1011671 +perft 5 34606373 +perft 6 993097428 + +id gentest-5844 +epd 4k2r/B1p2r2/5p1p/Q2R3n/PP4n1/2p4q/4PR1P/4K3 b - - +perft 1 29 +perft 2 912 +perft 3 26463 +perft 4 831616 +perft 5 25121323 +perft 6 795399866 + +id gentest-5845 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-5846 +epd rnbqkbnr/1ppppppp/p7/8/P7/6P1/1PPPPP1P/RNBQKBNR b KQkq - +perft 1 19 +perft 2 418 +perft 3 8957 +perft 4 217524 +perft 5 5212021 +perft 6 137514632 + +id gentest-5847 +epd rnbqkbnr/1p1ppppp/8/p1p5/P7/3P2P1/1PP1PP1P/RNBQKBNR w KQkq - +perft 1 28 +perft 2 588 +perft 3 16995 +perft 4 407039 +perft 5 12133213 +perft 6 319658321 + +id gentest-5848 +epd rnbqkbnr/1p1ppp1p/6p1/p1p5/P1P2P2/3P2P1/1P2P2P/RNBQKBNR b KQkq - +perft 1 21 +perft 2 529 +perft 3 12730 +perft 4 343365 +perft 5 9117006 +perft 6 259912909 + +id gentest-5849 +epd rnb1kbnr/1p1pp2p/1q4p1/p1p2p2/P1P2P2/1P1P2P1/4P2P/RNBQKBNR w KQkq - +perft 1 24 +perft 2 676 +perft 3 17007 +perft 4 482807 +perft 5 13023790 +perft 6 381110612 + +id gentest-5850 +epd rnb1kbnr/1p1pp2p/6p1/p1p2p2/P1P2P2/1q1P2P1/3BP2P/RNQ1KBNR b KQkq - +perft 1 32 +perft 2 755 +perft 3 24397 +perft 4 623944 +perft 5 20474898 +perft 6 558801745 + +id gentest-5851 +epd r1b1kbnr/1p1pp2p/2n3p1/p1p2p2/P1q2P2/3P2PN/3BP2P/RNQ1KB1R w KQkq - +perft 1 26 +perft 2 1001 +perft 3 27337 +perft 4 1006118 +perft 5 29031447 +perft 6 1048060504 + +id gentest-5852 +epd r1b1kbnr/1p1pp2p/2n3p1/p1p2p2/q4P2/2QPB1PN/4P2P/RN2KB1R b KQkq - +perft 1 37 +perft 2 1241 +perft 3 44732 +perft 4 1452510 +perft 5 51516316 +perft 6 1692172053 + +id gentest-5853 +epd r1b1kbnr/1p1pp2p/2n3p1/pq2Qp2/2p2P2/3PB1PN/4P2P/RN2KB1R w KQkq - +perft 1 42 +perft 2 1425 +perft 3 54171 +perft 4 1810734 +perft 5 67006755 +perft 6 2245480598 + +id gentest-5854 +epd r1b1kbnr/1p1pp2p/2n5/pq2Qpp1/2P2P2/4B1PN/3NP2P/R3KB1R b KQkq - +perft 1 35 +perft 2 1470 +perft 3 49785 +perft 4 1987908 +perft 5 67202872 +perft 6 2612892112 + +id gentest-5855 +epd r1b1kbnQ/1p1pp2p/8/p4pp1/1qPn1P2/4B1PN/3NP2P/R3KB1R w KQq - +perft 1 27 +perft 2 1023 +perft 3 27987 +perft 4 1007819 +perft 5 30643761 +perft 6 1073352919 + +id gentest-5856 +epd r1b1kb1Q/1p1pp2p/7n/p4pp1/1qP2P2/6PN/1B1NP2P/R3KB1R b KQq - +perft 1 28 +perft 2 955 +perft 3 27714 +perft 4 954814 +perft 5 28357730 +perft 6 1000475263 + +id gentest-5857 +epd r1b2b1Q/1p1ppk1p/7n/p4pp1/2P1PP2/6PN/1B1q3P/R3KB1R w KQ - +perft 1 1 +perft 2 19 +perft 3 806 +perft 4 14487 +perft 5 587567 +perft 6 11211413 + +id gentest-5858 +epd r1b2bQ1/1p1ppk1p/7n/p5p1/2P1pP2/6PN/1B1K3P/R4B1R b - - +perft 1 3 +perft 2 111 +perft 3 2063 +perft 4 71653 +perft 5 1462366 +perft 6 50791369 + +id gentest-5859 +epd r1b2bk1/1p2p1Bp/3p3n/p5p1/2P1pP2/6PN/3K3P/R4B1R w - - +perft 1 34 +perft 2 766 +perft 3 24404 +perft 4 583202 +perft 5 18398467 +perft 6 459032557 + +id gentest-5860 +epd r4bk1/1p1bp1Bp/3p3n/2R3p1/2P1pP2/6PN/3K3P/5B1R b - - +perft 1 35 +perft 2 1112 +perft 3 35368 +perft 4 1076552 +perft 5 32258398 +perft 6 969923861 + +id gentest-5861 +epd 2br1bk1/1p2p1Bp/3p3n/1R4p1/2P1pP2/6PN/3K3P/5B1R w - - +perft 1 39 +perft 2 768 +perft 3 26391 +perft 4 550796 +perft 5 18238243 +perft 6 407911461 + +id gentest-5862 +epd 3r1bk1/1p2p2p/3p3n/1R4p1/2P1pPb1/6PN/3K3P/B4B1R b - - +perft 1 24 +perft 2 791 +perft 3 18974 +perft 4 606574 +perft 5 15119751 +perft 6 481383985 + +id gentest-5863 +epd 3r4/1p2pkbp/3p3n/1R3Pp1/2P1p1b1/6PN/3K3P/B4B1R w - - +perft 1 30 +perft 2 913 +perft 3 26402 +perft 4 789702 +perft 5 23413575 +perft 6 697484732 + +id gentest-5864 +epd 6r1/1p2pkbp/3p3n/4RPp1/2P1p1b1/6P1/3K1N1P/B4B1R b - - +perft 1 27 +perft 2 751 +perft 3 20367 +perft 4 581380 +perft 5 16234080 +perft 6 478433270 + +id gentest-5865 +epd 3r4/1p2pk1p/3p3n/5Pp1/2P1R1b1/2b3P1/3K1N1P/B4B1R w - - +perft 1 6 +perft 2 198 +perft 3 5420 +perft 4 163091 +perft 5 4688227 +perft 6 137519993 + +id gentest-5866 +epd 3r4/1p2pk1p/7n/3p1Pp1/2P1R1b1/2B3P1/5N1P/2K2B1R b - - +perft 1 27 +perft 2 1015 +perft 3 26706 +perft 4 955798 +perft 5 25011147 +perft 6 872130046 + +id gentest-5867 +epd 2r5/1p2pk1p/7n/3p1Pp1/2P3b1/2B1R1P1/5N1P/2K2B1R w - - +perft 1 38 +perft 2 1041 +perft 3 37530 +perft 4 989238 +perft 5 34829300 +perft 6 909982076 + +id gentest-5868 +epd 2r2k2/1p2p2p/7n/3p1Pp1/2PB2b1/6P1/4RN1P/2K2B1R b - - +perft 1 24 +perft 2 864 +perft 3 21016 +perft 4 729851 +perft 5 18217443 +perft 6 622353088 + +id gentest-5869 +epd 5k2/1pr1p2p/7n/3p1Pp1/2PB2b1/6P1/4RN1P/2K2BR1 w - - +perft 1 40 +perft 2 839 +perft 3 30283 +perft 4 693589 +perft 5 24243149 +perft 6 580102361 + +id gentest-5870 +epd 5k2/1pr4p/7n/3ppPp1/2PB2b1/4R1P1/5NBP/2K3R1 b - - +perft 1 27 +perft 2 1042 +perft 3 26905 +perft 4 1012187 +perft 5 25878795 +perft 6 958361771 + +id gentest-5871 +epd 8/1pr2k1p/7n/4pPp1/2pB2b1/4R1P1/1K3NBP/6R1 w - - +perft 1 45 +perft 2 1032 +perft 3 42488 +perft 4 1015801 +perft 5 40285359 +perft 6 986127710 + +id gentest-5872 +epd 8/1pr2k1p/7n/4pbp1/2pB4/2R3PN/1K4BP/6R1 b - - +perft 1 30 +perft 2 1073 +perft 3 28799 +perft 4 1052277 +perft 5 27688478 +perft 6 1022767595 + +id gentest-5873 +epd 8/1pr2k1p/7n/6p1/2ppB3/2Rb2PN/1K5P/6R1 w - - +perft 1 32 +perft 2 707 +perft 3 21824 +perft 4 521784 +perft 5 16091931 +perft 6 398979060 + +id gentest-5874 +epd 8/1p3k1p/7n/2r3p1/1KppB3/2Rb2PN/7P/6R1 b - - +perft 1 27 +perft 2 793 +perft 3 20094 +perft 4 588471 +perft 5 15156840 +perft 6 447720460 + +id gentest-5875 +epd 8/1p2k2B/7n/3r2p1/1Kpp4/2Rb2PN/7P/6R1 w - - +perft 1 25 +perft 2 745 +perft 3 19780 +perft 4 552284 +perft 5 15341736 +perft 6 414239667 + +id gentest-5876 +epd 8/1p1k3B/7n/3r2p1/1Kpp4/1R1b2PN/7P/5R2 b - - +perft 1 31 +perft 2 918 +perft 3 26255 +perft 4 751021 +perft 5 20881561 +perft 6 599247739 + +id gentest-5877 +epd 8/1p2k2B/7n/3r2p1/3p4/KRpb2PN/7P/5R2 w - - +perft 1 34 +perft 2 1007 +perft 3 31084 +perft 4 876009 +perft 5 26592956 +perft 6 725172694 + +id gentest-5878 +epd 4k3/1p5B/5R1n/3r2p1/3p4/KRpb2P1/7P/6N1 b - - +perft 1 30 +perft 2 985 +perft 3 25586 +perft 4 807684 +perft 5 20401293 +perft 6 633560197 + +id gentest-5879 +epd 4k3/1p6/5R1n/3r1Bp1/4b3/KRpp2P1/7P/6N1 w - - +perft 1 33 +perft 2 715 +perft 3 22709 +perft 4 517555 +perft 5 16296345 +perft 6 387277245 + +id gentest-5880 +epd 4k3/1p6/5R1n/4rBp1/K3b3/2pp2P1/7P/1R4N1 b - - +perft 1 24 +perft 2 762 +perft 3 18319 +perft 4 574308 +perft 5 14529429 +perft 6 447703830 + +id gentest-5881 +epd 4k3/7B/1p3R1n/1r4p1/K3b3/2pp2P1/7P/1R4N1 w - - +perft 1 34 +perft 2 862 +perft 3 25831 +perft 4 634668 +perft 5 18154957 +perft 6 448972335 + +id gentest-5882 +epd 4k3/7B/1p5n/4r1p1/1K2bR2/2pp2P1/7P/1R4N1 b - - +perft 1 29 +perft 2 889 +perft 3 25038 +perft 4 754002 +perft 5 21330806 +perft 6 638163019 + +id gentest-5883 +epd 4k3/5n2/1p4B1/4r1p1/1K3R2/2pp1bP1/7P/1R4N1 w - - +perft 1 33 +perft 2 947 +perft 3 29596 +perft 4 787661 +perft 5 24562277 +perft 6 648637583 + +id gentest-5884 +epd 4k3/5n2/1p4B1/r5p1/1K2R3/1Rpp1bP1/7P/6N1 b - - +perft 1 5 +perft 2 128 +perft 3 3533 +perft 4 92054 +perft 5 2569519 +perft 6 69935807 + +id gentest-5885 +epd 8/3k1n2/1p6/5rp1/1K2R3/1Rpp1bP1/7P/6N1 w - - +perft 1 26 +perft 2 718 +perft 3 17352 +perft 4 487626 +perft 5 11741767 +perft 6 329531651 + +id gentest-5886 +epd 2k5/5n2/1p6/5rp1/1K2R1P1/2pp1b2/1R5P/6N1 b - - +perft 1 27 +perft 2 706 +perft 3 18596 +perft 4 471003 +perft 5 12587719 +perft 6 313564418 + +id gentest-5887 +epd 2k5/5n2/1p3r2/6p1/K3b1P1/2pp4/1R5P/6N1 w - - +perft 1 20 +perft 2 662 +perft 3 11597 +perft 4 356546 +perft 5 6115807 +perft 6 182740885 + +id gentest-5888 +epd 2k5/5n2/1pr5/6p1/K3b1P1/2pp4/1R3N1P/8 b - - +perft 1 29 +perft 2 536 +perft 3 15302 +perft 4 268942 +perft 5 7583459 +perft 6 132091222 + +id gentest-5889 +epd 1k6/5n2/1p2r3/6p1/K3b1P1/2pp3N/1R5P/8 w - - +perft 1 19 +perft 2 572 +perft 3 9733 +perft 4 295292 +perft 5 5108142 +perft 6 152040282 + +id gentest-5890 +epd 1k6/5n2/1p2r3/6p1/1K4P1/1Rpp3N/7P/7b b - - +perft 1 32 +perft 2 398 +perft 3 12318 +perft 4 187541 +perft 5 5576476 +perft 6 93478453 + +id gentest-5891 +epd 1k6/5n2/1p6/5rp1/K5P1/1Rpp3N/7P/7b w - - +perft 1 14 +perft 2 381 +perft 3 5607 +perft 4 152130 +perft 5 2437325 +perft 6 66425102 + +id gentest-5892 +epd 1k6/1b3n2/1p6/1R3rp1/6P1/K1pp3N/7P/8 b - - +perft 1 29 +perft 2 522 +perft 3 14343 +perft 4 252604 +perft 5 6869755 +perft 6 123025768 + +id gentest-5893 +epd 1k6/5n2/1p6/3b1rp1/6P1/KRpp3N/7P/8 w - - +perft 1 14 +perft 2 378 +perft 3 5863 +perft 4 165952 +perft 5 2737759 +perft 6 77779011 + +id gentest-5894 +epd 1k6/1b3n2/1p6/5Pp1/5N2/KRpp4/7P/8 b - - +perft 1 23 +perft 2 451 +perft 3 9675 +perft 4 190127 +perft 5 4047863 +perft 6 80660317 + +id gentest-5895 +epd 1kbn4/8/1p6/5PpN/8/KRpp4/7P/8 w - - +perft 1 16 +perft 2 262 +perft 3 4711 +perft 4 81740 +perft 5 1537427 +perft 6 28336627 + +id gentest-5896 +epd k1bn4/8/1R3N2/5Pp1/8/K1pp4/7P/8 b - - +perft 1 13 +perft 2 320 +perft 3 4365 +perft 4 102990 +perft 5 1556114 +perft 6 34644892 + +id gentest-5897 +epd k7/8/1R2nN2/6p1/8/K1pp4/7P/8 w - - +perft 1 25 +perft 2 257 +perft 3 6177 +perft 4 64999 +perft 5 1464636 +perft 6 17023479 + +id gentest-5898 +epd k2n4/3N4/1R6/6p1/1K6/2pp4/7P/8 b - - +perft 1 8 +perft 2 176 +perft 3 1597 +perft 4 36945 +perft 5 398442 +perft 6 8937068 + +id gentest-5899 +epd k7/3N4/1R6/1Kn3p1/8/2pp4/7P/8 w - - +perft 1 21 +perft 2 205 +perft 3 4535 +perft 4 44458 +perft 5 963705 +perft 6 10666298 + +id gentest-5900 +epd 8/1k1N4/4R3/1Kn3p1/8/2pp4/7P/8 b - - +perft 1 13 +perft 2 318 +perft 3 3912 +perft 4 88577 +perft 5 1111098 +perft 6 24275087 + +id gentest-5901 +epd 4R3/1k1n4/8/1K4p1/8/2p5/3p3P/8 w - - +perft 1 20 +perft 2 300 +perft 3 5454 +perft 4 92171 +perft 5 1574950 +perft 6 29205145 + +id gentest-5902 +epd 8/3n4/1k2R3/6p1/K7/2p5/3p3P/8 b - - +perft 1 4 +perft 2 82 +perft 3 1284 +perft 4 20676 +perft 5 345163 +perft 6 5648862 + +id gentest-5903 +epd 8/k2n4/4R3/6p1/1K6/2p5/7P/3b4 w - - +perft 1 21 +perft 2 365 +perft 3 7020 +perft 4 122080 +perft 5 2209291 +perft 6 38999985 + +id gentest-5904 +epd k7/3n4/8/6R1/1K6/2p5/7P/3b4 b - - +perft 1 17 +perft 2 360 +perft 3 5797 +perft 4 110911 +perft 5 1843609 +perft 6 33707036 + +id gentest-5905 +epd 8/3n4/k7/2R5/1K6/2p5/7P/3b4 w - - +perft 1 17 +perft 2 254 +perft 3 4350 +perft 4 67361 +perft 5 1159032 +perft 6 18823111 + +id gentest-5906 +epd 8/3n4/k7/3R4/1K6/8/2p4P/3b4 b - - +perft 1 17 +perft 2 331 +perft 3 5816 +perft 4 100973 +perft 5 1975325 +perft 6 32575841 + +id gentest-5907 +epd 8/k2n4/8/2R5/1K6/8/2p1b2P/8 w - - +perft 1 20 +perft 2 424 +perft 3 7914 +perft 4 166766 +perft 5 2917452 +perft 6 62954690 + +id gentest-5908 +epd 8/k7/8/2n5/1K6/4R3/2p1b2P/8 b - - +perft 1 26 +perft 2 469 +perft 3 10544 +perft 4 176534 +perft 5 3926168 +perft 6 63763867 + +id gentest-5909 +epd 8/k7/5n2/8/1K2R3/8/2p1b2P/8 w - - +perft 1 19 +perft 2 454 +perft 3 8316 +perft 4 186842 +perft 5 3281172 +perft 6 73425379 + +id gentest-5910 +epd 8/k7/5n2/7b/1K5R/8/2p4P/8 b - - +perft 1 23 +perft 2 347 +perft 3 7926 +perft 4 124998 +perft 5 2821907 +perft 6 45501795 + +id gentest-5911 +epd 8/k7/5nb1/8/1K4R1/8/7P/2b5 w - - +perft 1 19 +perft 2 531 +perft 3 9177 +perft 4 232447 +perft 5 3946166 +perft 6 96400811 + +id gentest-5912 +epd 8/k7/5n2/5b2/1K6/8/4R2P/2b5 b - - +perft 1 31 +perft 2 602 +perft 3 15821 +perft 4 287822 +perft 5 7243596 +perft 6 127061047 + +id gentest-5913 +epd 8/k6b/4Rn2/8/1K6/8/7P/2b5 w - - +perft 1 21 +perft 2 460 +perft 3 8482 +perft 4 188869 +perft 5 3375080 +perft 6 76476376 + +id gentest-5914 +epd 8/k6b/2K1Rn2/8/8/4b3/7P/8 b - - +perft 1 27 +perft 2 358 +perft 3 8257 +perft 4 130380 +perft 5 2874507 +perft 6 47073554 + +id gentest-5915 +epd 6b1/k7/2K2R2/8/8/8/3b3P/8 w - - +perft 1 18 +perft 2 319 +perft 3 5653 +perft 4 99550 +perft 5 1734621 +perft 6 31068878 + +id gentest-5916 +epd k5b1/2K5/1R6/8/8/8/3b3P/8 b - - +perft 1 17 +perft 2 314 +perft 3 4949 +perft 4 85897 +perft 5 1401210 +perft 6 24026851 + +id gentest-5917 +epd k5b1/2K5/5R2/8/8/b7/7P/8 w - - +perft 1 21 +perft 2 281 +perft 3 5141 +perft 4 79437 +perft 5 1389055 +perft 6 22793609 + +id gentest-5918 +epd k7/2K5/5R2/3b4/7P/b7/8/8 b - - +perft 1 20 +perft 2 360 +perft 3 6017 +perft 4 99911 +perft 5 1696024 +perft 6 27422083 + +id gentest-5919 +epd 6b1/k1K5/6R1/8/7P/b7/8/8 w - - +perft 1 19 +perft 2 270 +perft 3 4548 +perft 4 73187 +perft 5 1195155 +perft 6 20337649 + +id gentest-5920 +epd 6b1/k7/2KbR3/8/7P/8/8/8 b - - +perft 1 17 +perft 2 257 +perft 3 4183 +perft 4 63237 +perft 5 1054427 +perft 6 16625692 + +id gentest-5921 +epd 5bb1/k7/2K5/8/7P/4R3/8/8 w - - +perft 1 18 +perft 2 271 +perft 3 4481 +perft 4 73426 +perft 5 1194034 +perft 6 20486399 + +id gentest-5922 +epd 5bb1/8/k1K5/8/7P/8/8/5R2 b - - +perft 1 16 +perft 2 264 +perft 3 4348 +perft 4 69598 +perft 5 1189031 +perft 6 19114220 + +id gentest-5923 +epd 5b2/3K4/k7/8/7P/8/b7/5R2 w - - +perft 1 20 +perft 2 341 +perft 3 6023 +perft 4 107880 +perft 5 1825885 +perft 6 33504996 + +id gentest-5924 +epd 2K5/6b1/k7/8/7P/8/b7/R7 b - - +perft 1 13 +perft 2 158 +perft 3 2711 +perft 4 40879 +perft 5 777067 +perft 6 12411838 + +id gentest-5925 +epd 2K5/8/k7/7P/3b4/8/b7/R7 w - - +perft 1 13 +perft 2 253 +perft 3 3860 +perft 4 75639 +perft 5 1212667 +perft 6 24053842 + +id gentest-5926 +epd 2K5/8/8/1k5P/3b4/8/b7/R7 b - - +perft 1 28 +perft 2 390 +perft 3 8864 +perft 4 142793 +perft 5 3058230 +perft 6 50423585 + +id gentest-5927 +epd 2K5/8/2k5/7P/3b4/1b6/8/5R2 w - - +perft 1 17 +perft 2 415 +perft 3 6291 +perft 4 139788 +perft 5 2136376 +perft 6 45176620 + +id gentest-5928 +epd 2K5/8/8/1k5P/3b4/1b6/8/R7 b - - +perft 1 27 +perft 2 482 +perft 3 11266 +perft 4 186926 +perft 5 4094792 +perft 6 67354510 + +id gentest-5929 +epd 8/1K6/8/1k5P/8/1b2b3/8/R7 w - - +perft 1 19 +perft 2 425 +perft 3 6973 +perft 4 146856 +perft 5 2392891 +perft 6 48992438 + +id gentest-5930 +epd 8/1K6/R6P/1k6/8/4b3/8/3b4 b - - +perft 1 21 +perft 2 359 +perft 3 6790 +perft 4 113291 +perft 5 2164549 +perft 6 36733489 + +id gentest-5931 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-5932 +epd rnbqkbnr/ppppp1pp/5p2/8/4P3/7P/PPPP1PP1/RNBQKBNR b KQkq - +perft 1 19 +perft 2 551 +perft 3 11273 +perft 4 334578 +perft 5 7545591 +perft 6 230382408 + +id gentest-5933 +epd rnb1kbnr/pp1pp1pp/1q3p2/2p5/4P3/2P4P/PP1P1PP1/RNBQKBNR w KQkq - +perft 1 30 +perft 2 800 +perft 3 24064 +perft 4 663918 +perft 5 20153375 +perft 6 572235963 + +id gentest-5934 +epd rnb1kb1r/pp1pp1pp/1q3p1n/2p5/4PP2/2PP3P/PP4P1/RNBQKBNR b KQkq - +perft 1 30 +perft 2 891 +perft 3 26586 +perft 4 781504 +perft 5 23879465 +perft 6 708367109 + +id gentest-5935 +epd r1b1kb1r/pp1pp1pp/n4p1n/2p5/4PP2/2PP3P/Pq2B1P1/RNBQK1NR w KQkq - +perft 1 26 +perft 2 836 +perft 3 21609 +perft 4 682795 +perft 5 18829161 +perft 6 596690993 + +id gentest-5936 +epd r1b1kb1r/pp2p1pp/n4p1n/2pp1P2/4P3/2PP3P/Pq4P1/RNBQKBNR b KQkq - +perft 1 39 +perft 2 1046 +perft 3 36626 +perft 4 1030216 +perft 5 35847646 +perft 6 1040278460 + +id gentest-5937 +epd 1rb1kb1r/pp2p1pp/n4p2/2pp1n2/4P3/2PP1N1P/Pq4P1/RNBQKB1R w KQk - +perft 1 33 +perft 2 1270 +perft 3 38795 +perft 4 1450259 +perft 5 44964280 +perft 6 1667946231 + +id gentest-5938 +epd 1rb1kb1r/p3p1pp/n4p2/1pppNn2/4P3/2PP3P/PB4P1/RN1QKB1R b KQk - +perft 1 26 +perft 2 892 +perft 3 24047 +perft 4 808785 +perft 5 22760873 +perft 6 762738434 + +id gentest-5939 +epd 1r2kb1r/p3pbpp/n4p2/1pppNn2/4P2P/2PP4/PB4P1/RN1QKB1R w KQk - +perft 1 36 +perft 2 1035 +perft 3 36655 +perft 4 1056837 +perft 5 37048033 +perft 6 1078738831 + +id gentest-5940 +epd 1r2kb1r/p3pbpp/n4p2/1pp1Nn2/4p1PP/2PP4/PB6/RN1QKBR1 b Qk - +perft 1 33 +perft 2 1105 +perft 3 35522 +perft 4 1216552 +perft 5 38472949 +perft 6 1334967986 + +id gentest-5941 +epd 2r1kb1r/p3pbpp/n4p1n/1pp1N3/Q3p1PP/2PP4/PB6/RN2KBR1 w Qk - +perft 1 37 +perft 2 1064 +perft 3 38893 +perft 4 1092902 +perft 5 39842401 +perft 6 1111165380 + +id gentest-5942 +epd 2r1kb1r/p3p1pp/n4p1n/1pp5/1QN1p1PP/2PP4/PB6/RN2KBR1 b Qk - +perft 1 25 +perft 2 809 +perft 3 19480 +perft 4 635042 +perft 5 15605744 +perft 6 517586062 + +id gentest-5943 +epd 1r2kb1r/p3p1pp/n4p1n/1pp5/1QN3PP/2Pp4/PB3K2/RN3BR1 w k - +perft 1 33 +perft 2 715 +perft 3 23393 +perft 4 530730 +perft 5 17987938 +perft 6 423379414 + +id gentest-5944 +epd 1r2kbr1/p3p1pp/n4p1n/1pp5/1QN3PP/2PpR3/PB3K2/RN3B2 b - - +perft 1 22 +perft 2 810 +perft 3 17678 +perft 4 648253 +perft 5 14883281 +perft 6 545212958 + +id gentest-5945 +epd 1r2kbr1/p3p1pp/n7/1pp2p2/1QN3nP/2PpR3/PB4K1/RN3B2 w - - +perft 1 36 +perft 2 889 +perft 3 30787 +perft 4 774052 +perft 5 27024645 +perft 6 693180717 + +id gentest-5946 +epd 1r2kbr1/p1n1p1pp/8/1pp2p2/1Q4nP/2PpR2K/PB1N4/RN3B2 b - - +perft 1 30 +perft 2 1022 +perft 3 28591 +perft 4 971848 +perft 5 26822702 +perft 6 921900903 + +id gentest-5947 +epd 1r3br1/p1nkp1pp/7n/1pp2p2/5Q1P/2PpR2K/PB1N4/RN3B2 w - - +perft 1 42 +perft 2 988 +perft 3 39938 +perft 4 939173 +perft 5 37168230 +perft 6 892289162 + +id gentest-5948 +epd 1r3br1/2nkp1pp/7n/ppp2pQ1/7P/2Pp1R1K/PB1N4/RN3B2 b - - +perft 1 27 +perft 2 941 +perft 3 22472 +perft 4 790926 +perft 5 18806926 +perft 6 675153743 + +id gentest-5949 +epd 1r2nbr1/3kp1pp/7n/p1p2pQ1/1p2N2P/2Pp1R1K/PB6/RN3B2 w - - +perft 1 42 +perft 2 1026 +perft 3 41541 +perft 4 1038258 +perft 5 41514201 +perft 6 1066944341 + +id gentest-5950 +epd 2r1nbr1/3kp1Qp/7n/p1p2p2/1p5P/2Pp1R1K/PB1N4/RN3B2 b - - +perft 1 24 +perft 2 876 +perft 3 21895 +perft 4 756516 +perft 5 19868527 +perft 6 687395927 + +id gentest-5951 +epd 3rnbr1/3kp2p/7n/p1p5/1p3p1P/2Pp1R1K/PB1N4/RN3BQ1 w - - +perft 1 33 +perft 2 886 +perft 3 28796 +perft 4 806953 +perft 5 27117594 +perft 6 784756864 + +id gentest-5952 +epd 3rnbr1/3kp2p/7n/p1p5/5p1P/2pp1R1K/PB1NB3/RN3Q2 b - - +perft 1 32 +perft 2 815 +perft 3 26573 +perft 4 780843 +perft 5 25903213 +perft 6 833537167 + +id gentest-5953 +epd 3rnb2/3kp2p/7n/p7/2p2prP/2pp1R1K/PB1NB3/RN2Q3 w - - +perft 1 29 +perft 2 861 +perft 3 25406 +perft 4 804293 +perft 5 25403793 +perft 6 832786756 + +id gentest-5954 +epd 3rnb2/4p2p/3k3n/p7/2p2prP/2ppR2K/PB1NB3/RN1Q4 b - - +perft 1 33 +perft 2 1024 +perft 3 30851 +perft 4 1001429 +perft 5 31074323 +perft 6 1041446023 + +id gentest-5955 +epd 3rnb2/4p2p/3k4/p4n2/2p3rP/2ppp2K/PB1N4/RN1Q1B2 w - - +perft 1 25 +perft 2 902 +perft 3 23114 +perft 4 796141 +perft 5 21813797 +perft 6 738664733 + +id gentest-5956 +epd 3rnb2/4p2p/3k4/p4n2/2p2r1P/2ppp2K/PB1NB3/RN4Q1 b - - +perft 1 38 +perft 2 1284 +perft 3 44196 +perft 4 1409832 +perft 5 48066950 +perft 6 1528579501 + +id gentest-5957 +epd 3rnb2/4p3/7p/p2k1n2/2p2r1P/2ppp2K/PB1NB3/RNQ5 w - - +perft 1 27 +perft 2 884 +perft 3 23456 +perft 4 772046 +perft 5 21373773 +perft 6 705005691 + +id gentest-5958 +epd 3rnb2/4p3/7p/p2k1n2/P1p4r/2ppp3/1B1NB1K1/RNQ5 b - - +perft 1 36 +perft 2 934 +perft 3 31323 +perft 4 812504 +perft 5 26782878 +perft 6 720463585 + +id gentest-5959 +epd 1r2nb2/4p3/8/p2k1n1p/P1p4r/2Qpp3/1B1NB1K1/RN6 w - - +perft 1 32 +perft 2 932 +perft 3 28964 +perft 4 862898 +perft 5 27151019 +perft 6 818058943 + +id gentest-5960 +epd 1r2n3/4p1b1/8/p2kQn1p/P1p1N2r/3pp3/1B2B1K1/RN6 b - - +perft 1 2 +perft 2 70 +perft 3 2303 +perft 4 76133 +perft 5 2508365 +perft 6 83149849 + +id gentest-5961 +epd 4n3/4p3/8/p2kbn1p/P1p1N2r/1r1pp3/1B4K1/RN3B2 w - - +perft 1 22 +perft 2 819 +perft 3 17263 +perft 4 642287 +perft 5 13903812 +perft 6 509708897 + +id gentest-5962 +epd 4n3/4p1n1/8/p2kb2p/P1p1N2r/Rr1pp3/6K1/1NB2B2 b - - +perft 1 39 +perft 2 742 +perft 3 24852 +perft 4 499600 +perft 5 17024186 +perft 6 360435458 + +id gentest-5963 +epd 4n3/4p1n1/8/p2k3p/P1p1N2r/Rr2p3/1b1pB1K1/1NB5 w - - +perft 1 26 +perft 2 923 +perft 3 21686 +perft 4 741639 +perft 5 17044937 +perft 6 578768962 + +id gentest-5964 +epd 4n3/4p1n1/8/p2k3p/Prp4r/R3pK2/1b1NB3/1NB5 b - - +perft 1 35 +perft 2 616 +perft 3 18731 +perft 4 359301 +perft 5 11084192 +perft 6 226462101 + +id gentest-5965 +epd 4n3/4p1n1/2k5/p6p/r1p4r/R3pK2/1b2B3/1NB2N2 w - - +perft 1 22 +perft 2 694 +perft 3 14947 +perft 4 461508 +perft 5 10481638 +perft 6 323546739 + +id gentest-5966 +epd 4n3/4p1n1/2k5/p6p/2B4r/r3NK2/1b6/1NB5 b - - +perft 1 35 +perft 2 664 +perft 3 21813 +perft 4 455592 +perft 5 15185309 +perft 6 336439978 + +id gentest-5967 +epd 1r2n3/4p1n1/2k5/p6p/2B4r/4NK2/1b1B4/1N6 w - - +perft 1 29 +perft 2 1014 +perft 3 27784 +perft 4 982289 +perft 5 26387689 +perft 6 936559747 + +id gentest-5968 +epd 3rn3/4p1n1/2k5/p4N1p/2B4r/4BK2/1b6/1N6 b - - +perft 1 36 +perft 2 1182 +perft 3 39369 +perft 4 1186910 +perft 5 40299006 +perft 6 1139785639 + +id gentest-5969 +epd 3rn3/1k4n1/8/p3pN1p/2B4r/5K2/1b6/1N4B1 w - - +perft 1 34 +perft 2 1109 +perft 3 30958 +perft 4 1024833 +perft 5 27020333 +perft 6 906505699 + +id gentest-5970 +epd 4n3/1k4N1/8/p3p2p/2B4r/5K2/1b5B/1N1r4 b - - +perft 1 38 +perft 2 875 +perft 3 30501 +perft 4 673272 +perft 5 23120669 +perft 6 507752671 + +id gentest-5971 +epd 4n3/k7/8/p3pN1p/2B3r1/5K2/1b5B/1N1r4 w - - +perft 1 29 +perft 2 1152 +perft 3 28200 +perft 4 1050741 +perft 5 25099001 +perft 6 899712133 + +id gentest-5972 +epd 4n3/k7/6r1/p3p2p/2B3N1/5K2/1b5B/1N1r4 b - - +perft 1 41 +perft 2 1046 +perft 3 39445 +perft 4 944664 +perft 5 34443395 +perft 6 814120585 + +id gentest-5973 +epd 4n1r1/k7/8/p3p3/2B3p1/8/1b2K2B/1N1r4 w - - +perft 1 19 +perft 2 591 +perft 3 11265 +perft 4 349895 +perft 5 6911047 +perft 6 217597069 + +id gentest-5974 +epd 6r1/k1n2B2/8/p3p3/6p1/2N5/1b2K2B/3r4 b - - +perft 1 42 +perft 2 919 +perft 3 32472 +perft 4 692709 +perft 5 23595782 +perft 6 500198461 + +id gentest-5975 +epd 8/k1n2B2/8/p3p1r1/3r2p1/8/1b2K2B/3N4 w - - +perft 1 21 +perft 2 709 +perft 3 14063 +perft 4 463777 +perft 5 9292568 +perft 6 303910593 + +id gentest-5976 +epd 4B3/k7/8/pn2p1r1/3r2p1/8/1b2K2B/3N4 b - - +perft 1 33 +perft 2 551 +perft 3 17684 +perft 4 317618 +perft 5 10147846 +perft 6 190633205 + +id gentest-5977 +epd 4B1r1/k1n5/8/p3p3/3r2p1/8/1b2K3/3N2B1 w - - +perft 1 19 +perft 2 517 +perft 3 9304 +perft 4 272068 +perft 5 4960837 +perft 6 151460167 + +id gentest-5978 +epd 4B1r1/k7/4n3/p3p3/3r2p1/6B1/1b2K3/3N4 b - - +perft 1 36 +perft 2 695 +perft 3 24701 +perft 4 478266 +perft 5 16780399 +perft 6 331091023 + +id gentest-5979 +epd 3nB3/k5r1/8/p3p3/3r2p1/4K1B1/1b6/3N4 w - - +perft 1 18 +perft 2 620 +perft 3 10783 +perft 4 359893 +perft 5 6547017 +perft 6 214357559 + +id gentest-5980 +epd 3n4/k5r1/4B3/p3p3/2r3p1/4K1B1/1b6/3N4 b - - +perft 1 37 +perft 2 716 +perft 3 24818 +perft 4 492542 +perft 5 16304628 +perft 6 329490341 + +id gentest-5981 +epd 3n4/k2B2r1/r7/p3p3/6p1/4K1B1/1b6/3N4 w - - +perft 1 22 +perft 2 642 +perft 3 13323 +perft 4 394970 +perft 5 8252890 +perft 6 248844650 + +id gentest-5982 +epd 3nB3/k5r1/r7/p3p3/3b2p1/3K2B1/8/3N4 b - - +perft 1 34 +perft 2 722 +perft 3 23773 +perft 4 495991 +perft 5 16101243 +perft 6 335393939 + +id gentest-5983 +epd 3n4/k5r1/3r4/p3p3/B5p1/3Kb1B1/8/3N4 w - - +perft 1 6 +perft 2 241 +perft 3 4304 +perft 4 159667 +perft 5 2979995 +perft 6 104752017 + +id gentest-5984 +epd 3n4/k1r5/3r4/pK2p3/B5p1/4b1B1/8/3N4 b - - +perft 1 44 +perft 2 522 +perft 3 20588 +perft 4 289299 +perft 5 10689776 +perft 6 169933967 + +id gentest-5985 +epd 3n4/k4r2/3r4/pK2p3/B5pB/8/8/3N2b1 w - - +perft 1 15 +perft 2 550 +perft 3 8668 +perft 4 310244 +perft 5 5345041 +perft 6 186392825 + +id gentest-5986 +epd 3n4/k4r2/1r6/K3p3/B5p1/8/5B2/3N2b1 b - - +perft 1 22 +perft 2 327 +perft 3 8764 +perft 4 142036 +perft 5 4164233 +perft 6 71064493 + +id gentest-5987 +epd 3n4/k1r5/1r6/K3p3/B5pB/8/8/3N2b1 w - - +perft 1 17 +perft 2 639 +perft 3 10557 +perft 4 366800 +perft 5 6388518 +perft 6 215866609 + +id gentest-5988 +epd 3n4/k1r5/1r6/K7/B3p1pB/8/8/3N2b1 b - - +perft 1 41 +perft 2 619 +perft 3 22093 +perft 4 364067 +perft 5 12422691 +perft 6 215381413 + +id gentest-5989 +epd 3B4/k7/1r6/K7/B3p1p1/8/2r5/3N2b1 w - - +perft 1 16 +perft 2 526 +perft 3 8918 +perft 4 276892 +perft 5 4933895 +perft 6 149276208 + +id gentest-5990 +epd 8/k7/1b6/1K6/B3p1p1/8/2r5/3N4 b - - +perft 1 27 +perft 2 202 +perft 3 4714 +perft 4 54614 +perft 5 1258081 +perft 6 16847572 + +id gentest-5991 +epd 8/k1b5/8/1K6/B3p3/2N3p1/2r5/8 w - - +perft 1 12 +perft 2 262 +perft 3 3095 +perft 4 66836 +perft 5 961312 +perft 6 21202282 + +id gentest-5992 +epd 8/k7/2K5/8/4pb2/1BN3p1/2r5/8 b - - +perft 1 23 +perft 2 341 +perft 3 7453 +perft 4 127995 +perft 5 2842383 +perft 6 48623195 + +id gentest-5993 +epd 8/k7/8/3K4/4pb2/1BN3p1/2r5/8 w - - +perft 1 17 +perft 2 416 +perft 3 6074 +perft 4 142909 +perft 5 2295649 +perft 6 53568961 + +id gentest-5994 +epd 8/k7/8/8/B3Kb2/2N3p1/3r4/8 b - - +perft 1 27 +perft 2 426 +perft 3 10355 +perft 4 170989 +perft 5 4075960 +perft 6 67845249 + +id gentest-5995 +epd 8/k7/8/8/B3K3/6p1/1r1b4/1N6 w - - +perft 1 16 +perft 2 363 +perft 3 5668 +perft 4 134122 +perft 5 2092218 +perft 6 49528278 + +id gentest-5996 +epd 2B5/k7/1r6/8/4K3/6p1/3b4/1N6 b - - +perft 1 26 +perft 2 387 +perft 3 9605 +perft 4 142440 +perft 5 3468146 +perft 6 52784424 + +id gentest-5997 +epd 8/1k6/1r5b/8/4K1B1/6p1/8/1N6 w - - +perft 1 18 +perft 2 430 +perft 3 6623 +perft 4 162282 +perft 5 2517811 +perft 6 62078375 + +id gentest-5998 +epd 8/1k6/7b/8/8/3K2pB/8/1r6 b - - +perft 1 27 +perft 2 326 +perft 3 7932 +perft 4 94314 +perft 5 2316598 +perft 6 28260356 + +id gentest-5999 +epd 8/1k6/8/8/5b2/3K2p1/1r6/5B2 w - - +perft 1 7 +perft 2 180 +perft 3 1853 +perft 4 46463 +perft 5 517961 +perft 6 12738707 + +id gentest-6000 +epd 8/1k6/8/6b1/3K4/6p1/1r2B3/8 b - - +perft 1 26 +perft 2 354 +perft 3 8837 +perft 4 109243 +perft 5 2762554 +perft 6 33927176 + +id gentest-6001 +epd 3r4/1k6/8/6b1/8/2K3p1/4B3/8 w - - +perft 1 14 +perft 2 374 +perft 3 4894 +perft 4 129304 +perft 5 1679464 +perft 6 43521306 + +id gentest-6002 +epd 3r4/k7/8/6b1/8/2K3p1/8/5B2 b - - +perft 1 27 +perft 2 299 +perft 3 7839 +perft 4 94877 +perft 5 2416994 +perft 6 30215030 + +id gentest-6003 +epd 8/k3b3/8/8/8/2K3p1/4B3/3r4 w - - +perft 1 13 +perft 2 346 +perft 3 4215 +perft 4 106487 +perft 5 1321729 +perft 6 33017499 + +id gentest-6004 +epd 8/k3b3/8/8/2B5/1K4p1/8/5r2 b - - +perft 1 28 +perft 2 371 +perft 3 9717 +perft 4 132060 +perft 5 3384992 +perft 6 43257979 + +id gentest-6005 +epd 6B1/k7/8/6b1/8/1K4p1/5r2/8 w - - +perft 1 10 +perft 2 286 +perft 3 3425 +perft 4 90249 +perft 5 1131734 +perft 6 28978945 + +id gentest-6006 +epd 8/k7/8/3B2b1/1K6/5rp1/8/8 b - - +perft 1 25 +perft 2 389 +perft 3 9268 +perft 4 125685 +perft 5 3034335 +perft 6 38972773 + +id gentest-6007 +epd 8/k7/8/1K1B4/7b/1r4p1/8/8 w - - +perft 1 6 +perft 2 105 +perft 3 1369 +perft 4 27141 +perft 5 327589 +perft 6 6943893 + +id gentest-6008 +epd 8/kr6/8/3B4/3K3b/6p1/8/8 b - - +perft 1 22 +perft 2 374 +perft 3 7732 +perft 4 113903 +perft 5 2505408 +perft 6 34223873 + +id gentest-6009 +epd 8/k7/8/3BK3/3r3b/6p1/8/8 w - - +perft 1 17 +perft 2 342 +perft 3 3990 +perft 4 84951 +perft 5 1007148 +perft 6 22319184 + +id gentest-6010 +epd 8/k7/3K4/8/2B4b/6p1/8/8 b - - +perft 1 9 +perft 2 143 +perft 3 1663 +perft 4 23479 +perft 5 311836 +perft 6 4262020 + +id gentest-6011 +epd 8/1k6/3K4/6b1/8/3B2p1/8/8 w - - +perft 1 16 +perft 2 228 +perft 3 3261 +perft 4 46070 +perft 5 645748 +perft 6 9098052 + +id gentest-6012 +epd k7/8/2K5/6b1/8/6p1/2B5/8 b - - +perft 1 12 +perft 2 182 +perft 3 2190 +perft 4 31431 +perft 5 393669 +perft 6 5484872 + +id gentest-6013 +epd 8/k3b3/8/1K6/8/6p1/2B5/8 w - - +perft 1 13 +perft 2 171 +perft 3 2202 +perft 4 28424 +perft 5 373650 +perft 6 5009878 + +id gentest-6014 +epd 8/k7/2K5/8/8/b5p1/8/3B4 b - - +perft 1 11 +perft 2 126 +perft 3 1534 +perft 4 19085 +perft 5 247779 +perft 6 3172289 + +id gentest-6015 +epd 8/k7/2K5/8/8/b7/4B3/6b1 w - - +perft 1 13 +perft 2 204 +perft 3 2477 +perft 4 43418 +perft 5 532330 +perft 6 9746838 + +id gentest-6016 +epd 8/k1K5/8/8/8/b7/5b2/3B4 b - - +perft 1 17 +perft 2 167 +perft 3 2990 +perft 4 33108 +perft 5 607957 +perft 6 7097194 + +id gentest-6017 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-6018 +epd rnbqkbnr/ppp1pppp/8/3p4/P7/4P3/1PPP1PPP/RNBQKBNR b KQkq - +perft 1 28 +perft 2 863 +perft 3 24559 +perft 4 769381 +perft 5 22972388 +perft 6 734258706 + +id gentest-6019 +epd rnbqkbnr/ppp1pppp/8/3p4/P1P5/4P3/1P1P1PPP/RNBQKBNR w KQkq - +perft 1 30 +perft 2 860 +perft 3 26505 +perft 4 785113 +perft 5 24890414 +perft 6 765915099 + +id gentest-6020 +epd rnbqkbnr/p1p1pppp/1p6/3p4/P1PP4/3BP3/1P3PPP/RNBQK1NR b KQkq - +perft 1 29 +perft 2 1095 +perft 3 31813 +perft 4 1194035 +perft 5 35783821 +perft 6 1339971650 + +id gentest-6021 +epd r1bqkbnr/p3pppp/np6/2pp4/P1PP4/R2BP3/1P3PPP/1NBQK1NR w Kkq - +perft 1 39 +perft 2 1047 +perft 3 40467 +perft 4 1169083 +perft 5 44896456 +perft 6 1374695717 + +id gentest-6022 +epd 1rbqkbnr/p3pppp/np4B1/2pp4/P1PP4/4P3/1P3PPP/RNBQK1NR b Kk - +perft 1 25 +perft 2 958 +perft 3 26011 +perft 4 988594 +perft 5 29091794 +perft 6 1100159428 + +id gentest-6023 +epd 1rb1kbnr/p1q1pppp/np4B1/2pp4/P1PP4/2N1P3/1P3PPP/R1BQK1NR w Kk - +perft 1 44 +perft 2 1341 +perft 3 56838 +perft 4 1817791 +perft 5 74742780 +perft 6 2477306109 + +id gentest-6024 +epd 1rb1kbnr/p3ppp1/np6/2pp4/P1PPBq2/2N1P3/1P3PPP/R1BQK1NR b Kk - +perft 1 45 +perft 2 1780 +perft 3 76611 +perft 4 2966819 +perft 5 123783593 +perft 6 4736766152 + +id gentest-6025 +epd 3rkbnr/pb2ppp1/np6/2pp4/P1PPBq2/4P3/NP3PPP/R1BQK1NR w Kk - +perft 1 37 +perft 2 1665 +perft 3 58550 +perft 4 2514983 +perft 5 88849159 +perft 6 3729347521 + +id gentest-6026 +epd 3rkbnr/pb2ppp1/np6/2pP4/P2PB3/4q3/NP3PPP/R1BQ1KNR b k - +perft 1 48 +perft 2 1605 +perft 3 74256 +perft 4 2543269 +perft 5 113989728 +perft 6 4022133960 + +id gentest-6027 +epd 1r2kbnr/pb2ppp1/np6/2pP4/P2PB2P/q7/NP3PP1/R1BQ1KNR w k - +perft 1 42 +perft 2 1502 +perft 3 61527 +perft 4 2289415 +perft 5 93127715 +perft 6 3552100253 + +id gentest-6028 +epd 1r2kbnr/pb2p1p1/np6/2pP1p1Q/P2PB2P/qP6/N4PP1/R1B2KNR b k - +perft 1 4 +perft 2 154 +perft 3 4914 +perft 4 186441 +perft 5 6288632 +perft 6 239152935 + +id gentest-6029 +epd 1r3bn1/pb1kp1pr/np6/2pP1p1Q/P2PB2P/BP6/N4PP1/R4KNR w - - +perft 1 42 +perft 2 1108 +perft 3 46200 +perft 4 1255932 +perft 5 52190105 +perft 6 1466684459 + +id gentest-6030 +epd 1r3bn1/pb1kp2r/np6/2pP1ppQ/P2PB2P/BP3N2/5PP1/R1N2K1R b - - +perft 1 32 +perft 2 1214 +perft 3 35935 +perft 4 1415359 +perft 5 42098702 +perft 6 1698078596 + +id gentest-6031 +epd 1r1k1bn1/pb2p2r/np6/P1pP2pQ/3Pp2P/BP3N2/5PP1/R1N2K1R w - - +perft 1 34 +perft 2 975 +perft 3 35028 +perft 4 1014451 +perft 5 37684902 +perft 6 1107976319 + +id gentest-6032 +epd 1r1k1bn1/pb2p2Q/np6/P1pP4/1P1Pp2p/B4N2/5PP1/R1N2K1R b - - +perft 1 26 +perft 2 1012 +perft 3 25732 +perft 4 1003569 +perft 5 25773117 +perft 6 1015152815 + +id gentest-6033 +epd 1r1k1b1Q/pb2p3/np5n/P1pP4/1P1Pp3/B4N1p/5PP1/R1N2K1R w - - +perft 1 35 +perft 2 897 +perft 3 31598 +perft 4 813999 +perft 5 29505383 +perft 6 769357331 + +id gentest-6034 +epd 1r1k1b1Q/pb2p3/np6/P1pP1n2/1P1Pp3/B4N1p/5PPR/R1N3K1 b - - +perft 1 29 +perft 2 973 +perft 3 27173 +perft 4 943770 +perft 5 26105312 +perft 6 939090966 + +id gentest-6035 +epd 1r1k1b1Q/p3p3/n7/p1pb1n2/1P1Pp3/B2N1N1p/5PPR/R5K1 w - - +perft 1 40 +perft 2 1505 +perft 3 59867 +perft 4 2135705 +perft 5 84912489 +perft 6 2903914632 + +id gentest-6036 +epd 1r1k1b2/p3p3/n1Q5/p2b1n2/1P1pp3/B2N1N1p/5PPR/R5K1 b - - +perft 1 32 +perft 2 1552 +perft 3 44682 +perft 4 1998927 +perft 5 58843553 +perft 6 2520700462 + +id gentest-6037 +epd 1r1k1b2/p3p3/n2n4/p1Qb4/1P1pp3/B2N1N2/5PpR/R5K1 w - - +perft 1 44 +perft 2 1401 +perft 3 62078 +perft 4 1898084 +perft 5 83743911 +perft 6 2526110516 + +id gentest-6038 +epd r2k1b2/p3p2R/n2n4/p1Qb4/1P1pp3/B2N1N2/5Pp1/1R4K1 b - - +perft 1 32 +perft 2 1574 +perft 3 44033 +perft 4 2089656 +perft 5 57461563 +perft 6 2643499354 + +id gentest-6039 +epd r2k1b2/p3pn1R/n7/2Qb4/pP1pp3/3N1N2/1B3Pp1/1R4K1 w - - +perft 1 48 +perft 2 1119 +perft 3 52257 +perft 4 1290623 +perft 5 58785962 +perft 6 1512068519 + +id gentest-6040 +epd 1r1k1b2/p3pn1R/n7/3b4/pPQpp3/B2N1N2/5Pp1/1R4K1 b - - +perft 1 28 +perft 2 1291 +perft 3 36031 +perft 4 1601201 +perft 5 45777182 +perft 6 1986216085 + +id gentest-6041 +epd 1r2kb2/p1Q1p2R/n7/3bn3/pP1pp3/B2N1N2/5Pp1/1R4K1 w - - +perft 1 52 +perft 2 1495 +perft 3 70471 +perft 4 2000477 +perft 5 90435914 +perft 6 2584217936 + +id gentest-6042 +epd 3rkb2/p1Q1p2R/n7/3bn3/pP1pp3/3N1N2/1B3Pp1/1R4K1 b - - +perft 1 33 +perft 2 1622 +perft 3 47219 +perft 4 2213774 +perft 5 64139358 +perft 6 2915305919 + +id gentest-6043 +epd 3rkb2/p1Q1p2R/n1n5/3b4/pP1p4/3N1p2/5Pp1/BR4K1 w - - +perft 1 42 +perft 2 960 +perft 3 38871 +perft 4 963272 +perft 5 38082848 +perft 6 989228336 + +id gentest-6044 +epd 3rkb2/p1Q1R3/n1n5/3b4/pP1p4/3N1p2/5P1K/BR4n1 b - - +perft 1 2 +perft 2 73 +perft 3 2015 +perft 4 69238 +perft 5 1952440 +perft 6 65686667 + +id gentest-6045 +epd 3rkb2/p7/n1n5/3b4/pP1p4/2QN1p2/5P1K/BR4n1 w - - +perft 1 29 +perft 2 890 +perft 3 25435 +perft 4 800524 +perft 5 23734841 +perft 6 751210082 + +id gentest-6046 +epd 3rkb2/p7/n1Q5/n2b4/pP1p4/1R1N1p2/5P1K/B5n1 b - - +perft 1 5 +perft 2 151 +perft 3 4194 +perft 4 122345 +perft 5 3544713 +perft 6 104419725 + +id gentest-6047 +epd 1n1rkb2/p7/2n5/3b4/pP1p4/1R1N1pK1/5P2/B5n1 w - - +perft 1 18 +perft 2 545 +perft 3 9806 +perft 4 308813 +perft 5 5832811 +perft 6 189552885 + +id gentest-6048 +epd 1n1rkb2/p7/2n1b3/8/pP1p4/4RpK1/1N3P2/B5n1 b - - +perft 1 26 +perft 2 424 +perft 3 12660 +perft 4 209243 +perft 5 6672802 +perft 6 115596549 + +id gentest-6049 +epd 1n1r4/p3bk2/2n1b3/8/pP1p4/5pK1/1N3P2/B3R1n1 w - - +perft 1 17 +perft 2 684 +perft 3 10839 +perft 4 411550 +perft 5 7074951 +perft 6 260612362 + +id gentest-6050 +epd 1n1r4/p4k2/2n1R3/8/pP1p1K1b/5p2/1N3P2/B5n1 b - - +perft 1 29 +perft 2 511 +perft 3 14141 +perft 4 249551 +perft 5 7025725 +perft 6 128082309 + +id gentest-6051 +epd 3r4/p2n1k2/2R5/n7/pP1p1K1b/5p2/1N3P2/B5n1 w - - +perft 1 23 +perft 2 717 +perft 3 13750 +perft 4 429394 +perft 5 8105679 +perft 6 251917593 + +id gentest-6052 +epd 2Rr4/p2n4/5k2/n7/pPNp1K1b/5p2/5P2/B5n1 b - - +perft 1 26 +perft 2 466 +perft 3 12372 +perft 4 230227 +perft 5 6325719 +perft 6 120652589 + +id gentest-6053 +epd 2Rr4/p4k2/1N6/n1n5/pP1p1K1b/5p2/5P2/B5n1 w - - +perft 1 20 +perft 2 690 +perft 3 12969 +perft 4 405402 +perft 5 7942047 +perft 6 238035140 + +id gentest-6054 +epd 1R1r4/p4k2/1N6/n1n5/1P1p1K1b/p4p2/1B3P2/6n1 b - - +perft 1 41 +perft 2 758 +perft 3 26601 +perft 4 488481 +perft 5 15909004 +perft 6 299703497 + +id gentest-6055 +epd 1R1r4/p4k2/nN6/n7/1P1p1K2/B4p2/5b2/6n1 w - - +perft 1 19 +perft 2 562 +perft 3 9986 +perft 4 278089 +perft 5 5072548 +perft 6 140776173 + +id gentest-6056 +epd 1R1r4/p4k2/nN6/nP6/3p2K1/B4p2/8/4b1n1 b - - +perft 1 34 +perft 2 716 +perft 3 22431 +perft 4 476607 +perft 5 14489807 +perft 6 310530192 + +id gentest-6057 +epd 1R1r4/p4k2/PN1n4/8/3p2K1/B4p2/8/4b1n1 w - - +perft 1 18 +perft 2 552 +perft 3 11212 +perft 4 314788 +perft 5 6650080 +perft 6 180453913 + +id gentest-6058 +epd 1R6/p2r1k2/PN1n4/8/3p2K1/B4p2/8/4b1n1 b - - +perft 1 28 +perft 2 626 +perft 3 16541 +perft 4 384585 +perft 5 10125055 +perft 6 233685478 + +id gentest-6059 +epd 1R3B2/p4k2/PN6/3r4/3pn1K1/5p2/8/4b1n1 w - - +perft 1 19 +perft 2 597 +perft 3 12113 +perft 4 353877 +perft 5 7581107 +perft 6 215148953 + +id gentest-6060 +epd 6R1/p4k2/PN5B/2nr4/3p2K1/5p2/8/4b1n1 b - - +perft 1 31 +perft 2 726 +perft 3 20091 +perft 4 446103 +perft 5 12093207 +perft 6 269825110 + +id gentest-6061 +epd 6R1/p4k2/nN6/3r4/3p2K1/5p2/3B1b2/6n1 w - - +perft 1 26 +perft 2 616 +perft 3 14627 +perft 4 358966 +perft 5 8330967 +perft 6 209690954 + +id gentest-6062 +epd 6R1/p7/n3k3/3N4/3p1K2/5p2/3B1b2/6n1 b - - +perft 1 15 +perft 2 341 +perft 3 5334 +perft 4 121523 +perft 5 2036934 +perft 6 47252936 + +id gentest-6063 +epd 8/p7/n3k3/3N4/3p1KR1/5p2/3B1b2/6n1 w - - +perft 1 23 +perft 2 328 +perft 3 6181 +perft 4 99593 +perft 5 2062038 +perft 6 35147421 + +id gentest-6064 +epd 8/p3N3/n3k1R1/8/3p1K2/5p2/3B4/4b1n1 b - - +perft 1 3 +perft 2 85 +perft 3 1334 +perft 4 30453 +perft 5 514256 +perft 6 11747438 + +id gentest-6065 +epd 8/p3k3/n5R1/4K3/3p4/5p2/3b4/6n1 w - - +perft 1 18 +perft 2 346 +perft 3 5621 +perft 4 109073 +perft 5 1702533 +perft 6 33653890 + +id gentest-6066 +epd 5k2/p7/nR1K4/8/3p4/5p2/3b4/6n1 b - - +perft 1 22 +perft 2 278 +perft 3 5608 +perft 4 85064 +perft 5 1722859 +perft 6 26334618 + +id gentest-6067 +epd 5k2/8/np6/3K2b1/3p4/5p2/8/6n1 w - - +perft 1 7 +perft 2 157 +perft 3 820 +perft 4 18323 +perft 5 95942 +perft 6 2168936 + +id gentest-6068 +epd 5k2/8/np6/8/3K4/5p2/3b4/6n1 b - - +perft 1 22 +perft 2 113 +perft 3 2499 +perft 4 13156 +perft 5 292848 +perft 6 1513657 + +id gentest-6069 +epd 5k2/8/np6/8/8/4Kp2/3b4/6n1 w - - +perft 1 5 +perft 2 100 +perft 3 487 +perft 4 10010 +perft 5 50468 +perft 6 1067627 + +id gentest-6070 +epd 4k3/8/np6/8/8/5p2/2K5/6n1 b - - +perft 1 13 +perft 2 99 +perft 3 1469 +perft 4 8500 +perft 5 136757 +perft 6 761087 + +id gentest-6071 +epd 6k1/8/np6/8/8/5p2/8/3K2n1 w - - +perft 1 4 +perft 2 52 +perft 3 299 +perft 4 4330 +perft 5 23508 +perft 6 367633 + +id gentest-6072 +epd 8/7k/np6/8/8/5p2/1K6/6n1 b - - +perft 1 13 +perft 2 99 +perft 3 1439 +perft 4 7463 +perft 5 117430 +perft 6 655766 + +id gentest-6073 +epd 8/7k/np6/8/8/5p2/K7/6n1 w - - +perft 1 5 +perft 2 65 +perft 3 340 +perft 4 4941 +perft 5 26902 +perft 6 422358 + +id gentest-6074 +epd 8/8/np4k1/8/8/5p2/8/K5n1 b - - +perft 1 16 +perft 2 47 +perft 3 774 +perft 4 4378 +perft 5 75110 +perft 6 386312 + +id gentest-6075 +epd 8/2n4k/1p6/8/8/5p2/K7/6n1 w - - +perft 1 5 +perft 2 75 +perft 3 418 +perft 4 6433 +perft 5 36067 +perft 6 585996 + +id gentest-6076 +epd 8/2n4k/1p6/8/8/1K6/5p2/6n1 b - - +perft 1 19 +perft 2 142 +perft 3 2920 +perft 4 15458 +perft 5 338394 +perft 6 1785573 + +id gentest-6077 +epd 8/2n4k/1p6/8/K7/8/4n3/5b2 w - - +perft 1 3 +perft 2 60 +perft 3 305 +perft 4 6611 +perft 5 30857 +perft 6 702641 + +id gentest-6078 +epd 8/2n4k/1p6/8/8/K7/8/5bn1 b - - +perft 1 22 +perft 2 104 +perft 3 2294 +perft 4 11810 +perft 5 265778 +perft 6 1325810 + +id gentest-6079 +epd 8/7k/1p6/1n6/K7/8/4b3/6n1 w - - +perft 1 2 +perft 2 40 +perft 3 165 +perft 4 3577 +perft 5 15525 +perft 6 345189 + +id gentest-6080 +epd 8/7k/1p6/1n6/K7/8/8/5bn1 b - - +perft 1 19 +perft 2 45 +perft 3 930 +perft 4 4086 +perft 5 87948 +perft 6 401547 + +id gentest-6081 +epd 7k/8/1p6/1n6/1K6/5n2/8/5b2 w - - +perft 1 2 +perft 2 44 +perft 3 165 +perft 4 3679 +perft 5 15254 +perft 6 347692 + +id gentest-6082 +epd 7k/8/1p6/1n6/8/5n2/1K4b1/8 b - - +perft 1 20 +perft 2 121 +perft 3 2635 +perft 4 12038 +perft 5 274416 +perft 6 1356787 + +id gentest-6083 +epd 7k/8/1p6/1n6/8/8/7n/2K2b2 w - - +perft 1 5 +perft 2 80 +perft 3 417 +perft 4 8120 +perft 5 37872 +perft 6 786394 + +id gentest-6084 +epd 7k/8/1p6/1n6/8/3b4/7n/K7 b - - +perft 1 21 +perft 2 43 +perft 3 942 +perft 4 4096 +perft 5 91613 +perft 6 369602 + +id gentest-6085 +epd 7k/2n5/1p6/8/8/8/1Kb4n/8 w - - +perft 1 6 +perft 2 123 +perft 3 488 +perft 4 9720 +perft 5 49294 +perft 6 1001162 + +id gentest-6086 +epd 7k/8/1p6/3n4/8/8/2bK3n/8 b - - +perft 1 23 +perft 2 101 +perft 3 2208 +perft 4 8793 +perft 5 187895 +perft 6 904631 + +id gentest-6087 +epd 8/6k1/1p6/3n1b2/8/8/7n/4K3 w - - +perft 1 4 +perft 2 120 +perft 3 539 +perft 4 15152 +perft 5 64606 +perft 6 1724194 + +id gentest-6088 +epd 8/6k1/1p6/3n4/8/7b/7n/2K5 b - - +perft 1 26 +perft 2 120 +perft 3 3048 +perft 4 17599 +perft 5 441084 +perft 6 2230739 + +id gentest-6089 +epd 6k1/8/1p6/3n1b2/8/8/7n/3K4 w - - +perft 1 4 +perft 2 108 +perft 3 431 +perft 4 11064 +perft 5 49974 +perft 6 1248069 + +id gentest-6090 +epd 6k1/8/1p6/3n4/4b3/8/7n/3K4 b - - +perft 1 25 +perft 2 97 +perft 3 2470 +perft 4 9975 +perft 5 250467 +perft 6 1144794 + +id gentest-6091 +epd 6k1/8/1p6/8/1n6/8/2b4n/4K3 w - - +perft 1 3 +perft 2 69 +perft 3 346 +perft 4 8125 +perft 5 36168 +perft 6 846295 + +id gentest-6092 +epd 6k1/8/1p6/8/1n6/3b4/7n/4K3 b - - +perft 1 25 +perft 2 77 +perft 3 1873 +perft 4 8261 +perft 5 197864 +perft 6 844458 + +id gentest-6093 +epd 6k1/7b/1p6/8/8/8/n2K3n/8 w - - +perft 1 4 +perft 2 68 +perft 3 279 +perft 4 5603 +perft 5 24578 +perft 6 517763 + +id gentest-6094 +epd 6k1/7b/1p6/8/1n6/8/3K3n/8 b - - +perft 1 20 +perft 2 108 +perft 3 2398 +perft 4 9825 +perft 5 225429 +perft 6 1043685 + +id gentest-6095 +epd 6k1/8/8/1p6/1n6/8/2b4n/2K5 w - - +perft 1 2 +perft 2 44 +perft 3 216 +perft 4 4807 +perft 5 16595 +perft 6 362771 + +id gentest-6096 +epd 6k1/8/8/1p3b2/1n6/8/7n/3K4 b - - +perft 1 25 +perft 2 92 +perft 3 2218 +perft 4 9475 +perft 5 226115 +perft 6 1026261 + +id gentest-6097 +epd 7k/8/8/1p6/1n2b3/8/7n/4K3 w - - +perft 1 4 +perft 2 100 +perft 3 468 +perft 4 10709 +perft 5 45652 +perft 6 1026956 + +id gentest-6098 +epd 7k/8/8/1p6/1n6/8/7n/4K2b b - - +perft 1 19 +perft 2 73 +perft 3 1498 +perft 4 7119 +perft 5 152000 +perft 6 684677 + +id gentest-6099 +epd 7k/8/8/1p6/8/5n2/n7/3K3b w - - +perft 1 2 +perft 2 32 +perft 3 172 +perft 4 3178 +perft 5 13366 +perft 6 266739 + +id gentest-6100 +epd 7k/8/8/1p4n1/8/8/nK6/7b b - - +perft 1 20 +perft 2 115 +perft 3 2348 +perft 4 9102 +perft 5 189390 +perft 6 889983 + +id gentest-6101 +epd 6k1/8/8/1p4n1/1n6/8/2K5/7b w - - +perft 1 7 +perft 2 168 +perft 3 777 +perft 4 18583 +perft 5 86930 +perft 6 2088372 + +id gentest-6102 +epd 8/5k2/8/1p4n1/1n6/8/8/2K4b b - - +perft 1 26 +perft 2 105 +perft 3 2742 +perft 4 13702 +perft 5 357264 +perft 6 1622691 + +id gentest-6103 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-6104 +epd r1bqkbnr/pppppppp/2n5/8/4PP2/8/PPPP2PP/RNBQKBNR b KQkq - +perft 1 22 +perft 2 658 +perft 3 15732 +perft 4 478442 +perft 5 12309804 +perft 6 384036001 + +id gentest-6105 +epd r1bqkbnr/ppppp1p1/2n2p1p/8/4PP2/7P/PPPP2P1/RNBQKBNR w KQkq - +perft 1 29 +perft 2 557 +perft 3 16560 +perft 4 352540 +perft 5 10695653 +perft 6 247063656 + +id gentest-6106 +epd r1bqkbnr/1pppp1p1/2n2p1p/p3P3/5P2/6PP/PPPP4/RNBQKBNR b KQkq - +perft 1 21 +perft 2 623 +perft 3 13476 +perft 4 405051 +perft 5 9363933 +perft 6 289121759 + +id gentest-6107 +epd 2bqkbnr/1pp1p1p1/r1n2p1p/p2pP3/5PP1/7P/PPPP4/RNBQKBNR w KQk - +perft 1 28 +perft 2 745 +perft 3 21442 +perft 4 596776 +perft 5 17712394 +perft 6 513521132 + +id gentest-6108 +epd 2bqkbnr/2p1p1p1/rpn2p1p/p2pP3/2P2PPP/8/PP1P4/RNBQKBNR b KQk - +perft 1 27 +perft 2 827 +perft 3 23042 +perft 4 726240 +perft 5 20912748 +perft 6 678804655 + +id gentest-6109 +epd 2bqkbnr/2p1p1p1/rp3p1p/p2pP3/2P2PPP/3P4/PPn5/RNBQKBNR w KQk - +perft 1 4 +perft 2 114 +perft 3 3637 +perft 4 105373 +perft 5 3423585 +perft 6 101982536 + +id gentest-6110 +epd 2bqkbnr/2p1p1p1/rp3p2/p2pP2p/2P2PPP/3P4/PPn1K2R/RNBQ1BN1 b k - +perft 1 32 +perft 2 946 +perft 3 30552 +perft 4 941946 +perft 5 30931405 +perft 6 983290289 + +id gentest-6111 +epd 3qkbnr/2p1p1p1/rp3p2/p2pPb1p/2P2PPP/n2P4/PP2K1BR/RNBQ2N1 w k - +perft 1 38 +perft 2 1280 +perft 3 45834 +perft 4 1533685 +perft 5 54788302 +perft 6 1840772832 + +id gentest-6112 +epd 3qkbnr/2p1p1p1/rp3p2/p2pP2p/2P1bPPP/N2P3R/PP2K1B1/R1BQ2N1 b k - +perft 1 30 +perft 2 1073 +perft 3 32358 +perft 4 1168064 +perft 5 36064555 +perft 6 1312472300 + +id gentest-6113 +epd 3q1bn1/2p1pkp1/rp3P1r/p2p3p/2P1bPPP/N2P3R/PP2K1B1/R1BQ2N1 w - - +perft 1 38 +perft 2 1349 +perft 3 49715 +perft 4 1723698 +perft 5 64102338 +perft 6 2207648923 + +id gentest-6114 +epd 3q1bn1/2p1pkp1/rp3P1r/p2p1b1p/2P2PPP/NQ1P3R/PP4B1/R1BK2N1 b - - +perft 1 38 +perft 2 1330 +perft 3 46936 +perft 4 1704970 +perft 5 58609359 +perft 6 2188270161 + +id gentest-6115 +epd q4bn1/2p1pkpb/rp3P1r/p2P3p/5PPP/NQ1P3R/PP4B1/R1BK2N1 w - - +perft 1 36 +perft 2 1046 +perft 3 39636 +perft 4 1142821 +perft 5 44549256 +perft 6 1322711936 + +id gentest-6116 +epd 4qbn1/2p1pkpb/rp3P1r/p2P3p/5PPP/1Q1P3R/PP4B1/RNB1K1N1 b - - +perft 1 30 +perft 2 1130 +perft 3 33886 +perft 4 1298981 +perft 5 40029766 +perft 6 1549660793 + +id gentest-6117 +epd 4qbn1/4pk1b/rpp2Ppr/p2P3p/5PPP/1Q1P3R/PP2N1B1/RNB1K3 w - - +perft 1 40 +perft 2 725 +perft 3 29044 +perft 4 641271 +perft 5 25744198 +perft 6 632826919 + +id gentest-6118 +epd 4qb2/4pk1b/rpp2npr/p2P3p/4NPPP/1Q1P3R/PP2N1B1/R1B1K3 b - - +perft 1 24 +perft 2 1043 +perft 3 25513 +perft 4 1093359 +perft 5 29230114 +perft 6 1243106969 + +id gentest-6119 +epd 4qb2/r4k1b/1pp1pnpr/p2P3p/4NPPP/1Q1P3R/PP2NKB1/R1B5 w - - +perft 1 46 +perft 2 1496 +perft 3 63664 +perft 4 2085693 +perft 5 89076763 +perft 6 2954646744 + +id gentest-6120 +epd 5b2/r2q1k1b/1pp1pnpr/p2P3p/5PPP/1QNP2NR/PP3KB1/R1B5 b - - +perft 1 36 +perft 2 1462 +perft 3 51390 +perft 4 2103583 +perft 5 73789338 +perft 6 3035631509 + +id gentest-6121 +epd 4q3/r3bk1b/1pp1pnpr/p2P3p/P4PPP/1QNP2NR/1P3KB1/R1B5 w - - +perft 1 44 +perft 2 1502 +perft 3 61285 +perft 4 2110391 +perft 5 86440647 +perft 6 2979560445 + +id gentest-6122 +epd 4q3/r3bk1b/1p2pnpr/p1pP3p/P2P1PPP/1QN3NR/1P1B1KB1/R7 b - - +perft 1 35 +perft 2 1663 +perft 3 57233 +perft 4 2660777 +perft 5 91626837 +perft 6 4198523908 + +id gentest-6123 +epd 4q3/4bk1b/1pr1pnpr/p1pP3p/P2P1PPP/1QN3NR/1P1B2B1/R4K2 w - - +perft 1 44 +perft 2 1292 +perft 3 57121 +perft 4 1773061 +perft 5 78003755 +perft 6 2498052309 + +id gentest-6124 +epd 4q1b1/4bk2/1pP1pnpr/p1p4p/P2P1PPP/1QN3NR/1P4B1/R3BK2 b - - +perft 1 25 +perft 2 1090 +perft 3 29652 +perft 4 1286024 +perft 5 36824901 +perft 6 1603247679 + +id gentest-6125 +epd 6b1/4bk2/1pq1p1pr/p1pn3p/P2P1PPP/1QN3N1/1P4BR/R3BK2 w - - +perft 1 42 +perft 2 1409 +perft 3 57713 +perft 4 1920502 +perft 5 80085991 +perft 6 2644606424 + +id gentest-6126 +epd 6b1/4bk2/1pq1p1pr/p2n3p/P2p1PPP/1QN3N1/1P4BR/R3BK2 b - - +perft 1 40 +perft 2 1530 +perft 3 58138 +perft 4 2299474 +perft 5 83450563 +perft 6 3390125572 + +id gentest-6127 +epd 6br/4bk2/1pq1pnp1/p6p/P2p1PPP/1Q4N1/1P4BR/RN2BK2 w - - +perft 1 43 +perft 2 1662 +perft 3 66084 +perft 4 2432283 +perft 5 98442812 +perft 6 3521525008 + +id gentest-6128 +epd 6br/4bk2/1p2pnp1/p6p/q2p1PPP/NQB3N1/1P4BR/R4K2 b - - +perft 1 31 +perft 2 1313 +perft 3 41836 +perft 4 1819885 +perft 5 58896307 +perft 6 2596427685 + +id gentest-6129 +epd 7r/5k1b/1p1bpnp1/p6p/qQ1p1PPP/N1B3N1/1P4BR/R4K2 w - - +perft 1 44 +perft 2 1865 +perft 3 82009 +perft 4 3211273 +perft 5 143290847 +perft 6 5403687927 + +id gentest-6130 +epd 6kr/7b/1p1bpnp1/p6p/qQ1pNPPP/2B5/1P4BR/RN3K2 b - - +perft 1 34 +perft 2 1194 +perft 3 37704 +perft 4 1397726 +perft 5 43778096 +perft 6 1689526986 + +id gentest-6131 +epd 6kr/7b/1p2pnp1/p3b2p/qQ2NPPP/R1Bp4/1P4BR/1N3K2 w - - +perft 1 40 +perft 2 1012 +perft 3 40480 +perft 4 1113252 +perft 5 45328759 +perft 6 1307463951 + +id gentest-6132 +epd 4n1kr/7b/1p2p1p1/p3b2p/qQ2BPPP/R1Bp4/1P1N3R/1N3K2 b - - +perft 1 26 +perft 2 1084 +perft 3 28165 +perft 4 1195682 +perft 5 32082958 +perft 6 1369668737 + +id gentest-6133 +epd 4n1kr/7b/1pq1pbp1/p6p/1Q2BPPP/R1Bp4/1P1N4/1N3K1R w - - +perft 1 40 +perft 2 1227 +perft 3 51363 +perft 4 1539603 +perft 5 65632997 +perft 6 1929567486 + +id gentest-6134 +epd 4n1kr/7b/1pq1p1p1/p3B2P/1Q2BP1P/R2p4/1P1N4/1N3K1R b - - +perft 1 25 +perft 2 1162 +perft 3 27432 +perft 4 1256553 +perft 5 29686673 +perft 6 1350973142 + +id gentest-6135 +epd 4n1kr/4q2b/1p2p1p1/p3B2P/2Q1BP1P/R2p4/1P1N4/1N3K1R w - - +perft 1 56 +perft 2 1365 +perft 3 72195 +perft 4 1629953 +perft 5 81850333 +perft 6 1875049435 + +id gentest-6136 +epd 4nk1r/4q2b/1p2p1p1/p3B2P/4BP1P/R3Q3/1P1N4/1N3K1R b - - +perft 1 26 +perft 2 1411 +perft 3 35388 +perft 4 1836102 +perft 5 46655699 +perft 6 2356655415 + +id gentest-6137 +epd 5kr1/4q1nb/1p2p1p1/p3B2P/4BP1P/3RQ3/1P1N4/1N3K1R w - - +perft 1 51 +perft 2 1154 +perft 3 59594 +perft 4 1346981 +perft 5 67925843 +perft 6 1603538730 + +id gentest-6138 +epd 5kr1/4q1nb/1pB1p1p1/4B2P/p4P1P/N2RQ3/1P1N4/5K1R b - - +perft 1 22 +perft 2 1239 +perft 3 25952 +perft 4 1385459 +perft 5 30926557 +perft 6 1607785618 + +id gentest-6139 +epd 5kr1/4q1nb/1pB1p1p1/4B2P/p4P1P/N2R4/1P1N1Q2/5K1R w - - +perft 1 60 +perft 2 1264 +perft 3 72801 +perft 4 1544002 +perft 5 83117955 +perft 6 1881922049 + +id gentest-6140 +epd 5kr1/5qBb/1pB1p1P1/8/p4P1P/N2R4/1P1N1Q2/5K1R b - - +perft 1 4 +perft 2 222 +perft 3 4407 +perft 4 232095 +perft 5 5193095 +perft 6 260717517 + +id gentest-6141 +epd 7r/4kqBb/1pB1p1P1/1N6/p4P1P/3R4/1P1N1Q2/5K1R w - - +perft 1 62 +perft 2 1129 +perft 3 65855 +perft 4 1328024 +perft 5 73585780 +perft 6 1640477190 + +id gentest-6142 +epd 7r/4k1Bb/1p2p1q1/1N6/p4P1P/3R1B2/1P3Q2/1N3K1R b - - +perft 1 26 +perft 2 1345 +perft 3 35522 +perft 4 1803008 +perft 5 50079914 +perft 6 2476547620 + +id gentest-6143 +epd 7r/4k1B1/1p2p3/1N3b2/p4P1P/3R1B2/1P3Q2/1N4KR w - - +perft 1 57 +perft 2 1150 +perft 3 62320 +perft 4 1199769 +perft 5 62445796 +perft 6 1214205313 + +id gentest-6144 +epd 8/4k1B1/1p2p2r/1N3b2/pP3P1P/3R4/5QB1/1N4KR b - b3 +perft 1 17 +perft 2 955 +perft 3 15872 +perft 4 822730 +perft 5 14685119 +perft 6 731976081 + +id gentest-6145 +epd 8/4k1B1/1p5r/1N2pb2/1P3P1P/p2R4/6B1/1N2Q1KR w - - +perft 1 54 +perft 2 1202 +perft 3 60825 +perft 4 1276551 +perft 5 62695904 +perft 6 1303417606 + +id gentest-6146 +epd 8/1B2k1B1/1p2b2r/1N2p3/1P3P1P/p1R5/8/1N2Q1KR b - - +perft 1 24 +perft 2 1207 +perft 3 26705 +perft 4 1337922 +perft 5 28770926 +perft 6 1435189780 + +id gentest-6147 +epd 7r/1B2k1B1/1p2b3/1N2p3/1P2QP1P/p1R5/8/1N4KR w - - +perft 1 55 +perft 2 1426 +perft 3 77003 +perft 4 1713145 +perft 5 90963271 +perft 6 1894651921 + +id gentest-6148 +epd 4N3/1B2k1B1/1p2b3/4p3/1P2QP1r/p1R5/8/1N4KR b - - +perft 1 27 +perft 2 1327 +perft 3 30523 +perft 4 1503468 +perft 5 32879728 +perft 6 1630957215 + +id gentest-6149 +epd 4N3/1B2k1B1/8/1p2p3/1P2QP1r/p1R5/b4K2/1N5R w - - +perft 1 62 +perft 2 1196 +perft 3 65340 +perft 4 1257132 +perft 5 67199402 +perft 6 1287957086 + +id gentest-6150 +epd 4N3/1B2k1B1/8/1p2p3/1P2QPr1/p5R1/b7/1N4KR b - - +perft 1 18 +perft 2 791 +perft 3 14020 +perft 4 656951 +perft 5 11892440 +perft 6 572375025 + +id gentest-6151 +epd 4N3/1B2k1B1/7R/1p2p1r1/1P2QP2/p5R1/8/1b4K1 w - - +perft 1 54 +perft 2 802 +perft 3 39403 +perft 4 629469 +perft 5 30596406 +perft 6 516063860 + +id gentest-6152 +epd 3kN3/1B4BQ/7R/1p2p1P1/1P6/p5R1/8/1b4K1 b - - +perft 1 12 +perft 2 569 +perft 3 6512 +perft 4 306036 +perft 5 3505145 +perft 6 161558487 + +id gentest-6153 +epd 3kN3/1B4BQ/5R2/1p2p1P1/1P6/p5R1/8/1b4K1 w - - +perft 1 57 +perft 2 617 +perft 3 31716 +perft 4 351989 +perft 5 17451622 +perft 6 197260135 + +id gentest-6154 +epd 3kN3/1B4Bb/3R4/1p2p1P1/1P4R1/p7/8/6K1 b - - +perft 1 2 +perft 2 84 +perft 3 858 +perft 4 33564 +perft 5 382495 +perft 6 14360838 + +id gentest-6155 +epd 4N3/1B3kBb/4R3/1p2p1P1/1P4R1/p7/8/6K1 w - - +perft 1 39 +perft 2 388 +perft 3 14502 +perft 4 145341 +perft 5 5292219 +perft 6 58440892 + +id gentest-6156 +epd 4N3/5kBb/B3R3/1p4P1/1P1Rp3/p7/8/6K1 b - - +perft 1 7 +perft 2 237 +perft 3 1719 +perft 4 58003 +perft 5 542187 +perft 6 18333230 + +id gentest-6157 +epd 4N3/5kB1/4R3/1B3bP1/1P1Rp3/p7/8/6K1 w - - +perft 1 41 +perft 2 358 +perft 3 14013 +perft 4 136297 +perft 5 5221359 +perft 6 55977437 + +id gentest-6158 +epd 4N3/5k2/4R3/1B2BbP1/1P5R/p3p3/8/6K1 b - - +perft 1 14 +perft 2 665 +perft 3 8273 +perft 4 361669 +perft 5 4557419 +perft 6 188535505 + +id gentest-6159 +epd 4N3/5k2/4R3/1B2B1P1/1P2b2R/p7/4p3/5K2 w - - +perft 1 5 +perft 2 93 +perft 3 4152 +perft 4 57092 +perft 5 2441627 +perft 6 32988610 + +id gentest-6160 +epd 4N3/5k1b/4R3/1B4P1/1P5R/p5B1/4pK2/8 b - - +perft 1 15 +perft 2 608 +perft 3 8415 +perft 4 335573 +perft 5 4939294 +perft 6 195067369 + +id gentest-6161 +epd 4Nk2/7b/4R3/1B4P1/1P5R/p5B1/8/4K3 w - - +perft 1 48 +perft 2 437 +perft 3 20166 +perft 4 211042 +perft 5 9320900 +perft 6 103192606 + +id gentest-6162 +epd 4Nk2/8/4R1b1/1B4P1/1P6/p5B1/5K2/7R b - - +perft 1 12 +perft 2 624 +perft 3 6810 +perft 4 328088 +perft 5 3779040 +perft 6 172471084 + +id gentest-6163 +epd 4N1k1/5b2/B3R3/6P1/1P6/p5B1/5K2/7R w - - +perft 1 53 +perft 2 369 +perft 3 17434 +perft 4 183209 +perft 5 8140912 +perft 6 92635914 + +id gentest-6164 +epd 8/5bk1/B3RN2/6P1/1P6/p5B1/6K1/7R b - - +perft 1 8 +perft 2 431 +perft 3 4263 +perft 4 202890 +perft 5 2233870 +perft 6 99689517 + +id gentest-6165 +epd 4Nkb1/8/B3R3/6P1/1P6/p5B1/6K1/7R w - - +perft 1 54 +perft 2 312 +perft 3 14811 +perft 4 136516 +perft 5 5875514 +perft 6 66482849 + +id gentest-6166 +epd 4Nk2/8/B3b3/6P1/1P5B/p7/6K1/6R1 b - - +perft 1 16 +perft 2 413 +perft 3 5614 +perft 4 151692 +perft 5 2047776 +perft 6 57187792 + +id gentest-6167 +epd 4Nk2/8/B7/1P4P1/7B/p7/6K1/3b2R1 w - - +perft 1 21 +perft 2 231 +perft 3 5327 +perft 4 62751 +perft 5 1576124 +perft 6 19501292 + +id gentest-6168 +epd 4Nk2/8/B5P1/1P6/b6B/p7/8/5KR1 b - - +perft 1 7 +perft 2 143 +perft 3 1334 +perft 4 30545 +perft 5 323406 +perft 6 8086939 + +id gentest-6169 +epd 5k2/2N5/B5P1/1P1b4/7B/p7/8/5KR1 w - - +perft 1 23 +perft 2 318 +perft 3 7397 +perft 4 84816 +perft 5 2154651 +perft 6 24992411 + +id gentest-6170 +epd 5k2/1BN5/6P1/1P6/8/p7/b4B2/5KR1 b - - +perft 1 10 +perft 2 285 +perft 3 3117 +perft 4 90329 +perft 5 1024593 +perft 6 30472007 + +id gentest-6171 +epd 8/1BN1k3/6P1/1P6/8/pb6/5B2/4K1R1 w - - +perft 1 32 +perft 2 443 +perft 3 14320 +perft 4 183212 +perft 5 5994989 +perft 6 74621685 + +id gentest-6172 +epd 8/1BNk2P1/8/1P6/8/pb6/4KB2/6R1 b - - +perft 1 14 +perft 2 542 +perft 3 6808 +perft 4 256959 +perft 5 3228897 +perft 6 120155987 + +id gentest-6173 +epd 6b1/2k3P1/8/1P6/4B3/p7/4KB2/6R1 w - - +perft 1 41 +perft 2 496 +perft 3 18254 +perft 4 232796 +perft 5 8291048 +perft 6 107309729 + +id gentest-6174 +epd 3k2b1/6P1/8/1P3B2/8/p7/4KB2/4R3 b - - +perft 1 11 +perft 2 355 +perft 3 3938 +perft 4 130386 +perft 5 1525058 +perft 6 50949775 + +id gentest-6175 +epd 6b1/5kP1/8/1P3B2/3B4/p7/4K3/4R3 w - - +perft 1 37 +perft 2 155 +perft 3 5643 +perft 4 51581 +perft 5 1786586 +perft 6 19083864 + +id gentest-6176 +epd 6b1/5kP1/8/1P3B2/3B4/8/p4K2/7R b - - +perft 1 7 +perft 2 298 +perft 3 3402 +perft 4 123478 +perft 5 1831780 +perft 6 63011235 + +id gentest-6177 +epd 6b1/4k1PR/8/1P3B2/3B4/8/5K2/n7 w - - +perft 1 35 +perft 2 439 +perft 3 15641 +perft 4 194368 +perft 5 6922380 +perft 6 91424112 + +id gentest-6178 +epd 6b1/5kPR/8/1P2BB2/8/8/5K2/n7 b - - +perft 1 5 +perft 2 180 +perft 3 1790 +perft 4 62411 +perft 5 693571 +perft 6 23557995 + +id gentest-6179 +epd 6b1/5kPR/8/1P2B3/8/3B4/5K2/n7 w - - +perft 1 35 +perft 2 207 +perft 3 6940 +perft 4 74460 +perft 5 2481884 +perft 6 29615743 + +id gentest-6180 +epd 6bR/6P1/4k3/1P6/5B2/3B4/5K2/n7 b - - +perft 1 9 +perft 2 344 +perft 3 3817 +perft 4 142753 +perft 5 1747814 +perft 6 63895894 + +id gentest-6181 +epd 6bR/8/4k3/1P6/5B2/3B4/5K2/n7 w - - +perft 1 37 +perft 2 321 +perft 3 11323 +perft 4 127721 +perft 5 4399831 +perft 6 54491183 + +id gentest-6182 +epd 8/5b2/4k3/1P6/8/3B2BR/5K2/n7 b - - +perft 1 10 +perft 2 301 +perft 3 3794 +perft 4 118252 +perft 5 1577390 +perft 6 50125467 + +id gentest-6183 +epd 8/8/4k3/1P6/8/6BR/5K2/nb6 w - - +perft 1 22 +perft 2 316 +perft 3 8132 +perft 4 117713 +perft 5 3053453 +perft 6 45175291 + +id gentest-6184 +epd 1B6/8/4k3/1P6/8/1n2R3/5K2/1b6 b - - +perft 1 6 +perft 2 162 +perft 3 2474 +perft 4 64100 +perft 5 1015228 +perft 6 25596706 + +id gentest-6185 +epd 1B6/5k2/8/1Pn5/8/8/5K2/1b2R3 w - - +perft 1 28 +perft 2 554 +perft 3 13818 +perft 4 259346 +perft 5 6492104 +perft 6 118309573 + +id gentest-6186 +epd 8/4k3/8/1Pn5/5B2/8/5K2/1b6 b - - +perft 1 22 +perft 2 411 +perft 3 8195 +perft 4 134137 +perft 5 2615660 +perft 6 40335582 + +id gentest-6187 +epd 4k3/8/8/1Pn5/8/6B1/5K2/1b6 w - - +perft 1 15 +perft 2 295 +perft 3 4629 +perft 4 87871 +perft 5 1329037 +perft 6 25078540 + +id gentest-6188 +epd 3k4/8/8/1Pn5/7B/8/4K3/1b6 b - - +perft 1 4 +perft 2 60 +perft 3 1122 +perft 4 15630 +perft 5 285452 +perft 6 3949722 + +id gentest-6189 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-6190 +epd rnbqkbnr/p1pppppp/1p6/8/8/4P3/PPPPBPPP/RNBQK1NR b KQkq - +perft 1 21 +perft 2 587 +perft 3 13353 +perft 4 383626 +perft 5 9478984 +perft 6 280327824 + +id gentest-6191 +epd rnbqkbnr/p1pppp2/1p4p1/7p/8/2P1P3/PP1PBPPP/RNBQK1NR w KQkq - +perft 1 29 +perft 2 662 +perft 3 20252 +perft 4 498704 +perft 5 15785475 +perft 6 417076322 + +id gentest-6192 +epd rnbqkb1r/pBpppp2/1p3np1/7p/8/2P1P3/PP1P1PPP/RNBQK1NR b KQkq - +perft 1 24 +perft 2 794 +perft 3 20369 +perft 4 678214 +perft 5 18408249 +perft 6 616473108 + +id gentest-6193 +epd rnbqkb1r/1Bpppp2/pp4p1/7p/6n1/2P1P3/PP1P1PPP/RNBQ1KNR w kq - +perft 1 33 +perft 2 847 +perft 3 25916 +perft 4 688509 +perft 5 21452953 +perft 6 597400095 + +id gentest-6194 +epd Bnbqk2r/2ppppb1/pp4p1/7p/P5n1/2P1P3/1P1P1PPP/RNBQ1KNR b k - +perft 1 32 +perft 2 934 +perft 3 28736 +perft 4 861813 +perft 5 26216062 +perft 6 807853209 + +id gentest-6195 +epd Bnbqk2r/2pppp2/pp4p1/7p/P2b2Q1/2P1P3/1P1P1PPP/RNB2KNR w k - +perft 1 41 +perft 2 1046 +perft 3 41002 +perft 4 1047685 +perft 5 39977958 +perft 6 1038131217 + +id gentest-6196 +epd Bnbqk2r/2pppp2/pp4p1/7p/PP4Q1/2b1P1P1/3P1P1P/RNB2KNR b k - +perft 1 29 +perft 2 1201 +perft 3 33487 +perft 4 1317528 +perft 5 36521644 +perft 6 1400498960 + +id gentest-6197 +epd Bnbqk3/2pppp1r/pp3bp1/7p/PP4Q1/B3P1P1/3P1P1P/RN3KNR w - - +perft 1 40 +perft 2 990 +perft 3 37850 +perft 4 943860 +perft 5 35495800 +perft 6 906741778 + +id gentest-6198 +epd Bnbqk3/2pppp1r/pp4p1/7p/PP4Q1/B1b1P1PP/3PKP2/RN4NR b - - +perft 1 28 +perft 2 1022 +perft 3 27294 +perft 4 988395 +perft 5 26364933 +perft 6 953319366 + +id gentest-6199 +epd Bnbqk3/2pppp1r/p5p1/1p2b2p/PP5Q/B3P1PP/3PKP2/RN4NR w - - +perft 1 34 +perft 2 852 +perft 3 29340 +perft 4 741580 +perft 5 25941450 +perft 6 671691077 + +id gentest-6200 +epd Bnbqk3/3ppp1r/p4Qp1/1pp1b2p/PP6/B3P1PP/3PKP2/RN4NR b - - +perft 1 28 +perft 2 1164 +perft 3 31138 +perft 4 1228771 +perft 5 34022357 +perft 6 1307417861 + +id gentest-6201 +epd Bnbqk3/3ppp1r/5Qp1/ppp4p/PP1b4/B3P1PP/3P1P2/RN1K2NR w - - +perft 1 44 +perft 2 1125 +perft 3 46441 +perft 4 1264471 +perft 5 50499529 +perft 6 1436886814 + +id gentest-6202 +epd 1nbqk2b/3ppp1r/6p1/ppp4p/PP2B3/B3P1PP/3P1P2/RN1K2NR b - - +perft 1 28 +perft 2 830 +perft 3 24268 +perft 4 711025 +perft 5 21574638 +perft 6 634060306 + +id gentest-6203 +epd 1nbq1k1b/3ppp1r/6p1/1pp4p/Pp2BP2/B3P1PP/3P4/RN1K2NR w - - +perft 1 29 +perft 2 917 +perft 3 26541 +perft 4 848306 +perft 5 24866014 +perft 6 805606676 + +id gentest-6204 +epd 1nbq1k2/3ppp1r/6p1/1pp4p/Pp3P2/B2PP1PP/1b4B1/RN1K2NR b - - +perft 1 35 +perft 2 916 +perft 3 31428 +perft 4 854386 +perft 5 29175123 +perft 6 821759882 + +id gentest-6205 +epd 1nbq1k2/3ppp1r/6p1/1pp1b2p/P4PP1/Bp1PP2P/6B1/RN1K2NR w - - +perft 1 30 +perft 2 1058 +perft 3 31709 +perft 4 1099933 +perft 5 33351902 +perft 6 1153581958 + +id gentest-6206 +epd 1nbq4/3pppkr/6p1/1ppBb2p/P4PPP/Bp1PP3/8/RN1K2NR b - - +perft 1 36 +perft 2 1204 +perft 3 41906 +perft 4 1381919 +perft 5 47336501 +perft 6 1564309444 + +id gentest-6207 +epd 1nb4k/2qppp1r/6p1/1PpBb2p/5PPP/Bp1PP3/8/RN1K2NR w - - +perft 1 33 +perft 2 1016 +perft 3 33636 +perft 4 1068730 +perft 5 35919461 +perft 6 1167022171 + +id gentest-6208 +epd 1nb4k/3ppp1r/6p1/qPp1b2p/5PPP/Bp1PP3/R5B1/1N1K2NR b - - +perft 1 40 +perft 2 1283 +perft 3 48419 +perft 4 1563353 +perft 5 57193203 +perft 6 1858070997 + +id gentest-6209 +epd 1nb4k/3pp1r1/5pp1/qPp1b2p/5PPP/Bp1PP3/R3K1B1/1N4NR w - - +perft 1 33 +perft 2 1231 +perft 3 38863 +perft 4 1385214 +perft 5 44466026 +perft 6 1555159559 + +id gentest-6210 +epd 1nb4k/3pp1r1/5pp1/1Pp1b2p/5PPP/BpqPPN2/2R1K1B1/1N5R b - - +perft 1 32 +perft 2 1057 +perft 3 34732 +perft 4 1160792 +perft 5 38694621 +perft 6 1293807512 + +id gentest-6211 +epd 1nb4k/3pp1r1/5pp1/1Pp4p/5PPP/BpbqPN2/2R2KB1/1N5R w - - +perft 1 35 +perft 2 1372 +perft 3 42334 +perft 4 1616096 +perft 5 50828680 +perft 6 1899227624 + +id gentest-6212 +epd 1nb4k/4p1r1/5pp1/1Ppp3p/5PPP/BpbqP3/5KBN/1NR4R b - - +perft 1 42 +perft 2 1131 +perft 3 45554 +perft 4 1226731 +perft 5 47881759 +perft 6 1319876547 + +id gentest-6213 +epd 1nb4k/4p1r1/5pp1/1Ppp3p/5PPP/Bp2P1K1/3bq1BN/1NR4R w - - +perft 1 30 +perft 2 1165 +perft 3 28714 +perft 4 1111938 +perft 5 28380576 +perft 6 1090091844 + +id gentest-6214 +epd 1nb4k/4p1r1/5pp1/1PBp3p/2p2PPP/1p2P1K1/3bq1BN/1NR2R2 b - - +perft 1 37 +perft 2 1012 +perft 3 37737 +perft 4 1041440 +perft 5 39059061 +perft 6 1092881681 + +id gentest-6215 +epd 1n5k/1b2p1r1/1B4p1/1P1p1p1p/2p2PPP/1p2P1K1/3bq1BN/1NR2R2 w - - +perft 1 31 +perft 2 1074 +perft 3 27623 +perft 4 973657 +perft 5 25706709 +perft 6 918878902 + +id gentest-6216 +epd 1n5k/1b2p1r1/1B4p1/1P1p1p1p/2p2PPP/1p2P3/3b2KN/1N2RR2 b - - +perft 1 26 +perft 2 677 +perft 3 17528 +perft 4 469013 +perft 5 12262113 +perft 6 339762673 + +id gentest-6217 +epd 1n5k/1b2pr2/1B4p1/1P1p1p2/2p2PpP/1p2P3/3b2KN/1N1R1R2 w - - +perft 1 25 +perft 2 643 +perft 3 16901 +perft 4 443735 +perft 5 12315379 +perft 6 329312991 + +id gentest-6218 +epd 1n5k/1b3r2/1B4p1/1P1ppp2/2p2PpP/1p2P3/3N3N/3R1R1K b - - +perft 1 24 +perft 2 608 +perft 3 14858 +perft 4 415729 +perft 5 10253647 +perft 6 303718206 + +id gentest-6219 +epd 1n6/1b3rk1/1B4p1/1P1ppp2/2p2PpP/1p2PN2/7N/3R1R1K w - - +perft 1 29 +perft 2 738 +perft 3 22015 +perft 4 557337 +perft 5 17100512 +perft 6 432614763 + +id gentest-6220 +epd 1n6/1b3rk1/6p1/1PBppp2/2p2PpP/4PN2/1p5N/4RR1K b - - +perft 1 28 +perft 2 747 +perft 3 20639 +perft 4 578358 +perft 5 16171024 +perft 6 472941805 + +id gentest-6221 +epd 1n6/Bb3r1k/6p1/1P2pp2/2pp1PpP/4PN2/1p5N/4RR1K w - - +perft 1 19 +perft 2 603 +perft 3 13173 +perft 4 410399 +perft 5 9993437 +perft 6 307704928 + +id gentest-6222 +epd 1n6/Bb3r1k/1P4p1/4pp2/2pp1PNP/4Pp2/1p6/4RR1K b - - +perft 1 30 +perft 2 579 +perft 3 16828 +perft 4 356801 +perft 5 10538458 +perft 6 238250794 + +id gentest-6223 +epd 1n6/Bb3r1k/1P4p1/4p3/2pp1PpP/4Pp2/8/1n2R1RK w - - +perft 1 16 +perft 2 501 +perft 3 9071 +perft 4 276548 +perft 5 5502277 +perft 6 164496944 + +id gentest-6224 +epd 1n6/Bb3r1k/1P4R1/4p3/2pp1P1P/4Pp2/3n4/4R2K b - - +perft 1 29 +perft 2 739 +perft 3 19677 +perft 4 483948 +perft 5 12891786 +perft 6 312830991 + +id gentest-6225 +epd 1n6/B6k/bP3rR1/4p3/2pp1P1P/4Pp2/3n4/4R1K1 w - - +perft 1 24 +perft 2 565 +perft 3 13444 +perft 4 321732 +perft 5 7808505 +perft 6 190859955 + +id gentest-6226 +epd 1n4R1/B4r1k/bP6/4p3/2pP1P1P/5p2/3n4/4R1K1 b - - +perft 1 26 +perft 2 730 +perft 3 17565 +perft 4 467772 +perft 5 11377140 +perft 6 293416946 + +id gentest-6227 +epd 1n4R1/B6k/bP6/4p3/2pP1P1P/5pr1/3n1K2/4R3 w - - +perft 1 31 +perft 2 640 +perft 3 16319 +perft 4 352129 +perft 5 8616058 +perft 6 192441168 + +id gentest-6228 +epd 1n4k1/BP6/b7/4pP2/2pP3P/5pr1/3n1K2/4R3 b - - +perft 1 23 +perft 2 426 +perft 3 10051 +perft 4 185803 +perft 5 4470292 +perft 6 84965389 + +id gentest-6229 +epd 1n3k2/BP6/b7/4pP2/2pP3P/1n3pr1/5K2/7R w - - +perft 1 20 +perft 2 488 +perft 3 8964 +perft 4 219378 +perft 5 4105702 +perft 6 101166671 + +id gentest-6230 +epd 1n3k2/BP6/b7/2n1pP2/2pP3P/5pr1/5K2/6R1 b - - +perft 1 27 +perft 2 524 +perft 3 13114 +perft 4 250786 +perft 5 6213667 +perft 6 121202700 + +id gentest-6231 +epd 1n6/BP3k2/b7/2n1PP2/2p4P/5pr1/5K2/6R1 w - - +perft 1 19 +perft 2 432 +perft 3 7831 +perft 4 178853 +perft 5 3503474 +perft 6 81445520 + +id gentest-6232 +epd 1n6/BP1n1k2/b7/4PP2/2p4P/4Kpr1/8/7R b - - +perft 1 23 +perft 2 461 +perft 3 10962 +perft 4 225721 +perft 5 5549667 +perft 6 116980038 + +id gentest-6233 +epd 1n6/1P4k1/bB6/4nP2/2p4P/4Kpr1/8/7R w - - +perft 1 22 +perft 2 523 +perft 3 10961 +perft 4 266973 +perft 5 5701775 +perft 6 142356610 + +id gentest-6234 +epd 1n6/1P4k1/bB6/4nPr1/2p4P/4Kp2/8/5R2 b - - +perft 1 26 +perft 2 571 +perft 3 14308 +perft 4 316621 +perft 5 8018182 +perft 6 179333859 + +id gentest-6235 +epd 1n6/1P4k1/bB6/4nPr1/2p4P/4Kp2/8/R7 w - - +perft 1 26 +perft 2 637 +perft 3 15089 +perft 4 371457 +perft 5 8594293 +perft 6 215345013 + +id gentest-6236 +epd 8/1P1n2k1/RB6/4nPr1/2pK3P/5p2/8/8 b - - +perft 1 26 +perft 2 553 +perft 3 13508 +perft 4 325181 +perft 5 7822348 +perft 6 195343825 + +id gentest-6237 +epd 8/1P1n2k1/1B6/4nP2/2pK3P/R4p2/8/6r1 w - - +perft 1 27 +perft 2 804 +perft 3 19377 +perft 4 544763 +perft 5 13305953 +perft 6 356093287 + +id gentest-6238 +epd 1B6/B2n1k2/8/4nP2/2pK3P/R4p2/8/6r1 b - - +perft 1 31 +perft 2 609 +perft 3 17529 +perft 4 370210 +perft 5 10137385 +perft 6 229717850 + +id gentest-6239 +epd 1B6/B2n1k2/8/5P1P/2pK4/R2n1p2/8/7r w - - +perft 1 23 +perft 2 739 +perft 3 17589 +perft 4 514325 +perft 5 12537579 +perft 6 345094240 + +id gentest-6240 +epd 1B6/3n1k2/8/5P1P/2K2n2/R3Bp2/8/7r b - - +perft 1 32 +perft 2 951 +perft 3 27525 +perft 4 808397 +perft 5 21856385 +perft 6 635125521 + +id gentest-6241 +epd 1B6/3n1k2/r7/5P1P/2K2n2/4Bp2/8/8 w - - +perft 1 21 +perft 2 694 +perft 3 13619 +perft 4 400761 +perft 5 7900947 +perft 6 217328371 + +id gentest-6242 +epd 1B6/3n1k2/1r6/5P1P/2KB1n2/5p2/8/8 b - - +perft 1 32 +perft 2 638 +perft 3 18677 +perft 4 351957 +perft 5 9676815 +perft 6 182642936 + +id gentest-6243 +epd 1B6/8/1r3k2/4nP1P/3B1n2/2K2p2/8/8 w - - +perft 1 13 +perft 2 302 +perft 3 4628 +perft 4 114794 +perft 5 1911467 +perft 6 47674900 + +id gentest-6244 +epd 1B6/8/5k2/2B1nP1P/5n2/5p2/2K5/1r6 b - - +perft 1 34 +perft 2 632 +perft 3 17878 +perft 4 307914 +perft 5 8235576 +perft 6 143957133 + +id gentest-6245 +epd 1B6/5n2/5k2/5P1P/5n2/5p2/1rK5/6B1 w - - +perft 1 4 +perft 2 118 +perft 3 1806 +perft 4 45083 +perft 5 746842 +perft 6 17838372 + +id gentest-6246 +epd 1B6/5n2/5k2/5P1n/2K5/5p2/1r6/6B1 b - - +perft 1 28 +perft 2 471 +perft 3 11692 +perft 4 201461 +perft 5 4884744 +perft 6 85289915 + +id gentest-6247 +epd 1B6/5n2/4nk2/2B2P2/2K5/5p2/1r6/8 w - - +perft 1 22 +perft 2 608 +perft 3 11051 +perft 4 285507 +perft 5 5161732 +perft 6 127997648 + +id gentest-6248 +epd 1B6/4Bnk1/4n3/5P2/8/2K2p2/1r6/8 b - - +perft 1 32 +perft 2 616 +perft 3 15621 +perft 4 291861 +perft 5 7261814 +perft 6 135167709 + +id gentest-6249 +epd 1B6/5n1k/4n3/5P2/7B/2K2p2/7r/8 w - - +perft 1 20 +perft 2 565 +perft 3 10946 +perft 4 284613 +perft 5 5454453 +perft 6 135867338 + +id gentest-6250 +epd 5n2/5n1k/8/5P2/5B1B/2K2p2/7r/8 b - - +perft 1 23 +perft 2 522 +perft 3 12013 +perft 4 247912 +perft 5 5737518 +perft 6 114550001 + +id gentest-6251 +epd 8/3n1n1k/8/5P2/7B/2K2p2/3B4/8 w - - +perft 1 21 +perft 2 334 +perft 3 6955 +perft 4 104429 +perft 5 2137005 +perft 6 32454709 + +id gentest-6252 +epd 7k/3n1n2/7B/5P2/7B/2K2p2/8/8 b - - +perft 1 14 +perft 2 296 +perft 3 4036 +perft 4 79511 +perft 5 1148316 +perft 6 22192454 + +id gentest-6253 +epd 6k1/5n2/5B1B/5P2/8/2K2p2/8/8 w - - +perft 1 23 +perft 2 195 +perft 3 4151 +perft 4 36984 +perft 5 781200 +perft 6 7821714 + +id gentest-6254 +epd 3n1Bk1/8/5B2/5P2/3K4/5p2/8/8 b - - +perft 1 8 +perft 2 138 +perft 3 1162 +perft 4 22177 +perft 5 218276 +perft 6 4137446 + +id gentest-6255 +epd 5k2/8/4nB2/5P2/8/2K2p2/8/8 w - - +perft 1 16 +perft 2 163 +perft 3 2663 +perft 4 29182 +perft 5 458726 +perft 6 5144008 + +id gentest-6256 +epd 6k1/8/4P3/8/7B/2K2p2/8/8 b - - +perft 1 5 +perft 2 79 +perft 3 442 +perft 4 6972 +perft 5 48272 +perft 6 736540 + +id gentest-6257 +epd 7k/8/4P3/8/7B/5p2/3K4/8 w - - +perft 1 15 +perft 2 57 +perft 3 825 +perft 4 4785 +perft 5 70858 +perft 6 471209 + +id gentest-6258 +epd 8/6k1/4P3/8/8/4Kp2/8/4B3 b - - +perft 1 8 +perft 2 119 +perft 3 747 +perft 4 10353 +perft 5 76331 +perft 6 1078862 + +id gentest-6259 +epd 8/7k/4P3/8/4K3/5p2/8/4B3 w - - +perft 1 16 +perft 2 90 +perft 3 1454 +perft 4 8774 +perft 5 137617 +perft 6 978282 + +id gentest-6260 +epd 6k1/8/4P3/8/4K3/5p2/8/4B3 b - - +perft 1 5 +perft 2 78 +perft 3 482 +perft 4 7240 +perft 5 52138 +perft 6 745340 + +id gentest-6261 +epd 8/8/4P2k/8/4K3/5pB1/8/8 w - - +perft 1 18 +perft 2 99 +perft 3 1640 +perft 4 10460 +perft 5 172130 +perft 6 1182236 + +id gentest-6262 +epd 8/8/4P1k1/4K3/7B/5p2/8/8 b - - +perft 1 5 +perft 2 71 +perft 3 411 +perft 4 5834 +perft 5 39747 +perft 6 563965 + +id gentest-6263 +epd 8/8/4P1k1/4K1B1/8/8/8/5q2 w - - +perft 1 14 +perft 2 340 +perft 3 3519 +perft 4 83383 +perft 5 867305 +perft 6 20326065 + +id gentest-6264 +epd 8/8/3KP1k1/8/5B2/8/8/2q5 b - - +perft 1 24 +perft 2 258 +perft 3 6208 +perft 4 72297 +perft 5 1745583 +perft 6 20810185 + +id gentest-6265 +epd 8/8/4P1k1/3K4/5B2/4q3/8/8 w - - +perft 1 13 +perft 2 342 +perft 3 3688 +perft 4 90899 +perft 5 1040062 +perft 6 25212510 + +id gentest-6266 +epd 4Q3/q7/6k1/3K4/5B2/8/8/8 b - - +perft 1 5 +perft 2 155 +perft 3 2599 +perft 4 60803 +perft 5 1109181 +perft 6 25377347 + +id gentest-6267 +epd 4Q3/8/5k2/3K4/8/6B1/8/6q1 w - - +perft 1 34 +perft 2 501 +perft 3 12666 +perft 4 214710 +perft 5 5133527 +perft 6 94367272 + +id gentest-6268 +epd 8/5k2/8/3K4/3Q4/6B1/8/6q1 b - - +perft 1 18 +perft 2 541 +perft 3 10628 +perft 4 277055 +perft 5 5584564 +perft 6 136981810 + +id gentest-6269 +epd 8/5k2/8/3K4/4q3/6B1/8/6Q1 w - - +perft 1 3 +perft 2 76 +perft 3 1519 +perft 4 31874 +perft 5 717764 +perft 6 15054308 + +id gentest-6270 +epd 8/5k2/2K5/8/1q6/6B1/8/6Q1 b - - +perft 1 31 +perft 2 650 +perft 3 15274 +perft 4 350775 +perft 5 7679346 +perft 6 182753187 + +id gentest-6271 +epd 8/4k3/8/1K6/4q3/6B1/8/6Q1 w - - +perft 1 28 +perft 2 730 +perft 3 16513 +perft 4 387362 +perft 5 9348042 +perft 6 201384840 + +id gentest-6272 +epd 8/5k2/8/1K6/4qB2/8/8/6Q1 b - - +perft 1 30 +perft 2 699 +perft 3 16936 +perft 4 417976 +perft 5 9336652 +perft 6 235857208 + +id gentest-6273 +epd 8/5k2/4q3/8/2K2B2/8/8/6Q1 w - - +perft 1 6 +perft 2 162 +perft 3 3947 +perft 4 94418 +perft 5 2334614 +perft 6 51318676 + +id gentest-6274 +epd 4k1Q1/8/4q3/8/5B2/2K5/8/8 b - - +perft 1 3 +perft 2 85 +perft 3 1682 +perft 4 37238 +perft 5 753483 +perft 6 17178735 + +id gentest-6275 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-6276 +epd rnbqkbnr/1ppppppp/p7/8/8/N6N/PPPPPPPP/R1BQKB1R b KQkq - +perft 1 19 +perft 2 380 +perft 3 8143 +perft 4 183425 +perft 5 4373890 +perft 6 109269510 + +id gentest-6277 +epd rn1qkbnr/1bpppppp/pp6/8/8/N4P1N/PPPPP1PP/R1BQKB1R w KQkq - +perft 1 21 +perft 2 503 +perft 3 11627 +perft 4 288594 +perft 5 7246553 +perft 6 189449032 + +id gentest-6278 +epd 1n1qkbnr/rbpppppp/pp6/8/8/5P2/PPPPP1PP/RNBQKBNR b KQk - +perft 1 25 +perft 2 477 +perft 3 12393 +perft 4 264026 +perft 5 7199884 +perft 6 168330788 + +id gentest-6279 +epd 1n1qkbnr/rbpp1p1p/pp6/4p1p1/8/5P1P/PPPPP1P1/RNBQKBNR w KQk - +perft 1 18 +perft 2 613 +perft 3 12387 +perft 4 410945 +perft 5 9210148 +perft 6 303222533 + +id gentest-6280 +epd 1n1qkbnr/r1pp1p1p/pp6/4p1p1/4b3/5PPP/PPPP4/RNBQKBNR b KQk - +perft 1 37 +perft 2 905 +perft 3 32153 +perft 4 810205 +perft 5 28232983 +perft 6 748729213 + +id gentest-6281 +epd rn1qkbnr/2p2p1p/pp1p4/4p1p1/4b3/1P3PPP/P1PP4/RNBQKBNR w KQk - +perft 1 26 +perft 2 830 +perft 3 21925 +perft 4 710209 +perft 5 19554261 +perft 6 642351861 + +id gentest-6282 +epd r2qkbnr/2p2p1p/ppnp4/4p1p1/1P2b2P/5PP1/P1PP4/RNBQKBNR b KQk - +perft 1 37 +perft 2 1093 +perft 3 40014 +perft 4 1182471 +perft 5 43134738 +perft 6 1305291986 + +id gentest-6283 +epd r2qkbnr/2p2p1p/p1np4/1p2p3/1P2b2p/5PP1/P1PPK3/RNBQ1BNR w k - +perft 1 24 +perft 2 882 +perft 3 21589 +perft 4 788530 +perft 5 20740744 +perft 6 758096288 + +id gentest-6284 +epd r2qkbnr/2p2p2/p1np3p/1p2p3/1P2b2p/5PPB/P1PPK2R/RNBQ2N1 b k - +perft 1 34 +perft 2 932 +perft 3 31085 +perft 4 877025 +perft 5 29720192 +perft 6 867358010 + +id gentest-6285 +epd 3qkbnr/r1p2p2/p1np3p/1p2p3/1P5p/P4PPB/2bPK2R/RNBQ2N1 w k - +perft 1 26 +perft 2 897 +perft 3 23484 +perft 4 797343 +perft 5 22397666 +perft 6 758906823 + +id gentest-6286 +epd 3qkbnr/r1p5/p1np1p1p/1p2p3/1P5p/P4PP1/2bPK1BR/RNB2QN1 b k - +perft 1 35 +perft 2 694 +perft 3 23931 +perft 4 550391 +perft 5 18914692 +perft 6 483177402 + +id gentest-6287 +epd 3qkbnr/1rp4b/p1np1p1p/1p2p3/1P5p/P1N2PP1/3PK1BR/R1B2QN1 w k - +perft 1 29 +perft 2 946 +perft 3 27124 +perft 4 876111 +perft 5 26412955 +perft 6 858095401 + +id gentest-6288 +epd 1q2kbnr/1rp4b/p1np1p1p/1p2p3/1P5p/P1N2PP1/3P1KB1/R1B2QNR b k - +perft 1 32 +perft 2 963 +perft 3 30774 +perft 4 935322 +perft 5 29921496 +perft 6 945226042 + +id gentest-6289 +epd 1q2kbnr/1rp4b/p2p3p/nN2pp2/1P5p/P4PP1/3P1KB1/R1B2QNR w k - +perft 1 29 +perft 2 758 +perft 3 22435 +perft 4 637884 +perft 5 20038269 +perft 6 603838549 + +id gentest-6290 +epd 3qkbnr/1rp4b/p2p3p/PN2pp2/3P3p/P4PP1/5KB1/R1B2QNR b k - +perft 1 29 +perft 2 887 +perft 3 25302 +perft 4 831958 +perft 5 24673551 +perft 6 849025094 + +id gentest-6291 +epd 3qkb1r/1rp1n2b/p2p3p/PN2pp2/3P4/P4Pp1/6B1/R1B1KQNR w k - +perft 1 31 +perft 2 795 +perft 3 26451 +perft 4 734297 +perft 5 25602778 +perft 6 753465554 + +id gentest-6292 +epd 3qkb1r/2p1n2b/p2p3p/Pr2pp2/3P1P2/P5p1/6BR/R1B1KQN1 b k - +perft 1 33 +perft 2 1100 +perft 3 35182 +perft 4 1264449 +perft 5 41361764 +perft 6 1523326391 + +id gentest-6293 +epd 1r1qkb1r/2p4b/p2p3p/P2npp2/3P1P2/P4Qp1/6BR/R1B1K1N1 w k - +perft 1 35 +perft 2 1239 +perft 3 45519 +perft 4 1599925 +perft 5 59783885 +perft 6 2101316758 + +id gentest-6294 +epd 1r1qkb1r/7b/p2p3p/P1pnpp1R/3P1P2/P4Qp1/6B1/R1BK2N1 b k - +perft 1 39 +perft 2 1349 +perft 3 51136 +perft 4 1859239 +perft 5 68521879 +perft 6 2550055085 + +id gentest-6295 +epd 1r1q1b1r/2n2k1b/p2p3p/P1p1pp1R/3P1P2/P4Qp1/3K2B1/R1B3N1 w - - +perft 1 42 +perft 2 1521 +perft 3 61149 +perft 4 2137522 +perft 5 84317091 +perft 6 2900125477 + +id gentest-6296 +epd 1r1q1b1r/2n3kb/p2p3p/P1p1pp1R/3P1P2/PQK3p1/6B1/R1B3N1 b - - +perft 1 31 +perft 2 1289 +perft 3 39235 +perft 4 1583516 +perft 5 49467352 +perft 6 1947322385 + +id gentest-6297 +epd 1r1q1b1r/2n3k1/p2p2bp/P1p2p1R/3P1p2/P1K3p1/2Q3B1/R1B3N1 w - - +perft 1 43 +perft 2 1539 +perft 3 59390 +perft 4 2113395 +perft 5 81039211 +perft 6 2875343546 + +id gentest-6298 +epd 1r1qbb1r/1Bn3k1/p2p3p/P1p2p1R/3P1p2/P1K3p1/2QB4/R5N1 b - - +perft 1 33 +perft 2 1351 +perft 3 45140 +perft 4 1802873 +perft 5 61481036 +perft 6 2425801140 + +id gentest-6299 +epd 1r2bb1r/1Bn3k1/p2p2qp/P1p2p1R/3P1p2/P1K3p1/3B4/RQ4N1 w - - +perft 1 46 +perft 2 1515 +perft 3 61098 +perft 4 2091330 +perft 5 82568156 +perft 6 2892352878 + +id gentest-6300 +epd 1r2bb1r/1Bn3k1/p2p3R/P1p2p1q/3P1p2/PK4p1/3B4/RQ4N1 b - - +perft 1 38 +perft 2 1165 +perft 3 42121 +perft 4 1442131 +perft 5 51956083 +perft 6 1884482030 + +id gentest-6301 +epd 1r3b1R/1Bn3k1/p1bp4/P1p2p2/3P1p2/PK4p1/3B3q/RQ4N1 w - - +perft 1 36 +perft 2 1409 +perft 3 47375 +perft 4 1744519 +perft 5 60885810 +perft 6 2172690393 + +id gentest-6302 +epd 1r3b1R/1Bn3k1/p2p4/P1p2p2/b1KP1p2/P5p1/3B3q/R2Q2N1 b - - +perft 1 38 +perft 2 1451 +perft 3 52011 +perft 4 1913912 +perft 5 68231194 +perft 6 2470312912 + +id gentest-6303 +epd 1r3b1R/1Bn5/p2p1k2/P1p2p2/3P1p2/Pb1K2p1/3B3q/R2Q2N1 w - - +perft 1 43 +perft 2 1820 +perft 3 68989 +perft 4 2737518 +perft 5 102602845 +perft 6 3898597088 + +id gentest-6304 +epd 1r3b2/1Bn5/p2p1k2/P1p2p1Q/3P1p2/P2K2p1/b2B3R/R5N1 b - - +perft 1 29 +perft 2 1267 +perft 3 32124 +perft 4 1371751 +perft 5 34991783 +perft 6 1464750728 + +id gentest-6305 +epd 1r3b2/1Bn5/p2pbk2/P1p2p1Q/3P4/P2K1pp1/3B4/R5NR w - - +perft 1 46 +perft 2 1121 +perft 3 47264 +perft 4 1185083 +perft 5 49393927 +perft 6 1265968142 + +id gentest-6306 +epd 1r3b2/8/p2pbk2/Pnp2Q2/3P4/P2K1Bp1/3B4/R5NR b - - +perft 1 4 +perft 2 153 +perft 3 3708 +perft 4 165350 +perft 5 4064185 +perft 6 179532526 + +id gentest-6307 +epd 1r1k1b2/8/p2pQ3/Pnp5/3P4/P2K1Bp1/3B4/R5NR w - - +perft 1 63 +perft 2 1002 +perft 3 54646 +perft 4 988773 +perft 5 50852692 +perft 6 983001864 + +id gentest-6308 +epd 1r1k1b2/n7/p2p2Q1/P1pP4/8/P2K1Bp1/3B4/R5NR b - - +perft 1 21 +perft 2 972 +perft 3 18370 +perft 4 838475 +perft 5 16058130 +perft 6 721737772 + +id gentest-6309 +epd r2k1b2/n7/p2p2Q1/P1pP4/8/P2KBB2/6p1/R5NR w - - +perft 1 52 +perft 2 773 +perft 3 36885 +perft 4 594436 +perft 5 27314779 +perft 6 486519320 + +id gentest-6310 +epd r2k4/n5b1/p2p2Q1/P1pP4/8/P2KBB1N/6pR/R7 b - - +perft 1 23 +perft 2 1133 +perft 3 24490 +perft 4 1173361 +perft 5 26175007 +perft 6 1221179493 + +id gentest-6311 +epd r7/n3k3/p2p4/P1pP1Q2/8/P2KBB1N/1b4pR/R7 w - - +perft 1 49 +perft 2 1041 +perft 3 49280 +perft 4 1065966 +perft 5 49793049 +perft 6 1107271428 + +id gentest-6312 +epd r7/n3k1b1/p2p4/P1pP1Q2/8/P2KBB1N/6pR/R7 b - - +perft 1 26 +perft 2 1245 +perft 3 27305 +perft 4 1296203 +perft 5 28971358 +perft 6 1349277052 + +id gentest-6313 +epd r3k3/n6Q/p2p4/P1pP4/8/P2KBB1N/6pR/b7 w - - +perft 1 42 +perft 2 666 +perft 3 27388 +perft 4 495293 +perft 5 20102634 +perft 6 394609718 + +id gentest-6314 +epd r3k3/n6Q/p2p4/P1pP4/8/P2K3N/3BB2R/b5q1 b - - +perft 1 33 +perft 2 1045 +perft 3 26720 +perft 4 877799 +perft 5 22791955 +perft 6 765249407 + +id gentest-6315 +epd r3k3/n5bQ/p2p4/P1pP4/2K5/P6N/3BB2R/1q6 w - - +perft 1 34 +perft 2 1097 +perft 3 33036 +perft 4 943507 +perft 5 30206426 +perft 6 827486835 + +id gentest-6316 +epd r7/n3k1b1/p2p4/P1pP4/2K5/P6N/3BB2R/6Q1 b - - +perft 1 25 +perft 2 1011 +perft 3 21649 +perft 4 829009 +perft 5 17352916 +perft 6 659325759 + +id gentest-6317 +epd 4r3/n2k2b1/p2p4/P1pP4/2K5/P3Q2N/3BB2R/8 w - - +perft 1 37 +perft 2 914 +perft 3 33878 +perft 4 783287 +perft 5 29500916 +perft 6 663115309 + +id gentest-6318 +epd 4r3/n2k4/p2p4/P1pP2Q1/2K5/P1b4N/3B3R/3B4 b - - +perft 1 29 +perft 2 1111 +perft 3 25237 +perft 4 992656 +perft 5 21797271 +perft 6 861719226 + +id gentest-6319 +epd 8/n2k4/p2p4/P1pP2Q1/8/P1bK3N/3Br2R/3B4 w - - +perft 1 38 +perft 2 871 +perft 3 31268 +perft 4 684193 +perft 5 25054554 +perft 6 539304247 + +id gentest-6320 +epd 8/n2k4/p2p1Q2/P1pP4/8/P2K3N/2BBr2R/b7 b - - +perft 1 23 +perft 2 863 +perft 3 17292 +perft 4 620760 +perft 5 12884978 +perft 6 460191711 + +id gentest-6321 +epd 8/n2k4/p2p4/P2P2Q1/2pb4/P2K3N/2BBr2R/8 w - - +perft 1 3 +perft 2 66 +perft 3 2668 +perft 4 49239 +perft 5 1992504 +perft 6 37861627 + +id gentest-6322 +epd 8/n2k4/p2p4/P2Pb1Q1/2p5/P3K2N/2BB3R/8 b - - +perft 1 17 +perft 2 626 +perft 3 8723 +perft 4 333713 +perft 5 4695192 +perft 6 182987428 + +id gentest-6323 +epd 5k2/n7/p2p4/P2Pb1Q1/2p5/P3K2N/2B4R/4B3 w - - +perft 1 45 +perft 2 598 +perft 3 23807 +perft 4 306192 +perft 5 12163995 +perft 6 158709034 + +id gentest-6324 +epd 5k2/n6B/p2p4/P2P4/2p4Q/P3K2N/1b5R/4B3 b - - +perft 1 16 +perft 2 621 +perft 3 8217 +perft 4 320922 +perft 5 4254441 +perft 6 166616016 + +id gentest-6325 +epd 5k2/2n4B/p2p4/P2P4/P1p4Q/4K2N/1b5R/4B3 w - - +perft 1 42 +perft 2 632 +perft 3 23168 +perft 4 329598 +perft 5 12310325 +perft 6 170878970 + +id gentest-6326 +epd 5k2/2n4B/p2p4/P2P4/P1p4Q/b3K1B1/5N1R/8 b - - +perft 1 13 +perft 2 383 +perft 3 4450 +perft 4 145583 +perft 5 1775551 +perft 6 61890500 + +id gentest-6327 +epd 4n3/5k2/p2p4/P2P4/P1p4Q/b2BK1B1/5N1R/8 w - - +perft 1 40 +perft 2 423 +perft 3 14854 +perft 4 170671 +perft 5 6092745 +perft 6 73171550 + +id gentest-6328 +epd 4n3/5k2/p2p4/P2P2Q1/Pbp5/4K1B1/4BN1R/8 b - - +perft 1 11 +perft 2 385 +perft 3 4026 +perft 4 143676 +perft 5 1619088 +perft 6 58644528 + +id gentest-6329 +epd 8/5k2/p2p1n2/P1bP2Q1/P1p5/5KB1/4BN1R/8 w - - +perft 1 38 +perft 2 632 +perft 3 24836 +perft 4 378439 +perft 5 14904619 +perft 6 222046732 + +id gentest-6330 +epd 8/5k2/p2p1n2/P2P2Q1/P1p5/2N2KB1/4B2R/6b1 b - - +perft 1 18 +perft 2 741 +perft 3 10358 +perft 4 419910 +perft 5 5860712 +perft 6 238238301 + +id gentest-6331 +epd 8/b2n1k2/p2p4/P2P4/P1p4Q/2N2KB1/4B2R/8 w - - +perft 1 36 +perft 2 570 +perft 3 21103 +perft 4 299617 +perft 5 11643913 +perft 6 162587155 + +id gentest-6332 +epd 1n6/b4k2/p2p4/P2P4/P1p2B1Q/2N2K2/4B3/7R b - - +perft 1 13 +perft 2 579 +perft 3 7564 +perft 4 333171 +perft 5 4461640 +perft 6 194329314 + +id gentest-6333 +epd 8/5k2/p1np4/P2P4/P1p2B1Q/2N2K2/4Bb2/4R3 w - - +perft 1 44 +perft 2 856 +perft 3 34793 +perft 4 576514 +perft 5 23869951 +perft 6 365095753 + +id gentest-6334 +epd 3n4/5k2/p2p4/P2PB3/P1p4Q/2N2K2/4Bb2/4R3 b - - +perft 1 17 +perft 2 765 +perft 3 11252 +perft 4 478933 +perft 5 6941319 +perft 6 289895282 + +id gentest-6335 +epd 3n4/b4k2/p7/P2Pp3/P1p4Q/2N2K2/8/4RB2 w - - +perft 1 43 +perft 2 622 +perft 3 24323 +perft 4 360851 +perft 5 13596037 +perft 6 204652557 + +id gentest-6336 +epd Q7/b4k2/p3n3/P2Pp3/P1p5/2N2K2/8/4RB2 b - - +perft 1 20 +perft 2 619 +perft 3 10789 +perft 4 346320 +perft 5 5819642 +perft 6 192660918 + +id gentest-6337 +epd Q7/5k2/p2Pn3/P3p3/P1pb4/2N2K2/8/4RB2 w - - +perft 1 39 +perft 2 641 +perft 3 22113 +perft 4 376344 +perft 5 13017904 +perft 6 219230633 + +id gentest-6338 +epd Q7/5k2/p2Pn3/P3p3/P1p5/2N1bK2/8/3R1B2 b - - +perft 1 23 +perft 2 778 +perft 3 14203 +perft 4 492330 +perft 5 8611308 +perft 6 302056596 + +id gentest-6339 +epd Q7/3P4/p3k3/P1n1p3/P1p5/2N1bK2/8/3R1B2 w - - +perft 1 42 +perft 2 649 +perft 3 25674 +perft 4 410263 +perft 5 15952442 +perft 6 249676180 + +id gentest-6340 +epd 8/1Q1P4/p3k3/P3p3/n1p5/2N1bK2/8/3R1B2 b - - +perft 1 20 +perft 2 846 +perft 3 13324 +perft 4 549704 +perft 5 8381257 +perft 6 340064471 + +id gentest-6341 +epd 1Q6/3P4/p7/P3pk2/n1p5/2N2K2/8/2bR1B2 w - - +perft 1 45 +perft 2 630 +perft 3 26050 +perft 4 370785 +perft 5 15143320 +perft 6 218123401 + +id gentest-6342 +epd 1Q6/3P4/p5k1/P3p3/n1p5/2N2K2/4B3/2b4R b - - +perft 1 17 +perft 2 801 +perft 3 11985 +perft 4 535315 +perft 5 7929013 +perft 6 342406527 + +id gentest-6343 +epd 1Q6/3P4/p7/P3pk2/n1p5/2N1b3/4BK2/7R w - - +perft 1 6 +perft 2 112 +perft 3 5347 +perft 4 83710 +perft 5 3770466 +perft 6 57158203 + +id gentest-6344 +epd 1Q6/3P4/p4k2/P3p3/n1p3B1/2N1b3/8/5K1R b - - +perft 1 21 +perft 2 1001 +perft 3 15414 +perft 4 699030 +perft 5 10454319 +perft 6 461788864 + +id gentest-6345 +epd 8/3P1k2/pQ5b/P3p3/n1p3B1/2N5/8/5K1R w - - +perft 1 52 +perft 2 744 +perft 3 35556 +perft 4 508232 +perft 5 23313756 +perft 6 330841380 + +id gentest-6346 +epd 8/3Pk3/p6Q/P3p3/N1p3B1/8/8/5K1R b - - +perft 1 4 +perft 2 176 +perft 3 701 +perft 4 30206 +perft 5 135637 +perft 6 5757810 + +id gentest-6347 +epd 5k2/3P4/p7/P7/N1p1p1BQ/8/8/5K1R w - - +perft 1 36 +perft 2 154 +perft 3 5995 +perft 4 27122 +perft 5 1084461 +perft 6 5107176 + +id gentest-6348 +epd 8/3Pk3/p7/P7/N1p1p1B1/6Q1/7R/5K2 b - - +perft 1 6 +perft 2 295 +perft 3 1578 +perft 4 72366 +perft 5 385729 +perft 6 17035221 + +id gentest-6349 +epd 8/3P2k1/p7/P7/N1p1p1B1/8/5Q1R/5K2 w - - +perft 1 48 +perft 2 229 +perft 3 10633 +perft 4 52453 +perft 5 2311576 +perft 6 12107203 + +id gentest-6350 +epd 5k2/3P4/p7/P7/N1p1p1BQ/8/7R/4K3 b - - +perft 1 5 +perft 2 197 +perft 3 904 +perft 4 36785 +perft 5 166462 +perft 6 6846366 + +id gentest-6351 +epd 6k1/3P4/p7/P7/N3p1BQ/2p5/4R3/4K3 w - - +perft 1 38 +perft 2 165 +perft 3 6477 +perft 4 32322 +perft 5 1236271 +perft 6 6815294 + +id gentest-6352 +epd 6k1/3P4/p7/P7/N6Q/2p1p2B/2R5/4K3 b - - +perft 1 4 +perft 2 160 +perft 3 655 +perft 4 26425 +perft 5 112059 +perft 6 4463081 + +id gentest-6353 +epd 8/3P1k2/p6Q/P7/N7/2p4B/2R1p3/4K3 w - - +perft 1 39 +perft 2 114 +perft 3 4232 +perft 4 16787 +perft 5 611243 +perft 6 3183131 + +id gentest-6354 +epd 6k1/3P4/p7/PQ6/N7/2p4B/2R1p3/4K3 b - - +perft 1 6 +perft 2 217 +perft 3 1195 +perft 4 43303 +perft 5 252303 +perft 6 9183715 + +id gentest-6355 +epd 8/3P3k/p7/P2Q4/N7/2p4B/2R1p3/4K3 w - - +perft 1 45 +perft 2 187 +perft 3 7615 +perft 4 36793 +perft 5 1446289 +perft 6 8255900 + +id gentest-6356 +epd 8/3P4/p1R4k/P2Q4/N7/7B/4p3/4K3 b - - +perft 1 2 +perft 2 102 +perft 3 337 +perft 4 15628 +perft 5 56978 +perft 6 2477491 + +id gentest-6357 +epd 8/3P4/p4k2/P2Q4/N7/7B/4p3/4K3 w - - +perft 1 40 +perft 2 158 +perft 3 5489 +perft 4 28418 +perft 5 973097 +perft 6 5272499 + +id gentest-6358 +epd 4Q3/3P1k2/p7/P7/N7/7B/4p3/4K3 b - - +perft 1 2 +perft 2 64 +perft 3 229 +perft 4 7504 +perft 5 31876 +perft 6 1063511 + +id gentest-6359 +epd 3RQ3/7k/p7/P7/N7/7B/4p3/4K3 w - - +perft 1 39 +perft 2 87 +perft 3 3386 +perft 4 13589 +perft 5 545524 +perft 6 2810179 + +id gentest-6360 +epd R2Q4/8/p6k/P7/N7/7B/4p3/4K3 b - - +perft 1 4 +perft 2 148 +perft 3 523 +perft 4 19406 +perft 5 81559 +perft 6 3019611 + +id gentest-6361 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-6362 +epd rnbqkbnr/pp1ppppp/8/2p5/P7/R7/1PPPPPPP/1NBQKBNR b Kkq - +perft 1 22 +perft 2 590 +perft 3 14523 +perft 4 382134 +perft 5 10296014 +perft 6 279660335 + +id gentest-6363 +epd rnbqkb1r/pp1ppp1p/5np1/2p5/P3P3/R7/1PPP1PPP/1NBQKBNR w Kkq - +perft 1 37 +perft 2 919 +perft 3 32692 +perft 4 883810 +perft 5 31020731 +perft 6 897668046 + +id gentest-6364 +epd rnbqkb1r/pp1ppp1p/5n2/2p3p1/P3P3/6P1/RPPP1P1P/1NBQKBNR b Kkq - +perft 1 25 +perft 2 789 +perft 3 21212 +perft 4 664019 +perft 5 18975771 +perft 6 602004821 + +id gentest-6365 +epd rnbqkbnr/p2ppp1p/8/1pp3p1/P3P3/1P4P1/R1PP1P1P/1NBQKBNR w Kkq - +perft 1 34 +perft 2 839 +perft 3 28222 +perft 4 742298 +perft 5 25100662 +perft 6 702252361 + +id gentest-6366 +epd r1bqkbnr/p2ppp1p/2n5/1pp3p1/P1P1P3/1P4P1/R2PNP1P/1NBQKB1R b Kkq - +perft 1 29 +perft 2 800 +perft 3 24224 +perft 4 704753 +perft 5 22261366 +perft 6 682086577 + +id gentest-6367 +epd r1bqkbnr/p2pp3/2n2p1p/1pp3p1/P1P1P3/NP4P1/R2PNP1P/2BQKB1R w Kkq - +perft 1 27 +perft 2 696 +perft 3 20141 +perft 4 549910 +perft 5 16767170 +perft 6 482022499 + +id gentest-6368 +epd r1bqkbnr/p3p3/2n2p1p/1pppP1p1/P1P4P/NP4P1/R2PNP2/2BQKB1R b Kkq - +perft 1 35 +perft 2 1060 +perft 3 36563 +perft 4 1158956 +perft 5 39629499 +perft 6 1311334609 + +id gentest-6369 +epd r1b1kbnr/2q1p3/2n2p1p/ppppP1p1/P1P4P/NPN3P1/R2P1P2/2BQKB1R w Kkq - +perft 1 38 +perft 2 1460 +perft 3 54442 +perft 4 1996053 +perft 5 74979634 +perft 6 2665163605 + +id gentest-6370 +epd r1b1kbnr/2q1p3/5p1p/ppppP1p1/P1Pn3P/NPN2PP1/R2PQ3/2B1KB1R b Kkq - +perft 1 41 +perft 2 1436 +perft 3 56757 +perft 4 2010775 +perft 5 76722656 +perft 6 2761488752 + +id gentest-6371 +epd r1b2bnr/2q1pk2/5p1p/ppppP3/P1Pn2pP/NPNQ1PP1/R2P4/2B1KB1R w K - +perft 1 39 +perft 2 1370 +perft 3 49745 +perft 4 1707864 +perft 5 62491738 +perft 6 2109846027 + +id gentest-6372 +epd r1b2bnr/4pk2/3q1p1p/ppppP3/PPPn2pP/N1NQ1PP1/RB1P4/4KB1R b K - +perft 1 39 +perft 2 1440 +perft 3 50949 +perft 4 1912964 +perft 5 66573058 +perft 6 2524624646 + +id gentest-6373 +epd r4bnr/4pk2/4bp1p/ppppq3/PPPn2pP/N1NQ1PP1/R2P4/2B1KB1R w K - +perft 1 8 +perft 2 306 +perft 3 9658 +perft 4 356317 +perft 5 11838303 +perft 6 431109692 + +id gentest-6374 +epd r4bnr/4pk2/5p1p/ppppqb2/PPPnQ1pP/N1N2PP1/R2P2B1/2B1K2R b K - +perft 1 40 +perft 2 1290 +perft 3 50554 +perft 4 1727946 +perft 5 66509742 +perft 6 2351827500 + +id gentest-6375 +epd r4bnr/4pk2/3qnp1p/pppp1b1P/PPP1Q1p1/N1N2PP1/R2P2B1/2B1K2R w K - +perft 1 45 +perft 2 1626 +perft 3 68227 +perft 4 2427928 +perft 5 98427662 +perft 6 3465347152 + +id gentest-6376 +epd r2q1bnr/4pk2/4Qp1p/pppp1b1P/PPP3p1/N1N2PP1/2RP2B1/2B1K2R b K - +perft 1 4 +perft 2 164 +perft 3 4172 +perft 4 166383 +perft 5 4495291 +perft 6 175887407 + +id gentest-6377 +epd r2q1bnr/3Qp1k1/5p1p/pp1p1b1P/PpP3p1/N1N2PP1/2RP2B1/2B1K2R w K - +perft 1 45 +perft 2 1226 +perft 3 52202 +perft 4 1449310 +perft 5 59174712 +perft 6 1672372357 + +id gentest-6378 +epd r2q1bnr/3Qp1k1/5p1p/pp1P3P/Pp2b1p1/N1N2PP1/2RP2B1/2B2RK1 b - - +perft 1 26 +perft 2 975 +perft 3 25091 +perft 4 947122 +perft 5 25280339 +perft 6 963772288 + +id gentest-6379 +epd 1r1q1bn1/3Qp1kr/5p1p/pp1P3P/Pp2b1p1/2N2PP1/2RP2B1/1NB2RK1 w - - +perft 1 38 +perft 2 849 +perft 3 31308 +perft 4 773014 +perft 5 28932037 +perft 6 765037170 + +id gentest-6380 +epd 1r1q1bn1/4pk1r/5p1p/pp1P3P/Pp2Q3/2N2PP1/2RP2B1/1NB2RK1 b - - +perft 1 22 +perft 2 821 +perft 3 18628 +perft 4 700090 +perft 5 17469782 +perft 6 662678420 + +id gentest-6381 +epd 1r3bn1/4pk1r/5p1p/pp5P/Pp1Q4/2N2PP1/q1RP2B1/1NB2RK1 w - - +perft 1 41 +perft 2 1032 +perft 3 42347 +perft 4 1049583 +perft 5 42673027 +perft 6 1074326099 + +id gentest-6382 +epd 1r3bn1/4pk1r/3Q1p1p/pp5P/Pp6/2N2PP1/1R1P2B1/1NB2RK1 b - - +perft 1 18 +perft 2 720 +perft 3 11634 +perft 4 458486 +perft 5 7637981 +perft 6 300952873 + +id gentest-6383 +epd 1r3bn1/5k1r/3p1p1p/pp5P/P5P1/2p2P2/1R1P2B1/1NB2RK1 w - - +perft 1 21 +perft 2 446 +perft 3 10574 +perft 4 230677 +perft 5 5908173 +perft 6 131590584 + +id gentest-6384 +epd 1r3bn1/5k1r/5p1p/pp1p3P/P5P1/2p2P2/1R1P2B1/1NB2RK1 b - - +perft 1 26 +perft 2 521 +perft 3 13533 +perft 4 304058 +perft 5 7899917 +perft 6 191759894 + +id gentest-6385 +epd 5bn1/7r/1r2kp1p/pp1p3P/PR4P1/2p2P2/3P2B1/1NB2RK1 w - - +perft 1 25 +perft 2 700 +perft 3 17333 +perft 4 461038 +perft 5 11768666 +perft 6 309239719 + +id gentest-6386 +epd 5bn1/7r/2r1kp1p/pp1p3P/PR4P1/N1p2P2/3P2BK/2B2R2 b - - +perft 1 32 +perft 2 914 +perft 3 25944 +perft 4 722601 +perft 5 19911692 +perft 6 554202906 + +id gentest-6387 +epd 5bn1/5r2/2r1kp1p/pp5P/P2R2P1/N1p2P2/3P2BK/2B2R2 w - - +perft 1 30 +perft 2 767 +perft 3 22338 +perft 4 558841 +perft 5 16449853 +perft 6 414126454 + +id gentest-6388 +epd 5bn1/5r2/3rkp1p/pp5P/P5P1/N1p2P2/3P2BK/2B4R b - - +perft 1 28 +perft 2 549 +perft 3 15033 +perft 4 319106 +perft 5 8769646 +perft 6 196980635 + +id gentest-6389 +epd 6n1/4br2/1r2kp1p/pp5P/P5P1/N1pP1P2/6BK/2B4R w - - +perft 1 23 +perft 2 486 +perft 3 11620 +perft 4 272425 +perft 5 6779311 +perft 6 168934332 + +id gentest-6390 +epd 6n1/4br2/1r2kp1p/pp4BP/P5P1/N2P1P2/2p3BK/6R1 b - - +perft 1 27 +perft 2 681 +perft 3 19178 +perft 4 485309 +perft 5 14310682 +perft 6 360548726 + +id gentest-6391 +epd 6n1/5r2/r3kp1p/pNb3BP/P5P1/3P1P2/2p3BK/6R1 w - - +perft 1 28 +perft 2 892 +perft 3 23625 +perft 4 729621 +perft 5 19055801 +perft 6 588131596 + +id gentest-6392 +epd 6n1/5r2/r2k1p1p/p1b3BP/P5P1/3P1P2/2N3BK/6R1 b - - +perft 1 31 +perft 2 830 +perft 3 24235 +perft 4 631414 +perft 5 17893578 +perft 6 462311919 + +id gentest-6393 +epd 6n1/6r1/r2k1p1p/p6P/P5P1/3P1P2/2NB1bBK/6R1 w - - +perft 1 30 +perft 2 913 +perft 3 24522 +perft 4 705271 +perft 5 18507525 +perft 6 518292350 + +id gentest-6394 +epd 6n1/6r1/r4p1p/B1k4P/P5P1/3P1P2/2N2bBK/6R1 b - - +perft 1 28 +perft 2 723 +perft 3 18892 +perft 4 477975 +perft 5 12495040 +perft 6 317506026 + +id gentest-6395 +epd 6n1/r5r1/5p1p/B1k4P/P5P1/3P1P2/2N2b1K/6RB w - - +perft 1 27 +perft 2 686 +perft 3 16650 +perft 4 413729 +perft 5 10083015 +perft 6 256239243 + +id gentest-6396 +epd 6n1/5rr1/5p1p/2k3PP/P7/2BP1P2/2N2b1K/6RB b - - +perft 1 23 +perft 2 691 +perft 3 16414 +perft 4 462483 +perft 5 11647446 +perft 6 316870873 + +id gentest-6397 +epd 6n1/3r4/5p1p/2k3rP/P7/2BP1P2/2N2bBK/6R1 w - - +perft 1 30 +perft 2 898 +perft 3 22995 +perft 4 654491 +perft 5 16620741 +perft 6 463248149 + +id gentest-6398 +epd 3r2n1/8/2B2p1p/2k3rP/P4P2/2BP4/2N2b1K/6R1 b - - +perft 1 31 +perft 2 1107 +perft 3 30461 +perft 4 1007637 +perft 5 27189642 +perft 6 853081835 + +id gentest-6399 +epd 6n1/3r4/3k1p1p/1B4rP/P4P2/2BP4/2N2b1K/6R1 w - - +perft 1 36 +perft 2 1174 +perft 3 35650 +perft 4 1076675 +perft 5 31889633 +perft 6 918863294 + +id gentest-6400 +epd 6n1/3r4/3k1p1p/1B4rP/P4PR1/3Pb3/2NB3K/8 b - - +perft 1 32 +perft 2 858 +perft 3 25242 +perft 4 686721 +perft 5 19350000 +perft 6 531048091 + +id gentest-6401 +epd 6n1/1r6/3k1p1p/1B3PrP/P5R1/3P4/2NB1b1K/8 w - - +perft 1 34 +perft 2 951 +perft 3 27846 +perft 4 742335 +perft 5 21081172 +perft 6 549200480 + +id gentest-6402 +epd 8/1r1Bn3/3k1p1p/5PrP/P5R1/3P4/2NB1bK1/8 b - - +perft 1 36 +perft 2 1041 +perft 3 32615 +perft 4 957059 +perft 5 28610987 +perft 6 839371828 + +id gentest-6403 +epd 2n5/1r1B4/3k1pRp/5r1P/P7/3P4/2NB1bK1/8 w - - +perft 1 34 +perft 2 1148 +perft 3 36933 +perft 4 1181842 +perft 5 37053255 +perft 6 1143053213 + +id gentest-6404 +epd 2n5/1r1B4/3k1p1p/6rP/P5R1/3P4/3B1bK1/4N3 b - - +perft 1 40 +perft 2 1047 +perft 3 35379 +perft 4 1021024 +perft 5 32490486 +perft 6 962110372 + +id gentest-6405 +epd 2n5/1r1B4/5p1p/3k2rP/P5R1/3P1N2/3B2K1/4b3 w - - +perft 1 30 +perft 2 779 +perft 3 23489 +perft 4 613181 +perft 5 18693976 +perft 6 491602200 + +id gentest-6406 +epd 2n5/3r4/5p1p/3k3P/P5R1/3P3N/3B2K1/4b3 b - - +perft 1 23 +perft 2 699 +perft 3 15695 +perft 4 442775 +perft 5 10149609 +perft 6 274045926 + +id gentest-6407 +epd 2n5/3r2R1/5p1p/3k3P/P7/3P2bN/3B2K1/8 w - - +perft 1 29 +perft 2 719 +perft 3 19826 +perft 4 472517 +perft 5 12563839 +perft 6 293107753 + +id gentest-6408 +epd 2n5/3r4/3b1pRp/3k3P/P7/3P3N/3B4/5K2 b - - +perft 1 28 +perft 2 800 +perft 3 20415 +perft 4 549219 +perft 5 13599890 +perft 6 357336646 + +id gentest-6409 +epd 8/n2r4/2kb1pRp/7P/P4N2/3P4/3B4/5K2 w - - +perft 1 27 +perft 2 615 +perft 3 16953 +perft 4 398144 +perft 5 10910810 +perft 6 256163968 + +id gentest-6410 +epd 8/n2r4/2k2pRp/4b2P/P4N2/3P4/4K3/4B3 b - - +perft 1 26 +perft 2 712 +perft 3 16950 +perft 4 448597 +perft 5 10646679 +perft 6 278926116 + +id gentest-6411 +epd 8/6Rr/2k2p1p/1n2b2P/P4N2/3P4/4K3/4B3 w - - +perft 1 35 +perft 2 750 +perft 3 21681 +perft 4 475962 +perft 5 13033576 +perft 6 295555241 + +id gentest-6412 +epd 8/6Rr/2kb1p1p/Bn5P/P4N2/3P4/4K3/8 b - - +perft 1 18 +perft 2 532 +perft 3 10504 +perft 4 289527 +perft 5 6020276 +perft 6 159959952 + +id gentest-6413 +epd 8/3kb2r/5pRp/Bn5P/P4N2/3P4/4K3/8 w - - +perft 1 29 +perft 2 576 +perft 3 15701 +perft 4 314946 +perft 5 8609085 +perft 6 178643470 + +id gentest-6414 +epd 8/3kb2r/7p/Bn3p1P/P4N2/3P4/4K3/5R2 b - - +perft 1 22 +perft 2 577 +perft 3 12798 +perft 4 335079 +perft 5 7658320 +perft 6 200827963 + +id gentest-6415 +epd 5b2/7r/2k4p/Bn3p1P/P4N2/3P1K2/8/5R2 w - - +perft 1 28 +perft 2 647 +perft 3 17738 +perft 4 395374 +perft 5 10806715 +perft 6 243795848 + +id gentest-6416 +epd 5b2/7r/2k2B1p/5p1P/P4N2/n2P1K2/8/5R2 b - - +perft 1 23 +perft 2 725 +perft 3 16040 +perft 4 486279 +perft 5 10993373 +perft 6 323027926 + +id gentest-6417 +epd 8/5r2/2kb1B1p/5p1P/P7/n2P1K2/4N3/5R2 w - - +perft 1 30 +perft 2 832 +perft 3 23594 +perft 4 625109 +perft 5 17111516 +perft 6 444248358 + +id gentest-6418 +epd 8/6r1/2kb1B1p/5p1P/P7/n2P4/3KN3/5R2 b - - +perft 1 35 +perft 2 1070 +perft 3 31449 +perft 4 868881 +perft 5 24123875 +perft 6 627006834 + +id gentest-6419 +epd 1b6/6r1/2k4p/5p1P/P1n5/2BP4/3KN3/5R2 w - - +perft 1 5 +perft 2 176 +perft 3 4905 +perft 4 146003 +perft 5 3910143 +perft 6 107959174 + +id gentest-6420 +epd 1b6/8/2k4p/P4prP/2n5/2BP4/4N3/4KR2 b - - +perft 1 31 +perft 2 736 +perft 3 20448 +perft 4 480327 +perft 5 12912487 +perft 6 301569752 + +id gentest-6421 +epd 8/b1k5/7p/P4prP/2nB4/3P4/4N3/4KR2 w - - +perft 1 28 +perft 2 745 +perft 3 18441 +perft 4 481845 +perft 5 11393547 +perft 6 294638699 + +id gentest-6422 +epd 8/2k5/5B1p/P4prP/2n2R2/3Pb3/4N3/4K3 b - - +perft 1 30 +perft 2 788 +perft 3 21222 +perft 4 528186 +perft 5 14049104 +perft 6 341072179 + +id gentest-6423 +epd 8/2k5/1n3B1p/P4prP/5R2/3P4/4NK2/2b5 w - - +perft 1 30 +perft 2 666 +perft 3 17971 +perft 4 410455 +perft 5 10805802 +perft 6 251769736 + +id gentest-6424 +epd 8/2k5/1P3B1p/5p1r/7R/3P4/4NK2/2b5 b - - +perft 1 7 +perft 2 243 +perft 3 3431 +perft 4 100930 +perft 5 1577800 +perft 6 42476676 + +id gentest-6425 +epd 8/1k6/1P3B1p/5p1r/7R/b2P4/4N1K1/8 w - - +perft 1 36 +perft 2 587 +perft 3 17272 +perft 4 293471 +perft 5 7842204 +perft 6 139751842 + +id gentest-6426 +epd 8/1k6/1P5p/5p2/7r/b2P4/4N1K1/B7 b - - +perft 1 26 +perft 2 473 +perft 3 11345 +perft 4 199566 +perft 5 4617715 +perft 6 81609942 + +id gentest-6427 +epd 8/8/1Pk5/5p1p/7r/b2P4/4N3/B4K2 w - - +perft 1 19 +perft 2 438 +perft 3 7740 +perft 4 175393 +perft 5 3137500 +perft 6 70571477 + +id gentest-6428 +epd 8/8/1Pk5/5p1p/3P4/b7/7r/B1N2K2 b - - +perft 1 25 +perft 2 233 +perft 3 5311 +perft 4 57364 +perft 5 1258452 +perft 6 15547110 + +id gentest-6429 +epd 8/1k6/1P6/5p1p/1b1P4/8/N6r/B4K2 w - - +perft 1 7 +perft 2 172 +perft 3 1663 +perft 4 38394 +perft 5 423672 +perft 6 9365165 + +id gentest-6430 +epd 2k5/8/1P6/5p1p/Nb1P4/8/7r/B4K2 b - - +perft 1 25 +perft 2 202 +perft 3 4252 +perft 4 44351 +perft 5 938846 +perft 6 11101996 + +id gentest-6431 +epd 1k6/8/1P6/2b2p1p/3P4/8/1N5r/B4K2 w - - +perft 1 9 +perft 2 190 +perft 3 1748 +perft 4 37008 +perft 5 414384 +perft 6 8631689 + +id gentest-6432 +epd 1k6/8/1P6/2P2p1p/8/8/1N3r2/B5K1 b - - +perft 1 14 +perft 2 100 +perft 3 1414 +perft 4 15676 +perft 5 224513 +perft 6 3157338 + +id gentest-6433 +epd 1k6/1P6/8/2P2p1p/8/8/1N4r1/B5K1 w - - +perft 1 3 +perft 2 41 +perft 3 305 +perft 4 4216 +perft 5 53479 +perft 6 771831 + +id gentest-6434 +epd 1k6/1P6/8/2P2p1p/8/8/1N5r/B5K1 b - - +perft 1 14 +perft 2 97 +perft 3 1372 +perft 4 16387 +perft 5 236769 +perft 6 3593120 + +id gentest-6435 +epd 1k6/1P6/8/2P2p1p/2N5/8/6r1/B5K1 w - - +perft 1 3 +perft 2 43 +perft 3 739 +perft 4 10563 +perft 5 180150 +perft 6 2608865 + +id gentest-6436 +epd 8/1Pk5/1N6/2P2p1p/8/8/6r1/B6K b - - +perft 1 20 +perft 2 330 +perft 3 4904 +perft 4 85849 +perft 5 1290606 +perft 6 23609330 + +id gentest-6437 +epd 8/1Pk5/1N3B2/2P2p1p/8/8/1r6/7K w - - +perft 1 22 +perft 2 290 +perft 3 5510 +perft 4 78545 +perft 5 1476832 +perft 6 21701294 + +id gentest-6438 +epd 7B/1Pk5/8/2P2p1p/N7/8/5r2/7K b - - +perft 1 17 +perft 2 238 +perft 3 3564 +perft 4 57147 +perft 5 868027 +perft 6 14988875 + +id gentest-6439 +epd 8/1Pk5/8/2P2p1p/N2B4/8/5r2/7K w - - +perft 1 18 +perft 2 250 +perft 3 4223 +perft 4 60343 +perft 5 1057869 +perft 6 15597331 + +id gentest-6440 +epd 8/1Pk5/8/2P2p1p/3B4/8/4N3/7K b - - +perft 1 7 +perft 2 152 +perft 3 994 +perft 4 21648 +perft 5 139772 +perft 6 3064669 + +id gentest-6441 +epd 8/1k6/8/2P1Bp1p/8/8/4N3/7K w - - +perft 1 23 +perft 2 172 +perft 3 3376 +perft 4 20980 +perft 5 393058 +perft 6 2550571 + +id gentest-6442 +epd 2k5/8/8/2P2p1p/3N4/8/8/B6K b - - +perft 1 7 +perft 2 98 +perft 3 675 +perft 4 11271 +perft 5 75186 +perft 6 1343756 + +id gentest-6443 +epd 8/4k3/2P5/5p1p/3N4/8/8/B6K w - - +perft 1 13 +perft 2 98 +perft 3 1636 +perft 4 10666 +perft 5 194666 +perft 6 1257342 + +id gentest-6444 +epd 8/5k2/2P5/5p1p/8/8/4N2K/B7 b - - +perft 1 8 +perft 2 150 +perft 3 987 +perft 4 18444 +perft 5 121223 +perft 6 2302665 + +id gentest-6445 +epd 8/5k2/2P5/5p1p/8/8/4N1K1/B7 w - - +perft 1 22 +perft 2 176 +perft 3 3656 +perft 4 23998 +perft 5 484078 +perft 6 3172492 + +id gentest-6446 +epd 8/8/2P1k3/5p1p/8/8/4N1K1/B7 b - - +perft 1 6 +perft 2 130 +perft 3 953 +perft 4 19254 +perft 5 136906 +perft 6 2722446 + +id gentest-6447 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-6448 +epd rnbqkbnr/p1pppppp/8/1p6/6P1/N7/PPPPPP1P/R1BQKBNR b KQkq - +perft 1 21 +perft 2 441 +perft 3 10202 +perft 4 234589 +perft 5 5912532 +perft 6 147577450 + +id gentest-6449 +epd rn1qkbnr/p1pp1ppp/b7/1p2p3/4P1P1/N7/PPPP1P1P/R1BQKBNR w KQkq - +perft 1 27 +perft 2 755 +perft 3 20252 +perft 4 576432 +perft 5 15928112 +perft 6 467701183 + +id gentest-6450 +epd rn1qk1nr/p1pp1ppp/b7/1p2p3/4P1P1/b1P5/PP1PKP1P/R1BQ1BNR b kq - +perft 1 30 +perft 2 704 +perft 3 21366 +perft 4 532394 +perft 5 16424294 +perft 6 428831037 + +id gentest-6451 +epd rn1qk1nr/p1pp2pp/b4p2/1pb1p3/4P1P1/2PK4/PP1P1P1P/R1BQ1BNR w kq - +perft 1 25 +perft 2 703 +perft 3 16923 +perft 4 476142 +perft 5 11682299 +perft 6 336716880 + +id gentest-6452 +epd rn1qk1nr/p1pp2pp/b2b1p2/1p2p3/4P1P1/1QPK3P/PP1P1P2/R1B2BNR b kq - +perft 1 22 +perft 2 571 +perft 3 12383 +perft 4 322729 +perft 5 7636084 +perft 6 203091517 + +id gentest-6453 +epd rn1qk2r/p1ppn1p1/b2b1p1p/1p2p3/4P1P1/1QP4P/PPKP1P2/R1B2BNR w kq - +perft 1 30 +perft 2 686 +perft 3 21261 +perft 4 515374 +perft 5 16146876 +perft 6 414274809 + +id gentest-6454 +epd rn1qk2r/p2pn1p1/b1pb1p1p/1p1Qp3/4P1P1/2P4P/PPKPNP2/R1B2B1R b kq - +perft 1 26 +perft 2 895 +perft 3 22503 +perft 4 757692 +perft 5 19795572 +perft 6 662463023 + +id gentest-6455 +epd rn1qk1r1/p2pn3/b1pb1ppp/1p1Qp3/4P1P1/2P4P/PPKPNP1R/R1B2B2 w q - +perft 1 35 +perft 2 758 +perft 3 26038 +perft 4 610160 +perft 5 20655740 +perft 6 515925466 + +id gentest-6456 +epd rn1qk1r1/p2pn3/b1p2ppp/1p1Qp3/1P2P1P1/1P5P/P1KPNP1R/R1B2B2 b q - +perft 1 19 +perft 2 667 +perft 3 13107 +perft 4 450808 +perft 5 9699588 +perft 6 331340028 + +id gentest-6457 +epd rn1qk1r1/p2p4/b1p2ppp/1p1Q1n2/1P2PpP1/1P5P/P1KPN2R/R1B2B2 w q - +perft 1 39 +perft 2 852 +perft 3 31004 +perft 4 713414 +perft 5 25824412 +perft 6 625584619 + +id gentest-6458 +epd rn1qk1r1/p2Q4/b1p2ppp/1p6/1P2PpP1/1P4nP/P1KPN1BR/R1B5 b q - +perft 1 4 +perft 2 112 +perft 3 3179 +perft 4 87724 +perft 5 2566073 +perft 6 71788761 + +id gentest-6459 +epd rn4r1/p2k4/b1p2ppp/qp6/1P2PpP1/1P4nP/P1KPN2R/R1B2B2 w - - +perft 1 25 +perft 2 809 +perft 3 20287 +perft 4 630929 +perft 5 16079874 +perft 6 492821574 + +id gentest-6460 +epd rn4r1/p2k4/b1p3pp/qp3p2/1P2PpP1/1PN3nP/P1KP1R2/R1B2B2 b - - +perft 1 33 +perft 2 1040 +perft 3 33223 +perft 4 996884 +perft 5 31433605 +perft 6 917569118 + +id gentest-6461 +epd rn1k3r/p7/b1p3pp/qp3p2/1P2PpP1/1PNB2nP/P1KP1R2/R1B5 w - - +perft 1 30 +perft 2 862 +perft 3 25044 +perft 4 747303 +perft 5 21634775 +perft 6 666180474 + +id gentest-6462 +epd rn1k3r/p7/b1p3pp/qp3p2/1P2P1P1/1PNK1pnP/P2P1R2/R1B2B2 b - - +perft 1 29 +perft 2 712 +perft 3 21506 +perft 4 507594 +perft 5 15787205 +perft 6 371508031 + +id gentest-6463 +epd rnkq3r/p7/b1p3pp/1p3p2/1P2P1P1/1P1K1pnP/P2PNR2/R1B2B2 w - - +perft 1 4 +perft 2 145 +perft 3 2992 +perft 4 103018 +perft 5 2315877 +perft 6 78707989 + +id gentest-6464 +epd rnkq4/p6r/b1p3pp/1p3p2/1P2P1P1/1PK2pnP/P2PNR2/R1B2B2 b - - +perft 1 41 +perft 2 787 +perft 3 29286 +perft 4 625174 +perft 5 22184710 +perft 6 505603334 + +id gentest-6465 +epd rnkq4/p4r2/b1p3pp/1p3p2/1P2P1P1/1PK2pnP/P2PN1R1/R1B2B2 w - - +perft 1 22 +perft 2 941 +perft 3 19742 +perft 4 756455 +perft 5 17111032 +perft 6 621764247 + +id gentest-6466 +epd rnkq4/p5r1/b1p3pp/1p3p2/1P2P1P1/1PK2pRP/PB1PN3/R4B2 b - - +perft 1 37 +perft 2 821 +perft 3 27038 +perft 4 639246 +perft 5 20146124 +perft 6 498619859 + +id gentest-6467 +epd rnk5/p5r1/b1p3p1/1p3p1p/1P2P1P1/1P3pRP/PB1KN3/R4B2 w - - +perft 1 35 +perft 2 744 +perft 3 24278 +perft 4 504502 +perft 5 16254689 +perft 6 340017080 + +id gentest-6468 +epd rnk5/pb4r1/2p3p1/1p3p1p/1P2P1P1/1PB2pRP/P2KN3/4RB2 b - - +perft 1 23 +perft 2 683 +perft 3 15605 +perft 4 483361 +perft 5 11196822 +perft 6 356397524 + +id gentest-6469 +epd rnk5/pb4r1/2p3p1/1p3p1P/1P2P3/1PB3RP/P2KN3/4rB2 w - - +perft 1 30 +perft 2 737 +perft 3 20517 +perft 4 520050 +perft 5 14781740 +perft 6 385618144 + +id gentest-6470 +epd r1k5/pb1n2r1/2p3p1/1p3p1P/1P2P2R/1PB4P/P2KN3/4rB2 b - - +perft 1 28 +perft 2 622 +perft 3 17999 +perft 4 429276 +perft 5 12784351 +perft 6 316576972 + +id gentest-6471 +epd r7/pbkn2r1/2p3p1/1p3P1P/1P5R/1PB4P/P2KN3/r4B2 w - - +perft 1 26 +perft 2 889 +perft 3 24009 +perft 4 805117 +perft 5 22309607 +perft 6 747726108 + +id gentest-6472 +epd r7/pbk3r1/2p3p1/1pn2P1P/PP5R/1PB4P/3KN1B1/r7 b - - +perft 1 43 +perft 2 1176 +perft 3 46659 +perft 4 1343863 +perft 5 51165328 +perft 6 1520255592 + +id gentest-6473 +epd 2r5/pbk3r1/2p3p1/1pn2P1P/PP1N3R/1PB4P/3K2B1/1r6 w - - +perft 1 27 +perft 2 1015 +perft 3 26499 +perft 4 1001199 +perft 5 27330857 +perft 6 1026970187 + +id gentest-6474 +epd 2r5/pb4r1/2pk2p1/1pnB1P1P/PP1N3R/1PB4P/4K3/1r6 b - - +perft 1 44 +perft 2 1279 +perft 3 50917 +perft 4 1481545 +perft 5 56876130 +perft 6 1674763786 + +id gentest-6475 +epd 2r5/pbkn2r1/2p3P1/1p1B3P/PP1N3R/1PB4P/4K3/1r6 w - - +perft 1 30 +perft 2 1050 +perft 3 29499 +perft 4 1039118 +perft 5 29925476 +perft 6 1057986610 + +id gentest-6476 +epd 2r5/1bkn2r1/p1p3P1/1p5P/PP1N3R/1P5P/3BK1B1/1r6 b - - +perft 1 35 +perft 2 945 +perft 3 30375 +perft 4 831425 +perft 5 27356120 +perft 6 762901033 + +id gentest-6477 +epd b3r3/2kn2r1/p1p3P1/Pp5P/1P1N3R/1P5P/3BK1B1/1r6 w - - +perft 1 7 +perft 2 237 +perft 3 5357 +perft 4 175693 +perft 5 4292113 +perft 6 139744737 + +id gentest-6478 +epd b3r3/1k1n2r1/p1p1N1P1/Pp5P/1P4R1/1P5P/3BK1B1/1r6 b - - +perft 1 31 +perft 2 820 +perft 3 23846 +perft 4 673950 +perft 5 19558807 +perft 6 558708721 + +id gentest-6479 +epd b2r2r1/1k1n4/p1p1N1P1/Pp5P/1P4R1/1P5P/4K1B1/1rB5 w - - +perft 1 39 +perft 2 846 +perft 3 26994 +perft 4 667283 +perft 5 19885644 +perft 6 529926130 + +id gentest-6480 +epd b2r2r1/1k4N1/p1p2nP1/Pp5P/1P4R1/1P5P/6B1/1rB1K3 b - - +perft 1 30 +perft 2 568 +perft 3 16352 +perft 4 350927 +perft 5 10264951 +perft 6 235133668 + +id gentest-6481 +epd b5r1/1k4N1/p1p2nP1/Pp5P/1P4R1/1P3B1P/3r4/1rB1K3 w - - +perft 1 23 +perft 2 774 +perft 3 16218 +perft 4 515146 +perft 5 11177316 +perft 6 345013362 + +id gentest-6482 +epd b5r1/1k1r2N1/p1p2nP1/Pp5P/1P2R3/1P3B1P/8/1rB1K3 b - - +perft 1 33 +perft 2 745 +perft 3 23044 +perft 4 552230 +perft 5 16676642 +perft 6 412809463 + +id gentest-6483 +epd bk4r1/3r2N1/p1p1R1P1/Pp1n3P/1P6/1P3B1P/8/1rB1K3 w - - +perft 1 25 +perft 2 764 +perft 3 18450 +perft 4 559745 +perft 5 13819368 +perft 6 418944394 + +id gentest-6484 +epd bk4r1/3r2N1/p1p1R1P1/Pp5P/1P6/1Pn2B1P/8/1rB1K3 b - - +perft 1 35 +perft 2 782 +perft 3 24712 +perft 4 578201 +perft 5 17815039 +perft 6 437900742 + +id gentest-6485 +epd b1k3r1/6N1/p1p2RP1/Pp5P/1P1r4/1Pn2B1P/8/1rB1K3 w - - +perft 1 22 +perft 2 664 +perft 3 15091 +perft 4 453000 +perft 5 10859205 +perft 6 326187022 + +id gentest-6486 +epd b1k3r1/8/p1prNRPP/Pp6/1P6/1Pn2B1P/8/1rB1K3 b - - +perft 1 29 +perft 2 699 +perft 3 20227 +perft 4 522041 +perft 5 15161864 +perft 6 407377515 + +id gentest-6487 +epd 2k3r1/1b5P/p2rNRP1/Ppp5/1P6/1Pn2B1P/8/1rB1K3 w - - +perft 1 35 +perft 2 1090 +perft 3 34231 +perft 4 1063873 +perft 5 33500640 +perft 6 1051915464 + +id gentest-6488 +epd 2k3r1/1b5P/p4RP1/Ppp5/1P3N2/1Pn2B1P/5K2/1rBr4 b - - +perft 1 38 +perft 2 1404 +perft 3 45912 +perft 4 1593636 +perft 5 52068183 +perft 6 1734279409 + +id gentest-6489 +epd 6r1/1bk4P/p2R2P1/Pppn4/1P3N2/1P3B1P/5K2/1rBr4 w - - +perft 1 40 +perft 2 1248 +perft 3 44935 +perft 4 1414547 +perft 5 49168538 +perft 6 1564465602 + +id gentest-6490 +epd 8/1bk4P/p2R2r1/Pppn4/1P6/1P3B1P/1N3K2/1rBr4 b - - +perft 1 37 +perft 2 1120 +perft 3 38897 +perft 4 1210817 +perft 5 41488265 +perft 6 1299050455 + +id gentest-6491 +epd 6r1/1bk4P/p4R2/Ppp5/1P3n2/1P3B1P/1N3K2/1rBr4 w - - +perft 1 39 +perft 2 1653 +perft 3 55092 +perft 4 2118506 +perft 5 69278872 +perft 6 2525334525 + +id gentest-6492 +epd 1k4r1/1b5P/p2R4/Ppp5/1P3nB1/1P5P/1N3K2/1rBr4 b - - +perft 1 43 +perft 2 1514 +perft 3 57804 +perft 4 1885514 +perft 5 69001576 +perft 6 2169702223 + +id gentest-6493 +epd 1k4r1/1b1B3P/p2R4/Ppp5/1P6/1P2n2P/1N3K2/1rBr4 w - - +perft 1 37 +perft 2 1477 +perft 3 45894 +perft 4 1720668 +perft 5 52789407 +perft 6 1908827211 + +id gentest-6494 +epd 1k4r1/1b1B3P/p7/Ppp2nR1/1P6/1P5P/1N3K2/1rBr4 b - - +perft 1 43 +perft 2 1327 +perft 3 49221 +perft 4 1521076 +perft 5 55892512 +perft 6 1722587801 + +id gentest-6495 +epd 1k4r1/3B3P/p2n4/Ppp4R/1P6/1P5P/1N3Kb1/1rBr4 w - - +perft 1 35 +perft 2 1403 +perft 3 43682 +perft 4 1689140 +perft 5 52071356 +perft 6 1959484588 + +id gentest-6496 +epd 1k4r1/7P/p2n4/P1p4R/1P6/1P5P/1N3Kb1/1rB1rB2 b - - +perft 1 47 +perft 2 1413 +perft 3 59268 +perft 4 1760858 +perft 5 70553639 +perft 6 2099816683 + +id gentest-6497 +epd 1kn3r1/7P/p7/P1p4R/1P6/1P5P/1N2BKb1/1rB3r1 w - - +perft 1 37 +perft 2 1240 +perft 3 41774 +perft 4 1444864 +perft 5 47319697 +perft 6 1650588070 + +id gentest-6498 +epd 1k4r1/4n2P/p7/P1p3RB/1P6/1P5P/1N3Kb1/1rB3r1 b - - +perft 1 37 +perft 2 1276 +perft 3 43884 +perft 4 1439723 +perft 5 50224390 +perft 6 1608859404 + +id gentest-6499 +epd 1k6/4n2P/p5r1/P1p4B/1P6/1P4RP/1N3Kb1/r1B3r1 w - - +perft 1 32 +perft 2 1223 +perft 3 37487 +perft 4 1407239 +perft 5 43195128 +perft 6 1603487398 + +id gentest-6500 +epd 1k6/4n2P/p5r1/P1pb3B/1P6/1PR4P/1N1B1K2/r5r1 b - - +perft 1 54 +perft 2 1601 +perft 3 73300 +perft 4 2183986 +perft 5 94298740 +perft 6 2844139676 + +id gentest-6501 +epd 1kn5/7P/p5r1/P1pb4/1P6/1PR2B1P/1N1B1K2/r4r2 w - - +perft 1 2 +perft 2 98 +perft 3 2694 +perft 4 120611 +perft 5 3415136 +perft 6 143613443 + +id gentest-6502 +epd 1kn5/7P/p5r1/P1pb2B1/1P6/1PR2B1P/1N2K3/r6r b - - +perft 1 47 +perft 2 1510 +perft 3 63870 +perft 4 2061204 +perft 5 82144876 +perft 6 2654404524 + +id gentest-6503 +epd 1kn3b1/7P/pr6/P1p3B1/1P6/1P2RB1P/1N2K3/r6r w - - +perft 1 41 +perft 2 1535 +perft 3 56246 +perft 4 1991065 +perft 5 71947697 +perft 6 2480821126 + +id gentest-6504 +epd 1kn1R1b1/7P/pr6/P1p3B1/1P5P/1P3B2/1N2K3/5r1r b - - +perft 1 31 +perft 2 1138 +perft 3 36168 +perft 4 1277753 +perft 5 42168573 +perft 6 1452857604 + +id gentest-6505 +epd 1kn1R3/5b1P/pr3B2/P1p5/1P5P/1P3B2/1N2K2r/5r2 w - - +perft 1 4 +perft 2 137 +perft 3 4790 +perft 4 161531 +perft 5 5392456 +perft 6 185702712 + +id gentest-6506 +epd 1kn5/7P/pr3B2/P1p5/1Pb4P/1P3B2/1N2R2r/5K2 b - - +perft 1 27 +perft 2 798 +perft 3 21551 +perft 4 683515 +perft 5 18908386 +perft 6 628542792 + +id gentest-6507 +epd 1k6/n6P/pr3B2/P1p5/1P5P/1P6/1N2B2r/5K2 w - - +perft 1 30 +perft 2 628 +perft 3 15880 +perft 4 357166 +perft 5 8948917 +perft 6 210965732 + +id gentest-6508 +epd 1k6/n6P/p1r2B2/P1p5/1P5P/1P6/4B2r/2N2K2 b - - +perft 1 20 +perft 2 493 +perft 3 10768 +perft 4 261623 +perft 5 6235516 +perft 6 151336392 + +id gentest-6509 +epd 1kr5/n6P/p4B2/P7/1Pp4P/1P6/4B2r/2N3K1 w - - +perft 1 28 +perft 2 580 +perft 3 14126 +perft 4 325802 +perft 5 7996547 +perft 6 193460582 + +id gentest-6510 +epd 1kr5/n6P/p4B2/P7/1P5P/1Pp2B2/7r/2N3K1 b - - +perft 1 23 +perft 2 614 +perft 3 13785 +perft 4 355015 +perft 5 8171445 +perft 6 206348769 + +id gentest-6511 +epd 1kr5/n2r3P/p4B2/P7/1P2B2P/1Pp5/8/2N3K1 w - - +perft 1 34 +perft 2 843 +perft 3 24656 +perft 4 583560 +perft 5 16482259 +perft 6 395833016 + +id gentest-6512 +epd 1krr4/n6P/p4B2/P7/1P2B2P/1Pp5/7K/2N5 b - - +perft 1 19 +perft 2 603 +perft 3 13338 +perft 4 402631 +perft 5 9278330 +perft 6 268499112 + +id gentest-6513 +epd 1k5r/n7/p4B2/P7/1P2B2P/1Ppr4/7K/2N5 w - - +perft 1 27 +perft 2 641 +perft 3 15406 +perft 4 372599 +perft 5 8878345 +perft 6 219512606 + +id gentest-6514 +epd 7r/n1k5/p5B1/P7/1P5P/1PBr4/7K/2N5 b - - +perft 1 33 +perft 2 745 +perft 3 21572 +perft 4 498036 +perft 5 13751707 +perft 6 319841077 + +id gentest-6515 +epd 7r/n7/p1k3B1/P2r4/1P5P/1PB5/N6K/8 w - - +perft 1 26 +perft 2 737 +perft 3 17639 +perft 4 470032 +perft 5 11047506 +perft 6 288276808 + +id gentest-6516 +epd 7r/nk3B2/p7/PP1r4/7P/1PB5/N6K/8 b - - +perft 1 32 +perft 2 807 +perft 3 22559 +perft 4 557879 +perft 5 15099968 +perft 6 367405357 + +id gentest-6517 +epd 5r2/nk3B2/p7/PP5r/7P/1PB5/7K/2N5 w - - +perft 1 28 +perft 2 702 +perft 3 18322 +perft 4 468713 +perft 5 11870158 +perft 6 307870283 + +id gentest-6518 +epd 2k2r2/n7/p7/PP1B3r/3B3P/1P6/7K/2N5 b - - +perft 1 26 +perft 2 824 +perft 3 20864 +perft 4 599758 +perft 5 15575100 +perft 6 419981700 + +id gentest-6519 +epd 2kr3r/n7/p7/PP1BB3/7P/1P6/7K/2N5 w - - +perft 1 35 +perft 2 607 +perft 3 18064 +perft 4 370464 +perft 5 10278344 +perft 6 234739487 + +id gentest-6520 +epd 2k4r/n2r4/p7/PP1BB3/1P5P/8/4N2K/8 b - - +perft 1 21 +perft 2 753 +perft 3 16708 +perft 4 535355 +perft 5 12562823 +perft 6 369088932 + +id gentest-6521 +epd B1k2r2/n6r/p7/PP2B3/1P5P/8/4N2K/8 w - - +perft 1 33 +perft 2 827 +perft 3 23329 +perft 4 577649 +perft 5 15520817 +perft 6 389363105 + +id gentest-6522 +epd B1k5/n6r/p4r2/PP6/1P1B3P/7K/4N3/8 b - - +perft 1 30 +perft 2 843 +perft 3 22876 +perft 4 617224 +perft 5 16330280 +perft 6 428027342 + +id gentest-6523 +epd B1k5/B6r/p4r2/PP6/1P5P/7K/4N3/8 w - - +perft 1 27 +perft 2 726 +perft 3 17885 +perft 4 446887 +perft 5 10945503 +perft 6 266046309 + +id gentest-6524 +epd B1k5/1r6/P4r2/P7/1P5P/7K/4NB2/8 b - - +perft 1 28 +perft 2 658 +perft 3 16388 +perft 4 391634 +perft 5 9469235 +perft 6 230830224 + +id gentest-6525 +epd B1k5/8/P4r2/P7/1P5P/3r3K/4N3/6B1 w - - +perft 1 6 +perft 2 184 +perft 3 3795 +perft 4 101504 +perft 5 2339179 +perft 6 59276028 + +id gentest-6526 +epd B1k5/3r4/P4r2/PP6/7P/8/4N2K/6B1 b - - +perft 1 31 +perft 2 722 +perft 3 19274 +perft 4 465826 +perft 5 11707337 +perft 6 288026149 + +id gentest-6527 +epd B1kr4/8/P7/PP6/3N3P/8/5r1K/6B1 w - - +perft 1 5 +perft 2 110 +perft 3 2113 +perft 4 45832 +perft 5 968592 +perft 6 21095615 + +id gentest-6528 +epd 2k5/8/P7/PP1B4/3N3P/8/5r2/6BK b - - +perft 1 18 +perft 2 433 +perft 3 6313 +perft 4 148029 +perft 5 2086987 +perft 6 49714124 + +id gentest-6529 +epd 3k2B1/8/P7/PP3r2/3N3P/8/8/6BK w - - +perft 1 22 +perft 2 344 +perft 3 7856 +perft 4 120086 +perft 5 2812969 +perft 6 42349790 + +id gentest-6530 +epd 4k1B1/P7/P7/1P3r2/3N3P/8/8/6BK b - - +perft 1 17 +perft 2 410 +perft 3 5887 +perft 4 146161 +perft 5 2100831 +perft 6 53946390 + +id gentest-6531 +epd 5kB1/P4r2/P7/1P6/3N3P/8/6K1/6B1 w - - +perft 1 22 +perft 2 305 +perft 3 7721 +perft 4 107433 +perft 5 2847908 +perft 6 39677864 + +id gentest-6532 +epd 5k2/P6B/P7/1P3r2/7P/8/4N1K1/6B1 b - - +perft 1 16 +perft 2 401 +perft 3 6101 +perft 4 166628 +perft 5 2550078 +perft 6 72322496 + +id gentest-6533 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-6534 +epd rnbqkb1r/pppppppp/7n/8/8/8/PPPPPPPP/RNBQKBNR b KQkq - +perft 1 20 +perft 2 399 +perft 3 8957 +perft 4 197799 +perft 5 4933547 +perft 6 120120846 + +id gentest-6535 +epd rnbqkb1r/ppp1p1pp/3p1p1n/8/8/N7/PPPPPPPP/R1BQKBNR w KQkq - +perft 1 20 +perft 2 558 +perft 3 12470 +perft 4 343589 +perft 5 8509441 +perft 6 237353305 + +id gentest-6536 +epd rnbqkb1r/p1p1p1pp/1p1p1p1n/8/5P2/N3P3/PPPP2PP/R1BQKBNR b KQkq - +perft 1 29 +perft 2 860 +perft 3 23065 +perft 4 691202 +perft 5 18699344 +perft 6 572764113 + +id gentest-6537 +epd r1bqkb1r/p1p1p1pp/np3p1n/3p4/5P2/N1P1P3/PP1P2PP/R1BQKBNR w KQkq - +perft 1 33 +perft 2 846 +perft 3 27353 +perft 4 748878 +perft 5 24156020 +perft 6 696166402 + +id gentest-6538 +epd r1bqkb1r/p3p1pp/npp2p1n/3p4/2B2P2/N1P1P2P/PP1P2P1/R1BQK1NR b KQkq - +perft 1 30 +perft 2 984 +perft 3 29426 +perft 4 959297 +perft 5 29475029 +perft 6 962760157 + +id gentest-6539 +epd r2qkb1r/p2bp1pp/npp2p2/3p1n2/2B2P2/N1P1P1PP/PP1P4/R1BQK1NR w KQkq - +perft 1 31 +perft 2 859 +perft 3 26829 +perft 4 787298 +perft 5 24789873 +perft 6 759699431 + +id gentest-6540 +epd r2qkb1r/p2bp2p/npp2p2/3p1np1/2B2P2/2PPP1PP/PPN5/R1BQK1NR b KQkq - +perft 1 32 +perft 2 964 +perft 3 30688 +perft 4 964857 +perft 5 31650028 +perft 6 1022136798 + +id gentest-6541 +epd rn1qk2r/p2bp1bp/1pp2p2/3p1np1/2B2P2/N1PPP1PP/PP6/R1BQK1NR w KQkq - +perft 1 31 +perft 2 891 +perft 3 28171 +perft 4 846924 +perft 5 27110463 +perft 6 842343015 + +id gentest-6542 +epd rn1qk2r/p2b2bp/1pp1pp2/1N1p1np1/2B2P2/1PPPP1PP/P7/R1BQK1NR b KQkq - +perft 1 31 +perft 2 963 +perft 3 27853 +perft 4 897649 +perft 5 26929134 +perft 6 890765778 + +id gentest-6543 +epd rn1qkb1r/3b3p/ppp1pp2/1N1p1np1/2B2P2/1PPPP1PP/P7/R1BQ1KNR w kq - +perft 1 32 +perft 2 985 +perft 3 30754 +perft 4 945464 +perft 5 30435269 +perft 6 952193460 + +id gentest-6544 +epd rn1qkb1r/3b3p/pp2pp2/1Npp1np1/2B2P2/1PPPP1PP/P4Q2/R1B2KNR b kq - +perft 1 32 +perft 2 969 +perft 3 29728 +perft 4 937174 +perft 5 29746762 +perft 6 966669026 + +id gentest-6545 +epd 1n1qkb1r/r2b2np/pp2pp2/1Npp2p1/2B2P2/1PPPP1PP/P2B1Q2/R4KNR w k - +perft 1 32 +perft 2 816 +perft 3 26796 +perft 4 742729 +perft 5 24837968 +perft 6 730946584 + +id gentest-6546 +epd 1n1qkb1r/r2b2np/pp2pp2/1Npp4/2B2pP1/1PPPP2P/P2B1QK1/R5NR b k - +perft 1 27 +perft 2 892 +perft 3 24633 +perft 4 845428 +perft 5 24744738 +perft 6 866263086 + +id gentest-6547 +epd 1n1qk2r/r2b2np/pp1bp3/1Npp1p2/2B2pP1/PPPPP2P/3B1QK1/R5NR w k - +perft 1 34 +perft 2 1091 +perft 3 37321 +perft 4 1238914 +perft 5 43057396 +perft 6 1464655404 + +id gentest-6548 +epd 1n1qk1r1/r2b2np/pp1bp3/1Npp1p2/2B2pPQ/PPPPP2P/3B2K1/3R2NR b - - +perft 1 32 +perft 2 1088 +perft 3 31656 +perft 4 1068637 +perft 5 32437765 +perft 6 1104164257 + +id gentest-6549 +epd 1n1qkr2/r1bb2np/pp2p3/1Npp1p2/2B2pPQ/PPPPP2P/3B3K/3R2NR w - - +perft 1 32 +perft 2 794 +perft 3 24265 +perft 4 656195 +perft 5 20625092 +perft 6 595068576 + +id gentest-6550 +epd 1n2kr2/r1bb2np/pp2pq2/1Npp1p2/2BP1pPQ/PPP1P2P/7K/3RB1NR b - - +perft 1 35 +perft 2 1069 +perft 3 33250 +perft 4 1053531 +perft 5 33092462 +perft 6 1079560279 + +id gentest-6551 +epd 1n2kr2/r1bb2np/pp2p3/1Npp1p1q/2BP1pPQ/PPP1P2P/6K1/3RB1NR w - - +perft 1 37 +perft 2 952 +perft 3 32618 +perft 4 905188 +perft 5 30975060 +perft 6 912051177 + +id gentest-6552 +epd 1n2kr2/r1bb2np/pp6/1Npppp1q/2BP1pPQ/PPP1PK1P/3B4/3R2NR b - - +perft 1 30 +perft 2 922 +perft 3 25800 +perft 4 813289 +perft 5 24272796 +perft 6 781195379 + +id gentest-6553 +epd 1n2kr2/N1bb2np/pp6/3ppp2/2Bp1pPq/PPP1PK1P/3B4/3R2NR w - - +perft 1 28 +perft 2 1068 +perft 3 26341 +perft 4 966238 +perft 5 24717473 +perft 6 890769934 + +id gentest-6554 +epd 1n2kr2/N1bb3p/pp6/1B1ppn2/3p1p1q/PPP1PK1P/3B4/3R2NR b - - +perft 1 38 +perft 2 890 +perft 3 33400 +perft 4 780525 +perft 5 29869454 +perft 6 713992175 + +id gentest-6555 +epd 1n2k3/N1bb4/pp3r1p/1B1ppn2/3p1p1q/PPP1PK1P/3B4/5RNR w - - +perft 1 28 +perft 2 957 +perft 3 21798 +perft 4 781406 +perft 5 17665440 +perft 6 649993969 + +id gentest-6556 +epd 1n2k3/N1bb4/pp1n1r1p/1B1pp3/3pPp1q/PPP2K1P/3B4/1R4NR b - - +perft 1 33 +perft 2 763 +perft 3 26952 +perft 4 610727 +perft 5 22406608 +perft 6 515119666 + +id gentest-6557 +epd 1n1k4/N1bb4/pp1n1r1p/3pp3/3pPp2/PPP2K1P/3BB3/1R2q1NR w - - +perft 1 26 +perft 2 1022 +perft 3 22379 +perft 4 858141 +perft 5 18912796 +perft 6 714115712 + +id gentest-6558 +epd 1n1kn3/N1bb4/pp3r1p/3pp3/3pPp2/PPP2K1P/3BB2R/3Rq1N1 b - - +perft 1 34 +perft 2 733 +perft 3 24309 +perft 4 546662 +perft 5 18509415 +perft 6 432511557 + +id gentest-6559 +epd 1n1kn3/N1b5/ppb4p/3ppr2/3pPp2/PPP2K1P/4B2R/3RB1N1 w - - +perft 1 31 +perft 2 669 +perft 3 20224 +perft 4 460542 +perft 5 13940975 +perft 6 332636690 + +id gentest-6560 +epd 1n1kn3/Nbb5/pp5p/3ppP2/3p1p2/PPP2K1P/4B2R/R3B1N1 b - - +perft 1 17 +perft 2 458 +perft 3 8286 +perft 4 235179 +perft 5 4632247 +perft 6 134476813 + +id gentest-6561 +epd 3kn3/Nbb5/pp3n1p/3ppP2/3p1p2/PPP4P/4BK1R/R3B1N1 w - - +perft 1 28 +perft 2 592 +perft 3 15483 +perft 4 338259 +perft 5 9265832 +perft 6 208774776 + +id gentest-6562 +epd 4n3/Nbb1k3/pp3n1p/3ppP2/P2p1p2/1PP4P/4BK2/R3B1NR b - - +perft 1 26 +perft 2 675 +perft 3 16211 +perft 4 427687 +perft 5 10214867 +perft 6 276894943 + +id gentest-6563 +epd 2b1n3/N1b1k3/pp3n1p/3p1P2/P1Bppp2/1PP4P/5K2/R3B1NR w - - +perft 1 25 +perft 2 642 +perft 3 16049 +perft 4 405918 +perft 5 10643622 +perft 6 268539776 + +id gentest-6564 +epd 2b1n3/N1b5/1p1k1n1p/3p1P2/P1Bppp2/1PP4P/5K2/R3B1NR b - - +perft 1 24 +perft 2 553 +perft 3 12277 +perft 4 305016 +perft 5 6859751 +perft 6 179120302 + +id gentest-6565 +epd 4n3/2b5/bpNk1n1p/3p1P2/P1B1pp2/1Pp4P/5K2/R3B1NR w - - +perft 1 30 +perft 2 662 +perft 3 18074 +perft 4 403045 +perft 5 11256518 +perft 6 255826025 + +id gentest-6566 +epd 4n3/2b5/bpN2n1p/2kp1P2/P1B1pp2/1Pp1B2P/5K2/R5NR b - - +perft 1 4 +perft 2 109 +perft 3 2448 +perft 4 75099 +perft 5 1725594 +perft 6 52722042 + +id gentest-6567 +epd 4n3/2b5/bpk2n1p/3p1P2/P1B1p3/1Pp1K2P/8/R5NR w - - +perft 1 22 +perft 2 549 +perft 3 11628 +perft 4 296410 +perft 5 6519338 +perft 6 168481245 + +id gentest-6568 +epd 3bn3/8/bpk2n1p/3p1P2/P1B1p3/1Pp4P/R3K3/6NR b - - +perft 1 25 +perft 2 441 +perft 3 10796 +perft 4 218697 +perft 5 5454114 +perft 6 120284482 + +id gentest-6569 +epd 3bn3/8/bp3n2/2kp1P1p/P1B1p3/1Pp4P/2R1K3/6NR w - - +perft 1 18 +perft 2 374 +perft 3 7568 +perft 4 166280 +perft 5 3664889 +perft 6 84053370 + +id gentest-6570 +epd 3bn1n1/8/Bp6/2kp1P1p/P3p3/1Pp4P/2R5/3K2NR b - - +perft 1 20 +perft 2 509 +perft 3 9678 +perft 4 237142 +perft 5 4663815 +perft 6 113573182 + +id gentest-6571 +epd 3b2n1/8/B4n2/1pkp1P1p/P3p3/1Pp4P/2R4R/3K2N1 w - - +perft 1 25 +perft 2 466 +perft 3 11620 +perft 4 228709 +perft 5 5759103 +perft 6 117453785 + +id gentest-6572 +epd 6n1/8/Bb3n2/1pkp1P1p/P3p3/1Pp4P/2R4R/3K2N1 b - - +perft 1 19 +perft 2 482 +perft 3 9358 +perft 4 232951 +perft 5 4747403 +perft 6 118896427 + +id gentest-6573 +epd 4n1n1/8/Bb6/1pkp1P1p/P3p3/1P5P/2p1R2R/3K2N1 w - - +perft 1 5 +perft 2 91 +perft 3 1884 +perft 4 39801 +perft 5 881938 +perft 6 18952794 + +id gentest-6574 +epd 3bn1n1/8/B7/1pkp1P1p/P3p3/1P5P/2p1R3/2K3NR b - - +perft 1 24 +perft 2 477 +perft 3 10009 +perft 4 209345 +perft 5 4373167 +perft 6 96597036 + +id gentest-6575 +epd 4n1n1/8/B7/1p1p1P1p/Pk2p2b/1P5P/2p1R2R/2K3N1 w - - +perft 1 20 +perft 2 416 +perft 3 8535 +perft 4 177587 +perft 5 3907026 +perft 6 82175776 + +id gentest-6576 +epd 4n1n1/8/B7/Pp1p1P1p/1k2p3/1P4bP/2p1RR2/2K3N1 b - - +perft 1 23 +perft 2 410 +perft 3 8877 +perft 4 179791 +perft 5 3852140 +perft 6 84272517 + +id gentest-6577 +epd 6n1/8/B4n2/Pp1p1P1p/1k6/1P2pRbP/2p1R3/2K3N1 w - - +perft 1 18 +perft 2 390 +perft 3 7663 +perft 4 161101 +perft 5 3464237 +perft 6 72766653 + +id gentest-6578 +epd 6n1/8/B4n2/Pp1p1P1p/1k6/1P2R2P/2p4b/2K2RN1 b - - +perft 1 19 +perft 2 460 +perft 3 9079 +perft 4 220368 +perft 5 4527543 +perft 6 113692193 + +id gentest-6579 +epd 8/7n/B6n/Pp1p1P1p/1k6/1P5P/2p4b/2K1RRN1 w - - +perft 1 21 +perft 2 411 +perft 3 9581 +perft 4 197274 +perft 5 4913388 +perft 6 103910912 + +id gentest-6580 +epd 8/1B3n1n/8/Pp1p1P1p/1k2R3/1P5P/2p4b/2K2RN1 b - - +perft 1 7 +perft 2 205 +perft 3 4184 +perft 4 114143 +perft 5 2330802 +perft 6 63224585 + +id gentest-6581 +epd 8/1B3n1n/8/P2p1P1p/1p6/1Pk4P/2p1R2b/2K2RN1 w - - +perft 1 26 +perft 2 468 +perft 3 11450 +perft 4 199346 +perft 5 4921796 +perft 6 86601683 + +id gentest-6582 +epd 8/1B3n1n/8/P2p1P1p/1p6/1k5P/2R2R1b/2K3N1 b - - +perft 1 20 +perft 2 575 +perft 3 10149 +perft 4 298732 +perft 5 5436025 +perft 6 162478003 + +id gentest-6583 +epd 8/1B3n1n/8/P2p1P1p/1p6/1k5P/2Rb1R2/1K4N1 w - - +perft 1 28 +perft 2 480 +perft 3 13845 +perft 4 239810 +perft 5 7095053 +perft 6 126271899 + +id gentest-6584 +epd 8/1B3n1n/1R6/P2p1Pbp/1p6/1k5P/5R2/1K4N1 b - - +perft 1 22 +perft 2 661 +perft 3 12708 +perft 4 385158 +perft 5 7368033 +perft 6 224131992 + +id gentest-6585 +epd 8/1B5n/6nR/P2p1Pbp/1p6/1k5P/5R2/1K4N1 w - - +perft 1 25 +perft 2 486 +perft 3 13146 +perft 4 241812 +perft 5 6775994 +perft 6 122898859 + +id gentest-6586 +epd 8/5B1n/6nR/P4Pbp/1p6/k6P/5R2/1K4N1 b - - +perft 1 20 +perft 2 613 +perft 3 10577 +perft 4 324412 +perft 5 5631263 +perft 6 173284157 + +id gentest-6587 +epd 8/5B1n/6nR/P4Pb1/kp5p/5R1P/8/1K4N1 w - - +perft 1 29 +perft 2 454 +perft 3 13645 +perft 4 220126 +perft 5 6673867 +perft 6 111662143 + +id gentest-6588 +epd 8/5B1n/6n1/Pk3Pb1/1p1R4/5R1P/8/1K4N1 b - - +perft 1 23 +perft 2 884 +perft 3 17134 +perft 4 627805 +perft 5 11855913 +perft 6 420977379 + +id gentest-6589 +epd 8/5B1n/6n1/P1k2P2/1p6/5R1P/3R4/1K4N1 w - - +perft 1 41 +perft 2 464 +perft 3 17821 +perft 4 213479 +perft 5 7765558 +perft 6 100614001 + +id gentest-6590 +epd 8/7n/P5n1/1k3P2/1p6/1B3R1P/3R4/1K4N1 b - - +perft 1 14 +perft 2 551 +perft 3 7299 +perft 4 270265 +perft 5 3725747 +perft 6 133556796 + +id gentest-6591 +epd 8/7n/P1k3n1/5P2/1p3R2/1B5P/3R4/1K4N1 w - - +perft 1 43 +perft 2 522 +perft 3 20593 +perft 4 258824 +perft 5 9686849 +perft 6 129754852 + +id gentest-6592 +epd 8/7n/P5n1/2k2P2/1p3R2/1B5P/2KR4/6N1 b - - +perft 1 12 +perft 2 437 +perft 3 5308 +perft 4 189013 +perft 5 2491617 +perft 6 87330979 + +id gentest-6593 +epd 8/8/P4n2/2k5/1p3R1n/1B5P/2KR4/6N1 w - - +perft 1 37 +perft 2 512 +perft 3 18911 +perft 4 254535 +perft 5 9086260 +perft 6 127460512 + +id gentest-6594 +epd 8/8/P7/2k4n/1pR4n/1B5P/3R4/3K2N1 b - - +perft 1 2 +perft 2 72 +perft 3 791 +perft 4 28088 +perft 5 351975 +perft 6 12367910 + +id gentest-6595 +epd 8/8/P4n2/1k6/1pR4n/1B5P/7R/3K2N1 w - - +perft 1 32 +perft 2 456 +perft 3 14817 +perft 4 203583 +perft 5 6581054 +perft 6 93018538 + +id gentest-6596 +epd 6n1/8/P7/1k6/1pR4n/1B5P/5K1R/6N1 b - - +perft 1 10 +perft 2 276 +perft 3 3249 +perft 4 96421 +perft 5 1219604 +perft 6 36909611 + +id gentest-6597 +epd 8/8/P4nn1/1k6/1pR5/7P/2B2K1R/6N1 w - - +perft 1 32 +perft 2 561 +perft 3 16577 +perft 4 268434 +perft 5 8112857 +perft 6 125633057 + +id gentest-6598 +epd 7n/8/P3Rn2/1k6/1p6/7P/2B2K1R/6N1 b - - +perft 1 14 +perft 2 419 +perft 3 5230 +perft 4 163815 +perft 5 2163059 +perft 6 68100156 + +id gentest-6599 +epd 8/8/P5n1/1k5n/1p6/7P/2B1RK1R/6N1 w - - +perft 1 26 +perft 2 398 +perft 3 11203 +perft 4 170752 +perft 5 4895591 +perft 6 74877548 + +id gentest-6600 +epd 8/8/P3R1n1/k6n/1p6/7P/2B3KR/6N1 b - - +perft 1 12 +perft 2 274 +perft 3 3397 +perft 4 88818 +perft 5 1182959 +perft 6 32311988 + +id gentest-6601 +epd 5n2/8/P2R4/k7/1p6/6nP/2B3KR/6N1 w - - +perft 1 30 +perft 2 360 +perft 3 10389 +perft 4 131632 +perft 5 3687598 +perft 6 49598319 + +id gentest-6602 +epd 5n2/8/P2R4/k7/1p6/5N1P/2B3K1/5n1R b - - +perft 1 10 +perft 2 356 +perft 3 4006 +perft 4 140384 +perft 5 1720449 +perft 6 59528612 + +id gentest-6603 +epd 8/8/P2Rn3/k7/1p6/5N1P/2B3Kn/6R1 w - - +perft 1 39 +perft 2 486 +perft 3 17820 +perft 4 218428 +perft 5 7975551 +perft 6 101628730 + +id gentest-6604 +epd 8/8/P2Rn3/k7/1p6/7P/2B1N1K1/5nR1 b - - +perft 1 14 +perft 2 423 +perft 3 5420 +perft 4 179754 +perft 5 2336672 +perft 6 80072181 + +id gentest-6605 +epd 8/P7/3Rn3/2k5/1p6/7P/2B1N1K1/5nR1 w - - +perft 1 36 +perft 2 501 +perft 3 16978 +perft 4 229796 +perft 5 8425178 +perft 6 113580173 + +id gentest-6606 +epd 8/P7/4n3/2kR4/1p6/6nP/2B1NK2/6R1 b - - +perft 1 4 +perft 2 174 +perft 3 2891 +perft 4 112162 +perft 5 1756611 +perft 6 67332233 + +id gentest-6607 +epd 8/P7/1k2n3/2R4n/1p6/7P/2B1NK2/6R1 w - - +perft 1 50 +perft 2 797 +perft 3 37148 +perft 4 556607 +perft 5 23979893 +perft 6 357151491 + +id gentest-6608 +epd 8/P1n5/1k6/2R4n/1p1N4/7P/2B2K2/2R5 b - - +perft 1 15 +perft 2 670 +perft 3 9108 +perft 4 392822 +perft 5 5325073 +perft 6 224075086 + +id gentest-6609 +epd 8/P1k5/4n3/1R5n/1p1N4/7P/2B2K2/2R5 w - - +perft 1 45 +perft 2 566 +perft 3 25154 +perft 4 334522 +perft 5 14502888 +perft 6 200012053 + +id gentest-6610 +epd 8/P7/3kn3/1R5n/1p1N4/7P/B4K2/2R5 b - - +perft 1 15 +perft 2 727 +perft 3 9872 +perft 4 434577 +perft 5 6086636 +perft 6 258205143 + +id gentest-6611 +epd 8/P1n5/3k4/1R6/1p1N4/4K1nP/B7/2R5 w - - +perft 1 48 +perft 2 664 +perft 3 25587 +perft 4 343112 +perft 5 13736799 +perft 6 186435886 + +id gentest-6612 +epd 8/P1n1kB2/8/7R/1p1N4/4K1nP/8/2R5 b - - +perft 1 19 +perft 2 801 +perft 3 12731 +perft 4 530552 +perft 5 7821560 +perft 6 321053097 + +id gentest-6613 +epd 8/P1n1kB2/8/7R/8/1p2KN1P/8/2R2n2 w - - +perft 1 7 +perft 2 115 +perft 3 5025 +perft 4 74174 +perft 5 3096221 +perft 6 45007518 + +id gentest-6614 +epd 8/P3kB2/n7/7R/3NK3/1p5P/8/2R2n2 b - - +perft 1 15 +perft 2 600 +perft 3 8038 +perft 4 318416 +perft 5 4394187 +perft 6 171309132 + +id gentest-6615 +epd 8/P3k3/n7/7R/3NK3/1p5P/8/5R2 w - - +perft 1 45 +perft 2 404 +perft 3 15690 +perft 4 147146 +perft 5 5624702 +perft 6 55252700 + +id gentest-6616 +epd R7/P7/n2k4/8/3NK3/1p5P/8/5R2 b - - +perft 1 9 +perft 2 288 +perft 3 2496 +perft 4 80645 +perft 5 786944 +perft 6 25365486 + +id gentest-6617 +epd Rn6/P3k3/8/8/3NK3/1p5P/8/6R1 w - - +perft 1 35 +perft 2 336 +perft 3 11490 +perft 4 85158 +perft 5 2797520 +perft 6 24142186 + +id gentest-6618 +epd Rn2k3/P7/2N5/8/5K2/1p5P/8/6R1 b - - +perft 1 4 +perft 2 140 +perft 3 901 +perft 4 28853 +perft 5 230976 +perft 6 7073053 + +id gentest-6619 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-6620 +epd rnbqkbnr/p1pppppp/8/1p6/8/N6P/PPPPPPP1/R1BQKBNR b KQkq - +perft 1 21 +perft 2 398 +perft 3 9232 +perft 4 198000 +perft 5 5007618 +perft 6 119922878 + +id gentest-6621 +epd r1bqkbnr/p1pppppp/8/1p2n3/4P3/N6P/PPPP1PP1/R1BQKBNR w KQkq - +perft 1 27 +perft 2 670 +perft 3 17605 +perft 4 458679 +perft 5 12863387 +perft 6 352565008 + +id gentest-6622 +epd r1bqkbnr/p2ppppp/2p5/1p2n3/1PN1P3/7P/P1PP1PP1/R1BQKBNR b KQkq - +perft 1 26 +perft 2 723 +perft 3 19480 +perft 4 568199 +perft 5 16276143 +perft 6 494689045 + +id gentest-6623 +epd r1b1kbnr/p2p1ppp/2p1p3/1p2n3/1PN1P2q/7P/P1PPNPP1/R1BQKB1R w KQkq - +perft 1 24 +perft 2 931 +perft 3 22709 +perft 4 862035 +perft 5 22967783 +perft 6 862914742 + +id gentest-6624 +epd r1b1kbnr/p2p1ppp/2p1p3/1p2n3/1PN1P3/2N4P/P1PP1KP1/R1BQ1B1R b kq - +perft 1 29 +perft 2 951 +perft 3 27262 +perft 4 905779 +perft 5 26269162 +perft 6 887451216 + +id gentest-6625 +epd r1b1kbnr/3p1ppp/2p1p3/pp6/1PN1P1n1/2N4P/P1PP2P1/R1BQ1BKR w kq - +perft 1 31 +perft 2 973 +perft 3 30518 +perft 4 934905 +perft 5 30572808 +perft 6 926664333 + +id gentest-6626 +epd r1b1kb1r/3pnppp/2p1p3/pp6/PPN1P1P1/2N5/2PP2P1/R1BQ1BKR b kq - +perft 1 24 +perft 2 887 +perft 3 21763 +perft 4 816449 +perft 5 20879339 +perft 6 798842525 + +id gentest-6627 +epd r3kb1r/1b1pn1pp/2p1p3/pp3p2/PP2P1P1/N1N5/2PP2P1/R1BQ1BKR w kq - +perft 1 35 +perft 2 976 +perft 3 35119 +perft 4 962260 +perft 5 35529916 +perft 6 973732915 + +id gentest-6628 +epd r3kb1r/1b1pn1pp/2p1p3/p4p2/pP2P1P1/N5P1/2PP4/RNBQ1BKR b kq - +perft 1 27 +perft 2 909 +perft 3 24374 +perft 4 839565 +perft 5 22677167 +perft 6 803665476 + +id gentest-6629 +epd b1kr1b1r/3pn1pp/2p1p3/p4p2/pP2P1P1/N5P1/1BPP4/RN1Q1BKR w - - +perft 1 40 +perft 2 812 +perft 3 32223 +perft 4 701817 +perft 5 27732124 +perft 6 641547093 + +id gentest-6630 +epd 2kr1b1r/1b1pn1pp/2p1p3/P4p2/p2BP1P1/N5P1/2PP4/RN1Q1BKR b - - +perft 1 20 +perft 2 829 +perft 3 17760 +perft 4 724613 +perft 5 16556191 +perft 6 669262889 + +id gentest-6631 +epd 2kr1b1r/1b1pn3/2p1p2p/P4pp1/p2BP1P1/N4QP1/2PP4/RN3BKR w - - +perft 1 47 +perft 2 883 +perft 3 39781 +perft 4 834158 +perft 5 36360122 +perft 6 827172568 + +id gentest-6632 +epd 2kr1b1r/1b1p4/2p1p1np/P4pp1/p2BP1P1/N1P2QP1/3PB3/RN4KR b - - +perft 1 25 +perft 2 1006 +perft 3 26228 +perft 4 1043357 +perft 5 27919638 +perft 6 1106193110 + +id gentest-6633 +epd 2kr1br1/1b6/2p1p1np/P2p1Pp1/p2B2P1/N1P2QP1/3PB3/RN4KR w - - +perft 1 42 +perft 2 1050 +perft 3 43224 +perft 4 1123507 +perft 5 45755320 +perft 6 1221951635 + +id gentest-6634 +epd 2kr1brn/1b6/2p1p2p/P1Bp1Pp1/p5P1/N1P2QP1/R2PB3/1N4KR b - - +perft 1 20 +perft 2 836 +perft 3 18345 +perft 4 779969 +perft 5 18126167 +perft 6 774952047 + +id gentest-6635 +epd 2k2brn/1b6/2pr3p/P1BppPp1/p1P3P1/N4QP1/R2PB3/1N4KR w - - +perft 1 40 +perft 2 843 +perft 3 34714 +perft 4 772443 +perft 5 32129275 +perft 6 745509861 + +id gentest-6636 +epd 5brn/1bk5/2pr3p/P1BppPpR/p1P3P1/N4QP1/R2PB3/1N3K2 b - - +perft 1 21 +perft 2 870 +perft 3 18736 +perft 4 776317 +perft 5 17580063 +perft 6 726948202 + +id gentest-6637 +epd 5brn/1bk5/P1pr3p/2B2PpR/p1Ppp1P1/N4QP1/R2PB3/1N3K2 w - - +perft 1 36 +perft 2 738 +perft 3 27472 +perft 4 593913 +perft 5 22508550 +perft 6 509876757 + +id gentest-6638 +epd b4brn/2k5/P1pr3R/2B2Pp1/p1PppQP1/N5P1/R2PB3/1N3K2 b - - +perft 1 15 +perft 2 569 +perft 3 9885 +perft 4 376987 +perft 5 7387789 +perft 6 284958572 + +id gentest-6639 +epd b4b1n/3k2rR/P1pr4/2B2Pp1/p1PppQP1/N5P1/R2PB3/1N3K2 w - - +perft 1 36 +perft 2 689 +perft 3 26382 +perft 4 547518 +perft 5 21496720 +perft 6 473381090 + +id gentest-6640 +epd b4b1n/3k2rR/P1pB1P2/6p1/p1Pp1QP1/N3p1P1/R2PB3/1N3K2 b - - +perft 1 16 +perft 2 633 +perft 3 11771 +perft 4 467842 +perft 5 9069299 +perft 6 360044271 + +id gentest-6641 +epd b4b1n/3k2rR/P1pB1P2/8/p1Pp1pP1/N5P1/3RB3/1N3K2 w - - +perft 1 38 +perft 2 665 +perft 3 24740 +perft 4 497134 +perft 5 18373658 +perft 6 382195984 + +id gentest-6642 +epd b4b1n/6R1/P1pBkP2/8/p1Pp1pP1/N5P1/3RB3/1N4K1 b - - +perft 1 12 +perft 2 446 +perft 3 6042 +perft 4 210925 +perft 5 3130861 +perft 6 106997061 + +id gentest-6643 +epd b6n/6b1/P1pBkP2/8/p1Pp2P1/6p1/2NRB3/1N4K1 w - - +perft 1 33 +perft 2 435 +perft 3 13770 +perft 4 199179 +perft 5 6240328 +perft 6 97267876 + +id gentest-6644 +epd b6n/6b1/P1pBkP2/8/p1P3P1/3p2p1/2N1B3/1N1R1K2 b - - +perft 1 16 +perft 2 443 +perft 3 7546 +perft 4 204832 +perft 5 3703613 +perft 6 101017529 + +id gentest-6645 +epd b7/5nb1/P1pBkP2/8/p1P3P1/6p1/2N1K3/1N1R4 w - - +perft 1 38 +perft 2 587 +perft 3 20686 +perft 4 325349 +perft 5 10801248 +perft 6 180997192 + +id gentest-6646 +epd b6b/5n2/P1pBkP2/8/p1P3P1/6p1/2NR4/1N2K3 b - - +perft 1 13 +perft 2 395 +perft 3 5579 +perft 4 167281 +perft 5 2613118 +perft 6 77757824 + +id gentest-6647 +epd b2n4/6b1/P1pBkP2/8/pNP3P1/6p1/3R4/1N2K3 w - - +perft 1 34 +perft 2 434 +perft 3 14687 +perft 4 208758 +perft 5 6828216 +perft 6 107079492 + +id gentest-6648 +epd b2n4/6b1/P1pBkP2/8/2P3P1/p5p1/N2RK3/1N6 b - - +perft 1 12 +perft 2 373 +perft 3 5072 +perft 4 158068 +perft 5 2410089 +perft 6 74130034 + +id gentest-6649 +epd b6b/1n6/P1pBkP2/8/2P3P1/p1N3p1/3RK3/1N6 w - - +perft 1 35 +perft 2 414 +perft 3 14030 +perft 4 191423 +perft 5 6320759 +perft 6 97827704 + +id gentest-6650 +epd b6b/1n6/P3kP2/2p5/1BP3P1/p1N3p1/4K3/1N1R4 b - - +perft 1 11 +perft 2 340 +perft 3 5252 +perft 4 153285 +perft 5 2719670 +perft 6 77144799 + +id gentest-6651 +epd b6b/1n6/P4P2/4k3/1pP3P1/N1N3p1/4K3/3R4 w - - +perft 1 34 +perft 2 436 +perft 3 13032 +perft 4 197686 +perft 5 5418455 +perft 6 94721685 + +id gentest-6652 +epd b6b/1P6/5P2/4k3/2P3P1/NpNR2p1/4K3/8 b - - +perft 1 8 +perft 2 285 +perft 3 2895 +perft 4 96373 +perft 5 1233447 +perft 6 38981843 + +id gentest-6653 +epd b6b/1P6/5P2/4k1P1/2P5/NpNR2p1/4K3/8 w - - +perft 1 37 +perft 2 291 +perft 3 10271 +perft 4 108370 +perft 5 3635558 +perft 6 47297550 + +id gentest-6654 +epd bN5b/8/5P2/5kP1/N1P5/Np1R2p1/4K3/8 b - - +perft 1 18 +perft 2 511 +perft 3 8677 +perft 4 242909 +perft 5 4309117 +perft 6 119037040 + +id gentest-6655 +epd bN6/8/4kb2/6P1/N1P5/Np4p1/4K3/3R4 w - - +perft 1 32 +perft 2 675 +perft 3 18978 +perft 4 392965 +perft 5 10542743 +perft 6 219183245 + +id gentest-6656 +epd 8/8/2N1kb2/6P1/N1P5/Np3bp1/8/3R1K2 b - - +perft 1 23 +perft 2 600 +perft 3 11980 +perft 4 299592 +perft 5 6061162 +perft 6 148484405 + +id gentest-6657 +epd 8/8/2b2b2/4k1P1/2P5/Np4p1/1N6/3R1K2 w - - +perft 1 22 +perft 2 415 +perft 3 8441 +perft 4 159366 +perft 5 3269966 +perft 6 63248038 + +id gentest-6658 +epd 7b/8/2b5/4k1P1/2P5/1p4p1/1NN1K3/3R4 b - - +perft 1 19 +perft 2 519 +perft 3 8973 +perft 4 217051 +perft 5 3962701 +perft 6 91105149 + +id gentest-6659 +epd 8/6b1/8/3bk1P1/2P5/1p4p1/1NN1K3/6R1 w - - +perft 1 27 +perft 2 556 +perft 3 12716 +perft 4 246385 +perft 5 5460992 +perft 6 106992903 + +id gentest-6660 +epd 8/6b1/3k4/3b2P1/2P5/1p4p1/1NN1K3/1R6 b - - +perft 1 28 +perft 2 644 +perft 3 15767 +perft 4 344922 +perft 5 8017108 +perft 6 173917970 + +id gentest-6661 +epd 8/8/2k5/3bb1P1/2P5/1p4p1/1N2K3/NR6 w - - +perft 1 20 +perft 2 485 +perft 3 9111 +perft 4 212958 +perft 5 4134019 +perft 6 94654324 + +id gentest-6662 +epd 8/8/2k1b3/4b1P1/2P5/1p4p1/1N2K3/N6R b - - +perft 1 26 +perft 2 645 +perft 3 15578 +perft 4 344951 +perft 5 8050374 +perft 6 172903453 + +id gentest-6663 +epd 8/2b5/2k1b3/6P1/2P5/1p1N4/4K1p1/N6R w - - +perft 1 31 +perft 2 848 +perft 3 20518 +perft 4 540827 +perft 5 12143148 +perft 6 319126877 + +id gentest-6664 +epd 8/8/2kbb3/6P1/2P2N2/1p6/4K1p1/N3R3 b - - +perft 1 28 +perft 2 571 +perft 3 15780 +perft 4 344493 +perft 5 9349542 +perft 6 205240825 + +id gentest-6665 +epd 2b5/8/2kb4/2P3P1/5N2/1p6/4K3/N3R1b1 w - - +perft 1 21 +perft 2 528 +perft 3 11154 +perft 4 269830 +perft 5 5942855 +perft 6 144812344 + +id gentest-6666 +epd 8/1b6/2kb4/2P3P1/8/1p1K3N/8/N3R1b1 b - - +perft 1 23 +perft 2 513 +perft 3 11513 +perft 4 242437 +perft 5 5613042 +perft 6 117954945 + +id gentest-6667 +epd 8/8/b1kb4/2b3P1/8/1p5N/3K4/N3R3 w - - +perft 1 22 +perft 2 629 +perft 3 12286 +perft 4 352023 +perft 5 6882355 +perft 6 195631658 + +id gentest-6668 +epd 8/8/b1kb2P1/8/8/1p5N/3K1b2/N5R1 b - - +perft 1 35 +perft 2 597 +perft 3 18767 +perft 4 335753 +perft 5 10054504 +perft 6 190719823 + +id gentest-6669 +epd 8/3k4/3b2P1/8/5N2/1p6/3K1b2/N4bR1 w - - +perft 1 19 +perft 2 608 +perft 3 11007 +perft 4 333401 +perft 5 6489875 +perft 6 188826857 + +id gentest-6670 +epd 5b2/3k4/6P1/8/5N2/1N6/2K2b2/5bR1 b - - +perft 1 30 +perft 2 768 +perft 3 21214 +perft 4 527280 +perft 5 14002315 +perft 6 344669363 + +id gentest-6671 +epd 5b2/8/2k3P1/1b6/5N2/1N6/1K3b2/6R1 w - - +perft 1 31 +perft 2 770 +perft 3 20262 +perft 4 514598 +perft 5 13127146 +perft 6 335561171 + +id gentest-6672 +epd 8/6b1/2k3P1/1b4R1/5N2/1N6/2K2b2/8 b - - +perft 1 29 +perft 2 764 +perft 3 19723 +perft 4 496827 +perft 5 12766003 +perft 6 316254949 + +id gentest-6673 +epd 8/6b1/1k4P1/1bR5/5N1b/1N6/2K5/8 w - - +perft 1 27 +perft 2 684 +perft 3 17897 +perft 4 444113 +perft 5 11435671 +perft 6 280656391 + +id gentest-6674 +epd 8/6b1/1k4P1/1bR5/8/1N6/4N3/2K1b3 b - - +perft 1 27 +perft 2 594 +perft 3 14722 +perft 4 339783 +perft 5 8332975 +perft 6 194316207 + +id gentest-6675 +epd 8/3b4/1k4P1/2R5/8/1Nb3N1/8/2K1b3 w - - +perft 1 26 +perft 2 612 +perft 3 14329 +perft 4 342882 +perft 5 8123564 +perft 6 196882807 + +id gentest-6676 +epd 2b5/6P1/1k6/1R6/8/1Nb3N1/8/2K1b3 b - - +perft 1 5 +perft 2 134 +perft 3 2800 +perft 4 68174 +perft 5 1516394 +perft 6 39083749 + +id gentest-6677 +epd 2b5/2k3b1/8/1R6/8/6N1/8/N1K1b3 w - - +perft 1 25 +perft 2 618 +perft 3 13162 +perft 4 332064 +perft 5 7003186 +perft 6 177843875 + +id gentest-6678 +epd 8/2kb2b1/8/7R/8/6N1/2K5/N3b3 b - - +perft 1 31 +perft 2 720 +perft 3 20661 +perft 4 460963 +perft 5 12877285 +perft 6 282676785 + +id gentest-6679 +epd 8/2k3b1/8/7R/8/3K2N1/2b5/N3b3 w - - +perft 1 5 +perft 2 142 +perft 3 3329 +perft 4 85332 +perft 5 1930868 +perft 6 47995002 + +id gentest-6680 +epd 8/1k4b1/8/5N1R/8/3K4/2N5/4b3 b - - +perft 1 24 +perft 2 622 +perft 3 13076 +perft 4 353720 +perft 5 7007680 +perft 6 191215863 + +id gentest-6681 +epd 1k6/7R/8/4bN2/8/3K4/2N5/4b3 w - - +perft 1 32 +perft 2 640 +perft 3 18467 +perft 4 335988 +perft 5 9358591 +perft 6 166818098 + +id gentest-6682 +epd 1k5b/7R/8/5N2/8/3K1N2/8/4b3 b - - +perft 1 16 +perft 2 553 +perft 3 9126 +perft 4 282395 +perft 5 4758008 +perft 6 138972994 + +id gentest-6683 +epd 2k4b/3R4/8/5N2/8/2bK1N2/8/8 w - - +perft 1 32 +perft 2 441 +perft 3 13191 +perft 4 186705 +perft 5 5323211 +perft 6 82247827 + +id gentest-6684 +epd 2k4b/8/7N/3R4/3b4/3K1N2/8/8 b - - +perft 1 18 +perft 2 501 +perft 3 8274 +perft 4 224617 +perft 5 3886648 +perft 6 104064430 + +id gentest-6685 +epd 2k5/8/3R3N/4b3/8/3K1N2/8/6b1 w - - +perft 1 27 +perft 2 523 +perft 3 14075 +perft 4 258582 +perft 5 6927582 +perft 6 126944680 + +id gentest-6686 +epd 8/2k2N2/3R4/4b3/2K5/5N2/8/6b1 b - - +perft 1 21 +perft 2 654 +perft 3 12013 +perft 4 347609 +perft 5 6305650 +perft 6 174672248 + +id gentest-6687 +epd 1k6/5N2/3R4/2b1b3/8/1K3N2/8/8 w - - +perft 1 31 +perft 2 725 +perft 3 21138 +perft 4 443048 +perft 5 12466839 +perft 6 244580266 + +id gentest-6688 +epd 1k6/6b1/4R2N/2b5/8/1K3N2/8/8 b - - +perft 1 25 +perft 2 730 +perft 3 15174 +perft 4 426220 +perft 5 8377653 +perft 6 229021412 + +id gentest-6689 +epd 8/k5b1/7N/2b5/8/1K3N2/8/4R3 w - - +perft 1 29 +perft 2 638 +perft 3 17996 +perft 4 373685 +perft 5 10167277 +perft 6 204878122 + +id gentest-6690 +epd k7/6b1/7N/2b5/3N4/1K6/8/7R b - - +perft 1 17 +perft 2 461 +perft 3 8146 +perft 4 214612 +perft 5 3960658 +perft 6 102967659 + +id gentest-6691 +epd k7/5N2/5b2/8/3b4/1K6/8/7R w - - +perft 1 26 +perft 2 485 +perft 3 11336 +perft 4 224562 +perft 5 5054794 +perft 6 96986706 + +id gentest-6692 +epd k7/b7/5b1R/4N3/8/1K6/8/8 b - - +perft 1 16 +perft 2 416 +perft 3 7132 +perft 4 172263 +perft 5 2990496 +perft 6 70224590 + +id gentest-6693 +epd k7/8/7R/4N3/2K4b/8/5b2/8 w - - +perft 1 24 +perft 2 344 +perft 3 8162 +perft 4 130815 +perft 5 3073747 +perft 6 50896824 + +id gentest-6694 +epd 1k6/8/1R6/4N3/7b/3K4/5b2/8 b - - +perft 1 5 +perft 2 121 +perft 3 1719 +perft 4 39459 +perft 5 642385 +perft 6 14481305 + +id gentest-6695 +epd 2k5/8/1b6/4N3/7b/8/2K5/8 w - - +perft 1 16 +perft 2 324 +perft 3 4453 +perft 4 85917 +perft 5 1056242 +perft 6 20548725 + +id gentest-6696 +epd 8/3k4/1b6/8/7b/8/3K4/8 b - - +perft 1 24 +perft 2 147 +perft 3 3371 +perft 4 18626 +perft 5 419116 +perft 6 2374721 + +id gentest-6697 +epd 8/3k4/8/2b3b1/8/8/8/3K4 w - - +perft 1 3 +perft 2 84 +perft 3 412 +perft 4 10474 +perft 5 49087 +perft 6 1176384 + +id gentest-6698 +epd 8/3k4/8/6b1/8/4b3/8/5K2 b - - +perft 1 23 +perft 2 74 +perft 3 1737 +perft 4 8749 +perft 5 204235 +perft 6 882858 + +id gentest-6699 +epd 4k3/8/8/6b1/5b2/8/4K3/8 w - - +perft 1 6 +perft 2 114 +perft 3 535 +perft 4 11520 +perft 5 61792 +perft 6 1341754 + +id gentest-6700 +epd 5k2/8/8/6b1/4Kb2/8/8/8 b - - +perft 1 19 +perft 2 100 +perft 3 2094 +perft 4 11560 +perft 5 240688 +perft 6 1373445 + +id gentest-6701 +epd 5k2/2b5/8/3K2b1/8/8/8/8 w - - +perft 1 6 +perft 2 136 +perft 3 776 +perft 4 16832 +perft 5 99658 +perft 6 2134293 + +id gentest-6702 +epd 6k1/2b5/8/6b1/8/3K4/8/8 b - - +perft 1 23 +perft 2 140 +perft 3 3082 +perft 4 19123 +perft 5 415054 +perft 6 2421749 + +id gentest-6703 +epd 6k1/8/8/6b1/1bK5/8/8/8 w - - +perft 1 6 +perft 2 129 +perft 3 760 +perft 4 15655 +perft 5 86449 +perft 6 1753862 + +id gentest-6704 +epd 6k1/8/8/8/1K3b2/8/8/8 b - - +perft 1 16 +perft 2 120 +perft 3 1784 +perft 4 11117 +perft 5 162376 +perft 6 1044597 + +id gentest-6705 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-6706 +epd rnbqkbnr/1ppppppp/8/p7/4P1P1/8/PPPP1P1P/RNBQKBNR b KQkq - +perft 1 21 +perft 2 609 +perft 3 14134 +perft 4 407898 +perft 5 10307797 +perft 6 304330115 + +id gentest-6707 +epd rnbqkb1r/1ppppp1p/6pn/p7/4P1P1/7N/PPPP1P1P/RNBQKB1R w KQkq - +perft 1 27 +perft 2 562 +perft 3 16189 +perft 4 381806 +perft 5 11516335 +perft 6 298534994 + +id gentest-6708 +epd rnbqkb1r/1ppp1p1p/4p1pn/p7/3PP1P1/7N/PPP2PBP/RNBQK2R b KQkq - +perft 1 30 +perft 2 990 +perft 3 31020 +perft 4 1046681 +perft 5 33767240 +perft 6 1161309060 + +id gentest-6709 +epd rnbqk2r/1ppp1p1p/4p1pn/p3b3/2PPP1P1/7N/PP3PBP/RNBQK2R w KQkq - +perft 1 36 +perft 2 1161 +perft 3 41648 +perft 4 1367780 +perft 5 48884281 +perft 6 1630769572 + +id gentest-6710 +epd rnbqk2r/1ppp1pbp/4p1pn/p7/2PPP1P1/7N/PP1K1PBP/RNBQR3 b kq - +perft 1 31 +perft 2 997 +perft 3 31778 +perft 4 1064479 +perft 5 34755070 +perft 6 1193557098 + +id gentest-6711 +epd rnbqk2r/1p1p1pbp/4p2n/p1p3p1/2PPP1P1/5P1N/PP1K2BP/RNBQR3 w kq - +perft 1 30 +perft 2 871 +perft 3 27199 +perft 4 817512 +perft 5 26109023 +perft 6 811434183 + +id gentest-6712 +epd rnbqk2r/1p1p1pbp/4p3/p1p1Pnp1/2PP2P1/5P1N/PP1K2BP/RNBQ2R1 b kq - +perft 1 33 +perft 2 958 +perft 3 31368 +perft 4 961184 +perft 5 31525191 +perft 6 1007681445 + +id gentest-6713 +epd r1bqk2r/1p1p1pbp/4p3/p1p1nPp1/2PP4/5P1N/PP1K2BP/RNBQ2R1 w kq - +perft 1 31 +perft 2 983 +perft 3 30614 +perft 4 981359 +perft 5 32127091 +perft 6 1039623969 + +id gentest-6714 +epd r1bqk2r/1p1p1pbp/4p3/p1P1nPp1/3p4/5P1N/PP1K2BP/RNBQR3 b kq - +perft 1 32 +perft 2 887 +perft 3 28297 +perft 4 855714 +perft 5 27394463 +perft 6 879492626 + +id gentest-6715 +epd 2bqk2r/1p1p1pbp/r1n1p3/p1P2Pp1/3p4/5P1N/PP2K1BP/RNBQR3 w k - +perft 1 33 +perft 2 1084 +perft 3 37048 +perft 4 1201831 +perft 5 42726174 +perft 6 1383772378 + +id gentest-6716 +epd 2bqk2r/1p1p1pbp/r1n5/p1P1pPp1/3p4/1QN2P1N/PP2K1BP/R1B1R3 b k - +perft 1 31 +perft 2 1260 +perft 3 37953 +perft 4 1545229 +perft 5 47243183 +perft 6 1924695821 + +id gentest-6717 +epd 2bqkr2/1p1p1p1p/r1n4b/pQP1pPp1/3p4/2N2P1N/PP2K1BP/R1B1R3 w - - +perft 1 41 +perft 2 983 +perft 3 39814 +perft 4 1001678 +perft 5 40841291 +perft 6 1080719250 + +id gentest-6718 +epd 2b1kr2/1p1p1p1p/r1n2q1b/pQP1pPB1/P2p4/2N2P1N/1P2K1BP/R3R3 b - - +perft 1 29 +perft 2 1283 +perft 3 36073 +perft 4 1557583 +perft 5 44511047 +perft 6 1874051619 + +id gentest-6719 +epd 2b1kr2/1p1p1p1p/r1nq3b/pQP2PB1/P2ppN2/2N2P2/1P2K1BP/R3R3 w - - +perft 1 50 +perft 2 1451 +perft 3 67334 +perft 4 2000986 +perft 5 90420788 +perft 6 2747068338 + +id gentest-6720 +epd 2b1kr2/1p1p1p1p/r1nq3b/pQP2PB1/P2p1N2/4pP2/1P1NK1BP/R3R3 b - - +perft 1 27 +perft 2 1233 +perft 3 34936 +perft 4 1530476 +perft 5 44320188 +perft 6 1879554797 + +id gentest-6721 +epd 2b1kr2/1p1p1p1p/r1n5/pQP1qPb1/P2p1N2/4pP2/1P1NK1BP/R1R5 w - - +perft 1 44 +perft 2 1718 +perft 3 70468 +perft 4 2559865 +perft 5 101831080 +perft 6 3558058064 + +id gentest-6722 +epd 2b1kr2/rp1p1p1p/2n3N1/Q1P1qPb1/P2p4/4pP2/1P1NK1BP/R1R5 b - - +perft 1 42 +perft 2 1737 +perft 3 66944 +perft 4 2641284 +perft 5 98903304 +perft 6 3761209870 + +id gentest-6723 +epd 2b1kr2/r2pbp1p/2n3N1/QpP1qP2/PP1p4/4pP2/3NK1BP/R1R5 w - b6 +perft 1 42 +perft 2 1733 +perft 3 66312 +perft 4 2597219 +perft 5 96767010 +perft 6 3673908617 + +id gentest-6724 +epd 2b1kr2/r2pbp1p/2n3N1/QPP2P2/1P1p4/4pP2/3NK1Bq/R3R3 b - - +perft 1 42 +perft 2 1533 +perft 3 60278 +perft 4 2161646 +perft 5 82719713 +perft 6 2933385214 + +id gentest-6725 +epd 1nb1kr2/r2pbp1p/6N1/QPP2P2/1P1p4/5P2/3pK1Bq/R1R5 w - - +perft 1 36 +perft 2 1515 +perft 3 48048 +perft 4 1960924 +perft 5 61576208 +perft 6 2454585292 + +id gentest-6726 +epd 1nb1kr2/r3bp1p/3p2N1/QPP2P2/RP1p4/5P2/3pK1Bq/2R5 b - - +perft 1 47 +perft 2 1372 +perft 3 59381 +perft 4 1679147 +perft 5 69795087 +perft 6 1974475263 + +id gentest-6727 +epd 1nb1kr2/r1Q1bp2/3p2Np/1PP2P2/RP6/3p1P2/3pK1Bq/2R5 w - - +perft 1 6 +perft 2 240 +perft 3 8659 +perft 4 304560 +perft 5 10551308 +perft 6 374047405 + +id gentest-6728 +epd 1nb1k1r1/r1Q1bp2/3p3p/1PP1NP2/RP6/3p1P2/3p1KBq/2R5 b - - +perft 1 50 +perft 2 1709 +perft 3 71896 +perft 4 2333106 +perft 5 95862825 +perft 6 3031020023 + +id gentest-6729 +epd 1n2k3/r1Q1bp2/b2p3p/1PP1NP2/1P6/R2p1Pr1/3p1KBq/2R5 w - - +perft 1 44 +perft 2 1513 +perft 3 54396 +perft 4 1894958 +perft 5 63760710 +perft 6 2266484134 + +id gentest-6730 +epd 1n2k3/r1Q1bp2/b2p3p/RPP1NP2/1P6/2Rp1Pr1/5KBq/3q4 b - - +perft 1 47 +perft 2 1272 +perft 3 50136 +perft 4 1367973 +perft 5 54903943 +perft 6 1518682164 + +id gentest-6731 +epd 1n2k3/r1Q1bN2/b2p3p/RPP2P2/1P6/2Rp1Pr1/4qKB1/7q w - - +perft 1 1 +perft 2 45 +perft 3 1303 +perft 4 48964 +perft 5 1457269 +perft 6 55948795 + +id gentest-6732 +epd 1n1bk3/r1Q2N2/b2P3p/RP3P2/1P6/2Rp1PK1/4q1B1/7q b - - +perft 1 43 +perft 2 1253 +perft 3 47888 +perft 4 1457248 +perft 5 56622952 +perft 6 1760586838 + +id gentest-6733 +epd 1n1bk3/r1Q2N2/b2P1q1p/RP3P2/1P6/2Rp1PK1/8/5B1q w - - +perft 1 40 +perft 2 1269 +perft 3 35056 +perft 4 1243087 +perft 5 35663966 +perft 6 1338062020 + +id gentest-6734 +epd 1n1Qk3/r4N2/P2P1q2/R4P1p/1P6/2Rp1PK1/8/5B1q b - - +perft 1 2 +perft 2 71 +perft 3 2057 +perft 4 49028 +perft 5 1516802 +perft 6 37535619 + +id gentest-6735 +epd 1nq1k3/r4N2/P2P4/R4P1p/1P3K2/2Rp1P2/8/5B1q w - - +perft 1 35 +perft 2 1091 +perft 3 30556 +perft 4 997266 +perft 5 26245591 +perft 6 898148628 + +id gentest-6736 +epd 1nq1k2N/8/r2P4/R3KP1p/1P6/2Rp1P2/8/5B1q b - - +perft 1 30 +perft 2 745 +perft 3 24410 +perft 4 580826 +perft 5 20273942 +perft 6 471612843 + +id gentest-6737 +epd 1nqk3N/8/2rP4/R3KP1p/1P6/2Rp1P2/4B3/7q w - - +perft 1 32 +perft 2 984 +perft 3 25502 +perft 4 842437 +perft 5 20554563 +perft 6 713101452 + +id gentest-6738 +epd 1nqk4/5N2/2rP4/R3KP1p/1PR5/3p1P2/4B3/5q2 b - - +perft 1 2 +perft 2 71 +perft 3 2213 +perft 4 62626 +perft 5 2089577 +perft 6 54759695 + +id gentest-6739 +epd 1nq1k3/R4N2/2rP4/4KP1p/1PR5/3p1P2/4B3/2q5 w - - +perft 1 36 +perft 2 1233 +perft 3 32308 +perft 4 1122603 +perft 5 28107407 +perft 6 999571363 + +id gentest-6740 +epd 1n1qk3/R4N2/2rP4/3K1P1p/1PR2P2/3p4/4B3/2q5 b - - +perft 1 38 +perft 2 1128 +perft 3 39745 +perft 4 1095850 +perft 5 38910383 +perft 6 1018993899 + +id gentest-6741 +epd 1n1qk3/5N2/2rP4/3K1P1p/1PR2P2/8/R7/2q1b3 w - - +perft 1 33 +perft 2 1175 +perft 3 29029 +perft 4 1090847 +perft 5 24997344 +perft 6 966951147 + +id gentest-6742 +epd 1n1qk3/8/2rPK3/5PNp/1PR2q2/8/R7/4b3 b - - +perft 1 43 +perft 2 941 +perft 3 39779 +perft 4 845793 +perft 5 35534131 +perft 6 747325408 + +id gentest-6743 +epd 1n2k3/2q5/2rPK3/5PNp/1PR5/8/2Rq4/4b3 w - - +perft 1 22 +perft 2 900 +perft 3 16987 +perft 4 723161 +perft 5 14446710 +perft 6 620519577 + +id gentest-6744 +epd 1n2k3/2q2N2/2rPK3/5P1p/1P6/8/2R5/4b3 b - - +perft 1 27 +perft 2 446 +perft 3 13491 +perft 4 223018 +perft 5 7034287 +perft 6 116187625 + +id gentest-6745 +epd 1n6/3q1k2/2rP4/3K1P1p/1P6/8/2R5/4b3 w - - +perft 1 17 +perft 2 533 +perft 3 7454 +perft 4 248550 +perft 5 3403824 +perft 6 116612901 + +id gentest-6746 +epd 1n3k2/3q4/2rP4/3K1P1p/1P6/8/5R2/4b3 b - - +perft 1 33 +perft 2 416 +perft 3 14606 +perft 4 195662 +perft 5 6949439 +perft 6 94934000 + +id gentest-6747 +epd 1n3k2/q7/2rP4/3K1P1p/1b6/8/1R6/8 w - - +perft 1 15 +perft 2 645 +perft 3 9270 +perft 4 352764 +perft 5 4986167 +perft 6 184258598 + +id gentest-6748 +epd 1n3k2/q7/3r4/4KP1p/1b6/1R6/8/8 b - - +perft 1 49 +perft 2 544 +perft 3 23774 +perft 4 292460 +perft 5 12034136 +perft 6 150995509 + +id gentest-6749 +epd 1n3k2/3q4/3r4/4KP1p/8/b4R2/8/8 w - - +perft 1 13 +perft 2 497 +perft 3 5640 +perft 4 223360 +perft 5 2620173 +perft 6 103070921 + +id gentest-6750 +epd 1n6/3q1k2/3r4/4KP1p/8/7R/8/8 b - - +perft 1 32 +perft 2 346 +perft 3 12144 +perft 4 135202 +perft 5 4779064 +perft 6 55778186 + +id gentest-6751 +epd 8/3q1k2/2n5/4KP1p/3r4/8/7R/8 w - - +perft 1 0 +perft 2 0 +perft 3 0 +perft 4 0 +perft 5 0 +perft 6 0 + +id gentest-6752 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +id gentest-6753 +epd rnbqkbnr/ppppp1pp/5p2/8/4P3/7P/PPPP1PP1/RNBQKBNR b KQkq - +perft 1 19 +perft 2 551 +perft 3 11273 +perft 4 334578 +perft 5 7545591 +perft 6 230382408 + +id gentest-6754 +epd rnbqkbnr/ppppp1pp/5p2/8/2B1P3/7P/PPPP1PP1/RNBQK1NR w KQ - +perft 1 34 +perft 2 577 +perft 3 19359 +perft 4 373672 +perft 5 12571572 +perft 6 270766188 + +id gentest-6755 +epd rnbqkbnr/ppppp2p/5p2/6p1/2B1P3/5P1P/PPPPN1P1/RNBQK2R b KQ - +perft 1 19 +perft 2 623 +perft 3 12780 +perft 4 416595 +perft 5 9401127 +perft 6 305539216 + +id gentest-6756 +epd rnbqkbnr/pp1pp2p/2p5/3B1pp1/4P3/5P1P/PPPPN1P1/RNBQK2R w KQ - +perft 1 33 +perft 2 701 +perft 3 22671 +perft 4 532304 +perft 5 17059394 +perft 6 435272725 + +id gentest-6757 +epd rnbqkb1r/pp1pp2p/2p2n2/3B1pp1/P3P3/5P1P/1PPPN1PR/RNBQK3 b Q - +perft 1 26 +perft 2 812 +perft 3 21626 +perft 4 666910 +perft 5 18700463 +perft 6 579449439 + +id gentest-6758 +epd rnbqkb1r/pp1pp2p/2p1Bn2/5p2/P3P3/5p1P/1PPPN1PR/RNBQK3 w Q - +perft 1 33 +perft 2 834 +perft 3 25976 +perft 4 700225 +perft 5 21777853 +perft 6 619999435 + +id gentest-6759 +epd rnbqkb1r/pp1pp2p/2p2n2/5p2/P1B1P3/2P4P/1P1PN1pR/RNBQK3 b Q - +perft 1 29 +perft 2 773 +perft 3 23043 +perft 4 642878 +perft 5 20140121 +perft 6 591320262 + +id gentest-6760 +epd rnbqkb1r/pp1pp2p/2p5/7n/P1B1p3/2P4P/1PQPN1pR/RNB1K3 w Q - +perft 1 30 +perft 2 754 +perft 3 21512 +perft 4 605586 +perft 5 17999976 +perft 6 548056574 + +id gentest-6761 +epd rnbqkb1r/pp1pp2p/2p5/7n/P7/1QPp3P/1P1PN1pR/RNB1K3 b Q - +perft 1 26 +perft 2 641 +perft 3 17860 +perft 4 447638 +perft 5 13447951 +perft 6 349747211 + +id gentest-6762 +epd rnbqkb1r/pp1pp2p/2p5/7n/P7/1QPp3n/1P1PNK1R/RNB5 w - - +perft 1 6 +perft 2 152 +perft 3 4253 +perft 4 115747 +perft 5 3282357 +perft 6 96112354 + +id gentest-6763 +epd rnb1kb1r/pp1pp2p/2p5/q6n/P7/1QPp3n/1P1PN1KR/RNB5 b - - +perft 1 36 +perft 2 866 +perft 3 29798 +perft 4 752154 +perft 5 26069237 +perft 6 694792963 + +id gentest-6764 +epd rnbk1b1r/pp1pp2p/2p5/1q5n/P7/Q1Pp3n/1P1PN1KR/RNB5 w - - +perft 1 22 +perft 2 742 +perft 3 16190 +perft 4 547406 +perft 5 13182895 +perft 6 449402466 + +id gentest-6765 +epd rnbk1b1r/pp1p3p/2p1p3/1q5n/P7/1PPp3n/Q2PN1KR/RNB5 b - - +perft 1 41 +perft 2 733 +perft 3 29212 +perft 4 573157 +perft 5 22204593 +perft 6 472663744 + +id gentest-6766 +epd rnbk3r/pp1pb2p/2p1p3/q6n/P7/NPPp3n/Q2PN1KR/R1B5 w - - +perft 1 21 +perft 2 886 +perft 3 18555 +perft 4 756915 +perft 5 17156626 +perft 6 685188357 + +id gentest-6767 +epd rnbk3r/pp1pb2p/2p1p3/6qn/P7/NPPp2Nn/3P2KR/RQB5 b - - +perft 1 45 +perft 2 788 +perft 3 34667 +perft 4 716538 +perft 5 30820203 +perft 6 707719677 + +id gentest-6768 +epd rnbk3r/p2pb2p/2p1p1q1/1p5n/P7/NPPp2Nn/R2P2KR/1QB5 w - - +perft 1 21 +perft 2 915 +perft 3 19729 +perft 4 838025 +perft 5 19654596 +perft 6 820990360 + +id gentest-6769 +epd rn1k3r/pb1pb2p/2p1p1q1/1N5n/P1P5/1P1p2Nn/R2P2KR/1QB5 b - - +perft 1 43 +perft 2 975 +perft 3 40584 +perft 4 995729 +perft 5 40412058 +perft 6 1064506885 + +id gentest-6770 +epd rn1k1r2/pb1pb2p/2p1p3/1NP4n/P7/1P1p2qn/R2P2KR/1QB5 w - - +perft 1 1 +perft 2 51 +perft 3 968 +perft 4 46360 +perft 5 952031 +perft 6 43265626 + +id gentest-6771 +epd rnbk1r2/p2pb2p/2p1p3/1NP4n/P7/1P1p2qn/1R1P3R/1QB4K b - - +perft 1 50 +perft 2 790 +perft 3 37137 +perft 4 653072 +perft 5 29130290 +perft 6 574966041 + +id gentest-6772 +epd rnbk1r2/p2p3p/2pbp3/2P4n/P5q1/1PNp3n/1R1P3R/1QB4K w - - +perft 1 19 +perft 2 990 +perft 3 17405 +perft 4 837906 +perft 5 16376652 +perft 6 746762088 + +id gentest-6773 +epd rnbk1r2/3p3p/2pbp3/p1P4n/PP4q1/2Np3n/QR1P3R/2B4K b - - +perft 1 53 +perft 2 1046 +perft 3 51941 +perft 4 1103806 +perft 5 51977387 +perft 6 1189743213 + +id gentest-6774 +epd rnbk1r2/3p3p/2p1Q3/p1b4n/PP6/2Np2qn/1R1P3R/2B4K w - - +perft 1 40 +perft 2 1914 +perft 3 59010 +perft 4 2694444 +perft 5 80605158 +perft 6 3581584645 + +id gentest-6775 +epd rnbk1rq1/3p3p/2p1Q3/p1b4n/PP6/2Np3n/1R1P3R/2B4K b - - +perft 1 46 +perft 2 1583 +perft 3 67072 +perft 4 2107257 +perft 5 89914869 +perft 6 2774536796 + +id gentest-6776 +epd rnbk1rq1/3p3p/2p5/p1b1Q3/PP4n1/2Np3n/1R1P3R/2B4K w - - +perft 1 40 +perft 2 1648 +perft 3 55348 +perft 4 2335481 +perft 5 75682450 +perft 6 3231481658 + +id gentest-6777 +epd rnbk1r2/3p3p/2p3q1/p1bN4/PP2Q1n1/3p3n/1R1P3R/2B4K b - - +perft 1 51 +perft 2 1639 +perft 3 75377 +perft 4 2437669 +perft 5 109127468 +perft 6 3534792980 + +id gentest-6778 +epd rn1kr3/1b1p3p/2p3q1/p1b5/PP2Q1n1/2Np3n/1R1P3R/2B4K w - - +perft 1 36 +perft 2 1724 +perft 3 55830 +perft 4 2622716 +perft 5 82638001 +perft 6 3805966744 + +id gentest-6779 +epd rn1kr3/1b5p/2p3q1/p1bpQ3/PP4n1/2Np3n/1R1P2KR/2B5 b - - +perft 1 49 +perft 2 1665 +perft 3 67916 +perft 4 2181893 +perft 5 91908969 +perft 6 2862513028 + +id gentest-6780 +epd rn1k3r/1b5p/2p3q1/p1PpQ3/P5n1/2Np4/1R1P2KR/2B3n1 w - - +perft 1 45 +perft 2 1308 +perft 3 46368 +perft 4 1430784 +perft 5 50316837 +perft 6 1621641826 + +id gentest-6781 +epd rn1kq2r/1bQ4p/2p5/p1Pp4/P5n1/2Np4/1R1P3R/2B3nK b - - +perft 1 1 +perft 2 25 +perft 3 811 +perft 4 18254 +perft 5 609359 +perft 6 13551896 + +id gentest-6782 +epd rn5r/1bk4p/1Rp5/p1Pp4/P5n1/2Npq3/3P3R/2B3nK w - - +perft 1 27 +perft 2 926 +perft 3 21545 +perft 4 760941 +perft 5 17282185 +perft 6 622928055 + +id gentest-6783 +epd Rn5r/1b1k3p/2p5/p1Pp4/P5n1/2Npq3/3P3R/2B3nK b - - +perft 1 43 +perft 2 893 +perft 3 34790 +perft 4 688447 +perft 5 25573848 +perft 6 510071155 + +id gentest-6784 +epd bn5r/3k3p/2p5/p1Pp2q1/P5n1/2Np3R/3P4/2B3nK w - - +perft 1 20 +perft 2 738 +perft 3 12648 +perft 4 457705 +perft 5 7655715 +perft 6 274004412 + +id gentest-6785 +epd bn3R1r/3k3p/2p5/p1Pp2q1/P7/2Np4/3P3n/2B3nK b - - +perft 1 33 +perft 2 718 +perft 3 22469 +perft 4 430517 +perft 5 13693717 +perft 6 248924270 + +id gentest-6786 +epd bn3R1r/3k3p/2p5/p1Pp4/P7/3p4/3P3n/1NB2qnK w - - +perft 1 18 +perft 2 464 +perft 3 6528 +perft 4 183045 +perft 5 2737019 +perft 6 80665301 + +id gentest-6787 +epd bnR4r/3k3p/2p5/p1Pp1q2/P7/3p4/3P3n/1NB3K1 b - - +perft 1 31 +perft 2 347 +perft 3 9777 +perft 4 123602 +perft 5 3585763 +perft 6 49312726 + +id gentest-6788 +epd bnR4r/3k3p/2p5/p1Pp4/P7/3p2q1/3P3n/1NB4K w - - +perft 1 12 +perft 2 329 +perft 3 4306 +perft 4 123777 +perft 5 1780398 +perft 6 52301343 + +id gentest-6789 +epd bn5r/3k3p/R2q4/p1Pp4/P7/3p4/3P3n/1NB4K b - - +perft 1 35 +perft 2 485 +perft 3 14678 +perft 4 213237 +perft 5 6733548 +perft 6 104700620 + +id gentest-6790 +epd bnk4r/7p/R3q3/p1Pp4/P7/3p4/3P2Kn/1NB5 w - - +perft 1 17 +perft 2 588 +perft 3 8710 +perft 4 286272 +perft 5 4426952 +perft 6 143065319 + +id gentest-6791 +epd b1k4r/7p/R1n1q3/p1Pp4/P7/3p4/2NP2Kn/2B5 b - - +perft 1 41 +perft 2 649 +perft 3 23559 +perft 4 378186 +perft 5 13291556 +perft 6 221499463 + +id gentest-6792 +epd b1k1r3/7p/2n1q3/R1Pp4/P7/3p4/2NP2Kn/2B5 w - - +perft 1 17 +perft 2 659 +perft 3 9862 +perft 4 385117 +perft 5 5963777 +perft 6 228882182 + +id gentest-6793 +epd b1k2r2/7p/2n1q3/R1Pp4/P7/3p2K1/3P3n/2B1N3 b - - +perft 1 48 +perft 2 520 +perft 3 22014 +perft 4 280857 +perft 5 11313801 +perft 6 161521813 + +id gentest-6794 +epd bnk2r2/7p/8/R1Ppq3/P7/3p2K1/2NP3n/2B5 w - - +perft 1 3 +perft 2 144 +perft 3 1898 +perft 4 82158 +perft 5 1176278 +perft 6 47323819 + +id gentest-6795 +epd bnk5/7p/8/R1Ppq3/P4r2/3p3K/2NP3n/2B5 b - - +perft 1 49 +perft 2 666 +perft 3 29741 +perft 4 430258 +perft 5 17836183 +perft 6 277644857 + +id gentest-6796 +epd b1k5/3n3p/8/R1Ppq3/P2r4/N2p3K/3P3n/2B5 w - - +perft 1 11 +perft 2 408 +perft 3 5124 +perft 4 182829 +perft 5 2616375 +perft 6 93514468 + +id gentest-6797 +epd b1k5/3n3p/2Pq4/R2p4/P1Nr4/3p3K/3P3n/2B5 b - - +perft 1 37 +perft 2 566 +perft 3 17256 +perft 4 280044 +perft 5 9065122 +perft 6 153568900 + +id gentest-6798 +epd b1kq4/7p/2P5/1Rnp4/P1Nr4/3p3K/3P3n/2B5 w - - +perft 1 23 +perft 2 680 +perft 3 12919 +perft 4 402262 +perft 5 7407392 +perft 6 241117216 + +id gentest-6799 +epd bRkq4/7p/2P5/P1np4/2Nr2n1/3p3K/3P4/2B5 b - - +perft 1 2 +perft 2 33 +perft 3 1093 +perft 4 17985 +perft 5 595545 +perft 6 10082339 + +id gentest-6800 +epd bk1q4/3n3p/2P5/P2p4/2Nr2n1/3p3K/1B1P4/8 w - - +perft 1 15 +perft 2 475 +perft 3 7550 +perft 4 238998 +perft 5 3869119 +perft 6 123754382 + +id gentest-6801 +epd bk1q4/3n3p/2P4n/P2p4/2N5/3p3K/3P4/6B1 b - - +perft 1 27 +perft 2 482 +perft 3 11808 +perft 4 204871 +perft 5 5252093 +perft 6 90191512 + +id gentest-6802 +epd 1k1q4/3n1n1p/2b5/P2p4/8/3pN2K/3P4/6B1 w - - +perft 1 15 +perft 2 476 +perft 3 7437 +perft 4 235185 +perft 5 3696844 +perft 6 118264308 + +id gentest-6803 +epd 1k1q4/5n1p/2b5/P2pn3/8/3pN1K1/3P4/6B1 b - - +perft 1 37 +perft 2 565 +perft 3 20031 +perft 4 301797 +perft 5 10363976 +perft 6 153809902 + +id gentest-6804 +epd k7/5n1p/1qb5/P2pnN2/8/3p2K1/3P4/6B1 w - - +perft 1 20 +perft 2 703 +perft 3 12698 +perft 4 427832 +perft 5 7370514 +perft 6 243134493 + +id gentest-6805 +epd k5N1/5n1p/1qb5/P2p4/6n1/3p2K1/3P4/6B1 b - - +perft 1 40 +perft 2 585 +perft 3 20842 +perft 4 305985 +perft 5 10278769 +perft 6 155614377 + +id gentest-6806 +epd k5N1/5n1p/2b5/P2p4/6n1/3p3K/3q4/6B1 w - - +perft 1 14 +perft 2 531 +perft 3 7153 +perft 4 264268 +perft 5 3683162 +perft 6 133608595 + +id gentest-6807 +epd k5N1/5n1p/P1b5/3p4/6n1/3p3K/1q5B/8 b - - +perft 1 45 +perft 2 565 +perft 3 22193 +perft 4 302419 +perft 5 11161344 +perft 6 157989403 + +id gentest-6808 +epd k5N1/2B2n1p/P1b5/2qp4/6n1/3p3K/8/8 w - - +perft 1 17 +perft 2 654 +perft 3 10036 +perft 4 370361 +perft 5 5560781 +perft 6 200185177 + +id gentest-6809 +epd k5N1/4Bn1p/P1b5/2qp4/8/3p3K/7n/8 b - - +perft 1 36 +perft 2 472 +perft 3 16597 +perft 4 226282 +perft 5 7854003 +perft 6 109740648 + +id gentest-6810 +epd k5N1/5n1p/P1bq4/3p4/7B/3p3K/8/5n2 w - - +perft 1 13 +perft 2 471 +perft 3 5551 +perft 4 199924 +perft 5 2538920 +perft 6 90083483 + +id gentest-6811 +epd k7/5n1p/P1bq4/3p1N2/7B/3pn2K/8/8 b - - +perft 1 40 +perft 2 559 +perft 3 21068 +perft 4 304764 +perft 5 11159060 +perft 6 165490444 + +id gentest-6812 +epd k7/5n1p/P1b1q3/3p1N2/8/3p3K/5B2/5n2 w - - +perft 1 13 +perft 2 441 +perft 3 6104 +perft 4 211282 +perft 5 3135450 +perft 6 109077982 + +id gentest-6813 +epd k7/5n1p/P1bB4/3p1N2/8/3p3K/4q3/5n2 b - - +perft 1 38 +perft 2 621 +perft 3 22569 +perft 4 346120 +perft 5 12302765 +perft 6 182879532 + +id gentest-6814 +epd k4B2/5n1p/P7/3p1N2/b7/3p3K/1q6/5n2 w - - +perft 1 18 +perft 2 811 +perft 3 12597 +perft 4 497488 +perft 5 7804170 +perft 6 290296888 + +id gentest-6815 +epd k7/5n1p/P2B4/3p1N2/b7/3p4/1q1n2K1/8 b - - +perft 1 41 +perft 2 860 +perft 3 32431 +perft 4 640260 +perft 5 23411641 +perft 6 432023642 + +id gentest-6816 +epd k7/7p/P1nB4/3p4/b2N4/3p4/1q1n2K1/8 w - - +perft 1 26 +perft 2 933 +perft 3 18980 +perft 4 653712 +perft 5 12472389 +perft 6 424384329 + +id gentest-6817 +epd k7/Pq5p/2nB4/3p4/b7/3p4/3nN1K1/8 b - - +perft 1 38 +perft 2 848 +perft 3 31085 +perft 4 603657 +perft 5 21712541 +perft 6 392603697 + +id gentest-6818 +epd k7/Pq5p/2nB4/3p4/8/1b1p4/6K1/5nN1 w - - +perft 1 19 +perft 2 635 +perft 3 10446 +perft 4 351979 +perft 5 5508215 +perft 6 188788974 + +id gentest-6819 +epd k7/Pq6/2n4p/3p4/7B/1b1p4/6K1/5nN1 b - - +perft 1 34 +perft 2 487 +perft 3 16640 +perft 4 231820 +perft 5 7989179 +perft 6 115630952 + +id gentest-6820 +epd k2B4/Pq6/2n4p/3p4/b7/3p4/6K1/5nN1 w - - +perft 1 15 +perft 2 524 +perft 3 7491 +perft 4 256412 +perft 5 3744208 +perft 6 127664925 + +id gentest-6821 +epd k2B4/Pq6/2n4p/3p4/8/3p1K2/4N3/3b1n2 b - - +perft 1 37 +perft 2 367 +perft 3 12818 +perft 4 162012 +perft 5 5609613 +perft 6 77006608 + +id gentest-6822 +epd k2B4/P7/2n4p/3p4/6K1/1q1p4/4N2n/3b4 w - - +perft 1 6 +perft 2 191 +perft 3 2711 +perft 4 88040 +perft 5 1313733 +perft 6 43364608 + +id gentest-6823 +epd k2B4/n7/7p/3p4/8/1q1p4/4N1Kn/3b4 b - - +perft 1 27 +perft 2 474 +perft 3 14465 +perft 4 237258 +perft 5 7593958 +perft 6 120801746 + +id gentest-6824 +epd k1nB4/8/1q5p/3p4/3N4/3p4/6Kn/3b4 w - - +perft 1 20 +perft 2 727 +perft 3 12175 +perft 4 418451 +perft 5 6870152 +perft 6 231882672 + +id gentest-6825 +epd k1nB4/8/7p/3p4/8/3p4/2N4n/3b2K1 b - - +perft 1 19 +perft 2 291 +perft 3 5576 +perft 4 86948 +perft 5 1700531 +perft 6 26598130 + +id gentest-6826 +epd k2B4/8/1n5p/3p4/b7/3p4/7n/N5K1 w - - +perft 1 12 +perft 2 219 +perft 3 2983 +perft 4 56944 +perft 5 826785 +perft 6 16295130 + +id gentest-6827 +epd k7/8/1nb4p/3p2B1/8/3p4/5K1n/N7 b - - +perft 1 19 +perft 2 281 +perft 3 5584 +perft 4 80434 +perft 5 1647848 +perft 6 24155599 + +id gentest-6828 +epd k3b3/8/1n6/3p2p1/8/3p4/2N2K1n/8 w - - +perft 1 11 +perft 2 224 +perft 3 2115 +perft 4 43234 +perft 5 409847 +perft 6 8491068 + +id gentest-6829 +epd k3b3/8/8/3p2p1/2n5/N2p4/7n/4K3 b - - +perft 1 24 +perft 2 139 +perft 3 3087 +perft 4 21675 +perft 5 456570 +perft 6 3578998 + +id gentest-6830 +epd k3b3/8/1n6/3p2p1/8/N2p1n2/3K4/8 w - - +perft 1 5 +perft 2 119 +perft 3 829 +perft 4 18764 +perft 5 151727 +perft 6 3306086 + +id gentest-6831 +epd k3b3/8/8/1N1p2p1/2n5/3p1n2/8/3K4 b - - +perft 1 26 +perft 2 172 +perft 3 3843 +perft 4 26987 +perft 5 626922 +perft 6 4761149 + +id gentest-6832 +epd 1k2b3/2N5/8/3pn1p1/2n5/3p4/8/3K4 w - - +perft 1 8 +perft 2 183 +perft 3 1346 +perft 4 32599 +perft 5 260711 +perft 6 6144442 + +id gentest-6833 +epd 1k6/8/6b1/3pn1p1/2n5/N2p4/8/3K4 b - - +perft 1 26 +perft 2 145 +perft 3 3663 +perft 4 25483 +perft 5 619215 +perft 6 4648785 + +id gentest-6834 +epd 1k6/5b2/8/3pn1p1/8/N2pn3/3K4/8 w - - +perft 1 8 +perft 2 197 +perft 3 1493 +perft 4 35919 +perft 5 295992 +perft 6 6949389 + +id gentest-6835 +epd 1k6/5b2/2n5/3p2p1/8/N2K4/8/8 b - - +perft 1 19 +perft 2 160 +perft 3 2927 +perft 4 28545 +perft 5 518325 +perft 6 5146765 + +id gentest-6836 +epd 3n4/2k2b2/8/3p2p1/8/3K4/8/1N6 w - - +perft 1 9 +perft 2 152 +perft 3 1463 +perft 4 25573 +perft 5 252916 +perft 6 4522589 + +id gentest-6837 +epd 1k1n4/5b2/8/3p2p1/3K4/8/3N4/8 b - - +perft 1 14 +perft 2 142 +perft 3 2242 +perft 4 22668 +perft 5 377676 +perft 6 3920297 + +id gentest-6838 +epd rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - +perft 1 20 +perft 2 400 +perft 3 8902 +perft 4 197281 +perft 5 4865609 +perft 6 119060324 + +# 6838 positions + +#----------------------------------------------------------------------- +# +#----------------------------------------------------------------------- + diff --git a/data/games/kasparov-deep-blue-1997.pgn b/data/pgn/kasparov-deep-blue-1997.pgn similarity index 100% rename from data/games/kasparov-deep-blue-1997.pgn rename to data/pgn/kasparov-deep-blue-1997.pgn diff --git a/data/pgn/molinari-bordais-1979.pgn b/data/pgn/molinari-bordais-1979.pgn new file mode 100644 index 000000000..d5dee8611 --- /dev/null +++ b/data/pgn/molinari-bordais-1979.pgn @@ -0,0 +1,14 @@ +[Event "cr"] +[Site "cr"] +[Date "1979.??.??"] +[EventDate "?"] +[Round "?"] +[Result "0-1"] +[White "Molinari"] +[Black "Bordais"] +[ECO "B20"] +[WhiteElo "?"] +[BlackElo "?"] +[PlyCount "10"] + +1. e4 c5 2. c4 Nc6 3. Ne2 Nf6 4. Nbc3 Nb4 5. g3 Nd3# 0-1 diff --git a/data/pieces/classic/LICENSE.txt b/data/pieces/classic/LICENSE.txt deleted file mode 100644 index 41de3d228..000000000 --- a/data/pieces/classic/LICENSE.txt +++ /dev/null @@ -1 +0,0 @@ -http://en.wikipedia.org/wiki/User:Cburnett/GFDL_images/Chess diff --git a/data/pieces/classic/black-bishop.svg b/data/pieces/classic/black-bishop.svg deleted file mode 100644 index 4ce248fa5..000000000 --- a/data/pieces/classic/black-bishop.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - diff --git a/data/pieces/classic/black-king.svg b/data/pieces/classic/black-king.svg deleted file mode 100644 index d90dc737a..000000000 --- a/data/pieces/classic/black-king.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - diff --git a/data/pieces/classic/black-knight.svg b/data/pieces/classic/black-knight.svg deleted file mode 100644 index 7f73c43bf..000000000 --- a/data/pieces/classic/black-knight.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - diff --git a/data/pieces/classic/black-pawn.svg b/data/pieces/classic/black-pawn.svg deleted file mode 100644 index 072f2fe12..000000000 --- a/data/pieces/classic/black-pawn.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/data/pieces/classic/black-queen.svg b/data/pieces/classic/black-queen.svg deleted file mode 100644 index 6f1e4a5ae..000000000 --- a/data/pieces/classic/black-queen.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/data/pieces/classic/black-rook.svg b/data/pieces/classic/black-rook.svg deleted file mode 100644 index 337af8f47..000000000 --- a/data/pieces/classic/black-rook.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/data/pieces/classic/white-bishop.svg b/data/pieces/classic/white-bishop.svg deleted file mode 100644 index 0f28d0850..000000000 --- a/data/pieces/classic/white-bishop.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - diff --git a/data/pieces/classic/white-king.svg b/data/pieces/classic/white-king.svg deleted file mode 100644 index 8b2d7b77a..000000000 --- a/data/pieces/classic/white-king.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - diff --git a/data/pieces/classic/white-knight.svg b/data/pieces/classic/white-knight.svg deleted file mode 100644 index 0500630bc..000000000 --- a/data/pieces/classic/white-knight.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - diff --git a/data/pieces/classic/white-pawn.svg b/data/pieces/classic/white-pawn.svg deleted file mode 100644 index 114251638..000000000 --- a/data/pieces/classic/white-pawn.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/data/pieces/classic/white-queen.svg b/data/pieces/classic/white-queen.svg deleted file mode 100644 index 97043c5a1..000000000 --- a/data/pieces/classic/white-queen.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/data/pieces/classic/white-rook.svg b/data/pieces/classic/white-rook.svg deleted file mode 100644 index 8d2d9320c..000000000 --- a/data/pieces/classic/white-rook.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - diff --git a/data/polyglot/SOURCE.txt b/data/polyglot/SOURCE.txt new file mode 100644 index 000000000..1a25ae6a4 --- /dev/null +++ b/data/polyglot/SOURCE.txt @@ -0,0 +1 @@ +performance.bin: http://wbec-ridderkerk.nl/html/download.htm diff --git a/tests/__init__.py b/data/polyglot/empty.bin similarity index 100% rename from tests/__init__.py rename to data/polyglot/empty.bin diff --git a/data/polyglot/lasker-trap.bin b/data/polyglot/lasker-trap.bin new file mode 100644 index 000000000..e04c710d1 Binary files /dev/null and b/data/polyglot/lasker-trap.bin differ diff --git a/data/opening-books/performance.bin b/data/polyglot/performance.bin similarity index 100% rename from data/opening-books/performance.bin rename to data/polyglot/performance.bin diff --git a/data/syzygy/KBBvK.rtbw b/data/syzygy/KBBvK.rtbw new file mode 100644 index 000000000..b98e1eeb2 Binary files /dev/null and b/data/syzygy/KBBvK.rtbw differ diff --git a/data/syzygy/KBBvK.rtbz b/data/syzygy/KBBvK.rtbz new file mode 100644 index 000000000..403c16523 Binary files /dev/null and b/data/syzygy/KBBvK.rtbz differ diff --git a/data/syzygy/KBNvK.rtbw b/data/syzygy/KBNvK.rtbw new file mode 100644 index 000000000..4cb199118 Binary files /dev/null and b/data/syzygy/KBNvK.rtbw differ diff --git a/data/syzygy/KBNvK.rtbz b/data/syzygy/KBNvK.rtbz new file mode 100644 index 000000000..70df87642 Binary files /dev/null and b/data/syzygy/KBNvK.rtbz differ diff --git a/data/syzygy/KBPvK.rtbw b/data/syzygy/KBPvK.rtbw new file mode 100644 index 000000000..511218392 Binary files /dev/null and b/data/syzygy/KBPvK.rtbw differ diff --git a/data/syzygy/KBPvK.rtbz b/data/syzygy/KBPvK.rtbz new file mode 100644 index 000000000..12891540c Binary files /dev/null and b/data/syzygy/KBPvK.rtbz differ diff --git a/data/syzygy/KBvK.rtbw b/data/syzygy/KBvK.rtbw new file mode 100644 index 000000000..95919ca67 Binary files /dev/null and b/data/syzygy/KBvK.rtbw differ diff --git a/data/syzygy/KBvK.rtbz b/data/syzygy/KBvK.rtbz new file mode 100644 index 000000000..d48c79203 Binary files /dev/null and b/data/syzygy/KBvK.rtbz differ diff --git a/data/syzygy/KBvKB.rtbw b/data/syzygy/KBvKB.rtbw new file mode 100644 index 000000000..b4921017e Binary files /dev/null and b/data/syzygy/KBvKB.rtbw differ diff --git a/data/syzygy/KBvKB.rtbz b/data/syzygy/KBvKB.rtbz new file mode 100644 index 000000000..a92413c08 Binary files /dev/null and b/data/syzygy/KBvKB.rtbz differ diff --git a/data/syzygy/KBvKN.rtbw b/data/syzygy/KBvKN.rtbw new file mode 100644 index 000000000..c3b333b40 Binary files /dev/null and b/data/syzygy/KBvKN.rtbw differ diff --git a/data/syzygy/KBvKN.rtbz b/data/syzygy/KBvKN.rtbz new file mode 100644 index 000000000..51f9fb005 Binary files /dev/null and b/data/syzygy/KBvKN.rtbz differ diff --git a/data/syzygy/KBvKP.rtbw b/data/syzygy/KBvKP.rtbw new file mode 100644 index 000000000..e49fcabe4 Binary files /dev/null and b/data/syzygy/KBvKP.rtbw differ diff --git a/data/syzygy/KBvKP.rtbz b/data/syzygy/KBvKP.rtbz new file mode 100644 index 000000000..18474bca2 Binary files /dev/null and b/data/syzygy/KBvKP.rtbz differ diff --git a/data/syzygy/KNNvK.rtbw b/data/syzygy/KNNvK.rtbw new file mode 100644 index 000000000..4285c5097 Binary files /dev/null and b/data/syzygy/KNNvK.rtbw differ diff --git a/data/syzygy/KNNvK.rtbz b/data/syzygy/KNNvK.rtbz new file mode 100644 index 000000000..4ca6f5dfb Binary files /dev/null and b/data/syzygy/KNNvK.rtbz differ diff --git a/data/syzygy/KNPvK.rtbw b/data/syzygy/KNPvK.rtbw new file mode 100644 index 000000000..c32be8534 Binary files /dev/null and b/data/syzygy/KNPvK.rtbw differ diff --git a/data/syzygy/KNPvK.rtbz b/data/syzygy/KNPvK.rtbz new file mode 100644 index 000000000..3b8e09589 Binary files /dev/null and b/data/syzygy/KNPvK.rtbz differ diff --git a/data/syzygy/KNvK.rtbw b/data/syzygy/KNvK.rtbw new file mode 100644 index 000000000..c2d963325 Binary files /dev/null and b/data/syzygy/KNvK.rtbw differ diff --git a/data/syzygy/KNvK.rtbz b/data/syzygy/KNvK.rtbz new file mode 100644 index 000000000..98383d656 Binary files /dev/null and b/data/syzygy/KNvK.rtbz differ diff --git a/data/syzygy/KNvKN.rtbw b/data/syzygy/KNvKN.rtbw new file mode 100644 index 000000000..f73d2b8ca Binary files /dev/null and b/data/syzygy/KNvKN.rtbw differ diff --git a/data/syzygy/KNvKN.rtbz b/data/syzygy/KNvKN.rtbz new file mode 100644 index 000000000..f49eadb2e Binary files /dev/null and b/data/syzygy/KNvKN.rtbz differ diff --git a/data/syzygy/KNvKP.rtbw b/data/syzygy/KNvKP.rtbw new file mode 100644 index 000000000..b3c6354df Binary files /dev/null and b/data/syzygy/KNvKP.rtbw differ diff --git a/data/syzygy/KNvKP.rtbz b/data/syzygy/KNvKP.rtbz new file mode 100644 index 000000000..834790806 Binary files /dev/null and b/data/syzygy/KNvKP.rtbz differ diff --git a/data/syzygy/KPPvK.rtbw b/data/syzygy/KPPvK.rtbw new file mode 100644 index 000000000..b42e7538e Binary files /dev/null and b/data/syzygy/KPPvK.rtbw differ diff --git a/data/syzygy/KPPvK.rtbz b/data/syzygy/KPPvK.rtbz new file mode 100644 index 000000000..ff87ec990 Binary files /dev/null and b/data/syzygy/KPPvK.rtbz differ diff --git a/data/syzygy/KPvK.rtbw b/data/syzygy/KPvK.rtbw new file mode 100644 index 000000000..1af4d64c1 Binary files /dev/null and b/data/syzygy/KPvK.rtbw differ diff --git a/data/syzygy/KPvK.rtbz b/data/syzygy/KPvK.rtbz new file mode 100644 index 000000000..06e9217b4 Binary files /dev/null and b/data/syzygy/KPvK.rtbz differ diff --git a/data/syzygy/KPvKP.rtbw b/data/syzygy/KPvKP.rtbw new file mode 100644 index 000000000..ccd82be06 Binary files /dev/null and b/data/syzygy/KPvKP.rtbw differ diff --git a/data/syzygy/KPvKP.rtbz b/data/syzygy/KPvKP.rtbz new file mode 100644 index 000000000..26e0b2367 Binary files /dev/null and b/data/syzygy/KPvKP.rtbz differ diff --git a/data/syzygy/KQBvK.rtbw b/data/syzygy/KQBvK.rtbw new file mode 100644 index 000000000..43081b095 Binary files /dev/null and b/data/syzygy/KQBvK.rtbw differ diff --git a/data/syzygy/KQBvK.rtbz b/data/syzygy/KQBvK.rtbz new file mode 100644 index 000000000..514c4ebfe Binary files /dev/null and b/data/syzygy/KQBvK.rtbz differ diff --git a/data/syzygy/KQNvK.rtbw b/data/syzygy/KQNvK.rtbw new file mode 100644 index 000000000..24e299098 Binary files /dev/null and b/data/syzygy/KQNvK.rtbw differ diff --git a/data/syzygy/KQNvK.rtbz b/data/syzygy/KQNvK.rtbz new file mode 100644 index 000000000..807c2d9aa Binary files /dev/null and b/data/syzygy/KQNvK.rtbz differ diff --git a/data/syzygy/KQPvK.rtbw b/data/syzygy/KQPvK.rtbw new file mode 100644 index 000000000..a0c1e17f1 Binary files /dev/null and b/data/syzygy/KQPvK.rtbw differ diff --git a/data/syzygy/KQPvK.rtbz b/data/syzygy/KQPvK.rtbz new file mode 100644 index 000000000..62bd00539 Binary files /dev/null and b/data/syzygy/KQPvK.rtbz differ diff --git a/data/syzygy/KQQvK.rtbw b/data/syzygy/KQQvK.rtbw new file mode 100644 index 000000000..b783ac0a4 Binary files /dev/null and b/data/syzygy/KQQvK.rtbw differ diff --git a/data/syzygy/KQQvK.rtbz b/data/syzygy/KQQvK.rtbz new file mode 100644 index 000000000..4941b1e30 Binary files /dev/null and b/data/syzygy/KQQvK.rtbz differ diff --git a/data/syzygy/KQRvK.rtbw b/data/syzygy/KQRvK.rtbw new file mode 100644 index 000000000..c02f117e8 Binary files /dev/null and b/data/syzygy/KQRvK.rtbw differ diff --git a/data/syzygy/KQRvK.rtbz b/data/syzygy/KQRvK.rtbz new file mode 100644 index 000000000..0f776e43c Binary files /dev/null and b/data/syzygy/KQRvK.rtbz differ diff --git a/data/syzygy/KQvK.rtbw b/data/syzygy/KQvK.rtbw new file mode 100644 index 000000000..0f4b29211 Binary files /dev/null and b/data/syzygy/KQvK.rtbw differ diff --git a/data/syzygy/KQvK.rtbz b/data/syzygy/KQvK.rtbz new file mode 100644 index 000000000..507469523 Binary files /dev/null and b/data/syzygy/KQvK.rtbz differ diff --git a/data/syzygy/KQvKB.rtbw b/data/syzygy/KQvKB.rtbw new file mode 100644 index 000000000..452736af3 Binary files /dev/null and b/data/syzygy/KQvKB.rtbw differ diff --git a/data/syzygy/KQvKB.rtbz b/data/syzygy/KQvKB.rtbz new file mode 100644 index 000000000..2e458778a Binary files /dev/null and b/data/syzygy/KQvKB.rtbz differ diff --git a/data/syzygy/KQvKN.rtbw b/data/syzygy/KQvKN.rtbw new file mode 100644 index 000000000..16f0e8cc6 Binary files /dev/null and b/data/syzygy/KQvKN.rtbw differ diff --git a/data/syzygy/KQvKN.rtbz b/data/syzygy/KQvKN.rtbz new file mode 100644 index 000000000..cae49f72b Binary files /dev/null and b/data/syzygy/KQvKN.rtbz differ diff --git a/data/syzygy/KQvKP.rtbw b/data/syzygy/KQvKP.rtbw new file mode 100644 index 000000000..8623bfc8e Binary files /dev/null and b/data/syzygy/KQvKP.rtbw differ diff --git a/data/syzygy/KQvKP.rtbz b/data/syzygy/KQvKP.rtbz new file mode 100644 index 000000000..d5bdcd913 Binary files /dev/null and b/data/syzygy/KQvKP.rtbz differ diff --git a/data/syzygy/KQvKQ.rtbw b/data/syzygy/KQvKQ.rtbw new file mode 100644 index 000000000..fc74242fd Binary files /dev/null and b/data/syzygy/KQvKQ.rtbw differ diff --git a/data/syzygy/KQvKQ.rtbz b/data/syzygy/KQvKQ.rtbz new file mode 100644 index 000000000..ec17fc7b1 Binary files /dev/null and b/data/syzygy/KQvKQ.rtbz differ diff --git a/data/syzygy/KQvKR.rtbw b/data/syzygy/KQvKR.rtbw new file mode 100644 index 000000000..952545511 Binary files /dev/null and b/data/syzygy/KQvKR.rtbw differ diff --git a/data/syzygy/KQvKR.rtbz b/data/syzygy/KQvKR.rtbz new file mode 100644 index 000000000..96e65b542 Binary files /dev/null and b/data/syzygy/KQvKR.rtbz differ diff --git a/data/syzygy/KRBvK.rtbw b/data/syzygy/KRBvK.rtbw new file mode 100644 index 000000000..46d583a1c Binary files /dev/null and b/data/syzygy/KRBvK.rtbw differ diff --git a/data/syzygy/KRBvK.rtbz b/data/syzygy/KRBvK.rtbz new file mode 100644 index 000000000..dfc936e5f Binary files /dev/null and b/data/syzygy/KRBvK.rtbz differ diff --git a/data/syzygy/KRNvK.rtbw b/data/syzygy/KRNvK.rtbw new file mode 100644 index 000000000..a0bbcd82e Binary files /dev/null and b/data/syzygy/KRNvK.rtbw differ diff --git a/data/syzygy/KRNvK.rtbz b/data/syzygy/KRNvK.rtbz new file mode 100644 index 000000000..7050008f8 Binary files /dev/null and b/data/syzygy/KRNvK.rtbz differ diff --git a/data/syzygy/KRPvK.rtbw b/data/syzygy/KRPvK.rtbw new file mode 100644 index 000000000..d01bf0512 Binary files /dev/null and b/data/syzygy/KRPvK.rtbw differ diff --git a/data/syzygy/KRPvK.rtbz b/data/syzygy/KRPvK.rtbz new file mode 100644 index 000000000..50c965a83 Binary files /dev/null and b/data/syzygy/KRPvK.rtbz differ diff --git a/data/syzygy/KRRvK.rtbw b/data/syzygy/KRRvK.rtbw new file mode 100644 index 000000000..3636f988a Binary files /dev/null and b/data/syzygy/KRRvK.rtbw differ diff --git a/data/syzygy/KRRvK.rtbz b/data/syzygy/KRRvK.rtbz new file mode 100644 index 000000000..0dd338aa0 Binary files /dev/null and b/data/syzygy/KRRvK.rtbz differ diff --git a/data/syzygy/KRvK.rtbw b/data/syzygy/KRvK.rtbw new file mode 100644 index 000000000..2a2855ae9 Binary files /dev/null and b/data/syzygy/KRvK.rtbw differ diff --git a/data/syzygy/KRvK.rtbz b/data/syzygy/KRvK.rtbz new file mode 100644 index 000000000..6cd8607aa Binary files /dev/null and b/data/syzygy/KRvK.rtbz differ diff --git a/data/syzygy/KRvKB.rtbw b/data/syzygy/KRvKB.rtbw new file mode 100644 index 000000000..04e113f10 Binary files /dev/null and b/data/syzygy/KRvKB.rtbw differ diff --git a/data/syzygy/KRvKB.rtbz b/data/syzygy/KRvKB.rtbz new file mode 100644 index 000000000..b9b215c5c Binary files /dev/null and b/data/syzygy/KRvKB.rtbz differ diff --git a/data/syzygy/KRvKN.rtbw b/data/syzygy/KRvKN.rtbw new file mode 100644 index 000000000..5c4f88508 Binary files /dev/null and b/data/syzygy/KRvKN.rtbw differ diff --git a/data/syzygy/KRvKN.rtbz b/data/syzygy/KRvKN.rtbz new file mode 100644 index 000000000..3b73c3efe Binary files /dev/null and b/data/syzygy/KRvKN.rtbz differ diff --git a/data/syzygy/KRvKP.rtbw b/data/syzygy/KRvKP.rtbw new file mode 100644 index 000000000..9e50150e1 Binary files /dev/null and b/data/syzygy/KRvKP.rtbw differ diff --git a/data/syzygy/KRvKP.rtbz b/data/syzygy/KRvKP.rtbz new file mode 100644 index 000000000..47725a87c Binary files /dev/null and b/data/syzygy/KRvKP.rtbz differ diff --git a/data/syzygy/KRvKR.rtbw b/data/syzygy/KRvKR.rtbw new file mode 100644 index 000000000..ee2d8750b Binary files /dev/null and b/data/syzygy/KRvKR.rtbw differ diff --git a/data/syzygy/KRvKR.rtbz b/data/syzygy/KRvKR.rtbz new file mode 100644 index 000000000..91f603e35 Binary files /dev/null and b/data/syzygy/KRvKR.rtbz differ diff --git a/data/syzygy/SOURCE.txt b/data/syzygy/SOURCE.txt new file mode 100644 index 000000000..25e8be676 --- /dev/null +++ b/data/syzygy/SOURCE.txt @@ -0,0 +1,3 @@ +HTTP: http://tablebase.sesse.net/syzygy/ +BitTorrent: http://oics.olympuschess.com/tracker/index.php +eMule: http://kirill-kryukov.com/chess/tablebases-online/ diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 000000000..9e5754d4b --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,177 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = _build + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + +clean: + rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/python-chess.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/python-chess.qhc" + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/python-chess" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/python-chess" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/docs/changelog.rst b/docs/changelog.rst new file mode 100644 index 000000000..565b0521d --- /dev/null +++ b/docs/changelog.rst @@ -0,0 +1 @@ +.. include:: ../CHANGELOG.rst diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 000000000..2993e23f4 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# +# This file is part of the python-chess library. +# Copyright (C) 2012-2015 Niklas Fiekas +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import os + +# Import the chess module. +sys.path.insert(0, os.path.abspath('..')) +import chess + +# Autodoc. +extensions = ["sphinx.ext.autodoc"] +autodoc_member_order = 'bysource' + +# The suffix of source filenames. +source_suffix = ".rst" + +# The master toctree document. +master_doc = "index" + +# General information about the project. +project = "python-chess" +copyright = "2014-2015, Niklas Fiekas" + +# The version. +version = chess.__version__ +release = chess.__version__ + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ["_build"] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = "sphinx" + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = "default" diff --git a/docs/core.rst b/docs/core.rst new file mode 100644 index 000000000..44d99e9d0 --- /dev/null +++ b/docs/core.rst @@ -0,0 +1,216 @@ +Core +==== + +Colors +------ + +Constants for the side to move or the color of a piece. + +.. py:data:: chess.WHITE + :annotation: = True + +.. py:data:: chess.BLACK + :annotation: = False + +You can get the opposite color using `not color`. + +Piece types +----------- + +.. py:data:: chess.PAWN + :annotation: = 1 +.. py:data:: chess.KNIGHT + :annotation: = 2 +.. py:data:: chess.BISHOP + :annotation: = 3 +.. py:data:: chess.ROOK + :annotation: = 4 +.. py:data:: chess.QUEEN + :annotation: = 5 +.. py:data:: chess.KING + :annotation: = 6 + +Squares +------- + +.. py:data:: chess.A1 + :annotation: = 0 +.. py:data:: chess.B1 + :annotation: = 1 + +and so on to + +.. py:data:: chess.G8 + :annotation: = 62 +.. py:data:: chess.H8 + :annotation: = 63 + +.. py:data:: chess.SQUARES + :annotation: = [chess.A1, chess.B1, ..., chess.G8, chess.H8] + +.. py:data:: chess.SQUARE_NAMES + :annotation: = ['a1', 'b1', ..., 'g8', 'h8'] + +.. py:data:: chess.FILE_NAMES + :annotation: = ['a', 'b', ..., 'g', 'h'] + +.. py:data:: chess.RANK_NAMES + :annotation: = ['1', '2', ..., '7', '8'] + +.. autofunction:: chess.file_index + +.. autofunction:: chess.rank_index + +.. autofunction:: chess.square + +Pieces +------ + +.. autoclass:: chess.Piece + :members: + + .. py:attribute:: piece_type + + The piece type. + + .. py:attribute:: color + + The piece color. + +Moves +----- + +.. autoclass:: chess.Move + :members: + + .. py:attribute:: from_square + + The source square. + + .. py:attribute:: to_square + + The target square. + + .. py:attribute:: promotion + + The promotion piece type. + +Board +----- + +.. autodata:: chess.STARTING_FEN + +.. autodata:: chess.STARTING_BOARD_FEN + +.. autoclass:: chess.Board + :members: + + .. py:attribute:: turn + + The side to move. + + .. py:attribute:: castling_rights + + Bitmask of the rooks with castling rights. + + >>> white_castle_kingside = board.castling_rights & chess.BB_H1 + + Also see :func:`~chess.Board.has_castling_rights()`, + :func:`~chess.Board.has_kingside_castling_rights()`, + :func:`~chess.Board.has_queenside_castling_rights()`, + :func:`~chess.Board.has_chess960_castling_rights()` and + :func:`~chess.Board.clean_castling_rights()`. + + .. py:attribute:: ep_square + + The potential en passant square on the third or sixth rank or ``0``. + + Use :func:`~chess.Board.has_legal_en_passant()` to test if en passant + capturing would actually be possible on the next move. + + .. py:attribute:: fullmove_number + + Counts move pairs. Starts at `1` and is incremented after every move + of the black side. + + .. py:attribute:: halfmove_clock + + The number of half moves since the last capture or pawn move. + + .. py:attribute:: chess960 + + Whether the board is in Chess960 mode. In Chess960 castling moves are + represented as king moves to the corresponding rook square. + + .. py:attribute:: pseudo_legal_moves + :annotation: = PseudoLegalMoveGenerator(self) + + A dynamic list of pseudo legal moves. + + Pseudo legal moves might leave or put the king in check, but are + otherwise valid. Null moves are not pseudo legal. Castling moves are + only included if they are completely legal. + + For performance moves are generated on the fly and only when nescessary. + The following operations do not just generate everything but map to + more efficient methods. + + >>> len(board.pseudo_legal_moves) + 20 + + >>> bool(board.pseudo_legal_moves) + True + + >>> move in board.pseudo_legal_moves + True + + Wraps :func:`~chess.Board.generate_pseudo_legal_moves()` and + :func:`~chess.Board.is_pseudo_legal()`. + + .. py:attribute:: legal_moves + :annotation: = LegalMoveGenerator(self) + + A dynamic list of completely legal moves, much like the pseudo legal + move list. + + Wraps :func:`~chess.Board.generate_legal_moves()` and + :func:`~chess.Board.is_legal()`. + + .. py:attribute:: move_stack + + The move stack. Use :func:`Board.push() `, + :func:`Board.pop() `, + :func:`Board.peek() ` and + :func:`Board.clear_stack() ` for + manipulation. + +.. autoclass:: chess.BaseBoard + :members: + +Square sets +----------- + +.. autoclass:: chess.SquareSet + :members: + +Common integer masks are: + +.. py:data:: chess.BB_VOID + :annotation: = 0 +.. py:data:: chess.BB_ALL + +.. py:data:: chess.BB_LIGHT_SQUARES +.. py:data:: chess.BB_DARK_SQUARES + +Single squares: + +.. py:data:: chess.BB_SQUARES + :annotation: = [chess.BB_A1, chess.BB_B1, ..., chess.BB_G8, chess.BB_H8] + +Ranks and files: + +.. py:data:: chess.BB_RANKS + :annotation: = [chess.BB_RANK_1, ..., chess.BB_RANK_8] + +.. py:data:: chess.BB_FILES + :annotation: = [chess.BB_FILE_A, ..., chess.BB_FILE_H] diff --git a/docs/gaviota.rst b/docs/gaviota.rst new file mode 100644 index 000000000..a6ca1d97a --- /dev/null +++ b/docs/gaviota.rst @@ -0,0 +1,42 @@ +Gaviota endgame tablebase probing +================================= + +Gaviota tablebases provide **WDL** (win/draw/loss) and **DTM** (depth to mate) +information for all endgame positions with up to 5 pieces. Positions with +castling rights are not included. + +.. autofunction:: chess.gaviota.open_tablebases + +.. autoclass:: chess.gaviota.PythonTablebases + :members: + +backports.lzma +-------------- + +For Python versions before 3.3 you have to install ``backports.lzma`` in order +to use the pure Python probing code. + +.. code-block:: shell + + sudo apt-get install liblzma-dev libpython2.7-dev + pip install backports.lzma + +libgtb +------ + +For faster access you can build and install +a `shared library `_. +Otherwise the pure Python probing code is used. + +.. code-block:: shell + + git clone https://github.com/michiguel/Gaviota-Tablebases.git + cd Gaviota-Tablebases + make + sudo make install + + +.. autofunction:: chess.gaviota.open_tablebases_native + +.. autoclass:: chess.gaviota.NativeTablebases + :members: diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 000000000..8b6804e29 --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,21 @@ +.. include:: ../README.rst + +Contents +-------- + +.. toctree:: + :maxdepth: 2 + + core + pgn + polyglot + gaviota + syzygy + uci + changelog + +Indices and tables +------------------ + +* :ref:`genindex` +* :ref:`search` diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 000000000..54f1b75b0 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,242 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set BUILDDIR=_build +set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . +set I18NSPHINXOPTS=%SPHINXOPTS% . +if NOT "%PAPER%" == "" ( + set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% + set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% +) + +if "%1" == "" goto help + +if "%1" == "help" ( + :help + echo.Please use `make ^` where ^ is one of + echo. html to make standalone HTML files + echo. dirhtml to make HTML files named index.html in directories + echo. singlehtml to make a single large HTML file + echo. pickle to make pickle files + echo. json to make JSON files + echo. htmlhelp to make HTML files and a HTML help project + echo. qthelp to make HTML files and a qthelp project + echo. devhelp to make HTML files and a Devhelp project + echo. epub to make an epub + echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter + echo. text to make text files + echo. man to make manual pages + echo. texinfo to make Texinfo files + echo. gettext to make PO message catalogs + echo. changes to make an overview over all changed/added/deprecated items + echo. xml to make Docutils-native XML files + echo. pseudoxml to make pseudoxml-XML files for display purposes + echo. linkcheck to check all external links for integrity + echo. doctest to run all doctests embedded in the documentation if enabled + goto end +) + +if "%1" == "clean" ( + for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i + del /q /s %BUILDDIR%\* + goto end +) + + +%SPHINXBUILD% 2> nul +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +if "%1" == "html" ( + %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/html. + goto end +) + +if "%1" == "dirhtml" ( + %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. + goto end +) + +if "%1" == "singlehtml" ( + %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. + goto end +) + +if "%1" == "pickle" ( + %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the pickle files. + goto end +) + +if "%1" == "json" ( + %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the JSON files. + goto end +) + +if "%1" == "htmlhelp" ( + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run HTML Help Workshop with the ^ +.hhp project file in %BUILDDIR%/htmlhelp. + goto end +) + +if "%1" == "qthelp" ( + %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run "qcollectiongenerator" with the ^ +.qhcp project file in %BUILDDIR%/qthelp, like this: + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\python-chess.qhcp + echo.To view the help file: + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\python-chess.ghc + goto end +) + +if "%1" == "devhelp" ( + %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. + goto end +) + +if "%1" == "epub" ( + %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The epub file is in %BUILDDIR%/epub. + goto end +) + +if "%1" == "latex" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdf" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf + cd %BUILDDIR%/.. + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdfja" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf-ja + cd %BUILDDIR%/.. + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "text" ( + %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The text files are in %BUILDDIR%/text. + goto end +) + +if "%1" == "man" ( + %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The manual pages are in %BUILDDIR%/man. + goto end +) + +if "%1" == "texinfo" ( + %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. + goto end +) + +if "%1" == "gettext" ( + %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The message catalogs are in %BUILDDIR%/locale. + goto end +) + +if "%1" == "changes" ( + %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes + if errorlevel 1 exit /b 1 + echo. + echo.The overview file is in %BUILDDIR%/changes. + goto end +) + +if "%1" == "linkcheck" ( + %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck + if errorlevel 1 exit /b 1 + echo. + echo.Link check complete; look for any errors in the above output ^ +or in %BUILDDIR%/linkcheck/output.txt. + goto end +) + +if "%1" == "doctest" ( + %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest + if errorlevel 1 exit /b 1 + echo. + echo.Testing of doctests in the sources finished, look at the ^ +results in %BUILDDIR%/doctest/output.txt. + goto end +) + +if "%1" == "xml" ( + %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The XML files are in %BUILDDIR%/xml. + goto end +) + +if "%1" == "pseudoxml" ( + %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. + goto end +) + +:end diff --git a/docs/pgn.rst b/docs/pgn.rst new file mode 100644 index 000000000..6989b9a06 --- /dev/null +++ b/docs/pgn.rst @@ -0,0 +1,123 @@ +PGN parsing and writing +======================= + +Game model +---------- + +Games are represented as a tree of moves. Each `GameNode` can have extra +information such as comments. The root node of a game +(`Game` extends `GameNode`) also holds general information, such as game +headers. + +.. autoclass:: chess.pgn.Game + :members: + + .. py:attribute:: headers + + A `collections.OrderedDict()` of game headers. + + .. py:attribute:: errors + + A list of illegal or ambiguous move errors encountered while parsing + the game. + +.. autoclass:: chess.pgn.GameNode + :members: + + .. py:attribute:: parent + + The parent node or `None` if this is the root node of the game. + + .. py:attribute:: move + + The move leading to this node or `None` if this is the root node of the + game. + + .. py:attribute:: nags + :annotation: = set() + + A set of NAGs as integers. NAGs always go behind a move, so the root + node of the game can have none. + + .. py:attribute:: comment + :annotation: = '' + + A comment that goes behind the move leading to this node. Comments + that occur before any move are assigned to the root node. + + .. py:attribute:: starting_comment + :annotation: = '' + + A comment for the start of a variation. Only nodes that + actually start a variation (`starts_variation()`) can have a starting + comment. The root node can not have a starting comment. + + .. py:attribute:: variations + + A list of child nodes. + +Parsing +------- + +.. autofunction:: chess.pgn.read_game + +.. autofunction:: chess.pgn.scan_headers + +.. autofunction:: chess.pgn.scan_offsets + +Writing +------- + +If you want to export your game game with all headers, comments and variations +you can use: + +>>> print(game) +[Event "?"] +[Site "?"] +[Date "????.??.??"] +[Round "?"] +[White "?"] +[Black "?"] +[Result "*"] + +1. e4 e5 { Comment } * + +Remember that games in files should be separated with extra blank lines. + +>>> print(game, file=handle, end="\n\n") + +Use the :class:`~chess.pgn.StringExporter()` or +:class:`~chess.pgn.FileExporter()` visitors if you need more control. + +Visitors +-------- + +Visitors are an advanced concept for game tree traversal. + +.. autoclass:: chess.pgn.BaseVisitor + :members: + +The following visitors are readily available. + +.. autoclass:: chess.pgn.GameModelCreator + :members: + +.. autoclass:: chess.pgn.StringExporter + :members: + +.. autoclass:: chess.pgn.FileExporter + :members: + +NAGs +---- + +Numeric anotation glyphs describe moves and positions using standardized codes +that are understood by many chess programs. During PGN parsing, annotations +like ``!``, ``?``, ``!!``, etc. are also converted to NAGs. + +.. autodata:: chess.pgn.NAG_GOOD_MOVE +.. autodata:: chess.pgn.NAG_MISTAKE +.. autodata:: chess.pgn.NAG_BRILLIANT_MOVE +.. autodata:: chess.pgn.NAG_BLUNDER +.. autodata:: chess.pgn.NAG_SPECULATIVE_MOVE +.. autodata:: chess.pgn.NAG_DUBIOUS_MOVE diff --git a/docs/polyglot.rst b/docs/polyglot.rst new file mode 100644 index 000000000..ca3a6b62d --- /dev/null +++ b/docs/polyglot.rst @@ -0,0 +1,33 @@ +Polyglot opening book reading +============================= + +.. autofunction:: chess.polyglot.open_reader + +.. autoclass:: chess.polyglot.Entry + :members: + + .. py:attribute:: key + + The Zobrist hash of the position. + + .. py:attribute:: raw_move + + The raw binary representation of the move. Use the + :func:`~chess.polyglot.Entry.move()` method to extract a move object + from this. + + .. py:attribute:: weight + + An integer value that can be used as the weight for this entry. + + .. py:attribute:: learn + + Another integer value that can be used for extra information. + +.. autoclass:: chess.polyglot.MemoryMappedReader + :members: + +.. py:data:: chess.POLYGLOT_RANDOM_ARRAY + :annotation: = [0x9D39247E33776D41, ..., 0xF8D626AAAF278509] + + Array of 781 polyglot compatible pseudo random values for Zobrist hashing. diff --git a/docs/syzygy.rst b/docs/syzygy.rst new file mode 100644 index 000000000..f23f21970 --- /dev/null +++ b/docs/syzygy.rst @@ -0,0 +1,11 @@ +Syzygy endgame tablebase probing +================================ + +Syzygy tablebases provide **WDL** (win/draw/loss) and **DTZ** (distance to +zero) information for all endgame positions with up to 6 pieces. Positions +with castling rights are not included. + +.. autofunction:: chess.syzygy.open_tablebases + +.. autoclass:: chess.syzygy.Tablebases + :members: diff --git a/docs/uci.rst b/docs/uci.rst new file mode 100644 index 000000000..4df70ab7a --- /dev/null +++ b/docs/uci.rst @@ -0,0 +1,185 @@ +UCI engine communication +======================== + +The `Universal Chess Interface`_ is a protocol for communicating with engines. + +.. autofunction:: chess.uci.popen_engine + +.. autofunction:: chess.uci.spur_spawn_engine + +.. autoclass:: chess.uci.Engine + :members: terminate, kill, is_alive + + .. py:attribute:: process + + The underlying operating system process. + + .. py:attribute:: name + + The name of the engine. Conforming engines should send this as + *id name* when they receive the initial *uci* command. + + .. py:attribute:: author + + The author, as sent via *id author*. Just like the name. + + .. py:attribute:: options + + A case insensitive dictionary of :ref:`options`. The engine should send + available options when it receives the initial *uci* command. + + .. py:attribute:: uciok + + :class:`threading.Event()` that will be set as soon as *uciok* was + received. By then :data:`~chess.uci.Engine.name`, + :data:`~chess.uci.Engine.author` and :data:`~chess.uci.Engine.options` + should be available. + + .. py:attribute:: return_code + + The return code of the operating system process. + + .. py:attribute:: terminated + + :class:`threading.Event()` that will be set as soon as the underyling + operating system process is terminated and the + :data:`~chess.uci.Engine.return_code` is available. + +UCI commands +------------ + +.. autoclass:: chess.uci.Engine + :members: uci, debug, isready, setoption, ucinewgame, position, go, stop, + ponderhit, quit + +:exc:`~chess.uci.EngineTerminatedException` is raised if the engine process is +no longer alive. + +Asynchronous communication +-------------------------- + +By default all operations are executed synchronously and their result is +returned. For example + +>>> engine.go(movetime=2000) +BestMove(bestmove=Move.from_uci('e2e4'), ponder=None) + +will take about 2000 milliseconds. All UCI commands have an optional +*async_callback* argument. They will then immediately return a `Future`_ +and continue. + +>>> command = engine.go(movetime=2000, async_callback=True) +>>> command.done() +False +>>> command.result() # Synchronously wait for the command to finish +BestMove(bestmove=Move.from_uci('e2e4'), ponder=None) +>>> command.done() +True + +Instead of just passing *async_callback=True* a callback function may be +passed. It will be invoked **possibly on a different thread** as soon as the +command is completed. It takes the command future as a single argument. + +>>> def on_go_finished(command): +... # Will likely be executed on a different thread. +... bestmove, ponder = command.result() +... +>>> command = engine.go(movetime=2000, async_callback=on_go_finished) + +Note about castling moves +------------------------- + +There are different ways castling moves may be encoded. The normal way to do it +is ``e1g1`` for short castling. The same move would be ``e1h1`` in +*UCI_Chess960* mode. + +This is abstracted away by the UCI module, but if the engine supports it, it +is recommended to enable enable *UCI_Chess960* mode. + +>>> engine.setoption({"UCI_Chess960": True}) + +Info handler +------------ + +.. autoclass:: chess.uci.Score + :members: + + .. py:attribute:: cp + + Evaluation in centipawns or ``None``. + + .. py:attribute:: mate + + Mate in x or ``None``. Negative if the engine thinks it is going to be + mated. + + .. py:attribute:: lowerbound + + If the score is not exact but only a lowerbound. + + .. py:attribute:: upperbound + + If the score is only an upperbound. + +.. autoclass:: chess.uci.InfoHandler + :members: + + .. py:attribute:: info + + The default implementation stores all received information in this + dictionary. To get a consistent snapshot use the object as if it were + a :class:`threading.Lock()`. + + >>> # Start thinking. + >>> engine.go(infinite=True, async_callback=True) + + >>> # Wait a moment, then access a consistent snapshot. + >>> time.sleep(3) + >>> with info_handler: + ... if 1 in info_handler.info["score"]: + ... print("Score: ", info_handler.info["score"][1].cp) + ... print("Mate: ", info_handler.info["score"][1].mate) + Score: 34 + Mate: None + +.. _options: + +Options +------- + +.. autoclass:: chess.uci.Option + + .. py:attribute:: name + + The name of the option. + + .. py:attribute:: type + + The type of the option. + + Officially documented types are ``check`` for a boolean value, ``spin`` + for an integer value between a minimum and a maximum, ``combo`` for an + enumeration of predefined string values (one of which can be selected), + ``button`` for an action and ``string`` for a textfield. + + .. py:attribute:: default + + The default value of the option. + + There is no need to send a *setoption* command with the defaut value. + + .. py:attribute:: min + + The minimum integer value of a *spin* option. + + .. py:attribute:: max + + The maximum integer value of a *spin* option. + + .. py:attribute:: var + + A list of allows string values for a *combo* option. + + +.. _Universal Chess Interface: https://chessprogramming.wikispaces.com/UCI +.. _Future: https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.Future diff --git a/examples/bratko_kopec.py b/examples/bratko_kopec.py new file mode 100755 index 000000000..474074f92 --- /dev/null +++ b/examples/bratko_kopec.py @@ -0,0 +1,173 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# This file is part of the python-chess library. +# Copyright (C) 2012-2015 Niklas Fiekas +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from __future__ import print_function + +import chess +import chess.uci +import time +import textwrap +import argparse +import itertools +import logging + +try: + from StringIO import StringIO # Python 2 +except ImportError: + from io import StringIO # Python 3 + + +def test_epd(engine, epd, movetime): + position = chess.Board() + epd_info = position.set_epd(epd) + + engine.ucinewgame() + engine.position(position) + + enginemove, pondermove = engine.go(movetime=movetime) + + if enginemove in epd_info["bm"]: + print("%s (expecting %s): +1" % ( + epd_info.get("id", position.fen()), + " or ".join(position.san(bm) for bm in epd_info["bm"]))) + return 1.0 + else: + print("%s (expecting %s): +0 (got %s)" % ( + epd_info.get("id", position.fen()), + " or ".join(position.san(bm) for bm in epd_info["bm"]), + position.san(enginemove))) + return 0.0 + + +def test_epd_with_fractional_scores(engine, epd, movetime): + info_handler = chess.uci.InfoHandler() + engine.info_handlers.append(info_handler) + + position = chess.Board() + epd_info = position.set_epd(epd) + + engine.ucinewgame() + engine.position(position) + + # Search in background + search = engine.go(infinite=True, async_callback=True) + + score = 0.0 + + print("%s (expecting %s):" % ( + epd_info.get("id", position.fen()), + " or ".join(position.san(bm) for bm in epd_info["bm"])), end=" ") + + for step in range(0, 3): + time.sleep(movetime / 4000.0) + + # Assess the current principal variation. + with info_handler as info: + if 1 in info["pv"] and len(info["pv"][1]) >= 1: + if info["pv"][1][0] in epd_info["bm"]: + score = 1.0 / (4 - step) + print("(%s)" % position.san(info["pv"][1][0]), end=" ") + else: + print("(no pv)", end=" ") + + # Assess the final best move by the engine. + time.sleep(movetime / 4000.0) + engine.stop() + enginemove, pondermove = search.result() + if enginemove in epd_info["bm"]: + score = 1.0 + + print("%s | +%g" % (position.san(enginemove), score)) + + engine.info_handlers.remove(info_handler) + return score + + +if __name__ == "__main__": + bratko_kopec = StringIO(textwrap.dedent("""\ + % Default Bratko-Kopec testsuite. + 1k1r4/pp1b1R2/3q2pp/4p3/2B5/4Q3/PPP2B2/2K5 b - - bm Qd1+; id "BK.01"; + 3r1k2/4npp1/1ppr3p/p6P/P2PPPP1/1NR5/5K2/2R5 w - - bm d5; id "BK.02"; + 2q1rr1k/3bbnnp/p2p1pp1/2pPp3/PpP1P1P1/1P2BNNP/2BQ1PRK/7R b - - bm f5; id "BK.03"; + rnbqkb1r/p3pppp/1p6/2ppP3/3N4/2P5/PPP1QPPP/R1B1KB1R w KQkq - bm e6; id "BK.04"; + r1b2rk1/2q1b1pp/p2ppn2/1p6/3QP3/1BN1B3/PPP3PP/R4RK1 w - - bm Nd5 a4; id "BK.05"; + 2r3k1/pppR1pp1/4p3/4P1P1/5P2/1P4K1/P1P5/8 w - - bm g6; id "BK.06"; + 1nk1r1r1/pp2n1pp/4p3/q2pPp1N/b1pP1P2/B1P2R2/2P1B1PP/R2Q2K1 w - - bm Nf6; id "BK.07"; + 4b3/p3kp2/6p1/3pP2p/2pP1P2/4K1P1/P3N2P/8 w - - bm f5; id "BK.08"; + 2kr1bnr/pbpq4/2n1pp2/3p3p/3P1P1B/2N2N1Q/PPP3PP/2KR1B1R w - - bm f5; id "BK.09"; + 3rr1k1/pp3pp1/1qn2np1/8/3p4/PP1R1P2/2P1NQPP/R1B3K1 b - - bm Ne5; id "BK.10"; + 2r1nrk1/p2q1ppp/bp1p4/n1pPp3/P1P1P3/2PBB1N1/4QPPP/R4RK1 w - - bm f4; id "BK.11"; + r3r1k1/ppqb1ppp/8/4p1NQ/8/2P5/PP3PPP/R3R1K1 b - - bm Bf5; id "BK.12"; + r2q1rk1/4bppp/p2p4/2pP4/3pP3/3Q4/PP1B1PPP/R3R1K1 w - - bm b4; id "BK.13"; + rnb2r1k/pp2p2p/2pp2p1/q2P1p2/8/1Pb2NP1/PB2PPBP/R2Q1RK1 w - - bm Qd2 Qe1; id "BK.14"; + 2r3k1/1p2q1pp/2b1pr2/p1pp4/6Q1/1P1PP1R1/P1PN2PP/5RK1 w - - bm Qxg7+; id "BK.15"; + r1bqkb1r/4npp1/p1p4p/1p1pP1B1/8/1B6/PPPN1PPP/R2Q1RK1 w kq - bm Ne4; id "BK.16"; + r2q1rk1/1ppnbppp/p2p1nb1/3Pp3/2P1P1P1/2N2N1P/PPB1QP2/R1B2RK1 b - - bm h5; id "BK.17"; + r1bq1rk1/pp2ppbp/2np2p1/2n5/P3PP2/N1P2N2/1PB3PP/R1B1QRK1 b - - bm Nb3; id "BK.18"; + 3rr3/2pq2pk/p2p1pnp/8/2QBPP2/1P6/P5PP/4RRK1 b - - bm Rxe4; id "BK.19"; + r4k2/pb2bp1r/1p1qp2p/3pNp2/3P1P2/2N3P1/PPP1Q2P/2KRR3 w - - bm g4; id "BK.20"; + 3rn2k/ppb2rpp/2ppqp2/5N2/2P1P3/1P5Q/PB3PPP/3RR1K1 w - - bm Nh6; id "BK.21"; + 2r2rk1/1bqnbpp1/1p1ppn1p/pP6/N1P1P3/P2B1N1P/1B2QPP1/R2R2K1 b - - bm Bxe4; id "BK.22"; + r1bqk2r/pp2bppp/2p5/3pP3/P2Q1P2/2N1B3/1PP3PP/R4RK1 b kq - bm f6; id "BK.23"; + r2qnrnk/p2b2b1/1p1p2pp/2pPpp2/1PP1P3/PRNBB3/3QNPPP/5RK1 w - - bm f4; id "BK.24"; + """)) + + # Parse command line arguments. + parser = argparse.ArgumentParser(description="Run an EPD test suite with an UCI engine.") + parser.add_argument("-e", "--engine", required=True, + help="The UCI engine under test.") + parser.add_argument("epd", nargs="*", type=argparse.FileType("r"), default=[bratko_kopec], + help="EPD test suites. Will default to Bratko-Kopec if none given.") + parser.add_argument("-t", "--movetime", default=1000, type=int, + help="Time to move in milliseconds.") + parser.add_argument("-s", "--simple", dest="test_epd", action="store_const", + default=test_epd_with_fractional_scores, + const=test_epd, + help="Run in simple mode without fractional scores.") + parser.add_argument("-d", "--debug", action="store_true", + help="Show debug logs.") + args = parser.parse_args() + + # Configure logger. + logging.basicConfig(level=logging.DEBUG if args.debug else logging.WARNING) + + # Open engine. + engine = chess.uci.popen_engine(args.engine) + engine.uci() + + # Run each test line. + score = 0.0 + count = 0 + + for epd in itertools.chain(*args.epd): + print(epd.rstrip()) + + # Skip comments and empty lines. + epd = epd.strip() + if not epd or epd.startswith("#") or epd.startswith("%"): + continue + + # Run the actual test. + score += args.test_epd(engine, epd, args.movetime) + count += 1 + + engine.quit() + + print("-------------------------------") + print("%g / %d" % (score, count)) diff --git a/examples/push_san.py b/examples/push_san.py new file mode 100755 index 000000000..0ba9da99f --- /dev/null +++ b/examples/push_san.py @@ -0,0 +1,126 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# This file is part of the python-chess library. +# Copyright (C) 2012-2015 Niklas Fiekas +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from __future__ import print_function + +import chess +import timeit + + +def play_immortal_game(): + board = chess.Board() + + # 1.e4 e5 + board.push_san("e4") + board.push_san("e5") + + # 2.f4 exf4 + board.push_san("f4") + board.push_san("exf4") + + # 3.Bc4 Qh4+ + board.push_san("Bc4") + board.push_san("Qh4+") + + # 4.Kf1 b5?! + board.push_san("Kf1") + board.push_san("b5") + + # 5.Bxb5 Nf6 + board.push_san("Bxb5") + board.push_san("Nf6") + + # 6.Nf3 Qh6 + board.push_san("Nf3") + board.push_san("Qh6") + + # 7.d3 Nh5 + board.push_san("d3") + board.push_san("Nh5") + + # 8.Nh4 Qg5 + board.push_san("Nh4") + board.push_san("Qg5") + + # 9.Nf5 c6 + board.push_san("Nf5") + board.push_san("c6") + + # 10.g4 Nf6 + board.push_san("g4") + board.push_san("Nf6") + + # 11.Rg1! cxb5? + board.push_san("Rg1") + board.push_san("cxb5") + + # 12.h4! Qg6 + board.push_san("h4") + board.push_san("Qg6") + + # 13.h5 Qg5 + board.push_san("h5") + board.push_san("Qg5") + + # 14.Qf3 Ng8 + board.push_san("Qf3") + board.push_san("Ng8") + + # 15.Bxf4 Qf6 + board.push_san("Bxf4") + board.push_san("Qf6") + + # 16.Nc3 Bc5 + board.push_san("Nc3") + board.push_san("Bc5") + + # 17.Nd5 Qxb2 + board.push_san("Nd5") + board.push_san("Qxb2") + + # 18.Bd6! Bxg1? + board.push_san("Bd6") + board.push_san("Bxg1") + + # 19.e5! Qxa1+ + board.push_san("e5") + board.push_san("Qxa1+") + + # 20.Ke2 Na6 + board.push_san("Ke2") + board.push_san("Na6") + + # 21.Nxg7+ Kd8 + board.push_san("Nxg7+") + board.push_san("Kd8") + + # 22.Qf6+! Nxf6 + board.push_san("Qf6+") + board.push_san("Nxf6") + + # 23.Be7# 1-0 + board.push_san("Be7#") + assert board.is_checkmate() + + +if __name__ == "__main__": + print(timeit.timeit( + stmt="play_immortal_game()", + setup="from __main__ import play_immortal_game", + number=100)) diff --git a/libchess/attacker_generator.cc b/libchess/attacker_generator.cc deleted file mode 100644 index a222f15d4..000000000 --- a/libchess/attacker_generator.cc +++ /dev/null @@ -1,201 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#include "attacker_generator.h" - -namespace chess { - -AttackerGenerator::AttackerGenerator(const Position& position, char color, const Square& target) - : m_target(target) -{ - if (!target.is_valid()) { - throw new std::invalid_argument("target"); - } - - if (color != 'b' && color != 'w') { - throw new std::invalid_argument("color"); - } - - m_position = new Position(position); - m_color = color; - m_source_index = 0; -} - -AttackerGenerator::~AttackerGenerator() { - delete m_position; -} - -int AttackerGenerator::__len__() { - int count = 0; - for (int index = 0; index < 64; index++) { - if (__contains__(Square(index))) { - count++; - } - } - return count; -} - -bool AttackerGenerator::__nonzero__() { - // Generate attackers until one is found. - for (int index = 0; index < 64; index++) { - if (__contains__(Square(index))) { - return true; - } - } - return false; -} - -AttackerGenerator& AttackerGenerator::__iter__() { - m_source_index = 0; - return *this; -} - -bool AttackerGenerator::__contains__(const Square& source) { - Piece piece = m_position->get(source); - if (!piece.is_valid() || piece.color() != m_color) { - return false; - } - - const int attacks[] = { - 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 20, 0, - 0, 20, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 20, 0, 0, - 0, 0, 20, 0, 0, 0, 0, 24, 0, 0, 0, 0, 20, 0, 0, 0, - 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 20, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 0, 0, 24, 0, 0, 20, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 20, 2, 24, 2, 20, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 53, 56, 53, 2, 0, 0, 0, 0, 0, 0, - 24, 24, 24, 24, 24, 24, 56, 0, 56, 24, 24, 24, 24, 24, 24, 0, - 0, 0, 0, 0, 0, 2, 53, 56, 53, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 20, 2, 24, 2, 20, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 0, 0, 24, 0, 0, 20, 0, 0, 0, 0, 0, - 0, 0, 0, 20, 0, 0, 0, 24, 0, 0, 0, 20, 0, 0, 0, 0, - 0, 0, 20, 0, 0, 0, 0, 24, 0, 0, 0, 0, 20, 0, 0, 0, - 0, 20, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 20, 0, 0, - 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 20 - }; - - const int rays[] = { - 17, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 15, 0, - 0, 17, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 15, 0, 0, - 0, 0, 17, 0, 0, 0, 0, 16, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 17, 0, 0, 0, 16, 0, 0, 0, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 16, 0, 0, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 17, 0, 16, 0, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 16, 15, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, 1, 1, 0, -1, -1, -1, -1, -1, -1, -1, 0, - 0, 0, 0, 0, 0, 0, -15, -16, -17, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -15, 0, -16, 0, -17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -15, 0, 0, -16, 0, 0, -17, 0, 0, 0, 0, 0, - 0, 0, 0, -15, 0, 0, 0, -16, 0, 0, 0, -17, 0, 0, 0, 0, - 0, 0, -15, 0, 0, 0, 0, -16, 0, 0, 0, 0, -17, 0, 0, 0, - 0, -15, 0, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, -17, 0, 0, - -15, 0, 0, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, 0, -17 - }; - - int shift = 0; - switch (piece.type()) { - case 'p': - shift = 0; - break; - case 'n': - shift = 1; - break; - case 'b': - shift = 2; - break; - case 'r': - shift = 3; - break; - case 'q': - shift = 4; - break; - case 'k': - shift = 5; - break; - } - - int difference = source.x88_index() - m_target.x88_index(); - int index = difference + 119; - - if (attacks[index] & (1 << shift)) { - // Handle pawns. - if (piece.type() == 'p') { - if (difference > 0) { - if (piece.color() == 'w') { - return true; - } - } else { - if (piece.color() == 'b') { - return true; - } - } - return false; - } - - // Handle knights and king. - if (piece.type() == 'n' || piece.type() == 'k') { - return true; - } - - // Handle the others. - int offset = rays[index]; - int j = source.x88_index() + offset; - bool blocked = false; - while (j != m_target.x88_index()) { - if (m_position->get(Square::from_x88_index(j)).is_valid()) { - blocked = true; - } - j += offset; - } - return !blocked; - } - - return false; -} - -bool AttackerGenerator::has_more() { - for (int i = m_source_index; i < 64; i++) { - if (__contains__(Square(i))) { - return true; - } - } - return false; -} - -Square AttackerGenerator::next() { - while (m_source_index < 64) { - Square square(m_source_index++); - if (__contains__(square)) { - return square; - } - } - - throw std::logic_error("Called AttackerGenerator::next() although there are no more attacks."); -} - -Square AttackerGenerator::python_next() { - while (m_source_index < 64) { - Square square(m_source_index++); - if (__contains__(square)) { - return square; - } - } - - PyErr_SetNone(PyExc_StopIteration); - throw boost::python::error_already_set(); -} - -} // namespace chess diff --git a/libchess/attacker_generator.h b/libchess/attacker_generator.h deleted file mode 100644 index 3bd00c0c9..000000000 --- a/libchess/attacker_generator.h +++ /dev/null @@ -1,53 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#ifndef LIBCHESS_ATTACKER_GENERATOR_H -#define LIBCHESS_ATTACKER_GENERATOR_H - -#include "position.h" - -namespace chess { - -class Position; - -/** - * \brief Enumerates attackers of a given side on a specific square of the - * given position. - */ -class AttackerGenerator : boost::noncopyable { -public: - AttackerGenerator(const Position& position, char color, const Square& target); - ~AttackerGenerator(); - - int __len__(); - bool __nonzero__(); - AttackerGenerator& __iter__(); - bool __contains__(const Square& square); - - bool has_more(); - Square next(); - Square python_next(); - -private: - char m_color; - Position* m_position; - Square m_target; - int m_source_index; -}; - -} // namespace chess - -#endif // LIBCHESS_ATTACKER_GENERATOR_H diff --git a/libchess/legal_move_generator.cc b/libchess/legal_move_generator.cc deleted file mode 100644 index e0d5ad613..000000000 --- a/libchess/legal_move_generator.cc +++ /dev/null @@ -1,111 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#include "legal_move_generator.h" - -namespace chess { - -LegalMoveGenerator::LegalMoveGenerator(const Position& position) { - m_position = new Position(position); - m_pseudo_legal_moves = m_position->get_pseudo_legal_moves(); - m_len = -1; - m_current = 0; -} - -LegalMoveGenerator::~LegalMoveGenerator() { - delete m_position; - delete m_pseudo_legal_moves; -} - -int LegalMoveGenerator::__len__() { - if (m_len == -1) { - m_pseudo_legal_moves->__iter__(); - - int counter = 0; - while (m_pseudo_legal_moves->has_more()) { - if (would_be_valid_if_pseudo_legal(m_pseudo_legal_moves->next())) { - counter++; - } - } - m_len = counter; - - m_pseudo_legal_moves->__iter__(); - } - return m_len; -} - -bool LegalMoveGenerator::__nonzero__() { - if (m_len == 0) { - return false; - } - - m_pseudo_legal_moves->__iter__(); - - while (m_pseudo_legal_moves->has_more()) { - if (would_be_valid_if_pseudo_legal(m_pseudo_legal_moves->next())) { - return true; - } - } - - m_len = 0; - return false; -} - -LegalMoveGenerator& LegalMoveGenerator::__iter__() { - m_current = 0; - m_pseudo_legal_moves->__iter__(); - return *this; -} - -bool LegalMoveGenerator::__contains__(const Move& move) { - if (!m_pseudo_legal_moves->__contains__(move)) { - return false; - } else { - return would_be_valid_if_pseudo_legal(move); - } -} - -Move LegalMoveGenerator::next() { - while (true) { - Move move = m_pseudo_legal_moves->next(); - if (would_be_valid_if_pseudo_legal(move)) { - m_current++; - return move; - } - } -} - -Move LegalMoveGenerator::python_next() { - while (true) { - Move move = m_pseudo_legal_moves->python_next(); - if (would_be_valid_if_pseudo_legal(move)) { - m_current++; - return move; - } - } -} - -bool LegalMoveGenerator::has_more() { - return m_current < __len__(); -} - -bool LegalMoveGenerator::would_be_valid_if_pseudo_legal(const Move& move) const { - Position position = Position(*m_position); - position.make_unvalidated_move_fast(move); - return !position.is_king_attacked(m_position->turn()); -} - -} // namespace chess diff --git a/libchess/legal_move_generator.h b/libchess/legal_move_generator.h deleted file mode 100644 index 6610baddc..000000000 --- a/libchess/legal_move_generator.h +++ /dev/null @@ -1,57 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#ifndef LIBCHESS_LEGAL_MOVE_GENERATOR_H -#define LIBCHESS_LEGAL_MOVE_GENERATOR_H - -#include - -#include "position.h" -#include "pseudo_legal_move_generator.h" - -namespace chess { - -class Position; - -/** - * \brief Enumerates legal moves in a given position. - */ -class LegalMoveGenerator : boost::noncopyable { -public: - LegalMoveGenerator(const Position& position); - ~LegalMoveGenerator(); - - int __len__(); - bool __nonzero__(); - LegalMoveGenerator& __iter__(); - bool __contains__(const Move& move); - - Move next(); - Move python_next(); - bool has_more(); - -private: - bool would_be_valid_if_pseudo_legal(const Move& move) const; - - Position* m_position; - PseudoLegalMoveGenerator* m_pseudo_legal_moves; - int m_len; - int m_current; -}; - -} // namespace chess - -#endif // LIBCHESS_LEGAL_MOVE_GENERATOR_H diff --git a/libchess/libchess.cc b/libchess/libchess.cc deleted file mode 100644 index 27811f472..000000000 --- a/libchess/libchess.cc +++ /dev/null @@ -1,205 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#include -#include - -#include "libchess.h" -#include "uint.h" - -namespace chess { - -char opposite_color(char color) { - if (color == 'w') { - return 'b'; - } else if (color == 'b') { - return 'w'; - } else { - throw new std::invalid_argument("color"); - } -} - -void python_translate_invalid_argument(const std::invalid_argument *e) { - std::string str = boost::str( - boost::format("Invalid argument: %1%.") % std::string(e->what())); - PyErr_SetString(PyExc_ValueError, str.c_str()); -} - -void python_translate_logic_error(const std::logic_error *e) { - PyErr_SetString(PyExc_RuntimeError, e->what()); -} - -} // namespace chess - -BOOST_PYTHON_MODULE(libchess) { - -using namespace boost::python; -using namespace chess; - -scope().attr("__author__") = "Niklas Fiekas"; -scope().attr("__copyright__") = "Copyright 2013, Niklas Fiekas"; -scope().attr("__license__") = "GPL"; -scope().attr("__version__") = "0.0.4"; -scope().attr("__maintainer__") = "Niklas Fiekas"; -scope().attr("__email__") = "niklas.fiekas@tu-clausthal.de"; -scope().attr("__status__") = "Development"; - -register_exception_translator(&python_translate_logic_error); -register_exception_translator(&python_translate_invalid_argument); - -def("opposite_color", &opposite_color); - -scope().attr("START_FEN") = START_FEN; - -class_("Piece", init()) - .add_property("symbol", &Piece::symbol) - .add_property("color", &Piece::color) - .add_property("type", &Piece::type) - .add_property("full_color", &Piece::full_color) - .add_property("full_type", &Piece::full_type) - .def(self == other()) - .def(self != other()) - .def(self_ns::str(self)) - .def("__repr__", &Piece::__repr__) - .def("__hash__", &Piece::__hash__) - .def("from_color_and_type", &Piece::from_color_and_type) - .staticmethod("from_color_and_type"); - -class_("Square", init()) - .add_property("rank", &Square::rank) - .add_property("file", &Square::file) - .add_property("index", &Square::index) - .add_property("x88_index", &Square::x88_index) - .add_property("name", &Square::name) - .add_property("file_name", &Square::file_name) - .add_property("rank_name", &Square::rank_name) - .def("is_dark", &Square::is_dark) - .def("is_light", &Square::is_light) - .def("is_backrank", &Square::is_backrank) - .def("is_seventh", &Square::is_seventh) - .def(self == other()) - .def(self != other()) - .def(self_ns::str(self)) - .def("__repr__", &Square::__repr__) - .def("__hash__", &Square::__hash__) - .def("from_rank_and_file", &Square::from_rank_and_file) - .staticmethod("from_rank_and_file") - .def("from_index", &Square::from_index) - .staticmethod("from_index") - .def("from_x88_index", &Square::from_x88_index) - .staticmethod("from_x88_index"); - -class_("Move", init()) - .def(init()) - .add_property("source", &Move::source) - .add_property("target", &Move::target) - .add_property("promotion", &Move::promotion) - .add_property("full_promotion", &Move::full_promotion) - .add_property("uci", &Move::uci) - .def("is_promotion", &Move::is_promotion) - .def(self == other()) - .def(self != other()) - .def(self_ns::str(self)) - .def("__repr__", &Move::__repr__) - .def("__hash__", &Move::__hash__) - .def("from_uci", &Move::from_uci) - .staticmethod("from_uci"); - -class_("MoveInfo", init()) - .def(init()) - .add_property("move", &MoveInfo::move, &MoveInfo::set_move) - .add_property("piece", &MoveInfo::piece, &MoveInfo::set_piece) - .add_property("captured", &MoveInfo::python_captured, &MoveInfo::python_set_captured) - .add_property("is_enpassant", &MoveInfo::is_enpassant, &MoveInfo::set_is_enpassant) - .add_property("is_kingside_castle", &MoveInfo::is_kingside_castle, &MoveInfo::set_is_kingside_castle) - .add_property("is_queenside_castle", &MoveInfo::is_queenside_castle, &MoveInfo::set_is_queenside_castle) - .add_property("is_castle", &MoveInfo::is_castle) - .add_property("is_check", &MoveInfo::is_check, &MoveInfo::set_is_check) - .add_property("is_checkmate", &MoveInfo::is_checkmate, &MoveInfo::set_is_checkmate) - .add_property("san", &MoveInfo::san, &MoveInfo::set_san); - -class_("Position") - .def(init()) - .def(init()) - .def("reset", &Position::reset) - .def("clear_board", &Position::clear_board) - .add_property("turn", &Position::turn, &Position::set_turn) - .def("toggle_turn", &Position::toggle_turn) - .add_property("ep_file", &Position::python_ep_file, &Position::python_set_ep_file) - .add_property("half_moves", &Position::half_moves, &Position::set_half_moves) - .add_property("ply", &Position::ply, &Position::set_ply) - .def("get_ep_square", &Position::python_get_ep_square) - .def("get_pseudo_legal_moves", &Position::get_pseudo_legal_moves, return_value_policy()) - .def("get_legal_moves", &Position::get_legal_moves, return_value_policy()) - .def("get_attackers", &Position::get_attackers, return_value_policy()) - .def("get_king", &Position::python_get_king) - .def("is_king_attacked", &Position::is_king_attacked) - .def("is_check", &Position::is_check) - .def("is_checkmate", &Position::is_checkmate) - .def("is_stalemate", &Position::is_stalemate) - .def("is_insufficient_material", &Position::is_insufficient_material) - .def("is_game_over", &Position::is_game_over) - .def("has_kingside_castling_right", &Position::has_kingside_castling_right) - .def("has_queenside_castling_right", &Position::has_queenside_castling_right) - .def("set_kingside_castling_right", &Position::set_kingside_castling_right) - .def("set_queenside_castling_right", &Position::set_queenside_castling_right) - .def("could_have_kingside_castling_right", &Position::could_have_kingside_castling_right) - .def("could_have_queenside_castling_right", &Position::could_have_queenside_castling_right) - .def("make_move", &Position::make_move) - .def("make_move_fast", &Position::make_move_fast) - .def("get_move_from_san", &Position::get_move_from_san) - .def("make_move_from_san", &Position::make_move_from_san) - .add_property("fen", &Position::fen, &Position::set_fen) - .def(self == other()) - .def(self != other()) - .def(self_ns::str(self)) - .def("__getitem__", &Position::__getitem__) - .def("__setitem__", &Position::__setitem__) - .def("__delitem__", &Position::__delitem__) - .def("__repr__", &Position::__repr__) - .def("__hash__", &Position::__hash__); - -class_("PseudoLegalMoveGenerator", init()) - .def("__iter__", &PseudoLegalMoveGenerator::__iter__, return_internal_reference<>()) - .def("__contains__", &PseudoLegalMoveGenerator::__contains__) - .def("__len__", &PseudoLegalMoveGenerator::__len__) - .def("__nonzero__", &PseudoLegalMoveGenerator::__nonzero__) - .def("next", &PseudoLegalMoveGenerator::python_next); - -class_("AttackerGenerator", init()) - .def("__iter__", &AttackerGenerator::__iter__, return_internal_reference<>()) - .def("__contains__", &AttackerGenerator::__contains__) - .def("__len__", &AttackerGenerator::__len__) - .def("__nonzero__", &AttackerGenerator::__nonzero__) - .def("next", &AttackerGenerator::python_next); - -class_("LegalMoveGenerator", init()) - .def("__len__", &LegalMoveGenerator::__len__) - .def("__nonzero__", &LegalMoveGenerator::__nonzero__) - .def("__iter__", &LegalMoveGenerator::__iter__, return_internal_reference<>()) - .def("__contains__", &LegalMoveGenerator::__contains__) - .def("next", &LegalMoveGenerator::python_next); - -class_("PolyglotOpeningBookEntry", init()) - .def(init()) - .def(init()) - .add_property("key", &PolyglotOpeningBookEntry::key) - .add_property("raw_move", &PolyglotOpeningBookEntry::raw_move) - .add_property("move", &PolyglotOpeningBookEntry::move) - .add_property("weight", &PolyglotOpeningBookEntry::weight, &PolyglotOpeningBookEntry::set_weight) - .add_property("learn", &PolyglotOpeningBookEntry::learn, &PolyglotOpeningBookEntry::set_learn); - -} // BOOST_PYTHON_MODULE(libchess) diff --git a/libchess/libchess.h b/libchess/libchess.h deleted file mode 100644 index bc5c7e52c..000000000 --- a/libchess/libchess.h +++ /dev/null @@ -1,104 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -/** - * \mainpage - * libchess is a high level C++ and Python chess library. - * https://github.com/niklasf/libchess - * - * \section Introduction - * This is the scholars mate in libchess: - * \code{.py} - * pos = libchess.Position() - * pos.make_move_from_san("e4") - * pos.make_move_from_san("e5") - * pos.make_move_from_san("Qh5") - * pos.make_move_from_san("Nc6") - * pos.make_move_from_san("Nf6") - * pos.make_move_from_san("Qxf7") - * assert pos.is_checkmate() - * \endcode - * - * \section Features - * - Legal move generator and move validation. - * \code{.py} - * assert not libchess.Move.from_uci("e8a1") in pos.get_legal_moves() - * \endcode - * - Detects checkmates and stalemates. - * \code{.py} - * assert not pos.is_stalemate() - * \endcode - * - Detects checks and can enumerate attackers and defenders of a square. - * \code{.py} - * assert pos.is_check() - * assert libchess.Square("f7") in pos.get_attackers("w", libchess.Square("e8")) - * \endcode - * - Parses and creates SAN representation of moves. - * \code{.py} - * pos = libchess.Position() - * move_info = pos.make_move(libchess.Move.from_uci("e2e4")) - * assert "e4" == move_info.san - * \endcode - * - Parses and creates FENs. - * \code{.py} - * pos = libchess.Position() - * assert pos.fen == "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1" - * - * pos = libchess.Position("8/8/8/2k5/4K3/8/8/8 w - - 4 45") - * assert pos["c5"] == libchess.Piece("k") - * \endcode - * - * \section Building - * cmake, libboost-regex-dev and libboost-python-dev are required. - * \code - * cmake . - * make - * sudo python setup.py install - * \endcode - * - * \section Performance - * libchess is not intended to be used by chess engines where performanc is - * critical. The goal is rather to create a simple and high level chess - * library. - * That said: Large parts are in C++ for a reason. libchess generates, - * validates and plays moves about 50 times faster than - * https://github.com/niklasf/python-chess/. - * - * \section License - * libchess is licensed under the GPL3. See the LICENSE file for the full - * copyright and license information. - */ - -#ifndef LIBCHESS_LIBCHESS_H -#define LIBCHESS_LIBCHESS_H - -#include "piece.h" -#include "square.h" -#include "move.h" -#include "move_info.h" -#include "attacker_generator.h" -#include "legal_move_generator.h" -#include "pseudo_legal_move_generator.h" -#include "position.h" -#include "polyglot_opening_book_entry.h" - -namespace chess { - -char opposite_color(char color); - -} // namespace chess - -#endif // LIBCHESS_LIBCHESS_H diff --git a/libchess/move.cc b/libchess/move.cc deleted file mode 100644 index 021968204..000000000 --- a/libchess/move.cc +++ /dev/null @@ -1,158 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#include "move.h" - -#include - -namespace chess { - -Move::Move(const Square& source, const Square& target, char promotion) : m_source(source), m_target(target) { - if (!source.is_valid()) { - throw std::invalid_argument("source"); - } - - if (!target.is_valid()) { - throw std::invalid_argument("target"); - } - - switch (promotion) { - case 'r': - case 'n': - case 'b': - case 'q': - m_promotion = promotion; - break; - default: - throw std::invalid_argument("promotion"); - } -} - -Move::Move(const Square& source, const Square& target) : m_source(source), m_target(target) { - if (!source.is_valid()) { - throw std::invalid_argument("source"); - } - - if (!target.is_valid()) { - throw std::invalid_argument("target"); - } - - - m_promotion = 0; -} - -Move::Move(const std::string& uci) : m_source(Square(0)), m_target(Square(0)) { - if (uci.length() == 4 || uci.length() == 5) { - m_source = Square(uci.substr(0, 2)); - m_target = Square(uci.substr(2, 2)); - if (uci.length() == 5) { - m_promotion = uci.at(4); - switch (m_promotion) { - case 'r': - case 'n': - case 'b': - case 'q': - break; - default: - throw std::invalid_argument("uci"); - } - } else { - m_promotion = 0; - } - } - else { - throw new std::invalid_argument("uci"); - } -} - -Move::Move(const Move& move) { - m_source = move.m_source; - m_target = move.m_target; - m_promotion = move.m_promotion; -} - -Square Move::source() const { - return m_source; -} - -Square Move::target() const { - return m_target; -} - -char Move::promotion() const { - return m_promotion; -} - -std::string Move::full_promotion() const { - switch (m_promotion) { - case 'r': - return "rook"; - case 'b': - return "bishop"; - case 'n': - return "knight"; - case 'q': - return "queen"; - } - - throw std::logic_error("Unknown promotion type."); -} - -std::string Move::uci() const { - if (m_promotion) { - return m_source.name() + m_target.name() + m_promotion; - } else { - return m_source.name() + m_target.name(); - } -} - -bool Move::is_promotion() const { - return m_promotion != 0; -} - -std::string Move::__repr__() const { - return boost::str(boost::format("Move.from_uci('%s')") % uci()); -} - -int Move::__hash__() const { - return m_source.__hash__() + 100 * m_target.__hash__() + 10000 * m_promotion; -} - -Move& Move::operator=(const Move& rhs) { - m_source = rhs.m_source; - m_target = rhs.m_target; - m_promotion = rhs.m_promotion; - return *this; -} - -bool Move::operator==(const Move& rhs) const { - return m_source == rhs.m_source && m_target == rhs.m_target && m_promotion == rhs.m_promotion; -} - -bool Move::operator!=(const Move& rhs) const { - return m_source != rhs.m_source || m_target != rhs.m_target || m_promotion != rhs.m_promotion; -} - -Move Move::from_uci(const std::string& uci) { - return Move(uci); -} - -std::ostream& operator<<(std::ostream& out, const Move& move) { - out << move.uci(); - return out; -} - -} // namespace chess diff --git a/libchess/move.h b/libchess/move.h deleted file mode 100644 index a9d3d55cb..000000000 --- a/libchess/move.h +++ /dev/null @@ -1,63 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#ifndef LIBCHESS_MOVE_H -#define LIBCHESS_MOVE_H - -#include "square.h" - -#include - -namespace chess { - -/** - * \brief An immutable move. - */ -class Move { -public: - Move(const Square& source, const Square& target, char promotion); - Move(const Square& source, const Square& target); - Move(const std::string& uci); - Move(const Move& move); - - Square source() const; - Square target() const; - char promotion() const; - std::string full_promotion() const; - std::string uci() const; - - bool is_promotion() const; - - std::string __repr__() const; - int __hash__() const; - - Move& operator=(const Move& rhs); - bool operator==(const Move& rhs) const; - bool operator!=(const Move& rhs) const; - - static Move from_uci(const std::string& uci); - -private: - Square m_source; - Square m_target; - char m_promotion; -}; - -std::ostream& operator<<(std::ostream &out, const Move& move); - -} // namespace chess - -#endif // LIBCHESS_MOVE_H diff --git a/libchess/move_info.cc b/libchess/move_info.cc deleted file mode 100644 index 605f70ee9..000000000 --- a/libchess/move_info.cc +++ /dev/null @@ -1,148 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#include "move_info.h" - -namespace chess { - -MoveInfo::MoveInfo(const Move& move, const Piece& piece) : m_move(move), m_piece(piece), m_san("") { - if (!piece.is_valid()) { - throw new std::invalid_argument("piece"); - } - - m_captured = Piece(); - m_is_enpassant = false; - m_is_kingside_castle = false; - m_is_queenside_castle = false; - m_is_check = false; - m_is_checkmate = false; -} - -MoveInfo::MoveInfo(const MoveInfo& move_info) : m_move(move_info.m_move), m_piece(move_info.m_piece), m_captured(move_info.m_captured), m_san(move_info.m_san) { - m_is_enpassant = move_info.m_is_enpassant; - m_is_kingside_castle = move_info.m_is_kingside_castle; - m_is_queenside_castle = move_info.m_is_queenside_castle; - m_is_check = move_info.m_is_check; - m_is_checkmate = move_info.m_is_checkmate; -} - -Move MoveInfo::move() const { - return m_move; -} - -void MoveInfo::set_move(const Move& move) { - m_move = move; -} - -Piece MoveInfo::piece() const { - return m_piece; -} - -void MoveInfo::set_piece(const Piece& piece) { - m_piece = piece; -} - -Piece MoveInfo::captured() const { - return m_captured; -} - -boost::python::object MoveInfo::python_captured() const { - if (m_captured.is_valid()) { - return boost::python::object(m_captured); - } else { - return boost::python::object(); - } -} - -void MoveInfo::set_captured(const Piece& captured) { - m_captured = captured; -} - -void MoveInfo::python_set_captured(const boost::python::object& captured) { - if (captured.ptr() == Py_None) { - m_captured = Piece(); - } else { - m_captured = boost::python::extract(captured); - } -} - -bool MoveInfo::is_enpassant() const { - return m_is_enpassant; -} - -void MoveInfo::set_is_enpassant(bool is_enpassant) { - m_is_enpassant = is_enpassant; -} - -bool MoveInfo::is_kingside_castle() const { - return m_is_kingside_castle; -} - -void MoveInfo::set_is_kingside_castle(bool is_kingside_castle) { - m_is_kingside_castle = is_kingside_castle; -} - -bool MoveInfo::is_queenside_castle() const { - return m_is_queenside_castle; -} - -void MoveInfo::set_is_queenside_castle(bool is_queenside_castle) { - m_is_queenside_castle = is_queenside_castle; -} - -bool MoveInfo::is_castle() const { - return m_is_kingside_castle || m_is_kingside_castle; -} - -bool MoveInfo::is_check() const { - return m_is_check; -} - -void MoveInfo::set_is_check(bool is_check) { - m_is_check = is_check; -} - -bool MoveInfo::is_checkmate() const { - return m_is_checkmate; -} - -void MoveInfo::set_is_checkmate(bool is_checkmate) { - m_is_checkmate = is_checkmate; -} - -std::string MoveInfo::san() const { - return m_san; -} - -void MoveInfo::set_san(const std::string& san) { - m_san = san; -} - -MoveInfo& MoveInfo::operator=(const MoveInfo& rhs) { - m_move = rhs.m_move; - m_piece = rhs.m_piece; - m_captured = rhs.m_captured; - m_is_enpassant = rhs.m_is_enpassant; - m_is_kingside_castle = rhs.m_is_kingside_castle; - m_is_queenside_castle = rhs.m_is_queenside_castle; - m_is_check = rhs.m_is_check; - m_is_checkmate = rhs.m_is_checkmate; - m_san = rhs.m_san; - - return *this; -} - -} // namespace chess diff --git a/libchess/move_info.h b/libchess/move_info.h deleted file mode 100644 index f84191a53..000000000 --- a/libchess/move_info.h +++ /dev/null @@ -1,82 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#ifndef LIBCHESS_MOVE_INFO_H -#define LIBCHESS_MOVE_INFO_H - -#include - -#include "piece.h" -#include "move.h" - -namespace chess { - -/** - * \brief Information about a move made in a position. - */ -class MoveInfo { -public: - MoveInfo(const Move& move, const Piece& piece); - MoveInfo(const MoveInfo& move_info); - - Move move() const; - void set_move(const Move& move); - - Piece piece() const; - void set_piece(const Piece& piece); - - Piece captured() const; - boost::python::object python_captured() const; - void set_captured(const Piece& captured); - void python_set_captured(const boost::python::object& captured); - - bool is_enpassant() const; - void set_is_enpassant(bool is_enpassant); - - bool is_kingside_castle() const; - void set_is_kingside_castle(bool is_kingside_castle); - - bool is_queenside_castle() const; - void set_is_queenside_castle(bool is_queenside_castle); - - bool is_castle() const; - - bool is_check() const; - void set_is_check(bool is_check); - - bool is_checkmate() const; - void set_is_checkmate(bool is_checkmate); - - std::string san() const; - void set_san(const std::string& san); - - MoveInfo& operator=(const MoveInfo& rhs); - -private: - Move m_move; - Piece m_piece; - Piece m_captured; - bool m_is_enpassant; - bool m_is_kingside_castle; - bool m_is_queenside_castle; - bool m_is_check; - bool m_is_checkmate; - std::string m_san; -}; - -} // namespace chess - -#endif // LIBCHESS_MOVE_INFO_H diff --git a/libchess/piece.cc b/libchess/piece.cc deleted file mode 100644 index 1808c8e9f..000000000 --- a/libchess/piece.cc +++ /dev/null @@ -1,140 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#include "piece.h" - -#include -#include - -namespace chess { - -Piece::Piece() { - m_symbol = 0; -} - -Piece::Piece(char symbol) { - switch (tolower(symbol)) { - case 'p': - case 'n': - case 'b': - case 'r': - case 'q': - case 'k': - m_symbol = symbol; - break; - default: - throw std::invalid_argument("symbol"); - } -} - -Piece::Piece(const Piece& piece) { - m_symbol = piece.m_symbol; -} - -char Piece::color() const { - if (m_symbol == 0) { - throw std::logic_error("Called color() of null piece."); - } else if (m_symbol == toupper(m_symbol)) { - return 'w'; - } else { - return 'b'; - } -} - -char Piece::type() const { - if (m_symbol == 0) { - throw std::logic_error("Called type() of null piece."); - } else { - return tolower(m_symbol); - } -} - -char Piece::symbol() const { - if (m_symbol == 0) { - throw new std::logic_error("Called symbol() of null piece."); - } else { - return m_symbol; - } -} - -std::string Piece::full_color() const { - if (color() == 'w') { - return "white"; - } else { - return "black"; - } -} - -std::string Piece::full_type() const { - switch(type()) { - case 'p': - return "pawn"; - case 'b': - return "bishop"; - case 'n': - return "knight"; - case 'r': - return "rook"; - case 'k': - return "king"; - case 'q': - return "queen"; - } - - throw std::logic_error("Unkown piece type."); -} - -std::string Piece::__repr__() const { - return str(boost::format("Piece('%1%')") % symbol()); -} - -int Piece::__hash__() const { - return symbol(); -} - -bool Piece::is_valid() const { - return m_symbol != 0; -} - -Piece& Piece::operator=(const Piece& rhs) { - m_symbol = rhs.m_symbol; - return *this; -} - -bool Piece::operator==(const Piece& rhs) const { - return m_symbol == rhs.m_symbol; -} - -bool Piece::operator!=(const Piece& rhs) const { - return m_symbol != rhs.m_symbol; -} - -Piece Piece::from_color_and_type(char color, char type) { - if (color == 'w') { - return Piece(toupper(type)); - } else if (color == 'b') { - return Piece(tolower(type)); - } else { - throw std::invalid_argument("color"); - } -} - -std::ostream& operator<<(std::ostream& out, const Piece& piece) { - out << piece.symbol(); - return out; -} - -} // namespace chess diff --git a/libchess/piece.h b/libchess/piece.h deleted file mode 100644 index 35f7bf4f3..000000000 --- a/libchess/piece.h +++ /dev/null @@ -1,58 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#ifndef LIBCHESS_PIECE_H -#define LIBCHESS_PIECE_H - -#include - -namespace chess { - -/** - * \brief An immutable chess piece. - */ -class Piece { -public: - Piece(); - Piece(char symbol); - Piece(const Piece& piece); - - char color() const; - char type() const; - char symbol() const; - std::string full_color() const; - std::string full_type() const; - - std::string __repr__() const; - int __hash__() const; - - bool is_valid() const; - - Piece& operator=(const Piece& rhs); - bool operator==(const Piece& rhs) const; - bool operator!=(const Piece& rhs) const; - - static Piece from_color_and_type(char color, char type); - -private: - char m_symbol; -}; - -std::ostream& operator<<(std::ostream& out, const Piece& piece); - -} // namespace chess - -#endif // LIBCHESS_PIECE_H diff --git a/libchess/polyglot_opening_book_entry.cc b/libchess/polyglot_opening_book_entry.cc deleted file mode 100644 index 1757807a8..000000000 --- a/libchess/polyglot_opening_book_entry.cc +++ /dev/null @@ -1,135 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#include "polyglot_opening_book_entry.h" - -namespace chess { - -PolyglotOpeningBookEntry::PolyglotOpeningBookEntry(const Position& key, const Move& move, uint16_t weight, uint32_t learn) { - m_weight = weight; - m_learn = learn; - - m_key = key.__hash__(); - - m_move = (move.target().file() << 0) | - (move.target().rank() << 3) | - (move.source().file() << 6) | - (move.source().rank() << 9); - - switch (move.promotion()) { - case 'q': - m_move = m_move | (4 << 12); - break; - case 'r': - m_move = m_move | (3 << 12); - break; - case 'b': - m_move = m_move | (2 << 12); - break; - case 'n': - m_move = m_move | (1 << 12); - break; - } - -} - -PolyglotOpeningBookEntry::PolyglotOpeningBookEntry(uint64_t key, uint16_t move, uint16_t weight, uint32_t learn) { - m_key = key; - m_move = move; - m_weight = weight; - m_learn = learn; -} - -PolyglotOpeningBookEntry::PolyglotOpeningBookEntry(const PolyglotOpeningBookEntry& entry) { - m_key = entry.m_key; - m_move = entry.m_move; - m_weight = entry.m_weight; - m_learn = entry.m_learn; -} - -uint64_t PolyglotOpeningBookEntry::key() const { - return m_key; -} - -uint16_t PolyglotOpeningBookEntry::raw_move() const { - return m_move; -} - -Move PolyglotOpeningBookEntry::move() const { - // Extract source and target square. - Square source( - (((m_move >> 6) & 0x3f) >> 3) & 0x7, - ((m_move >> 6) & 0x3f) & 0x7); - Square target( - ((m_move & 0x3f) >> 3) & 0x7, - (m_move & 0x3f) & 0x7); - - // Replace non standard castling moves. - if (source.name() == "e1") { - if (target.name() == "h1") { - return Move::from_uci("e1g1"); - } else if (target.name() == "a1") { - return Move::from_uci("e1c1"); - } - } else if (source.name() == "e8") { - if (target.name() == "h8") { - return Move::from_uci("e8g8"); - } else if (target.name() == "a8") { - return Move::from_uci("e8c8"); - } - } - - // Extract the promotion type. - switch ((m_move >> 12) & 0x7) { - case 4: - return Move(source, target, 'q'); - case 3: - return Move(source, target, 'r'); - case 2: - return Move(source, target, 'b'); - case 1: - return Move(source, target, 'n'); - default: - return Move(source, target); - } -} - -uint16_t PolyglotOpeningBookEntry::weight() const { - return m_weight; -} - -void PolyglotOpeningBookEntry::set_weight(uint16_t weight) { - m_weight = weight; -} - -uint32_t PolyglotOpeningBookEntry::learn() const { - return m_learn; -} - -void PolyglotOpeningBookEntry::set_learn(uint32_t learn) { - m_learn = learn; -} - -PolyglotOpeningBookEntry& PolyglotOpeningBookEntry::operator=(const PolyglotOpeningBookEntry& rhs) { - m_key = rhs.m_key; - m_move = rhs.m_move; - m_weight = rhs.m_weight; - m_learn = rhs.m_learn; - - return *this; -} - -} // namespace chess diff --git a/libchess/polyglot_opening_book_entry.h b/libchess/polyglot_opening_book_entry.h deleted file mode 100644 index c4b877b59..000000000 --- a/libchess/polyglot_opening_book_entry.h +++ /dev/null @@ -1,55 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#ifndef LIBCHESS_POLYGLOT_OPENING_BOOK_ENTRY_H -#define LIBCHESS_POLYGLOT_OPENING_BOOK_ENTRY_H - -#include "position.h" -#include "move.h" - -namespace chess { - -/** - * \brief An entry from a Polyglot opening book. - */ -class PolyglotOpeningBookEntry { -public: - PolyglotOpeningBookEntry(const Position& key, const Move& move, uint16_t weight, uint32_t learn); - PolyglotOpeningBookEntry(uint64_t key, uint16_t move, uint16_t weight, uint32_t learn); - PolyglotOpeningBookEntry(const PolyglotOpeningBookEntry& entry); - - uint64_t key() const; - uint16_t raw_move() const; - Move move() const; - - uint16_t weight() const; - void set_weight(uint16_t weight); - - uint32_t learn() const; - void set_learn(uint32_t learn); - - PolyglotOpeningBookEntry& operator=(const PolyglotOpeningBookEntry &rhs); - -private: - uint64_t m_key; - uint16_t m_move; - uint16_t m_weight; - uint32_t m_learn; -}; - -} // namespace chess - -#endif // LIBCHESS_POLYGLOT_OPENING_BOOK_ENTRY_H diff --git a/libchess/position.cc b/libchess/position.cc deleted file mode 100644 index 44590724a..000000000 --- a/libchess/position.cc +++ /dev/null @@ -1,1256 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#include -#include -#include -#include -#include -#include - -#include "position.h" -#include "libchess.h" - -namespace chess { - -Position::Position() { - reset(); -} - -Position::Position(const std::string& fen) { - set_fen(fen); -} - -Position::Position(const Position& position) { - for (int i = 0; i < 128; i++) { - m_board[i] = position.m_board[i]; - } - - m_turn = position.m_turn; - m_ep_file = position.m_ep_file; - m_half_moves = position.m_half_moves; - m_ply = position.m_ply; - m_white_castle_queenside = position.m_white_castle_queenside; - m_white_castle_kingside = position.m_white_castle_kingside; - m_black_castle_queenside = position.m_black_castle_queenside; - m_black_castle_kingside = position.m_black_castle_kingside; -} - -void Position::clear_board() { - Piece no_piece; - - for (int i = 0; i < 128; i++) { - m_board[i] = no_piece; - } -} - -void Position::reset() { - clear_board(); - - // Reset properties. - m_turn = 'w'; - m_ep_file = 0; - m_half_moves = 0; - m_ply = 1; - m_white_castle_queenside = true; - m_white_castle_kingside = true; - m_black_castle_queenside = true; - m_black_castle_kingside = true; - - // Setup the white pieces. - m_board[112] = Piece('R'); - m_board[113] = Piece('N'); - m_board[114] = Piece('B'); - m_board[115] = Piece('Q'); - m_board[116] = Piece('K'); - m_board[117] = Piece('B'); - m_board[118] = Piece('N'); - m_board[119] = Piece('R'); - - // Setup the white pawns. - for (int x88_index = 96; x88_index <= 103; x88_index++) { - m_board[x88_index] = Piece('P'); - } - - // Setup the black pieces. - m_board[0] = Piece('r'); - m_board[1] = Piece('n'); - m_board[2] = Piece('b'); - m_board[3] = Piece('q'); - m_board[4] = Piece('k'); - m_board[5] = Piece('b'); - m_board[6] = Piece('n'); - m_board[7] = Piece('r'); - - // Setup the black pawns. - for (int x88_index = 16; x88_index <= 23; x88_index++) { - m_board[x88_index] = Piece('p'); - } -} - -Piece Position::get(const Square& square) const { - return m_board[square.x88_index()]; -} - -void Position::set(const Square& square, const Piece& piece) { - m_board[square.x88_index()] = piece; -} - -boost::python::object Position::__getitem__(const boost::python::object& square_key) const { - int x88_index = x88_index_from_square_key(square_key); - - if (m_board[x88_index].is_valid()) { - return boost::python::object(m_board[x88_index]); - } else { - return boost::python::object(); - } -} - -void Position::__setitem__(const boost::python::object& square_key, const boost::python::object& piece) { - int x88_index = x88_index_from_square_key(square_key); - - if (piece.ptr() == Py_None) { - m_board[x88_index] = Piece(); - } else { - Piece& p = boost::python::extract(piece); - m_board[x88_index] = p; - } -} - -void Position::__delitem__(const boost::python::object& square_key) { - m_board[x88_index_from_square_key(square_key)] = Piece(); -} - - -char Position::turn() const { - return m_turn; -} - -void Position::set_turn(char turn) { - if (turn == 'w' || turn == 'b') { - m_turn = turn; - } else { - throw new std::invalid_argument("turn"); - } -} - -void Position::toggle_turn() { - if (m_turn == 'w') { - m_turn = 'b'; - } else { - m_turn = 'w'; - } -} - -char Position::ep_file() const { - return m_ep_file; -} - -boost::python::object Position::python_ep_file() const { - if (m_ep_file) { - return boost::python::object(m_ep_file); - } else { - return boost::python::object(); - } -} - -void Position::set_ep_file(char ep_file) { - switch (ep_file) { - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - m_ep_file = ep_file; - break; - case '-': - case 0: - m_ep_file = 0; - default: - throw new std::invalid_argument("ep_file"); - } -} - -void Position::python_set_ep_file(const boost::python::object& ep_file) { - if (ep_file.ptr() == Py_None) { - m_ep_file = 0; - } else { - set_ep_file(boost::python::extract(ep_file)); - } -} - -Square Position::get_ep_square() const { - if (m_ep_file) { - int rank = (m_turn == 'b') ? 2 : 5; - int pawn_rank = (m_turn == 'b') ? 3 : 4; - int file = m_ep_file - 'a'; - - // Ensure the square is empty. - Square square(rank, file); - if (get(square).is_valid()) { - return Square(); - } - - // Ensure a pawn is above the square. - Square pawn_square(pawn_rank, file); - Piece pawn_square_piece = get(pawn_square); - if (!pawn_square_piece.is_valid()) { - return Square(); - } - if (pawn_square_piece.type() != 'p') { - return Square(); - } - - return square; - } else { - return Square(); - } -} - -boost::python::object Position::python_get_ep_square() const { - Square ep_square = get_ep_square(); - if (ep_square.is_valid()) { - return boost::python::object(ep_square); - } else { - return boost::python::object(); - } -} - -Square Position::get_real_ep_square() const { - Square ep_square = get_ep_square(); - if (!ep_square.is_valid()) { - return ep_square; - } - - // A pawn must stand ready to capture. - const int offsets[] = { 17, 15 }; - for (int i = 0; i < 2; i++) { - int offset = (m_turn == 'w') ? offsets[i] : - offsets[i]; - if (m_board[offset].is_valid() && m_board[offset].type() == 'p' && - m_board[offset].color() == m_turn) { - return ep_square; - } - } - - return Square(); -} - -boost::python::object Position::python_get_real_ep_square() const { - Square real_ep_square = get_real_ep_square(); - if (real_ep_square.is_valid()) { - return boost::python::object(real_ep_square); - } else { - return boost::python::object(); - } -} - -int Position::half_moves() const { - return m_half_moves; -} - -void Position::set_half_moves(int half_moves) { - if (half_moves < 0) { - throw new std::invalid_argument("half_moves"); - } else { - m_half_moves = half_moves; - } -} - -int Position::ply() const { - return m_ply; -} - -void Position::set_ply(int ply) { - if (ply < 1) { - throw new std::invalid_argument("ply"); - } else { - m_ply = ply; - } -} - -std::string Position::fen() const { - // Generate the board part of the FEN. - std::string fen; - char empty = '0'; - for (int i = 0; i < 128; i++) { - if (!(i & 0x88)) { - Square square = Square::from_x88_index(i); - Piece piece = get(square); - if (piece.is_valid()) { - if (empty != '0') { - fen += empty; - empty = '0'; - } - fen += piece.symbol(); - } else { - empty++; - } - - if (i != 119 && square.file() == 7) { - if (empty != '0') { - fen += empty; - empty = '0'; - } - fen += "/"; - } - } - } - if (empty != '0') { - fen += empty; - } - - // Add the turn. - fen += " "; - fen += m_turn; - - // Add castling flags. - fen += " "; - if (m_white_castle_kingside || - m_white_castle_queenside || - m_black_castle_kingside || - m_black_castle_queenside) - { - if (m_white_castle_kingside) { - fen += 'K'; - } - if (m_white_castle_queenside) { - fen += 'Q'; - } - if (m_black_castle_kingside) { - fen += 'k'; - } - if (m_black_castle_queenside) { - fen += 'q'; - } - } else { - fen += '-'; - } - - // Add the en-passant square. - fen += " "; - Square ep_square = get_ep_square(); - if (ep_square.is_valid()) { - fen += ep_square.name(); - } else { - fen += '-'; - } - - // Add the half move count. - fen += " "; - fen += boost::lexical_cast(m_half_moves); - - // Add the ply. - fen += " "; - fen += boost::lexical_cast(m_ply); - - return fen; -} - -void Position::set_fen(const std::string& fen) { - // Ensure there are 6 parts. - std::vector parts; - boost::algorithm::split(parts, fen, boost::is_any_of("\t "), boost::token_compress_on); - if (parts.size() != 6) { - throw new std::invalid_argument("fen"); - } - - // Ensure the board part is valid. - std::vector rows; - boost::algorithm::split(rows, parts[0], boost::is_any_of("/")); - if (rows.size() != 8) { - throw new std::invalid_argument("fen"); - } - for (std::vector::iterator row = rows.begin(); row != rows.end(); ++row) { - int field_sum = 0; - bool previous_was_number = false; - for (unsigned int i = 0; i < row->length(); i++) { - char c = row->at(i); - if (c >= '1' && c <= '8') { - if (previous_was_number) { - throw new std::invalid_argument("fen"); - } - field_sum += c - '0'; - previous_was_number = true; - } else { - switch (c) { - case 'p': - case 'n': - case 'b': - case 'r': - case 'q': - case 'k': - case 'P': - case 'N': - case 'B': - case 'R': - case 'Q': - case 'K': - field_sum++; - previous_was_number = false; - break; - default: - throw new std::invalid_argument("fen"); - } - } - } - if (field_sum != 8) { - throw new std::invalid_argument("fen"); - } - } - - // Check that the turn part is valid. - if (parts[1] != "w" && parts[1] != "b") { - throw new std::invalid_argument("fen"); - } - - // Check that the castling flag part is valid. - if (!boost::regex_match(parts[2], boost::regex("^(KQ?k?q?|Qk?q?|kq?|q|-)$"))) { - throw new std::invalid_argument("fen"); - } - - // Check that the en-passant part is valid. - if (!boost::regex_match(parts[3], boost::regex("^(-|[a-h][36])$"))) { - throw new std::invalid_argument("fen"); - } - - // Check that the half move part is valid. - if (!boost::regex_match(parts[4], boost::regex("^0|[1-9][0-9]*$"))) { - throw new std::invalid_argument("fen"); - } - - // Check that the ply part is valid. - if (!boost::regex_match(parts[5], boost::regex("^[1-9][0-9]*$"))) { - throw new std::invalid_argument("fen"); - } - - // Set the pieces on the board. - clear_board(); - int x88_index = 0; - for (unsigned int i = 0; i < parts[0].length(); i++) { - char c = parts[0].at(i); - if (c == '/') { - x88_index += 8; - } else if (c >= '1' && c <= '8') { - x88_index += c - '0'; - } else { - m_board[x88_index] = Piece(c); - x88_index++; - } - } - - // Set the turn. - m_turn = parts[1].at(0); - - // Set the castling rights. - m_white_castle_kingside = false; - m_white_castle_queenside = false, - m_black_castle_kingside = false; - m_black_castle_queenside = false; - for (unsigned int i = 0; i < parts[2].length(); i++) { - switch (parts[2].at(i)) { - case 'K': - m_white_castle_kingside = true; - break; - case 'Q': - m_white_castle_queenside = true; - break; - case 'k': - m_black_castle_kingside = true; - break; - case 'q': - m_black_castle_queenside = true; - break; - } - } - - // Set the en-passant file. - char ep_file = parts[3].at(0); - if (ep_file == '-') { - m_ep_file = 0; - } else { - m_ep_file = ep_file; - } - - // Set the move counters. - m_half_moves = boost::lexical_cast(parts[4]); - m_ply = boost::lexical_cast(parts[5]); -} - -PseudoLegalMoveGenerator *Position::get_pseudo_legal_moves() const { - return new PseudoLegalMoveGenerator(*this); -} - -LegalMoveGenerator *Position::get_legal_moves() const { - return new LegalMoveGenerator(*this); -} - -AttackerGenerator *Position::get_attackers(char color, Square target) const { - return new AttackerGenerator(*this, color, target); -} - -uint64_t Position::__hash__() const { - uint64_t hash = 0; - - // Hash in the board setup. - for (int i = 0; i < 128; i++) { - if (m_board[i].is_valid()) { - Square square = Square::from_x88_index(i); - - const char *pieces = "pPnNbBrRqQkK"; - int piece_index = 0; - while (m_board[i].symbol() != pieces[piece_index]) { - piece_index++; - } - - hash ^= POLYGLOT_RANDOM_ARRAY[64 * piece_index + 8 * square.rank() + square.file()]; - } - } - - // Hash in the castling flags. - if (m_white_castle_kingside) { - hash ^= POLYGLOT_RANDOM_ARRAY[768]; - } - if (m_white_castle_queenside) { - hash ^= POLYGLOT_RANDOM_ARRAY[768 + 1]; - } - if (m_black_castle_kingside) { - hash ^= POLYGLOT_RANDOM_ARRAY[768 + 2]; - } - if (m_black_castle_queenside) { - hash ^= POLYGLOT_RANDOM_ARRAY[768 + 3]; - } - - // Hash in the en-passant file. - Square ep_square = get_real_ep_square(); - if (ep_square.is_valid()) { - hash ^= POLYGLOT_RANDOM_ARRAY[772 + ep_square.file()]; - } - - // Hash in the turn. - if (m_turn == 'w') { - hash ^= POLYGLOT_RANDOM_ARRAY[780]; - } - - return hash; -} - -Square Position::get_king(char color) const { - Piece king = Piece::from_color_and_type(color, 'k'); - - for (int i = 0; i < 128; i++) { - if (m_board[i] == king) { - return Square::from_x88_index(i); - } - } - - return Square(); -} - -boost::python::object Position::python_get_king(char color) const { - Square square = get_king(color); - if (square.is_valid()) { - return boost::python::object(square); - } else { - return boost::python::object(); - } -} - -bool Position::is_king_attacked(char color) const { - Square square = get_king(color); - AttackerGenerator attackers(*this, opposite_color(color), square); - return attackers.__nonzero__(); -} - -bool Position::is_check() const { - return is_king_attacked(m_turn); -} - -bool Position::is_checkmate() const { - if (!is_check()) { - return false; - } else { - // TODO: Consider more efficient checkmate detection. - LegalMoveGenerator legal_moves(*this); - return !legal_moves.__nonzero__(); - } -} - -bool Position::is_stalemate() const { - if (is_check()) { - return false; - } else { - LegalMoveGenerator legal_moves(*this); - return !legal_moves.__nonzero__(); - } -} - -bool Position::is_insufficient_material() const { - int piece_count = 0; - int white_bishops = 0; - int black_bishops = 0; - int light_square_bishops = 0; - int dark_square_bishops = 0; - - // Count pieces. - for (int i = 0; i < 128; i++) { - if (m_board[i].is_valid()) { - piece_count++; - switch (m_board[i].symbol()) { - case 'b': - white_bishops++; - black_bishops--; - case 'B': - black_bishops++; - if (Square::from_x88_index(i).is_dark()) { - dark_square_bishops++; - } else { - light_square_bishops++; - } - break; - case 'n': - case 'N': - break; - case 'q': - case 'Q': - case 'p': - case 'P': - case 'r': - case 'R': - return false; - } - - } - } - - if (piece_count == 2) { - // King versus king. - return true; - } else if (piece_count == 3) { - // King and knight or bishop versus king. - return true; - } else if (piece_count == 2 + white_bishops + black_bishops) { - // Each player with only king an any number of bishops where all - // bishops are on the same color. - if ((light_square_bishops && !dark_square_bishops) || (dark_square_bishops && !light_square_bishops)) { - return true; - } - } - - return false; -} - -bool Position::is_game_over() const { - if (is_insufficient_material()) { - return true; - } - - LegalMoveGenerator legal_moves(*this); - if (!legal_moves.__nonzero__()) { - return true; - } - - return false; -} - -bool Position::could_have_kingside_castling_right(char color) const { - int rank; - if (color == 'w') { - rank = 0; - } else if (color == 'b') { - rank = 7; - } else { - throw std::invalid_argument("color"); - } - - return (get(Square(rank, 4)) == Piece::from_color_and_type(color, 'k') && - get(Square(rank, 7)) == Piece::from_color_and_type(color, 'r')); - -} - -bool Position::could_have_queenside_castling_right(char color) const { - int rank; - if (color == 'w') { - rank = 0; - } else if (color == 'b') { - rank = 7; - } else { - throw std::invalid_argument("color"); - } - - return (get(Square(rank, 4)) == Piece::from_color_and_type(color, 'k') && - get(Square(rank, 0)) == Piece::from_color_and_type(color, 'r')); -} - -bool Position::has_kingside_castling_right(char color) const { - if (color == 'w') { - return m_white_castle_kingside; - } else if (color == 'b') { - return m_black_castle_kingside; - } else { - throw std::invalid_argument("color"); - } -} - -bool Position::has_queenside_castling_right(char color) const { - if (color == 'w') { - return m_white_castle_queenside; - } else if (color == 'b') { - return m_black_castle_queenside; - } else { - throw std::invalid_argument("color"); - } -} - -void Position::set_kingside_castling_right(char color, bool castle) { - if (color == 'w') { - m_white_castle_kingside = castle; - } else if (color == 'b') { - m_black_castle_kingside = castle; - } else { - throw std::invalid_argument("color"); - } -} - -void Position::set_queenside_castling_right(char color, bool castle) { - if (color == 'w') { - m_white_castle_queenside = castle; - } else if (color == 'b') { - m_black_castle_queenside = castle; - } else { - throw std::invalid_argument("color"); - } -} - -Move Position::get_move_from_san(const std::string& san) const { - LegalMoveGenerator legal_moves(*this); - - if (san == "o-o" || san == "o-o-o") { - // Castling moves. - Square target; - int rank = m_turn == 'w' ? 0 : 7; - if (san == "o-o") { - target = Square(rank, 6); - } else { - target = Square(rank, 2); - } - Move move(Square(rank, 4), target); - - if (legal_moves.__contains__(move)) { - return move; - } - } else { - boost::smatch matches; - if (boost::regex_match(san, matches, boost::regex("^([NBKRQ])?([a-h])?([1-8])?x?([a-h][1-8])(=[NBRQ])?(\\+|#)?$"), boost::match_extra)) { - // Get the piece type. - std::string matched_piece(matches[1].first, matches[1].second); - Piece piece = Piece::from_color_and_type( - m_turn, - matched_piece == "" ? 'p' : tolower(matched_piece.at(0))); - - // Get the target square. - std::string matched_target(matches[4].first, matches[4].second); - Square target = Square(matched_target); - - // Get the source file and rank. - std::string matched_file(matches[2].first, matches[2].second); - std::string matched_rank(matches[3].first, matches[3].second); - int file = matched_file == "" ? -1 : (matched_file.at(0) - 'a'); - int rank = matched_rank == "" ? -1 : (matched_rank.at(0) - '1'); - - // Get the promotion type. - std::string matched_promotion(matches[5].first, matches[5].second); - char promotion = matched_promotion == "" ? 0 : tolower(matched_promotion.at(0)); - - // Find a matching move. - legal_moves.__iter__(); - Square source; - while (legal_moves.has_more()) { - Move move = legal_moves.next(); - - if (move.promotion() != promotion) { - continue; - } - - if (get(move.source()) != piece || move.target() != target) { - continue; - } - - if (file != -1 && file != move.source().file()) { - continue; - } - - if (rank != -1 && rank != move.source().rank()) { - continue; - } - - // Found a matching move. Make sure it is not ambigous. - if (source.is_valid()) { - throw std::invalid_argument("san"); - } - source = move.source(); - } - - // Return the found move. - if (source.is_valid()) { - if (promotion) { - return Move(source, target, promotion); - } else { - return Move(source, target); - } - } - } - } - - throw std::invalid_argument("san"); -} - -MoveInfo Position::make_move_from_san(const std::string& san) { - return make_move(get_move_from_san(san)); -} - -MoveInfo Position::make_unvalidated_move_fast(const Move& move) { - Piece piece = get(move.source()); - if (!piece.is_valid()) { - throw new std::invalid_argument("move"); - } - MoveInfo info(move, piece); - info.set_captured(get(move.target())); - - // Move the piece. - set(move.target(), get(move.source())); - set(move.source(), Piece()); - - // It is the next players turn. - toggle_turn(); - - // Pawn moves. - m_ep_file = 0; - if (piece.type() == 'p') { - // En-passant. - if (move.target().file() != move.source().file() && !info.captured().is_valid()) { - int capture_square_index; - if (m_turn == 'b') { - capture_square_index = Square(4, move.target().file()).x88_index(); - } else { - capture_square_index = Square(3, move.target().file()).x88_index(); - } - info.set_captured(m_board[capture_square_index]); - info.set_is_enpassant(true); - } - - // If two steps forward, set the en-passant file. - if (abs(move.target().rank() - move.source().rank()) == 2) { - m_ep_file = move.target().file() + 'a'; - } - } - - // Promotion. - if (move.promotion()) { - set(move.target(), Piece::from_color_and_type(piece.color(), move.promotion())); - } - - // Castling. - if (piece.type() == 'k') { - int steps = move.target().file() - move.source().file(); - int backrank = (m_turn == 'b') ? 0 : 7; - if (steps == 2) { - info.set_is_kingside_castle(true); - set(Square(backrank, 5), get(Square(backrank, 7))); - set(Square(backrank, 7), Piece()); - } else if (steps == -2) { - info.set_is_queenside_castle(true); - set(Square(backrank, 3), get(Square(backrank, 0))); - set(Square(backrank, 0), Piece()); - } - } - - // Update the half move counter. - if (piece.type() == 'p' || info.captured().is_valid()) { - m_half_moves = 0; - } else { - m_half_moves++; - } - - // Increment the move number. - if (m_turn == 'w') { - m_ply++; - } - - // Update castling rights. - if (m_turn == 'w') { - m_black_castle_kingside = m_black_castle_kingside && could_have_kingside_castling_right('b'); - m_black_castle_queenside = m_black_castle_queenside && could_have_queenside_castling_right('b'); - } else { - m_white_castle_kingside = m_white_castle_kingside && could_have_kingside_castling_right('w'); - m_white_castle_queenside = m_white_castle_queenside && could_have_queenside_castling_right('w'); - } - - return info; -} - -MoveInfo Position::make_move(const Move& move) { - // Make sure the move is valid. - LegalMoveGenerator legal_moves(*this); - if (!legal_moves.__contains__(move)) { - throw new std::invalid_argument("move"); - } - - // Do the move. - MoveInfo info = make_unvalidated_move_fast(move); - - // Get extra infos. - info.set_is_check(is_check()); - info.set_is_checkmate(is_checkmate()); - - // Generate the SAN. - if (info.is_kingside_castle()) { - info.set_san("o-o"); - } else if (info.is_queenside_castle()) { - info.set_san("o-o-o"); - } else { - // Add the piece type. - if (info.piece().type() != 'p') { - info.set_san(info.san() + (char)toupper(info.piece().type())); - } - - // Add a disambiguator. - bool is_ambigous = false; - bool same_rank = false; - bool same_file = false; - legal_moves.__iter__(); - while (legal_moves.has_more()) { - Move m = legal_moves.next(); - if (get(m.source()) == info.piece() && move.source() != m.source() && move.target() == m.target()) { - is_ambigous = true; - - if (move.source().rank() == m.source().rank()) { - same_rank = true; - } - if (move.source().file() == m.source().file()) { - same_file = true; - } - if (same_rank && same_file) { - break; - } - } - } - if (same_rank && same_file) { - info.set_san(info.san() + move.source().name()); - } else if (same_file) { - info.set_san(info.san() + (char)('1' + move.source().rank())); - } else if (same_rank || is_ambigous) { - info.set_san(info.san() + move.source().file_name()); - } - - // Handle captures. - if (info.captured().is_valid()) { - if (info.piece().type() == 'p') { - info.set_san(info.san() + move.source().file_name()); - } - info.set_san(info.san() + "x"); - } - - // Add the target name. - info.set_san(info.san() + move.target().name()); - } - if (info.is_checkmate()) { - info.set_san(info.san() + "#"); - } else if (info.is_check()) { - info.set_san(info.san() + "+"); - } - - if (info.is_enpassant()) { - info.set_san(info.san() + " (e.p.)"); - } - - return info; -} - -void Position::make_move_fast(const Move& move) { - LegalMoveGenerator legal_moves(*this); - if (!legal_moves.__contains__(move)) { - throw new std::invalid_argument("move"); - } - make_unvalidated_move_fast(move); -} - -Position& Position::operator=(const Position& rhs) { - for (int i = 0; i < 128; i++) { - m_board[i] = rhs.m_board[i]; - } - - m_turn = rhs.m_turn; - m_ep_file = rhs.m_ep_file; - m_half_moves = rhs.m_half_moves; - m_ply = rhs.m_ply; - m_white_castle_queenside = rhs.m_white_castle_queenside; - m_white_castle_kingside = rhs.m_white_castle_kingside; - m_black_castle_queenside = rhs.m_black_castle_queenside; - m_black_castle_kingside = rhs.m_black_castle_kingside; - - return *this; -} - -bool Position::operator==(const Position& rhs) const { - if (m_turn != rhs.m_turn || - m_ep_file != rhs.m_ep_file || - m_half_moves != rhs.m_half_moves || - m_ply != rhs.m_ply || - m_white_castle_queenside != rhs.m_white_castle_queenside || - m_white_castle_kingside != rhs.m_white_castle_kingside || - m_black_castle_queenside != rhs.m_black_castle_queenside || - m_black_castle_kingside != rhs.m_black_castle_kingside) - { - return false; - } - - for (int i = 0; i < 128; i++) { - if (m_board[i] != rhs.m_board[i]) { - return false; - } - } - - return true; -} - -bool Position::operator!=(const Position& rhs) const { - return !(*this == rhs); -} - -int Position::x88_index_from_square_key(const boost::python::object& square_key) const { - boost::python::extract extract_square(square_key); - if (extract_square.check()) { - Square& square = extract_square(); - return square.x88_index(); - } - else { - std::string square_name = boost::python::extract(square_key); - Square square = Square(square_name); - return square.x88_index(); - } -} - -std::string Position::__repr__() const { - return str(boost::format("Position('%1%')") % fen()); -} - -std::ostream& operator<<(std::ostream& out, const Position& position) { - out << position.fen(); - return out; -} - -const uint64_t POLYGLOT_RANDOM_ARRAY[] = { - U64(0x9D39247E33776D41), U64(0x2AF7398005AAA5C7), U64(0x44DB015024623547), U64(0x9C15F73E62A76AE2), - U64(0x75834465489C0C89), U64(0x3290AC3A203001BF), U64(0x0FBBAD1F61042279), U64(0xE83A908FF2FB60CA), - U64(0x0D7E765D58755C10), U64(0x1A083822CEAFE02D), U64(0x9605D5F0E25EC3B0), U64(0xD021FF5CD13A2ED5), - U64(0x40BDF15D4A672E32), U64(0x011355146FD56395), U64(0x5DB4832046F3D9E5), U64(0x239F8B2D7FF719CC), - U64(0x05D1A1AE85B49AA1), U64(0x679F848F6E8FC971), U64(0x7449BBFF801FED0B), U64(0x7D11CDB1C3B7ADF0), - U64(0x82C7709E781EB7CC), U64(0xF3218F1C9510786C), U64(0x331478F3AF51BBE6), U64(0x4BB38DE5E7219443), - U64(0xAA649C6EBCFD50FC), U64(0x8DBD98A352AFD40B), U64(0x87D2074B81D79217), U64(0x19F3C751D3E92AE1), - U64(0xB4AB30F062B19ABF), U64(0x7B0500AC42047AC4), U64(0xC9452CA81A09D85D), U64(0x24AA6C514DA27500), - U64(0x4C9F34427501B447), U64(0x14A68FD73C910841), U64(0xA71B9B83461CBD93), U64(0x03488B95B0F1850F), - U64(0x637B2B34FF93C040), U64(0x09D1BC9A3DD90A94), U64(0x3575668334A1DD3B), U64(0x735E2B97A4C45A23), - U64(0x18727070F1BD400B), U64(0x1FCBACD259BF02E7), U64(0xD310A7C2CE9B6555), U64(0xBF983FE0FE5D8244), - U64(0x9F74D14F7454A824), U64(0x51EBDC4AB9BA3035), U64(0x5C82C505DB9AB0FA), U64(0xFCF7FE8A3430B241), - U64(0x3253A729B9BA3DDE), U64(0x8C74C368081B3075), U64(0xB9BC6C87167C33E7), U64(0x7EF48F2B83024E20), - U64(0x11D505D4C351BD7F), U64(0x6568FCA92C76A243), U64(0x4DE0B0F40F32A7B8), U64(0x96D693460CC37E5D), - U64(0x42E240CB63689F2F), U64(0x6D2BDCDAE2919661), U64(0x42880B0236E4D951), U64(0x5F0F4A5898171BB6), - U64(0x39F890F579F92F88), U64(0x93C5B5F47356388B), U64(0x63DC359D8D231B78), U64(0xEC16CA8AEA98AD76), - U64(0x5355F900C2A82DC7), U64(0x07FB9F855A997142), U64(0x5093417AA8A7ED5E), U64(0x7BCBC38DA25A7F3C), - U64(0x19FC8A768CF4B6D4), U64(0x637A7780DECFC0D9), U64(0x8249A47AEE0E41F7), U64(0x79AD695501E7D1E8), - U64(0x14ACBAF4777D5776), U64(0xF145B6BECCDEA195), U64(0xDABF2AC8201752FC), U64(0x24C3C94DF9C8D3F6), - U64(0xBB6E2924F03912EA), U64(0x0CE26C0B95C980D9), U64(0xA49CD132BFBF7CC4), U64(0xE99D662AF4243939), - U64(0x27E6AD7891165C3F), U64(0x8535F040B9744FF1), U64(0x54B3F4FA5F40D873), U64(0x72B12C32127FED2B), - U64(0xEE954D3C7B411F47), U64(0x9A85AC909A24EAA1), U64(0x70AC4CD9F04F21F5), U64(0xF9B89D3E99A075C2), - U64(0x87B3E2B2B5C907B1), U64(0xA366E5B8C54F48B8), U64(0xAE4A9346CC3F7CF2), U64(0x1920C04D47267BBD), - U64(0x87BF02C6B49E2AE9), U64(0x092237AC237F3859), U64(0xFF07F64EF8ED14D0), U64(0x8DE8DCA9F03CC54E), - U64(0x9C1633264DB49C89), U64(0xB3F22C3D0B0B38ED), U64(0x390E5FB44D01144B), U64(0x5BFEA5B4712768E9), - U64(0x1E1032911FA78984), U64(0x9A74ACB964E78CB3), U64(0x4F80F7A035DAFB04), U64(0x6304D09A0B3738C4), - U64(0x2171E64683023A08), U64(0x5B9B63EB9CEFF80C), U64(0x506AACF489889342), U64(0x1881AFC9A3A701D6), - U64(0x6503080440750644), U64(0xDFD395339CDBF4A7), U64(0xEF927DBCF00C20F2), U64(0x7B32F7D1E03680EC), - U64(0xB9FD7620E7316243), U64(0x05A7E8A57DB91B77), U64(0xB5889C6E15630A75), U64(0x4A750A09CE9573F7), - U64(0xCF464CEC899A2F8A), U64(0xF538639CE705B824), U64(0x3C79A0FF5580EF7F), U64(0xEDE6C87F8477609D), - U64(0x799E81F05BC93F31), U64(0x86536B8CF3428A8C), U64(0x97D7374C60087B73), U64(0xA246637CFF328532), - U64(0x043FCAE60CC0EBA0), U64(0x920E449535DD359E), U64(0x70EB093B15B290CC), U64(0x73A1921916591CBD), - U64(0x56436C9FE1A1AA8D), U64(0xEFAC4B70633B8F81), U64(0xBB215798D45DF7AF), U64(0x45F20042F24F1768), - U64(0x930F80F4E8EB7462), U64(0xFF6712FFCFD75EA1), U64(0xAE623FD67468AA70), U64(0xDD2C5BC84BC8D8FC), - U64(0x7EED120D54CF2DD9), U64(0x22FE545401165F1C), U64(0xC91800E98FB99929), U64(0x808BD68E6AC10365), - U64(0xDEC468145B7605F6), U64(0x1BEDE3A3AEF53302), U64(0x43539603D6C55602), U64(0xAA969B5C691CCB7A), - U64(0xA87832D392EFEE56), U64(0x65942C7B3C7E11AE), U64(0xDED2D633CAD004F6), U64(0x21F08570F420E565), - U64(0xB415938D7DA94E3C), U64(0x91B859E59ECB6350), U64(0x10CFF333E0ED804A), U64(0x28AED140BE0BB7DD), - U64(0xC5CC1D89724FA456), U64(0x5648F680F11A2741), U64(0x2D255069F0B7DAB3), U64(0x9BC5A38EF729ABD4), - U64(0xEF2F054308F6A2BC), U64(0xAF2042F5CC5C2858), U64(0x480412BAB7F5BE2A), U64(0xAEF3AF4A563DFE43), - U64(0x19AFE59AE451497F), U64(0x52593803DFF1E840), U64(0xF4F076E65F2CE6F0), U64(0x11379625747D5AF3), - U64(0xBCE5D2248682C115), U64(0x9DA4243DE836994F), U64(0x066F70B33FE09017), U64(0x4DC4DE189B671A1C), - U64(0x51039AB7712457C3), U64(0xC07A3F80C31FB4B4), U64(0xB46EE9C5E64A6E7C), U64(0xB3819A42ABE61C87), - U64(0x21A007933A522A20), U64(0x2DF16F761598AA4F), U64(0x763C4A1371B368FD), U64(0xF793C46702E086A0), - U64(0xD7288E012AEB8D31), U64(0xDE336A2A4BC1C44B), U64(0x0BF692B38D079F23), U64(0x2C604A7A177326B3), - U64(0x4850E73E03EB6064), U64(0xCFC447F1E53C8E1B), U64(0xB05CA3F564268D99), U64(0x9AE182C8BC9474E8), - U64(0xA4FC4BD4FC5558CA), U64(0xE755178D58FC4E76), U64(0x69B97DB1A4C03DFE), U64(0xF9B5B7C4ACC67C96), - U64(0xFC6A82D64B8655FB), U64(0x9C684CB6C4D24417), U64(0x8EC97D2917456ED0), U64(0x6703DF9D2924E97E), - U64(0xC547F57E42A7444E), U64(0x78E37644E7CAD29E), U64(0xFE9A44E9362F05FA), U64(0x08BD35CC38336615), - U64(0x9315E5EB3A129ACE), U64(0x94061B871E04DF75), U64(0xDF1D9F9D784BA010), U64(0x3BBA57B68871B59D), - U64(0xD2B7ADEEDED1F73F), U64(0xF7A255D83BC373F8), U64(0xD7F4F2448C0CEB81), U64(0xD95BE88CD210FFA7), - U64(0x336F52F8FF4728E7), U64(0xA74049DAC312AC71), U64(0xA2F61BB6E437FDB5), U64(0x4F2A5CB07F6A35B3), - U64(0x87D380BDA5BF7859), U64(0x16B9F7E06C453A21), U64(0x7BA2484C8A0FD54E), U64(0xF3A678CAD9A2E38C), - U64(0x39B0BF7DDE437BA2), U64(0xFCAF55C1BF8A4424), U64(0x18FCF680573FA594), U64(0x4C0563B89F495AC3), - U64(0x40E087931A00930D), U64(0x8CFFA9412EB642C1), U64(0x68CA39053261169F), U64(0x7A1EE967D27579E2), - U64(0x9D1D60E5076F5B6F), U64(0x3810E399B6F65BA2), U64(0x32095B6D4AB5F9B1), U64(0x35CAB62109DD038A), - U64(0xA90B24499FCFAFB1), U64(0x77A225A07CC2C6BD), U64(0x513E5E634C70E331), U64(0x4361C0CA3F692F12), - U64(0xD941ACA44B20A45B), U64(0x528F7C8602C5807B), U64(0x52AB92BEB9613989), U64(0x9D1DFA2EFC557F73), - U64(0x722FF175F572C348), U64(0x1D1260A51107FE97), U64(0x7A249A57EC0C9BA2), U64(0x04208FE9E8F7F2D6), - U64(0x5A110C6058B920A0), U64(0x0CD9A497658A5698), U64(0x56FD23C8F9715A4C), U64(0x284C847B9D887AAE), - U64(0x04FEABFBBDB619CB), U64(0x742E1E651C60BA83), U64(0x9A9632E65904AD3C), U64(0x881B82A13B51B9E2), - U64(0x506E6744CD974924), U64(0xB0183DB56FFC6A79), U64(0x0ED9B915C66ED37E), U64(0x5E11E86D5873D484), - U64(0xF678647E3519AC6E), U64(0x1B85D488D0F20CC5), U64(0xDAB9FE6525D89021), U64(0x0D151D86ADB73615), - U64(0xA865A54EDCC0F019), U64(0x93C42566AEF98FFB), U64(0x99E7AFEABE000731), U64(0x48CBFF086DDF285A), - U64(0x7F9B6AF1EBF78BAF), U64(0x58627E1A149BBA21), U64(0x2CD16E2ABD791E33), U64(0xD363EFF5F0977996), - U64(0x0CE2A38C344A6EED), U64(0x1A804AADB9CFA741), U64(0x907F30421D78C5DE), U64(0x501F65EDB3034D07), - U64(0x37624AE5A48FA6E9), U64(0x957BAF61700CFF4E), U64(0x3A6C27934E31188A), U64(0xD49503536ABCA345), - U64(0x088E049589C432E0), U64(0xF943AEE7FEBF21B8), U64(0x6C3B8E3E336139D3), U64(0x364F6FFA464EE52E), - U64(0xD60F6DCEDC314222), U64(0x56963B0DCA418FC0), U64(0x16F50EDF91E513AF), U64(0xEF1955914B609F93), - U64(0x565601C0364E3228), U64(0xECB53939887E8175), U64(0xBAC7A9A18531294B), U64(0xB344C470397BBA52), - U64(0x65D34954DAF3CEBD), U64(0xB4B81B3FA97511E2), U64(0xB422061193D6F6A7), U64(0x071582401C38434D), - U64(0x7A13F18BBEDC4FF5), U64(0xBC4097B116C524D2), U64(0x59B97885E2F2EA28), U64(0x99170A5DC3115544), - U64(0x6F423357E7C6A9F9), U64(0x325928EE6E6F8794), U64(0xD0E4366228B03343), U64(0x565C31F7DE89EA27), - U64(0x30F5611484119414), U64(0xD873DB391292ED4F), U64(0x7BD94E1D8E17DEBC), U64(0xC7D9F16864A76E94), - U64(0x947AE053EE56E63C), U64(0xC8C93882F9475F5F), U64(0x3A9BF55BA91F81CA), U64(0xD9A11FBB3D9808E4), - U64(0x0FD22063EDC29FCA), U64(0xB3F256D8ACA0B0B9), U64(0xB03031A8B4516E84), U64(0x35DD37D5871448AF), - U64(0xE9F6082B05542E4E), U64(0xEBFAFA33D7254B59), U64(0x9255ABB50D532280), U64(0xB9AB4CE57F2D34F3), - U64(0x693501D628297551), U64(0xC62C58F97DD949BF), U64(0xCD454F8F19C5126A), U64(0xBBE83F4ECC2BDECB), - U64(0xDC842B7E2819E230), U64(0xBA89142E007503B8), U64(0xA3BC941D0A5061CB), U64(0xE9F6760E32CD8021), - U64(0x09C7E552BC76492F), U64(0x852F54934DA55CC9), U64(0x8107FCCF064FCF56), U64(0x098954D51FFF6580), - U64(0x23B70EDB1955C4BF), U64(0xC330DE426430F69D), U64(0x4715ED43E8A45C0A), U64(0xA8D7E4DAB780A08D), - U64(0x0572B974F03CE0BB), U64(0xB57D2E985E1419C7), U64(0xE8D9ECBE2CF3D73F), U64(0x2FE4B17170E59750), - U64(0x11317BA87905E790), U64(0x7FBF21EC8A1F45EC), U64(0x1725CABFCB045B00), U64(0x964E915CD5E2B207), - U64(0x3E2B8BCBF016D66D), U64(0xBE7444E39328A0AC), U64(0xF85B2B4FBCDE44B7), U64(0x49353FEA39BA63B1), - U64(0x1DD01AAFCD53486A), U64(0x1FCA8A92FD719F85), U64(0xFC7C95D827357AFA), U64(0x18A6A990C8B35EBD), - U64(0xCCCB7005C6B9C28D), U64(0x3BDBB92C43B17F26), U64(0xAA70B5B4F89695A2), U64(0xE94C39A54A98307F), - U64(0xB7A0B174CFF6F36E), U64(0xD4DBA84729AF48AD), U64(0x2E18BC1AD9704A68), U64(0x2DE0966DAF2F8B1C), - U64(0xB9C11D5B1E43A07E), U64(0x64972D68DEE33360), U64(0x94628D38D0C20584), U64(0xDBC0D2B6AB90A559), - U64(0xD2733C4335C6A72F), U64(0x7E75D99D94A70F4D), U64(0x6CED1983376FA72B), U64(0x97FCAACBF030BC24), - U64(0x7B77497B32503B12), U64(0x8547EDDFB81CCB94), U64(0x79999CDFF70902CB), U64(0xCFFE1939438E9B24), - U64(0x829626E3892D95D7), U64(0x92FAE24291F2B3F1), U64(0x63E22C147B9C3403), U64(0xC678B6D860284A1C), - U64(0x5873888850659AE7), U64(0x0981DCD296A8736D), U64(0x9F65789A6509A440), U64(0x9FF38FED72E9052F), - U64(0xE479EE5B9930578C), U64(0xE7F28ECD2D49EECD), U64(0x56C074A581EA17FE), U64(0x5544F7D774B14AEF), - U64(0x7B3F0195FC6F290F), U64(0x12153635B2C0CF57), U64(0x7F5126DBBA5E0CA7), U64(0x7A76956C3EAFB413), - U64(0x3D5774A11D31AB39), U64(0x8A1B083821F40CB4), U64(0x7B4A38E32537DF62), U64(0x950113646D1D6E03), - U64(0x4DA8979A0041E8A9), U64(0x3BC36E078F7515D7), U64(0x5D0A12F27AD310D1), U64(0x7F9D1A2E1EBE1327), - U64(0xDA3A361B1C5157B1), U64(0xDCDD7D20903D0C25), U64(0x36833336D068F707), U64(0xCE68341F79893389), - U64(0xAB9090168DD05F34), U64(0x43954B3252DC25E5), U64(0xB438C2B67F98E5E9), U64(0x10DCD78E3851A492), - U64(0xDBC27AB5447822BF), U64(0x9B3CDB65F82CA382), U64(0xB67B7896167B4C84), U64(0xBFCED1B0048EAC50), - U64(0xA9119B60369FFEBD), U64(0x1FFF7AC80904BF45), U64(0xAC12FB171817EEE7), U64(0xAF08DA9177DDA93D), - U64(0x1B0CAB936E65C744), U64(0xB559EB1D04E5E932), U64(0xC37B45B3F8D6F2BA), U64(0xC3A9DC228CAAC9E9), - U64(0xF3B8B6675A6507FF), U64(0x9FC477DE4ED681DA), U64(0x67378D8ECCEF96CB), U64(0x6DD856D94D259236), - U64(0xA319CE15B0B4DB31), U64(0x073973751F12DD5E), U64(0x8A8E849EB32781A5), U64(0xE1925C71285279F5), - U64(0x74C04BF1790C0EFE), U64(0x4DDA48153C94938A), U64(0x9D266D6A1CC0542C), U64(0x7440FB816508C4FE), - U64(0x13328503DF48229F), U64(0xD6BF7BAEE43CAC40), U64(0x4838D65F6EF6748F), U64(0x1E152328F3318DEA), - U64(0x8F8419A348F296BF), U64(0x72C8834A5957B511), U64(0xD7A023A73260B45C), U64(0x94EBC8ABCFB56DAE), - U64(0x9FC10D0F989993E0), U64(0xDE68A2355B93CAE6), U64(0xA44CFE79AE538BBE), U64(0x9D1D84FCCE371425), - U64(0x51D2B1AB2DDFB636), U64(0x2FD7E4B9E72CD38C), U64(0x65CA5B96B7552210), U64(0xDD69A0D8AB3B546D), - U64(0x604D51B25FBF70E2), U64(0x73AA8A564FB7AC9E), U64(0x1A8C1E992B941148), U64(0xAAC40A2703D9BEA0), - U64(0x764DBEAE7FA4F3A6), U64(0x1E99B96E70A9BE8B), U64(0x2C5E9DEB57EF4743), U64(0x3A938FEE32D29981), - U64(0x26E6DB8FFDF5ADFE), U64(0x469356C504EC9F9D), U64(0xC8763C5B08D1908C), U64(0x3F6C6AF859D80055), - U64(0x7F7CC39420A3A545), U64(0x9BFB227EBDF4C5CE), U64(0x89039D79D6FC5C5C), U64(0x8FE88B57305E2AB6), - U64(0xA09E8C8C35AB96DE), U64(0xFA7E393983325753), U64(0xD6B6D0ECC617C699), U64(0xDFEA21EA9E7557E3), - U64(0xB67C1FA481680AF8), U64(0xCA1E3785A9E724E5), U64(0x1CFC8BED0D681639), U64(0xD18D8549D140CAEA), - U64(0x4ED0FE7E9DC91335), U64(0xE4DBF0634473F5D2), U64(0x1761F93A44D5AEFE), U64(0x53898E4C3910DA55), - U64(0x734DE8181F6EC39A), U64(0x2680B122BAA28D97), U64(0x298AF231C85BAFAB), U64(0x7983EED3740847D5), - U64(0x66C1A2A1A60CD889), U64(0x9E17E49642A3E4C1), U64(0xEDB454E7BADC0805), U64(0x50B704CAB602C329), - U64(0x4CC317FB9CDDD023), U64(0x66B4835D9EAFEA22), U64(0x219B97E26FFC81BD), U64(0x261E4E4C0A333A9D), - U64(0x1FE2CCA76517DB90), U64(0xD7504DFA8816EDBB), U64(0xB9571FA04DC089C8), U64(0x1DDC0325259B27DE), - U64(0xCF3F4688801EB9AA), U64(0xF4F5D05C10CAB243), U64(0x38B6525C21A42B0E), U64(0x36F60E2BA4FA6800), - U64(0xEB3593803173E0CE), U64(0x9C4CD6257C5A3603), U64(0xAF0C317D32ADAA8A), U64(0x258E5A80C7204C4B), - U64(0x8B889D624D44885D), U64(0xF4D14597E660F855), U64(0xD4347F66EC8941C3), U64(0xE699ED85B0DFB40D), - U64(0x2472F6207C2D0484), U64(0xC2A1E7B5B459AEB5), U64(0xAB4F6451CC1D45EC), U64(0x63767572AE3D6174), - U64(0xA59E0BD101731A28), U64(0x116D0016CB948F09), U64(0x2CF9C8CA052F6E9F), U64(0x0B090A7560A968E3), - U64(0xABEEDDB2DDE06FF1), U64(0x58EFC10B06A2068D), U64(0xC6E57A78FBD986E0), U64(0x2EAB8CA63CE802D7), - U64(0x14A195640116F336), U64(0x7C0828DD624EC390), U64(0xD74BBE77E6116AC7), U64(0x804456AF10F5FB53), - U64(0xEBE9EA2ADF4321C7), U64(0x03219A39EE587A30), U64(0x49787FEF17AF9924), U64(0xA1E9300CD8520548), - U64(0x5B45E522E4B1B4EF), U64(0xB49C3B3995091A36), U64(0xD4490AD526F14431), U64(0x12A8F216AF9418C2), - U64(0x001F837CC7350524), U64(0x1877B51E57A764D5), U64(0xA2853B80F17F58EE), U64(0x993E1DE72D36D310), - U64(0xB3598080CE64A656), U64(0x252F59CF0D9F04BB), U64(0xD23C8E176D113600), U64(0x1BDA0492E7E4586E), - U64(0x21E0BD5026C619BF), U64(0x3B097ADAF088F94E), U64(0x8D14DEDB30BE846E), U64(0xF95CFFA23AF5F6F4), - U64(0x3871700761B3F743), U64(0xCA672B91E9E4FA16), U64(0x64C8E531BFF53B55), U64(0x241260ED4AD1E87D), - U64(0x106C09B972D2E822), U64(0x7FBA195410E5CA30), U64(0x7884D9BC6CB569D8), U64(0x0647DFEDCD894A29), - U64(0x63573FF03E224774), U64(0x4FC8E9560F91B123), U64(0x1DB956E450275779), U64(0xB8D91274B9E9D4FB), - U64(0xA2EBEE47E2FBFCE1), U64(0xD9F1F30CCD97FB09), U64(0xEFED53D75FD64E6B), U64(0x2E6D02C36017F67F), - U64(0xA9AA4D20DB084E9B), U64(0xB64BE8D8B25396C1), U64(0x70CB6AF7C2D5BCF0), U64(0x98F076A4F7A2322E), - U64(0xBF84470805E69B5F), U64(0x94C3251F06F90CF3), U64(0x3E003E616A6591E9), U64(0xB925A6CD0421AFF3), - U64(0x61BDD1307C66E300), U64(0xBF8D5108E27E0D48), U64(0x240AB57A8B888B20), U64(0xFC87614BAF287E07), - U64(0xEF02CDD06FFDB432), U64(0xA1082C0466DF6C0A), U64(0x8215E577001332C8), U64(0xD39BB9C3A48DB6CF), - U64(0x2738259634305C14), U64(0x61CF4F94C97DF93D), U64(0x1B6BACA2AE4E125B), U64(0x758F450C88572E0B), - U64(0x959F587D507A8359), U64(0xB063E962E045F54D), U64(0x60E8ED72C0DFF5D1), U64(0x7B64978555326F9F), - U64(0xFD080D236DA814BA), U64(0x8C90FD9B083F4558), U64(0x106F72FE81E2C590), U64(0x7976033A39F7D952), - U64(0xA4EC0132764CA04B), U64(0x733EA705FAE4FA77), U64(0xB4D8F77BC3E56167), U64(0x9E21F4F903B33FD9), - U64(0x9D765E419FB69F6D), U64(0xD30C088BA61EA5EF), U64(0x5D94337FBFAF7F5B), U64(0x1A4E4822EB4D7A59), - U64(0x6FFE73E81B637FB3), U64(0xDDF957BC36D8B9CA), U64(0x64D0E29EEA8838B3), U64(0x08DD9BDFD96B9F63), - U64(0x087E79E5A57D1D13), U64(0xE328E230E3E2B3FB), U64(0x1C2559E30F0946BE), U64(0x720BF5F26F4D2EAA), - U64(0xB0774D261CC609DB), U64(0x443F64EC5A371195), U64(0x4112CF68649A260E), U64(0xD813F2FAB7F5C5CA), - U64(0x660D3257380841EE), U64(0x59AC2C7873F910A3), U64(0xE846963877671A17), U64(0x93B633ABFA3469F8), - U64(0xC0C0F5A60EF4CDCF), U64(0xCAF21ECD4377B28C), U64(0x57277707199B8175), U64(0x506C11B9D90E8B1D), - U64(0xD83CC2687A19255F), U64(0x4A29C6465A314CD1), U64(0xED2DF21216235097), U64(0xB5635C95FF7296E2), - U64(0x22AF003AB672E811), U64(0x52E762596BF68235), U64(0x9AEBA33AC6ECC6B0), U64(0x944F6DE09134DFB6), - U64(0x6C47BEC883A7DE39), U64(0x6AD047C430A12104), U64(0xA5B1CFDBA0AB4067), U64(0x7C45D833AFF07862), - U64(0x5092EF950A16DA0B), U64(0x9338E69C052B8E7B), U64(0x455A4B4CFE30E3F5), U64(0x6B02E63195AD0CF8), - U64(0x6B17B224BAD6BF27), U64(0xD1E0CCD25BB9C169), U64(0xDE0C89A556B9AE70), U64(0x50065E535A213CF6), - U64(0x9C1169FA2777B874), U64(0x78EDEFD694AF1EED), U64(0x6DC93D9526A50E68), U64(0xEE97F453F06791ED), - U64(0x32AB0EDB696703D3), U64(0x3A6853C7E70757A7), U64(0x31865CED6120F37D), U64(0x67FEF95D92607890), - U64(0x1F2B1D1F15F6DC9C), U64(0xB69E38A8965C6B65), U64(0xAA9119FF184CCCF4), U64(0xF43C732873F24C13), - U64(0xFB4A3D794A9A80D2), U64(0x3550C2321FD6109C), U64(0x371F77E76BB8417E), U64(0x6BFA9AAE5EC05779), - U64(0xCD04F3FF001A4778), U64(0xE3273522064480CA), U64(0x9F91508BFFCFC14A), U64(0x049A7F41061A9E60), - U64(0xFCB6BE43A9F2FE9B), U64(0x08DE8A1C7797DA9B), U64(0x8F9887E6078735A1), U64(0xB5B4071DBFC73A66), - U64(0x230E343DFBA08D33), U64(0x43ED7F5A0FAE657D), U64(0x3A88A0FBBCB05C63), U64(0x21874B8B4D2DBC4F), - U64(0x1BDEA12E35F6A8C9), U64(0x53C065C6C8E63528), U64(0xE34A1D250E7A8D6B), U64(0xD6B04D3B7651DD7E), - U64(0x5E90277E7CB39E2D), U64(0x2C046F22062DC67D), U64(0xB10BB459132D0A26), U64(0x3FA9DDFB67E2F199), - U64(0x0E09B88E1914F7AF), U64(0x10E8B35AF3EEAB37), U64(0x9EEDECA8E272B933), U64(0xD4C718BC4AE8AE5F), - U64(0x81536D601170FC20), U64(0x91B534F885818A06), U64(0xEC8177F83F900978), U64(0x190E714FADA5156E), - U64(0xB592BF39B0364963), U64(0x89C350C893AE7DC1), U64(0xAC042E70F8B383F2), U64(0xB49B52E587A1EE60), - U64(0xFB152FE3FF26DA89), U64(0x3E666E6F69AE2C15), U64(0x3B544EBE544C19F9), U64(0xE805A1E290CF2456), - U64(0x24B33C9D7ED25117), U64(0xE74733427B72F0C1), U64(0x0A804D18B7097475), U64(0x57E3306D881EDB4F), - U64(0x4AE7D6A36EB5DBCB), U64(0x2D8D5432157064C8), U64(0xD1E649DE1E7F268B), U64(0x8A328A1CEDFE552C), - U64(0x07A3AEC79624C7DA), U64(0x84547DDC3E203C94), U64(0x990A98FD5071D263), U64(0x1A4FF12616EEFC89), - U64(0xF6F7FD1431714200), U64(0x30C05B1BA332F41C), U64(0x8D2636B81555A786), U64(0x46C9FEB55D120902), - U64(0xCCEC0A73B49C9921), U64(0x4E9D2827355FC492), U64(0x19EBB029435DCB0F), U64(0x4659D2B743848A2C), - U64(0x963EF2C96B33BE31), U64(0x74F85198B05A2E7D), U64(0x5A0F544DD2B1FB18), U64(0x03727073C2E134B1), - U64(0xC7F6AA2DE59AEA61), U64(0x352787BAA0D7C22F), U64(0x9853EAB63B5E0B35), U64(0xABBDCDD7ED5C0860), - U64(0xCF05DAF5AC8D77B0), U64(0x49CAD48CEBF4A71E), U64(0x7A4C10EC2158C4A6), U64(0xD9E92AA246BF719E), - U64(0x13AE978D09FE5557), U64(0x730499AF921549FF), U64(0x4E4B705B92903BA4), U64(0xFF577222C14F0A3A), - U64(0x55B6344CF97AAFAE), U64(0xB862225B055B6960), U64(0xCAC09AFBDDD2CDB4), U64(0xDAF8E9829FE96B5F), - U64(0xB5FDFC5D3132C498), U64(0x310CB380DB6F7503), U64(0xE87FBB46217A360E), U64(0x2102AE466EBB1148), - U64(0xF8549E1A3AA5E00D), U64(0x07A69AFDCC42261A), U64(0xC4C118BFE78FEAAE), U64(0xF9F4892ED96BD438), - U64(0x1AF3DBE25D8F45DA), U64(0xF5B4B0B0D2DEEEB4), U64(0x962ACEEFA82E1C84), U64(0x046E3ECAAF453CE9), - U64(0xF05D129681949A4C), U64(0x964781CE734B3C84), U64(0x9C2ED44081CE5FBD), U64(0x522E23F3925E319E), - U64(0x177E00F9FC32F791), U64(0x2BC60A63A6F3B3F2), U64(0x222BBFAE61725606), U64(0x486289DDCC3D6780), - U64(0x7DC7785B8EFDFC80), U64(0x8AF38731C02BA980), U64(0x1FAB64EA29A2DDF7), U64(0xE4D9429322CD065A), - U64(0x9DA058C67844F20C), U64(0x24C0E332B70019B0), U64(0x233003B5A6CFE6AD), U64(0xD586BD01C5C217F6), - U64(0x5E5637885F29BC2B), U64(0x7EBA726D8C94094B), U64(0x0A56A5F0BFE39272), U64(0xD79476A84EE20D06), - U64(0x9E4C1269BAA4BF37), U64(0x17EFEE45B0DEE640), U64(0x1D95B0A5FCF90BC6), U64(0x93CBE0B699C2585D), - U64(0x65FA4F227A2B6D79), U64(0xD5F9E858292504D5), U64(0xC2B5A03F71471A6F), U64(0x59300222B4561E00), - U64(0xCE2F8642CA0712DC), U64(0x7CA9723FBB2E8988), U64(0x2785338347F2BA08), U64(0xC61BB3A141E50E8C), - U64(0x150F361DAB9DEC26), U64(0x9F6A419D382595F4), U64(0x64A53DC924FE7AC9), U64(0x142DE49FFF7A7C3D), - U64(0x0C335248857FA9E7), U64(0x0A9C32D5EAE45305), U64(0xE6C42178C4BBB92E), U64(0x71F1CE2490D20B07), - U64(0xF1BCC3D275AFE51A), U64(0xE728E8C83C334074), U64(0x96FBF83A12884624), U64(0x81A1549FD6573DA5), - U64(0x5FA7867CAF35E149), U64(0x56986E2EF3ED091B), U64(0x917F1DD5F8886C61), U64(0xD20D8C88C8FFE65F), - U64(0x31D71DCE64B2C310), U64(0xF165B587DF898190), U64(0xA57E6339DD2CF3A0), U64(0x1EF6E6DBB1961EC9), - U64(0x70CC73D90BC26E24), U64(0xE21A6B35DF0C3AD7), U64(0x003A93D8B2806962), U64(0x1C99DED33CB890A1), - U64(0xCF3145DE0ADD4289), U64(0xD0E4427A5514FB72), U64(0x77C621CC9FB3A483), U64(0x67A34DAC4356550B), - U64(0xF8D626AAAF278509) }; - -} // namespace chess diff --git a/libchess/position.h b/libchess/position.h deleted file mode 100644 index 6745cacec..000000000 --- a/libchess/position.h +++ /dev/null @@ -1,138 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#ifndef LIBCHESS_POSITION_H -#define LIBCHESS_POSITION_H - -#include - -#include "uint.h" -#include "piece.h" -#include "square.h" -#include "attacker_generator.h" -#include "pseudo_legal_move_generator.h" -#include "move_info.h" - -namespace chess { - -class AttackerGenerator; -class LegalMoveGenerator; -class PseudoLegalMoveGenerator; - -/** - * \brief A chess position. - */ -class Position { -public: - - Position(); - Position(const std::string& fen); - Position(const Position& position); - - void clear_board(); - void reset(); - - Piece get(const Square& square) const; - void set(const Square& square, const Piece& piece); - boost::python::object __getitem__(const boost::python::object& square_key) const; - void __setitem__(const boost::python::object& square_key, const boost::python::object& piece); - void __delitem__(const boost::python::object& square_key); - - - char turn() const; - void set_turn(char turn); - void toggle_turn(); - - char ep_file() const; - void set_ep_file(char ep_file); - boost::python::object python_ep_file() const; - void python_set_ep_file(const boost::python::object& ep_file); - Square get_ep_square() const; - boost::python::object python_get_ep_square() const; - Square get_real_ep_square() const; - boost::python::object python_get_real_ep_square() const; - - int half_moves() const; - void set_half_moves(int half_moves); - - int ply() const; - void set_ply(int ply); - - std::string fen() const; - void set_fen(const std::string& fen); - - PseudoLegalMoveGenerator *get_pseudo_legal_moves() const; - LegalMoveGenerator *get_legal_moves() const; - AttackerGenerator *get_attackers(char color, Square target) const; - - Square get_king(char color) const; - boost::python::object python_get_king(char color) const; - - bool is_king_attacked(char color) const; - bool is_check() const; - bool is_checkmate() const; - bool is_stalemate() const; - bool is_insufficient_material() const; - bool is_game_over() const; - - bool could_have_kingside_castling_right(char color) const; - bool could_have_queenside_castling_right(char color) const; - bool has_kingside_castling_right(char color) const; - bool has_queenside_castling_right(char color) const; - void set_kingside_castling_right(char color, bool castle); - void set_queenside_castling_right(char color, bool castle); - - MoveInfo make_move(const Move& move); - void make_move_fast(const Move& move); - Move get_move_from_san(const std::string& san) const; - MoveInfo make_move_from_san(const std::string& san); - - std::string __repr__() const; - uint64_t __hash__() const; - - Position& operator=(const Position& rhs); - bool operator==(const Position& rhs) const; - bool operator!=(const Position& rhs) const; - -protected: - MoveInfo make_unvalidated_move_fast(const Move& move); - - Piece m_board[128]; - char m_turn; - char m_ep_file; - int m_half_moves; - int m_ply; - bool m_white_castle_queenside; - bool m_white_castle_kingside; - bool m_black_castle_queenside; - bool m_black_castle_kingside; - -private: - friend class LegalMoveGenerator; - - int x88_index_from_square_key(const boost::python::object& square_key) const; - -}; - -std::ostream& operator<<(std::ostream& out, const Position& position); - -const std::string START_FEN("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"); - -extern const uint64_t POLYGLOT_RANDOM_ARRAY[]; - -} // namespace chess - -#endif // LIBCHESS_POSITION_H diff --git a/libchess/pseudo_legal_move_generator.cc b/libchess/pseudo_legal_move_generator.cc deleted file mode 100644 index 5775b7430..000000000 --- a/libchess/pseudo_legal_move_generator.cc +++ /dev/null @@ -1,264 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#include "libchess.h" -#include "pseudo_legal_move_generator.h" - -namespace chess { - -PseudoLegalMoveGenerator::PseudoLegalMoveGenerator(const Position& position) { - m_position = new Position(position); - m_index = 0; -} - -PseudoLegalMoveGenerator::~PseudoLegalMoveGenerator() { - delete m_position; -} - -PseudoLegalMoveGenerator& PseudoLegalMoveGenerator::__iter__() { - // Rewind. - m_index = 0; - while (!m_cache.empty()) { - m_cache.pop(); - } - return *this; -} - -void PseudoLegalMoveGenerator::generate_from_square(const Square& square) { - // Skip empty square and opposing pieces. - Piece piece = m_position->get(square); - if (!piece.is_valid() || piece.color() != m_position->turn()) { - return; - } - - if (piece.type() == 'p') { - // Pawn moves: Single steps forward. - Square target = Square::from_x88_index( - square.x88_index() + ((m_position->turn() == 'b') ? 16 : -16)); - - if (!m_position->get(target).is_valid()) { - if (target.is_backrank()) { - // Promotion. - m_cache.push(Move(square, target, 'b')); - m_cache.push(Move(square, target, 'n')); - m_cache.push(Move(square, target, 'r')); - m_cache.push(Move(square, target, 'q')); - } else { - m_cache.push(Move(square, target)); - - // Two steps forward. - if ((m_position->turn() == 'w' && square.rank() == 1) || - (m_position->turn() == 'b' && square.rank() == 6)) - { - target = Square::from_x88_index( - square.x88_index() + ((m_position->turn() == 'b') ? 32 : -32)); - if (!m_position->get(target).is_valid()) { - m_cache.push(Move(square, target)); - } - } - } - } - - // Pawn captures. - const int offsets[] = { 17, 15 }; - for (int i = 0; i < 2; i++) { - // Ensure the target square is on the board. - int offset = (m_position->turn() == 'b') ? offsets[i] : - offsets[i]; - int target_index = square.x88_index() + offset; - if (target_index & 0x88) { - continue; - } - Square target = Square::from_x88_index(target_index); - Piece target_piece = m_position->get(target); - if (target_piece.is_valid() && target_piece.color() != m_position->turn()) { - if (target.is_backrank()) { - // Promotion. - m_cache.push(Move(square, target, 'b')); - m_cache.push(Move(square, target, 'n')); - m_cache.push(Move(square, target, 'r')); - m_cache.push(Move(square, target, 'q')); - } else { - // Normal capture. - m_cache.push(Move(square, target)); - } - } else if (target == m_position->get_ep_square()) { - // En-passant. - m_cache.push(Move(square, target)); - } - } - } else { - // Other pieces. - const int offsets[5][9] = { - { -18, -33, -31, -14, 18, 33, 31, 14, 0 }, // Knight - { -17, -15, 17, 15, 0 }, // Bishop - { -16, 1, 16, -1, 0 }, // Rook - { -17, -16, -15, 1, 17, 16, 15, -1, 0 }, // Queen - { -17, -16, -15, 1, 17, 16, 15, -1, 0 } }; // King - - // Get the index of the piece in the offset table. - int piece_index = 0; - switch (piece.type()) { - case 'n': - piece_index = 0; - break; - case 'b': - piece_index = 1; - break; - case 'r': - piece_index = 2; - break; - case 'q': - piece_index = 3; - break; - case 'k': - piece_index = 4; - break; - } - - // Generate the moves. - for (int i = 0; offsets[piece_index][i] != 0; i++) { - int target_index = square.x88_index(); - while (true) { - target_index += offsets[piece_index][i]; - if (target_index & 0x88) { - break; - } - - Square target = Square::from_x88_index(target_index); - Piece target_piece = m_position->get(target); - if (target_piece.is_valid()) { - // Captures. - if (target_piece.color() != m_position->turn()) { - m_cache.push(Move(square, target)); - } - break; - } else { - m_cache.push(Move(square, target)); - } - - // Knight and king do not go multiple times in their - // direction. - if (piece.type() == 'k' || piece.type() == 'n') { - break; - } - } - } - - } - - if (piece.type() == 'k') { - int backrank = m_position->turn() == 'b' ? 7 : 0; - - // King-side castling. - if (m_position->has_kingside_castling_right(m_position->turn())) { - Square bishop_square(backrank, 5); - Square knight_square(backrank, 6); - if (!m_position->get(bishop_square).is_valid() && !m_position->get(knight_square).is_valid()) { - AttackerGenerator attacks(*m_position, opposite_color(m_position->turn()), bishop_square); - if (!attacks.__nonzero__()) { - m_cache.push(Move(Square(backrank, 4), knight_square)); - } - } - } - - // Queen-side castling. - if (m_position->has_queenside_castling_right(m_position->turn())) { - Square knight_square(backrank, 1); - Square bishop_square(backrank, 2); - Square queen_square(backrank, 3); - if (!m_position->get(knight_square).is_valid() && - !m_position->get(bishop_square).is_valid() && - !m_position->get(queen_square).is_valid()) - { - AttackerGenerator attacks(*m_position, opposite_color(m_position->turn()), queen_square); - if (!attacks.__nonzero__()) { - m_cache.push(Move(Square(backrank, 4), bishop_square)); - } - } - } - } -} - -Move PseudoLegalMoveGenerator::next() { - if (has_more()) { - Move move = m_cache.front(); - m_cache.pop(); - return move; - } else { - throw std::logic_error("Called next() altough there are no more pseudo legal moves."); - } -} - -Move PseudoLegalMoveGenerator::python_next() { - if (has_more()) { - return next(); - } else { - PyErr_SetNone(PyExc_StopIteration); - throw boost::python::error_already_set(); - } -} - -bool PseudoLegalMoveGenerator::has_more() { - while(m_index < 64 && m_cache.empty()) { - generate_from_square(Square(m_index++)); - } - - return !m_cache.empty(); -} - -bool PseudoLegalMoveGenerator::__contains__(const Move& move) { - // Only need to generate the moves of the source square. - generate_from_square(move.source()); - - // See if the move is among the possible ones. - while (!m_cache.empty()) { - Move candidate_move = m_cache.front(); - m_cache.pop(); - if (candidate_move == move) { - return true; - } - } - return false; -} - -bool PseudoLegalMoveGenerator::__nonzero__() { - // Generate moves until on is found. - int index = 0; - while (index < 64) { - generate_from_square(Square(index++)); - if (!m_cache.empty()) { - return true; - } - } - return false; -} - -int PseudoLegalMoveGenerator::__len__() { - // Clear the cache. - while (!m_cache.empty()) { - m_cache.pop(); - } - - // Generate all moves. - int index = 0; - while (index < 64) { - generate_from_square(Square(index++)); - } - - return m_cache.size(); -} - -} // namespace chess diff --git a/libchess/pseudo_legal_move_generator.h b/libchess/pseudo_legal_move_generator.h deleted file mode 100644 index ef8d90ab6..000000000 --- a/libchess/pseudo_legal_move_generator.h +++ /dev/null @@ -1,58 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#ifndef LIBCHESS_PSEUDO_LEGAL_MOVE_GENERATOR_H -#define LIBCHESS_PSEUDO_LEGAL_MOVE_GENERATOR_H - -#include -#include - -#include "position.h" -#include "move.h" - -namespace chess { - -class Position; - -/** - * \brief Enumerates pseudo legal moves in a given position. - */ -class PseudoLegalMoveGenerator : boost::noncopyable { -public: - PseudoLegalMoveGenerator(const Position& position); - ~PseudoLegalMoveGenerator(); - - int __len__(); - bool __nonzero__(); - PseudoLegalMoveGenerator& __iter__(); - bool __contains__(const Move& move); - - bool has_more(); - Move next(); - Move python_next(); - -protected: - void generate_from_square(const Square& square); - std::queue m_cache; - -private: - Position* m_position; - int m_index; -}; - -} // namespace chess - -#endif // LIBCHESS_PSEUDO_LEGAL_MOVE_GENERATOR_H diff --git a/libchess/square.cc b/libchess/square.cc deleted file mode 100644 index 48841b741..000000000 --- a/libchess/square.cc +++ /dev/null @@ -1,169 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#include "square.h" - -#include - -namespace chess { - -Square::Square() { - m_index = 64; -} - -Square::Square(int index) { - if (index < 0 || index >= 64) { - throw std::invalid_argument("index"); - } - m_index = index; -} - -Square::Square(const Square& square) { - m_index = square.m_index; -} - -Square::Square(const std::string& name) { - if (name.length() != 2) { - throw std::invalid_argument("name"); - } - - int file = name.at(0) - 'a'; - int rank = name.at(1) - '1'; - if (file < 0 || file >= 8 || rank < 0 || rank >= 8) { - throw std::invalid_argument("name"); - } - - m_index = rank * 8 + file; -} - -Square::Square(int rank, int file) { - if (file < 0 || file >= 8) { - throw std::invalid_argument("file"); - } - if (rank < 0 || rank >= 8) { - throw std::invalid_argument("rank"); - } - - m_index = rank * 8 + file; -} - -int Square::rank() const { - if (m_index == 64) { - throw new std::logic_error("Called rank() of null square."); - } else { - return m_index / 8; - } -} - -int Square::file() const { - if (m_index == 64) { - throw std::logic_error("Called file() of null square."); - } else { - return m_index % 8; - } -} - -int Square::index() const { - if (m_index == 64) { - throw std::logic_error("Called index() of null square."); - } else { - return m_index; - } -} - -int Square::x88_index() const { - return file() + 16 * (7 - rank()); -} - -std::string Square::name() const { - std::string name; - name += (file() + 'a'); - name += (rank() + '1'); - return name; -} - -char Square::file_name() const { - return file() + 'a'; -} - -char Square::rank_name() const { - return rank() + '1'; -} - -bool Square::is_dark() const { - return index() % 2 == 0; -} - -bool Square::is_light() const { - return index() % 2 == 1; -} - -bool Square::is_backrank() const { - return rank() == 0 || rank() == 7; -} - -bool Square::is_seventh() const { - return rank() == 1 || rank() == 6; -} - -std::string Square::__repr__() const { - return boost::str(boost::format("Square('%1%')") % name()); -} - -bool Square::is_valid() const { - return m_index != 64; -} - -int Square::__hash__() const { - return index(); -} - -Square& Square::operator=(const Square& rhs) { - m_index = rhs.m_index; - return *this; -} - -bool Square::operator==(const Square& rhs) const { - return m_index == rhs.m_index; -} - -bool Square::operator!=(const Square& rhs) const { - return m_index != rhs.m_index; -} - -Square Square::from_rank_and_file(int rank, int file) { - return Square(rank, file); -} - -Square Square::from_index(int index) { - return Square(index); -} - -Square Square::from_x88_index(int x88_index) { - if (x88_index < 0 || x88_index > 128 || x88_index & 0x88) { - throw std::invalid_argument("x88_index"); - } - int rank = 7 - (x88_index >> 4); - int file = x88_index & 7; - return Square(rank, file); -} - -std::ostream& operator<<(std::ostream& out, const Square& square) { - out << square.name(); - return out; -} - -} // namespace chess diff --git a/libchess/square.h b/libchess/square.h deleted file mode 100644 index 5159ae43d..000000000 --- a/libchess/square.h +++ /dev/null @@ -1,69 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#ifndef LIBCHESS_SQUARE_H -#define LIBCHESS_SQUARE_H - -#include - -namespace chess { - -/** - * \brief The immutable coordinates of a square on the board. - */ -class Square { -public: - Square(); - Square(int index); - Square(const std::string& name); - Square(const Square& square); - Square(int rank, int file); - - int rank() const; - int file() const; - int index() const; - int x88_index() const; - std::string name() const; - char file_name() const; - char rank_name() const; - - bool is_dark() const; - bool is_light() const; - bool is_backrank() const; - bool is_seventh() const; - - bool is_valid() const; - - std::string __repr__() const; - int __hash__() const; - - Square& operator=(const Square& rhs); - bool operator==(const Square& rhs) const; - bool operator!=(const Square& rhs) const; - - static Square from_rank_and_file(int rank, int file); - static Square from_index(int index); - static Square from_x88_index(int x88_index); - -private: - int m_index; -}; - -std::ostream& operator<<(std::ostream& out, const Square& square); - -} // namespace chess - -#endif // LIBCHESS_SQUARE_H diff --git a/libchess/uint.h b/libchess/uint.h deleted file mode 100644 index 6935752d4..000000000 --- a/libchess/uint.h +++ /dev/null @@ -1,35 +0,0 @@ -// This file is part of the python-chess library. -// Copyright (C) 2013 Niklas Fiekas -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have recieved a copy of the GNU General Public License -// along with this program. If not, see . - -#ifndef LIBCHESS_UINT_H -#define LIBCHESS_UINT_H - -// Provides uint32_t, uint64_t and a U64(u) macro for uint64_t literals. - -#ifdef _MSC_VER -typedef __int16 int16_t; -typedef unsigned __int16 uint16_t; -typedef __int32 int32_t; -typedef unsigned __int32 uint32_t; -typedef __int64 int64_t; -typedef unsigned __int64 uint64_t; -#define U64(u) (u##ui64) -#else -#include -#define U64(u) (u##ULL) -#endif - -#endif // LIBCHESS_UINT_H \ No newline at end of file diff --git a/perft.py b/perft.py new file mode 100755 index 000000000..2b4402485 --- /dev/null +++ b/perft.py @@ -0,0 +1,159 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Run a test set of more than 6000 positions. The perft node count for a given +# depth is the number of legal move sequences from that position. This can be +# used to check correctness and speed of the legal move generator. +# +# The original test suite was created by Marcel van Kervinck and found at: +# http://marcelk.net/rookie/nostalgia/v3/perft-random.epd + +import chess +import unittest +import sys + + +def perft(board, depth): + if depth > 1: + count = 0 + + for move in board.legal_moves: + board.push(move) + count += perft(board, depth - 1) + board.pop() + + return count + elif depth == 1: + return len(board.legal_moves) + else: + return 1 + + +def into_check_perft(board, depth): + if depth >= 1: + count = 0 + + for move in board.pseudo_legal_moves: + if board.is_into_check(move): + continue + + board.push(move) + count += into_check_perft(board, depth - 1) + board.pop() + + return count + else: + return 1 + + +def debug_perft(board, depth): + assert board.is_valid() + + if depth >= 1: + count = 0 + + for move in board.pseudo_legal_moves: + assert move in board.pseudo_legal_moves, (move, board) + + if board.is_into_check(move): + assert move not in board.legal_moves, (move, board) + continue + + assert move in board.legal_moves, (move, board) + assert move == board.parse_san(board.san(move)) + + board.push(move) + count += debug_perft(board, depth - 1) + board.pop() + + return count + else: + return 1 + + +class PerftTestCase(unittest.TestCase): + + def execute_test(self, method, maxnodes): + current_id = None + board = chess.Board() + + with open("data/perft-random.epd") as data: + for line in data: + s = line.split() + if not s: + pass + elif s[0] == "id": + current_id = s[1] + sys.stdout.write(".") + sys.stdout.flush() + elif s[0] == "epd": + board.set_epd(" ".join(s[1:])) + elif s[0] == "perft": + depth = int(s[1]) + nodes = int(s[2]) + if nodes < maxnodes: + self.assertEqual(method(board, depth), nodes, current_id) + + sys.stdout.write("\n") + sys.stdout.flush() + + def test_into_check(self): + self.execute_test(into_check_perft, 1000) + + def test_debug(self): + self.execute_test(debug_perft, 100) + + def test_speed(self): + self.execute_test(perft, 10000) + + def test_chess960(self): + # Source: http://www.talkchess.com/forum/viewtopic.php?t=55274 + + # XFEN 00 + board = chess.Board("r1k1r2q/p1ppp1pp/8/8/8/8/P1PPP1PP/R1K1R2Q w KQkq - 0 1", chess960=True) + self.assertEqual(perft(board, 1), 23) + self.assertEqual(perft(board, 2), 522) + self.assertEqual(perft(board, 3), 12333) + self.assertEqual(perft(board, 4), 285754) + sys.stdout.write(".") + sys.stdout.flush() + + # XFEN 01 + board = chess.Board("r1k2r1q/p1ppp1pp/8/8/8/8/P1PPP1PP/R1K2R1Q w KQkq - 0 1", chess960=True) + self.assertEqual(perft(board, 1), 28) + self.assertEqual(perft(board, 2), 738) + self.assertEqual(perft(board, 3), 20218) + self.assertEqual(perft(board, 4), 541480) + sys.stdout.write(".") + sys.stdout.flush() + + # XFEN 02 + board = chess.Board("8/8/8/4B2b/6nN/8/5P2/2R1K2k w Q - 0 1", chess960=True) + self.assertEqual(perft(board, 1), 34) + self.assertEqual(perft(board, 2), 318) + self.assertEqual(perft(board, 3), 9002) + self.assertEqual(perft(board, 4), 118388) + sys.stdout.write(".") + sys.stdout.flush() + + # XFEN 03 + board = chess.Board("2r5/8/8/8/8/8/6PP/k2KR3 w K - 0 1", chess960=True) + self.assertEqual(perft(board, 1), 17) + self.assertEqual(perft(board, 2), 242) + self.assertEqual(perft(board, 3), 3931) + self.assertEqual(perft(board, 4), 57700) + sys.stdout.write(".") + sys.stdout.flush() + + # XFEN 04 + board = chess.Board("4r3/3k4/8/8/8/8/6PP/qR1K1R2 w KQ - 0 1", chess960=True) + self.assertEqual(perft(board, 1), 19) + self.assertEqual(perft(board, 2), 628) + self.assertEqual(perft(board, 3), 12858) + self.assertEqual(perft(board, 4), 405636) + sys.stdout.write(".\n") + sys.stdout.flush() + + +if __name__ == "__main__": + unittest.main() diff --git a/release.py b/release.py new file mode 100755 index 000000000..a1f2fbba4 --- /dev/null +++ b/release.py @@ -0,0 +1,178 @@ +#!/usr/bin/python3 +# Helper script to create and publish a new python-chess release. + +import os +import chess +import sys +import zipfile +import textwrap +import configparser +import requests +import bs4 + + +def system(command): + print(command) + exit_code = os.system(command) + if exit_code != 0: + sys.exit(exit_code) + + +def check_git(): + print("--- CHECK GIT ----------------------------------------------------") + system("git diff --exit-code") + system("git diff --cached --exit-code") + + +def test(): + print("--- TEST ---------------------------------------------------------") + system("python2 test.py") + system("python3 test.py") + + +def doctest(): + print("--- DOCTEST ------------------------------------------------------") + system("python2 -m doctest README.rst") + system("python3 -m doctest README.rst") + + +def check_changelog(): + print("--- CHECK CHANGELOG ----------------------------------------------") + with open("CHANGELOG.rst", "r") as changelog_file: + changelog = changelog_file.read() + + if "Upcoming in the next release" in changelog: + print("Found: Upcoming in the next release") + sys.exit(1) + + tagname = "v{0}".format(chess.__version__) + if tagname not in changelog: + print("Not found: {0}".format(tagname)) + sys.exit(1) + + +def check_docs(): + print("--- CHECK DOCS ---------------------------------------------------") + system("python3 setup.py --long-description | rst2html --strict --no-raw > /dev/null") + + +def tag_and_push(): + print("--- TAG AND PUSH -------------------------------------------------") + tagname = "v{0}".format(chess.__version__) + release_filename = "release-{0}.txt".format(tagname) + + if not os.path.exists(release_filename): + print(">>> Creating {0} ...".format(release_filename)) + first_section = False + prev_line = None + with open(release_filename, "w") as release_txt, open("CHANGELOG.rst", "r") as changelog_file: + headline = "python-chess {0}".format(tagname) + release_txt.write(headline + os.linesep) + + for line in changelog_file: + if not first_section: + if line.startswith("-------"): + first_section = True + else: + if line.startswith("-------"): + break + else: + if not prev_line.startswith("------"): + release_txt.write(prev_line) + + prev_line = line + + with open(release_filename, "r") as release_txt: + release = release_txt.read().strip() + os.linesep + print(release) + + with open(release_filename, "w") as release_txt: + release_txt.write(release) + + guessed_tagname = input(">>> Sure? Confirm tagname: ") + if guessed_tagname != tagname: + print("Actual tagname is: {0}".format(tagname)) + sys.exit(1) + + system("git tag {0} -s -F {1}".format(tagname, release_filename)) + system("git push origin master {0}".format(tagname)) + return tagname + + +def update_rtd(): + print("--- UPDATE RTD ---------------------------------------------------") + system("curl -X POST http://readthedocs.org/build/python-chess") + + +def pypi(): + print("--- PYPI ---------------------------------------------------------") + system("python3 setup.py sdist upload") + + +def pythonhosted(tagname): + print("--- PYTHONHOSTED -------------------------------------------------") + + print("Creating pythonhosted.zip ...") + with zipfile.ZipFile("pythonhosted.zip", "w") as zip_file: + zip_file.writestr("index.html", textwrap.dedent("""\ + + + + + + """.format(tagname))) + + print("Getting credentials ...") + config = configparser.ConfigParser() + config.read(os.path.expanduser("~/.pypirc")) + username = config.get("pypi", "username") + password = config.get("pypi", "password") + auth = requests.auth.HTTPBasicAuth(username, password) + print("Username: {0}".format(username)) + + print("Getting CSRF token ...") + session = requests.Session() + res = session.get("https://pypi.python.org/pypi?:action=pkg_edit&name=python-chess", auth=auth) + if res.status_code != 200: + print(res.text) + print(res) + sys.exit(1) + soup = bs4.BeautifulSoup(res.text, "html.parser") + csrf = soup.find("input", {"name": "CSRFToken"})["value"] + print("CSRF: {0}".format(csrf)) + + print("Uploading ...") + with open("pythonhosted.zip", "rb") as zip_file: + res = session.post("https://pypi.python.org/pypi", auth=auth, data={ + "CSRFToken": csrf, + ":action": "doc_upload", + "name": "python-chess", + }, files={ + "content": zip_file, + }) + if res.status_code != 200 or tagname not in res.text: + print(res.text) + print(res) + sys.exit(1) + + print("Done.") + + +def github_release(tagname): + print("--- GITHUB RELEASE -----------------------------------------------") + print("https://github.com/niklasf/python-chess/releases/new?tag={0}".format(tagname)) + + +if __name__ == "__main__": + test() + doctest() + check_docs() + check_changelog() + check_git() + tagname = tag_and_push() + update_rtd() + pypi() + pythonhosted(tagname) + github_release(tagname) diff --git a/scripts/ecotool.py b/scripts/ecotool.py deleted file mode 100755 index 33c9ad733..000000000 --- a/scripts/ecotool.py +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/bin/env python - -import argparse -import chess -import collections -import json -import sys - -def read_eco(source): - result = { } - - tokens = collections.deque() - - eco = None - name = None - position = chess.Position() - state = 0 - - for lineno, unstripped_line in enumerate(source): - # Skip emtpy lines and comments. - line = unstripped_line.strip() - if not line or line.startswith("#"): - continue - - # Split line into tokens. - tokens.extend(line.split()) - - # Consume tokens on the fly. - while tokens: - try: - token = tokens.popleft() - - if state == 0: - # State 0: Expecting ECO code. - eco = token - if eco in result: - state = 4 - else: - state = 1 - elif state == 1: - # State 1: Expecting variation name. - if not token.startswith("\""): - name = token - state = 3 - elif not token.endswith("\""): - name = token[1:] - state = 2 - else: - name = token[1:-1] - state = 3 - elif state == 2: - # State 2: Expecting rest of a quoted name. - if not token.endswith("\""): - name += " " + token - else: - name += " " + token[:-1] - state = 3 - elif state == 3: - # State 3: Expecting moves. - if token == "*": - result[eco] = { - "eco": eco, - "fen": position.fen, - "hash": position.__hash__(), - "name": name, - } - state = 0 - eco = None - name = None - position = chess.Position() - else: - san = token.split(".")[-1] - if san in ["0-0", "O-O"]: - san = "o-o" - elif san in ["0-0-0", "O-O-O"]: - san = "o-o-o" - position.make_move_from_san(san) - elif state == 4: - # State 4: Waiting for end of record. - if token == "*": - state = 0 - except: - # Dump last line and token. - sys.stderr.write("Line %d:\n" % (lineno + 1, )) - sys.stderr.write(" ") - sys.stderr.write(unstripped_line) - sys.stderr.write(" ") - sys.stderr.write(" " * unstripped_line.index(token)) - sys.stderr.write("^" * len(token)) - sys.stderr.write("\n") - - # Dump current variables. - sys.stderr.write("State: %d\n" % state) - sys.stderr.write("ECO: %s\n" % eco) - sys.stderr.write("FEN: %s\n" % position.fen) - sys.stderr.write("Name: %s\n" % name) - sys.stderr.flush() - raise - - - return result - - -if __name__ == "__main__": - parser = argparse.ArgumentParser( - description="Compiles ECO files to JSON for faster lookups.") - - parser.add_argument("source", - type=argparse.FileType("r"), - nargs="?", - default=sys.stdin, - help="The input ECO file.") - - args = parser.parse_args() - - json.dump(read_eco(args.source), sys.stdout, - ensure_ascii=False, - indent=4, - separators=(",", ": "), - sort_keys=True) diff --git a/setup.py b/setup.py index 63b27f40a..309c83cb4 100755 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # # This file is part of the python-chess library. -# Copyright (C) 2012 Niklas Fiekas +# Copyright (C) 2012-2015 Niklas Fiekas # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -15,63 +15,78 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . -import distutils +import chess import os import setuptools +import sys -def read(filename): - """Utility function that returns a files contents.""" - return open(os.path.join(os.path.dirname(__file__), filename)).read() -# Work around: -Wstrict-prototypes flag is invalid for C++. -(opt, ) = distutils.sysconfig.get_config_vars("OPT") -if opt: - os.environ["OPT"] = " ".join(flag for flag in opt.split() - if flag != "-Wstrict-prototypes") +def read_description(): + """ + Reads the description from README.rst and substitutes mentions of the + latest version with a concrete version number. + """ + description = open(os.path.join(os.path.dirname(__file__), "README.rst")).read() + + # Link to the documentation of the specific version. + description = description.replace( + "//python-chess.readthedocs.org/en/latest/", + "//python-chess.readthedocs.org/en/v{0}/".format(chess.__version__)) + + # Use documentation badge for the specific version. + description = description.replace( + "//readthedocs.org/projects/python-chess/badge/?version=latest", + "//readthedocs.org/projects/python-chess/badge/?version=v{0}".format(chess.__version__)) + + # Show Travis CI build status of the concrete version. + description = description.replace( + "//travis-ci.org/niklasf/python-chess.svg?branch=master", + "//travis-ci.org/niklasf/python-chess.svg?branch=v{0}".format(chess.__version__)) + + return description + + +def dependencies(): + deps = [] + + if sys.version_info < (2, 7): + deps.append("backport_collections") + deps.append("unittest2") + + if sys.version_info < (3, 2): + deps.append("futures") + + return deps + -# Module description. setuptools.setup( name="python-chess", - version="0.0.4", - author="Niklas Fiekas", - author_email="niklas.fiekas@tu-clausthal.de", - description="A chess library.", - long_description=read("README.rst"), + version=chess.__version__, + author=chess.__author__, + author_email=chess.__email__, + description=chess.__doc__.replace("\n", " ").strip(), + long_description=read_description(), license="GPL3", - keywords="chess fen pgn polyglot", - url="http://github.com/niklasf/python-chess", + keywords="chess fen pgn polyglot syzygy gaviota uci", + url="https://github.com/niklasf/python-chess", packages=["chess"], - scripts=["scripts/ecotool.py"], - ext_modules=[ - setuptools.extension.Extension( - name="libchess", - sources=[ - "libchess/libchess.cc", - "libchess/piece.cc", - "libchess/square.cc", - "libchess/move.cc", - "libchess/move_info.cc", - "libchess/position.cc", - "libchess/attacker_generator.cc", - "libchess/legal_move_generator.cc", - "libchess/pseudo_legal_move_generator.cc", - "libchess/polyglot_opening_book_entry.cc", - ], - libraries=[ - "boost_python", - "boost_regex", - ], - ), - ], + test_suite="test", + install_requires=dependencies(), classifiers=[ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License (GPL)", "Operating System :: OS Independent", "Programming Language :: Python", - "Programming Language :: C++", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.6", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.3", + "Programming Language :: Python :: 3.4", + "Programming Language :: Python :: 3.5", "Topic :: Games/Entertainment :: Board Games", "Topic :: Software Development :: Libraries :: Python Modules", ], diff --git a/test.py b/test.py new file mode 100755 index 000000000..e603afd23 --- /dev/null +++ b/test.py @@ -0,0 +1,2490 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# This file is part of the python-chess library. +# Copyright (C) 2012-2015 Niklas Fiekas +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import chess +import chess.polyglot +import chess.pgn +import chess.uci +import chess.syzygy +import chess.gaviota +import os.path +import textwrap +import sys +import time +import logging + +try: + from collections import OrderedDict +except ImportError: + from backport_collections import OrderedDict # Python 2.6 + +try: + import unittest2 as unittest # Python 2.6 +except ImportError: + import unittest + +try: + from StringIO import StringIO # Python 2 +except ImportError: + from io import StringIO # Python 3 + + +class SquareTestCase(unittest.TestCase): + + def test_square(self): + for square in chess.SQUARES: + file_index = chess.file_index(square) + rank_index = chess.rank_index(square) + self.assertEqual(chess.square(file_index, rank_index), square, chess.SQUARE_NAMES[square]) + + +class MoveTestCase(unittest.TestCase): + + def test_equality(self): + a = chess.Move(chess.A1, chess.A2) + b = chess.Move(chess.A1, chess.A2) + c = chess.Move(chess.H7, chess.H8, chess.BISHOP) + d1 = chess.Move(chess.H7, chess.H8) + d2 = chess.Move(chess.H7, chess.H8) + + self.assertEqual(a, b) + self.assertEqual(b, a) + self.assertEqual(d1, d2) + + self.assertNotEqual(a, c) + self.assertNotEqual(c, d1) + self.assertNotEqual(b, d1) + self.assertFalse(d1 != d2) + + def test_uci_parsing(self): + self.assertEqual(chess.Move.from_uci("b5c7").uci(), "b5c7") + self.assertEqual(chess.Move.from_uci("e7e8q").uci(), "e7e8q") + + +class PieceTestCase(unittest.TestCase): + + def test_equality(self): + a = chess.Piece(chess.BISHOP, chess.WHITE) + b = chess.Piece(chess.KING, chess.BLACK) + c = chess.Piece(chess.KING, chess.WHITE) + d1 = chess.Piece(chess.BISHOP, chess.WHITE) + d2 = chess.Piece(chess.BISHOP, chess.WHITE) + + self.assertEqual(a, d1) + self.assertEqual(d1, a) + self.assertEqual(d1, d2) + + self.assertEqual(repr(a), repr(d1)) + + self.assertNotEqual(a, b) + self.assertNotEqual(b, c) + self.assertNotEqual(b, d1) + self.assertNotEqual(a, c) + self.assertFalse(d1 != d2) + + self.assertNotEqual(repr(a), repr(b)) + self.assertNotEqual(repr(b), repr(c)) + self.assertNotEqual(repr(b), repr(d1)) + self.assertNotEqual(repr(a), repr(c)) + + def test_from_symbol(self): + white_knight = chess.Piece.from_symbol("N") + + self.assertEqual(white_knight.color, chess.WHITE) + self.assertEqual(white_knight.piece_type, chess.KNIGHT) + self.assertEqual(white_knight.symbol(), "N") + + black_queen = chess.Piece.from_symbol("q") + + self.assertEqual(black_queen.color, chess.BLACK) + self.assertEqual(black_queen.piece_type, chess.QUEEN) + self.assertEqual(black_queen.symbol(), "q") + + +class BoardTestCase(unittest.TestCase): + + def test_default_position(self): + board = chess.Board() + self.assertEqual(board.piece_at(chess.B1), chess.Piece.from_symbol("N")) + self.assertEqual(board.fen(), chess.STARTING_FEN) + self.assertEqual(board.turn, chess.WHITE) + + def test_empty(self): + board = chess.Board.empty() + self.assertEqual(board.fen(), "8/8/8/8/8/8/8/8 w - - 0 1") + self.assertEqual(board, chess.Board(None)) + + def test_from_epd(self): + base_epd = "rnbqkb1r/ppp1pppp/5n2/3P4/8/8/PPPP1PPP/RNBQKBNR w KQkq -" + board, ops = chess.Board.from_epd(base_epd + " ce 55;") + self.assertEqual(ops["ce"], 55) + self.assertEqual(board.fen(), base_epd + " 0 1") + + def test_move_making(self): + board = chess.Board() + move = chess.Move(chess.E2, chess.E4) + board.push(move) + self.assertEqual(board.peek(), move) + + def test_fen(self): + board = chess.Board() + self.assertEqual(board.fen(), chess.STARTING_FEN) + + fen = "6k1/pb3pp1/1p2p2p/1Bn1P3/8/5N2/PP1q1PPP/6K1 w - - 0 24" + board.set_fen(fen) + self.assertEqual(board.fen(), fen) + + board.push(chess.Move.from_uci("f3d2")) + self.assertEqual(board.fen(), "6k1/pb3pp1/1p2p2p/1Bn1P3/8/8/PP1N1PPP/6K1 b - - 0 24") + + def test_xfen(self): + # https://de.wikipedia.org/wiki/Forsyth-Edwards-Notation#Beispiel + xfen = "rn2k1r1/ppp1pp1p/3p2p1/5bn1/P7/2N2B2/1PPPPP2/2BNK1RR w Gkq - 4 11" + board = chess.Board(xfen, chess960=True) + self.assertEqual(board.castling_rights, chess.BB_G1 | chess.BB_A8 | chess.BB_G8) + self.assertEqual(board.clean_castling_rights(), chess.BB_G1 | chess.BB_A8 | chess.BB_G8) + self.assertEqual(board.shredder_fen(), "rn2k1r1/ppp1pp1p/3p2p1/5bn1/P7/2N2B2/1PPPPP2/2BNK1RR w Gga - 4 11") + self.assertEqual(board.fen(), xfen) + self.assertTrue(board.has_castling_rights(chess.WHITE)) + self.assertTrue(board.has_castling_rights(chess.BLACK)) + self.assertTrue(board.has_kingside_castling_rights(chess.BLACK)) + self.assertTrue(board.has_kingside_castling_rights(chess.WHITE)) + self.assertTrue(board.has_queenside_castling_rights(chess.BLACK)) + self.assertFalse(board.has_queenside_castling_rights(chess.WHITE)) + + # Chess960 position #284. + board = chess.Board("rkbqrbnn/pppppppp/8/8/8/8/PPPPPPPP/RKBQRBNN w - - 0 1", chess960=True) + board.castling_rights = board.rooks + self.assertTrue(board.clean_castling_rights() & chess.BB_A1) + self.assertEqual(board.fen(), "rkbqrbnn/pppppppp/8/8/8/8/PPPPPPPP/RKBQRBNN w KQkq - 0 1") + self.assertEqual(board.shredder_fen(), "rkbqrbnn/pppppppp/8/8/8/8/PPPPPPPP/RKBQRBNN w EAea - 0 1") + + # Valid en passant square on illegal board. + fen = "8/8/8/pP6/8/8/8/8 w - a6 0 1" + board = chess.Board(fen) + self.assertEqual(board.fen(), fen) + + # Illegal en passant square in illegal board. + fen = "1r6/8/8/pP6/8/8/8/1K6 w - a6 0 1" + board = chess.Board(fen) + self.assertEqual(board.fen(), "1r6/8/8/pP6/8/8/8/1K6 w - - 0 1") + + def test_get_set(self): + board = chess.Board() + self.assertEqual(board.piece_at(chess.B1), chess.Piece.from_symbol("N")) + + board.remove_piece_at(chess.E2) + self.assertEqual(board.piece_at(chess.E2), None) + + board.set_piece_at(chess.E4, chess.Piece.from_symbol("r")) + self.assertEqual(board.piece_type_at(chess.E4), chess.ROOK) + + board.set_piece_at(chess.F1, None) + self.assertEqual(board.piece_at(chess.F1), None) + + def test_pawn_captures(self): + board = chess.Board() + + # Kings gambit. + board.push(chess.Move.from_uci("e2e4")) + board.push(chess.Move.from_uci("e7e5")) + board.push(chess.Move.from_uci("f2f4")) + + # Accepted. + exf4 = chess.Move.from_uci("e5f4") + self.assertTrue(exf4 in board.pseudo_legal_moves) + self.assertTrue(exf4 in board.legal_moves) + board.push(exf4) + board.pop() + + def test_pawn_move_generation(self): + board = chess.Board("8/2R1P3/8/2pp4/2k1r3/P7/8/1K6 w - - 1 55") + self.assertEqual(len(list(board.generate_pseudo_legal_moves())), 16) + + def test_single_step_pawn_move(self): + board = chess.Board() + a3 = chess.Move.from_uci("a2a3") + self.assertTrue(a3 in board.pseudo_legal_moves) + self.assertTrue(a3 in board.legal_moves) + board.push(a3) + board.pop() + self.assertEqual(board.fen(), chess.STARTING_FEN) + + def test_castling(self): + board = chess.Board("r3k2r/8/8/8/8/8/8/R3K2R w KQkq - 1 1") + + # Let white castle short. + move = board.parse_san("O-O") + self.assertEqual(move, chess.Move.from_uci("e1g1")) + self.assertEqual(board.san(move), "O-O") + self.assertTrue(move in board.legal_moves) + board.push(move) + + # Let black castle long. + move = board.parse_san("O-O-O") + self.assertEqual(board.san(move), "O-O-O") + self.assertTrue(move in board.legal_moves) + board.push(move) + self.assertEqual(board.fen(), "2kr3r/8/8/8/8/8/8/R4RK1 w - - 3 2") + + # Undo both castling moves. + board.pop() + board.pop() + self.assertEqual(board.fen(), "r3k2r/8/8/8/8/8/8/R3K2R w KQkq - 1 1") + + # Let white castle long. + move = board.parse_san("O-O-O") + self.assertEqual(board.san(move), "O-O-O") + self.assertTrue(move in board.legal_moves) + board.push(move) + + # Let black castle short. + move = board.parse_san("O-O") + self.assertEqual(board.san(move), "O-O") + self.assertTrue(move in board.legal_moves) + board.push(move) + self.assertEqual(board.fen(), "r4rk1/8/8/8/8/8/8/2KR3R w - - 3 2") + + # Undo both castling moves. + board.pop() + board.pop() + self.assertEqual(board.fen(), "r3k2r/8/8/8/8/8/8/R3K2R w KQkq - 1 1") + + def test_ninesixty_castling(self): + fen = "3r1k1r/4pp2/8/8/8/8/8/4RKR1 w Gd - 1 1" + board = chess.Board(fen, chess960=True) + + # Let white do the king side swap. + move = board.parse_san("O-O") + self.assertEqual(board.san(move), "O-O") + self.assertEqual(move.from_square, chess.F1) + self.assertEqual(move.to_square, chess.G1) + self.assertTrue(move in board.legal_moves) + board.push(move) + self.assertEqual(board.shredder_fen(), "3r1k1r/4pp2/8/8/8/8/8/4RRK1 b d - 2 1") + + # Black can not castle kingside. + self.assertFalse(chess.Move.from_uci("e8h8") in board.legal_moves) + + # Let black castle queenside. + move = board.parse_san("O-O-O") + self.assertEqual(board.san(move), "O-O-O") + self.assertEqual(move.from_square, chess.F8) + self.assertEqual(move.to_square, chess.D8) + self.assertTrue(move in board.legal_moves) + board.push(move) + self.assertEqual(board.shredder_fen(), "2kr3r/4pp2/8/8/8/8/8/4RRK1 w - - 3 2") + + # Restore initial position. + board.pop() + board.pop() + self.assertEqual(board.shredder_fen(), fen) + + fen = "Qr4k1/4pppp/8/8/8/8/8/R5KR w Hb - 0 1" + board = chess.Board(fen, True) + + # White can just hop the rook over. + move = board.parse_san("O-O") + self.assertEqual(board.san(move), "O-O") + self.assertEqual(move.from_square, chess.G1) + self.assertEqual(move.to_square, chess.H1) + self.assertTrue(move in board.legal_moves) + board.push(move) + self.assertEqual(board.shredder_fen(), "Qr4k1/4pppp/8/8/8/8/8/R4RK1 b b - 1 1") + + # Black can not castle queenside nor kingside. + self.assertFalse(any(board.generate_castling_moves())) + + # Restore initial position. + board.pop() + self.assertEqual(board.shredder_fen(), fen) + + def test_castling_right_not_destroyed_bug(self): + # A rook move from H8 to H1 was only taking whites possible castling + # rights away. + board = chess.Board("2r1k2r/2qbbpp1/p2pp3/1p3PP1/Pn2P3/1PN1B3/1P3QB1/1K1R3R b k - 0 22") + board.push_san("Rxh1") + self.assertEqual(board.epd(), "2r1k3/2qbbpp1/p2pp3/1p3PP1/Pn2P3/1PN1B3/1P3QB1/1K1R3r w - -") + + def test_invalid_castling_rights(self): + # KQkq is not valid in this standard chess position. + board = chess.Board("1r2k3/8/8/8/8/8/8/R3KR2 w KQkq - 0 1") + self.assertEqual(board.status(), chess.STATUS_BAD_CASTLING_RIGHTS) + self.assertEqual(board.fen(), "1r2k3/8/8/8/8/8/8/R3KR2 w Q - 0 1") + self.assertTrue(board.has_queenside_castling_rights(chess.WHITE)) + self.assertFalse(board.has_kingside_castling_rights(chess.WHITE)) + self.assertFalse(board.has_queenside_castling_rights(chess.BLACK)) + self.assertFalse(board.has_kingside_castling_rights(chess.BLACK)) + + board = chess.Board("4k2r/8/8/8/8/8/8/R1K5 w KQkq - 0 1", chess960=True) + self.assertEqual(board.status(), chess.STATUS_BAD_CASTLING_RIGHTS) + self.assertEqual(board.fen(), "4k2r/8/8/8/8/8/8/R1K5 w k - 0 1") + + board = chess.Board("1r2k3/8/1p6/8/8/5P2/8/1R2KR2 w KQkq - 0 1", chess960=True) + self.assertEqual(board.status(), chess.STATUS_BAD_CASTLING_RIGHTS) + self.assertEqual(board.fen(), "1r2k3/8/1p6/8/8/5P2/8/1R2KR2 w KQq - 0 1") + + def test_insufficient_material(self): + # Starting position. + board = chess.Board() + self.assertFalse(board.is_insufficient_material()) + + # King vs. King + 2 bishops of the same color. + board = chess.Board("k1K1B1B1/8/8/8/8/8/8/8 w - - 7 32") + self.assertTrue(board.is_insufficient_material()) + + # Add bishop of opposite color for the weaker side. + board.set_piece_at(chess.B8, chess.Piece.from_symbol("b")) + self.assertFalse(board.is_insufficient_material()) + + def test_promotion_with_check(self): + board = chess.Board("8/6P1/2p5/1Pqk4/6P1/2P1RKP1/4P1P1/8 w - - 0 1") + board.push(chess.Move.from_uci("g7g8q")) + self.assertTrue(board.is_check()) + self.assertEqual(board.fen(), "6Q1/8/2p5/1Pqk4/6P1/2P1RKP1/4P1P1/8 b - - 0 1") + + board = chess.Board("8/8/8/3R1P2/8/2k2K2/3p4/r7 b - - 0 82") + board.push_san("d1=Q+") + self.assertEqual(board.fen(), "8/8/8/3R1P2/8/2k2K2/8/r2q4 w - - 0 83") + + def test_scholars_mate(self): + board = chess.Board() + + e4 = chess.Move.from_uci("e2e4") + self.assertTrue(e4 in board.legal_moves) + board.push(e4) + + e5 = chess.Move.from_uci("e7e5") + self.assertTrue(e5 in board.legal_moves) + board.push(e5) + + Qf3 = chess.Move.from_uci("d1f3") + self.assertTrue(Qf3 in board.legal_moves) + board.push(Qf3) + + Nc6 = chess.Move.from_uci("b8c6") + self.assertTrue(Nc6 in board.legal_moves) + board.push(Nc6) + + Bc4 = chess.Move.from_uci("f1c4") + self.assertTrue(Bc4 in board.legal_moves) + board.push(Bc4) + + Rb8 = chess.Move.from_uci("a8b8") + self.assertTrue(Rb8 in board.legal_moves) + board.push(Rb8) + + self.assertFalse(board.is_check()) + self.assertFalse(board.is_checkmate()) + self.assertFalse(board.is_game_over()) + self.assertFalse(board.is_stalemate()) + + Qf7_mate = chess.Move.from_uci("f3f7") + self.assertTrue(Qf7_mate in board.legal_moves) + board.push(Qf7_mate) + + self.assertTrue(board.is_check()) + self.assertTrue(board.is_checkmate()) + self.assertTrue(board.is_game_over()) + self.assertTrue(board.is_game_over(claim_draw=True)) + self.assertFalse(board.is_stalemate()) + + self.assertEqual(board.fen(), "1rbqkbnr/pppp1Qpp/2n5/4p3/2B1P3/8/PPPP1PPP/RNB1K1NR b KQk - 0 4") + + def test_result(self): + # Undetermined. + board = chess.Board() + self.assertEqual(board.result(claim_draw=True), "*") + + # White checkmated. + board = chess.Board("rnb1kbnr/pppp1ppp/8/4p3/6Pq/5P2/PPPPP2P/RNBQKBNR w KQkq - 1 3") + self.assertEqual(board.result(claim_draw=True), "0-1") + + # Stalemate. + board = chess.Board("7K/7P/7k/8/6q1/8/8/8 w - - 0 1") + self.assertEqual(board.result(), "1/2-1/2") + + # Insufficient material. + board = chess.Board("4k3/8/8/8/8/5B2/8/4K3 w - - 0 1") + self.assertEqual(board.result(), "1/2-1/2") + + # Fiftyseven-move rule. + board = chess.Board("4k3/8/6r1/8/8/8/2R5/4K3 w - - 369 1") + self.assertEqual(board.result(), "1/2-1/2") + + # Fifty-move rule. + board = chess.Board("4k3/8/6r1/8/8/8/2R5/4K3 w - - 120 1") + self.assertEqual(board.result(), "*") + self.assertEqual(board.result(claim_draw=True), "1/2-1/2") + + def test_san(self): + # Castling with check. + fen = "rnbk1b1r/ppp2pp1/5n1p/4p1B1/2P5/2N5/PP2PPPP/R3KBNR w KQ - 0 7" + board = chess.Board(fen) + long_castle_check = chess.Move.from_uci("e1a1") + self.assertEqual(board.san(long_castle_check), "O-O-O+") + self.assertEqual(board.fen(), fen) + + # En passant mate. + fen = "6bk/7b/8/3pP3/8/8/8/Q3K3 w - d6 0 2" + board = chess.Board(fen) + fxe6_mate_ep = chess.Move.from_uci("e5d6") + self.assertEqual(board.san(fxe6_mate_ep), "exd6#") + self.assertEqual(board.fen(), fen) + + # Test ambiguation. + fen = "N3k2N/8/8/3N4/N4N1N/2R5/1R6/4K3 w - - 0 1" + board = chess.Board(fen) + self.assertEqual(board.san(chess.Move.from_uci("e1f1")), "Kf1") + self.assertEqual(board.san(chess.Move.from_uci("c3c2")), "Rcc2") + self.assertEqual(board.san(chess.Move.from_uci("b2c2")), "Rbc2") + self.assertEqual(board.san(chess.Move.from_uci("a4b6")), "N4b6") + self.assertEqual(board.san(chess.Move.from_uci("h8g6")), "N8g6") + self.assertEqual(board.san(chess.Move.from_uci("h4g6")), "Nh4g6") + self.assertEqual(board.fen(), fen) + + # Do not disambiguate illegal alternatives. + fen = "8/8/8/R2nkn2/8/8/2K5/8 b - - 0 1" + board = chess.Board(fen) + self.assertEqual(board.san(chess.Move.from_uci("f5e3")), "Ne3+") + self.assertEqual(board.fen(), fen) + + # Promotion. + fen = "7k/1p2Npbp/8/2P5/1P1r4/3b2QP/3q1pPK/2RB4 b - - 1 29" + board = chess.Board(fen) + self.assertEqual(board.san(chess.Move.from_uci("f2f1q")), "f1=Q") + self.assertEqual(board.san(chess.Move.from_uci("f2f1n")), "f1=N+") + self.assertEqual(board.fen(), fen) + + def test_variations(self): + board = chess.Board() + self.assertEqual('1. e4 e5 2. Nf3', + board.variation_san([chess.Move.from_uci(m) for m in + ['e2e4', 'e7e5', 'g1f3']])) + self.assertEqual('1. e4 e5 2. Nf3 Nc6 3. Bb5 a6', + board.variation_san([chess.Move.from_uci(m) for m in + ['e2e4', 'e7e5', 'g1f3', 'b8c6', 'f1b5', 'a7a6']])) + + fen = "rn1qr1k1/1p2bppp/p3p3/3pP3/P2P1B2/2RB1Q1P/1P3PP1/R5K1 w - - 0 19" + board = chess.Board(fen) + variation = ['d3h7', 'g8h7', 'f3h5', 'h7g8', 'c3g3', 'e7f8', 'f4g5', + 'e8e7', 'g5f6', 'b8d7', 'h5h6', 'd7f6', 'e5f6', 'g7g6', + 'f6e7', 'f8e7'] + var_w = board.variation_san([chess.Move.from_uci(m) for m in variation]) + self.assertEqual(("19. Bxh7+ Kxh7 20. Qh5+ Kg8 21. Rg3 Bf8 22. Bg5 Re7 " + "23. Bf6 Nd7 24. Qh6 Nxf6 25. exf6 g6 26. fxe7 Bxe7"), + var_w) + self.assertEqual(fen, board.fen(), msg="Board unchanged by variation_san") + board.push(chess.Move.from_uci(variation.pop(0))) + var_b = board.variation_san([chess.Move.from_uci(m) for m in variation]) + self.assertEqual(("19...Kxh7 20. Qh5+ Kg8 21. Rg3 Bf8 22. Bg5 Re7 " + "23. Bf6 Nd7 24. Qh6 Nxf6 25. exf6 g6 26. fxe7 Bxe7"), + var_b) + + illegal_variation = ['d3h7', 'g8h7', 'f3h6', 'h7g8'] + board = chess.Board(fen) + with self.assertRaises(ValueError) as err: + board.variation_san([chess.Move.from_uci(m) for m in illegal_variation]) + message = str(err.exception) + self.assertTrue('illegal move' in message.lower(), + msg="Error [{0}] mentions illegal move".format(message)) + self.assertTrue('f3h6' in message, + msg="Illegal move f3h6 appears in message [{0}]".format(message)) + + def test_is_legal_move(self): + fen = "3k4/6P1/7P/8/K7/8/8/4R3 w - - 0 1" + board = chess.Board(fen) + + # Legal moves: Rg1, g8=R+. + self.assertTrue(chess.Move.from_uci("e1g1") in board.legal_moves) + self.assertTrue(chess.Move.from_uci("g7g8r") in board.legal_moves) + + # Impossible promotion: Kb5, h7. + self.assertFalse(chess.Move.from_uci("a5b5q") in board.legal_moves) + self.assertFalse(chess.Move.from_uci("h6h7n") in board.legal_moves) + + # Missing promotion. + self.assertFalse(chess.Move.from_uci("g7g8") in board.legal_moves) + + self.assertEqual(board.fen(), fen) + + def test_move_count(self): + board = chess.Board("1N2k3/P7/8/8/3n4/8/2PP4/R3K2R w KQ - 0 1") + self.assertEqual(len(board.pseudo_legal_moves), 8 + 4 + 3 + 2 + 1 + 6 + 9) + + def test_polyglot(self): + # Test polyglot compability using test data from + # http://hardy.uhasselt.be/Toga/book_format.html. Forfeiting castling + # rights should not reset the half move counter, though. + + board = chess.Board() + self.assertEqual(board.fen(), "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1") + self.assertEqual(board.zobrist_hash(), 0x463b96181691fc9c) + + board.push_san("e4") + self.assertEqual(board.fen(), "rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq - 0 1") + self.assertEqual(board.zobrist_hash(), 0x823c9b50fd114196) + + board.push_san("d5") + self.assertEqual(board.fen(), "rnbqkbnr/ppp1pppp/8/3p4/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 0 2") + self.assertEqual(board.zobrist_hash(), 0x0756b94461c50fb0) + + board.push_san("e5") + self.assertEqual(board.fen(), "rnbqkbnr/ppp1pppp/8/3pP3/8/8/PPPP1PPP/RNBQKBNR b KQkq - 0 2") + self.assertEqual(board.zobrist_hash(), 0x662fafb965db29d4) + + board.push_san("f5") + self.assertEqual(board.fen(), "rnbqkbnr/ppp1p1pp/8/3pPp2/8/8/PPPP1PPP/RNBQKBNR w KQkq f6 0 3") + self.assertEqual(board.zobrist_hash(), 0x22a48b5a8e47ff78) + + board.push_san("Ke2") + self.assertEqual(board.fen(), "rnbqkbnr/ppp1p1pp/8/3pPp2/8/8/PPPPKPPP/RNBQ1BNR b kq - 1 3") + self.assertEqual(board.zobrist_hash(), 0x652a607ca3f242c1) + + board.push_san("Kf7") + self.assertEqual(board.fen(), "rnbq1bnr/ppp1pkpp/8/3pPp2/8/8/PPPPKPPP/RNBQ1BNR w - - 2 4") + self.assertEqual(board.zobrist_hash(), 0x00fdd303c946bdd9) + + board = chess.Board() + board.push_san("a4") + board.push_san("b5") + board.push_san("h4") + board.push_san("b4") + board.push_san("c4") + self.assertEqual(board.fen(), "rnbqkbnr/p1pppppp/8/8/PpP4P/8/1P1PPPP1/RNBQKBNR b KQkq c3 0 3") + self.assertEqual(board.zobrist_hash(), 0x3c8123ea7b067637) + + board.push_san("bxc3") + board.push_san("Ra3") + self.assertEqual(board.fen(), "rnbqkbnr/p1pppppp/8/8/P6P/R1p5/1P1PPPP1/1NBQKBNR b Kkq - 1 4") + self.assertEqual(board.zobrist_hash(), 0x5c3f9b829b279560) + + def test_castling_move_generation_bug(self): + # Specific test position right after castling. + fen = "rnbqkbnr/2pp1ppp/8/4p3/2BPP3/P1N2N2/PB3PPP/2RQ1RK1 b kq - 1 10" + board = chess.Board(fen) + illegal_move = chess.Move.from_uci("g1g2") + self.assertFalse(illegal_move in board.legal_moves) + self.assertFalse(illegal_move in list(board.legal_moves)) + self.assertFalse(illegal_move in board.pseudo_legal_moves) + self.assertFalse(illegal_move in list(board.pseudo_legal_moves)) + + # Make a move. + board.push_san("exd4") + + # Already castled short, can not castle long. + illegal_move = chess.Move.from_uci("e1c1") + self.assertFalse(illegal_move in board.pseudo_legal_moves) + self.assertFalse(illegal_move in board.generate_pseudo_legal_moves()) + self.assertFalse(illegal_move in board.legal_moves) + self.assertFalse(illegal_move in list(board.legal_moves)) + + # Unmake the move. + board.pop() + + # Generate all pseudo legal moves, two moves deep. + for move in board.pseudo_legal_moves: + board.push(move) + for move in board.pseudo_legal_moves: + board.push(move) + board.pop() + board.pop() + + # Check that board is still consistent. + self.assertEqual(board.fen(), fen) + self.assertTrue(board.kings & chess.BB_G1) + self.assertTrue(board.occupied & chess.BB_G1) + self.assertTrue(board.occupied_co[chess.WHITE] & chess.BB_G1) + self.assertEqual(board.piece_at(chess.G1), chess.Piece(chess.KING, chess.WHITE)) + self.assertEqual(board.piece_at(chess.C1), chess.Piece(chess.ROOK, chess.WHITE)) + + def test_move_generation_bug(self): + # Specific problematic position. + fen = "4kb1r/3b1ppp/8/1r2pNB1/6P1/pP2QP2/P6P/4R1K1 w k - 0 27" + board = chess.Board(fen) + + # Make a move. + board.push_san("Re2") + + # Check for the illegal move. + illegal_move = chess.Move.from_uci("e8f8") + self.assertFalse(illegal_move in board.pseudo_legal_moves) + self.assertFalse(illegal_move in board.generate_pseudo_legal_moves()) + self.assertFalse(illegal_move in board.legal_moves) + self.assertFalse(illegal_move in board.generate_legal_moves()) + + # Generate all pseudo legal moves. + for a in board.pseudo_legal_moves: + board.push(a) + board.pop() + + # Unmake the move. + board.pop() + + # Check that board is still consistent. + self.assertEqual(board.fen(), fen) + + def test_stateful_move_generation_bug(self): + board = chess.Board("r1b1k3/p2p1Nr1/n2b3p/3pp1pP/2BB1p2/P3P2R/Q1P3P1/R3K1N1 b Qq - 0 1") + count = 0 + for move in board.legal_moves: + board.push(move) + list(board.generate_legal_moves()) + count += 1 + board.pop() + + self.assertEqual(count, 26) + + def test_ninesixty_castling_bug(self): + board = chess.Board("4r3/3k4/8/8/8/8/q5PP/1R1KR3 w Q - 2 2", chess960=True) + move = chess.Move.from_uci("d1b1") + self.assertTrue(board.is_castling(move)) + self.assertTrue(move in board.generate_pseudo_legal_moves()) + self.assertTrue(board.is_pseudo_legal(move)) + self.assertTrue(move in board.generate_legal_moves()) + self.assertTrue(board.is_legal(move)) + self.assertEqual(board.parse_san("O-O-O+"), move) + self.assertEqual(board.san(move), "O-O-O+") + + def test_equality(self): + self.assertEqual(chess.Board(), chess.Board()) + self.assertFalse(chess.Board() != chess.Board()) + + a = chess.Board() + a.push_san("d4") + b = chess.Board() + b.push_san("d3") + self.assertNotEqual(a, b) + self.assertFalse(a == b) + + def test_status(self): + board = chess.Board() + self.assertEqual(board.status(), chess.STATUS_VALID) + self.assertTrue(board.is_valid()) + + board.remove_piece_at(chess.H1) + self.assertTrue(board.status() & chess.STATUS_BAD_CASTLING_RIGHTS) + + board.remove_piece_at(chess.E8) + self.assertTrue(board.status() & chess.STATUS_NO_BLACK_KING) + + # The en passant square should be set even if no capture is actually + # possible. + board = chess.Board() + board.push_san("e4") + self.assertEqual(board.ep_square, chess.E3) + self.assertEqual(board.status(), chess.STATUS_VALID) + + # But there must indeed be a pawn there. + board.remove_piece_at(chess.E4) + self.assertEqual(board.status(), chess.STATUS_INVALID_EP_SQUARE) + + # King must be between the two rooks. + board = chess.Board("2rrk3/8/8/8/8/8/3PPPPP/2RK4 w cd - 0 1") + self.assertEqual(board.status(), chess.STATUS_BAD_CASTLING_RIGHTS) + + # Generally valid position, but not valid standard chess position due + # to non-standard castling rights. Chess960 start position #0. + board = chess.Board("bbqnnrkr/pppppppp/8/8/8/8/PPPPPPPP/BBQNNRKR w KQkq - 0 1", chess960=True) + self.assertEqual(board.status(), chess.STATUS_VALID) + board = chess.Board("bbqnnrkr/pppppppp/8/8/8/8/PPPPPPPP/BBQNNRKR w KQkq - 0 1", chess960=False) + self.assertEqual(board.status(), chess.STATUS_BAD_CASTLING_RIGHTS) + + def test_epd(self): + # Create an EPD with a move and a string. + board = chess.Board("1k1r4/pp1b1R2/3q2pp/4p3/2B5/4Q3/PPP2B2/2K5 b - - 0 1") + epd = board.epd(bm=chess.Move(chess.D6, chess.D1), id="BK.01") + self.assertTrue(epd in ( + "1k1r4/pp1b1R2/3q2pp/4p3/2B5/4Q3/PPP2B2/2K5 b - - bm Qd1+; id \"BK.01\";", + "1k1r4/pp1b1R2/3q2pp/4p3/2B5/4Q3/PPP2B2/2K5 b - - id \"BK.01\"; bm Qd1+;")) + + # Create an EPD with a noop. + board = chess.Board("4k3/8/8/8/8/8/8/4K3 w - - 0 1") + self.assertEqual(board.epd(noop=None), "4k3/8/8/8/8/8/8/4K3 w - - noop;") + + # Create an EPD with a variation. + board = chess.Board("k7/8/8/8/8/8/4PPPP/4K1NR w K - 0 1") + epd = board.epd(pv=[ + chess.Move.from_uci("g1f3"), # Nf3 + chess.Move.from_uci("a8a7"), # Ka7 + chess.Move.from_uci("e1h1"), # O-O + ]) + self.assertEqual(epd, "k7/8/8/8/8/8/4PPPP/4K1NR w K - pv Nf3 Ka7 O-O;") + + # Create an EPD with a set of moves. + board = chess.Board("8/8/8/4k3/8/1K6/8/8 b - - 0 1") + epd = board.epd(bm=[ + chess.Move.from_uci("e5e6"), # Ke6 + chess.Move.from_uci("e5e4"), # Ke4 + ]) + self.assertEqual(epd, "8/8/8/4k3/8/1K6/8/8 b - - bm Ke6 Ke4;") + + # Test loading an EPD. + board = chess.Board() + operations = board.set_epd("r2qnrnk/p2b2b1/1p1p2pp/2pPpp2/1PP1P3/PRNBB3/3QNPPP/5RK1 w - - bm f4; id \"BK.24\";") + self.assertEqual(board.fen(), "r2qnrnk/p2b2b1/1p1p2pp/2pPpp2/1PP1P3/PRNBB3/3QNPPP/5RK1 w - - 0 1") + self.assertTrue(chess.Move(chess.F2, chess.F4) in operations["bm"]) + self.assertEqual(operations["id"], "BK.24") + + # Test loading an EPD with half counter operations. + board = chess.Board() + operations = board.set_epd("4k3/8/8/8/8/8/8/4K3 b - - fmvn 17; hmvc 13") + self.assertEqual(board.fen(), "4k3/8/8/8/8/8/8/4K3 b - - 13 17") + self.assertEqual(operations["fmvn"], 17) + self.assertEqual(operations["hmvc"], 13) + + # Test context of parsed SANs. + board = chess.Board() + operations = board.set_epd("4k3/8/8/2N5/8/8/8/4K3 w - - test Ne4") + self.assertEqual(operations["test"], chess.Move(chess.C5, chess.E4)) + + # Test parsing EPD with a set of moves. + board = chess.Board() + operations = board.set_epd("4k3/8/3QK3/8/8/8/8/8 w - - bm Qe7# Qb8#;") + self.assertEqual(board.fen(), "4k3/8/3QK3/8/8/8/8/8 w - - 0 1") + self.assertEqual(len(operations["bm"]), 2) + self.assertTrue(chess.Move.from_uci("d6b8") in operations["bm"]) + self.assertTrue(chess.Move.from_uci("d6e7") in operations["bm"]) + + # Test parsing EPD with a stack of moves. + board = chess.Board() + operations = board.set_epd("6k1/1p6/6K1/8/8/8/8/7Q w - - pv Qh7+ Kf8 Qf7#;") + self.assertEqual(len(operations["pv"]), 3) + self.assertEqual(operations["pv"][0], chess.Move.from_uci("h1h7")) + self.assertEqual(operations["pv"][1], chess.Move.from_uci("g8f8")) + self.assertEqual(operations["pv"][2], chess.Move.from_uci("h7f7")) + + def test_null_moves(self): + self.assertEqual(str(chess.Move.null()), "0000") + self.assertEqual(chess.Move.null().uci(), "0000") + self.assertFalse(chess.Move.null()) + + fen = "rnbqkbnr/ppp1pppp/8/2Pp4/8/8/PP1PPPPP/RNBQKBNR w KQkq d6 0 2" + board = chess.Board(fen) + + self.assertEqual(chess.Move.from_uci("0000"), board.push_san("--")) + self.assertEqual(board.fen(), "rnbqkbnr/ppp1pppp/8/2Pp4/8/8/PP1PPPPP/RNBQKBNR b KQkq - 1 2") + + self.assertEqual(chess.Move.null(), board.pop()) + self.assertEqual(board.fen(), fen) + + def test_attackers(self): + board = chess.Board("r1b1k2r/pp1n1ppp/2p1p3/q5B1/1b1P4/P1n1PN2/1P1Q1PPP/2R1KB1R b Kkq - 3 10") + + attackers = board.attackers(chess.WHITE, chess.C3) + self.assertEqual(len(attackers), 3) + self.assertTrue(chess.C1 in attackers) + self.assertTrue(chess.D2 in attackers) + self.assertTrue(chess.B2 in attackers) + self.assertFalse(chess.D4 in attackers) + self.assertFalse(chess.E1 in attackers) + + def test_en_passant_attackers(self): + board = chess.Board("4k3/8/8/8/4pPp1/8/8/4K3 b - f3 0 1") + + # Still attacking the en passant square. + attackers = board.attackers(chess.BLACK, chess.F3) + self.assertEqual(len(attackers), 2) + self.assertTrue(chess.E4 in attackers) + self.assertTrue(chess.G4 in attackers) + + # Also attacking the pawn. + attackers = board.attackers(chess.BLACK, chess.F4) + self.assertEqual(len(attackers), 2) + self.assertTrue(chess.E4 in attackers) + self.assertTrue(chess.G4 in attackers) + + def test_attacks(self): + board = chess.Board("5rk1/p5pp/2p3p1/1p1pR3/3P2P1/2N5/PP3n2/2KB4 w - - 1 26") + + attacks = board.attacks(chess.E5) + self.assertEqual(len(attacks), 11) + self.assertTrue(chess.D5 in attacks) + self.assertTrue(chess.E1 in attacks) + self.assertTrue(chess.F5 in attacks) + self.assertFalse(chess.E5 in attacks) + self.assertFalse(chess.C5 in attacks) + self.assertFalse(chess.F4 in attacks) + + self.assertFalse(board.attacks(chess.G1)) + + def test_clear(self): + board = chess.Board() + board.clear() + + self.assertEqual(board.turn, chess.WHITE) + self.assertEqual(board.fullmove_number, 1) + self.assertEqual(board.halfmove_clock, 0) + self.assertEqual(board.castling_rights, chess.BB_VOID) + self.assertFalse(board.ep_square) + + self.assertFalse(board.piece_at(chess.E1)) + self.assertEqual(chess.pop_count(board.occupied), 0) + + def test_threefold_repetition(self): + board = chess.Board() + + # Go back and forth with the nights to reach the starting position + # for a second time. + self.assertFalse(board.can_claim_threefold_repetition()) + board.push_san("Nf3") + self.assertFalse(board.can_claim_threefold_repetition()) + board.push_san("Nf6") + self.assertFalse(board.can_claim_threefold_repetition()) + board.push_san("Ng1") + self.assertFalse(board.can_claim_threefold_repetition()) + board.push_san("Ng8") + + # Once more. + self.assertFalse(board.can_claim_threefold_repetition()) + board.push_san("Nf3") + self.assertFalse(board.can_claim_threefold_repetition()) + board.push_san("Nf6") + self.assertFalse(board.can_claim_threefold_repetition()) + board.push_san("Ng1") + + # Now black can go back to the starting position (thus reaching it a + # third time.) + self.assertTrue(board.can_claim_threefold_repetition()) + board.push_san("Ng8") + + # They indee do it. Also white can now claim. + self.assertTrue(board.can_claim_threefold_repetition()) + + # But not after a different move. + board.push_san("e4") + self.assertFalse(board.can_claim_threefold_repetition()) + + # Undo moves and check if everything works backwards. + board.pop() # e4 + self.assertTrue(board.can_claim_threefold_repetition()) + board.pop() # Ng8 + self.assertTrue(board.can_claim_threefold_repetition()) + while board.move_stack: + board.pop() + self.assertFalse(board.can_claim_threefold_repetition()) + + def test_fivefold_repetition(self): + fen = "rnbq1rk1/ppp3pp/3bpn2/3p1p2/2PP4/2NBPN2/PP3PPP/R1BQK2R w KQ - 3 7" + board = chess.Board(fen) + + # Repeat the position up to the fourth time. + for i in range(3): + board.push_san("Be2") + self.assertFalse(board.is_fivefold_repetition()) + board.push_san("Ne4") + self.assertFalse(board.is_fivefold_repetition()) + board.push_san("Bd3") + self.assertFalse(board.is_fivefold_repetition()) + board.push_san("Nf6") + self.assertEqual(board.fen().split()[0], fen.split()[0]) + self.assertFalse(board.is_fivefold_repetition()) + self.assertFalse(board.is_game_over()) + + # Repeat it once more. Now it is a five-fold repetition. + board.push_san("Be2") + self.assertFalse(board.is_fivefold_repetition()) + board.push_san("Ne4") + self.assertFalse(board.is_fivefold_repetition()) + board.push_san("Bd3") + self.assertFalse(board.is_fivefold_repetition()) + board.push_san("Nf6") + self.assertEqual(board.fen().split()[0], fen.split()[0]) + self.assertTrue(board.is_fivefold_repetition()) + self.assertTrue(board.is_game_over()) + + # It is also a threefold repetition. + self.assertTrue(board.can_claim_threefold_repetition()) + + # Now no longer. + board.push_san("Qc2") + board.push_san("Qd7") + self.assertFalse(board.can_claim_threefold_repetition()) + self.assertFalse(board.is_fivefold_repetition()) + board.push_san("Qd2") + board.push_san("Qe7") + self.assertFalse(board.can_claim_threefold_repetition()) + self.assertFalse(board.is_fivefold_repetition()) + + # Give the possibility to repeat. + board.push_san("Qd1") + self.assertFalse(board.is_fivefold_repetition()) + self.assertFalse(board.is_game_over()) + self.assertTrue(board.can_claim_threefold_repetition()) + self.assertTrue(board.is_game_over(claim_draw=True)) + + # Do in fact repeat. + self.assertFalse(board.is_fivefold_repetition()) + board.push_san("Qd8") + + # This is a threefold repetition but not a fivefold repetition, because + # consecutive moves are required for that. + self.assertTrue(board.can_claim_threefold_repetition()) + self.assertFalse(board.is_fivefold_repetition()) + self.assertEqual(board.fen().split()[0], fen.split()[0]) + + def test_fifty_moves(self): + # Test positions from Timman - Lutz (1995). + board = chess.Board() + self.assertFalse(board.can_claim_fifty_moves()) + board = chess.Board("8/5R2/8/r2KB3/6k1/8/8/8 w - - 19 79") + self.assertFalse(board.can_claim_fifty_moves()) + board = chess.Board("8/8/6r1/4B3/8/4K2k/5R2/8 b - - 68 103") + self.assertFalse(board.can_claim_fifty_moves()) + board = chess.Board("6R1/7k/8/8/1r3B2/5K2/8/8 w - - 99 119") + self.assertFalse(board.can_claim_fifty_moves()) + board = chess.Board("8/7k/8/6R1/1r3B2/5K2/8/8 b - - 100 119") + self.assertTrue(board.can_claim_fifty_moves()) + board = chess.Board("8/7k/8/1r3KR1/5B2/8/8/8 w - - 105 122") + self.assertTrue(board.can_claim_fifty_moves()) + + # Once checkmated it is too late to claim. + board = chess.Board("k7/8/NKB5/8/8/8/8/8 b - - 105 176") + self.assertFalse(board.can_claim_fifty_moves()) + + # A stalemate is a draw, but you can not and do not need to claim it by + # the fifty move rule. + board = chess.Board("k7/3N4/1K6/1B6/8/8/8/8 b - - 99 1") + self.assertTrue(board.is_stalemate()) + self.assertTrue(board.is_game_over()) + self.assertFalse(board.can_claim_fifty_moves()) + self.assertFalse(board.can_claim_draw()) + + def test_ep_legality(self): + move = chess.Move.from_uci("h5g6") + board = chess.Board("rnbqkbnr/pppppp2/7p/6pP/8/8/PPPPPPP1/RNBQKBNR w KQkq g6 0 3") + self.assertTrue(board.is_legal(move)) + board.push_san("Nf3") + self.assertFalse(board.is_legal(move)) + board.push_san("Nf6") + self.assertFalse(board.is_legal(move)) + + move = chess.Move.from_uci("c4d3") + board = chess.Board("rnbqkbnr/pp1ppppp/8/8/2pP4/2P2N2/PP2PPPP/RNBQKB1R b KQkq d3 0 3") + self.assertTrue(board.is_legal(move)) + board.push_san("Qc7") + self.assertFalse(board.is_legal(move)) + board.push_san("Bd2") + self.assertFalse(board.is_legal(move)) + + def test_pseudo_legality(self): + sample_moves = [ + chess.Move(chess.A2, chess.A4), + chess.Move(chess.C1, chess.E3), + chess.Move(chess.G8, chess.F6), + chess.Move(chess.D7, chess.D8, chess.QUEEN), + chess.Move(chess.E5, chess.E4), + ] + + sample_fens = [ + chess.STARTING_FEN, + "rnbqkbnr/pp1ppppp/2p5/8/6P1/2P5/PP1PPP1P/RNBQKBNR b KQkq - 0 1", + "rnb1kbnr/ppq1pppp/2pp4/8/6P1/2P5/PP1PPPBP/RNBQK1NR w KQkq - 0 1", + "rn2kbnr/p1q1ppp1/1ppp3p/8/4B1b1/2P4P/PPQPPP2/RNB1K1NR w KQkq - 0 1", + "rnkq1bnr/p3ppp1/1ppp3p/3B4/6b1/2PQ3P/PP1PPP2/RNB1K1NR w KQ - 0 1", + "rn1q1bnr/3kppp1/2pp3p/pp6/1P2b3/2PQ1N1P/P2PPPB1/RNB1K2R w KQ - 0 1", + "rnkq1bnr/4pp2/2pQ2pp/pp6/1P5N/2P4P/P2PPP2/RNB1KB1b w Q - 0 1", + "rn3b1r/1kq1p3/2pQ1npp/Pp6/4b3/2PPP2P/P4P2/RNB1KB2 w Q - 0 1", + "r4br1/8/k1p2npp/Ppn1p3/P7/2PPP1qP/4bPQ1/RNB1KB2 w Q - 0 1", + "rnbqk1nr/p2p3p/1p5b/2pPppp1/8/P7/1PPQPPPP/RNB1KBNR w KQkq c6 0 1", + "rnb1k2r/pp1p1p1p/1q1P4/2pnpPp1/6P1/2N5/PP1BP2P/R2QKBNR w KQkq e6 0 1", + "1n4kr/2B4p/2nb2b1/ppp5/P1PpP3/3P4/5K2/1N1R4 b - c3 0 1", + "r2n3r/1bNk2pp/6P1/pP3p2/3pPqnP/1P1P1p1R/2P3B1/Q1B1bKN1 b - e3 0 1", + ] + + for sample_fen in sample_fens: + board = chess.Board(sample_fen) + + pseudo_legal_moves = list(board.generate_pseudo_legal_moves()) + + # Ensure that all moves generated as pseudo legal pass the pseudo- + # legality check. + for move in pseudo_legal_moves: + self.assertTrue(board.is_pseudo_legal(move)) + + # Check that moves not generated as pseudo legal do not pass the + # pseudo legality check. + for move in sample_moves: + if move not in pseudo_legal_moves: + self.assertFalse(board.is_pseudo_legal(move)) + + def test_pieces(self): + board = chess.Board() + king = board.pieces(chess.KING, chess.WHITE) + self.assertTrue(chess.E1 in king) + self.assertEqual(len(king), 1) + + def test_string_conversion(self): + board = chess.Board("7k/1p1qn1b1/pB1p1n2/3Pp3/4Pp1p/2QN1B2/PP4PP/6K1 w - - 0 28") + + self.assertEqual(str(board), textwrap.dedent(u"""\ + . . . . . . . k + . p . q n . b . + p B . p . n . . + . . . P p . . . + . . . . P p . p + . . Q N . B . . + P P . . . . P P + . . . . . . K .""")) + + self.assertEqual(board.__unicode__(), textwrap.dedent(u"""\ + . . . . . . . ♚ + . ♟ . ♛ ♞ . ♝ . + ♟ ♗ . ♟ . ♞ . . + . . . ♙ ♟ . . . + . . . . ♙ ♟ . ♟ + . . ♕ ♘ . ♗ . . + ♙ ♙ . . . . ♙ ♙ + . . . . . . ♔ .""")) + + html = board.__html__() + self.assertTrue(u"♛" in html) + self.assertTrue(u"♙" in html) + self.assertFalse(u"♜" in html) + self.assertFalse(u"♖" in html) + + def test_move_info(self): + board = chess.Board("r1bqkb1r/p3np2/2n1p2p/1p4pP/2pP4/4PQ1N/1P2BPP1/RNB1K2R w KQkq g6 0 11") + + self.assertTrue(board.is_capture(board.parse_san("Qxf7+"))) + self.assertFalse(board.is_en_passant(board.parse_san("Qxf7+"))) + self.assertFalse(board.is_castling(board.parse_san("Qxf7+"))) + + self.assertTrue(board.is_capture(board.parse_san("hxg6"))) + self.assertTrue(board.is_en_passant(board.parse_san("hxg6"))) + self.assertFalse(board.is_castling(board.parse_san("hxg6"))) + + self.assertFalse(board.is_capture(board.parse_san("b3"))) + self.assertFalse(board.is_en_passant(board.parse_san("b3"))) + self.assertFalse(board.is_castling(board.parse_san("b3"))) + + self.assertFalse(board.is_capture(board.parse_san("Ra6"))) + self.assertFalse(board.is_en_passant(board.parse_san("Ra6"))) + self.assertFalse(board.is_castling(board.parse_san("Ra6"))) + + self.assertFalse(board.is_capture(board.parse_san("O-O"))) + self.assertFalse(board.is_en_passant(board.parse_san("O-O"))) + self.assertTrue(board.is_castling(board.parse_san("O-O"))) + + def test_pin(self): + board = chess.Board("rnb1k1nr/2pppppp/3P4/8/1b5q/8/PPPNPBPP/RNBQKB1R w KQkq - 0 1") + self.assertTrue(board.is_pinned(chess.WHITE, chess.F2)) + self.assertTrue(board.is_pinned(chess.WHITE, chess.D2)) + self.assertFalse(board.is_pinned(chess.WHITE, chess.E1)) + self.assertFalse(board.is_pinned(chess.BLACK, chess.H4)) + self.assertFalse(board.is_pinned(chess.BLACK, chess.E8)) + + self.assertEqual(board.pin(chess.WHITE, chess.B1), chess.BB_ALL) + + self.assertEqual(board.pin(chess.WHITE, chess.F2), chess.BB_E1 | chess.BB_F2 | chess.BB_G3 | chess.BB_H4) + + self.assertEqual(board.pin(chess.WHITE, chess.D2), chess.BB_E1 | chess.BB_D2 | chess.BB_C3 | chess.BB_B4 | chess.BB_A5) + + def test_impossible_en_passant(self): + # Not a pawn there. + board = chess.Board("1b1b4/8/b1P5/2kP4/8/2b4K/8/8 w - c6 0 1") + self.assertTrue(board.status() & chess.STATUS_INVALID_EP_SQUARE) + + # Sixth rank square not empty. + board = chess.Board("5K2/8/2pp2Pp/2PP4/P5Pp/2pP1Ppp/P6p/7k b - g3 0 1") + self.assertTrue(board.status() & chess.STATUS_INVALID_EP_SQUARE) + + # Seventh rank square not empty. + board = chess.Board("8/7k/8/7p/8/8/8/K7 w - h6 0 1") + self.assertTrue(board.status() & chess.STATUS_INVALID_EP_SQUARE) + + +class LegalMoveGeneratorTestCase(unittest.TestCase): + + def test_list_conversion(self): + self.assertEqual(len(list(chess.Board().legal_moves)), 20) + + def test_nonzero(self): + self.assertTrue(chess.Board().legal_moves) + + caro_kann_mate = chess.Board("r1bqkb1r/pp1npppp/2pN1n2/8/3P4/8/PPP1QPPP/R1B1KBNR b KQkq - 4 6") + self.assertFalse(caro_kann_mate.legal_moves) + + def test_string_conversion(self): + board = chess.Board("r3k1nr/ppq1pp1p/2p3p1/8/1PPR4/2N5/P3QPPP/5RK1 b kq b3 0 16") + + self.assertTrue("Qxh2+" in str(board.legal_moves)) + self.assertTrue("Qxh2+" in repr(board.legal_moves)) + + self.assertTrue("Qxh2+" in str(board.pseudo_legal_moves)) + self.assertTrue("Qxh2+" in repr(board.pseudo_legal_moves)) + self.assertTrue("e8d7" in str(board.pseudo_legal_moves)) + self.assertTrue("e8d7" in repr(board.pseudo_legal_moves)) + + +class SquareSetTestCase(unittest.TestCase): + + def test_equality(self): + a1 = chess.SquareSet(chess.BB_RANK_4) + a2 = chess.SquareSet(chess.BB_RANK_4) + b1 = chess.SquareSet(chess.BB_RANK_5 | chess.BB_RANK_6) + b2 = chess.SquareSet(chess.BB_RANK_5 | chess.BB_RANK_6) + + self.assertEqual(a1, a2) + self.assertEqual(b1, b2) + self.assertFalse(a1 != a2) + self.assertFalse(b1 != b2) + + self.assertNotEqual(a1, b1) + self.assertNotEqual(a2, b2) + self.assertFalse(a1 == b1) + self.assertFalse(a2 == b2) + + self.assertEqual(chess.SquareSet(chess.BB_ALL), chess.BB_ALL) + self.assertEqual(chess.BB_ALL, chess.SquareSet(chess.BB_ALL)) + + def test_string_conversion(self): + expected = textwrap.dedent("""\ + . . . . . . . 1 + . 1 . . . . . . + . . . . . . . . + . . . . . . . . + . . . . . . . . + . . . . . . . . + . . . . . . . . + 1 1 1 1 1 1 1 1""") + + bb = chess.SquareSet(chess.BB_H8 | chess.BB_B7 | chess.BB_RANK_1) + self.assertEqual(str(bb), expected) + + def test_iter(self): + bb = chess.SquareSet(chess.BB_G7 | chess.BB_G8) + self.assertEqual(list(bb), [chess.G7, chess.G8]) + + def test_reversed(self): + bb = chess.SquareSet(chess.BB_A1 | chess.BB_B1 | chess.BB_A7 | chess.BB_E1) + self.assertEqual(list(reversed(bb)), [chess.A7, chess.E1, chess.B1, chess.A1]) + + def test_arithmetic(self): + self.assertEqual(chess.SquareSet(chess.BB_RANK_2) & chess.BB_FILE_D, chess.BB_D2) + self.assertEqual(chess.SquareSet(chess.BB_ALL) ^ chess.BB_VOID, chess.BB_ALL) + self.assertEqual(chess.SquareSet(chess.BB_C1) | chess.BB_FILE_C, chess.BB_FILE_C) + + bb = chess.SquareSet(chess.BB_VOID) + bb ^= chess.BB_ALL + self.assertEqual(bb, chess.BB_ALL) + bb &= chess.BB_E4 + self.assertEqual(bb, chess.BB_E4) + bb |= chess.BB_RANK_4 + self.assertEqual(bb, chess.BB_RANK_4) + + self.assertEqual(chess.SquareSet(chess.BB_F3) << 1, chess.BB_G3) + self.assertEqual(chess.SquareSet(chess.BB_C8) >> 2, chess.BB_A8) + + bb = chess.SquareSet(chess.BB_D1) + bb <<= 1 + self.assertEqual(bb, chess.BB_E1) + bb >>= 2 + self.assertEqual(bb, chess.BB_C1) + + def test_immutable_set_operations(self): + self.assertFalse(chess.SquareSet(chess.BB_A1).issubset(chess.BB_RANK_1)) + self.assertTrue(chess.SquareSet(chess.BB_RANK_1).issubset(chess.BB_A1)) + + self.assertTrue(chess.SquareSet(chess.BB_A1).issuperset(chess.BB_RANK_1)) + self.assertFalse(chess.SquareSet(chess.BB_RANK_1).issuperset(chess.BB_A1)) + + self.assertEqual(chess.SquareSet(chess.BB_A1).union(chess.BB_FILE_A), chess.BB_FILE_A) + + self.assertEqual(chess.SquareSet(chess.BB_A1).intersection(chess.BB_A2), chess.BB_VOID) + + self.assertEqual(chess.SquareSet(chess.BB_A1).difference(chess.BB_A2), chess.BB_A1) + + self.assertEqual(chess.SquareSet(chess.BB_A1).symmetric_difference(chess.BB_A2), chess.BB_A1 | chess.BB_A2) + + self.assertEqual(chess.SquareSet(chess.BB_C5).copy(), chess.BB_C5) + + def test_mutable_set_operations(self): + squares = chess.SquareSet(chess.BB_A1) + squares.update(chess.BB_FILE_H) + self.assertEqual(squares, chess.BB_A1 | chess.BB_FILE_H) + + squares.intersection_update(chess.BB_RANK_8) + self.assertEqual(squares, chess.BB_H8) + + squares.difference_update(chess.BB_A1) + self.assertEqual(squares, chess.BB_H8) + + squares.symmetric_difference_update(chess.BB_A1) + self.assertEqual(squares, chess.BB_A1 | chess.BB_H8) + + squares.add(chess.A3) + self.assertEqual(squares, chess.BB_A1 | chess.BB_A3 | chess.BB_H8) + + squares.remove(chess.H8) + self.assertEqual(squares, chess.BB_A1 | chess.BB_A3) + + with self.assertRaises(KeyError): + squares.remove(chess.H8) + + squares.discard(chess.H8) + + squares.discard(chess.A1) + self.assertEqual(squares, chess.BB_A3) + + squares.clear() + self.assertEqual(squares, chess.BB_VOID) + + with self.assertRaises(KeyError): + squares.pop() + + squares.add(chess.C7) + self.assertEqual(squares.pop(), chess.C7) + self.assertEqual(squares, chess.BB_VOID) + + def test_from_square(self): + self.assertEqual(chess.SquareSet.from_square(chess.H5), chess.BB_H5) + self.assertEqual(chess.SquareSet.from_square(chess.C2), chess.BB_C2) + + +class PolyglotTestCase(unittest.TestCase): + + def test_performance_bin(self): + with chess.polyglot.open_reader("data/polyglot/performance.bin") as book: + pos = chess.Board() + + e4 = next(book.find_all(pos)) + self.assertEqual(e4.move(), pos.parse_san("e4")) + pos.push(e4.move()) + + e5 = next(book.find_all(pos)) + self.assertEqual(e5.move(), pos.parse_san("e5")) + pos.push(e5.move()) + + def test_mainline(self): + with chess.polyglot.open_reader("data/polyglot/performance.bin") as book: + board = chess.Board() + + while True: + try: + entry = book.find(board) + except IndexError: + break + else: + board.push(entry.move()) + + self.assertEqual(board.fen(), "r2q1rk1/4bppp/p2p1n2/np5b/3BP1P1/5N1P/PPB2P2/RN1QR1K1 b - - 0 15") + + def test_lasker_trap(self): + with chess.polyglot.open_reader("data/polyglot/lasker-trap.bin") as book: + board = chess.Board("rnbqk1nr/ppp2ppp/8/4P3/1BP5/8/PP2KpPP/RN1Q1BNR b kq - 1 7") + entry = book.find(board) + cute_underpromotion = entry.move() + self.assertEqual(cute_underpromotion, board.parse_san("fxg1=N+")) + + def test_castling(self): + with chess.polyglot.open_reader("data/polyglot/performance.bin") as book: + # White decides between short castling and long castling at this + # turning point in the Queens Gambit Exchange. + pos = chess.Board("r1bqr1k1/pp1nbppp/2p2n2/3p2B1/3P4/2NBP3/PPQ1NPPP/R3K2R w KQ - 5 10") + moves = set(entry.move() for entry in book.find_all(pos)) + self.assertTrue(pos.parse_san("O-O") in moves) + self.assertTrue(pos.parse_san("O-O-O") in moves) + self.assertTrue(pos.parse_san("h3") in moves) + self.assertEqual(len(moves), 3) + + # Black usually castles long at this point in the Ruy Lopez + # Exchange. + pos = chess.Board("r3k1nr/1pp1q1pp/p1pb1p2/4p3/3PP1b1/2P1BN2/PP1N1PPP/R2Q1RK1 b kq - 4 9") + moves = set(entry.move() for entry in book.find_all(pos)) + self.assertTrue(pos.parse_san("O-O-O") in moves) + self.assertEqual(len(moves), 1) + + def test_empty_book(self): + with chess.polyglot.open_reader("data/polyglot/empty.bin") as book: + self.assertEqual(len(book), 0) + + entries = book.find_all(chess.Board()) + self.assertEqual(len(list(entries)), 0) + + def test_reversed(self): + with chess.polyglot.open_reader("data/polyglot/performance.bin") as book: + # Last is first of reversed. + self.assertEqual(book[-1], next(reversed(book))) + + # First is last of reversed. + for last in reversed(book): + pass + self.assertEqual(book[0], last) + + def test_random_choice(self): + class FirstMockRandom(object): + @staticmethod + def randint(first, last): + assert first <= last + return first + + class LastMockRandom(object): + @staticmethod + def randint(first, last): + assert first <= last + return last + + with chess.polyglot.open_reader("data/polyglot/performance.bin") as book: + # Uniform choice. + entry = book.choice(chess.Board(), random=FirstMockRandom()) + self.assertEqual(entry.move(), chess.Move.from_uci("e2e4")) + + entry = book.choice(chess.Board(), random=LastMockRandom()) + self.assertEqual(entry.move(), chess.Move.from_uci("c2c4")) + + # Weighted choice. + entry = book.weighted_choice(chess.Board(), random=FirstMockRandom()) + self.assertEqual(entry.move(), chess.Move.from_uci("e2e4")) + + entry = book.weighted_choice(chess.Board(), random=LastMockRandom()) + self.assertEqual(entry.move(), chess.Move.from_uci("c2c4")) + + # Weighted choice with excluded move. + entry = book.weighted_choice(chess.Board(), + exclude_moves=[chess.Move.from_uci("e2e4")], random=FirstMockRandom()) + self.assertEqual(entry.move(), chess.Move.from_uci("d2d4")) + + def test_find(self): + with chess.polyglot.open_reader("data/polyglot/performance.bin") as book: + entry = book.find(chess.Board()) + self.assertEqual(entry.move(), chess.Move.from_uci("e2e4")) + + def test_exclude_moves(self): + with chess.polyglot.open_reader("data/polyglot/performance.bin") as book: + entry = book.find(chess.Board(), exclude_moves=[chess.Move.from_uci("e2e4")]) + self.assertEqual(entry.move(), chess.Move.from_uci("d2d4")) + + def test_contains(self): + with chess.polyglot.open_reader("data/polyglot/performance.bin") as book: + for entry in book: + self.assertTrue(entry in book) + + def test_last(self): + with chess.polyglot.open_reader("data/polyglot/performance.bin") as book: + last_entry = book[len(book) - 1] + self.assertTrue(any(book.find_all(last_entry.key))) + self.assertTrue(all(book.find_all(last_entry.key))) + + def test_minimum_weight(self): + with chess.polyglot.open_reader("data/polyglot/performance.bin") as book: + with self.assertRaises(IndexError): + book.find(chess.Board(), minimum_weight=2) + + +class PgnTestCase(unittest.TestCase): + + def test_exporter(self): + game = chess.pgn.Game() + game.comment = "Test game:" + game.headers["Result"] = "*" + + e4 = game.add_variation(game.board().parse_san("e4")) + e4.comment = "Scandinavian defense:" + + e4_d5 = e4.add_variation(e4.board().parse_san("d5")) + + e4_h5 = e4.add_variation(e4.board().parse_san("h5")) + e4_h5.nags.add(chess.pgn.NAG_MISTAKE) + e4_h5.starting_comment = "This" + e4_h5.comment = "is nonesense" + + e4_e5 = e4.add_variation(e4.board().parse_san("e5")) + e4_e5_Qf3 = e4_e5.add_variation(e4_e5.board().parse_san("Qf3")) + e4_e5_Qf3.nags.add(chess.pgn.NAG_MISTAKE) + + e4_c5 = e4.add_variation(e4.board().parse_san("c5")) + e4_c5.comment = "Sicilian" + + e4_d5_exd5 = e4_d5.add_main_variation(e4_d5.board().parse_san("exd5")) + e4_d5_exd5.comment = "Best" + + # Test string exporter with various options. + exporter = chess.pgn.StringExporter(headers=False, comments=False, variations=False) + game.accept(exporter) + self.assertEqual(str(exporter), "1. e4 d5 2. exd5 *") + + exporter = chess.pgn.StringExporter(headers=False, comments=False) + game.accept(exporter) + self.assertEqual(str(exporter), "1. e4 d5 ( 1... h5 ) ( 1... e5 2. Qf3 ) ( 1... c5 ) 2. exd5 *") + + exporter = chess.pgn.StringExporter() + game.accept(exporter) + pgn = textwrap.dedent("""\ + [Event "?"] + [Site "?"] + [Date "????.??.??"] + [Round "?"] + [White "?"] + [Black "?"] + [Result "*"] + + { Test game: } 1. e4 { Scandinavian defense: } 1... d5 ( { This } 1... h5 $2 + { is nonesense } ) ( 1... e5 2. Qf3 $2 ) ( 1... c5 { Sicilian } ) 2. exd5 + { Best } *""") + self.assertEqual(str(exporter), pgn) + + # Test file exporter. + virtual_file = StringIO() + exporter = chess.pgn.FileExporter(virtual_file) + game.accept(exporter) + self.assertEqual(virtual_file.getvalue(), pgn + "\n\n") + + def test_setup(self): + game = chess.pgn.Game() + self.assertEqual(game.board(), chess.Board()) + self.assertFalse("FEN" in game.headers) + self.assertFalse("SetUp" in game.headers) + self.assertFalse("Variant" in game.headers) + + fen = "rnbqkbnr/pp1ppp1p/6p1/8/3pP3/5N2/PPP2PPP/RNBQKB1R w KQkq - 0 4" + game.setup(fen) + self.assertEqual(game.headers["FEN"], fen) + self.assertEqual(game.headers["SetUp"], "1") + self.assertFalse("Variant" in game.headers) + + game.setup(chess.STARTING_FEN) + self.assertFalse("FEN" in game.headers) + self.assertFalse("SetUp" in game.headers) + self.assertFalse("Variant" in game.headers) + + # Setup again, while starting FEN is already set. + game.setup(chess.STARTING_FEN) + self.assertFalse("FEN" in game.headers) + self.assertFalse("SetUp" in game.headers) + self.assertFalse("Variant" in game.headers) + + game.setup(chess.Board(fen)) + self.assertEqual(game.headers["FEN"], fen) + self.assertEqual(game.headers["SetUp"], "1") + self.assertFalse("Variant" in game.headers) + + # Chess960 starting position 283. + fen = "rkbqrnnb/pppppppp/8/8/8/8/PPPPPPPP/RKBQRNNB w KQkq - 0 1" + game.setup(fen) + self.assertEqual(game.headers["FEN"], fen) + self.assertEqual(game.headers["SetUp"], "1") + self.assertEqual(game.headers["Variant"], "Chess960") + board = game.board() + self.assertTrue(board.chess960) + self.assertEqual(board.fen(), fen) + + def test_promote_to_main(self): + e4 = chess.Move.from_uci("e2e4") + d4 = chess.Move.from_uci("d2d4") + + node = chess.pgn.Game() + node.add_variation(e4) + node.add_variation(d4) + self.assertEqual(list(variation.move for variation in node.variations), [e4, d4]) + + node.promote_to_main(d4) + self.assertEqual(list(variation.move for variation in node.variations), [d4, e4]) + + def test_read_game(self): + pgn = open("data/pgn/kasparov-deep-blue-1997.pgn") + first_game = chess.pgn.read_game(pgn) + second_game = chess.pgn.read_game(pgn) + third_game = chess.pgn.read_game(pgn) + fourth_game = chess.pgn.read_game(pgn) + fifth_game = chess.pgn.read_game(pgn) + sixth_game = chess.pgn.read_game(pgn) + self.assertTrue(chess.pgn.read_game(pgn) is None) + pgn.close() + + self.assertEqual(first_game.headers["Event"], "IBM Man-Machine, New York USA") + self.assertEqual(first_game.headers["Site"], "01") + self.assertEqual(first_game.headers["Result"], "1-0") + + self.assertEqual(second_game.headers["Event"], "IBM Man-Machine, New York USA") + self.assertEqual(second_game.headers["Site"], "02") + + self.assertEqual(third_game.headers["ECO"], "A00") + + self.assertEqual(fourth_game.headers["PlyCount"], "111") + + self.assertEqual(fifth_game.headers["Result"], "1/2-1/2") + + self.assertEqual(sixth_game.headers["White"], "Deep Blue (Computer)") + self.assertEqual(sixth_game.headers["Result"], "1-0") + + def test_comment_at_eol(self): + pgn = StringIO(textwrap.dedent("""\ + 1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d3 d6 6. Nbd2 a6 $6 (6... Bb6 $5 { + /\ Ne7, c6}) *""")) + + game = chess.pgn.read_game(pgn) + + # Seek the node after 6.Nbd2 and before 6...a6. + node = game + while node.variations and not node.has_variation(chess.Move.from_uci("a7a6")): + node = node.variation(0) + + # Make sure the comment for the second variation is there. + self.assertTrue(5 in node.variation(1).nags) + self.assertEqual(node.variation(1).comment, "/\\ Ne7, c6") + + def test_promotion_without_equals(self): + # Example game from https://github.com/rozim/ChessData as originally + # reported. + pgn = StringIO(textwrap.dedent("""\ + [Event "It (open)"] + [Site "Aschach (Austria)"] + [Date "2011.12.26"] + [Round "1"] + [White "Ennsberger Ulrich (AUT)"] + [Black "Koller Hans-Juergen (AUT)"] + [Result "0-1"] + [ECO "A45"] + [WhiteElo "2373"] + [BlackElo "2052"] + [ID ""] + [FileName ""] + [Annotator ""] + [Source ""] + [Remark ""] + + 1.d4 Nf6 2.Bg5 c5 3.d5 Ne4 4.Bf4 Qb6 5.Nd2 Nxd2 6.Bxd2 e6 7.Bc3 + d6 8.e4 e5 9.a4 Be7 10.a5 Qc7 11.f4 f6 12.f5 g6 13.Bb5+ Bd7 14.Bc4 + gxf5 15.Qh5+ Kd8 16.exf5 Qc8 17.g4 Na6 18.Ne2 b5 19.axb6 axb6 + 20.O-O Nc7 21.Qf7 h5 22.Qg7 Rf8 23.gxh5 Ne8 24.Rxa8 Nxg7 25.Rxc8+ + Kxc8 26.Ng3 Rh8 27.Be2 Be8 28.Be1 Nxh5 29.Bxh5 Bxh5 30.Nxh5 Rxh5 + 31.h4 Bf8 32.c4 Bh6 33.Bg3 Be3+ 34.Kg2 Kb7 35.Kh3 b5 36.b3 b4 + 37.Kg4 Rh8 38.Kf3 Bh6 39.Bf2 Ra8 40.Kg4 Bf4 41.Kh5 Ra3 42.Kg6 + Rxb3 43.h5 Rf3 44.h6 Bxh6 45.Kxh6 Rxf5 46.Kg6 Rf4 47.Kf7 e4 48.Re1 + Rxf2 49.Ke6 Kc7 50.Rh1 b3 51.Rh7+ Kb6 52.Kxd6 b2 53.Rh1 Rd2 54.Rh8 + e3 55.Rb8+ Ka5 56.Kxc5 Ka4 57.d6 e2 58.Re8 b1Q 0-1""")) + + game = chess.pgn.read_game(pgn) + + # Make sure the last move is a promotion. + last_node = game.end() + self.assertEqual(last_node.move.uci(), "b2b1q") + + def test_variation_stack(self): + # Ignore superfluous closing brackets. + pgn = StringIO("1. e4 (1. d4))) !? *") + game = chess.pgn.read_game(pgn) + self.assertEqual(game.variation(0).san(), "e4") + self.assertEqual(game.variation(1).san(), "d4") + + # Ignore superfluous opening brackets. + pgn = StringIO("((( 1. c4 *") + game = chess.pgn.read_game(pgn) + self.assertEqual(game.variation(0).san(), "c4") + + def test_game_starting_comment(self): + pgn = StringIO("{ Game starting comment } 1. d3") + game = chess.pgn.read_game(pgn) + self.assertEqual(game.comment, "Game starting comment") + self.assertEqual(game.variation(0).san(), "d3") + + pgn = StringIO("{ Empty game, but has a comment }") + game = chess.pgn.read_game(pgn) + self.assertEqual(game.comment, "Empty game, but has a comment") + + def test_game_starting_variation(self): + pgn = StringIO(textwrap.dedent("""\ + {Start of game} 1. e4 ({Start of variation} 1. d4) 1... e5 + """)) + + game = chess.pgn.read_game(pgn) + self.assertEqual(game.comment, "Start of game") + + node = game.variation(0) + self.assertEqual(node.move, chess.Move.from_uci("e2e4")) + self.assertFalse(node.comment) + self.assertFalse(node.starting_comment) + + node = game.variation(1) + self.assertEqual(node.move, chess.Move.from_uci("d2d4")) + self.assertFalse(node.comment) + self.assertEqual(node.starting_comment, "Start of variation") + + def test_annotation_symbols(self): + pgn = StringIO("1. b4?! g6 2. Bb2 Nc6? 3. Bxh8!!") + game = chess.pgn.read_game(pgn) + + node = game.variation(0) + self.assertTrue(chess.pgn.NAG_DUBIOUS_MOVE in node.nags) + self.assertEqual(len(node.nags), 1) + + node = node.variation(0) + self.assertEqual(len(node.nags), 0) + + node = node.variation(0) + self.assertEqual(len(node.nags), 0) + + node = node.variation(0) + self.assertTrue(chess.pgn.NAG_MISTAKE in node.nags) + self.assertEqual(len(node.nags), 1) + + node = node.variation(0) + self.assertTrue(chess.pgn.NAG_BRILLIANT_MOVE in node.nags) + self.assertEqual(len(node.nags), 1) + + def test_tree_traversal(self): + game = chess.pgn.Game() + node = game.add_variation(chess.Move(chess.E2, chess.E4)) + alternative_node = game.add_variation(chess.D2, chess.D4) + end_node = node.add_variation(chess.Move(chess.E7, chess.E5)) + + self.assertEqual(game.root(), game) + self.assertEqual(node.root(), game) + self.assertEqual(alternative_node.root(), game) + self.assertEqual(end_node.root(), game) + + self.assertEqual(game.end(), end_node) + self.assertEqual(node.end(), end_node) + self.assertEqual(end_node.end(), end_node) + self.assertEqual(alternative_node.end(), alternative_node) + + self.assertTrue(game.is_main_line()) + self.assertTrue(node.is_main_line()) + self.assertTrue(end_node.is_main_line()) + self.assertFalse(alternative_node.is_main_line()) + + self.assertFalse(game.starts_variation()) + self.assertFalse(node.starts_variation()) + self.assertFalse(end_node.starts_variation()) + self.assertTrue(alternative_node.starts_variation()) + + self.assertFalse(game.is_end()) + self.assertFalse(node.is_end()) + self.assertTrue(alternative_node.is_end()) + self.assertTrue(end_node.is_end()) + + def test_promote_demote(self): + game = chess.pgn.Game() + a = game.add_variation(chess.Move(chess.A2, chess.A3)) + b = game.add_variation(chess.Move(chess.B2, chess.B3)) + + self.assertTrue(a.is_main_variation()) + self.assertFalse(b.is_main_variation()) + self.assertEqual(game.variation(0), a) + self.assertEqual(game.variation(1), b) + + game.promote(b) + self.assertTrue(b.is_main_variation()) + self.assertFalse(a.is_main_variation()) + self.assertEqual(game.variation(0), b) + self.assertEqual(game.variation(1), a) + + game.demote(b) + self.assertTrue(a.is_main_variation()) + + c = game.add_main_variation(chess.Move(chess.C2, chess.C3)) + self.assertTrue(c.is_main_variation()) + self.assertFalse(a.is_main_variation()) + self.assertFalse(b.is_main_variation()) + self.assertEqual(game.variation(0), c) + self.assertEqual(game.variation(1), a) + self.assertEqual(game.variation(2), b) + + def test_scan_offsets(self): + with open("data/pgn/kasparov-deep-blue-1997.pgn") as pgn: + offsets = list(chess.pgn.scan_offsets(pgn)) + self.assertEqual(len(offsets), 6) + + pgn.seek(offsets[0]) + first_game = chess.pgn.read_game(pgn) + self.assertEqual(first_game.headers["Event"], "IBM Man-Machine, New York USA") + self.assertEqual(first_game.headers["Site"], "01") + + pgn.seek(offsets[5]) + sixth_game = chess.pgn.read_game(pgn) + self.assertEqual(sixth_game.headers["Event"], "IBM Man-Machine, New York USA") + self.assertEqual(sixth_game.headers["Site"], "06") + + def test_scan_headers(self): + with open("data/pgn/kasparov-deep-blue-1997.pgn") as pgn: + offsets = (offset for offset, headers in chess.pgn.scan_headers(pgn) + if headers["Result"] == "1/2-1/2") + + first_drawn_game_offset = next(offsets) + pgn.seek(first_drawn_game_offset) + first_drawn_game = chess.pgn.read_game(pgn) + self.assertEqual(first_drawn_game.headers["Site"], "03") + self.assertEqual(first_drawn_game.variation(0).move, chess.Move.from_uci("d2d3")) + + def test_black_to_move(self): + game = chess.pgn.Game() + game.setup("8/8/4k3/8/4P3/4K3/8/8 b - - 0 17") + node = game + node = node.add_main_variation(chess.Move.from_uci("e6d6")) + node = node.add_main_variation(chess.Move.from_uci("e3d4")) + node = node.add_main_variation(chess.Move.from_uci("d6e6")) + + expected = textwrap.dedent("""\ + [Event "?"] + [Site "?"] + [Date "????.??.??"] + [Round "?"] + [White "?"] + [Black "?"] + [Result "*"] + [SetUp "1"] + [FEN "8/8/4k3/8/4P3/4K3/8/8 b - - 0 17"] + + 17... Kd6 18. Kd4 Ke6 *""") + + self.assertEqual(str(game), expected) + + def test_result_termination_marker(self): + pgn = StringIO("1. d4 1-0") + game = chess.pgn.read_game(pgn) + self.assertEqual(game.headers["Result"], "1-0") + + def test_missing_setup_tag(self): + pgn = StringIO(textwrap.dedent("""\ + [Event "Test position"] + [Site "Black to move "] + [Date "1997.10.26"] + [Round "?"] + [White "Pos 16"] + [Black "VA33.EPD"] + [Result "1-0"] + [FEN "rbb1N1k1/pp1n1ppp/8/2Pp4/3P4/4P3/P1Q2PPq/R1BR1K2 b - - 0 1"] + + {Houdini 1.5 x64: 1)} 1... Nxc5 ({Houdini 1.5 x64: 2)} 1... Qh1+ 2. Ke2 Qxg2 3. + Kd2 Nxc5 4. Qxc5 Bg4 5. Ba3 Qxf2+ 6. Kc3 Qxe3+ 7. Kb2 Qxe8 8. Re1 Be6 9. Rh1 a5 + 10. Rag1 Ba7 11. Qc3 g6 12. Bc5 Qb5+ 13. Qb3 Qe2+ 14. Qc2 Qxc2+ 15. Kxc2 Bxc5 + 16. dxc5 Rc8 17. Kd2 {-2.39/22}) 2. dxc5 Bg4 3. f3 Bxf3 4. Qf2 Bxd1 5. Nd6 Bxd6 + 6. cxd6 Qxd6 7. Bb2 Ba4 8. Qf4 Bb5+ 9. Kf2 Qg6 10. Bd4 f6 11. Qc7 Bc6 12. a4 a6 + 13. Qg3 Qxg3+ 14. Kxg3 Rc8 15. Rc1 Kf7 16. a5 h5 17. Rh1 {-2.63/23} + 1-0""")) + + game = chess.pgn.read_game(pgn) + self.assertTrue("FEN" in game.headers) + self.assertFalse("SetUp" in game.headers) + + board = chess.Board("rbb1N1k1/pp1n1ppp/8/2Pp4/3P4/4P3/P1Q2PPq/R1BR1K2 b - - 0 1") + self.assertEqual(game.board(), board) + + def test_game_from_board(self): + setup = "3k4/8/4K3/8/8/8/8/2R5 b - - 0 1" + board = chess.Board(setup) + board.push_san("Ke8") + board.push_san("Rc8#") + + game = chess.pgn.Game.from_board(board) + self.assertEqual(game.headers["FEN"], setup) + + end_node = game.end() + self.assertEqual(end_node.move, chess.Move.from_uci("c1c8")) + self.assertEqual(end_node.parent.move, chess.Move.from_uci("d8e8")) + + self.assertEqual(game.headers["Result"], "1-0") + + +class StockfishTestCase(unittest.TestCase): + + def setUp(self): + try: + self.engine = chess.uci.popen_engine("stockfish") + except OSError: + self.skipTest("need stockfish") + + self.engine.uci() + + def tearDown(self): + self.engine.quit() + + def test_forced_mates(self): + epds = [ + "1k1r4/pp1b1R2/3q2pp/4p3/2B5/4Q3/PPP2B2/2K5 b - - bm Qd1+; id \"BK.01\";", + "6k1/N1p3pp/2p5/3n1P2/4K3/1P5P/P1Pr1r2/R1R5 b - - bm Rf4+; id \"Clausthal 2014\";", + ] + + board = chess.Board() + + for epd in epds: + operations = board.set_epd(epd) + self.engine.ucinewgame() + self.engine.position(board) + result = self.engine.go(mate=5) + self.assertTrue(result[0] in operations["bm"], operations["id"]) + + def test_async(self): + self.engine.ucinewgame() + command = self.engine.go(movetime=1000, async_callback=True) + self.assertFalse(command.done()) + command.result() + self.assertTrue(command.done()) + + def test_async_callback(self): + self.async_callback_called = False + + def async_callback(command): + self.async_callback_called = True + + command = self.engine.isready(async_callback=async_callback) + + # Wait for the command to be executed. + command.result() + + self.assertTrue(self.async_callback_called) + self.assertTrue(command.done()) + + def test_initialization(self): + self.assertTrue("Stockfish" in self.engine.name) + self.assertEqual(self.engine.options["UCI_Chess960"].name, "UCI_Chess960") + self.assertEqual(self.engine.options["uci_Chess960"].type, "check") + self.assertEqual(self.engine.options["UCI_CHESS960"].default, False) + + def test_terminate(self): + self.engine.go(infinite=True, async_callback=True) + time.sleep(0.1) + + +class SpurEngineTestCase(unittest.TestCase): + + def setUp(self): + try: + import spur + self.shell = spur.LocalShell() + except ImportError: + self.skipTest("need spur library") + + try: + self.engine = chess.uci.spur_spawn_engine(self.shell, ["stockfish"]) + except OSError: + self.skipTest("need stockfish") + + def test_local_shell(self): + self.engine.uci() + + self.engine.ucinewgame() + + # Find fools mate. + board = chess.Board() + board.push_san("g4") + board.push_san("e5") + board.push_san("f4") + self.engine.position(board) + bestmove, pondermove = self.engine.go(mate=1, movetime=2000) + self.assertEqual(board.san(bestmove), "Qh4#") + + self.engine.quit() + + def test_terminate(self): + self.engine.uci() + self.engine.go(infinite=True, async_callback=True) + + time.sleep(0.1) + + self.engine.terminate() + self.assertFalse(self.engine.is_alive()) + + def test_kill(self): + self.engine.uci() + self.engine.go(infinite=True, async_callback=True) + + time.sleep(0.1) + + self.engine.kill() + self.assertFalse(self.engine.is_alive()) + + def test_async_terminate(self): + command = self.engine.terminate(async_callback=True) + command.result() + self.assertTrue(command.done()) + + +class UciEngineTestCase(unittest.TestCase): + + def setUp(self): + self.engine = chess.uci.Engine(chess.uci.MockProcess()) + self.mock = self.engine.process + + self.mock.expect("uci", ("uciok", )) + self.engine.uci() + self.mock.assert_done() + + def tearDown(self): + self.engine.terminate() + self.mock.assert_terminated() + + def test_debug(self): + self.mock.expect("debug on") + self.engine.debug(True) + self.mock.assert_done() + + self.mock.expect("debug off") + self.engine.debug(False) + self.mock.assert_done() + + def test_ponderhit(self): + self.mock.expect("go ponder") + self.mock.expect("isready", ("readyok", )) + ponder_command = self.engine.go(ponder=True, async_callback=True) + self.mock.expect("ponderhit", ("bestmove e2e4", )) + self.engine.ponderhit() + self.assertEqual(ponder_command.result().bestmove, chess.Move.from_uci("e2e4")) + self.mock.assert_done() + + def test_kill(self): + self.engine.kill() + self.mock.assert_terminated() + + def test_go(self): + self.mock.expect("go infinite searchmoves e2e4 d2d4") + self.mock.expect("isready", ("readyok", )) + go_command = self.engine.go(searchmoves=[chess.Move.from_uci("e2e4"), chess.Move.from_uci("d2d4")], infinite=True, async_callback=True) + + self.mock.expect("stop", ("bestmove e2e4", )) + self.engine.stop() + bestmove, pondermove = go_command.result() + self.mock.assert_done() + self.assertEqual(bestmove, chess.Move.from_uci("e2e4")) + self.assertTrue(pondermove is None) + + self.mock.expect("go wtime 1 btime 2 winc 3 binc 4 movestogo 5 depth 6 nodes 7 mate 8 movetime 9", ( + "bestmove d2d4 ponder d7d5", + )) + self.mock.expect("isready", ("readyok", )) + self.engine.go(wtime=1, btime=2, winc=3, binc=4, movestogo=5, depth=6, nodes=7, mate=8, movetime=9) + self.mock.assert_done() + + self.mock.expect("go movetime 3333", ( + "bestmove (none) ponder (none)", + )) + self.mock.expect("isready", ("readyok", )) + bestmove, pondermove = self.engine.go(movetime=3333) + self.assertTrue(bestmove is None) + self.assertTrue(pondermove is None) + self.mock.assert_done() + + self.mock.expect("go mate 2", ( + "bestmove (none)", + )) + self.mock.expect("isready", ("readyok", )) + bestmove, pondermove = self.engine.go(mate=2) + self.assertTrue(bestmove is None) + self.assertTrue(pondermove is None) + self.mock.assert_done() + + def test_info_refutation(self): + handler = chess.uci.InfoHandler() + self.engine.info_handlers.append(handler) + + # Set a position where d1h5 g6h5 would be a legal sequence of moves. + fen = "8/8/6k1/8/8/8/1K6/3B4 w - - 0 1" + self.mock.expect("position fen " + fen) + self.mock.expect("isready", ("readyok", )) + self.engine.position(chess.Board(fen)) + + self.engine.on_line_received("info refutation d1h5 g6h5") + + d1h5 = chess.Move.from_uci("d1h5") + g6h5 = chess.Move.from_uci("g6h5") + + with handler as info: + self.assertEqual(len(info["refutation"][d1h5]), 1) + self.assertEqual(info["refutation"][d1h5][0], g6h5) + + self.engine.on_line_received("info refutation d1h5") + with handler as info: + self.assertTrue(info["refutation"][d1h5] is None) + + def test_info_string(self): + handler = chess.uci.InfoHandler() + self.engine.info_handlers.append(handler) + + self.engine.on_line_received("info string goes to end no matter score cp 4 what") + with handler as info: + self.assertEqual(info["string"], "goes to end no matter score cp 4 what") + self.assertFalse(1 in info["score"]) + + def test_info_currline(self): + handler = chess.uci.InfoHandler() + self.engine.info_handlers.append(handler) + + self.engine.on_line_received("info currline 0 e2e4 e7e5") + with handler as info: + self.assertEqual(info["currline"][0], [ + chess.Move.from_uci("e2e4"), + chess.Move.from_uci("e7e5"), + ]) + + self.engine.on_line_received("info currline 1 string eol") + with handler as info: + self.assertEqual(info["currline"][1], []) + + def test_mate_score(self): + handler = chess.uci.InfoHandler() + self.engine.info_handlers.append(handler) + + self.engine.on_line_received("info depth 7 seldepth 8 score mate 3") + with handler as info: + self.assertEqual(info["score"][1].mate, 3) + self.assertEqual(info["score"][1].cp, None) + + def test_info(self): + handler = chess.uci.InfoHandler() + self.engine.info_handlers.append(handler) + + self.mock.expect("go", ("bestmove d2d4", )) + self.mock.expect("isready", ("readyok", )) + self.engine.go() + + self.engine.on_line_received("info tbhits 123 cpuload 456 hashfull 789") + with handler as info: + self.assertEqual(info["tbhits"], 123) + self.assertEqual(info["cpuload"], 456) + self.assertEqual(info["hashfull"], 789) + + self.mock.expect("go", ("bestmove e2e4", )) + self.mock.expect("isready", ("readyok", )) + self.engine.go() + + self.assertFalse("tbhits" in handler.info) + self.assertFalse("cpuload" in handler.info) + self.assertFalse("hashfull" in handler.info) + + self.engine.on_line_received("info time 987 nodes 654 nps 321") + with handler as info: + self.assertEqual(info["time"], 987) + self.assertEqual(info["nodes"], 654) + self.assertEqual(info["nps"], 321) + + self.mock.assert_done() + + def test_combo_option(self): + self.engine.on_line_received("option name MyEnum type combo var Abc def var g h") + self.assertEqual(self.engine.options["MyEnum"].type, "combo") + self.assertEqual(self.engine.options["MyEnum"].var, ["Abc def", "g h"]) + + def test_set_option(self): + self.mock.expect("setoption name Yes value true") + self.mock.expect("setoption name No value false") + self.mock.expect("setoption name Null option value none") + self.mock.expect("setoption name String option value value value") + self.mock.expect("isready", ("readyok", )) + self.engine.setoption(OrderedDict([ + ("Yes", True), + ("No", False), + ("Null option", None), + ("String option", "value value"), + ])) + self.mock.assert_done() + + def test_multi_pv(self): + handler = chess.uci.InfoHandler() + self.engine.info_handlers.append(handler) + + self.engine.on_line_received("info score cp 777 multipv 13 pv e2e4") + self.engine.on_line_received("info score cp 888 pv d2d4") + with handler as info: + # Principal variations. + self.assertEqual(info["pv"][13][0], chess.Move.from_uci("e2e4")) + self.assertEqual(info["pv"][1][0], chess.Move.from_uci("d2d4")) + + # Score is relative to multipv as well. + self.assertEqual(info["score"][13].cp, 777) + self.assertEqual(info["score"][1].cp, 888) + + def test_castling_move_conversion(self): + # Setup a position where white can castle on the next move. + fen = "rnbqkbnr/pppppppp/8/8/8/4PN2/PPPPBPPP/RNBQK2R w KQkq - 1 1" + board = chess.Board(fen) + self.mock.expect("position fen " + fen) + self.mock.expect("isready", ("readyok", )) + self.engine.position(board) + self.mock.assert_done() + + # Expect the standard castling move notation e1g1 and respond with it. + self.mock.expect("go movetime 70 searchmoves a2a3 e1g1", ( + "bestmove e1g1", + )) + self.mock.expect("isready", ("readyok", )) + bestmove, pondermove = self.engine.go(movetime=70, searchmoves=[ + board.parse_san("a3"), + board.parse_san("O-O"), + ]) + self.assertTrue(bestmove.from_square, chess.E1) + self.assertTrue(bestmove.to_square, chess.H1) + self.mock.assert_done() + + # Assert that we can change to UCI_Chess960 mode. + self.assertFalse(self.engine.uci_chess960) + self.mock.expect("setoption name uCi_CheSS960 value true") + self.mock.expect("isready", ("readyok", )) + self.engine.setoption({"uCi_CheSS960": True}) + self.assertTrue(self.engine.uci_chess960) + self.mock.assert_done() + + # Expect a Shredder FEN during for the position command. + self.mock.expect("position fen rnbqkbnr/pppppppp/8/8/8/4PN2/PPPPBPPP/RNBQK2R w HAha - 1 1") + self.mock.expect("isready", ("readyok", )) + self.engine.position(board) + self.mock.assert_done() + + # Check that castling move conversion is now disabled. + self.mock.expect("go movetime 70 searchmoves a2a3 e1h1", ( + "bestmove e1h1", + )) + self.mock.expect("isready", ("readyok", )) + bestmove, pondermove = self.engine.go(movetime=70, searchmoves=[ + board.parse_san("a3"), + board.parse_san("O-O"), + ]) + self.assertTrue(bestmove.from_square, chess.E1) + self.assertTrue(bestmove.to_square, chess.H1) + self.mock.assert_done() + + def test_castling_ponder(self): + # Setup position. + fen = "rnbqkb1r/pp1ppppp/5n2/2p5/4P3/5N2/PPPPBPPP/RNBQK2R b KQkq - 3 3" + board = chess.Board(fen, chess960=True) + self.mock.expect("position fen " + fen) + self.mock.expect("isready", ("readyok", )) + self.engine.position(board) + + # Test castling moves as ponder moves. + self.mock.expect("go depth 15", ("bestmove f6e4 ponder e1g1", )) + self.mock.expect("isready", ("readyok", )) + bestmove, ponder = self.engine.go(depth=15) + self.assertEqual(bestmove, chess.Move.from_uci("f6e4")) + self.assertEqual(ponder, chess.Move.from_uci("e1h1")) + + self.mock.assert_done() + + def test_invalid_castling_rights(self): + fen = "3qk3/4pp2/5r2/8/8/8/3PP1P1/4K1R1 b G - 0 1" + board = chess.Board(fen, chess960=True) + board.push_san("Rf5") + + # White can castle with the G-side rook, which is not possible in + # standard chess. The UCI module should just send the final FEN, + # show a warning and hope for the best. + self.mock.expect("position fen 3qk3/4pp2/8/5r2/8/8/3PP1P1/4K1R1 w K - 1 2") + self.mock.expect("isready", ("readyok", )) + self.engine.position(board) + self.mock.assert_done() + + # Activate Chess960 mode. + self.mock.expect("setoption name UCI_Chess960 value true") + self.mock.expect("isready", ("readyok", )) + self.engine.setoption({"UCI_Chess960": True}) + + # Then those castling rights should work fine. + self.mock.expect("position fen " + fen + " moves f6f5") + self.mock.expect("isready", ("readyok", )) + self.engine.position(board) + self.mock.assert_done() + + def test_hakkapeliitta_double_spaces(self): + class AssertLogClean(logging.Handler): + def handle(self, record): + raise RuntimeError("was expecting no log messages") + + assert_log_clean = AssertLogClean() + assert_log_clean.setLevel(logging.ERROR) + logging.getLogger().addHandler(assert_log_clean) + + handler = chess.uci.InfoHandler() + self.engine.info_handlers.append(handler) + + self.engine.on_line_received("info depth 10 seldepth 9 score cp 22 upperbound time 17 nodes 48299 nps 2683000 tbhits 0") + + with handler as info: + self.assertEqual(info["depth"], 10) + self.assertEqual(info["seldepth"], 9) + self.assertEqual(info["score"][1].cp, 22) + self.assertEqual(info["score"][1].upperbound, True) + self.assertEqual(info["score"][1].lowerbound, False) + self.assertEqual(info["score"][1].mate, None) + self.assertEqual(info["time"], 17) + self.assertEqual(info["nodes"], 48299) + self.assertEqual(info["nps"], 2683000) + self.assertEqual(info["tbhits"], 0) + + logging.getLogger().removeHandler(assert_log_clean) + + +class UciOptionMapTestCase(unittest.TestCase): + + def test_equality(self): + a = chess.uci.OptionMap() + b = chess.uci.OptionMap() + c = chess.uci.OptionMap() + self.assertEqual(a, b) + + a["fOO"] = "bAr" + b["foo"] = "bAr" + c["fOo"] = "bar" + self.assertEqual(a, b) + self.assertEqual(b, a) + self.assertNotEqual(a, c) + self.assertNotEqual(c, a) + self.assertNotEqual(b, c) + + b["hello"] = "world" + self.assertNotEqual(a, b) + self.assertNotEqual(b, a) + + def test_len(self): + a = chess.uci.OptionMap() + self.assertEqual(len(a), 0) + + a["key"] = "value" + self.assertEqual(len(a), 1) + + del a["key"] + self.assertEqual(len(a), 0) + + +class SyzygyTestCase(unittest.TestCase): + + def test_calc_key(self): + board = chess.Board("8/8/8/5N2/5K2/2kB4/8/8 b - - 0 1") + key_from_board = chess.syzygy.calc_key(board) + key_from_filename = chess.syzygy.calc_key_from_filename("KBNvK") + self.assertEqual(key_from_board, key_from_filename) + + def test_filenames(self): + self.assertTrue("KPPvKN" in chess.syzygy.filenames()) + self.assertTrue("KNNPvKN" in chess.syzygy.filenames()) + self.assertTrue("KQRNvKR" in chess.syzygy.filenames()) + self.assertTrue("KRRRvKR" in chess.syzygy.filenames()) + self.assertTrue("KRRvKRR" in chess.syzygy.filenames()) + self.assertTrue("KRNvKRP" in chess.syzygy.filenames()) + self.assertTrue("KRPvKP" in chess.syzygy.filenames()) + + def test_probe_pawnless_wdl_table(self): + wdl = chess.syzygy.WdlTable("data/syzygy", "KBNvK") + wdl.init_table_wdl() + + board = chess.Board("8/8/8/5N2/5K2/2kB4/8/8 b - - 0 1") + self.assertEqual(wdl.probe_wdl_table(board), -2) + + board = chess.Board("7B/5kNK/8/8/8/8/8/8 w - - 0 1") + self.assertEqual(wdl.probe_wdl_table(board), 2) + + board = chess.Board("N7/8/2k5/8/7K/8/8/B7 w - - 0 1") + self.assertEqual(wdl.probe_wdl_table(board), 2) + + board = chess.Board("8/8/1NkB4/8/7K/8/8/8 w - - 1 1") + self.assertEqual(wdl.probe_wdl_table(board), 0) + + board = chess.Board("8/8/8/2n5/2b1K3/2k5/8/8 w - - 0 1") + self.assertEqual(wdl.probe_wdl_table(board), -2) + + wdl.close() + + def test_probe_wdl_table(self): + wdl = chess.syzygy.WdlTable("data/syzygy", "KRvKP") + wdl.init_table_wdl() + + board = chess.Board("8/8/2K5/4P3/8/8/8/3r3k b - - 1 1") + self.assertEqual(wdl.probe_wdl_table(board), 0) + + board = chess.Board("8/8/2K5/8/4P3/8/8/3r3k b - - 1 1") + self.assertEqual(wdl.probe_wdl_table(board), 2) + + wdl.close() + + def test_probe_dtz_table_piece(self): + dtz = chess.syzygy.DtzTable("data/syzygy", "KRvKN") + dtz.init_table_dtz() + + # Pawnless position with white to move. + board = chess.Board("7n/6k1/4R3/4K3/8/8/8/8 w - - 0 1") + self.assertEqual(dtz.probe_dtz_table(board, 2), (0, -1)) + + # Same position with black to move. + board = chess.Board("7n/6k1/4R3/4K3/8/8/8/8 b - - 1 1") + self.assertEqual(dtz.probe_dtz_table(board, -2), (8, 1)) + + dtz.close() + + def test_probe_dtz_table_pawn(self): + dtz = chess.syzygy.DtzTable("data/syzygy", "KNvKP") + dtz.init_table_dtz() + + board = chess.Board("8/1K6/1P6/8/8/8/6n1/7k w - - 0 1") + self.assertEqual(dtz.probe_dtz_table(board, 2), (2, 1)) + + dtz.close() + + def test_probe_wdl_tablebase(self): + tablebases = chess.syzygy.Tablebases() + self.assertEqual(tablebases.open_directory("data/syzygy"), 70) + + # Winning KRvKB. + board = chess.Board("7k/6b1/6K1/8/8/8/8/3R4 b - - 12 7") + self.assertEqual(tablebases.probe_wdl_table(board), -2) + + # Drawn KBBvK. + board = chess.Board("7k/8/8/4K3/3B4/4B3/8/8 b - - 12 7") + self.assertEqual(tablebases.probe_wdl_table(board), 0) + + # Winning KBBvK. + board = chess.Board("7k/8/8/4K2B/8/4B3/8/8 w - - 12 7") + self.assertEqual(tablebases.probe_wdl_table(board), 2) + + tablebases.close() + + def test_wdl_ep(self): + tablebases = chess.syzygy.Tablebases("data/syzygy") + + # Winning KPvKP because of en passant. + board = chess.Board("8/8/8/k2Pp3/8/8/8/4K3 w - e6 0 2") + + # If there was no en passant this would be a draw. + self.assertEqual(tablebases.probe_wdl_table(board), 0) + + # But it is a win. + self.assertEqual(tablebases.probe_wdl(board), 2) + + tablebases.close() + + def test_dtz_ep(self): + tablebases = chess.syzygy.Tablebases("data/syzygy") + + board = chess.Board("8/8/8/8/2pP4/2K5/4k3/8 b - d3 0 1") + self.assertEqual(tablebases.probe_dtz_no_ep(board), -1) + self.assertEqual(tablebases.probe_dtz(board), 1) + + tablebases.close() + + def test_testsuite(self): + tablebases = chess.syzygy.Tablebases("data/syzygy") + + board = chess.Board() + + with open("data/endgame.epd") as epds: + for line, epd in enumerate(epds): + extra = board.set_epd(epd) + + wdl_table = tablebases.probe_wdl_table(board) + self.assertEqual( + wdl_table, extra["wdl_table"], + "Expecting wdl_table {0} for {1}, got {2} (at line {3})".format(extra["wdl_table"], board.fen(), wdl_table, line + 1)) + + wdl = tablebases.probe_wdl(board) + self.assertEqual( + wdl, extra["wdl"], + "Expecting wdl {0} for {1}, got {2} (at line {3})".format(extra["wdl"], board.fen(), wdl, line + 1)) + + dtz = tablebases.probe_dtz(board) + self.assertEqual( + dtz, extra["dtz"], + "Expecting dtz {0} for {1}, got {2} (at line {3})".format(extra["dtz"], board.fen(), dtz, line + 1)) + + tablebases.close() + + +class NativeGaviotaTestCase(unittest.TestCase): + + def setUp(self): + try: + self.tablebases = chess.gaviota.open_tablebases_native("data/gaviota") + except (OSError, RuntimeError): + self.skipTest("need libgtb") + + def tearDown(self): + self.tablebases.close() + + def test_native_probe_dtm(self): + board = chess.Board("6K1/8/8/8/4Q3/8/6k1/8 b - - 0 1") + self.assertEqual(self.tablebases.probe_dtm(board), -14) + + board = chess.Board("8/3K4/8/8/8/4r3/4k3/8 b - - 0 1") + self.assertEqual(self.tablebases.probe_dtm(board), 21) + + def test_native_probe_wdl(self): + board = chess.Board("8/8/4K3/2n5/8/3k4/8/8 w - - 0 1") + self.assertEqual(self.tablebases.probe_wdl(board), 0) + + board = chess.Board("8/8/1p2K3/8/8/3k4/8/8 b - - 0 1") + self.assertEqual(self.tablebases.probe_wdl(board), 1) + + +class GaviotaTestCase(unittest.TestCase): + + def setUp(self): + self.tablebases = chess.gaviota.open_tablebases("data/gaviota", LibraryLoader=None) + + def tearDown(self): + self.tablebases.close() + + def test_dm_4(self): + with open("data/endgame-dm-4.epd") as epds: + for line, epd in enumerate(epds): + # Skip empty lines and comments. + epd = epd.strip() + if not epd or epd.startswith("#"): + continue + + # Parse EPD. + board, extra = chess.Board.from_epd(epd) + + # Check DTM. + if extra["dm"] > 0: + expected = extra["dm"] * 2 - 1 + else: + expected = extra["dm"] * 2 + dtm = self.tablebases.probe_dtm(board) + self.assertEqual(dtm, expected, + "Expecting dtm {0} for {1}, got {2} (at line {3})".format(expected, board.fen(), dtm, line + 1)) + + @unittest.skipUnless(os.path.exists("data/gaviota/kqrnk.gtb.cp4"), "need 5 piece gaviota tables") + def test_dm_5(self): + with open("data/endgame-dm-5.epd") as epds: + for line, epd in enumerate(epds): + # Skip empty lines and comments. + epd = epd.strip() + if not epd or epd.startswith("#"): + continue + + # Parse EPD. + board, extra = chess.Board.from_epd(epd) + + # Check DTM. + if extra["dm"] > 0: + expected = extra["dm"] * 2 - 1 + else: + expected = extra["dm"] * 2 + dtm = self.tablebases.probe_dtm(board) + self.assertEqual(dtm, expected, + "Expecting dtm {0} for {1}, got {2} (at line {3})".format(expected, board.fen(), dtm, line + 1)) + + def test_wdl(self): + board = chess.Board("8/8/4K3/2n5/8/3k4/8/8 w - - 0 1") + self.assertEqual(self.tablebases.probe_wdl(board), 0) + + board = chess.Board("8/8/1p2K3/8/8/3k4/8/8 b - - 0 1") + self.assertEqual(self.tablebases.probe_wdl(board), 1) + + def test_context_manager(self): + self.assertTrue(self.tablebases.available_tables) + + with self.tablebases: + pass + + self.assertFalse(self.tablebases.available_tables) + + +if __name__ == "__main__": + if "-v" in sys.argv or "--verbose" in sys.argv: + logging.basicConfig(level=logging.DEBUG) + + unittest.main() diff --git a/tests/test_game_header_bag.py b/tests/test_game_header_bag.py deleted file mode 100644 index 32a80423b..000000000 --- a/tests/test_game_header_bag.py +++ /dev/null @@ -1,58 +0,0 @@ -# -*- coding: utf-8 -*- -# -# This file is part of the python-chess library. -# Copyright (C) 2012 Niklas Fiekas -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import chess -import unittest - -class GameHeaderBagTestCase(unittest.TestCase): - """Tests for the GameHeaderBag class.""" - - def test_contains(self): - """Tests checking if a key is in the bag.""" - bag = chess.GameHeaderBag() - self.assertTrue("Site" in bag) - self.assertTrue("Round" in bag) - self.assertFalse("PlyCount" in bag) - self.assertFalse("FEN" in bag) - self.assertFalse("SetUp" in bag) - - bag["FEN"] = chess.START_FEN - self.assertFalse("FEN" in bag) - - bag["FEN"] = "8/8/8/1kr5/4KR2/5N2/8/8 w - - 0 1" - self.assertTrue("FEN" in bag) - self.assertTrue("SetUp" in bag) - - bag["UnknownHeader"] = "foo" - self.assertTrue("UnknownHeader" in bag) - self.assertFalse("OtherHeader" in bag) - - def test_iterating(self): - """Tests iterating over a bag.""" - bag = chess.GameHeaderBag() - bag["Lorem"] = "Ipsum" - bag["Annotator"] = "Awesome annotator" - - order = [] - for key in bag: - order.append(key) - - self.assertEqual(order[0], "Event") - self.assertEqual(order[6], "Result") - self.assertEqual(order[7], "Annotator") - self.assertEqual(order[8], "Lorem") diff --git a/tests/test_move.py b/tests/test_move.py deleted file mode 100644 index 6f71182f3..000000000 --- a/tests/test_move.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -# -# This file is part of the python-chess library. -# Copyright (C) 2012 Niklas Fiekas -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import chess -import unittest - -class MoveTestCase(unittest.TestCase): - """Tests the Move class.""" - - def test_equality(self): - """Tests the custom equality behaviour of the move class.""" - a = chess.Move(chess.Square("a1"), chess.Square("a2")) - b = chess.Move(chess.Square("a1"), chess.Square("a2")) - c = chess.Move(chess.Square("h7"), chess.Square("h8"), "b") - d = chess.Move(chess.Square("h7"), chess.Square("h8")) - - self.assertEqual(a, b) - self.assertEqual(b, a) - - self.assertNotEqual(a, c) - self.assertNotEqual(c, d) - self.assertNotEqual(b, d) - - def test_uci_parsing(self): - """Tests the UCI move parsing.""" - self.assertEqual(chess.Move.from_uci('b5c7').uci, 'b5c7') - self.assertEqual(chess.Move.from_uci('e7e8q').uci, 'e7e8q') diff --git a/tests/test_pgn_file.py.disabled b/tests/test_pgn_file.py.disabled deleted file mode 100644 index fbf82d3ac..000000000 --- a/tests/test_pgn_file.py.disabled +++ /dev/null @@ -1,56 +0,0 @@ -# -*- coding: utf-8 -*- -# -# This file is part of the python-chess library. -# Copyright (C) 2012 Niklas Fiekas -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import chess -import unittest - -class PgnFileTestCase(unittest.TestCase): - def test(self): - return - games = chess.PgnFile.open('data/games/kasparov-deep-blue-1997.pgn') - self.assertEqual(len(games), 6) - - first_game = games[0] - self.assertEqual(first_game.headers["Event"], "IBM Man-Machine, New York USA") - self.assertEqual(first_game.headers["Site"], "01") - self.assertEqual(first_game.headers["Date"], "1997.??.??") - self.assertEqual(first_game.headers["EventDate"], "?") - self.assertEqual(first_game.headers["Round"], "?") - self.assertEqual(first_game.headers["Result"], "1-0") - self.assertEqual(first_game.headers["White"], "Garry Kasparov") - self.assertEqual(first_game.headers["Black"], "Deep Blue (Computer)") - self.assertEqual(first_game.headers["ECO"], "A06") - - self.assertEqual(first_game[0].move, first_game.position.get_move_from_san("Nf3")) - - def test_variations_nags_and_comments(self): - """Tests reading a PGN with variations, NAGs and comments.""" - pgn = chess.PgnFile.open("data/games/variations-nags-and-comments.pgn") - game = pgn[0] - self.assertEqual(game.headers["Result"], "*") - self.assertEqual(game.start_comment, "Main opening:") - self.assertEqual(game[0].move, chess.Move.from_uci("e2e4")) - self.assertEqual(game[0][0].move, chess.Move.from_uci("c7c5")) - self.assertEqual(game[0][0].comment, "Sicilian") - self.assertEqual(game[0][1].start_comment, "Scandinavian defense:") - self.assertEqual(game[0][1].move, chess.Move.from_uci("d7d5")) - self.assertEqual(game[0][2].move, chess.Move.from_uci("h7h5")) - self.assertEqual(game[0][2].comment, "is nonesense") - self.assertEqual(game[0][3].move, chess.Move.from_uci("e7e5")) - self.assertEqual(game[0][3][0].move, chess.Move.from_uci("d1f3")) - self.assertTrue(2 in game[0][3][0].nags) diff --git a/tests/test_piece.py b/tests/test_piece.py deleted file mode 100644 index a86053ed6..000000000 --- a/tests/test_piece.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- -# -# This file is part of the python-chess library. -# Copyright (C) 2012 Niklas Fiekas -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import chess -import unittest - -class PieceTestCase(unittest.TestCase): - """Tests the Piece class.""" - - def test_equality(self): - """Tests the overriden equality behavior of the Piece class.""" - a = chess.Piece.from_color_and_type("w", "b") - b = chess.Piece.from_color_and_type("b", "k") - c = chess.Piece.from_color_and_type("w", "k") - d = chess.Piece.from_color_and_type("w", "b") - - self.assertEqual(a, d) - self.assertEqual(d, a) - - self.assertEqual(repr(a), repr(d)) - - self.assertNotEqual(a, b) - self.assertNotEqual(b, c) - self.assertNotEqual(b, d) - self.assertNotEqual(a, c) - - self.assertNotEqual(a, None) - self.assertFalse(a == None) - - def test_simple_properties(self): - """Tests simple properties.""" - white_knight = chess.Piece('N') - - self.assertEqual(white_knight.color, 'w') - self.assertEqual(white_knight.full_color, 'white') - - self.assertEqual(white_knight.type, 'n') - self.assertEqual(white_knight.full_type, 'knight') diff --git a/tests/test_polyglot_opening_book.py b/tests/test_polyglot_opening_book.py deleted file mode 100644 index dd4fa725d..000000000 --- a/tests/test_polyglot_opening_book.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# -# This file is part of the python-chess library. -# Copyright (C) 2012 Niklas Fiekas -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import chess -import unittest - -class PolyglotOpeningBookTestCase(unittest.TestCase): - - def test_performance_bin(self): - pos = chess.Position() - book = chess.PolyglotOpeningBook("data/opening-books/performance.bin") - - e4 = book.get_entries_for_position(pos).next() - self.assertEqual(e4.move, pos.get_move_from_san("e4")) - pos.make_move(e4.move) - - e5 = book.get_entries_for_position(pos).next() - self.assertEqual(e5.move, pos.get_move_from_san("e5")) - pos.make_move(e5.move) - - def test_mainline(self): - pos = chess.Position() - book = chess.PolyglotOpeningBook("data/opening-books/performance.bin") - - while True: - try: - entry = book.get_entries_for_position(pos).next() - pos.make_move(entry.move) - except StopIteration: - break diff --git a/tests/test_position.py b/tests/test_position.py deleted file mode 100644 index 0ce175a77..000000000 --- a/tests/test_position.py +++ /dev/null @@ -1,183 +0,0 @@ -# -*- coding: utf-8 -*- -# -# This file is part of the python-chess library. -# Copyright (C) 2012 Niklas Fiekas -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import chess -import unittest - -class PositionTestCase(unittest.TestCase): - """Tests the position class.""" - - def test_default_position(self): - """Tests the default position.""" - pos = chess.Position() - self.assertEqual(pos[chess.Square('b1')], chess.Piece('N')) - self.assertEqual(pos.fen, "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1") - self.assertEqual(pos.turn, "w") - - def test_scholars_mate(self): - """Tests the scholars mate.""" - pos = chess.Position() - self.assertTrue(pos.has_queenside_castling_right("b")) - - e4 = chess.Move.from_uci('e2e4') - self.assertTrue(e4 in pos.get_legal_moves()) - pos.make_move(e4) - self.assertTrue(pos.has_queenside_castling_right("b")) - - e5 = chess.Move.from_uci('e7e5') - self.assertTrue(e5 in pos.get_legal_moves()) - self.assertFalse(e4 in pos.get_legal_moves()) - pos.make_move(e5) - self.assertTrue(pos.has_queenside_castling_right("b")) - - Qf3 = chess.Move.from_uci('d1f3') - self.assertTrue(Qf3 in pos.get_legal_moves()) - pos.make_move(Qf3) - self.assertTrue(pos.has_queenside_castling_right("b")) - - Nc6 = chess.Move.from_uci('b8c6') - self.assertTrue(Nc6 in pos.get_legal_moves()) - pos.make_move(Nc6) - self.assertTrue(pos.has_queenside_castling_right("b")) - - Bc4 = chess.Move.from_uci('f1c4') - self.assertTrue(Bc4 in pos.get_legal_moves()) - pos.make_move(Bc4) - self.assertTrue(pos.has_queenside_castling_right("b")) - - Rb8 = chess.Move.from_uci('a8b8') - self.assertTrue(Rb8 in pos.get_legal_moves()) - pos.make_move(Rb8) - self.assertFalse(pos.has_queenside_castling_right("b")) - - self.assertFalse(pos.is_check()) - self.assertFalse(pos.is_checkmate()) - self.assertFalse(pos.is_game_over()) - self.assertFalse(pos.is_stalemate()) - - Qf7_mate = chess.Move.from_uci('f3f7') - self.assertTrue(Qf7_mate in pos.get_legal_moves()) - pos.make_move(Qf7_mate) - - self.assertTrue(pos.is_check()) - self.assertTrue(pos.is_checkmate()) - self.assertTrue(pos.is_game_over()) - self.assertFalse(pos.is_stalemate()) - - self.assertEqual(pos.fen, "1rbqkbnr/pppp1Qpp/2n5/4p3/2B1P3/8/PPPP1PPP/RNB1K1NR b KQk - 0 4") - - def test_move_info(self): - """Tests move info generation.""" - pos = chess.Position() - e4 = pos.make_move(chess.Move.from_uci('e2e4')) - self.assertEqual(e4.san, 'e4') - self.assertFalse(e4.is_check) - self.assertFalse(e4.is_checkmate) - self.assertFalse(e4.is_castle) - - def test_pawn_captures(self): - """Tests pawn captures in the kings gambit.""" - pos = chess.Position() - pos.make_move(pos.get_move_from_san("e4")) - pos.make_move(pos.get_move_from_san("e5")) - pos.make_move(pos.get_move_from_san("f4")) - - accepted = chess.Position(pos) - self.assertTrue(chess.Move.from_uci("e5f4") in accepted.get_pseudo_legal_moves()) - self.assertTrue(chess.Move.from_uci("e5f4") in accepted.get_legal_moves()) - accepted.make_move(accepted.get_move_from_san("exf4")) - - wierd_declined = chess.Position(pos) - wierd_declined.make_move(wierd_declined.get_move_from_san("d5")) - wierd_declined.make_move(wierd_declined.get_move_from_san("exd5")) - - - def test_single_step_pawn_move(self): - """Tests that single step pawn moves are possible.""" - pos = chess.Position() - a3 = chess.Move.from_uci('a2a3') - self.assertTrue(a3 in pos.get_pseudo_legal_moves()) - self.assertTrue(a3 in pos.get_legal_moves()) - pos.make_move(a3) - - def test_pawn_move_generation(self): - """Tests pawn move generation in a specific position from a - Kasparov vs. Deep Blue game.""" - pos = chess.Position("8/2R1P3/8/2pp4/2k1r3/P7/8/1K6 w - - 1 55") - list(pos.get_pseudo_legal_moves()) - - def test_get_set(self): - """Tests the get and set methods.""" - pos = chess.Position() - self.assertEqual(pos["b1"], chess.Piece("N")) - - del pos["e2"] - self.assertEqual(pos[chess.Square("e2")], None) - - pos[chess.Square("e4")] = chess.Piece("r") - self.assertEqual(pos["e4"], chess.Piece("r")) - - def test_ep_file(self): - pos = chess.Position("rnbqkbnr/ppp1pppp/8/3p4/4P3/8/PPPP1PPP/RNBQKBNR w KQkq d6 0 2") - self.assertEqual(pos.ep_file, "d") - - def test_san_moves(self): - """Tests making moves from SANs.""" - pos = chess.Position() - - pos.make_move(pos.get_move_from_san('Nc3')) - pos.make_move(pos.get_move_from_san('c5')) - - pos.make_move(pos.get_move_from_san('e4')) - pos.make_move(pos.get_move_from_san('g6')) - - pos.make_move(pos.get_move_from_san('Nge2')) - pos.make_move(pos.get_move_from_san('Bg7')) - - pos.make_move(pos.get_move_from_san('d3')) - pos.make_move(pos.get_move_from_san('Bxc3')) - - pos.make_move(pos.get_move_from_san('bxc3')) - - self.assertEqual(pos.fen, 'rnbqk1nr/pp1ppp1p/6p1/2p5/4P3/2PP4/P1P1NPPP/R1BQKB1R b KQkq - 0 5') - - def test_ambigous_rank(self): - """Tests ambigous rank in SANs.""" - pos = chess.Position("r1bqkb1r/pp1n1ppp/2p1pn2/6N1/3P4/3B4/PPP2PPP/R1BQK1NR w KQkq - 0 7") - - first_rank_move = pos.get_move_from_san("N1f3") - self.assertEqual(first_rank_move, chess.Move.from_uci("g1f3")) - - - fifth_rank_move = pos.get_move_from_san("N5f3") - self.assertEqual(fifth_rank_move, chess.Move.from_uci("g5f3")) - - - def test_insufficient_material(self): - """Tests material counting.""" - # Starting position. - pos = chess.Position() - self.assertFalse(pos.is_insufficient_material()) - - # King vs. King + 2 bishops of the same color. - pos = chess.Position("k1K1B1B1/8/8/8/8/8/8/8 w - - 7 32") - self.assertTrue(pos.is_insufficient_material()) - - # Add a black bishop of the opposite color for the weaker side. - pos["b8"] = chess.Piece("b") - self.assertFalse(pos.is_insufficient_material()) diff --git a/tests/test_square.py b/tests/test_square.py deleted file mode 100644 index 7b9ebb5dd..000000000 --- a/tests/test_square.py +++ /dev/null @@ -1,55 +0,0 @@ -# -*- coding: utf-8 -*- -# -# This file is part of the python-chess library. -# Copyright (C) 2012 Niklas Fiekas -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import chess -import unittest - -class SquareTestCase(unittest.TestCase): - """Tests the Square class.""" - - def test_equality(self): - """Tests the overriden equality behaviour of the Square class.""" - a = chess.Square("b4") - b = chess.Square("b4") - c = chess.Square("b3") - d = chess.Square("f3") - - self.assertEqual(a, b) - self.assertEqual(b, a) - - self.assertNotEqual(a, c) - self.assertNotEqual(a, d) - self.assertNotEqual(c, d) - - def test_simple_properties(self): - """Tests simple properties of Square objects.""" - f7 = chess.Square("f7") - self.assertFalse(f7.is_dark()) - self.assertTrue(f7.is_light()) - self.assertEqual(f7.rank_name, "7") - self.assertEqual(f7.file_name, "f") - self.assertEqual(f7.name, "f7") - self.assertEqual(f7.x88_index, 21) - self.assertEqual(f7.file, 5) - self.assertEqual(f7.rank, 6) - self.assertFalse(f7.is_backrank()) - - def test_creation(self): - """Tests creation of Square instances.""" - self.assertEqual(chess.Square.from_rank_and_file(5, 3), chess.Square("d6")) - self.assertEqual(chess.Square.from_x88_index(2), chess.Square("c8")) diff --git a/tests/test_util.py b/tests/test_util.py deleted file mode 100644 index 195f20826..000000000 --- a/tests/test_util.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- -# -# This file is part of the python-chess library. -# Copyright (C) 2012 Niklas Fiekas -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import chess -import unittest - -class UtilTestCase(unittest.TestCase): - """Tests utility functions.""" - - def test_opposite_color(self): - """Tests the opposite color function.""" - self.assertEqual(chess.opposite_color("w"), "b") - self.assertEqual(chess.opposite_color("b"), "w") diff --git a/tox.ini b/tox.ini new file mode 100644 index 000000000..e6bb14899 --- /dev/null +++ b/tox.ini @@ -0,0 +1,27 @@ +[tox] +envlist = py26,py27,py33,py34,py35 + +[testenv] +passenv = LD_LIBRARY_PATH COVERALLS_REPO_TOKEN TRAVIS TRAVIS_JOB_ID TRAVIS_BRANCH +whitelist_externals = + stockfish +deps = + coverage + coveralls + py26: unittest2 + py26: backport_collections + py26,py27: futures + py26,py27: backports.lzma + spur +commands = + coverage erase + coverage run --source chess test.py --verbose + coverage run --source chess --append examples/push_san.py + coverage run --source chess --append examples/bratko_kopec.py -e stockfish + coverage run --source chess --append -m doctest README.rst --verbose + coverage run --source chess --append perft.py --verbose + coveralls + +[flake8] +ignore = E302,E402,E241,E131,E126,E128 +max-line-length = 160