From b02d1f5fd5087bc79503c2259a31a4e335da7afe Mon Sep 17 00:00:00 2001
From: Bernt Christian Egeland <bernt.christian.egeland@gmail.com>
Date: Sat, 21 Dec 2024 09:46:50 +0100
Subject: [PATCH 1/3] dependencies update

---
 package-lock.json | 910 ++++++++++++++++++++++++++++++++++------------
 package.json      |  16 +-
 2 files changed, 683 insertions(+), 243 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 9119a72a..afad3416 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,16 +13,16 @@
 				"@codemirror/language-data": "^6.3.1",
 				"@faker-js/faker": "^8.0.2",
 				"@heroicons/react": "^2.0.16",
-				"@next-auth/prisma-adapter": "^1.0.5",
+				"@next-auth/prisma-adapter": "1.0.7",
 				"@paralleldrive/cuid2": "^2.2.2",
 				"@prisma/client": "^5.11.0",
 				"@tanstack/react-query": "^4.20.2",
 				"@tanstack/react-query-devtools": "^4.28.0",
 				"@tanstack/react-table": "^8.9.3",
-				"@trpc/client": "^10.37.1",
-				"@trpc/next": "^10.37.1",
-				"@trpc/react-query": "^10.37.1",
-				"@trpc/server": "^10.37.1",
+				"@trpc/client": "10.45.2",
+				"@trpc/next": "10.45.2",
+				"@trpc/react-query": "10.45.2",
+				"@trpc/server": "10.45.2",
 				"@types/socket.io-client": "^3.0.0",
 				"@uiw/codemirror-extensions-classname": "^4.21.7",
 				"@uiw/codemirror-theme-okaidia": "^4.21.7",
@@ -39,9 +39,9 @@
 				"ip-address": "^8.1.0",
 				"jsonwebtoken": "^9.0.1",
 				"lru-cache": "^10.0.1",
-				"next": "^14.1.4",
-				"next-auth": "4.24.5",
-				"next-intl": "3.1.4",
+				"next": "15.1.2",
+				"next-auth": "4.24.11",
+				"next-intl": "3.26.3",
 				"next-themes": "^0.2.1",
 				"nodemailer": "^6.9.9",
 				"otplib": "^12.0.1",
@@ -1231,6 +1231,16 @@
 				"@jridgewell/sourcemap-codec": "^1.4.10"
 			}
 		},
+		"node_modules/@emnapi/runtime": {
+			"version": "1.3.1",
+			"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz",
+			"integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==",
+			"license": "MIT",
+			"optional": true,
+			"dependencies": {
+				"tslib": "^2.4.0"
+			}
+		},
 		"node_modules/@faker-js/faker": {
 			"version": "8.3.1",
 			"resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.3.1.tgz",
@@ -1247,97 +1257,423 @@
 			}
 		},
 		"node_modules/@formatjs/ecma402-abstract": {
-			"version": "1.18.0",
-			"resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.0.tgz",
-			"integrity": "sha512-PEVLoa3zBevWSCZzPIM/lvPCi8P5l4G+NXQMc/CjEiaCWgyHieUoo0nM7Bs0n/NbuQ6JpXEolivQ9pKSBHaDlA==",
-			"dependencies": {
-				"@formatjs/intl-localematcher": "0.5.2",
-				"tslib": "^2.4.0"
-			}
-		},
-		"node_modules/@formatjs/ecma402-abstract/node_modules/@formatjs/intl-localematcher": {
-			"version": "0.5.2",
-			"resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.2.tgz",
-			"integrity": "sha512-txaaE2fiBMagLrR4jYhxzFO6wEdEG4TPMqrzBAcbr4HFUYzH/YC+lg6OIzKCHm8WgDdyQevxbAAV1OgcXctuGw==",
+			"version": "2.3.1",
+			"resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.1.tgz",
+			"integrity": "sha512-Ip9uV+/MpLXWRk03U/GzeJMuPeOXpJBSB5V1tjA6kJhvqssye5J5LoYLc7Z5IAHb7nR62sRoguzrFiVCP/hnzw==",
+			"license": "MIT",
 			"dependencies": {
-				"tslib": "^2.4.0"
+				"@formatjs/fast-memoize": "2.2.5",
+				"@formatjs/intl-localematcher": "0.5.9",
+				"decimal.js": "10",
+				"tslib": "2"
 			}
 		},
 		"node_modules/@formatjs/fast-memoize": {
-			"version": "1.2.1",
-			"resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz",
-			"integrity": "sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==",
+			"version": "2.2.5",
+			"resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.5.tgz",
+			"integrity": "sha512-6PoewUMrrcqxSoBXAOJDiW1m+AmkrAj0RiXnOMD59GRaswjXhm3MDhgepXPBgonc09oSirAJTsAggzAGQf6A6g==",
+			"license": "MIT",
 			"dependencies": {
-				"tslib": "^2.1.0"
+				"tslib": "2"
 			}
 		},
 		"node_modules/@formatjs/icu-messageformat-parser": {
-			"version": "2.1.0",
-			"resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz",
-			"integrity": "sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==",
+			"version": "2.9.7",
+			"resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.9.7.tgz",
+			"integrity": "sha512-cuEHyRM5VqLQobANOjtjlgU7+qmk9Q3fDQuBiRRJ3+Wp3ZoZhpUPtUfuimZXsir6SaI2TaAJ+SLo9vLnV5QcbA==",
+			"license": "MIT",
 			"dependencies": {
-				"@formatjs/ecma402-abstract": "1.11.4",
-				"@formatjs/icu-skeleton-parser": "1.3.6",
-				"tslib": "^2.1.0"
+				"@formatjs/ecma402-abstract": "2.3.1",
+				"@formatjs/icu-skeleton-parser": "1.8.11",
+				"tslib": "2"
 			}
 		},
