From b99ce1fb4539b6ac0afd686acc39e2776e7961b4 Mon Sep 17 00:00:00 2001
From: Benjamin Auder <benjamin.auder@somewhere>
Date: Sun, 24 Apr 2022 22:16:29 +0200
Subject: [PATCH] Start Absoption

---
 base_rules.js                  |  24 ++--
 variants.js                    |  11 +-
 variants/Absorption/class.js   | 195 +++++++++++++++++++++++++++++++++
 variants/Absorption/pieces.css |  23 ++++
 variants/Absorption/style.css  |   2 +
 variants/Benedict/class.js     |  16 +--
 6 files changed, 245 insertions(+), 26 deletions(-)
 create mode 100644 variants/Absorption/class.js
 create mode 100644 variants/Absorption/pieces.css
 create mode 100644 variants/Absorption/style.css

diff --git a/base_rules.js b/base_rules.js
index e987492..53393df 100644
--- a/base_rules.js
+++ b/base_rules.js
@@ -1102,7 +1102,8 @@ export default class ChessRules {
 
   // Is (x,y) on the chessboard?
   onBoard(x, y) {
-    return x >= 0 && x < this.size.x && y >= 0 && y < this.size.y;
+    return (x >= 0 && x < this.size.x &&
+            y >= 0 && y < this.size.y);
   }
 
   // Used in interface: 'side' arg == player color
@@ -1363,23 +1364,24 @@ export default class ChessRules {
     return moves;
   }
 
+  // NOTE: using special symbols to not interfere with variants' pieces codes
   static get CannibalKings() {
     return {
-      "s": "p",
-      "u": "r",
-      "o": "n",
-      "c": "b",
-      "t": "q"
+      "!": "p",
+      "#": "r",
+      "$": "n",
+      "%": "b",
+      "*": "q"
     };
   }
 
   static get CannibalKingCode() {
     return {
-      "p": "s",
-      "r": "u",
-      "n": "o",
-      "b": "c",
-      "q": "t",
+      "p": "!",
+      "r": "#",
+      "n": "$",
+      "b": "%",
+      "q": "*",
       "k": "k"
     };
   }
diff --git a/variants.js b/variants.js
index 879b139..a5d62ce 100644
--- a/variants.js
+++ b/variants.js
@@ -1,6 +1,7 @@
 const variants = [
-//  { name: 'Absorption', desc: 'Absorb powers' },
-//  { name: 'Alapo', desc: 'Geometric Chess' },
+  // TODO: https://mancala.fandom.com/wiki/William_Daniel_Troyka Cleopatra chess
+  { name: 'Absorption', desc: 'Absorb powers' },
+//  { name: 'Alapo', desc: 'Geometric Chess' }, //TODO
 //  { name: 'Alice', desc: 'Both sides of the mirror' },
 //  { name: 'Align4', desc: 'Align four pawns' },
 //  { name: 'Allmate', desc: 'Mate any piece' },
@@ -21,7 +22,6 @@ const variants = [
   { name: "Benedict", desc: "Change colors" },
 //  { name: 'Berolina', desc: 'Pawns move diagonally' },
 //  { name: 'Bicolour', desc: 'Harassed kings' },
-//  { name: 'Bishopawns', desc: 'Bishop versus pawns', disp: 'Bishop-Pawns' },
 //  { name: 'Brotherhood', desc: 'Friendly pieces' },
   { name: 'Cannibal', desc: 'Capture powers' },
 //  { name: 'Capablanca', desc: 'Capablanca Chess', disp: 'Capablanca Chess' },
@@ -81,7 +81,6 @@ const variants = [
 //  { name: 'Kinglet', desc: 'Protect your pawns' },
 //  { name: 'Kingsmaker', desc: 'Promote into kings' },
 //  { name: 'Knightmate', desc: 'Mate the knight' },
-//  { name: 'Knightpawns', desc: 'Knight versus pawns', disp: 'Knight-Pawns' },
 //  { name: 'Knightrelay', desc: 'Move like a knight' },
 //  { name: 'Konane', desc: 'Hawaiian Checkers' },
 //  { name: 'Koopa', desc: 'Stun & kick pieces' },
@@ -115,7 +114,6 @@ const variants = [
 //  { name: 'Perfect', desc: 'Powerful pieces' },
 //  { name: 'Pocketknight', desc: 'Knight in pocket', disp: 'Pocket Knight' },
 //  { name: 'Progressive', desc: 'Play more and more moves' },
-//  { name: 'Queenpawns', desc: 'Queen versus pawns', disp: 'Queen-Pawns' },
 //  { name: 'Racingkings', desc: 'Kings cross the 8x8 board', disp: 'Racing Kings' },
 //  { name: 'Rampage', desc: 'Move under cover' },
 //  { name: 'Relayup', desc: 'Upgrade pieces', disp: 'Relay-up' },
@@ -124,10 +122,9 @@ const variants = [
 //  { name: 'Refusal', desc: 'Do not play that!' },
 //  { name: 'Rollerball', desc: 'As in the movie' },
 //  { name: 'Rococo', desc: 'Capture on the edge' },
-//  { name: 'Rookpawns', desc: 'Rook versus pawns', disp: 'Rook-Pawns' },
 //  { name: 'Royalrace', desc: 'Kings cross the 11x11 board', disp: 'Royal Race' },
 //  { name: 'Rugby', desc: 'Transform an essay' },
-//  { name: 'Schess', desc: 'Seirawan-Harper Chess', disp: 'Seirawan-Harper Chess' },
+//  { name: 'Schess', desc: 'Seirawan-Harper Chess', disp: 'S-Chess' },
 //  { name: 'Screen', desc: 'Free initial setup' },
 //  { name: 'Selfabsorb', desc: 'Fusion pieces (v2)', disp: 'Self-Absorption' },
 //  { name: 'Shako', desc: 'Non-conformism and utopia' },
diff --git a/variants/Absorption/class.js b/variants/Absorption/class.js
new file mode 100644
index 0000000..ac3445b
--- /dev/null
+++ b/variants/Absorption/class.js
@@ -0,0 +1,195 @@
+import ChessRules from "/base_rules.js";
+
+export default class AbsorptionRules extends ChessRules {
+
+  static get Options() {
+    return {
+      select: C.Options.select,
+      check: [],
+      styles: [
+        "balance",
+        "capture",
+        "cylinder",
+        "dark",
+        "doublemove",
+        "progressive",
+        "recycle",
+        "rifle", //TODO? absorb powers from afar?
+        "teleport",
+        "zen"
+      ]
+    };
+  }
+
+  pieces(color) {
+    const fusions = {{
+      // amazon
+      'a': {
+        "class": "amazon",
+        steps: [
+          [0, 1], [0, -1], [1, 0], [-1, 0],
+          [1, 1], [1, -1], [-1, 1], [-1, -1]
+        ]
+
+//TODO: steps object avec range + steps... "moving"?
+
+        steps: [
+          [1, 2], [1, -2], [-1, 2], [-1, -2],
+          [2, 1], [-2, 1], [2, -1], [-2, -1]
+        ],
+        steps: [[0, 1], [0, -1], [1, 0], [-1, 0]]
+      },
+      // empress
+      'e': {
+        "class": "empress",
+        steps: [
+          [1, 2], [1, -2], [-1, 2], [-1, -2],
+          [2, 1], [-2, 1], [2, -1], [-2, -1]
+        ],
+      },
+      // princess
+      'b': {
+        "class": "bishop",
+        steps: [[1, 1], [1, -1], [-1, 1], [-1, -1]]
+      },
+      // queen
+      'q': {
+        "class": "queen",
+      },
+
+    },
+    return (
+      Object.assign(
+        super.pieces(color)
+      )
+    );
+  }
+
+  static get MergeComposed() {
+    return {
+      "be": "a",
+      "bs": "s",
+      "er": "e",
+      "rs": "a",
+      "eq": "a",
+      "qs": "a",
+      "ee": "e",
+      "es": "a",
+      "ss": "s"
+    };
+  }
+
+  static Fusion(p1, p2) {
+    if (p1 == V.KING) return p1;
+    if (p1 == V.PAWN) return p2;
+    if (p2 == V.PAWN) return p1;
+    if ([p1, p2].includes(V.KNIGHT)) {
+      if ([p1, p2].includes(V.QUEEN)) return V.QN;
+      if ([p1, p2].includes(V.ROOK)) return V.RN;
+      if ([p1, p2].includes(V.BISHOP)) return V.BN;
+      // p1 or p2 already have knight + other piece
+      return (p1 == V.KNIGHT ? p2 : p1);
+    }
+    if ([p1, p2].includes(V.QN)) return V.QN;
+    for (let p of [p1, p2]) {
+      if ([V.BN, V.RN].includes(p))
+        return V.MergeComposed[[p1, p2].sort().join("")];
+    }
+    // bishop + rook, or queen + [bishop or rook]
+    return V.QUEEN;
+  }
+
+  getPotentialMovesFrom(sq) {
+    let moves = [];
+    const piece = this.getPiece(sq[0], sq[1]);
+    switch (piece) {
+      case V.RN:
+        moves =
+          super.getPotentialRookMoves(sq).concat(
+          super.getPotentialKnightMoves(sq));
+        break;
+      case V.BN:
+        moves =
+          super.getPotentialBishopMoves(sq).concat(
+          super.getPotentialKnightMoves(sq));
+        break;
+      case V.QN:
+        moves =
+          super.getPotentialQueenMoves(sq).concat(
+          super.getPotentialKnightMoves(sq));
+        break;
+      default:
+        moves = super.getPotentialMovesFrom(sq);
+    }
+    // Filter out capturing promotions (except one),
+    // because they are all the same.
+    moves = moves.filter(m => {
+      return (
+        m.vanish.length == 1 ||
+        m.vanish[0].p != V.PAWN ||
+        [V.PAWN, V.QUEEN].includes(m.appear[0].p)
+      );
+    });
+    moves.forEach(m => {
+      if (
+        m.vanish.length == 2 &&
+        m.appear.length == 1 &&
+        piece != m.vanish[1].p
+      ) {
+        // Augment pieces abilities in case of captures
+        m.appear[0].p = V.Fusion(piece, m.vanish[1].p);
+      }
+    });
+    return moves;
+  }
+
+  isAttacked(sq, color) {
+    return (
+      super.isAttacked(sq, color) ||
+      this.isAttackedByBN(sq, color) ||
+      this.isAttackedByRN(sq, color) ||
+      this.isAttackedByQN(sq, color)
+    );
+  }
+
+  isAttackedByBN(sq, color) {
+    return (
+      this.isAttackedBySlideNJump(sq, color, V.BN, V.steps[V.BISHOP]) ||
+      this.isAttackedBySlideNJump(
+        sq, color, V.BN, V.steps[V.KNIGHT], 1)
+    );
+  }
+
+  isAttackedByRN(sq, color) {
+    return (
+      this.isAttackedBySlideNJump(sq, color, V.RN, V.steps[V.ROOK]) ||
+      this.isAttackedBySlideNJump(
+        sq, color, V.RN, V.steps[V.KNIGHT], 1)
+    );
+  }
+
+  isAttackedByQN(sq, color) {
+    return (
+      this.isAttackedBySlideNJump(
+        sq, color, V.QN, V.steps[V.BISHOP].concat(V.steps[V.ROOK])) ||
+      this.isAttackedBySlideNJump(
+        sq, color, V.QN, V.steps[V.KNIGHT], 1)
+    );
+  }
+
+  static get VALUES() {
+    return Object.assign(
+      { a: 12, e: 7, s: 5 },
+      ChessRules.VALUES
+    );
+  }
+
+  getNotation(move) {
+    let notation = super.getNotation(move);
+    if (move.vanish[0].p != V.PAWN && move.appear[0].p != move.vanish[0].p)
+      // Fusion (not from a pawn: handled in ChessRules)
+      notation += "=" + move.appear[0].p.toUpperCase();
+    return notation;
+  }
+
+};
diff --git a/variants/Absorption/pieces.css b/variants/Absorption/pieces.css
new file mode 100644
index 0000000..afafb05
--- /dev/null
+++ b/variants/Absorption/pieces.css
@@ -0,0 +1,23 @@
+piece.black.amazon {
+  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgaGVpZ2h0PSIyNiIKICAgd2lkdGg9IjI2IgogICB2ZXJzaW9uPSIxLjAiCiAgIGlkPSJzdmcyNSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iQ2hlc3NfQWR0MjYuc3ZnIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIwLjkyLjQgNWRhNjg5YzMxMywgMjAxOS0wMS0xNCI+CiAgPGRlZnMKICAgICBpZD0iZGVmczI5Ij4KICAgIDxmaWx0ZXIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQjsiCiAgICAgICBpbmtzY2FwZTpsYWJlbD0iQ29sb3JpemUiCiAgICAgICBpZD0iZmlsdGVyMjgzIj4KICAgICAgPGZlQ29tcG9zaXRlCiAgICAgICAgIGluMj0iU291cmNlR3JhcGhpYyIKICAgICAgICAgb3BlcmF0b3I9ImFyaXRobWV0aWMiCiAgICAgICAgIGsxPSIwIgogICAgICAgICBrMj0iMSIKICAgICAgICAgcmVzdWx0PSJjb21wb3NpdGUxIgogICAgICAgICBpZD0iZmVDb21wb3NpdGUyNjkiIC8+CiAgICAgIDxmZUNvbG9yTWF0cml4CiAgICAgICAgIGluPSJjb21wb3NpdGUxIgogICAgICAgICB2YWx1ZXM9IjEiCiAgICAgICAgIHR5cGU9InNhdHVyYXRlIgogICAgICAgICByZXN1bHQ9ImNvbG9ybWF0cml4MSIKICAgICAgICAgaWQ9ImZlQ29sb3JNYXRyaXgyNzEiIC8+CiAgICAgIDxmZUZsb29kCiAgICAgICAgIGZsb29kLW9wYWNpdHk9IjEiCiAgICAgICAgIGZsb29kLWNvbG9yPSJyZ2IoMjYsMjMsMjEpIgogICAgICAgICByZXN1bHQ9ImZsb29kMSIKICAgICAgICAgaWQ9ImZlRmxvb2QyNzMiIC8+CiAgICAgIDxmZUJsZW5kCiAgICAgICAgIGluPSJmbG9vZDEiCiAgICAgICAgIGluMj0iY29sb3JtYXRyaXgxIgogICAgICAgICBtb2RlPSJtdWx0aXBseSIKICAgICAgICAgcmVzdWx0PSJibGVuZDEiCiAgICAgICAgIGlkPSJmZUJsZW5kMjc1IiAvPgogICAgICA8ZmVCbGVuZAogICAgICAgICBpbjI9ImJsZW5kMSIKICAgICAgICAgbW9kZT0ic2NyZWVuIgogICAgICAgICByZXN1bHQ9ImJsZW5kMiIKICAgICAgICAgaWQ9ImZlQmxlbmQyNzciIC8+CiAgICAgIDxmZUNvbG9yTWF0cml4CiAgICAgICAgIGluPSJibGVuZDIiCiAgICAgICAgIHZhbHVlcz0iMSIKICAgICAgICAgdHlwZT0ic2F0dXJhdGUiCiAgICAgICAgIHJlc3VsdD0iY29sb3JtYXRyaXgyIgogICAgICAgICBpZD0iZmVDb2xvck1hdHJpeDI3OSIgLz4KICAgICAgPGZlQ29tcG9zaXRlCiAgICAgICAgIGluPSJjb2xvcm1hdHJpeDIiCiAgICAgICAgIGluMj0iU291cmNlR3JhcGhpYyIKICAgICAgICAgb3BlcmF0b3I9ImluIgogICAgICAgICBrMj0iMSIKICAgICAgICAgcmVzdWx0PSJjb21wb3NpdGUyIgogICAgICAgICBpZD0iZmVDb21wb3NpdGUyODEiIC8+CiAgICA8L2ZpbHRlcj4KICAgIDxmaWx0ZXIKICAgICAgIHN0eWxlPSJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6c1JHQjsiCiAgICAgICBpbmtzY2FwZTpsYWJlbD0iQ29sb3JpemUiCiAgICAgICBpZD0iZmlsdGVyMjk5Ij4KICAgICAgPGZlQ29tcG9zaXRlCiAgICAgICAgIGluMj0iU291cmNlR3JhcGhpYyIKICAgICAgICAgb3BlcmF0b3I9ImFyaXRobWV0aWMiCiAgICAgICAgIGsxPSIwIgogICAgICAgICBrMj0iMSIKICAgICAgICAgcmVzdWx0PSJjb21wb3NpdGUxIgogICAgICAgICBpZD0iZmVDb21wb3NpdGUyODUiIC8+CiAgICAgIDxmZUNvbG9yTWF0cml4CiAgICAgICAgIGluPSJjb21wb3NpdGUxIgogICAgICAgICB2YWx1ZXM9IjEiCiAgICAgICAgIHR5cGU9InNhdHVyYXRlIgogICAgICAgICByZXN1bHQ9ImNvbG9ybWF0cml4MSIKICAgICAgICAgaWQ9ImZlQ29sb3JNYXRyaXgyODciIC8+CiAgICAgIDxmZUZsb29kCiAgICAgICAgIGZsb29kLW9wYWNpdHk9IjEiCiAgICAgICAgIGZsb29kLWNvbG9yPSJyZ2IoMjYsMjMsMjEpIgogICAgICAgICByZXN1bHQ9ImZsb29kMSIKICAgICAgICAgaWQ9ImZlRmxvb2QyODkiIC8+CiAgICAgIDxmZUJsZW5kCiAgICAgICAgIGluPSJmbG9vZDEiCiAgICAgICAgIGluMj0iY29sb3JtYXRyaXgxIgogICAgICAgICBtb2RlPSJtdWx0aXBseSIKICAgICAgICAgcmVzdWx0PSJibGVuZDEiCiAgICAgICAgIGlkPSJmZUJsZW5kMjkxIiAvPgogICAgICA8ZmVCbGVuZAogICAgICAgICBpbjI9ImJsZW5kMSIKICAgICAgICAgbW9kZT0ic2NyZWVuIgogICAgICAgICByZXN1bHQ9ImJsZW5kMiIKICAgICAgICAgaWQ9ImZlQmxlbmQyOTMiIC8+CiAgICAgIDxmZUNvbG9yTWF0cml4CiAgICAgICAgIGluPSJibGVuZDIiCiAgICAgICAgIHZhbHVlcz0iMSIKICAgICAgICAgdHlwZT0ic2F0dXJhdGUiCiAgICAgICAgIHJlc3VsdD0iY29sb3JtYXRyaXgyIgogICAgICAgICBpZD0iZmVDb2xvck1hdHJpeDI5NSIgLz4KICAgICAgPGZlQ29tcG9zaXRlCiAgICAgICAgIGluPSJjb2xvcm1hdHJpeDIiCiAgICAgICAgIGluMj0iU291cmNlR3JhcGhpYyIKICAgICAgICAgb3BlcmF0b3I9ImluIgogICAgICAgICBrMj0iMSIKICAgICAgICAgcmVzdWx0PSJjb21wb3NpdGUyIgogICAgICAgICBpZD0iZmVDb21wb3NpdGUyOTciIC8+CiAgICA8L2ZpbHRlcj4KICA8L2RlZnM+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSI5NjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTA2MCIKICAgICBpZD0ibmFtZWR2aWV3MjciCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjI1LjY3MzQxNSIKICAgICBpbmtzY2FwZTpjeD0iMTMuMjIwMzM5IgogICAgIGlua3NjYXBlOmN5PSIxMyIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iMjAiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJzdmcyNSIgLz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEyIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZT48L2RjOnRpdGxlPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuNzU3NTc1NzQsMCwwLDAuNzU3NTc1NzQsMi44NzkxNTE1LC03LjkzOTM5MzIpIgogICAgIGlkPSJnMTAiCiAgICAgc3R5bGU9ImZpbHRlcjp1cmwoI2ZpbHRlcjI4MykiPgogICAgPHBhdGgKICAgICAgIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiCiAgICAgICBkPSJtMTQuNDQsMjkuNWMwLjIyMiwxLjY4LTMuMDksNC4wNi00LjUsNS0xLjczLDEuMTYtMS43NCwyLjctMywyLjUtMC42MDItMC41NDUsMC44MTctMi4wMiwwLTItMC41OCwwLDAuMTksMS4xLTAuNSwxLjUtMC41OCwwLTIuNSwwLjQtMi41LTIuNSwwLTEuMiwzLjUtNi41LDMuNS02LjVzMC45MzQtMS4wOCwxLTJjLTAuNDE5LTAuNTc1LTAuMjU4LTEuNDgsMC0yLDAuMzY1LTAuNzMxLDEuNSwxLjUsMS41LDEuNWgxczAuNS0xLjUsMS41LTJjMC41MTctMC4yNTgsMC41LDIsMC41LDIsNi4wNywwLjU3OCw5LjI5LDQuMzcsOSwxNi41aC0xMi41YzAtNC45LDQuOC0zLjcsNC41LTEwLjUiCiAgICAgICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgICAgICBzdHJva2U9IiMwMDAiCiAgICAgICBzdHJva2UtbGluZWNhcD0icm91bmQiCiAgICAgICBzdHJva2UtbWl0ZXJsaW1pdD0iNCIKICAgICAgIHN0cm9rZS1kYXNoYXJyYXk9Im5vbmUiCiAgICAgICBzdHJva2Utd2lkdGg9IjEuMzE5OTk5OTMiCiAgICAgICBmaWxsPSIjRkZGIgogICAgICAgaWQ9InBhdGg0IiAvPgogICAgPHBhdGgKICAgICAgIGZpbGw9IiMwMDAiCiAgICAgICBkPSJtOSwyMy41YTAuNSwwLjUsMCwxLDEsLTEsMCwwLjUsMC41LDAsMSwxLDEsMHoiCiAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMy40OTk5OTk5LDEwKSIKICAgICAgIGlkPSJwYXRoNiIgLz4KICAgIDxwYXRoCiAgICAgICBmaWxsPSIjMDAwIgogICAgICAgZD0ibTkuNjA1OCwzMC4yOGExLjAyODEsMS40NzI5LDMwLDAsMSwtMS43ODA3LC0xLjAyOCwxLjAyODEsMS40NzI5LDMwLDAsMSwxLjc4MDcsMS4wMjh6IgogICAgICAgaWQ9InBhdGg4IiAvPgogIDwvZz4KICA8ZwogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTQpIgogICAgIGlkPSJnMjMiCiAgICAgc3R5bGU9ImZpbHRlcjp1cmwoI2ZpbHRlcjI5OSkiPgogICAgPHBhdGgKICAgICAgIHN0cm9rZS1saW5lam9pbj0icm91bmQiCiAgICAgICBkPSJtMTgsMTgsNC04LTQsNCwwLTYtMyw1LjEyNS0yLTUtMiw1bC0zLTUuMTI1djZsLTQtNCwzLDhzMi4wMzQ5LTIuNSw2LTIuNSw1LDIuNSw1LDIuNXoiCiAgICAgICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgICAgICBzdHJva2U9IiMwMDAiCiAgICAgICBzdHJva2UtbGluZWNhcD0iYnV0dCIKICAgICAgIHN0cm9rZS1taXRlcmxpbWl0PSI0IgogICAgICAgc3Ryb2tlLWRhc2hhcnJheT0ibm9uZSIKICAgICAgIHN0cm9rZS13aWR0aD0iMC44MDAwMDAwMSIKICAgICAgIGZpbGw9IiNGRkYiCiAgICAgICBpZD0icGF0aDEyIiAvPgogICAgPHBhdGgKICAgICAgIGlkPSJwYXRoMzgwNCIKICAgICAgIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiCiAgICAgICBkPSJtNS41LDEwYTEuNSwxLjUsMCwwLDEsLTMsMCwxLjUsMS41LDAsMSwxLDMsMHoiCiAgICAgICBzdHJva2UtZGFzaG9mZnNldD0iMCIKICAgICAgIHN0cm9rZT0iIzAwMCIKICAgICAgIHN0cm9rZS1saW5lY2FwPSJidXR0IgogICAgICAgc3Ryb2tlLW1pdGVybGltaXQ9IjQiCiAgICAgICBzdHJva2UtZGFzaGFycmF5PSJub25lIgogICAgICAgc3Ryb2tlLXdpZHRoPSIwLjc1IgogICAgICAgZmlsbD0iI0ZGRiIgLz4KICAgIDx1c2UKICAgICAgIHhsaW5rOmhyZWY9IiNwYXRoMzgwNCIKICAgICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQsLTIpIgogICAgICAgaGVpZ2h0PSIyNiIKICAgICAgIHdpZHRoPSIyNiIKICAgICAgIHk9IjAiCiAgICAgICB4PSIwIgogICAgICAgaWQ9InVzZTE1IiAvPgogICAgPHVzZQogICAgICAgeGxpbms6aHJlZj0iI3BhdGgzODA0IgogICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOSwtMikiCiAgICAgICBoZWlnaHQ9IjI2IgogICAgICAgd2lkdGg9IjI2IgogICAgICAgeT0iMCIKICAgICAgIHg9IjAiCiAgICAgICBpZD0idXNlMTciIC8+CiAgICA8dXNlCiAgICAgICB4bGluazpocmVmPSIjcGF0aDM4MDQiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgtMSwwLDAsMSwyNiwwKSIKICAgICAgIGhlaWdodD0iMjYiCiAgICAgICB3aWR0aD0iMjYiCiAgICAgICB5PSIwIgogICAgICAgeD0iMCIKICAgICAgIGlkPSJ1c2UxOSIgLz4KICAgIDx1c2UKICAgICAgIHhsaW5rOmhyZWY9IiNwYXRoMzgwNCIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KC0xLDAsMCwxLDIyLC0yKSIKICAgICAgIGhlaWdodD0iMjYiCiAgICAgICB3aWR0aD0iMjYiCiAgICAgICB5PSIwIgogICAgICAgeD0iMCIKICAgICAgIGlkPSJ1c2UyMSIgLz4KICA8L2c+Cjwvc3ZnPgo=');
+}
+
+piece.black.empress {
+  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iNDUiCiAgIGhlaWdodD0iNDUiCiAgIGlkPSJzdmczMTI4IgogICBzb2RpcG9kaTp2ZXJzaW9uPSIwLjMyIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIwLjkyLjUgKDIwNjBlYzFmOWYsIDIwMjAtMDQtMDgpIgogICB2ZXJzaW9uPSIxLjAiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImJtLnN2ZyIKICAgaW5rc2NhcGU6b3V0cHV0X2V4dGVuc2lvbj0ib3JnLmlua3NjYXBlLm91dHB1dC5zdmcuaW5rc2NhcGUiPgogIDxkZWZzCiAgICAgaWQ9ImRlZnMzMTMwIj4KICAgIDxpbmtzY2FwZTpwZXJzcGVjdGl2ZQogICAgICAgc29kaXBvZGk6dHlwZT0iaW5rc2NhcGU6cGVyc3AzZCIKICAgICAgIGlua3NjYXBlOnZwX3g9IjAgOiAyMi41IDogMSIKICAgICAgIGlua3NjYXBlOnZwX3k9IjAgOiAxMDAwIDogMCIKICAgICAgIGlua3NjYXBlOnZwX3o9IjQ1IDogMjIuNSA6IDEiCiAgICAgICBpbmtzY2FwZTpwZXJzcDNkLW9yaWdpbj0iMjIuNSA6IDE1IDogMSIKICAgICAgIGlkPSJwZXJzcGVjdGl2ZTE1IiAvPgogICAgPGlua3NjYXBlOnBlcnNwZWN0aXZlCiAgICAgICBpZD0icGVyc3BlY3RpdmUxMiIKICAgICAgIGlua3NjYXBlOnBlcnNwM2Qtb3JpZ2luPSIyMi41IDogMTUgOiAxIgogICAgICAgaW5rc2NhcGU6dnBfej0iNDUgOiAyMi41IDogMSIKICAgICAgIGlua3NjYXBlOnZwX3k9IjAgOiAxMDAwIDogMCIKICAgICAgIGlua3NjYXBlOnZwX3g9IjAgOiAyMi41IDogMSIKICAgICAgIHNvZGlwb2RpOnR5cGU9Imlua3NjYXBlOnBlcnNwM2QiIC8+CiAgICA8aW5rc2NhcGU6cGVyc3BlY3RpdmUKICAgICAgIGlkPSJwZXJzcGVjdGl2ZTE0IgogICAgICAgaW5rc2NhcGU6cGVyc3AzZC1vcmlnaW49IjIyLjUgOiAxNSA6IDEiCiAgICAgICBpbmtzY2FwZTp2cF96PSI0NSA6IDIyLjUgOiAxIgogICAgICAgaW5rc2NhcGU6dnBfeT0iMCA6IDEwMDAgOiAwIgogICAgICAgaW5rc2NhcGU6dnBfeD0iMCA6IDIyLjUgOiAxIgogICAgICAgc29kaXBvZGk6dHlwZT0iaW5rc2NhcGU6cGVyc3AzZCIgLz4KICA8L2RlZnM+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAwMDAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnpvb209IjguMDAwMDAwNCIKICAgICBpbmtzY2FwZTpjeD0iLTMuNjgwNTk0OSIKICAgICBpbmtzY2FwZTpjeT0iMzIuMTUwMTc3IgogICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJweCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiCiAgICAgaGVpZ2h0PSI0NXB4IgogICAgIHdpZHRoPSI0NXB4IgogICAgIGlua3NjYXBlOmdyaWQtcG9pbnRzPSJ0cnVlIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTA2MCIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iMjAiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgaWQ9IkdyaWRGcm9tUHJlMDQ2U2V0dGluZ3MiCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBvcmlnaW54PSIwIgogICAgICAgb3JpZ2lueT0iMCIKICAgICAgIHNwYWNpbmd4PSIwLjUiCiAgICAgICBzcGFjaW5neT0iMC41IgogICAgICAgY29sb3I9IiMwMDAwZmYiCiAgICAgICBlbXBjb2xvcj0iIzAwMDBmZiIKICAgICAgIG9wYWNpdHk9IjAuMiIKICAgICAgIGVtcG9wYWNpdHk9IjAuNCIKICAgICAgIGVtcHNwYWNpbmc9IjUiIC8+CiAgPC9zb2RpcG9kaTpuYW1lZHZpZXc+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhMzEzMyI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIj4KICAgIDxnCiAgICAgICBpZD0iZzM0ODEiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLjEsMCwwLDEuMSwtMC43MzkwNDUyNywtMi40ODE2NTI2KSI+CiAgICAgIDxwYXRoCiAgICAgICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NjYyIKICAgICAgICAgaWQ9InBhdGgzMTI3IgogICAgICAgICBkPSJtIDM0LDM1LjEzMDIyMyAtMywtMyBIIDE0IGwgLTMsMyIKICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS41O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICA8ZwogICAgICAgICBpZD0iZzM0NzYiPgogICAgICAgIDxwYXRoCiAgICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS41O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgICAgZD0ibSAxMSwzNS4xMzAyMjMgdiA1IGggNCB2IC0yIGggNSB2IDIgaCA1IHYgLTIgaCA1IHYgMiBoIDQgdiAtNSIKICAgICAgICAgICBpZD0icGF0aDMxMjkiCiAgICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjY2NjY2NjY2MiCiAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgICAgICA8cGF0aAogICAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuNTtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICAgIGQ9Ik0gMzEuNTUyNzAzLDMyLjQxNzc2MSBWIDMwLjMwMjgyMiBIIDEzLjQ0NzI5NyB2IDIuMTE0OTM5IgogICAgICAgICAgIGlkPSJwYXRoMzEyNSIKICAgICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2MiCiAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgICAgICA8cGF0aAogICAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjAuNzU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjFweDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgICBkPSJNIDExLDM1LjEzMDIyMyBIIDM0IgogICAgICAgICAgIGlkPSJwYXRoNTE3NSIKICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZwogICAgICAgaWQ9ImczMzIzIgogICAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgtMC44NDE5NjQ2NCwwLDAsLTAuODQxOTY0NjQsNDAuMTg3MTI5LDM2LjU1ODY1MikiPgogICAgICA8cGF0aAogICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2MiCiAgICAgICAgIGlkPSJwYXRoMzQ5MSIKICAgICAgICAgZD0iTSAyMi4wMjg5NTgsMzYgQyAxMS41Mjg5NTgsMzUgNS41Mjg5NTg1LDI4IDYuMDI4OTU4NSw3IEggMjkuMDI4OTU4IGMgMCw5IC0xMCw2LjUgLTgsMjEiCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuNTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgICAgPHBhdGgKICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjc2NjY2NjY2NjY2NjIgogICAgICAgICBpZD0icGF0aDM0OTUiCiAgICAgICAgIGQ9Im0gMjAuMDI4OTU4LDI4IGMgLTAuMzg0NDYxLC0yLjkxMTI3OCA1LjU1MjkzNiwtNy4zNjg2MjQgOCwtOSAzLC0yIDIuODE5MTk4LC00LjM0Mjg5MiA1LC00IDEuMDQxNzIsMC45NDQwMTYgLTEuNDEzNDI5LDMuMDM3NTQ5IDAsMyAxLDAgLTAuMTg3MzMyLC0xLjIzMTcyNyAxLC0yIDEsMCA0LjAwMzE2MSwtMC45OTk5OTkgNCw0IDAsMiAtNiwxMiAtNiwxMiAwLDAgLTEuODg1ODY2LDEuOTAyMTI5IC0yLDMuNSAwLjcyNjA0NywwLjk5NDM2OSAwLjUsMiAwLjUsMyAtMSwxIC0zLC0yLjUgLTMsLTIuNSBoIC0yIGMgMCwwIC0wLjc4MTc4MSwxLjk5MTkyNiAtMi41LDMgLTEsMCAtMSwtMyAtMSwtMyIKICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS41O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICA8Y2lyY2xlCiAgICAgICAgIHRyYW5zZm9ybT0icm90YXRlKDE4MCwyMS43NjQ0NzksMjIpIgogICAgICAgICBpZD0icGF0aDM0OTkiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGN4PSI4LjUiCiAgICAgICAgIGN5PSIyMy41IgogICAgICAgICByPSIwLjUiIC8+CiAgICAgIDxlbGxpcHNlCiAgICAgICAgIHRyYW5zZm9ybT0icm90YXRlKC0xNDkuOTk5OTksMjQuMDI0MTA0LDIwLjk4NjUwNSkiCiAgICAgICAgIGlkPSJwYXRoMzUwMSIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuNTAwMDAwNDg7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGN4PSIxNC41IgogICAgICAgICBjeT0iMTUuNSIKICAgICAgICAgcng9IjAuNSIKICAgICAgICAgcnk9IjEuNSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjYyIKICAgICAgICAgaWQ9InBhdGg4MDQ5IgogICAgICAgICBkPSJtIDcuMDI4OTU4NSw3IGMgLTEsMjAgNS40OTk5OTk1LDI3LjUgMTEuOTk5OTk5NSwyOC41IgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO2ZpbGwtb3BhY2l0eTowLjc1O2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgPC9nPgogICAgPHBhdGgKICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjAuNzU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuMTAwMDAwMDI7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgIGQ9Im0gMzIuMjYwOTU1LDMwLjg1ODY0MiBoIC0xNi41IgogICAgICAgaWQ9InBhdGg0NTkwIgogICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjYyIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICA8cGF0aAogICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjEzNzQ5OTk5IgogICAgICAgZD0ibSAxNC4yNDIyOTksMTIuMzUwOTQ4IGMgLTAuNDMzNDE4LC0wLjQzMzQxOSAtMC4wODE0NSwtMS42NzAwOTkgMC43MzEzODksLTIuNTY5ODE0NyAwLjUxOTY2NCwtMC41NzUyMDU0IDAuODM2OTc1LC0wLjY3NzQyMTggMS4zMTI2NTEsLTAuNDIyODQ3NyAwLjYxMDQ3OCwwLjMyNjcxNzYgMC4wMjY2OSwyLjMxOTMwODQgLTAuODYxODQ4LDIuOTQxNjY0NCAtMC4zNjYyODIsMC4yNTY1NTQgLTAuOTUxMzk0LDAuMjgxNzk0IC0xLjE4MjE5MiwwLjA1MSB6IgogICAgICAgaWQ9InBhdGgyNSIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICA8cGF0aAogICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4xMzc0OTk5OSIKICAgICAgIGQ9Im0gMTQuMjQyMjk5LDEyLjM1MDk0OCBjIC0wLjQzMzQxOCwtMC40MzM0MTkgLTAuMDgxNDUsLTEuNjcwMDk5IDAuNzMxMzg5LC0yLjU2OTgxNDcgMC41MTk2NjQsLTAuNTc1MjA1NCAwLjgzNjk3NSwtMC42Nzc0MjE4IDEuMzEyNjUxLC0wLjQyMjg0NzcgMC42MTA0NzgsMC4zMjY3MTc2IDAuMDI2NjksMi4zMTkzMDg0IC0wLjg2MTg0OCwyLjk0MTY2NDQgLTAuMzY2MjgyLDAuMjU2NTU0IC0wLjk1MTM5NCwwLjI4MTc5NCAtMS4xODIxOTIsMC4wNTEgeiIKICAgICAgIGlkPSJwYXRoMjciCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgPHBhdGgKICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuMTM3NDk5OTkiCiAgICAgICBkPSJNIDkuOTYyMjc5MywxOS44NTM2NTQgQyA5LjYzMTk4OTksMTkuNDMzNzYgOS42MjQ3MjgzLDE5LjM4MTc2OCA5LjgzMjYzNiwxOC45MjU0NjEgYyAwLjQ3MDA1OSwtMS4wMzE2NjkgMi4wMDcxMTksLTAuNTEyNjYyIDEuNzg1NzY1LDAuNjAyOTg3IC0wLjE0NjAzMywwLjczNjAyMyAtMS4xNzQxNjUsMC45Mzc5MTQgLTEuNjU2MTIxNywwLjMyNTIwNiB6IgogICAgICAgaWQ9InBhdGgyOSIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICA8cGF0aAogICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4xMzc0OTk5OSIKICAgICAgIGQ9Im0gMTYuNTc2OTk1LDI5LjI1NjU3MiBjIDAuMjQyMTA5LC0xLjQwMjA1OCAwLjgyMzQ5NiwtMi4zMDk4MTcgMi43Nzc3MDIsLTQuMzM3MDIgMC45OTkzNCwtMS4wMzY2NyAyLjAyMDc1OCwtMi4xODI2MzIgMi4yNjk4MTYsLTIuNTQ2NTggMS4wNjQ1NTQsLTEuNTU1NjM3IDEuNjA1MTcxLC0zLjMzODg1MSAxLjc0MzgyNSwtNS43NTE5NzggMC4wNTI5OCwtMC45MjE5MTkgMC4xNzQ3MTYsLTEuNjUwODg2IDAuMzQ1Mzg1LC0yLjA2ODAzNyAwLjI2NDA1MSwtMC42NDU0MDEgMC4zNDc5MjQsLTEuNjk2MzMyIDAuMTU4MzQ2LC0xLjk4NDEwMSAtMC4xNzIyMDQsLTAuMjYxMzk2IC0wLjY1MzEsLTAuMzM4MjI1IC0wLjkxNTYwMywtMC4xNDYyNzggLTAuMTUwMjU1LDAuMTA5ODY4IC0wLjI5NDk1NSwwLjQ2NjMwOSAtMC4zNjIzMzMsMC44OTI1NDMgLTAuMDcwMzcsMC40NDUxNDggLTAuMjk2OTc0LDAuOTg4MDMzIC0wLjYwODAxMSwxLjQ1NjYzMSAtMC42Nzc3MDcsMS4wMjEwMDggLTIuODgwMDU1LDMuMDk3ODcgLTQuNjA2Njc2LDQuMzQ0MTk2IC0xLjc4MzUwNywxLjI4NzM4NiAtMi41ODg0NTUsMi4wMTU2MSAtMy41MzM2ODYsMy4xOTY4NzUgLTAuODMwNTc4LDEuMDM3OTc4IC0xLjE1MzgsMS4yMDY5NTYgLTAuNzMzNzU1LDAuMzgzNjAzIDAuNTY0Mzc1LC0xLjEwNjI2OCAwLjI1Mjc0NCwtMS45MzA0NzggLTAuNzI5OTA3LC0xLjkzMDQ3OCAtMC42ODUzNzcsMCAtMS4wNTQ3OTksMC4zODUyNTEgLTEuMDU0Nzk5LDEuMSB2IDAuNTUgaCAtMC43NjI4MTUgYyAtMC42NDI4NzA5LDAgLTAuODE0MzgzOSwtMC4wNTU2NCAtMS4wOTA3NzgsLTAuMzUzODc5IC0wLjMyNjQ5NTEsLTAuMzUyMjkzIC0wLjYyMTQwNjMsLTEuMzU5NzQ1IC0wLjYyMTQwNjMsLTIuMTIyNzk5IDAsLTAuNTIzOTczIDAuMzc4MjE1LC0xLjQ2OTE0IDEuNDI5ODkwMywtMy41NzMzMjIgMS4yOTY2MzMsLTIuNTk0MjkzIDMuMTgzMzYsLTUuODUyMDkgNC4wODAyODEsLTcuMDQ1MzkzNSAwLjk4NzQzNSwtMS4zMTM3MjM2IDEuMzcyNDg5LC0yLjM3NDIzMjIgMS4xMDE1MDcsLTMuMDMzNzQ5NiAtMC4wOTkzNCwtMC4yNDE3ODM4IC0wLjIxMjg5OCwtMC42MjUyMzE4IC0wLjI1MjM0NCwtMC44NTIxMDY4IC0wLjA3MTU4LC0wLjQxMTcwMjcgLTAuMDcxMTYsLTAuNDExOTk2NCAwLjIyMDQwMSwtMC4xNTE5ODU5IDAuMTYwNjY3LDAuMTQzMjgyNyAwLjQ4NDkwNCwwLjU2MDkzOSAwLjcyMDUyOCwwLjkyODEyNSBsIDAuNDI4NDAzLDAuNjY3NjEwOCBoIDEuMjg5NjAxIDEuMjg5NTk5IGwgMC4zMzU1NDUsLTAuNjUzMTI0OSBjIDAuMzg4Mzk1LC0wLjc1NTk5NDcgMS4xMTU0MiwtMS42NTQwNjgzIDEuMjQwMjcxLC0xLjUzMjA3MDYgMC4wNDcwMywwLjA0NTk1NSAwLjEyMzg3MywwLjQ5NDM4NTMgMC4xNzA3NjMsMC45OTY1MTIyIDAuMDQ2ODksMC41MDIxMjY5IDAuMTUzNjY0LDAuOTY5NTgyIDAuMjM3Mjc5LDEuMDM4Nzg5MyAwLjA4MzYxLDAuMDY5MjA4IDAuNzcwNzc1LDAuMjMwOTk4NSAxLjUyNzAyNSwwLjM1OTUzNjMgMy4yNDczNjIsMC41NTE5NDUxIDUuNzAwOTU2LDEuNzg3MjQ4IDcuMDEwNzc0LDMuNTI5Njg5NyAyLjg1NTE5NywzLjc5ODI1MiA0LjE5Mzk2Nyw5LjI2MzY2MSA0LjE5NTE0MiwxNy4xMjYyOTIgbCAzLjMzZS00LDIuMjM0Mzc1IGggLTguNzEyNDc5IC04LjcxMjQ3OCB6IG0gLTUuMTEyMTk2LC05LjE3ODEyNCBjIDAuMzUwNDc4LC0wLjM1MDQ3OSAwLjM1OTIyMiwtMS4xMDMwMjcgMC4wMTc3MSwtMS41MjQ3NjkgLTAuNTA2NzU0LC0wLjYyNTgxNCAtMS42NTkwNDc2LC0wLjMxMzgyNyAtMS44NjQ1MTYsMC41MDQ4MjUgLTAuMDkwNDQ3LDAuMzYwMzcxIDAuMjEzMjM1MSwxLjA4NjIxNSAwLjUwMzI4MywxLjIwMjkxNiAwLjQxOTc4MSwwLjE2ODg5NyAxLjA4MTgxLDAuMDc4NzQgMS4zNDM1MTgsLTAuMTgyOTcyIHogbSA0LjEyMTIxMSwtNy43ODY2NjIgYyAwLjk3MjA5MywtMC44MTc5NjIgMS40MzQwNzUsLTIuNTUzOTAzNiAwLjc5ODE5NSwtMi45OTkyOTE0IC0wLjQzNzU2NywtMC4zMDY0ODMxIC0wLjg1MDIyLC0wLjI2NTAyNzQgLTEuMzIzMTY1LDAuMTMyOTMwNiAtMC41Mjg5ODksMC40NDUxMTM5IC0xLjEyMTI0MSwxLjYzMjE3MzggLTEuMTIxMjQxLDIuMjQ3MzE4OCAwLDAuOTY2MDc4IDAuODUyNzA3LDEuMjg2NzMxIDEuNjQ2MjExLDAuNjE5MDQyIHoiCiAgICAgICBpZD0icGF0aDMzIgogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgIDxwYXRoCiAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO3N0cm9rZS13aWR0aDowLjEzNzQ5OTk5IgogICAgICAgZD0ibSAxNC4xNDYwNDksMzQuNjUzNDQ3IDAuOTU1MTI1LC0wLjk2MjUgaCA4Ljk0NDg3NSA4Ljk0NDg3NSBsIDAuOTU1MTI0LDAuOTYyNSAwLjk1NTEyNSwwLjk2MjUgSCAyNC4wNDYwNDkgMTMuMTkwOTI1IFoiCiAgICAgICBpZD0icGF0aDM5IgogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgIDxwYXRoCiAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjEwMDAwMDAycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgIGQ9Im0gMTEuNzczNDU0LDM4LjQyMTE0MiAyMy45MjQ5OTksMC4xMzc1IgogICAgICAgaWQ9InBhdGg0MSIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgPC9nPgogIDxnCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIyIgogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIzEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIiAvPgo8L3N2Zz4K');
+}
+
+piece.black.princess {
+  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iNDUiCiAgIGhlaWdodD0iNDUiCiAgIGlkPSJzdmczMTI4IgogICBzb2RpcG9kaTp2ZXJzaW9uPSIwLjMyIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIwLjkyLjUgKDIwNjBlYzFmOWYsIDIwMjAtMDQtMDgpIgogICB2ZXJzaW9uPSIxLjAiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImJjLnN2ZyIKICAgaW5rc2NhcGU6b3V0cHV0X2V4dGVuc2lvbj0ib3JnLmlua3NjYXBlLm91dHB1dC5zdmcuaW5rc2NhcGUiPgogIDxkZWZzCiAgICAgaWQ9ImRlZnMzMTMwIj4KICAgIDxpbmtzY2FwZTpwZXJzcGVjdGl2ZQogICAgICAgc29kaXBvZGk6dHlwZT0iaW5rc2NhcGU6cGVyc3AzZCIKICAgICAgIGlua3NjYXBlOnZwX3g9IjAgOiAyMi41IDogMSIKICAgICAgIGlua3NjYXBlOnZwX3k9IjAgOiAxMDAwIDogMCIKICAgICAgIGlua3NjYXBlOnZwX3o9IjQ1IDogMjIuNSA6IDEiCiAgICAgICBpbmtzY2FwZTpwZXJzcDNkLW9yaWdpbj0iMjIuNSA6IDE1IDogMSIKICAgICAgIGlkPSJwZXJzcGVjdGl2ZTE1IiAvPgogICAgPGlua3NjYXBlOnBlcnNwZWN0aXZlCiAgICAgICBpZD0icGVyc3BlY3RpdmUxMiIKICAgICAgIGlua3NjYXBlOnBlcnNwM2Qtb3JpZ2luPSIyMi41IDogMTUgOiAxIgogICAgICAgaW5rc2NhcGU6dnBfej0iNDUgOiAyMi41IDogMSIKICAgICAgIGlua3NjYXBlOnZwX3k9IjAgOiAxMDAwIDogMCIKICAgICAgIGlua3NjYXBlOnZwX3g9IjAgOiAyMi41IDogMSIKICAgICAgIHNvZGlwb2RpOnR5cGU9Imlua3NjYXBlOnBlcnNwM2QiIC8+CiAgPC9kZWZzPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0iYmFzZSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGdyaWR0b2xlcmFuY2U9IjEwMDAwIgogICAgIGd1aWRldG9sZXJhbmNlPSIxMCIKICAgICBvYmplY3R0b2xlcmFuY2U9IjEwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp6b29tPSIxMS4zMTM3MDkiCiAgICAgaW5rc2NhcGU6Y3g9IjIxLjg0Mzc5NCIKICAgICBpbmtzY2FwZTpjeT0iMTcuNDY2Njg1IgogICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJweCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiCiAgICAgaGVpZ2h0PSI0NXB4IgogICAgIHdpZHRoPSI0NXB4IgogICAgIGlua3NjYXBlOmdyaWQtcG9pbnRzPSJ0cnVlIgogICAgIHNob3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iOTYwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwNjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjIwIgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiPgogICAgPGlua3NjYXBlOmdyaWQKICAgICAgIGlkPSJHcmlkRnJvbVByZTA0NlNldHRpbmdzIgogICAgICAgdHlwZT0ieHlncmlkIgogICAgICAgb3JpZ2lueD0iMCIKICAgICAgIG9yaWdpbnk9IjAiCiAgICAgICBzcGFjaW5neD0iMC41IgogICAgICAgc3BhY2luZ3k9IjAuNSIKICAgICAgIGNvbG9yPSIjMDAwMGZmIgogICAgICAgZW1wY29sb3I9IiMwMDAwZmYiCiAgICAgICBvcGFjaXR5PSIwLjIiCiAgICAgICBlbXBvcGFjaXR5PSIwLjQiCiAgICAgICBlbXBzcGFjaW5nPSI1IiAvPgogIDwvc29kaXBvZGk6bmFtZWR2aWV3PgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTMxMzMiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHN0eWxlPSJkaXNwbGF5OmlubGluZSI+CiAgICA8cGF0aAogICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS42NDk5OTk5ODtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgZD0ibSAzNy41LDM3LjUgYyAtMy43MjM3ODEsLTEuMDY5NTYyIC0xMS4xMjYyMTksMC40NzM5MDMgLTE0Ljg1LC0yLjIgLTMuNzIzNzgyLDIuNjczOTAzIC0xMS4xMjYyMiwxLjEzMDQzOCAtMTQuODUwMDAwMiwyLjIgMCwwIC0xLjgxMDQ4NzgsMC41OTU2NTggLTMuMywyLjIgMC43NDQ3NTYxLDEuMDY5NTYxIDEuODEwNDg3OCwxLjA4NDc4IDMuMywwLjU1IEMgMTEuNTIzNzgsMzkuMTgwNDM5IDE4LjkyNjIxOCw0MC43NTQzNDIgMjIuNjUsMzkuMTUgYyAzLjcyMzc4MSwxLjYwNDM0MiAxMS4xMjYyMTksMC4wMzA0NCAxNC44NSwxLjEgMS40ODk1MTIsMC41MzQ3OCAyLjU1NTI0NCwwLjUxOTU2MSAzLjMsLTAuNTUgLTEuNDg5NTEyLC0yLjEzOTEyMyAtMy4zLC0yLjIgLTMuMywtMi4yIHoiCiAgICAgICBpZD0icGF0aDQ1ODIiCiAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2NjYyIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICA8cGF0aAogICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS42NDk5OTk5ODtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgZD0ibSAzMC45LDMzLjEgYyAtMi43NSwyLjc1IC0xMy43NSwyLjc1IC0xNi41LDAgLTAuNTUsLTEuNjUgMCwtMi4yIDAsLTIuMiBoIDE2LjUgYyAwLDAgMC41NSwwLjU1IDAsMi4yIHoiCiAgICAgICBpZD0icGF0aDQ1ODQiCiAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjIgogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgIDxwYXRoCiAgICAgICBzdHlsZT0iZmlsbDpub25lO2ZpbGwtb3BhY2l0eTowLjc1O2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjY0OTk5OTk4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICBkPSJNIDMwLjksMzAuOSBIIDE0LjQiCiAgICAgICBpZD0icGF0aDQ1OTAiCiAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIgogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgIDxnCiAgICAgICBpZD0iZzMzMjMiCiAgICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KC0wLjg0MTk2NDY0LDAsMCwtMC44NDE5NjQ2NCwzOC44MjYxNzQsMzYuNjAwMDEpIgogICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MSI+CiAgICAgIDxwYXRoCiAgICAgICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NjYyIKICAgICAgICAgaWQ9InBhdGgzNDkxIgogICAgICAgICBkPSJNIDIyLjAyODk1OCwzNiBDIDExLjUyODk1OCwzNSA1LjUyODk1ODUsMjggNi4wMjg5NTg1LDcgSCAyOS4wMjg5NTggYyAwLDkgLTEwLDYuNSAtOCwyMSIKICAgICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS41O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICA8cGF0aAogICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNzY2NjY2NjY2NjY2MiCiAgICAgICAgIGlkPSJwYXRoMzQ5NSIKICAgICAgICAgZD0ibSAyMC4wMjg5NTgsMjggYyAtMC4zODQ0NjEsLTIuOTExMjc4IDUuNTUyOTM2LC03LjM2ODYyNCA4LC05IDMsLTIgMi44MTkxOTgsLTQuMzQyODkyIDUsLTQgMS4wNDE3MiwwLjk0NDAxNiAtMS40MTM0MjksMy4wMzc1NDkgMCwzIDEsMCAtMC4xODczMzIsLTEuMjMxNzI3IDEsLTIgMSwwIDQuMDAzMTYxLC0wLjk5OTk5OSA0LDQgMCwyIC02LDEyIC02LDEyIDAsMCAtMS44ODU4NjYsMS45MDIxMjkgLTIsMy41IDAuNzI2MDQ3LDAuOTk0MzY5IDAuNSwyIDAuNSwzIC0xLDEgLTMsLTIuNSAtMywtMi41IGggLTIgYyAwLDAgLTAuNzgxNzgxLDEuOTkxOTI2IC0yLjUsMyAtMSwwIC0xLC0zIC0xLC0zIgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICAgIDxjaXJjbGUKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoMTgwLDIxLjc2NDQ3OSwyMikiCiAgICAgICAgIGlkPSJwYXRoMzQ5OSIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjEuNTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgY3g9IjguNSIKICAgICAgICAgY3k9IjIzLjUiCiAgICAgICAgIHI9IjAuNSIgLz4KICAgICAgPGVsbGlwc2UKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoLTE0OS45OTk5OSwyNC4wMjQxMDQsMjAuOTg2NTA1KSIKICAgICAgICAgaWQ9InBhdGgzNTAxIgogICAgICAgICBzdHlsZT0ib3BhY2l0eToxO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MS41MDAwMDA0ODtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgY3g9IjE0LjUiCiAgICAgICAgIGN5PSIxNS41IgogICAgICAgICByeD0iMC41IgogICAgICAgICByeT0iMS41IiAvPgogICAgICA8cGF0aAogICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIgogICAgICAgICBpZD0icGF0aDgwNDkiCiAgICAgICAgIGQ9Im0gNy4wMjg5NTg1LDcgYyAtMSwyMCA1LjQ5OTk5OTUsMjcuNSAxMS45OTk5OTk1LDI4LjUiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjE7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICA8L2c+CiAgICA8cGF0aAogICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjEuNjQ5OTk5OTg7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgIGQ9Ik0gMTQuNCwzMC45IEggMzAuOSIKICAgICAgIGlkPSJwYXRoMzM2OSIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgPC9nPgogIDxnCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIyIgogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIzEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIiAvPgo8L3N2Zz4K');
+}
+
+piece.white.amazon {
+  background-image: url('data:image/svg+xml;base64,PCEtLSBDcmVhdGVkIHdpdGggSW5rc2NhcGUgKGh0dHA6Ly93d3cuaW5rc2NhcGUub3JnLykgLS0+DQ0KPHN2ZyB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB2ZXJzaW9uPSIxLjAiIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPg0NCiA8bWV0YWRhdGE+DQ0KICA8cmRmOlJERj4NDQogICA8Y2M6V29yayByZGY6YWJvdXQ9IiI+DQ0KICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0Pg0NCiAgICA8ZGM6dHlwZSByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIi8+DQ0KICAgIDxkYzp0aXRsZS8+DQ0KICAgPC9jYzpXb3JrPg0NCiAgPC9yZGY6UkRGPg0NCiA8L21ldGFkYXRhPg0NCiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1NzU3NTc0LDAsMCwwLjc1NzU3NTc0LDIuODc5MTUxNSwtNy45MzkzOTMyKSI+DQ0KICA8cGF0aCBzdHJva2UtbGluZWpvaW49Im1pdGVyIiBkPSJtMTQuNDQsMjkuNWMwLjIyMiwxLjY4LTMuMDksNC4wNi00LjUsNS0xLjczLDEuMTYtMS43NCwyLjctMywyLjUtMC42MDItMC41NDUsMC44MTctMi4wMiwwLTItMC41OCwwLDAuMTksMS4xLTAuNSwxLjUtMC41OCwwLTIuNSwwLjQtMi41LTIuNSwwLTEuMiwzLjUtNi41LDMuNS02LjVzMC45MzQtMS4wOCwxLTJjLTAuNDE5LTAuNTc1LTAuMjU4LTEuNDgsMC0yLDAuMzY1LTAuNzMxLDEuNSwxLjUsMS41LDEuNWgxczAuNS0xLjUsMS41LTJjMC41MTctMC4yNTgsMC41LDIsMC41LDIsNi4wNywwLjU3OCw5LjI5LDQuMzcsOSwxNi41aC0xMi41YzAtNC45LDQuOC0zLjcsNC41LTEwLjUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSI0IiBzdHJva2UtZGFzaGFycmF5PSJub25lIiBzdHJva2Utd2lkdGg9IjEuMzE5OTk5OTMiIGZpbGw9IiNGRkYiLz4NDQogIDxwYXRoIGZpbGw9IiMwMDAiIGQ9Im05LDIzLjVhMC41LDAuNSwwLDEsMSwtMSwwLDAuNSwwLjUsMCwxLDEsMSwweiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMuNDk5OTk5OSwxMCkiLz4NDQogIDxwYXRoIGZpbGw9IiMwMDAiIGQ9Im05LjYwNTgsMzAuMjhhMS4wMjgxLDEuNDcyOSwzMCwwLDEsLTEuNzgwNywtMS4wMjgsMS4wMjgxLDEuNDcyOSwzMCwwLDEsMS43ODA3LDEuMDI4eiIvPg0NCiA8L2c+DQ0KIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTQpIj4NDQogIDxwYXRoIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Im0xOCwxOCw0LTgtNCw0LDAtNi0zLDUuMTI1LTItNS0yLDVsLTMtNS4xMjV2NmwtNC00LDMsOHMyLjAzNDktMi41LDYtMi41LDUsMi41LDUsMi41eiIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1saW5lY2FwPSJidXR0IiBzdHJva2UtbWl0ZXJsaW1pdD0iNCIgc3Ryb2tlLWRhc2hhcnJheT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIwLjgwMDAwMDAxIiBmaWxsPSIjRkZGIi8+DQ0KICA8cGF0aCBpZD0icGF0aDM4MDQiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIGQ9Im01LjUsMTBhMS41LDEuNSwwLDAsMSwtMywwLDEuNSwxLjUsMCwxLDEsMywweiIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjAiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1taXRlcmxpbWl0PSI0IiBzdHJva2UtZGFzaGFycmF5PSJub25lIiBzdHJva2Utd2lkdGg9IjAuNzUiIGZpbGw9IiNGRkYiLz4NDQogIDx1c2UgeGxpbms6aHJlZj0iI3BhdGgzODA0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LC0yKSIgaGVpZ2h0PSIyNiIgd2lkdGg9IjI2IiB5PSIwIiB4PSIwIi8+DQ0KICA8dXNlIHhsaW5rOmhyZWY9IiNwYXRoMzgwNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOSwtMikiIGhlaWdodD0iMjYiIHdpZHRoPSIyNiIgeT0iMCIgeD0iMCIvPg0NCiAgPHVzZSB4bGluazpocmVmPSIjcGF0aDM4MDQiIHRyYW5zZm9ybT0ibWF0cml4KC0xLDAsMCwxLDI2LDApIiBoZWlnaHQ9IjI2IiB3aWR0aD0iMjYiIHk9IjAiIHg9IjAiLz4NDQogIDx1c2UgeGxpbms6aHJlZj0iI3BhdGgzODA0IiB0cmFuc2Zvcm09Im1hdHJpeCgtMSwwLDAsMSwyMiwtMikiIGhlaWdodD0iMjYiIHdpZHRoPSIyNiIgeT0iMCIgeD0iMCIvPg0NCiA8L2c+DQ0KPC9zdmc+DQ0K');
+}
+
+piece.white.empress {
+  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iNDUiCiAgIGhlaWdodD0iNDUiCiAgIGlkPSJzdmczMTI4IgogICBzb2RpcG9kaTp2ZXJzaW9uPSIwLjMyIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIwLjkyLjUgKDIwNjBlYzFmOWYsIDIwMjAtMDQtMDgpIgogICB2ZXJzaW9uPSIxLjAiCiAgIHNvZGlwb2RpOmRvY25hbWU9IndtLnN2ZyIKICAgaW5rc2NhcGU6b3V0cHV0X2V4dGVuc2lvbj0ib3JnLmlua3NjYXBlLm91dHB1dC5zdmcuaW5rc2NhcGUiPgogIDxkZWZzCiAgICAgaWQ9ImRlZnMzMTMwIj4KICAgIDxpbmtzY2FwZTpwZXJzcGVjdGl2ZQogICAgICAgc29kaXBvZGk6dHlwZT0iaW5rc2NhcGU6cGVyc3AzZCIKICAgICAgIGlua3NjYXBlOnZwX3g9IjAgOiAyMi41IDogMSIKICAgICAgIGlua3NjYXBlOnZwX3k9IjAgOiAxMDAwIDogMCIKICAgICAgIGlua3NjYXBlOnZwX3o9IjQ1IDogMjIuNSA6IDEiCiAgICAgICBpbmtzY2FwZTpwZXJzcDNkLW9yaWdpbj0iMjIuNSA6IDE1IDogMSIKICAgICAgIGlkPSJwZXJzcGVjdGl2ZTE1IiAvPgogICAgPGlua3NjYXBlOnBlcnNwZWN0aXZlCiAgICAgICBpZD0icGVyc3BlY3RpdmUxMiIKICAgICAgIGlua3NjYXBlOnBlcnNwM2Qtb3JpZ2luPSIyMi41IDogMTUgOiAxIgogICAgICAgaW5rc2NhcGU6dnBfej0iNDUgOiAyMi41IDogMSIKICAgICAgIGlua3NjYXBlOnZwX3k9IjAgOiAxMDAwIDogMCIKICAgICAgIGlua3NjYXBlOnZwX3g9IjAgOiAyMi41IDogMSIKICAgICAgIHNvZGlwb2RpOnR5cGU9Imlua3NjYXBlOnBlcnNwM2QiIC8+CiAgICA8aW5rc2NhcGU6cGVyc3BlY3RpdmUKICAgICAgIGlkPSJwZXJzcGVjdGl2ZTE0IgogICAgICAgaW5rc2NhcGU6cGVyc3AzZC1vcmlnaW49IjIyLjUgOiAxNSA6IDEiCiAgICAgICBpbmtzY2FwZTp2cF96PSI0NSA6IDIyLjUgOiAxIgogICAgICAgaW5rc2NhcGU6dnBfeT0iMCA6IDEwMDAgOiAwIgogICAgICAgaW5rc2NhcGU6dnBfeD0iMCA6IDIyLjUgOiAxIgogICAgICAgc29kaXBvZGk6dHlwZT0iaW5rc2NhcGU6cGVyc3AzZCIgLz4KICA8L2RlZnM+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAwMDAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnpvb209IjguMDAwMDAwNCIKICAgICBpbmtzY2FwZTpjeD0iLTMuOTMwNTk0OSIKICAgICBpbmtzY2FwZTpjeT0iMzIuMTUwMTc3IgogICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJweCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiCiAgICAgaGVpZ2h0PSI0NXB4IgogICAgIHdpZHRoPSI0NXB4IgogICAgIGlua3NjYXBlOmdyaWQtcG9pbnRzPSJ0cnVlIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTA2MCIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iMjAiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgaWQ9IkdyaWRGcm9tUHJlMDQ2U2V0dGluZ3MiCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBvcmlnaW54PSIwIgogICAgICAgb3JpZ2lueT0iMCIKICAgICAgIHNwYWNpbmd4PSIwLjUiCiAgICAgICBzcGFjaW5neT0iMC41IgogICAgICAgY29sb3I9IiMwMDAwZmYiCiAgICAgICBlbXBjb2xvcj0iIzAwMDBmZiIKICAgICAgIG9wYWNpdHk9IjAuMiIKICAgICAgIGVtcG9wYWNpdHk9IjAuNCIKICAgICAgIGVtcHNwYWNpbmc9IjUiIC8+CiAgPC9zb2RpcG9kaTpuYW1lZHZpZXc+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhMzEzMyI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIj4KICAgIDxnCiAgICAgICBpZD0iZzM0ODEiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLjEsMCwwLDEuMSwtMS4xMTQwNDUyLC0yLjQ4MTY1MjYpIj4KICAgICAgPHBhdGgKICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjIgogICAgICAgICBpZD0icGF0aDMxMjciCiAgICAgICAgIGQ9Im0gMzQsMzUuMTMwMjIzIC0zLC0zIEggMTQgbCAtMywzIgogICAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICAgIDxnCiAgICAgICAgIGlkPSJnMzQ3NiI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjU7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgICBkPSJtIDExLDM1LjEzMDIyMyB2IDUgaCA0IHYgLTIgaCA1IHYgMiBoIDUgdiAtMiBoIDUgdiAyIGggNCB2IC01IgogICAgICAgICAgIGlkPSJwYXRoMzEyOSIKICAgICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2NjY2NjYyIKICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICAgIDxwYXRoCiAgICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS41O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgICAgZD0iTSAzMS41NTI3MDMsMzIuNDE3NzYxIFYgMzAuMzAyODIyIEggMTMuNDQ3Mjk3IHYgMi4xMTQ5MzkiCiAgICAgICAgICAgaWQ9InBhdGgzMTI1IgogICAgICAgICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NjYyIKICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICAgIDxwYXRoCiAgICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtmaWxsLW9wYWNpdHk6MC43NTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MXB4O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICAgIGQ9Ik0gMTEsMzUuMTMwMjIzIEggMzQiCiAgICAgICAgICAgaWQ9InBhdGg1MTc1IgogICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICAgIDwvZz4KICAgIDwvZz4KICAgIDxnCiAgICAgICBpZD0iZzMzMjMiCiAgICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KC0wLjg0MTk2NDY0LDAsMCwtMC44NDE5NjQ2NCwzOS44MTIxMjksMzYuNTU4NjUyKSI+CiAgICAgIDxwYXRoCiAgICAgICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NjYyIKICAgICAgICAgaWQ9InBhdGgzNDkxIgogICAgICAgICBkPSJNIDIyLjAyODk1OCwzNiBDIDExLjUyODk1OCwzNSA1LjUyODk1ODUsMjggNi4wMjg5NTg1LDcgSCAyOS4wMjg5NTggYyAwLDkgLTEwLDYuNSAtOCwyMSIKICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS41O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICA8cGF0aAogICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNzY2NjY2NjY2NjY2MiCiAgICAgICAgIGlkPSJwYXRoMzQ5NSIKICAgICAgICAgZD0ibSAyMC4wMjg5NTgsMjggYyAtMC4zODQ0NjEsLTIuOTExMjc4IDUuNTUyOTM2LC03LjM2ODYyNCA4LC05IDMsLTIgMi44MTkxOTgsLTQuMzQyODkyIDUsLTQgMS4wNDE3MiwwLjk0NDAxNiAtMS40MTM0MjksMy4wMzc1NDkgMCwzIDEsMCAtMC4xODczMzIsLTEuMjMxNzI3IDEsLTIgMSwwIDQuMDAzMTYxLC0wLjk5OTk5OSA0LDQgMCwyIC02LDEyIC02LDEyIDAsMCAtMS44ODU4NjYsMS45MDIxMjkgLTIsMy41IDAuNzI2MDQ3LDAuOTk0MzY5IDAuNSwyIDAuNSwzIC0xLDEgLTMsLTIuNSAtMywtMi41IGggLTIgYyAwLDAgLTAuNzgxNzgxLDEuOTkxOTI2IC0yLjUsMyAtMSwwIC0xLC0zIC0xLC0zIgogICAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICAgIDxjaXJjbGUKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoMTgwLDIxLjc2NDQ3OSwyMikiCiAgICAgICAgIGlkPSJwYXRoMzQ5OSIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuNTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgY3g9IjguNSIKICAgICAgICAgY3k9IjIzLjUiCiAgICAgICAgIHI9IjAuNSIgLz4KICAgICAgPGVsbGlwc2UKICAgICAgICAgdHJhbnNmb3JtPSJyb3RhdGUoLTE0OS45OTk5OSwyNC4wMjQxMDQsMjAuOTg2NTA1KSIKICAgICAgICAgaWQ9InBhdGgzNTAxIgogICAgICAgICBzdHlsZT0ib3BhY2l0eToxO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS41MDAwMDA0ODtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgY3g9IjE0LjUiCiAgICAgICAgIGN5PSIxNS41IgogICAgICAgICByeD0iMC41IgogICAgICAgICByeT0iMS41IiAvPgogICAgICA8cGF0aAogICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIgogICAgICAgICBpZD0icGF0aDgwNDkiCiAgICAgICAgIGQ9Im0gNy4wMjg5NTg1LDcgYyAtMSwyMCA1LjQ5OTk5OTUsMjcuNSAxMS45OTk5OTk1LDI4LjUiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjAuNzU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICA8L2c+CiAgICA8cGF0aAogICAgICAgc3R5bGU9ImZpbGw6bm9uZTtmaWxsLW9wYWNpdHk6MC43NTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS4xMDAwMDAwMjtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgZD0ibSAzMS44ODU5NTUsMzAuODU4NjQyIGggLTE2LjUiCiAgICAgICBpZD0icGF0aDQ1OTAiCiAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIgogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICA8L2c+CiAgPGcKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjIiCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEjMSIKICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmUiIC8+Cjwvc3ZnPgo=');
+}
+
+piece.white.princess {
+  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iNDUiCiAgIGhlaWdodD0iNDUiCiAgIGlkPSJzdmczMTI4IgogICBzb2RpcG9kaTp2ZXJzaW9uPSIwLjMyIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIwLjkyLjUgKDIwNjBlYzFmOWYsIDIwMjAtMDQtMDgpIgogICB2ZXJzaW9uPSIxLjAiCiAgIHNvZGlwb2RpOmRvY25hbWU9IndjLnN2ZyIKICAgaW5rc2NhcGU6b3V0cHV0X2V4dGVuc2lvbj0ib3JnLmlua3NjYXBlLm91dHB1dC5zdmcuaW5rc2NhcGUiPgogIDxkZWZzCiAgICAgaWQ9ImRlZnMzMTMwIj4KICAgIDxpbmtzY2FwZTpwZXJzcGVjdGl2ZQogICAgICAgc29kaXBvZGk6dHlwZT0iaW5rc2NhcGU6cGVyc3AzZCIKICAgICAgIGlua3NjYXBlOnZwX3g9IjAgOiAyMi41IDogMSIKICAgICAgIGlua3NjYXBlOnZwX3k9IjAgOiAxMDAwIDogMCIKICAgICAgIGlua3NjYXBlOnZwX3o9IjQ1IDogMjIuNSA6IDEiCiAgICAgICBpbmtzY2FwZTpwZXJzcDNkLW9yaWdpbj0iMjIuNSA6IDE1IDogMSIKICAgICAgIGlkPSJwZXJzcGVjdGl2ZTE1IiAvPgogICAgPGlua3NjYXBlOnBlcnNwZWN0aXZlCiAgICAgICBpZD0icGVyc3BlY3RpdmUxMiIKICAgICAgIGlua3NjYXBlOnBlcnNwM2Qtb3JpZ2luPSIyMi41IDogMTUgOiAxIgogICAgICAgaW5rc2NhcGU6dnBfej0iNDUgOiAyMi41IDogMSIKICAgICAgIGlua3NjYXBlOnZwX3k9IjAgOiAxMDAwIDogMCIKICAgICAgIGlua3NjYXBlOnZwX3g9IjAgOiAyMi41IDogMSIKICAgICAgIHNvZGlwb2RpOnR5cGU9Imlua3NjYXBlOnBlcnNwM2QiIC8+CiAgPC9kZWZzPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0iYmFzZSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGdyaWR0b2xlcmFuY2U9IjEwMDAwIgogICAgIGd1aWRldG9sZXJhbmNlPSIxMCIKICAgICBvYmplY3R0b2xlcmFuY2U9IjEwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp6b29tPSI4LjAwMDAwMDQiCiAgICAgaW5rc2NhcGU6Y3g9IjYwLjMwODc3OSIKICAgICBpbmtzY2FwZTpjeT0iMjQuNTExNDc5IgogICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJweCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiCiAgICAgaGVpZ2h0PSI0NXB4IgogICAgIHdpZHRoPSI0NXB4IgogICAgIGlua3NjYXBlOmdyaWQtcG9pbnRzPSJ0cnVlIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTA2MCIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iMjAiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgaWQ9IkdyaWRGcm9tUHJlMDQ2U2V0dGluZ3MiCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBvcmlnaW54PSIwIgogICAgICAgb3JpZ2lueT0iMCIKICAgICAgIHNwYWNpbmd4PSIwLjUiCiAgICAgICBzcGFjaW5neT0iMC41IgogICAgICAgY29sb3I9IiMwMDAwZmYiCiAgICAgICBlbXBjb2xvcj0iIzAwMDBmZiIKICAgICAgIG9wYWNpdHk9IjAuMiIKICAgICAgIGVtcG9wYWNpdHk9IjAuNCIKICAgICAgIGVtcHNwYWNpbmc9IjUiIC8+CiAgPC9zb2RpcG9kaTpuYW1lZHZpZXc+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhMzEzMyI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIj4KICAgIDxwYXRoCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjY0OTk5OTk4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICBkPSJtIDM3LjcyNSwzOC4wMDg5MTggYyAtMy43MjM3ODEsLTEuMDY5NTYyIC0xMS4xMjYyMTksMC40NzM5MDMgLTE0Ljg1LC0yLjIgLTMuNzIzNzgyLDIuNjczOTAzIC0xMS4xMjYyMiwxLjEzMDQzOCAtMTQuODUwMDAwMiwyLjIgMCwwIC0xLjgxMDQ4NzgsMC41OTU2NTggLTMuMywyLjIgMC43NDQ3NTYxLDEuMDY5NTYxIDEuODEwNDg3OCwxLjA4NDc4IDMuMywwLjU1IDMuNzIzNzgwMiwtMS4wNjk1NjEgMTEuMTI2MjE4MiwwLjUwNDM0MiAxNC44NTAwMDAyLC0xLjEgMy43MjM3ODEsMS42MDQzNDIgMTEuMTI2MjE5LDAuMDMwNDQgMTQuODUsMS4xIDEuNDg5NTEyLDAuNTM0NzggMi41NTUyNDQsMC41MTk1NjEgMy4zLC0wLjU1IC0xLjQ4OTUxMiwtMi4xMzkxMjMgLTMuMywtMi4yIC0zLjMsLTIuMiB6IgogICAgICAgaWQ9InBhdGg0NTgyIgogICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjY2NjY2MiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgPHBhdGgKICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuNjQ5OTk5OTg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgIGQ9Im0gMzEuMTI1LDMzLjYwODkxOCBjIC0yLjc1LDIuNzUgLTEzLjc1LDIuNzUgLTE2LjUsMCAtMC41NSwtMS42NSAwLC0yLjIgMCwtMi4yIGggMTYuNSBjIDAsMCAwLjU1LDAuNTUgMCwyLjIgeiIKICAgICAgIGlkPSJwYXRoNDU4NCIKICAgICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NjY2MiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgPHBhdGgKICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjAuNzU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuNjQ5OTk5OTg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgIGQ9Im0gMzEuMTI1LDMxLjQwODkxOCBoIC0xNi41IgogICAgICAgaWQ9InBhdGg0NTkwIgogICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjYyIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICA8ZwogICAgICAgaWQ9ImczMzIzIgogICAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgtMC44NDE5NjQ2NCwwLDAsLTAuODQxOTY0NjQsMzkuMDUxMTc0LDM3LjEwODkyOCkiPgogICAgICA8cGF0aAogICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2MiCiAgICAgICAgIGlkPSJwYXRoMzQ5MSIKICAgICAgICAgZD0iTSAyMi4wMjg5NTgsMzYgQyAxMS41Mjg5NTgsMzUgNS41Mjg5NTg1LDI4IDYuMDI4OTU4NSw3IEggMjkuMDI4OTU4IGMgMCw5IC0xMCw2LjUgLTgsMjEiCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuNTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgICAgPHBhdGgKICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjc2NjY2NjY2NjY2NjIgogICAgICAgICBpZD0icGF0aDM0OTUiCiAgICAgICAgIGQ9Im0gMjAuMDI4OTU4LDI4IGMgLTAuMzg0NDYxLC0yLjkxMTI3OCA1LjU1MjkzNiwtNy4zNjg2MjQgOCwtOSAzLC0yIDIuODE5MTk4LC00LjM0Mjg5MiA1LC00IDEuMDQxNzIsMC45NDQwMTYgLTEuNDEzNDI5LDMuMDM3NTQ5IDAsMyAxLDAgLTAuMTg3MzMyLC0xLjIzMTcyNyAxLC0yIDEsMCA0LjAwMzE2MSwtMC45OTk5OTkgNCw0IDAsMiAtNiwxMiAtNiwxMiAwLDAgLTEuODg1ODY2LDEuOTAyMTI5IC0yLDMuNSAwLjcyNjA0NywwLjk5NDM2OSAwLjUsMiAwLjUsMyAtMSwxIC0zLC0yLjUgLTMsLTIuNSBoIC0yIGMgMCwwIC0wLjc4MTc4MSwxLjk5MTkyNiAtMi41LDMgLTEsMCAtMSwtMyAtMSwtMyIKICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS41O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgICA8Y2lyY2xlCiAgICAgICAgIHRyYW5zZm9ybT0icm90YXRlKDE4MCwyMS43NjQ0NzksMjIpIgogICAgICAgICBpZD0icGF0aDM0OTkiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGN4PSI4LjUiCiAgICAgICAgIGN5PSIyMy41IgogICAgICAgICByPSIwLjUiIC8+CiAgICAgIDxlbGxpcHNlCiAgICAgICAgIHRyYW5zZm9ybT0icm90YXRlKC0xNDkuOTk5OTksMjQuMDI0MTA0LDIwLjk4NjUwNSkiCiAgICAgICAgIGlkPSJwYXRoMzUwMSIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuNTAwMDAwNDg7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGN4PSIxNC41IgogICAgICAgICBjeT0iMTUuNSIKICAgICAgICAgcng9IjAuNSIKICAgICAgICAgcnk9IjEuNSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjYyIKICAgICAgICAgaWQ9InBhdGg4MDQ5IgogICAgICAgICBkPSJtIDcuMDI4OTU4NSw3IGMgLTEsMjAgNS40OTk5OTk1LDI3LjUgMTEuOTk5OTk5NSwyOC41IgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO2ZpbGwtb3BhY2l0eTowLjc1O2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgPC9nPgogIDwvZz4KICA8ZwogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMiIKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSMxIgogICAgIHN0eWxlPSJkaXNwbGF5OmlubGluZSIgLz4KPC9zdmc+Cg==');
+}
diff --git a/variants/Absorption/style.css b/variants/Absorption/style.css
new file mode 100644
index 0000000..2964ee1
--- /dev/null
+++ b/variants/Absorption/style.css
@@ -0,0 +1,2 @@
+@import "../../base_pieces.css"
+@import "pieces.css"
diff --git a/variants/Benedict/class.js b/variants/Benedict/class.js
index e08a79c..12ef3c8 100644
--- a/variants/Benedict/class.js
+++ b/variants/Benedict/class.js
@@ -7,14 +7,14 @@ export default class BenedictRules extends ChessRules {
     return {
       select: C.Options.select,
       check: [],
-      styles: (
-        C.Options.styles.filter(s => {
-          return (
-            ["balance", "cylinder", "dark", "doublemove", "progressive", "zen"]
-            .includes(s)
-          );
-        })
-      )
+      styles: [
+        "balance",
+        "cylinder",
+        "dark",
+        "doublemove",
+        "progressive",
+        "zen"
+      ]
     };
   }
 
-- 
2.44.0