add 150 example games to test PGN parser

Sun, 19 Jul 2026 17:13:16 +0200

author
Mike Becker <universe@uap-core.de>
date
Sun, 19 Jul 2026 17:13:16 +0200
changeset 149
ea2448961441
parent 148
6cc15ba51424
child 150
7d57a252948e

add 150 example games to test PGN parser

Makefile file | annotate | diff | comparison | revisions
src/chess/pgn.c file | annotate | diff | comparison | revisions
src/chess/pgn.h file | annotate | diff | comparison | revisions
test/Makefile file | annotate | diff | comparison | revisions
test/data/game001.pgn file | annotate | diff | comparison | revisions
test/data/game002.pgn file | annotate | diff | comparison | revisions
test/data/game003.pgn file | annotate | diff | comparison | revisions
test/data/game004.pgn file | annotate | diff | comparison | revisions
test/data/game005.pgn file | annotate | diff | comparison | revisions
test/data/game006.pgn file | annotate | diff | comparison | revisions
test/data/game007.pgn file | annotate | diff | comparison | revisions
test/data/game008.pgn file | annotate | diff | comparison | revisions
test/data/game009.pgn file | annotate | diff | comparison | revisions
test/data/game010.pgn file | annotate | diff | comparison | revisions
test/data/game011.pgn file | annotate | diff | comparison | revisions
test/data/game012.pgn file | annotate | diff | comparison | revisions
test/data/game013.pgn file | annotate | diff | comparison | revisions
test/data/game014.pgn file | annotate | diff | comparison | revisions
test/data/game015.pgn file | annotate | diff | comparison | revisions
test/data/game016.pgn file | annotate | diff | comparison | revisions
test/data/game017.pgn file | annotate | diff | comparison | revisions
test/data/game018.pgn file | annotate | diff | comparison | revisions
test/data/game019.pgn file | annotate | diff | comparison | revisions
test/data/game020.pgn file | annotate | diff | comparison | revisions
test/data/game021.pgn file | annotate | diff | comparison | revisions
test/data/game022.pgn file | annotate | diff | comparison | revisions
test/data/game023.pgn file | annotate | diff | comparison | revisions
test/data/game024.pgn file | annotate | diff | comparison | revisions
test/data/game025.pgn file | annotate | diff | comparison | revisions
test/data/game026.pgn file | annotate | diff | comparison | revisions
test/data/game027.pgn file | annotate | diff | comparison | revisions
test/data/game028.pgn file | annotate | diff | comparison | revisions
test/data/game029.pgn file | annotate | diff | comparison | revisions
test/data/game030.pgn file | annotate | diff | comparison | revisions
test/data/game031.pgn file | annotate | diff | comparison | revisions
test/data/game032.pgn file | annotate | diff | comparison | revisions
test/data/game033.pgn file | annotate | diff | comparison | revisions
test/data/game034.pgn file | annotate | diff | comparison | revisions
test/data/game035.pgn file | annotate | diff | comparison | revisions
test/data/game036.pgn file | annotate | diff | comparison | revisions
test/data/game037.pgn file | annotate | diff | comparison | revisions
test/data/game038.pgn file | annotate | diff | comparison | revisions
test/data/game039.pgn file | annotate | diff | comparison | revisions
test/data/game040.pgn file | annotate | diff | comparison | revisions
test/data/game041.pgn file | annotate | diff | comparison | revisions
test/data/game042.pgn file | annotate | diff | comparison | revisions
test/data/game043.pgn file | annotate | diff | comparison | revisions
test/data/game044.pgn file | annotate | diff | comparison | revisions
test/data/game045.pgn file | annotate | diff | comparison | revisions
test/data/game046.pgn file | annotate | diff | comparison | revisions
test/data/game047.pgn file | annotate | diff | comparison | revisions
test/data/game048.pgn file | annotate | diff | comparison | revisions
test/data/game049.pgn file | annotate | diff | comparison | revisions
test/data/game050.pgn file | annotate | diff | comparison | revisions
test/data/game051.pgn file | annotate | diff | comparison | revisions
test/data/game052.pgn file | annotate | diff | comparison | revisions
test/data/game053.pgn file | annotate | diff | comparison | revisions
test/data/game054.pgn file | annotate | diff | comparison | revisions
test/data/game055.pgn file | annotate | diff | comparison | revisions
test/data/game056.pgn file | annotate | diff | comparison | revisions
test/data/game057.pgn file | annotate | diff | comparison | revisions
test/data/game058.pgn file | annotate | diff | comparison | revisions
test/data/game059.pgn file | annotate | diff | comparison | revisions
test/data/game060.pgn file | annotate | diff | comparison | revisions
test/data/game061.pgn file | annotate | diff | comparison | revisions
test/data/game062.pgn file | annotate | diff | comparison | revisions
test/data/game063.pgn file | annotate | diff | comparison | revisions
test/data/game064.pgn file | annotate | diff | comparison | revisions
test/data/game065.pgn file | annotate | diff | comparison | revisions
test/data/game066.pgn file | annotate | diff | comparison | revisions
test/data/game067.pgn file | annotate | diff | comparison | revisions
test/data/game068.pgn file | annotate | diff | comparison | revisions
test/data/game069.pgn file | annotate | diff | comparison | revisions
test/data/game070.pgn file | annotate | diff | comparison | revisions
test/data/game071.pgn file | annotate | diff | comparison | revisions
test/data/game072.pgn file | annotate | diff | comparison | revisions
test/data/game073.pgn file | annotate | diff | comparison | revisions
test/data/game074.pgn file | annotate | diff | comparison | revisions
test/data/game075.pgn file | annotate | diff | comparison | revisions
test/data/game076.pgn file | annotate | diff | comparison | revisions
test/data/game077.pgn file | annotate | diff | comparison | revisions
test/data/game078.pgn file | annotate | diff | comparison | revisions
test/data/game079.pgn file | annotate | diff | comparison | revisions
test/data/game080.pgn file | annotate | diff | comparison | revisions
test/data/game081.pgn file | annotate | diff | comparison | revisions
test/data/game082.pgn file | annotate | diff | comparison | revisions
test/data/game083.pgn file | annotate | diff | comparison | revisions
test/data/game084.pgn file | annotate | diff | comparison | revisions
test/data/game085.pgn file | annotate | diff | comparison | revisions
test/data/game086.pgn file | annotate | diff | comparison | revisions
test/data/game087.pgn file | annotate | diff | comparison | revisions
test/data/game088.pgn file | annotate | diff | comparison | revisions
test/data/game089.pgn file | annotate | diff | comparison | revisions
test/data/game090.pgn file | annotate | diff | comparison | revisions
test/data/game091.pgn file | annotate | diff | comparison | revisions
test/data/game092.pgn file | annotate | diff | comparison | revisions
test/data/game093.pgn file | annotate | diff | comparison | revisions
test/data/game094.pgn file | annotate | diff | comparison | revisions
test/data/game095.pgn file | annotate | diff | comparison | revisions
test/data/game096.pgn file | annotate | diff | comparison | revisions
test/data/game097.pgn file | annotate | diff | comparison | revisions
test/data/game098.pgn file | annotate | diff | comparison | revisions
test/data/game099.pgn file | annotate | diff | comparison | revisions
test/data/game100.pgn file | annotate | diff | comparison | revisions
test/data/game101.pgn file | annotate | diff | comparison | revisions
test/data/game102.pgn file | annotate | diff | comparison | revisions
test/data/game103.pgn file | annotate | diff | comparison | revisions
test/data/game104.pgn file | annotate | diff | comparison | revisions
test/data/game105.pgn file | annotate | diff | comparison | revisions
test/data/game106.pgn file | annotate | diff | comparison | revisions
test/data/game107.pgn file | annotate | diff | comparison | revisions
test/data/game108.pgn file | annotate | diff | comparison | revisions
test/data/game109.pgn file | annotate | diff | comparison | revisions
test/data/game110.pgn file | annotate | diff | comparison | revisions
test/data/game111.pgn file | annotate | diff | comparison | revisions
test/data/game112.pgn file | annotate | diff | comparison | revisions
test/data/game113.pgn file | annotate | diff | comparison | revisions
test/data/game114.pgn file | annotate | diff | comparison | revisions
test/data/game115.pgn file | annotate | diff | comparison | revisions
test/data/game116.pgn file | annotate | diff | comparison | revisions
test/data/game117.pgn file | annotate | diff | comparison | revisions
test/data/game118.pgn file | annotate | diff | comparison | revisions
test/data/game119.pgn file | annotate | diff | comparison | revisions
test/data/game120.pgn file | annotate | diff | comparison | revisions
test/data/game121.pgn file | annotate | diff | comparison | revisions
test/data/game122.pgn file | annotate | diff | comparison | revisions
test/data/game123.pgn file | annotate | diff | comparison | revisions
test/data/game124.pgn file | annotate | diff | comparison | revisions
test/data/game125.pgn file | annotate | diff | comparison | revisions
test/data/game126.pgn file | annotate | diff | comparison | revisions
test/data/game127.pgn file | annotate | diff | comparison | revisions
test/data/game128.pgn file | annotate | diff | comparison | revisions
test/data/game129.pgn file | annotate | diff | comparison | revisions
test/data/game130.pgn file | annotate | diff | comparison | revisions
test/data/game131.pgn file | annotate | diff | comparison | revisions
test/data/game132.pgn file | annotate | diff | comparison | revisions
test/data/game133.pgn file | annotate | diff | comparison | revisions
test/data/game134.pgn file | annotate | diff | comparison | revisions
test/data/game135.pgn file | annotate | diff | comparison | revisions
test/data/game136.pgn file | annotate | diff | comparison | revisions
test/data/game137.pgn file | annotate | diff | comparison | revisions
test/data/game138.pgn file | annotate | diff | comparison | revisions
test/data/game139.pgn file | annotate | diff | comparison | revisions
test/data/game140.pgn file | annotate | diff | comparison | revisions
test/data/game141.pgn file | annotate | diff | comparison | revisions
test/data/game142.pgn file | annotate | diff | comparison | revisions
test/data/game143.pgn file | annotate | diff | comparison | revisions
test/data/game144.pgn file | annotate | diff | comparison | revisions
test/data/game145.pgn file | annotate | diff | comparison | revisions
test/data/game146.pgn file | annotate | diff | comparison | revisions
test/data/game147.pgn file | annotate | diff | comparison | revisions
test/data/game148.pgn file | annotate | diff | comparison | revisions
test/data/game149.pgn file | annotate | diff | comparison | revisions
test/data/game150.pgn file | annotate | diff | comparison | revisions
test/run-tests.c file | annotate | diff | comparison | revisions
test/test-real-pgn.c file | annotate | diff | comparison | revisions
test/ucxtest.h file | annotate | diff | comparison | revisions
--- a/Makefile	Sat Jul 18 22:00:49 2026 +0200
+++ b/Makefile	Sun Jul 19 17:13:16 2026 +0200
@@ -51,6 +51,6 @@
 update-rules:
 	make/update-rules.sh src
 	make/update-rules.sh src/chess
-	make/update-rules.sh test
+	CFLAGS="$(CFLAGS)  -I../src" make/update-rules.sh test
 
 FORCE:
--- a/src/chess/pgn.c	Sat Jul 18 22:00:49 2026 +0200
+++ b/src/chess/pgn.c	Sun Jul 19 17:13:16 2026 +0200
@@ -35,19 +35,6 @@
 #include <sys/time.h>
 #include <time.h>
 