-		"node_modules/@formatjs/icu-messageformat-parser/node_modules/@formatjs/ecma402-abstract": {
-			"version": "1.11.4",
-			"resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz",
-			"integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==",
+		"node_modules/@formatjs/icu-skeleton-parser": {
+			"version": "1.8.11",
+			"resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.11.tgz",
+			"integrity": "sha512-8LlHHE/yL/zVJZHAX3pbKaCjZKmBIO6aJY1mkVh4RMSEu/2WRZ4Ysvv3kKXJ9M8RJLBHdnk1/dUQFdod1Dt7Dw==",
+			"license": "MIT",
 			"dependencies": {
-				"@formatjs/intl-localematcher": "0.2.25",
-				"tslib": "^2.1.0"
+				"@formatjs/ecma402-abstract": "2.3.1",
+				"tslib": "2"
 			}
 		},
-		"node_modules/@formatjs/icu-messageformat-parser/node_modules/@formatjs/intl-localematcher": {
-			"version": "0.2.25",
-			"resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz",
-			"integrity": "sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==",
+		"node_modules/@formatjs/intl-localematcher": {
+			"version": "0.5.9",
+			"resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.9.tgz",
+			"integrity": "sha512-8zkGu/sv5euxbjfZ/xmklqLyDGQSxsLqg8XOq88JW3cmJtzhCP8EtSJXlaKZnVO4beEaoiT9wj4eIoCQ9smwxA==",
+			"license": "MIT",
 			"dependencies": {
-				"tslib": "^2.1.0"
+				"tslib": "2"
 			}
 		},
-		"node_modules/@formatjs/icu-skeleton-parser": {
-			"version": "1.3.6",
-			"resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz",
-			"integrity": "sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==",
-			"dependencies": {
-				"@formatjs/ecma402-abstract": "1.11.4",
-				"tslib": "^2.1.0"
+		"node_modules/@heroicons/react": {
+			"version": "2.0.18",
+			"resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.18.tgz",
+			"integrity": "sha512-7TyMjRrZZMBPa+/5Y8lN0iyvUU/01PeMGX2+RE7cQWpEUIcb4QotzUObFkJDejj/HUH4qjP/eQ0gzzKs2f+6Yw==",
+			"peerDependencies": {
+				"react": ">= 16"
 			}
 		},
-		"node_modules/@formatjs/icu-skeleton-parser/node_modules/@formatjs/ecma402-abstract": {
-			"version": "1.11.4",
-			"resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz",
-			"integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==",
-			"dependencies": {
-				"@formatjs/intl-localematcher": "0.2.25",
-				"tslib": "^2.1.0"
+		"node_modules/@img/sharp-darwin-arm64": {
+			"version": "0.33.5",
+			"resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz",
+			"integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==",
+			"cpu": [
+				"arm64"
+			],
+			"license": "Apache-2.0",
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"engines": {
+				"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+			},
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			},
+			"optionalDependencies": {
+				"@img/sharp-libvips-darwin-arm64": "1.0.4"
 			}
 		},
-		"node_modules/@formatjs/icu-skeleton-parser/node_modules/@formatjs/intl-localematcher": {
-			"version": "0.2.25",
-			"resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz",
-			"integrity": "sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==",
-			"dependencies": {
-				"tslib": "^2.1.0"
+		"node_modules/@img/sharp-darwin-x64": {
+			"version": "0.33.5",
+			"resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz",
+			"integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==",
+			"cpu": [
+				"x64"
+			],
+			"license": "Apache-2.0",
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"engines": {
+				"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+			},
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			},
+			"optionalDependencies": {
+				"@img/sharp-libvips-darwin-x64": "1.0.4"
 			}
 		},
-		"node_modules/@formatjs/intl-localematcher": {
-			"version": "0.2.32",
-			"resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.32.tgz",
-			"integrity": "sha512-k/MEBstff4sttohyEpXxCmC3MqbUn9VvHGlZ8fauLzkbwXmVrEeyzS+4uhrvAk9DWU9/7otYWxyDox4nT/KVLQ==",
+		"node_modules/@img/sharp-libvips-darwin-arm64": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz",
+			"integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==",
+			"cpu": [
+				"arm64"
+			],
+			"license": "LGPL-3.0-or-later",
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			}
+		},
+		"node_modules/@img/sharp-libvips-darwin-x64": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz",
+			"integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==",
+			"cpu": [
+				"x64"
+			],
+			"license": "LGPL-3.0-or-later",
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			}
+		},
+		"node_modules/@img/sharp-libvips-linux-arm": {
+			"version": "1.0.5",
+			"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz",
+			"integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==",
+			"cpu": [
+				"arm"
+			],
+			"license": "LGPL-3.0-or-later",
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			}
+		},
+		"node_modules/@img/sharp-libvips-linux-arm64": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz",
+			"integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==",
+			"cpu": [
+				"arm64"
+			],
+			"license": "LGPL-3.0-or-later",
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			}
+		},
+		"node_modules/@img/sharp-libvips-linux-s390x": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz",
+			"integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==",
+			"cpu": [
+				"s390x"
+			],
+			"license": "LGPL-3.0-or-later",
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			}
+		},
+		"node_modules/@img/sharp-libvips-linux-x64": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz",
+			"integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==",
+			"cpu": [
+				"x64"
+			],
+			"license": "LGPL-3.0-or-later",
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			}
+		},
+		"node_modules/@img/sharp-libvips-linuxmusl-arm64": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz",
+			"integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==",
+			"cpu": [
+				"arm64"
+			],
+			"license": "LGPL-3.0-or-later",
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			}
+		},
+		"node_modules/@img/sharp-libvips-linuxmusl-x64": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz",
+			"integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==",
+			"cpu": [
+				"x64"
+			],
+			"license": "LGPL-3.0-or-later",
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			}
+		},
+		"node_modules/@img/sharp-linux-arm": {
+			"version": "0.33.5",
+			"resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz",
+			"integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==",
+			"cpu": [
+				"arm"
+			],
+			"license": "Apache-2.0",
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+			},
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			},
+			"optionalDependencies": {
+				"@img/sharp-libvips-linux-arm": "1.0.5"
+			}
+		},
+		"node_modules/@img/sharp-linux-arm64": {
+			"version": "0.33.5",
+			"resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz",
+			"integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==",
+			"cpu": [
+				"arm64"
+			],
+			"license": "Apache-2.0",
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+			},
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			},
+			"optionalDependencies": {
+				"@img/sharp-libvips-linux-arm64": "1.0.4"
+			}
+		},
+		"node_modules/@img/sharp-linux-s390x": {
+			"version": "0.33.5",
+			"resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz",
+			"integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==",
+			"cpu": [
+				"s390x"
+			],
+			"license": "Apache-2.0",
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+			},
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			},
+			"optionalDependencies": {
+				"@img/sharp-libvips-linux-s390x": "1.0.4"
+			}
+		},
+		"node_modules/@img/sharp-linux-x64": {
+			"version": "0.33.5",
+			"resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz",
+			"integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==",
+			"cpu": [
+				"x64"
+			],
+			"license": "Apache-2.0",
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+			},
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			},
+			"optionalDependencies": {
+				"@img/sharp-libvips-linux-x64": "1.0.4"
+			}
+		},
+		"node_modules/@img/sharp-linuxmusl-arm64": {
+			"version": "0.33.5",
+			"resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz",
+			"integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==",
+			"cpu": [
+				"arm64"
+			],
+			"license": "Apache-2.0",
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+			},
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			},
+			"optionalDependencies": {
+				"@img/sharp-libvips-linuxmusl-arm64": "1.0.4"
+			}
+		},
+		"node_modules/@img/sharp-linuxmusl-x64": {
+			"version": "0.33.5",
+			"resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz",
+			"integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==",
+			"cpu": [
+				"x64"
+			],
+			"license": "Apache-2.0",
+			"optional": true,
+			"os": [
+				"linux"
+			],
+			"engines": {
+				"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+			},
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			},
+			"optionalDependencies": {
+				"@img/sharp-libvips-linuxmusl-x64": "1.0.4"
+			}
+		},
+		"node_modules/@img/sharp-wasm32": {
+			"version": "0.33.5",
+			"resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz",
+			"integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==",
+			"cpu": [
+				"wasm32"
+			],
+			"license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
+			"optional": true,
 			"dependencies": {
-				"tslib": "^2.4.0"
+				"@emnapi/runtime": "^1.2.0"
+			},
+			"engines": {
+				"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+			},
+			"funding": {
+				"url": "https://opencollective.com/libvips"
 			}
 		},
-		"node_modules/@heroicons/react": {
-			"version": "2.0.18",
-			"resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.18.tgz",
-			"integrity": "sha512-7TyMjRrZZMBPa+/5Y8lN0iyvUU/01PeMGX2+RE7cQWpEUIcb4QotzUObFkJDejj/HUH4qjP/eQ0gzzKs2f+6Yw==",
-			"peerDependencies": {
-				"react": ">= 16"
+		"node_modules/@img/sharp-win32-ia32": {
+			"version": "0.33.5",
+			"resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz",
+			"integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==",
+			"cpu": [
+				"ia32"
+			],
+			"license": "Apache-2.0 AND LGPL-3.0-or-later",
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+			},
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			}
+		},
+		"node_modules/@img/sharp-win32-x64": {
+			"version": "0.33.5",
+			"resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz",
+			"integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==",
+			"cpu": [
+				"x64"
+			],
+			"license": "Apache-2.0 AND LGPL-3.0-or-later",
+			"optional": true,
+			"os": [
+				"win32"
+			],
+			"engines": {
+				"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+			},
+			"funding": {
+				"url": "https://opencollective.com/libvips"
 			}
 		},
 		"node_modules/@istanbuljs/load-nyc-config": {
@@ -1905,17 +2241,19 @@
 			}
 		},
 		"node_modules/@next/env": {
-			"version": "14.1.4",
-			"resolved": "https://registry.npmjs.org/@next/env/-/env-14.1.4.tgz",
-			"integrity": "sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ=="
+			"version": "15.1.2",
+			"resolved": "https://registry.npmjs.org/@next/env/-/env-15.1.2.tgz",
+			"integrity": "sha512-Hm3jIGsoUl6RLB1vzY+dZeqb+/kWPZ+h34yiWxW0dV87l8Im/eMOwpOA+a0L78U0HM04syEjXuRlCozqpwuojQ==",
+			"license": "MIT"
 		},
 		"node_modules/@next/swc-darwin-arm64": {
-			"version": "14.1.4",
-			"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.4.tgz",
-			"integrity": "sha512-ubmUkbmW65nIAOmoxT1IROZdmmJMmdYvXIe8211send9ZYJu+SqxSnJM4TrPj9wmL6g9Atvj0S/2cFmMSS99jg==",
+			"version": "15.1.2",
+			"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.1.2.tgz",
+			"integrity": "sha512-b9TN7q+j5/7+rGLhFAVZiKJGIASuo8tWvInGfAd8wsULjB1uNGRCj1z1WZwwPWzVQbIKWFYqc+9L7W09qwt52w==",
 			"cpu": [
 				"arm64"
 			],
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"darwin"
@@ -1925,12 +2263,13 @@
 			}
 		},
 		"node_modules/@next/swc-darwin-x64": {
-			"version": "14.1.4",
-			"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.4.tgz",
-			"integrity": "sha512-b0Xo1ELj3u7IkZWAKcJPJEhBop117U78l70nfoQGo4xUSvv0PJSTaV4U9xQBLvZlnjsYkc8RwQN1HoH/oQmLlQ==",
+			"version": "15.1.2",
+			"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.2.tgz",
+			"integrity": "sha512-caR62jNDUCU+qobStO6YJ05p9E+LR0EoXh1EEmyU69cYydsAy7drMcOlUlRtQihM6K6QfvNwJuLhsHcCzNpqtA==",
 			"cpu": [
 				"x64"
 			],
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"darwin"
@@ -1940,12 +2279,13 @@
 			}
 		},
 		"node_modules/@next/swc-linux-arm64-gnu": {
-			"version": "14.1.4",
-			"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.4.tgz",
-			"integrity": "sha512-457G0hcLrdYA/u1O2XkRMsDKId5VKe3uKPvrKVOyuARa6nXrdhJOOYU9hkKKyQTMru1B8qEP78IAhf/1XnVqKA==",
+			"version": "15.1.2",
+			"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.2.tgz",
+			"integrity": "sha512-fHHXBusURjBmN6VBUtu6/5s7cCeEkuGAb/ZZiGHBLVBXMBy4D5QpM8P33Or8JD1nlOjm/ZT9sEE5HouQ0F+hUA==",
 			"cpu": [
 				"arm64"
 			],
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -1955,12 +2295,13 @@
 			}
 		},
 		"node_modules/@next/swc-linux-arm64-musl": {
-			"version": "14.1.4",
-			"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.4.tgz",
-			"integrity": "sha512-l/kMG+z6MB+fKA9KdtyprkTQ1ihlJcBh66cf0HvqGP+rXBbOXX0dpJatjZbHeunvEHoBBS69GYQG5ry78JMy3g==",
+			"version": "15.1.2",
+			"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.2.tgz",
+			"integrity": "sha512-9CF1Pnivij7+M3G74lxr+e9h6o2YNIe7QtExWq1KUK4hsOLTBv6FJikEwCaC3NeYTflzrm69E5UfwEAbV2U9/g==",
 			"cpu": [
 				"arm64"
 			],
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -1970,12 +2311,13 @@
 			}
 		},
 		"node_modules/@next/swc-linux-x64-gnu": {
-			"version": "14.1.4",
-			"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.4.tgz",
-			"integrity": "sha512-BapIFZ3ZRnvQ1uWbmqEGJuPT9cgLwvKtxhK/L2t4QYO7l+/DxXuIGjvp1x8rvfa/x1FFSsipERZK70pewbtJtw==",
+			"version": "15.1.2",
+			"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.2.tgz",
+			"integrity": "sha512-tINV7WmcTUf4oM/eN3Yuu/f8jQ5C6AkueZPKeALs/qfdfX57eNv4Ij7rt0SA6iZ8+fMobVfcFVv664Op0caCCg==",
 			"cpu": [
 				"x64"
 			],
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -1985,12 +2327,13 @@
 			}
 		},
 		"node_modules/@next/swc-linux-x64-musl": {
-			"version": "14.1.4",
-			"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.4.tgz",
-			"integrity": "sha512-mqVxTwk4XuBl49qn2A5UmzFImoL1iLm0KQQwtdRJRKl21ylQwwGCxJtIYo2rbfkZHoSKlh/YgztY0qH3wG1xIg==",
+			"version": "15.1.2",
+			"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.2.tgz",
+			"integrity": "sha512-jf2IseC4WRsGkzeUw/cK3wci9pxR53GlLAt30+y+B+2qAQxMw6WAC3QrANIKxkcoPU3JFh/10uFfmoMDF9JXKg==",
 			"cpu": [
 				"x64"
 			],
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"linux"
@@ -2000,27 +2343,13 @@
 			}
 		},
 		"node_modules/@next/swc-win32-arm64-msvc": {
-			"version": "14.1.4",
-			"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.4.tgz",
-			"integrity": "sha512-xzxF4ErcumXjO2Pvg/wVGrtr9QQJLk3IyQX1ddAC/fi6/5jZCZ9xpuL9Tzc4KPWMFq8GGWFVDMshZOdHGdkvag==",
+			"version": "15.1.2",
+			"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.2.tgz",
+			"integrity": "sha512-wvg7MlfnaociP7k8lxLX4s2iBJm4BrNiNFhVUY+Yur5yhAJHfkS8qPPeDEUH8rQiY0PX3u/P7Q/wcg6Mv6GSAA==",
 			"cpu": [
 				"arm64"
 			],
-			"optional": true,
-			"os": [
-				"win32"
-			],
-			"engines": {
-				"node": ">= 10"
-			}
-		},
-		"node_modules/@next/swc-win32-ia32-msvc": {
-			"version": "14.1.4",
-			"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.4.tgz",
-			"integrity": "sha512-WZiz8OdbkpRw6/IU/lredZWKKZopUMhcI2F+XiMAcPja0uZYdMTZQRoQ0WZcvinn9xZAidimE7tN9W5v9Yyfyw==",
-			"cpu": [
-				"ia32"
-			],
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"win32"
@@ -2030,12 +2359,13 @@
 			}
 		},
 		"node_modules/@next/swc-win32-x64-msvc": {
-			"version": "14.1.4",
-			"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.4.tgz",
-			"integrity": "sha512-4Rto21sPfw555sZ/XNLqfxDUNeLhNYGO2dlPqsnuCg8N8a2a9u1ltqBOPQ4vj1Gf7eJC0W2hHG2eYUHuiXgY2w==",
+			"version": "15.1.2",
+			"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.2.tgz",
+			"integrity": "sha512-D3cNA8NoT3aWISWmo7HF5Eyko/0OdOO+VagkoJuiTk7pyX3P/b+n8XA/MYvyR+xSVcbKn68B1rY9fgqjNISqzQ==",
 			"cpu": [
 				"x64"
 			],
+			"license": "MIT",
 			"optional": true,
 			"os": [
 				"win32"
@@ -2250,12 +2580,19 @@
 			"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
 			"integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
 		},
+		"node_modules/@swc/counter": {
+			"version": "0.1.3",
+			"resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
+			"integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==",
+			"license": "Apache-2.0"
+		},
 		"node_modules/@swc/helpers": {
-			"version": "0.5.2",
-			"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz",
-			"integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==",
+			"version": "0.5.15",
+			"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz",
+			"integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==",
+			"license": "Apache-2.0",
 			"dependencies": {
-				"tslib": "^2.4.0"
+				"tslib": "^2.8.0"
 			}
 		},
 		"node_modules/@tanstack/match-sorter-utils": {
@@ -2464,61 +2801,59 @@
 			}
 		},
 		"node_modules/@trpc/client": {
-			"version": "10.44.1",
-			"resolved": "https://registry.npmjs.org/@trpc/client/-/client-10.44.1.tgz",
-			"integrity": "sha512-vTWsykNcgz1LnwePVl2fKZnhvzP9N3GaaLYPkfGINo314ZOS0OBqe9x0ytB2LLUnRVTAAZ2WoONzARd8nHiqrA==",
+			"version": "10.45.2",
+			"resolved": "https://registry.npmjs.org/@trpc/client/-/client-10.45.2.tgz",
+			"integrity": "sha512-ykALM5kYWTLn1zYuUOZ2cPWlVfrXhc18HzBDyRhoPYN0jey4iQHEFSEowfnhg1RvYnrAVjNBgHNeSAXjrDbGwg==",
 			"funding": [
 				"https://trpc.io/sponsor"
 			],
+			"license": "MIT",
 			"peerDependencies": {
-				"@trpc/server": "10.44.1"
+				"@trpc/server": "10.45.2"
 			}
 		},
 		"node_modules/@trpc/next": {
-			"version": "10.44.1",
-			"resolved": "https://registry.npmjs.org/@trpc/next/-/next-10.44.1.tgz",
-			"integrity": "sha512-ez2oYUzmaQ+pGch627sRBfeEk3h+UIwNicR8WjTAM54TPcdP5W9ZyWCyO5HZTEfjHgGixYM4tCIxewdKOWY9yA==",
+			"version": "10.45.2",
+			"resolved": "https://registry.npmjs.org/@trpc/next/-/next-10.45.2.tgz",
+			"integrity": "sha512-RSORmfC+/nXdmRY1pQ0AalsVgSzwNAFbZLYHiTvPM5QQ8wmMEHilseCYMXpu0se/TbPt9zVR6Ka2d7O6zxKkXg==",
 			"funding": [
 				"https://trpc.io/sponsor"
 			],
-			"dependencies": {
-				"react-ssr-prepass": "^1.5.0"
-			},
+			"license": "MIT",
 			"peerDependencies": {
 				"@tanstack/react-query": "^4.18.0",
-				"@trpc/client": "10.44.1",
-				"@trpc/react-query": "10.44.1",
-				"@trpc/server": "10.44.1",
+				"@trpc/client": "10.45.2",
+				"@trpc/react-query": "10.45.2",
+				"@trpc/server": "10.45.2",
 				"next": "*",
 				"react": ">=16.8.0",
 				"react-dom": ">=16.8.0"
 			}
 		},
 		"node_modules/@trpc/react-query": {
-			"version": "10.44.1",
-			"resolved": "https://registry.npmjs.org/@trpc/react-query/-/react-query-10.44.1.tgz",
-			"integrity": "sha512-Sgi/v0YtdunOXjBRi7om9gILGkOCFYXPzn5KqLuEHiZw5dr5w4qGHFwCeMAvndZxmwfblJrl1tk2AznmsVu8MA==",
+			"version": "10.45.2",
+			"resolved": "https://registry.npmjs.org/@trpc/react-query/-/react-query-10.45.2.tgz",
+			"integrity": "sha512-BAqb9bGZIscroradlNx+Cc9522R+idY3BOSf5z0jHUtkxdMbjeGKxSSMxxu7JzoLqSIEC+LVzL3VvF8sdDWaZQ==",
 			"funding": [
 				"https://trpc.io/sponsor"
 			],
+			"license": "MIT",
 			"peerDependencies": {
 				"@tanstack/react-query": "^4.18.0",
-				"@trpc/client": "10.44.1",
-				"@trpc/server": "10.44.1",
+				"@trpc/client": "10.45.2",
+				"@trpc/server": "10.45.2",
 				"react": ">=16.8.0",
 				"react-dom": ">=16.8.0"
 			}
 		},
 		"node_modules/@trpc/server": {
-			"version": "10.44.1",
-			"resolved": "https://registry.npmjs.org/@trpc/server/-/server-10.44.1.tgz",
-			"integrity": "sha512-mF7B+K6LjuboX8I1RZgKE5GA/fJhsJ8tKGK2UBt3Bwik7hepEPb4NJgNr7vO6BK5IYwPdBLRLTctRw6XZx0sRg==",
+			"version": "10.45.2",
+			"resolved": "https://registry.npmjs.org/@trpc/server/-/server-10.45.2.tgz",
+			"integrity": "sha512-wOrSThNNE4HUnuhJG6PfDRp4L2009KDVxsd+2VYH8ro6o/7/jwYZ8Uu5j+VaW+mOmc8EHerHzGcdbGNQSAUPgg==",
 			"funding": [
 				"https://trpc.io/sponsor"
 			],
-			"engines": {
-				"node": ">=18.0.0"
-			}
+			"license": "MIT"
 		},
 		"node_modules/@tsconfig/node10": {
 			"version": "1.0.9",
@@ -3695,7 +4030,8 @@
 		"node_modules/client-only": {
 			"version": "0.0.1",
 			"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
-			"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
+			"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==",
+			"license": "MIT"
 		},
 		"node_modules/cliui": {
 			"version": "8.0.1",
@@ -3741,6 +4077,20 @@
 			"integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
 			"dev": true
 		},
+		"node_modules/color": {
+			"version": "4.2.3",
+			"resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+			"integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+			"license": "MIT",
+			"optional": true,
+			"dependencies": {
+				"color-convert": "^2.0.1",
+				"color-string": "^1.9.0"
+			},
+			"engines": {
+				"node": ">=12.5.0"
+			}
+		},
 		"node_modules/color-convert": {
 			"version": "2.0.1",
 			"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -3757,6 +4107,17 @@
 			"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
 			"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
 		},
+		"node_modules/color-string": {
+			"version": "1.9.1",
+			"resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+			"integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+			"license": "MIT",
+			"optional": true,
+			"dependencies": {
+				"color-name": "^1.0.0",
+				"simple-swizzle": "^0.2.2"
+			}
+		},
 		"node_modules/combined-stream": {
 			"version": "1.0.8",
 			"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -4053,8 +4414,7 @@
 		"node_modules/decimal.js": {
 			"version": "10.4.3",
 			"resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
-			"integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
-			"dev": true
+			"integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
 		},
 		"node_modules/dedent": {
 			"version": "1.5.1",
@@ -4150,6 +4510,16 @@
 				"node": ">=0.4.0"
 			}
 		},
+		"node_modules/detect-libc": {
+			"version": "2.0.3",
+			"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+			"integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
+			"license": "Apache-2.0",
+			"optional": true,
+			"engines": {
+				"node": ">=8"
+			}
+		},
 		"node_modules/detect-newline": {
 			"version": "3.1.0",
 			"resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
@@ -5083,31 +5453,15 @@
 			}
 		},
 		"node_modules/intl-messageformat": {
-			"version": "9.13.0",
-			"resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.13.0.tgz",
-			"integrity": "sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==",
-			"dependencies": {
-				"@formatjs/ecma402-abstract": "1.11.4",
-				"@formatjs/fast-memoize": "1.2.1",
-				"@formatjs/icu-messageformat-parser": "2.1.0",
-				"tslib": "^2.1.0"
-			}
-		},
-		"node_modules/intl-messageformat/node_modules/@formatjs/ecma402-abstract": {
-			"version": "1.11.4",
-			"resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz",
-			"integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==",
-			"dependencies": {
-				"@formatjs/intl-localematcher": "0.2.25",
-				"tslib": "^2.1.0"
-			}
-		},
-		"node_modules/intl-messageformat/node_modules/@formatjs/intl-localematcher": {
-			"version": "0.2.25",
-			"resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz",
-			"integrity": "sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==",
+			"version": "10.7.10",
+			"resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.10.tgz",
+			"integrity": "sha512-hp7iejCBiJdW3zmOe18FdlJu8U/JsADSDiBPQhfdSeI8B9POtvPRvPh3nMlvhYayGMKLv6maldhR7y3Pf1vkpw==",
+			"license": "BSD-3-Clause",
 			"dependencies": {
-				"tslib": "^2.1.0"
+				"@formatjs/ecma402-abstract": "2.3.1",
+				"@formatjs/fast-memoize": "2.2.5",
+				"@formatjs/icu-messageformat-parser": "2.9.7",
+				"tslib": "2"
 			}
 		},
 		"node_modules/ip-address": {
@@ -7320,59 +7674,69 @@
 			}
 		},
 		"node_modules/next": {
-			"version": "14.1.4",
-			"resolved": "https://registry.npmjs.org/next/-/next-14.1.4.tgz",
-			"integrity": "sha512-1WTaXeSrUwlz/XcnhGTY7+8eiaFvdet5z9u3V2jb+Ek1vFo0VhHKSAIJvDWfQpttWjnyw14kBeq28TPq7bTeEQ==",
+			"version": "15.1.2",
+			"resolved": "https://registry.npmjs.org/next/-/next-15.1.2.tgz",
+			"integrity": "sha512-nLJDV7peNy+0oHlmY2JZjzMfJ8Aj0/dd3jCwSZS8ZiO5nkQfcZRqDrRN3U5rJtqVTQneIOGZzb6LCNrk7trMCQ==",
+			"license": "MIT",
 			"dependencies": {
-				"@next/env": "14.1.4",
-				"@swc/helpers": "0.5.2",
+				"@next/env": "15.1.2",
+				"@swc/counter": "0.1.3",
+				"@swc/helpers": "0.5.15",
 				"busboy": "1.6.0",
 				"caniuse-lite": "^1.0.30001579",
-				"graceful-fs": "^4.2.11",
 				"postcss": "8.4.31",
-				"styled-jsx": "5.1.1"
+				"styled-jsx": "5.1.6"
 			},
 			"bin": {
 				"next": "dist/bin/next"
 			},
 			"engines": {
-				"node": ">=18.17.0"
+				"node": "^18.18.0 || ^19.8.0 || >= 20.0.0"
 			},
 			"optionalDependencies": {
-				"@next/swc-darwin-arm64": "14.1.4",
-				"@next/swc-darwin-x64": "14.1.4",
-				"@next/swc-linux-arm64-gnu": "14.1.4",
-				"@next/swc-linux-arm64-musl": "14.1.4",
-				"@next/swc-linux-x64-gnu": "14.1.4",
-				"@next/swc-linux-x64-musl": "14.1.4",
-				"@next/swc-win32-arm64-msvc": "14.1.4",
-				"@next/swc-win32-ia32-msvc": "14.1.4",
-				"@next/swc-win32-x64-msvc": "14.1.4"
+				"@next/swc-darwin-arm64": "15.1.2",
+				"@next/swc-darwin-x64": "15.1.2",
+				"@next/swc-linux-arm64-gnu": "15.1.2",
+				"@next/swc-linux-arm64-musl": "15.1.2",
+				"@next/swc-linux-x64-gnu": "15.1.2",
+				"@next/swc-linux-x64-musl": "15.1.2",
+				"@next/swc-win32-arm64-msvc": "15.1.2",
+				"@next/swc-win32-x64-msvc": "15.1.2",
+				"sharp": "^0.33.5"
 			},
 			"peerDependencies": {
 				"@opentelemetry/api": "^1.1.0",
-				"react": "^18.2.0",
-				"react-dom": "^18.2.0",
+				"@playwright/test": "^1.41.2",
+				"babel-plugin-react-compiler": "*",
+				"react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0",
+				"react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0",
 				"sass": "^1.3.0"
 			},
 			"peerDependenciesMeta": {
 				"@opentelemetry/api": {
 					"optional": true
 				},
+				"@playwright/test": {
+					"optional": true
+				},
+				"babel-plugin-react-compiler": {
+					"optional": true
+				},
 				"sass": {
 					"optional": true
 				}
 			}
 		},
 		"node_modules/next-auth": {
-			"version": "4.24.5",
-			"resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.24.5.tgz",
-			"integrity": "sha512-3RafV3XbfIKk6rF6GlLE4/KxjTcuMCifqrmD+98ejFq73SRoj2rmzoca8u764977lH/Q7jo6Xu6yM+Re1Mz/Og==",
+			"version": "4.24.11",
+			"resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.24.11.tgz",
+			"integrity": "sha512-pCFXzIDQX7xmHFs4KVH4luCjaCbuPRtZ9oBUjUhOk84mZ9WVPf94n87TxYI4rSRf9HmfHEF8Yep3JrYDVOo3Cw==",
+			"license": "ISC",
 			"dependencies": {
 				"@babel/runtime": "^7.20.13",
 				"@panva/hkdf": "^1.0.2",
-				"cookie": "^0.5.0",
-				"jose": "^4.11.4",
+				"cookie": "^0.7.0",
+				"jose": "^4.15.5",
 				"oauth": "^0.9.15",
 				"openid-client": "^5.4.0",
 				"preact": "^10.6.3",
@@ -7380,38 +7744,49 @@
 				"uuid": "^8.3.2"
 			},
 			"peerDependencies": {
-				"next": "^12.2.5 || ^13 || ^14",
+				"@auth/core": "0.34.2",
+				"next": "^12.2.5 || ^13 || ^14 || ^15",
 				"nodemailer": "^6.6.5",
-				"react": "^17.0.2 || ^18",
-				"react-dom": "^17.0.2 || ^18"
+				"react": "^17.0.2 || ^18 || ^19",
+				"react-dom": "^17.0.2 || ^18 || ^19"
 			},
 			"peerDependenciesMeta": {
+				"@auth/core": {
+					"optional": true
+				},
 				"nodemailer": {
 					"optional": true
 				}
 			}
 		},
