diff --git a/app.js b/app.js
new file mode 100644
index 0000000..f02ba9f
--- /dev/null
+++ b/app.js
@@ -0,0 +1,113 @@
+document.addEventListener("DOMContentLoaded", function() {
+ particlesJS('particles-js', {
+ "particles": {
+ "number": {
+ "value": 80,
+ "density": {
+ "enable": true,
+ "value_area": 800
+ }
+ },
+ "color": {
+ "value": "#cba6f7"
+ },
+ "shape": {
+ "type": "circle",
+ "stroke": {
+ "width": 0,
+ "color": "#000000"
+ },
+ "polygon": {
+ "nb_sides": 5
+ },
+ "image": {
+ "src": "img/github.svg",
+ "width": 100,
+ "height": 100
+ }
+ },
+ "opacity": {
+ "value": 1,
+ "random": false,
+ "anim": {
+ "enable": false,
+ "speed": 1,
+ "opacity_min": 0.1,
+ "sync": false
+ }
+ },
+ "size": {
+ "value": 6,
+ "random": true,
+ "anim": {
+ "enable": false,
+ "speed": 0,
+ "size_min": 0.1,
+ "sync": false
+ }
+ },
+ "line_linked": {
+ "enable": false,
+ "distance": 150,
+ "color": "#ffffff",
+ "opacity": 0.4,
+ "width": 1
+ },
+ "move": {
+ "enable": true,
+ "speed": 2,
+ "direction": "left",
+ "random": false,
+ "straight": false,
+ "out_mode": "out",
+ "bounce": false,
+ "attract": {
+ "enable": false,
+ "rotateX": 600,
+ "rotateY": 1200
+ }
+ }
+ },
+ "interactivity": {
+ "detect_on": "canvas",
+ "events": {
+ "onhover": {
+ "enable": false,
+ "mode": "grab"
+ },
+ "onclick": {
+ "enable": false,
+ "mode": "remove"
+ },
+ "resize": true
+ },
+ "modes": {
+ "grab": {
+ "distance": 150,
+ "line_linked": {
+ "opacity": 1
+ }
+ },
+ "bubble": {
+ "distance": 400,
+ "size": 40,
+ "duration": 2,
+ "opacity": 8,
+ "speed": 3
+ },
+ "repulse": {
+ "distance": 200,
+ "duration": 0.4
+ },
+ "push": {
+ "particles_nb": 4
+ },
+ "remove": {
+ "particles_nb": 2
+ }
+ }
+ },
+ "selector": ".header",
+ "retina_detect": true
+ });
+});
diff --git a/builder/root/usr/sbin/factory_install.sh b/builder/root/usr/sbin/factory_install.sh
index 8082dc6..1cbf177 100755
--- a/builder/root/usr/sbin/factory_install.sh
+++ b/builder/root/usr/sbin/factory_install.sh
@@ -69,7 +69,7 @@ credits(){
echo "TPMD: $tpmdaemon"
echo "-=-=-=-=-=-=-=-=-=-=-"
echo "kxtzownsu - Writing KVS, Providing kernver 0 & kernver 1 files."
- echo "crossystem - Providing kernver 2 files."
+ echo "planetearth1363 - Providing kernver 2 files."
echo "miimaker - Providing kernver 3 files."
echo "OlyB - Helping me figure out the shim builder, seriously, thanks."
echo "Google - Writing the 'tpmc' command :3"
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..e45c86c
--- /dev/null
+++ b/index.html
@@ -0,0 +1,52 @@
+
+
+
+ KVS - Kernel Version Switcher
+
+
+
+
+
+
+
+
+
What is KVS?
+
KVS is a side project of mine that will change your current tpm_kernver to ANY version between 0 and 3.
+
This works using the hexdumps of 0x1008 (kernver TPM index) and tpmc
to write the hexdumps of your selected kernver to the 0x1008 TPM index.
+
+
+
How do I use this?
+
To use KVS, you must download your shim from kxtz' shim mirror
+
After downloading, flash your USB/SD with the file, I recommend Chrome Recovery Utility.
+
+
+
FAQ
+
Q: Will this brick my device?
+
A: No, KVS has no way to permanantly brick / hard brick a device. At most, it will make ChromeOS stop booting, but you will still be able to boot shims to recover the kernver index.
+
Q: What kernvers are there?
+
A: There are 4 valid kernvers, 0, 1, 2, and 3.
+
Q: What versions can I downgrade to with kernver _
+
A: Heres what versions you can downgrade to with each kernver
+
kernver 0: any
+
kernver 1: any
+
kernver 2: 112 - 119
+
kernver 3: 120 - latest
+
Q: What is the difference between kernver 0 and kernver 1?
+
A: Both kernver 0 and kernver 1 can downgrade to any version, but kernver 0 doesn't get overriden if you recover to a newer version.
+
+
+
Credits
+
kxtzownsu - Writing KVS, Providing kernver 0 & kernver 1 files.
+
planetearth1363 - Providing kernver 2 files
+
miimaker - Providing kernver 3 files
+
OlyB - Helping me with the shim builder, most of the shim builder wouldn't exist without him.
+
Google - Writing the tpmc
command :3
+
+
+
+
+
\ No newline at end of file
diff --git a/particles.json b/particles.json
new file mode 100644
index 0000000..c24e693
--- /dev/null
+++ b/particles.json
@@ -0,0 +1,110 @@
+{
+ "particles": {
+ "number": {
+ "value": 80,
+ "density": {
+ "enable": true,
+ "value_area": 800
+ }
+ },
+ "color": {
+ "value": "#cba6f7"
+ },
+ "shape": {
+ "type": "circle",
+ "stroke": {
+ "width": 0,
+ "color": "#000000"
+ },
+ "polygon": {
+ "nb_sides": 5
+ },
+ "image": {
+ "src": "img/github.svg",
+ "width": 100,
+ "height": 100
+ }
+ },
+ "opacity": {
+ "value": 1,
+ "random": false,
+ "anim": {
+ "enable": false,
+ "speed": 1,
+ "opacity_min": 0.1,
+ "sync": false
+ }
+ },
+ "size": {
+ "value": 6,
+ "random": true,
+ "anim": {
+ "enable": false,
+ "speed": 0,
+ "size_min": 0.1,
+ "sync": false
+ }
+ },
+ "line_linked": {
+ "enable": false,
+ "distance": 150,
+ "color": "#ffffff",
+ "opacity": 0.4,
+ "width": 1
+ },
+ "move": {
+ "enable": true,
+ "speed": 2,
+ "direction": "left",
+ "random": false,
+ "straight": false,
+ "out_mode": "out",
+ "bounce": false,
+ "attract": {
+ "enable": false,
+ "rotateX": 600,
+ "rotateY": 1200
+ }
+ }
+ },
+ "interactivity": {
+ "detect_on": "canvas",
+ "events": {
+ "onhover": {
+ "enable": false,
+ "mode": "grab"
+ },
+ "onclick": {
+ "enable": false,
+ "mode": "remove"
+ },
+ "resize": true
+ },
+ "modes": {
+ "grab": {
+ "distance": 150,
+ "line_linked": {
+ "opacity": 1
+ }
+ },
+ "bubble": {
+ "distance": 400,
+ "size": 40,
+ "duration": 2,
+ "opacity": 8,
+ "speed": 3
+ },
+ "repulse": {
+ "distance": 200,
+ "duration": 0.4
+ },
+ "push": {
+ "particles_nb": 4
+ },
+ "remove": {
+ "particles_nb": 2
+ }
+ }
+ },
+ "retina_detect": true
+}
\ No newline at end of file
diff --git a/style.css b/style.css
new file mode 100644
index 0000000..4f90782
--- /dev/null
+++ b/style.css
@@ -0,0 +1,64 @@
+@import url("https://fonts.googleapis.com/css2?family=Space+Grotesk&family=Sofia+Sans&family=Exo:wght@500&display=swap");
+
+body {
+ position: relative;
+ background-color: #1b1b29;
+ color: #cba6f7;
+ margin: 0;
+ padding: 0;
+ font-family: "Exo", sans-serif;
+ text-align: center;
+ justify-content: center;
+ align-items: center;
+ min-height: 100vh;
+}
+
+code {
+ background-color: #11111b;
+ color: #a6e3a1;
+ padding: 0.2%;
+}
+
+.header {
+ position: relative;
+ margin: 0;
+ width: 100%;
+ text-align: center;
+ color: #cba6f7;
+ background-color: #1e1e2e;
+}
+
+.header h1 {
+ font-size: 10vw;
+ padding-top: 3%;
+ margin: 0;
+ font-family: "Sofia Sans", sans-serif;
+}
+
+.header p{
+ padding-bottom: 3%;
+}
+
+h3 {
+ font-family: "Space Grotesk", monospace;
+ font-size: 50px;
+}
+
+.main {
+ background-color: #1b1b29;
+ height: 100vh;
+ margin-left: 3%;
+ margin-right: 3%;
+ margin-bottom: 3%;
+}
+
+#particles-js {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%; /* Match width of .header */
+ height: 100%; /* Match height of .header */
+ padding: 0;
+ z-index: -1;
+ background-color: transparent;
+}