diff --git a/puzzles files/binary/10x10 Binary Hard/10x10 Binary Hard 1 b/puzzles files/binary/10x10 Binary Hard/10x10 Binary Hard 1
index 42ccf371b..2d1df1068 100644
--- a/puzzles files/binary/10x10 Binary Hard/10x10 Binary Hard 1
+++ b/puzzles files/binary/10x10 Binary Hard/10x10 Binary Hard 1
@@ -1,7 +1,6 @@
-
-
+
|
@@ -107,5 +106,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/10x10 Binary Hard/10x10 Binary Hard 2 b/puzzles files/binary/10x10 Binary Hard/10x10 Binary Hard 2
index d73caa5d2..1e85a347b 100644
--- a/puzzles files/binary/10x10 Binary Hard/10x10 Binary Hard 2
+++ b/puzzles files/binary/10x10 Binary Hard/10x10 Binary Hard 2
@@ -1,7 +1,6 @@
-
-
+
|
@@ -107,5 +106,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/10x10 Binary Hard/10x10 Binary Hard 3 b/puzzles files/binary/10x10 Binary Hard/10x10 Binary Hard 3
index 99ec9769b..63347cdc1 100644
--- a/puzzles files/binary/10x10 Binary Hard/10x10 Binary Hard 3
+++ b/puzzles files/binary/10x10 Binary Hard/10x10 Binary Hard 3
@@ -1,7 +1,6 @@
-
-
+
|
@@ -107,5 +106,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/10x10 Binary Medium/10x10 Binary Medium 1 b/puzzles files/binary/10x10 Binary Medium/10x10 Binary Medium 1
index d203617c8..aca7ad302 100644
--- a/puzzles files/binary/10x10 Binary Medium/10x10 Binary Medium 1
+++ b/puzzles files/binary/10x10 Binary Medium/10x10 Binary Medium 1
@@ -1,7 +1,6 @@
-
-
+
|
@@ -107,5 +106,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/10x10 Binary Medium/10x10 Binary Medium 2 b/puzzles files/binary/10x10 Binary Medium/10x10 Binary Medium 2
index db56f04f3..aee449977 100644
--- a/puzzles files/binary/10x10 Binary Medium/10x10 Binary Medium 2
+++ b/puzzles files/binary/10x10 Binary Medium/10x10 Binary Medium 2
@@ -1,7 +1,6 @@
-
-
+
|
@@ -107,5 +106,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/10x10 Binary Medium/10x10 Binary Medium 3 b/puzzles files/binary/10x10 Binary Medium/10x10 Binary Medium 3
index 11940a6eb..435d46ad6 100644
--- a/puzzles files/binary/10x10 Binary Medium/10x10 Binary Medium 3
+++ b/puzzles files/binary/10x10 Binary Medium/10x10 Binary Medium 3
@@ -1,7 +1,6 @@
-
-
+
|
@@ -107,5 +106,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/10x10 Binary Very Hard/10x10 Binary Very Hard 1 b/puzzles files/binary/10x10 Binary Very Hard/10x10 Binary Very Hard 1
index 828a450cf..00444c768 100644
--- a/puzzles files/binary/10x10 Binary Very Hard/10x10 Binary Very Hard 1
+++ b/puzzles files/binary/10x10 Binary Very Hard/10x10 Binary Very Hard 1
@@ -1,7 +1,6 @@
-
-
+
|
@@ -107,5 +106,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 1 b/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 1
index 7b22ffc10..17d23f5eb 100644
--- a/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 1
+++ b/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 1
@@ -1,6 +1,5 @@
-
-
+
|
@@ -18,5 +17,5 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 2 b/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 2
index ea8ef93b0..7c850ac15 100644
--- a/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 2
+++ b/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 2
@@ -1,6 +1,5 @@
-
-
+
|
@@ -17,5 +16,5 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 3 b/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 3
index 0f0ff745e..ba58253ff 100644
--- a/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 3
+++ b/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 3
@@ -1,6 +1,5 @@
-
-
+
|
@@ -21,5 +20,5 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 4 b/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 4
index da76d067b..9c5bb19e2 100644
--- a/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 4
+++ b/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 4
@@ -1,6 +1,5 @@
-
-
+
|
@@ -24,5 +23,5 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 5 b/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 5
index a1ea13988..3340369af 100644
--- a/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 5
+++ b/puzzles files/binary/6x6 Binary Easy/6x6 Binary Easy 5
@@ -1,7 +1,6 @@
-
-
+
|
@@ -43,5 +42,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 Binary Hard/6x6 Binary Hard 1 b/puzzles files/binary/6x6 Binary Hard/6x6 Binary Hard 1
index 5f7f72a8a..8c668d2d5 100644
--- a/puzzles files/binary/6x6 Binary Hard/6x6 Binary Hard 1
+++ b/puzzles files/binary/6x6 Binary Hard/6x6 Binary Hard 1
@@ -1,7 +1,6 @@
-
-
+
|
@@ -43,5 +42,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 Binary Hard/6x6 Binary Hard 2 b/puzzles files/binary/6x6 Binary Hard/6x6 Binary Hard 2
index a4ed30c31..33169d526 100644
--- a/puzzles files/binary/6x6 Binary Hard/6x6 Binary Hard 2
+++ b/puzzles files/binary/6x6 Binary Hard/6x6 Binary Hard 2
@@ -1,7 +1,6 @@
-
-
+
|
@@ -43,5 +42,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 Binary Hard/6x6 Binary Hard 3 b/puzzles files/binary/6x6 Binary Hard/6x6 Binary Hard 3
index fc0e413c1..0a51a82f2 100644
--- a/puzzles files/binary/6x6 Binary Hard/6x6 Binary Hard 3
+++ b/puzzles files/binary/6x6 Binary Hard/6x6 Binary Hard 3
@@ -1,7 +1,6 @@
-
-
+
|
@@ -43,5 +42,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 Binary Medium/6x6 Binary Medium 1 b/puzzles files/binary/6x6 Binary Medium/6x6 Binary Medium 1
index a5ab8a2dc..eba4d6f14 100644
--- a/puzzles files/binary/6x6 Binary Medium/6x6 Binary Medium 1
+++ b/puzzles files/binary/6x6 Binary Medium/6x6 Binary Medium 1
@@ -1,7 +1,6 @@
-
-
+
|
@@ -43,5 +42,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 Binary Medium/6x6 Binary Medium 2 b/puzzles files/binary/6x6 Binary Medium/6x6 Binary Medium 2
index 4be5fdaad..d619635f6 100644
--- a/puzzles files/binary/6x6 Binary Medium/6x6 Binary Medium 2
+++ b/puzzles files/binary/6x6 Binary Medium/6x6 Binary Medium 2
@@ -1,7 +1,6 @@
-
-
+
|
@@ -43,5 +42,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 Binary Medium/6x6 Binary Medium 3 b/puzzles files/binary/6x6 Binary Medium/6x6 Binary Medium 3
index eba370cab..c499a87f5 100644
--- a/puzzles files/binary/6x6 Binary Medium/6x6 Binary Medium 3
+++ b/puzzles files/binary/6x6 Binary Medium/6x6 Binary Medium 3
@@ -1,7 +1,6 @@
-
-
+
|
@@ -43,5 +42,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 Binary Very Hard/6x6 Binary Very Hard 1 b/puzzles files/binary/6x6 Binary Very Hard/6x6 Binary Very Hard 1
index faa68fa5e..a08befdb3 100644
--- a/puzzles files/binary/6x6 Binary Very Hard/6x6 Binary Very Hard 1
+++ b/puzzles files/binary/6x6 Binary Very Hard/6x6 Binary Very Hard 1
@@ -1,7 +1,6 @@
-
-
+
|
@@ -43,5 +42,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 Binary Very Hard/6x6 Binary Very Hard 2 b/puzzles files/binary/6x6 Binary Very Hard/6x6 Binary Very Hard 2
index 3c707bdaa..4edec7a04 100644
--- a/puzzles files/binary/6x6 Binary Very Hard/6x6 Binary Very Hard 2
+++ b/puzzles files/binary/6x6 Binary Very Hard/6x6 Binary Very Hard 2
@@ -1,7 +1,6 @@
-
-
+
|
@@ -43,5 +42,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 Binary Very Hard/6x6 Binary Very Hard 3 b/puzzles files/binary/6x6 Binary Very Hard/6x6 Binary Very Hard 3
index 217a032d8..e1110d6de 100644
--- a/puzzles files/binary/6x6 Binary Very Hard/6x6 Binary Very Hard 3
+++ b/puzzles files/binary/6x6 Binary Very Hard/6x6 Binary Very Hard 3
@@ -1,7 +1,6 @@
-
-
+
|
@@ -43,5 +42,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 easy/089764562 b/puzzles files/binary/6x6 easy/089764562
index 7b22ffc10..5eeaf6f69 100644
--- a/puzzles files/binary/6x6 easy/089764562
+++ b/puzzles files/binary/6x6 easy/089764562
@@ -1,6 +1,5 @@
-
-
+
|
@@ -18,5 +17,5 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 easy/128903434 b/puzzles files/binary/6x6 easy/128903434
index ea8ef93b0..498a43609 100644
--- a/puzzles files/binary/6x6 easy/128903434
+++ b/puzzles files/binary/6x6 easy/128903434
@@ -1,6 +1,5 @@
-
-
+
|
@@ -17,5 +16,5 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 easy/876868768 b/puzzles files/binary/6x6 easy/876868768
index 0f0ff745e..a1bc998d4 100644
--- a/puzzles files/binary/6x6 easy/876868768
+++ b/puzzles files/binary/6x6 easy/876868768
@@ -1,6 +1,5 @@
-
-
+
|
@@ -21,5 +20,5 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/binary/6x6 easy/927364891 b/puzzles files/binary/6x6 easy/927364891
index da76d067b..6948b8f45 100644
--- a/puzzles files/binary/6x6 easy/927364891
+++ b/puzzles files/binary/6x6 easy/927364891
@@ -1,6 +1,5 @@
-
-
+
|
@@ -24,5 +23,5 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/binary/8x8 Binary Easy/8x8 Binary Easy 1 b/puzzles files/binary/8x8 Binary Easy/8x8 Binary Easy 1
index befd674f9..a15370f48 100644
--- a/puzzles files/binary/8x8 Binary Easy/8x8 Binary Easy 1
+++ b/puzzles files/binary/8x8 Binary Easy/8x8 Binary Easy 1
@@ -1,7 +1,6 @@
-
-
+
|
@@ -71,5 +70,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/8x8 Binary Easy/8x8 Binary Easy 2 b/puzzles files/binary/8x8 Binary Easy/8x8 Binary Easy 2
index 724426c26..509f7b57a 100644
--- a/puzzles files/binary/8x8 Binary Easy/8x8 Binary Easy 2
+++ b/puzzles files/binary/8x8 Binary Easy/8x8 Binary Easy 2
@@ -1,7 +1,6 @@
-
-
+
|
@@ -71,5 +70,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/8x8 Binary Easy/8x8 Binary Easy 3 b/puzzles files/binary/8x8 Binary Easy/8x8 Binary Easy 3
index 92a96c72b..05d19ec4b 100644
--- a/puzzles files/binary/8x8 Binary Easy/8x8 Binary Easy 3
+++ b/puzzles files/binary/8x8 Binary Easy/8x8 Binary Easy 3
@@ -1,7 +1,6 @@
-
-
+
|
@@ -71,5 +70,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/8x8 Binary Hard/8x8 Binary Hard 1 b/puzzles files/binary/8x8 Binary Hard/8x8 Binary Hard 1
index 34eaf8388..6ebdb6425 100644
--- a/puzzles files/binary/8x8 Binary Hard/8x8 Binary Hard 1
+++ b/puzzles files/binary/8x8 Binary Hard/8x8 Binary Hard 1
@@ -1,7 +1,6 @@
-
-
+
|
@@ -71,5 +70,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/8x8 Binary Hard/8x8 Binary Hard 2 b/puzzles files/binary/8x8 Binary Hard/8x8 Binary Hard 2
index 9ef23277e..2b3ede4a6 100644
--- a/puzzles files/binary/8x8 Binary Hard/8x8 Binary Hard 2
+++ b/puzzles files/binary/8x8 Binary Hard/8x8 Binary Hard 2
@@ -1,7 +1,6 @@
-
-
+
|
@@ -71,5 +70,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/8x8 Binary Hard/8x8 Binary Hard 3 b/puzzles files/binary/8x8 Binary Hard/8x8 Binary Hard 3
index 287ff6f68..0cfa078eb 100644
--- a/puzzles files/binary/8x8 Binary Hard/8x8 Binary Hard 3
+++ b/puzzles files/binary/8x8 Binary Hard/8x8 Binary Hard 3
@@ -1,7 +1,6 @@
-
-
+
|
@@ -71,5 +70,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/8x8 Binary Medium/8x8 Binary Medium 1 b/puzzles files/binary/8x8 Binary Medium/8x8 Binary Medium 1
index 47dae23dc..9cf87e342 100644
--- a/puzzles files/binary/8x8 Binary Medium/8x8 Binary Medium 1
+++ b/puzzles files/binary/8x8 Binary Medium/8x8 Binary Medium 1
@@ -1,7 +1,6 @@
-
-
+
|
@@ -71,5 +70,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/8x8 Binary Medium/8x8 Binary Medium 2 b/puzzles files/binary/8x8 Binary Medium/8x8 Binary Medium 2
index ae4cb8bb0..bd41ef23b 100644
--- a/puzzles files/binary/8x8 Binary Medium/8x8 Binary Medium 2
+++ b/puzzles files/binary/8x8 Binary Medium/8x8 Binary Medium 2
@@ -1,7 +1,6 @@
-
-
+
|
@@ -71,5 +70,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/8x8 Binary Medium/8x8 Binary Medium 3 b/puzzles files/binary/8x8 Binary Medium/8x8 Binary Medium 3
index 2f951ecc4..eca4d5d47 100644
--- a/puzzles files/binary/8x8 Binary Medium/8x8 Binary Medium 3
+++ b/puzzles files/binary/8x8 Binary Medium/8x8 Binary Medium 3
@@ -1,7 +1,6 @@
-
-
+
|
@@ -71,5 +70,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/8x8 Binary Very Hard/8x8 Binary Very Hard 1 b/puzzles files/binary/8x8 Binary Very Hard/8x8 Binary Very Hard 1
index 9c875523b..1a21db34e 100644
--- a/puzzles files/binary/8x8 Binary Very Hard/8x8 Binary Very Hard 1
+++ b/puzzles files/binary/8x8 Binary Very Hard/8x8 Binary Very Hard 1
@@ -1,7 +1,6 @@
-
-
+
|
@@ -71,5 +70,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/8x8 Binary Very Hard/8x8 Binary Very Hard 2 b/puzzles files/binary/8x8 Binary Very Hard/8x8 Binary Very Hard 2
index 14f2e4ad2..0691b8707 100644
--- a/puzzles files/binary/8x8 Binary Very Hard/8x8 Binary Very Hard 2
+++ b/puzzles files/binary/8x8 Binary Very Hard/8x8 Binary Very Hard 2
@@ -1,7 +1,6 @@
-
-
+
|
@@ -71,5 +70,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/binary/8x8 Binary Very Hard/8x8 Binary Very Hard 3 b/puzzles files/binary/8x8 Binary Very Hard/8x8 Binary Very Hard 3
index ad319a4b7..05a60cc22 100644
--- a/puzzles files/binary/8x8 Binary Very Hard/8x8 Binary Very Hard 3
+++ b/puzzles files/binary/8x8 Binary Very Hard/8x8 Binary Very Hard 3
@@ -1,7 +1,6 @@
-
-
+
|
@@ -71,5 +70,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/fillapix/10x10 Fillapix Advanced/FillapixAdvanced10x10_1 b/puzzles files/fillapix/10x10 Fillapix Advanced/FillapixAdvanced10x10_1
index 3706caf3b..c35178c65 100644
--- a/puzzles files/fillapix/10x10 Fillapix Advanced/FillapixAdvanced10x10_1
+++ b/puzzles files/fillapix/10x10 Fillapix Advanced/FillapixAdvanced10x10_1
@@ -1,7 +1,6 @@
-
-
-
+
+
|
|
@@ -45,4 +44,4 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/fillapix/10x10 Fillapix Basic/FillapixBasic10x10_1 b/puzzles files/fillapix/10x10 Fillapix Basic/FillapixBasic10x10_1
index e9ab5f4a0..d8b051f69 100644
--- a/puzzles files/fillapix/10x10 Fillapix Basic/FillapixBasic10x10_1
+++ b/puzzles files/fillapix/10x10 Fillapix Basic/FillapixBasic10x10_1
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/fillapix/15x15 Fillapix Advanced/FillapixAdvanced15x15_1 b/puzzles files/fillapix/15x15 Fillapix Advanced/FillapixAdvanced15x15_1
index 954d6d409..fb900dc30 100644
--- a/puzzles files/fillapix/15x15 Fillapix Advanced/FillapixAdvanced15x15_1
+++ b/puzzles files/fillapix/15x15 Fillapix Advanced/FillapixAdvanced15x15_1
@@ -1,6 +1,5 @@
-
-
+
|
@@ -88,4 +87,4 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/fillapix/15x15 Fillapix Basic/FillapixBasic15x15_1 b/puzzles files/fillapix/15x15 Fillapix Basic/FillapixBasic15x15_1
index d17e230f0..2cb91fb74 100644
--- a/puzzles files/fillapix/15x15 Fillapix Basic/FillapixBasic15x15_1
+++ b/puzzles files/fillapix/15x15 Fillapix Basic/FillapixBasic15x15_1
@@ -1,6 +1,5 @@
-
-
+
|
@@ -108,4 +107,4 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/fillapix/20x20 Fillaix Advanced/FillapixAdvanced20x20_1 b/puzzles files/fillapix/20x20 Fillaix Advanced/FillapixAdvanced20x20_1
index 3582ba947..c3a920ea7 100644
--- a/puzzles files/fillapix/20x20 Fillaix Advanced/FillapixAdvanced20x20_1
+++ b/puzzles files/fillapix/20x20 Fillaix Advanced/FillapixAdvanced20x20_1
@@ -1,6 +1,5 @@
-
-
+
|
@@ -138,4 +137,4 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/fillapix/20x20 Fillapix Basic/FillapixBasic20x20_1 b/puzzles files/fillapix/20x20 Fillapix Basic/FillapixBasic20x20_1
index 59d8a2114..8beb287d9 100644
--- a/puzzles files/fillapix/20x20 Fillapix Basic/FillapixBasic20x20_1
+++ b/puzzles files/fillapix/20x20 Fillapix Basic/FillapixBasic20x20_1
@@ -1,6 +1,5 @@
-
-
+
|
@@ -156,4 +155,4 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/fillapix/20x20 Fillapix Basic/FillapixBasic20x20_2 b/puzzles files/fillapix/20x20 Fillapix Basic/FillapixBasic20x20_2
index af3f936f8..fcc254232 100644
--- a/puzzles files/fillapix/20x20 Fillapix Basic/FillapixBasic20x20_2
+++ b/puzzles files/fillapix/20x20 Fillapix Basic/FillapixBasic20x20_2
@@ -1,6 +1,5 @@
-
-
+
|
@@ -158,4 +157,4 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/lightup/10x10 Easy/1514228 b/puzzles files/lightup/10x10 Easy/1514228
index e3d28e19b..69e423183 100644
--- a/puzzles files/lightup/10x10 Easy/1514228
+++ b/puzzles files/lightup/10x10 Easy/1514228
@@ -1,6 +1,5 @@
-
-
+
|
@@ -30,5 +29,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/10x10 Easy/1721067 b/puzzles files/lightup/10x10 Easy/1721067
index f664b8084..29aa4f399 100644
--- a/puzzles files/lightup/10x10 Easy/1721067
+++ b/puzzles files/lightup/10x10 Easy/1721067
@@ -1,6 +1,5 @@
-
-
+
|
@@ -30,5 +29,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/10x10 Easy/5403393 b/puzzles files/lightup/10x10 Easy/5403393
index c90e51894..32220433e 100644
--- a/puzzles files/lightup/10x10 Easy/5403393
+++ b/puzzles files/lightup/10x10 Easy/5403393
@@ -1,6 +1,5 @@
-
-
+
|
@@ -26,5 +25,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/10x10 Easy/5774519 b/puzzles files/lightup/10x10 Easy/5774519
index 385bf59b0..6fc37475e 100644
--- a/puzzles files/lightup/10x10 Easy/5774519
+++ b/puzzles files/lightup/10x10 Easy/5774519
@@ -1,6 +1,5 @@
-
-
+
|
@@ -26,5 +25,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/10x10 Easy/954498 b/puzzles files/lightup/10x10 Easy/954498
index f8d7a95c3..b23431b57 100644
--- a/puzzles files/lightup/10x10 Easy/954498
+++ b/puzzles files/lightup/10x10 Easy/954498
@@ -1,6 +1,5 @@
-
-
+
|
@@ -26,5 +25,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/10x10 Hard/5373598 b/puzzles files/lightup/10x10 Hard/5373598
index 4c2a246c0..f66e7e292 100644
--- a/puzzles files/lightup/10x10 Hard/5373598
+++ b/puzzles files/lightup/10x10 Hard/5373598
@@ -1,6 +1,5 @@
-
-
+
|
@@ -26,5 +25,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/10x10 Hard/573404 b/puzzles files/lightup/10x10 Hard/573404
index 2b3ea8d0f..903dab100 100644
--- a/puzzles files/lightup/10x10 Hard/573404
+++ b/puzzles files/lightup/10x10 Hard/573404
@@ -1,6 +1,5 @@
-
-
+
|
@@ -26,5 +25,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/10x10 Hard/5787104 b/puzzles files/lightup/10x10 Hard/5787104
index 3a116f3de..a1a75d97a 100644
--- a/puzzles files/lightup/10x10 Hard/5787104
+++ b/puzzles files/lightup/10x10 Hard/5787104
@@ -1,6 +1,5 @@
-
-
+
|
@@ -30,5 +29,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/10x10 Hard/8003166 b/puzzles files/lightup/10x10 Hard/8003166
index 3d07aa9e6..ec2639852 100644
--- a/puzzles files/lightup/10x10 Hard/8003166
+++ b/puzzles files/lightup/10x10 Hard/8003166
@@ -1,6 +1,5 @@
-
-
+
|
@@ -26,5 +25,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/10x10 Hard/8918995 b/puzzles files/lightup/10x10 Hard/8918995
index 2108a1a5e..cc4d1fd7b 100644
--- a/puzzles files/lightup/10x10 Hard/8918995
+++ b/puzzles files/lightup/10x10 Hard/8918995
@@ -1,6 +1,5 @@
-
-
+
|
@@ -34,5 +33,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/10x10 Normal/2761230 b/puzzles files/lightup/10x10 Normal/2761230
index 936cca685..3493c257e 100644
--- a/puzzles files/lightup/10x10 Normal/2761230
+++ b/puzzles files/lightup/10x10 Normal/2761230
@@ -1,6 +1,5 @@
-
-
+
|
@@ -30,5 +29,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/10x10 Normal/343176 b/puzzles files/lightup/10x10 Normal/343176
index 15a76c3ed..5762d9e6e 100644
--- a/puzzles files/lightup/10x10 Normal/343176
+++ b/puzzles files/lightup/10x10 Normal/343176
@@ -1,6 +1,5 @@
-
-
+
|
@@ -30,5 +29,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/10x10 Normal/632466 b/puzzles files/lightup/10x10 Normal/632466
index 499c5cf79..7d8b96c8f 100644
--- a/puzzles files/lightup/10x10 Normal/632466
+++ b/puzzles files/lightup/10x10 Normal/632466
@@ -1,6 +1,5 @@
-
-
+
|
@@ -26,5 +25,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/10x10 Normal/7752941 b/puzzles files/lightup/10x10 Normal/7752941
index 8f692981d..178b8d266 100644
--- a/puzzles files/lightup/10x10 Normal/7752941
+++ b/puzzles files/lightup/10x10 Normal/7752941
@@ -1,6 +1,5 @@
-
-
+
|
@@ -26,5 +25,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/10x10 Normal/8090631 b/puzzles files/lightup/10x10 Normal/8090631
index 9121f2f36..1cf4e80de 100644
--- a/puzzles files/lightup/10x10 Normal/8090631
+++ b/puzzles files/lightup/10x10 Normal/8090631
@@ -1,6 +1,5 @@
-
-
+
|
@@ -30,5 +29,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/14x14 Easy/1412335 b/puzzles files/lightup/14x14 Easy/1412335
index 4ecd1c7b1..093909434 100644
--- a/puzzles files/lightup/14x14 Easy/1412335
+++ b/puzzles files/lightup/14x14 Easy/1412335
@@ -1,6 +1,5 @@
-
-
+
|
@@ -54,5 +53,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/14x14 Easy/1949915 b/puzzles files/lightup/14x14 Easy/1949915
index e0e76a55e..4844b697c 100644
--- a/puzzles files/lightup/14x14 Easy/1949915
+++ b/puzzles files/lightup/14x14 Easy/1949915
@@ -1,6 +1,5 @@
-
-
+
|
@@ -54,5 +53,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/14x14 Easy/6778348 b/puzzles files/lightup/14x14 Easy/6778348
index c410720eb..247e50de4 100644
--- a/puzzles files/lightup/14x14 Easy/6778348
+++ b/puzzles files/lightup/14x14 Easy/6778348
@@ -1,6 +1,5 @@
-
-
+
|
@@ -54,5 +53,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/14x14 Easy/976495 b/puzzles files/lightup/14x14 Easy/976495
index d037474a4..e75efdaa7 100644
--- a/puzzles files/lightup/14x14 Easy/976495
+++ b/puzzles files/lightup/14x14 Easy/976495
@@ -1,6 +1,5 @@
-
-
+
|
@@ -54,5 +53,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/14x14 Easy/9949966 b/puzzles files/lightup/14x14 Easy/9949966
index 68d84b951..b8e03c63a 100644
--- a/puzzles files/lightup/14x14 Easy/9949966
+++ b/puzzles files/lightup/14x14 Easy/9949966
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/14x14 Hard/1974912 b/puzzles files/lightup/14x14 Hard/1974912
index 906045407..edd375b01 100644
--- a/puzzles files/lightup/14x14 Hard/1974912
+++ b/puzzles files/lightup/14x14 Hard/1974912
@@ -1,6 +1,5 @@
-
-
+
|
@@ -54,5 +53,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/14x14 Hard/3618696 b/puzzles files/lightup/14x14 Hard/3618696
index 07b37fdc4..3aba20520 100644
--- a/puzzles files/lightup/14x14 Hard/3618696
+++ b/puzzles files/lightup/14x14 Hard/3618696
@@ -1,6 +1,5 @@
-
-
+
|
@@ -54,5 +53,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/14x14 Hard/578987 b/puzzles files/lightup/14x14 Hard/578987
index aa2ee9eb2..d396a5334 100644
--- a/puzzles files/lightup/14x14 Hard/578987
+++ b/puzzles files/lightup/14x14 Hard/578987
@@ -1,6 +1,5 @@
-
-
+
|
@@ -54,5 +53,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/14x14 Hard/8087653 b/puzzles files/lightup/14x14 Hard/8087653
index ccd25915b..d7868a7e1 100644
--- a/puzzles files/lightup/14x14 Hard/8087653
+++ b/puzzles files/lightup/14x14 Hard/8087653
@@ -1,6 +1,5 @@
-
-
+
|
@@ -62,5 +61,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/14x14 Hard/9554192 b/puzzles files/lightup/14x14 Hard/9554192
index 062acd500..13697e451 100644
--- a/puzzles files/lightup/14x14 Hard/9554192
+++ b/puzzles files/lightup/14x14 Hard/9554192
@@ -1,6 +1,5 @@
-
-
+
|
@@ -54,5 +53,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/14x14 Normal/2659779 b/puzzles files/lightup/14x14 Normal/2659779
index 7e849aee7..661d41a9f 100644
--- a/puzzles files/lightup/14x14 Normal/2659779
+++ b/puzzles files/lightup/14x14 Normal/2659779
@@ -1,6 +1,5 @@
-
-
+
|
@@ -54,5 +53,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/14x14 Normal/448333 b/puzzles files/lightup/14x14 Normal/448333
index e4511a587..3e1b9565f 100644
--- a/puzzles files/lightup/14x14 Normal/448333
+++ b/puzzles files/lightup/14x14 Normal/448333
@@ -1,6 +1,5 @@
-
-
+
|
@@ -54,5 +53,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/14x14 Normal/5063453 b/puzzles files/lightup/14x14 Normal/5063453
index 955c6f89b..c87b1281a 100644
--- a/puzzles files/lightup/14x14 Normal/5063453
+++ b/puzzles files/lightup/14x14 Normal/5063453
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/14x14 Normal/606275 b/puzzles files/lightup/14x14 Normal/606275
index 6998b8c98..230933936 100644
--- a/puzzles files/lightup/14x14 Normal/606275
+++ b/puzzles files/lightup/14x14 Normal/606275
@@ -1,6 +1,5 @@
-
-
+
|
@@ -54,5 +53,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/14x14 Normal/830231 b/puzzles files/lightup/14x14 Normal/830231
index e1027e570..595c2d8de 100644
--- a/puzzles files/lightup/14x14 Normal/830231
+++ b/puzzles files/lightup/14x14 Normal/830231
@@ -1,6 +1,5 @@
-
-
+
|
@@ -61,5 +60,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/2408448 b/puzzles files/lightup/7x7 Easy/2408448
index 9d31841f7..33ed1f5cf 100644
--- a/puzzles files/lightup/7x7 Easy/2408448
+++ b/puzzles files/lightup/7x7 Easy/2408448
@@ -1,6 +1,5 @@
-
-
+
|
@@ -18,5 +17,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/2736784 b/puzzles files/lightup/7x7 Easy/2736784
index 468764468..874e3a7ed 100644
--- a/puzzles files/lightup/7x7 Easy/2736784
+++ b/puzzles files/lightup/7x7 Easy/2736784
@@ -1,6 +1,5 @@
-
-
+
|
@@ -15,5 +14,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/2855683 b/puzzles files/lightup/7x7 Easy/2855683
index aea2bd556..1624ec807 100644
--- a/puzzles files/lightup/7x7 Easy/2855683
+++ b/puzzles files/lightup/7x7 Easy/2855683
@@ -1,6 +1,5 @@
-
-
+
|
@@ -14,5 +13,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/3535701 b/puzzles files/lightup/7x7 Easy/3535701
index 10700abd4..f7254aeee 100644
--- a/puzzles files/lightup/7x7 Easy/3535701
+++ b/puzzles files/lightup/7x7 Easy/3535701
@@ -1,6 +1,5 @@
-
-
+
|
@@ -18,5 +17,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/393454 b/puzzles files/lightup/7x7 Easy/393454
index 8d1dc0344..a86a908f4 100644
--- a/puzzles files/lightup/7x7 Easy/393454
+++ b/puzzles files/lightup/7x7 Easy/393454
@@ -1,6 +1,5 @@
-
-
+
|
@@ -15,5 +14,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/4238934 b/puzzles files/lightup/7x7 Easy/4238934
index 4ab26fd6f..51f621e98 100644
--- a/puzzles files/lightup/7x7 Easy/4238934
+++ b/puzzles files/lightup/7x7 Easy/4238934
@@ -1,6 +1,5 @@
-
-
+
|
@@ -15,5 +14,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/4604288 b/puzzles files/lightup/7x7 Easy/4604288
index f222c56e2..06c180b7e 100644
--- a/puzzles files/lightup/7x7 Easy/4604288
+++ b/puzzles files/lightup/7x7 Easy/4604288
@@ -1,6 +1,5 @@
-
-
+
|
@@ -14,5 +13,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/4608986 b/puzzles files/lightup/7x7 Easy/4608986
index 25242e7aa..988db0df6 100644
--- a/puzzles files/lightup/7x7 Easy/4608986
+++ b/puzzles files/lightup/7x7 Easy/4608986
@@ -1,6 +1,5 @@
-
-
+
|
@@ -18,5 +17,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/517362 b/puzzles files/lightup/7x7 Easy/517362
index 00514938f..142bee9a7 100644
--- a/puzzles files/lightup/7x7 Easy/517362
+++ b/puzzles files/lightup/7x7 Easy/517362
@@ -1,6 +1,5 @@
-
-
+
|
@@ -19,5 +18,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/5229613 b/puzzles files/lightup/7x7 Easy/5229613
index 425fe3a17..d8a4599b5 100644
--- a/puzzles files/lightup/7x7 Easy/5229613
+++ b/puzzles files/lightup/7x7 Easy/5229613
@@ -1,6 +1,5 @@
-
-
+
|
@@ -15,5 +14,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/5435528 b/puzzles files/lightup/7x7 Easy/5435528
index 94aea5f7e..8e26740f1 100644
--- a/puzzles files/lightup/7x7 Easy/5435528
+++ b/puzzles files/lightup/7x7 Easy/5435528
@@ -1,6 +1,5 @@
-
-
+
|
@@ -14,5 +13,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/5488697 b/puzzles files/lightup/7x7 Easy/5488697
index d8684e270..cb05ecab1 100644
--- a/puzzles files/lightup/7x7 Easy/5488697
+++ b/puzzles files/lightup/7x7 Easy/5488697
@@ -1,6 +1,5 @@
-
-
+
|
@@ -15,5 +14,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/6110408 b/puzzles files/lightup/7x7 Easy/6110408
index 335aa1a9b..708064a14 100644
--- a/puzzles files/lightup/7x7 Easy/6110408
+++ b/puzzles files/lightup/7x7 Easy/6110408
@@ -1,6 +1,5 @@
-
-
+
|
@@ -18,5 +17,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/6300100 b/puzzles files/lightup/7x7 Easy/6300100
index 34f1ad83b..e40e4cbca 100644
--- a/puzzles files/lightup/7x7 Easy/6300100
+++ b/puzzles files/lightup/7x7 Easy/6300100
@@ -1,6 +1,5 @@
-
-
+
|
@@ -18,5 +17,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/6506194 b/puzzles files/lightup/7x7 Easy/6506194
index f2d73e8a9..7ead8bb82 100644
--- a/puzzles files/lightup/7x7 Easy/6506194
+++ b/puzzles files/lightup/7x7 Easy/6506194
@@ -1,6 +1,5 @@
-
-
+
|
@@ -14,5 +13,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/69495 b/puzzles files/lightup/7x7 Easy/69495
index d8d9e1f6c..e93e517e0 100644
--- a/puzzles files/lightup/7x7 Easy/69495
+++ b/puzzles files/lightup/7x7 Easy/69495
@@ -1,6 +1,5 @@
-
-
+
|
@@ -15,5 +14,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/7936304 b/puzzles files/lightup/7x7 Easy/7936304
index c3ba25fe9..3b15f4fc3 100644
--- a/puzzles files/lightup/7x7 Easy/7936304
+++ b/puzzles files/lightup/7x7 Easy/7936304
@@ -1,6 +1,5 @@
-
-
+
|
@@ -14,5 +13,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/7982513 b/puzzles files/lightup/7x7 Easy/7982513
index 03e77b953..12d453696 100644
--- a/puzzles files/lightup/7x7 Easy/7982513
+++ b/puzzles files/lightup/7x7 Easy/7982513
@@ -1,6 +1,5 @@
-
-
+
|
@@ -15,5 +14,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/8949430 b/puzzles files/lightup/7x7 Easy/8949430
index 476c421e0..be557b6a0 100644
--- a/puzzles files/lightup/7x7 Easy/8949430
+++ b/puzzles files/lightup/7x7 Easy/8949430
@@ -1,6 +1,5 @@
-
-
+
|
@@ -15,5 +14,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Easy/9080685 b/puzzles files/lightup/7x7 Easy/9080685
index 5307d6e7a..a0ef559e7 100644
--- a/puzzles files/lightup/7x7 Easy/9080685
+++ b/puzzles files/lightup/7x7 Easy/9080685
@@ -1,6 +1,5 @@
-
-
+
|
@@ -14,5 +13,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Hard/1130370 b/puzzles files/lightup/7x7 Hard/1130370
index e442a1efa..90215a907 100644
--- a/puzzles files/lightup/7x7 Hard/1130370
+++ b/puzzles files/lightup/7x7 Hard/1130370
@@ -1,6 +1,5 @@
-
-
+
|
@@ -15,5 +14,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Hard/2790971 b/puzzles files/lightup/7x7 Hard/2790971
index eb6cb0d9f..4c7821779 100644
--- a/puzzles files/lightup/7x7 Hard/2790971
+++ b/puzzles files/lightup/7x7 Hard/2790971
@@ -1,6 +1,5 @@
-
-
+
|
@@ -18,5 +17,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Hard/3421347 b/puzzles files/lightup/7x7 Hard/3421347
index 638ec2b71..f33f83b77 100644
--- a/puzzles files/lightup/7x7 Hard/3421347
+++ b/puzzles files/lightup/7x7 Hard/3421347
@@ -1,6 +1,5 @@
-
-
+
|
@@ -15,5 +14,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Hard/4159457 b/puzzles files/lightup/7x7 Hard/4159457
index f9f8e7652..7ae4a7688 100644
--- a/puzzles files/lightup/7x7 Hard/4159457
+++ b/puzzles files/lightup/7x7 Hard/4159457
@@ -1,6 +1,5 @@
-
-
+
|
@@ -15,5 +14,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Hard/4674087 b/puzzles files/lightup/7x7 Hard/4674087
index 77a317385..9c6a1376a 100644
--- a/puzzles files/lightup/7x7 Hard/4674087
+++ b/puzzles files/lightup/7x7 Hard/4674087
@@ -1,6 +1,5 @@
-
-
+
|
@@ -14,5 +13,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Hard/507817 b/puzzles files/lightup/7x7 Hard/507817
index e624a2778..69397e073 100644
--- a/puzzles files/lightup/7x7 Hard/507817
+++ b/puzzles files/lightup/7x7 Hard/507817
@@ -1,6 +1,5 @@
-
-
+
|
@@ -19,5 +18,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Hard/5280094 b/puzzles files/lightup/7x7 Hard/5280094
index 89159dfcf..dd721084b 100644
--- a/puzzles files/lightup/7x7 Hard/5280094
+++ b/puzzles files/lightup/7x7 Hard/5280094
@@ -1,6 +1,5 @@
-
-
+
|
@@ -19,5 +18,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Hard/5677803 b/puzzles files/lightup/7x7 Hard/5677803
index 010f1be3b..a2ba51cde 100644
--- a/puzzles files/lightup/7x7 Hard/5677803
+++ b/puzzles files/lightup/7x7 Hard/5677803
@@ -1,6 +1,5 @@
-
-
+
|
@@ -15,5 +14,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Hard/6178908 b/puzzles files/lightup/7x7 Hard/6178908
index 2d4ac5919..5cff1fc4c 100644
--- a/puzzles files/lightup/7x7 Hard/6178908
+++ b/puzzles files/lightup/7x7 Hard/6178908
@@ -1,6 +1,5 @@
-
-
+
|
@@ -14,5 +13,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Hard/8122162 b/puzzles files/lightup/7x7 Hard/8122162
index 0ccfdfa46..358cdef5b 100644
--- a/puzzles files/lightup/7x7 Hard/8122162
+++ b/puzzles files/lightup/7x7 Hard/8122162
@@ -1,6 +1,5 @@
-
-
+
|
@@ -15,5 +14,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Normal/2637310 b/puzzles files/lightup/7x7 Normal/2637310
index e2d8b2ecf..b21a74367 100644
--- a/puzzles files/lightup/7x7 Normal/2637310
+++ b/puzzles files/lightup/7x7 Normal/2637310
@@ -1,6 +1,5 @@
-
-
+
|
@@ -15,5 +14,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Normal/2979943 b/puzzles files/lightup/7x7 Normal/2979943
index f67e0be52..9ba1efb65 100644
--- a/puzzles files/lightup/7x7 Normal/2979943
+++ b/puzzles files/lightup/7x7 Normal/2979943
@@ -1,6 +1,5 @@
-
-
+
|
@@ -15,5 +14,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Normal/3710905 b/puzzles files/lightup/7x7 Normal/3710905
index b3b9b534b..ea6e17ad5 100644
--- a/puzzles files/lightup/7x7 Normal/3710905
+++ b/puzzles files/lightup/7x7 Normal/3710905
@@ -1,6 +1,5 @@
-
-
+
|
@@ -18,5 +17,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Normal/3727425 b/puzzles files/lightup/7x7 Normal/3727425
index ac6c11ce3..1ed4985f3 100644
--- a/puzzles files/lightup/7x7 Normal/3727425
+++ b/puzzles files/lightup/7x7 Normal/3727425
@@ -1,6 +1,5 @@
-
-
+
|
@@ -18,5 +17,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Normal/3787583 b/puzzles files/lightup/7x7 Normal/3787583
index 11c07cde7..49dd6c257 100644
--- a/puzzles files/lightup/7x7 Normal/3787583
+++ b/puzzles files/lightup/7x7 Normal/3787583
@@ -1,6 +1,5 @@
-
-
+
|
@@ -19,5 +18,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Normal/5570754 b/puzzles files/lightup/7x7 Normal/5570754
index e6cf153f3..17fec42df 100644
--- a/puzzles files/lightup/7x7 Normal/5570754
+++ b/puzzles files/lightup/7x7 Normal/5570754
@@ -1,6 +1,5 @@
-
-
+
|
@@ -14,5 +13,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Normal/7270504 b/puzzles files/lightup/7x7 Normal/7270504
index 1456b2b68..d24236282 100644
--- a/puzzles files/lightup/7x7 Normal/7270504
+++ b/puzzles files/lightup/7x7 Normal/7270504
@@ -1,6 +1,5 @@
-
-
+
|
@@ -14,5 +13,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Normal/8000000 b/puzzles files/lightup/7x7 Normal/8000000
index f84a6c213..0480a15ff 100644
--- a/puzzles files/lightup/7x7 Normal/8000000
+++ b/puzzles files/lightup/7x7 Normal/8000000
@@ -1,6 +1,5 @@
-
-
+
|
@@ -19,5 +18,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Normal/9489812 b/puzzles files/lightup/7x7 Normal/9489812
index ef3ec4dbd..8e819fe85 100644
--- a/puzzles files/lightup/7x7 Normal/9489812
+++ b/puzzles files/lightup/7x7 Normal/9489812
@@ -1,6 +1,5 @@
-
-
+
|
@@ -15,5 +14,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Normal/9806740 b/puzzles files/lightup/7x7 Normal/9806740
index 42ecc1a04..30bbe2880 100644
--- a/puzzles files/lightup/7x7 Normal/9806740
+++ b/puzzles files/lightup/7x7 Normal/9806740
@@ -1,6 +1,5 @@
-
-
+
|
@@ -19,5 +18,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Random/puzzle1 b/puzzles files/lightup/7x7 Random/puzzle1
index d524bfcb2..edbd107fc 100644
--- a/puzzles files/lightup/7x7 Random/puzzle1
+++ b/puzzles files/lightup/7x7 Random/puzzle1
@@ -1,26 +1,25 @@
-
-
+
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
-
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Random/puzzle2 b/puzzles files/lightup/7x7 Random/puzzle2
index 40c521ee7..8b626e85a 100644
--- a/puzzles files/lightup/7x7 Random/puzzle2
+++ b/puzzles files/lightup/7x7 Random/puzzle2
@@ -1,24 +1,23 @@
-
-
+
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
-
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Random/puzzle3 b/puzzles files/lightup/7x7 Random/puzzle3
index ba316474d..08b4140d5 100644
--- a/puzzles files/lightup/7x7 Random/puzzle3
+++ b/puzzles files/lightup/7x7 Random/puzzle3
@@ -1,25 +1,24 @@
-
-
+
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
-
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Random/puzzle4 b/puzzles files/lightup/7x7 Random/puzzle4
index 0a248a3ef..b25ab514c 100644
--- a/puzzles files/lightup/7x7 Random/puzzle4
+++ b/puzzles files/lightup/7x7 Random/puzzle4
@@ -1,26 +1,25 @@
-
-
+
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
-
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Random/puzzle5 b/puzzles files/lightup/7x7 Random/puzzle5
index 478ed3270..71de999dc 100644
--- a/puzzles files/lightup/7x7 Random/puzzle5
+++ b/puzzles files/lightup/7x7 Random/puzzle5
@@ -1,24 +1,23 @@
-
-
+
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
-
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Random/puzzle6 b/puzzles files/lightup/7x7 Random/puzzle6
index 387e00f01..85bc22599 100644
--- a/puzzles files/lightup/7x7 Random/puzzle6
+++ b/puzzles files/lightup/7x7 Random/puzzle6
@@ -1,22 +1,21 @@
-
-
+
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
-
+
\ No newline at end of file
diff --git a/puzzles files/lightup/7x7 Random/puzzle7 b/puzzles files/lightup/7x7 Random/puzzle7
index af78d5a04..499641f1a 100644
--- a/puzzles files/lightup/7x7 Random/puzzle7
+++ b/puzzles files/lightup/7x7 Random/puzzle7
@@ -1,22 +1,21 @@
-
-
+
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
-
+
\ No newline at end of file
diff --git a/puzzles files/masyu/6x6 Masyu Easy/6E_b0011 b/puzzles files/masyu/6x6 Masyu Easy/6E_b0011
index d986f7891..a0d188bf9 100644
--- a/puzzles files/masyu/6x6 Masyu Easy/6E_b0011
+++ b/puzzles files/masyu/6x6 Masyu Easy/6E_b0011
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/masyu/6x6 Masyu Easy/6E_b0012 b/puzzles files/masyu/6x6 Masyu Easy/6E_b0012
index 4099c98c6..847f2007d 100644
--- a/puzzles files/masyu/6x6 Masyu Easy/6E_b0012
+++ b/puzzles files/masyu/6x6 Masyu Easy/6E_b0012
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/masyu/6x6 Masyu Easy/6E_b0013 b/puzzles files/masyu/6x6 Masyu Easy/6E_b0013
index 9280237ab..c4be85829 100644
--- a/puzzles files/masyu/6x6 Masyu Easy/6E_b0013
+++ b/puzzles files/masyu/6x6 Masyu Easy/6E_b0013
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/masyu/6x6 Masyu Easy/6E_b0014 b/puzzles files/masyu/6x6 Masyu Easy/6E_b0014
index 2a802027b..642529609 100644
--- a/puzzles files/masyu/6x6 Masyu Easy/6E_b0014
+++ b/puzzles files/masyu/6x6 Masyu Easy/6E_b0014
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/masyu/6x6 Masyu Easy/6E_b0015 b/puzzles files/masyu/6x6 Masyu Easy/6E_b0015
index 0b6369a43..3f6699a02 100644
--- a/puzzles files/masyu/6x6 Masyu Easy/6E_b0015
+++ b/puzzles files/masyu/6x6 Masyu Easy/6E_b0015
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/masyu/6x6 Masyu Hard/6H_b0011 b/puzzles files/masyu/6x6 Masyu Hard/6H_b0011
index cdc27051a..3a14928d4 100644
--- a/puzzles files/masyu/6x6 Masyu Hard/6H_b0011
+++ b/puzzles files/masyu/6x6 Masyu Hard/6H_b0011
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/masyu/6x6 Masyu Hard/6H_b0012 b/puzzles files/masyu/6x6 Masyu Hard/6H_b0012
index 37486fc6d..0b83a959f 100644
--- a/puzzles files/masyu/6x6 Masyu Hard/6H_b0012
+++ b/puzzles files/masyu/6x6 Masyu Hard/6H_b0012
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/masyu/6x6 Masyu Hard/6H_b0013 b/puzzles files/masyu/6x6 Masyu Hard/6H_b0013
index 7b964b9a5..a8fe5d75c 100644
--- a/puzzles files/masyu/6x6 Masyu Hard/6H_b0013
+++ b/puzzles files/masyu/6x6 Masyu Hard/6H_b0013
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/masyu/6x6 Masyu Hard/6H_b0014 b/puzzles files/masyu/6x6 Masyu Hard/6H_b0014
index 955ae0bf7..bb168f538 100644
--- a/puzzles files/masyu/6x6 Masyu Hard/6H_b0014
+++ b/puzzles files/masyu/6x6 Masyu Hard/6H_b0014
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/masyu/6x6 Masyu Hard/6H_b0015 b/puzzles files/masyu/6x6 Masyu Hard/6H_b0015
index 0d70c6a5f..f0dbd74c7 100644
--- a/puzzles files/masyu/6x6 Masyu Hard/6H_b0015
+++ b/puzzles files/masyu/6x6 Masyu Hard/6H_b0015
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/masyu/6x6 Masyu Medium/6M_b0011 b/puzzles files/masyu/6x6 Masyu Medium/6M_b0011
index 2738e3fbf..b7cea81c9 100644
--- a/puzzles files/masyu/6x6 Masyu Medium/6M_b0011
+++ b/puzzles files/masyu/6x6 Masyu Medium/6M_b0011
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/masyu/6x6 Masyu Medium/6M_b0012 b/puzzles files/masyu/6x6 Masyu Medium/6M_b0012
index 154272c1b..76c564c01 100644
--- a/puzzles files/masyu/6x6 Masyu Medium/6M_b0012
+++ b/puzzles files/masyu/6x6 Masyu Medium/6M_b0012
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/masyu/6x6 Masyu Medium/6M_b0013 b/puzzles files/masyu/6x6 Masyu Medium/6M_b0013
index 90543ddc5..319ca6f5b 100644
--- a/puzzles files/masyu/6x6 Masyu Medium/6M_b0013
+++ b/puzzles files/masyu/6x6 Masyu Medium/6M_b0013
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/masyu/6x6 Masyu Medium/6M_b0014 b/puzzles files/masyu/6x6 Masyu Medium/6M_b0014
index 63a2522a5..eb4fc22bc 100644
--- a/puzzles files/masyu/6x6 Masyu Medium/6M_b0014
+++ b/puzzles files/masyu/6x6 Masyu Medium/6M_b0014
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/masyu/6x6 Masyu Medium/6M_b0015 b/puzzles files/masyu/6x6 Masyu Medium/6M_b0015
index 9391fa323..79c664f30 100644
--- a/puzzles files/masyu/6x6 Masyu Medium/6M_b0015
+++ b/puzzles files/masyu/6x6 Masyu Medium/6M_b0015
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/minesweeper/5x5 Minesweeper Easy/123456 b/puzzles files/minesweeper/5x5 Minesweeper Easy/123456
index 2aa0b46ab..b956613fb 100644
--- a/puzzles files/minesweeper/5x5 Minesweeper Easy/123456
+++ b/puzzles files/minesweeper/5x5 Minesweeper Easy/123456
@@ -1,11 +1,10 @@
-
-
+
-
+
\ No newline at end of file
diff --git a/puzzles files/narukabe_export tet b/puzzles files/narukabe_export tet
index 5a3d467a8..b2bc24378 100644
--- a/puzzles files/narukabe_export tet
+++ b/puzzles files/narukabe_export tet
@@ -1,6 +1,5 @@
-
-
+
|
@@ -28,5 +27,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/10x10 Nurikabe Hard/3323808 b/puzzles files/nurikabe/10x10 Nurikabe Hard/3323808
index 2e904a776..07fac90fa 100644
--- a/puzzles files/nurikabe/10x10 Nurikabe Hard/3323808
+++ b/puzzles files/nurikabe/10x10 Nurikabe Hard/3323808
@@ -1,6 +1,5 @@
-
-
+
|
@@ -17,5 +16,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/10x10 Nurikabe Hard/7675382 b/puzzles files/nurikabe/10x10 Nurikabe Hard/7675382
index 1b4e40874..57516fa9f 100644
--- a/puzzles files/nurikabe/10x10 Nurikabe Hard/7675382
+++ b/puzzles files/nurikabe/10x10 Nurikabe Hard/7675382
@@ -1,6 +1,5 @@
-
-
+
|
@@ -18,5 +17,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/10x10 Nurikabe Hard/8264437 b/puzzles files/nurikabe/10x10 Nurikabe Hard/8264437
index 55f937d03..34253bc08 100644
--- a/puzzles files/nurikabe/10x10 Nurikabe Hard/8264437
+++ b/puzzles files/nurikabe/10x10 Nurikabe Hard/8264437
@@ -1,6 +1,5 @@
-
-
+
|
@@ -21,5 +20,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/10x10 Nurikabe Hard/8991218 b/puzzles files/nurikabe/10x10 Nurikabe Hard/8991218
index 657112cb9..f2e62419d 100644
--- a/puzzles files/nurikabe/10x10 Nurikabe Hard/8991218
+++ b/puzzles files/nurikabe/10x10 Nurikabe Hard/8991218
@@ -1,6 +1,5 @@
-
-
+
|
@@ -19,5 +18,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/10x10 Nurikabe Hard/9120893 b/puzzles files/nurikabe/10x10 Nurikabe Hard/9120893
index d572f328a..f8b771a90 100644
--- a/puzzles files/nurikabe/10x10 Nurikabe Hard/9120893
+++ b/puzzles files/nurikabe/10x10 Nurikabe Hard/9120893
@@ -1,6 +1,5 @@
-
-
+
|
@@ -14,5 +13,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/10x10 Nurikabe Normal/2852229 b/puzzles files/nurikabe/10x10 Nurikabe Normal/2852229
index 95fe86339..dca2c0e7b 100644
--- a/puzzles files/nurikabe/10x10 Nurikabe Normal/2852229
+++ b/puzzles files/nurikabe/10x10 Nurikabe Normal/2852229
@@ -1,6 +1,5 @@
-
-
+
|
@@ -18,5 +17,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/10x10 Nurikabe Normal/5759900 b/puzzles files/nurikabe/10x10 Nurikabe Normal/5759900
index 619c07167..5ced31337 100644
--- a/puzzles files/nurikabe/10x10 Nurikabe Normal/5759900
+++ b/puzzles files/nurikabe/10x10 Nurikabe Normal/5759900
@@ -1,6 +1,5 @@
-
-
+
|
@@ -19,5 +18,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/10x10 Nurikabe Normal/6274292 b/puzzles files/nurikabe/10x10 Nurikabe Normal/6274292
index 1296759b6..e9fd7f21f 100644
--- a/puzzles files/nurikabe/10x10 Nurikabe Normal/6274292
+++ b/puzzles files/nurikabe/10x10 Nurikabe Normal/6274292
@@ -1,6 +1,5 @@
-
-
+
|
@@ -22,5 +21,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/10x10 Nurikabe Normal/8920015 b/puzzles files/nurikabe/10x10 Nurikabe Normal/8920015
index 0261c7179..cd9db8957 100644
--- a/puzzles files/nurikabe/10x10 Nurikabe Normal/8920015
+++ b/puzzles files/nurikabe/10x10 Nurikabe Normal/8920015
@@ -1,6 +1,5 @@
-
-
+
|
@@ -22,5 +21,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/10x10 Nurikabe Normal/9757357 b/puzzles files/nurikabe/10x10 Nurikabe Normal/9757357
index 7ce0cd387..5cc384830 100644
--- a/puzzles files/nurikabe/10x10 Nurikabe Normal/9757357
+++ b/puzzles files/nurikabe/10x10 Nurikabe Normal/9757357
@@ -1,6 +1,5 @@
-
-
+
|
@@ -17,5 +16,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/12x12 Nurikabe Hard/1276535 b/puzzles files/nurikabe/12x12 Nurikabe Hard/1276535
index 8a3cf255a..a2a4a574e 100644
--- a/puzzles files/nurikabe/12x12 Nurikabe Hard/1276535
+++ b/puzzles files/nurikabe/12x12 Nurikabe Hard/1276535
@@ -1,6 +1,5 @@
-
-
+
|
@@ -22,5 +21,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/12x12 Nurikabe Hard/4284912 b/puzzles files/nurikabe/12x12 Nurikabe Hard/4284912
index d1f9656a7..5eeb27fe4 100644
--- a/puzzles files/nurikabe/12x12 Nurikabe Hard/4284912
+++ b/puzzles files/nurikabe/12x12 Nurikabe Hard/4284912
@@ -1,6 +1,5 @@
-
-
+
|
@@ -22,5 +21,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/12x12 Nurikabe Hard/4459392 b/puzzles files/nurikabe/12x12 Nurikabe Hard/4459392
index ec91db1ca..61a67888f 100644
--- a/puzzles files/nurikabe/12x12 Nurikabe Hard/4459392
+++ b/puzzles files/nurikabe/12x12 Nurikabe Hard/4459392
@@ -1,6 +1,5 @@
-
-
+
|
@@ -23,5 +22,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/12x12 Nurikabe Hard/7738199 b/puzzles files/nurikabe/12x12 Nurikabe Hard/7738199
index b30f104e1..cba9d6f05 100644
--- a/puzzles files/nurikabe/12x12 Nurikabe Hard/7738199
+++ b/puzzles files/nurikabe/12x12 Nurikabe Hard/7738199
@@ -1,6 +1,5 @@
-
-
+
|
@@ -21,5 +20,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/12x12 Nurikabe Hard/9205907 b/puzzles files/nurikabe/12x12 Nurikabe Hard/9205907
index 0d78060bb..578d1d395 100644
--- a/puzzles files/nurikabe/12x12 Nurikabe Hard/9205907
+++ b/puzzles files/nurikabe/12x12 Nurikabe Hard/9205907
@@ -1,6 +1,5 @@
-
-
+
|
@@ -22,5 +21,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/12x12 Nurikabe Normal/1570101 b/puzzles files/nurikabe/12x12 Nurikabe Normal/1570101
index 6085b381b..4929fe88f 100644
--- a/puzzles files/nurikabe/12x12 Nurikabe Normal/1570101
+++ b/puzzles files/nurikabe/12x12 Nurikabe Normal/1570101
@@ -1,6 +1,5 @@
-
-
+
|
@@ -24,5 +23,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/12x12 Nurikabe Normal/3731930 b/puzzles files/nurikabe/12x12 Nurikabe Normal/3731930
index b4a764096..c99681918 100644
--- a/puzzles files/nurikabe/12x12 Nurikabe Normal/3731930
+++ b/puzzles files/nurikabe/12x12 Nurikabe Normal/3731930
@@ -1,6 +1,5 @@
-
-
+
|
@@ -27,5 +26,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/12x12 Nurikabe Normal/3755957 b/puzzles files/nurikabe/12x12 Nurikabe Normal/3755957
index 4ebc79df0..0ba4f082e 100644
--- a/puzzles files/nurikabe/12x12 Nurikabe Normal/3755957
+++ b/puzzles files/nurikabe/12x12 Nurikabe Normal/3755957
@@ -1,6 +1,5 @@
-
-
+
|
@@ -24,5 +23,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/12x12 Nurikabe Normal/786806 b/puzzles files/nurikabe/12x12 Nurikabe Normal/786806
index 07ce6747b..386e4b35b 100644
--- a/puzzles files/nurikabe/12x12 Nurikabe Normal/786806
+++ b/puzzles files/nurikabe/12x12 Nurikabe Normal/786806
@@ -1,6 +1,5 @@
-
-
+
|
@@ -23,5 +22,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/12x12 Nurikabe Normal/9946063 b/puzzles files/nurikabe/12x12 Nurikabe Normal/9946063
index e446029ba..94dc2c764 100644
--- a/puzzles files/nurikabe/12x12 Nurikabe Normal/9946063
+++ b/puzzles files/nurikabe/12x12 Nurikabe Normal/9946063
@@ -1,6 +1,5 @@
-
-
+
|
@@ -22,5 +21,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/15x15 Nurikabe Hard/1125631 b/puzzles files/nurikabe/15x15 Nurikabe Hard/1125631
index 3c8c80102..eab784f51 100644
--- a/puzzles files/nurikabe/15x15 Nurikabe Hard/1125631
+++ b/puzzles files/nurikabe/15x15 Nurikabe Hard/1125631
@@ -1,6 +1,5 @@
-
-
+
|
@@ -40,5 +39,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/15x15 Nurikabe Hard/5955292 b/puzzles files/nurikabe/15x15 Nurikabe Hard/5955292
index 85bc5bb86..43b3b3e3e 100644
--- a/puzzles files/nurikabe/15x15 Nurikabe Hard/5955292
+++ b/puzzles files/nurikabe/15x15 Nurikabe Hard/5955292
@@ -1,6 +1,5 @@
-
-
+
|
@@ -38,5 +37,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/15x15 Nurikabe Hard/6763936 b/puzzles files/nurikabe/15x15 Nurikabe Hard/6763936
index 4675197d3..f88919b4e 100644
--- a/puzzles files/nurikabe/15x15 Nurikabe Hard/6763936
+++ b/puzzles files/nurikabe/15x15 Nurikabe Hard/6763936
@@ -1,6 +1,5 @@
-
-
+
|
@@ -38,5 +37,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/15x15 Nurikabe Hard/7005298 b/puzzles files/nurikabe/15x15 Nurikabe Hard/7005298
index 24f12d66d..629ed656b 100644
--- a/puzzles files/nurikabe/15x15 Nurikabe Hard/7005298
+++ b/puzzles files/nurikabe/15x15 Nurikabe Hard/7005298
@@ -1,6 +1,5 @@
-
-
+
|
@@ -40,5 +39,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/15x15 Nurikabe Hard/9975093 b/puzzles files/nurikabe/15x15 Nurikabe Hard/9975093
index c903364e7..d93c114f1 100644
--- a/puzzles files/nurikabe/15x15 Nurikabe Hard/9975093
+++ b/puzzles files/nurikabe/15x15 Nurikabe Hard/9975093
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/15x15 Nurikabe Normal/141420 b/puzzles files/nurikabe/15x15 Nurikabe Normal/141420
index bf1cd00ec..5c1600d25 100644
--- a/puzzles files/nurikabe/15x15 Nurikabe Normal/141420
+++ b/puzzles files/nurikabe/15x15 Nurikabe Normal/141420
@@ -1,6 +1,5 @@
-
-
+
|
@@ -46,5 +45,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/15x15 Nurikabe Normal/4123443 b/puzzles files/nurikabe/15x15 Nurikabe Normal/4123443
index c086045d9..4a9ede116 100644
--- a/puzzles files/nurikabe/15x15 Nurikabe Normal/4123443
+++ b/puzzles files/nurikabe/15x15 Nurikabe Normal/4123443
@@ -1,6 +1,5 @@
-
-
+
|
@@ -42,5 +41,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/15x15 Nurikabe Normal/731385 b/puzzles files/nurikabe/15x15 Nurikabe Normal/731385
index 70fdf88f5..9ddad163d 100644
--- a/puzzles files/nurikabe/15x15 Nurikabe Normal/731385
+++ b/puzzles files/nurikabe/15x15 Nurikabe Normal/731385
@@ -1,6 +1,5 @@
-
-
+
|
@@ -41,5 +40,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/15x15 Nurikabe Normal/8213677 b/puzzles files/nurikabe/15x15 Nurikabe Normal/8213677
index 916c71760..400c9411a 100644
--- a/puzzles files/nurikabe/15x15 Nurikabe Normal/8213677
+++ b/puzzles files/nurikabe/15x15 Nurikabe Normal/8213677
@@ -1,6 +1,5 @@
-
-
+
|
@@ -41,5 +40,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/15x15 Nurikabe Normal/8372309 b/puzzles files/nurikabe/15x15 Nurikabe Normal/8372309
index 14c9bec02..2fd560c28 100644
--- a/puzzles files/nurikabe/15x15 Nurikabe Normal/8372309
+++ b/puzzles files/nurikabe/15x15 Nurikabe Normal/8372309
@@ -1,6 +1,5 @@
-
-
+
|
@@ -45,5 +44,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/20x20 Nurikabe Normal/175081 b/puzzles files/nurikabe/20x20 Nurikabe Normal/175081
index d093c61a7..3065839e3 100644
--- a/puzzles files/nurikabe/20x20 Nurikabe Normal/175081
+++ b/puzzles files/nurikabe/20x20 Nurikabe Normal/175081
@@ -1,6 +1,5 @@
-
-
+
|
@@ -76,5 +75,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/20x20 Nurikabe Normal/3131243 b/puzzles files/nurikabe/20x20 Nurikabe Normal/3131243
index d783831b6..e15372ac4 100644
--- a/puzzles files/nurikabe/20x20 Nurikabe Normal/3131243
+++ b/puzzles files/nurikabe/20x20 Nurikabe Normal/3131243
@@ -1,6 +1,5 @@
-
-
+
|
@@ -81,5 +80,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/20x20 Nurikabe Normal/4400487 b/puzzles files/nurikabe/20x20 Nurikabe Normal/4400487
index 0b994e35b..628d359fb 100644
--- a/puzzles files/nurikabe/20x20 Nurikabe Normal/4400487
+++ b/puzzles files/nurikabe/20x20 Nurikabe Normal/4400487
@@ -1,6 +1,5 @@
-
-
+
|
@@ -75,5 +74,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/20x20 Nurikabe Normal/5096090 b/puzzles files/nurikabe/20x20 Nurikabe Normal/5096090
index decdb8ab0..e55e89f0e 100644
--- a/puzzles files/nurikabe/20x20 Nurikabe Normal/5096090
+++ b/puzzles files/nurikabe/20x20 Nurikabe Normal/5096090
@@ -1,6 +1,5 @@
-
-
+
|
@@ -76,5 +75,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/20x20 Nurikabe Normal/8595641 b/puzzles files/nurikabe/20x20 Nurikabe Normal/8595641
index 8a27747b4..90370cb0d 100644
--- a/puzzles files/nurikabe/20x20 Nurikabe Normal/8595641
+++ b/puzzles files/nurikabe/20x20 Nurikabe Normal/8595641
@@ -1,6 +1,5 @@
-
-
+
|
@@ -79,5 +78,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/5x5 Nurikabe Easy/118040 b/puzzles files/nurikabe/5x5 Nurikabe Easy/118040
index 7fdd9d60d..396f5580c 100644
--- a/puzzles files/nurikabe/5x5 Nurikabe Easy/118040
+++ b/puzzles files/nurikabe/5x5 Nurikabe Easy/118040
@@ -1,6 +1,5 @@
-
-
+
|
@@ -11,5 +10,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/5x5 Nurikabe Easy/235235 b/puzzles files/nurikabe/5x5 Nurikabe Easy/235235
index 94992fde7..4365208e3 100644
--- a/puzzles files/nurikabe/5x5 Nurikabe Easy/235235
+++ b/puzzles files/nurikabe/5x5 Nurikabe Easy/235235
@@ -1,6 +1,5 @@
-
-
+
|
@@ -10,5 +9,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/5x5 Nurikabe Hard/118040 b/puzzles files/nurikabe/5x5 Nurikabe Hard/118040
index 8c995d807..714be4e2b 100644
--- a/puzzles files/nurikabe/5x5 Nurikabe Hard/118040
+++ b/puzzles files/nurikabe/5x5 Nurikabe Hard/118040
@@ -1,6 +1,5 @@
-
-
+
|
@@ -9,5 +8,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/5x5 Nurikabe Hard/1726232 b/puzzles files/nurikabe/5x5 Nurikabe Hard/1726232
index 434b31e5f..7ec5ecbb9 100644
--- a/puzzles files/nurikabe/5x5 Nurikabe Hard/1726232
+++ b/puzzles files/nurikabe/5x5 Nurikabe Hard/1726232
@@ -1,6 +1,5 @@
-
-
+
|
@@ -9,5 +8,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/5x5 Nurikabe Hard/2168054 b/puzzles files/nurikabe/5x5 Nurikabe Hard/2168054
index 6e1c34ea5..d0441aa83 100644
--- a/puzzles files/nurikabe/5x5 Nurikabe Hard/2168054
+++ b/puzzles files/nurikabe/5x5 Nurikabe Hard/2168054
@@ -1,6 +1,5 @@
-
-
+
|
@@ -9,5 +8,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/5x5 Nurikabe Hard/7209030 b/puzzles files/nurikabe/5x5 Nurikabe Hard/7209030
index cd7fe4bfe..296945ffe 100644
--- a/puzzles files/nurikabe/5x5 Nurikabe Hard/7209030
+++ b/puzzles files/nurikabe/5x5 Nurikabe Hard/7209030
@@ -1,6 +1,5 @@
-
-
+
|
@@ -10,5 +9,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/5x5 Nurikabe Hard/7897030 b/puzzles files/nurikabe/5x5 Nurikabe Hard/7897030
index 048387c9d..2fa5ba158 100644
--- a/puzzles files/nurikabe/5x5 Nurikabe Hard/7897030
+++ b/puzzles files/nurikabe/5x5 Nurikabe Hard/7897030
@@ -1,6 +1,5 @@
-
-
+
|
@@ -10,5 +9,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/5x5 Nurikabe Normal/1795638 b/puzzles files/nurikabe/5x5 Nurikabe Normal/1795638
index 356e3e84b..bc802d724 100644
--- a/puzzles files/nurikabe/5x5 Nurikabe Normal/1795638
+++ b/puzzles files/nurikabe/5x5 Nurikabe Normal/1795638
@@ -1,6 +1,5 @@
-
-
+
|
@@ -10,5 +9,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/5x5 Nurikabe Normal/2663893 b/puzzles files/nurikabe/5x5 Nurikabe Normal/2663893
index 4db53a64a..9a89d78c8 100644
--- a/puzzles files/nurikabe/5x5 Nurikabe Normal/2663893
+++ b/puzzles files/nurikabe/5x5 Nurikabe Normal/2663893
@@ -1,6 +1,5 @@
-
-
+
|
@@ -10,5 +9,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/5x5 Nurikabe Normal/3282122 b/puzzles files/nurikabe/5x5 Nurikabe Normal/3282122
index 19082c83e..9e24e336c 100644
--- a/puzzles files/nurikabe/5x5 Nurikabe Normal/3282122
+++ b/puzzles files/nurikabe/5x5 Nurikabe Normal/3282122
@@ -1,6 +1,5 @@
-
-
+
|
@@ -10,5 +9,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/5x5 Nurikabe Normal/6403086 b/puzzles files/nurikabe/5x5 Nurikabe Normal/6403086
index 369ff7f8b..47d151227 100644
--- a/puzzles files/nurikabe/5x5 Nurikabe Normal/6403086
+++ b/puzzles files/nurikabe/5x5 Nurikabe Normal/6403086
@@ -1,6 +1,5 @@
-
-
+
|
@@ -12,5 +11,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/5x5 Nurikabe Normal/7587733 b/puzzles files/nurikabe/5x5 Nurikabe Normal/7587733
index 2374129c3..0a83de257 100644
--- a/puzzles files/nurikabe/5x5 Nurikabe Normal/7587733
+++ b/puzzles files/nurikabe/5x5 Nurikabe Normal/7587733
@@ -1,6 +1,5 @@
-
-
+
|
@@ -11,5 +10,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/7x7 Nurikabe Hard/4478248 b/puzzles files/nurikabe/7x7 Nurikabe Hard/4478248
index 3413d8777..1dfa98fb2 100644
--- a/puzzles files/nurikabe/7x7 Nurikabe Hard/4478248
+++ b/puzzles files/nurikabe/7x7 Nurikabe Hard/4478248
@@ -1,6 +1,5 @@
-
-
+
|
@@ -11,5 +10,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/7x7 Nurikabe Hard/5631322 b/puzzles files/nurikabe/7x7 Nurikabe Hard/5631322
index 8c73dd94e..8a4398c17 100644
--- a/puzzles files/nurikabe/7x7 Nurikabe Hard/5631322
+++ b/puzzles files/nurikabe/7x7 Nurikabe Hard/5631322
@@ -1,6 +1,5 @@
-
-
+
|
@@ -12,5 +11,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/7x7 Nurikabe Hard/6734769 b/puzzles files/nurikabe/7x7 Nurikabe Hard/6734769
index 4970c3cfd..d44bf8d28 100644
--- a/puzzles files/nurikabe/7x7 Nurikabe Hard/6734769
+++ b/puzzles files/nurikabe/7x7 Nurikabe Hard/6734769
@@ -1,6 +1,5 @@
-
-
+
|
@@ -12,5 +11,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/7x7 Nurikabe Hard/8078467 b/puzzles files/nurikabe/7x7 Nurikabe Hard/8078467
index b44dfa06b..ef4c60ec1 100644
--- a/puzzles files/nurikabe/7x7 Nurikabe Hard/8078467
+++ b/puzzles files/nurikabe/7x7 Nurikabe Hard/8078467
@@ -1,6 +1,5 @@
-
-
+
|
@@ -12,5 +11,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/7x7 Nurikabe Hard/9225348 b/puzzles files/nurikabe/7x7 Nurikabe Hard/9225348
index becf841dd..927105753 100644
--- a/puzzles files/nurikabe/7x7 Nurikabe Hard/9225348
+++ b/puzzles files/nurikabe/7x7 Nurikabe Hard/9225348
@@ -1,6 +1,5 @@
-
-
+
|
@@ -11,5 +10,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/7x7 Nurikabe Normal/42455 b/puzzles files/nurikabe/7x7 Nurikabe Normal/42455
index f1264c1e6..1fb449cdb 100644
--- a/puzzles files/nurikabe/7x7 Nurikabe Normal/42455
+++ b/puzzles files/nurikabe/7x7 Nurikabe Normal/42455
@@ -1,6 +1,5 @@
-
-
+
|
@@ -11,5 +10,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/7x7 Nurikabe Normal/4390561 b/puzzles files/nurikabe/7x7 Nurikabe Normal/4390561
index 2495902b7..7ed93390d 100644
--- a/puzzles files/nurikabe/7x7 Nurikabe Normal/4390561
+++ b/puzzles files/nurikabe/7x7 Nurikabe Normal/4390561
@@ -1,6 +1,5 @@
-
-
+
|
@@ -14,5 +13,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/7x7 Nurikabe Normal/4877172 b/puzzles files/nurikabe/7x7 Nurikabe Normal/4877172
index 6ba3f9230..43bbfc065 100644
--- a/puzzles files/nurikabe/7x7 Nurikabe Normal/4877172
+++ b/puzzles files/nurikabe/7x7 Nurikabe Normal/4877172
@@ -1,6 +1,5 @@
-
-
+
|
@@ -14,5 +13,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/7x7 Nurikabe Normal/7958242 b/puzzles files/nurikabe/7x7 Nurikabe Normal/7958242
index 50b3ae7d6..6b5d9135b 100644
--- a/puzzles files/nurikabe/7x7 Nurikabe Normal/7958242
+++ b/puzzles files/nurikabe/7x7 Nurikabe Normal/7958242
@@ -1,6 +1,5 @@
-
-
+
|
@@ -12,5 +11,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/nurikabe/7x7 Nurikabe Normal/8786625 b/puzzles files/nurikabe/7x7 Nurikabe Normal/8786625
index cc1b79856..2d5449e1e 100644
--- a/puzzles files/nurikabe/7x7 Nurikabe Normal/8786625
+++ b/puzzles files/nurikabe/7x7 Nurikabe Normal/8786625
@@ -1,6 +1,5 @@
-
-
+
|
@@ -12,5 +11,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/shorttruthtable/DeMorgan.xml b/puzzles files/shorttruthtable/DeMorgan.xml
index 37df685c3..833caf8ca 100644
--- a/puzzles files/shorttruthtable/DeMorgan.xml
+++ b/puzzles files/shorttruthtable/DeMorgan.xml
@@ -1,6 +1,5 @@
-
-
+
@@ -8,5 +7,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/shorttruthtable/Heuveln_01.xml b/puzzles files/shorttruthtable/Heuveln_01.xml
index 3cf188d64..96afb6bef 100644
--- a/puzzles files/shorttruthtable/Heuveln_01.xml
+++ b/puzzles files/shorttruthtable/Heuveln_01.xml
@@ -1,14 +1,13 @@
-
-
+
-
+
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/shorttruthtable/Heuveln_02.xml b/puzzles files/shorttruthtable/Heuveln_02.xml
index 92e0f9988..c93c85fe4 100644
--- a/puzzles files/shorttruthtable/Heuveln_02.xml
+++ b/puzzles files/shorttruthtable/Heuveln_02.xml
@@ -1,14 +1,13 @@
-
-
+
-
-
-
-
+
+
+
+
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/shorttruthtable/Heuveln_03.xml b/puzzles files/shorttruthtable/Heuveln_03.xml
index 31e19e0a9..c2cae503e 100644
--- a/puzzles files/shorttruthtable/Heuveln_03.xml
+++ b/puzzles files/shorttruthtable/Heuveln_03.xml
@@ -1,14 +1,13 @@
-
-
+
-
+
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/shorttruthtable/Heuveln_04.xml b/puzzles files/shorttruthtable/Heuveln_04.xml
index 97e7a944a..331a88063 100644
--- a/puzzles files/shorttruthtable/Heuveln_04.xml
+++ b/puzzles files/shorttruthtable/Heuveln_04.xml
@@ -1,13 +1,12 @@
-
-
+
-
-
-
+
+
+
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/shorttruthtable/Heuveln_04.xml_test02 b/puzzles files/shorttruthtable/Heuveln_04.xml_test02
index ba0eb274b..1d2248ae7 100644
--- a/puzzles files/shorttruthtable/Heuveln_04.xml_test02
+++ b/puzzles files/shorttruthtable/Heuveln_04.xml_test02
@@ -1,6 +1,5 @@
-
-
+
@@ -23,5 +22,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/shorttruthtable/Heuveln_04_export test.xml b/puzzles files/shorttruthtable/Heuveln_04_export test.xml
index 9e3865319..c0d54b491 100644
--- a/puzzles files/shorttruthtable/Heuveln_04_export test.xml
+++ b/puzzles files/shorttruthtable/Heuveln_04_export test.xml
@@ -1,6 +1,5 @@
-
-
+
@@ -65,5 +64,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/shorttruthtable/Heuveln_04_test.xml b/puzzles files/shorttruthtable/Heuveln_04_test.xml
index ae5c8bab6..e879de1d3 100644
--- a/puzzles files/shorttruthtable/Heuveln_04_test.xml
+++ b/puzzles files/shorttruthtable/Heuveln_04_test.xml
@@ -1,6 +1,5 @@
-
-
+
@@ -23,5 +22,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/shorttruthtable/Heuveln_04_test01.xml b/puzzles files/shorttruthtable/Heuveln_04_test01.xml
index cc5addabd..800b2e21b 100644
--- a/puzzles files/shorttruthtable/Heuveln_04_test01.xml
+++ b/puzzles files/shorttruthtable/Heuveln_04_test01.xml
@@ -1,6 +1,5 @@
-
-
+
@@ -23,5 +22,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/shorttruthtable/Heuveln_04_test03.xml b/puzzles files/shorttruthtable/Heuveln_04_test03.xml
index 135af1c82..80b4efe75 100644
--- a/puzzles files/shorttruthtable/Heuveln_04_test03.xml
+++ b/puzzles files/shorttruthtable/Heuveln_04_test03.xml
@@ -1,6 +1,5 @@
-
-
+
@@ -23,5 +22,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/shorttruthtable/Heuveln_04_test_exprt.xml b/puzzles files/shorttruthtable/Heuveln_04_test_exprt.xml
index 4943ac6d3..ae0d81491 100644
--- a/puzzles files/shorttruthtable/Heuveln_04_test_exprt.xml
+++ b/puzzles files/shorttruthtable/Heuveln_04_test_exprt.xml
@@ -1,6 +1,5 @@
-
-
+
@@ -23,5 +22,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/shorttruthtable/Heuveln_05.xml b/puzzles files/shorttruthtable/Heuveln_05.xml
index 05b37d5db..881a10ef5 100644
--- a/puzzles files/shorttruthtable/Heuveln_05.xml
+++ b/puzzles files/shorttruthtable/Heuveln_05.xml
@@ -1,6 +1,5 @@
-
-
+
@@ -10,5 +9,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/shorttruthtable/empty_test.xml b/puzzles files/shorttruthtable/empty_test.xml
index 2d8e4b6c8..9bdddf428 100644
--- a/puzzles files/shorttruthtable/empty_test.xml
+++ b/puzzles files/shorttruthtable/empty_test.xml
@@ -1,9 +1,8 @@
-
-
+
-
+
@@ -11,4 +10,4 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/shorttruthtable/invalid1.xml b/puzzles files/shorttruthtable/invalid1.xml
index 18bd38a49..327cb9cd8 100644
--- a/puzzles files/shorttruthtable/invalid1.xml
+++ b/puzzles files/shorttruthtable/invalid1.xml
@@ -1,6 +1,5 @@
-
-
+
@@ -10,5 +9,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/shorttruthtable/invalid2.xml b/puzzles files/shorttruthtable/invalid2.xml
index 08091a283..50249f219 100644
--- a/puzzles files/shorttruthtable/invalid2.xml
+++ b/puzzles files/shorttruthtable/invalid2.xml
@@ -1,6 +1,5 @@
-
-
+
@@ -10,5 +9,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/shorttruthtable/invalid3.xml b/puzzles files/shorttruthtable/invalid3.xml
index b7a0d61a7..c5992504a 100644
--- a/puzzles files/shorttruthtable/invalid3.xml
+++ b/puzzles files/shorttruthtable/invalid3.xml
@@ -1,6 +1,5 @@
-
-
+
@@ -10,5 +9,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/shorttruthtable/test.xml b/puzzles files/shorttruthtable/test.xml
index 5e5f93362..ad55f21d6 100644
--- a/puzzles files/shorttruthtable/test.xml
+++ b/puzzles files/shorttruthtable/test.xml
@@ -1,6 +1,5 @@
-
-
+
@@ -10,5 +9,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/skyscrapers/4x4 Skyscrapers Easy1 b/puzzles files/skyscrapers/4x4 Skyscrapers Easy1
index 64fa7a340..a2c988c5c 100644
--- a/puzzles files/skyscrapers/4x4 Skyscrapers Easy1
+++ b/puzzles files/skyscrapers/4x4 Skyscrapers Easy1
@@ -1,6 +1,5 @@
-
-
+
@@ -20,5 +19,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/skyscrapers/4x4 Skyscrapers Easy2 b/puzzles files/skyscrapers/4x4 Skyscrapers Easy2
index e30fbd89e..c292c5a11 100644
--- a/puzzles files/skyscrapers/4x4 Skyscrapers Easy2
+++ b/puzzles files/skyscrapers/4x4 Skyscrapers Easy2
@@ -1,6 +1,5 @@
-
-
+
@@ -20,4 +19,4 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/skyscrapers/4x4 Skyscrapers Easy3 b/puzzles files/skyscrapers/4x4 Skyscrapers Easy3
index 61fa8054b..311bbe2a4 100644
--- a/puzzles files/skyscrapers/4x4 Skyscrapers Easy3
+++ b/puzzles files/skyscrapers/4x4 Skyscrapers Easy3
@@ -1,6 +1,5 @@
-
-
+
@@ -20,4 +19,4 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/skyscrapers/5x5 Skyscrapers Easy1 b/puzzles files/skyscrapers/5x5 Skyscrapers Easy1
index 111d2bd87..1e3f1851c 100644
--- a/puzzles files/skyscrapers/5x5 Skyscrapers Easy1
+++ b/puzzles files/skyscrapers/5x5 Skyscrapers Easy1
@@ -1,6 +1,5 @@
-
-
+
@@ -22,5 +21,4 @@
-
-
+
\ No newline at end of file
diff --git a/puzzles files/skyscrapers/5x5 Skyscrapers Easy2 b/puzzles files/skyscrapers/5x5 Skyscrapers Easy2
index 45a1db188..eccc248b3 100644
--- a/puzzles files/skyscrapers/5x5 Skyscrapers Easy2
+++ b/puzzles files/skyscrapers/5x5 Skyscrapers Easy2
@@ -1,6 +1,5 @@
-
-
+
@@ -22,5 +21,4 @@
-
-
+
\ No newline at end of file
diff --git a/puzzles files/skyscrapers/5x5 Skyscrapers Easy3 b/puzzles files/skyscrapers/5x5 Skyscrapers Easy3
index 87f7db3d7..899cc8065 100644
--- a/puzzles files/skyscrapers/5x5 Skyscrapers Easy3
+++ b/puzzles files/skyscrapers/5x5 Skyscrapers Easy3
@@ -1,6 +1,5 @@
-
-
+
@@ -22,5 +21,4 @@
-
-
+
\ No newline at end of file
diff --git a/puzzles files/skyscrapers/5x5 Skyscrapers Medium1 b/puzzles files/skyscrapers/5x5 Skyscrapers Medium1
index 9e79c6248..7998d5aa4 100644
--- a/puzzles files/skyscrapers/5x5 Skyscrapers Medium1
+++ b/puzzles files/skyscrapers/5x5 Skyscrapers Medium1
@@ -1,6 +1,5 @@
-
-
+
@@ -22,5 +21,4 @@
-
-
+
\ No newline at end of file
diff --git a/puzzles files/skyscrapers/5x5 Skyscrapers Medium2 b/puzzles files/skyscrapers/5x5 Skyscrapers Medium2
index fab87f9f7..89ed95c86 100644
--- a/puzzles files/skyscrapers/5x5 Skyscrapers Medium2
+++ b/puzzles files/skyscrapers/5x5 Skyscrapers Medium2
@@ -1,6 +1,5 @@
-
-
+
@@ -22,5 +21,4 @@
-
-
+
\ No newline at end of file
diff --git a/puzzles files/skyscrapers/5x5 Skyscrapers Medium3 b/puzzles files/skyscrapers/5x5 Skyscrapers Medium3
index efd123165..b8cce12f5 100644
--- a/puzzles files/skyscrapers/5x5 Skyscrapers Medium3
+++ b/puzzles files/skyscrapers/5x5 Skyscrapers Medium3
@@ -1,6 +1,5 @@
-
-
+
@@ -22,5 +21,4 @@
-
-
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Advanced/15189327 b/puzzles files/sudoku/3x3 Sudoku Advanced/15189327
index 23ec1c161..c1f8f74c9 100644
--- a/puzzles files/sudoku/3x3 Sudoku Advanced/15189327
+++ b/puzzles files/sudoku/3x3 Sudoku Advanced/15189327
@@ -1,6 +1,5 @@
-
-
+
|
@@ -34,5 +33,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Advanced/20628823 b/puzzles files/sudoku/3x3 Sudoku Advanced/20628823
index f3d08ebec..9194d1361 100644
--- a/puzzles files/sudoku/3x3 Sudoku Advanced/20628823
+++ b/puzzles files/sudoku/3x3 Sudoku Advanced/20628823
@@ -1,6 +1,5 @@
-
-
+
|
@@ -34,5 +33,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Advanced/45527956 b/puzzles files/sudoku/3x3 Sudoku Advanced/45527956
index 6f6e1f1bc..772545f5b 100644
--- a/puzzles files/sudoku/3x3 Sudoku Advanced/45527956
+++ b/puzzles files/sudoku/3x3 Sudoku Advanced/45527956
@@ -1,6 +1,5 @@
-
-
+
|
@@ -36,5 +35,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Advanced/9370592 b/puzzles files/sudoku/3x3 Sudoku Advanced/9370592
index 58fb0f545..92857e6ca 100644
--- a/puzzles files/sudoku/3x3 Sudoku Advanced/9370592
+++ b/puzzles files/sudoku/3x3 Sudoku Advanced/9370592
@@ -1,6 +1,5 @@
-
-
+
|
@@ -35,5 +34,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Advanced/9680726 b/puzzles files/sudoku/3x3 Sudoku Advanced/9680726
index ebf161277..18e0c56e3 100644
--- a/puzzles files/sudoku/3x3 Sudoku Advanced/9680726
+++ b/puzzles files/sudoku/3x3 Sudoku Advanced/9680726
@@ -1,6 +1,5 @@
-
-
+
|
@@ -33,5 +32,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Basic/14538464 b/puzzles files/sudoku/3x3 Sudoku Basic/14538464
index 44f6cc1cb..b9dda512d 100644
--- a/puzzles files/sudoku/3x3 Sudoku Basic/14538464
+++ b/puzzles files/sudoku/3x3 Sudoku Basic/14538464
@@ -1,6 +1,5 @@
-
-
+
|
@@ -34,5 +33,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Basic/32722678 b/puzzles files/sudoku/3x3 Sudoku Basic/32722678
index 9c6d04fdd..0fd3ddf1b 100644
--- a/puzzles files/sudoku/3x3 Sudoku Basic/32722678
+++ b/puzzles files/sudoku/3x3 Sudoku Basic/32722678
@@ -1,6 +1,5 @@
-
-
+
|
@@ -38,5 +37,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Basic/61362355 b/puzzles files/sudoku/3x3 Sudoku Basic/61362355
index 063f011d4..ef578d5b0 100644
--- a/puzzles files/sudoku/3x3 Sudoku Basic/61362355
+++ b/puzzles files/sudoku/3x3 Sudoku Basic/61362355
@@ -1,6 +1,5 @@
-
-
+
|
@@ -40,5 +39,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Basic/63397584 b/puzzles files/sudoku/3x3 Sudoku Basic/63397584
index 078fc79e9..33fc344a4 100644
--- a/puzzles files/sudoku/3x3 Sudoku Basic/63397584
+++ b/puzzles files/sudoku/3x3 Sudoku Basic/63397584
@@ -1,6 +1,5 @@
-
-
+
|
@@ -40,5 +39,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Basic/75565282 b/puzzles files/sudoku/3x3 Sudoku Basic/75565282
index 8bdd8ed34..03a692193 100644
--- a/puzzles files/sudoku/3x3 Sudoku Basic/75565282
+++ b/puzzles files/sudoku/3x3 Sudoku Basic/75565282
@@ -1,6 +1,5 @@
-
-
+
|
@@ -40,5 +39,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Easy/1602661 b/puzzles files/sudoku/3x3 Sudoku Easy/1602661
index f66c2cfab..156ccf8bf 100644
--- a/puzzles files/sudoku/3x3 Sudoku Easy/1602661
+++ b/puzzles files/sudoku/3x3 Sudoku Easy/1602661
@@ -1,6 +1,5 @@
-
-
+
|
@@ -33,5 +32,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Easy/17756306 b/puzzles files/sudoku/3x3 Sudoku Easy/17756306
index aee2f5e92..6b4f5a489 100644
--- a/puzzles files/sudoku/3x3 Sudoku Easy/17756306
+++ b/puzzles files/sudoku/3x3 Sudoku Easy/17756306
@@ -1,6 +1,5 @@
-
-
+
|
@@ -33,5 +32,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Easy/48718527 b/puzzles files/sudoku/3x3 Sudoku Easy/48718527
index c1ee41b5c..5853f2266 100644
--- a/puzzles files/sudoku/3x3 Sudoku Easy/48718527
+++ b/puzzles files/sudoku/3x3 Sudoku Easy/48718527
@@ -1,6 +1,5 @@
-
-
+
|
@@ -34,5 +33,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Easy/50638522 b/puzzles files/sudoku/3x3 Sudoku Easy/50638522
index f390c5f11..5edfcebd7 100644
--- a/puzzles files/sudoku/3x3 Sudoku Easy/50638522
+++ b/puzzles files/sudoku/3x3 Sudoku Easy/50638522
@@ -1,6 +1,5 @@
-
-
+
|
@@ -33,5 +32,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Easy/52671552 b/puzzles files/sudoku/3x3 Sudoku Easy/52671552
index 738db6337..dba517672 100644
--- a/puzzles files/sudoku/3x3 Sudoku Easy/52671552
+++ b/puzzles files/sudoku/3x3 Sudoku Easy/52671552
@@ -1,6 +1,5 @@
-
-
+
|
@@ -34,5 +33,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Evil/10251277 b/puzzles files/sudoku/3x3 Sudoku Evil/10251277
index 7d83571f1..54ec40eb5 100644
--- a/puzzles files/sudoku/3x3 Sudoku Evil/10251277
+++ b/puzzles files/sudoku/3x3 Sudoku Evil/10251277
@@ -1,6 +1,5 @@
-
-
+
|
@@ -36,5 +35,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Evil/112402 b/puzzles files/sudoku/3x3 Sudoku Evil/112402
index 48aea3690..68c787230 100644
--- a/puzzles files/sudoku/3x3 Sudoku Evil/112402
+++ b/puzzles files/sudoku/3x3 Sudoku Evil/112402
@@ -1,6 +1,5 @@
-
-
+
|
@@ -31,5 +30,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Evil/285907 b/puzzles files/sudoku/3x3 Sudoku Evil/285907
index f5080c051..cb6035a99 100644
--- a/puzzles files/sudoku/3x3 Sudoku Evil/285907
+++ b/puzzles files/sudoku/3x3 Sudoku Evil/285907
@@ -1,6 +1,5 @@
-
-
+
|
@@ -32,5 +31,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Evil/3152911 b/puzzles files/sudoku/3x3 Sudoku Evil/3152911
index ab6fc40d8..d48ae21d8 100644
--- a/puzzles files/sudoku/3x3 Sudoku Evil/3152911
+++ b/puzzles files/sudoku/3x3 Sudoku Evil/3152911
@@ -1,6 +1,5 @@
-
-
+
|
@@ -33,5 +32,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Evil/89765 b/puzzles files/sudoku/3x3 Sudoku Evil/89765
index 580ddb90a..2b91e6113 100644
--- a/puzzles files/sudoku/3x3 Sudoku Evil/89765
+++ b/puzzles files/sudoku/3x3 Sudoku Evil/89765
@@ -1,6 +1,5 @@
-
-
+
|
@@ -31,5 +30,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Extreme/10119634 b/puzzles files/sudoku/3x3 Sudoku Extreme/10119634
index 0ba7ff226..f37a0b2dd 100644
--- a/puzzles files/sudoku/3x3 Sudoku Extreme/10119634
+++ b/puzzles files/sudoku/3x3 Sudoku Extreme/10119634
@@ -1,6 +1,5 @@
-
-
+
|
@@ -40,5 +39,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Extreme/1922600 b/puzzles files/sudoku/3x3 Sudoku Extreme/1922600
index a01843285..196484ec6 100644
--- a/puzzles files/sudoku/3x3 Sudoku Extreme/1922600
+++ b/puzzles files/sudoku/3x3 Sudoku Extreme/1922600
@@ -1,6 +1,5 @@
-
-
+
|
@@ -31,5 +30,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Extreme/3924003 b/puzzles files/sudoku/3x3 Sudoku Extreme/3924003
index d582bc111..2d8d40442 100644
--- a/puzzles files/sudoku/3x3 Sudoku Extreme/3924003
+++ b/puzzles files/sudoku/3x3 Sudoku Extreme/3924003
@@ -1,6 +1,5 @@
-
-
+
|
@@ -32,5 +31,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Extreme/469747 b/puzzles files/sudoku/3x3 Sudoku Extreme/469747
index 51d65175c..24b28802e 100644
--- a/puzzles files/sudoku/3x3 Sudoku Extreme/469747
+++ b/puzzles files/sudoku/3x3 Sudoku Extreme/469747
@@ -1,6 +1,5 @@
-
-
+
|
@@ -33,5 +32,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Extreme/7643647 b/puzzles files/sudoku/3x3 Sudoku Extreme/7643647
index 003e88bac..8b09f22b3 100644
--- a/puzzles files/sudoku/3x3 Sudoku Extreme/7643647
+++ b/puzzles files/sudoku/3x3 Sudoku Extreme/7643647
@@ -1,6 +1,5 @@
-
-
+
|
@@ -32,5 +31,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Intermediate/22925923 b/puzzles files/sudoku/3x3 Sudoku Intermediate/22925923
index 638498b64..e1a4816fc 100644
--- a/puzzles files/sudoku/3x3 Sudoku Intermediate/22925923
+++ b/puzzles files/sudoku/3x3 Sudoku Intermediate/22925923
@@ -1,6 +1,5 @@
-
-
+
|
@@ -34,5 +33,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Intermediate/44179211 b/puzzles files/sudoku/3x3 Sudoku Intermediate/44179211
index afe4a6302..e9f3cf08d 100644
--- a/puzzles files/sudoku/3x3 Sudoku Intermediate/44179211
+++ b/puzzles files/sudoku/3x3 Sudoku Intermediate/44179211
@@ -1,6 +1,5 @@
-
-
+
|
@@ -32,5 +31,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Intermediate/59467143 b/puzzles files/sudoku/3x3 Sudoku Intermediate/59467143
index df1f674c3..845392e40 100644
--- a/puzzles files/sudoku/3x3 Sudoku Intermediate/59467143
+++ b/puzzles files/sudoku/3x3 Sudoku Intermediate/59467143
@@ -1,6 +1,5 @@
-
-
+
|
@@ -38,5 +37,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Intermediate/7405304 b/puzzles files/sudoku/3x3 Sudoku Intermediate/7405304
index 8d0b936ad..c2d4fb3b5 100644
--- a/puzzles files/sudoku/3x3 Sudoku Intermediate/7405304
+++ b/puzzles files/sudoku/3x3 Sudoku Intermediate/7405304
@@ -1,6 +1,5 @@
-
-
+
|
@@ -32,5 +31,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/sudoku/3x3 Sudoku Intermediate/78017020 b/puzzles files/sudoku/3x3 Sudoku Intermediate/78017020
index c41d2ab17..7b3ff1859 100644
--- a/puzzles files/sudoku/3x3 Sudoku Intermediate/78017020
+++ b/puzzles files/sudoku/3x3 Sudoku Intermediate/78017020
@@ -1,6 +1,5 @@
-
-
+
|
@@ -34,5 +33,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/thermometer/therm_test.xml b/puzzles files/thermometer/therm_test.xml
index 66e841dc5..3ebe2e10f 100644
--- a/puzzles files/thermometer/therm_test.xml
+++ b/puzzles files/thermometer/therm_test.xml
@@ -1,6 +1,5 @@
-
-
+
@@ -24,4 +23,4 @@
-
+
\ No newline at end of file
diff --git a/puzzles files/treetent/12x12 TreeTent Easy/061177 b/puzzles files/treetent/12x12 TreeTent Easy/061177
index 18a30f70a..d6b4dec4b 100644
--- a/puzzles files/treetent/12x12 TreeTent Easy/061177
+++ b/puzzles files/treetent/12x12 TreeTent Easy/061177
@@ -1,6 +1,5 @@
-
-
+
|
@@ -62,5 +61,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/12x12 TreeTent Easy/198217 b/puzzles files/treetent/12x12 TreeTent Easy/198217
index 99e04cc2e..893683e24 100644
--- a/puzzles files/treetent/12x12 TreeTent Easy/198217
+++ b/puzzles files/treetent/12x12 TreeTent Easy/198217
@@ -1,6 +1,5 @@
-
-
+
|
@@ -61,5 +60,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/12x12 TreeTent Easy/255410 b/puzzles files/treetent/12x12 TreeTent Easy/255410
index da0820c7d..b4e50328c 100644
--- a/puzzles files/treetent/12x12 TreeTent Easy/255410
+++ b/puzzles files/treetent/12x12 TreeTent Easy/255410
@@ -1,6 +1,5 @@
-
-
+
|
@@ -62,5 +61,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/12x12 TreeTent Easy/790635 b/puzzles files/treetent/12x12 TreeTent Easy/790635
index 86284f458..a1072cbbd 100644
--- a/puzzles files/treetent/12x12 TreeTent Easy/790635
+++ b/puzzles files/treetent/12x12 TreeTent Easy/790635
@@ -1,6 +1,5 @@
-
-
+
|
@@ -62,5 +61,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/12x12 TreeTent Easy/805457 b/puzzles files/treetent/12x12 TreeTent Easy/805457
index 55103db74..922ad5f6f 100644
--- a/puzzles files/treetent/12x12 TreeTent Easy/805457
+++ b/puzzles files/treetent/12x12 TreeTent Easy/805457
@@ -1,6 +1,5 @@
-
-
+
|
@@ -62,5 +61,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/12x12 TreeTent Medium/154674 b/puzzles files/treetent/12x12 TreeTent Medium/154674
index 16121d315..ef305bba3 100644
--- a/puzzles files/treetent/12x12 TreeTent Medium/154674
+++ b/puzzles files/treetent/12x12 TreeTent Medium/154674
@@ -1,6 +1,5 @@
-
-
+
|
@@ -61,5 +60,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/12x12 TreeTent Medium/330689 b/puzzles files/treetent/12x12 TreeTent Medium/330689
index 438a98451..57c880c9a 100644
--- a/puzzles files/treetent/12x12 TreeTent Medium/330689
+++ b/puzzles files/treetent/12x12 TreeTent Medium/330689
@@ -1,6 +1,5 @@
-
-
+
|
@@ -62,5 +61,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/12x12 TreeTent Medium/538746 b/puzzles files/treetent/12x12 TreeTent Medium/538746
index bead4295a..a9b3d0b86 100644
--- a/puzzles files/treetent/12x12 TreeTent Medium/538746
+++ b/puzzles files/treetent/12x12 TreeTent Medium/538746
@@ -1,6 +1,5 @@
-
-
+
|
@@ -62,5 +61,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/12x12 TreeTent Medium/579921 b/puzzles files/treetent/12x12 TreeTent Medium/579921
index de6aefbdc..907d44ee9 100644
--- a/puzzles files/treetent/12x12 TreeTent Medium/579921
+++ b/puzzles files/treetent/12x12 TreeTent Medium/579921
@@ -1,6 +1,5 @@
-
-
+
|
@@ -62,5 +61,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/12x12 TreeTent Medium/723664 b/puzzles files/treetent/12x12 TreeTent Medium/723664
index 541778a86..109ab4efd 100644
--- a/puzzles files/treetent/12x12 TreeTent Medium/723664
+++ b/puzzles files/treetent/12x12 TreeTent Medium/723664
@@ -1,6 +1,5 @@
-
-
+
|
@@ -62,5 +61,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/8x8 TreeTent Easy/13547135 b/puzzles files/treetent/8x8 TreeTent Easy/13547135
index dc04c7756..a87893506 100644
--- a/puzzles files/treetent/8x8 TreeTent Easy/13547135
+++ b/puzzles files/treetent/8x8 TreeTent Easy/13547135
@@ -1,6 +1,5 @@
-
-
+
|
@@ -38,5 +37,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/8x8 TreeTent Easy/1646651 b/puzzles files/treetent/8x8 TreeTent Easy/1646651
index db70ca164..1d74da63c 100644
--- a/puzzles files/treetent/8x8 TreeTent Easy/1646651
+++ b/puzzles files/treetent/8x8 TreeTent Easy/1646651
@@ -1,7 +1,6 @@
-
-
+
|
@@ -39,5 +38,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/8x8 TreeTent Easy/1789167 b/puzzles files/treetent/8x8 TreeTent Easy/1789167
index 54a7e6be3..ad765940c 100644
--- a/puzzles files/treetent/8x8 TreeTent Easy/1789167
+++ b/puzzles files/treetent/8x8 TreeTent Easy/1789167
@@ -1,6 +1,5 @@
-
-
+
|
@@ -38,5 +37,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/8x8 TreeTent Easy/32518510 b/puzzles files/treetent/8x8 TreeTent Easy/32518510
index 431aea1b5..3a95168df 100644
--- a/puzzles files/treetent/8x8 TreeTent Easy/32518510
+++ b/puzzles files/treetent/8x8 TreeTent Easy/32518510
@@ -1,6 +1,5 @@
-
-
+
|
@@ -38,5 +37,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/8x8 TreeTent Easy/4614656 b/puzzles files/treetent/8x8 TreeTent Easy/4614656
index 674f90443..2cc1301c6 100644
--- a/puzzles files/treetent/8x8 TreeTent Easy/4614656
+++ b/puzzles files/treetent/8x8 TreeTent Easy/4614656
@@ -1,6 +1,5 @@
-
-
+
|
@@ -38,5 +37,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/8x8 TreeTent Medium/351654 b/puzzles files/treetent/8x8 TreeTent Medium/351654
index 971633403..3971342ae 100644
--- a/puzzles files/treetent/8x8 TreeTent Medium/351654
+++ b/puzzles files/treetent/8x8 TreeTent Medium/351654
@@ -1,6 +1,5 @@
-
-
+
|
@@ -38,5 +37,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/8x8 TreeTent Medium/35496 b/puzzles files/treetent/8x8 TreeTent Medium/35496
index 61577fa36..a42d03a38 100644
--- a/puzzles files/treetent/8x8 TreeTent Medium/35496
+++ b/puzzles files/treetent/8x8 TreeTent Medium/35496
@@ -1,6 +1,5 @@
-
-
+
|
@@ -37,5 +36,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/8x8 TreeTent Medium/4656816 b/puzzles files/treetent/8x8 TreeTent Medium/4656816
index 6cc27744c..40c6266a8 100644
--- a/puzzles files/treetent/8x8 TreeTent Medium/4656816
+++ b/puzzles files/treetent/8x8 TreeTent Medium/4656816
@@ -1,6 +1,5 @@
-
-
+
|
@@ -38,5 +37,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/8x8 TreeTent Medium/6549871 b/puzzles files/treetent/8x8 TreeTent Medium/6549871
index ae8d27d33..ee3c11fa0 100644
--- a/puzzles files/treetent/8x8 TreeTent Medium/6549871
+++ b/puzzles files/treetent/8x8 TreeTent Medium/6549871
@@ -1,6 +1,5 @@
-
-
+
|
@@ -38,5 +37,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/puzzles files/treetent/8x8 TreeTent Medium/989496 b/puzzles files/treetent/8x8 TreeTent Medium/989496
index cfe358fde..a984e756e 100644
--- a/puzzles files/treetent/8x8 TreeTent Medium/989496
+++ b/puzzles files/treetent/8x8 TreeTent Medium/989496
@@ -1,6 +1,5 @@
-
-
+
|
@@ -38,5 +37,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/src/main/java/edu/rpi/legup/model/Puzzle.java b/src/main/java/edu/rpi/legup/model/Puzzle.java
index da8f76ddd..8fb615d1f 100644
--- a/src/main/java/edu/rpi/legup/model/Puzzle.java
+++ b/src/main/java/edu/rpi/legup/model/Puzzle.java
@@ -44,6 +44,7 @@ public abstract class Puzzle implements IBoardSubject, ITreeSubject {
private static final Logger LOGGER = LogManager.getLogger(Puzzle.class.getName());
protected String name;
+ protected String tag = "";
protected Board currentBoard;
protected Tree tree;
protected BoardView boardView;
@@ -380,6 +381,22 @@ public void removeDirectRule(DirectRule rule) {
directRules.remove(rule);
}
+ /**
+ * Accessor method for the puzzle UUID
+ * @return returns the puzzle UUID tag
+ */
+ public String getTag() {
+ return tag;
+ }
+
+ /**
+ * Modifier method to override the puzzle persistent UUID
+ * @param tag String to overwrite the current puzzle UUID
+ */
+ public void setTag(String tag) {
+ this.tag = tag;
+ }
+
/**
* Gets the list of contradiction rules
*
diff --git a/src/main/java/edu/rpi/legup/model/PuzzleExporter.java b/src/main/java/edu/rpi/legup/model/PuzzleExporter.java
index 13107bb54..dc8fa14a5 100644
--- a/src/main/java/edu/rpi/legup/model/PuzzleExporter.java
+++ b/src/main/java/edu/rpi/legup/model/PuzzleExporter.java
@@ -7,7 +7,9 @@
import java.io.File;
import java.time.LocalDateTime;
import java.time.ZoneId;
+import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
import java.util.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -39,6 +41,47 @@ public PuzzleExporter(Puzzle puzzle) {
this.puzzle = puzzle;
}
+ public static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+ /**
+ * Takes the puzzle state and the current date/time to obfuscate
+ * the solved state with an onto function to prevent cheating
+ *
+ * @param solved the solved state of the board, true if solved
+ * @param date the current date and time, passed during export
+ * @return hash value of time and solved state
+ */
+ public static int obfHash(boolean solved, String date) {
+ LocalDateTime dateTime = LocalDateTime.parse(date, DATE_FORMAT);
+ String obf = solved + ":" + dateTime.toEpochSecond(ZoneOffset.UTC) + ";";
+ return obf.hashCode();
+ }
+
+ /**
+ * Deobfuscates the solved state of the board from hash value using
+ * the time provided in the puzzle xml-style export
+ *
+ * @param hash the hash value saved to the export
+ * @param date the date/time value saved to the export
+ * @return boolean value of the solved state of the board
+ */
+ public static Boolean inverseHash(int hash, String date) {
+ long timestamp;
+ try {
+ LocalDateTime dateTime = LocalDateTime.parse(date, DATE_FORMAT);
+ timestamp = dateTime.toEpochSecond(ZoneOffset.UTC);
+ } catch (DateTimeParseException e) {
+ timestamp = -1;
+ }
+
+ if ((true+":"+timestamp+";").hashCode() == hash) {
+ return Boolean.TRUE;
+ } else if ((false+":"+timestamp+";").hashCode() == hash) {
+ return Boolean.FALSE;
+ }
+ return null;
+ }
+
/**
* Exports the puzzle to an xml formatted file
*
@@ -47,6 +90,10 @@ public PuzzleExporter(Puzzle puzzle) {
*/
public void exportPuzzle(String fileName) throws ExportFileException {
try {
+ // quick patch for ParserConfigurationException thrown
+ // when a double quote is placed in the file name
+ fileName = fileName.replace("\"", "");
+
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document newDocument = docBuilder.newDocument();
@@ -55,10 +102,9 @@ public void exportPuzzle(String fileName) throws ExportFileException {
legupElement.setAttribute("version", "3.0.0");
newDocument.appendChild(legupElement);
- org.w3c.dom.Element timeSavedElement = newDocument.createElement("saved");
- legupElement.appendChild(timeSavedElement);
-
org.w3c.dom.Element puzzleElement = newDocument.createElement("puzzle");
+ String idStr = puzzle.getTag().isEmpty() ? fileName.substring(fileName.lastIndexOf("\\") + 1) : puzzle.getTag();
+ puzzleElement.setAttribute("tag", idStr);
puzzleElement.setAttribute("name", puzzle.getName());
legupElement.appendChild(puzzleElement);
@@ -69,14 +115,11 @@ public void exportPuzzle(String fileName) throws ExportFileException {
}
org.w3c.dom.Element statusElement = newDocument.createElement("solved");
- String isSolved = "false";
- if (puzzle.isPuzzleComplete()) {
- isSolved = "true";
- }
- statusElement.setAttribute("isSolved", isSolved);
LocalDateTime dateTime = LocalDateTime.now(ZoneId.of("America/New_York"));
- String time = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+ String time = dateTime.format(DATE_FORMAT);
statusElement.setAttribute("lastSaved", time);
+ int hashedState = obfHash(puzzle.isPuzzleComplete(), time);
+ statusElement.setAttribute("isSolved", hashedState+"");
legupElement.appendChild(statusElement);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
diff --git a/src/main/java/edu/rpi/legup/model/PuzzleImporter.java b/src/main/java/edu/rpi/legup/model/PuzzleImporter.java
index 9d16d94e9..adc510b79 100644
--- a/src/main/java/edu/rpi/legup/model/PuzzleImporter.java
+++ b/src/main/java/edu/rpi/legup/model/PuzzleImporter.java
@@ -80,6 +80,10 @@ public void initializePuzzle(Node node) throws InvalidFileFormatException {
boolean initBoard = false;
boolean initProof = false;
+
+ String tag = puzzleElement.getAttribute("tag");
+ this.puzzle.setTag(!tag.isEmpty() ? tag : "generic.import.untagged");
+
NodeList childNodes = puzzleElement.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i++) {
Node n = childNodes.item(i);
diff --git a/src/main/java/edu/rpi/legup/ui/HomePanel.java b/src/main/java/edu/rpi/legup/ui/HomePanel.java
index 75761c475..a2c280c45 100644
--- a/src/main/java/edu/rpi/legup/ui/HomePanel.java
+++ b/src/main/java/edu/rpi/legup/ui/HomePanel.java
@@ -3,8 +3,7 @@
import edu.rpi.legup.app.GameBoardFacade;
import edu.rpi.legup.app.LegupPreferences;
import edu.rpi.legup.controller.CursorController;
-import edu.rpi.legup.model.Puzzle;
-import edu.rpi.legup.save.InvalidFileFormatException;
+import edu.rpi.legup.model.PuzzleExporter;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -12,18 +11,23 @@
import java.io.FileWriter;
import java.net.URI;
import java.net.URL;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
import java.util.Objects;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import javax.swing.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
+import javax.xml.transform.*;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
/**
* The {@code HomePanel} class represents the home panel of the LEGUP application. This panel
@@ -32,6 +36,8 @@
*/
public class HomePanel extends LegupPanel {
private static final Logger LOGGER = LogManager.getLogger(HomePanel.class.getName());
+ private static final ArrayList _tagsToGrade = new ArrayList<>();
+ private static final ArrayList _typesToGrade = new ArrayList<>();
private LegupUI legupUI;
private JFrame frame;
private JButton[] buttons;
@@ -165,107 +171,125 @@ private void initButtons() {
this.buttons[2].setFocusPainted(false);
this.buttons[2].setHorizontalTextPosition(AbstractButton.CENTER);
this.buttons[2].setVerticalTextPosition(AbstractButton.BOTTOM);
-
- this.buttons[2].addActionListener(
- new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- try {
- use_xml_to_check();
- } catch (Exception ex) {
- throw new RuntimeException(ex);
- }
- System.out.println("finished checking the folder");
- }
- });
+ this.buttons[2].addActionListener(e -> openBatchGraderMenu());
}
- /**
- * Opens a folder chooser dialog and grades puzzles in the selected folder. The results are
- * written to a CSV file.
- */
- public void checkFolder() {
- GameBoardFacade facade = GameBoardFacade.getInstance();
- /*
- * Select dir to grade; recursively grade sub-dirs using traverseDir()
- * Selected dir must have sub-dirs for each student:
- * GradeThis
- * |
- * | -> Student 1
- * | |
- * | | -> Proofs
- */
-
- JFileChooser folderBrowser = new JFileChooser();
-
- folderBrowser.setCurrentDirectory(new File(LegupPreferences.WORK_DIRECTORY));
- folderBrowser.setDialogTitle("Select Directory");
- folderBrowser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
- folderBrowser.setAcceptAllFileFilterUsed(false);
- folderBrowser.showOpenDialog(this);
- folderBrowser.setVisible(true);
- File folder = folderBrowser.getSelectedFile();
+ /** Initializes screen for autograder options */
+ public void openBatchGraderMenu() {
+ JDialog batchGraderOptions = new JDialog(frame, "Batch Grader Options", true);
+ batchGraderOptions.setSize(450, 200);
+ batchGraderOptions.setLayout(new BorderLayout());
+
+ // Create a panel for the directory selection part
+ JPanel directoryPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
+ JButton browseButton = new JButton("Select Directory");
+ JTextField directoryField = new JTextField(10);
+ directoryField.setEnabled(false);
+
+ directoryPanel.add(browseButton);
+ directoryPanel.add(directoryField);
+ batchGraderOptions.add(directoryPanel, BorderLayout.NORTH);
+
+ // Create a panel for the puzzle IDs label, text field, and checkbox
+ JPanel puzzleIdPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
+ JLabel puzzleIdLabel = new JLabel("Puzzle IDs:");
+ JTextField puzzleIdField = new JTextField(10);
+ puzzleIdField.setEnabled(false);
+ JCheckBox gradeAllIDsCheckbox = new JCheckBox("Grade All IDs");
+ gradeAllIDsCheckbox.setSelected(true);
+
+ puzzleIdPanel.add(puzzleIdLabel);
+ puzzleIdPanel.add(puzzleIdField);
+ puzzleIdPanel.add(gradeAllIDsCheckbox);
+
+ // Create a panel for the puzzle tags label, text field, and checkbox
+ JPanel puzzleTypePanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
+ JLabel puzzleTypeLabel = new JLabel("Puzzle Types:");
+ JTextField puzzleTypeField = new JTextField(10);
+ puzzleTypeField.setEnabled(false);
+ JCheckBox gradeAllTagsCheckbox = new JCheckBox("Grade All Types");
+ gradeAllTagsCheckbox.setSelected(true);
+
+ puzzleTypePanel.add(puzzleTypeLabel);
+ puzzleTypePanel.add(puzzleTypeField);
+ puzzleTypePanel.add(gradeAllTagsCheckbox);
+
+ JPanel batchGraderConstraints = new JPanel(new FlowLayout(FlowLayout.CENTER));
+ batchGraderConstraints.add(puzzleIdPanel);
+ batchGraderConstraints.add(puzzleTypePanel);
+ batchGraderOptions.add(batchGraderConstraints, BorderLayout.CENTER);
+
+ // Create a save button at the bottom
+ JButton gradeButton = new JButton("Grade");
+ JButton updateButton = new JButton("Update");
+ JPanel gradePanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
+ gradePanel.add(gradeButton);
+ gradePanel.add(updateButton);
+ batchGraderOptions.add(gradePanel, BorderLayout.SOUTH);
+
+ // Action listeners for the buttons
+ gradeAllIDsCheckbox.addActionListener(e -> puzzleIdField.setEnabled(!gradeAllIDsCheckbox.isSelected()));
+ gradeAllTagsCheckbox.addActionListener(e -> puzzleTypeField.setEnabled(!gradeAllTagsCheckbox.isSelected()));
+
+ browseButton.addActionListener(e -> {
+ JFileChooser folderBrowser = new JFileChooser();
+ folderBrowser.setCurrentDirectory(new File(LegupPreferences.WORK_DIRECTORY));
+ folderBrowser.setDialogTitle("Select Directory");
+ folderBrowser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+ folderBrowser.setAcceptAllFileFilterUsed(false);
+ folderBrowser.setSelectedFile(null);
+ folderBrowser.setVisible(true);
+
+ int result = folderBrowser.showOpenDialog(frame);
+ if (result == JFileChooser.APPROVE_OPTION) {
+ directoryField.setText(folderBrowser.getSelectedFile().getAbsolutePath());
+ }
+ });
- File resultFile = new File(folder.getAbsolutePath() + File.separator + "result.csv");
- try (BufferedWriter writer = new BufferedWriter(new FileWriter(resultFile))) {
- writer.append("Name");
- writer.append(",");
- writer.append("File Name");
- writer.append(",");
- writer.append("Solved?");
- writer.append("\n");
-
- for (final File folderEntry : folder.listFiles(File::isDirectory)) {
- writer.append(folderEntry.getName());
- writer.append(",");
- int count1 = 0;
- for (final File fileEntry : folderEntry.listFiles()) {
- if (fileEntry.getName().charAt(0) == '.') {
- continue;
- }
- count1++;
- if (count1 > 1) {
- writer.append(folderEntry.getName());
- writer.append(",");
- }
- writer.append(fileEntry.getName());
- writer.append(",");
- String fileName =
- folderEntry.getAbsolutePath() + File.separator + fileEntry.getName();
- System.out.println("This is path " + fileName);
- File puzzleFile = new File(fileName);
- if (puzzleFile != null && puzzleFile.exists()) {
- try {
- legupUI.displayPanel(1);
- legupUI.getProofEditor();
- GameBoardFacade.getInstance().loadPuzzle(fileName);
- String puzzleName =
- GameBoardFacade.getInstance().getPuzzleModule().getName();
- legupUI.setTitle(puzzleName + " - " + puzzleFile.getName());
- facade = GameBoardFacade.getInstance();
- Puzzle puzzle = facade.getPuzzleModule();
- if (puzzle.isPuzzleComplete()) {
- writer.append("Solved");
- System.out.println(fileEntry.getName() + " solved");
- } else {
- writer.append("Not Solved");
- System.out.println(fileEntry.getName() + " not solved");
- }
- writer.append("\n");
- } catch (InvalidFileFormatException e) {
- LOGGER.error(e.getMessage());
- }
- }
+ gradeButton.addActionListener(e -> {
+ String directoryPath = directoryField.getText();
+ String puzzleTags = puzzleIdField.getText();
+ String puzzleTypes = puzzleTypeField.getText();
+
+ _tagsToGrade.clear();
+ if (!puzzleTags.isEmpty()) {
+ Pattern pattern = Pattern.compile("\"(.*?)\"");
+ Matcher matcher = pattern.matcher(puzzleTags);
+
+ while (matcher.find()) {
+ _tagsToGrade.add(matcher.group(1));
}
- if (count1 == 0) {
- writer.append("No file");
- writer.append("\n");
+ }
+ _typesToGrade.clear();
+ if (!puzzleTypes.isEmpty()) {
+ Pattern pattern = Pattern.compile("\"(.*?)\"");
+ Matcher matcher = pattern.matcher(puzzleTypes);
+
+ while (matcher.find()) {
+ _typesToGrade.add(matcher.group(1));
}
}
- } catch (IOException ex) {
- LOGGER.error(ex.getMessage());
- this.buttons[2].addActionListener((ActionEvent e) -> use_xml_to_check());
- }
+
+ try {
+ File dir = new File(directoryPath);
+ use_xml_to_check(dir);
+ } catch (Exception ex) {
+ throw new RuntimeException(ex);
+ }
+ LOGGER.debug("Finished autograding");
+
+ batchGraderOptions.dispose();
+ });
+
+ updateButton.addActionListener(e -> {
+ recursiveUpdater(new File(directoryField.getText()));
+ JOptionPane.showMessageDialog(null, "Updating complete.");
+ batchGraderOptions.dispose();
+ });
+
+ // Center the dialog on the screen
+ batchGraderOptions.setLocationRelativeTo(null);
+ batchGraderOptions.setVisible(true);
}
/**
@@ -276,27 +300,17 @@ public void checkFolder() {
* @effect Selects a directory, processes each XML file to check for "solved?" status, and
* writes results to "result.csv". Opens the CSV file upon completion.
*/
- private void use_xml_to_check() {
+ private void use_xml_to_check(File folder) {
/* Select a folder, go through each .xml file in the subfolders, look for "isSolved" flag */
- JFileChooser folderBrowser = new JFileChooser();
- folderBrowser.setCurrentDirectory(new File(LegupPreferences.WORK_DIRECTORY));
- folderBrowser.setDialogTitle("Select Directory");
- folderBrowser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
- folderBrowser.setAcceptAllFileFilterUsed(false);
- folderBrowser.setSelectedFile(null);
- folderBrowser.showOpenDialog(this);
- folderBrowser.setVisible(true);
- File folder = folderBrowser.getSelectedFile();
-
File resultFile = new File(folder.getAbsolutePath() + File.separator + "result.csv");
try (BufferedWriter writer = new BufferedWriter(new FileWriter(resultFile))) {
- writer.append("Name,File Name,Puzzle Type,Solved?,Last Saved\n");
+ writer.append("Name,File Name,Puzzle Type,Puzzle Tag,Solved?,Last Saved\n");
// Go through student folders, recurse for inner folders
for (final File folderEntry :
Objects.requireNonNull(folder.listFiles(File::isDirectory))) {
String path = folderEntry.getName();
// use this helper function to write to the .csv file
- recursive_parser(folderEntry, writer, path, path);
+ recursive_parser(folderEntry, writer, path);
}
} catch (IOException ex) {
LOGGER.error(ex.getMessage());
@@ -310,33 +324,96 @@ private void use_xml_to_check() {
}
}
JOptionPane.showMessageDialog(null, "Batch grading complete.");
+ _tagsToGrade.clear();
}
/**
* @param file - the input file
- * @return true if it is a .xml file, else return false
+ * @return Parsed document of file if possible, null otherwise
*/
- public boolean isxmlfile(File file) {
- boolean flag = true;
+ public Document isxmlfile(File file) {
+ Document doc = null;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
- builder.parse(file);
- flag = true;
+ doc = builder.parse(file);
} catch (Exception e) {
- flag = false;
+ LOGGER.error("'{}' is not a valid XML file", file.getPath());
+ }
+ return doc;
+ }
+
+ /**
+ * reads the puzzle name and type, and outputs to .csv file
+ *
+ * @param doc - the parsed file currently being graded
+ * @param writer - write to .csv
+ * @throws IOException
+ */
+ private void parsePuzzle(Document doc, BufferedWriter writer) throws IOException {
+ NodeList puzzleNodes = doc.getElementsByTagName("puzzle");
+ if (puzzleNodes.getLength() <= 0) {
+ writer.write("not a LEGUP puzzle!");
+ return;
}
- return flag;
+
+ Element puzzleElement = (Element) puzzleNodes.item(0);
+ String puzzleType = puzzleElement.getAttribute("name");
+ writer.write(puzzleType.isEmpty() ? "not a LEGUP puzzle!" : puzzleType);
+ writer.write(",");
+
+ String puzzleTag = puzzleElement.getAttribute("tag");
+ writer.write(puzzleTag.isEmpty() ? "No tag given" : puzzleTag);
+ }
+
+ /**
+ * Reads the hashed solved state and export timestamp, unhashes information and prints out to csv
+ *
+ * @param doc - the parsed file currently being graded
+ * @param writer - write to .csv
+ * @throws IOException
+ */
+ private void parseSolvedState(Document doc, BufferedWriter writer) throws IOException {
+ NodeList solvedNodes = doc.getElementsByTagName("solved");
+ if (solvedNodes.getLength() <= 0) {
+ writer.write(",missing flag!");
+ return;
+ }
+
+ Element solvedElement = (Element) solvedNodes.item(0);
+ String isSolved = solvedElement.getAttribute("isSolved");
+ String lastSaved = solvedElement.getAttribute("lastSaved");
+
+ // unhash solved flag
+ writer.write(",");
+ try {
+ int solvedHash = Integer.parseInt(isSolved);
+ Boolean solvedState = PuzzleExporter.inverseHash(solvedHash, lastSaved);
+
+ if (solvedState == null) {
+ writer.write("Error");
+ } else if (solvedState) {
+ writer.write("Solved");
+ } else {
+ writer.write("Not Solved");
+ }
+ } catch (NumberFormatException e) {
+ writer.write("Error");
+ LOGGER.error("Solved state could not be unhashed:\n{}", e.getMessage());
+ }
+
+ // Append the lastSaved attribute
+ writer.write(",");
+ writer.write(!lastSaved.isEmpty() ? lastSaved : "Error");
}
/**
* @param folder - the input folder
* @param writer - write to .csv
* @param path - the current path
- * @param name - student's name (the first subfolders of the main folder)
* @throws IOException
*/
- private void recursive_parser(File folder, BufferedWriter writer, String path, String name)
+ private void recursive_parser(File folder, BufferedWriter writer, String path)
throws IOException {
// Empty folder
if (Objects.requireNonNull(folder.listFiles()).length == 0) {
@@ -345,134 +422,116 @@ private void recursive_parser(File folder, BufferedWriter writer, String path, S
}
// Go through every other file in the folder
try {
- SAXParserFactory spf = SAXParserFactory.newInstance();
- SAXParser saxParser = spf.newSAXParser();
for (final File fileEntry : Objects.requireNonNull(folder.listFiles())) {
if (fileEntry.getName().equals("result.csv")) {
continue;
}
// Recurse if it is a subfolder
if (fileEntry.isDirectory()) {
- recursive_parser(fileEntry, writer, path + "/" + fileEntry.getName(), name);
+ recursive_parser(fileEntry, writer, path + "/" + fileEntry.getName());
continue;
}
// Set path name
String fName = fileEntry.getName();
- String fPath = fileEntry.getAbsolutePath();
if (fileEntry.getName().charAt(0) == '.') {
continue;
}
+
+ Document doc;
+ if ( (doc = isxmlfile(fileEntry)) == null) {
+ LOGGER.debug("{} is not a '.xml' file", fName);
+ writer.write(fName+",Not an xml file!\n");
+ continue;
+ }
+
+ NodeList puzzleNodes = doc.getElementsByTagName("puzzle");
+ Element puzzleElement = (Element) puzzleNodes.item(0);
+ String puzzleTag = puzzleElement.getAttribute("tag");
+ if (!_tagsToGrade.isEmpty() && _tagsToGrade.stream().noneMatch(puzzleTag::contains)) {
+ LOGGER.debug("'{}' is not graded with tag '{}'", puzzleElement.getAttribute("name"), puzzleTag);
+ continue;
+ }
+ String puzzleType = puzzleElement.getAttribute("name");
+ if (!_typesToGrade.isEmpty() && _typesToGrade.stream().noneMatch(puzzleType::contains)) {
+ LOGGER.debug("'{}' is not graded with type '{}'", puzzleElement.getAttribute("name"), puzzleType);
+ continue;
+ }
+
// write data
- writer.write(name);
+ path = folder.getAbsolutePath();
+ writer.write(path.substring(path.lastIndexOf(File.separator) + 1));
writer.write(",");
writer.write(fName);
writer.write(",");
- path = folder.getAbsolutePath() + File.separator + fileEntry.getName();
- System.out.println(path);
- if (isxmlfile(fileEntry)) {
- saxParser.parse(
- path,
- new DefaultHandler() {
- @Override
- public void startDocument() throws SAXException {}
-
- boolean solvedFlagExists = false;
- boolean puzzleTypeExists = false;
-
- @Override
- public void startElement(
- String uri,
- String localName,
- String qName,
- Attributes attributes)
- throws SAXException {
- // append file type to the writer
- if (qName.equals("puzzle")
- && attributes.getQName(0) == "name"
- && !puzzleTypeExists) {
- try {
- writer.write(attributes.getValue(0));
- writer.write(",");
- puzzleTypeExists = true;
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- // append the "solved?" status of the proof to the writer
- else if (qName.equals("solved") && !solvedFlagExists) {
- String isSolved = attributes.getValue(0);
- String lastSaved = attributes.getValue(1);
- if (isSolved != null) {
- if (isSolved.equals("true")) {
- try {
- writer.write("Solved");
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- } else if (isSolved.equals("false")) {
- try {
- writer.write("Not Solved");
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- } else {
- try {
- writer.write("Error");
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
- // append when is this proof last saved
- if (lastSaved != null) {
- try {
- writer.write(",");
- writer.write(lastSaved);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- solvedFlagExists = true;
- }
- }
-
- @Override
- public void characters(char[] ch, int start, int length)
- throws SAXException {}
-
- @Override
- public void endElement(String uri, String localName, String qName)
- throws SAXException {}
-
- @Override
- public void endDocument() throws SAXException {
- if (!puzzleTypeExists) {
- try {
- writer.write("not a LEGUP puzzle!");
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- } else if (!solvedFlagExists) {
- try {
- writer.write("missing flag!");
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
- });
- }
- // If wrong file type, ungradeable
- else {
- writer.write("not a \".xml\" file!");
- }
+
+ parsePuzzle(doc, writer);
+ parseSolvedState(doc, writer);
+
writer.write("\n");
}
- } catch (ParserConfigurationException | SAXException | IOException e) {
+ } catch (IOException e) {
LOGGER.error(e.getMessage());
}
}
+ /**
+ * Updates all old puzzle files to the new tagged variant and hashes all solved states
+ *
+ * @param folder Folder to update all files, and recurse for all subdirectories
+ */
+ private void recursiveUpdater(File folder) {
+ if (Objects.requireNonNull(folder.listFiles()).length == 0) {
+ LOGGER.debug("Empty directory");
+ return;
+ }
+ for(File fileEntry : Objects.requireNonNull(folder.listFiles())) {
+ if (fileEntry.isDirectory()) {
+ recursiveUpdater(fileEntry);
+ continue;
+ }
+
+ String fName = fileEntry.getName();
+ Document doc;
+ if ( (doc = isxmlfile(fileEntry)) == null) {
+ LOGGER.debug("{} is not a '.xml' file", fileEntry.getName());
+ continue;
+ }
+
+ Element puzzleNodes = (Element) doc.getElementsByTagName("puzzle").item(0);
+ if (!puzzleNodes.hasAttribute("tag")) {
+ puzzleNodes.setAttribute("tag", fName);
+ }
+
+ Element solvedNodes = (Element) doc.getElementsByTagName("solved").item(0);
+ String time = LocalDateTime.now().format(PuzzleExporter.DATE_FORMAT);
+ String unsolved = PuzzleExporter.obfHash(false, time) + "";
+ if (solvedNodes != null) {
+ solvedNodes.getAttributeNode("isSolved").setValue(unsolved);
+ solvedNodes.getAttributeNode("lastSaved").setTextContent(time);
+ } else {
+ solvedNodes = doc.createElement("solved");
+ solvedNodes.setAttribute("isSolved", unsolved);
+ solvedNodes.setAttribute("lastSaved", time);
+ doc.getElementsByTagName("Legup").item(0).appendChild(solvedNodes);
+ }
+
+ try {
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ Transformer transformer = transformerFactory.newTransformer();
+ transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
+ transformer.setOutputProperty(OutputKeys.INDENT, "no");
+ transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+
+ DOMSource source = new DOMSource(doc);
+ StreamResult result = new StreamResult(new File(folder.getAbsolutePath() + File.separator + fName));
+
+ transformer.transform(source, result);
+ } catch (TransformerException e) {
+ LOGGER.error("Unable to update file: {}:\n{}", fName, e.getMessage());
+ }
+ }
+ }
+
/**
* Initializes the text labels for the user interface. Sets up labels for welcome message, led
* by Bram, and version information.
@@ -543,113 +602,6 @@ private void openPuzzleEditorDialog() {
}
}
- /**
- * Opens a dialog to select a directory, recursively processes the directory to grade puzzles,
- * and generates a CSV report of the grading results.
- */
- private void checkProofAll() {
- /*
- * Select dir to grade; recursively grade sub-dirs using traverseDir()
- * Selected dir must have sub-dirs for each student:
- * GradeThis
- * |
- * | -> Student 1
- * | |
- * | | -> Proofs
- */
-
- LegupPreferences preferences = LegupPreferences.getInstance();
- File preferredDirectory =
- new File(preferences.getUserPref(LegupPreferences.WORK_DIRECTORY));
- folderBrowser = new JFileChooser(preferredDirectory);
-
- folderBrowser.showOpenDialog(this);
- folderBrowser.setVisible(true);
- folderBrowser.setCurrentDirectory(new File(LegupPreferences.WORK_DIRECTORY));
- folderBrowser.setDialogTitle("Select Directory");
- folderBrowser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
- folderBrowser.setAcceptAllFileFilterUsed(false);
-
- File folder = folderBrowser.getSelectedFile();
-
- // Write csv file (Path,File-Name,Puzzle-Type,Score,Solved?)
- File resultFile = new File(folder.getAbsolutePath() + File.separator + "result.csv");
- try (BufferedWriter writer = new BufferedWriter(new FileWriter(resultFile))) {
- writer.append("Name,File Name,Puzzle Type,Score,Solved?\n");
-
- // Go through student folders
- for (final File folderEntry :
- Objects.requireNonNull(folder.listFiles(File::isDirectory))) {
- // Write path
- String path = folderEntry.getName();
- traverseDir(folderEntry, writer, path);
- }
- } catch (IOException ex) {
- LOGGER.error(ex.getMessage());
- }
- JOptionPane.showMessageDialog(null, "Batch grading complete.");
- }
-
- /**
- * Recursively traverses directories to grade puzzles and writes results to a CSV file
- *
- * @param folder the folder to traverse
- * @param writer the BufferedWriter to write results to the CSV file
- * @param path the current path within the directory structure
- * @throws IOException if an I/O error occurs while writing to the CSV file
- */
- private void traverseDir(File folder, BufferedWriter writer, String path) throws IOException {
- // Recursively traverse directory
- GameBoardFacade facade = GameBoardFacade.getInstance();
- // Folder is empty
- if (Objects.requireNonNull(folder.listFiles()).length == 0) {
- writer.append(path).append(",Empty folder,Ungradeable\n");
- return;
- }
- // Travese directory, recurse if sub-directory found
- // If ungradeable, do not leave a score (0, 1)
- for (final File f : Objects.requireNonNull(folder.listFiles())) {
- // Recurse
- if (f.isDirectory()) {
- traverseDir(f, writer, path + "/" + f.getName());
- continue;
- }
-
- // Set path name
- writer.append(path).append(",");
-
- // Load puzzle, run checker
- // If wrong file type, ungradeable
- String fName = f.getName();
- String fPath = f.getAbsolutePath();
- File puzzleFile = new File(fPath);
- if (puzzleFile.exists()) {
- // Try to load file. If invalid, note in csv
- try {
- // Load puzzle, run checker
- GameBoardFacade.getInstance().loadPuzzle(fPath);
- String puzzleName = GameBoardFacade.getInstance().getPuzzleModule().getName();
- frame.setTitle(puzzleName + " - " + puzzleFile.getName());
- facade = GameBoardFacade.getInstance();
- Puzzle puzzle = facade.getPuzzleModule();
-
- // Write data
- writer.append(fName).append(",");
- writer.append(puzzle.getName()).append(",");
- if (puzzle.isPuzzleComplete()) {
- writer.append("Solved\n");
- } else {
- writer.append("Unsolved\n");
- }
- } catch (InvalidFileFormatException e) {
- writer.append(fName).append("InvalidFile,Ungradeable\n");
- }
- } else {
- LOGGER.debug("Failed to run sim");
- }
- }
- }
-
/**
* Opens the puzzle editor for the specified puzzle with the specified dimensions
*
diff --git a/src/main/java/edu/rpi/legup/ui/PuzzleEditorPanel.java b/src/main/java/edu/rpi/legup/ui/PuzzleEditorPanel.java
index 7c2ba06ff..dcf658bb6 100644
--- a/src/main/java/edu/rpi/legup/ui/PuzzleEditorPanel.java
+++ b/src/main/java/edu/rpi/legup/ui/PuzzleEditorPanel.java
@@ -767,6 +767,7 @@ private String savePuzzle() {
if (exporter == null) {
throw new ExportFileException("Puzzle exporter null");
}
+ puzzle.setTag(path.substring(path.lastIndexOf(File.separator) + 1));
exporter.exportPuzzle(path);
} catch (ExportFileException e) {
e.printStackTrace();