From 0fd206138db721aa7263af391476fc5052736f17 Mon Sep 17 00:00:00 2001
From: Chris Fiege <chris@tinyhost.de>
Date: Sun, 23 Feb 2025 19:32:07 +0100
Subject: [PATCH] Add iBom

---
 led-board.kicad_pcb  |  108 +-
 led-board.kicad_prl  |    4 +-
 release/V1/ibom.html | 4669 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 4725 insertions(+), 56 deletions(-)
 create mode 100644 release/V1/ibom.html

diff --git a/led-board.kicad_pcb b/led-board.kicad_pcb
index 3df8386..8605254 100644
--- a/led-board.kicad_pcb
+++ b/led-board.kicad_pcb
@@ -1579,7 +1579,7 @@
 		)
 		(fp_line
 			(start -0.8 0.4)
-			(end -0.799999 -0.4)
+			(end -0.799998 -0.4)
 			(stroke
 				(width 0.1)
 				(type solid)
@@ -1588,7 +1588,7 @@
 			(uuid "569ed04e-2e34-4d8e-baf3-7ec491d8e5e7")
 		)
 		(fp_line
-			(start 0.799999 0.4)
+			(start 0.799998 0.4)
 			(end -0.8 0.4)
 			(stroke
 				(width 0.1)
@@ -1598,7 +1598,7 @@
 			(uuid "c9ced500-ab79-41dd-89f1-37d37a407145")
 		)
 		(fp_line
-			(start -0.799999 -0.4)
+			(start -0.799998 -0.4)
 			(end 0.8 -0.4)
 			(stroke
 				(width 0.1)
@@ -1609,7 +1609,7 @@
 		)
 		(fp_line
 			(start 0.8 -0.4)
-			(end 0.799999 0.4)
+			(end 0.799998 0.4)
 			(stroke
 				(width 0.1)
 				(type solid)
@@ -2537,7 +2537,7 @@
 		)
 		(fp_line
 			(start 0.8 -0.4)
-			(end 0.799999 0.4)
+			(end 0.799998 0.4)
 			(stroke
 				(width 0.1)
 				(type solid)
@@ -2546,7 +2546,7 @@
 			(uuid "c14c184c-e3fa-483b-b7f0-91d9274d38b3")
 		)
 		(fp_line
-			(start -0.799999 -0.4)
+			(start -0.799998 -0.4)
 			(end 0.8 -0.4)
 			(stroke
 				(width 0.1)
@@ -2556,7 +2556,7 @@
 			(uuid "5ca9e5dc-0ea4-428f-b4eb-39b57d34e63e")
 		)
 		(fp_line
-			(start 0.799999 0.4)
+			(start 0.799998 0.4)
 			(end -0.8 0.4)
 			(stroke
 				(width 0.1)
@@ -2567,7 +2567,7 @@
 		)
 		(fp_line
 			(start -0.8 0.4)
-			(end -0.799999 -0.4)
+			(end -0.799998 -0.4)
 			(stroke
 				(width 0.1)
 				(type solid)
@@ -2750,7 +2750,7 @@
 			(uuid "a6db5f8f-8372-4f84-a59b-f12e9beb2dfb")
 		)
 		(fp_line
-			(start 0.799999 0.4)
+			(start 0.799998 0.4)
 			(end -0.8 0.4)
 			(stroke
 				(width 0.1)
@@ -2761,7 +2761,7 @@
 		)
 		(fp_line
 			(start 0.8 -0.4)
-			(end 0.799999 0.4)
+			(end 0.799998 0.4)
 			(stroke
 				(width 0.1)
 				(type solid)
@@ -2771,7 +2771,7 @@
 		)
 		(fp_line
 			(start -0.8 0.4)
-			(end -0.799999 -0.4)
+			(end -0.799998 -0.4)
 			(stroke
 				(width 0.1)
 				(type solid)
@@ -2780,7 +2780,7 @@
 			(uuid "7a1979bc-880f-4370-8924-89ff172e20c8")
 		)
 		(fp_line
-			(start -0.799999 -0.4)
+			(start -0.799998 -0.4)
 			(end 0.8 -0.4)
 			(stroke
 				(width 0.1)
@@ -2848,7 +2848,7 @@
 			)
 		)
 		(property "Value" "SK6812"
-			(at -0.000001 4 160)
+			(at -0.000002 4 160)
 			(layer "F.Fab")
 			(hide yes)
 			(uuid "c69eb5c8-502a-45ed-b3f6-8aacd569877b")
@@ -4239,7 +4239,7 @@
 		)
 		(fp_line
 			(start -0.8 -0.4)
-			(end 0.799999 -0.4)
+			(end 0.799998 -0.4)
 			(stroke
 				(width 0.1)
 				(type solid)
@@ -4248,7 +4248,7 @@
 			(uuid "6cfc3878-42bf-4d75-a301-5a5b5e09317a")
 		)
 		(fp_line
-			(start 0.799999 -0.4)
+			(start 0.799998 -0.4)
 			(end 0.8 0.4)
 			(stroke
 				(width 0.1)
@@ -4258,7 +4258,7 @@
 			(uuid "e20d24aa-ed27-4181-85c8-a60633d9365e")
 		)
 		(fp_line
-			(start -0.799999 0.4)
+			(start -0.799998 0.4)
 			(end -0.8 -0.4)
 			(stroke
 				(width 0.1)
@@ -4269,7 +4269,7 @@
 		)
 		(fp_line
 			(start 0.8 0.4)
-			(end -0.799999 0.4)
+			(end -0.799998 0.4)
 			(stroke
 				(width 0.1)
 				(type solid)
@@ -5298,7 +5298,7 @@
 			(uuid "806a7e95-ea62-46c6-9816-bac36b09fb84")
 		)
 		(fp_line
-			(start 0.799999 -0.4)
+			(start 0.799998 -0.4)
 			(end 0.8 0.4)
 			(stroke
 				(width 0.1)
@@ -5309,7 +5309,7 @@
 		)
 		(fp_line
 			(start 0.8 0.4)
-			(end -0.799999 0.4)
+			(end -0.799998 0.4)
 			(stroke
 				(width 0.1)
 				(type solid)
@@ -5319,7 +5319,7 @@
 		)
 		(fp_line
 			(start -0.8 -0.4)
-			(end 0.799999 -0.4)
+			(end 0.799998 -0.4)
 			(stroke
 				(width 0.1)
 				(type solid)
@@ -5328,7 +5328,7 @@
 			(uuid "3ab27296-8894-411f-a8ce-ebd5e37fa197")
 		)
 		(fp_line
-			(start -0.799999 0.4)
+			(start -0.799998 0.4)
 			(end -0.8 -0.4)
 			(stroke
 				(width 0.1)
@@ -5513,7 +5513,7 @@
 		)
 		(fp_line
 			(start 0.8 0.399999)
-			(end -0.799999 0.4)
+			(end -0.799998 0.4)
 			(stroke
 				(width 0.1)
 				(type solid)
@@ -5522,7 +5522,7 @@
 			(uuid "ead4b99a-33e9-4518-9716-0eec4462d7e9")
 		)
 		(fp_line
-			(start -0.799999 0.4)
+			(start -0.799998 0.4)
 			(end -0.8 -0.399999)
 			(stroke
 				(width 0.1)
@@ -5532,7 +5532,7 @@
 			(uuid "8d8b6167-cfeb-46cd-a341-9de837667893")
 		)
 		(fp_line
-			(start 0.799999 -0.4)
+			(start 0.799998 -0.4)
 			(end 0.8 0.399999)
 			(stroke
 				(width 0.1)
@@ -5543,7 +5543,7 @@
 		)
 		(fp_line
 			(start -0.8 -0.399999)
-			(end 0.799999 -0.4)
+			(end 0.799998 -0.4)
 			(stroke
 				(width 0.1)
 				(type solid)
@@ -8865,7 +8865,7 @@
 			(uuid "c79b45dd-0fa0-4167-9423-a071c166bd7b")
 		)
 		(fp_line
-			(start -1.479999 0.73)
+			(start -1.479999 0.730001)
 			(end -1.480001 -0.73)
 			(stroke
 				(width 0.05)
@@ -8876,7 +8876,7 @@
 		)
 		(fp_line
 			(start -1.480001 -0.73)
-			(end 1.479999 -0.73)
+			(end 1.479999 -0.730001)
 			(stroke
 				(width 0.05)
 				(type solid)
@@ -8886,7 +8886,7 @@
 		)
 		(fp_line
 			(start 1.480001 0.73)
-			(end -1.479999 0.73)
+			(end -1.479999 0.730001)
 			(stroke
 				(width 0.05)
 				(type solid)
@@ -8895,7 +8895,7 @@
 			(uuid "baf90f19-78f3-4cd5-af07-293a70c6f1a8")
 		)
 		(fp_line
-			(start 1.479999 -0.73)
+			(start 1.479999 -0.730001)
 			(end 1.480001 0.73)
 			(stroke
 				(width 0.05)
@@ -8905,7 +8905,7 @@
 			(uuid "f92dce97-8976-4989-9283-f40112c55ff2")
 		)
 		(fp_line
-			(start -0.8 0.400001)
+			(start -0.8 0.400002)
 			(end -0.799999 -0.400001)
 			(stroke
 				(width 0.1)
@@ -8916,7 +8916,7 @@
 		)
 		(fp_line
 			(start -0.799999 -0.400001)
-			(end 0.8 -0.400001)
+			(end 0.8 -0.400002)
 			(stroke
 				(width 0.1)
 				(type solid)
@@ -8926,7 +8926,7 @@
 		)
 		(fp_line
 			(start 0.799999 0.400001)
-			(end -0.8 0.400001)
+			(end -0.8 0.400002)
 			(stroke
 				(width 0.1)
 				(type solid)
@@ -8935,7 +8935,7 @@
 			(uuid "3f728e18-b6f6-4348-a3f0-6a1fee80b571")
 		)
 		(fp_line
-			(start 0.8 -0.400001)
+			(start 0.8 -0.400002)
 			(end 0.799999 0.400001)
 			(stroke
 				(width 0.1)
@@ -10368,7 +10368,7 @@
 		(descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator")
 		(tags "capacitor")
 		(property "Reference" "C121"
-			(at 2.6 -1.6 360)
+			(at 2.6 -1.6 0)
 			(layer "F.SilkS")
 			(uuid "034c2f27-265a-4fa3-89c8-7a9930f34d15")
 			(effects
@@ -10379,7 +10379,7 @@
 			)
 		)
 		(property "Value" "100n"
-			(at 0 1.43 360)
+			(at 0 1.43 0)
 			(layer "F.Fab")
 			(hide yes)
 			(uuid "5cd1cc9a-c105-4918-9659-e86d714d7a4c")
@@ -10535,7 +10535,7 @@
 			(uuid "2173a13a-f7bc-4937-98ea-f6ec44a640e4")
 		)
 		(fp_text user "${REFERENCE}"
-			(at 0 0 360)
+			(at 0 0 0)
 			(layer "F.Fab")
 			(uuid "80237752-a8a8-41bf-b6c8-0f12bbc0656f")
 			(effects
@@ -12282,7 +12282,7 @@
 		(descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator")
 		(tags "capacitor")
 		(property "Reference" "C104"
-			(at 3.5 0 360)
+			(at 3.5 0 0)
 			(layer "F.SilkS")
 			(uuid "29b44aeb-c4e6-4e93-bd99-18187b57e5d0")
 			(effects
@@ -12293,7 +12293,7 @@
 			)
 		)
 		(property "Value" "100n"
-			(at 0 1.43 360)
+			(at 0 1.43 0)
 			(layer "F.Fab")
 			(hide yes)
 			(uuid "73f47b36-43aa-4c4f-91ab-6862ebf2bf77")
@@ -12449,7 +12449,7 @@
 			(uuid "23e4ddec-cf52-47c4-9e6e-03af3d9ccb28")
 		)
 		(fp_text user "${REFERENCE}"
-			(at 0 0 360)
+			(at 0 0 0)
 			(layer "F.Fab")
 			(uuid "328ff8b5-d4b2-496f-a3e8-13d2c20adf61")
 			(effects
@@ -12710,7 +12710,7 @@
 		(descr "5.0mm x 5.0mm Addressable RGB LED NeoPixel, https://cdn-shop.adafruit.com/product-files/1138/SK6812+LED+datasheet+.pdf")
 		(tags "LED RGB NeoPixel PLCC-4 5050")
 		(property "Reference" "D102"
-			(at -6.913993 1.676066 -10)
+			(at -6.913993 1.676067 -10)
 			(layer "F.SilkS")
 			(uuid "0b4cf840-07b8-4677-b30f-0e7de7ea0c13")
 			(effects
@@ -12861,7 +12861,7 @@
 		)
 		(fp_line
 			(start -3.449999 2.750002)
-			(end 3.45 2.75)
+			(end 3.45 2.750001)
 			(stroke
 				(width 0.05)
 				(type solid)
@@ -12870,7 +12870,7 @@
 			(uuid "4b9f9e44-f40c-4a37-951b-0bf1e28a0dcd")
 		)
 		(fp_line
-			(start -3.45 -2.75)
+			(start -3.45 -2.750001)
 			(end -3.449999 2.750002)
 			(stroke
 				(width 0.05)
@@ -12880,7 +12880,7 @@
 			(uuid "b25731c0-5433-4bc6-b12d-0cf9108c8ee7")
 		)
 		(fp_line
-			(start 3.45 2.75)
+			(start 3.45 2.750001)
 			(end 3.449999 -2.750002)
 			(stroke
 				(width 0.05)
@@ -12891,7 +12891,7 @@
 		)
 		(fp_line
 			(start 3.449999 -2.750002)
-			(end -3.45 -2.75)
+			(end -3.45 -2.750001)
 			(stroke
 				(width 0.05)
 				(type solid)
@@ -13037,7 +13037,7 @@
 			)
 		)
 		(property "Value" "SK6812"
-			(at 0.000001 4 -160)
+			(at 0.000002 4 -160)
 			(layer "F.Fab")
 			(hide yes)
 			(uuid "5f9e2c53-8bb6-4c6f-94a5-8467d8681b51")
@@ -13883,7 +13883,7 @@
 			)
 		)
 		(property "Value" "SK6812"
-			(at 0.000001 4 20)
+			(at 0.000002 4 20)
 			(layer "F.Fab")
 			(hide yes)
 			(uuid "b8706c4a-cfde-4dff-8cee-5dd872d43a41")
@@ -14315,7 +14315,7 @@
 			(uuid "b40ea883-b4fe-4a27-bcef-7f0a4ee07441")
 		)
 		(fp_line
-			(start -0.799999 -0.4)
+			(start -0.799998 -0.4)
 			(end 0.8 -0.4)
 			(stroke
 				(width 0.1)
@@ -14326,7 +14326,7 @@
 		)
 		(fp_line
 			(start -0.8 0.4)
-			(end -0.799999 -0.4)
+			(end -0.799998 -0.4)
 			(stroke
 				(width 0.1)
 				(type solid)
@@ -14336,7 +14336,7 @@
 		)
 		(fp_line
 			(start 0.8 -0.4)
-			(end 0.799999 0.4)
+			(end 0.799998 0.4)
 			(stroke
 				(width 0.1)
 				(type solid)
@@ -14345,7 +14345,7 @@
 			(uuid "7f75d323-1ee8-4288-bf8f-6e3c9302e2af")
 		)
 		(fp_line
-			(start 0.799999 0.4)
+			(start 0.799998 0.4)
 			(end -0.8 0.4)
 			(stroke
 				(width 0.1)
@@ -14402,7 +14402,7 @@
 		(descr "5.0mm x 5.0mm Addressable RGB LED NeoPixel, https://cdn-shop.adafruit.com/product-files/1138/SK6812+LED+datasheet+.pdf")
 		(tags "LED RGB NeoPixel PLCC-4 5050")
 		(property "Reference" "D108"
-			(at -6.690126 1.715286 -70)
+			(at -6.690126 1.715285 -70)
 			(layer "F.SilkS")
 			(uuid "aabe4ce0-7e9a-48b6-9d14-89637187c70e")
 			(effects
@@ -14413,7 +14413,7 @@
 			)
 		)
 		(property "Value" "SK6812"
-			(at 0.000001 4 -70)
+			(at 0.000002 4 -70)
 			(layer "F.Fab")
 			(hide yes)
 			(uuid "25f64b1f-93f7-4016-ae54-7c80abb6887b")
@@ -15045,7 +15045,7 @@
 			)
 		)
 		(property "Value" "SK6812"
-			(at -0.000001 4 70)
+			(at -0.000002 4 70)
 			(layer "F.Fab")
 			(hide yes)
 			(uuid "4476f91a-1e49-4e14-958d-7f3495b04d0b")
@@ -20886,7 +20886,7 @@
 			)
 		)
 		(property "Value" "SK6812"
-			(at 0.000001 4 110)
+			(at 0.000002 4 110)
 			(layer "F.Fab")
 			(hide yes)
 			(uuid "e58a3c9e-5cd5-4b96-badc-4c33800ba1d5")
diff --git a/led-board.kicad_prl b/led-board.kicad_prl
index 3d4536a..131968a 100644
--- a/led-board.kicad_prl
+++ b/led-board.kicad_prl
@@ -1,6 +1,6 @@
 {
   "board": {
-    "active_layer": 51,
+    "active_layer": 0,
     "active_layer_preset": "Back Assembly View",
     "auto_track_width": false,
     "hidden_netclasses": [],
@@ -66,7 +66,7 @@
       35,
       36
     ],
-    "visible_layers": "0015050_00000001",
+    "visible_layers": "0015050_00000000",
     "zone_display_mode": 0
   },
   "git": {
diff --git a/release/V1/ibom.html b/release/V1/ibom.html
new file mode 100644
index 0000000..bb436af
--- /dev/null
+++ b/release/V1/ibom.html
@@ -0,0 +1,4669 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Interactive BOM for KiCAD</title>
+  <style type="text/css">
+:root {
+  --pcb-edge-color: black;
+  --pad-color: #878787;
+  --pad-hole-color: #CCCCCC;
+  --pad-color-highlight: #D04040;
+  --pad-color-highlight-both: #D0D040;
+  --pad-color-highlight-marked: #44a344;
+  --pin1-outline-color: #ffb629;
+  --pin1-outline-color-highlight: #ffb629;
+  --pin1-outline-color-highlight-both: #fcbb39;
+  --pin1-outline-color-highlight-marked: #fdbe41;
+  --silkscreen-edge-color: #aa4;
+  --silkscreen-polygon-color: #4aa;
+  --silkscreen-text-color: #4aa;
+  --fabrication-edge-color: #907651;
+  --fabrication-polygon-color: #907651;
+  --fabrication-text-color: #a27c24;
+  --track-color: #def5f1;
+  --track-color-highlight: #D04040;
+  --zone-color: #def5f1;
+  --zone-color-highlight: #d0404080;
+}
+
+html,
+body {
+  margin: 0px;
+  height: 100%;
+  font-family: Verdana, sans-serif;
+}
+
+.dark.topmostdiv {
+  --pcb-edge-color: #eee;
+  --pad-color: #808080;
+  --pin1-outline-color: #ffa800;
+  --pin1-outline-color-highlight: #ccff00;
+  --track-color: #42524f;
+  --zone-color: #42524f;
+  background-color: #252c30;
+  color: #eee;
+}
+
+button {
+  background-color: #eee;
+  border: 1px solid #888;
+  color: black;
+  height: 44px;
+  width: 44px;
+  text-align: center;
+  text-decoration: none;
+  display: inline-block;
+  font-size: 14px;
+  font-weight: bolder;
+}
+
+.dark button {
+  /* This will be inverted */
+  background-color: #c3b7b5;
+}
+
+button.depressed {
+  background-color: #0a0;
+  color: white;
+}
+
+.dark button.depressed {
+  /* This will be inverted */
+  background-color: #b3b;
+}
+
+button:focus {
+  outline: 0;
+}
+
+button#tb-btn {
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.32 290.12h5.82M1.32 291.45h5.82' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 292.5v4.23M.26 292.63H8.2' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='1.35' y='295.73'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
+}
+
+button#lr-btn {
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.06 290.12H3.7m-2.64 1.33H3.7m-2.64 1.32H3.7m-2.64 1.3H3.7m-2.64 1.33H3.7' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 288.8v7.94m0-4.11h3.96' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='5.11' y='291.96'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
+}
+
+button#bom-btn {
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)' fill='none' stroke='%23000' stroke-width='.4'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' stroke-linejoin='round'/%3E%3Cpath d='M1.59 290.12h5.29M1.59 291.45h5.33M1.59 292.75h5.33M1.59 294.09h5.33M1.59 295.41h5.33'/%3E%3C/g%3E%3C/svg%3E");
+}
+
+button#bom-grouped-btn {
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m4 0h5m4 0h3M6.1 22h3m3.9 0h5m4 0h4m-16-8h4m4 0h4'/%3E%3Cpath stroke-linecap='null' d='M5 17.5h22M5 26.6h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
+}
+
+button#bom-ungrouped-btn {
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m-4 8h3m-3 8h4'/%3E%3Cpath stroke-linecap='null' d='M5 13.5h22m-22 8h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
+}
+
+button#bom-netlist-btn {
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' stroke='%23000' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-width='2' d='M6 26l6-6v-8m13.8-6.3l-6 6v8'/%3E%3Ccircle cx='11.8' cy='9.5' r='2.8' stroke-width='2'/%3E%3Ccircle cx='19.8' cy='22.8' r='2.8' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E");
+}
+
+button#copy {
+  background-image: url("data:image/svg+xml,%3Csvg height='48' viewBox='0 0 48 48' width='48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h48v48h-48z' fill='none'/%3E%3Cpath d='M32 2h-24c-2.21 0-4 1.79-4 4v28h4v-28h24v-4zm6 8h-22c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h22c2.21 0 4-1.79 4-4v-28c0-2.21-1.79-4-4-4zm0 32h-22v-28h22v28z'/%3E%3C/svg%3E");
+  background-position: 6px 6px;
+  background-repeat: no-repeat;
+  background-size: 26px 26px;
+  border-radius: 6px;
+  height: 40px;
+  width: 40px;
+  margin: 10px 5px;
+}
+
+button#copy:active {
+  box-shadow: inset 0px 0px 5px #6c6c6c;
+}
+
+textarea.clipboard-temp {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 2em;
+  height: 2em;
+  padding: 0;
+  border: None;
+  outline: None;
+  box-shadow: None;
+  background: transparent;
+}
+
+.left-most-button {
+  border-right: 0;
+  border-top-left-radius: 6px;
+  border-bottom-left-radius: 6px;
+}
+
+.middle-button {
+  border-right: 0;
+}
+
+.right-most-button {
+  border-top-right-radius: 6px;
+  border-bottom-right-radius: 6px;
+}
+
+.button-container {
+  font-size: 0;
+  margin: 0.4rem 0.4rem 0.4rem 0;
+}
+
+.dark .button-container {
+  filter: invert(1);
+}
+
+.button-container button {
+  background-size: 32px 32px;
+  background-position: 5px 5px;
+  background-repeat: no-repeat;
+}
+
+@media print {
+  .hideonprint {
+    display: none;
+  }
+}
+
+canvas {
+  cursor: crosshair;
+}
+
+canvas:active {
+  cursor: grabbing;
+}
+
+.fileinfo {
+  width: 100%;
+  max-width: 1000px;
+  border: none;
+  padding: 3px;
+}
+
+.fileinfo .title {
+  font-size: 20pt;
+  font-weight: bold;
+}
+
+.fileinfo td {
+  overflow: hidden;
+  white-space: nowrap;
+  max-width: 1px;
+  width: 50%;
+  text-overflow: ellipsis;
+}
+
+.bom {
+  border-collapse: collapse;
+  font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
+  font-size: 10pt;
+  table-layout: fixed;
+  width: 100%;
+  margin-top: 1px;
+  position: relative;
+}
+
+.bom th,
+.bom td {
+  border: 1px solid black;
+  padding: 5px;
+  word-wrap: break-word;
+  text-align: center;
+  position: relative;
+}
+
+.dark .bom th,
+.dark .bom td {
+  border: 1px solid #777;
+}
+
+.bom th {
+  background-color: #CCCCCC;
+  background-clip: padding-box;
+}
+
+.dark .bom th {
+  background-color: #3b4749;
+}
+
+.bom tr.highlighted:nth-child(n) {
+  background-color: #cfc;
+}
+
+.dark .bom tr.highlighted:nth-child(n) {
+  background-color: #226022;
+}
+
+.bom tr:nth-child(even) {
+  background-color: #f2f2f2;
+}
+
+.dark .bom tr:nth-child(even) {
+  background-color: #313b40;
+}
+
+.bom tr.checked {
+  color: #1cb53d;
+}
+
+.dark .bom tr.checked {
+  color: #2cce54;
+}
+
+.bom tr {
+  transition: background-color 0.2s;
+}
+
+.bom .numCol {
+  width: 30px;
+}
+
+.bom .value {
+  width: 15%;
+}
+
+.bom .quantity {
+  width: 65px;
+}
+
+.bom th .sortmark {
+  position: absolute;
+  right: 1px;
+  top: 1px;
+  margin-top: -5px;
+  border-width: 5px;
+  border-style: solid;
+  border-color: transparent transparent #221 transparent;
+  transform-origin: 50% 85%;
+  transition: opacity 0.2s, transform 0.4s;
+}
+
+.dark .bom th .sortmark {
+  filter: invert(1);
+}
+
+.bom th .sortmark.none {
+  opacity: 0;
+}
+
+.bom th .sortmark.desc {
+  transform: rotate(180deg);
+}
+
+.bom th:hover .sortmark.none {
+  opacity: 0.5;
+}
+
+.bom .bom-checkbox {
+  width: 30px;
+  position: relative;
+  user-select: none;
+  -moz-user-select: none;
+}
+
+.bom .bom-checkbox:before {
+  content: "";
+  position: absolute;
+  border-width: 15px;
+  border-style: solid;
+  border-color: #51829f transparent transparent transparent;
+  visibility: hidden;
+  top: -15px;
+}
+
+.bom .bom-checkbox:after {
+  content: "Double click to set/unset all";
+  position: absolute;
+  color: white;
+  top: -35px;
+  left: -26px;
+  background: #51829f;
+  padding: 5px 15px;
+  border-radius: 8px;
+  white-space: nowrap;
+  visibility: hidden;
+}
+
+.bom .bom-checkbox:hover:before,
+.bom .bom-checkbox:hover:after {
+  visibility: visible;
+  transition: visibility 0.2s linear 1s;
+}
+
+.split {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  overflow-y: auto;
+  overflow-x: hidden;
+  background-color: inherit;
+}
+
+.split.split-horizontal,
+.gutter.gutter-horizontal {
+  height: 100%;
+  float: left;
+}
+
+.gutter {
+  background-color: #ddd;
+  background-repeat: no-repeat;
+  background-position: 50%;
+  transition: background-color 0.3s;
+}
+
+.dark .gutter {
+  background-color: #777;
+}
+
+.gutter.gutter-horizontal {
+  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==');
+  cursor: ew-resize;
+  width: 5px;
+}
+
+.gutter.gutter-vertical {
+  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFAQMAAABo7865AAAABlBMVEVHcEzMzMzyAv2sAAAAAXRSTlMAQObYZgAAABBJREFUeF5jOAMEEAIEEFwAn3kMwcB6I2AAAAAASUVORK5CYII=');
+  cursor: ns-resize;
+  height: 5px;
+}
+
+.searchbox {
+  float: left;
+  height: 40px;
+  margin: 10px 5px;
+  padding: 12px 32px;
+  font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
+  font-size: 18px;
+  box-sizing: border-box;
+  border: 1px solid #888;
+  border-radius: 6px;
+  outline: none;
+  background-color: #eee;
+  transition: background-color 0.2s, border 0.2s;
+  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABNklEQVQ4T8XSMUvDQBQH8P/LElFa/AIZHcTBQSz0I/gFstTBRR2KUC4ldDxw7h0Bl3RRUATxi4iiODgoiLNrbQYp5J6cpJJqomkX33Z37/14d/dIa33MzDuYI4johOI4XhyNRteO46zNYjDzAxE1yBZprVeZ+QbAUhXEGJMA2Ox2u4+fQIa0mPmsCgCgJYQ4t7lfgF0opQYAdv9ABkKI/UnOFCClXKjX61cA1osQY8x9kiRNKeV7IWA3oyhaSdP0FkAtjxhj3hzH2RBCPOf3pzqYHCilfAAX+URm9oMguPzeWSGQvUcMYC8rOBJCHBRdqxTo9/vbRHRqi8bj8XKv1xvODbiuW2u32/bvf0SlDv4XYOY7z/Mavu+nM1+BmQ+NMc0wDF/LprP0DbTWW0T00ul0nn4b7Q87+X4Qmfiq2wAAAABJRU5ErkJggg==');
+  background-position: 10px 10px;
+  background-repeat: no-repeat;
+}
+
+.dark .searchbox {
+  background-color: #111;
+  color: #eee;
+}
+
+.searchbox::placeholder {
+  color: #ccc;
+}
+
+.dark .searchbox::placeholder {
+  color: #666;
+}
+
+.filter {
+  width: calc(60% - 64px);
+}
+
+.reflookup {
+  width: calc(40% - 10px);
+}
+
+input[type=text]:focus {
+  background-color: white;
+  border: 1px solid #333;
+}
+
+.dark input[type=text]:focus {
+  background-color: #333;
+  border: 1px solid #ccc;
+}
+
+mark.highlight {
+  background-color: #5050ff;
+  color: #fff;
+  padding: 2px;
+  border-radius: 6px;
+}
+
+.dark mark.highlight {
+  background-color: #76a6da;
+  color: #111;
+}
+
+.menubtn {
+  background-color: white;
+  border: none;
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 20 20'%3E%3Cpath fill='none' d='M0 0h20v20H0V0z'/%3E%3Cpath d='M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z'/%3E%3C/svg%3E%0A");
+  background-position: center;
+  background-repeat: no-repeat;
+}
+
+.statsbtn {
+  background-color: white;
+  border: none;
+  background-image: url("data:image/svg+xml,%3Csvg width='36' height='36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6h28v24H4V6zm0 8h28v8H4m9-16v24h10V5.8' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E");
+  background-position: center;
+  background-repeat: no-repeat;
+}
+
+.iobtn {
+  background-color: white;
+  border: none;
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='M3 33v-7l6.8-7h16.5l6.7 7v7H3zM3.2 26H33M21 9l5-5.9 5 6h-2.5V15h-5V9H21zm-4.9 0l-5 6-5-6h2.5V3h5v6h2.5z'/%3E%3Cpath fill='none' stroke='%23000' d='M6.1 29.5H10'/%3E%3C/svg%3E");
+  background-position: center;
+  background-repeat: no-repeat;
+}
+
+.visbtn {
+  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='none' stroke='%23333' d='M2.5 4.5h5v15h-5zM9.5 4.5h5v15h-5zM16.5 4.5h5v15h-5z'/%3E%3C/svg%3E");
+  background-position: center;
+  background-repeat: no-repeat;
+  padding: 15px;
+}
+
+#vismenu-content {
+  left: 0px;
+  font-family: Verdana, sans-serif;
+}
+
+.dark .statsbtn,
+.dark .savebtn,
+.dark .menubtn,
+.dark .iobtn,
+.dark .visbtn {
+  filter: invert(1);
+}
+
+.flexbox {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  width: 100%;
+}
+
+.savebtn {
+  background-color: #d6d6d6;
+  width: auto;
+  height: 30px;
+  flex-grow: 1;
+  margin: 5px;
+  border-radius: 4px;
+}
+
+.savebtn:active {
+  background-color: #0a0;
+  color: white;
+}
+
+.dark .savebtn:active {
+  /* This will be inverted */
+  background-color: #b3b;
+}
+
+.stats {
+  border-collapse: collapse;
+  font-size: 12pt;
+  table-layout: fixed;
+  width: 100%;
+  min-width: 450px;
+}
+
+.dark .stats td {
+  border: 1px solid #bbb;
+}
+
+.stats td {
+  border: 1px solid black;
+  padding: 5px;
+  word-wrap: break-word;
+  text-align: center;
+  position: relative;
+}
+
+#checkbox-stats div {
+  position: absolute;
+  left: 0;
+  top: 0;
+  height: 100%;
+  width: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+#checkbox-stats .bar {
+  background-color: rgba(28, 251, 0, 0.6);
+}
+
+.menu {
+  position: relative;
+  display: inline-block;
+  margin: 0.4rem 0.4rem 0.4rem 0;
+}
+
+.menu-content {
+  font-size: 12pt !important;
+  text-align: left !important;
+  font-weight: normal !important;
+  display: none;
+  position: absolute;
+  background-color: white;
+  right: 0;
+  min-width: 300px;
+  box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
+  z-index: 100;
+  padding: 8px;
+}
+
+.dark .menu-content {
+  background-color: #111;
+}
+
+.menu:hover .menu-content {
+  display: block;
+}
+
+.menu:hover .menubtn,
+.menu:hover .iobtn,
+.menu:hover .statsbtn {
+  background-color: #eee;
+}
+
+.menu-label {
+  display: inline-block;
+  padding: 8px;
+  border: 1px solid #ccc;
+  border-top: 0;
+  width: calc(100% - 18px);
+}
+
+.menu-label-top {
+  border-top: 1px solid #ccc;
+}
+
+.menu-textbox {
+  float: left;
+  height: 24px;
+  margin: 10px 5px;
+  padding: 5px 5px;
+  font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
+  font-size: 14px;
+  box-sizing: border-box;
+  border: 1px solid #888;
+  border-radius: 4px;
+  outline: none;
+  background-color: #eee;
+  transition: background-color 0.2s, border 0.2s;
+  width: calc(100% - 10px);
+}
+
+.menu-textbox.invalid,
+.dark .menu-textbox.invalid {
+  color: red;
+}
+
+.dark .menu-textbox {
+  background-color: #222;
+  color: #eee;
+}
+
+.radio-container {
+  margin: 4px;
+}
+
+.topmostdiv {
+  display: flex;
+  flex-direction: column;
+  width: 100%;
+  background-color: white;
+  transition: background-color 0.3s;
+}
+
+#top {
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: flex-end;
+  align-items: center;
+}
+
+#topdivider {
+  border-bottom: 2px solid black;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.dark #topdivider {
+  border-bottom: 2px solid #ccc;
+}
+
+#topdivider>div {
+  position: relative;
+}
+
+#toptoggle {
+  cursor: pointer;
+  user-select: none;
+  position: absolute;
+  padding: 0.1rem 0.3rem;
+  top: -0.4rem;
+  left: -1rem;
+  font-size: 1.4rem;
+  line-height: 60%;
+  border: 1px solid black;
+  border-radius: 1rem;
+  background-color: #fff;
+  z-index: 100;
+}
+
+.flipped {
+  transform: rotate(0.5turn);
+}
+
+.dark #toptoggle {
+  border: 1px solid #fff;
+  background-color: #222;
+}
+
+#fileinfodiv {
+  flex: 20rem 1 0;
+  overflow: auto;
+}
+
+#bomcontrols {
+  display: flex;
+  flex-direction: row-reverse;
+}
+
+#bomcontrols>* {
+  flex-shrink: 0;
+}
+
+#dbg {
+  display: block;
+}
+
+::-webkit-scrollbar {
+  width: 8px;
+}
+
+::-webkit-scrollbar-track {
+  background: #aaa;
+}
+
+::-webkit-scrollbar-thumb {
+  background: #666;
+  border-radius: 3px;
+}
+
+::-webkit-scrollbar-thumb:hover {
+  background: #555;
+}
+
+.slider {
+  -webkit-appearance: none;
+  width: 100%;
+  margin: 3px 0;
+  padding: 0;
+  outline: none;
+  opacity: 0.7;
+  -webkit-transition: .2s;
+  transition: opacity .2s;
+  border-radius: 3px;
+}
+
+.slider:hover {
+  opacity: 1;
+}
+
+.slider:focus {
+  outline: none;
+}
+
+.slider::-webkit-slider-runnable-track {
+  -webkit-appearance: none;
+  width: 100%;
+  height: 8px;
+  background: #d3d3d3;
+  border-radius: 3px;
+  border: none;
+}
+
+.slider::-webkit-slider-thumb {
+  -webkit-appearance: none;
+  width: 15px;
+  height: 15px;
+  border-radius: 50%;
+  background: #0a0;
+  cursor: pointer;
+  margin-top: -4px;
+}
+
+.dark .slider::-webkit-slider-thumb {
+  background: #3d3;
+}
+
+.slider::-moz-range-thumb {
+  width: 15px;
+  height: 15px;
+  border-radius: 50%;
+  background: #0a0;
+  cursor: pointer;
+}
+
+.slider::-moz-range-track {
+  height: 8px;
+  background: #d3d3d3;
+  border-radius: 3px;
+}
+
+.dark .slider::-moz-range-thumb {
+  background: #3d3;
+}
+
+.slider::-ms-track {
+  width: 100%;
+  height: 8px;
+  border-width: 3px 0;
+  background: transparent;
+  border-color: transparent;
+  color: transparent;
+  transition: opacity .2s;
+}
+
+.slider::-ms-fill-lower {
+  background: #d3d3d3;
+  border: none;
+  border-radius: 3px;
+}
+
+.slider::-ms-fill-upper {
+  background: #d3d3d3;
+  border: none;
+  border-radius: 3px;
+}
+
+.slider::-ms-thumb {
+  width: 15px;
+  height: 15px;
+  border-radius: 50%;
+  background: #0a0;
+  cursor: pointer;
+  margin: 0;
+}
+
+.shameless-plug {
+  font-size: 0.8em;
+  text-align: center;
+  display: block;
+}
+
+a {
+  color: #0278a4;
+}
+
+.dark a {
+  color: #00b9fd;
+}
+
+#frontcanvas,
+#backcanvas {
+  touch-action: none;
+}
+
+.placeholder {
+  border: 1px dashed #9f9fda !important;
+  background-color: #edf2f7 !important;
+}
+
+.dragging {
+  z-index: 999;
+}
+
+.dark .dragging>table>tbody>tr {
+  background-color: #252c30;
+}
+
+.dark .placeholder {
+  filter: invert(1);
+}
+
+.column-spacer {
+  top: 0;
+  left: 0;
+  width: calc(100% - 4px);
+  position: absolute;
+  cursor: pointer;
+  user-select: none;
+  height: 100%;
+}
+
+.column-width-handle {
+  top: 0;
+  right: 0;
+  width: 4px;
+  position: absolute;
+  cursor: col-resize;
+  user-select: none;
+  height: 100%;
+}
+
+.column-width-handle:hover {
+  background-color: #4f99bd;
+}
+
+.help-link {
+  border: 1px solid #0278a4;
+  padding-inline: 0.3rem;
+  border-radius: 3px;
+  cursor: pointer;
+}
+
+.dark .help-link {
+  border: 1px solid #00b9fd;
+}
+
+.bom-color {
+  width: 20%;
+}
+
+.color-column input {
+  width: 1.6rem;
+  height: 1rem;
+  border: 1px solid black;
+  cursor: pointer;
+  padding: 0;
+}
+
+/* removes default styling from input color element */
+::-webkit-color-swatch {
+  border: none;
+}
+
+::-webkit-color-swatch-wrapper {
+  padding: 0;
+}
+
+::-moz-color-swatch,
+::-moz-focus-inner {
+  border: none;
+}
+
+::-moz-focus-inner {
+  padding: 0;
+}
+/* #bomhead {
+    position: sticky;
+    top: 0px;
+    z-index: 1;
+} */
+  </style>
+  <script type="text/javascript" >
+///////////////////////////////////////////////
+/*
+  Split.js - v1.3.5
+  MIT License
+  https://github.com/nathancahill/Split.js
+*/
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Split=t()}(this,function(){"use strict";var e=window,t=e.document,n="addEventListener",i="removeEventListener",r="getBoundingClientRect",s=function(){return!1},o=e.attachEvent&&!e[n],a=["","-webkit-","-moz-","-o-"].filter(function(e){var n=t.createElement("div");return n.style.cssText="width:"+e+"calc(9px)",!!n.style.length}).shift()+"calc",l=function(e){return"string"==typeof e||e instanceof String?t.querySelector(e):e};return function(u,c){function z(e,t,n){var i=A(y,t,n);Object.keys(i).forEach(function(t){return e.style[t]=i[t]})}function h(e,t){var n=B(y,t);Object.keys(n).forEach(function(t){return e.style[t]=n[t]})}function f(e){var t=E[this.a],n=E[this.b],i=t.size+n.size;t.size=e/this.size*i,n.size=i-e/this.size*i,z(t.element,t.size,this.aGutterSize),z(n.element,n.size,this.bGutterSize)}function m(e){var t;this.dragging&&((t="touches"in e?e.touches[0][b]-this.start:e[b]-this.start)<=E[this.a].minSize+M+this.aGutterSize?t=E[this.a].minSize+this.aGutterSize:t>=this.size-(E[this.b].minSize+M+this.bGutterSize)&&(t=this.size-(E[this.b].minSize+this.bGutterSize)),f.call(this,t),c.onDrag&&c.onDrag())}function g(){var e=E[this.a].element,t=E[this.b].element;this.size=e[r]()[y]+t[r]()[y]+this.aGutterSize+this.bGutterSize,this.start=e[r]()[G]}function d(){var t=this,n=E[t.a].element,r=E[t.b].element;t.dragging&&c.onDragEnd&&c.onDragEnd(),t.dragging=!1,e[i]("mouseup",t.stop),e[i]("touchend",t.stop),e[i]("touchcancel",t.stop),t.parent[i]("mousemove",t.move),t.parent[i]("touchmove",t.move),delete t.stop,delete t.move,n[i]("selectstart",s),n[i]("dragstart",s),r[i]("selectstart",s),r[i]("dragstart",s),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",t.gutter.style.cursor="",t.parent.style.cursor=""}function S(t){var i=this,r=E[i.a].element,o=E[i.b].element;!i.dragging&&c.onDragStart&&c.onDragStart(),t.preventDefault(),i.dragging=!0,i.move=m.bind(i),i.stop=d.bind(i),e[n]("mouseup",i.stop),e[n]("touchend",i.stop),e[n]("touchcancel",i.stop),i.parent[n]("mousemove",i.move),i.parent[n]("touchmove",i.move),r[n]("selectstart",s),r[n]("dragstart",s),o[n]("selectstart",s),o[n]("dragstart",s),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",o.style.userSelect="none",o.style.webkitUserSelect="none",o.style.MozUserSelect="none",o.style.pointerEvents="none",i.gutter.style.cursor=j,i.parent.style.cursor=j,g.call(i)}function v(e){e.forEach(function(t,n){if(n>0){var i=F[n-1],r=E[i.a],s=E[i.b];r.size=e[n-1],s.size=t,z(r.element,r.size,i.aGutterSize),z(s.element,s.size,i.bGutterSize)}})}function p(){F.forEach(function(e){e.parent.removeChild(e.gutter),E[e.a].element.style[y]="",E[e.b].element.style[y]=""})}void 0===c&&(c={});var y,b,G,E,w=l(u[0]).parentNode,D=e.getComputedStyle(w).flexDirection,U=c.sizes||u.map(function(){return 100/u.length}),k=void 0!==c.minSize?c.minSize:100,x=Array.isArray(k)?k:u.map(function(){return k}),L=void 0!==c.gutterSize?c.gutterSize:10,M=void 0!==c.snapOffset?c.snapOffset:30,O=c.direction||"horizontal",j=c.cursor||("horizontal"===O?"ew-resize":"ns-resize"),C=c.gutter||function(e,n){var i=t.createElement("div");return i.className="gutter gutter-"+n,i},A=c.elementStyle||function(e,t,n){var i={};return"string"==typeof t||t instanceof String?i[e]=t:i[e]=o?t+"%":a+"("+t+"% - "+n+"px)",i},B=c.gutterStyle||function(e,t){return n={},n[e]=t+"px",n;var n};"horizontal"===O?(y="width","clientWidth",b="clientX",G="left","paddingLeft"):"vertical"===O&&(y="height","clientHeight",b="clientY",G="top","paddingTop");var F=[];return E=u.map(function(e,t){var i,s={element:l(e),size:U[t],minSize:x[t]};if(t>0&&(i={a:t-1,b:t,dragging:!1,isFirst:1===t,isLast:t===u.length-1,direction:O,parent:w},i.aGutterSize=L,i.bGutterSize=L,i.isFirst&&(i.aGutterSize=L/2),i.isLast&&(i.bGutterSize=L/2),"row-reverse"===D||"column-reverse"===D)){var a=i.a;i.a=i.b,i.b=a}if(!o&&t>0){var c=C(t,O);h(c,L),c[n]("mousedown",S.bind(i)),c[n]("touchstart",S.bind(i)),w.insertBefore(c,s.element),i.gutter=c}0===t||t===u.length-1?z(s.element,s.size,L/2):z(s.element,s.size,L);var f=s.element[r]()[y];return f<s.minSize&&(s.minSize=f),t>0&&F.push(i),s}),o?{setSizes:v,destroy:p}:{setSizes:v,getSizes:function(){return E.map(function(e){return e.size})},collapse:function(e){if(e===F.length){var t=F[e-1];g.call(t),o||f.call(t,t.size-t.bGutterSize)}else{var n=F[e];g.call(n),o||f.call(n,n.aGutterSize)}},destroy:p}}});
+
+///////////////////////////////////////////////
+
+///////////////////////////////////////////////
+// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>
+// This work is free. You can redistribute it and/or modify it
+// under the terms of the WTFPL, Version 2
+// For more information see LICENSE.txt or http://www.wtfpl.net/
+//
+// For more information, the home page:
+// http://pieroxy.net/blog/pages/lz-string/testing.html
+//
+// LZ-based compression algorithm, version 1.4.4
+var LZString=function(){var o=String.fromCharCode,i={};var n={decompressFromBase64:function(o){return null==o?"":""==o?null:n._decompress(o.length,32,function(n){return function(o,n){if(!i[o]){i[o]={};for(var t=0;t<o.length;t++)i[o][o.charAt(t)]=t}return i[o][n]}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o.charAt(n))})},_decompress:function(i,n,t){var r,e,a,s,p,u,l,f=[],c=4,d=4,h=3,v="",g=[],m={val:t(0),position:n,index:1};for(r=0;r<3;r+=1)f[r]=r;for(a=0,p=Math.pow(2,2),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 2:return""}for(f[3]=l,e=l,g.push(l);;){if(m.index>i)return"";for(a=0,p=Math.pow(2,h),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(l=a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 2:return g.join("")}if(0==c&&(c=Math.pow(2,h),h++),f[l])v=f[l];else{if(l!==d)return null;v=e+e.charAt(0)}g.push(v),f[d++]=e+v.charAt(0),e=v,0==--c&&(c=Math.pow(2,h),h++)}}};return n}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString});
+///////////////////////////////////////////////
+
+///////////////////////////////////////////////
+/*!
+ * PEP v0.4.3 | https://github.com/jquery/PEP
+ * Copyright jQuery Foundation and other contributors | http://jquery.org/license
+ */
+!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.PointerEventsPolyfill=b()}(this,function(){"use strict";function a(a,b){b=b||Object.create(null);var c=document.createEvent("Event");c.initEvent(a,b.bubbles||!1,b.cancelable||!1);
+for(var d,e=2;e<m.length;e++)d=m[e],c[d]=b[d]||n[e];c.buttons=b.buttons||0;
+var f=0;return f=b.pressure&&c.buttons?b.pressure:c.buttons?.5:0,c.x=c.clientX,c.y=c.clientY,c.pointerId=b.pointerId||0,c.width=b.width||0,c.height=b.height||0,c.pressure=f,c.tiltX=b.tiltX||0,c.tiltY=b.tiltY||0,c.twist=b.twist||0,c.tangentialPressure=b.tangentialPressure||0,c.pointerType=b.pointerType||"",c.hwTimestamp=b.hwTimestamp||0,c.isPrimary=b.isPrimary||!1,c}function b(){this.array=[],this.size=0}function c(a,b,c,d){this.addCallback=a.bind(d),this.removeCallback=b.bind(d),this.changedCallback=c.bind(d),A&&(this.observer=new A(this.mutationWatcher.bind(this)))}function d(a){return"body /shadow-deep/ "+e(a)}function e(a){return'[touch-action="'+a+'"]'}function f(a){return"{ -ms-touch-action: "+a+"; touch-action: "+a+"; }"}function g(){if(F){D.forEach(function(a){String(a)===a?(E+=e(a)+f(a)+"\n",G&&(E+=d(a)+f(a)+"\n")):(E+=a.selectors.map(e)+f(a.rule)+"\n",G&&(E+=a.selectors.map(d)+f(a.rule)+"\n"))});var a=document.createElement("style");a.textContent=E,document.head.appendChild(a)}}function h(){if(!window.PointerEvent){if(window.PointerEvent=a,window.navigator.msPointerEnabled){var b=window.navigator.msMaxTouchPoints;Object.defineProperty(window.navigator,"maxTouchPoints",{value:b,enumerable:!0}),u.registerSource("ms",_)}else Object.defineProperty(window.navigator,"maxTouchPoints",{value:0,enumerable:!0}),u.registerSource("mouse",N),void 0!==window.ontouchstart&&u.registerSource("touch",V);u.register(document)}}function i(a){if(!u.pointermap.has(a)){var b=new Error("InvalidPointerId");throw b.name="InvalidPointerId",b}}function j(a){for(var b=a.parentNode;b&&b!==a.ownerDocument;)b=b.parentNode;if(!b){var c=new Error("InvalidStateError");throw c.name="InvalidStateError",c}}function k(a){var b=u.pointermap.get(a);return 0!==b.buttons}function l(){window.Element&&!Element.prototype.setPointerCapture&&Object.defineProperties(Element.prototype,{setPointerCapture:{value:W},releasePointerCapture:{value:X},hasPointerCapture:{value:Y}})}
+var m=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","pageX","pageY"],n=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0],o=window.Map&&window.Map.prototype.forEach,p=o?Map:b;b.prototype={set:function(a,b){return void 0===b?this["delete"](a):(this.has(a)||this.size++,void(this.array[a]=b))},has:function(a){return void 0!==this.array[a]},"delete":function(a){this.has(a)&&(delete this.array[a],this.size--)},get:function(a){return this.array[a]},clear:function(){this.array.length=0,this.size=0},forEach:function(a,b){return this.array.forEach(function(c,d){a.call(b,c,d,this)},this)}};var q=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","buttons","pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","type","target","currentTarget","which","pageX","pageY","timeStamp"],r=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0,0,0,0,0,0,"",0,!1,"",null,null,0,0,0,0],s={pointerover:1,pointerout:1,pointerenter:1,pointerleave:1},t="undefined"!=typeof SVGElementInstance,u={pointermap:new p,eventMap:Object.create(null),captureInfo:Object.create(null),eventSources:Object.create(null),eventSourceList:[],registerSource:function(a,b){var c=b,d=c.events;d&&(d.forEach(function(a){c[a]&&(this.eventMap[a]=c[a].bind(c))},this),this.eventSources[a]=c,this.eventSourceList.push(c))},register:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
+b.register.call(b,a)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
+b.unregister.call(b,a)},contains:function(a,b){try{return a.contains(b)}catch(c){return!1}},down:function(a){a.bubbles=!0,this.fireEvent("pointerdown",a)},move:function(a){a.bubbles=!0,this.fireEvent("pointermove",a)},up:function(a){a.bubbles=!0,this.fireEvent("pointerup",a)},enter:function(a){a.bubbles=!1,this.fireEvent("pointerenter",a)},leave:function(a){a.bubbles=!1,this.fireEvent("pointerleave",a)},over:function(a){a.bubbles=!0,this.fireEvent("pointerover",a)},out:function(a){a.bubbles=!0,this.fireEvent("pointerout",a)},cancel:function(a){a.bubbles=!0,this.fireEvent("pointercancel",a)},leaveOut:function(a){this.out(a),this.propagate(a,this.leave,!1)},enterOver:function(a){this.over(a),this.propagate(a,this.enter,!0)},eventHandler:function(a){if(!a._handledByPE){var b=a.type,c=this.eventMap&&this.eventMap[b];c&&c(a),a._handledByPE=!0}},listen:function(a,b){b.forEach(function(b){this.addEvent(a,b)},this)},unlisten:function(a,b){b.forEach(function(b){this.removeEvent(a,b)},this)},addEvent:function(a,b){a.addEventListener(b,this.boundHandler)},removeEvent:function(a,b){a.removeEventListener(b,this.boundHandler)},makeEvent:function(b,c){this.captureInfo[c.pointerId]&&(c.relatedTarget=null);var d=new a(b,c);return c.preventDefault&&(d.preventDefault=c.preventDefault),d._target=d._target||c.target,d},fireEvent:function(a,b){var c=this.makeEvent(a,b);return this.dispatchEvent(c)},cloneEvent:function(a){for(var b,c=Object.create(null),d=0;d<q.length;d++)b=q[d],c[b]=a[b]||r[d],!t||"target"!==b&&"relatedTarget"!==b||c[b]instanceof SVGElementInstance&&(c[b]=c[b].correspondingUseElement);return a.preventDefault&&(c.preventDefault=function(){a.preventDefault()}),c},getTarget:function(a){var b=this.captureInfo[a.pointerId];return b?a._target!==b&&a.type in s?void 0:b:a._target},propagate:function(a,b,c){for(var d=a.target,e=[];d!==document&&!d.contains(a.relatedTarget);) if(e.push(d),d=d.parentNode,!d)return;c&&e.reverse(),e.forEach(function(c){a.target=c,b.call(this,a)},this)},setCapture:function(b,c,d){this.captureInfo[b]&&this.releaseCapture(b,d),this.captureInfo[b]=c,this.implicitRelease=this.releaseCapture.bind(this,b,d),document.addEventListener("pointerup",this.implicitRelease),document.addEventListener("pointercancel",this.implicitRelease);var e=new a("gotpointercapture");e.pointerId=b,e._target=c,d||this.asyncDispatchEvent(e)},releaseCapture:function(b,c){var d=this.captureInfo[b];if(d){this.captureInfo[b]=void 0,document.removeEventListener("pointerup",this.implicitRelease),document.removeEventListener("pointercancel",this.implicitRelease);var e=new a("lostpointercapture");e.pointerId=b,e._target=d,c||this.asyncDispatchEvent(e)}},dispatchEvent:/*scope.external.dispatchEvent || */function(a){var b=this.getTarget(a);if(b)return b.dispatchEvent(a)},asyncDispatchEvent:function(a){requestAnimationFrame(this.dispatchEvent.bind(this,a))}};u.boundHandler=u.eventHandler.bind(u);var v={shadow:function(a){if(a)return a.shadowRoot||a.webkitShadowRoot},canTarget:function(a){return a&&Boolean(a.elementFromPoint)},targetingShadow:function(a){var b=this.shadow(a);if(this.canTarget(b))return b},olderShadow:function(a){var b=a.olderShadowRoot;if(!b){var c=a.querySelector("shadow");c&&(b=c.olderShadowRoot)}return b},allShadows:function(a){for(var b=[],c=this.shadow(a);c;)b.push(c),c=this.olderShadow(c);return b},searchRoot:function(a,b,c){if(a){var d,e,f=a.elementFromPoint(b,c);for(e=this.targetingShadow(f);e;){if(d=e.elementFromPoint(b,c)){var g=this.targetingShadow(d);return this.searchRoot(g,b,c)||d} e=this.olderShadow(e)} return f}},owner:function(a){
+for(var b=a;b.parentNode;)b=b.parentNode;
+return b.nodeType!==Node.DOCUMENT_NODE&&b.nodeType!==Node.DOCUMENT_FRAGMENT_NODE&&(b=document),b},findTarget:function(a){var b=a.clientX,c=a.clientY,d=this.owner(a.target);
+return d.elementFromPoint(b,c)||(d=document),this.searchRoot(d,b,c)}},w=Array.prototype.forEach.call.bind(Array.prototype.forEach),x=Array.prototype.map.call.bind(Array.prototype.map),y=Array.prototype.slice.call.bind(Array.prototype.slice),z=Array.prototype.filter.call.bind(Array.prototype.filter),A=window.MutationObserver||window.WebKitMutationObserver,B="[touch-action]",C={subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["touch-action"]};c.prototype={watchSubtree:function(a){
+//
+this.observer&&v.canTarget(a)&&this.observer.observe(a,C)},enableOnSubtree:function(a){this.watchSubtree(a),a===document&&"complete"!==document.readyState?this.installOnLoad():this.installNewSubtree(a)},installNewSubtree:function(a){w(this.findElements(a),this.addElement,this)},findElements:function(a){return a.querySelectorAll?a.querySelectorAll(B):[]},removeElement:function(a){this.removeCallback(a)},addElement:function(a){this.addCallback(a)},elementChanged:function(a,b){this.changedCallback(a,b)},concatLists:function(a,b){return a.concat(y(b))},
+installOnLoad:function(){document.addEventListener("readystatechange",function(){"complete"===document.readyState&&this.installNewSubtree(document)}.bind(this))},isElement:function(a){return a.nodeType===Node.ELEMENT_NODE},flattenMutationTree:function(a){
+var b=x(a,this.findElements,this);
+return b.push(z(a,this.isElement)),b.reduce(this.concatLists,[])},mutationWatcher:function(a){a.forEach(this.mutationHandler,this)},mutationHandler:function(a){if("childList"===a.type){var b=this.flattenMutationTree(a.addedNodes);b.forEach(this.addElement,this);var c=this.flattenMutationTree(a.removedNodes);c.forEach(this.removeElement,this)}else"attributes"===a.type&&this.elementChanged(a.target,a.oldValue)}};var D=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]}],E="",F=window.PointerEvent||window.MSPointerEvent,G=!window.ShadowDOMPolyfill&&document.head.createShadowRoot,H=u.pointermap,I=25,J=[1,4,2,8,16],K=!1;try{K=1===new MouseEvent("test",{buttons:1}).buttons}catch(L){}
+var M,N={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup","mouseover","mouseout"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},lastTouches:[],
+isEventSimulatedFromTouch:function(a){for(var b,c=this.lastTouches,d=a.clientX,e=a.clientY,f=0,g=c.length;f<g&&(b=c[f]);f++){
+var h=Math.abs(d-b.x),i=Math.abs(e-b.y);if(h<=I&&i<=I)return!0}},prepareEvent:function(a){var b=u.cloneEvent(a),c=b.preventDefault;return b.preventDefault=function(){a.preventDefault(),c()},b.pointerId=this.POINTER_ID,b.isPrimary=!0,b.pointerType=this.POINTER_TYPE,b},prepareButtonsForMove:function(a,b){var c=H.get(this.POINTER_ID);
+0!==b.which&&c?a.buttons=c.buttons:a.buttons=0,b.buttons=a.buttons},mousedown:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);K||(c.buttons=J[c.button],b&&(c.buttons|=b.buttons),a.buttons=c.buttons),H.set(this.POINTER_ID,a),b&&0!==b.buttons?u.move(c):u.down(c)}},mousemove:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.move(b)}},mouseup:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);if(!K){var d=J[c.button];
+c.buttons=b?b.buttons&~d:0,a.buttons=c.buttons}H.set(this.POINTER_ID,a),
+c.buttons&=~J[c.button],0===c.buttons?u.up(c):u.move(c)}},mouseover:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.enterOver(b)}},mouseout:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,u.leaveOut(b)}},cancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.deactivateMouse()},deactivateMouse:function(){H["delete"](this.POINTER_ID)}},O=u.captureInfo,P=v.findTarget.bind(v),Q=v.allShadows.bind(v),R=u.pointermap,S=2500,T=200,U="touch-action",V={events:["touchstart","touchmove","touchend","touchcancel"],register:function(a){M.enableOnSubtree(a)},unregister:function(){},elementAdded:function(a){var b=a.getAttribute(U),c=this.touchActionToScrollType(b);c&&(a._scrollType=c,u.listen(a,this.events),
+Q(a).forEach(function(a){a._scrollType=c,u.listen(a,this.events)},this))},elementRemoved:function(a){a._scrollType=void 0,u.unlisten(a,this.events),
+Q(a).forEach(function(a){a._scrollType=void 0,u.unlisten(a,this.events)},this)},elementChanged:function(a,b){var c=a.getAttribute(U),d=this.touchActionToScrollType(c),e=this.touchActionToScrollType(b);
+d&&e?(a._scrollType=d,Q(a).forEach(function(a){a._scrollType=d},this)):e?this.elementRemoved(a):d&&this.elementAdded(a)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y",SCROLLER:/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/},touchActionToScrollType:function(a){var b=a,c=this.scrollTypes;return"none"===b?"none":b===c.XSCROLLER?"X":b===c.YSCROLLER?"Y":c.SCROLLER.exec(b)?"XY":void 0},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(a){return this.firstTouch===a.identifier},setPrimaryTouch:function(a){
+(0===R.size||1===R.size&&R.has(1))&&(this.firstTouch=a.identifier,this.firstXY={X:a.clientX,Y:a.clientY},this.scrolling=!1,this.cancelResetClickCount())},removePrimaryPointer:function(a){a.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var a=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(a,T)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},typeToButtons:function(a){var b=0;return"touchstart"!==a&&"touchmove"!==a||(b=1),b},touchToPointer:function(a){var b=this.currentTouchEvent,c=u.cloneEvent(a),d=c.pointerId=a.identifier+2;c.target=O[d]||P(c),c.bubbles=!0,c.cancelable=!0,c.detail=this.clickCount,c.button=0,c.buttons=this.typeToButtons(b.type),c.width=2*(a.radiusX||a.webkitRadiusX||0),c.height=2*(a.radiusY||a.webkitRadiusY||0),c.pressure=a.force||a.webkitForce||.5,c.isPrimary=this.isPrimaryTouch(a),c.pointerType=this.POINTER_TYPE,
+c.altKey=b.altKey,c.ctrlKey=b.ctrlKey,c.metaKey=b.metaKey,c.shiftKey=b.shiftKey;
+var e=this;return c.preventDefault=function(){e.scrolling=!1,e.firstXY=null,b.preventDefault()},c},processTouches:function(a,b){var c=a.changedTouches;this.currentTouchEvent=a;for(var d,e=0;e<c.length;e++)d=c[e],b.call(this,this.touchToPointer(d))},
+shouldScroll:function(a){if(this.firstXY){var b,c=a.currentTarget._scrollType;if("none"===c)
+b=!1;else if("XY"===c)
+b=!0;else{var d=a.changedTouches[0],e=c,f="Y"===c?"X":"Y",g=Math.abs(d["client"+e]-this.firstXY[e]),h=Math.abs(d["client"+f]-this.firstXY[f]);
+b=g>=h}return this.firstXY=null,b}},findTouch:function(a,b){for(var c,d=0,e=a.length;d<e&&(c=a[d]);d++)if(c.identifier===b)return!0},
+vacuumTouches:function(a){var b=a.touches;
+if(R.size>=b.length){var c=[];R.forEach(function(a,d){
+if(1!==d&&!this.findTouch(b,d-2)){var e=a.out;c.push(e)}},this),c.forEach(this.cancelOut,this)}},touchstart:function(a){this.vacuumTouches(a),this.setPrimaryTouch(a.changedTouches[0]),this.dedupSynthMouse(a),this.scrolling||(this.clickCount++,this.processTouches(a,this.overDown))},overDown:function(a){R.set(a.pointerId,{target:a.target,out:a,outTarget:a.target}),u.enterOver(a),u.down(a)},touchmove:function(a){this.scrolling||(this.shouldScroll(a)?(this.scrolling=!0,this.touchcancel(a)):(a.preventDefault(),this.processTouches(a,this.moveOverOut)))},moveOverOut:function(a){var b=a,c=R.get(b.pointerId);
+if(c){var d=c.out,e=c.outTarget;u.move(b),d&&e!==b.target&&(d.relatedTarget=b.target,b.relatedTarget=e,
+d.target=e,b.target?(u.leaveOut(d),u.enterOver(b)):(
+b.target=e,b.relatedTarget=null,this.cancelOut(b))),c.out=b,c.outTarget=b.target}},touchend:function(a){this.dedupSynthMouse(a),this.processTouches(a,this.upOut)},upOut:function(a){this.scrolling||(u.up(a),u.leaveOut(a)),this.cleanUpPointer(a)},touchcancel:function(a){this.processTouches(a,this.cancelOut)},cancelOut:function(a){u.cancel(a),u.leaveOut(a),this.cleanUpPointer(a)},cleanUpPointer:function(a){R["delete"](a.pointerId),this.removePrimaryPointer(a)},
+dedupSynthMouse:function(a){var b=N.lastTouches,c=a.changedTouches[0];
+if(this.isPrimaryTouch(c)){
+var d={x:c.clientX,y:c.clientY};b.push(d);var e=function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)}.bind(null,b,d);setTimeout(e,S)}}};M=new c(V.elementAdded,V.elementRemoved,V.elementChanged,V);var W,X,Y,Z=u.pointermap,$=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,_={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSGotPointerCapture","MSLostPointerCapture"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(a){var b=a;return $&&(b=u.cloneEvent(a),b.pointerType=this.POINTER_TYPES[a.pointerType]),b},cleanup:function(a){Z["delete"](a)},MSPointerDown:function(a){Z.set(a.pointerId,a);var b=this.prepareEvent(a);u.down(b)},MSPointerMove:function(a){var b=this.prepareEvent(a);u.move(b)},MSPointerUp:function(a){var b=this.prepareEvent(a);u.up(b),this.cleanup(a.pointerId)},MSPointerOut:function(a){var b=this.prepareEvent(a);u.leaveOut(b)},MSPointerOver:function(a){var b=this.prepareEvent(a);u.enterOver(b)},MSPointerCancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.cleanup(a.pointerId)},MSLostPointerCapture:function(a){var b=u.makeEvent("lostpointercapture",a);u.dispatchEvent(b)},MSGotPointerCapture:function(a){var b=u.makeEvent("gotpointercapture",a);u.dispatchEvent(b)}},aa=window.navigator;aa.msPointerEnabled?(W=function(a){i(a),j(this),k(a)&&(u.setCapture(a,this,!0),this.msSetPointerCapture(a))},X=function(a){i(a),u.releaseCapture(a,!0),this.msReleasePointerCapture(a)}):(W=function(a){i(a),j(this),k(a)&&u.setCapture(a,this)},X=function(a){i(a),u.releaseCapture(a)}),Y=function(a){return!!u.captureInfo[a]},g(),h(),l();var ba={dispatcher:u,Installer:c,PointerEvent:a,PointerMap:p,targetFinding:v};return ba});
+
+///////////////////////////////////////////////
+
+///////////////////////////////////////////////
+var config = {"dark_mode": false, "show_pads": true, "show_fabrication": false, "show_silkscreen": true, "highlight_pin1": "none", "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "offset_back_rotation": false, "kicad_text_formatting": true, "fields": ["Value", "Footprint", "MPN", "Manufacturer"]}
+///////////////////////////////////////////////
+
+///////////////////////////////////////////////
+var pcbdata = JSON.parse(LZString.decompressFromBase64("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86/n4s4UEW/Lmifi+9zX9VeC1/sbm2fi19BngWevA0k7lNNfvAyNR1erl9vnppeR555Hipep1/Bn3SALqyPGvTuQV/kHmGfnV5uX5peyN+hX7aubO8HVZopkuk03kjfl153H2zehq81sf2ennVIiKtftJ/M3rTfV+9RXyVegN+lX4Tf8O+qzhJfYgMsNB3CpN5SXiqfoN/zX2DepG/g3xTfeF6Q3t4ICN8HBxfuzN7OnhhQx16C3kSf9N+gX7kv3Vd37m50aN/OX41fQV+5Umye5l9I3ydfit6bHn0rzTeDMCpqR19q3y6f6t72bljfEJ+pwBawOuzLkAFf2t5c3+NeFl5un6JeyZ+5bs+uP56p9L+fiNENBm4fAF5HZkBfQ0mrH/ovrF4Q3pTe6R4ywCN7WpYQXrpUkF+1b2ZflF4lngvOKF903uKe+19LbnbexFcm9/betM6q77Wjjt8y7sJeDW/O3yFecp+oXtdesV6m3rUvZt7TX4jueGgxUojJd15G79meP+86n49f3N8QntDqgJ4CROPO+557roJfuc82n6YfTt//XrreYq/uX6HeeV+7PePPjpAq75WfUp4fb1Hedh/R31ReAN5qH1deJt/XX2JeNIGKn+WnsGag382eYN+V7+gf2y95nzbe0t+pX5CEhx8smXkBI1+43vIuAt8w31zeQO6tXq7f7+50Hztj8lVXHnLeDy5F3xjf+N+Y38jemp80SfVexrUNX12fFd74311fe19w38SElx/77srKHV/l33Rudd6XX0beWu8E3vEeHx/C3syuv59lThRnmd7zXpXvgK6tn6Wui16Tb1Xfi09guI1e555NXrXORt6Y3wrfsd4M36ChlJBCLRHeA9+q3ntvrl503j7fdp8a3s9Px27W+V2elF5dX8Oe3V5630tvz06XMf3e/V6D3/Lf718RnnWfV26WXu3fZV4YXvRfqZ5en31OY2di3nNe1V6qntnePd/nTlieDl/D3lYfbe9LTS+m1p783s6fliGL3ynfxd5w3nPfWO617w6ebOFjnx1feN8t3kPe5p593p1mwyV+uP8j9NCDnjtf9B7n3gZexd5+XnHe6q9a8EafFnts72ffg9+V3hNfxt4r3lye4M8envFfvh8LnY/hs15YbmTeW9/d3zJfsS7qnrnel9/jaw1e3PVmgVwXfV833qIAz97132BuG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"))
+///////////////////////////////////////////////
+
+///////////////////////////////////////////////
+/* Utility functions */
+
+var storagePrefix = 'KiCad_HTML_BOM__' + pcbdata.metadata.title + '__' +
+  pcbdata.metadata.revision + '__#';
+var storage;
+
+function initStorage(key) {
+  try {
+    window.localStorage.getItem("blank");
+    storage = window.localStorage;
+  } catch (e) {
+    // localStorage not available
+  }
+  if (!storage) {
+    try {
+      window.sessionStorage.getItem("blank");
+      storage = window.sessionStorage;
+    } catch (e) {
+      // sessionStorage also not available
+    }
+  }
+}
+
+function readStorage(key) {
+  if (storage) {
+    return storage.getItem(storagePrefix + key);
+  } else {
+    return null;
+  }
+}
+
+function writeStorage(key, value) {
+  if (storage) {
+    storage.setItem(storagePrefix + key, value);
+  }
+}
+
+function fancyDblClickHandler(el, onsingle, ondouble) {
+  return function () {
+    if (el.getAttribute("data-dblclick") == null) {
+      el.setAttribute("data-dblclick", 1);
+      setTimeout(function () {
+        if (el.getAttribute("data-dblclick") == 1) {
+          onsingle();
+        }
+        el.removeAttribute("data-dblclick");
+      }, 200);
+    } else {
+      el.removeAttribute("data-dblclick");
+      ondouble();
+    }
+  }
+}
+
+function smoothScrollToRow(rowid) {
+  document.getElementById(rowid).scrollIntoView({
+    behavior: "smooth",
+    block: "center",
+    inline: "nearest"
+  });
+}
+
+function focusInputField(input) {
+  input.scrollIntoView(false);
+  input.focus();
+  input.select();
+}
+
+function saveBomTable(output) {
+  var text = '';
+  for (var node of bomhead.childNodes[0].childNodes) {
+    if (node.firstChild) {
+      text += (output == 'csv' ? `"${node.firstChild.nodeValue}"` : node.firstChild.nodeValue);
+    }
+    if (node != bomhead.childNodes[0].lastChild) {
+      text += (output == 'csv' ? ',' : '\t');
+    }
+  }
+  text += '\n';
+  for (var row of bombody.childNodes) {
+    for (var cell of row.childNodes) {
+      let val = '';
+      for (var node of cell.childNodes) {
+        if (node.nodeName == "INPUT") {
+          if (node.checked) {
+            val += '✓';
+          }
+        } else if ((node.nodeName == "MARK") || (node.nodeName == "A")) {
+          val += node.firstChild.nodeValue;
+        } else {
+          val += node.nodeValue;
+        }
+      }
+      if (output == 'csv') {
+        val = val.replace(/\"/g, '\"\"'); // pair of double-quote characters
+        if (isNumeric(val)) {
+          val = +val;                     // use number
+        } else {
+          val = `"${val}"`;               // enclosed within double-quote
+        }
+      }
+      text += val;
+      if (cell != row.lastChild) {
+        text += (output == 'csv' ? ',' : '\t');
+      }
+    }
+    text += '\n';
+  }
+
+  if (output != 'clipboard') {
+    // To file: csv or txt
+    var blob = new Blob([text], {
+      type: `text/${output}`
+    });
+    saveFile(`${pcbdata.metadata.title}.${output}`, blob);
+  } else {
+    // To clipboard
+    var textArea = document.createElement("textarea");
+    textArea.classList.add('clipboard-temp');
+    textArea.value = text;
+
+    document.body.appendChild(textArea);
+    textArea.focus();
+    textArea.select();
+
+    try {
+      if (document.execCommand('copy')) {
+        console.log('Bom copied to clipboard.');
+      }
+    } catch (err) {
+      console.log('Can not copy to clipboard.');
+    }
+
+    document.body.removeChild(textArea);
+  }
+}
+
+function isNumeric(str) {
+  /* https://stackoverflow.com/a/175787 */
+  return (typeof str != "string" ? false : !isNaN(str) && !isNaN(parseFloat(str)));
+}
+
+function removeGutterNode(node) {
+  for (var i = 0; i < node.childNodes.length; i++) {
+    if (node.childNodes[i].classList &&
+      node.childNodes[i].classList.contains("gutter")) {
+      node.removeChild(node.childNodes[i]);
+      break;
+    }
+  }
+}
+
+function cleanGutters() {
+  removeGutterNode(document.getElementById("bot"));
+  removeGutterNode(document.getElementById("canvasdiv"));
+}
+
+var units = {
+  prefixes: {
+    giga: ["G", "g", "giga", "Giga", "GIGA"],
+    mega: ["M", "mega", "Mega", "MEGA"],
+    kilo: ["K", "k", "kilo", "Kilo", "KILO"],
+    milli: ["m", "milli", "Milli", "MILLI"],
+    micro: ["U", "u", "micro", "Micro", "MICRO", "μ", "µ"], // different utf8 μ
+    nano: ["N", "n", "nano", "Nano", "NANO"],
+    pico: ["P", "p", "pico", "Pico", "PICO"],
+  },
+  unitsShort: ["R", "r", "Ω", "F", "f", "H", "h"],
+  unitsLong: [
+    "OHM", "Ohm", "ohm", "ohms",
+    "FARAD", "Farad", "farad",
+    "HENRY", "Henry", "henry"
+  ],
+  getMultiplier: function (s) {
+    if (this.prefixes.giga.includes(s)) return 1e9;
+    if (this.prefixes.mega.includes(s)) return 1e6;
+    if (this.prefixes.kilo.includes(s)) return 1e3;
+    if (this.prefixes.milli.includes(s)) return 1e-3;
+    if (this.prefixes.micro.includes(s)) return 1e-6;
+    if (this.prefixes.nano.includes(s)) return 1e-9;
+    if (this.prefixes.pico.includes(s)) return 1e-12;
+    return 1;
+  },
+  valueRegex: null,
+}
+
+function initUtils() {
+  var allPrefixes = units.prefixes.giga
+    .concat(units.prefixes.mega)
+    .concat(units.prefixes.kilo)
+    .concat(units.prefixes.milli)
+    .concat(units.prefixes.micro)
+    .concat(units.prefixes.nano)
+    .concat(units.prefixes.pico);
+  var allUnits = units.unitsShort.concat(units.unitsLong);
+  units.valueRegex = new RegExp("^([0-9\.]+)" +
+    "\\s*(" + allPrefixes.join("|") + ")?" +
+    "(" + allUnits.join("|") + ")?" +
+    "(\\b.*)?$", "");
+  units.valueAltRegex = new RegExp("^([0-9]*)" +
+    "(" + units.unitsShort.join("|") + ")?" +
+    "([GgMmKkUuNnPp])?" +
+    "([0-9]*)" +
+    "(\\b.*)?$", "");
+  if (config.fields.includes("Value")) {
+    var index = config.fields.indexOf("Value");
+    pcbdata.bom["parsedValues"] = {};
+    for (var id in pcbdata.bom.fields) {
+      pcbdata.bom.parsedValues[id] = parseValue(pcbdata.bom.fields[id][index])
+    }
+  }
+}
+
+function parseValue(val, ref) {
+  var inferUnit = (unit, ref) => {
+    if (unit) {
+      unit = unit.toLowerCase();
+      if (unit == 'Ω' || unit == "ohm" || unit == "ohms") {
+        unit = 'r';
+      }
+      unit = unit[0];
+    } else {
+      ref = /^([a-z]+)\d+$/i.exec(ref);
+      if (ref) {
+        ref = ref[1].toLowerCase();
+        if (ref == "c") unit = 'f';
+        else if (ref == "l") unit = 'h';
+        else if (ref == "r" || ref == "rv") unit = 'r';
+        else unit = null;
+      }
+    }
+    return unit;
+  };
+  val = val.replace(/,/g, "");
+  var match = units.valueRegex.exec(val);
+  var unit;
+  if (match) {
+    val = parseFloat(match[1]);
+    if (match[2]) {
+      val = val * units.getMultiplier(match[2]);
+    }
+    unit = inferUnit(match[3], ref);
+    if (!unit) return null;
+    else return {
+      val: val,
+      unit: unit,
+      extra: match[4],
+    }
+  }
+  match = units.valueAltRegex.exec(val);
+  if (match && (match[1] || match[4])) {
+    val = parseFloat(match[1] + "." + match[4]);
+    if (match[3]) {
+      val = val * units.getMultiplier(match[3]);
+    }
+    unit = inferUnit(match[2], ref);
+    if (!unit) return null;
+    else return {
+      val: val,
+      unit: unit,
+      extra: match[5],
+    }
+  }
+  return null;
+}
+
+function valueCompare(a, b, stra, strb) {
+  if (a === null && b === null) {
+    // Failed to parse both values, compare them as strings.
+    if (stra != strb) return stra > strb ? 1 : -1;
+    else return 0;
+  } else if (a === null) {
+    return 1;
+  } else if (b === null) {
+    return -1;
+  } else {
+    if (a.unit != b.unit) return a.unit > b.unit ? 1 : -1;
+    else if (a.val != b.val) return a.val > b.val ? 1 : -1;
+    else if (a.extra != b.extra) return a.extra > b.extra ? 1 : -1;
+    else return 0;
+  }
+}
+
+function validateSaveImgDimension(element) {
+  var valid = false;
+  var intValue = 0;
+  if (/^[1-9]\d*$/.test(element.value)) {
+    intValue = parseInt(element.value);
+    if (intValue <= 16000) {
+      valid = true;
+    }
+  }
+  if (valid) {
+    element.classList.remove("invalid");
+  } else {
+    element.classList.add("invalid");
+  }
+  return intValue;
+}
+
+function saveImage(layer) {
+  var width = validateSaveImgDimension(document.getElementById("render-save-width"));
+  var height = validateSaveImgDimension(document.getElementById("render-save-height"));
+  var bgcolor = null;
+  if (!document.getElementById("render-save-transparent").checked) {
+    var style = getComputedStyle(topmostdiv);
+    bgcolor = style.getPropertyValue("background-color");
+  }
+  if (!width || !height) return;
+
+  // Prepare image
+  var canvas = document.createElement("canvas");
+  var layerdict = {
+    transform: {
+      x: 0,
+      y: 0,
+      s: 1,
+      panx: 0,
+      pany: 0,
+      zoom: 1,
+    },
+    bg: canvas,
+    fab: canvas,
+    silk: canvas,
+    highlight: canvas,
+    layer: layer,
+  }
+  // Do the rendering
+  recalcLayerScale(layerdict, width, height);
+  prepareLayer(layerdict);
+  clearCanvas(canvas, bgcolor);
+  drawBackground(layerdict, false);
+  drawHighlightsOnLayer(layerdict, false);
+
+  // Save image
+  var imgdata = canvas.toDataURL("image/png");
+
+  var filename = pcbdata.metadata.title;
+  if (pcbdata.metadata.revision) {
+    filename += `.${pcbdata.metadata.revision}`;
+  }
+  filename += `.${layer}.png`;
+  saveFile(filename, dataURLtoBlob(imgdata));
+}
+
+function saveSettings() {
+  var data = {
+    type: "InteractiveHtmlBom settings",
+    version: 1,
+    pcbmetadata: pcbdata.metadata,
+    settings: settings,
+  }
+  var blob = new Blob([JSON.stringify(data, null, 4)], {
+    type: "application/json"
+  });
+  saveFile(`${pcbdata.metadata.title}.settings.json`, blob);
+}
+
+function loadSettings() {
+  var input = document.createElement("input");
+  input.type = "file";
+  input.accept = ".settings.json";
+  input.onchange = function (e) {
+    var file = e.target.files[0];
+    var reader = new FileReader();
+    reader.onload = readerEvent => {
+      var content = readerEvent.target.result;
+      var newSettings;
+      try {
+        newSettings = JSON.parse(content);
+      } catch (e) {
+        alert("Selected file is not InteractiveHtmlBom settings file.");
+        return;
+      }
+      if (newSettings.type != "InteractiveHtmlBom settings") {
+        alert("Selected file is not InteractiveHtmlBom settings file.");
+        return;
+      }
+      var metadataMatches = newSettings.hasOwnProperty("pcbmetadata");
+      if (metadataMatches) {
+        for (var k in pcbdata.metadata) {
+          if (!newSettings.pcbmetadata.hasOwnProperty(k) || newSettings.pcbmetadata[k] != pcbdata.metadata[k]) {
+            metadataMatches = false;
+          }
+        }
+      }
+      if (!metadataMatches) {
+        var currentMetadata = JSON.stringify(pcbdata.metadata, null, 4);
+        var fileMetadata = JSON.stringify(newSettings.pcbmetadata, null, 4);
+        if (!confirm(
+          `Settins file metadata does not match current metadata.\n\n` +
+          `Page metadata:\n${currentMetadata}\n\n` +
+          `Settings file metadata:\n${fileMetadata}\n\n` +
+          `Press OK if you would like to import settings anyway.`)) {
+          return;
+        }
+      }
+      overwriteSettings(newSettings.settings);
+    }
+    reader.readAsText(file, 'UTF-8');
+  }
+  input.click();
+}
+
+function resetSettings() {
+  if (!confirm(
+    `This will reset all checkbox states and other settings.\n\n` +
+    `Press OK if you want to continue.`)) {
+    return;
+  }
+  if (storage) {
+    var keys = [];
+    for (var i = 0; i < storage.length; i++) {
+      var key = storage.key(i);
+      if (key.startsWith(storagePrefix)) keys.push(key);
+    }
+    for (var key of keys) storage.removeItem(key);
+  }
+  location.reload();
+}
+
+function overwriteSettings(newSettings) {
+  initDone = false;
+  Object.assign(settings, newSettings);
+  writeStorage("bomlayout", settings.bomlayout);
+  writeStorage("bommode", settings.bommode);
+  writeStorage("canvaslayout", settings.canvaslayout);
+  writeStorage("bomCheckboxes", settings.checkboxes.join(","));
+  document.getElementById("bomCheckboxes").value = settings.checkboxes.join(",");
+  for (var checkbox of settings.checkboxes) {
+    writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
+  }
+  writeStorage("markWhenChecked", settings.markWhenChecked);
+  padsVisible(settings.renderPads);
+  document.getElementById("padsCheckbox").checked = settings.renderPads;
+  fabricationVisible(settings.renderFabrication);
+  document.getElementById("fabricationCheckbox").checked = settings.renderFabrication;
+  silkscreenVisible(settings.renderSilkscreen);
+  document.getElementById("silkscreenCheckbox").checked = settings.renderSilkscreen;
+  referencesVisible(settings.renderReferences);
+  document.getElementById("referencesCheckbox").checked = settings.renderReferences;
+  valuesVisible(settings.renderValues);
+  document.getElementById("valuesCheckbox").checked = settings.renderValues;
+  tracksVisible(settings.renderTracks);
+  document.getElementById("tracksCheckbox").checked = settings.renderTracks;
+  zonesVisible(settings.renderZones);
+  document.getElementById("zonesCheckbox").checked = settings.renderZones;
+  dnpOutline(settings.renderDnpOutline);
+  document.getElementById("dnpOutlineCheckbox").checked = settings.renderDnpOutline;
+  setRedrawOnDrag(settings.redrawOnDrag);
+  document.getElementById("dragCheckbox").checked = settings.redrawOnDrag;
+  setDarkMode(settings.darkMode);
+  document.getElementById("darkmodeCheckbox").checked = settings.darkMode;
+  setHighlightPin1(settings.highlightpin1);
+  document.forms.highlightpin1.highlightpin1.value = settings.highlightpin1;
+  writeStorage("boardRotation", settings.boardRotation);
+  document.getElementById("boardRotation").value = settings.boardRotation / 5;
+  document.getElementById("rotationDegree").textContent = settings.boardRotation;
+  setOffsetBackRotation(settings.offsetBackRotation);
+  document.getElementById("offsetBackRotationCheckbox").checked = settings.offsetBackRotation;
+  initDone = true;
+  prepCheckboxes();
+  changeBomLayout(settings.bomlayout);
+}
+
+function saveFile(filename, blob) {
+  var link = document.createElement("a");
+  var objurl = URL.createObjectURL(blob);
+  link.download = filename;
+  link.href = objurl;
+  link.click();
+}
+
+function dataURLtoBlob(dataurl) {
+  var arr = dataurl.split(','),
+    mime = arr[0].match(/:(.*?);/)[1],
+    bstr = atob(arr[1]),
+    n = bstr.length,
+    u8arr = new Uint8Array(n);
+  while (n--) {
+    u8arr[n] = bstr.charCodeAt(n);
+  }
+  return new Blob([u8arr], {
+    type: mime
+  });
+}
+
+var settings = {
+  canvaslayout: "FB",
+  bomlayout: "left-right",
+  bommode: "grouped",
+  checkboxes: [],
+  checkboxStoredRefs: {},
+  darkMode: false,
+  highlightpin1: "none",
+  redrawOnDrag: true,
+  boardRotation: 0,
+  offsetBackRotation: false,
+  renderPads: true,
+  renderReferences: true,
+  renderValues: true,
+  renderSilkscreen: true,
+  renderFabrication: true,
+  renderDnpOutline: false,
+  renderTracks: true,
+  renderZones: true,
+  columnOrder: [],
+  hiddenColumns: [],
+  netColors: {},
+}
+
+function initDefaults() {
+  settings.bomlayout = readStorage("bomlayout");
+  if (settings.bomlayout === null) {
+    settings.bomlayout = config.bom_view;
+  }
+  if (!['bom-only', 'left-right', 'top-bottom'].includes(settings.bomlayout)) {
+    settings.bomlayout = config.bom_view;
+  }
+  settings.bommode = readStorage("bommode");
+  if (settings.bommode === null) {
+    settings.bommode = "grouped";
+  }
+  if (settings.bommode == "netlist" && !pcbdata.nets) {
+    settings.bommode = "grouped";
+  }
+  if (!["grouped", "ungrouped", "netlist"].includes(settings.bommode)) {
+    settings.bommode = "grouped";
+  }
+  settings.canvaslayout = readStorage("canvaslayout");
+  if (settings.canvaslayout === null) {
+    settings.canvaslayout = config.layer_view;
+  }
+  var bomCheckboxes = readStorage("bomCheckboxes");
+  if (bomCheckboxes === null) {
+    bomCheckboxes = config.checkboxes;
+  }
+  settings.checkboxes = bomCheckboxes.split(",").filter((e) => e);
+  document.getElementById("bomCheckboxes").value = bomCheckboxes;
+
+  var highlightpin1 = readStorage("highlightpin1") || config.highlight_pin1;
+  if (highlightpin1 === "false") highlightpin1 = "none";
+  if (highlightpin1 === "true") highlightpin1 = "all";
+  setHighlightPin1(highlightpin1);
+  document.forms.highlightpin1.highlightpin1.value = highlightpin1;
+
+  settings.markWhenChecked = readStorage("markWhenChecked") || "";
+  populateMarkWhenCheckedOptions();
+
+  function initBooleanSetting(storageString, def, elementId, func) {
+    var b = readStorage(storageString);
+    if (b === null) {
+      b = def;
+    } else {
+      b = (b == "true");
+    }
+    document.getElementById(elementId).checked = b;
+    func(b);
+  }
+
+  initBooleanSetting("padsVisible", config.show_pads, "padsCheckbox", padsVisible);
+  initBooleanSetting("fabricationVisible", config.show_fabrication, "fabricationCheckbox", fabricationVisible);
+  initBooleanSetting("silkscreenVisible", config.show_silkscreen, "silkscreenCheckbox", silkscreenVisible);
+  initBooleanSetting("referencesVisible", true, "referencesCheckbox", referencesVisible);
+  initBooleanSetting("valuesVisible", true, "valuesCheckbox", valuesVisible);
+  if ("tracks" in pcbdata) {
+    initBooleanSetting("tracksVisible", true, "tracksCheckbox", tracksVisible);
+    initBooleanSetting("zonesVisible", true, "zonesCheckbox", zonesVisible);
+  } else {
+    document.getElementById("tracksAndZonesCheckboxes").style.display = "none";
+    tracksVisible(false);
+    zonesVisible(false);
+  }
+  initBooleanSetting("dnpOutline", false, "dnpOutlineCheckbox", dnpOutline);
+  initBooleanSetting("redrawOnDrag", config.redraw_on_drag, "dragCheckbox", setRedrawOnDrag);
+  initBooleanSetting("darkmode", config.dark_mode, "darkmodeCheckbox", setDarkMode);
+
+  var fields = ["checkboxes", "References"].concat(config.fields).concat(["Quantity"]);
+  var hcols = JSON.parse(readStorage("hiddenColumns"));
+  if (hcols === null) {
+    hcols = [];
+  }
+  settings.hiddenColumns = hcols.filter(e => fields.includes(e));
+
+  var cord = JSON.parse(readStorage("columnOrder"));
+  if (cord === null) {
+    cord = fields;
+  } else {
+    cord = cord.filter(e => fields.includes(e));
+    if (cord.length != fields.length)
+      cord = fields;
+  }
+  settings.columnOrder = cord;
+
+  settings.boardRotation = readStorage("boardRotation");
+  if (settings.boardRotation === null) {
+    settings.boardRotation = config.board_rotation * 5;
+  } else {
+    settings.boardRotation = parseInt(settings.boardRotation);
+  }
+  document.getElementById("boardRotation").value = settings.boardRotation / 5;
+  document.getElementById("rotationDegree").textContent = settings.boardRotation;
+  initBooleanSetting("offsetBackRotation", config.offset_back_rotation, "offsetBackRotationCheckbox", setOffsetBackRotation);
+
+  settings.netColors = JSON.parse(readStorage("netColors")) || {};
+}
+
+// Helper classes for user js callbacks.
+
+const IBOM_EVENT_TYPES = {
+  ALL: "all",
+  HIGHLIGHT_EVENT: "highlightEvent",
+  CHECKBOX_CHANGE_EVENT: "checkboxChangeEvent",
+  BOM_BODY_CHANGE_EVENT: "bomBodyChangeEvent",
+}
+
+const EventHandler = {
+  callbacks: {},
+  init: function () {
+    for (eventType of Object.values(IBOM_EVENT_TYPES))
+      this.callbacks[eventType] = [];
+  },
+  registerCallback: function (eventType, callback) {
+    this.callbacks[eventType].push(callback);
+  },
+  emitEvent: function (eventType, eventArgs) {
+    event = {
+      eventType: eventType,
+      args: eventArgs,
+    }
+    var callback;
+    for (callback of this.callbacks[eventType])
+      callback(event);
+    for (callback of this.callbacks[IBOM_EVENT_TYPES.ALL])
+      callback(event);
+  }
+}
+EventHandler.init();
+
+///////////////////////////////////////////////
+
+///////////////////////////////////////////////
+/* PCB rendering code */
+
+var emptyContext2d = document.createElement("canvas").getContext("2d");
+
+function deg2rad(deg) {
+  return deg * Math.PI / 180;
+}
+
+function calcFontPoint(linepoint, text, offsetx, offsety, tilt) {
+  var point = [
+    linepoint[0] * text.width + offsetx,
+    linepoint[1] * text.height + offsety
+  ];
+  // This approximates pcbnew behavior with how text tilts depending on horizontal justification
+  point[0] -= (linepoint[1] + 0.5 * (1 + text.justify[0])) * text.height * tilt;
+  return point;
+}
+
+function drawText(ctx, text, color) {
+  if ("ref" in text && !settings.renderReferences) return;
+  if ("val" in text && !settings.renderValues) return;
+  ctx.save();
+  ctx.fillStyle = color;
+  ctx.strokeStyle = color;
+  ctx.lineCap = "round";
+  ctx.lineJoin = "round";
+  ctx.lineWidth = text.thickness;
+  if ("svgpath" in text) {
+    ctx.stroke(new Path2D(text.svgpath));
+    ctx.restore();
+    return;
+  }
+  if ("polygons" in text) {
+    ctx.fill(getPolygonsPath(text));
+    ctx.restore();
+    return;
+  }
+  ctx.translate(...text.pos);
+  ctx.translate(text.thickness * 0.5, 0);
+  var angle = -text.angle;
+  if (text.attr.includes("mirrored")) {
+    ctx.scale(-1, 1);
+    angle = -angle;
+  }
+  var tilt = 0;
+  if (text.attr.includes("italic")) {
+    tilt = 0.125;
+  }
+  var interline = text.height * 1.5 + text.thickness;
+  var txt = text.text.split("\n");
+  // KiCad ignores last empty line.
+  if (txt[txt.length - 1] == '') txt.pop();
+  ctx.rotate(deg2rad(angle));
+  var offsety = (1 - text.justify[1]) / 2 * text.height; // One line offset
+  offsety -= (txt.length - 1) * (text.justify[1] + 1) / 2 * interline; // Multiline offset
+  for (var i in txt) {
+    var lineWidth = text.thickness + interline / 2 * tilt;
+    for (var j = 0; j < txt[i].length; j++) {
+      if (txt[i][j] == '\t') {
+        var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
+        lineWidth += fourSpaces - lineWidth % fourSpaces;
+      } else {
+        if (txt[i][j] == '~') {
+          j++;
+          if (j == txt[i].length)
+            break;
+        }
+        lineWidth += pcbdata.font_data[txt[i][j]].w * text.width;
+      }
+    }
+    var offsetx = -lineWidth * (text.justify[0] + 1) / 2;
+    var inOverbar = false;
+    for (var j = 0; j < txt[i].length; j++) {
+      if (config.kicad_text_formatting) {
+        if (txt[i][j] == '\t') {
+          var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
+          offsetx += fourSpaces - offsetx % fourSpaces;
+          continue;
+        } else if (txt[i][j] == '~') {
+          j++;
+          if (j == txt[i].length)
+            break;
+          if (txt[i][j] != '~') {
+            inOverbar = !inOverbar;
+          }
+        }
+      }
+      var glyph = pcbdata.font_data[txt[i][j]];
+      if (inOverbar) {
+        var overbarStart = [offsetx, -text.height * 1.4 + offsety];
+        var overbarEnd = [offsetx + text.width * glyph.w, overbarStart[1]];
+
+        if (!lastHadOverbar) {
+          overbarStart[0] += text.height * 1.4 * tilt;
+          lastHadOverbar = true;
+        }
+        ctx.beginPath();
+        ctx.moveTo(...overbarStart);
+        ctx.lineTo(...overbarEnd);
+        ctx.stroke();
+      } else {
+        lastHadOverbar = false;
+      }
+      for (var line of glyph.l) {
+        ctx.beginPath();
+        ctx.moveTo(...calcFontPoint(line[0], text, offsetx, offsety, tilt));
+        for (var k = 1; k < line.length; k++) {
+          ctx.lineTo(...calcFontPoint(line[k], text, offsetx, offsety, tilt));
+        }
+        ctx.stroke();
+      }
+      offsetx += glyph.w * text.width;
+    }
+    offsety += interline;
+  }
+  ctx.restore();
+}
+
+function drawedge(ctx, scalefactor, edge, color) {
+  ctx.strokeStyle = color;
+  ctx.fillStyle = color;
+  ctx.lineWidth = Math.max(1 / scalefactor, edge.width);
+  ctx.lineCap = "round";
+  ctx.lineJoin = "round";
+  if ("svgpath" in edge) {
+    ctx.stroke(new Path2D(edge.svgpath));
+  } else {
+    ctx.beginPath();
+    if (edge.type == "segment") {
+      ctx.moveTo(...edge.start);
+      ctx.lineTo(...edge.end);
+    }
+    if (edge.type == "rect") {
+      ctx.moveTo(...edge.start);
+      ctx.lineTo(edge.start[0], edge.end[1]);
+      ctx.lineTo(...edge.end);
+      ctx.lineTo(edge.end[0], edge.start[1]);
+      ctx.lineTo(...edge.start);
+    }
+    if (edge.type == "arc") {
+      ctx.arc(
+        ...edge.start,
+        edge.radius,
+        deg2rad(edge.startangle),
+        deg2rad(edge.endangle));
+    }
+    if (edge.type == "circle") {
+      ctx.arc(
+        ...edge.start,
+        edge.radius,
+        0, 2 * Math.PI);
+      ctx.closePath();
+    }
+    if (edge.type == "curve") {
+      ctx.moveTo(...edge.start);
+      ctx.bezierCurveTo(...edge.cpa, ...edge.cpb, ...edge.end);
+    }
+    if("filled" in edge && edge.filled)
+      ctx.fill();
+    else
+      ctx.stroke();
+  }
+}
+
+function getChamferedRectPath(size, radius, chamfpos, chamfratio) {
+  // chamfpos is a bitmask, left = 1, right = 2, bottom left = 4, bottom right = 8
+  var path = new Path2D();
+  var width = size[0];
+  var height = size[1];
+  var x = width * -0.5;
+  var y = height * -0.5;
+  var chamfOffset = Math.min(width, height) * chamfratio;
+  path.moveTo(x, 0);
+  if (chamfpos & 4) {
+    path.lineTo(x, y + height - chamfOffset);
+    path.lineTo(x + chamfOffset, y + height);
+    path.lineTo(0, y + height);
+  } else {
+    path.arcTo(x, y + height, x + width, y + height, radius);
+  }
+  if (chamfpos & 8) {
+    path.lineTo(x + width - chamfOffset, y + height);
+    path.lineTo(x + width, y + height - chamfOffset);
+    path.lineTo(x + width, 0);
+  } else {
+    path.arcTo(x + width, y + height, x + width, y, radius);
+  }
+  if (chamfpos & 2) {
+    path.lineTo(x + width, y + chamfOffset);
+    path.lineTo(x + width - chamfOffset, y);
+    path.lineTo(0, y);
+  } else {
+    path.arcTo(x + width, y, x, y, radius);
+  }
+  if (chamfpos & 1) {
+    path.lineTo(x + chamfOffset, y);
+    path.lineTo(x, y + chamfOffset);
+    path.lineTo(x, 0);
+  } else {
+    path.arcTo(x, y, x, y + height, radius);
+  }
+  path.closePath();
+  return path;
+}
+
+function getOblongPath(size) {
+  return getChamferedRectPath(size, Math.min(size[0], size[1]) / 2, 0, 0);
+}
+
+function getPolygonsPath(shape) {
+  if (shape.path2d) {
+    return shape.path2d;
+  }
+  if ("svgpath" in shape) {
+    shape.path2d = new Path2D(shape.svgpath);
+  } else {
+    var path = new Path2D();
+    for (var polygon of shape.polygons) {
+      path.moveTo(...polygon[0]);
+      for (var i = 1; i < polygon.length; i++) {
+        path.lineTo(...polygon[i]);
+      }
+      path.closePath();
+    }
+    shape.path2d = path;
+  }
+  return shape.path2d;
+}
+
+function drawPolygonShape(ctx, scalefactor, shape, color) {
+  ctx.save();
+  if (!("svgpath" in shape)) {
+    ctx.translate(...shape.pos);
+    ctx.rotate(deg2rad(-shape.angle));
+  }
+  if("filled" in shape && !shape.filled) {
+    ctx.strokeStyle = color;
+    ctx.lineWidth = Math.max(1 / scalefactor, shape.width);
+    ctx.lineCap = "round";
+    ctx.lineJoin = "round";
+    ctx.stroke(getPolygonsPath(shape));
+  } else {
+    ctx.fillStyle = color;
+    ctx.fill(getPolygonsPath(shape));
+  }
+  ctx.restore();
+}
+
+function drawDrawing(ctx, scalefactor, drawing, color) {
+  if (["segment", "arc", "circle", "curve", "rect"].includes(drawing.type)) {
+    drawedge(ctx, scalefactor, drawing, color);
+  } else if (drawing.type == "polygon") {
+    drawPolygonShape(ctx, scalefactor, drawing, color);
+  } else {
+    drawText(ctx, drawing, color);
+  }
+}
+
+function getCirclePath(radius) {
+  var path = new Path2D();
+  path.arc(0, 0, radius, 0, 2 * Math.PI);
+  path.closePath();
+  return path;
+}
+
+function getCachedPadPath(pad) {
+  if (!pad.path2d) {
+    // if path2d is not set, build one and cache it on pad object
+    if (pad.shape == "rect") {
+      pad.path2d = new Path2D();
+      pad.path2d.rect(...pad.size.map(c => -c * 0.5), ...pad.size);
+    } else if (pad.shape == "oval") {
+      pad.path2d = getOblongPath(pad.size);
+    } else if (pad.shape == "circle") {
+      pad.path2d = getCirclePath(pad.size[0] / 2);
+    } else if (pad.shape == "roundrect") {
+      pad.path2d = getChamferedRectPath(pad.size, pad.radius, 0, 0);
+    } else if (pad.shape == "chamfrect") {
+      pad.path2d = getChamferedRectPath(pad.size, pad.radius, pad.chamfpos, pad.chamfratio)
+    } else if (pad.shape == "custom") {
+      pad.path2d = getPolygonsPath(pad);
+    }
+  }
+  return pad.path2d;
+}
+
+function drawPad(ctx, pad, color, outline) {
+  ctx.save();
+  ctx.translate(...pad.pos);
+  ctx.rotate(-deg2rad(pad.angle));
+  if (pad.offset) {
+    ctx.translate(...pad.offset);
+  }
+  ctx.fillStyle = color;
+  ctx.strokeStyle = color;
+  var path = getCachedPadPath(pad);
+  if (outline) {
+    ctx.stroke(path);
+  } else {
+    ctx.fill(path);
+  }
+  ctx.restore();
+}
+
+function drawPadHole(ctx, pad, padHoleColor) {
+  if (pad.type != "th") return;
+  ctx.save();
+  ctx.translate(...pad.pos);
+  ctx.rotate(-deg2rad(pad.angle));
+  ctx.fillStyle = padHoleColor;
+  if (pad.drillshape == "oblong") {
+    ctx.fill(getOblongPath(pad.drillsize));
+  } else {
+    ctx.fill(getCirclePath(pad.drillsize[0] / 2));
+  }
+  ctx.restore();
+}
+
+function drawFootprint(ctx, layer, scalefactor, footprint, colors, highlight, outline) {
+  if (highlight) {
+    // draw bounding box
+    if (footprint.layer == layer) {
+      ctx.save();
+      ctx.globalAlpha = 0.2;
+      ctx.translate(...footprint.bbox.pos);
+      ctx.rotate(deg2rad(-footprint.bbox.angle));
+      ctx.translate(...footprint.bbox.relpos);
+      ctx.fillStyle = colors.pad;
+      ctx.fillRect(0, 0, ...footprint.bbox.size);
+      ctx.globalAlpha = 1;
+      ctx.strokeStyle = colors.pad;
+      ctx.lineWidth = 3 / scalefactor;
+      ctx.strokeRect(0, 0, ...footprint.bbox.size);
+      ctx.restore();
+    }
+  }
+  // draw drawings
+  for (var drawing of footprint.drawings) {
+    if (drawing.layer == layer) {
+      drawDrawing(ctx, scalefactor, drawing.drawing, colors.pad);
+    }
+  }
+  ctx.lineWidth = 3 / scalefactor;
+  // draw pads
+  if (settings.renderPads) {
+    for (var pad of footprint.pads) {
+      if (pad.layers.includes(layer)) {
+        drawPad(ctx, pad, colors.pad, outline);
+        if (pad.pin1 &&
+          (settings.highlightpin1 == "all" ||
+            settings.highlightpin1 == "selected" && highlight)) {
+          drawPad(ctx, pad, colors.outline, true);
+        }
+      }
+    }
+    for (var pad of footprint.pads) {
+      drawPadHole(ctx, pad, colors.padHole);
+    }
+  }
+}
+
+function drawEdgeCuts(canvas, scalefactor) {
+  var ctx = canvas.getContext("2d");
+  var edgecolor = getComputedStyle(topmostdiv).getPropertyValue('--pcb-edge-color');
+  for (var edge of pcbdata.edges) {
+    drawDrawing(ctx, scalefactor, edge, edgecolor);
+  }
+}
+
+function drawFootprints(canvas, layer, scalefactor, highlight) {
+  var ctx = canvas.getContext("2d");
+  ctx.lineWidth = 3 / scalefactor;
+  var style = getComputedStyle(topmostdiv);
+
+  var colors = {
+    pad: style.getPropertyValue('--pad-color'),
+    padHole: style.getPropertyValue('--pad-hole-color'),
+    outline: style.getPropertyValue('--pin1-outline-color'),
+  }
+
+  for (var i = 0; i < pcbdata.footprints.length; i++) {
+    var mod = pcbdata.footprints[i];
+    var outline = settings.renderDnpOutline && pcbdata.bom.skipped.includes(i);
+    var h = highlightedFootprints.includes(i);
+    var d = markedFootprints.has(i);
+    if (highlight) {
+      if(h && d) {
+        colors.pad = style.getPropertyValue('--pad-color-highlight-both');
+        colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-both');
+      } else if (h) {
+        colors.pad = style.getPropertyValue('--pad-color-highlight');
+        colors.outline = style.getPropertyValue('--pin1-outline-color-highlight');
+      } else if (d) {
+        colors.pad = style.getPropertyValue('--pad-color-highlight-marked');
+        colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-marked');
+      }
+    }
+    if( h || d || !highlight) {
+      drawFootprint(ctx, layer, scalefactor, mod, colors, highlight, outline);
+    }
+  }
+}
+
+function drawBgLayer(layername, canvas, layer, scalefactor, edgeColor, polygonColor, textColor) {
+  var ctx = canvas.getContext("2d");
+  for (var d of pcbdata.drawings[layername][layer]) {
+    if (["segment", "arc", "circle", "curve", "rect"].includes(d.type)) {
+      drawedge(ctx, scalefactor, d, edgeColor);
+    } else if (d.type == "polygon") {
+      drawPolygonShape(ctx, scalefactor, d, polygonColor);
+    } else {
+      drawText(ctx, d, textColor);
+    }
+  }
+}
+
+function drawTracks(canvas, layer, defaultColor, highlight) {
+  ctx = canvas.getContext("2d");
+  ctx.lineCap = "round";
+
+  var hasHole = (track) => (
+    'drillsize' in track &&
+    track.start[0] == track.end[0] &&
+    track.start[1] == track.end[1]);
+
+  // First draw tracks and tented vias
+  for (var track of pcbdata.tracks[layer]) {
+    if (highlight && highlightedNet != track.net) continue;
+    if (!hasHole(track)) {
+      ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor;
+      ctx.lineWidth = track.width;
+      ctx.beginPath();
+      if ('radius' in track) {
+        ctx.arc(
+          ...track.center,
+          track.radius,
+          deg2rad(track.startangle),
+          deg2rad(track.endangle));
+      } else {
+        ctx.moveTo(...track.start);
+        ctx.lineTo(...track.end);
+      }
+      ctx.stroke();
+    }
+  }
+  // Second pass to draw untented vias
+  var style = getComputedStyle(topmostdiv);
+  var holeColor = style.getPropertyValue('--pad-hole-color')
+
+  for (var track of pcbdata.tracks[layer]) {
+    if (highlight && highlightedNet != track.net) continue;
+    if (hasHole(track)) {
+      ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor;
+      ctx.lineWidth = track.width;
+      ctx.beginPath();
+      ctx.moveTo(...track.start);
+      ctx.lineTo(...track.end);
+      ctx.stroke();
+      ctx.strokeStyle = holeColor;
+      ctx.lineWidth = track.drillsize;
+      ctx.lineTo(...track.end);
+      ctx.stroke();
+    }
+  }
+}
+
+function drawZones(canvas, layer, defaultColor, highlight) {
+  ctx = canvas.getContext("2d");
+  ctx.lineJoin = "round";
+  for (var zone of pcbdata.zones[layer]) {
+    if (highlight && highlightedNet != zone.net) continue;
+    ctx.strokeStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor;
+    ctx.fillStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor;
+    if (!zone.path2d) {
+      zone.path2d = getPolygonsPath(zone);
+    }
+    ctx.fill(zone.path2d, zone.fillrule || "nonzero");
+    if (zone.width > 0) {
+      ctx.lineWidth = zone.width;
+      ctx.stroke(zone.path2d);
+    }
+  }
+}
+
+function clearCanvas(canvas, color = null) {
+  var ctx = canvas.getContext("2d");
+  ctx.save();
+  ctx.setTransform(1, 0, 0, 1, 0, 0);
+  if (color) {
+    ctx.fillStyle = color;
+    ctx.fillRect(0, 0, canvas.width, canvas.height);
+  } else {
+    if (!window.matchMedia("print").matches)
+      ctx.clearRect(0, 0, canvas.width, canvas.height);
+  }
+  ctx.restore();
+}
+
+function drawNets(canvas, layer, highlight) {
+  var style = getComputedStyle(topmostdiv);
+  if (settings.renderZones) {
+    var zoneColor = style.getPropertyValue(highlight ? '--zone-color-highlight' : '--zone-color');
+    drawZones(canvas, layer, zoneColor, highlight);
+  }
+  if (settings.renderTracks) {
+    var trackColor = style.getPropertyValue(highlight ? '--track-color-highlight' : '--track-color');
+    drawTracks(canvas, layer, trackColor, highlight);
+  }
+  if (highlight && settings.renderPads) {
+    var padColor = style.getPropertyValue('--pad-color-highlight');
+    var padHoleColor = style.getPropertyValue('--pad-hole-color');
+    var ctx = canvas.getContext("2d");
+    for (var footprint of pcbdata.footprints) {
+      // draw pads
+      var padDrawn = false;
+      for (var pad of footprint.pads) {
+        if (highlightedNet != pad.net) continue;
+        if (pad.layers.includes(layer)) {
+          drawPad(ctx, pad, padColor, false);
+          padDrawn = true;
+        }
+      }
+      if (padDrawn) {
+        // redraw all pad holes because some pads may overlap
+        for (var pad of footprint.pads) {
+          drawPadHole(ctx, pad, padHoleColor);
+        }
+      }
+    }
+  }
+}
+
+function drawHighlightsOnLayer(canvasdict, clear = true) {
+  if (clear) {
+    clearCanvas(canvasdict.highlight);
+  }
+  if (markedFootprints.size > 0 || highlightedFootprints.length > 0) {
+    drawFootprints(canvasdict.highlight, canvasdict.layer,
+      canvasdict.transform.s * canvasdict.transform.zoom, true);
+  }
+  if (highlightedNet !== null) {
+    drawNets(canvasdict.highlight, canvasdict.layer, true);
+  }
+}
+
+function drawHighlights() {
+  drawHighlightsOnLayer(allcanvas.front);
+  drawHighlightsOnLayer(allcanvas.back);
+}
+
+function drawBackground(canvasdict, clear = true) {
+  if (clear) {
+    clearCanvas(canvasdict.bg);
+    clearCanvas(canvasdict.fab);
+    clearCanvas(canvasdict.silk);
+  }
+
+  drawNets(canvasdict.bg, canvasdict.layer, false);
+  drawFootprints(canvasdict.bg, canvasdict.layer,
+    canvasdict.transform.s * canvasdict.transform.zoom, false);
+
+  drawEdgeCuts(canvasdict.bg, canvasdict.transform.s * canvasdict.transform.zoom);
+
+  var style = getComputedStyle(topmostdiv);
+  var edgeColor = style.getPropertyValue('--silkscreen-edge-color');
+  var polygonColor = style.getPropertyValue('--silkscreen-polygon-color');
+  var textColor = style.getPropertyValue('--silkscreen-text-color');
+  if (settings.renderSilkscreen) {
+    drawBgLayer(
+      "silkscreen", canvasdict.silk, canvasdict.layer,
+      canvasdict.transform.s * canvasdict.transform.zoom,
+      edgeColor, polygonColor, textColor);
+  }
+  edgeColor = style.getPropertyValue('--fabrication-edge-color');
+  polygonColor = style.getPropertyValue('--fabrication-polygon-color');
+  textColor = style.getPropertyValue('--fabrication-text-color');
+  if (settings.renderFabrication) {
+    drawBgLayer(
+      "fabrication", canvasdict.fab, canvasdict.layer,
+      canvasdict.transform.s * canvasdict.transform.zoom,
+      edgeColor, polygonColor, textColor);
+  }
+}
+
+function prepareCanvas(canvas, flip, transform) {
+  var ctx = canvas.getContext("2d");
+  ctx.setTransform(1, 0, 0, 1, 0, 0);
+  ctx.scale(transform.zoom, transform.zoom);
+  ctx.translate(transform.panx, transform.pany);
+  if (flip) {
+    ctx.scale(-1, 1);
+  }
+  ctx.translate(transform.x, transform.y);
+  ctx.rotate(deg2rad(settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)));
+  ctx.scale(transform.s, transform.s);
+}
+
+function prepareLayer(canvasdict) {
+  var flip = (canvasdict.layer === "B");
+  for (var c of ["bg", "fab", "silk", "highlight"]) {
+    prepareCanvas(canvasdict[c], flip, canvasdict.transform);
+  }
+}
+
+function rotateVector(v, angle) {
+  angle = deg2rad(angle);
+  return [
+    v[0] * Math.cos(angle) - v[1] * Math.sin(angle),
+    v[0] * Math.sin(angle) + v[1] * Math.cos(angle)
+  ];
+}
+
+function applyRotation(bbox, flip) {
+  var corners = [
+    [bbox.minx, bbox.miny],
+    [bbox.minx, bbox.maxy],
+    [bbox.maxx, bbox.miny],
+    [bbox.maxx, bbox.maxy],
+  ];
+  corners = corners.map((v) => rotateVector(v, settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)));
+  return {
+    minx: corners.reduce((a, v) => Math.min(a, v[0]), Infinity),
+    miny: corners.reduce((a, v) => Math.min(a, v[1]), Infinity),
+    maxx: corners.reduce((a, v) => Math.max(a, v[0]), -Infinity),
+    maxy: corners.reduce((a, v) => Math.max(a, v[1]), -Infinity),
+  }
+}
+
+function recalcLayerScale(layerdict, width, height) {
+  var flip = (layerdict.layer === "B");
+  var bbox = applyRotation(pcbdata.edges_bbox, flip);
+  var scalefactor = 0.98 * Math.min(
+    width / (bbox.maxx - bbox.minx),
+    height / (bbox.maxy - bbox.miny)
+  );
+  if (scalefactor < 0.1) {
+    scalefactor = 1;
+  }
+  layerdict.transform.s = scalefactor;
+  if (flip) {
+    layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor + width) * 0.5;
+  } else {
+    layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor - width) * 0.5;
+  }
+  layerdict.transform.y = -((bbox.maxy + bbox.miny) * scalefactor - height) * 0.5;
+  for (var c of ["bg", "fab", "silk", "highlight"]) {
+    canvas = layerdict[c];
+    canvas.width = width;
+    canvas.height = height;
+    canvas.style.width = (width / devicePixelRatio) + "px";
+    canvas.style.height = (height / devicePixelRatio) + "px";
+  }
+}
+
+function redrawCanvas(layerdict) {
+  prepareLayer(layerdict);
+  drawBackground(layerdict);
+  drawHighlightsOnLayer(layerdict);
+}
+
+function resizeCanvas(layerdict) {
+  var canvasdivid = {
+    "F": "frontcanvas",
+    "B": "backcanvas"
+  } [layerdict.layer];
+  var width = document.getElementById(canvasdivid).clientWidth * devicePixelRatio;
+  var height = document.getElementById(canvasdivid).clientHeight * devicePixelRatio;
+  recalcLayerScale(layerdict, width, height);
+  redrawCanvas(layerdict);
+}
+
+function resizeAll() {
+  resizeCanvas(allcanvas.front);
+  resizeCanvas(allcanvas.back);
+}
+
+function pointWithinDistanceToSegment(x, y, x1, y1, x2, y2, d) {
+  var A = x - x1;
+  var B = y - y1;
+  var C = x2 - x1;
+  var D = y2 - y1;
+
+  var dot = A * C + B * D;
+  var len_sq = C * C + D * D;
+  var dx, dy;
+  if (len_sq == 0) {
+    // start and end of the segment coincide
+    dx = x - x1;
+    dy = y - y1;
+  } else {
+    var param = dot / len_sq;
+    var xx, yy;
+    if (param < 0) {
+      xx = x1;
+      yy = y1;
+    } else if (param > 1) {
+      xx = x2;
+      yy = y2;
+    } else {
+      xx = x1 + param * C;
+      yy = y1 + param * D;
+    }
+    dx = x - xx;
+    dy = y - yy;
+  }
+  return dx * dx + dy * dy <= d * d;
+}
+
+function modulo(n, mod) {
+  return ((n % mod) + mod) % mod;
+}
+
+function pointWithinDistanceToArc(x, y, xc, yc, radius, startangle, endangle, d) {
+  var dx = x - xc;
+  var dy = y - yc;
+  var r_sq = dx * dx + dy * dy;
+  var rmin = Math.max(0, radius - d);
+  var rmax = radius + d;
+
+  if (r_sq < rmin * rmin || r_sq > rmax * rmax)
+    return false;
+
+  var angle1 = modulo(deg2rad(startangle), 2 * Math.PI);
+  var dx1 = xc + radius * Math.cos(angle1) - x;
+  var dy1 = yc + radius * Math.sin(angle1) - y;
+  if (dx1 * dx1 + dy1 * dy1 <= d * d)
+    return true;
+
+  var angle2 = modulo(deg2rad(endangle), 2 * Math.PI);
+  var dx2 = xc + radius * Math.cos(angle2) - x;
+  var dy2 = yc + radius * Math.sin(angle2) - y;
+  if (dx2 * dx2 + dy2 * dy2 <= d * d)
+    return true;
+
+  var angle = modulo(Math.atan2(dy, dx), 2 * Math.PI);
+  if (angle1 > angle2)
+    return (angle >= angle2 || angle <= angle1);
+  else
+    return (angle >= angle1 && angle <= angle2);
+}
+
+function pointWithinPad(x, y, pad) {
+  var v = [x - pad.pos[0], y - pad.pos[1]];
+  v = rotateVector(v, pad.angle);
+  if (pad.offset) {
+    v[0] -= pad.offset[0];
+    v[1] -= pad.offset[1];
+  }
+  return emptyContext2d.isPointInPath(getCachedPadPath(pad), ...v);
+}
+
+function netHitScan(layer, x, y) {
+  // Check track segments
+  if (settings.renderTracks && pcbdata.tracks) {
+    for (var track of pcbdata.tracks[layer]) {
+      if ('radius' in track) {
+        if (pointWithinDistanceToArc(x, y, ...track.center, track.radius, track.startangle, track.endangle, track.width / 2)) {
+          return track.net;
+        }
+      } else {
+        if (pointWithinDistanceToSegment(x, y, ...track.start, ...track.end, track.width / 2)) {
+          return track.net;
+        }
+      }
+    }
+  }
+  // Check pads
+  if (settings.renderPads) {
+    for (var footprint of pcbdata.footprints) {
+      for (var pad of footprint.pads) {
+        if (pad.layers.includes(layer) && pointWithinPad(x, y, pad)) {
+          return pad.net;
+        }
+      }
+    }
+  }
+  return null;
+}
+
+function pointWithinFootprintBbox(x, y, bbox) {
+  var v = [x - bbox.pos[0], y - bbox.pos[1]];
+  v = rotateVector(v, bbox.angle);
+  return bbox.relpos[0] <= v[0] && v[0] <= bbox.relpos[0] + bbox.size[0] &&
+    bbox.relpos[1] <= v[1] && v[1] <= bbox.relpos[1] + bbox.size[1];
+}
+
+function bboxHitScan(layer, x, y) {
+  var result = [];
+  for (var i = 0; i < pcbdata.footprints.length; i++) {
+    var footprint = pcbdata.footprints[i];
+    if (footprint.layer == layer) {
+      if (pointWithinFootprintBbox(x, y, footprint.bbox)) {
+        result.push(i);
+      }
+    }
+  }
+  return result;
+}
+
+function handlePointerDown(e, layerdict) {
+  if (e.button != 0 && e.button != 1) {
+    return;
+  }
+  e.preventDefault();
+  e.stopPropagation();
+
+  if (!e.hasOwnProperty("offsetX")) {
+    // The polyfill doesn't set this properly
+    e.offsetX = e.pageX - e.currentTarget.offsetLeft;
+    e.offsetY = e.pageY - e.currentTarget.offsetTop;
+  }
+
+  layerdict.pointerStates[e.pointerId] = {
+    distanceTravelled: 0,
+    lastX: e.offsetX,
+    lastY: e.offsetY,
+    downTime: Date.now(),
+  };
+}
+
+function handleMouseClick(e, layerdict) {
+  if (!e.hasOwnProperty("offsetX")) {
+    // The polyfill doesn't set this properly
+    e.offsetX = e.pageX - e.currentTarget.offsetLeft;
+    e.offsetY = e.pageY - e.currentTarget.offsetTop;
+  }
+
+  var x = e.offsetX;
+  var y = e.offsetY;
+  var t = layerdict.transform;
+  var flip = layerdict.layer === "B";
+  if (flip) {
+    x = (devicePixelRatio * x / t.zoom - t.panx + t.x) / -t.s;
+  } else {
+    x = (devicePixelRatio * x / t.zoom - t.panx - t.x) / t.s;
+  }
+  y = (devicePixelRatio * y / t.zoom - t.y - t.pany) / t.s;
+  var v = rotateVector([x, y], -settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0));
+  if ("nets" in pcbdata) {
+    var net = netHitScan(layerdict.layer, ...v);
+    if (net !== highlightedNet) {
+      netClicked(net);
+    }
+  }
+  if (highlightedNet === null) {
+    var footprints = bboxHitScan(layerdict.layer, ...v);
+    if (footprints.length > 0) {
+      footprintsClicked(footprints);
+    }
+  }
+}
+
+function handlePointerLeave(e, layerdict) {
+  e.preventDefault();
+  e.stopPropagation();
+
+  if (!settings.redrawOnDrag) {
+    redrawCanvas(layerdict);
+  }
+
+  delete layerdict.pointerStates[e.pointerId];
+}
+
+function resetTransform(layerdict) {
+  layerdict.transform.panx = 0;
+  layerdict.transform.pany = 0;
+  layerdict.transform.zoom = 1;
+  redrawCanvas(layerdict);
+}
+
+function handlePointerUp(e, layerdict) {
+  if (!e.hasOwnProperty("offsetX")) {
+    // The polyfill doesn't set this properly
+    e.offsetX = e.pageX - e.currentTarget.offsetLeft;
+    e.offsetY = e.pageY - e.currentTarget.offsetTop;
+  }
+
+  e.preventDefault();
+  e.stopPropagation();
+
+  if (e.button == 2) {
+    // Reset pan and zoom on right click.
+    resetTransform(layerdict);
+    layerdict.anotherPointerTapped = false;
+    return;
+  }
+
+  // We haven't necessarily had a pointermove event since the interaction started, so make sure we update this now
+  var ptr = layerdict.pointerStates[e.pointerId];
+  ptr.distanceTravelled += Math.abs(e.offsetX - ptr.lastX) + Math.abs(e.offsetY - ptr.lastY);
+
+  if (e.button == 0 && ptr.distanceTravelled < 10 && Date.now() - ptr.downTime <= 500) {
+    if (Object.keys(layerdict.pointerStates).length == 1) {
+      if (layerdict.anotherPointerTapped) {
+        // This is the second pointer coming off of a two-finger tap
+        resetTransform(layerdict);
+      } else {
+        // This is just a regular tap
+        handleMouseClick(e, layerdict);
+      }
+      layerdict.anotherPointerTapped = false;
+    } else {
+      // This is the first finger coming off of what could become a two-finger tap
+      layerdict.anotherPointerTapped = true;
+    }
+  } else {
+    if (!settings.redrawOnDrag) {
+      redrawCanvas(layerdict);
+    }
+    layerdict.anotherPointerTapped = false;
+  }
+
+  delete layerdict.pointerStates[e.pointerId];
+}
+
+function handlePointerMove(e, layerdict) {
+  if (!layerdict.pointerStates.hasOwnProperty(e.pointerId)) {
+    return;
+  }
+  e.preventDefault();
+  e.stopPropagation();
+
+  if (!e.hasOwnProperty("offsetX")) {
+    // The polyfill doesn't set this properly
+    e.offsetX = e.pageX - e.currentTarget.offsetLeft;
+    e.offsetY = e.pageY - e.currentTarget.offsetTop;
+  }
+
+  var thisPtr = layerdict.pointerStates[e.pointerId];
+
+  var dx = e.offsetX - thisPtr.lastX;
+  var dy = e.offsetY - thisPtr.lastY;
+
+  // If this number is low on pointer up, we count the action as a click
+  thisPtr.distanceTravelled += Math.abs(dx) + Math.abs(dy);
+
+  if (Object.keys(layerdict.pointerStates).length == 1) {
+    // This is a simple drag
+    layerdict.transform.panx += devicePixelRatio * dx / layerdict.transform.zoom;
+    layerdict.transform.pany += devicePixelRatio * dy / layerdict.transform.zoom;
+  } else if (Object.keys(layerdict.pointerStates).length == 2) {
+    var otherPtr = Object.values(layerdict.pointerStates).filter((ptr) => ptr != thisPtr)[0];
+
+    var oldDist = Math.sqrt(Math.pow(thisPtr.lastX - otherPtr.lastX, 2) + Math.pow(thisPtr.lastY - otherPtr.lastY, 2));
+    var newDist = Math.sqrt(Math.pow(e.offsetX - otherPtr.lastX, 2) + Math.pow(e.offsetY - otherPtr.lastY, 2));
+
+    var scaleFactor = newDist / oldDist;
+
+    if (scaleFactor != NaN) {
+      layerdict.transform.zoom *= scaleFactor;
+
+      var zoomd = (1 - scaleFactor) / layerdict.transform.zoom;
+      layerdict.transform.panx += devicePixelRatio * otherPtr.lastX * zoomd;
+      layerdict.transform.pany += devicePixelRatio * otherPtr.lastY * zoomd;
+    }
+  }
+
+  thisPtr.lastX = e.offsetX;
+  thisPtr.lastY = e.offsetY;
+
+  if (settings.redrawOnDrag) {
+    redrawCanvas(layerdict);
+  }
+}
+
+function handleMouseWheel(e, layerdict) {
+  e.preventDefault();
+  e.stopPropagation();
+  var t = layerdict.transform;
+  var wheeldelta = e.deltaY;
+  if (e.deltaMode == 1) {
+    // FF only, scroll by lines
+    wheeldelta *= 30;
+  } else if (e.deltaMode == 2) {
+    wheeldelta *= 300;
+  }
+  var m = Math.pow(1.1, -wheeldelta / 40);
+  // Limit amount of zoom per tick.
+  if (m > 2) {
+    m = 2;
+  } else if (m < 0.5) {
+    m = 0.5;
+  }
+  t.zoom *= m;
+  var zoomd = (1 - m) / t.zoom;
+  t.panx += devicePixelRatio * e.offsetX * zoomd;
+  t.pany += devicePixelRatio * e.offsetY * zoomd;
+  redrawCanvas(layerdict);
+}
+
+function addMouseHandlers(div, layerdict) {
+  div.addEventListener("pointerdown", function(e) {
+    handlePointerDown(e, layerdict);
+  });
+  div.addEventListener("pointermove", function(e) {
+    handlePointerMove(e, layerdict);
+  });
+  div.addEventListener("pointerup", function(e) {
+    handlePointerUp(e, layerdict);
+  });
+  var pointerleave = function(e) {
+    handlePointerLeave(e, layerdict);
+  }
+  div.addEventListener("pointercancel", pointerleave);
+  div.addEventListener("pointerleave", pointerleave);
+  div.addEventListener("pointerout", pointerleave);
+
+  div.onwheel = function(e) {
+    handleMouseWheel(e, layerdict);
+  }
+  for (var element of [div, layerdict.bg, layerdict.fab, layerdict.silk, layerdict.highlight]) {
+    element.addEventListener("contextmenu", function(e) {
+      e.preventDefault();
+    }, false);
+  }
+}
+
+function setRedrawOnDrag(value) {
+  settings.redrawOnDrag = value;
+  writeStorage("redrawOnDrag", value);
+}
+
+function setBoardRotation(value) {
+  settings.boardRotation = value * 5;
+  writeStorage("boardRotation", settings.boardRotation);
+  document.getElementById("rotationDegree").textContent = settings.boardRotation;
+  resizeAll();
+}
+
+function setOffsetBackRotation(value) {
+  settings.offsetBackRotation = value;
+  writeStorage("offsetBackRotation", value);
+  resizeAll();
+}
+
+function initRender() {
+  allcanvas = {
+    front: {
+      transform: {
+        x: 0,
+        y: 0,
+        s: 1,
+        panx: 0,
+        pany: 0,
+        zoom: 1,
+      },
+      pointerStates: {},
+      anotherPointerTapped: false,
+      bg: document.getElementById("F_bg"),
+      fab: document.getElementById("F_fab"),
+      silk: document.getElementById("F_slk"),
+      highlight: document.getElementById("F_hl"),
+      layer: "F",
+    },
+    back: {
+      transform: {
+        x: 0,
+        y: 0,
+        s: 1,
+        panx: 0,
+        pany: 0,
+        zoom: 1,
+      },
+      pointerStates: {},
+      anotherPointerTapped: false,
+      bg: document.getElementById("B_bg"),
+      fab: document.getElementById("B_fab"),
+      silk: document.getElementById("B_slk"),
+      highlight: document.getElementById("B_hl"),
+      layer: "B",
+    }
+  };
+  addMouseHandlers(document.getElementById("frontcanvas"), allcanvas.front);
+  addMouseHandlers(document.getElementById("backcanvas"), allcanvas.back);
+}
+
+///////////////////////////////////////////////
+
+///////////////////////////////////////////////
+/*
+ * Table reordering via Drag'n'Drop
+ * Inspired by: https://htmldom.dev/drag-and-drop-table-column
+ */
+
+function setBomHandlers() {
+
+  const bom = document.getElementById('bomtable');
+
+  let dragName;
+  let placeHolderElements;
+  let draggingElement;
+  let forcePopulation;
+  let xOffset;
+  let yOffset;
+  let wasDragged;
+
+  const mouseUpHandler = function(e) {
+    // Delete dragging element
+    draggingElement.remove();
+
+    // Make BOM selectable again
+    bom.style.removeProperty("userSelect");
+
+    // Remove listeners
+    document.removeEventListener('mousemove', mouseMoveHandler);
+    document.removeEventListener('mouseup', mouseUpHandler);
+
+    if (wasDragged) {
+      // Redraw whole BOM
+      populateBomTable();
+    }
+  }
+
+  const mouseMoveHandler = function(e) {
+    // Notice the dragging
+    wasDragged = true;
+
+    // Make the dragged element visible
+    draggingElement.style.removeProperty("display");
+
+    // Set elements position to mouse position
+    draggingElement.style.left = `${e.screenX - xOffset}px`;
+    draggingElement.style.top = `${e.screenY - yOffset}px`;
+
+    // Forced redrawing of BOM table
+    if (forcePopulation) {
+      forcePopulation = false;
+      // Copy array
+      phe = Array.from(placeHolderElements);
+      // populate BOM table again
+      populateBomHeader(dragName, phe);
+      populateBomBody(dragName, phe);
+    }
+
+    // Set up array of hidden columns
+    var hiddenColumns = Array.from(settings.hiddenColumns);
+    // In the ungrouped mode, quantity don't exist
+    if (settings.bommode === "ungrouped")
+      hiddenColumns.push("Quantity");
+    // If no checkbox fields can be found, we consider them hidden
+    if (settings.checkboxes.length == 0)
+      hiddenColumns.push("checkboxes");
+
+    // Get table headers and group them into checkboxes, extrafields and normal headers
+    const bh = document.getElementById("bomhead");
+    headers = Array.from(bh.querySelectorAll("th"))
+    headers.shift() // numCol is not part of the columnOrder
+    headerGroups = []
+    lastCompoundClass = null;
+    for (i = 0; i < settings.columnOrder.length; i++) {
+      cElem = settings.columnOrder[i];
+      if (hiddenColumns.includes(cElem)) {
+        // Hidden columns appear as a dummy element
+        headerGroups.push([]);
+        continue;
+      }
+      elem = headers.filter(e => getColumnOrderName(e) === cElem)[0];
+      if (elem.classList.contains("bom-checkbox")) {
+        if (lastCompoundClass === "bom-checkbox") {
+          cbGroup = headerGroups.pop();
+          cbGroup.push(elem);
+          headerGroups.push(cbGroup);
+        } else {
+          lastCompoundClass = "bom-checkbox";
+          headerGroups.push([elem])
+        }
+      } else {
+        headerGroups.push([elem])
+      }
+    }
+
+    // Copy settings.columnOrder
+    var columns = Array.from(settings.columnOrder)
+
+    // Set up array with indices of hidden columns
+    var hiddenIndices = hiddenColumns.map(e => settings.columnOrder.indexOf(e));
+    var dragIndex = columns.indexOf(dragName);
+    var swapIndex = dragIndex;
+    var swapDone = false;
+
+    // Check if the current dragged element is swapable with the left or right element
+    if (dragIndex > 0) {
+      // Get left headers boundingbox
+      swapIndex = dragIndex - 1;
+      while (hiddenIndices.includes(swapIndex) && swapIndex > 0)
+        swapIndex--;
+      if (!hiddenIndices.includes(swapIndex)) {
+        box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
+        if (e.clientX < box.left + window.scrollX + (box.width / 2)) {
+          swapElement = columns[dragIndex];
+          columns.splice(dragIndex, 1);
+          columns.splice(swapIndex, 0, swapElement);
+          forcePopulation = true;
+          swapDone = true;
+        }
+      }
+    }
+    if ((!swapDone) && dragIndex < headerGroups.length - 1) {
+      // Get right headers boundingbox
+      swapIndex = dragIndex + 1;
+      while (hiddenIndices.includes(swapIndex))
+        swapIndex++;
+      if (swapIndex < headerGroups.length) {
+        box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
+        if (e.clientX > box.left + window.scrollX + (box.width / 2)) {
+          swapElement = columns[dragIndex];
+          columns.splice(dragIndex, 1);
+          columns.splice(swapIndex, 0, swapElement);
+          forcePopulation = true;
+          swapDone = true;
+        }
+      }
+    }
+
+    // Write back change to storage
+    if (swapDone) {
+      settings.columnOrder = columns
+      writeStorage("columnOrder", JSON.stringify(columns));
+    }
+
+  }
+
+  const mouseDownHandler = function(e) {
+    var target = e.target;
+    if (target.tagName.toLowerCase() != "td")
+      target = target.parentElement;
+
+    // Used to check if a dragging has ever happened
+    wasDragged = false;
+
+    // Create new element which will be displayed as the dragged column
+    draggingElement = document.createElement("div")
+    draggingElement.classList.add("dragging");
+    draggingElement.style.display = "none";
+    draggingElement.style.position = "absolute";
+    draggingElement.style.overflow = "hidden";
+
+    // Get bomhead and bombody elements
+    const bh = document.getElementById("bomhead");
+    const bb = document.getElementById("bombody");
+
+    // Get all compound headers for the current column
+    var compoundHeaders;
+    if (target.classList.contains("bom-checkbox")) {
+      compoundHeaders = Array.from(bh.querySelectorAll("th.bom-checkbox"));
+    } else {
+      compoundHeaders = [target];
+    }
+
+    // Create new table which will display the column
+    var newTable = document.createElement("table");
+    newTable.classList.add("bom");
+    newTable.style.background = "white";
+    draggingElement.append(newTable);
+
+    // Create new header element
+    var newHeader = document.createElement("thead");
+    newTable.append(newHeader);
+
+    // Set up array for storing all placeholder elements
+    placeHolderElements = [];
+
+    // Add all compound headers to the new thead element and placeholders
+    compoundHeaders.forEach(function(h) {
+      clone = cloneElementWithDimensions(h);
+      newHeader.append(clone);
+      placeHolderElements.push(clone);
+    });
+
+    // Create new body element
+    var newBody = document.createElement("tbody");
+    newTable.append(newBody);
+
+    // Get indices for compound headers
+    var idxs = compoundHeaders.map(e => getBomTableHeaderIndex(e));
+
+    // For each row in the BOM body...
+    var rows = bb.querySelectorAll("tr");
+    rows.forEach(function(row) {
+      // ..get the cells for the compound column
+      const tds = row.querySelectorAll("td");
+      var copytds = idxs.map(i => tds[i]);
+      // Add them to the new element and the placeholders
+      var newRow = document.createElement("tr");
+      copytds.forEach(function(td) {
+        clone = cloneElementWithDimensions(td);
+        newRow.append(clone);
+        placeHolderElements.push(clone);
+      });
+      newBody.append(newRow);
+    });
+
+    // Compute width for compound header
+    var width = compoundHeaders.reduce((acc, x) => acc + x.clientWidth, 0);
+    draggingElement.style.width = `${width}px`;
+
+    // Insert the new dragging element and disable selection on BOM
+    bom.insertBefore(draggingElement, null);
+    bom.style.userSelect = "none";
+
+    // Determine the mouse position offset
+    xOffset = e.screenX - compoundHeaders.reduce((acc, x) => Math.min(acc, x.offsetLeft), compoundHeaders[0].offsetLeft);
+    yOffset = e.screenY - compoundHeaders[0].offsetTop;
+
+    // Get name for the column in settings.columnOrder
+    dragName = getColumnOrderName(target);
+
+    // Change text and class for placeholder elements
+    placeHolderElements = placeHolderElements.map(function(e) {
+      newElem = cloneElementWithDimensions(e);
+      newElem.textContent = "";
+      newElem.classList.add("placeholder");
+      return newElem;
+    });
+
+    // On next mouse move, the whole BOM needs to be redrawn to show the placeholders
+    forcePopulation = true;
+
+    // Add listeners for move and up on mouse
+    document.addEventListener('mousemove', mouseMoveHandler);
+    document.addEventListener('mouseup', mouseUpHandler);
+  }
+
+  // In netlist mode, there is nothing to reorder
+  if (settings.bommode === "netlist")
+    return;
+
+  // Add mouseDownHandler to every column except the numCol
+  bom.querySelectorAll("th")
+    .forEach(function(head) {
+      if (!head.classList.contains("numCol")) {
+        head.onmousedown = mouseDownHandler;
+      }
+    });
+
+}
+
+function getBoundingClientRectFromMultiple(elements) {
+  var elems = Array.from(elements);
+
+  if (elems.length == 0)
+    return null;
+
+  var box = elems.shift()
+    .getBoundingClientRect();
+
+  elems.forEach(function(elem) {
+    var elembox = elem.getBoundingClientRect();
+    box.left = Math.min(elembox.left, box.left);
+    box.top = Math.min(elembox.top, box.top);
+    box.width += elembox.width;
+    box.height = Math.max(elembox.height, box.height);
+  });
+
+  return box;
+}
+
+function cloneElementWithDimensions(elem) {
+  var newElem = elem.cloneNode(true);
+  newElem.style.height = window.getComputedStyle(elem).height;
+  newElem.style.width = window.getComputedStyle(elem).width;
+  return newElem;
+}
+
+function getBomTableHeaderIndex(elem) {
+  const bh = document.getElementById('bomhead');
+  const ths = Array.from(bh.querySelectorAll("th"));
+  return ths.indexOf(elem);
+}
+
+function getColumnOrderName(elem) {
+  var cname = elem.getAttribute("col_name");
+  if (cname === "bom-checkbox")
+    return "checkboxes";
+  else
+    return cname;
+}
+
+function resizableGrid(tablehead) {
+  var cols = tablehead.firstElementChild.children;
+  var rowWidth = tablehead.offsetWidth;
+
+  for (var i = 1; i < cols.length; i++) {
+    if (cols[i].classList.contains("bom-checkbox"))
+      continue;
+    cols[i].style.width = ((cols[i].clientWidth - paddingDiff(cols[i])) * 100 / rowWidth) + '%';
+  }
+
+  for (var i = 1; i < cols.length - 1; i++) {
+    var div = document.createElement('div');
+    div.className = "column-width-handle";
+    cols[i].appendChild(div);
+    setListeners(div);
+  }
+
+  function setListeners(div) {
+    var startX, curCol, nxtCol, curColWidth, nxtColWidth, rowWidth;
+
+    div.addEventListener('mousedown', function(e) {
+      e.preventDefault();
+      e.stopPropagation();
+
+      curCol = e.target.parentElement;
+      nxtCol = curCol.nextElementSibling;
+      startX = e.pageX;
+
+      var padding = paddingDiff(curCol);
+
+      rowWidth = curCol.parentElement.offsetWidth;
+      curColWidth = curCol.clientWidth - padding;
+      nxtColWidth = nxtCol.clientWidth - padding;
+    });
+
+    document.addEventListener('mousemove', function(e) {
+      if (startX) {
+        var diffX = e.pageX - startX;
+        diffX = -Math.min(-diffX, curColWidth - 20);
+        diffX = Math.min(diffX, nxtColWidth - 20);
+
+        curCol.style.width = ((curColWidth + diffX) * 100 / rowWidth) + '%';
+        nxtCol.style.width = ((nxtColWidth - diffX) * 100 / rowWidth) + '%';
+        console.log(`${curColWidth + nxtColWidth} ${(curColWidth + diffX) * 100 / rowWidth + (nxtColWidth - diffX) * 100 / rowWidth}`);
+      }
+    });
+
+    document.addEventListener('mouseup', function(e) {
+      curCol = undefined;
+      nxtCol = undefined;
+      startX = undefined;
+      nxtColWidth = undefined;
+      curColWidth = undefined
+    });
+  }
+
+  function paddingDiff(col) {
+
+    if (getStyleVal(col, 'box-sizing') == 'border-box') {
+      return 0;
+    }
+
+    var padLeft = getStyleVal(col, 'padding-left');
+    var padRight = getStyleVal(col, 'padding-right');
+    return (parseInt(padLeft) + parseInt(padRight));
+
+  }
+
+  function getStyleVal(elm, css) {
+    return (window.getComputedStyle(elm, null).getPropertyValue(css))
+  }
+}
+
+///////////////////////////////////////////////
+
+///////////////////////////////////////////////
+/* DOM manipulation and misc code */
+
+var bomsplit;
+var canvassplit;
+var initDone = false;
+var bomSortFunction = null;
+var currentSortColumn = null;
+var currentSortOrder = null;
+var currentHighlightedRowId;
+var highlightHandlers = [];
+var footprintIndexToHandler = {};
+var netsToHandler = {};
+var markedFootprints = new Set();
+var highlightedFootprints = [];
+var highlightedNet = null;
+var lastClicked;
+
+function dbg(html) {
+  dbgdiv.innerHTML = html;
+}
+
+function redrawIfInitDone() {
+  if (initDone) {
+    redrawCanvas(allcanvas.front);
+    redrawCanvas(allcanvas.back);
+  }
+}
+
+function padsVisible(value) {
+  writeStorage("padsVisible", value);
+  settings.renderPads = value;
+  redrawIfInitDone();
+}
+
+function referencesVisible(value) {
+  writeStorage("referencesVisible", value);
+  settings.renderReferences = value;
+  redrawIfInitDone();
+}
+
+function valuesVisible(value) {
+  writeStorage("valuesVisible", value);
+  settings.renderValues = value;
+  redrawIfInitDone();
+}
+
+function tracksVisible(value) {
+  writeStorage("tracksVisible", value);
+  settings.renderTracks = value;
+  redrawIfInitDone();
+}
+
+function zonesVisible(value) {
+  writeStorage("zonesVisible", value);
+  settings.renderZones = value;
+  redrawIfInitDone();
+}
+
+function dnpOutline(value) {
+  writeStorage("dnpOutline", value);
+  settings.renderDnpOutline = value;
+  redrawIfInitDone();
+}
+
+function setDarkMode(value) {
+  if (value) {
+    topmostdiv.classList.add("dark");
+  } else {
+    topmostdiv.classList.remove("dark");
+  }
+  writeStorage("darkmode", value);
+  settings.darkMode = value;
+  redrawIfInitDone();
+  if (initDone) {
+    populateBomTable();
+  }
+}
+
+function setShowBOMColumn(field, value) {
+  if (field === "references") {
+    var rl = document.getElementById("reflookup");
+    rl.disabled = !value;
+    if (!value) {
+      rl.value = "";
+      updateRefLookup("");
+    }
+  }
+
+  var n = settings.hiddenColumns.indexOf(field);
+  if (value) {
+    if (n != -1) {
+      settings.hiddenColumns.splice(n, 1);
+    }
+  } else {
+    if (n == -1) {
+      settings.hiddenColumns.push(field);
+    }
+  }
+
+  writeStorage("hiddenColumns", JSON.stringify(settings.hiddenColumns));
+
+  if (initDone) {
+    populateBomTable();
+  }
+
+  redrawIfInitDone();
+}
+
+
+function setFullscreen(value) {
+  if (value) {
+    document.documentElement.requestFullscreen();
+  } else {
+    document.exitFullscreen();
+  }
+}
+
+function fabricationVisible(value) {
+  writeStorage("fabricationVisible", value);
+  settings.renderFabrication = value;
+  redrawIfInitDone();
+}
+
+function silkscreenVisible(value) {
+  writeStorage("silkscreenVisible", value);
+  settings.renderSilkscreen = value;
+  redrawIfInitDone();
+}
+
+function setHighlightPin1(value) {
+  writeStorage("highlightpin1", value);
+  settings.highlightpin1 = value;
+  redrawIfInitDone();
+}
+
+function getStoredCheckboxRefs(checkbox) {
+  function convert(ref) {
+    var intref = parseInt(ref);
+    if (isNaN(intref)) {
+      for (var i = 0; i < pcbdata.footprints.length; i++) {
+        if (pcbdata.footprints[i].ref == ref) {
+          return i;
+        }
+      }
+      return -1;
+    } else {
+      return intref;
+    }
+  }
+  if (!(checkbox in settings.checkboxStoredRefs)) {
+    var val = readStorage("checkbox_" + checkbox);
+    settings.checkboxStoredRefs[checkbox] = val ? val : "";
+  }
+  if (!settings.checkboxStoredRefs[checkbox]) {
+    return new Set();
+  } else {
+    return new Set(settings.checkboxStoredRefs[checkbox].split(",").map(r => convert(r)).filter(a => a >= 0));
+  }
+}
+
+function getCheckboxState(checkbox, references) {
+  var storedRefsSet = getStoredCheckboxRefs(checkbox);
+  var currentRefsSet = new Set(references.map(r => r[1]));
+  // Get difference of current - stored
+  var difference = new Set(currentRefsSet);
+  for (ref of storedRefsSet) {
+    difference.delete(ref);
+  }
+  if (difference.size == 0) {
+    // All the current refs are stored
+    return "checked";
+  } else if (difference.size == currentRefsSet.size) {
+    // None of the current refs are stored
+    return "unchecked";
+  } else {
+    // Some of the refs are stored
+    return "indeterminate";
+  }
+}
+
+function setBomCheckboxState(checkbox, element, references) {
+  var state = getCheckboxState(checkbox, references);
+  element.checked = (state == "checked");
+  element.indeterminate = (state == "indeterminate");
+}
+
+function createCheckboxChangeHandler(checkbox, references, row) {
+  return function () {
+    refsSet = getStoredCheckboxRefs(checkbox);
+    var markWhenChecked = settings.markWhenChecked == checkbox;
+    eventArgs = {
+      checkbox: checkbox,
+      refs: references,
+    }
+    if (this.checked) {
+      // checkbox ticked
+      for (var ref of references) {
+        refsSet.add(ref[1]);
+      }
+      if (markWhenChecked) {
+        row.classList.add("checked");
+        for (var ref of references) {
+          markedFootprints.add(ref[1]);
+        }
+        drawHighlights();
+      }
+      eventArgs.state = 'checked';
+    } else {
+      // checkbox unticked
+      for (var ref of references) {
+        refsSet.delete(ref[1]);
+      }
+      if (markWhenChecked) {
+        row.classList.remove("checked");
+        for (var ref of references) {
+          markedFootprints.delete(ref[1]);
+        }
+        drawHighlights();
+      }
+      eventArgs.state = 'unchecked';
+    }
+    settings.checkboxStoredRefs[checkbox] = [...refsSet].join(",");
+    writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
+    updateCheckboxStats(checkbox);
+    EventHandler.emitEvent(IBOM_EVENT_TYPES.CHECKBOX_CHANGE_EVENT, eventArgs);
+  }
+}
+
+function clearHighlightedFootprints() {
+  if (currentHighlightedRowId) {
+    document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
+    currentHighlightedRowId = null;
+    highlightedFootprints = [];
+    highlightedNet = null;
+  }
+}
+
+function createRowHighlightHandler(rowid, refs, net) {
+  return function () {
+    if (currentHighlightedRowId) {
+      if (currentHighlightedRowId == rowid) {
+        return;
+      }
+      document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
+    }
+    document.getElementById(rowid).classList.add("highlighted");
+    currentHighlightedRowId = rowid;
+    highlightedFootprints = refs ? refs.map(r => r[1]) : [];
+    highlightedNet = net;
+    drawHighlights();
+    EventHandler.emitEvent(
+      IBOM_EVENT_TYPES.HIGHLIGHT_EVENT, {
+      rowid: rowid,
+      refs: refs,
+      net: net
+    });
+  }
+}
+
+function updateNetColors() {
+  writeStorage("netColors", JSON.stringify(settings.netColors));
+  redrawIfInitDone();
+}
+
+function netColorChangeHandler(net) {
+  return (event) => {
+    settings.netColors[net] = event.target.value;
+    updateNetColors();
+  }
+}
+
+function netColorRightClick(net) {
+  return (event) => {
+    if (event.button == 2) {
+      event.preventDefault();
+      event.stopPropagation();
+
+      var style = getComputedStyle(topmostdiv);
+      var defaultNetColor = style.getPropertyValue('--track-color').trim();
+      event.target.value = defaultNetColor;
+      delete settings.netColors[net];
+      updateNetColors();
+    }
+  }
+}
+
+function entryMatches(entry) {
+  if (settings.bommode == "netlist") {
+    // entry is just a net name
+    return entry.toLowerCase().indexOf(filter) >= 0;
+  }
+  // check refs
+  if (!settings.hiddenColumns.includes("references")) {
+    for (var ref of entry) {
+      if (ref[0].toLowerCase().indexOf(filter) >= 0) {
+        return true;
+      }
+    }
+  }
+  // check fields
+  for (var i in config.fields) {
+    var f = config.fields[i];
+    if (!settings.hiddenColumns.includes(f)) {
+      for (var ref of entry) {
+        if (String(pcbdata.bom.fields[ref[1]][i]).toLowerCase().indexOf(filter) >= 0) {
+          return true;
+        }
+      }
+    }
+  }
+  return false;
+}
+
+function findRefInEntry(entry) {
+  return entry.filter(r => r[0].toLowerCase() == reflookup);
+}
+
+function highlightFilter(s) {
+  if (!filter) {
+    return s;
+  }
+  var parts = s.toLowerCase().split(filter);
+  if (parts.length == 1) {
+    return s;
+  }
+  var r = "";
+  var pos = 0;
+  for (var i in parts) {
+    if (i > 0) {
+      r += '<mark class="highlight">' +
+        s.substring(pos, pos + filter.length) +
+        '</mark>';
+      pos += filter.length;
+    }
+    r += s.substring(pos, pos + parts[i].length);
+    pos += parts[i].length;
+  }
+  return r;
+}
+
+function checkboxSetUnsetAllHandler(checkboxname) {
+  return function () {
+    var checkboxnum = 0;
+    while (checkboxnum < settings.checkboxes.length &&
+      settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
+      checkboxnum++;
+    }
+    if (checkboxnum >= settings.checkboxes.length) {
+      return;
+    }
+    var allset = true;
+    var checkbox;
+    var row;
+    for (row of bombody.childNodes) {
+      checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
+      if (!checkbox.checked || checkbox.indeterminate) {
+        allset = false;
+        break;
+      }
+    }
+    for (row of bombody.childNodes) {
+      checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
+      checkbox.checked = !allset;
+      checkbox.indeterminate = false;
+      checkbox.onchange();
+    }
+  }
+}
+
+function createColumnHeader(name, cls, comparator, is_checkbox = false) {
+  var th = document.createElement("TH");
+  th.innerHTML = name;
+  th.classList.add(cls);
+  if (is_checkbox)
+    th.setAttribute("col_name", "bom-checkbox");
+  else
+    th.setAttribute("col_name", name);
+  var span = document.createElement("SPAN");
+  span.classList.add("sortmark");
+  span.classList.add("none");
+  th.appendChild(span);
+  var spacer = document.createElement("div");
+  spacer.className = "column-spacer";
+  th.appendChild(spacer);
+  spacer.onclick = function () {
+    if (currentSortColumn && th !== currentSortColumn) {
+      // Currently sorted by another column
+      currentSortColumn.childNodes[1].classList.remove(currentSortOrder);
+      currentSortColumn.childNodes[1].classList.add("none");
+      currentSortColumn = null;
+      currentSortOrder = null;
+    }
+    if (currentSortColumn && th === currentSortColumn) {
+      // Already sorted by this column
+      if (currentSortOrder == "asc") {
+        // Sort by this column, descending order
+        bomSortFunction = function (a, b) {
+          return -comparator(a, b);
+        }
+        currentSortColumn.childNodes[1].classList.remove("asc");
+        currentSortColumn.childNodes[1].classList.add("desc");
+        currentSortOrder = "desc";
+      } else {
+        // Unsort
+        bomSortFunction = null;
+        currentSortColumn.childNodes[1].classList.remove("desc");
+        currentSortColumn.childNodes[1].classList.add("none");
+        currentSortColumn = null;
+        currentSortOrder = null;
+      }
+    } else {
+      // Sort by this column, ascending order
+      bomSortFunction = comparator;
+      currentSortColumn = th;
+      currentSortColumn.childNodes[1].classList.remove("none");
+      currentSortColumn.childNodes[1].classList.add("asc");
+      currentSortOrder = "asc";
+    }
+    populateBomBody();
+  }
+  if (is_checkbox) {
+    spacer.onclick = fancyDblClickHandler(
+      spacer, spacer.onclick, checkboxSetUnsetAllHandler(name));
+  }
+  return th;
+}
+
+function populateBomHeader(placeHolderColumn = null, placeHolderElements = null) {
+  while (bomhead.firstChild) {
+    bomhead.removeChild(bomhead.firstChild);
+  }
+  var tr = document.createElement("TR");
+  var th = document.createElement("TH");
+  th.classList.add("numCol");
+
+  var vismenu = document.createElement("div");
+  vismenu.id = "vismenu";
+  vismenu.classList.add("menu");
+
+  var visbutton = document.createElement("div");
+  visbutton.classList.add("visbtn");
+  visbutton.classList.add("hideonprint");
+
+  var viscontent = document.createElement("div");
+  viscontent.classList.add("menu-content");
+  viscontent.id = "vismenu-content";
+
+  settings.columnOrder.forEach(column => {
+    if (typeof column !== "string")
+      return;
+
+    // Skip empty columns
+    if (column === "checkboxes" && settings.checkboxes.length == 0)
+      return;
+    else if (column === "Quantity" && settings.bommode == "ungrouped")
+      return;
+
+    var label = document.createElement("label");
+    label.classList.add("menu-label");
+
+    var input = document.createElement("input");
+    input.classList.add("visibility_checkbox");
+    input.type = "checkbox";
+    input.onchange = function (e) {
+      setShowBOMColumn(column, e.target.checked)
+    };
+    input.checked = !(settings.hiddenColumns.includes(column));
+
+    label.appendChild(input);
+    if (column.length > 0)
+      label.append(column[0].toUpperCase() + column.slice(1));
+
+    viscontent.appendChild(label);
+  });
+
+  viscontent.childNodes[0].classList.add("menu-label-top");
+
+  vismenu.appendChild(visbutton);
+  if (settings.bommode != "netlist") {
+    vismenu.appendChild(viscontent);
+    th.appendChild(vismenu);
+  }
+  tr.appendChild(th);
+
+  var checkboxCompareClosure = function (checkbox) {
+    return (a, b) => {
+      var stateA = getCheckboxState(checkbox, a);
+      var stateB = getCheckboxState(checkbox, b);
+      if (stateA > stateB) return -1;
+      if (stateA < stateB) return 1;
+      return 0;
+    }
+  }
+  var stringFieldCompareClosure = function (fieldIndex) {
+    return (a, b) => {
+      var fa = pcbdata.bom.fields[a[0][1]][fieldIndex];
+      var fb = pcbdata.bom.fields[b[0][1]][fieldIndex];
+      if (fa != fb) return fa > fb ? 1 : -1;
+      else return 0;
+    }
+  }
+  var referenceRegex = /(?<prefix>[^0-9]+)(?<number>[0-9]+)/;
+  var compareRefs = (a, b) => {
+    var ra = referenceRegex.exec(a);
+    var rb = referenceRegex.exec(b);
+    if (ra === null || rb === null) {
+      if (a != b) return a > b ? 1 : -1;
+      return 0;
+    } else {
+      if (ra.groups.prefix != rb.groups.prefix) {
+        return ra.groups.prefix > rb.groups.prefix ? 1 : -1;
+      }
+      if (ra.groups.number != rb.groups.number) {
+        return parseInt(ra.groups.number) > parseInt(rb.groups.number) ? 1 : -1;
+      }
+      return 0;
+    }
+  }
+  if (settings.bommode == "netlist") {
+    tr.appendChild(createColumnHeader("Net name", "bom-netname", (a, b) => {
+      if (a > b) return -1;
+      if (a < b) return 1;
+      return 0;
+    }));
+    tr.appendChild(createColumnHeader("Color", "bom-color", (a, b) => {
+      return 0;
+    }));
+  } else {
+    // Filter hidden columns
+    var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
+    var valueIndex = config.fields.indexOf("Value");
+    var footprintIndex = config.fields.indexOf("Footprint");
+    columns.forEach((column) => {
+      if (column === placeHolderColumn) {
+        var n = 1;
+        if (column === "checkboxes")
+          n = settings.checkboxes.length;
+        for (i = 0; i < n; i++) {
+          td = placeHolderElements.shift();
+          tr.appendChild(td);
+        }
+        return;
+      } else if (column === "checkboxes") {
+        for (var checkbox of settings.checkboxes) {
+          th = createColumnHeader(
+            checkbox, "bom-checkbox", checkboxCompareClosure(checkbox), true);
+          tr.appendChild(th);
+        }
+      } else if (column === "References") {
+        tr.appendChild(createColumnHeader("References", "references", (a, b) => {
+          var i = 0;
+          while (i < a.length && i < b.length) {
+            if (a[i] != b[i]) return compareRefs(a[i][0], b[i][0]);
+            i++;
+          }
+          return a.length - b.length;
+        }));
+      } else if (column === "Value") {
+        tr.appendChild(createColumnHeader("Value", "value", (a, b) => {
+          var ra = a[0][1], rb = b[0][1];
+          return valueCompare(
+            pcbdata.bom.parsedValues[ra], pcbdata.bom.parsedValues[rb],
+            pcbdata.bom.fields[ra][valueIndex], pcbdata.bom.fields[rb][valueIndex]);
+        }));
+        return;
+      } else if (column === "Footprint") {
+        tr.appendChild(createColumnHeader(
+          "Footprint", "footprint", stringFieldCompareClosure(footprintIndex)));
+      } else if (column === "Quantity" && settings.bommode == "grouped") {
+        tr.appendChild(createColumnHeader("Quantity", "quantity", (a, b) => {
+          return a.length - b.length;
+        }));
+      } else {
+        // Other fields
+        var i = config.fields.indexOf(column);
+        if (i < 0)
+          return;
+        tr.appendChild(createColumnHeader(
+          column, `field${i + 1}`, stringFieldCompareClosure(i)));
+      }
+    });
+  }
+  bomhead.appendChild(tr);
+}
+
+function populateBomBody(placeholderColumn = null, placeHolderElements = null) {
+  const urlRegex = /^(https?:\/\/[^\s\/$.?#][^\s]*|file:\/\/([a-zA-Z]:|\/)[^\x00]+)$/;
+  while (bom.firstChild) {
+    bom.removeChild(bom.firstChild);
+  }
+  highlightHandlers = [];
+  footprintIndexToHandler = {};
+  netsToHandler = {};
+  currentHighlightedRowId = null;
+  var first = true;
+  var style = getComputedStyle(topmostdiv);
+  var defaultNetColor = style.getPropertyValue('--track-color').trim();
+  if (settings.bommode == "netlist") {
+    bomtable = pcbdata.nets.slice();
+  } else {
+    switch (settings.canvaslayout) {
+      case 'F':
+        bomtable = pcbdata.bom.F.slice();
+        break;
+      case 'FB':
+        bomtable = pcbdata.bom.both.slice();
+        break;
+      case 'B':
+        bomtable = pcbdata.bom.B.slice();
+        break;
+    }
+    if (settings.bommode == "ungrouped") {
+      // expand bom table
+      expandedTable = []
+      for (var bomentry of bomtable) {
+        for (var ref of bomentry) {
+          expandedTable.push([ref]);
+        }
+      }
+      bomtable = expandedTable;
+    }
+  }
+  if (bomSortFunction) {
+    bomtable = bomtable.sort(bomSortFunction);
+  }
+  for (var i in bomtable) {
+    var bomentry = bomtable[i];
+    if (filter && !entryMatches(bomentry)) {
+      continue;
+    }
+    var references = null;
+    var netname = null;
+    var tr = document.createElement("TR");
+    var td = document.createElement("TD");
+    var rownum = +i + 1;
+    tr.id = "bomrow" + rownum;
+    td.textContent = rownum;
+    tr.appendChild(td);
+    if (settings.bommode == "netlist") {
+      netname = bomentry;
+      td = document.createElement("TD");
+      td.innerHTML = highlightFilter(netname ? netname : "&lt;no net&gt;");
+      tr.appendChild(td);
+      var color = settings.netColors[netname] || defaultNetColor;
+      td = document.createElement("TD");
+      var colorBox = document.createElement("INPUT");
+      colorBox.type = "color";
+      colorBox.value = color;
+      colorBox.onchange = netColorChangeHandler(netname);
+      colorBox.onmouseup = netColorRightClick(netname);
+      colorBox.oncontextmenu = (e) => e.preventDefault();
+      td.appendChild(colorBox);
+      td.classList.add("color-column");
+      tr.appendChild(td);
+    } else {
+      if (reflookup) {
+        references = findRefInEntry(bomentry);
+        if (references.length == 0) {
+          continue;
+        }
+      } else {
+        references = bomentry;
+      }
+      // Filter hidden columns
+      var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
+      columns.forEach((column) => {
+        if (column === placeholderColumn) {
+          var n = 1;
+          if (column === "checkboxes")
+            n = settings.checkboxes.length;
+          for (i = 0; i < n; i++) {
+            td = placeHolderElements.shift();
+            tr.appendChild(td);
+          }
+          return;
+        } else if (column === "checkboxes") {
+          for (var checkbox of settings.checkboxes) {
+            if (checkbox) {
+              td = document.createElement("TD");
+              var input = document.createElement("input");
+              input.type = "checkbox";
+              input.onchange = createCheckboxChangeHandler(checkbox, references, tr);
+              setBomCheckboxState(checkbox, input, references);
+              if (input.checked && settings.markWhenChecked == checkbox) {
+                tr.classList.add("checked");
+              }
+              td.appendChild(input);
+              tr.appendChild(td);
+            }
+          }
+        } else if (column === "References") {
+          td = document.createElement("TD");
+          td.innerHTML = highlightFilter(references.map(r => r[0]).join(", "));
+          tr.appendChild(td);
+        } else if (column === "Quantity" && settings.bommode == "grouped") {
+          // Quantity
+          td = document.createElement("TD");
+          td.textContent = references.length;
+          tr.appendChild(td);
+        } else {
+          // All the other fields
+          var field_index = config.fields.indexOf(column)
+          if (field_index < 0)
+            return;
+          var valueSet = new Set();
+          references.map(r => r[1]).forEach((id) => valueSet.add(pcbdata.bom.fields[id][field_index]));
+          td = document.createElement("TD");
+          var output = new Array();
+          for (let item of valueSet) {
+            const visible = highlightFilter(String(item));
+            if (typeof item === 'string' && item.match(urlRegex)) {
+              output.push(`<a href="${item}" target="_blank">${visible}</a>`);
+            } else {
+              output.push(visible);
+            }
+          }
+          td.innerHTML = output.join(", ");
+          tr.appendChild(td);
+        }
+      });
+    }
+    bom.appendChild(tr);
+    var handler = createRowHighlightHandler(tr.id, references, netname);
+    tr.onmousemove = handler;
+    highlightHandlers.push({
+      id: tr.id,
+      handler: handler,
+    });
+    if (references !== null) {
+      for (var refIndex of references.map(r => r[1])) {
+        footprintIndexToHandler[refIndex] = handler;
+      }
+    }
+    if (netname !== null) {
+      netsToHandler[netname] = handler;
+    }
+    if ((filter || reflookup) && first) {
+      handler();
+      first = false;
+    }
+  }
+  EventHandler.emitEvent(
+    IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, {
+    filter: filter,
+    reflookup: reflookup,
+    checkboxes: settings.checkboxes,
+    bommode: settings.bommode,
+  });
+}
+
+function highlightPreviousRow() {
+  if (!currentHighlightedRowId) {
+    highlightHandlers[highlightHandlers.length - 1].handler();
+  } else {
+    if (highlightHandlers.length > 1 &&
+      highlightHandlers[0].id == currentHighlightedRowId) {
+      highlightHandlers[highlightHandlers.length - 1].handler();
+    } else {
+      for (var i = 0; i < highlightHandlers.length - 1; i++) {
+        if (highlightHandlers[i + 1].id == currentHighlightedRowId) {
+          highlightHandlers[i].handler();
+          break;
+        }
+      }
+    }
+  }
+  smoothScrollToRow(currentHighlightedRowId);
+}
+
+function highlightNextRow() {
+  if (!currentHighlightedRowId) {
+    highlightHandlers[0].handler();
+  } else {
+    if (highlightHandlers.length > 1 &&
+      highlightHandlers[highlightHandlers.length - 1].id == currentHighlightedRowId) {
+      highlightHandlers[0].handler();
+    } else {
+      for (var i = 1; i < highlightHandlers.length; i++) {
+        if (highlightHandlers[i - 1].id == currentHighlightedRowId) {
+          highlightHandlers[i].handler();
+          break;
+        }
+      }
+    }
+  }
+  smoothScrollToRow(currentHighlightedRowId);
+}
+
+function populateBomTable() {
+  populateBomHeader();
+  populateBomBody();
+  setBomHandlers();
+  resizableGrid(bomhead);
+}
+
+function footprintsClicked(footprintIndexes) {
+  var lastClickedIndex = footprintIndexes.indexOf(lastClicked);
+  for (var i = 1; i <= footprintIndexes.length; i++) {
+    var refIndex = footprintIndexes[(lastClickedIndex + i) % footprintIndexes.length];
+    if (refIndex in footprintIndexToHandler) {
+      lastClicked = refIndex;
+      footprintIndexToHandler[refIndex]();
+      smoothScrollToRow(currentHighlightedRowId);
+      break;
+    }
+  }
+}
+
+function netClicked(net) {
+  if (net in netsToHandler) {
+    netsToHandler[net]();
+    smoothScrollToRow(currentHighlightedRowId);
+  } else {
+    clearHighlightedFootprints();
+    highlightedNet = net;
+    drawHighlights();
+  }
+}
+
+function updateFilter(input) {
+  filter = input.toLowerCase();
+  populateBomTable();
+}
+
+function updateRefLookup(input) {
+  reflookup = input.toLowerCase();
+  populateBomTable();
+}
+
+function changeCanvasLayout(layout) {
+  document.getElementById("fl-btn").classList.remove("depressed");
+  document.getElementById("fb-btn").classList.remove("depressed");
+  document.getElementById("bl-btn").classList.remove("depressed");
+  switch (layout) {
+    case 'F':
+      document.getElementById("fl-btn").classList.add("depressed");
+      if (settings.bomlayout != "bom-only") {
+        canvassplit.collapse(1);
+      }
+      break;
+    case 'B':
+      document.getElementById("bl-btn").classList.add("depressed");
+      if (settings.bomlayout != "bom-only") {
+        canvassplit.collapse(0);
+      }
+      break;
+    default:
+      document.getElementById("fb-btn").classList.add("depressed");
+      if (settings.bomlayout != "bom-only") {
+        canvassplit.setSizes([50, 50]);
+      }
+  }
+  settings.canvaslayout = layout;
+  writeStorage("canvaslayout", layout);
+  resizeAll();
+  changeBomMode(settings.bommode);
+}
+
+function populateMetadata() {
+  document.getElementById("title").innerHTML = pcbdata.metadata.title;
+  document.getElementById("revision").innerHTML = "Rev: " + pcbdata.metadata.revision;
+  document.getElementById("company").innerHTML = pcbdata.metadata.company;
+  document.getElementById("filedate").innerHTML = pcbdata.metadata.date;
+  if (pcbdata.metadata.title != "") {
+    document.title = pcbdata.metadata.title + " BOM";
+  }
+  // Calculate board stats
+  var fp_f = 0,
+    fp_b = 0,
+    pads_f = 0,
+    pads_b = 0,
+    pads_th = 0;
+  for (var i = 0; i < pcbdata.footprints.length; i++) {
+    if (pcbdata.bom.skipped.includes(i)) continue;
+    var mod = pcbdata.footprints[i];
+    if (mod.layer == "F") {
+      fp_f++;
+    } else {
+      fp_b++;
+    }
+    for (var pad of mod.pads) {
+      if (pad.type == "th") {
+        pads_th++;
+      } else {
+        if (pad.layers.includes("F")) {
+          pads_f++;
+        }
+        if (pad.layers.includes("B")) {
+          pads_b++;
+        }
+      }
+    }
+  }
+  document.getElementById("stats-components-front").innerHTML = fp_f;
+  document.getElementById("stats-components-back").innerHTML = fp_b;
+  document.getElementById("stats-components-total").innerHTML = fp_f + fp_b;
+  document.getElementById("stats-groups-front").innerHTML = pcbdata.bom.F.length;
+  document.getElementById("stats-groups-back").innerHTML = pcbdata.bom.B.length;
+  document.getElementById("stats-groups-total").innerHTML = pcbdata.bom.both.length;
+  document.getElementById("stats-smd-pads-front").innerHTML = pads_f;
+  document.getElementById("stats-smd-pads-back").innerHTML = pads_b;
+  document.getElementById("stats-smd-pads-total").innerHTML = pads_f + pads_b;
+  document.getElementById("stats-th-pads").innerHTML = pads_th;
+  // Update version string
+  document.getElementById("github-link").innerHTML = "InteractiveHtmlBom&nbsp;" +
+    /^v\d+\.\d+/.exec(pcbdata.ibom_version)[0];
+}
+
+function changeBomLayout(layout) {
+  document.getElementById("bom-btn").classList.remove("depressed");
+  document.getElementById("lr-btn").classList.remove("depressed");
+  document.getElementById("tb-btn").classList.remove("depressed");
+  switch (layout) {
+    case 'bom-only':
+      document.getElementById("bom-btn").classList.add("depressed");
+      if (bomsplit) {
+        bomsplit.destroy();
+        bomsplit = null;
+        canvassplit.destroy();
+        canvassplit = null;
+      }
+      document.getElementById("frontcanvas").style.display = "none";
+      document.getElementById("backcanvas").style.display = "none";
+      document.getElementById("topmostdiv").style.height = "";
+      document.getElementById("topmostdiv").style.display = "block";
+      break;
+    case 'top-bottom':
+      document.getElementById("tb-btn").classList.add("depressed");
+      document.getElementById("frontcanvas").style.display = "";
+      document.getElementById("backcanvas").style.display = "";
+      document.getElementById("topmostdiv").style.height = "100%";
+      document.getElementById("topmostdiv").style.display = "flex";
+      document.getElementById("bomdiv").classList.remove("split-horizontal");
+      document.getElementById("canvasdiv").classList.remove("split-horizontal");
+      document.getElementById("frontcanvas").classList.add("split-horizontal");
+      document.getElementById("backcanvas").classList.add("split-horizontal");
+      if (bomsplit) {
+        bomsplit.destroy();
+        bomsplit = null;
+        canvassplit.destroy();
+        canvassplit = null;
+      }
+      bomsplit = Split(['#bomdiv', '#canvasdiv'], {
+        sizes: [50, 50],
+        onDragEnd: resizeAll,
+        direction: "vertical",
+        gutterSize: 5
+      });
+      canvassplit = Split(['#frontcanvas', '#backcanvas'], {
+        sizes: [50, 50],
+        gutterSize: 5,
+        onDragEnd: resizeAll
+      });
+      break;
+    case 'left-right':
+      document.getElementById("lr-btn").classList.add("depressed");
+      document.getElementById("frontcanvas").style.display = "";
+      document.getElementById("backcanvas").style.display = "";
+      document.getElementById("topmostdiv").style.height = "100%";
+      document.getElementById("topmostdiv").style.display = "flex";
+      document.getElementById("bomdiv").classList.add("split-horizontal");
+      document.getElementById("canvasdiv").classList.add("split-horizontal");
+      document.getElementById("frontcanvas").classList.remove("split-horizontal");
+      document.getElementById("backcanvas").classList.remove("split-horizontal");
+      if (bomsplit) {
+        bomsplit.destroy();
+        bomsplit = null;
+        canvassplit.destroy();
+        canvassplit = null;
+      }
+      bomsplit = Split(['#bomdiv', '#canvasdiv'], {
+        sizes: [50, 50],
+        onDragEnd: resizeAll,
+        gutterSize: 5
+      });
+      canvassplit = Split(['#frontcanvas', '#backcanvas'], {
+        sizes: [50, 50],
+        gutterSize: 5,
+        direction: "vertical",
+        onDragEnd: resizeAll
+      });
+  }
+  settings.bomlayout = layout;
+  writeStorage("bomlayout", layout);
+  changeCanvasLayout(settings.canvaslayout);
+}
+
+function changeBomMode(mode) {
+  document.getElementById("bom-grouped-btn").classList.remove("depressed");
+  document.getElementById("bom-ungrouped-btn").classList.remove("depressed");
+  document.getElementById("bom-netlist-btn").classList.remove("depressed");
+  var chkbxs = document.getElementsByClassName("visibility_checkbox");
+
+  switch (mode) {
+    case 'grouped':
+      document.getElementById("bom-grouped-btn").classList.add("depressed");
+      for (var i = 0; i < chkbxs.length; i++) {
+        chkbxs[i].disabled = false;
+      }
+      break;
+    case 'ungrouped':
+      document.getElementById("bom-ungrouped-btn").classList.add("depressed");
+      for (var i = 0; i < chkbxs.length; i++) {
+        chkbxs[i].disabled = false;
+      }
+      break;
+    case 'netlist':
+      document.getElementById("bom-netlist-btn").classList.add("depressed");
+      for (var i = 0; i < chkbxs.length; i++) {
+        chkbxs[i].disabled = true;
+      }
+  }
+
+  writeStorage("bommode", mode);
+  if (mode != settings.bommode) {
+    settings.bommode = mode;
+    bomSortFunction = null;
+    currentSortColumn = null;
+    currentSortOrder = null;
+    clearHighlightedFootprints();
+  }
+  populateBomTable();
+}
+
+function focusFilterField() {
+  focusInputField(document.getElementById("filter"));
+}
+
+function focusRefLookupField() {
+  focusInputField(document.getElementById("reflookup"));
+}
+
+function toggleBomCheckbox(bomrowid, checkboxnum) {
+  if (!bomrowid || checkboxnum > settings.checkboxes.length) {
+    return;
+  }
+  var bomrow = document.getElementById(bomrowid);
+  var checkbox = bomrow.childNodes[checkboxnum].childNodes[0];
+  checkbox.checked = !checkbox.checked;
+  checkbox.indeterminate = false;
+  checkbox.onchange();
+}
+
+function checkBomCheckbox(bomrowid, checkboxname) {
+  var checkboxnum = 0;
+  while (checkboxnum < settings.checkboxes.length &&
+    settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
+    checkboxnum++;
+  }
+  if (!bomrowid || checkboxnum >= settings.checkboxes.length) {
+    return;
+  }
+  var bomrow = document.getElementById(bomrowid);
+  var checkbox = bomrow.childNodes[checkboxnum + 1].childNodes[0];
+  checkbox.checked = true;
+  checkbox.indeterminate = false;
+  checkbox.onchange();
+}
+
+function setBomCheckboxes(value) {
+  writeStorage("bomCheckboxes", value);
+  settings.checkboxes = value.split(",").map((e) => e.trim()).filter((e) => e);
+  prepCheckboxes();
+  populateMarkWhenCheckedOptions();
+  setMarkWhenChecked(settings.markWhenChecked);
+}
+
+function setMarkWhenChecked(value) {
+  writeStorage("markWhenChecked", value);
+  settings.markWhenChecked = value;
+  markedFootprints.clear();
+  for (var ref of (value ? getStoredCheckboxRefs(value) : [])) {
+    markedFootprints.add(ref);
+  }
+  populateBomTable();
+  drawHighlights();
+}
+
+function prepCheckboxes() {
+  var table = document.getElementById("checkbox-stats");
+  while (table.childElementCount > 1) {
+    table.removeChild(table.lastChild);
+  }
+  if (settings.checkboxes.length) {
+    table.style.display = "";
+  } else {
+    table.style.display = "none";
+  }
+  for (var checkbox of settings.checkboxes) {
+    var tr = document.createElement("TR");
+    var td = document.createElement("TD");
+    td.innerHTML = checkbox;
+    tr.appendChild(td);
+    td = document.createElement("TD");
+    td.id = "checkbox-stats-" + checkbox;
+    var progressbar = document.createElement("div");
+    progressbar.classList.add("bar");
+    td.appendChild(progressbar);
+    var text = document.createElement("div");
+    text.classList.add("text");
+    td.appendChild(text);
+    tr.appendChild(td);
+    table.appendChild(tr);
+    updateCheckboxStats(checkbox);
+  }
+}
+
+function populateMarkWhenCheckedOptions() {
+  var container = document.getElementById("markWhenCheckedContainer");
+
+  if (settings.checkboxes.length == 0) {
+    container.parentElement.style.display = "none";
+    return;
+  }
+
+  container.innerHTML = '';
+  container.parentElement.style.display = "inline-block";
+
+  function createOption(name, displayName) {
+    var id = "markWhenChecked-" + name;
+
+    var div = document.createElement("div");
+    div.classList.add("radio-container");
+
+    var input = document.createElement("input");
+    input.type = "radio";
+    input.name = "markWhenChecked";
+    input.value = name;
+    input.id = id;
+    input.onchange = () => setMarkWhenChecked(name);
+    div.appendChild(input);
+
+    // Preserve the selected element when the checkboxes change
+    if (name == settings.markWhenChecked) {
+      input.checked = true;
+    }
+
+    var label = document.createElement("label");
+    label.innerHTML = displayName;
+    label.htmlFor = id;
+    div.appendChild(label);
+
+    container.appendChild(div);
+  }
+  createOption("", "None");
+  for (var checkbox of settings.checkboxes) {
+    createOption(checkbox, checkbox);
+  }
+}
+
+function updateCheckboxStats(checkbox) {
+  var checked = getStoredCheckboxRefs(checkbox).size;
+  var total = pcbdata.footprints.length - pcbdata.bom.skipped.length;
+  var percent = checked * 100.0 / total;
+  var td = document.getElementById("checkbox-stats-" + checkbox);
+  td.firstChild.style.width = percent + "%";
+  td.lastChild.innerHTML = checked + "/" + total + " (" + Math.round(percent) + "%)";
+}
+
+function constrain(number, min, max) {
+  return Math.min(Math.max(parseInt(number), min), max);
+}
+
+document.onkeydown = function (e) {
+  switch (e.key) {
+    case "n":
+      if (document.activeElement.type == "text") {
+        return;
+      }
+      if (currentHighlightedRowId !== null) {
+        checkBomCheckbox(currentHighlightedRowId, "placed");
+        highlightNextRow();
+        e.preventDefault();
+      }
+      break;
+    case "ArrowUp":
+      highlightPreviousRow();
+      e.preventDefault();
+      break;
+    case "ArrowDown":
+      highlightNextRow();
+      e.preventDefault();
+      break;
+    case "ArrowLeft":
+    case "ArrowRight":
+      if (document.activeElement.type != "text") {
+        e.preventDefault();
+        let boardRotationElement = document.getElementById("boardRotation")
+        settings.boardRotation = parseInt(boardRotationElement.value);  // degrees / 5
+        if (e.key == "ArrowLeft") {
+          settings.boardRotation += 3;  // 15 degrees
+        }
+        else {
+          settings.boardRotation -= 3;
+        }
+        settings.boardRotation = constrain(settings.boardRotation, boardRotationElement.min, boardRotationElement.max);
+        boardRotationElement.value = settings.boardRotation
+        setBoardRotation(settings.boardRotation);
+      }
+      break;
+    default:
+      break;
+  }
+  if (e.altKey) {
+    switch (e.key) {
+      case "f":
+        focusFilterField();
+        e.preventDefault();
+        break;
+      case "r":
+        focusRefLookupField();
+        e.preventDefault();
+        break;
+      case "z":
+        changeBomLayout("bom-only");
+        e.preventDefault();
+        break;
+      case "x":
+        changeBomLayout("left-right");
+        e.preventDefault();
+        break;
+      case "c":
+        changeBomLayout("top-bottom");
+        e.preventDefault();
+        break;
+      case "v":
+        changeCanvasLayout("F");
+        e.preventDefault();
+        break;
+      case "b":
+        changeCanvasLayout("FB");
+        e.preventDefault();
+        break;
+      case "n":
+        changeCanvasLayout("B");
+        e.preventDefault();
+        break;
+      default:
+        break;
+    }
+    if (e.key >= '1' && e.key <= '9') {
+      toggleBomCheckbox(currentHighlightedRowId, parseInt(e.key));
+      e.preventDefault();
+    }
+  }
+}
+
+function hideNetlistButton() {
+  document.getElementById("bom-ungrouped-btn").classList.remove("middle-button");
+  document.getElementById("bom-ungrouped-btn").classList.add("right-most-button");
+  document.getElementById("bom-netlist-btn").style.display = "none";
+}
+
+function topToggle() {
+  var top = document.getElementById("top");
+  var toptoggle = document.getElementById("toptoggle");
+  if (top.style.display === "none") {
+    top.style.display = "flex";
+    toptoggle.classList.remove("flipped");
+  } else {
+    top.style.display = "none";
+    toptoggle.classList.add("flipped");
+  }
+}
+
+window.onload = function (e) {
+  initUtils();
+  initRender();
+  initStorage();
+  initDefaults();
+  cleanGutters();
+  populateMetadata();
+  dbgdiv = document.getElementById("dbg");
+  bom = document.getElementById("bombody");
+  bomhead = document.getElementById("bomhead");
+  filter = "";
+  reflookup = "";
+  if (!("nets" in pcbdata)) {
+    hideNetlistButton();
+  }
+  initDone = true;
+  setBomCheckboxes(document.getElementById("bomCheckboxes").value);
+  // Triggers render
+  changeBomLayout(settings.bomlayout);
+
+  // Users may leave fullscreen without touching the checkbox. Uncheck.
+  document.addEventListener('fullscreenchange', () => {
+    if (!document.fullscreenElement)
+      document.getElementById('fullscreenCheckbox').checked = false;
+  });
+}
+
+window.onresize = resizeAll;
+window.matchMedia("print").addListener(resizeAll);
+
+///////////////////////////////////////////////
+
+///////////////////////////////////////////////
+// EventHandler.registerCallback(IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, () => {
+//     for(var tr of bom.childNodes) {
+//         tr.onclick = tr.onmousemove;
+//         tr.onmousemove = null;
+//     };
+// });
+
+///////////////////////////////////////////////
+  </script>
+</head>
+
+<body>
+
+<div id="topmostdiv" class="topmostdiv">
+  <div id="top">
+    <div id="fileinfodiv">
+      <table class="fileinfo">
+        <tbody>
+          <tr>
+            <td id="title" class="title" style="width: 70%">
+              Title
+            </td>
+            <td id="revision" class="title" style="width: 30%">
+              Revision
+            </td>
+          </tr>
+          <tr>
+            <td id="company">
+              Company
+            </td>
+            <td id="filedate">
+              Date
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+    <div id="bomcontrols">
+      <div class="hideonprint menu">
+        <button class="menubtn"></button>
+        <div class="menu-content">
+          <label class="menu-label menu-label-top" style="width: calc(50% - 18px)">
+            <input id="darkmodeCheckbox" type="checkbox" onchange="setDarkMode(this.checked)">
+            Dark mode
+          </label><!-- This comment eats space! All of it!
+          --><label class="menu-label menu-label-top" style="width: calc(50% - 17px); border-left: 0;">
+            <input id="fullscreenCheckbox" type="checkbox" onchange="setFullscreen(this.checked)">
+            Full Screen
+          </label>
+          <label class="menu-label" style="width: calc(50% - 18px)">
+            <input id="fabricationCheckbox" type="checkbox" checked onchange="fabricationVisible(this.checked)">
+            Fab layer
+          </label><!-- This comment eats space! All of it!
+          --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
+            <input id="silkscreenCheckbox" type="checkbox" checked onchange="silkscreenVisible(this.checked)">
+            Silkscreen
+          </label>
+          <label class="menu-label" style="width: calc(50% - 18px)">
+            <input id="referencesCheckbox" type="checkbox" checked onchange="referencesVisible(this.checked)">
+            References
+          </label><!-- This comment eats space! All of it!
+          --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
+            <input id="valuesCheckbox" type="checkbox" checked onchange="valuesVisible(this.checked)">
+            Values
+          </label>
+          <div id="tracksAndZonesCheckboxes">
+            <label class="menu-label" style="width: calc(50% - 18px)">
+              <input id="tracksCheckbox" type="checkbox" checked onchange="tracksVisible(this.checked)">
+              Tracks
+            </label><!-- This comment eats space! All of it!
+            --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
+              <input id="zonesCheckbox" type="checkbox" checked onchange="zonesVisible(this.checked)">
+              Zones
+            </label>
+          </div>
+          <label class="menu-label" style="width: calc(50% - 18px)">
+            <input id="padsCheckbox" type="checkbox" checked onchange="padsVisible(this.checked)">
+            Pads
+          </label><!-- This comment eats space! All of it!
+          --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
+            <input id="dnpOutlineCheckbox" type="checkbox" checked onchange="dnpOutline(this.checked)">
+            DNP outlined
+          </label>
+          <label class="menu-label">
+            <input id="dragCheckbox" type="checkbox" checked onchange="setRedrawOnDrag(this.checked)">
+            Continuous redraw on drag
+          </label>
+          <label class="menu-label">
+            Highlight first pin
+            <form id="highlightpin1">
+              <div class="flexbox">
+                <label>
+                  <input type="radio" name="highlightpin1" value="none" onchange="setHighlightPin1('none')">
+                  None
+                </label>
+                <label>
+                  <input type="radio" name="highlightpin1" value="all" onchange="setHighlightPin1('all')">
+                  All
+                </label>
+                <label>
+                  <input type="radio" name="highlightpin1" value="selected" onchange="setHighlightPin1('selected')">
+                  Selected
+                </label>
+              </div>
+            </form>
+          </label>
+          <label class="menu-label">
+            <span>Board rotation</span>
+            <span style="float: right"><span id="rotationDegree">0</span>&#176;</span>
+            <input id="boardRotation" type="range" min="-36" max="36" value="0" class="slider" oninput="setBoardRotation(this.value)">
+          </label>
+          <label class="menu-label">
+            <input id="offsetBackRotationCheckbox" type="checkbox" onchange="setOffsetBackRotation(this.checked)">
+            Offset back rotation
+          </label>
+          <label class="menu-label">
+            <div style="margin-left: 5px">Bom checkboxes</div>
+            <input id="bomCheckboxes" class="menu-textbox" type=text
+                   oninput="setBomCheckboxes(this.value)">
+          </label>
+          <label class="menu-label">
+            <div style="margin-left: 5px">Mark when checked</div>
+            <div id="markWhenCheckedContainer"></div>
+          </label>
+          <label class="menu-label">
+            <span class="shameless-plug">
+              <span>Created using</span>
+              <a id="github-link" target="blank" href="https://github.com/openscopeproject/InteractiveHtmlBom">InteractiveHtmlBom</a>
+              <a target="blank" title="Mouse and keyboard help" href="https://github.com/openscopeproject/InteractiveHtmlBom/wiki/Usage#bom-page-mouse-actions" style="text-decoration: none;"><label class="help-link">?</label></a>
+            </span>
+          </label>
+        </div>
+      </div>
+      <div class="button-container hideonprint">
+        <button id="fl-btn" class="left-most-button" onclick="changeCanvasLayout('F')"
+                title="Front only">F
+        </button>
+        <button id="fb-btn" class="middle-button" onclick="changeCanvasLayout('FB')"
+                title="Front and Back">FB
+        </button>
+        <button id="bl-btn" class="right-most-button" onclick="changeCanvasLayout('B')"
+                title="Back only">B
+        </button>
+      </div>
+      <div class="button-container hideonprint">
+        <button id="bom-btn" class="left-most-button" onclick="changeBomLayout('bom-only')"
+                title="BOM only"></button>
+        <button id="lr-btn" class="middle-button" onclick="changeBomLayout('left-right')"
+                title="BOM left, drawings right"></button>
+        <button id="tb-btn" class="right-most-button" onclick="changeBomLayout('top-bottom')"
+                title="BOM top, drawings bot"></button>
+      </div>
+      <div class="button-container hideonprint">
+        <button id="bom-grouped-btn" class="left-most-button" onclick="changeBomMode('grouped')"
+                title="Grouped BOM"></button>
+        <button id="bom-ungrouped-btn" class="middle-button" onclick="changeBomMode('ungrouped')"
+                title="Ungrouped BOM"></button>
+        <button id="bom-netlist-btn" class="right-most-button" onclick="changeBomMode('netlist')"
+                title="Netlist"></button>
+      </div>
+      <div class="hideonprint menu">
+        <button class="statsbtn"></button>
+        <div class="menu-content">
+          <table class="stats">
+            <tbody>
+              <tr>
+                <td width="40%">Board stats</td>
+                <td>Front</td>
+                <td>Back</td>
+                <td>Total</td>
+              </tr>
+              <tr>
+                <td>Components</td>
+                <td id="stats-components-front">~</td>
+                <td id="stats-components-back">~</td>
+                <td id="stats-components-total">~</td>
+              </tr>
+              <tr>
+                <td>Groups</td>
+                <td id="stats-groups-front">~</td>
+                <td id="stats-groups-back">~</td>
+                <td id="stats-groups-total">~</td>
+              </tr>
+              <tr>
+                <td>SMD pads</td>
+                <td id="stats-smd-pads-front">~</td>
+                <td id="stats-smd-pads-back">~</td>
+                <td id="stats-smd-pads-total">~</td>
+              </tr>
+              <tr>
+                <td>TH pads</td>
+                <td colspan=3 id="stats-th-pads">~</td>
+              </tr>
+            </tbody>
+          </table>
+          <table class="stats">
+            <col width="40%"/><col />
+            <tbody id="checkbox-stats">
+              <tr>
+                <td colspan=2 style="border-top: 0">Checkboxes</td>
+              </tr>
+            </tbody>
+          </table>
+        </div>
+      </div>
+      <div class="hideonprint menu">
+        <button class="iobtn"></button>
+        <div class="menu-content">
+          <div class="menu-label menu-label-top">
+            <div style="margin-left: 5px;">Save board image</div>
+            <div class="flexbox">
+              <input id="render-save-width" class="menu-textbox" type="text" value="1000" placeholder="Width"
+                  style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
+              <span>X</span>
+              <input id="render-save-height" class="menu-textbox" type="text" value="1000" placeholder="Height"
+                  style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
+            </div>
+            <label>
+              <input id="render-save-transparent" type="checkbox">
+              Transparent background
+            </label>
+            <div class="flexbox">
+              <button class="savebtn" onclick="saveImage('F')">Front</button>
+              <button class="savebtn" onclick="saveImage('B')">Back</button>
+            </div>
+          </div>
+          <div class="menu-label">
+            <span style="margin-left: 5px;">Config and checkbox state</span>
+            <div class="flexbox">
+              <button class="savebtn" onclick="saveSettings()">Export</button>
+              <button class="savebtn" onclick="loadSettings()">Import</button>
+              <button class="savebtn" onclick="resetSettings()">Reset</button>
+            </div>
+          </div>
+          <div class="menu-label">
+            <span style="margin-left: 5px;">Save bom table as</span>
+            <div class="flexbox">
+              <button class="savebtn" onclick="saveBomTable('csv')">csv</button>
+              <button class="savebtn" onclick="saveBomTable('txt')">txt</button>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+  <div id="topdivider">
+    <div class="hideonprint">
+      <div id="toptoggle" onclick="topToggle()">︽</div>
+    </div>
+  </div>
+  <div id="bot" class="split" style="flex: 1 1">
+    <div id="bomdiv" class="split split-horizontal">
+      <div style="width: 100%">
+        <input id="reflookup" class="textbox searchbox reflookup hideonprint" type="text" placeholder="Ref lookup"
+               oninput="updateRefLookup(this.value)">
+        <input id="filter" class="textbox searchbox filter hideonprint" type="text" placeholder="Filter"
+               oninput="updateFilter(this.value)">
+        <div class="button-container hideonprint" style="float: left; margin: 0;">
+          <button id="copy" title="Copy bom table to clipboard"
+               onclick="saveBomTable('clipboard')"></button>
+        </div>
+      </div>
+      <div id="dbg"></div>
+      <table class="bom" id="bomtable">
+        <thead id="bomhead">
+        </thead>
+        <tbody id="bombody">
+        </tbody>
+      </table>
+    </div>
+    <div id="canvasdiv" class="split split-horizontal">
+      <div id="frontcanvas" class="split" touch-action="none" style="overflow: hidden">
+        <div style="position: relative; width: 100%; height: 100%;">
+          <canvas id="F_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
+          <canvas id="F_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
+          <canvas id="F_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
+          <canvas id="F_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
+        </div>
+      </div>
+      <div id="backcanvas" class="split" touch-action="none" style="overflow: hidden">
+        <div style="position: relative; width: 100%; height: 100%;">
+          <canvas id="B_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
+          <canvas id="B_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
+          <canvas id="B_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
+          <canvas id="B_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+
+</body>
+
+</html>
-- 
GitLab