-		"node_modules/next-auth/node_modules/cookie": {
-			"version": "0.5.0",
-			"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
-			"integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
-			"license": "MIT",
-			"engines": {
-				"node": ">= 0.6"
-			}
-		},
 		"node_modules/next-intl": {
-			"version": "3.1.4",
-			"resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.1.4.tgz",
-			"integrity": "sha512-/mewUryIPdoZT7j+8ipN2rfWuuNGdl+xiwxWxYkYko0kGY/a2IlcgqaMBKwue5V5M17Vk9bwiydv/2wySJXG8w==",
+			"version": "3.26.3",
+			"resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.26.3.tgz",
+			"integrity": "sha512-6Y97ODrDsEE1J8cXKMHwg1laLdtkN66QMIqG8BzH4zennJRUNTtM8UMtBDyhfmF6uiZ+xsbWLXmHUgmUymUsfQ==",
+			"funding": [
+				{
+					"type": "individual",
+					"url": "https://github.com/sponsors/amannn"
+				}
+			],
+			"license": "MIT",
 			"dependencies": {
-				"@formatjs/intl-localematcher": "^0.2.32",
-				"negotiator": "^0.6.3",
-				"use-intl": "^3.1.4"
+				"@formatjs/intl-localematcher": "^0.5.4",
+				"negotiator": "^1.0.0",
+				"use-intl": "^3.26.3"
 			},
 			"peerDependencies": {
-				"next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0",
-				"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+				"next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0",
+				"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0"
+			}
+		},
+		"node_modules/next-intl/node_modules/negotiator": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
+			"integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
+			"license": "MIT",
+			"engines": {
+				"node": ">= 0.6"
 			}
 		},
 		"node_modules/next-themes": {
@@ -8233,14 +8608,6 @@
 			"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
 			"dev": true
 		},