-enum {
-    pgn_no_error = 0,
-    pgn_error_missing_quote,
-    pgn_error_missing_bracket,
-    pgn_error_missing_brace,
-    pgn_error_missing_dot,
-    pgn_error_move_syntax,
-    pgn_error_move_semantics,
-    pgn_error_result_syntax,
-    pgn_error_result_mismatch,
-    pgn_error_unexpected_eof,
-};
-
 static const char* pgn_error_strings[] = {
     "No Error.",
     "Tag values must be enclosed in double-quotes.",
--- a/src/chess/pgn.h	Sat Jul 18 22:00:49 2026 +0200
+++ b/src/chess/pgn.h	Sun Jul 19 17:13:16 2026 +0200
@@ -37,7 +37,20 @@
 #ifdef	__cplusplus
 extern "C" {
 #endif
-    
+
+enum {
+    pgn_no_error = 0,
+    pgn_error_missing_quote,
+    pgn_error_missing_bracket,
+    pgn_error_missing_brace,
+    pgn_error_missing_dot,
+    pgn_error_move_syntax,
+    pgn_error_move_semantics,
+    pgn_error_result_syntax,
+    pgn_error_result_mismatch,
+    pgn_error_unexpected_eof,
+};
+
 int read_pgn(FILE *stream, GameState *gamestate);
 int parse_pgn(const char *data, GameState *gamestate);
 void write_pgn(FILE* stream, GameState *gamestate, bool export_comments);
--- a/test/Makefile	Sat Jul 18 22:00:49 2026 +0200
+++ b/test/Makefile	Sun Jul 19 17:13:16 2026 +0200
@@ -28,9 +28,13 @@
 
 include ../config.mk
 
-SRC  = run-tests.c
+SRC  = run-tests.c \
+	   test-real-pgn.c
+
 OBJ = $(SRC:%.c=$(BUILDDIR)/%.o)
 
+CFLAGS += -I../src
+
 all: $(BUILDDIR)/run-tests FORCE
 
 $(BUILDDIR)/run-tests: $(OBJ) $(BUILDDIR)/libchess$(LIB_EXT)
@@ -42,3 +46,45 @@
 	@echo "Compiling $<"
 	$(CC) -o $@ $(CFLAGS) -c $<
 
+$(BUILDDIR)/test-real-pgn.o: test-real-pgn.c ucxtest.h ../src/chess/pgn.h \
+ ../src/chess/rules.h data/game001.pgn data/game002.pgn data/game003.pgn \
+ data/game004.pgn data/game005.pgn data/game006.pgn data/game007.pgn \
+ data/game008.pgn data/game009.pgn data/game010.pgn data/game011.pgn \
+ data/game012.pgn data/game013.pgn data/game014.pgn data/game015.pgn \
+ data/game016.pgn data/game017.pgn data/game018.pgn data/game019.pgn \
+ data/game020.pgn data/game021.pgn data/game022.pgn data/game023.pgn \
+ data/game024.pgn data/game025.pgn data/game026.pgn data/game027.pgn \
+ data/game028.pgn data/game029.pgn data/game030.pgn data/game031.pgn \
+ data/game032.pgn data/game033.pgn data/game034.pgn data/game035.pgn \
+ data/game036.pgn data/game037.pgn data/game038.pgn data/game039.pgn \
+ data/game040.pgn data/game041.pgn data/game042.pgn data/game043.pgn \
+ data/game044.pgn data/game045.pgn data/game046.pgn data/game047.pgn \
+ data/game048.pgn data/game049.pgn data/game050.pgn data/game051.pgn \
+ data/game052.pgn data/game053.pgn data/game054.pgn data/game055.pgn \
+ data/game056.pgn data/game057.pgn data/game058.pgn data/game059.pgn \
+ data/game060.pgn data/game061.pgn data/game062.pgn data/game063.pgn \
+ data/game064.pgn data/game065.pgn data/game066.pgn data/game067.pgn \
+ data/game068.pgn data/game069.pgn data/game070.pgn data/game071.pgn \
+ data/game072.pgn data/game073.pgn data/game074.pgn data/game075.pgn \
+ data/game076.pgn data/game077.pgn data/game078.pgn data/game079.pgn \
+ data/game080.pgn data/game081.pgn data/game082.pgn data/game083.pgn \
+ data/game084.pgn data/game085.pgn data/game086.pgn data/game087.pgn \
+ data/game088.pgn data/game089.pgn data/game090.pgn data/game091.pgn \
+ data/game092.pgn data/game093.pgn data/game094.pgn data/game095.pgn \
+ data/game096.pgn data/game097.pgn data/game098.pgn data/game099.pgn \
+ data/game100.pgn data/game101.pgn data/game102.pgn data/game103.pgn \
+ data/game104.pgn data/game105.pgn data/game106.pgn data/game107.pgn \
+ data/game108.pgn data/game109.pgn data/game110.pgn data/game111.pgn \
+ data/game112.pgn data/game113.pgn data/game114.pgn data/game115.pgn \
+ data/game116.pgn data/game117.pgn data/game118.pgn data/game119.pgn \
+ data/game120.pgn data/game121.pgn data/game122.pgn data/game123.pgn \
+ data/game124.pgn data/game125.pgn data/game126.pgn data/game127.pgn \
+ data/game128.pgn data/game129.pgn data/game130.pgn data/game131.pgn \
+ data/game132.pgn data/game133.pgn data/game134.pgn data/game135.pgn \
+ data/game136.pgn data/game137.pgn data/game138.pgn data/game139.pgn \
+ data/game140.pgn data/game141.pgn data/game142.pgn data/game143.pgn \
+ data/game144.pgn data/game145.pgn data/game146.pgn data/game147.pgn \
+ data/game148.pgn data/game149.pgn data/game150.pgn
+	@echo "Compiling $<"
+	$(CC) -o $@ $(CFLAGS) -c $<
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game001.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. Nf3 Nf6 3. Bc4 Nc6 4. Ng5 d5 5. exd5 Nxd5 6. Qf3 Qxg5 7. Bxd5 Qg6 8. d3 Nd4 9. Qd1 Bf5 10. Be3 c6 11. Nc3 cxd5 12. Nxd5 Bd6 13. Bxd4 exd4 14. Qe2+ Be6 15. O-O-O O-O 16. h4 Bxd5 17. g4 Qf6 18. g5 Qf3 19. Qf1 Qf4+ 20. Kb1 Bf3 21. Re1 Bxh1 22. Qxh1 Qh2 23. Qf1 Qxh4 24. f4 Qxf4 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game002.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. b3 e5 2. Bb2 Nc6 3. e3 d5 4. Bb5 Bd7 5. Bxc6 Bxc6 6. Bxe5 Bd6 7. Bxg7 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game003.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e5 2. Nc3 Bc5 3. g3 d6 4. Bg2 c6 5. a3 a5 6. e3 Nf6 7. Nge2 h6 8. d4 exd4 9. exd4 Ba7 10. O-O O-O 11. Be3 Bg4 12. Qb3 Qb6 13. Qc2 Nbd7 14. d5 c5 15. Rfe1 Ne5 16. h3 Bh5 17. Kf1 Nxc4 18. Na4 Qxb2 19. Nxb2 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game004.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. d4 d5 2. e4 dxe4 3. Nc3 Nf6 4. f3 exf3 5. Qxf3 e6 6. Bd3 Be7 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game005.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 c5 2. Nc3 d6 3. g3 Nc6 4. Bg2 g6 5. d3 Bg7 6. Bd2 Nf6 7. Nf3 O-O 8. O-O Bg4 9. Re1 Rc8 10. Bg5 Bxf3 11. Bxf3 Rc7 12. Ne4 Nxe4 13. dxe4 Bxb2 14. Rb1 Be5 15. Bg2 Nd4 16. f4 Bg7 17. f5 b6 18. e3 Nc6 19. Qd2 Ne5 20. Red1 Nxc4 21. Qd3 Ne5 22. Qd5 Qd7 23. Bh3 e6 24. fxe6 Qxe6 25. Bxe6 Nf3+ 26. Kg2 Nxg5 27. Qxd6 Nxe6 28. a4 Rcc8 29. Rd5 Rcd8 30. Qc6 Rc8 31. Qb7 Ra8 32. Rbd1 Rfb8 33. Qc6 Rc8 34. Qb5 Nc7 35. Rd8+ Rxd8 36. Rxd8+ Rxd8 37. Qc6 Ne6 38. Qb7 Rd2+ 39. Kf3 Ng5+ 40. Kf4 Nh3+ 41. Kg4 Nf2+ 42. Kf4 Nd3+ 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game006.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. d4 exd4 3. Qxd4 Nc6 4. Qc3 Bb4 5. Nf3 Bxc3+ 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game007.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 Nf6 2. Nc3 b6 3. g3 Bb7 4. Nf3 h5 5. Bg2 d6 6. O-O g6 7. d4 Bg7 8. d5 Nbd7 9. Rb1 e6 10. b4 exd5 11. cxd5 O-O 12. Bb2 Re8 13. a4 Nxd5 14. Nxd5 Bxb2 15. Rxb2 Bxd5 16. Qxd5 Qf6 17. Rc2 c5 18. bxc5 Nxc5 19. Rfc1 Ne6 20. e3 Nc5 21. Nd2 Nxa4 22. Ne4 Qd8 23. Qd4 Nc5 24. Nf6+ Kf8 25. Bxa8 Qxa8 26. Qxd6+ Kg7 27. Nxe8+ Qxe8 28. Rxc5 bxc5 29. Qxc5 Qe4 30. Qd4+ Qxd4 31. exd4 Kf6 32. Ra1 Ke6 33. Rxa7 Kd5 34. Rxf7 Kxd4 35. Rf6 Ke4 36. Rxg6 Kf3 37. Rh6 Kg4 38. h3+ Kg5 39. Rh8 Kg6 40. g4 hxg4 41. hxg4 Kg5 42. f3 Kf4 43. Rg8 Kxf3 44. g5 Kf4 45. g6 Kg5 46. Kg2 Kf6 47. Kg3 Kg5 48. Kf3 Kf5 49. Ke3 Ke5 50. Rf8 Ke6 51. g7 Ke7 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game008.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nf6 3. Bc4 Nc6 4. O-O Be7 5. d4 d5 6. dxe5 dxc4 7. Qxd8+ Bxd8 8. exf6 Bxf6 9. e5 Be7 10. Nc3 Bg4 11. Nd5 Bxf3 12. Nxc7+ Kd7 13. Nxa8 Bd5 14. Rd1 Ke6 15. Nc7+ Kxe5 16. Rxd5+ Ke4 17. f3# 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game009.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 e5 2. Nc3 Nf6 3. g3 d5 4. cxd5 Nxd5 5. Bg2 Be6 6. e3 Nc6 7. Nge2 Qd7 8. O-O O-O-O 9. Qa4 h5 10. d4 exd4 11. Nxd4 Nxd4 12. Qxa7 Nc6 13. Qa8+ Nb8 14. Nxd5 Bxd5 15. a4 Bxg2 16. Kxg2 h4 17. h3 hxg3 18. fxg3 Qxh3+ 19. Kf3 Qf5+ 20. Ke2 Rh2+ 21. Ke1 Bb4+ 22. Bd2 Bxd2+ 23. Kd1 Qxf1+ 24. Kc2 Ba5+ 25. Kb3 Qd3+ 26. Ka2 Qc4+ 27. Ka3 Bb4# 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game010.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 e5 2. Nc3 Nf6 3. g3 Bb4 4. Qb3 Nc6 5. d3 d6 6. Bd2 Be6 7. Bg2 Nd4 8. Qxb4 Nc2+ 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game011.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 c5 2. g3 d6 3. Bg2 e5 4. Nc3 Be7 5. d3 f6 6. Bd2 Qb6 7. Rb1 Nc6 8. Nd5 Qd8 9. Qa4 Bd7 10. Qb3 Nd4 11. Qxb7 Rb8 12. Nc7+ Kf8 13. Qxa7 Nc2+ 14. Kd1 Nb4 15. Bxb4 cxb4 16. Nd5 Bc6 17. e3 Rb7 18. Qa6 Qd7 19. Nb6 Qc7 20. Bxc6 Qxc6 21. Qa8+ Kf7 22. Nd5 Bf8 23. Ne2 Ne7 24. Kd2 Nxd5 25. cxd5 Qxd5 26. e4 Qe6 27. Qxb7+ Be7 28. Qxb4 d5 29. exd5 Qxd5 30. Qc4 Rd8 31. Qxd5+ Rxd5 32. Nc3 Bb4 33. a3 Bxc3+ 34. bxc3 e4 35. d4 f5 36. Rb7+ Kg6 37. a4 Ra5 38. Ra1 Ra6 39. a5 Kg5 40. Rb5 Kg4 41. Rb6 Ra7 42. a6 g5 43. Rb7 Rxa6 44. Rxa6 Kf3 45. Rxh7 f4 46. Rh5 Kxf2 47. Rxg5 e3+ 48. Kd1 e2+ 49. Kc2 e1=Q 50. Re5 Qh1 51. gxf4 Qxh2 52. Kb3 Qxf4 53. Raa5 Qd2 54. Ra2 Qxa2+ 55. Kxa2 Kf3 56. d5 Kf4 57. Re8 Kf5 58. d6 Kf6 59. d7 Kf7 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game012.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nxf7 Kxf7 5. Nc3 Be7 6. Bc4+ Be6 7. Bxe6+ Kxe6 8. d4 Kd7 9. e5 Ne8 10. Qg4+ Kc6 11. d5+ Kb6 12. Qb4+ Ka6 13. Qb5# 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game013.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. Nf3 Nf6 3. Bc4 d5 4. exd5 Nxd5 5. Nxe5 Qf6 6. Qe2 Nf4 7. Ng4+ Nxe2 8. Nxf6+ gxf6 9. Bxe2 Be6 10. Nc3 Bb4 11. a3 Bxc3 12. dxc3 Nc6 13. Be3 O-O-O 14. Bd3 Rd7 15. O-O-O Re7 16. Rhe1 Rhe8 17. Bd4 Nxd4 18. cxd4 h6 19. Be2 Bd5 20. Bg4+ Kd8 21. Rxe7 Rxe7 22. Kd2 Bxg2 23. Re1 Rxe1 24. Kxe1 Be4 25. c3 Ke7 26. Ke2 Kd6 27. Ke3 Bg6 28. Kf4 b6 29. Bf3 c5 30. Ke3 h5 31. h4 f5 32. Bg2 f6 33. f4 Bf7 34. Bh3 Be6 35. b4 cxb4 36. axb4 a5 37. Bf1 a4 38. c4 a3 39. d5 Bf7 40. c5+ bxc5 41. bxc5+ Kxd5 42. c6 Kxc6 43. Bd3 Kc5 44. Bxf5 a2 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game014.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e5 2. Nc3 Nf6 3. g3 Bb4 4. Bg2 Bxc3 5. bxc3 d5 6. cxd5 Nxd5 7. Rb1 Nc6 8. c4 Nf6 9. Qa4 Bd7 10. Qb3 O-O 11. Ba3 Nd4 12. Qc3 Bc6 13. Bxc6 bxc6 14. Bxf8 Qxf8 15. Nf3 Nxf3+ 16. Qxf3 Qa3 17. Qxa3 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game015.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. d4 d5 2. c4 dxc4 3. Nf3 b5 4. e3 e6 5. a4 c6 6. axb5 cxb5 7. Nc3 Bd7 8. Be2 Bc6 9. O-O Nd7 10. Re1 Ngf6 11. Qc2 Bb4 12. Rd1 O-O 13. Ne5 Nxe5 14. dxe5 Qxd1+ 15. Qxd1 Bxc3 16. exf6 Bxf6 17. Rb1 Rfd8 18. Qc2 Be7 19. Bd2 f5 20. Bf3 Bxf3 21. gxf3 Rd6 22. Kf1 Rad8 23. Bc3 Rd5 24. Ke2 b4 25. Bd4 e5 26. Bxa7 Rc8 27. Rd1 b3 28. Qc3 Rb5 29. e4 Bb4 30. Qc1 fxe4 31. fxe4 Ra8 32. Be3 Bc5 33. Qxc4+ Kf8 34. Bxc5+ Rxc5 35. Qxc5+ Kf7 36. Rd7+ Kf6 37. Qc6+ 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game016.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. Nf3 Nf6 3. Bc4 d5 4. exd5 Nxd5 5. O-O e4 6. Ne5 Bd7 7. Nxd7 Qxd7 8. d3 b5 9. dxe4 bxc4 10. Qxd5 Qxd5 11. exd5 Bd6 12. Re1+ Kd7 13. Nd2 c6 14. Nxc4 cxd5 15. Nxd6 Kxd6 16. Bf4+ Kc6 17. Re7 Rf8 18. Rc7+ Kb6 19. Re1 Nc6 20. Rd7 h6 21. c3 g5 22. Be3+ Ka6 23. Rxd5 Rad8 24. Red1 Rxd5 25. Rxd5 f5 26. Rd6 Kb7 27. Rxh6 f4 28. Bc1 Rd8 29. Rh7+ Kb6 30. Rg7 Rd1# 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game017.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. Qe2 Qe7 6. d3 Nf6 7. Bg5 Qxe2+ 8. Bxe2 Be7 9. Nc3 h6 10. Bh4 Be6 11. O-O-O Nbd7 12. Nd4 g5 13. Nxe6 fxe6 14. Bg3 h5 15. h3 h4 16. Bh2 O-O-O 17. g3 Bf8 18. Bg1 Bh6 19. Kb1 hxg3 20. fxg3 Ne5 21. g4 Bg7 22. d4 Nc6 23. Bf3 Nb4 24. a3 Nbd5 25. Bxd5 Nxd5 26. Nb5 Kb8 27. c4 Nf4 28. d5 b6 29. Nd4 Bxd4 30. Bxd4 e5 31. Bc3 Rxh3 32. Rxh3 Nxh3 33. Rh1 Nf2 34. Rh5 Nxg4 35. Rxg5 Ne3 36. b3 Rf8 37. Bd2 Rf1+ 38. Kb2 Rf2 39. Kc3 Nd1+ 40. Kd3 Nb2+ 41. Kc3 Nd1+ 42. Kd3 e4+ 43. Kc2 Ne3+ 44. Kc3 Nf5 45. Rg8+ Kb7 46. Bg5 e3 47. Re8 e2 48. Bd2 Rf3+ 49. Kb4 Ng3 50. Be1 a5+ 51. Kb5 Rxb3+ 52. Ka4 Rb1 53. Bxg3 c6 54. dxc6+ Kxc6 55. Rxe2 Rc1 56. Re4 d5 57. cxd5+ Kxd5 58. Re5+ Kc4 59. Re6 b5+ 60. Kxa5 Ra1 61. Bd6 Ra2 62. Bb4 Kb3 63. Re3+ Kc2 64. Rc3+ Kd2 65. Kxb5 Rb2 66. Rc4+ Kd3 67. Rc3+ Kd2 68. Rb3+ Kc2 69. Rxb2+ Kxb2 70. a4 Kb3 71. a5 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game018.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. d4 d5 2. Nc3 Nf6 3. Nf3 g6 4. g3 Bg7 5. Bg2 e6 6. O-O O-O 7. Bg5 c6 8. Qc1 Nbd7 9. Ne5 Qc7 10. Nxd7 Nxd7 11. e3 c5 12. dxc5 Nxc5 13. Qd2 Rd8 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game019.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. d4 d5 2. c4 Nf6 3. Nc3 e6 4. Bg5 Be7 5. e3 h6 6. Bh4 Nc6 7. Nf3 b6 8. cxd5 Nxd5 9. Bxe7 Qxe7 10. Bb5 Bb7 11. Qa4 Qd6 12. Nxd5 exd5 13. Ne5 a6 14. Bxc6+ Bxc6 15. Qxc6+ Qxc6 16. Nxc6 O-O 17. Ne7+ Kh7 18. Nxd5 Rac8 19. O-O c5 20. Nxb6 Rc6 21. Nd7 Rfc8 22. Nxc5 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game020.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. d4 d5 2. e3 e6 3. Nc3 Nf6 4. f3 Bb4 5. Bd2 O-O 6. Qe2 b6 7. O-O-O Ba6 8. Qe1 c5 9. Bxa6 Nxa6 10. dxc5 Nxc5 11. Nb5 Bxd2+ 12. Qxd2 Qd7 13. Nd4 e5 14. Nde2 Rfd8 15. Ng3 Qb5 16. Qc3 Na4 17. Qb3 Qc4 18. Nf5 Kf8 19. Qxc4 dxc4 20. Nh3 Nd5 21. e4 Ne3 22. Nxe3 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game021.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 Nf6 2. Nc3 g6 3. d3 Bg7 4. Bd2 O-O 5. g3 d6 6. Bg2 Be6 7. Bxb7 c6 8. Bxa8 Qc7 9. Qb3 Na6 10. Bb7 Rb8 11. Qa3 Nc5 12. Ba6 Nxa6 13. Qxa6 Rxb2 14. Be3 Rb6 15. Bxb6 axb6 16. Nf3 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game022.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 f5 2. Nc3 Nf6 3. d4 d6 4. Bg5 e6 5. e3 Be7 6. g3 O-O 7. Bg2 c6 8. Nge2 e5 9. O-O a5 10. d5 c5 11. Nb5 Na6 12. Bxf6 Bxf6 13. Qc2 Nb4 14. Qd2 e4 15. a3 Nd3 16. Rab1 b6 17. Nc1 Ne5 18. Ne2 Ba6 19. Nec3 Nxc4 20. f3 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game023.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. f4 exf4 3. Bc4 g5 4. h4 gxh4 5. Nf3 Be7 6. d4 d6 7. Bxf4 Bg4 8. Nc3 Nc6 9. Qd2 Qd7 10. O-O-O O-O-O 11. Rde1 Bxf3 12. gxf3 h5 13. Bxf7 Bf6 14. d5 Qxf7 15. dxc6 Bxc3 16. Qxc3 Qxf4+ 17. Kb1 Ne7 18. cxb7+ Kxb7 19. Qb3+ Kc8 20. Qa4 Qxf3 21. Qxa7 Kd7 22. Rhf1 Qg4 23. Qa4+ Nc6 24. e5 Qxa4 25. exd6 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game024.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 e5 2. d3 Nf6 3. Nc3 c6 4. Bd2 d5 5. e3 dxc4 6. dxc4 Bc5 7. Be2 O-O 8. Nf3 e4 9. Nd4 Bxd4 10. exd4 Qxd4 11. O-O Bg4 12. Re1 Bxe2 13. Qxe2 Qd3 14. Nxe4 Qxe2 15. Rxe2 Nxe4 16. Rxe4 Nd7 17. Rae1 Nc5 18. Bb4 Nxe4 19. Bxf8 Kxf8 20. Rxe4 h6 21. f4 f5 22. Re5 g6 23. h3 Kf7 24. g4 Kf6 25. Re2 fxg4 26. hxg4 g5 27. fxg5+ Kxg5 28. Re4 a5 29. Kf2 a4 30. Kg3 a3 31. b3 b5 32. cxb5 cxb5 33. Re5+ Kf6 34. Rxb5 Rc8 35. Rb6+ Kg5 36. Rb5+ Kf6 37. Kh4 Rc2 38. Rb6+ Kg7 39. Rb7+ Kf6 40. Rb6+ Ke5 41. Rxh6 Rxa2 42. Rh5+ Kf4 43. Ra5 Rh2# 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game025.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 d5 2. cxd5 Qxd5 3. Nc3 Qc6 4. Nf3 Bg4 5. d4 Nd7 6. d5 Qb6 7. e4 O-O-O 8. Be3 Qa5 9. Rc1 Ngf6 10. Be2 Nxe4 11. O-O Nxc3 12. Rxc3 Nf6 13. Bd2 Qxa2 14. h3 Bf5 15. Nd4 Bg6 16. Nb5 Rd7 17. Bg5 Nxd5 18. Rc2 e6 19. Rd2 Be7 20. Bxe7 Rxe7 21. Qa1 Qxa1 22. Rxa1 a6 23. Nc3 Rd8 24. Nxd5 Rxd5 25. Rxd5 exd5 26. Bf3 c6 27. Kf1 Bd3+ 28. Kg1 Be4 29. Bxe4 Rxe4 30. Kf1 Rc4 31. Re1 Rc2 32. Re8+ Kc7 33. Re7+ Kd6 34. Rxf7 b5 35. Rxg7 Rxb2 36. Rxh7 a5 37. Rh6+ Kc5 38. f4 Rb4 39. f5 Rf4+ 40. Ke2 Rxf5 41. g4 Re5+ 42. Kf3 a4 43. Kf4 Re4+ 44. Kf5 a3 45. g5 a2 46. g6 a1=Q 47. Rh7 Qf1+ 48. Kg5 Qg1+ 49. Kh6 Rh4+ 50. Kg7 Re4 51. Kf7 b4 52. g7 b3 53. g8=Q Qxg8+ 54. Kxg8 b2 55. Rb7 Rb4 56. Rxb4 Kxb4 57. h4 b1=Q 58. h5 Qf5 59. h6 Qg6+ 60. Kh8 Qxh6+ 61. Kg8 d4 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game026.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e5 2. Nc3 Nf6 3. d3 c6 4. Bd2 d5 5. cxd5 cxd5 6. e3 a6 7. g3 Be6 8. Bg2 Nc6 9. Nge2 Qd7 10. d4 e4 11. Nf4 Bg4 12. Qb3 Bf3 13. Bxf3 exf3 14. Ncxd5 Nxd5 15. Qxd5 Qxd5 16. Nxd5 Bd6 17. e4 g5 18. e5 Bf8 19. Nc7+ Kd7 20. Nxa8 g4 21. Nb6+ Kc7 22. Nc4 Nxd4 23. Rc1 Ne2 24. Rc2 b5 25. Nd6+ Kd7 26. Nxf7 Nd4 27. Nxh8 Nxc2+ 28. Kd1 Nd4 29. Bc3 Ne2 30. Nf7 b4 31. Bd2 Ke6 32. Nh6 Kxe5 33. Nxg4+ Ke4 34. Nf6+ Kd3 35. Nd7 Bd6 36. Nf6 a5 37. h4 Be5 38. Nd7 Bxb2 39. Ne5+ Kd4 40. Nxf3+ Kd3 41. Ng1 Nc3+ 42. Bxc3 bxc3 43. Ne2 c2+ 44. Ke1 Bc3+ 45. Kf1 Kd2 46. Kg2 Bb2 47. Nf4 c1=Q 48. Rxc1 Bxc1 49. g4 Kc3 50. Ne6 Kb2 51. g5 Kxa2 52. f4 a4 53. f5 Bb2 54. f6 a3 55. f7 Kb1 56. f8=Q a2 57. Qa8 a1=R 58. Qxa1+ Bxa1 59. Nf8 h6 60. gxh6 Bh8 61. Ng6 Bf6 62. h7 Kc2 63. h8=Q Bxh8 64. Nxh8 Kd3 65. Ng6 Ke4 66. Kg3 Kf5 67. h5 Kg5 68. Nf4 Kh6 69. Kh4 Kg7 70. Kg5 Kh7 71. Ng6 Kg7 72. h6+ Kh7 73. Nf8+ Kg8 74. Kg6 Kh8 75. Ne6 Kg8 76. Ng5 Kh8 77. Kh5 Kg8 78. Kg6 Kh8 79. Nf7+ Kg8 80. h7+ Kf8 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game027.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1/2-1/2"]
+
+1. e4 e5 2. Nf3 Nf6 3. Bc4 Nxe4 4. d3 d5 5. Bxd5 Qxd5 6. dxe4 Qxd1+ 7. Kxd1 Nc6 8. Nc3 Bg4 9. h3 Bxf3+ 10. gxf3 O-O-O+ 11. Ke2 Nd4+ 12. Kf1 Nxc2 13. Rb1 Nd4 14. f4 exf4 15. Bxf4 Bd6 16. Be3 Be5 17. Bxd4 Bxd4 18. Ke2 Bxc3 19. bxc3 Rhe8 20. f3 f5 21. Ke3 g5 22. Rhg1 h6 23. Rb5 f4+ 24. Ke2 Rd7 25. Rgb1 b6 26. a4 Red8 27. R1b2 Kb7 28. a5 a6 29. Rf5 Ka7 30. axb6+ cxb6 31. Rf6 Rd6 32. Rf7+ R8d7 33. Rf5 Rc6 34. Rb3 Rdc7 35. Kd3 b5 36. Rf8 a5 37. Rxb5 Rxc3+ 38. Kd4 R3c4+ 39. Kd5 Ra4 40. Rf6 Rb7 41. Rxb7+ Kxb7 42. Rxh6 Rb4 43. Kc5 Rb3 44. Rh7+ Kb8 45. Rh8+ Kb7 46. Rh7+ Kb8 47. Rh8+ Kb7 48. Rh7+ 1/2-1/2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game028.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. Qe2 Qe7 6. Nc3 Nxc3 7. Qxe7+ Bxe7 8. dxc3 O-O 9. Bg5 Re8 10. O-O-O Bg4 11. h3 Bxf3 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game029.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 d6 2. Nc3 e5 3. g3 Nf6 4. Bg2 Be7 5. d3 O-O 6. Bd2 c6 7. e3 Nbd7 8. Nge2 a6 9. Qc2 b5 10. a3 Bb7 11. O-O Rb8 12. f4 bxc4 13. dxc4 exf4 14. exf4 c5 15. Rad1 Bxg2 16. Kxg2 Nb6 17. f5 Nxc4 18. Nd5 Nxd2 19. Nxf6+ Bxf6 20. Rxd2 Rxb2 21. Qd3 Rxd2 22. Qxd2 Qa8+ 23. Kg1 Re8 24. Nf4 Bd4+ 25. Rf2 Bxf2+ 26. Kxf2 Qh1 27. Ng2 Qxh2 28. Qxd6 Qh5 29. Qd3 Qg5 30. Qc3 Qe7 31. Ne3 h6 32. Nd5 Qe2+ 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game030.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. d4 d5 2. Nf3 g6 3. e3 Bg7 4. b3 Nf6 5. Bb2 O-O 6. Nbd2 c6 7. Bd3 Nbd7 8. O-O Re8 9. e4 e5 10. dxe5 Nxe4 11. Nxe4 dxe4 12. Bxe4 Nc5 13. Qxd8 Rxd8 14. Bd3 Bg4 15. Be2 Bf5 16. c4 Ne4 17. Rad1 a5 18. a4 Nc5 19. Rxd8+ Rxd8 20. Rd1 Rxd1+ 21. Bxd1 Nxb3 22. Bxb3 b5 23. cxb5 cxb5 24. axb5 Bf8 25. Nd2 Bc5 26. Nc4 Be6 27. Nxa5 Bxb3 28. Nxb3 Kg7 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game031.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. Nc3 Nxc3 6. dxc3 Be6 7. Bd3 Be7 8. O-O Nc6 9. Re1 Qd7 10. a4 O-O 11. Nd4 Bf6 12. Nxe6 fxe6 13. Qh5 g6 14. Qh3 Qf7 15. Qxe6 Kg7 16. Bd2 Qg8 17. Qh3 Ne5 18. Bh6+ Kf7 19. Bxf8 Rxf8 20. f4 Nxd3 21. Qe6+ Kg7 22. cxd3 Qxe6 23. Rxe6 Kf7 24. Rae1 Bh4 25. R1e2 Bf6 26. d4 a6 27. g4 h6 28. h3 b5 29. axb5 axb5 30. f5 gxf5 31. gxf5 h5 32. Kg2 Rg8+ 33. Kf3 h4 34. Rg2 Rxg2 35. Kxg2 Bg5 36. Re2 Kf6 37. Rf2 Bc1 38. Kf3 c5 39. Kg4 Be3 40. Re2 cxd4 41. cxd4 Bxd4 42. Re6+ Kf7 43. Rxd6 Bf2 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game032.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nf6 3. Nc3 Bb4 4. Qe2 Bxc3 5. dxc3 d6 6. Bg5 Nbd7 7. Bxf6 Nxf6 8. O-O-O O-O 9. Nxe5 Qe7 10. Nc4 Be6 11. Nd2 Bxa2 12. b3 d5 13. exd5 Qxe2 14. Bxe2 Nxd5 15. Kb2 c5 16. Kxa2 Nxc3+ 17. Kb2 Nxd1+ 18. Rxd1 Rae8 19. Bf3 b5 20. Ne4 c4 21. bxc4 bxc4 22. Kc3 f5 23. Nd2 Rc8 24. Bd5+ Kh8 25. Bxc4 g5 26. Kb2 Kg7 27. Bd3 f4 28. Re1 Rc7 29. Re5 Rb8+ 30. Kc1 h6 31. Ne4 Rb4 32. Kd2 a5 33. Nd6 a4 34. Ne8+ Kf7 35. Nxc7 a3 36. Ra5 g4 37. Rxa3 f3 38. g3 Rb1 39. Bf5 Rf1 40. Bxg4 Rxf2+ 41. Kd3 Rxh2 42. Bxf3 Rh3 43. Ke2 Rxg3 44. Bd5+ 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game033.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e5 2. Nc3 Nf6 3. g3 Bb4 4. Bg2 c6 5. Qb3 a5 6. a3 Be7 7. d3 O-O 8. e3 Na6 9. d4 exd4 10. exd4 Nc7 11. Nge2 d5 12. cxd5 cxd5 13. O-O Re8 14. Bf4 Ne6 15. Nxd5 Nxf4 16. Nexf4 Nxd5 17. Nxd5 Be6 18. Qxb7 Rb8 19. Qc6 Rxb2 20. Nc7 Rf8 21. Nxe6 fxe6 22. Qxe6+ Kh8 23. Rfe1 Qxd4 24. Rf1 Re2 25. Qxe2 Bc5 26. Rad1 Qa4 27. Qe5 Bb6 28. Qe7 Bxf2+ 29. Rxf2 Qxd1+ 30. Bf1 Rg8 31. Rf8 Qd4+ 32. Kg2 Qd2+ 33. Kg1 Qd4+ 34. Kh1 Qd5+ 35. Bg2 Qd1+ 36. Rf1 Qd6 37. Qxd6 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game034.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 g6 2. d3 Bg7 3. g3 c6 4. Bg2 d5 5. cxd5 cxd5 6. e3 e5 7. Ne2 Bg4 8. Qa4+ Nc6 9. Nbc3 Nf6 10. Nxd5 Nxd5 11. Qxg4 O-O 12. Qc4 Nb6 13. Qc2 Nb4 14. Qb3 Nxd3+ 15. Kf1 Qf6 16. f4 Nc5 17. Qb5 Rfc8 18. Bd2 exf4 19. Bc3 fxe3+ 20. Bxf6 Bxf6 21. b4 Bxa1 22. bxc5 Rd8 23. Bf3 Rd1+ 24. Kg2 Rxh1 25. Kxh1 Rd8 26. cxb6 Rd1+ 27. Kg2 Re1 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game035.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e5 2. Nc3 d6 3. g3 Nf6 4. Bg2 Bd7 5. d3 Bc6 6. e4 Qd7 7. Nge2 Na6 8. O-O O-O-O 9. a3 Nc5 10. b4 Ne6 11. b5 Bxe4 12. dxe4 Nc5 13. Nd5 Ncxe4 14. Nxf6 Nxf6 15. a4 h5 16. a5 h4 17. a6 b6 18. Nc3 hxg3 19. fxg3 Rh6 20. Qf3 d5 21. Nxd5 Nxd5 22. Bxh6 gxh6 23. Rad1 Bc5+ 24. Kh1 e4 25. Qxe4 Re8 26. Qxd5 Qxd5 27. Rxd5 Re2 28. Rdf5 Rc2 29. Rxf7 Rxc4 30. Rd1 Bd6 31. Rh7 Rb4 32. Bc6 Kd8 33. Re1 Rd4 34. Re8# 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game036.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e5 2. d3 Nc6 3. Bd2 d5 4. cxd5 Qxd5 5. Nc3 Qe6 6. g3 Nf6 7. Bg2 Bc5 8. e3 O-O 9. Nge2 Nb4 10. d4 exd4 11. Nb5 Nd3+ 12. Kf1 Bb6 13. Nexd4 Qe5 14. Bc3 Bf5 15. Nxf5 Qxf5 16. Qd2 Ng4 17. f3 Nxe3+ 18. Ke2 Nxg2 19. Qxd3 Qxd3+ 20. Kxd3 Rad8+ 21. Ke2 Ne3 22. Rac1 Nf5 23. Kf1 Rfe8 24. Kg2 Re2+ 25. Kh3 Re3 26. Rhd1 Rxd1 27. Rxd1 g6 28. Rd8+ 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game037.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 g4 5. Ne5 Qh4+ 6. Kf1 Nh6 7. d4 d6 8. Nd3 g3 9. Kg1 Ng4 10. hxg3 Qxg3 11. Bxf4 Ne3 12. Bxg3 Nxd1 13. Bf4 Nxb2 14. Nxb2 Rg8 15. Nd2 Bg4 16. c3 Nc6 17. Nd3 Be2 18. Rxh7 Nd8 19. Nf2 Bxc4 20. Nxc4 b5 21. Ne3 Ne6 22. Bh2 c5 23. Nd5 Ng5 24. Nf6+ Kd8 25. Rh5 Rg6 26. e5 dxe5 27. dxe5 Nf3+ 28. Kh1 Ng5 29. N2e4 Nxe4 30. Nxe4 Kc7 31. Rd1 Be7 32. e6+ 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game038.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e5 2. Nc3 f5 3. d3 Nf6 4. Bg5 Bb4 5. Qb3 Nc6 6. g3 O-O 7. Bg2 Kh8 8. Bxc6 bxc6 9. Qxb4 Rb8 10. Bxf6 Rxb4 11. Bxd8 Rxd8 12. Nf3 Rxb2 13. Nxe5 Re8 14. f4 Rc2 15. Na4 d6 16. Kd1 Rxe5 17. fxe5 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game039.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 Nf6 2. Nc3 d5 3. cxd5 Nxd5 4. Nxd5 Qxd5 5. Nf3 Bf5 6. g3 e6 7. d3 Nc6 8. e4 Bxe4 9. dxe4 Qxe4+ 10. Be2 Rd8 11. Qb3 Nd4 12. Qa4+ c6 13. Qxa7 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game040.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. f4 Nc6 2. Nf3 d6 3. g3 b6 4. Bg2 Bb7 5. O-O Nf6 6. c3 e5 7. fxe5 dxe5 8. e3 e4 9. Ng5 Be7 10. Nxe4 Nxe4 11. Bxe4 O-O 12. Qh5 g6 13. Qd1 Re8 14. Bg2 Rb8 15. d4 Na5 16. b4 Bxg2 17. Kxg2 Nb7 18. Qb3 Nd6 19. e4 Rf8 20. e5 Ne4 21. Nd2 Nxd2 22. Bxd2 Bg5 23. Bxg5 Qxg5 24. Rf2 c5 25. dxc5 bxc5 26. Raf1 Rb7 27. Qd5 Rc7 28. bxc5 Qe3 29. Qd6 Qxc5 30. Qxc5 Rxc5 31. e6 Rxc3 32. exf7+ Kg7 33. Rb2 Rc7 34. a4 Rcxf7 35. Rxf7+ Rxf7 36. Rb5 Rc7 37. a5 a6 38. Rb6 Ra7 39. Kf3 Kf7 40. Kf4 Ke7 41. Kg5 Kd7 42. Kh6 Kc8 43. h4 Kc7 44. Kxh7 Rb7 45. Rxb7+ Kxb7 46. Kxg6 Kc6 47. h5 Kb5 48. h6 Kxa5 49. h7 Kb4 50. h8=Q a5 51. Qa8 a4 52. Kf6 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game041.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Bc4 Nf6 3. Nf3 d5 4. exd5 Nxd5 5. Nxe5 Nc6 6. Nxc6 bxc6 7. Qf3 Be6 8. Nc3 Bd6 9. Nxd5 cxd5 10. Bxd5 O-O 11. Bxa8 Re8 12. O-O Qd7 13. Bc6 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game042.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Bc4 Nf6 3. Nf3 d5 4. exd5 Nxd5 5. Nxe5 Qe7 6. O-O Be6 7. Re1 Qc5 8. d4 Qxc4 9. Nxc4 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game043.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 d5 2. cxd5 Qxd5 3. Nc3 Qd8 4. g3 Bf5 5. Bg2 c6 6. e4 Bg6 7. Nge2 f5 8. d3 fxe4 9. Bxe4 Bxe4 10. dxe4 Nf6 11. Qxd8+ Kxd8 12. O-O e5 13. Rd1+ Nbd7 14. Bg5 Be7 15. f4 exf4 16. Nxf4 h6 17. Bxf6 Bxf6 18. Ne6+ Ke7 19. Nf4 Rad8 20. Rd3 Ne5 21. Rxd8 Rxd8 22. Rd1 Rxd1+ 23. Nxd1 g5 24. Ne2 Nf3+ 25. Kf2 Nd2 26. Ndc3 Bxc3 27. Nxc3 b5 28. Ke3 Nc4+ 29. Kd4 Nxb2 30. h4 gxh4 31. gxh4 a5 32. e5 Ke6 33. Ne4 Nc4 34. Nc5+ Kf5 35. Nd7 a4 36. Kc5 Nxe5 37. Nxe5 Kxe5 38. Kxc6 Kf5 39. Kxb5 Kg4 40. Kxa4 Kxh4 41. Kb5 Kg5 42. a4 h5 43. a5 h4 44. a6 h3 45. a7 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game044.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ng5 d6 6. Bc4 Nh6 7. d4 f6 8. Ne6 Bxe6 9. Bxe6 Qe7 10. d5 c6 11. Nc3 Nd7 12. Bxf4 Nc5 13. Bxh6 Bxh6 14. Qxg4 cxd5 15. exd5 Nxe6 16. dxe6 O-O-O 17. O-O Be3+ 18. Kh1 Rhg8 19. Qc4+ Kb8 20. Nd5 Qg7 21. Qe4 Bc5 22. Nxf6 Qh6 23. Nxg8 Rxg8 24. e7 Re8 25. Rae1 d5 26. Qf4+ Qxf4 27. Rxf4 Bxe7 28. Rf7 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game045.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. d3 Nf6 3. Be2 Be7 4. Nf3 O-O 5. Nxe5 d6 6. Ng4 Nbd7 7. Nxf6+ Nxf6 8. Nc3 Bd7 9. Nd5 Nxd5 10. exd5 Re8 11. O-O Bf6 12. Bg4 Bb5 13. c4 Ba6 14. Rb1 b6 15. b4 Bb7 16. a4 c6 17. dxc6 Bxc6 18. Bf3 Rc8 19. b5 Ba8 20. Bf4 d5 21. cxd5 Bxd5 22. Bxd5 Qxd5 23. Qb3 Qd4 24. Be3 Qh4 25. Qd5 Qxa4 26. Rbc1 Rcd8 27. Qc6 Bb2 28. Rc4 Qa3 29. Bg5 f6 30. Bxf6 Bxf6 31. Rd4 Qc5 32. Rxd8 Qxc6 33. bxc6 Rxd8 34. Rc1 Rc8 35. Rc2 Kf7 36. Kf1 Ke7 37. Ke2 Kd6 38. Ke3 Rxc6 39. Rxc6+ Kxc6 40. Ke4 a5 41. Ke3 a4 42. Kd2 Kc5 43. Kc2 b5 44. f4 b4 45. g4 a3 46. Kb1 Kd4 47. g5 Be7 48. h4 Kxd3 49. f5 b3 50. f6 gxf6 51. g6 hxg6 52. h5 gxh5 53. Kc1 Kc3 54. Kb1 h4 55. Ka1 h3 56. Kb1 h2 57. Kc1 h1=Q# 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game046.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. d4 d5 2. Nf3 Nf6 3. e3 g6 4. c4 dxc4 5. Bxc4 Bg7 6. O-O O-O 7. Nc3 a6 8. a3 b5 9. Be2 Bd7 10. b4 Be8 11. Bb2 Nbd7 12. a4 Nd5 13. Nxd5 Nb8 14. Nc3 c5 15. bxc5 e6 16. axb5 Bxb5 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game047.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 c6 2. Nc3 d5 3. cxd5 cxd5 4. d4 Nf6 5. g3 Bf5 6. Bg2 a6 7. e3 Nbd7 8. Nge2 Rc8 9. O-O b5 10. a3 e6 11. b4 Be7 12. Bb2 O-O 13. e4 dxe4 14. Re1 Qc7 15. Nf4 Qb7 16. a4 bxa4 17. Rxa4 Nb6 18. Ra1 Nc4 19. Ba3 Nxa3 20. Rxa3 Bxb4 21. Rb3 Rxc3 22. Qb1 Rxb3 23. Qxb3 a5 24. d5 Nxd5 25. Nxd5 exd5 26. Rd1 Be6 27. Qb1 Rc8 28. f3 Qb6+ 29. Kh1 e3 30. Bf1 g6 31. Rd3 Bf5 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game048.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. d4 d5 2. Nf3 Nf6 3. e3 g6 4. c4 Bg7 5. cxd5 Nxd5 6. Nc3 Nxc3 7. bxc3 O-O 8. Bd3 c6 9. O-O Nd7 10. Bd2 Nb6 11. e4 e5 12. Qc1 exd4 13. Nxd4 c5 14. Nf3 Qxd3 15. Bh6 Qxe4 16. Bxg7 Kxg7 17. Ng5 Qf5 18. h4 f6 19. Nf3 Nd7 20. Qe3 Ne5 21. Qxc5 Nxf3+ 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game049.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 e5 2. Nc3 Nf6 3. g3 c6 4. d3 Bb4 5. Bd2 O-O 6. a3 Ba5 7. b4 Bc7 8. Bg2 d5 9. cxd5 cxd5 10. e3 Bf5 11. Qb3 d4 12. Nb5 Bb6 13. Bxb7 a6 14. Bxa8 axb5 15. Be4 Nxe4 16. dxe4 Bxe4 17. f3 Bd5 18. Qd1 dxe3 19. Bc3 Re8 20. Nh3 Nc6 21. Bb2 Nd4 22. Bc1 Nb3 23. Rb1 Nxc1 24. Rxc1 e4 25. Nf4 Bb7 26. Qxd8 Rxd8 27. Rd1 Rxd1+ 28. Kxd1 exf3 29. Kc2 e2 30. Nxe2 fxe2 31. Re1 Bf3 32. Kd3 g5 33. h3 f5 34. Kc2 Kf7 35. Kb3 Bf2 36. Rb1 e1=Q 37. Rxe1 Bxe1 38. a4 Bd1+ 39. Ka3 bxa4 40. b5 Bxg3 41. b6 Ke7 42. b7 Kd7 43. Kb2 Kc7 44. Kc1 Bb3 45. Kb2 Kxb7 46. Ka1 f4 47. h4 Bxh4 48. Kb1 f3 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game050.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1/2-1/2"]
+
+1. d4 Nf6 2. c4 d5 3. Nc3 e6 4. e3 Bb4 5. Nf3 Bxc3+ 6. bxc3 O-O 7. cxd5 exd5 8. Bd3 c6 9. O-O Bg4 10. Ba3 Re8 11. Be2 Bxf3 12. Bxf3 Nbd7 13. Qb3 b6 14. c4 dxc4 15. Qxc4 Rc8 16. Qa4 c5 17. dxc5 Nxc5 18. Bxc5 bxc5 19. Qxa7 Ne4 20. Rfc1 c4 21. Qa4 Nd2 22. Bg4 Rc7 23. Rc3 Qb8 24. Rac1 Kf8 25. Rxc4 Rxc4 26. Rxc4 Qb1+ 27. Qd1 Qxd1+ 28. Bxd1 Nxc4 29. Bb3 Nb2 30. g3 Rc8 31. e4 Nc4 32. f4 Na5 33. Bd5 Ke7 34. f5 g6 35. g4 gxf5 36. gxf5 f6 37. Kf2 h6 38. Kg3 Rc2 39. h4 Rc3+ 40. Kg4 Nc4 41. Kh5 Ne5 42. Kxh6 Nf7+ 43. Kg7 Nd6 44. h5 Re3 45. h6 Nxe4 46. Bxe4 Rxe4 47. h7 Rg4+ 48. Kh6 Rh4+ 49. Kg7 Rg4+ 50. Kh6 Rh4+ 51. Kg7 Rg4+ 1/2-1/2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game051.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 d6 2. Nc3 e5 3. g3 c6 4. Bg2 Bd7 5. d3 Be7 6. e3 Nf6 7. Nge2 O-O 8. O-O b5 9. cxb5 cxb5 10. Bxa8 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game052.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. d4 d5 2. Nf3 g6 3. e3 Bg7 4. Bd3 Nf6 5. Nbd2 O-O 6. b3 Re8 7. Bb2 c6 8. O-O Nbd7 9. Ne5 Nxe5 10. dxe5 Nd7 11. f4 Nb6 12. Rf3 Bg4 13. Qe1 Bxf3 14. Nxf3 f6 15. exf6 Bxf6 16. Bxf6 exf6 17. Qg3 Rxe3 18. Bxg6 Qd7 19. Bf5+ Qg7 20. Be6+ Rxe6 21. Qf2 Rae8 22. c4 dxc4 23. bxc4 Nxc4 24. Qxa7 Ne3 25. Nd4 Qxg2# 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game053.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 c5 2. Nc3 e6 3. g3 d5 4. cxd5 exd5 5. Bg2 Be6 6. d3 g6 7. Nf3 Bg7 8. Bg5 f6 9. Be3 Ne7 10. d4 c4 11. Nd2 Nbc6 12. b3 Qa5 13. Qc2 Nb4 14. Qb2 Rb8 15. O-O O-O 16. bxc4 dxc4 17. d5 Bxd5 18. Nxd5 Nexd5 19. Nxc4 f5 20. Qxg7+ Kxg7 21. Nxa5 Nxe3 22. fxe3 Nc2 23. Rab1 Nxe3 24. Rfe1 b5 25. a4 b4 26. Nc6 Rb6 27. Rxb4 Rxc6 28. Bxc6 Nc2 29. Rb7+ Kf6 30. Rd1 Rc8 31. Rd6+ Ke5 32. Bd7 Kxd6 33. Bxc8 Nd4 34. Rd7+ Kc5 35. Rxa7 h6 36. Rg7 Nxe2+ 37. Kg2 Nc3 38. a5 Na4 39. a6 Nb6 40. Rxg6 h5 41. a7 h4 42. gxh4 f4 43. Rg5+ Kc6 44. Rg6+ Kc7 45. Rxb6 Kxb6 46. a8=Q Kc5 47. Qf3 Kb5 48. Qxf4 Kc5 49. Qe5+ Kc6 50. h5 Kb6 51. h6 Ka7 52. h7 Kb6 53. h8=R Ka7 54. Rh7+ Kb6 55. Bh3 Kc6 56. Rh6+ Kb7 57. Qg7+ Kb8 58. Rh8# 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game054.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 Nf6 2. Nc3 e6 3. g3 d5 4. cxd5 exd5 5. d4 Bb4 6. Bd2 c6 7. Bg2 Bf5 8. e3 Nbd7 9. Nge2 Bg4 10. Qb3 Bxe2 11. Qxb4 Bc4 12. Qxb7 Qc8 13. Qxc8+ Rxc8 14. b3 Ba6 15. Na4 O-O 16. Nc5 Nxc5 17. dxc5 Ne4 18. Bxe4 dxe4 19. b4 Rfd8 20. a4 Bc4 21. Rc1 Bd3 22. Bc3 Rb8 23. h4 f5 24. h5 h6 25. Rh4 Rd5 26. g4 f4 27. exf4 Re8 28. g5 e3 29. fxe3 Rxe3+ 30. Kd2 Rg3 31. gxh6 Bf5+ 32. Ke1 gxh6 33. Kf2 Rdd3 34. Rg1 Rxg1 35. Kxg1 Rxc3 36. Rh2 Rc1+ 37. Kf2 Rc2+ 38. Kg3 Rxh2 39. Kxh2 Kf7 40. Kg3 Ke6 41. Kf3 Kd5 42. Ke3 Kc4 43. a5 Kxb4 44. Kd4 Kxa5 45. Ke5 Bh3 46. f5 Bxf5 47. Kxf5 Kb5 48. Kg6 a5 49. Kxh6 a4 50. Kg7 a3 51. h6 a2 52. h7 a1=Q+ 53. Kg8 Qg1+ 54. Kh8 Qf2 55. Kg8 Qg3+ 56. Kh8 Qf4 57. Kg7 Qg5+ 58. Kh8 Qf6+ 59. Kg8 Kxc5 60. h8=Q Qxh8+ 61. Kxh8 Kd4 62. Kg7 c5 63. Kf6 c4 64. Kf5 c3 65. Kf4 c2 66. Kf3 c1=Q 67. Ke2 Ke4 68. Kf2 Qe3+ 69. Kg2 Kf4 70. Kf1 Qd2 71. Kg1 Kg3 72. Kf1 Qf2# 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game055.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 e5 2. Nc3 d6 3. g3 Bf5 4. Bg2 Nf6 5. Bxb7 Nbd7 6. Bxa8 Qxa8 7. e4 Bxe4 8. Nxe4 Qxe4+ 9. Qe2 Qxh1 10. f3 Qxg1+ 11. Qf1 Qxh2 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game056.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e6 2. Nc3 d5 3. cxd5 exd5 4. d4 c5 5. dxc5 d4 6. Ne4 Nc6 7. g3 Nf6 8. Bg2 Nxe4 9. Bxe4 Bxc5 10. Bxc6+ bxc6 11. Qc2 Qd5 12. Nf3 Bg4 13. O-O O-O 14. e4 dxe3 15. fxe3 Bxf3 16. Rxf3 Qxf3 17. Qxc5 Qd1+ 18. Kg2 Qe2+ 19. Kh3 Qf1+ 20. Kg4 f5+ 21. Kh4 h6 22. b3 g5+ 23. Kh5 Qh3+ 24. Kg6 Rae8 25. Qc4+ Kh8 26. Bb2+ Rf6+ 27. Bxf6# 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game057.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. g3 e5 2. Bg2 Nf6 3. Nf3 e4 4. Nd4 b6 5. c3 Bb7 6. O-O Bc5 7. Nb3 Be7 8. d3 O-O 9. Bg5 h6 10. Bxf6 Bxf6 11. dxe4 d6 12. Nd4 Nd7 13. Nd2 Rb8 14. e5 Bxg2 15. Kxg2 Bxe5 16. Nc6 Qg5 17. Nxb8 Nxb8 18. Nf3 Qg6 19. Qd5 Nd7 20. Qb7 Nf6 21. Qxc7 d5 22. Qxe5 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game058.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. f4 b6 2. Nf3 Bb7 3. d3 Nf6 4. e4 e6 5. Be2 Bc5 6. d4 Be7 7. e5 Ne4 8. O-O c5 9. c3 d6 10. Bb5+ Bc6 11. Bxc6+ Nxc6 12. Nbd2 d5 13. Nxe4 dxe4 14. Nd2 cxd4 15. Nxe4 dxc3 16. Qxd8+ Rxd8 17. Nxc3 Bc5+ 18. Kh1 O-O 19. Na4 Bd4 20. Rd1 b5 21. Nc3 Bxc3 22. bxc3 Rxd1# 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game059.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 d6 2. Nc3 e5 3. g3 f5 4. Bg2 Nc6 5. e3 Be6 6. Qh5+ g6 7. Qd1 Bg7 8. Nge2 Nge7 9. O-O O-O 10. b3 e4 11. Bb2 Nb4 12. a3 Nd3 13. Rb1 Bd7 14. Nc1 Nxb2 15. Rxb2 Bc6 16. Rb1 d5 17. cxd5 Nxd5 18. Nxd5 Qxd5 19. d3 Qb5 20. Re1 Rad8 21. Bf1 exd3 22. Nxd3 Qd5 23. Qc2 Qh1# 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game060.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. d4 d5 2. Bf4 c5 3. dxc5 Nc6 4. Nf3 g6 5. Ne5 Bg7 6. Nxc6 bxc6 7. c3 e5 8. Be3 Ne7 9. Nd2 O-O 10. Nb3 Nf5 11. Bd2 Re8 12. e3 e4 13. Be2 Qh4 14. O-O Be5 15. g3 Qg5 16. Nd4 Nh4 17. Nxc6 Bh3 18. Re1 Nf5 19. Nxe5 Rxe5 20. f4 exf3 21. Bxf3 Nxg3 22. Kf2 Ne4+ 23. Bxe4 Rxe4 24. Qf3 Qh4+ 25. Qg3 Qh5 26. Qf3 Bg4 27. Qg3 Rae8 28. Rh1 R8e6 29. h3 Rf6+ 30. Kg1 Bf3 31. Rf1 Bxh1 32. Rxf6 Bf3 33. Qxf3 Qg5+ 34. Kf2 Qh4+ 35. Ke2 Kg7 36. Rxf7+ Kh6 37. Rf4 Qe7 38. Rxe4 dxe4 39. Qf4+ Kg7 40. c4 Qxc5 41. Bc3+ Kg8 42. Qxe4 Qh5+ 43. Kd3 Qd1+ 44. Bd2 Qf1+ 45. Kc3 Qf6+ 46. Qd4 Qf2 47. Qd8+ Kg7 48. Qd7+ Kh6 49. Qxa7 Qxd2+ 50. Kxd2 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game061.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. b3 Nf6 3. d3 Nc6 4. Bg5 Be7 5. h3 h6 6. Bh4 d5 7. Nd2 Be6 8. Be2 Qd7 9. Bxf6 gxf6 10. Ndf3 O-O-O 11. c3 Rhg8 12. g3 f5 13. exd5 Bxd5 14. Qc2 e4 15. dxe4 fxe4 16. Nd4 Nxd4 17. cxd4 e3 18. f3 Rxg3 19. Qd3 Rdg8 20. Kf1 Rxg1+ 21. Rxg1 Qxh3+ 22. Ke1 Rxg1+ 23. Bf1 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game062.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 g6 2. Nc3 Bg7 3. g3 Bxc3 4. bxc3 e6 5. Bg2 d6 6. d4 c6 7. Bb2 Ne7 8. Rb1 O-O 9. e3 Qa5 10. Ne2 Qxa2 11. c5 dxc5 12. dxc5 Qc4 13. O-O Qxc5 14. Qb3 a5 15. Ba3 Qf5 16. Bxe7 Re8 17. Bc5 Na6 18. Ba3 c5 19. Qa2 Rd8 20. Rfd1 Rxd1+ 21. Rxd1 b6 22. Bxa8 Nc7 23. Bg2 Nd5 24. Bxd5 exd5 25. Nf4 Qe4 26. Qxd5 Qc2 27. Rc1 Qa2 28. Qd8+ Kg7 29. Qxc8 Qxa3 30. Rf1 Qxc3 31. Nd5 Qe5 32. Nxb6 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game063.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. b3 Nf6 3. d3 Nc6 4. Nf3 Be7 5. Bg5 d6 6. h3 O-O 7. Nbd2 h6 8. Bh4 a6 9. Bg3 b5 10. Be2 Bb7 11. O-O Qc8 12. c3 Nd8 13. d4 exd4 14. Nxd4 Nxe4 15. Bf3 Nxc3 16. Qc2 Nd5 17. Rfe1 Bf6 18. Qd3 c5 19. Rac1 Nb4 20. Qf5 Qxf5 21. Nxf5 Nd3 22. Nxd6 Bxf3 23. Re8 Nxc1 24. Rxf8+ Kxf8 25. Nxf3 Ne2+ 26. Kh2 Nxg3 27. fxg3 Ne6 28. Ne4 c4 29. bxc4 bxc4 30. Nxf6 gxf6 31. Nh4 c3 32. Nf5 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game064.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 c5 2. Nc3 Nc6 3. g3 Nf6 4. Bg2 b6 5. d3 Bb7 6. Bd2 d5 7. cxd5 Nb4 8. a3 Nbxd5 9. Qb3 e6 10. Bg5 Qe7 11. Nf3 Nxc3 12. bxc3 h6 13. Bd2 Bd5 14. Qc2 Qb7 15. e4 Bc6 16. O-O O-O-O 17. Ne5 Be8 18. Nc4 h5 19. e5 Bc6 20. Nd6+ Bxd6 21. exd6 Bxg2 22. Rfc1 Bh1 23. Kf1 Bg2+ 24. Ke1 Ng4 25. Bg5 f6 26. Be3 Nxh2 27. d4 Nf3+ 28. Ke2 cxd4 29. cxd4+ Kb8 30. Qc7+ Qxc7 31. dxc7+ Kb7 32. cxd8=Q Rxd8 33. Rc3 Nxd4+ 34. Bxd4 Rxd4 35. Rac1 g5 36. Ke3 Rd5 37. R1c2 Re5+ 38. Kd2 h4 39. gxh4 gxh4 40. Kc1 h3 41. f4 Re1+ 42. Kb2 h2 43. Rxg2 h1=Q 44. Rg7+ Ka6 45. Rcc7 Qh2+ 46. Kc3 Re3+ 47. Kd4 Qxf4# 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game065.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e5 2. Nc3 Nc6 3. g3 Nf6 4. Bg2 Bb4 5. Qb3 Bxc3 6. Qxc3 O-O 7. Bxc6 dxc6 8. Qxe5 Re8 9. Qc3 Bg4 10. Nf3 Ne4 11. Qb3 a5 12. O-O Bh3 13. Rd1 b6 14. d3 Nc5 15. Qc3 Rxe2 16. Nd4 Re8 17. Nxc6 Qd5 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game066.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e5 2. g3 f5 3. Bg2 Nf6 4. Nc3 Bc5 5. d3 O-O 6. Bg5 d6 7. Nf3 h6 8. Bd2 Be6 9. Nh4 c6 10. O-O Bb6 11. e4 f4 12. Na4 Bd4 13. Rc1 fxg3 14. hxg3 Nbd7 15. Bc3 Bxc3 16. Nxc3 Ng4 17. Bh3 Nxf2 18. Bxe6+ Kh8 19. Rxf2 Rxf2 20. Bxd7 Rxb2 21. Be6 Qf6 22. Bf5 Rg8 23. Ng6+ Kh7 24. Ne7+ Kh8 25. Nxg8 Kxg8 26. Rb1 Rxb1 27. Qxb1 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game067.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1/2-1/2"]
+
+1. c4 e5 2. Nc3 g6 3. d3 Bg7 4. Bd2 Ne7 5. g3 O-O 6. Bg2 c6 7. e3 d6 8. Nge2 Na6 9. O-O Nc5 10. Qc2 Bf5 11. e4 Bg4 12. b4 Bxe2 13. Nxe2 Nd7 14. a4 f5 15. c5 fxe4 16. cxd6 Nc8 17. Bxe4 Nxd6 18. Rac1 Nxe4 19. dxe4 Qe7 20. Rb1 Rad8 21. b5 c5 22. Nc3 Nf6 23. Rfd1 b6 24. h4 Rd7 25. Bg5 h6 26. Nd5 Qd8 27. Bxf6 Bxf6 28. Nxf6+ Rxf6 29. Rxd7 Qxd7 30. Qc4+ Kg7 31. Qd5 Qxd5 32. exd5 Rd6 33. Rd1 Kf6 34. Kg2 e4 35. f3 exf3+ 36. Kxf3 Ke5 37. Re1+ Kxd5 38. Rd1+ Ke6 39. Rxd6+ Kxd6 40. Ke3 Kd5 41. Kd3 g5 42. hxg5 hxg5 43. Kc3 Ke5 44. Kd3 Kd5 45. Kc3 Ke4 46. Kc4 Kf3 47. a5 Kxg3 48. axb6 axb6 49. Kd5 Kf2 50. Kc6 g4 51. Kxb6 g3 52. Kxc5 g2 53. b6 g1=Q 54. Kc6 Qg6+ 55. Kb7 Qf7+ 56. Ka6 Qa2+ 57. Kb7 Qd5+ 58. Ka7 Qa5+ 59. Kb7 Ke3 60. Kc6 Qa6 61. Kc7 Qc4+ 62. Kb8 Qg8+ 63. Ka7 Qa2+ 64. Kb8 Qa6 65. b7 Kd4 66. Kc8 Qc6+ 67. Kb8 Kc5 68. Ka7 Qb5 69. b8=Q Qa4+ 70. Kb7 Qc6+ 71. Ka7 Qa4+ 72. Kb7 Qc6+ 73. Ka7 Qa4+ 1/2-1/2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game068.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. d4 Nf6 2. Bg5 e6 3. e4 Be7 4. Nc3 O-O 5. e5 Nd5 6. Bxe7 Nxe7 7. Qg4 d6 8. O-O-O Nbc6 9. h4 dxe5 10. dxe5 Nxe5 11. Qe4 Qxd1+ 12. Nxd1 N7c6 13. f4 f5 14. Qe1 Ng4 15. Bc4 Re8 16. Ne3 Nxe3 17. Qxe3 a6 18. Nf3 b5 19. Bd5 Bb7 20. Bxc6 Bxc6 21. Ne5 Bd5 22. Rg1 Bxa2 23. b3 a5 24. Kb2 a4 25. Kxa2 axb3+ 26. Kxb3 c5 27. Qxc5 Rec8 28. Qd6 Re8 29. g4 h6 30. gxf5 exf5 31. Qxh6 Re7 32. Qc6 Kh7 33. Qxa8 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game069.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 Nf6 2. Nc3 e5 3. d3 d5 4. cxd5 Nxd5 5. Bd2 Nxc3 6. Bxc3 Nc6 7. g3 Bg4 8. Bg2 Qf6 9. Qa4 Bc5 10. Qxg4 Qxf2+ 11. Kd1 Qxg2 12. Qf3 Qxf3 13. Nxf3 O-O-O 14. Nxe5 Nxe5 15. Bxe5 f6 16. Bc3 Rhe8 17. e4 Rxd3+ 18. Kc2 Rf3 19. b4 Rf2+ 20. Kb3 Bb6 21. a4 Rxe4 22. a5 Be3 23. Rae1 Rf3 24. Re2 f5 25. Ka4 Bh6 26. Rxe4 fxe4 27. Bxg7 Bxg7 28. Re1 e3 29. h4 Rxg3 30. h5 Rh3 31. Re2 Bh6 32. Rg2 Rf3 33. Rg8+ Rf8 34. Rg3 Re8 35. Rf3 e2 36. Rf6 e1=Q 37. Rxh6 Qa1+ 38. Kb5 Qe5+ 39. Kc4 Qe6+ 40. Rxe6 Rxe6 41. Kd5 Rh6 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game070.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e5 2. Nc3 Nf6 3. d3 Nc6 4. g3 d5 5. cxd5 Nxd5 6. Bd2 Nxc3 7. Bxc3 Bd6 8. Bg2 O-O 9. Nf3 Re8 10. O-O h6 11. Re1 Bg4 12. Nd2 Qe7 13. Nc4 Rac8 14. Qb3 Rcd8 15. Qxb7 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game071.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. Bc4 d5 6. Bb3 Bc5 7. d4 Bb6 8. O-O O-O 9. c3 Bg4 10. Nbd2 Nxd2 11. Bxd2 Nc6 12. h3 Bh5 13. Bf4 h6 14. Qd3 Bg6 15. Qd2 Ne7 16. Bd1 c5 17. Ne5 Bh7 18. Bh5 cxd4 19. cxd4 Nf5 20. Be3 Ba5 21. Qd1 Nd6 22. Bd2 Bb6 23. Bc3 Nc4 24. Nxc4 dxc4 25. Bg4 Qd5 26. Bf3 Qd7 27. Bg4 Qd6 28. Bf3 Rad8 29. Bxb7 Bxd4 30. Bxd4 Qxd4 31. Qf3 Qxb2 32. Bd5 c3 33. Rac1 c2 34. Bb3 Rc8 35. Qe3 Bg6 36. Qxa7 Qe5 37. Qe3 Qb2 38. Qf3 Kh8 39. Qe3 Bh7 40. Qf3 Bg6 41. Qg3 Rfe8 42. Qd3 Red8 43. Qa6 Rd1 44. Bxc2 Rxf1+ 45. Rxf1 Qxc2 46. Qd6 Rg8 47. Qa6 Qf5 48. a4 Qe6 49. Qb5 Qc6 50. Qxc6 Bf5 51. a5 Rc8 52. Qd6 Kh7 53. a6 Be4 54. a7 Rc6 55. Qe7 Ra6 56. Qxe4+ f5 57. a8=Q Rxa8 58. Qxa8 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game072.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e5 2. Nc3 Nf6 3. g3 Bb4 4. Qb3 Bxc3 5. Qxc3 c6 6. Qxe5+ Qe7 7. Qxe7+ Kxe7 8. Bg2 d5 9. cxd5 Nxd5 10. e3 Nb4 11. Be4 f5 12. Bb1 N8a6 13. a3 Nd5 14. Ne2 Nc5 15. Nd4 g6 16. O-O Kf6 17. b4 Ne4 18. Bxe4 fxe4 19. Bb2 Kf7 20. Nxc6 bxc6 21. Bxh8 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game073.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. Nf3 Nf6 3. d4 Nxe4 4. Nxe5 d5 5. Bd3 Nd7 6. Nf3 Ndf6 7. O-O c5 8. Bg5 Be7 9. dxc5 h6 10. Bxe4 dxe4 11. Qxd8+ Bxd8 12. Bxf6 Bxf6 13. Re1 Bxb2 14. Rxe4+ Be6 15. Rb4 Bxa1 16. Rxb7 O-O 17. c3 Rfd8 18. h3 Rd1+ 19. Kh2 Rc1 20. Nbd2 Bxc3 21. Ne4 Bd5 22. Nd6 Bxb7 23. Nxb7 Re8 24. c6 Be5+ 25. Nxe5 Rxe5 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game074.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 d5 2. cxd5 Qxd5 3. Nc3 Qa5 4. d3 Nf6 5. Bd2 c6 6. Ne4 Qd8 7. Nxf6+ exf6 8. Nf3 Be6 9. g3 g6 10. Bg2 Bd6 11. O-O O-O 12. Re1 Bd5 13. e4 Be6 14. Bc3 Nd7 15. d4 f5 16. d5 cxd5 17. exd5 Bxd5 18. Qxd5 Qb6 19. a4 Bc5 20. Rf1 Qd6 21. Qxd6 Bxd6 22. Nd4 Rab8 23. b4 f6 24. Rad1 Ne5 25. Ne6 Be7 26. Nxf8 Kxf8 27. Bxe5 fxe5 28. Rd5 e4 29. Rfd1 Bxb4 30. Rd8+ Rxd8 31. Rxd8+ Ke7 32. Rd1 Ke6 33. f3 Bc5+ 34. Kf1 e3 35. Rd3 b6 36. f4 h6 37. Bd5+ Kf6 38. Ke2 g5 39. fxg5+ hxg5 40. h3 f4 41. gxf4 gxf4 42. Bf3 Ke5 43. Rd7 a5 44. h4 Ke6 45. Rh7 Kf6 46. h5 Kg5 47. Rd7 Kh6 48. Rd8 Kg5 49. Rh8 Kf6 50. h6 Kg6 51. Be4+ Kf7 52. Rh7+ Kg8 53. Rg7+ Kh8 54. Rb7 Bd4 55. h7 Bg7 56. Rb8+ 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game075.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e6 2. g3 Qg5 3. Bg2 Bb4 4. Nf3 Qc5 5. O-O Qxc4 6. d3 Qb5 7. a4 Qb6 8. Nc3 Nf6 9. b3 Ng4 10. Ne4 f5 11. Neg5 Bc5 12. d4 Bd6 13. h3 h5 14. hxg4 hxg4 15. Nh4 Nc6 16. Be3 e5 17. d5 Nd4 18. Bxd4 exd4 19. e3 dxe3 20. Qe2 Kd8 21. Qxe3 Bc5 22. Qe2 d6 23. Nf7+ Kd7 24. Nxh8 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game076.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. d4 d5 2. c4 dxc4 3. e4 e6 4. Bxc4 Nf6 5. Nc3 Bb4 6. Bd2 O-O 7. Nf3 Bd7 8. O-O Bxc3 9. Bxc3 b5 10. Bd3 a5 11. e5 Nd5 12. Bd2 Nb4 13. Bxb4 axb4 14. Qb3 Na6 15. Be4 Rb8 16. Rfd1 Qc8 17. Qd3 c5 18. Bxh7+ Kh8 19. Ng5 Qd8 20. Qh3 Qxg5 21. Bg6+ Qh6 22. Qxh6+ gxh6 23. Bh5 Be8 24. Rd3 f5 25. Be2 Bg6 26. Rh3 h5 27. Bxh5 Bxh5 28. Rxh5+ Kg7 29. Re1 Rh8 30. Rg5+ Kf7 31. Re3 Rbg8 32. Reg3 Rxg5 33. Rxg5 Rg8 34. Rh5 cxd4 35. Rh7+ Rg7 36. Rh4 Rg4 37. Rh7+ Ke8 38. Ra7 Nc5 39. Rc7 Nd3 40. Rb7 Nxb2 41. Rxb5 d3 42. Rb8+ Kd7 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game077.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 a6 2. g3 b5 3. Bg2 bxc4 4. Bxa8 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game078.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 d5 2. cxd5 Nf6 3. Nc3 e6 4. dxe6 Bxe6 5. d3 Bb4 6. Bd2 O-O 7. e3 Bxc3 8. Bxc3 Nc6 9. Be2 Nd5 10. Nf3 Qd7 11. O-O Rae8 12. e4 Nxc3 13. bxc3 a6 14. c4 Nd4 15. Nxd4 Qxd4 16. Qb3 b5 17. Qa3 bxc4 18. dxc4 Qa7 19. c5 c6 20. Qxa6 Qc7 21. Qb6 Qf4 22. Bf3 Bg4 23. Bxg4 Qxg4 24. Qxc6 Rxe4 25. f3 Qe6 26. Qxe6 Rxe6 27. a4 Rc6 28. Rfc1 Rfc8 29. a5 Rxc5 30. Rxc5 Rxc5 31. a6 Rc8 32. a7 Ra8 33. Kf2 h6 34. Ke3 f5 35. Kd4 Kh7 36. Kc5 Kg6 37. Kb6 Kg5 38. Kb7 Rxa7+ 39. Kxa7 g6 40. Kb6 h5 41. Kc5 Kh4 42. Kd4 g5 43. Kd3 f4 44. Ke4 g4 45. Rh1 Kg5 46. fxg4 hxg4 47. h3 g3 48. h4+ Kh5 49. Kxf4 Kh6 50. Kxg3 Kh5 51. Kf4 Kh6 52. g4 Kg6 53. Ke5 Kh6 54. Kf6 Kh7 55. Kf7 Kh6 56. Rd1 Kh7 57. Rd8 Kh6 58. Rh8# 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game079.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. d4 d5 2. Nf3 e6 3. e3 Nf6 4. Bd3 g6 5. c4 Bg7 6. Nc3 O-O 7. O-O c6 8. b4 Nbd7 9. Bb2 a6 10. a3 b5 11. cxb5 cxb5 12. h3 Bb7 13. Re1 Rc8 14. Ne2 Re8 15. Rc1 e5 16. Rxc8 Bxc8 17. dxe5 Nxe5 18. Nxe5 Ne4 19. Nc6 Qc7 20. Bxg7 Qxc6 21. Bxe4 dxe4 22. Bd4 Qd5 23. Nf4 Qg5 24. Qa1 Bxh3 25. Nxh3 h5 26. Nxg5 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game080.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nf6 3. Nc3 Bb4 4. d3 Bxc3+ 5. bxc3 d6 6. Bg5 Nbd7 7. Be2 h6 8. Bh4 g5 9. Bg3 Nh7 10. h3 Ndf6 11. Rb1 d5 12. Nxe5 dxe4 13. Ng4 Nxg4 14. Bxg4 Bxg4 15. Qxg4 exd3 16. Qe4+ Qe7 17. Qxe7+ Kxe7 18. cxd3 Rhd8 19. d4 Nf6 20. Bxc7 Rdc8 21. Ba5 Ne4 22. Rxb7+ Kf8 23. Bb4+ Kg7 24. O-O a5 25. Ba3 Nxc3 26. Bb2 Nxa2 27. d5+ Kg8 28. Re1 Rd8 29. Ree7 Rf8 30. d6 Rab8 31. Bf6 Nb4 32. Rxb8 Rxb8 33. d7 Nc6 34. Re8+ Kh7 35. Rxb8 Nxb8 36. d8=Q Nc6 37. Qh8+ Kg6 38. Qg7+ Kf5 39. Qxf7 Ne5 40. Qf8 Ke4 41. Bxe5 Kxe5 42. Qc5+ Kf6 43. Qxa5 Ke7 44. g4 Ke6 45. Qf5+ Ke7 46. Qg6 Kd8 47. Qxh6 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game081.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 e6 2. Nc3 d5 3. cxd5 exd5 4. d4 Nf6 5. Bd2 Bf5 6. e3 c6 7. Nge2 Nbd7 8. g3 Bb4 9. Bg2 O-O 10. O-O Ne4 11. Nxe4 Bxe4 12. Bxb4 Nf6 13. Bxf8 Kxf8 14. Bxe4 Nxe4 15. Nc3 Ng5 16. h4 Ne6 17. e4 Qf6 18. e5 Qg6 19. Ne2 f6 20. Nf4 Nxf4 21. exf6 gxf6 22. Kh2 Nh5 23. Rg1 Kf7 24. g4 Nf4 25. Qd2 Qh6 26. h5 Rg8 27. Kg3 Nxh5+ 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game082.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. Nf3 Nf6 3. Nc3 Bb4 4. a3 Bxc3 5. dxc3 d6 6. Bc4 Bd7 7. O-O O-O 8. Bg5 Nc6 9. Nh4 h6 10. Be3 Nxe4 11. Bd3 Qxh4 12. Qf3 Ng5 13. Bxg5 Qxg5 14. Qe4 f5 15. Qd5+ Kh8 16. Qf3 e4 17. Bxe4 fxe4 18. Qxe4 Bf5 19. Qe2 Rae8 20. Qd1 Ne5 21. f4 Qg6 22. fxe5 Bh3 23. Rxf8+ Rxf8 24. g3 Qe4 25. Qd2 Qxe5 26. Re1 Qc5+ 27. Re3 Rf1# 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game083.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. g3 e5 2. d4 exd4 3. Qxd4 Nc6 4. Qe4+ Be7 5. Bg2 Nf6 6. Qd3 Ne5 7. Qb3 O-O 8. Bxb7 Rb8 9. f4 Bxb7 10. Qc3 Bxh1 11. Qxe5 Re8 12. Qc3 Bb4 13. Qxb4 Rxb4 14. Bd2 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game084.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 Nf6 2. Nc3 g6 3. g3 Bg7 4. d3 c5 5. Bg2 a6 6. Bd2 Nc6 7. e3 Nb4 8. Nd5 Nxd3+ 9. Ke2 Nxb2 10. Nxf6+ Bxf6 11. Qb3 b5 12. cxb5 axb5 13. Bxa8 Nc4 14. Bc3 Bxc3 15. Qxc3 Qc7 16. Qxh8# 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game085.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. Nf3 Nf6 3. Nc3 Bb4 4. Be2 Bxc3 5. bxc3 d6 6. O-O O-O 7. d3 Be6 8. c4 Nbd7 9. Bb2 Rb8 10. a4 c6 11. a5 b6 12. axb6 axb6 13. Ng5 Re8 14. Nxe6 Rxe6 15. Bc3 h6 16. Qb1 b5 17. cxb5 Rxb5 18. Qa2 d5 19. Rfb1 d4 20. Rxb5 cxb5 21. Bb4 Rc6 22. Qa7 Qc8 23. Rc1 Rxc2 24. Rxc2 Qxc2 25. Kf1 Qc1+ 26. Be1 Nc5 27. g3 Qc2 28. Qb8+ Kh7 29. Qxe5 Nxd3 30. Qxd4 Nxe1 31. Kxe1 Qb1+ 32. Qd1 Qb4+ 33. Qd2 Qxe4 34. Kf1 Qh1# 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game086.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 Nf6 2. g3 e6 3. Bg2 d5 4. cxd5 exd5 5. d4 Be7 6. Bd2 O-O 7. Nc3 c6 8. e3 Bf5 9. Nge2 Nbd7 10. O-O Re8 11. Nc1 Nf8 12. Nb3 Ng6 13. Nc5 b6 14. Nb3 Qc7 15. Re1 Rad8 16. e4 dxe4 17. Nxe4 Nxe4 18. Bxe4 Bxe4 19. Rxe4 Bf6 20. Rxe8+ Rxe8 21. Bf4 Nxf4 22. gxf4 Qxf4 23. Qd2 Qg4+ 24. Kf1 Bd8 25. Qc2 Bc7 26. Qxc6 Qe2+ 27. Kg2 Re6 28. Qxc7 Rg6+ 29. Qg3 Qe4+ 30. f3 Qe2+ 31. Kh3 Rh6+ 32. Kg4 Qe6+ 33. Kf4 Rf6+ 34. Kg5 Qf5+ 35. Kh4 Rh6# 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game087.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nf6 3. Bc4 d5 4. exd5 Nxd5 5. O-O Nc6 6. Re1 Bc5 7. d4 Nxd4 8. Nxd4 Bxd4 9. Qxd4 Be6 10. Rxe5 O-O 11. Bxd5 c6 12. Rxe6 cxd5 13. Re5 Re8 14. Nc3 Qd6 15. Bf4 Qg6 16. Rae1 f6 17. Qxd5+ Kf8 18. Qd6+ Kg8 19. Re7 Rad8 20. Rxe8+ Rxe8 21. Rxe8+ Qxe8 22. h3 g5 23. Bg3 h5 24. Qd5+ Kg7 25. Qxb7+ Kh6 26. h4 Qe1+ 27. Kh2 gxh4 28. Bf4+ Kg6 29. Qe4+ Qxe4 30. Nxe4 Kf5 31. Nd6+ Kxf4 32. Kh3 Kg5 33. Ne4+ Kf5 34. Nc3 Kg5 35. a4 f5 36. a5 f4 37. a6 Kf5 38. Nb5 Ke4 39. Kxh4 Kd5 40. Kxh5 Kc5 41. Kg4 Kxb5 42. Kxf4 Kxa6 43. g4 Kb6 44. g5 Kc7 45. Kf5 Kd7 46. Kf6 Ke8 47. g6 Kf8 48. c4 a5 49. c5 Ke8 50. g7 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game088.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 Nc6 2. Nc3 e6 3. g3 Bb4 4. Qc2 Nd4 5. Qd3 a6 6. Bg2 Nf6 7. Qxd4 c5 8. Qd3 O-O 9. a3 Ba5 10. e3 d5 11. Nge2 dxc4 12. Qxc4 Re8 13. Qxc5 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game089.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1/2-1/2"]
+
+1. e4 e5 2. Nc3 Nf6 3. Nf3 Bb4 4. d3 Bxc3+ 5. bxc3 d6 6. Bb2 O-O 7. c4 h6 8. c5 Nbd7 9. cxd6 cxd6 10. d4 Nb6 11. dxe5 dxe5 12. Qxd8 Rxd8 13. Bxe5 Nxe4 14. Bd3 Nc3 15. Bxc3 Bg4 16. O-O Bxf3 17. gxf3 Nd5 18. Bd4 Nf4 19. Be3 Nxd3 20. cxd3 Rxd3 21. Rab1 b6 22. Rfd1 Rc3 23. Rd7 Rc6 24. Rbd1 Rg6+ 25. Kh1 a5 26. Rd8+ Rxd8 27. Rxd8+ Kh7 28. Rb8 Rc6 29. Bxb6 Rc2 30. Bxa5 Rxa2 31. Bc3 Rxf2 32. Rb7 Rxf3 33. Bd4 Rd3 34. Ba7 Rd1+ 35. Kg2 Kg6 36. Rb6+ f6 37. Rb7 Rd2+ 38. Kg3 Rd3+ 39. Kg4 Rd5 40. Bf2 Rg5+ 41. Kf3 Rf5+ 42. Ke3 Re5+ 43. Kd4 Re6 44. Bg3 f5 45. Kd5 Ra6 46. Ke5 Ra5+ 47. Kf4 Ra6 48. Rb5 Rf6 49. Bh4 Rf7 50. Rb6+ Kh7 51. Rb5 g5+ 52. Bxg5 hxg5+ 53. Kxg5 f4 54. Rb1 f3 55. Rf1 f2 56. Kg4 Kh6 57. Kg3 Kh5 58. Rxf2 Rxf2 59. Kxf2 Kg4 60. Kg2 Kh4 61. h3 Kh5 62. Kg3 Kg5 63. h4+ Kh5 64. Kh3 Kg6 65. Kg4 Kh6 66. Kh3 Kh5 67. Kg3 Kg6 68. Kg4 Kh6 69. h5 Kg7 70. Kg5 Kg8 71. Kg6 Kh8 72. Kh6 Kg8 73. Kg6 Kh8 74. h6 Kg8 75. h7+ Kh8 76. Kf7 Kxh7 1/2-1/2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game090.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 Bb4 5. Bg5 Bxc3+ 6. bxc3 O-O 7. e3 h6 8. Bh4 Nbd7 9. Bd3 c6 10. O-O Qc7 11. cxd5 exd5 12. c4 Re8 13. Rc1 Qb8 14. Bb1 dxc4 15. Rxc4 b5 16. Rxc6 Qb7 17. Qc2 Nd5 18. Qh7+ 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game091.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. Nf3 Nf6 3. Nc3 Bb4 4. d3 Bxc3+ 5. bxc3 d6 6. Bg5 O-O 7. Be2 Nbd7 8. O-O h6 9. Be3 c6 10. Rb1 Qc7 11. Nh4 d5 12. f3 Rd8 13. Nf5 Nf8 14. Qd2 Bxf5 15. exf5 N8h7 16. g4 d4 17. cxd4 exd4 18. Bf4 Qd7 19. Rbd1 Nd5 20. Bg3 Ne3 21. Rb1 Nxf1 22. Kxf1 c5 23. f4 Nf6 24. Bf3 Nd5 25. c4 Nb6 26. a4 Qxa4 27. Bxb7 Rab8 28. Bd5 Nxc4 29. dxc4 Rxb1+ 30. Kg2 Kf8 31. g5 hxg5 32. fxg5 Qd7 33. Qc2 Rbb8 34. f6 gxf6 35. gxf6 Rb6 36. Qh7 Rxf6 37. Qh8+ Ke7 38. Qxf6+ Kxf6 39. Bh4+ Kg7 40. Bxd8 Qxd8 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game092.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. d4 Nf6 2. f4 d5 3. Nc3 g6 4. Nf3 Bg7 5. e3 O-O 6. Bd3 Nc6 7. Bd2 a6 8. Qe2 Re8 9. O-O-O e5 10. fxe5 Ne4 11. h4 Ng3 12. Qf2 Nxh1 13. Rxh1 Bg4 14. Ng5 Rf8 15. e4 dxe4 16. Ncxe4 Bf5 17. h5 Qxd4 18. Be3 Qa4 19. Kb1 Bxe5 20. hxg6 fxg6 21. Nc5 Qb4 22. b3 Bxd3 23. Nxd3 Qc3 24. Qxf8+ Rxf8 25. Bc1 Qa1# 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game093.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nf6 3. Bc4 d5 4. exd5 Nxd5 5. Nxe5 Qe7 6. d4 f6 7. Bxd5 fxe5 8. O-O c6 9. Bc4 Be6 10. Bxe6 Qxe6 11. Bf4 Be7 12. Bxe5 O-O 13. Re1 Qd7 14. c3 Na6 15. Nd2 c5 16. Nf3 cxd4 17. Bxd4 Rad8 18. Qb3+ Kh8 19. Re3 Nc5 20. Qc2 b6 21. Rae1 Bg5 22. Re5 Bf6 23. R5e3 Bxd4 24. Nxd4 Qf7 25. h3 Rxd4 26. cxd4 Ne6 27. Rxe6 Qxf2+ 28. Qxf2 Rxf2 29. Kxf2 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game094.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. d4 Nf6 2. Nf3 d6 3. Bf4 g6 4. c3 Bg7 5. Nbd2 Nbd7 6. e3 Nf8 7. Bb5+ c6 8. Ba4 Ne6 9. Bb3 Nxf4 10. exf4 O-O 11. O-O b6 12. Re1 Ba6 13. h3 Qc7 14. Ne4 Nxe4 15. Rxe4 d5 16. Re3 Qxf4 17. Qc2 Qd6 18. Rae1 Rae8 19. a3 Bh6 20. R3e2 Bxe2 21. Rxe2 Bg7 22. Ba2 e5 23. Nxe5 Bxe5 24. dxe5 Rxe5 25. Rxe5 Qxe5 26. Kf1 Re8 27. Qd2 Qh2 28. f3 Qg3 29. c4 Qe5 30. f4 Qe3 31. Qxe3 Rxe3 32. cxd5 cxd5 33. Bxd5 Kf8 34. Kf2 Rd3 35. Bc4 Rd2+ 36. Kf3 Rxb2 37. g4 b5 38. Bd5 a5 39. Bc6 b4 40. axb4 axb4 41. f5 Rd2 42. Ba4 Rd6 43. Bc2 Rb6 44. fxg6 hxg6 45. h4 b3 46. Be4 b2 47. h5 b1=Q 48. Bxb1 Rxb1 49. h6 g5 50. Kg2 Rb6 51. h7 Rh6 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game095.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game096.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. b4 d5 2. Bb2 a6 3. Nf3 Nc6 4. a3 Nh6 5. e3 Bd7 6. c4 e6 7. Nc3 Be7 8. cxd5 exd5 9. Nxd5 Be6 10. Nxe7 Qxe7 11. Be2 Rg8 12. O-O O-O-O 13. Bc3 Bg4 14. h3 Bxf3 15. Bxf3 g5 16. Bxc6 bxc6 17. Qf3 Qe6 18. a4 g4 19. hxg4 Nxg4 20. b5 Qh6 21. Qg3 Rg6 22. f3 Nxe3 23. Qh2 Rxg2+ 24. Qxg2 Nxg2 25. Kxg2 Rg8+ 26. Kf2 Qh2+ 27. Ke3 Re8+ 28. Kd3 Qd6+ 29. Kc2 cxb5 30. axb5 Qg6+ 31. Kb2 Qb6 32. Kc1 Qxb5 33. Rg1 h5 34. f4 h4 35. Rg5 Qf1+ 36. Kb2 Qxf4 37. Rh5 Qg4 38. Rh7 h3 39. Rh1 f5 40. R1xh3 f4 41. R3h4 Qg5 42. R4h5 Qg6 43. R5h6 Qg2 44. Rf7 Qb7+ 45. Kc2 Qe4+ 46. Kb2 f3 47. Rh2 Qb7+ 48. Kc2 Qe4+ 49. Kb2 Qe2 50. Rxe2 fxe2 51. d4 e1=Q 52. Bxe1 Rxe1 53. Rf6 Rd1 54. Kc3 a5 55. Ra6 Kb7 56. Rxa5 Kb6 57. Rc5 Rc1+ 58. Kd3 Rxc5 59. dxc5+ Kxc5 60. Kc3 c6 61. Kc2 Kc4 62. Kb2 c5 63. Kc2 Kb4 64. Kd3 c4+ 65. Kd2 Kb3 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game097.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 c5 2. Nc3 Nc6 3. g3 d5 4. b3 d4 5. Ne4 Bf5 6. Bg2 Nf6 7. Nxc5 Qb6 8. Na4 Nb4 9. Nxb6 Nc2+ 10. Kf1 axb6 11. Bxb7 Ra7 12. Bc6+ Kd8 13. Rb1 d3 14. Nf3 Bh3+ 15. Kg1 Ra5 16. exd3 Rxa2 17. Ng5 Bg4 18. Nxf7+ Kc7 19. Qf1 Kxc6 20. Nxh8 Nd4 21. Qg2+ Bf3 22. Qxf3+ Nxf3+ 23. Kg2 Ne5 24. d4 Nd3 25. d5+ Kc5 26. Nf7 Ne4 27. Rf1 Nxc1 28. Rbxc1 Nxd2 29. Rfd1 Nxb3 30. Rb1 Nd4 31. Ne5 Nf5 32. Nd7+ Kxc4 33. Nxf8 Ne3+ 34. Kf3 Nxd1 35. Rxd1 b5 36. Nxh7 Kc5 37. Ng5 b4 38. Ne4+ Kc4 39. Nd2+ Kxd5 40. Nb3+ Kc4 41. Nd2+ Kc3 42. Ne4+ Kc2 43. Rd7 b3 44. Rxe7 b2 45. Rc7+ Kd3 46. Rc3+ Kd4 47. Rb3 Ra3 48. Rxa3 b1=Q 49. Ra4+ Kd5 50. Nc3+ 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game098.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. d4 d5 2. c4 Nf6 3. Nc3 e6 4. Bg5 Be7 5. e3 h6 6. Bxf6 Bxf6 7. Nf3 O-O 8. Bd3 Nd7 9. Bc2 Be7 10. Qd3 Nf6 11. cxd5 exd5 12. Ne5 Bd6 13. h4 a5 14. Nxd5 Bxe5 15. Nxf6+ 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game099.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e5 2. Nc3 d6 3. d3 Nf6 4. Bd2 Nc6 5. g3 Be7 6. Bg2 Bd7 7. a3 Rb8 8. b4 O-O 9. Rb1 h6 10. e3 Bf5 11. Ne4 a6 12. Ne2 Nxe4 13. dxe4 Bg6 14. O-O Bg5 15. Be1 Ne7 16. f4 Bf6 17. Bc3 b6 18. fxe5 Bxe5 19. Bxe5 dxe5 20. Qxd8 Rbxd8 21. Nc3 Rd3 22. Nd5 Nxd5 23. exd5 Rxe3 24. a4 Bxb1 25. Rxb1 Rc3 26. Bf1 f5 27. c5 f4 28. gxf4 Rxf4 29. Bxa6 Rg4+ 30. Kh1 Rc2 31. Bc8 Rh4 32. Be6+ Kh8 33. h3 Rxh3+ 34. Bxh3 bxc5 35. bxc5 Rxc5 36. Be6 e4 37. Rb8+ Kh7 38. Bf5+ g6 39. Bxe4 h5 40. Rc8 Rc4 41. Bg2 Rxa4 42. Rxc7+ Kh6 43. d6 Rd4 44. d7 h4 45. Bh3 g5 46. Rc8 Rd1+ 47. Kg2 Rd2+ 48. Kf3 Rd3+ 49. Ke4 Rxh3 50. d8=Q 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game100.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. d3 Nf6 3. h3 Be7 4. g4 c6 5. g5 Ng8 6. h4 h6 7. gxh6 gxh6 8. h5 d6 9. a3 Be6 10. Nc3 Nd7 11. b4 Qc7 12. b5 O-O-O 13. a4 Kb8 14. Ba3 d5 15. Bxe7 Nxe7 16. Bg2 Qa5 17. Qd2 d4 18. Nb1 Qxd2+ 19. Nxd2 cxb5 20. axb5 Nc5 21. Ngf3 Bd7 22. Nxe5 Rhf8 23. Bh3 Bxb5 24. Ndf3 Nc6 25. Nxc6+ Bxc6 26. Nxd4 Rxd4 27. Rg1 Bd7 28. Bxd7 Nxd7 29. f4 f5 30. exf5 Rxf4 31. Rg7 Re8+ 32. Kd2 Rf2+ 33. Kc3 Rc8+ 34. Kd4 Nf8 35. Rb1 b6 36. Ke3 Rxf5 37. Ra1 Re8+ 38. Kd2 Rf2+ 39. Kc3 Rc8+ 40. Kb3 Rc7 41. Rxc7 Kxc7 42. Rxa7+ Kc6 43. Re7 Rf5 44. c4 Rxh5 45. Rf7 Nd7 46. d4 Rh4 47. d5+ Kd6 48. Rg7 Nc5+ 49. Kb4 Ke5 50. Rg6 Nd3+ 51. Kb5 Nf4 52. Rxb6 Rh1 53. Ra6 Rb1+ 54. Kc6 h5 55. d6 Rc1 56. Ra5+ Ke4 57. d7 Rxc4+ 58. Rc5 Rxc5+ 59. Kxc5 Ne6+ 60. Kd6 Kf5 61. Ke7 h4 62. d8=Q Nxd8 63. Kxd8 h3 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game101.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 Nf6 2. Nc3 e6 3. g3 d5 4. cxd5 Nxd5 5. d4 c6 6. Bg2 b5 7. e3 Bb7 8. Nge2 Nd7 9. O-O h6 10. Nxd5 cxd5 11. a3 Be7 12. Nc3 a6 13. Qb3 Rc8 14. a4 Bc6 15. axb5 axb5 16. Nxb5 Rb8 17. Ra6 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game102.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. b4 e5 2. Bb2 d6 3. b5 Nf6 4. e3 Bd7 5. c4 Be7 6. Nf3 O-O 7. Be2 h6 8. O-O a6 9. a4 axb5 10. axb5 Rxa1 11. Bxa1 c6 12. Nc3 Re8 13. d4 exd4 14. Nxd4 c5 15. Nf3 Bc8 16. Nd5 Nxd5 17. Qxd5 Nd7 18. Rd1 Nf6 19. Bxf6 Bxf6 20. Qxd6 Qxd6 21. Rxd6 Be7 22. Rd1 Bf5 23. h3 Ra8 24. g4 Bc2 25. Rd7 Ra1+ 26. Kg2 Bf6 27. Rxb7 Ra2 28. Bf1 Be4 29. Kg3 Bxb7 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game103.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 h6 2. Nc3 e6 3. Nf3 Bb4 4. Qb3 Nc6 5. a3 Bc5 6. Ne4 Na5 7. Qc3 Be7 8. Qxa5 Nf6 9. Nxf6+ Bxf6 10. d4 b6 11. Qc3 c5 12. Be3 Ba6 13. b3 d5 14. Ne5 O-O 15. g3 Qc8 16. Bg2 Rb8 17. O-O b5 18. cxd5 Bxe5 19. dxe5 c4 20. dxe6 Qxe6 21. Bxa7 Rb7 22. Bxb7 Bxb7 23. bxc4 Qc6 24. f3 Ra8 25. Bf2 g5 26. Rac1 g4 27. cxb5 Qg6 28. Qc7 Ra7 29. Bxa7 gxf3 30. Qxb7 f2+ 31. Rxf2 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game104.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. d4 exd4 3. c3 dxc3 4. Qf3 Nc6 5. Bb5 Bb4 6. Nxc3 Bxc3+ 7. Qxc3 Nf6 8. Bxc6 dxc6 9. Bg5 O-O 10. e5 Re8 11. Nf3 Qd5 12. O-O Ne4 13. Qb4 Bg4 14. Rad1 c5 15. Rxd5 cxb4 16. Nd4 Nxg5 17. f3 Be6 18. Nxe6 Nxe6 19. g3 Rad8 20. Rxd8 Rxd8 21. f4 h6 22. f5 Nd4 23. f6 gxf6 24. Rxf6 Ne2+ 25. Kf2 Rd2 26. Ke3 Rxb2 27. h4 Rxa2 28. Rxh6 Nc3 29. e6 Nd5+ 30. Ke4 fxe6 31. Rxe6 Re2+ 32. Kxd5 Rxe6 33. Kxe6 b3 34. g4 b2 35. g5 b1=Q 36. h5 Qb6+ 37. Kf5 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game105.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 b5 2. cxb5 g6 3. Nc3 Bg7 4. e4 f5 5. g3 d6 6. Bg2 Bb7 7. Nge2 h6 8. O-O g5 9. exf5 Bf6 10. Bxb7 Nd7 11. Bxa8 Qxa8 12. d4 h5 13. Qb3 Qf3 14. Nd5 Kd8 15. Qxf3 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game106.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 e5 2. Nc3 Nf6 3. d3 Bb4 4. Bd2 O-O 5. g3 c6 6. Bg2 d5 7. cxd5 cxd5 8. e3 d4 9. exd4 exd4 10. Ne4 Nxe4 11. Bxe4 Bxd2+ 12. Qxd2 Nc6 13. Ne2 Bh3 14. Nf4 Bg4 15. O-O Ne5 16. Rfe1 Rb8 17. Bg2 Nf3+ 18. Bxf3 Bxf3 19. Ne2 Qd5 20. Qb4 Bh1 21. Nf4 Qf3 22. Qxd4 g5 23. Re3 Qc6 24. f3 Bxf3 25. Rxf3 Qxf3 26. Rf1 Qg4 27. h3 Qxg3+ 28. Kh1 gxf4 29. Rg1 Qxg1+ 30. Kxg1 Rbd8 31. Qxf4 Rfe8 32. Qg3+ Kh8 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game107.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Nxd5 6. Qf3 Qxg5 7. Bxd5 Qg6 8. Nc3 Nd4 9. Bxf7+ Qxf7 10. Qe4 Bd6 11. O-O Rb8 12. f4 Bf5 13. Qe3 Nxc2 14. Qxa7 c5 15. fxe5 Nxa1 16. Ne4 Bxe5 17. Nxc5 Bd4+ 18. Kh1 O-O 19. g4 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game108.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e5 2. Nc3 Nf6 3. g3 d5 4. cxd5 Nxd5 5. Bg2 Nb6 6. e3 Nc6 7. Nge2 Be7 8. O-O O-O 9. d3 Be6 10. a4 a5 11. Bd2 f5 12. Qe1 Nd5 13. e4 fxe4 14. Nxd5 Bxd5 15. dxe4 Be6 16. Rd1 Bb3 17. Rc1 Nb4 18. Rc3 Bxa4 19. b3 Bb5 20. f4 Nd3 21. Qb1 Bc5+ 22. Rxc5 Nxc5 23. Bf3 Qxd2 24. Rd1 Qe3+ 25. Kg2 Bxe2 26. Re1 Qxf3+ 27. Kh3 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game109.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 e6 2. Nc3 d5 3. cxd5 exd5 4. d4 Nf6 5. Bd2 Bf5 6. Nf3 c5 7. e3 Qb6 8. b3 cxd4 9. Nxd4 Bg6 10. Be2 Bb4 11. O-O O-O 12. Bf3 Nc6 13. Bxd5 Nxd4 14. exd4 Qxd4 15. Bxb7 Rab8 16. Ne2 Qxd2 17. Qxd2 Bxd2 18. Rad1 Rxb7 19. Rxd2 Ne4 20. Rd4 Nf6 21. Nf4 Rbb8 22. h3 Rbd8 23. Nxg6 fxg6 24. Rc4 Rd2 25. Ra4 Rd7 26. Kh2 Rfd8 27. Re1 Nd5 28. a3 Nc3 29. Rc4 Nb5 30. b4 Nxa3 31. Ra1 Nxc4 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game110.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. d3 Nf6 3. f4 exf4 4. Bxf4 d6 5. Nf3 Nbd7 6. Be2 Be7 7. O-O O-O 8. Nc3 a6 9. d4 Re8 10. Re1 Bf8 11. Bd3 Be7 12. e5 Nh5 13. Be3 dxe5 14. Nxe5 Nxe5 15. dxe5 g6 16. Ne4 Ng7 17. c3 b5 18. Bd4 Bb7 19. Ng3 Bh4 20. Re3 f6 21. exf6 Rxe3 22. Bxe3 Bxg3 23. hxg3 Nf5 24. Bxf5 gxf5 25. Qxd8+ Rxd8 26. Rf1 Be4 27. Rf4 Kf7 28. Bd4 Rd5 29. Rh4 Kg8 30. Rh5 c5 31. Rg5+ Kf7 32. Rg7+ Ke6 33. f7 Rd8 34. f8=Q Rxf8 35. Rxh7 cxd4 36. cxd4 Rd8 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game111.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 c5 2. g3 Nc6 3. Bg2 g6 4. Nc3 Bg7 5. Qb3 Nf6 6. e3 O-O 7. Nge2 e6 8. d4 cxd4 9. exd4 d5 10. cxd5 exd5 11. O-O Re8 12. Nf4 Nxd4 13. Qa4 Ne4 14. Nfxd5 Nxc3 15. bxc3 Nf5 16. Ba3 Be6 17. Rad1 Qg5 18. Nc7 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game112.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nf6 3. d4 exd4 4. Bc4 d5 5. exd5 Nxd5 6. O-O c5 7. c3 Nc6 8. cxd4 cxd4 9. Nxd4 Nxd4 10. Qxd4 Be6 11. Re1 b6 12. Bxd5 Bc5 13. Qa4+ Ke7 14. Bxa8 Qxa8 15. Nc3 Re8 16. Nd5+ Qxd5 17. Qxa7+ Kf8 18. Be3 Bxe3 19. Rxe3 Qc5 20. Qa3 Qxa3 21. Rxa3 b5 22. g3 b4 23. Ra7 b3 24. a3 Rc8 25. Kg2 Rc2 26. Rd1 Rc8 27. Rd3 Bf5 28. Rxb3 Be4+ 29. Kh3 Bf5+ 30. Kg2 Be4+ 31. f3 Rc2+ 32. Kh3 Bf5+ 33. g4 Be6 34. Rb8+ Rc8 35. Rxc8+ Bxc8 36. b4 h6 37. a4 g6 38. b5 h5 39. Rc7 hxg4+ 40. fxg4 Be6 41. b6 f5 42. gxf5 Bxf5+ 43. Kg3 Bc2 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game113.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 d6 2. g3 c6 3. Bg2 g6 4. Nf3 Bg7 5. d4 h5 6. e4 Bg4 7. O-O h4 8. Nbd2 hxg3 9. fxg3 c5 10. Qe2 Bxd4+ 11. Kh1 Bxf3 12. Qxf3 f6 13. Nb3 Qd7 14. Nxd4 cxd4 15. e5 dxe5 16. Qxb7 Qxb7 17. Bxb7 Nd7 18. Bxa8 Nc5 19. Bc6+ Kf8 20. Rd1 f5 21. b4 Na6 22. Re1 Nf6 23. Rxe5 Ng4 24. Rb5 Kf7 25. Bd5+ Kf6 26. c5 Nxh2 27. Kg2 Ng4 28. Bb2 e5 29. Rh1 Ne3+ 30. Kg1 Rd8 31. c6 g5 32. Rh6+ Kg7 33. Re6 Nxd5 34. Rb7+ Kf8 35. Rxe5 Ndxb4 36. Rxf5+ Ke8 37. Re5+ Kf8 38. Ba3 d3 39. c7 Nxc7 40. Bxb4+ Kg8 41. Rxc7 d2 42. Rxg5+ Kh8 43. Bc3+ Rd4 44. Bxd4# 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game114.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 c6 2. Nf3 d5 3. d4 c5 4. dxc5 Bg4 5. e3 Nc6 6. cxd5 Qxd5 7. Qxd5 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game115.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 e5 2. g3 Nf6 3. Bg2 e4 4. e3 b6 5. Nc3 Bb7 6. Nge2 d5 7. cxd5 Nxd5 8. Bxe4 Nxc3 9. dxc3 Qxd1+ 10. Kxd1 Bxe4 11. Rg1 Nc6 12. Nf4 O-O-O+ 13. Bd2 Bd6 14. Ke2 Bxf4 15. gxf4 Bd3+ 16. Kf3 f5 17. Rxg7 h5 18. h4 Rhg8 19. Rh7 Be4+ 20. Ke2 Rh8 21. Rg7 Na5 22. f3 Bd3+ 23. Kf2 Nc4 24. Bc1 Bc2 25. b3 Nd2 26. Ba3 Bd3 27. Be7 Rde8 28. Bg5 Nb1 29. c4 Nc3 30. a4 Rhg8 31. Rxg8 Rxg8 32. Rc1 Ne2 33. Rd1 Bc2 34. Rd2 Bxb3 35. Kxe2 Bxc4+ 36. Kf2 Bb3 37. Rd4 c5 38. Rd5 Bxa4 39. Rxf5 c4 40. Bf6 Rf8 41. e4 b5 42. Rc5+ Kb7 43. Bc3 a5 44. Bxa5 Rxf4 45. Kg3 Rf8 46. Bb4 Rc8 47. Rxh5 c3 48. Rd5 c2 49. Rd7+ Ka8 50. Ba3 c1=Q 51. Bxc1 Rxc1 52. Kf4 b4 53. Rd2 b3 54. Rb2 Rc2 55. Rxb3 Bxb3 56. h5 Rg2 57. e5 Bg8 58. Kf5 Bd5 59. f4 Bf3 60. h6 Bg4+ 61. Kg6 Bd1+ 62. Kf6 Bc2 63. e6 Rg6+ 64. Kf7 Rxh6 65. e7 Ba4 66. e8=Q+ Bxe8+ 67. Kxe8 Rf6 68. Ke7 Rxf4 69. Ke6 Rf3 70. Ke5 Kb7 71. Ke4 Rf8 72. Ke5 Kc7 73. Kd4 Kd6 74. Ke4 Re8+ 75. Kd4 Re5 76. Kc4 Rc5+ 77. Kd4 Rd5+ 78. Ke4 Ke6 79. Kf4 Re5 80. Kf3 Kf6 81. Kf4 Re6 82. Kf3 Kf5 83. Kg3 Re3+ 84. Kf2 Kf4 85. Kg2 Re2+ 86. Kf1 Kf3 87. Kg1 Rf2 88. Kh1 Kg3 89. Kg1 Rf3 90. Kh1 Rf1# 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game116.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 c6 2. Nc3 d5 3. cxd5 cxd5 4. d4 Bf5 5. g3 Nf6 6. Bg2 Nc6 7. Bg5 Ne4 8. Nxe4 Bxe4 9. Bxe4 dxe4 10. Qc2 Qxd4 11. Be3 Qb4+ 12. Bd2 Qb6 13. e3 e6 14. Bc3 Bb4 15. Qxe4 Bxc3+ 16. bxc3 Qb2 17. Rd1 Qxc3+ 18. Rd2 Rd8 19. Qc2 Qxc2 20. Rxc2 O-O 21. Nf3 a6 22. O-O Rd7 23. Rd2 Rfd8 24. Rxd7 Rxd7 25. Nd4 Nxd4 26. exd4 Rxd4 27. Rb1 b5 28. a4 Rd5 29. axb5 Rxb5 30. Rd1 g6 31. Ra1 a5 32. Kf1 Kg7 33. Ke1 Kf6 34. Kd1 e5 35. Kc2 Kf5 36. Kc3 f6 37. Kc4 Rb4+ 38. Kc5 Rb2 39. Rxa5 Rxf2 40. h4 Rg2 41. Ra7 h5 42. Ra3 Kg4 43. Kd6 Rxg3 44. Ra4+ Kf5 45. Ke7 Rg4 46. Rxg4 hxg4 47. Kf7 g3 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game117.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Bc4 Nf6 3. d3 d5 4. exd5 Nxd5 5. Qf3 c6 6. Nc3 Be6 7. Nge2 Nd7 8. Be3 Bb4 9. a3 Bxc3+ 10. Nxc3 Nxc3 11. Bxe6 fxe6 12. bxc3 Nf6 13. Qg3 Qa5 14. O-O Qxc3 15. Qxg7 Rf8 16. Bh6 O-O-O 17. Qg3 e4 18. Bxf8 Rxf8 19. dxe4 Qxg3 20. fxg3 Kd7 21. e5 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game118.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 e5 2. Nc3 d5 3. cxd5 c6 4. dxc6 Nxc6 5. g3 Bf5 6. Bg2 Nd4 7. Qa4+ Qd7 8. Qxd7+ Kxd7 9. Kd1 Rb8 10. d3 b5 11. Be3 b4 12. Nd5 b3 13. Bxd4 exd4 14. axb3 Rxb3 15. Rxa7+ Ke6 16. Ra6+ Bd6 17. Nf4+ Ke5 18. Nf3+ Kf6 19. Rxd6+ Ke7 20. Rxd4 Rxb2 21. Nd5+ Ke6 22. Kc1 Rxe2 23. Nc7+ Kf6 24. Rd6+ Be6 25. Nd4 Re5 26. Ncxe6 fxe6 27. Rxe6+ Rxe6 28. Nxe6 Kxe6 29. Re1+ Kf6 30. f4 Ne7 31. d4 Nd5 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game119.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Nc3 Nf6 3. Nf3 Bb4 4. d3 Bxc3+ 5. bxc3 d6 6. Be2 Nc6 7. Bg5 Bd7 8. O-O O-O 9. Rb1 Rb8 10. Qd2 a6 11. Rb2 b5 12. Rfb1 Na7 13. Bxf6 Qxf6 14. a4 c5 15. axb5 axb5 16. Ra2 Nc6 17. Rab2 Rb7 18. Rxb5 Rxb5 19. Rxb5 Nd4 20. Rb7 Nxf3+ 21. Bxf3 Bc6 22. Rb6 Rc8 23. c4 h6 24. Qa5 Ra8 25. Qd2 Bd7 26. h3 Ra1+ 27. Kh2 Qf4+ 28. Qxf4 exf4 29. Rxd6 Ba4 30. Ra6 Ra2 31. e5 Kh7 32. Be4+ 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game120.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nf6 3. d3 d6 4. Bg5 Be7 5. Nc3 h6 6. Bh4 Nbd7 7. Be2 g5 8. Bg3 Nb6 9. O-O Bd7 10. a3 d5 11. exd5 Nfxd5 12. Nxd5 Nxd5 13. Nxe5 Nf4 14. Nxd7 Qxd7 15. Bxf4 gxf4 16. Bh5 O-O-O 17. Bxf7 Bf6 18. Bh5 Bxb2 19. Bg4 Bxa1 20. Bxd7+ Rxd7 21. Qxa1 Rg8 22. f3 Rdg7 23. Rf2 Re8 24. Qxg7 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game121.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. d4 exd4 3. c3 dxc3 4. Bc4 cxb2 5. Bxb2 d6 6. Nf3 Be6 7. Qa4+ Nd7 8. Bb5 Qe7 9. O-O Nf6 10. e5 Nd5 11. exd6 Qxd6 12. Re1 Nb6 13. Qe4 O-O-O 14. Nc3 Nc5 15. Qc2 a6 16. Be2 g6 17. Ne4 Nxe4 18. Qxe4 Rg8 19. a4 Bf5 20. Qh4 h5 21. a5 Nd5 22. Rac1 Qf6 23. Qc4 Qxb2 24. Rb1 Qc3 25. Qa2 Be6 26. Rec1 Qf6 27. Qb3 Ne3 28. Qxb7+ 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game122.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nf6 3. d3 Be7 4. Nc3 d6 5. a3 Be6 6. Bg5 Nbd7 7. d4 h6 8. Be3 O-O 9. dxe5 dxe5 10. Nd5 Nxe4 11. Bd3 Bxd5 12. Bxe4 Bxe4 13. O-O Nf6 14. Qe2 Bxf3 15. Qxf3 Re8 16. Qg3 Bf8 17. Rfd1 Qe7 18. b4 Nh5 19. Qf3 Nf4 20. Bc5 Qg5 21. Be3 Rad8 22. g3 Rxd1+ 23. Rxd1 Nh3+ 24. Kg2 e4 25. Qe2 Qf5 26. g4 Nf4+ 27. Bxf4 Qxf4 28. Rd4 Qf3+ 29. Qxf3 exf3+ 30. Kxf3 c5 31. bxc5 Bxc5 32. Rc4 b6 33. a4 Be7 34. Rc7 b5 35. axb5 Rb8 36. Rxe7 Rxb5 37. Rxa7 Rb2 38. c4 Rb3+ 39. Kg2 Rc3 40. Ra4 g6 41. f3 f5 42. gxf5 gxf5 43. Kg3 Kg7 44. h3 Kg6 45. Kf4 h5 46. h4 Rc1 47. Ra6+ Kf7 48. Kxf5 Rxc4 49. Rf6+ Ke7 50. Re6+ Kd7 51. Rh6 Rc3 52. f4 Rc5+ 53. Kg6 Rc6+ 54. Kxh5 Rxh6+ 55. Kxh6 Ke6 56. Kg7 Kf5 57. h5 Kxf4 58. h6 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game123.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e6 2. Nc3 Bb4 3. Qc2 Nf6 4. a3 Be7 5. g3 O-O 6. Bg2 d5 7. d3 d4 8. Ne4 e5 9. Nxf6+ Bxf6 10. b4 c6 11. Bb2 Bf5 12. Rb1 Nd7 13. Qb3 Be6 14. Nf3 Nb6 15. O-O Nd7 16. Qc2 Rc8 17. Qa4 a6 18. e3 b5 19. Qxa6 Nb6 20. cxb5 Ra8 21. Qb7 Bd5 22. bxc6 Na4 23. exd4 Nxb2 24. Rxb2 Re8 25. Nxe5 Bxe5 26. dxe5 Re7 27. Qb5 Bxg2 28. Kxg2 Rb8 29. Qc5 Rc7 30. d4 h6 31. b5 Qg5 32. e6 Qxc5 33. dxc5 fxe6 34. Re1 Kf7 35. h4 Rxc6 36. bxc6 Rxb2 37. c7 Rb3 38. c8=Q 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game124.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Bc4 Nf6 3. d3 d5 4. exd5 Nxd5 5. Nf3 Nc6 6. Bd2 Be6 7. Nc3 Bd6 8. Nxd5 Bxd5 9. Bxd5 Bc5 10. Bxc6+ bxc6 11. O-O Bd6 12. Bc3 e4 13. Nd4 Qh4 14. g3 Qh6 15. Qe2 O-O-O 16. Qxe4 c5 17. Qa8+ Kd7 18. Qc6+ Kc8 19. Nb5 Bf4 20. Qxh6 Bxh6 21. Nxa7+ Kb7 22. Nb5 Bg5 23. Bxg7 Rhg8 24. Be5 Rd7 25. Nc3 h5 26. Ne4 Be7 27. f4 h4 28. Kg2 hxg3 29. hxg3 Bh4 30. a4 f5 31. Ng5 Bxg5 32. fxg5 Rxg5 33. a5 Rd5 34. Bf4 Rh5 35. a6+ Ka7 36. Be3 Re5 37. Bf2 Rg5 38. Ra5 f4 39. Rxc5 Rxc5 40. Bxc5+ Rxc5 41. gxf4 Kxa6 42. Rf2 Kb6 43. f5 Kc6 44. f6 Kd7 45. f7 Rg5+ 46. Kf1 Ke7 47. f8=Q+ 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game125.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e5 2. Nc3 d6 3. g3 Nf6 4. Bg2 Be7 5. d3 c6 6. Bd2 O-O 7. Rb1 h6 8. b4 Nbd7 9. b5 cxb5 10. Nxb5 Nc5 11. Bb4 a6 12. Nc3 Rb8 13. e3 Bg4 14. Nge2 b6 15. Qc2 Bf5 16. Bxc5 dxc5 17. e4 Bg4 18. O-O Be6 19. Nd5 Nxd5 20. exd5 Bf5 21. Rfe1 Bg5 22. Qc3 Qf6 23. Rb3 Rfd8 24. Reb1 Rd6 25. a4 a5 26. h4 Bxh4 27. gxh4 Qxh4 28. Qxe5 Rg6 29. Qxf5 Rg5 30. Qf4 Qh5 31. Qxb8+ Kh7 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game126.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nf6 3. Bc4 Nxe4 4. Nxe5 d5 5. Qf3 Qe7 6. Bxd5 Nf6 7. d4 Nxd5 8. Qxd5 Be6 9. Qxb7 Qb4+ 10. Qxb4 Bxb4+ 11. c3 Bd6 12. Bf4 O-O 13. O-O f6 14. Nd3 Bc4 15. Bxd6 Bxd3 16. Bxf8 Bxf1 17. Kxf1 Kxf8 18. Nd2 Nd7 19. Nc4 c5 20. Rd1 cxd4 21. Rxd4 Ne5 22. Nxe5 fxe5 23. Rd5 Re8 24. Ke2 Kf7 25. Ke3 Kf6 26. Ke4 g5 27. c4 h5 28. c5 Ke6 29. Rxe5+ Kd7 30. Rxe8 Kxe8 31. Kd5 Kd7 32. b4 Kc7 33. a4 a6 34. b5 axb5 35. axb5 Kb7 36. Kd6 Kc8 37. c6 h4 38. b6 g4 39. b7+ Kb8 40. Kd7 g3 41. hxg3 hxg3 42. fxg3 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game127.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bf4 Be7 5. Nf3 O-O 6. e3 Nbd7 7. Bd3 Re8 8. Bc2 Bf8 9. Qd3 e5 10. Nxe5 Ne4 11. f3 Nxe5 12. Bxe5 Bf5 13. fxe4 dxe4 14. Nxe4 f6 15. Nxf6+ Qxf6 16. Qxf5 Qxf5 17. Bxf5 g6 18. Bc2 Bb4+ 19. Ke2 Re7 20. Rhf1 Rae8 21. a3 Bd6 22. Bxd6 Rxe3+ 23. Kd1 cxd6 24. Kc1 R8e7 25. Kb1 Kg7 26. Ka2 a6 27. d5 b5 28. cxb5 axb5 29. Rad1 Ra7 30. Bb3 b4 31. a4 Re2 32. Rf3 Rxg2 33. Rdf1 Rxh2 34. Rf6 Ra5 35. Rxd6 Rd2 36. Rd7+ Kh6 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game128.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1/2-1/2"]
+
+1. c4 e5 2. g3 f5 3. Bg2 Nf6 4. e3 Bc5 5. Nc3 O-O 6. d4 Nc6 7. dxc5 b6 8. Bxc6 dxc6 9. Qxd8 Rxd8 10. Nge2 Ba6 11. cxb6 axb6 12. b3 b5 13. cxb5 cxb5 14. O-O c6 15. Bb2 b4 16. Rfd1 bxc3 17. Rxd8+ Rxd8 18. Bxc3 Bxe2 19. Bxe5 Nd5 20. a4 Kf7 21. a5 Ra8 22. Rc1 Bb5 23. Bd6 Nb4 24. Bxb4 Rd8 25. h3 Ke6 26. g4 Ke5 27. gxf5 Kxf5 28. Rc5+ Ke4 29. Rg5 g6 30. h4 Rd3 31. h5 Rxb3 32. hxg6 hxg6 33. Rg4+ Kf3 34. Rf4+ Ke2 35. Kg2 Rb2 36. Bc5 Ke1 37. Bd4 Bf1+ 38. Kg3 Ra2 39. Bb6 Bb5 40. Rf6 g5 41. Kg4 Rxf2 42. Rxf2 Kxf2 43. Kxg5 Kf3 44. Kf6 Ke4 45. Ke6 Kd3 46. Kd6 Kc4 47. e4 Kd3 48. e5 Ke4 49. e6 Bc4 50. e7 Bf7 51. Kxc6 Ke5 52. Kd7 Kd5 53. e8=Q Bxe8+ 54. Kxe8 Kc6 55. Ke7 Kb7 56. Kd6 Ka6 57. Kc6 1/2-1/2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game129.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nf6 3. Bc4 d5 4. exd5 Nxd5 5. Nxe5 Qe7 6. Qe2 c6 7. O-O Be6 8. d4 Nd7 9. Nxd7 Qxd7 10. Re1 Bd6 11. c3 O-O 12. Nd2 Qc7 13. Nf3 Rfe8 14. Bd2 Bg4 15. Qd3 Bxf3 16. Rxe8+ Rxe8 17. Qxf3 Bxh2+ 18. Kf1 Bf4 19. Re1 Rxe1+ 20. Bxe1 Kf8 21. g3 Bg5 22. Qf5 h6 23. Qh7 Ke7 24. Qxg7 b5 25. Bb3 a5 26. Bc2 a4 27. b3 axb3 28. Bxb3 Qa5 29. Qe5+ Kf8 30. Bxd5 cxd5 31. Qxd5 b4 32. cxb4 Qxd5 33. a4 Qxd4 34. a5 Bd2 35. a6 Bxb4 36. a7 Qc4+ 37. Kg1 Qa6 38. Bxb4+ Ke8 39. Bc5 Kd7 40. Be3 Kc6 41. Kg2 f5 42. Kf3 h5 43. Kf4 Qb5 44. a8=Q+ 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game130.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 c6 2. Nc3 Nf6 3. g3 d5 4. cxd5 cxd5 5. Bg2 Bf5 6. d4 e6 7. e3 Bd6 8. Nge2 O-O 9. Qb3 Qc7 10. O-O Nbd7 11. Bd2 h6 12. Rac1 Qb6 13. Qxb6 Nxb6 14. a3 Rfc8 15. f3 Nc4 16. Be1 Nxe3 17. Rf2 Nc4 18. Na2 Nxb2 19. Bc3 Nd3 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game131.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 d5 2. cxd5 Qxd5 3. Nc3 Qc6 4. d4 Nf6 5. Bg5 Nbd7 6. Qc2 e6 7. e4 Be7 8. g3 O-O 9. Bg2 Re8 10. Nge2 Ng4 11. Bxe7 Rxe7 12. O-O e5 13. d5 Qh6 14. h3 Ndf6 15. Rfd1 Ne3 16. fxe3 Bxh3 17. Bxh3 Qxh3 18. Kf2 Qh2+ 19. Ke1 Rd8 20. Kd2 c6 21. Kc1 cxd5 22. exd5 Rxd5 23. Nxd5 Ne8 24. Nxe7+ 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game132.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. d3 Nf6 2. Bg5 h6 3. Bxf6 exf6 4. e4 Bc5 5. d4 Bb4+ 6. c3 Ba5 7. Bc4 O-O 8. Nf3 d6 9. O-O f5 10. e5 dxe5 11. Nxe5 Nd7 12. Bxf7+ Rxf7 13. Nxf7 Kxf7 14. Qh5+ Kg8 15. Qxf5 Bb6 16. Qd3 Nf6 17. Nd2 Bd7 18. Ne4 Nxe4 19. Qxe4 Bc6 20. Qe6+ Kh8 21. Rfe1 Qg5 22. g3 Qh5 23. Re3 Re8 24. Qc4 Rxe3 25. fxe3 Qf3 26. Qf1 Qxf1+ 27. Kxf1 Kg8 28. Re1 Kf7 29. e4 Bb5+ 30. Kf2 g5 31. b3 a5 32. a4 Bd7 33. Kf1 Bg4 34. e5 Ke6 35. Rc1 Bf3 36. Ke1 g4 37. Kd2 h5 38. Ke3 c5 39. dxc5 Bxc5+ 40. Kf4 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game133.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nf6 3. Nc3 Bb4 4. a3 Bxc3 5. bxc3 Nxe4 6. Bb2 d6 7. d3 Nf6 8. d4 Bg4 9. Be2 Nc6 10. dxe5 Nxe5 11. h3 Bxf3 12. Bxf3 Rb8 13. c4 Nxc4 14. Rb1 O-O 15. O-O Nxb2 16. Rxb2 c5 17. Rxb7 Rxb7 18. Bxb7 Qb6 19. Bf3 h6 20. Qb1 Rd8 21. Rd1 d5 22. c4 d4 23. Qb5 Ne8 24. a4 a5 25. Qxb6 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game134.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 d5 2. cxd5 Nf6 3. Nc3 Nxd5 4. Nxd5 Qxd5 5. Nf3 Bg4 6. d3 e6 7. Nd2 Nd7 8. h3 Bh5 9. Qb3 Bd6 10. e4 Qc6 11. d4 O-O 12. Bb5 Qb6 13. Nc4 Qxd4 14. Bxd7 Qxe4+ 15. Be3 Bf4 16. O-O Be5 17. Rfe1 Qg6 18. Nxe5 Qf5 19. Bc5 Rfd8 20. g4 Bxg4 21. hxg4 Qg5 22. Be7 Qxe7 23. Nxf7 Qxf7 24. Bxe6 Qxe6 25. Qxe6+ Kh8 26. Rad1 b6 27. Qe7 Rf8 28. Rd7 Rg8 29. Rxc7 Rae8 30. Qxe8 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game135.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. b4 e5 2. Bb2 Nc6 3. b5 Nd4 4. e3 Nxb5 5. Bxb5 a6 6. Ba4 b5 7. Bb3 c5 8. a3 c4 9. Ba2 Bb7 10. Bxe5 Bxg2 11. Ne2 Bxh1 12. Ng3 Bc6 13. Nc3 Bxa3 14. Qg4 Bb2 15. Rb1 Bxc3 16. Bxc3 Nf6 17. Qxg7 Rg8 18. Qh6 Rg6 19. Qf4 Qe7 20. Ra1 Nd5 21. Qd4 Nxc3 22. Qxc3 O-O-O 23. Bb1 Qf6 24. Qa5 Bb7 25. c3 d5 26. Bxg6 Qxg6 27. Ke2 Qd3+ 28. Kd1 d4 29. cxd4 Bf3+ 30. Kc1 c3 31. Qxa6+ Kd7 32. Qa7+ Ke8 33. dxc3 Qxc3+ 34. Kb1 Qe1+ 35. Kb2 Qd2+ 36. Kb3 Qd3+ 37. Kb4 Qd2+ 38. Kxb5 Be2+ 39. Nxe2 Qxe2+ 40. Kc5 Qc2+ 41. Kb4 Qd2+ 42. Kc4 Rc8+ 43. Kd5 Rd8+ 44. Ke4 Qc2+ 45. Kf3 Qc6+ 46. Kg3 Qd6+ 47. Kf3 Qd5+ 48. Ke2 Qb5+ 49. Kf3 Qc6+ 50. Ke2 Qc4+ 51. Ke1 Qc3+ 52. Ke2 Qc4+ 53. Ke1 Qb4+ 54. Kf1 Qc4+ 55. Kg2 Qd5+ 56. f3 Qd7 57. Qxd7+ Rxd7 58. Ra8+ Ke7 59. Rh8 Ke6 60. Rxh7 Ra7 61. Rh6+ Ke7 62. Kg3 Rd7 63. Rh7 Rd6 64. Kf4 Rf6+ 65. Ke4 Rg6 66. h4 Re6+ 67. Kf5 Rf6+ 68. Kg5 Rb6 69. h5 Rb3 70. Kf4 Rb6 71. Rg7 Rf6+ 72. Kg5 Rb6 73. h6 Rb8 74. h7 Rh8 75. Kh6 Kf6 76. Rg8 Rxh7+ 77. Kxh7 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game136.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. d4 d5 2. Nf3 Nf6 3. Nc3 e6 4. Bg5 Be7 5. Qd2 h6 6. Bh4 O-O 7. Ne5 a6 8. f3 Qd6 9. g4 Ne4 10. Nxe4 Bxh4+ 11. Ng3 Bg5 12. f4 Bh4 13. O-O-O Bxg3 14. hxg3 Nd7 15. g5 Nxe5 16. fxe5 Qe7 17. gxh6 f5 18. Qf4 g5 19. Qf2 Rf7 20. e3 Rh7 21. Be2 Bd7 22. g4 Kf7 23. gxf5 exf5 24. Bh5+ Ke6 25. Bg6 Rhh8 26. Qxf5# 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game137.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 e5 2. Nc3 c6 3. g3 Bc5 4. Bg2 Qf6 5. e3 Qe6 6. Nge2 h5 7. O-O h4 8. Bf3 hxg3 9. fxg3 Qh3 10. Rf2 Nf6 11. d4 Bb4 12. dxe5 Ng4 13. Nf4 Nxf2 14. Nxh3 Nxd1 15. Nxd1 Rxh3 16. Nf2 Rh8 17. Rb1 Na6 18. b3 Nc7 19. Bb2 d6 20. exd6 Bxd6 21. Bxg7 Rg8 22. Bf6 Rg6 23. Bh4 Ne6 24. Rd1 Be7 25. Be4 Rg8 26. Bf5 Bxh4 27. Bxe6 fxe6 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game138.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 Nf6 2. Nc3 g6 3. g3 Bg7 4. Bg2 d6 5. d3 O-O 6. Bd2 e5 7. e3 Be6 8. Nge2 Qd7 9. O-O Bh3 10. Bxb7 Bxf1 11. Bxa8 Bh3 12. Qa4 c6 13. Nd5 Nxd5 14. cxd5 cxd5 15. Qxd7 Nxd7 16. Bxd5 Kh8 17. Nc3 Nc5 18. Bg2 Bxg2 19. Kxg2 Nxd3 20. Na4 f5 21. Rd1 f4 22. exf4 exf4 23. Bxf4 Nxf4+ 24. gxf4 Rxf4 25. Rxd6 Be5 26. Rd8+ Kg7 27. Nc5 Kh6 28. Rd7 Bxb2 29. Ne6 Rf6 30. Nc5 Ba3 31. Ne4 Re6 32. Rxa7 Bb2 33. Nc5 Rc6 34. Nd3 Bd4 35. Ra8 Rc2 36. a4 Rd2 37. Nf4 Rxf2+ 38. Kg3 Rf1 39. Ng2 Bf2+ 40. Kh3 Ra1 41. a5 Ra3+ 42. Kg4 Bg1 43. a6 Bxh2 44. Nf4 Bg1 45. Ne6 Ra4+ 46. Kf3 Bb6 47. Ke2 Re4+ 48. Kd3 Rxe6 49. a7 Re7 50. Kc4 Rxa7 51. Rxa7 Bxa7 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game139.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 e5 2. Nc3 Nf6 3. g3 c6 4. Bg2 d5 5. cxd5 Nxd5 6. Nxd5 cxd5 7. d3 Nc6 8. Bd2 Be7 9. Qb3 Be6 10. Qxb7 Nd4 11. Rc1 O-O 12. Ba5 Qxa5+ 13. Rc3 Bb4 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game140.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 e6 2. Nc3 d5 3. cxd5 exd5 4. d4 Nf6 5. g3 c6 6. Bg2 Bf5 7. e4 Bg4 8. Qc2 dxe4 9. Nxe4 Nbd7 10. Bg5 Be7 11. Bxf6 Bxf6 12. Nf3 O-O 13. O-O Qb6 14. Nd6 Bxd4 15. Nxd4 Qxd4 16. Nc4 Nf6 17. Ne3 Be6 18. Rad1 Qb6 19. Nc4 Qc7 20. Rfe1 Rad8 21. Rxd8 Rxd8 22. Ne3 Qc8 23. Nf5 Bxf5 24. Qb3 Be6 25. Qe3 Re8 26. Qxa7 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game141.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 d6 2. g3 Nf6 3. Bg2 g6 4. Nc3 Bg7 5. d3 c6 6. e3 O-O 7. Nge2 Nbd7 8. O-O Nc5 9. Qc2 Bf5 10. e4 Bg4 11. d4 Bxe2 12. Qxe2 Ncd7 13. Bg5 Qb6 14. Be3 Qxb2 15. Qxb2 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game142.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. c4 Nf6 2. Nc3 b6 3. g3 Bb7 4. Nf3 e6 5. Bg2 Be7 6. O-O O-O 7. d3 d6 8. Bd2 Nbd7 9. Re1 c5 10. e3 Rb8 11. d4 cxd4 12. exd4 Qc7 13. d5 Qxc4 14. dxe6 fxe6 15. Bf1 Qg4 16. Nd4 Qxd4 17. Rxe6 Ne5 18. Qb3 Kh8 19. Rxe7 Qxd2 20. Rd1 Nf3+ 21. Kh1 Qh6 22. h4 Nd4+ 23. Rxb7 Nxb3 24. Rxb8 Rxb8 25. axb3 Nd7 26. Ne4 Qe6 27. Bg2 Rf8 28. Rxd6 Qxb3 29. Rxd7 Qxb2 30. Kh2 Qb5 31. Nd6 Qxd7 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game143.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. e4 e5 2. d4 exd4 3. Bc4 Nc6 4. Nf3 d6 5. Ng5 f6 6. Bf7+ Ke7 7. Qg4 Bxg4 8. Nd2 fxg5 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game144.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. d4 d5 2. Nf3 Bf5 3. e3 Nc6 4. c3 e6 5. Nbd2 Nf6 6. Be2 Ne4 7. O-O Nxd2 8. Nxd2 Bd6 9. Bf3 O-O 10. e4 dxe4 11. Nxe4 Bxe4 12. Bxe4 Qh4 13. g3 Qxe4 14. Re1 Qg6 15. c4 Bb4 16. Re3 Rad8 17. Qb3 Ba5 18. Qxb7 Nxd4 19. Qxa7 Bb6 20. Qa4 Nc2 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game145.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nxf7 Kxf7 5. d4 Be6 6. Nc3 Be7 7. Bd3 Rf8 8. O-O Nc6 9. d5 Nxd5 10. exd5 Bd7 11. dxc6 Bxc6 12. Bxh7 Rh8 13. Be4 Bf6 14. Bf4 Bxc3 15. Bxc6 Qh4 16. Bg3 Qh5 17. Bd5+ Ke7 18. bxc3 c6 19. Bb3 d5 20. Qxh5 Rxh5 21. c4 Rd8 22. cxd5 Rdxd5 23. Bxd5 cxd5 24. Rfe1+ 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game146.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1/2-1/2"]
+
+1. c4 e5 2. Nc3 Qh4 3. Nf3 Qxc4 4. Nxe5 Qe6 5. d4 d6 6. Nf3 Nf6 7. e3 Ne4 8. Nxe4 Qxe4 9. Bd3 Qc6 10. a4 a6 11. b4 Qb6 12. Bd2 d5 13. a5 Qd6 14. O-O Nc6 15. Qb3 Nxb4 16. Bxb4 Qxb4 17. Qxd5 c6 18. Qe5+ Qe7 19. Bc4 Qxe5 20. Nxe5 Be6 21. Bxe6 fxe6 22. Rab1 Rb8 23. Nxc6 Rc8 24. Ne5 Bd6 25. Rxb7 Bxe5 26. dxe5 O-O 27. h3 Rc5 28. Rb6 Rxa5 29. Rxe6 Ra2 30. Rb1 a5 31. Reb6 Raxf2 32. e6 Re2 33. e7 Re8 34. Rb8 Kf7 35. Rxe8 Kxe8 36. Ra1 Rxe3 37. Rxa5 Rxe7 38. g4 Kf7 39. h4 g6 40. Ra4 Kf6 41. Kg2 h5 42. gxh5 gxh5 43. Rf4+ Ke5 44. Kg3 Rg7+ 45. Kf3 Ke6 46. Ke4 Rg4 47. Rxg4 hxg4 48. Kf4 g3 49. Kxg3 Kf6 50. Kg4 Kg6 51. h5+ Kh6 52. Kh4 Kg7 53. Kg5 Kh7 54. h6 Kg8 55. Kg6 Kh8 56. Kh5 Kh7 57. Kg5 Kg8 58. Kg6 Kh8 59. h7 1/2-1/2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game147.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e5 2. Nc3 Nf6 3. Nf3 b6 4. Nxe5 Bb7 5. d4 d6 6. Nf3 Be7 7. Bf4 O-O 8. h3 Nbd7 9. e3 Re8 10. Be2 d5 11. cxd5 Nxd5 12. Nxd5 Bxd5 13. O-O Nf6 14. a3 a5 15. Rc1 c6 16. Ne5 a4 17. Nxc6 Bxc6 18. Rxc6 Qd7 19. Qc2 Nd5 20. Bg3 Rac8 21. Rc1 Bg5 22. Rxc8 Rxc8 23. Qxc8+ Qxc8 24. Rxc8+ 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game148.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 e5 2. Nc3 c5 3. g3 Nc6 4. Bg2 d6 5. d3 Bd7 6. e3 Nf6 7. Nge2 Be7 8. O-O O-O 9. d4 cxd4 10. exd4 exd4 11. Nxd4 Nxd4 12. Qxd4 Rb8 13. Qxa7 b5 14. Nxb5 Bxb5 15. cxb5 Rxb5 16. Re1 Re8 17. Bc6 Qb6 18. Qxb6 Rxb6 19. Bxe8 Bd8 20. Bd2 Rxb2 21. Bc3 Rc2 22. Bxf6 Bxf6 23. Ba4 h6 24. Bxc2 1-0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game149.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "0-1"]
+
+1. d4 d5 2. Nc3 Nf6 3. Bf4 e6 4. e3 Be7 5. Nf3 O-O 6. Bd3 Nc6 7. O-O Re8 8. a3 a6 9. Re1 Bd6 10. Bxd6 Qxd6 11. b4 e5 12. dxe5 Nxe5 13. Nxe5 Qxe5 14. e4 Qxc3 15. e5 Rxe5 16. Rxe5 Qxe5 17. f3 Bf5 18. Bxf5 Qxf5 19. Rb1 h6 20. Rb3 Qe5 21. Rd3 Re8 22. Kf1 d4 23. Rxd4 Qb5+ 24. c4 Qe5 25. g3 Qe3 26. Rd3 Qe6 27. Rd4 b6 28. Kf2 c5 29. bxc5 bxc5 30. Rd6 Qxc4 31. Kg2 Qe2+ 32. Qxe2 Rxe2+ 33. Kg1 Ra2 34. Rxa6 c4 35. Rc6 Rxa3 36. Rxc4 Rxf3 37. Kg2 Rf5 38. h3 g6 39. g4 Rd5 40. Kf3 Rd3+ 41. Kg2 h5 42. g5 Nd5 43. Rc8+ Kg7 44. h4 Nf4+ 45. Kf2 Rh3 46. Rc7 Rxh4 47. Kg3 Rg4+ 48. Kf3 Ne6 49. Rc1 Nxg5+ 50. Ke3 Ne6 51. Kf3 h4 52. Kxg4 g5 53. Rf1 Kg6 54. Rf2 f5+ 55. Kf3 Nd4+ 56. Ke3 Ne6 57. Kd3 g4 58. Ke3 Kg5 59. Kd3 f4 60. Ke4 g3 61. Rf1 h3 0-1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/game150.pgn	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,3 @@
+[Result "1-0"]
+
+1. c4 Nf6 2. Nc3 e5 3. d3 c6 4. Bd2 d5 5. cxd5 cxd5 6. e3 Bd6 7. Nge2 O-O 8. g3 Re8 9. Bg2 Nc6 10. Nxd5 Nxd5 11. Bxd5 Bh3 12. Nc3 Bb4 13. Qf3 Be6 14. Bxc6 bxc6 15. Qxc6 Rc8 16. Qb5 Bxc3 17. Bxc3 Qd5 18. Qxd5 Bxd5 19. e4 Be6 20. O-O Red8 21. Rfd1 Bg4 22. Rd2 Rc6 23. Bxe5 f6 24. Bf4 Rdc8 25. Kg2 g5 26. Be3 a6 27. h3 Bh5 28. b4 Be8 29. a3 Rc2 30. Rxc2 Rxc2 31. Rc1 Rxc1 32. Bxc1 Bb5 33. d4 Kf7 34. f4 gxf4 35. gxf4 Ke6 36. Kf3 Bc6 37. Ke3 f5 38. d5+ 1-0
--- a/test/run-tests.c	Sat Jul 18 22:00:49 2026 +0200
+++ b/test/run-tests.c	Sun Jul 19 17:13:16 2026 +0200
@@ -29,15 +29,21 @@
 
 #include "ucxtest.h"
 
-static CX_TEST(test_dummy) {
-    CX_TEST_DO {
-        CX_TEST_ASSERT(1);
-    }
-}
+CxTestSuite *test_real_pgn_suite(void);
 
 int main(void) {
-    CxTestSuite *suite = cx_test_suite_new("dummy");
-    cx_test_register(suite, test_dummy);
-    cx_test_run_stdout(suite);
-    cx_test_suite_free(suite);
+    CxTestSuite *suites[] = {
+        test_real_pgn_suite()
+    };
+    size_t suites_count = sizeof(suites)/sizeof(CxTestSuite *);
+    unsigned int failure = 0, success = 0;
+    for (size_t i = 0; i < suites_count; i++) {
+        cx_test_run_stdout(suites[i]);
+        failure += suites[i]->failure;
+        success += suites[i]->success;
+        cx_test_suite_free(suites[i]);
+    }
+    printf("\nTotal failure: %u | success: %u\n", failure, success);
+
+    return failure > 0 ? 1 : 0;
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/test-real-pgn.c	Sun Jul 19 17:13:16 2026 +0200
@@ -0,0 +1,662 @@
+/*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2026 Mike Becker. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *   1. Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *
+ *   2. Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "ucxtest.h"
+#include "chess/pgn.h"
+
+#if __STDC_VERSION__ < 202310L
+#error Need C23 compiler to compile this test.
+#endif
+
+const char pgn_data[150][1500];
+
+static CX_TEST(test_real_pgn) {
+    static unsigned index = 0;
+    ++index;
+    GameState gamestate;
+    gamestate_init(&gamestate);
+    CX_TEST_DO {
+        int result = parse_pgn(pgn_data[index-1], &gamestate);
+        char msg[32];
+        sprintf(msg, "failed to parse game%03u.pgn", index);
+        CX_TEST_ASSERTM(result == pgn_no_error, msg);
+    }
+    gamestate_cleanup(&gamestate);
+}
+
+CxTestSuite* test_real_pgn_suite(void) {
+    CxTestSuite* suite = cx_test_suite_new("Real PGN Files");
+    for (unsigned i = 0 ; i < 150 ; i++) {
+        cx_test_register(suite, test_real_pgn);
+    }
+    return suite;
+}
+
+const char pgn_data[150][1500] = {
+    {
+#embed "data/game001.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game002.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game003.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game004.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game005.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game006.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game007.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game008.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game009.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game010.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game011.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game012.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game013.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game014.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game015.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game016.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game017.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game018.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game019.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game020.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game021.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game022.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game023.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game024.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game025.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game026.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game027.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game028.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game029.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game030.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game031.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game032.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game033.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game034.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game035.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game036.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game037.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game038.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game039.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game040.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game041.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game042.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game043.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game044.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game045.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game046.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game047.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game048.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game049.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game050.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game051.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game052.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game053.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game054.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game055.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game056.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game057.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game058.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game059.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game060.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game061.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game062.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game063.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game064.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game065.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game066.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game067.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game068.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game069.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game070.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game071.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game072.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game073.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game074.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game075.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game076.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game077.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game078.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game079.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game080.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game081.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game082.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game083.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game084.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game085.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game086.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game087.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game088.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game089.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game090.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game091.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game092.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game093.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game094.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game095.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game096.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game097.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game098.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game099.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game100.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game101.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game102.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game103.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game104.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game105.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game106.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game107.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game108.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game109.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game110.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game111.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game112.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game113.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game114.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game115.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game116.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game117.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game118.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game119.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game120.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game121.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game122.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game123.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game124.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game125.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game126.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game127.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game128.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game129.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game130.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game131.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game132.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game133.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game134.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game135.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game136.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game137.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game138.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game139.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game140.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game141.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game142.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game143.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game144.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game145.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game146.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game147.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game148.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game149.pgn"
+        , '\0'
+    },
+    {
+#embed "data/game150.pgn"
+        , '\0'
+    },
+};
--- a/test/ucxtest.h	Sat Jul 18 22:00:49 2026 +0200
+++ b/test/ucxtest.h	Sun Jul 19 17:13:16 2026 +0200
@@ -86,6 +86,7 @@
 
 #if !defined(__clang__) && __GNUC__ > 3
 #pragma GCC diagnostic ignored "-Wclobbered"
+#pragma GCC diagnostic ignored "-Wunused-function"
 #endif
 
 /** Type for the CxTestSuite. */

mercurial