-		"node_modules/react-ssr-prepass": {
-			"version": "1.5.0",
-			"resolved": "https://registry.npmjs.org/react-ssr-prepass/-/react-ssr-prepass-1.5.0.tgz",
-			"integrity": "sha512-yFNHrlVEReVYKsLI5lF05tZoHveA5pGzjFbFJY/3pOqqjGOmMmqx83N4hIjN2n6E1AOa+eQEUxs3CgRnPmT0RQ==",
-			"peerDependencies": {
-				"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
-			}
-		},
 		"node_modules/react-timeago": {
 			"version": "7.2.0",
 			"resolved": "https://registry.npmjs.org/react-timeago/-/react-timeago-7.2.0.tgz",
@@ -8575,6 +8942,59 @@
 			"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
 			"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
 		},
+		"node_modules/sharp": {
+			"version": "0.33.5",
+			"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz",
+			"integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==",
+			"hasInstallScript": true,
+			"license": "Apache-2.0",
+			"optional": true,
+			"dependencies": {
+				"color": "^4.2.3",
+				"detect-libc": "^2.0.3",
+				"semver": "^7.6.3"
+			},
+			"engines": {
+				"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+			},
+			"funding": {
+				"url": "https://opencollective.com/libvips"
+			},
+			"optionalDependencies": {
+				"@img/sharp-darwin-arm64": "0.33.5",
+				"@img/sharp-darwin-x64": "0.33.5",
+				"@img/sharp-libvips-darwin-arm64": "1.0.4",
+				"@img/sharp-libvips-darwin-x64": "1.0.4",
+				"@img/sharp-libvips-linux-arm": "1.0.5",
+				"@img/sharp-libvips-linux-arm64": "1.0.4",
+				"@img/sharp-libvips-linux-s390x": "1.0.4",
+				"@img/sharp-libvips-linux-x64": "1.0.4",
+				"@img/sharp-libvips-linuxmusl-arm64": "1.0.4",
+				"@img/sharp-libvips-linuxmusl-x64": "1.0.4",
+				"@img/sharp-linux-arm": "0.33.5",
+				"@img/sharp-linux-arm64": "0.33.5",
+				"@img/sharp-linux-s390x": "0.33.5",
+				"@img/sharp-linux-x64": "0.33.5",
+				"@img/sharp-linuxmusl-arm64": "0.33.5",
+				"@img/sharp-linuxmusl-x64": "0.33.5",
+				"@img/sharp-wasm32": "0.33.5",
+				"@img/sharp-win32-ia32": "0.33.5",
+				"@img/sharp-win32-x64": "0.33.5"
+			}
+		},
+		"node_modules/sharp/node_modules/semver": {
+			"version": "7.6.3",
+			"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+			"integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+			"license": "ISC",
+			"optional": true,
+			"bin": {
+				"semver": "bin/semver.js"
+			},
+			"engines": {
+				"node": ">=10"
+			}
+		},
 		"node_modules/shebang-command": {
 			"version": "2.0.0",
 			"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -8616,6 +9036,23 @@
 			"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
 			"dev": true
 		},
+		"node_modules/simple-swizzle": {
+			"version": "0.2.2",
+			"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+			"integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+			"license": "MIT",
+			"optional": true,
+			"dependencies": {
+				"is-arrayish": "^0.3.1"
+			}
+		},
+		"node_modules/simple-swizzle/node_modules/is-arrayish": {
+			"version": "0.3.2",
+			"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+			"integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+			"license": "MIT",
+			"optional": true
+		},
 		"node_modules/sisteransi": {
 			"version": "1.0.5",
 			"resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
@@ -8849,9 +9286,10 @@
 			"integrity": "sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA=="
 		},
 		"node_modules/styled-jsx": {
-			"version": "5.1.1",
-			"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
-			"integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
+			"version": "5.1.6",
+			"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz",
+			"integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==",
+			"license": "MIT",
 			"dependencies": {
 				"client-only": "0.0.1"
 			},
@@ -8859,7 +9297,7 @@
 				"node": ">= 12.0.0"
 			},
 			"peerDependencies": {
-				"react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
+				"react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0"
 			},
 			"peerDependenciesMeta": {
 				"@babel/core": {
@@ -9356,9 +9794,10 @@
 			}
 		},
 		"node_modules/tslib": {
-			"version": "2.6.2",
-			"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
-			"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+			"version": "2.8.1",
+			"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+			"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+			"license": "0BSD"
 		},
 		"node_modules/type-detect": {
 			"version": "4.0.8",
@@ -9529,15 +9968,16 @@
 			}
 		},
 		"node_modules/use-intl": {
-			"version": "3.1.4",
-			"resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.1.4.tgz",
-			"integrity": "sha512-iBIHPetLeEdAuIhAXRI9ukfjjvadP2EWoAEl6IvbWojrwYgcP52A6Al1nyzIwZD7iWBU1T3Ri3Hg4HsV7cWlVA==",
+			"version": "3.26.3",
+			"resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.26.3.tgz",
+			"integrity": "sha512-yY0a2YseO17cKwHA9M6fcpiEJ2Uo81DEU0NOUxNTp6lJVNOuI6nULANPVVht6IFdrYFtlsMmMoc97+Eq9/Tnng==",
+			"license": "MIT",
 			"dependencies": {
-				"@formatjs/ecma402-abstract": "^1.11.4",
-				"intl-messageformat": "^9.3.18"
+				"@formatjs/fast-memoize": "^2.2.0",
+				"intl-messageformat": "^10.5.14"
 			},
 			"peerDependencies": {
-				"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+				"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0"
 			}
 		},
 		"node_modules/use-sync-external-store": {
diff --git a/package.json b/package.json
index 2f60ee08..76e165e0 100644
--- a/package.json
+++ b/package.json
@@ -20,16 +20,16 @@
 		"@codemirror/language-data": "^6.3.1",
 		"@faker-js/faker": "^8.0.2",
 		"@heroicons/react": "^2.0.16",
-		"@next-auth/prisma-adapter": "^1.0.5",
+		"@next-auth/prisma-adapter": "1.0.7",
 		"@paralleldrive/cuid2": "^2.2.2",
 		"@prisma/client": "^5.11.0",
 		"@tanstack/react-query": "^4.20.2",
 		"@tanstack/react-query-devtools": "^4.28.0",
 		"@tanstack/react-table": "^8.9.3",
-		"@trpc/client": "^10.37.1",
-		"@trpc/next": "^10.37.1",
-		"@trpc/react-query": "^10.37.1",
-		"@trpc/server": "^10.37.1",
+		"@trpc/client": "10.45.2",
+		"@trpc/next": "10.45.2",
+		"@trpc/react-query": "10.45.2",
+		"@trpc/server": "10.45.2",
 		"@types/socket.io-client": "^3.0.0",
 		"@uiw/codemirror-extensions-classname": "^4.21.7",
 		"@uiw/codemirror-theme-okaidia": "^4.21.7",
@@ -46,9 +46,9 @@
 		"ip-address": "^8.1.0",
 		"jsonwebtoken": "^9.0.1",
 		"lru-cache": "^10.0.1",
-		"next": "^14.1.4",
-		"next-auth": "4.24.5",
-		"next-intl": "3.1.4",
+		"next": "15.1.2",
+		"next-auth": "4.24.11",
+		"next-intl": "3.26.3",
 		"next-themes": "^0.2.1",
 		"nodemailer": "^6.9.9",
 		"otplib": "^12.0.1",

From 791f34ad3d02d6e4cadc9241aeffbb8129763b9e Mon Sep 17 00:00:00 2001
From: Bernt Christian Egeland <bernt.christian.egeland@gmail.com>
Date: Sat, 21 Dec 2024 09:55:38 +0100
Subject: [PATCH 2/3] instrumentation

---
 next.config.mjs | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/next.config.mjs b/next.config.mjs
index 806d4d66..9f4772c6 100644
--- a/next.config.mjs
+++ b/next.config.mjs
@@ -6,16 +6,6 @@
 
 /** @type {import("next").NextConfig} */
 const config = {
-	experimental: {
-		instrumentationHook: true,
-		/**
-		 *
-		 * If any issues with "Compiler client unexpectedly exited with code: null and signal: SIGTERM" during build, try the following:
-		 * https://github.com/sinamics/ztnet/issues/469
-		 */
-		// workerThreads: false,
-		// cpus: 1,
-	},
 	reactStrictMode: true,
 	swcMinify: true,
 	// https://nextjs.org/docs/advanced-features/output-file-tracing

From 33d05cb25321595d3122042e461a1971ab57de5c Mon Sep 17 00:00:00 2001
From: Bernt Christian Egeland <bernt.christian.egeland@gmail.com>
Date: Sat, 21 Dec 2024 15:26:07 +0100
Subject: [PATCH 3/3] use depth 1 and sparse checkout

---
 install.ztnet/bash/ztnet.sh | 38 ++++++++++++++++++++++++++++---------
 1 file changed, 29 insertions(+), 9 deletions(-)

diff --git a/install.ztnet/bash/ztnet.sh b/install.ztnet/bash/ztnet.sh
index 819d59a5..36a9103e 100755
--- a/install.ztnet/bash/ztnet.sh
+++ b/install.ztnet/bash/ztnet.sh
@@ -700,7 +700,7 @@ fi
 print_status "Updating apt..."
 
 # update apt
-$STD sudo apt update
+$STD sudo apt-get update --no-list-cleanup -oAcquire::AllowInsecureRepositories=true
 
 install_apt_packages() {
   # Install required packages
@@ -949,21 +949,41 @@ setup_zerotier
 pull_checkout_ztnet(){
   # Change directory to the temporary installation directory
   # Setup Ztnet
-  # Clone Ztnet repository into /opt folder
   if [[ ! -d "$TEMP_REPO_DIR/.git" ]]; then
-    $STD git clone https://github.com/sinamics/ztnet.git $TEMP_REPO_DIR
-    print_status "Cloned Ztnet repository."
+    print_status "Initializing repository..."
+    
+    # Initialize empty repo with a shallow clone
+    $STD git clone --depth 1 https://github.com/sinamics/ztnet.git $TEMP_REPO_DIR
+    cd "$TEMP_REPO_DIR"
+    
+    # Set up sparse checkout
+    $STD git config core.sparseCheckout true
+    
+    # Configure sparse-checkout to exclude specific directories
+    mkdir -p .git/info
+    cat > .git/info/sparse-checkout <<-EOF
+/*
+!/.devcontainer/*
+!/.github/*
+!/.vscode/*
+!/install.ztnet/*
+!/docs/*
+docs/images/logo
+EOF
+    
+    # Update working tree
+    $STD git read-tree -mu HEAD
+    print_status "Cloned Ztnet repository (minimal version)."
   else
     print_status "$TEMP_REPO_DIR already exists. Updating the repository."
-    $STD git pull origin main
+    cd "$TEMP_REPO_DIR"
+    $STD git pull --depth 1 origin main
   fi
 
-  cd "$TEMP_REPO_DIR"
-
   if [[ -z "$BRANCH" ]]; then
     # If BRANCH is empty or not set, checkout the latest tag or a custom version
-    git fetch --tags
-    latestTag=$(git describe --tags $(git rev-list --tags --max-count=1))
+    $STD git fetch --depth 1 --tags --force
+    latestTag=$($STD git describe --tags $(git rev-list --tags --max-count=1))
     print_status "Checking out tag: ${CUSTOM_VERSION:-$latestTag}"
     $STD git checkout "${CUSTOM_VERSION:-$latestTag}"
   else