diff --git a/.idea/copilot.data.migration.agent.xml b/.idea/copilot.data.migration.agent.xml
new file mode 100644
index 0000000..2c0ecc2
--- /dev/null
+++ b/.idea/copilot.data.migration.agent.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/copilot.data.migration.ask.xml b/.idea/copilot.data.migration.ask.xml
new file mode 100644
index 0000000..4e072b7
--- /dev/null
+++ b/.idea/copilot.data.migration.ask.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/copilot.data.migration.ask2agent.xml b/.idea/copilot.data.migration.ask2agent.xml
new file mode 100644
index 0000000..e458f8c
--- /dev/null
+++ b/.idea/copilot.data.migration.ask2agent.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/copilot.data.migration.edit.xml b/.idea/copilot.data.migration.edit.xml
new file mode 100644
index 0000000..bd4a159
--- /dev/null
+++ b/.idea/copilot.data.migration.edit.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..9661ac7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..fef3d6b
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ "associatedIndex": 1
+}
+
+
+
+
+
+ {
+ "keyToString": {
+ "ModuleVcsDetector.initialDetectionPerformed": "true",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
+ "RunOnceActivity.git.unshallow": "true",
+ "git-widget-placeholder": "main",
+ "ignore.virus.scanning.warn.message": "true",
+ "js.debugger.nextJs.config.created.client": "true",
+ "js.debugger.nextJs.config.created.server": "true",
+ "kotlin-language-version-configured": "true",
+ "last_opened_file_path": "//wsl.localhost/Arch/home/don/code/shadow-gunbuilder-ai-proto",
+ "node.js.detected.package.eslint": "true",
+ "node.js.detected.package.tslint": "true",
+ "node.js.selected.package.eslint": "(autodetect)",
+ "node.js.selected.package.tslint": "(autodetect)",
+ "nodejs_package_manager_path": "npm",
+ "vue.rearranger.settings.migration": "true"
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1764181733358
+
+
+ 1764181733358
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.next/app-build-manifest.json b/.next/app-build-manifest.json
deleted file mode 100644
index 9465257..0000000
--- a/.next/app-build-manifest.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "pages": {
- "/layout": [
- "static/chunks/webpack.js",
- "static/chunks/main-app.js",
- "static/css/app/layout.css",
- "static/chunks/app/layout.js"
- ],
- "/admin/page": [
- "static/chunks/webpack.js",
- "static/chunks/main-app.js",
- "static/chunks/app/admin/page.js"
- ],
- "/admin/part-role-mappings/page": [
- "static/chunks/webpack.js",
- "static/chunks/main-app.js",
- "static/chunks/app/admin/part-role-mappings/page.js"
- ],
- "/admin/categories/page": [
- "static/chunks/webpack.js",
- "static/chunks/main-app.js",
- "static/chunks/app/admin/categories/page.js"
- ],
- "/admin/merchant-category-mappings/page": [
- "static/chunks/webpack.js",
- "static/chunks/main-app.js",
- "static/chunks/app/admin/merchant-category-mappings/page.js"
- ],
- "/admin/merchants/page": [
- "static/chunks/webpack.js",
- "static/chunks/main-app.js",
- "static/chunks/app/admin/merchants/page.js"
- ],
- "/page": [
- "static/chunks/webpack.js",
- "static/chunks/main-app.js",
- "static/chunks/app/page.js"
- ],
- "/builds/page": [
- "static/chunks/webpack.js",
- "static/chunks/main-app.js",
- "static/chunks/app/builds/page.js"
- ],
- "/builder/page": [
- "static/chunks/webpack.js",
- "static/chunks/main-app.js",
- "static/chunks/app/builder/page.js"
- ],
- "/_not-found/page": [
- "static/chunks/webpack.js",
- "static/chunks/main-app.js",
- "static/chunks/app/_not-found/page.js"
- ]
- }
-}
\ No newline at end of file
diff --git a/.next/build-manifest.json b/.next/build-manifest.json
deleted file mode 100644
index b4e9156..0000000
--- a/.next/build-manifest.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "polyfillFiles": [
- "static/chunks/polyfills.js"
- ],
- "devFiles": [
- "static/chunks/react-refresh.js"
- ],
- "ampDevFiles": [],
- "lowPriorityFiles": [
- "static/development/_buildManifest.js",
- "static/development/_ssgManifest.js"
- ],
- "rootMainFiles": [
- "static/chunks/webpack.js",
- "static/chunks/main-app.js"
- ],
- "pages": {
- "/_app": [
- "static/chunks/webpack.js",
- "static/chunks/main.js",
- "static/chunks/pages/_app.js"
- ],
- "/_error": [
- "static/chunks/webpack.js",
- "static/chunks/main.js",
- "static/chunks/pages/_error.js"
- ]
- },
- "ampFirstPages": []
-}
\ No newline at end of file
diff --git a/.next/cache/webpack/client-development-fallback/0.pack.gz b/.next/cache/webpack/client-development-fallback/0.pack.gz
deleted file mode 100644
index be6c123..0000000
Binary files a/.next/cache/webpack/client-development-fallback/0.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development-fallback/index.pack.gz b/.next/cache/webpack/client-development-fallback/index.pack.gz
deleted file mode 100644
index d050119..0000000
Binary files a/.next/cache/webpack/client-development-fallback/index.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/0.pack.gz b/.next/cache/webpack/client-development/0.pack.gz
deleted file mode 100644
index cbbf14b..0000000
Binary files a/.next/cache/webpack/client-development/0.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/1.pack.gz b/.next/cache/webpack/client-development/1.pack.gz
deleted file mode 100644
index 0bea3b3..0000000
Binary files a/.next/cache/webpack/client-development/1.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/10.pack.gz b/.next/cache/webpack/client-development/10.pack.gz
deleted file mode 100644
index 5c293a5..0000000
Binary files a/.next/cache/webpack/client-development/10.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/11.pack.gz b/.next/cache/webpack/client-development/11.pack.gz
deleted file mode 100644
index 43cd6ad..0000000
Binary files a/.next/cache/webpack/client-development/11.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/12.pack.gz b/.next/cache/webpack/client-development/12.pack.gz
deleted file mode 100644
index bcdc587..0000000
Binary files a/.next/cache/webpack/client-development/12.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/13.pack.gz b/.next/cache/webpack/client-development/13.pack.gz
deleted file mode 100644
index 300f5a3..0000000
Binary files a/.next/cache/webpack/client-development/13.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/14.pack.gz b/.next/cache/webpack/client-development/14.pack.gz
deleted file mode 100644
index 51b590e..0000000
Binary files a/.next/cache/webpack/client-development/14.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/15.pack.gz b/.next/cache/webpack/client-development/15.pack.gz
deleted file mode 100644
index 4fe8293..0000000
Binary files a/.next/cache/webpack/client-development/15.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/16.pack.gz b/.next/cache/webpack/client-development/16.pack.gz
deleted file mode 100644
index 396d5aa..0000000
Binary files a/.next/cache/webpack/client-development/16.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/17.pack.gz b/.next/cache/webpack/client-development/17.pack.gz
deleted file mode 100644
index 23ca35f..0000000
Binary files a/.next/cache/webpack/client-development/17.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/18.pack.gz b/.next/cache/webpack/client-development/18.pack.gz
deleted file mode 100644
index 264ab34..0000000
Binary files a/.next/cache/webpack/client-development/18.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/19.pack.gz b/.next/cache/webpack/client-development/19.pack.gz
deleted file mode 100644
index 7e39cee..0000000
Binary files a/.next/cache/webpack/client-development/19.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/2.pack.gz b/.next/cache/webpack/client-development/2.pack.gz
deleted file mode 100644
index bb605b5..0000000
Binary files a/.next/cache/webpack/client-development/2.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/20.pack.gz b/.next/cache/webpack/client-development/20.pack.gz
deleted file mode 100644
index 53f5d7a..0000000
Binary files a/.next/cache/webpack/client-development/20.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/21.pack.gz b/.next/cache/webpack/client-development/21.pack.gz
deleted file mode 100644
index eacfb6d..0000000
Binary files a/.next/cache/webpack/client-development/21.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/22.pack.gz b/.next/cache/webpack/client-development/22.pack.gz
deleted file mode 100644
index 4d29716..0000000
Binary files a/.next/cache/webpack/client-development/22.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/3.pack.gz b/.next/cache/webpack/client-development/3.pack.gz
deleted file mode 100644
index de9d3d8..0000000
Binary files a/.next/cache/webpack/client-development/3.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/4.pack.gz b/.next/cache/webpack/client-development/4.pack.gz
deleted file mode 100644
index cee18fb..0000000
Binary files a/.next/cache/webpack/client-development/4.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/5.pack.gz b/.next/cache/webpack/client-development/5.pack.gz
deleted file mode 100644
index 4eba00e..0000000
Binary files a/.next/cache/webpack/client-development/5.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/6.pack.gz b/.next/cache/webpack/client-development/6.pack.gz
deleted file mode 100644
index c79ce3e..0000000
Binary files a/.next/cache/webpack/client-development/6.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/7.pack.gz b/.next/cache/webpack/client-development/7.pack.gz
deleted file mode 100644
index bb6cb96..0000000
Binary files a/.next/cache/webpack/client-development/7.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/8.pack.gz b/.next/cache/webpack/client-development/8.pack.gz
deleted file mode 100644
index 819701b..0000000
Binary files a/.next/cache/webpack/client-development/8.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/9.pack.gz b/.next/cache/webpack/client-development/9.pack.gz
deleted file mode 100644
index b261608..0000000
Binary files a/.next/cache/webpack/client-development/9.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/index.pack.gz b/.next/cache/webpack/client-development/index.pack.gz
deleted file mode 100644
index 1a7cd6f..0000000
Binary files a/.next/cache/webpack/client-development/index.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/client-development/index.pack.gz.old b/.next/cache/webpack/client-development/index.pack.gz.old
deleted file mode 100644
index 1d2e809..0000000
Binary files a/.next/cache/webpack/client-development/index.pack.gz.old and /dev/null differ
diff --git a/.next/cache/webpack/server-development/0.pack.gz b/.next/cache/webpack/server-development/0.pack.gz
deleted file mode 100644
index 50bda6a..0000000
Binary files a/.next/cache/webpack/server-development/0.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/1.pack.gz b/.next/cache/webpack/server-development/1.pack.gz
deleted file mode 100644
index cb7ced7..0000000
Binary files a/.next/cache/webpack/server-development/1.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/10.pack.gz b/.next/cache/webpack/server-development/10.pack.gz
deleted file mode 100644
index 9e8ed3d..0000000
Binary files a/.next/cache/webpack/server-development/10.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/11.pack.gz b/.next/cache/webpack/server-development/11.pack.gz
deleted file mode 100644
index eaf085c..0000000
Binary files a/.next/cache/webpack/server-development/11.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/12.pack.gz b/.next/cache/webpack/server-development/12.pack.gz
deleted file mode 100644
index d280045..0000000
Binary files a/.next/cache/webpack/server-development/12.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/13.pack.gz b/.next/cache/webpack/server-development/13.pack.gz
deleted file mode 100644
index a0bf5f0..0000000
Binary files a/.next/cache/webpack/server-development/13.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/14.pack.gz b/.next/cache/webpack/server-development/14.pack.gz
deleted file mode 100644
index 0fc72de..0000000
Binary files a/.next/cache/webpack/server-development/14.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/15.pack.gz b/.next/cache/webpack/server-development/15.pack.gz
deleted file mode 100644
index b197c1d..0000000
Binary files a/.next/cache/webpack/server-development/15.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/16.pack.gz b/.next/cache/webpack/server-development/16.pack.gz
deleted file mode 100644
index d3e6300..0000000
Binary files a/.next/cache/webpack/server-development/16.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/17.pack.gz b/.next/cache/webpack/server-development/17.pack.gz
deleted file mode 100644
index e4d569d..0000000
Binary files a/.next/cache/webpack/server-development/17.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/2.pack.gz b/.next/cache/webpack/server-development/2.pack.gz
deleted file mode 100644
index d36ea68..0000000
Binary files a/.next/cache/webpack/server-development/2.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/3.pack.gz b/.next/cache/webpack/server-development/3.pack.gz
deleted file mode 100644
index a1be6f4..0000000
Binary files a/.next/cache/webpack/server-development/3.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/4.pack.gz b/.next/cache/webpack/server-development/4.pack.gz
deleted file mode 100644
index 239340f..0000000
Binary files a/.next/cache/webpack/server-development/4.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/5.pack.gz b/.next/cache/webpack/server-development/5.pack.gz
deleted file mode 100644
index 8a08528..0000000
Binary files a/.next/cache/webpack/server-development/5.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/6.pack.gz b/.next/cache/webpack/server-development/6.pack.gz
deleted file mode 100644
index 344b539..0000000
Binary files a/.next/cache/webpack/server-development/6.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/7.pack.gz b/.next/cache/webpack/server-development/7.pack.gz
deleted file mode 100644
index 917b1d4..0000000
Binary files a/.next/cache/webpack/server-development/7.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/8.pack.gz b/.next/cache/webpack/server-development/8.pack.gz
deleted file mode 100644
index 5933cb6..0000000
Binary files a/.next/cache/webpack/server-development/8.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/9.pack.gz b/.next/cache/webpack/server-development/9.pack.gz
deleted file mode 100644
index b0d4eb9..0000000
Binary files a/.next/cache/webpack/server-development/9.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/index.pack.gz b/.next/cache/webpack/server-development/index.pack.gz
deleted file mode 100644
index 59383fc..0000000
Binary files a/.next/cache/webpack/server-development/index.pack.gz and /dev/null differ
diff --git a/.next/cache/webpack/server-development/index.pack.gz.old b/.next/cache/webpack/server-development/index.pack.gz.old
deleted file mode 100644
index ff154ee..0000000
Binary files a/.next/cache/webpack/server-development/index.pack.gz.old and /dev/null differ
diff --git a/.next/package.json b/.next/package.json
deleted file mode 100644
index 7156107..0000000
--- a/.next/package.json
+++ /dev/null
@@ -1 +0,0 @@
-{"type": "commonjs"}
\ No newline at end of file
diff --git a/.next/react-loadable-manifest.json b/.next/react-loadable-manifest.json
deleted file mode 100644
index 9e26dfe..0000000
--- a/.next/react-loadable-manifest.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
\ No newline at end of file
diff --git a/.next/server/app-paths-manifest.json b/.next/server/app-paths-manifest.json
deleted file mode 100644
index 93d4b5c..0000000
--- a/.next/server/app-paths-manifest.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "/_not-found/page": "app/_not-found/page.js",
- "/page": "app/page.js",
- "/admin/merchant-category-mappings/page": "app/admin/merchant-category-mappings/page.js",
- "/builds/page": "app/builds/page.js",
- "/builder/page": "app/builder/page.js"
-}
\ No newline at end of file
diff --git a/.next/server/app/_not-found/page.js b/.next/server/app/_not-found/page.js
deleted file mode 100644
index d69bfa8..0000000
--- a/.next/server/app/_not-found/page.js
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * ATTENTION: An "eval-source-map" devtool has been used.
- * This devtool is neither made for production nor for readable output files.
- * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
- * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
- * or disable the default devtool with "devtool: false".
- * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
- */
-(() => {
-var exports = {};
-exports.id = "app/_not-found/page";
-exports.ids = ["app/_not-found/page"];
-exports.modules = {
-
-/***/ "./action-async-storage.external":
-/*!****************************************************************************!*\
- !*** external "next/dist/client/components/action-async-storage.external" ***!
- \****************************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/client/components/action-async-storage.external");
-
-/***/ }),
-
-/***/ "../../client/components/action-async-storage.external":
-/*!*******************************************************************************!*\
- !*** external "next/dist/client/components/action-async-storage.external.js" ***!
- \*******************************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/client/components/action-async-storage.external.js");
-
-/***/ }),
-
-/***/ "./request-async-storage.external":
-/*!*****************************************************************************!*\
- !*** external "next/dist/client/components/request-async-storage.external" ***!
- \*****************************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/client/components/request-async-storage.external");
-
-/***/ }),
-
-/***/ "../../client/components/request-async-storage.external":
-/*!********************************************************************************!*\
- !*** external "next/dist/client/components/request-async-storage.external.js" ***!
- \********************************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/client/components/request-async-storage.external.js");
-
-/***/ }),
-
-/***/ "./static-generation-async-storage.external":
-/*!***************************************************************************************!*\
- !*** external "next/dist/client/components/static-generation-async-storage.external" ***!
- \***************************************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/client/components/static-generation-async-storage.external");
-
-/***/ }),
-
-/***/ "../../client/components/static-generation-async-storage.external":
-/*!******************************************************************************************!*\
- !*** external "next/dist/client/components/static-generation-async-storage.external.js" ***!
- \******************************************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/client/components/static-generation-async-storage.external.js");
-
-/***/ }),
-
-/***/ "next/dist/compiled/next-server/app-page.runtime.dev.js":
-/*!*************************************************************************!*\
- !*** external "next/dist/compiled/next-server/app-page.runtime.dev.js" ***!
- \*************************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/compiled/next-server/app-page.runtime.dev.js");
-
-/***/ }),
-
-/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!":
-/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D! ***!
- \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GlobalError: () => (/* reexport default from dynamic */ next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2___default.a),\n/* harmony export */ __next_app__: () => (/* binding */ __next_app__),\n/* harmony export */ originalPathname: () => (/* binding */ originalPathname),\n/* harmony export */ pages: () => (/* binding */ pages),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ tree: () => (/* binding */ tree)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/future/route-modules/app-page/module.compiled */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js?d969\");\n/* harmony import */ var next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/future/route-kind */ \"(rsc)/./node_modules/next/dist/server/future/route-kind.js\");\n/* harmony import */ var next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/client/components/error-boundary */ \"(rsc)/./node_modules/next/dist/client/components/error-boundary.js\");\n/* harmony import */ var next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/server/app-render/entry-base */ \"(rsc)/./node_modules/next/dist/server/app-render/entry-base.js\");\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__) if([\"default\",\"tree\",\"pages\",\"GlobalError\",\"originalPathname\",\"__next_app__\",\"routeModule\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\"TURBOPACK { transition: next-ssr }\";\n\n\n// We inject the tree and pages here so that we can use them in the route\n// module.\nconst tree = {\n children: [\n '',\n {\n children: [\"/_not-found\", {\n children: ['__PAGE__', {}, {\n page: [\n () => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/not-found-error */ \"(rsc)/./node_modules/next/dist/client/components/not-found-error.js\", 23)),\n \"next/dist/client/components/not-found-error\"\n ]\n }]\n }, {}]\n },\n {\n 'layout': [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/layout.tsx */ \"(rsc)/./app/layout.tsx\")), \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\"],\n'not-found': [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/not-found-error */ \"(rsc)/./node_modules/next/dist/client/components/not-found-error.js\", 23)), \"next/dist/client/components/not-found-error\"],\n \n }\n ]\n }.children;\nconst pages = [];\n\n\nconst __next_app_require__ = __webpack_require__\nconst __next_app_load_chunk__ = () => Promise.resolve()\nconst originalPathname = \"/_not-found/page\";\nconst __next_app__ = {\n require: __next_app_require__,\n loadChunk: __next_app_load_chunk__\n};\n\n// Create and export the route module that will be consumed.\nconst routeModule = new next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppPageRouteModule({\n definition: {\n kind: next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,\n page: \"/_not-found/page\",\n pathname: \"/_not-found\",\n // The following aren't used in production.\n bundlePath: \"\",\n filename: \"\",\n appPaths: []\n },\n userland: {\n loaderTree: tree\n }\n});\n\n//# sourceMappingURL=app-page.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWFwcC1sb2FkZXIuanM/bmFtZT1hcHAlMkZfbm90LWZvdW5kJTJGcGFnZSZwYWdlPSUyRl9ub3QtZm91bmQlMkZwYWdlJmFwcFBhdGhzPSZwYWdlUGF0aD1ub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZub3QtZm91bmQtZXJyb3IuanMmYXBwRGlyPSUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGYXBwJnBhZ2VFeHRlbnNpb25zPXRzeCZwYWdlRXh0ZW5zaW9ucz10cyZwYWdlRXh0ZW5zaW9ucz1qc3gmcGFnZUV4dGVuc2lvbnM9anMmcm9vdERpcj0lMkZVc2VycyUyRnNlYW4lMkZEZXYlMkZndW5idWlsZGVyLXByb3RvdHlwZSZpc0Rldj10cnVlJnRzY29uZmlnUGF0aD10c2NvbmZpZy5qc29uJmJhc2VQYXRoPSZhc3NldFByZWZpeD0mbmV4dENvbmZpZ091dHB1dD0mcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCEiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGFBQWEsc0JBQXNCO0FBQ2lFO0FBQ3JDO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0Esc0JBQXNCLDBOQUFnRjtBQUN0RztBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVcsSUFBSTtBQUNmLFNBQVM7QUFDVDtBQUNBLHlCQUF5Qiw0SUFBd0Y7QUFDakgsb0JBQW9CLDBOQUFnRjtBQUNwRztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDdUI7QUFDNkQ7QUFDcEYsNkJBQTZCLG1CQUFtQjtBQUNoRDtBQUNPO0FBQ0E7QUFDUDtBQUNBO0FBQ0E7QUFDdUQ7QUFDdkQ7QUFDTyx3QkFBd0IsOEdBQWtCO0FBQ2pEO0FBQ0EsY0FBYyx5RUFBUztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLz8wZTY0Il0sInNvdXJjZXNDb250ZW50IjpbIlwiVFVSQk9QQUNLIHsgdHJhbnNpdGlvbjogbmV4dC1zc3IgfVwiO1xuaW1wb3J0IHsgQXBwUGFnZVJvdXRlTW9kdWxlIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXBhZ2UvbW9kdWxlLmNvbXBpbGVkXCI7XG5pbXBvcnQgeyBSb3V0ZUtpbmQgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9mdXR1cmUvcm91dGUta2luZFwiO1xuLy8gV2UgaW5qZWN0IHRoZSB0cmVlIGFuZCBwYWdlcyBoZXJlIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGVtIGluIHRoZSByb3V0ZVxuLy8gbW9kdWxlLlxuY29uc3QgdHJlZSA9IHtcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgJycsXG4gICAgICAgIHtcbiAgICAgICAgICBjaGlsZHJlbjogW1wiL19ub3QtZm91bmRcIiwge1xuICAgICAgICAgICAgY2hpbGRyZW46IFsnX19QQUdFX18nLCB7fSwge1xuICAgICAgICAgICAgICBwYWdlOiBbXG4gICAgICAgICAgICAgICAgKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbm90LWZvdW5kLWVycm9yXCIpLFxuICAgICAgICAgICAgICAgIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvclwiXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1dXG4gICAgICAgICAgfSwge31dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgJ2xheW91dCc6IFsoKSA9PiBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9zZWFuL0Rldi9ndW5idWlsZGVyLXByb3RvdHlwZS9hcHAvbGF5b3V0LnRzeFwiKSwgXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvYXBwL2xheW91dC50c3hcIl0sXG4nbm90LWZvdW5kJzogWygpID0+IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvclwiKSwgXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbm90LWZvdW5kLWVycm9yXCJdLFxuICAgICAgICBcbiAgICAgIH1cbiAgICAgIF1cbiAgICAgIH0uY2hpbGRyZW47XG5jb25zdCBwYWdlcyA9IFtdO1xuZXhwb3J0IHsgdHJlZSwgcGFnZXMgfTtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgR2xvYmFsRXJyb3IgfSBmcm9tIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2Vycm9yLWJvdW5kYXJ5XCI7XG5jb25zdCBfX25leHRfYXBwX3JlcXVpcmVfXyA9IF9fd2VicGFja19yZXF1aXJlX19cbmNvbnN0IF9fbmV4dF9hcHBfbG9hZF9jaHVua19fID0gKCkgPT4gUHJvbWlzZS5yZXNvbHZlKClcbmV4cG9ydCBjb25zdCBvcmlnaW5hbFBhdGhuYW1lID0gXCIvX25vdC1mb3VuZC9wYWdlXCI7XG5leHBvcnQgY29uc3QgX19uZXh0X2FwcF9fID0ge1xuICAgIHJlcXVpcmU6IF9fbmV4dF9hcHBfcmVxdWlyZV9fLFxuICAgIGxvYWRDaHVuazogX19uZXh0X2FwcF9sb2FkX2NodW5rX19cbn07XG5leHBvcnQgKiBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2VudHJ5LWJhc2VcIjtcbi8vIENyZWF0ZSBhbmQgZXhwb3J0IHRoZSByb3V0ZSBtb2R1bGUgdGhhdCB3aWxsIGJlIGNvbnN1bWVkLlxuZXhwb3J0IGNvbnN0IHJvdXRlTW9kdWxlID0gbmV3IEFwcFBhZ2VSb3V0ZU1vZHVsZSh7XG4gICAgZGVmaW5pdGlvbjoge1xuICAgICAgICBraW5kOiBSb3V0ZUtpbmQuQVBQX1BBR0UsXG4gICAgICAgIHBhZ2U6IFwiL19ub3QtZm91bmQvcGFnZVwiLFxuICAgICAgICBwYXRobmFtZTogXCIvX25vdC1mb3VuZFwiLFxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZW4ndCB1c2VkIGluIHByb2R1Y3Rpb24uXG4gICAgICAgIGJ1bmRsZVBhdGg6IFwiXCIsXG4gICAgICAgIGZpbGVuYW1lOiBcIlwiLFxuICAgICAgICBhcHBQYXRoczogW11cbiAgICB9LFxuICAgIHVzZXJsYW5kOiB7XG4gICAgICAgIGxvYWRlclRyZWU6IHRyZWVcbiAgICB9XG59KTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBwLXBhZ2UuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!\n");
-
-/***/ }),
-
-/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcomponents%2FBuilderNav.tsx%22%2C%22ids%22%3A%5B%22BuilderNav%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcomponents%2FTopNav.tsx%22%2C%22ids%22%3A%5B%22TopNav%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcontext%2FAuthContext.tsx%22%2C%22ids%22%3A%5B%22AuthProvider%22%5D%7D&server=true!":
-/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcomponents%2FBuilderNav.tsx%22%2C%22ids%22%3A%5B%22BuilderNav%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcomponents%2FTopNav.tsx%22%2C%22ids%22%3A%5B%22TopNav%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcontext%2FAuthContext.tsx%22%2C%22ids%22%3A%5B%22AuthProvider%22%5D%7D&server=true! ***!
- \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
-/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./components/BuilderNav.tsx */ \"(ssr)/./components/BuilderNav.tsx\"));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./components/TopNav.tsx */ \"(ssr)/./components/TopNav.tsx\"));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./context/AuthContext.tsx */ \"(ssr)/./context/AuthContext.tsx\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGYXBwJTJGZ2xvYmFscy5jc3MlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZzZWFuJTJGRGV2JTJGZ3VuYnVpbGRlci1wcm90b3R5cGUlMkZjb21wb25lbnRzJTJGQnVpbGRlck5hdi50c3glMjIlMkMlMjJpZHMlMjIlM0ElNUIlMjJCdWlsZGVyTmF2JTIyJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGY29tcG9uZW50cyUyRlRvcE5hdi50c3glMjIlMkMlMjJpZHMlMjIlM0ElNUIlMjJUb3BOYXYlMjIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZzZWFuJTJGRGV2JTJGZ3VuYnVpbGRlci1wcm90b3R5cGUlMkZjb250ZXh0JTJGQXV0aENvbnRleHQudHN4JTIyJTJDJTIyaWRzJTIyJTNBJTVCJTIyQXV0aFByb3ZpZGVyJTIyJTVEJTdEJnNlcnZlcj10cnVlISIsIm1hcHBpbmdzIjoiQUFBQSxrS0FBbUk7QUFDbkk7QUFDQSwwSkFBMkg7QUFDM0g7QUFDQSw4SkFBbUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8/YWRkNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiwgd2VicGFja0V4cG9ydHM6IFtcIkJ1aWxkZXJOYXZcIl0gKi8gXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvY29tcG9uZW50cy9CdWlsZGVyTmF2LnRzeFwiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiLCB3ZWJwYWNrRXhwb3J0czogW1wiVG9wTmF2XCJdICovIFwiL1VzZXJzL3NlYW4vRGV2L2d1bmJ1aWxkZXItcHJvdG90eXBlL2NvbXBvbmVudHMvVG9wTmF2LnRzeFwiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiLCB3ZWJwYWNrRXhwb3J0czogW1wiQXV0aFByb3ZpZGVyXCJdICovIFwiL1VzZXJzL3NlYW4vRGV2L2d1bmJ1aWxkZXItcHJvdG90eXBlL2NvbnRleHQvQXV0aENvbnRleHQudHN4XCIpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcomponents%2FBuilderNav.tsx%22%2C%22ids%22%3A%5B%22BuilderNav%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcomponents%2FTopNav.tsx%22%2C%22ids%22%3A%5B%22TopNav%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcontext%2FAuthContext.tsx%22%2C%22ids%22%3A%5B%22AuthProvider%22%5D%7D&server=true!\n");
-
-/***/ }),
-
-/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!":
-/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***!
- \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
-/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/app-router.js */ \"(ssr)/./node_modules/next/dist/client/components/app-router.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/client-page.js */ \"(ssr)/./node_modules/next/dist/client/components/client-page.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/error-boundary.js */ \"(ssr)/./node_modules/next/dist/client/components/error-boundary.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/layout-router.js */ \"(ssr)/./node_modules/next/dist/client/components/layout-router.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/not-found-boundary.js */ \"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/render-from-template-context.js */ \"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js\", 23));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGYXBwLXJvdXRlci5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRnNlYW4lMkZEZXYlMkZndW5idWlsZGVyLXByb3RvdHlwZSUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmNsaWVudC1wYWdlLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGZXJyb3ItYm91bmRhcnkuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZzZWFuJTJGRGV2JTJGZ3VuYnVpbGRlci1wcm90b3R5cGUlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZsYXlvdXQtcm91dGVyLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGbm90LWZvdW5kLWJvdW5kYXJ5LmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsa09BQWdJO0FBQ2hJO0FBQ0Esb09BQWlJO0FBQ2pJO0FBQ0EsME9BQW9JO0FBQ3BJO0FBQ0Esd09BQW1JO0FBQ25JO0FBQ0Esa1BBQXdJO0FBQ3hJO0FBQ0Esc1FBQWtKIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvPzdiMjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtcGFnZS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3NlYW4vRGV2L2d1bmJ1aWxkZXItcHJvdG90eXBlL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnkuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9zZWFuL0Rldi9ndW5idWlsZGVyLXByb3RvdHlwZS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2xheW91dC1yb3V0ZXIuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9zZWFuL0Rldi9ndW5idWlsZGVyLXByb3RvdHlwZS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1ib3VuZGFyeS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3NlYW4vRGV2L2d1bmJ1aWxkZXItcHJvdG90eXBlL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qc1wiKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n");
-
-/***/ }),
-
-/***/ "(ssr)/./components/BuilderNav.tsx":
-/*!***********************************!*\
- !*** ./components/BuilderNav.tsx ***!
- \***********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BuilderNav: () => (/* binding */ BuilderNav),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/navigation */ \"(ssr)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(ssr)/./data/gunbuilderParts.ts\");\n/* __next_internal_client_entry_do_not_use__ BuilderNav,default auto */ \n\n\n\n// Helper to group categories for the dropdowns\nfunction groupCategories(group) {\n return _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES.filter((c)=>c.group === group);\n}\nfunction BuilderNav({ activeCategoryId }) {\n const searchParams = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.useSearchParams)();\n const lower = groupCategories(\"lower\");\n const upper = groupCategories(\"upper\");\n const accessories = groupCategories(\"accessories\");\n const currentCategory = activeCategoryId ?? searchParams.get(\"category\") ?? undefined;\n const baseHref = \"/gunbuilder\";\n const renderDropdown = (label, items)=>{\n if (!items.length) return null;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n className: `inline-flex items-center gap-1 font-medium tracking-wide transition-colors uppercase text-[11px] ${items.some((cat)=>cat.id === currentCategory) ? \"text-white\" : \"text-neutral-200 hover:text-white\"}`,\n children: [\n label,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[9px]\",\n children: \"▾\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 43,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 34,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"invisible opacity-0 group-hover:visible group-hover:opacity-100 transition-all absolute left-0 mt-2 rounded-md border border-neutral-800 bg-black/95 shadow-xl z-40 min-w-[220px]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"py-2 text-sm\",\n children: items.map((cat)=>{\n const isActive = currentCategory === cat.id;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: `${baseHref}/${cat.id}`,\n className: [\n \"block w-full px-3 py-1.5 text-left text-sm transition-colors\",\n isActive ? \"bg-neutral-800 text-white\" : \"text-neutral-300 hover:bg-neutral-800 hover:text-white\"\n ].join(\" \"),\n children: cat.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 52,\n columnNumber: 19\n }, this)\n }, cat.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 51,\n columnNumber: 17\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 47,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 46,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 33,\n columnNumber: 7\n }, this);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-6xl mx-auto w-full\",\n children: [\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"flex items-center gap-6 border-b border-neutral-900 px-6 py-3 text-sm bg-black/95 backdrop-blur-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: baseHref,\n className: \"font-semibold text-neutral-100 hover:text-white tracking-[0.25em] uppercase text-[11px]\",\n children: \"Builder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 76,\n columnNumber: 9\n }, this),\n renderDropdown(\"Lower Parts\", lower),\n renderDropdown(\"Upper Parts\", upper),\n renderDropdown(\"Accessories\", accessories),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/builds\",\n className: \"font-medium text-neutral-300 hover:text-white tracking-[0.25em] uppercase text-[11px]\",\n children: \"Builds\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 87,\n columnNumber: 9\n }, this),\n currentCategory && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"ml-auto flex items-center gap-2 text-neutral-400 text-xs\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"uppercase tracking-wide text-[10px]\",\n children: \"Viewing\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 97,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-neutral-100\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES.find((c)=>c.id === currentCategory)?.name ?? currentCategory\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 98,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: baseHref,\n className: \"rounded border border-neutral-700 px-2 py-0.5 text-[10px] uppercase tracking-wide hover:bg-neutral-800 hover:text-white\",\n children: \"Clear\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 102,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 96,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 74,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 73,\n columnNumber: 5\n }, this);\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BuilderNav);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb21wb25lbnRzL0J1aWxkZXJOYXYudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBRTZCO0FBQ3FCO0FBQ0U7QUFPcEQsK0NBQStDO0FBQy9DLFNBQVNHLGdCQUFnQkMsS0FBd0M7SUFDL0QsT0FBT0YsNkRBQVVBLENBQUNHLE1BQU0sQ0FBQyxDQUFDQyxJQUFNQSxFQUFFRixLQUFLLEtBQUtBO0FBQzlDO0FBRU8sU0FBU0csV0FBVyxFQUFFQyxnQkFBZ0IsRUFBbUI7SUFDOUQsTUFBTUMsZUFBZVIsZ0VBQWVBO0lBRXBDLE1BQU1TLFFBQVFQLGdCQUFnQjtJQUM5QixNQUFNUSxRQUFRUixnQkFBZ0I7SUFDOUIsTUFBTVMsY0FBY1QsZ0JBQWdCO0lBRXBDLE1BQU1VLGtCQUNKTCxvQkFBb0JDLGFBQWFLLEdBQUcsQ0FBQyxlQUFlQztJQUV0RCxNQUFNQyxXQUFXO0lBRWpCLE1BQU1DLGlCQUFpQixDQUFDQyxPQUFlQztRQUNyQyxJQUFJLENBQUNBLE1BQU1DLE1BQU0sRUFBRSxPQUFPO1FBRTFCLHFCQUNFLDhEQUFDQztZQUFJQyxXQUFVOzs4QkFDYiw4REFBQ0M7b0JBQ0NDLE1BQUs7b0JBQ0xGLFdBQVcsQ0FBQyxpR0FBaUcsRUFDM0dILE1BQU1NLElBQUksQ0FBQ0MsQ0FBQUEsTUFBT0EsSUFBSUMsRUFBRSxLQUFLZCxtQkFDekIsZUFDQSxvQ0FDTCxDQUFDOzt3QkFFREs7c0NBQ0QsOERBQUNVOzRCQUFLTixXQUFVO3NDQUFhOzs7Ozs7Ozs7Ozs7OEJBRy9CLDhEQUFDRDtvQkFBSUMsV0FBVTs4QkFDYiw0RUFBQ087d0JBQUdQLFdBQVU7a0NBQ1hILE1BQU1XLEdBQUcsQ0FBQyxDQUFDSjs0QkFDVixNQUFNSyxXQUFXbEIsb0JBQW9CYSxJQUFJQyxFQUFFOzRCQUMzQyxxQkFDRSw4REFBQ0s7MENBQ0MsNEVBQUNoQyxpREFBSUE7b0NBQ0hpQyxNQUFNLENBQUMsRUFBRWpCLFNBQVMsQ0FBQyxFQUFFVSxJQUFJQyxFQUFFLENBQUMsQ0FBQztvQ0FDN0JMLFdBQVc7d0NBQ1Q7d0NBQ0FTLFdBQ0ksOEJBQ0E7cUNBQ0wsQ0FBQ0csSUFBSSxDQUFDOzhDQUVOUixJQUFJUyxJQUFJOzs7Ozs7K0JBVkpULElBQUlDLEVBQUU7Ozs7O3dCQWNuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFLVjtJQUVBLHFCQUNFLDhEQUFDTjtRQUFJQyxXQUFVOztZQUEyQjswQkFDeEMsOERBQUNjO2dCQUFJZCxXQUFVOztrQ0FFYiw4REFBQ3RCLGlEQUFJQTt3QkFDSGlDLE1BQU1qQjt3QkFDTk0sV0FBVTtrQ0FDWDs7Ozs7O29CQUlBTCxlQUFlLGVBQWVQO29CQUM5Qk8sZUFBZSxlQUFlTjtvQkFDOUJNLGVBQWUsZUFBZUw7a0NBRS9CLDhEQUFDWixpREFBSUE7d0JBQ0hpQyxNQUFLO3dCQUNMWCxXQUFVO2tDQUNYOzs7Ozs7b0JBS0FULGlDQUNDLDhEQUFDUTt3QkFBSUMsV0FBVTs7MENBQ2IsOERBQUNNO2dDQUFLTixXQUFVOzBDQUFzQzs7Ozs7OzBDQUN0RCw4REFBQ007Z0NBQUtOLFdBQVU7MENBQ2JwQiw2REFBVUEsQ0FBQ21DLElBQUksQ0FBQyxDQUFDL0IsSUFBTUEsRUFBRXFCLEVBQUUsS0FBS2Qsa0JBQWtCc0IsUUFDakR0Qjs7Ozs7OzBDQUVKLDhEQUFDYixpREFBSUE7Z0NBQ0hpQyxNQUFNakI7Z0NBQ05NLFdBQVU7MENBQ1g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFiO0FBRUEsaUVBQWVmLFVBQVVBLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL2NvbXBvbmVudHMvQnVpbGRlck5hdi50c3g/YzFkNyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IExpbmsgZnJvbSBcIm5leHQvbGlua1wiO1xuaW1wb3J0IHsgdXNlU2VhcmNoUGFyYW1zIH0gZnJvbSBcIm5leHQvbmF2aWdhdGlvblwiO1xuaW1wb3J0IHsgQ0FURUdPUklFUyB9IGZyb20gXCJAL2RhdGEvZ3VuYnVpbGRlclBhcnRzXCI7XG5pbXBvcnQgdHlwZSB7IENhdGVnb3J5IH0gZnJvbSBcIkAvdHlwZXMvZ3VuYnVpbGRlclwiO1xuXG50eXBlIEJ1aWxkZXJOYXZQcm9wcyA9IHtcbiAgYWN0aXZlQ2F0ZWdvcnlJZD86IHN0cmluZyB8IG51bGw7XG59O1xuXG4vLyBIZWxwZXIgdG8gZ3JvdXAgY2F0ZWdvcmllcyBmb3IgdGhlIGRyb3Bkb3duc1xuZnVuY3Rpb24gZ3JvdXBDYXRlZ29yaWVzKGdyb3VwOiBcImxvd2VyXCIgfCBcInVwcGVyXCIgfCBcImFjY2Vzc29yaWVzXCIpOiBDYXRlZ29yeVtdIHtcbiAgcmV0dXJuIENBVEVHT1JJRVMuZmlsdGVyKChjKSA9PiBjLmdyb3VwID09PSBncm91cCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCdWlsZGVyTmF2KHsgYWN0aXZlQ2F0ZWdvcnlJZCB9OiBCdWlsZGVyTmF2UHJvcHMpIHtcbiAgY29uc3Qgc2VhcmNoUGFyYW1zID0gdXNlU2VhcmNoUGFyYW1zKCk7XG5cbiAgY29uc3QgbG93ZXIgPSBncm91cENhdGVnb3JpZXMoXCJsb3dlclwiKTtcbiAgY29uc3QgdXBwZXIgPSBncm91cENhdGVnb3JpZXMoXCJ1cHBlclwiKTtcbiAgY29uc3QgYWNjZXNzb3JpZXMgPSBncm91cENhdGVnb3JpZXMoXCJhY2Nlc3Nvcmllc1wiKTtcblxuICBjb25zdCBjdXJyZW50Q2F0ZWdvcnkgPVxuICAgIGFjdGl2ZUNhdGVnb3J5SWQgPz8gc2VhcmNoUGFyYW1zLmdldChcImNhdGVnb3J5XCIpID8/IHVuZGVmaW5lZDtcblxuICBjb25zdCBiYXNlSHJlZiA9IFwiL2d1bmJ1aWxkZXJcIjtcblxuICBjb25zdCByZW5kZXJEcm9wZG93biA9IChsYWJlbDogc3RyaW5nLCBpdGVtczogQ2F0ZWdvcnlbXSkgPT4ge1xuICAgIGlmICghaXRlbXMubGVuZ3RoKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGdyb3VwXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2BpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgZm9udC1tZWRpdW0gdHJhY2tpbmctd2lkZSB0cmFuc2l0aW9uLWNvbG9ycyB1cHBlcmNhc2UgdGV4dC1bMTFweF0gJHtcbiAgICAgICAgICAgIGl0ZW1zLnNvbWUoY2F0ID0+IGNhdC5pZCA9PT0gY3VycmVudENhdGVnb3J5KVxuICAgICAgICAgICAgICA/IFwidGV4dC13aGl0ZVwiXG4gICAgICAgICAgICAgIDogXCJ0ZXh0LW5ldXRyYWwtMjAwIGhvdmVyOnRleHQtd2hpdGVcIlxuICAgICAgICAgIH1gfVxuICAgICAgICA+XG4gICAgICAgICAge2xhYmVsfVxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzlweF1cIj7ilr48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW52aXNpYmxlIG9wYWNpdHktMCBncm91cC1ob3Zlcjp2aXNpYmxlIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tYWxsIGFic29sdXRlIGxlZnQtMCBtdC0yIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1uZXV0cmFsLTgwMCBiZy1ibGFjay85NSBzaGFkb3cteGwgei00MCBtaW4tdy1bMjIwcHhdXCI+XG4gICAgICAgICAgPHVsIGNsYXNzTmFtZT1cInB5LTIgdGV4dC1zbVwiPlxuICAgICAgICAgICAge2l0ZW1zLm1hcCgoY2F0KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZlID0gY3VycmVudENhdGVnb3J5ID09PSBjYXQuaWQ7XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGxpIGtleT17Y2F0LmlkfT5cbiAgICAgICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgICAgIGhyZWY9e2Ake2Jhc2VIcmVmfS8ke2NhdC5pZH1gfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1tcbiAgICAgICAgICAgICAgICAgICAgICBcImJsb2NrIHctZnVsbCBweC0zIHB5LTEuNSB0ZXh0LWxlZnQgdGV4dC1zbSB0cmFuc2l0aW9uLWNvbG9yc1wiLFxuICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiYmctbmV1dHJhbC04MDAgdGV4dC13aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwidGV4dC1uZXV0cmFsLTMwMCBob3ZlcjpiZy1uZXV0cmFsLTgwMCBob3Zlcjp0ZXh0LXdoaXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIF0uam9pbihcIiBcIil9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtjYXQubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy02eGwgbXgtYXV0byB3LWZ1bGxcIj4gICB7Lyog4oaQIGFsaWducyB3aXRoIHRvcG5hdiAqL31cbiAgICAgIDxuYXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTYgYm9yZGVyLWIgYm9yZGVyLW5ldXRyYWwtOTAwIHB4LTYgcHktMyB0ZXh0LXNtIGJnLWJsYWNrLzk1IGJhY2tkcm9wLWJsdXItc21cIj5cbiAgICAgICAgey8qIFByaW1hcnkgYnVpbGRlciBsaW5rICovfVxuICAgICAgICA8TGlua1xuICAgICAgICAgIGhyZWY9e2Jhc2VIcmVmfVxuICAgICAgICAgIGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgdGV4dC1uZXV0cmFsLTEwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYWNraW5nLVswLjI1ZW1dIHVwcGVyY2FzZSB0ZXh0LVsxMXB4XVwiXG4gICAgICAgID5cbiAgICAgICAgICBCdWlsZGVyXG4gICAgICAgIDwvTGluaz5cblxuICAgICAgICB7cmVuZGVyRHJvcGRvd24oXCJMb3dlciBQYXJ0c1wiLCBsb3dlcil9XG4gICAgICAgIHtyZW5kZXJEcm9wZG93bihcIlVwcGVyIFBhcnRzXCIsIHVwcGVyKX1cbiAgICAgICAge3JlbmRlckRyb3Bkb3duKFwiQWNjZXNzb3JpZXNcIiwgYWNjZXNzb3JpZXMpfVxuXG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgaHJlZj1cIi9idWlsZHNcIlxuICAgICAgICAgIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQtbmV1dHJhbC0zMDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFja2luZy1bMC4yNWVtXSB1cHBlcmNhc2UgdGV4dC1bMTFweF1cIlxuICAgICAgICA+XG4gICAgICAgICAgQnVpbGRzXG4gICAgICAgIDwvTGluaz5cblxuICAgICAgICB7LyogUmlnaHQg4oaSIEN1cnJlbnQgZmlsdGVyICovfVxuICAgICAgICB7Y3VycmVudENhdGVnb3J5ICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1sLWF1dG8gZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1uZXV0cmFsLTQwMCB0ZXh0LXhzXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSB0ZXh0LVsxMHB4XVwiPlZpZXdpbmc8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LW5ldXRyYWwtMTAwXCI+XG4gICAgICAgICAgICAgIHtDQVRFR09SSUVTLmZpbmQoKGMpID0+IGMuaWQgPT09IGN1cnJlbnRDYXRlZ29yeSk/Lm5hbWUgPz9cbiAgICAgICAgICAgICAgICBjdXJyZW50Q2F0ZWdvcnl9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICBocmVmPXtiYXNlSHJlZn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicm91bmRlZCBib3JkZXIgYm9yZGVyLW5ldXRyYWwtNzAwIHB4LTIgcHktMC41IHRleHQtWzEwcHhdIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIGhvdmVyOmJnLW5ldXRyYWwtODAwIGhvdmVyOnRleHQtd2hpdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBDbGVhclxuICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9uYXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJ1aWxkZXJOYXY7Il0sIm5hbWVzIjpbIkxpbmsiLCJ1c2VTZWFyY2hQYXJhbXMiLCJDQVRFR09SSUVTIiwiZ3JvdXBDYXRlZ29yaWVzIiwiZ3JvdXAiLCJmaWx0ZXIiLCJjIiwiQnVpbGRlck5hdiIsImFjdGl2ZUNhdGVnb3J5SWQiLCJzZWFyY2hQYXJhbXMiLCJsb3dlciIsInVwcGVyIiwiYWNjZXNzb3JpZXMiLCJjdXJyZW50Q2F0ZWdvcnkiLCJnZXQiLCJ1bmRlZmluZWQiLCJiYXNlSHJlZiIsInJlbmRlckRyb3Bkb3duIiwibGFiZWwiLCJpdGVtcyIsImxlbmd0aCIsImRpdiIsImNsYXNzTmFtZSIsImJ1dHRvbiIsInR5cGUiLCJzb21lIiwiY2F0IiwiaWQiLCJzcGFuIiwidWwiLCJtYXAiLCJpc0FjdGl2ZSIsImxpIiwiaHJlZiIsImpvaW4iLCJuYW1lIiwibmF2IiwiZmluZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./components/BuilderNav.tsx\n");
-
-/***/ }),
-
-/***/ "(ssr)/./components/TopNav.tsx":
-/*!*******************************!*\
- !*** ./components/TopNav.tsx ***!
- \*******************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TopNav: () => (/* binding */ TopNav)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/context/AuthContext */ \"(ssr)/./context/AuthContext.tsx\");\n// components/TopNav.tsx\n/* __next_internal_client_entry_do_not_use__ TopNav auto */ \n\n\nfunction TopNav() {\n const { user, logout, loading } = (0,_context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.useAuth)();\n const isAuthenticated = !!user;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"border-b border-zinc-800 bg-black/95 backdrop-blur\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-amber-500/20 bg-amber-500/5\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto flex max-w-6xl flex-col gap-1 px-4 py-2 text-[0.75rem] text-amber-100 md:flex-row md:items-center md:justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"rounded-sm bg-amber-500/20 px-2 py-0.5 text-[0.65rem] font-semibold uppercase tracking-[0.18em] text-amber-300\",\n children: \"Early Access Beta\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 18,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"hidden text-amber-100/90 md:inline\",\n children: \"You're using an early-access prototype of The Armory. Data, pricing, and available parts are still evolving.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 21,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 17,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-100/90 md:hidden\",\n children: \"Early-access prototype. Data and pricing may change.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 26,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 16,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 15,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto flex max-w-6xl items-center justify-between px-4 py-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/\",\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-400\",\n children: \"Battl Builder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 35,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"hidden items-center gap-4 md:flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-xs font-medium text-zinc-300 hover:text-zinc-50 transition-colors\",\n children: \"Builder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 44,\n columnNumber: 11\n }, this),\n isAuthenticated && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/admin\",\n className: \"text-xs font-medium text-emerald-400 hover:text-emerald-300 transition-colors\",\n children: \"Admin\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 52,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 43,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n className: \"inline-flex h-8 w-8 items-center justify-center rounded-full border border-zinc-700 bg-zinc-900/60 text-zinc-400 hover:text-zinc-200 hover:bg-zinc-800 hover:border-zinc-500 transition-colors\",\n \"aria-label\": \"Search (coming soon)\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n className: \"h-4 w-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: \"11\",\n cy: \"11\",\n r: \"6\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 79,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"line\", {\n x1: \"16.5\",\n y1: \"16.5\",\n x2: \"21\",\n y2: \"21\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 80,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 69,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 64,\n columnNumber: 11\n }, this),\n loading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-zinc-500\",\n children: \"Checking session…\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 85,\n columnNumber: 13\n }, this) : isAuthenticated ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"hidden text-xs text-zinc-300 sm:inline\",\n children: user.displayName || user.email\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 88,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: logout,\n className: \"text-xs font-medium text-zinc-400 hover:text-zinc-100 transition-colors\",\n children: \"Log Out\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 91,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/login\",\n className: \"text-xs font-medium text-zinc-400 hover:text-zinc-100 transition-colors\",\n children: \"Log In\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 101,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/register\",\n className: \"rounded-md border border-amber-400/70 bg-amber-400/10 px-3 py-1.5 text-xs font-semibold text-amber-200 hover:bg-amber-400/20 transition-colors\",\n children: \"Join Beta\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 107,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 62,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 33,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 13,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb21wb25lbnRzL1RvcE5hdi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSx3QkFBd0I7O0FBR0s7QUFDbUI7QUFFekMsU0FBU0U7SUFDZCxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBR0osNkRBQU9BO0lBRXpDLE1BQU1LLGtCQUFrQixDQUFDLENBQUNIO0lBRTFCLHFCQUNFLDhEQUFDSTtRQUFPQyxXQUFVOzswQkFFaEIsOERBQUNDO2dCQUFJRCxXQUFVOzBCQUNiLDRFQUFDQztvQkFBSUQsV0FBVTs7c0NBQ2IsOERBQUNDOzRCQUFJRCxXQUFVOzs4Q0FDYiw4REFBQ0U7b0NBQUtGLFdBQVU7OENBQWlIOzs7Ozs7OENBR2pJLDhEQUFDRTtvQ0FBS0YsV0FBVTs4Q0FBcUM7Ozs7Ozs7Ozs7OztzQ0FLdkQsOERBQUNFOzRCQUFLRixXQUFVO3NDQUE4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBT2xELDhEQUFDQztnQkFBSUQsV0FBVTs7a0NBRWIsOERBQUNSLGlEQUFJQTt3QkFDSFcsTUFBSzt3QkFDTEgsV0FBVTtrQ0FDWDs7Ozs7O2tDQUtELDhEQUFDSTt3QkFBSUosV0FBVTs7MENBQ2IsOERBQUNSLGlEQUFJQTtnQ0FDSFcsTUFBSztnQ0FDTEgsV0FBVTswQ0FDWDs7Ozs7OzRCQUlBRixpQ0FDQyw4REFBQ04saURBQUlBO2dDQUNIVyxNQUFLO2dDQUNMSCxXQUFVOzBDQUNYOzs7Ozs7Ozs7Ozs7a0NBT0wsOERBQUNDO3dCQUFJRCxXQUFVOzswQ0FFYiw4REFBQ0s7Z0NBQ0NDLE1BQUs7Z0NBQ0xOLFdBQVU7Z0NBQ1ZPLGNBQVc7MENBRVgsNEVBQUNDO29DQUNDQyxPQUFNO29DQUNOQyxTQUFRO29DQUNSQyxNQUFLO29DQUNMQyxRQUFPO29DQUNQQyxhQUFhO29DQUNiQyxlQUFjO29DQUNkQyxnQkFBZTtvQ0FDZmYsV0FBVTs7c0RBRVYsOERBQUNnQjs0Q0FBT0MsSUFBRzs0Q0FBS0MsSUFBRzs0Q0FBS0MsR0FBRTs7Ozs7O3NEQUMxQiw4REFBQ0M7NENBQUtDLElBQUc7NENBQU9DLElBQUc7NENBQU9DLElBQUc7NENBQUtDLElBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCQUl4QzNCLHdCQUNDLDhEQUFDSztnQ0FBS0YsV0FBVTswQ0FBd0I7Ozs7O3VDQUN0Q0YsZ0NBQ0Y7O2tEQUNFLDhEQUFDSTt3Q0FBS0YsV0FBVTtrREFDYkwsS0FBSzhCLFdBQVcsSUFBSTlCLEtBQUsrQixLQUFLOzs7Ozs7a0RBRWpDLDhEQUFDckI7d0NBQ0NDLE1BQUs7d0NBQ0xxQixTQUFTL0I7d0NBQ1RJLFdBQVU7a0RBQ1g7Ozs7Ozs7NkRBS0g7O2tEQUNFLDhEQUFDUixpREFBSUE7d0NBQ0hXLE1BQUs7d0NBQ0xILFdBQVU7a0RBQ1g7Ozs7OztrREFHRCw4REFBQ1IsaURBQUlBO3dDQUNIVyxNQUFLO3dDQUNMSCxXQUFVO2tEQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNmIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9jb21wb25lbnRzL1RvcE5hdi50c3g/ZGY1NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjb21wb25lbnRzL1RvcE5hdi50c3hcblwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgTGluayBmcm9tIFwibmV4dC9saW5rXCI7XG5pbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSBcIkAvY29udGV4dC9BdXRoQ29udGV4dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gVG9wTmF2KCkge1xuICBjb25zdCB7IHVzZXIsIGxvZ291dCwgbG9hZGluZyB9ID0gdXNlQXV0aCgpO1xuXG4gIGNvbnN0IGlzQXV0aGVudGljYXRlZCA9ICEhdXNlcjtcblxuICByZXR1cm4gKFxuICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwiYm9yZGVyLWIgYm9yZGVyLXppbmMtODAwIGJnLWJsYWNrLzk1IGJhY2tkcm9wLWJsdXJcIj5cbiAgICAgIHsvKiBFYXJseSBhY2Nlc3MgYmFyICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItYW1iZXItNTAwLzIwIGJnLWFtYmVyLTUwMC81XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBmbGV4IG1heC13LTZ4bCBmbGV4LWNvbCBnYXAtMSBweC00IHB5LTIgdGV4dC1bMC43NXJlbV0gdGV4dC1hbWJlci0xMDAgbWQ6ZmxleC1yb3cgbWQ6aXRlbXMtY2VudGVyIG1kOmp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInJvdW5kZWQtc20gYmctYW1iZXItNTAwLzIwIHB4LTIgcHktMC41IHRleHQtWzAuNjVyZW1dIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLVswLjE4ZW1dIHRleHQtYW1iZXItMzAwXCI+XG4gICAgICAgICAgICAgIEVhcmx5IEFjY2VzcyBCZXRhXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJoaWRkZW4gdGV4dC1hbWJlci0xMDAvOTAgbWQ6aW5saW5lXCI+XG4gICAgICAgICAgICAgIFlvdSZhcG9zO3JlIHVzaW5nIGFuIGVhcmx5LWFjY2VzcyBwcm90b3R5cGUgb2YgVGhlIEFybW9yeS4gRGF0YSxcbiAgICAgICAgICAgICAgcHJpY2luZywgYW5kIGF2YWlsYWJsZSBwYXJ0cyBhcmUgc3RpbGwgZXZvbHZpbmcuXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci0xMDAvOTAgbWQ6aGlkZGVuXCI+XG4gICAgICAgICAgICBFYXJseS1hY2Nlc3MgcHJvdG90eXBlLiBEYXRhIGFuZCBwcmljaW5nIG1heSBjaGFuZ2UuXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogTWFpbiBuYXYgcm93ICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIGZsZXggbWF4LXctNnhsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNCBweS0yXCI+XG4gICAgICAgIHsvKiBMZWZ0OiBCcmFuZCAvIEhvbWUgKi99XG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgaHJlZj1cIi9cIlxuICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4yZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNDAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIEJhdHRsIEJ1aWxkZXJcbiAgICAgICAgPC9MaW5rPlxuXG4gICAgICAgIHsvKiBDZW50ZXI6IG1haW4gbmF2IChCdWlsZGVyIC8gQWRtaW4pICovfVxuICAgICAgICA8bmF2IGNsYXNzTmFtZT1cImhpZGRlbiBpdGVtcy1jZW50ZXIgZ2FwLTQgbWQ6ZmxleFwiPlxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBocmVmPVwiL2d1bmJ1aWxkZXJcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtMzAwIGhvdmVyOnRleHQtemluYy01MCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQnVpbGRlclxuICAgICAgICAgIDwvTGluaz5cblxuICAgICAgICAgIHtpc0F1dGhlbnRpY2F0ZWQgJiYgKFxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj1cIi9hZG1pblwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1lbWVyYWxkLTQwMCBob3Zlcjp0ZXh0LWVtZXJhbGQtMzAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQWRtaW5cbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICApfVxuICAgICAgICA8L25hdj5cblxuICAgICAgICB7LyogUmlnaHQgc2lkZSBhY3Rpb25zICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgey8qIFNlYXJjaCBwbGFjZWhvbGRlciAqL31cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGgtOCB3LTggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzYwIHRleHQtemluYy00MDAgaG92ZXI6dGV4dC16aW5jLTIwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy01MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlYXJjaCAoY29taW5nIHNvb24pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNCB3LTRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjZcIiAvPlxuICAgICAgICAgICAgICA8bGluZSB4MT1cIjE2LjVcIiB5MT1cIjE2LjVcIiB4Mj1cIjIxXCIgeTI9XCIyMVwiIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+Q2hlY2tpbmcgc2Vzc2lvbuKApjwvc3Bhbj5cbiAgICAgICAgICApIDogaXNBdXRoZW50aWNhdGVkID8gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaGlkZGVuIHRleHQteHMgdGV4dC16aW5jLTMwMCBzbTppbmxpbmVcIj5cbiAgICAgICAgICAgICAgICB7dXNlci5kaXNwbGF5TmFtZSB8fCB1c2VyLmVtYWlsfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtsb2dvdXR9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0xMDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgTG9nIE91dFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgIGhyZWY9XCIvbG9naW5cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1tZWRpdW0gdGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMTAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIExvZyBJblxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj1cIi9yZWdpc3RlclwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWFtYmVyLTQwMC83MCBiZy1hbWJlci00MDAvMTAgcHgtMyBweS0xLjUgdGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMjAwIGhvdmVyOmJnLWFtYmVyLTQwMC8yMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBKb2luIEJldGFcbiAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbiAgKTtcbn0iXSwibmFtZXMiOlsiTGluayIsInVzZUF1dGgiLCJUb3BOYXYiLCJ1c2VyIiwibG9nb3V0IiwibG9hZGluZyIsImlzQXV0aGVudGljYXRlZCIsImhlYWRlciIsImNsYXNzTmFtZSIsImRpdiIsInNwYW4iLCJocmVmIiwibmF2IiwiYnV0dG9uIiwidHlwZSIsImFyaWEtbGFiZWwiLCJzdmciLCJ4bWxucyIsInZpZXdCb3giLCJmaWxsIiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJjaXJjbGUiLCJjeCIsImN5IiwiciIsImxpbmUiLCJ4MSIsInkxIiwieDIiLCJ5MiIsImRpc3BsYXlOYW1lIiwiZW1haWwiLCJvbkNsaWNrIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./components/TopNav.tsx\n");
-
-/***/ }),
-
-/***/ "(ssr)/./context/AuthContext.tsx":
-/*!*********************************!*\
- !*** ./context/AuthContext.tsx ***!
- \*********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AuthProvider: () => (/* binding */ AuthProvider),\n/* harmony export */ useAuth: () => (/* binding */ useAuth)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* __next_internal_client_entry_do_not_use__ AuthProvider,useAuth auto */ \n\nconst API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL ?? \"http://localhost:8080\";\nconst AuthContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(undefined);\nconst TOKEN_KEY = \"ballistic_auth_token\";\nconst USER_KEY = \"ballistic_auth_user\";\nfunction AuthProvider({ children }) {\n const [token, setToken] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [user, setUser] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n // Hydrate from localStorage on first load\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (true) return;\n const storedToken = window.localStorage.getItem(TOKEN_KEY);\n const storedUser = window.localStorage.getItem(USER_KEY);\n if (storedToken) {\n setToken(storedToken);\n }\n if (storedUser) {\n try {\n setUser(JSON.parse(storedUser));\n } catch {\n // bad JSON? wipe it\n window.localStorage.removeItem(USER_KEY);\n }\n }\n setLoading(false);\n }, []);\n const persistAuth = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((nextToken, nextUser)=>{\n if (true) return;\n if (nextToken) {\n window.localStorage.setItem(TOKEN_KEY, nextToken);\n } else {\n window.localStorage.removeItem(TOKEN_KEY);\n }\n if (nextUser) {\n window.localStorage.setItem(USER_KEY, JSON.stringify(nextUser));\n } else {\n window.localStorage.removeItem(USER_KEY);\n }\n }, []);\n const login = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async ({ email, password })=>{\n setLoading(true);\n try {\n const res = await fetch(`${API_BASE_URL}/auth/login`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email,\n password\n })\n });\n if (!res.ok) {\n const text = await res.text().catch(()=>res.statusText);\n throw new Error(text || \"Login failed\");\n }\n const data = await res.json();\n // Adjust these to match your backend response shape\n const nextToken = data.token ?? data.accessToken;\n const nextUser = data.user ?? {\n email: data.email ?? email,\n displayName: data.displayName ?? null,\n role: data.role ?? \"USER\"\n };\n setToken(nextToken);\n setUser(nextUser);\n persistAuth(nextToken, nextUser);\n } finally{\n setLoading(false);\n }\n }, [\n persistAuth\n ]);\n const register = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async ({ email, password, displayName })=>{\n setLoading(true);\n try {\n const res = await fetch(`${API_BASE_URL}/auth/register`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email,\n password,\n displayName\n })\n });\n if (!res.ok) {\n const text = await res.text().catch(()=>res.statusText);\n throw new Error(text || \"Registration failed\");\n }\n const data = await res.json();\n const nextToken = data.token ?? data.accessToken;\n const nextUser = data.user ?? {\n email: data.email ?? email,\n displayName: data.displayName ?? displayName ?? null,\n role: data.role ?? \"USER\"\n };\n setToken(nextToken);\n setUser(nextUser);\n persistAuth(nextToken, nextUser);\n } finally{\n setLoading(false);\n }\n }, [\n persistAuth\n ]);\n const logout = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n setToken(null);\n setUser(null);\n persistAuth(null, null);\n }, [\n persistAuth\n ]);\n const getAuthHeaders = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n return token ? {\n Authorization: `Bearer ${token}`\n } : {};\n }, [\n token\n ]);\n const value = {\n user,\n token,\n loading,\n login,\n register,\n logout,\n getAuthHeaders\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AuthContext.Provider, {\n value: value,\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/context/AuthContext.tsx\",\n lineNumber: 185,\n columnNumber: 10\n }, this);\n}\n// 🔑 This is what your useApi hook imports\nfunction useAuth() {\n const ctx = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AuthContext);\n if (!ctx) {\n throw new Error(\"useAuth must be used within an AuthProvider\");\n }\n return ctx;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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UUFDQUk7UUFDQWU7UUFDQWtCO1FBQ0FDO1FBQ0FDO0lBQ0Y7SUFFQSxxQkFBTyw4REFBQzdDLFlBQVlnRCxRQUFRO1FBQUNELE9BQU9BO2tCQUFRMUM7Ozs7OztBQUM5QztBQUVBLDJDQUEyQztBQUNwQyxTQUFTNEM7SUFDZCxNQUFNQyxNQUFNekQsaURBQVVBLENBQUNPO0lBQ3ZCLElBQUksQ0FBQ2tELEtBQUs7UUFDUixNQUFNLElBQUliLE1BQU07SUFDbEI7SUFDQSxPQUFPYTtBQUNUIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9jb250ZXh0L0F1dGhDb250ZXh0LnRzeD9mZGZmIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQge1xuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VTdGF0ZSxcbiAgUmVhY3ROb2RlLFxufSBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgQVBJX0JBU0VfVVJMID1cbiAgcHJvY2Vzcy5lbnYuTkVYVF9QVUJMSUNfQVBJX0JBU0VfVVJMID8/IFwiaHR0cDovL2xvY2FsaG9zdDo4MDgwXCI7XG5cbnR5cGUgQXV0aFVzZXIgPSB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgcm9sZTogc3RyaW5nO1xufSB8IG51bGw7XG5cbnR5cGUgQXV0aENvbnRleHRWYWx1ZSA9IHtcbiAgdXNlcjogQXV0aFVzZXI7XG4gIHRva2VuOiBzdHJpbmcgfCBudWxsO1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBsb2dpbjogKHBhcmFtczogeyBlbWFpbDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH0pID0+IFByb21pc2U8dm9pZD47XG4gIHJlZ2lzdGVyOiAocGFyYW1zOiB7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuICB9KSA9PiBQcm9taXNlPHZvaWQ+O1xuICBsb2dvdXQ6ICgpID0+IHZvaWQ7XG4gIGdldEF1dGhIZWFkZXJzOiAoKSA9PiBIZWFkZXJzSW5pdDtcbn07XG5cbmNvbnN0IEF1dGhDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxBdXRoQ29udGV4dFZhbHVlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5jb25zdCBUT0tFTl9LRVkgPSBcImJhbGxpc3RpY19hdXRoX3Rva2VuXCI7XG5jb25zdCBVU0VSX0tFWSA9IFwiYmFsbGlzdGljX2F1dGhfdXNlclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gQXV0aFByb3ZpZGVyKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3ROb2RlIH0pIHtcbiAgY29uc3QgW3Rva2VuLCBzZXRUb2tlbl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW3VzZXIsIHNldFVzZXJdID0gdXNlU3RhdGU8QXV0aFVzZXI+KG51bGwpO1xuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZTxib29sZWFuPih0cnVlKTtcblxuICAvLyBIeWRyYXRlIGZyb20gbG9jYWxTdG9yYWdlIG9uIGZpcnN0IGxvYWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RvcmVkVG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oVE9LRU5fS0VZKTtcbiAgICBjb25zdCBzdG9yZWRVc2VyID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFVTRVJfS0VZKTtcblxuICAgIGlmIChzdG9yZWRUb2tlbikge1xuICAgICAgc2V0VG9rZW4oc3RvcmVkVG9rZW4pO1xuICAgIH1cblxuICAgIGlmIChzdG9yZWRVc2VyKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzZXRVc2VyKEpTT04ucGFyc2Uoc3RvcmVkVXNlcikpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGJhZCBKU09OPyB3aXBlIGl0XG4gICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShVU0VSX0tFWSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBwZXJzaXN0QXV0aCA9IHVzZUNhbGxiYWNrKChuZXh0VG9rZW46IHN0cmluZyB8IG51bGwsIG5leHRVc2VyOiBBdXRoVXNlcikgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm47XG5cbiAgICBpZiAobmV4dFRva2VuKSB7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oVE9LRU5fS0VZLCBuZXh0VG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oVE9LRU5fS0VZKTtcbiAgICB9XG5cbiAgICBpZiAobmV4dFVzZXIpIHtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShVU0VSX0tFWSwgSlNPTi5zdHJpbmdpZnkobmV4dFVzZXIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFVTRVJfS0VZKTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICBjb25zdCBsb2dpbiA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7IGVtYWlsLCBwYXNzd29yZCB9OiB7IGVtYWlsOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke0FQSV9CQVNFX1VSTH0vYXV0aC9sb2dpbmAsIHtcbiAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGVtYWlsLCBwYXNzd29yZCB9KSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFyZXMub2spIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgcmVzLnRleHQoKS5jYXRjaCgoKSA9PiByZXMuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRleHQgfHwgXCJMb2dpbiBmYWlsZWRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcblxuICAgICAgICAvLyBBZGp1c3QgdGhlc2UgdG8gbWF0Y2ggeW91ciBiYWNrZW5kIHJlc3BvbnNlIHNoYXBlXG4gICAgICAgIGNvbnN0IG5leHRUb2tlbjogc3RyaW5nID0gZGF0YS50b2tlbiA/PyBkYXRhLmFjY2Vzc1Rva2VuO1xuICAgICAgICBjb25zdCBuZXh0VXNlcjogQXV0aFVzZXIgPVxuICAgICAgICAgIGRhdGEudXNlciA/P1xuICAgICAgICAgICh7XG4gICAgICAgICAgICBlbWFpbDogZGF0YS5lbWFpbCA/PyBlbWFpbCxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBkYXRhLmRpc3BsYXlOYW1lID8/IG51bGwsXG4gICAgICAgICAgICByb2xlOiBkYXRhLnJvbGUgPz8gXCJVU0VSXCIsXG4gICAgICAgICAgfSBhcyBBdXRoVXNlcik7XG5cbiAgICAgICAgc2V0VG9rZW4obmV4dFRva2VuKTtcbiAgICAgICAgc2V0VXNlcihuZXh0VXNlcik7XG4gICAgICAgIHBlcnNpc3RBdXRoKG5leHRUb2tlbiwgbmV4dFVzZXIpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbcGVyc2lzdEF1dGhdXG4gICk7XG5cbiAgY29uc3QgcmVnaXN0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoe1xuICAgICAgZW1haWwsXG4gICAgICBwYXNzd29yZCxcbiAgICAgIGRpc3BsYXlOYW1lLFxuICAgIH06IHtcbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgICAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG4gICAgfSkgPT4ge1xuICAgICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke0FQSV9CQVNFX1VSTH0vYXV0aC9yZWdpc3RlcmAsIHtcbiAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGVtYWlsLCBwYXNzd29yZCwgZGlzcGxheU5hbWUgfSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghcmVzLm9rKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlcy50ZXh0KCkuY2F0Y2goKCkgPT4gcmVzLnN0YXR1c1RleHQpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0ZXh0IHx8IFwiUmVnaXN0cmF0aW9uIGZhaWxlZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXMuanNvbigpO1xuXG4gICAgICAgIGNvbnN0IG5leHRUb2tlbjogc3RyaW5nID0gZGF0YS50b2tlbiA/PyBkYXRhLmFjY2Vzc1Rva2VuO1xuICAgICAgICBjb25zdCBuZXh0VXNlcjogQXV0aFVzZXIgPVxuICAgICAgICAgIGRhdGEudXNlciA/P1xuICAgICAgICAgICh7XG4gICAgICAgICAgICBlbWFpbDogZGF0YS5lbWFpbCA/PyBlbWFpbCxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBkYXRhLmRpc3BsYXlOYW1lID8/IGRpc3BsYXlOYW1lID8/IG51bGwsXG4gICAgICAgICAgICByb2xlOiBkYXRhLnJvbGUgPz8gXCJVU0VSXCIsXG4gICAgICAgICAgfSBhcyBBdXRoVXNlcik7XG5cbiAgICAgICAgc2V0VG9rZW4obmV4dFRva2VuKTtcbiAgICAgICAgc2V0VXNlcihuZXh0VXNlcik7XG4gICAgICAgIHBlcnNpc3RBdXRoKG5leHRUb2tlbiwgbmV4dFVzZXIpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbcGVyc2lzdEF1dGhdXG4gICk7XG5cbiAgY29uc3QgbG9nb3V0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFRva2VuKG51bGwpO1xuICAgIHNldFVzZXIobnVsbCk7XG4gICAgcGVyc2lzdEF1dGgobnVsbCwgbnVsbCk7XG4gIH0sIFtwZXJzaXN0QXV0aF0pO1xuXG4gIGNvbnN0IGdldEF1dGhIZWFkZXJzID0gdXNlQ2FsbGJhY2soKCk6IEhlYWRlcnNJbml0ID0+IHtcbiAgICByZXR1cm4gdG9rZW4gPyB7IEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gIH0gOiB7fTtcbiAgfSwgW3Rva2VuXSk7XG5cbiAgY29uc3QgdmFsdWU6IEF1dGhDb250ZXh0VmFsdWUgPSB7XG4gICAgdXNlcixcbiAgICB0b2tlbixcbiAgICBsb2FkaW5nLFxuICAgIGxvZ2luLFxuICAgIHJlZ2lzdGVyLFxuICAgIGxvZ291dCxcbiAgICBnZXRBdXRoSGVhZGVycyxcbiAgfTtcblxuICByZXR1cm4gPEF1dGhDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvQXV0aENvbnRleHQuUHJvdmlkZXI+O1xufVxuXG4vLyDwn5SRIFRoaXMgaXMgd2hhdCB5b3VyIHVzZUFwaSBob29rIGltcG9ydHNcbmV4cG9ydCBmdW5jdGlvbiB1c2VBdXRoKCk6IEF1dGhDb250ZXh0VmFsdWUge1xuICBjb25zdCBjdHggPSB1c2VDb250ZXh0KEF1dGhDb250ZXh0KTtcbiAgaWYgKCFjdHgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VBdXRoIG11c3QgYmUgdXNlZCB3aXRoaW4gYW4gQXV0aFByb3ZpZGVyXCIpO1xuICB9XG4gIHJldHVybiBjdHg7XG59Il0sIm5hbWVzIjpbImNyZWF0ZUNvbnRleHQiLCJ1c2VDYWxsYmFjayIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkFQSV9CQVNFX1VSTCIsInByb2Nlc3MiLCJlbnYiLCJORVhUX1BVQkxJQ19BUElfQkFTRV9VUkwiLCJBdXRoQ29udGV4dCIsInVuZGVmaW5lZCIsIlRPS0VOX0tFWSIsIlVTRVJfS0VZIiwiQXV0aFByb3ZpZGVyIiwiY2hpbGRyZW4iLCJ0b2tlbiIsInNldFRva2VuIiwidXNlciIsInNldFVzZXIiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsInN0b3JlZFRva2VuIiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInN0b3JlZFVzZXIiLCJKU09OIiwicGFyc2UiLCJyZW1vdmVJdGVtIiwicGVyc2lzdEF1dGgiLCJuZXh0VG9rZW4iLCJuZXh0VXNlciIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJsb2dpbiIsImVtYWlsIiwicGFzc3dvcmQiLCJyZXMiLCJmZXRjaCIsIm1ldGhvZCIsImhlYWRlcnMiLCJib2R5Iiwib2siLCJ0ZXh0IiwiY2F0Y2giLCJzdGF0dXNUZXh0IiwiRXJyb3IiLCJkYXRhIiwianNvbiIsImFjY2Vzc1Rva2VuIiwiZGlzcGxheU5hbWUiLCJyb2xlIiwicmVnaXN0ZXIiLCJsb2dvdXQiLCJnZXRBdXRoSGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJ2YWx1ZSIsIlByb3ZpZGVyIiwidXNlQXV0aCIsImN0eCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./context/AuthContext.tsx\n");
-
-/***/ }),
-
-/***/ "(ssr)/./data/gunbuilderParts.ts":
-/*!*********************************!*\
- !*** ./data/gunbuilderParts.ts ***!
- \*********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CATEGORIES: () => (/* binding */ CATEGORIES)\n/* harmony export */ });\nconst CATEGORIES = [\n // LOWER\n {\n id: \"lower\",\n name: \"Stripped Lowers\",\n description: \"Serialized lower – the foundation of the build.\",\n group: \"lower\"\n },\n {\n id: \"completeLower\",\n name: \"Complete Lowers\",\n description: \"Factory-built lower with stock, buffer system, and controls.\",\n group: \"lower\"\n },\n {\n id: \"lowerParts\",\n name: \"Lower Parts Kits\",\n description: \"Pins, springs, and controls for the lower.\",\n group: \"lower\"\n },\n {\n id: \"trigger\",\n name: \"Trigger / Fire Control\",\n description: \"Single-stage, two-stage, and match triggers.\",\n group: \"lower\"\n },\n {\n id: \"grip\",\n name: \"Pistol Grip\",\n description: \"Grips that shape how the rifle handles.\",\n group: \"lower\"\n },\n {\n id: \"safety\",\n name: \"Safety / Selector\",\n description: \"Ambi selectors and control upgrades.\",\n group: \"lower\"\n },\n {\n id: \"buffer\",\n name: \"Buffer System\",\n description: \"Buffer tube, buffer, spring, and related parts.\",\n group: \"lower\"\n },\n {\n id: \"stock\",\n name: \"Stock / Brace\",\n description: \"Adjustable, fixed, and minimalist stocks.\",\n group: \"lower\"\n },\n // UPPER\n {\n id: \"upper\",\n name: \"Stripped Uppers\",\n description: \"The core of the top half of your build.\",\n group: \"upper\"\n },\n {\n id: \"completeUpper\",\n name: \"Complete Uppers\",\n description: \"Pre-assembled uppers ready to pin and shoot.\",\n group: \"upper\"\n },\n {\n id: \"bcg\",\n name: \"Bolt Carriers\",\n description: \"The heartbeat of the rifle’s cycling.\",\n group: \"upper\"\n },\n {\n id: \"barrel\",\n name: \"Barrels\",\n description: \"Different lengths, profiles, and calibers.\",\n group: \"upper\"\n },\n {\n id: \"gasBlock\",\n name: \"Gas Blocks\",\n description: \"Standard and adjustable gas blocks.\",\n group: \"upper\"\n },\n {\n id: \"gasTube\",\n name: \"Gas Tubes\",\n description: \"Carbine, mid, rifle, and more.\",\n group: \"upper\"\n },\n {\n id: \"muzzleDevice\",\n name: \"Muzzle Devices\",\n description: \"Brakes, comps, and flash hiders.\",\n group: \"upper\"\n },\n {\n id: \"suppressor\",\n name: \"Suppressors\",\n description: \"Hearing-safe setups and hosts.\",\n group: \"upper\"\n },\n {\n id: \"handguard\",\n name: \"Handguards / Rails\",\n description: \"M-LOK rails and front-end furniture.\",\n group: \"upper\"\n },\n {\n id: \"chargingHandle\",\n name: \"Charging Handles\",\n description: \"Standard and ambi charging handles.\",\n group: \"upper\"\n },\n {\n id: \"sights\",\n name: \"Iron Sights\",\n description: \"Backup and primary irons.\",\n group: \"upper\"\n },\n {\n id: \"optic\",\n name: \"Optics\",\n description: \"LPVOs, red dots, and magnifiers.\",\n group: \"upper\"\n },\n // ACCESSORIES GROUP\n {\n id: \"magazine\",\n name: \"Magazines\",\n group: \"accessories\"\n },\n {\n id: \"weaponLight\",\n name: \"Weapon Lights & Lasers\",\n group: \"accessories\"\n },\n {\n id: \"foregrip\",\n name: \"Vertical / Angled Grips\",\n group: \"accessories\"\n },\n {\n id: \"bipod\",\n name: \"Bipods\",\n group: \"accessories\"\n },\n {\n id: \"sling\",\n name: \"Slings & Mounts\",\n group: \"accessories\"\n },\n {\n id: \"railAccessory\",\n name: \"Rail Sections & Covers\",\n group: \"accessories\"\n },\n {\n id: \"tools\",\n name: \"Tools & Maintenance\",\n group: \"accessories\"\n }\n];\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9kYXRhL2d1bmJ1aWxkZXJQYXJ0cy50cyIsIm1hcHBpbmdzIjoiOzs7O0FBRU8sTUFBTUEsYUFBeUI7SUFDcEMsUUFBUTtJQUNSO1FBQ0VDLElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLE9BQU87SUFDVDtJQUVBLFFBQVE7SUFDUjtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQSxvQkFBb0I7SUFDcEI7UUFDRUgsSUFBSTtRQUNKQyxNQUFNO1FBQ05FLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNORSxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkUsT0FBTztJQUNUO0lBQ0E7UUFDRUgsSUFBSTtRQUNKQyxNQUFNO1FBQ05FLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNORSxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkUsT0FBTztJQUNUO0lBQ0E7UUFDRUgsSUFBSTtRQUNKQyxNQUFNO1FBQ05FLE9BQU87SUFDVDtDQUNELENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL2RhdGEvZ3VuYnVpbGRlclBhcnRzLnRzPzczYWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDYXRlZ29yeSwgUGFydCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcblxuZXhwb3J0IGNvbnN0IENBVEVHT1JJRVM6IENhdGVnb3J5W10gPSBbXG4gIC8vIExPV0VSXG4gIHtcbiAgICBpZDogXCJsb3dlclwiLFxuICAgIG5hbWU6IFwiU3RyaXBwZWQgTG93ZXJzXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU2VyaWFsaXplZCBsb3dlciDigJMgdGhlIGZvdW5kYXRpb24gb2YgdGhlIGJ1aWxkLlwiLFxuICAgIGdyb3VwOiBcImxvd2VyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJjb21wbGV0ZUxvd2VyXCIsXG4gICAgbmFtZTogXCJDb21wbGV0ZSBMb3dlcnNcIixcbiAgICBkZXNjcmlwdGlvbjogXCJGYWN0b3J5LWJ1aWx0IGxvd2VyIHdpdGggc3RvY2ssIGJ1ZmZlciBzeXN0ZW0sIGFuZCBjb250cm9scy5cIixcbiAgICBncm91cDogXCJsb3dlclwiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwibG93ZXJQYXJ0c1wiLFxuICAgIG5hbWU6IFwiTG93ZXIgUGFydHMgS2l0c1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlBpbnMsIHNwcmluZ3MsIGFuZCBjb250cm9scyBmb3IgdGhlIGxvd2VyLlwiLFxuICAgIGdyb3VwOiBcImxvd2VyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJ0cmlnZ2VyXCIsXG4gICAgbmFtZTogXCJUcmlnZ2VyIC8gRmlyZSBDb250cm9sXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU2luZ2xlLXN0YWdlLCB0d28tc3RhZ2UsIGFuZCBtYXRjaCB0cmlnZ2Vycy5cIixcbiAgICBncm91cDogXCJsb3dlclwiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwiZ3JpcFwiLFxuICAgIG5hbWU6IFwiUGlzdG9sIEdyaXBcIixcbiAgICBkZXNjcmlwdGlvbjogXCJHcmlwcyB0aGF0IHNoYXBlIGhvdyB0aGUgcmlmbGUgaGFuZGxlcy5cIixcbiAgICBncm91cDogXCJsb3dlclwiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwic2FmZXR5XCIsXG4gICAgbmFtZTogXCJTYWZldHkgLyBTZWxlY3RvclwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkFtYmkgc2VsZWN0b3JzIGFuZCBjb250cm9sIHVwZ3JhZGVzLlwiLFxuICAgIGdyb3VwOiBcImxvd2VyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJidWZmZXJcIixcbiAgICBuYW1lOiBcIkJ1ZmZlciBTeXN0ZW1cIixcbiAgICBkZXNjcmlwdGlvbjogXCJCdWZmZXIgdHViZSwgYnVmZmVyLCBzcHJpbmcsIGFuZCByZWxhdGVkIHBhcnRzLlwiLFxuICAgIGdyb3VwOiBcImxvd2VyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJzdG9ja1wiLFxuICAgIG5hbWU6IFwiU3RvY2sgLyBCcmFjZVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkFkanVzdGFibGUsIGZpeGVkLCBhbmQgbWluaW1hbGlzdCBzdG9ja3MuXCIsXG4gICAgZ3JvdXA6IFwibG93ZXJcIixcbiAgfSxcblxuICAvLyBVUFBFUlxuICB7XG4gICAgaWQ6IFwidXBwZXJcIixcbiAgICBuYW1lOiBcIlN0cmlwcGVkIFVwcGVyc1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBjb3JlIG9mIHRoZSB0b3AgaGFsZiBvZiB5b3VyIGJ1aWxkLlwiLFxuICAgIGdyb3VwOiBcInVwcGVyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJjb21wbGV0ZVVwcGVyXCIsXG4gICAgbmFtZTogXCJDb21wbGV0ZSBVcHBlcnNcIixcbiAgICBkZXNjcmlwdGlvbjogXCJQcmUtYXNzZW1ibGVkIHVwcGVycyByZWFkeSB0byBwaW4gYW5kIHNob290LlwiLFxuICAgIGdyb3VwOiBcInVwcGVyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJiY2dcIixcbiAgICBuYW1lOiBcIkJvbHQgQ2FycmllcnNcIixcbiAgICBkZXNjcmlwdGlvbjogXCJUaGUgaGVhcnRiZWF0IG9mIHRoZSByaWZsZeKAmXMgY3ljbGluZy5cIixcbiAgICBncm91cDogXCJ1cHBlclwiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwiYmFycmVsXCIsXG4gICAgbmFtZTogXCJCYXJyZWxzXCIsXG4gICAgZGVzY3JpcHRpb246IFwiRGlmZmVyZW50IGxlbmd0aHMsIHByb2ZpbGVzLCBhbmQgY2FsaWJlcnMuXCIsXG4gICAgZ3JvdXA6IFwidXBwZXJcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcImdhc0Jsb2NrXCIsXG4gICAgbmFtZTogXCJHYXMgQmxvY2tzXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU3RhbmRhcmQgYW5kIGFkanVzdGFibGUgZ2FzIGJsb2Nrcy5cIixcbiAgICBncm91cDogXCJ1cHBlclwiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwiZ2FzVHViZVwiLFxuICAgIG5hbWU6IFwiR2FzIFR1YmVzXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQ2FyYmluZSwgbWlkLCByaWZsZSwgYW5kIG1vcmUuXCIsXG4gICAgZ3JvdXA6IFwidXBwZXJcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcIm11enpsZURldmljZVwiLFxuICAgIG5hbWU6IFwiTXV6emxlIERldmljZXNcIixcbiAgICBkZXNjcmlwdGlvbjogXCJCcmFrZXMsIGNvbXBzLCBhbmQgZmxhc2ggaGlkZXJzLlwiLFxuICAgIGdyb3VwOiBcInVwcGVyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJzdXBwcmVzc29yXCIsXG4gICAgbmFtZTogXCJTdXBwcmVzc29yc1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkhlYXJpbmctc2FmZSBzZXR1cHMgYW5kIGhvc3RzLlwiLFxuICAgIGdyb3VwOiBcInVwcGVyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJoYW5kZ3VhcmRcIixcbiAgICBuYW1lOiBcIkhhbmRndWFyZHMgLyBSYWlsc1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIk0tTE9LIHJhaWxzIGFuZCBmcm9udC1lbmQgZnVybml0dXJlLlwiLFxuICAgIGdyb3VwOiBcInVwcGVyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJjaGFyZ2luZ0hhbmRsZVwiLFxuICAgIG5hbWU6IFwiQ2hhcmdpbmcgSGFuZGxlc1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlN0YW5kYXJkIGFuZCBhbWJpIGNoYXJnaW5nIGhhbmRsZXMuXCIsXG4gICAgZ3JvdXA6IFwidXBwZXJcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcInNpZ2h0c1wiLFxuICAgIG5hbWU6IFwiSXJvbiBTaWdodHNcIixcbiAgICBkZXNjcmlwdGlvbjogXCJCYWNrdXAgYW5kIHByaW1hcnkgaXJvbnMuXCIsXG4gICAgZ3JvdXA6IFwidXBwZXJcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcIm9wdGljXCIsXG4gICAgbmFtZTogXCJPcHRpY3NcIixcbiAgICBkZXNjcmlwdGlvbjogXCJMUFZPcywgcmVkIGRvdHMsIGFuZCBtYWduaWZpZXJzLlwiLFxuICAgIGdyb3VwOiBcInVwcGVyXCIsXG4gIH0sXG4gIC8vIEFDQ0VTU09SSUVTIEdST1VQXG4gIHtcbiAgICBpZDogXCJtYWdhemluZVwiLFxuICAgIG5hbWU6IFwiTWFnYXppbmVzXCIsXG4gICAgZ3JvdXA6IFwiYWNjZXNzb3JpZXNcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcIndlYXBvbkxpZ2h0XCIsXG4gICAgbmFtZTogXCJXZWFwb24gTGlnaHRzICYgTGFzZXJzXCIsXG4gICAgZ3JvdXA6IFwiYWNjZXNzb3JpZXNcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcImZvcmVncmlwXCIsXG4gICAgbmFtZTogXCJWZXJ0aWNhbCAvIEFuZ2xlZCBHcmlwc1wiLFxuICAgIGdyb3VwOiBcImFjY2Vzc29yaWVzXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJiaXBvZFwiLFxuICAgIG5hbWU6IFwiQmlwb2RzXCIsXG4gICAgZ3JvdXA6IFwiYWNjZXNzb3JpZXNcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcInNsaW5nXCIsXG4gICAgbmFtZTogXCJTbGluZ3MgJiBNb3VudHNcIixcbiAgICBncm91cDogXCJhY2Nlc3Nvcmllc1wiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwicmFpbEFjY2Vzc29yeVwiLFxuICAgIG5hbWU6IFwiUmFpbCBTZWN0aW9ucyAmIENvdmVyc1wiLFxuICAgIGdyb3VwOiBcImFjY2Vzc29yaWVzXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJ0b29sc1wiLFxuICAgIG5hbWU6IFwiVG9vbHMgJiBNYWludGVuYW5jZVwiLFxuICAgIGdyb3VwOiBcImFjY2Vzc29yaWVzXCIsXG4gIH0sXG5dO1xuIl0sIm5hbWVzIjpbIkNBVEVHT1JJRVMiLCJpZCIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsImdyb3VwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./data/gunbuilderParts.ts\n");
-
-/***/ }),
-
-/***/ "(rsc)/./app/globals.css":
-/*!*************************!*\
- !*** ./app/globals.css ***!
- \*************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"8e3b978f6080\");\nif (false) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvZ2xvYmFscy5jc3MiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlFQUFlLGNBQWM7QUFDN0IsSUFBSSxLQUFVLEVBQUUsRUFBdUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL2FwcC9nbG9iYWxzLmNzcz9jZDI4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IFwiOGUzYjk3OGY2MDgwXCJcbmlmIChtb2R1bGUuaG90KSB7IG1vZHVsZS5ob3QuYWNjZXB0KCkgfVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/globals.css\n");
-
-/***/ }),
-
-/***/ "(rsc)/./app/layout.tsx":
-/*!************************!*\
- !*** ./app/layout.tsx ***!
- \************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ RootLayout),\n/* harmony export */ metadata: () => (/* binding */ metadata)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(rsc)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.css */ \"(rsc)/./app/globals.css\");\n/* harmony import */ var _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/context/AuthContext */ \"(rsc)/./context/AuthContext.tsx\");\n/* harmony import */ var _components_TopNav__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/TopNav */ \"(rsc)/./components/TopNav.tsx\");\n/* harmony import */ var _components_BuilderNav__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/BuilderNav */ \"(rsc)/./components/BuilderNav.tsx\");\n\n\n\n\n\nconst metadata = {\n title: {\n default: \"Battl Builder\",\n template: \"%s | Battl Builder\"\n },\n description: \"Battl Builder — the smarter, faster, data‑driven way to build your next firearm.\"\n};\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"en\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: \"bg-black text-zinc-100\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.AuthProvider, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_TopNav__WEBPACK_IMPORTED_MODULE_3__.TopNav, {}, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 21,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_BuilderNav__WEBPACK_IMPORTED_MODULE_4__.BuilderNav, {}, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 22,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen\",\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 23,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 20,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 19,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 18,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvbGF5b3V0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDdUI7QUFFOEI7QUFDUjtBQUNRO0FBRTlDLE1BQU1HLFdBQVc7SUFDdEJDLE9BQU87UUFDTEMsU0FBUztRQUNUQyxVQUFVO0lBQ1o7SUFDQUMsYUFBYTtBQUNmLEVBQUU7QUFFYSxTQUFTQyxXQUFXLEVBQUVDLFFBQVEsRUFBMkI7SUFDdEUscUJBQ0UsOERBQUNDO1FBQUtDLE1BQUs7a0JBQ1QsNEVBQUNDO1lBQUtDLFdBQVU7c0JBQ2QsNEVBQUNiLDhEQUFZQTs7a0NBQ1gsOERBQUNDLHNEQUFNQTs7Ozs7a0NBQ1AsOERBQUNDLDhEQUFVQTs7Ozs7a0NBQ1gsOERBQUNZO3dCQUFLRCxXQUFVO2tDQUFnQko7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLMUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL2FwcC9sYXlvdXQudHN4Pzk5ODgiXSwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgXCIuL2dsb2JhbHMuY3NzXCI7XG5pbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQXV0aFByb3ZpZGVyIH0gZnJvbSBcIkAvY29udGV4dC9BdXRoQ29udGV4dFwiO1xuaW1wb3J0IHsgVG9wTmF2IH0gZnJvbSBcIkAvY29tcG9uZW50cy9Ub3BOYXZcIjtcbmltcG9ydCB7IEJ1aWxkZXJOYXYgfSBmcm9tIFwiQC9jb21wb25lbnRzL0J1aWxkZXJOYXZcIjtcblxuZXhwb3J0IGNvbnN0IG1ldGFkYXRhID0ge1xuICB0aXRsZToge1xuICAgIGRlZmF1bHQ6IFwiQmF0dGwgQnVpbGRlclwiLFxuICAgIHRlbXBsYXRlOiBcIiVzIHwgQmF0dGwgQnVpbGRlclwiLFxuICB9LFxuICBkZXNjcmlwdGlvbjogXCJCYXR0bCBCdWlsZGVyIOKAlCB0aGUgc21hcnRlciwgZmFzdGVyLCBkYXRh4oCRZHJpdmVuIHdheSB0byBidWlsZCB5b3VyIG5leHQgZmlyZWFybS5cIixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJvb3RMYXlvdXQoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfSkge1xuICByZXR1cm4gKFxuICAgIDxodG1sIGxhbmc9XCJlblwiPlxuICAgICAgPGJvZHkgY2xhc3NOYW1lPVwiYmctYmxhY2sgdGV4dC16aW5jLTEwMFwiPlxuICAgICAgICA8QXV0aFByb3ZpZGVyPlxuICAgICAgICAgIDxUb3BOYXYgLz5cbiAgICAgICAgICA8QnVpbGRlck5hdiAvPlxuICAgICAgICAgIDxtYWluIGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlblwiPntjaGlsZHJlbn08L21haW4+XG4gICAgICAgIDwvQXV0aFByb3ZpZGVyPlxuICAgICAgPC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKTtcbn0iXSwibmFtZXMiOlsiQXV0aFByb3ZpZGVyIiwiVG9wTmF2IiwiQnVpbGRlck5hdiIsIm1ldGFkYXRhIiwidGl0bGUiLCJkZWZhdWx0IiwidGVtcGxhdGUiLCJkZXNjcmlwdGlvbiIsIlJvb3RMYXlvdXQiLCJjaGlsZHJlbiIsImh0bWwiLCJsYW5nIiwiYm9keSIsImNsYXNzTmFtZSIsIm1haW4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/layout.tsx\n");
-
-/***/ }),
-
-/***/ "(rsc)/./components/BuilderNav.tsx":
-/*!***********************************!*\
- !*** ./components/BuilderNav.tsx ***!
- \***********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ $$typeof: () => (/* binding */ $$typeof),
-/* harmony export */ BuilderNav: () => (/* binding */ e0),
-/* harmony export */ __esModule: () => (/* binding */ __esModule),
-/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
-/* harmony export */ });
-/* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js");
-
-const proxy = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx`)
-
-// Accessing the __esModule property and exporting $$typeof are required here.
-// The __esModule getter forces the proxy target to create the default export
-// and the $$typeof value is for rendering logic to determine if the module
-// is a client boundary.
-const { __esModule, $$typeof } = proxy;
-const __default__ = proxy.default;
-
-const e0 = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx#BuilderNav`);
-
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx#default`));
-
-
-/***/ }),
-
-/***/ "(rsc)/./components/TopNav.tsx":
-/*!*******************************!*\
- !*** ./components/TopNav.tsx ***!
- \*******************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TopNav: () => (/* binding */ e0)\n/* harmony export */ });\n/* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\");\n\nconst proxy = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx`)\n\n// Accessing the __esModule property and exporting $$typeof are required here.\n// The __esModule getter forces the proxy target to create the default export\n// and the $$typeof value is for rendering logic to determine if the module\n// is a client boundary.\nconst { __esModule, $$typeof } = proxy;\nconst __default__ = proxy.default;\n\nconst e0 = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx#TopNav`);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9jb21wb25lbnRzL1RvcE5hdi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBd0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL2NvbXBvbmVudHMvVG9wTmF2LnRzeD9kZjU2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGNvbXBvbmVudHMvVG9wTmF2LnRzeFxuXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCBMaW5rIGZyb20gXCJuZXh0L2xpbmtcIjtcbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tIFwiQC9jb250ZXh0L0F1dGhDb250ZXh0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBUb3BOYXYoKSB7XG4gIGNvbnN0IHsgdXNlciwgbG9nb3V0LCBsb2FkaW5nIH0gPSB1c2VBdXRoKCk7XG5cbiAgY29uc3QgaXNBdXRoZW50aWNhdGVkID0gISF1c2VyO1xuXG4gIHJldHVybiAoXG4gICAgPGhlYWRlciBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItemluYy04MDAgYmctYmxhY2svOTUgYmFja2Ryb3AtYmx1clwiPlxuICAgICAgey8qIEVhcmx5IGFjY2VzcyBiYXIgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlci1iIGJvcmRlci1hbWJlci01MDAvMjAgYmctYW1iZXItNTAwLzVcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIGZsZXggbWF4LXctNnhsIGZsZXgtY29sIGdhcC0xIHB4LTQgcHktMiB0ZXh0LVswLjc1cmVtXSB0ZXh0LWFtYmVyLTEwMCBtZDpmbGV4LXJvdyBtZDppdGVtcy1jZW50ZXIgbWQ6anVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicm91bmRlZC1zbSBiZy1hbWJlci01MDAvMjAgcHgtMiBweS0wLjUgdGV4dC1bMC42NXJlbV0gZm9udC1zZW1pYm9sZCB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMThlbV0gdGV4dC1hbWJlci0zMDBcIj5cbiAgICAgICAgICAgICAgRWFybHkgQWNjZXNzIEJldGFcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImhpZGRlbiB0ZXh0LWFtYmVyLTEwMC85MCBtZDppbmxpbmVcIj5cbiAgICAgICAgICAgICAgWW91JmFwb3M7cmUgdXNpbmcgYW4gZWFybHktYWNjZXNzIHByb3RvdHlwZSBvZiBUaGUgQXJtb3J5LiBEYXRhLFxuICAgICAgICAgICAgICBwcmljaW5nLCBhbmQgYXZhaWxhYmxlIHBhcnRzIGFyZSBzdGlsbCBldm9sdmluZy5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWFtYmVyLTEwMC85MCBtZDpoaWRkZW5cIj5cbiAgICAgICAgICAgIEVhcmx5LWFjY2VzcyBwcm90b3R5cGUuIERhdGEgYW5kIHByaWNpbmcgbWF5IGNoYW5nZS5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBNYWluIG5hdiByb3cgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gZmxleCBtYXgtdy02eGwgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC00IHB5LTJcIj5cbiAgICAgICAgey8qIExlZnQ6IEJyYW5kIC8gSG9tZSAqL31cbiAgICAgICAgPExpbmtcbiAgICAgICAgICBocmVmPVwiL1wiXG4gICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjJlbV0gdXBwZXJjYXNlIHRleHQtemluYy00MDBcIlxuICAgICAgICA+XG4gICAgICAgICAgQmF0dGwgQnVpbGRlclxuICAgICAgICA8L0xpbms+XG5cbiAgICAgICAgey8qIENlbnRlcjogbWFpbiBuYXYgKEJ1aWxkZXIgLyBBZG1pbikgKi99XG4gICAgICAgIDxuYXYgY2xhc3NOYW1lPVwiaGlkZGVuIGl0ZW1zLWNlbnRlciBnYXAtNCBtZDpmbGV4XCI+XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGhyZWY9XCIvZ3VuYnVpbGRlclwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtemluYy0zMDAgaG92ZXI6dGV4dC16aW5jLTUwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBCdWlsZGVyXG4gICAgICAgICAgPC9MaW5rPlxuXG4gICAgICAgICAge2lzQXV0aGVudGljYXRlZCAmJiAoXG4gICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICBocmVmPVwiL2FkbWluXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LWVtZXJhbGQtNDAwIGhvdmVyOnRleHQtZW1lcmFsZC0zMDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBBZG1pblxuICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvbmF2PlxuXG4gICAgICAgIHsvKiBSaWdodCBzaWRlIGFjdGlvbnMgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgICB7LyogU2VhcmNoIHBsYWNlaG9sZGVyICovfVxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaC04IHctOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy05MDAvNjAgdGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMjAwIGhvdmVyOmJnLXppbmMtODAwIGhvdmVyOmJvcmRlci16aW5jLTUwMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VhcmNoIChjb21pbmcgc29vbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXsyfVxuICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC00IHctNFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMVwiIGN5PVwiMTFcIiByPVwiNlwiIC8+XG4gICAgICAgICAgICAgIDxsaW5lIHgxPVwiMTYuNVwiIHkxPVwiMTYuNVwiIHgyPVwiMjFcIiB5Mj1cIjIxXCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAge2xvYWRpbmcgPyAoXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy01MDBcIj5DaGVja2luZyBzZXNzaW9u4oCmPC9zcGFuPlxuICAgICAgICAgICkgOiBpc0F1dGhlbnRpY2F0ZWQgPyAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJoaWRkZW4gdGV4dC14cyB0ZXh0LXppbmMtMzAwIHNtOmlubGluZVwiPlxuICAgICAgICAgICAgICAgIHt1c2VyLmRpc3BsYXlOYW1lIHx8IHVzZXIuZW1haWx9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2xvZ291dH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtemluYy00MDAgaG92ZXI6dGV4dC16aW5jLTEwMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBMb2cgT3V0XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj1cIi9sb2dpblwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0xMDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgTG9nIEluXG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICBocmVmPVwiL3JlZ2lzdGVyXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYW1iZXItNDAwLzcwIGJnLWFtYmVyLTQwMC8xMCBweC0zIHB5LTEuNSB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0yMDAgaG92ZXI6YmctYW1iZXItNDAwLzIwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEpvaW4gQmV0YVxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaGVhZGVyPlxuICApO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./components/TopNav.tsx\n");
-
-/***/ }),
-
-/***/ "(rsc)/./context/AuthContext.tsx":
-/*!*********************************!*\
- !*** ./context/AuthContext.tsx ***!
- \*********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ AuthProvider: () => (/* binding */ e0),
-/* harmony export */ useAuth: () => (/* binding */ e1)
-/* harmony export */ });
-/* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js");
-
-const proxy = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/context/AuthContext.tsx`)
-
-// Accessing the __esModule property and exporting $$typeof are required here.
-// The __esModule getter forces the proxy target to create the default export
-// and the $$typeof value is for rendering logic to determine if the module
-// is a client boundary.
-const { __esModule, $$typeof } = proxy;
-const __default__ = proxy.default;
-
-const e0 = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/context/AuthContext.tsx#AuthProvider`);
-
-const e1 = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/context/AuthContext.tsx#useAuth`);
-
-
-/***/ })
-
-};
-;
-
-// load runtime
-var __webpack_require__ = require("../../webpack-runtime.js");
-__webpack_require__.C(exports);
-var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
-var __webpack_exports__ = __webpack_require__.X(0, ["vendor-chunks/next","vendor-chunks/@swc"], () => (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!")));
-module.exports = __webpack_exports__;
-
-})();
\ No newline at end of file
diff --git a/.next/server/app/_not-found/page_client-reference-manifest.js b/.next/server/app/_not-found/page_client-reference-manifest.js
deleted file mode 100644
index add5a1c..0000000
--- a/.next/server/app/_not-found/page_client-reference-manifest.js
+++ /dev/null
@@ -1 +0,0 @@
-globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/_not-found/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./app/globals.css":{"*":{"id":"(ssr)/./app/globals.css","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./components/BuilderNav.tsx":{"*":{"id":"(ssr)/./components/BuilderNav.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./components/TopNav.tsx":{"*":{"id":"(ssr)/./components/TopNav.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./context/AuthContext.tsx":{"*":{"id":"(ssr)/./context/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/admin/page.tsx":{"*":{"id":"(ssr)/./app/admin/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/admin/part-role-mappings/page.tsx":{"*":{"id":"(ssr)/./app/admin/part-role-mappings/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/admin/categories/page.tsx":{"*":{"id":"(ssr)/./app/admin/categories/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/admin/merchant-category-mappings/page.tsx":{"*":{"id":"(ssr)/./app/admin/merchant-category-mappings/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/admin/merchants/page.tsx":{"*":{"id":"(ssr)/./app/admin/merchants/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/link.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/link.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/builds/page.tsx":{"*":{"id":"(ssr)/./app/builds/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/builder/page.tsx":{"*":{"id":"(ssr)/./app/builder/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/sean/Dev/gunbuilder-prototype/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx":{"id":"(app-pages-browser)/./components/BuilderNav.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx":{"id":"(app-pages-browser)/./components/TopNav.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/context/AuthContext.tsx":{"id":"(app-pages-browser)/./context/AuthContext.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/admin/page.tsx":{"id":"(app-pages-browser)/./app/admin/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/admin/part-role-mappings/page.tsx":{"id":"(app-pages-browser)/./app/admin/part-role-mappings/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/admin/categories/page.tsx":{"id":"(app-pages-browser)/./app/admin/categories/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/admin/merchant-category-mappings/page.tsx":{"id":"(app-pages-browser)/./app/admin/merchant-category-mappings/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/admin/merchants/page.tsx":{"id":"(app-pages-browser)/./app/admin/merchants/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/builds/page.tsx":{"id":"(app-pages-browser)/./app/builds/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/builder/page.tsx":{"id":"(app-pages-browser)/./app/builder/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/sean/Dev/gunbuilder-prototype/":[],"/Users/sean/Dev/gunbuilder-prototype/app/layout":["static/css/app/layout.css"],"/Users/sean/Dev/gunbuilder-prototype/app/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/_not-found/page":[]}}
\ No newline at end of file
diff --git a/.next/server/app/gunbuilder/page.js b/.next/server/app/gunbuilder/page.js
deleted file mode 100644
index dcc8d61..0000000
--- a/.next/server/app/gunbuilder/page.js
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
- * ATTENTION: An "eval-source-map" devtool has been used.
- * This devtool is neither made for production nor for readable output files.
- * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
- * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
- * or disable the default devtool with "devtool: false".
- * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
- */
-(() => {
-var exports = {};
-exports.id = "app/gunbuilder/page";
-exports.ids = ["app/gunbuilder/page"];
-exports.modules = {
-
-/***/ "./action-async-storage.external":
-/*!****************************************************************************!*\
- !*** external "next/dist/client/components/action-async-storage.external" ***!
- \****************************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/client/components/action-async-storage.external");
-
-/***/ }),
-
-/***/ "../../client/components/action-async-storage.external":
-/*!*******************************************************************************!*\
- !*** external "next/dist/client/components/action-async-storage.external.js" ***!
- \*******************************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/client/components/action-async-storage.external.js");
-
-/***/ }),
-
-/***/ "./request-async-storage.external":
-/*!*****************************************************************************!*\
- !*** external "next/dist/client/components/request-async-storage.external" ***!
- \*****************************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/client/components/request-async-storage.external");
-
-/***/ }),
-
-/***/ "../../client/components/request-async-storage.external":
-/*!********************************************************************************!*\
- !*** external "next/dist/client/components/request-async-storage.external.js" ***!
- \********************************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/client/components/request-async-storage.external.js");
-
-/***/ }),
-
-/***/ "./static-generation-async-storage.external":
-/*!***************************************************************************************!*\
- !*** external "next/dist/client/components/static-generation-async-storage.external" ***!
- \***************************************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/client/components/static-generation-async-storage.external");
-
-/***/ }),
-
-/***/ "../../client/components/static-generation-async-storage.external":
-/*!******************************************************************************************!*\
- !*** external "next/dist/client/components/static-generation-async-storage.external.js" ***!
- \******************************************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/client/components/static-generation-async-storage.external.js");
-
-/***/ }),
-
-/***/ "next/dist/compiled/next-server/app-page.runtime.dev.js":
-/*!*************************************************************************!*\
- !*** external "next/dist/compiled/next-server/app-page.runtime.dev.js" ***!
- \*************************************************************************/
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("next/dist/compiled/next-server/app-page.runtime.dev.js");
-
-/***/ }),
-
-/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!":
-/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D! ***!
- \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GlobalError: () => (/* reexport default from dynamic */ next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2___default.a),\n/* harmony export */ __next_app__: () => (/* binding */ __next_app__),\n/* harmony export */ originalPathname: () => (/* binding */ originalPathname),\n/* harmony export */ pages: () => (/* binding */ pages),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ tree: () => (/* binding */ tree)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/future/route-modules/app-page/module.compiled */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js?d969\");\n/* harmony import */ var next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/future/route-kind */ \"(rsc)/./node_modules/next/dist/server/future/route-kind.js\");\n/* harmony import */ var next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/client/components/error-boundary */ \"(rsc)/./node_modules/next/dist/client/components/error-boundary.js\");\n/* harmony import */ var next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/server/app-render/entry-base */ \"(rsc)/./node_modules/next/dist/server/app-render/entry-base.js\");\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__) if([\"default\",\"tree\",\"pages\",\"GlobalError\",\"originalPathname\",\"__next_app__\",\"routeModule\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\"TURBOPACK { transition: next-ssr }\";\n\n\n// We inject the tree and pages here so that we can use them in the route\n// module.\nconst tree = {\n children: [\n '',\n {\n children: [\n 'gunbuilder',\n {\n children: ['__PAGE__', {}, {\n page: [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/gunbuilder/page.tsx */ \"(rsc)/./app/gunbuilder/page.tsx\")), \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\"],\n \n }]\n },\n {\n \n \n }\n ]\n },\n {\n 'layout': [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/layout.tsx */ \"(rsc)/./app/layout.tsx\")), \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\"],\n'not-found': [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/not-found-error */ \"(rsc)/./node_modules/next/dist/client/components/not-found-error.js\", 23)), \"next/dist/client/components/not-found-error\"],\n \n }\n ]\n }.children;\nconst pages = [\"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\"];\n\n\nconst __next_app_require__ = __webpack_require__\nconst __next_app_load_chunk__ = () => Promise.resolve()\nconst originalPathname = \"/gunbuilder/page\";\nconst __next_app__ = {\n require: __next_app_require__,\n loadChunk: __next_app_load_chunk__\n};\n\n// Create and export the route module that will be consumed.\nconst routeModule = new next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppPageRouteModule({\n definition: {\n kind: next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,\n page: \"/gunbuilder/page\",\n pathname: \"/gunbuilder\",\n // The following aren't used in production.\n bundlePath: \"\",\n filename: \"\",\n appPaths: []\n },\n userland: {\n loaderTree: tree\n }\n});\n\n//# sourceMappingURL=app-page.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWFwcC1sb2FkZXIuanM/bmFtZT1hcHAlMkZndW5idWlsZGVyJTJGcGFnZSZwYWdlPSUyRmd1bmJ1aWxkZXIlMkZwYWdlJmFwcFBhdGhzPSUyRmd1bmJ1aWxkZXIlMkZwYWdlJnBhZ2VQYXRoPXByaXZhdGUtbmV4dC1hcHAtZGlyJTJGZ3VuYnVpbGRlciUyRnBhZ2UudHN4JmFwcERpcj0lMkZVc2VycyUyRnNlYW4lMkZEZXYlMkZndW5idWlsZGVyLXByb3RvdHlwZSUyRmFwcCZwYWdlRXh0ZW5zaW9ucz10c3gmcGFnZUV4dGVuc2lvbnM9dHMmcGFnZUV4dGVuc2lvbnM9anN4JnBhZ2VFeHRlbnNpb25zPWpzJnJvb3REaXI9JTJGVXNlcnMlMkZzZWFuJTJGRGV2JTJGZ3VuYnVpbGRlci1wcm90b3R5cGUmaXNEZXY9dHJ1ZSZ0c2NvbmZpZ1BhdGg9dHNjb25maWcuanNvbiZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JnByZWZlcnJlZFJlZ2lvbj0mbWlkZGxld2FyZUNvbmZpZz1lMzAlM0QhIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxhQUFhLHNCQUFzQjtBQUNpRTtBQUNyQztBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakMsdUJBQXVCLDhKQUFpRztBQUN4SDtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLHlCQUF5Qiw0SUFBd0Y7QUFDakgsb0JBQW9CLDBOQUFnRjtBQUNwRztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDdUI7QUFDNkQ7QUFDcEYsNkJBQTZCLG1CQUFtQjtBQUNoRDtBQUNPO0FBQ0E7QUFDUDtBQUNBO0FBQ0E7QUFDdUQ7QUFDdkQ7QUFDTyx3QkFBd0IsOEdBQWtCO0FBQ2pEO0FBQ0EsY0FBYyx5RUFBUztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLz9kZTI0Il0sInNvdXJjZXNDb250ZW50IjpbIlwiVFVSQk9QQUNLIHsgdHJhbnNpdGlvbjogbmV4dC1zc3IgfVwiO1xuaW1wb3J0IHsgQXBwUGFnZVJvdXRlTW9kdWxlIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXBhZ2UvbW9kdWxlLmNvbXBpbGVkXCI7XG5pbXBvcnQgeyBSb3V0ZUtpbmQgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9mdXR1cmUvcm91dGUta2luZFwiO1xuLy8gV2UgaW5qZWN0IHRoZSB0cmVlIGFuZCBwYWdlcyBoZXJlIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGVtIGluIHRoZSByb3V0ZVxuLy8gbW9kdWxlLlxuY29uc3QgdHJlZSA9IHtcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgJycsXG4gICAgICAgIHtcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgJ2d1bmJ1aWxkZXInLFxuICAgICAgICB7XG4gICAgICAgIGNoaWxkcmVuOiBbJ19fUEFHRV9fJywge30sIHtcbiAgICAgICAgICBwYWdlOiBbKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvYXBwL2d1bmJ1aWxkZXIvcGFnZS50c3hcIiksIFwiL1VzZXJzL3NlYW4vRGV2L2d1bmJ1aWxkZXItcHJvdG90eXBlL2FwcC9ndW5idWlsZGVyL3BhZ2UudHN4XCJdLFxuICAgICAgICAgIFxuICAgICAgICB9XVxuICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICBcbiAgICAgICAgXG4gICAgICB9XG4gICAgICBdXG4gICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICdsYXlvdXQnOiBbKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvYXBwL2xheW91dC50c3hcIiksIFwiL1VzZXJzL3NlYW4vRGV2L2d1bmJ1aWxkZXItcHJvdG90eXBlL2FwcC9sYXlvdXQudHN4XCJdLFxuJ25vdC1mb3VuZCc6IFsoKSA9PiBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9ub3QtZm91bmQtZXJyb3JcIiksIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvclwiXSxcbiAgICAgICAgXG4gICAgICB9XG4gICAgICBdXG4gICAgICB9LmNoaWxkcmVuO1xuY29uc3QgcGFnZXMgPSBbXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvYXBwL2d1bmJ1aWxkZXIvcGFnZS50c3hcIl07XG5leHBvcnQgeyB0cmVlLCBwYWdlcyB9O1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBHbG9iYWxFcnJvciB9IGZyb20gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnlcIjtcbmNvbnN0IF9fbmV4dF9hcHBfcmVxdWlyZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfX1xuY29uc3QgX19uZXh0X2FwcF9sb2FkX2NodW5rX18gPSAoKSA9PiBQcm9taXNlLnJlc29sdmUoKVxuZXhwb3J0IGNvbnN0IG9yaWdpbmFsUGF0aG5hbWUgPSBcIi9ndW5idWlsZGVyL3BhZ2VcIjtcbmV4cG9ydCBjb25zdCBfX25leHRfYXBwX18gPSB7XG4gICAgcmVxdWlyZTogX19uZXh0X2FwcF9yZXF1aXJlX18sXG4gICAgbG9hZENodW5rOiBfX25leHRfYXBwX2xvYWRfY2h1bmtfX1xufTtcbmV4cG9ydCAqIGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2FwcC1yZW5kZXIvZW50cnktYmFzZVwiO1xuLy8gQ3JlYXRlIGFuZCBleHBvcnQgdGhlIHJvdXRlIG1vZHVsZSB0aGF0IHdpbGwgYmUgY29uc3VtZWQuXG5leHBvcnQgY29uc3Qgcm91dGVNb2R1bGUgPSBuZXcgQXBwUGFnZVJvdXRlTW9kdWxlKHtcbiAgICBkZWZpbml0aW9uOiB7XG4gICAgICAgIGtpbmQ6IFJvdXRlS2luZC5BUFBfUEFHRSxcbiAgICAgICAgcGFnZTogXCIvZ3VuYnVpbGRlci9wYWdlXCIsXG4gICAgICAgIHBhdGhuYW1lOiBcIi9ndW5idWlsZGVyXCIsXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlbid0IHVzZWQgaW4gcHJvZHVjdGlvbi5cbiAgICAgICAgYnVuZGxlUGF0aDogXCJcIixcbiAgICAgICAgZmlsZW5hbWU6IFwiXCIsXG4gICAgICAgIGFwcFBhdGhzOiBbXVxuICAgIH0sXG4gICAgdXNlcmxhbmQ6IHtcbiAgICAgICAgbG9hZGVyVHJlZTogdHJlZVxuICAgIH1cbn0pO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcHAtcGFnZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!\n");
-
-/***/ }),
-
-/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcomponents%2FBuilderNav.tsx%22%2C%22ids%22%3A%5B%22BuilderNav%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcomponents%2FTopNav.tsx%22%2C%22ids%22%3A%5B%22TopNav%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcontext%2FAuthContext.tsx%22%2C%22ids%22%3A%5B%22AuthProvider%22%5D%7D&server=true!":
-/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcomponents%2FBuilderNav.tsx%22%2C%22ids%22%3A%5B%22BuilderNav%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcomponents%2FTopNav.tsx%22%2C%22ids%22%3A%5B%22TopNav%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcontext%2FAuthContext.tsx%22%2C%22ids%22%3A%5B%22AuthProvider%22%5D%7D&server=true! ***!
- \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
-/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./components/BuilderNav.tsx */ \"(ssr)/./components/BuilderNav.tsx\"));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./components/TopNav.tsx */ \"(ssr)/./components/TopNav.tsx\"));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./context/AuthContext.tsx */ \"(ssr)/./context/AuthContext.tsx\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGYXBwJTJGZ2xvYmFscy5jc3MlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZzZWFuJTJGRGV2JTJGZ3VuYnVpbGRlci1wcm90b3R5cGUlMkZjb21wb25lbnRzJTJGQnVpbGRlck5hdi50c3glMjIlMkMlMjJpZHMlMjIlM0ElNUIlMjJCdWlsZGVyTmF2JTIyJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGY29tcG9uZW50cyUyRlRvcE5hdi50c3glMjIlMkMlMjJpZHMlMjIlM0ElNUIlMjJUb3BOYXYlMjIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZzZWFuJTJGRGV2JTJGZ3VuYnVpbGRlci1wcm90b3R5cGUlMkZjb250ZXh0JTJGQXV0aENvbnRleHQudHN4JTIyJTJDJTIyaWRzJTIyJTNBJTVCJTIyQXV0aFByb3ZpZGVyJTIyJTVEJTdEJnNlcnZlcj10cnVlISIsIm1hcHBpbmdzIjoiQUFBQSxrS0FBbUk7QUFDbkk7QUFDQSwwSkFBMkg7QUFDM0g7QUFDQSw4SkFBbUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8/YWRkNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiwgd2VicGFja0V4cG9ydHM6IFtcIkJ1aWxkZXJOYXZcIl0gKi8gXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvY29tcG9uZW50cy9CdWlsZGVyTmF2LnRzeFwiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiLCB3ZWJwYWNrRXhwb3J0czogW1wiVG9wTmF2XCJdICovIFwiL1VzZXJzL3NlYW4vRGV2L2d1bmJ1aWxkZXItcHJvdG90eXBlL2NvbXBvbmVudHMvVG9wTmF2LnRzeFwiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiLCB3ZWJwYWNrRXhwb3J0czogW1wiQXV0aFByb3ZpZGVyXCJdICovIFwiL1VzZXJzL3NlYW4vRGV2L2d1bmJ1aWxkZXItcHJvdG90eXBlL2NvbnRleHQvQXV0aENvbnRleHQudHN4XCIpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcomponents%2FBuilderNav.tsx%22%2C%22ids%22%3A%5B%22BuilderNav%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcomponents%2FTopNav.tsx%22%2C%22ids%22%3A%5B%22TopNav%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fcontext%2FAuthContext.tsx%22%2C%22ids%22%3A%5B%22AuthProvider%22%5D%7D&server=true!\n");
-
-/***/ }),
-
-/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!":
-/*!******************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***!
- \******************************************************************************************************************************************************************************************************************************************/
-/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/gunbuilder/page.tsx */ \"(ssr)/./app/gunbuilder/page.tsx\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGYXBwJTJGZ3VuYnVpbGRlciUyRnBhZ2UudHN4JTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJnNlcnZlcj10cnVlISIsIm1hcHBpbmdzIjoiQUFBQSw4SkFBaUciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8/N2FkYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9zZWFuL0Rldi9ndW5idWlsZGVyLXByb3RvdHlwZS9hcHAvZ3VuYnVpbGRlci9wYWdlLnRzeFwiKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n");
-
-/***/ }),
-
-/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!":
-/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***!
- \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
-/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
-
-eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/app-router.js */ \"(ssr)/./node_modules/next/dist/client/components/app-router.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/client-page.js */ \"(ssr)/./node_modules/next/dist/client/components/client-page.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/error-boundary.js */ \"(ssr)/./node_modules/next/dist/client/components/error-boundary.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/layout-router.js */ \"(ssr)/./node_modules/next/dist/client/components/layout-router.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/not-found-boundary.js */ \"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/render-from-template-context.js */ \"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js\", 23));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGYXBwLXJvdXRlci5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRnNlYW4lMkZEZXYlMkZndW5idWlsZGVyLXByb3RvdHlwZSUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmNsaWVudC1wYWdlLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGZXJyb3ItYm91bmRhcnkuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZzZWFuJTJGRGV2JTJGZ3VuYnVpbGRlci1wcm90b3R5cGUlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZsYXlvdXQtcm91dGVyLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGbm90LWZvdW5kLWJvdW5kYXJ5LmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGc2VhbiUyRkRldiUyRmd1bmJ1aWxkZXItcHJvdG90eXBlJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsa09BQWdJO0FBQ2hJO0FBQ0Esb09BQWlJO0FBQ2pJO0FBQ0EsME9BQW9JO0FBQ3BJO0FBQ0Esd09BQW1JO0FBQ25JO0FBQ0Esa1BBQXdJO0FBQ3hJO0FBQ0Esc1FBQWtKIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvPzdiMjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvc2Vhbi9EZXYvZ3VuYnVpbGRlci1wcm90b3R5cGUvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtcGFnZS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3NlYW4vRGV2L2d1bmJ1aWxkZXItcHJvdG90eXBlL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnkuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9zZWFuL0Rldi9ndW5idWlsZGVyLXByb3RvdHlwZS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2xheW91dC1yb3V0ZXIuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9zZWFuL0Rldi9ndW5idWlsZGVyLXByb3RvdHlwZS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1ib3VuZGFyeS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3NlYW4vRGV2L2d1bmJ1aWxkZXItcHJvdG90eXBlL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qc1wiKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n");
-
-/***/ }),
-
-/***/ "(ssr)/./app/gunbuilder/page.tsx":
-/*!*********************************!*\
- !*** ./app/gunbuilder/page.tsx ***!
- \*********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ GunbuilderPage)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(ssr)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(ssr)/./data/gunbuilderParts.ts\");\n/* harmony import */ var _data_partRoleMappings__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/data/partRoleMappings */ \"(ssr)/./data/partRoleMappings.ts\");\n/* harmony import */ var _barrel_optimize_names_Link2_Pencil_lucide_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! __barrel_optimize__?names=Link2,Pencil!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/pencil.js\");\n/* harmony import */ var _barrel_optimize_names_Link2_Pencil_lucide_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! __barrel_optimize__?names=Link2,Pencil!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/link-2.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\n\n\nconst API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL ?? \"http://localhost:8080\";\nconst STORAGE_KEY = \"gunbuilder-build-state\";\n// Category groups for the main grid\nconst CATEGORY_GROUPS = [\n {\n id: \"lower-group\",\n label: \"Lower Receiver Parts\",\n description: \"Everything from the serialized lower to small parts, fire control, and core controls.\",\n categoryIds: [\n \"lower\",\n \"completeLower\",\n \"lowerParts\",\n \"trigger\",\n \"grip\",\n \"safety\",\n \"buffer\",\n \"stock\"\n ]\n },\n {\n id: \"upper-group\",\n label: \"Upper Receiver Parts\",\n description: \"Barrel, upper, gas system, and the parts that keep the rifle cycling.\",\n categoryIds: [\n \"upper\",\n \"completeUpper\",\n \"bcg\",\n \"barrel\",\n \"gasBlock\",\n \"gasTube\",\n \"muzzleDevice\",\n \"suppressor\",\n \"handguard\",\n \"chargingHandle\",\n \"sights\",\n \"optic\"\n ]\n }\n];\nfunction GunbuilderPage() {\n const searchParams = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useSearchParams)();\n const router = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useRouter)();\n const [parts, setParts] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [build, setBuild] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(()=>{\n if (false) {}\n return {};\n });\n const [shareStatus, setShareStatus] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [shareUrl, setShareUrl] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const controller = new AbortController();\n async function fetchProducts() {\n try {\n setLoading(true);\n setError(null);\n const res = await fetch(`${API_BASE_URL}/api/products/gunbuilder?platform=AR-15`, {\n signal: controller.signal\n });\n if (!res.ok) {\n throw new Error(`Failed to load products (${res.status})`);\n }\n const data = await res.json();\n const normalized = data.map((p)=>{\n const categoryId = _data_partRoleMappings__WEBPACK_IMPORTED_MODULE_5__.PART_ROLE_TO_CATEGORY[p.partRole];\n if (!categoryId) {\n // Skip any parts we don't know how to map yet\n return null;\n }\n const buyUrl = p.buyUrl ?? undefined;\n return {\n id: String(p.id),\n categoryId,\n name: p.name,\n brand: p.brand,\n price: p.price ?? 0,\n imageUrl: p.mainImageUrl ?? undefined,\n affiliateUrl: buyUrl,\n url: buyUrl,\n notes: undefined\n };\n }).filter((p)=>p !== null);\n setParts(normalized);\n } catch (err) {\n if (err.name === \"AbortError\") return;\n setError(err.message ?? \"Failed to load products\");\n } finally{\n setLoading(false);\n }\n }\n fetchProducts();\n return ()=>controller.abort();\n }, []);\n // Handle URL query parameter for part selection (?select=upper:165)\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const selectParam = searchParams.get(\"select\");\n if (selectParam) {\n const [categoryId, partId] = selectParam.split(\":\");\n if (categoryId && partId && _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.some((c)=>c.id === categoryId)) {\n setBuild((prev)=>{\n const updated = {\n ...prev,\n [categoryId]: partId\n };\n if (false) {}\n return updated;\n });\n router.replace(\"/gunbuilder\", {\n scroll: false\n });\n }\n }\n }, [\n searchParams,\n router\n ]);\n // Persist build state to localStorage whenever it changes\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (false) {}\n }, [\n build\n ]);\n const partsByCategory = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const grouped = {};\n for (const category of _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES){\n grouped[category.id] = parts.filter((p)=>p.categoryId === category.id);\n }\n return grouped;\n }, [\n parts\n ]);\n const selectedParts = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n return Object.entries(build).map(([categoryId, partId])=>parts.find((p)=>p.id === partId && p.categoryId === categoryId)).filter(Boolean);\n }, [\n build,\n parts\n ]);\n const totalPrice = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>selectedParts.reduce((sum, p)=>sum + p.price, 0), [\n selectedParts\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (true) return;\n // If no parts selected, clear the share URL\n if (Object.keys(build).length === 0) {\n setShareUrl(\"\");\n return;\n }\n try {\n const payload = JSON.stringify(build);\n const encoded = window.btoa(payload);\n const origin = window.location?.origin ?? \"\";\n const url = `${origin}/gunbuilder/build?build=${encodeURIComponent(encoded)}`;\n setShareUrl(url);\n } catch {\n setShareUrl(\"\");\n }\n }, [\n build\n ]);\n const handleSelectPart = (categoryId, partId)=>{\n setBuild((prev)=>({\n ...prev,\n [categoryId]: partId\n }));\n };\n // Use group ordering for the summary as well\n const summaryCategoryOrder = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>CATEGORY_GROUPS.flatMap((group)=>group.categoryIds).filter((id)=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.some((c)=>c.id === id)), []);\n const handleShare = async ()=>{\n if (selectedParts.length === 0) {\n setShareStatus(\"Add a few parts before sharing your build.\");\n return;\n }\n const lines = [];\n lines.push(\"Shadow Standard — The Armory Build\");\n lines.push(\"\");\n lines.push(`Total: $${totalPrice.toFixed(2)}`);\n lines.push(\"\");\n summaryCategoryOrder.forEach((categoryId)=>{\n const cat = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.find((c)=>c.id === categoryId);\n if (!cat) return;\n const selectedPartId = build[cat.id];\n const part = parts.find((p)=>p.id === selectedPartId && p.categoryId === cat.id);\n if (part) {\n lines.push(`${cat.name}: ${part.brand} — ${part.name} ($${part.price.toFixed(2)})`);\n } else {\n lines.push(`${cat.name}: [Not selected]`);\n }\n });\n const text = lines.join(\"\\n\");\n try {\n await navigator.clipboard.writeText(text);\n setShareStatus(\"Build summary copied to clipboard.\");\n } catch {\n setShareStatus(\"Could not access clipboard. You can copy from the build summary page.\");\n }\n };\n const handleCopyLink = async ()=>{\n if (!shareUrl) {\n setShareStatus(\"No shareable link available yet.\");\n return;\n }\n try {\n await navigator.clipboard.writeText(shareUrl);\n setShareStatus(\"Shareable link copied to clipboard.\");\n } catch {\n setShareStatus(\"Could not copy link to clipboard.\");\n }\n };\n const handleNativeShare = async ()=>{\n if (!shareUrl) {\n setShareStatus(\"No shareable link available yet.\");\n return;\n }\n if (navigator.share) {\n try {\n await navigator.share({\n title: \"Shadow Standard — The Armory Build\",\n text: \"Check out my Shadow Standard Armory build.\",\n url: shareUrl\n });\n setShareStatus(\"Share dialog opened.\");\n } catch {\n // User canceled or share failed; keep it quiet but let them know\n setShareStatus(\"Share canceled or unavailable. You can copy the link instead.\");\n }\n } else {\n // Fallback to copying the link\n await handleCopyLink();\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard Co.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 340,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n \"The Build Bench: \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: \"Early Access\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 344,\n columnNumber: 32\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 343,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: \"Explore components from trusted brands, choose one part per category, track live prices, and watch your total build cost update as you go. This early-access builder keeps your setup saved locally so you can come back and refine it anytime.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 346,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 339,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 338,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"mb-6 rounded-lg border border-zinc-800 bg-zinc-950/80 p-3 md:p-4 flex flex-col gap-3 md:flex-row md:items-start md:justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold uppercase tracking-[0.16em] text-amber-300\",\n children: \"My Build Breakdown\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 359,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400\",\n children: \"Current build total\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 363,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-2xl font-semibold text-amber-300\",\n children: [\n \"$\",\n totalPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 364,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 mt-1\",\n children: [\n selectedParts.length,\n \" / \",\n _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.length,\n \" categories filled\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 367,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 362,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-2 flex flex-col items-stretch gap-2 sm:flex-row sm:flex-wrap\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/build\",\n className: `w-full sm:w-auto rounded-md border border-amber-400/60 bg-amber-400/10 px-3 py-2 text-sm font-medium text-amber-200 hover:bg-amber-400/15 text-center transition-colors ${selectedParts.length === 0 ? \"opacity-40 cursor-not-allowed pointer-events-none\" : \"\"}`,\n children: \"Build Summary\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 374,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: handleShare,\n className: `w-full sm:w-auto rounded-md px-3 py-2 text-sm font-semibold transition-colors border ${selectedParts.length === 0 ? \"bg-zinc-900/80 text-zinc-600 border-zinc-800 cursor-not-allowed\" : \"bg-zinc-900/80 text-zinc-200 border-zinc-700 hover:bg-zinc-800\"}`,\n disabled: selectedParts.length === 0,\n children: \"Copy Build Summary\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 384,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: ()=>{\n setBuild({});\n if (false) {}\n },\n disabled: selectedParts.length === 0,\n className: `w-full sm:w-auto rounded-md border border-zinc-700 bg-zinc-900/50 px-3 py-2 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors ${selectedParts.length === 0 ? \"opacity-40 cursor-not-allowed\" : \"\"}`,\n children: \"Clear Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 396,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 373,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 358,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-3 md:items-end md:text-right md:flex-1\",\n children: [\n selectedParts.length > 0 && shareUrl && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full md:w-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-[0.7rem] font-semibold uppercase tracking-[0.16em] text-zinc-400\",\n children: \"Share Your Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 418,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-[0.7rem] text-zinc-500\",\n children: \"Share this link to let others view your build or bookmark it to come back later.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 421,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-2 flex flex-col gap-2 md:flex-row md:items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[0.65rem] uppercase tracking-[0.16em] text-zinc-500 mb-1\",\n children: \"Shareable URL\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 427,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n readOnly: true,\n value: shareUrl,\n className: \"w-full rounded-md border border-zinc-700 bg-zinc-950/80 px-2 py-1.5 text-[0.7rem] text-zinc-200 font-mono outline-none focus:ring-1 focus:ring-amber-400\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 430,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 426,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2 md:flex-none md:mt-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: handleNativeShare,\n className: \"flex-1 md:flex-none rounded-md bg-zinc-900/80 px-3 py-1.5 text-[0.75rem] font-semibold text-zinc-100 border border-zinc-700 hover:bg-zinc-800 hover:border-zinc-500 transition-colors\",\n children: \"Share\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 438,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: handleCopyLink,\n className: \"flex-1 md:flex-none rounded-md bg-amber-400 px-3 py-1.5 text-[0.75rem] font-semibold text-black hover:bg-amber-300 transition-colors\",\n children: \"Copy Link\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 445,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 437,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 425,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 417,\n columnNumber: 15\n }, this),\n shareStatus && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-1 text-[0.7rem] text-zinc-500\",\n children: shareStatus\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 458,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 415,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 356,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-3 md:p-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mb-4 text-xs text-zinc-500\",\n children: \"Work top-down through the major sections. Each row shows your current pick for that part type, with price and a direct buy link—or a quick way to choose a part if you haven't picked one yet.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 467,\n columnNumber: 11\n }, this),\n loading && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500\",\n children: \"Loading parts from backend…\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 475,\n columnNumber: 13\n }, this),\n error && !loading && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-red-400\",\n children: [\n error,\n \" — check that the Ballistic API is running and CORS is configured.\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 480,\n columnNumber: 13\n }, this),\n !loading && !error && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-6\",\n children: CATEGORY_GROUPS.map((group)=>{\n const groupCategories = _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.filter((c)=>group.categoryIds.includes(c.id));\n if (groupCategories.length === 0) {\n return null;\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-baseline justify-between gap-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-sm font-semibold text-zinc-100\",\n children: group.label\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 501,\n columnNumber: 25\n }, this),\n group.description && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500 mt-1 max-w-xl\",\n children: group.description\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 505,\n columnNumber: 27\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 500,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 499,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"overflow-x-auto rounded-md border border-zinc-800 bg-zinc-950/80\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"table\", {\n className: \"min-w-full text-xs md:text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"thead\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"tr\", {\n className: \"border-b border-zinc-800 bg-zinc-900/60\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-3 py-2 text-left font-semibold text-zinc-400\",\n children: \"Component / Part Type\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 516,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-3 py-2 text-left font-semibold text-zinc-400\",\n children: \"Brand\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 519,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-3 py-2 text-right font-semibold text-zinc-400\",\n children: \"Price\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 522,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-3 py-2 text-right font-semibold text-zinc-400\",\n children: \"Sale Price\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 525,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-3 py-2 text-left font-semibold text-zinc-400\",\n children: \"Caliber\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 528,\n columnNumber: 29\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"th\", {\n className: \"px-3 py-2 text-right font-semibold text-zinc-400\",\n children: \"Buy / Choose\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 531,\n columnNumber: 29\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 515,\n columnNumber: 27\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 514,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"tbody\", {\n children: groupCategories.map((category)=>{\n const categoryParts = partsByCategory[category.id] ?? [];\n const selectedPartId = build[category.id];\n const selectedPart = categoryParts.find((p)=>p.id === selectedPartId);\n const hasParts = categoryParts.length > 0;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"tr\", {\n className: \"border-t border-zinc-900 hover:bg-zinc-900/60 transition-colors\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-3 py-2 align-top\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-medium text-zinc-100\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 553,\n columnNumber: 35\n }, this),\n selectedPart ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[0.7rem] text-zinc-500 line-clamp-1\",\n children: selectedPart.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 557,\n columnNumber: 37\n }, this) : hasParts ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[0.7rem] text-zinc-600\",\n children: \"No part selected\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 561,\n columnNumber: 37\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[0.7rem] text-zinc-600\",\n children: \"No parts available yet\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 565,\n columnNumber: 37\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 552,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-3 py-2 align-top text-zinc-300\",\n children: selectedPart ? selectedPart.brand : \"—\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 572,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-3 py-2 align-top text-right text-amber-300\",\n children: selectedPart ? `$${selectedPart.price.toFixed(2)}` : \"—\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 577,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-3 py-2 align-top text-right text-zinc-400\",\n children: selectedPart ? \"—\" : \"—\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 584,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-3 py-2 align-top text-zinc-400\",\n children: \"—\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 590,\n columnNumber: 33\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"td\", {\n className: \"px-3 py-2 align-top\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-end gap-2\",\n children: selectedPart && selectedPart.url ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: `/gunbuilder/${category.id}`,\n className: \"hidden md:inline-flex items-center justify-center rounded-md border border-zinc-700 bg-zinc-900/70 px-2 py-1 hover:bg-zinc-800 hover:border-zinc-600 transition-colors\",\n \"aria-label\": \"Change part\",\n title: \"Change part\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Link2_Pencil_lucide_react__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"h-3.5 w-3.5 text-zinc-300\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 606,\n columnNumber: 43\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 600,\n columnNumber: 41\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: selectedPart.url,\n target: \"_blank\",\n rel: \"noreferrer\",\n className: \"inline-flex items-center justify-center rounded-md bg-amber-400 px-2 py-1 hover:bg-amber-300 transition-colors\",\n \"aria-label\": \"Buy part\",\n title: \"Buy part\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Link2_Pencil_lucide_react__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: \"h-3.5 w-3.5 text-black\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 616,\n columnNumber: 43\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 608,\n columnNumber: 41\n }, this)\n ]\n }, void 0, true) : hasParts ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: `/gunbuilder/${category.id}`,\n className: \"inline-flex rounded-md border border-zinc-700 bg-zinc-900/70 px-2.5 py-1 text-[0.7rem] font-medium text-zinc-200 hover:bg-zinc-800 hover:border-zinc-600 transition-colors\",\n onClick: ()=>{\n // If you want to pre-select something later, you can handle here.\n },\n children: \"Choose a Part\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 620,\n columnNumber: 39\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[0.7rem] text-zinc-600\",\n children: \"—\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 630,\n columnNumber: 39\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 597,\n columnNumber: 35\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 596,\n columnNumber: 33\n }, this)\n ]\n }, category.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 547,\n columnNumber: 31\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 536,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 513,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 512,\n columnNumber: 21\n }, this)\n ]\n }, group.id, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 498,\n columnNumber: 19\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 487,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 466,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"mt-8 rounded-lg border border-zinc-800 bg-zinc-950/80 p-3 md:p-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold uppercase tracking-[0.16em] text-amber-300\",\n children: \"What's New in Early Access\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 651,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"mt-2 space-y-1 text-sm text-zinc-400\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• Live parts and pricing pulled from multiple merchants.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 655,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• Grouped layout for lower and upper receiver parts so you can see at a glance which sections of your build are still missing.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 656,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• Running build total that updates automatically as you add or swap components.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 660,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• Local build persistence so your selections stick around between visits on this device.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 664,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 654,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 650,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"mt-8 rounded-lg border border-zinc-800 bg-zinc-950/80 p-3 md:p-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold uppercase tracking-[0.16em] text-amber-300\",\n children: \"What's on our roadmap\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 673,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"mt-2 space-y-1 text-sm text-zinc-400\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• Platform filters (AR-15, AR-9, AR-10)\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 677,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• More part categories and furniture\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 678,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• Richer pricing/stock sync\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 679,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• Smarter compatibility checks between components\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 680,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: \"• AR9/AR10 support and more\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 681,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 676,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 672,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 336,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx\",\n lineNumber: 334,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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TUFBTTFGLEVBQUU7Ozs7OzRCQWtKdEI7Ozs7Ozs7Ozs7Ozs4QkFNTiw4REFBQ2tIO29CQUFRTCxXQUFVOztzQ0FDakIsOERBQUNNOzRCQUFHTixXQUFVO3NDQUFtRTs7Ozs7O3NDQUdqRiw4REFBQ2dDOzRCQUFHaEMsV0FBVTs7OENBQ1osOERBQUNpQzs4Q0FBRzs7Ozs7OzhDQUNKLDhEQUFDQTs4Q0FBRzs7Ozs7OzhDQUlKLDhEQUFDQTs4Q0FBRzs7Ozs7OzhDQUlKLDhEQUFDQTs4Q0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCQVFSLDhEQUFDNUI7b0JBQVFMLFdBQVU7O3NDQUNqQiw4REFBQ007NEJBQUdOLFdBQVU7c0NBQW1FOzs7Ozs7c0NBR2pGLDhEQUFDZ0M7NEJBQUdoQyxXQUFVOzs4Q0FDWiw4REFBQ2lDOzhDQUFHOzs7Ozs7OENBQ0osOERBQUNBOzhDQUFHOzs7Ozs7OENBQ0osOERBQUNBOzhDQUFHOzs7Ozs7OENBQ0osOERBQUNBOzhDQUFHOzs7Ozs7OENBQ0osOERBQUNBOzhDQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1oQiIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLy4vYXBwL2d1bmJ1aWxkZXIvcGFnZS50c3g/MDU0MCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgdXNlTWVtbywgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IExpbmsgZnJvbSBcIm5leHQvbGlua1wiO1xuaW1wb3J0IHsgdXNlU2VhcmNoUGFyYW1zLCB1c2VSb3V0ZXIgfSBmcm9tIFwibmV4dC9uYXZpZ2F0aW9uXCI7XG5pbXBvcnQgeyBDQVRFR09SSUVTIH0gZnJvbSBcIkAvZGF0YS9ndW5idWlsZGVyUGFydHNcIjtcbmltcG9ydCB0eXBlIHsgQ2F0ZWdvcnlJZCwgUGFydCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcbmltcG9ydCB7IFBBUlRfUk9MRV9UT19DQVRFR09SWSB9IGZyb20gXCJAL2RhdGEvcGFydFJvbGVNYXBwaW5nc1wiO1xuaW1wb3J0IHsgUGVuY2lsLCBMaW5rMiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxudHlwZSBHdW5idWlsZGVyUHJvZHVjdEZyb21BcGkgPSB7XG4gIGlkOiBudW1iZXI7IC8vIGJhY2tlbmQgbnVtZXJpYyBpZFxuICBuYW1lOiBzdHJpbmc7XG4gIGJyYW5kOiBzdHJpbmc7XG4gIHBsYXRmb3JtOiBzdHJpbmc7XG4gIHBhcnRSb2xlOiBzdHJpbmc7XG4gIHByaWNlOiBudW1iZXIgfCBudWxsO1xuICBtYWluSW1hZ2VVcmw6IHN0cmluZyB8IG51bGw7XG4gIGJ1eVVybDogc3RyaW5nIHwgbnVsbDtcbn07XG5cbmNvbnN0IEFQSV9CQVNFX1VSTCA9XG4gIHByb2Nlc3MuZW52Lk5FWFRfUFVCTElDX0FQSV9CQVNFX1VSTCA/PyBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MFwiO1xuXG50eXBlIEJ1aWxkU3RhdGUgPSBQYXJ0aWFsPFJlY29yZDxDYXRlZ29yeUlkLCBzdHJpbmc+PjsgLy8gY2F0ZWdvcnlJZCAtPiBwYXJ0SWRcblxuY29uc3QgU1RPUkFHRV9LRVkgPSBcImd1bmJ1aWxkZXItYnVpbGQtc3RhdGVcIjtcblxuLy8gQ2F0ZWdvcnkgZ3JvdXBzIGZvciB0aGUgbWFpbiBncmlkXG5jb25zdCBDQVRFR09SWV9HUk9VUFM6IHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGNhdGVnb3J5SWRzOiBDYXRlZ29yeUlkW107XG59W10gPSBbXG4gIHtcbiAgICBpZDogXCJsb3dlci1ncm91cFwiLFxuICAgIGxhYmVsOiBcIkxvd2VyIFJlY2VpdmVyIFBhcnRzXCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIkV2ZXJ5dGhpbmcgZnJvbSB0aGUgc2VyaWFsaXplZCBsb3dlciB0byBzbWFsbCBwYXJ0cywgZmlyZSBjb250cm9sLCBhbmQgY29yZSBjb250cm9scy5cIixcbiAgICBjYXRlZ29yeUlkczogW1xuICAgICAgXCJsb3dlclwiLFxuICAgICAgXCJjb21wbGV0ZUxvd2VyXCIsXG4gICAgICBcImxvd2VyUGFydHNcIixcbiAgICAgIFwidHJpZ2dlclwiLFxuICAgICAgXCJncmlwXCIsXG4gICAgICBcInNhZmV0eVwiLFxuICAgICAgXCJidWZmZXJcIixcbiAgICAgIFwic3RvY2tcIixcbiAgICBdLFxuICB9LFxuICB7XG4gICAgaWQ6IFwidXBwZXItZ3JvdXBcIixcbiAgICBsYWJlbDogXCJVcHBlciBSZWNlaXZlciBQYXJ0c1wiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJCYXJyZWwsIHVwcGVyLCBnYXMgc3lzdGVtLCBhbmQgdGhlIHBhcnRzIHRoYXQga2VlcCB0aGUgcmlmbGUgY3ljbGluZy5cIixcbiAgICBjYXRlZ29yeUlkczogW1xuICAgICAgXCJ1cHBlclwiLFxuICAgICAgXCJjb21wbGV0ZVVwcGVyXCIsXG4gICAgICBcImJjZ1wiLFxuICAgICAgXCJiYXJyZWxcIixcbiAgICAgIFwiZ2FzQmxvY2tcIixcbiAgICAgIFwiZ2FzVHViZVwiLFxuICAgICAgXCJtdXp6bGVEZXZpY2VcIixcbiAgICAgIFwic3VwcHJlc3NvclwiLFxuICAgICAgXCJoYW5kZ3VhcmRcIixcbiAgICAgIFwiY2hhcmdpbmdIYW5kbGVcIixcbiAgICAgIFwic2lnaHRzXCIsXG4gICAgICBcIm9wdGljXCIsXG4gICAgXSxcbiAgfSxcbiAgLy8gT3B0aW9uYWw6IGZ1dHVyZSBncm91cCBmb3IgYWNjZXNzb3JpZXMvZnVybml0dXJlIGlmIG5lZWRlZFxuICAvLyB7XG4gIC8vICAgaWQ6IFwiYWNjZXNzb3JpZXMtZ3JvdXBcIixcbiAgLy8gICBsYWJlbDogXCJBY2Nlc3NvcmllcyAmIEZ1cm5pdHVyZVwiLFxuICAvLyAgIGRlc2NyaXB0aW9uOiBcIk9wdGljcywgbGlnaHRzLCBzbGluZ3MsIGFuZCBvdGhlciBzdXBwb3J0aW5nIGdlYXIuXCIsXG4gIC8vICAgY2F0ZWdvcnlJZHM6IFtcIm9wdGljXCIsIFwic2lnaHRzXCIsIC4uLl0gYXMgQ2F0ZWdvcnlJZFtdLFxuICAvLyB9LFxuXTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gR3VuYnVpbGRlclBhZ2UoKSB7XG4gIGNvbnN0IHNlYXJjaFBhcmFtcyA9IHVzZVNlYXJjaFBhcmFtcygpO1xuICBjb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKTtcbiAgY29uc3QgW3BhcnRzLCBzZXRQYXJ0c10gPSB1c2VTdGF0ZTxQYXJ0W10+KFtdKTtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtidWlsZCwgc2V0QnVpbGRdID0gdXNlU3RhdGU8QnVpbGRTdGF0ZT4oKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBjb25zdCBzdG9yZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWSk7XG4gICAgICBpZiAoc3RvcmVkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RvcmVkKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfSk7XG4gIGNvbnN0IFtzaGFyZVN0YXR1cywgc2V0U2hhcmVTdGF0dXNdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtzaGFyZVVybCwgc2V0U2hhcmVVcmxdID0gdXNlU3RhdGU8c3RyaW5nPihcIlwiKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBmZXRjaFByb2R1Y3RzKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgICAgc2V0RXJyb3IobnVsbCk7XG5cbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goXG4gICAgICAgICAgYCR7QVBJX0JBU0VfVVJMfS9hcGkvcHJvZHVjdHMvZ3VuYnVpbGRlcj9wbGF0Zm9ybT1BUi0xNWAsXG4gICAgICAgICAgeyBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFyZXMub2spIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBsb2FkIHByb2R1Y3RzICgke3Jlcy5zdGF0dXN9KWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0YTogR3VuYnVpbGRlclByb2R1Y3RGcm9tQXBpW10gPSBhd2FpdCByZXMuanNvbigpO1xuXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQ6IFBhcnRbXSA9IGRhdGFcbiAgICAgICAgLm1hcCgocCk6IFBhcnQgfCBudWxsID0+IHtcbiAgICAgICAgICBjb25zdCBjYXRlZ29yeUlkID0gUEFSVF9ST0xFX1RPX0NBVEVHT1JZW3AucGFydFJvbGVdO1xuICAgICAgICAgIGlmICghY2F0ZWdvcnlJZCkge1xuICAgICAgICAgICAgLy8gU2tpcCBhbnkgcGFydHMgd2UgZG9uJ3Qga25vdyBob3cgdG8gbWFwIHlldFxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYnV5VXJsID0gcC5idXlVcmwgPz8gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlkOiBTdHJpbmcocC5pZCksIC8vIEFMV0FZUyBzdHJpbmdcbiAgICAgICAgICAgIGNhdGVnb3J5SWQsXG4gICAgICAgICAgICBuYW1lOiBwLm5hbWUsXG4gICAgICAgICAgICBicmFuZDogcC5icmFuZCxcbiAgICAgICAgICAgIHByaWNlOiBwLnByaWNlID8/IDAsXG4gICAgICAgICAgICBpbWFnZVVybDogcC5tYWluSW1hZ2VVcmwgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgYWZmaWxpYXRlVXJsOiBidXlVcmwsIC8vIG1haW4gbGlua1xuICAgICAgICAgICAgdXJsOiBidXlVcmwsICAgICAgICAgIC8vIPCfkYhvcHRpb25hbCBhbGlhcyBpZiB5b3Ugc3RpbGwgcmVmZXJlbmNlIC51cmwuIG1heWJlIHByZXR0eSB1cmw/XG4gICAgICAgICAgICBub3RlczogdW5kZWZpbmVkLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoKHApOiBwIGlzIFBhcnQgPT4gcCAhPT0gbnVsbCk7XG5cblxuICAgICAgICBzZXRQYXJ0cyhub3JtYWxpemVkKTtcbiAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgIGlmIChlcnIubmFtZSA9PT0gXCJBYm9ydEVycm9yXCIpIHJldHVybjtcbiAgICAgICAgc2V0RXJyb3IoZXJyLm1lc3NhZ2UgPz8gXCJGYWlsZWQgdG8gbG9hZCBwcm9kdWN0c1wiKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZldGNoUHJvZHVjdHMoKTtcblxuICAgIHJldHVybiAoKSA9PiBjb250cm9sbGVyLmFib3J0KCk7XG4gIH0sIFtdKTtcblxuICAvLyBIYW5kbGUgVVJMIHF1ZXJ5IHBhcmFtZXRlciBmb3IgcGFydCBzZWxlY3Rpb24gKD9zZWxlY3Q9dXBwZXI6MTY1KVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdFBhcmFtID0gc2VhcmNoUGFyYW1zLmdldChcInNlbGVjdFwiKTtcbiAgICBpZiAoc2VsZWN0UGFyYW0pIHtcbiAgICAgIGNvbnN0IFtjYXRlZ29yeUlkLCBwYXJ0SWRdID0gc2VsZWN0UGFyYW0uc3BsaXQoXCI6XCIpO1xuICAgICAgaWYgKGNhdGVnb3J5SWQgJiYgcGFydElkICYmIENBVEVHT1JJRVMuc29tZSgoYykgPT4gYy5pZCA9PT0gY2F0ZWdvcnlJZCkpIHtcbiAgICAgICAgc2V0QnVpbGQoKHByZXYpID0+IHtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkID0ge1xuICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgIFtjYXRlZ29yeUlkIGFzIENhdGVnb3J5SWRdOiBwYXJ0SWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oU1RPUkFHRV9LRVksIEpTT04uc3RyaW5naWZ5KHVwZGF0ZWQpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJvdXRlci5yZXBsYWNlKFwiL2d1bmJ1aWxkZXJcIiwgeyBzY3JvbGw6IGZhbHNlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3NlYXJjaFBhcmFtcywgcm91dGVyXSk7XG5cbiAgLy8gUGVyc2lzdCBidWlsZCBzdGF0ZSB0byBsb2NhbFN0b3JhZ2Ugd2hlbmV2ZXIgaXQgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkoYnVpbGQpKTtcbiAgICB9XG4gIH0sIFtidWlsZF0pO1xuXG4gIGNvbnN0IHBhcnRzQnlDYXRlZ29yeTogUmVjb3JkPENhdGVnb3J5SWQsIFBhcnRbXT4gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBncm91cGVkID0ge30gYXMgUmVjb3JkPENhdGVnb3J5SWQsIFBhcnRbXT47XG4gICAgZm9yIChjb25zdCBjYXRlZ29yeSBvZiBDQVRFR09SSUVTKSB7XG4gICAgICBncm91cGVkW2NhdGVnb3J5LmlkXSA9IHBhcnRzLmZpbHRlcihcbiAgICAgICAgKHApID0+IHAuY2F0ZWdvcnlJZCA9PT0gY2F0ZWdvcnkuaWQsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZ3JvdXBlZDtcbiAgfSwgW3BhcnRzXSk7XG5cbiAgY29uc3Qgc2VsZWN0ZWRQYXJ0czogUGFydFtdID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGJ1aWxkKVxuICAgICAgLm1hcCgoW2NhdGVnb3J5SWQsIHBhcnRJZF0pID0+XG4gICAgICAgIHBhcnRzLmZpbmQoKHApID0+IHAuaWQgPT09IHBhcnRJZCAmJiBwLmNhdGVnb3J5SWQgPT09IGNhdGVnb3J5SWQpLFxuICAgICAgKVxuICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBQYXJ0W107XG4gIH0sIFtidWlsZCwgcGFydHNdKTtcblxuICBjb25zdCB0b3RhbFByaWNlID0gdXNlTWVtbyhcbiAgICAoKSA9PiBzZWxlY3RlZFBhcnRzLnJlZHVjZSgoc3VtLCBwKSA9PiBzdW0gKyBwLnByaWNlLCAwKSxcbiAgICBbc2VsZWN0ZWRQYXJ0c10sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuO1xuXG4gICAgLy8gSWYgbm8gcGFydHMgc2VsZWN0ZWQsIGNsZWFyIHRoZSBzaGFyZSBVUkxcbiAgICBpZiAoT2JqZWN0LmtleXMoYnVpbGQpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgc2V0U2hhcmVVcmwoXCJcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSBKU09OLnN0cmluZ2lmeShidWlsZCk7XG4gICAgICBjb25zdCBlbmNvZGVkID0gd2luZG93LmJ0b2EocGF5bG9hZCk7XG4gICAgICBjb25zdCBvcmlnaW4gPSB3aW5kb3cubG9jYXRpb24/Lm9yaWdpbiA/PyBcIlwiO1xuICAgICAgY29uc3QgdXJsID0gYCR7b3JpZ2lufS9ndW5idWlsZGVyL2J1aWxkP2J1aWxkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KFxuICAgICAgICBlbmNvZGVkLFxuICAgICAgKX1gO1xuICAgICAgc2V0U2hhcmVVcmwodXJsKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHNldFNoYXJlVXJsKFwiXCIpO1xuICAgIH1cbiAgfSwgW2J1aWxkXSk7XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0UGFydCA9IChjYXRlZ29yeUlkOiBDYXRlZ29yeUlkLCBwYXJ0SWQ6IHN0cmluZykgPT4ge1xuICAgIHNldEJ1aWxkKChwcmV2KSA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIFtjYXRlZ29yeUlkXTogcGFydElkLFxuICAgIH0pKTtcbiAgfTtcblxuICAvLyBVc2UgZ3JvdXAgb3JkZXJpbmcgZm9yIHRoZSBzdW1tYXJ5IGFzIHdlbGxcbiAgY29uc3Qgc3VtbWFyeUNhdGVnb3J5T3JkZXI6IENhdGVnb3J5SWRbXSA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIENBVEVHT1JZX0dST1VQUy5mbGF0TWFwKChncm91cCkgPT4gZ3JvdXAuY2F0ZWdvcnlJZHMpLmZpbHRlcihcbiAgICAgICAgKGlkKSA9PiBDQVRFR09SSUVTLnNvbWUoKGMpID0+IGMuaWQgPT09IGlkKSxcbiAgICAgICksXG4gICAgW10sXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlU2hhcmUgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKHNlbGVjdGVkUGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBzZXRTaGFyZVN0YXR1cyhcIkFkZCBhIGZldyBwYXJ0cyBiZWZvcmUgc2hhcmluZyB5b3VyIGJ1aWxkLlwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXTtcbiAgICBsaW5lcy5wdXNoKFwiU2hhZG93IFN0YW5kYXJkIOKAlCBUaGUgQXJtb3J5IEJ1aWxkXCIpO1xuICAgIGxpbmVzLnB1c2goXCJcIik7XG4gICAgbGluZXMucHVzaChgVG90YWw6ICQke3RvdGFsUHJpY2UudG9GaXhlZCgyKX1gKTtcbiAgICBsaW5lcy5wdXNoKFwiXCIpO1xuXG4gICAgc3VtbWFyeUNhdGVnb3J5T3JkZXIuZm9yRWFjaCgoY2F0ZWdvcnlJZCkgPT4ge1xuICAgICAgY29uc3QgY2F0ID0gQ0FURUdPUklFUy5maW5kKChjKSA9PiBjLmlkID09PSBjYXRlZ29yeUlkKTtcbiAgICAgIGlmICghY2F0KSByZXR1cm47XG5cbiAgICAgIGNvbnN0IHNlbGVjdGVkUGFydElkID0gYnVpbGRbY2F0LmlkXTtcbiAgICAgIGNvbnN0IHBhcnQgPSBwYXJ0cy5maW5kKFxuICAgICAgICAocCkgPT4gcC5pZCA9PT0gc2VsZWN0ZWRQYXJ0SWQgJiYgcC5jYXRlZ29yeUlkID09PSBjYXQuaWQsXG4gICAgICApO1xuXG4gICAgICBpZiAocGFydCkge1xuICAgICAgICBsaW5lcy5wdXNoKFxuICAgICAgICAgIGAke2NhdC5uYW1lfTogJHtwYXJ0LmJyYW5kfSDigJQgJHtwYXJ0Lm5hbWV9ICgkJHtwYXJ0LnByaWNlLnRvRml4ZWQoXG4gICAgICAgICAgICAyLFxuICAgICAgICAgICl9KWAsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaW5lcy5wdXNoKGAke2NhdC5uYW1lfTogW05vdCBzZWxlY3RlZF1gKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHRleHQgPSBsaW5lcy5qb2luKFwiXFxuXCIpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpO1xuICAgICAgc2V0U2hhcmVTdGF0dXMoXCJCdWlsZCBzdW1tYXJ5IGNvcGllZCB0byBjbGlwYm9hcmQuXCIpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgc2V0U2hhcmVTdGF0dXMoXG4gICAgICAgIFwiQ291bGQgbm90IGFjY2VzcyBjbGlwYm9hcmQuIFlvdSBjYW4gY29weSBmcm9tIHRoZSBidWlsZCBzdW1tYXJ5IHBhZ2UuXCIsXG4gICAgICApO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVDb3B5TGluayA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIXNoYXJlVXJsKSB7XG4gICAgICBzZXRTaGFyZVN0YXR1cyhcIk5vIHNoYXJlYWJsZSBsaW5rIGF2YWlsYWJsZSB5ZXQuXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChzaGFyZVVybCk7XG4gICAgICBzZXRTaGFyZVN0YXR1cyhcIlNoYXJlYWJsZSBsaW5rIGNvcGllZCB0byBjbGlwYm9hcmQuXCIpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgc2V0U2hhcmVTdGF0dXMoXCJDb3VsZCBub3QgY29weSBsaW5rIHRvIGNsaXBib2FyZC5cIik7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU5hdGl2ZVNoYXJlID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghc2hhcmVVcmwpIHtcbiAgICAgIHNldFNoYXJlU3RhdHVzKFwiTm8gc2hhcmVhYmxlIGxpbmsgYXZhaWxhYmxlIHlldC5cIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG5hdmlnYXRvci5zaGFyZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgbmF2aWdhdG9yLnNoYXJlKHtcbiAgICAgICAgICB0aXRsZTogXCJTaGFkb3cgU3RhbmRhcmQg4oCUIFRoZSBBcm1vcnkgQnVpbGRcIixcbiAgICAgICAgICB0ZXh0OiBcIkNoZWNrIG91dCBteSBTaGFkb3cgU3RhbmRhcmQgQXJtb3J5IGJ1aWxkLlwiLFxuICAgICAgICAgIHVybDogc2hhcmVVcmwsXG4gICAgICAgIH0pO1xuICAgICAgICBzZXRTaGFyZVN0YXR1cyhcIlNoYXJlIGRpYWxvZyBvcGVuZWQuXCIpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIFVzZXIgY2FuY2VsZWQgb3Igc2hhcmUgZmFpbGVkOyBrZWVwIGl0IHF1aWV0IGJ1dCBsZXQgdGhlbSBrbm93XG4gICAgICAgIHNldFNoYXJlU3RhdHVzKFwiU2hhcmUgY2FuY2VsZWQgb3IgdW5hdmFpbGFibGUuIFlvdSBjYW4gY29weSB0aGUgbGluayBpbnN0ZWFkLlwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRmFsbGJhY2sgdG8gY29weWluZyB0aGUgbGlua1xuICAgICAgYXdhaXQgaGFuZGxlQ29weUxpbmsoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8bWFpbiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctYmxhY2sgdGV4dC16aW5jLTUwXCI+XG4gICAgICBcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBtYXgtdy02eGwgcHgtNCBweS02IGxnOnB5LTEwXCI+XG4gICAgICAgIHsvKiBIZWFkZXIgKi99XG4gICAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwibWItNlwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWzAuMmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICBTaGFkb3cgU3RhbmRhcmQgQ28uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LTJ4bCBtZDp0ZXh0LTN4bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0XCI+XG4gICAgICAgICAgICAgIFRoZSBCdWlsZCBCZW5jaDogPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDBcIj5FYXJseSBBY2Nlc3M8L3NwYW4+XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtMiB0ZXh0LXNtIHRleHQtemluYy00MDAgbWF4LXcteGxcIj5cbiAgICAgICAgICAgICAgRXhwbG9yZSBjb21wb25lbnRzIGZyb20gdHJ1c3RlZCBicmFuZHMsIGNob29zZSBvbmUgcGFydCBwZXJcbiAgICAgICAgICAgICAgY2F0ZWdvcnksIHRyYWNrIGxpdmUgcHJpY2VzLCBhbmQgd2F0Y2ggeW91ciB0b3RhbCBidWlsZCBjb3N0XG4gICAgICAgICAgICAgIHVwZGF0ZSBhcyB5b3UgZ28uIFRoaXMgZWFybHktYWNjZXNzIGJ1aWxkZXIga2VlcHMgeW91ciBzZXR1cCBzYXZlZFxuICAgICAgICAgICAgICBsb2NhbGx5IHNvIHlvdSBjYW4gY29tZSBiYWNrIGFuZCByZWZpbmUgaXQgYW55dGltZS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICB7LyogQnVpbGQgc3VtbWFyeSBwYW5lbCAqL31cbiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJtYi02IHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTk1MC84MCBwLTMgbWQ6cC00IGZsZXggZmxleC1jb2wgZ2FwLTMgbWQ6ZmxleC1yb3cgbWQ6aXRlbXMtc3RhcnQgbWQ6anVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgey8qIExlZnQ6IHRpdGxlICsgdG90YWxzICsgcHJpbWFyeSBhY3Rpb25zICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBnYXAtMlwiPlxuICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMTZlbV0gdGV4dC1hbWJlci0zMDBcIj5cbiAgICAgICAgICAgICAgTXkgQnVpbGQgQnJlYWtkb3duXG4gICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy00MDBcIj5DdXJyZW50IGJ1aWxkIHRvdGFsPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTMwMFwiPlxuICAgICAgICAgICAgICAgICR7dG90YWxQcmljZS50b0ZpeGVkKDIpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy01MDAgbXQtMVwiPlxuICAgICAgICAgICAgICAgIHtzZWxlY3RlZFBhcnRzLmxlbmd0aH0gLyB7Q0FURUdPUklFUy5sZW5ndGh9IGNhdGVnb3JpZXMgZmlsbGVkXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHsvKiBQcmltYXJ5IGFjdGlvbnMgbm93IGxpdmUgdW5kZXIgdGhlIHRvdGFsICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0yIGZsZXggZmxleC1jb2wgaXRlbXMtc3RyZXRjaCBnYXAtMiBzbTpmbGV4LXJvdyBzbTpmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICBocmVmPVwiL2d1bmJ1aWxkZXIvYnVpbGRcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHctZnVsbCBzbTp3LWF1dG8gcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWFtYmVyLTQwMC82MCBiZy1hbWJlci00MDAvMTAgcHgtMyBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1hbWJlci0yMDAgaG92ZXI6YmctYW1iZXItNDAwLzE1IHRleHQtY2VudGVyIHRyYW5zaXRpb24tY29sb3JzICR7XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZFBhcnRzLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICAgICAgICA/IFwib3BhY2l0eS00MCBjdXJzb3Itbm90LWFsbG93ZWQgcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIDogXCJcIlxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQnVpbGQgU3VtbWFyeVxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTaGFyZX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2B3LWZ1bGwgc206dy1hdXRvIHJvdW5kZWQtbWQgcHgtMyBweS0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0cmFuc2l0aW9uLWNvbG9ycyBib3JkZXIgJHtcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUGFydHMubGVuZ3RoID09PSAwXG4gICAgICAgICAgICAgICAgICAgID8gXCJiZy16aW5jLTkwMC84MCB0ZXh0LXppbmMtNjAwIGJvcmRlci16aW5jLTgwMCBjdXJzb3Itbm90LWFsbG93ZWRcIlxuICAgICAgICAgICAgICAgICAgICA6IFwiYmctemluYy05MDAvODAgdGV4dC16aW5jLTIwMCBib3JkZXItemluYy03MDAgaG92ZXI6YmctemluYy04MDBcIlxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzZWxlY3RlZFBhcnRzLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIENvcHkgQnVpbGQgU3VtbWFyeVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIHNldEJ1aWxkKHt9KTtcbiAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFNUT1JBR0VfS0VZKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzZWxlY3RlZFBhcnRzLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2B3LWZ1bGwgc206dy1hdXRvIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC81MCBweC0zIHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LXppbmMtMzAwIGhvdmVyOmJnLXppbmMtODAwIGhvdmVyOmJvcmRlci16aW5jLTYwMCB0cmFuc2l0aW9uLWNvbG9ycyAke1xuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRQYXJ0cy5sZW5ndGggPT09IDAgPyBcIm9wYWNpdHktNDAgY3Vyc29yLW5vdC1hbGxvd2VkXCIgOiBcIlwiXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBDbGVhciBCdWlsZFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIFJpZ2h0OiBTaGFyZSBZb3VyIEJ1aWxkICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBnYXAtMyBtZDppdGVtcy1lbmQgbWQ6dGV4dC1yaWdodCBtZDpmbGV4LTFcIj5cbiAgICAgICAgICAgIHtzZWxlY3RlZFBhcnRzLmxlbmd0aCA+IDAgJiYgc2hhcmVVcmwgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBtZDp3LWF1dG9cIj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1bMC43cmVtXSBmb250LXNlbWlib2xkIHVwcGVyY2FzZSB0cmFja2luZy1bMC4xNmVtXSB0ZXh0LXppbmMtNDAwXCI+XG4gICAgICAgICAgICAgICAgICBTaGFyZSBZb3VyIEJ1aWxkXG4gICAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0xIHRleHQtWzAuN3JlbV0gdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICAgICAgU2hhcmUgdGhpcyBsaW5rIHRvIGxldCBvdGhlcnMgdmlldyB5b3VyIGJ1aWxkIG9yIGJvb2ttYXJrIGl0IHRvIGNvbWVcbiAgICAgICAgICAgICAgICAgIGJhY2sgbGF0ZXIuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMiBmbGV4IGZsZXgtY29sIGdhcC0yIG1kOmZsZXgtcm93IG1kOml0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LVswLjY1cmVtXSB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMTZlbV0gdGV4dC16aW5jLTUwMCBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgU2hhcmVhYmxlIFVSTFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NoYXJlVXJsfVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy05NTAvODAgcHgtMiBweS0xLjUgdGV4dC1bMC43cmVtXSB0ZXh0LXppbmMtMjAwIGZvbnQtbW9ubyBvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0xIGZvY3VzOnJpbmctYW1iZXItNDAwXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0yIG1kOmZsZXgtbm9uZSBtZDptdC01XCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVOYXRpdmVTaGFyZX1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4LTEgbWQ6ZmxleC1ub25lIHJvdW5kZWQtbWQgYmctemluYy05MDAvODAgcHgtMyBweS0xLjUgdGV4dC1bMC43NXJlbV0gZm9udC1zZW1pYm9sZCB0ZXh0LXppbmMtMTAwIGJvcmRlciBib3JkZXItemluYy03MDAgaG92ZXI6YmctemluYy04MDAgaG92ZXI6Ym9yZGVyLXppbmMtNTAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIFNoYXJlXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ29weUxpbmt9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleC0xIG1kOmZsZXgtbm9uZSByb3VuZGVkLW1kIGJnLWFtYmVyLTQwMCBweC0zIHB5LTEuNSB0ZXh0LVswLjc1cmVtXSBmb250LXNlbWlib2xkIHRleHQtYmxhY2sgaG92ZXI6YmctYW1iZXItMzAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIENvcHkgTGlua1xuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtzaGFyZVN0YXR1cyAmJiAoXG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTEgdGV4dC1bMC43cmVtXSB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgICAge3NoYXJlU3RhdHVzfVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgey8qIExheW91dCAqL31cbiAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzYwIHAtMyBtZDpwLTRcIj5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtYi00IHRleHQteHMgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgV29yayB0b3AtZG93biB0aHJvdWdoIHRoZSBtYWpvciBzZWN0aW9ucy4gRWFjaCByb3cgc2hvd3MgeW91clxuICAgICAgICAgICAgY3VycmVudCBwaWNrIGZvciB0aGF0IHBhcnQgdHlwZSwgd2l0aCBwcmljZSBhbmQgYSBkaXJlY3QgYnV5XG4gICAgICAgICAgICBsaW5r4oCUb3IgYSBxdWljayB3YXkgdG8gY2hvb3NlIGEgcGFydCBpZiB5b3UgaGF2ZW4mYXBvczt0IHBpY2tlZFxuICAgICAgICAgICAgb25lIHlldC5cbiAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICB7bG9hZGluZyAmJiAoXG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgTG9hZGluZyBwYXJ0cyBmcm9tIGJhY2tlbmTigKZcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtlcnJvciAmJiAhbG9hZGluZyAmJiAoXG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtcmVkLTQwMFwiPlxuICAgICAgICAgICAgICB7ZXJyb3J9IOKAlCBjaGVjayB0aGF0IHRoZSBCYWxsaXN0aWMgQVBJIGlzIHJ1bm5pbmcgYW5kIENPUlMgaXNcbiAgICAgICAgICAgICAgY29uZmlndXJlZC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAgeyFsb2FkaW5nICYmICFlcnJvciAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktNlwiPlxuICAgICAgICAgICAgICB7Q0FURUdPUllfR1JPVVBTLm1hcCgoZ3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cENhdGVnb3JpZXMgPSBDQVRFR09SSUVTLmZpbHRlcigoYykgPT5cbiAgICAgICAgICAgICAgICAgIGdyb3VwLmNhdGVnb3J5SWRzLmluY2x1ZGVzKGMuaWQgYXMgQ2F0ZWdvcnlJZCksXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChncm91cENhdGVnb3JpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2dyb3VwLmlkfSBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWJhc2VsaW5lIGp1c3RpZnktYmV0d2VlbiBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtemluYy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC5kZXNjcmlwdGlvbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCBtdC0xIG1heC13LXhsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm92ZXJmbG93LXgtYXV0byByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy04MDAgYmctemluYy05NTAvODBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3NOYW1lPVwibWluLXctZnVsbCB0ZXh0LXhzIG1kOnRleHQtc21cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzTmFtZT1cImJvcmRlci1iIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTkwMC82MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzc05hbWU9XCJweC0zIHB5LTIgdGV4dC1sZWZ0IGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTQwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9uZW50IC8gUGFydCBUeXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3NOYW1lPVwicHgtMyBweS0yIHRleHQtbGVmdCBmb250LXNlbWlib2xkIHRleHQtemluYy00MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJyYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3NOYW1lPVwicHgtMyBweS0yIHRleHQtcmlnaHQgZm9udC1zZW1pYm9sZCB0ZXh0LXppbmMtNDAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzTmFtZT1cInB4LTMgcHktMiB0ZXh0LXJpZ2h0IGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTQwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FsZSBQcmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzTmFtZT1cInB4LTMgcHktMiB0ZXh0LWxlZnQgZm9udC1zZW1pYm9sZCB0ZXh0LXppbmMtNDAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxpYmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3NOYW1lPVwicHgtMyBweS0yIHRleHQtcmlnaHQgZm9udC1zZW1pYm9sZCB0ZXh0LXppbmMtNDAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXkgLyBDaG9vc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwQ2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnlQYXJ0cyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0c0J5Q2F0ZWdvcnlbY2F0ZWdvcnkuaWRdID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUGFydElkID0gYnVpbGRbY2F0ZWdvcnkuaWRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUGFydCA9IGNhdGVnb3J5UGFydHMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwKSA9PiBwLmlkID09PSBzZWxlY3RlZFBhcnRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1BhcnRzID0gY2F0ZWdvcnlQYXJ0cy5sZW5ndGggPiAwO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NhdGVnb3J5LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJib3JkZXItdCBib3JkZXItemluYy05MDAgaG92ZXI6YmctemluYy05MDAvNjAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogQ29tcG9uZW50IC8gUGFydCBUeXBlICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwicHgtMyBweS0yIGFsaWduLXRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gdGV4dC16aW5jLTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NhdGVnb3J5Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkUGFydCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1bMC43cmVtXSB0ZXh0LXppbmMtNTAwIGxpbmUtY2xhbXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRQYXJ0Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogaGFzUGFydHMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtWzAuN3JlbV0gdGV4dC16aW5jLTYwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyBwYXJ0IHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LVswLjdyZW1dIHRleHQtemluYy02MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gcGFydHMgYXZhaWxhYmxlIHlldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogQnJhbmQgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJweC0zIHB5LTIgYWxpZ24tdG9wIHRleHQtemluYy0zMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRQYXJ0ID8gc2VsZWN0ZWRQYXJ0LmJyYW5kIDogXCLigJRcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogUHJpY2UgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJweC0zIHB5LTIgYWxpZ24tdG9wIHRleHQtcmlnaHQgdGV4dC1hbWJlci0zMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRQYXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGAkJHtzZWxlY3RlZFBhcnQucHJpY2UudG9GaXhlZCgyKX1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwi4oCUXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFNhbGUgUHJpY2UgKHBsYWNlaG9sZGVyIHVudGlsIHdlIHdpcmUgdGhyb3VnaCBzYWxlL29yaWdpbmFsKSAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzTmFtZT1cInB4LTMgcHktMiBhbGlnbi10b3AgdGV4dC1yaWdodCB0ZXh0LXppbmMtNDAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFRPRE86IHdpcmUgaW4gc2FsZS9vcmlnaW5hbCBwcmljZXMgZnJvbSBiYWNrZW5kICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZFBhcnQgPyBcIuKAlFwiIDogXCLigJRcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogQ2FsaWJlciAocGxhY2Vob2xkZXIgZm9yIG5vdykgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJweC0zIHB5LTIgYWxpZ24tdG9wIHRleHQtemluYy00MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogVE9ETzogd2lyZSBpbiBjYWxpYmVyIGZyb20gUHJvZHVjdFN1bW1hcnlEdG8gd2hlbiBhdmFpbGFibGUgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oCUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIEJ1eSAvIENob29zZSAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzTmFtZT1cInB4LTMgcHktMiBhbGlnbi10b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1lbmQgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZFBhcnQgJiYgc2VsZWN0ZWRQYXJ0LnVybCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyLyR7Y2F0ZWdvcnkuaWR9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImhpZGRlbiBtZDppbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzcwIHB4LTIgcHktMSBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy02MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNoYW5nZSBwYXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiQ2hhbmdlIHBhcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQZW5jaWwgY2xhc3NOYW1lPVwiaC0zLjUgdy0zLjUgdGV4dC16aW5jLTMwMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtzZWxlY3RlZFBhcnQudXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgYmctYW1iZXItNDAwIHB4LTIgcHktMSBob3ZlcjpiZy1hbWJlci0zMDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkJ1eSBwYXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiQnV5IHBhcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaW5rMiBjbGFzc05hbWU9XCJoLTMuNSB3LTMuNSB0ZXh0LWJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IGhhc1BhcnRzID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlci8ke2NhdGVnb3J5LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzcwIHB4LTIuNSBweS0xIHRleHQtWzAuN3JlbV0gZm9udC1tZWRpdW0gdGV4dC16aW5jLTIwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy02MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHlvdSB3YW50IHRvIHByZS1zZWxlY3Qgc29tZXRoaW5nIGxhdGVyLCB5b3UgY2FuIGhhbmRsZSBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgYSBQYXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzAuN3JlbV0gdGV4dC16aW5jLTYwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKAlFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICB7LyogV2hhdCdzIE5ldyAqL31cbiAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwibXQtOCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItemluYy04MDAgYmctemluYy05NTAvODAgcC0zIG1kOnAtNFwiPlxuICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLVswLjE2ZW1dIHRleHQtYW1iZXItMzAwXCI+XG4gICAgICAgICAgICBXaGF0JmFwb3M7cyBOZXcgaW4gRWFybHkgQWNjZXNzXG4gICAgICAgICAgPC9oMj5cbiAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwibXQtMiBzcGFjZS15LTEgdGV4dC1zbSB0ZXh0LXppbmMtNDAwXCI+XG4gICAgICAgICAgICA8bGk+4oCiIExpdmUgcGFydHMgYW5kIHByaWNpbmcgcHVsbGVkIGZyb20gbXVsdGlwbGUgbWVyY2hhbnRzLjwvbGk+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIOKAoiBHcm91cGVkIGxheW91dCBmb3IgbG93ZXIgYW5kIHVwcGVyIHJlY2VpdmVyIHBhcnRzIHNvIHlvdSBjYW4gc2VlXG4gICAgICAgICAgICAgIGF0IGEgZ2xhbmNlIHdoaWNoIHNlY3Rpb25zIG9mIHlvdXIgYnVpbGQgYXJlIHN0aWxsIG1pc3NpbmcuXG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICDigKIgUnVubmluZyBidWlsZCB0b3RhbCB0aGF0IHVwZGF0ZXMgYXV0b21hdGljYWxseSBhcyB5b3UgYWRkIG9yXG4gICAgICAgICAgICAgIHN3YXAgY29tcG9uZW50cy5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIOKAoiBMb2NhbCBidWlsZCBwZXJzaXN0ZW5jZSBzbyB5b3VyIHNlbGVjdGlvbnMgc3RpY2sgYXJvdW5kIGJldHdlZW5cbiAgICAgICAgICAgICAgdmlzaXRzIG9uIHRoaXMgZGV2aWNlLlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgey8qIFJvYWRtYXAgKi99XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cIm10LTggcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzgwIHAtMyBtZDpwLTRcIj5cbiAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHVwcGVyY2FzZSB0cmFja2luZy1bMC4xNmVtXSB0ZXh0LWFtYmVyLTMwMFwiPlxuICAgICAgICAgICAgV2hhdCZhcG9zO3Mgb24gb3VyIHJvYWRtYXBcbiAgICAgICAgICA8L2gyPlxuICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJtdC0yIHNwYWNlLXktMSB0ZXh0LXNtIHRleHQtemluYy00MDBcIj5cbiAgICAgICAgICAgIDxsaT7igKIgUGxhdGZvcm0gZmlsdGVycyAoQVItMTUsIEFSLTksIEFSLTEwKTwvbGk+XG4gICAgICAgICAgICA8bGk+4oCiIE1vcmUgcGFydCBjYXRlZ29yaWVzIGFuZCBmdXJuaXR1cmU8L2xpPlxuICAgICAgICAgICAgPGxpPuKAoiBSaWNoZXIgcHJpY2luZy9zdG9jayBzeW5jPC9saT5cbiAgICAgICAgICAgIDxsaT7igKIgU21hcnRlciBjb21wYXRpYmlsaXR5IGNoZWNrcyBiZXR3ZWVuIGNvbXBvbmVudHM8L2xpPlxuICAgICAgICAgICAgPGxpPuKAoiBBUjkvQVIxMCBzdXBwb3J0IGFuZCBtb3JlPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L21haW4+XG4gICk7XG59Il0sIm5hbWVzIjpbInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIkxpbmsiLCJ1c2VTZWFyY2hQYXJhbXMiLCJ1c2VSb3V0ZXIiLCJDQVRFR09SSUVTIiwiUEFSVF9ST0xFX1RPX0NBVEVHT1JZIiwiUGVuY2lsIiwiTGluazIiLCJBUElfQkFTRV9VUkwiLCJwcm9jZXNzIiwiZW52IiwiTkVYVF9QVUJMSUNfQVBJX0JBU0VfVVJMIiwiU1RPUkFHRV9LRVkiLCJDQVRFR09SWV9HUk9VUFMiLCJpZCIsImxhYmVsIiwiZGVzY3JpcHRpb24iLCJjYXRlZ29yeUlkcyIsIkd1bmJ1aWxkZXJQYWdlIiwic2VhcmNoUGFyYW1zIiwicm91dGVyIiwicGFydHMiLCJzZXRQYXJ0cyIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiZXJyb3IiLCJzZXRFcnJvciIsImJ1aWxkIiwic2V0QnVpbGQiLCJzdG9yZWQiLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwiSlNPTiIsInBhcnNlIiwic2hhcmVTdGF0dXMiLCJzZXRTaGFyZVN0YXR1cyIsInNoYXJlVXJsIiwic2V0U2hhcmVVcmwiLCJjb250cm9sbGVyIiwiQWJvcnRDb250cm9sbGVyIiwiZmV0Y2hQcm9kdWN0cyIsInJlcyIsImZldGNoIiwic2lnbmFsIiwib2siLCJFcnJvciIsInN0YXR1cyIsImRhdGEiLCJqc29uIiwibm9ybWFsaXplZCIsIm1hcCIsInAiLCJjYXRlZ29yeUlkIiwicGFydFJvbGUiLCJidXlVcmwiLCJ1bmRlZmluZWQiLCJTdHJpbmciLCJuYW1lIiwiYnJhbmQiLCJwcmljZSIsImltYWdlVXJsIiwibWFpbkltYWdlVXJsIiwiYWZmaWxpYXRlVXJsIiwidXJsIiwibm90ZXMiLCJmaWx0ZXIiLCJlcnIiLCJtZXNzYWdlIiwiYWJvcnQiLCJzZWxlY3RQYXJhbSIsImdldCIsInBhcnRJZCIsInNwbGl0Iiwic29tZSIsImMiLCJwcmV2IiwidXBkYXRlZCIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJyZXBsYWNlIiwic2Nyb2xsIiwicGFydHNCeUNhdGVnb3J5IiwiZ3JvdXBlZCIsImNhdGVnb3J5Iiwic2VsZWN0ZWRQYXJ0cyIsIk9iamVjdCIsImVudHJpZXMiLCJmaW5kIiwiQm9vbGVhbiIsInRvdGFsUHJpY2UiLCJyZWR1Y2UiLCJzdW0iLCJrZXlzIiwibGVuZ3RoIiwicGF5bG9hZCIsImVuY29kZWQiLCJ3aW5kb3ciLCJidG9hIiwib3JpZ2luIiwibG9jYXRpb24iLCJlbmNvZGVVUklDb21wb25lbnQiLCJoYW5kbGVTZWxlY3RQYXJ0Iiwic3VtbWFyeUNhdGVnb3J5T3JkZXIiLCJmbGF0TWFwIiwiZ3JvdXAiLCJoYW5kbGVTaGFyZSIsImxpbmVzIiwicHVzaCIsInRvRml4ZWQiLCJmb3JFYWNoIiwiY2F0Iiwic2VsZWN0ZWRQYXJ0SWQiLCJwYXJ0IiwidGV4dCIsImpvaW4iLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJoYW5kbGVDb3B5TGluayIsImhhbmRsZU5hdGl2ZVNoYXJlIiwic2hhcmUiLCJ0aXRsZSIsIm1haW4iLCJjbGFzc05hbWUiLCJkaXYiLCJoZWFkZXIiLCJoMSIsInNwYW4iLCJzZWN0aW9uIiwiaDIiLCJocmVmIiwiYnV0dG9uIiwidHlwZSIsIm9uQ2xpY2siLCJkaXNhYmxlZCIsInJlbW92ZUl0ZW0iLCJoMyIsImlucHV0IiwicmVhZE9ubHkiLCJ2YWx1ZSIsImdyb3VwQ2F0ZWdvcmllcyIsImluY2x1ZGVzIiwidGFibGUiLCJ0aGVhZCIsInRyIiwidGgiLCJ0Ym9keSIsImNhdGVnb3J5UGFydHMiLCJzZWxlY3RlZFBhcnQiLCJoYXNQYXJ0cyIsInRkIiwiYXJpYS1sYWJlbCIsImEiLCJ0YXJnZXQiLCJyZWwiLCJ1bCIsImxpIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./app/gunbuilder/page.tsx\n");
-
-/***/ }),
-
-/***/ "(ssr)/./components/BuilderNav.tsx":
-/*!***********************************!*\
- !*** ./components/BuilderNav.tsx ***!
- \***********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BuilderNav: () => (/* binding */ BuilderNav),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/navigation */ \"(ssr)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(ssr)/./data/gunbuilderParts.ts\");\n/* __next_internal_client_entry_do_not_use__ BuilderNav,default auto */ \n\n\n\n// Helper to group categories for the dropdowns\nfunction groupCategories(group) {\n return _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES.filter((c)=>c.group === group);\n}\nfunction BuilderNav({ activeCategoryId }) {\n const searchParams = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.useSearchParams)();\n const lower = groupCategories(\"lower\");\n const upper = groupCategories(\"upper\");\n const accessories = groupCategories(\"accessories\");\n const currentCategory = activeCategoryId ?? searchParams.get(\"category\") ?? undefined;\n const baseHref = \"/gunbuilder\";\n const renderDropdown = (label, items)=>{\n if (!items.length) return null;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n className: `inline-flex items-center gap-1 font-medium tracking-wide transition-colors uppercase text-[11px] ${items.some((cat)=>cat.id === currentCategory) ? \"text-white\" : \"text-neutral-200 hover:text-white\"}`,\n children: [\n label,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[9px]\",\n children: \"▾\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 43,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 34,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"invisible opacity-0 group-hover:visible group-hover:opacity-100 transition-all absolute left-0 mt-2 rounded-md border border-neutral-800 bg-black/95 shadow-xl z-40 min-w-[220px]\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"py-2 text-sm\",\n children: items.map((cat)=>{\n const isActive = currentCategory === cat.id;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: `${baseHref}/${cat.id}`,\n className: [\n \"block w-full px-3 py-1.5 text-left text-sm transition-colors\",\n isActive ? \"bg-neutral-800 text-white\" : \"text-neutral-300 hover:bg-neutral-800 hover:text-white\"\n ].join(\" \"),\n children: cat.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 52,\n columnNumber: 19\n }, this)\n }, cat.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 51,\n columnNumber: 17\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 47,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 46,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 33,\n columnNumber: 7\n }, this);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-6xl mx-auto w-full\",\n children: [\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"flex items-center gap-6 border-b border-neutral-900 px-6 py-3 text-sm bg-black/95 backdrop-blur-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: baseHref,\n className: \"font-semibold text-neutral-100 hover:text-white tracking-[0.25em] uppercase text-[11px]\",\n children: \"Builder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 76,\n columnNumber: 9\n }, this),\n renderDropdown(\"Lower Parts\", lower),\n renderDropdown(\"Upper Parts\", upper),\n renderDropdown(\"Accessories\", accessories),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/builds\",\n className: \"font-medium text-neutral-300 hover:text-white tracking-[0.25em] uppercase text-[11px]\",\n children: \"Builds\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 87,\n columnNumber: 9\n }, this),\n currentCategory && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"ml-auto flex items-center gap-2 text-neutral-400 text-xs\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"uppercase tracking-wide text-[10px]\",\n children: \"Viewing\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 97,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium text-neutral-100\",\n children: _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_3__.CATEGORIES.find((c)=>c.id === currentCategory)?.name ?? currentCategory\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 98,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: baseHref,\n className: \"rounded border border-neutral-700 px-2 py-0.5 text-[10px] uppercase tracking-wide hover:bg-neutral-800 hover:text-white\",\n children: \"Clear\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 102,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 96,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 74,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx\",\n lineNumber: 73,\n columnNumber: 5\n }, this);\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BuilderNav);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb21wb25lbnRzL0J1aWxkZXJOYXYudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBRTZCO0FBQ3FCO0FBQ0U7QUFPcEQsK0NBQStDO0FBQy9DLFNBQVNHLGdCQUFnQkMsS0FBd0M7SUFDL0QsT0FBT0YsNkRBQVVBLENBQUNHLE1BQU0sQ0FBQyxDQUFDQyxJQUFNQSxFQUFFRixLQUFLLEtBQUtBO0FBQzlDO0FBRU8sU0FBU0csV0FBVyxFQUFFQyxnQkFBZ0IsRUFBbUI7SUFDOUQsTUFBTUMsZUFBZVIsZ0VBQWVBO0lBRXBDLE1BQU1TLFFBQVFQLGdCQUFnQjtJQUM5QixNQUFNUSxRQUFRUixnQkFBZ0I7SUFDOUIsTUFBTVMsY0FBY1QsZ0JBQWdCO0lBRXBDLE1BQU1VLGtCQUNKTCxvQkFBb0JDLGFBQWFLLEdBQUcsQ0FBQyxlQUFlQztJQUV0RCxNQUFNQyxXQUFXO0lBRWpCLE1BQU1DLGlCQUFpQixDQUFDQyxPQUFlQztRQUNyQyxJQUFJLENBQUNBLE1BQU1DLE1BQU0sRUFBRSxPQUFPO1FBRTFCLHFCQUNFLDhEQUFDQztZQUFJQyxXQUFVOzs4QkFDYiw4REFBQ0M7b0JBQ0NDLE1BQUs7b0JBQ0xGLFdBQVcsQ0FBQyxpR0FBaUcsRUFDM0dILE1BQU1NLElBQUksQ0FBQ0MsQ0FBQUEsTUFBT0EsSUFBSUMsRUFBRSxLQUFLZCxtQkFDekIsZUFDQSxvQ0FDTCxDQUFDOzt3QkFFREs7c0NBQ0QsOERBQUNVOzRCQUFLTixXQUFVO3NDQUFhOzs7Ozs7Ozs7Ozs7OEJBRy9CLDhEQUFDRDtvQkFBSUMsV0FBVTs4QkFDYiw0RUFBQ087d0JBQUdQLFdBQVU7a0NBQ1hILE1BQU1XLEdBQUcsQ0FBQyxDQUFDSjs0QkFDVixNQUFNSyxXQUFXbEIsb0JBQW9CYSxJQUFJQyxFQUFFOzRCQUMzQyxxQkFDRSw4REFBQ0s7MENBQ0MsNEVBQUNoQyxpREFBSUE7b0NBQ0hpQyxNQUFNLENBQUMsRUFBRWpCLFNBQVMsQ0FBQyxFQUFFVSxJQUFJQyxFQUFFLENBQUMsQ0FBQztvQ0FDN0JMLFdBQVc7d0NBQ1Q7d0NBQ0FTLFdBQ0ksOEJBQ0E7cUNBQ0wsQ0FBQ0csSUFBSSxDQUFDOzhDQUVOUixJQUFJUyxJQUFJOzs7Ozs7K0JBVkpULElBQUlDLEVBQUU7Ozs7O3dCQWNuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFLVjtJQUVBLHFCQUNFLDhEQUFDTjtRQUFJQyxXQUFVOztZQUEyQjswQkFDeEMsOERBQUNjO2dCQUFJZCxXQUFVOztrQ0FFYiw4REFBQ3RCLGlEQUFJQTt3QkFDSGlDLE1BQU1qQjt3QkFDTk0sV0FBVTtrQ0FDWDs7Ozs7O29CQUlBTCxlQUFlLGVBQWVQO29CQUM5Qk8sZUFBZSxlQUFlTjtvQkFDOUJNLGVBQWUsZUFBZUw7a0NBRS9CLDhEQUFDWixpREFBSUE7d0JBQ0hpQyxNQUFLO3dCQUNMWCxXQUFVO2tDQUNYOzs7Ozs7b0JBS0FULGlDQUNDLDhEQUFDUTt3QkFBSUMsV0FBVTs7MENBQ2IsOERBQUNNO2dDQUFLTixXQUFVOzBDQUFzQzs7Ozs7OzBDQUN0RCw4REFBQ007Z0NBQUtOLFdBQVU7MENBQ2JwQiw2REFBVUEsQ0FBQ21DLElBQUksQ0FBQyxDQUFDL0IsSUFBTUEsRUFBRXFCLEVBQUUsS0FBS2Qsa0JBQWtCc0IsUUFDakR0Qjs7Ozs7OzBDQUVKLDhEQUFDYixpREFBSUE7Z0NBQ0hpQyxNQUFNakI7Z0NBQ05NLFdBQVU7MENBQ1g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFiO0FBRUEsaUVBQWVmLFVBQVVBLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL2NvbXBvbmVudHMvQnVpbGRlck5hdi50c3g/YzFkNyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IExpbmsgZnJvbSBcIm5leHQvbGlua1wiO1xuaW1wb3J0IHsgdXNlU2VhcmNoUGFyYW1zIH0gZnJvbSBcIm5leHQvbmF2aWdhdGlvblwiO1xuaW1wb3J0IHsgQ0FURUdPUklFUyB9IGZyb20gXCJAL2RhdGEvZ3VuYnVpbGRlclBhcnRzXCI7XG5pbXBvcnQgdHlwZSB7IENhdGVnb3J5IH0gZnJvbSBcIkAvdHlwZXMvZ3VuYnVpbGRlclwiO1xuXG50eXBlIEJ1aWxkZXJOYXZQcm9wcyA9IHtcbiAgYWN0aXZlQ2F0ZWdvcnlJZD86IHN0cmluZyB8IG51bGw7XG59O1xuXG4vLyBIZWxwZXIgdG8gZ3JvdXAgY2F0ZWdvcmllcyBmb3IgdGhlIGRyb3Bkb3duc1xuZnVuY3Rpb24gZ3JvdXBDYXRlZ29yaWVzKGdyb3VwOiBcImxvd2VyXCIgfCBcInVwcGVyXCIgfCBcImFjY2Vzc29yaWVzXCIpOiBDYXRlZ29yeVtdIHtcbiAgcmV0dXJuIENBVEVHT1JJRVMuZmlsdGVyKChjKSA9PiBjLmdyb3VwID09PSBncm91cCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCdWlsZGVyTmF2KHsgYWN0aXZlQ2F0ZWdvcnlJZCB9OiBCdWlsZGVyTmF2UHJvcHMpIHtcbiAgY29uc3Qgc2VhcmNoUGFyYW1zID0gdXNlU2VhcmNoUGFyYW1zKCk7XG5cbiAgY29uc3QgbG93ZXIgPSBncm91cENhdGVnb3JpZXMoXCJsb3dlclwiKTtcbiAgY29uc3QgdXBwZXIgPSBncm91cENhdGVnb3JpZXMoXCJ1cHBlclwiKTtcbiAgY29uc3QgYWNjZXNzb3JpZXMgPSBncm91cENhdGVnb3JpZXMoXCJhY2Nlc3Nvcmllc1wiKTtcblxuICBjb25zdCBjdXJyZW50Q2F0ZWdvcnkgPVxuICAgIGFjdGl2ZUNhdGVnb3J5SWQgPz8gc2VhcmNoUGFyYW1zLmdldChcImNhdGVnb3J5XCIpID8/IHVuZGVmaW5lZDtcblxuICBjb25zdCBiYXNlSHJlZiA9IFwiL2d1bmJ1aWxkZXJcIjtcblxuICBjb25zdCByZW5kZXJEcm9wZG93biA9IChsYWJlbDogc3RyaW5nLCBpdGVtczogQ2F0ZWdvcnlbXSkgPT4ge1xuICAgIGlmICghaXRlbXMubGVuZ3RoKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGdyb3VwXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2BpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgZm9udC1tZWRpdW0gdHJhY2tpbmctd2lkZSB0cmFuc2l0aW9uLWNvbG9ycyB1cHBlcmNhc2UgdGV4dC1bMTFweF0gJHtcbiAgICAgICAgICAgIGl0ZW1zLnNvbWUoY2F0ID0+IGNhdC5pZCA9PT0gY3VycmVudENhdGVnb3J5KVxuICAgICAgICAgICAgICA/IFwidGV4dC13aGl0ZVwiXG4gICAgICAgICAgICAgIDogXCJ0ZXh0LW5ldXRyYWwtMjAwIGhvdmVyOnRleHQtd2hpdGVcIlxuICAgICAgICAgIH1gfVxuICAgICAgICA+XG4gICAgICAgICAge2xhYmVsfVxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzlweF1cIj7ilr48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW52aXNpYmxlIG9wYWNpdHktMCBncm91cC1ob3Zlcjp2aXNpYmxlIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tYWxsIGFic29sdXRlIGxlZnQtMCBtdC0yIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1uZXV0cmFsLTgwMCBiZy1ibGFjay85NSBzaGFkb3cteGwgei00MCBtaW4tdy1bMjIwcHhdXCI+XG4gICAgICAgICAgPHVsIGNsYXNzTmFtZT1cInB5LTIgdGV4dC1zbVwiPlxuICAgICAgICAgICAge2l0ZW1zLm1hcCgoY2F0KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZlID0gY3VycmVudENhdGVnb3J5ID09PSBjYXQuaWQ7XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGxpIGtleT17Y2F0LmlkfT5cbiAgICAgICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgICAgIGhyZWY9e2Ake2Jhc2VIcmVmfS8ke2NhdC5pZH1gfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1tcbiAgICAgICAgICAgICAgICAgICAgICBcImJsb2NrIHctZnVsbCBweC0zIHB5LTEuNSB0ZXh0LWxlZnQgdGV4dC1zbSB0cmFuc2l0aW9uLWNvbG9yc1wiLFxuICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiYmctbmV1dHJhbC04MDAgdGV4dC13aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwidGV4dC1uZXV0cmFsLTMwMCBob3ZlcjpiZy1uZXV0cmFsLTgwMCBob3Zlcjp0ZXh0LXdoaXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIF0uam9pbihcIiBcIil9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtjYXQubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy02eGwgbXgtYXV0byB3LWZ1bGxcIj4gICB7Lyog4oaQIGFsaWducyB3aXRoIHRvcG5hdiAqL31cbiAgICAgIDxuYXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTYgYm9yZGVyLWIgYm9yZGVyLW5ldXRyYWwtOTAwIHB4LTYgcHktMyB0ZXh0LXNtIGJnLWJsYWNrLzk1IGJhY2tkcm9wLWJsdXItc21cIj5cbiAgICAgICAgey8qIFByaW1hcnkgYnVpbGRlciBsaW5rICovfVxuICAgICAgICA8TGlua1xuICAgICAgICAgIGhyZWY9e2Jhc2VIcmVmfVxuICAgICAgICAgIGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgdGV4dC1uZXV0cmFsLTEwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYWNraW5nLVswLjI1ZW1dIHVwcGVyY2FzZSB0ZXh0LVsxMXB4XVwiXG4gICAgICAgID5cbiAgICAgICAgICBCdWlsZGVyXG4gICAgICAgIDwvTGluaz5cblxuICAgICAgICB7cmVuZGVyRHJvcGRvd24oXCJMb3dlciBQYXJ0c1wiLCBsb3dlcil9XG4gICAgICAgIHtyZW5kZXJEcm9wZG93bihcIlVwcGVyIFBhcnRzXCIsIHVwcGVyKX1cbiAgICAgICAge3JlbmRlckRyb3Bkb3duKFwiQWNjZXNzb3JpZXNcIiwgYWNjZXNzb3JpZXMpfVxuXG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgaHJlZj1cIi9idWlsZHNcIlxuICAgICAgICAgIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQtbmV1dHJhbC0zMDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFja2luZy1bMC4yNWVtXSB1cHBlcmNhc2UgdGV4dC1bMTFweF1cIlxuICAgICAgICA+XG4gICAgICAgICAgQnVpbGRzXG4gICAgICAgIDwvTGluaz5cblxuICAgICAgICB7LyogUmlnaHQg4oaSIEN1cnJlbnQgZmlsdGVyICovfVxuICAgICAgICB7Y3VycmVudENhdGVnb3J5ICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1sLWF1dG8gZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1uZXV0cmFsLTQwMCB0ZXh0LXhzXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSB0ZXh0LVsxMHB4XVwiPlZpZXdpbmc8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LW5ldXRyYWwtMTAwXCI+XG4gICAgICAgICAgICAgIHtDQVRFR09SSUVTLmZpbmQoKGMpID0+IGMuaWQgPT09IGN1cnJlbnRDYXRlZ29yeSk/Lm5hbWUgPz9cbiAgICAgICAgICAgICAgICBjdXJyZW50Q2F0ZWdvcnl9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICBocmVmPXtiYXNlSHJlZn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicm91bmRlZCBib3JkZXIgYm9yZGVyLW5ldXRyYWwtNzAwIHB4LTIgcHktMC41IHRleHQtWzEwcHhdIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIGhvdmVyOmJnLW5ldXRyYWwtODAwIGhvdmVyOnRleHQtd2hpdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBDbGVhclxuICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9uYXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJ1aWxkZXJOYXY7Il0sIm5hbWVzIjpbIkxpbmsiLCJ1c2VTZWFyY2hQYXJhbXMiLCJDQVRFR09SSUVTIiwiZ3JvdXBDYXRlZ29yaWVzIiwiZ3JvdXAiLCJmaWx0ZXIiLCJjIiwiQnVpbGRlck5hdiIsImFjdGl2ZUNhdGVnb3J5SWQiLCJzZWFyY2hQYXJhbXMiLCJsb3dlciIsInVwcGVyIiwiYWNjZXNzb3JpZXMiLCJjdXJyZW50Q2F0ZWdvcnkiLCJnZXQiLCJ1bmRlZmluZWQiLCJiYXNlSHJlZiIsInJlbmRlckRyb3Bkb3duIiwibGFiZWwiLCJpdGVtcyIsImxlbmd0aCIsImRpdiIsImNsYXNzTmFtZSIsImJ1dHRvbiIsInR5cGUiLCJzb21lIiwiY2F0IiwiaWQiLCJzcGFuIiwidWwiLCJtYXAiLCJpc0FjdGl2ZSIsImxpIiwiaHJlZiIsImpvaW4iLCJuYW1lIiwibmF2IiwiZmluZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./components/BuilderNav.tsx\n");
-
-/***/ }),
-
-/***/ "(ssr)/./components/TopNav.tsx":
-/*!*******************************!*\
- !*** ./components/TopNav.tsx ***!
- \*******************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TopNav: () => (/* binding */ TopNav)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/context/AuthContext */ \"(ssr)/./context/AuthContext.tsx\");\n// components/TopNav.tsx\n/* __next_internal_client_entry_do_not_use__ TopNav auto */ \n\n\nfunction TopNav() {\n const { user, logout, loading } = (0,_context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.useAuth)();\n const isAuthenticated = !!user;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"border-b border-zinc-800 bg-black/95 backdrop-blur\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-amber-500/20 bg-amber-500/5\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto flex max-w-6xl flex-col gap-1 px-4 py-2 text-[0.75rem] text-amber-100 md:flex-row md:items-center md:justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"rounded-sm bg-amber-500/20 px-2 py-0.5 text-[0.65rem] font-semibold uppercase tracking-[0.18em] text-amber-300\",\n children: \"Early Access Beta\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 18,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"hidden text-amber-100/90 md:inline\",\n children: \"You're using an early-access prototype of The Armory. Data, pricing, and available parts are still evolving.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 21,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 17,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-100/90 md:hidden\",\n children: \"Early-access prototype. Data and pricing may change.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 26,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 16,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 15,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto flex max-w-6xl items-center justify-between px-4 py-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/\",\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-400\",\n children: \"Battl Builder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 35,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"hidden items-center gap-4 md:flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-xs font-medium text-zinc-300 hover:text-zinc-50 transition-colors\",\n children: \"Builder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 44,\n columnNumber: 11\n }, this),\n isAuthenticated && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/admin\",\n className: \"text-xs font-medium text-emerald-400 hover:text-emerald-300 transition-colors\",\n children: \"Admin\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 52,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 43,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n className: \"inline-flex h-8 w-8 items-center justify-center rounded-full border border-zinc-700 bg-zinc-900/60 text-zinc-400 hover:text-zinc-200 hover:bg-zinc-800 hover:border-zinc-500 transition-colors\",\n \"aria-label\": \"Search (coming soon)\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n className: \"h-4 w-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: \"11\",\n cy: \"11\",\n r: \"6\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 79,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"line\", {\n x1: \"16.5\",\n y1: \"16.5\",\n x2: \"21\",\n y2: \"21\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 80,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 69,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 64,\n columnNumber: 11\n }, this),\n loading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-zinc-500\",\n children: \"Checking session…\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 85,\n columnNumber: 13\n }, this) : isAuthenticated ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"hidden text-xs text-zinc-300 sm:inline\",\n children: user.displayName || user.email\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 88,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: logout,\n className: \"text-xs font-medium text-zinc-400 hover:text-zinc-100 transition-colors\",\n children: \"Log Out\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 91,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/login\",\n className: \"text-xs font-medium text-zinc-400 hover:text-zinc-100 transition-colors\",\n children: \"Log In\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 101,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/register\",\n className: \"rounded-md border border-amber-400/70 bg-amber-400/10 px-3 py-1.5 text-xs font-semibold text-amber-200 hover:bg-amber-400/20 transition-colors\",\n children: \"Join Beta\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 107,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 62,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 33,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 13,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb21wb25lbnRzL1RvcE5hdi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSx3QkFBd0I7O0FBR0s7QUFDbUI7QUFFekMsU0FBU0U7SUFDZCxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBR0osNkRBQU9BO0lBRXpDLE1BQU1LLGtCQUFrQixDQUFDLENBQUNIO0lBRTFCLHFCQUNFLDhEQUFDSTtRQUFPQyxXQUFVOzswQkFFaEIsOERBQUNDO2dCQUFJRCxXQUFVOzBCQUNiLDRFQUFDQztvQkFBSUQsV0FBVTs7c0NBQ2IsOERBQUNDOzRCQUFJRCxXQUFVOzs4Q0FDYiw4REFBQ0U7b0NBQUtGLFdBQVU7OENBQWlIOzs7Ozs7OENBR2pJLDhEQUFDRTtvQ0FBS0YsV0FBVTs4Q0FBcUM7Ozs7Ozs7Ozs7OztzQ0FLdkQsOERBQUNFOzRCQUFLRixXQUFVO3NDQUE4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBT2xELDhEQUFDQztnQkFBSUQsV0FBVTs7a0NBRWIsOERBQUNSLGlEQUFJQTt3QkFDSFcsTUFBSzt3QkFDTEgsV0FBVTtrQ0FDWDs7Ozs7O2tDQUtELDhEQUFDSTt3QkFBSUosV0FBVTs7MENBQ2IsOERBQUNSLGlEQUFJQTtnQ0FDSFcsTUFBSztnQ0FDTEgsV0FBVTswQ0FDWDs7Ozs7OzRCQUlBRixpQ0FDQyw4REFBQ04saURBQUlBO2dDQUNIVyxNQUFLO2dDQUNMSCxXQUFVOzBDQUNYOzs7Ozs7Ozs7Ozs7a0NBT0wsOERBQUNDO3dCQUFJRCxXQUFVOzswQ0FFYiw4REFBQ0s7Z0NBQ0NDLE1BQUs7Z0NBQ0xOLFdBQVU7Z0NBQ1ZPLGNBQVc7MENBRVgsNEVBQUNDO29DQUNDQyxPQUFNO29DQUNOQyxTQUFRO29DQUNSQyxNQUFLO29DQUNMQyxRQUFPO29DQUNQQyxhQUFhO29DQUNiQyxlQUFjO29DQUNkQyxnQkFBZTtvQ0FDZmYsV0FBVTs7c0RBRVYsOERBQUNnQjs0Q0FBT0MsSUFBRzs0Q0FBS0MsSUFBRzs0Q0FBS0MsR0FBRTs7Ozs7O3NEQUMxQiw4REFBQ0M7NENBQUtDLElBQUc7NENBQU9DLElBQUc7NENBQU9DLElBQUc7NENBQUtDLElBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCQUl4QzNCLHdCQUNDLDhEQUFDSztnQ0FBS0YsV0FBVTswQ0FBd0I7Ozs7O3VDQUN0Q0YsZ0NBQ0Y7O2tEQUNFLDhEQUFDSTt3Q0FBS0YsV0FBVTtrREFDYkwsS0FBSzhCLFdBQVcsSUFBSTlCLEtBQUsrQixLQUFLOzs7Ozs7a0RBRWpDLDhEQUFDckI7d0NBQ0NDLE1BQUs7d0NBQ0xxQixTQUFTL0I7d0NBQ1RJLFdBQVU7a0RBQ1g7Ozs7Ozs7NkRBS0g7O2tEQUNFLDhEQUFDUixpREFBSUE7d0NBQ0hXLE1BQUs7d0NBQ0xILFdBQVU7a0RBQ1g7Ozs7OztrREFHRCw4REFBQ1IsaURBQUlBO3dDQUNIVyxNQUFLO3dDQUNMSCxXQUFVO2tEQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNmIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9jb21wb25lbnRzL1RvcE5hdi50c3g/ZGY1NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjb21wb25lbnRzL1RvcE5hdi50c3hcblwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgTGluayBmcm9tIFwibmV4dC9saW5rXCI7XG5pbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSBcIkAvY29udGV4dC9BdXRoQ29udGV4dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gVG9wTmF2KCkge1xuICBjb25zdCB7IHVzZXIsIGxvZ291dCwgbG9hZGluZyB9ID0gdXNlQXV0aCgpO1xuXG4gIGNvbnN0IGlzQXV0aGVudGljYXRlZCA9ICEhdXNlcjtcblxuICByZXR1cm4gKFxuICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwiYm9yZGVyLWIgYm9yZGVyLXppbmMtODAwIGJnLWJsYWNrLzk1IGJhY2tkcm9wLWJsdXJcIj5cbiAgICAgIHsvKiBFYXJseSBhY2Nlc3MgYmFyICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItYW1iZXItNTAwLzIwIGJnLWFtYmVyLTUwMC81XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBmbGV4IG1heC13LTZ4bCBmbGV4LWNvbCBnYXAtMSBweC00IHB5LTIgdGV4dC1bMC43NXJlbV0gdGV4dC1hbWJlci0xMDAgbWQ6ZmxleC1yb3cgbWQ6aXRlbXMtY2VudGVyIG1kOmp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInJvdW5kZWQtc20gYmctYW1iZXItNTAwLzIwIHB4LTIgcHktMC41IHRleHQtWzAuNjVyZW1dIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLVswLjE4ZW1dIHRleHQtYW1iZXItMzAwXCI+XG4gICAgICAgICAgICAgIEVhcmx5IEFjY2VzcyBCZXRhXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJoaWRkZW4gdGV4dC1hbWJlci0xMDAvOTAgbWQ6aW5saW5lXCI+XG4gICAgICAgICAgICAgIFlvdSZhcG9zO3JlIHVzaW5nIGFuIGVhcmx5LWFjY2VzcyBwcm90b3R5cGUgb2YgVGhlIEFybW9yeS4gRGF0YSxcbiAgICAgICAgICAgICAgcHJpY2luZywgYW5kIGF2YWlsYWJsZSBwYXJ0cyBhcmUgc3RpbGwgZXZvbHZpbmcuXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci0xMDAvOTAgbWQ6aGlkZGVuXCI+XG4gICAgICAgICAgICBFYXJseS1hY2Nlc3MgcHJvdG90eXBlLiBEYXRhIGFuZCBwcmljaW5nIG1heSBjaGFuZ2UuXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogTWFpbiBuYXYgcm93ICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIGZsZXggbWF4LXctNnhsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNCBweS0yXCI+XG4gICAgICAgIHsvKiBMZWZ0OiBCcmFuZCAvIEhvbWUgKi99XG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgaHJlZj1cIi9cIlxuICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4yZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNDAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIEJhdHRsIEJ1aWxkZXJcbiAgICAgICAgPC9MaW5rPlxuXG4gICAgICAgIHsvKiBDZW50ZXI6IG1haW4gbmF2IChCdWlsZGVyIC8gQWRtaW4pICovfVxuICAgICAgICA8bmF2IGNsYXNzTmFtZT1cImhpZGRlbiBpdGVtcy1jZW50ZXIgZ2FwLTQgbWQ6ZmxleFwiPlxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBocmVmPVwiL2d1bmJ1aWxkZXJcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtMzAwIGhvdmVyOnRleHQtemluYy01MCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQnVpbGRlclxuICAgICAgICAgIDwvTGluaz5cblxuICAgICAgICAgIHtpc0F1dGhlbnRpY2F0ZWQgJiYgKFxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj1cIi9hZG1pblwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1lbWVyYWxkLTQwMCBob3Zlcjp0ZXh0LWVtZXJhbGQtMzAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQWRtaW5cbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICApfVxuICAgICAgICA8L25hdj5cblxuICAgICAgICB7LyogUmlnaHQgc2lkZSBhY3Rpb25zICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgey8qIFNlYXJjaCBwbGFjZWhvbGRlciAqL31cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGgtOCB3LTggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzYwIHRleHQtemluYy00MDAgaG92ZXI6dGV4dC16aW5jLTIwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy01MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlYXJjaCAoY29taW5nIHNvb24pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNCB3LTRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjZcIiAvPlxuICAgICAgICAgICAgICA8bGluZSB4MT1cIjE2LjVcIiB5MT1cIjE2LjVcIiB4Mj1cIjIxXCIgeTI9XCIyMVwiIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+Q2hlY2tpbmcgc2Vzc2lvbuKApjwvc3Bhbj5cbiAgICAgICAgICApIDogaXNBdXRoZW50aWNhdGVkID8gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaGlkZGVuIHRleHQteHMgdGV4dC16aW5jLTMwMCBzbTppbmxpbmVcIj5cbiAgICAgICAgICAgICAgICB7dXNlci5kaXNwbGF5TmFtZSB8fCB1c2VyLmVtYWlsfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtsb2dvdXR9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0xMDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgTG9nIE91dFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgIGhyZWY9XCIvbG9naW5cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1tZWRpdW0gdGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMTAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIExvZyBJblxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj1cIi9yZWdpc3RlclwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWFtYmVyLTQwMC83MCBiZy1hbWJlci00MDAvMTAgcHgtMyBweS0xLjUgdGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMjAwIGhvdmVyOmJnLWFtYmVyLTQwMC8yMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBKb2luIEJldGFcbiAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbiAgKTtcbn0iXSwibmFtZXMiOlsiTGluayIsInVzZUF1dGgiLCJUb3BOYXYiLCJ1c2VyIiwibG9nb3V0IiwibG9hZGluZyIsImlzQXV0aGVudGljYXRlZCIsImhlYWRlciIsImNsYXNzTmFtZSIsImRpdiIsInNwYW4iLCJocmVmIiwibmF2IiwiYnV0dG9uIiwidHlwZSIsImFyaWEtbGFiZWwiLCJzdmciLCJ4bWxucyIsInZpZXdCb3giLCJmaWxsIiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJjaXJjbGUiLCJjeCIsImN5IiwiciIsImxpbmUiLCJ4MSIsInkxIiwieDIiLCJ5MiIsImRpc3BsYXlOYW1lIiwiZW1haWwiLCJvbkNsaWNrIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./components/TopNav.tsx\n");
-
-/***/ }),
-
-/***/ "(ssr)/./context/AuthContext.tsx":
-/*!*********************************!*\
- !*** ./context/AuthContext.tsx ***!
- \*********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AuthProvider: () => (/* binding */ AuthProvider),\n/* harmony export */ useAuth: () => (/* binding */ useAuth)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* __next_internal_client_entry_do_not_use__ AuthProvider,useAuth auto */ \n\nconst API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL ?? \"http://localhost:8080\";\nconst AuthContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(undefined);\nconst TOKEN_KEY = \"ballistic_auth_token\";\nconst USER_KEY = \"ballistic_auth_user\";\nfunction AuthProvider({ children }) {\n const [token, setToken] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [user, setUser] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n // Hydrate from localStorage on first load\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (true) return;\n const storedToken = window.localStorage.getItem(TOKEN_KEY);\n const storedUser = window.localStorage.getItem(USER_KEY);\n if (storedToken) {\n setToken(storedToken);\n }\n if (storedUser) {\n try {\n setUser(JSON.parse(storedUser));\n } catch {\n // bad JSON? wipe it\n window.localStorage.removeItem(USER_KEY);\n }\n }\n setLoading(false);\n }, []);\n const persistAuth = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((nextToken, nextUser)=>{\n if (true) return;\n if (nextToken) {\n window.localStorage.setItem(TOKEN_KEY, nextToken);\n } else {\n window.localStorage.removeItem(TOKEN_KEY);\n }\n if (nextUser) {\n window.localStorage.setItem(USER_KEY, JSON.stringify(nextUser));\n } else {\n window.localStorage.removeItem(USER_KEY);\n }\n }, []);\n const login = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async ({ email, password })=>{\n setLoading(true);\n try {\n const res = await fetch(`${API_BASE_URL}/auth/login`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email,\n password\n })\n });\n if (!res.ok) {\n const text = await res.text().catch(()=>res.statusText);\n throw new Error(text || \"Login failed\");\n }\n const data = await res.json();\n // Adjust these to match your backend response shape\n const nextToken = data.token ?? data.accessToken;\n const nextUser = data.user ?? {\n email: data.email ?? email,\n displayName: data.displayName ?? null,\n role: data.role ?? \"USER\"\n };\n setToken(nextToken);\n setUser(nextUser);\n persistAuth(nextToken, nextUser);\n } finally{\n setLoading(false);\n }\n }, [\n persistAuth\n ]);\n const register = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async ({ email, password, displayName })=>{\n setLoading(true);\n try {\n const res = await fetch(`${API_BASE_URL}/auth/register`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email,\n password,\n displayName\n })\n });\n if (!res.ok) {\n const text = await res.text().catch(()=>res.statusText);\n throw new Error(text || \"Registration failed\");\n }\n const data = await res.json();\n const nextToken = data.token ?? data.accessToken;\n const nextUser = data.user ?? {\n email: data.email ?? email,\n displayName: data.displayName ?? displayName ?? null,\n role: data.role ?? \"USER\"\n };\n setToken(nextToken);\n setUser(nextUser);\n persistAuth(nextToken, nextUser);\n } finally{\n setLoading(false);\n }\n }, [\n persistAuth\n ]);\n const logout = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n setToken(null);\n setUser(null);\n persistAuth(null, null);\n }, [\n persistAuth\n ]);\n const getAuthHeaders = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n return token ? {\n Authorization: `Bearer ${token}`\n } : {};\n }, [\n token\n ]);\n const value = {\n user,\n token,\n loading,\n login,\n register,\n logout,\n getAuthHeaders\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AuthContext.Provider, {\n value: value,\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/context/AuthContext.tsx\",\n lineNumber: 185,\n columnNumber: 10\n }, this);\n}\n// 🔑 This is what your useApi hook imports\nfunction useAuth() {\n const ctx = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AuthContext);\n if (!ctx) {\n throw new Error(\"useAuth must be used within an AuthProvider\");\n }\n return ctx;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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UUFDQUk7UUFDQWU7UUFDQWtCO1FBQ0FDO1FBQ0FDO0lBQ0Y7SUFFQSxxQkFBTyw4REFBQzdDLFlBQVlnRCxRQUFRO1FBQUNELE9BQU9BO2tCQUFRMUM7Ozs7OztBQUM5QztBQUVBLDJDQUEyQztBQUNwQyxTQUFTNEM7SUFDZCxNQUFNQyxNQUFNekQsaURBQVVBLENBQUNPO0lBQ3ZCLElBQUksQ0FBQ2tELEtBQUs7UUFDUixNQUFNLElBQUliLE1BQU07SUFDbEI7SUFDQSxPQUFPYTtBQUNUIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9jb250ZXh0L0F1dGhDb250ZXh0LnRzeD9mZGZmIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQge1xuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VTdGF0ZSxcbiAgUmVhY3ROb2RlLFxufSBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgQVBJX0JBU0VfVVJMID1cbiAgcHJvY2Vzcy5lbnYuTkVYVF9QVUJMSUNfQVBJX0JBU0VfVVJMID8/IFwiaHR0cDovL2xvY2FsaG9zdDo4MDgwXCI7XG5cbnR5cGUgQXV0aFVzZXIgPSB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgcm9sZTogc3RyaW5nO1xufSB8IG51bGw7XG5cbnR5cGUgQXV0aENvbnRleHRWYWx1ZSA9IHtcbiAgdXNlcjogQXV0aFVzZXI7XG4gIHRva2VuOiBzdHJpbmcgfCBudWxsO1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBsb2dpbjogKHBhcmFtczogeyBlbWFpbDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH0pID0+IFByb21pc2U8dm9pZD47XG4gIHJlZ2lzdGVyOiAocGFyYW1zOiB7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuICB9KSA9PiBQcm9taXNlPHZvaWQ+O1xuICBsb2dvdXQ6ICgpID0+IHZvaWQ7XG4gIGdldEF1dGhIZWFkZXJzOiAoKSA9PiBIZWFkZXJzSW5pdDtcbn07XG5cbmNvbnN0IEF1dGhDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxBdXRoQ29udGV4dFZhbHVlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5jb25zdCBUT0tFTl9LRVkgPSBcImJhbGxpc3RpY19hdXRoX3Rva2VuXCI7XG5jb25zdCBVU0VSX0tFWSA9IFwiYmFsbGlzdGljX2F1dGhfdXNlclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gQXV0aFByb3ZpZGVyKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3ROb2RlIH0pIHtcbiAgY29uc3QgW3Rva2VuLCBzZXRUb2tlbl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW3VzZXIsIHNldFVzZXJdID0gdXNlU3RhdGU8QXV0aFVzZXI+KG51bGwpO1xuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZTxib29sZWFuPih0cnVlKTtcblxuICAvLyBIeWRyYXRlIGZyb20gbG9jYWxTdG9yYWdlIG9uIGZpcnN0IGxvYWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RvcmVkVG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oVE9LRU5fS0VZKTtcbiAgICBjb25zdCBzdG9yZWRVc2VyID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFVTRVJfS0VZKTtcblxuICAgIGlmIChzdG9yZWRUb2tlbikge1xuICAgICAgc2V0VG9rZW4oc3RvcmVkVG9rZW4pO1xuICAgIH1cblxuICAgIGlmIChzdG9yZWRVc2VyKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzZXRVc2VyKEpTT04ucGFyc2Uoc3RvcmVkVXNlcikpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGJhZCBKU09OPyB3aXBlIGl0XG4gICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShVU0VSX0tFWSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBwZXJzaXN0QXV0aCA9IHVzZUNhbGxiYWNrKChuZXh0VG9rZW46IHN0cmluZyB8IG51bGwsIG5leHRVc2VyOiBBdXRoVXNlcikgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm47XG5cbiAgICBpZiAobmV4dFRva2VuKSB7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oVE9LRU5fS0VZLCBuZXh0VG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oVE9LRU5fS0VZKTtcbiAgICB9XG5cbiAgICBpZiAobmV4dFVzZXIpIHtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShVU0VSX0tFWSwgSlNPTi5zdHJpbmdpZnkobmV4dFVzZXIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFVTRVJfS0VZKTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICBjb25zdCBsb2dpbiA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7IGVtYWlsLCBwYXNzd29yZCB9OiB7IGVtYWlsOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke0FQSV9CQVNFX1VSTH0vYXV0aC9sb2dpbmAsIHtcbiAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGVtYWlsLCBwYXNzd29yZCB9KSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFyZXMub2spIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgcmVzLnRleHQoKS5jYXRjaCgoKSA9PiByZXMuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRleHQgfHwgXCJMb2dpbiBmYWlsZWRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcblxuICAgICAgICAvLyBBZGp1c3QgdGhlc2UgdG8gbWF0Y2ggeW91ciBiYWNrZW5kIHJlc3BvbnNlIHNoYXBlXG4gICAgICAgIGNvbnN0IG5leHRUb2tlbjogc3RyaW5nID0gZGF0YS50b2tlbiA/PyBkYXRhLmFjY2Vzc1Rva2VuO1xuICAgICAgICBjb25zdCBuZXh0VXNlcjogQXV0aFVzZXIgPVxuICAgICAgICAgIGRhdGEudXNlciA/P1xuICAgICAgICAgICh7XG4gICAgICAgICAgICBlbWFpbDogZGF0YS5lbWFpbCA/PyBlbWFpbCxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBkYXRhLmRpc3BsYXlOYW1lID8/IG51bGwsXG4gICAgICAgICAgICByb2xlOiBkYXRhLnJvbGUgPz8gXCJVU0VSXCIsXG4gICAgICAgICAgfSBhcyBBdXRoVXNlcik7XG5cbiAgICAgICAgc2V0VG9rZW4obmV4dFRva2VuKTtcbiAgICAgICAgc2V0VXNlcihuZXh0VXNlcik7XG4gICAgICAgIHBlcnNpc3RBdXRoKG5leHRUb2tlbiwgbmV4dFVzZXIpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbcGVyc2lzdEF1dGhdXG4gICk7XG5cbiAgY29uc3QgcmVnaXN0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoe1xuICAgICAgZW1haWwsXG4gICAgICBwYXNzd29yZCxcbiAgICAgIGRpc3BsYXlOYW1lLFxuICAgIH06IHtcbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgICAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG4gICAgfSkgPT4ge1xuICAgICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke0FQSV9CQVNFX1VSTH0vYXV0aC9yZWdpc3RlcmAsIHtcbiAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGVtYWlsLCBwYXNzd29yZCwgZGlzcGxheU5hbWUgfSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghcmVzLm9rKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlcy50ZXh0KCkuY2F0Y2goKCkgPT4gcmVzLnN0YXR1c1RleHQpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0ZXh0IHx8IFwiUmVnaXN0cmF0aW9uIGZhaWxlZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXMuanNvbigpO1xuXG4gICAgICAgIGNvbnN0IG5leHRUb2tlbjogc3RyaW5nID0gZGF0YS50b2tlbiA/PyBkYXRhLmFjY2Vzc1Rva2VuO1xuICAgICAgICBjb25zdCBuZXh0VXNlcjogQXV0aFVzZXIgPVxuICAgICAgICAgIGRhdGEudXNlciA/P1xuICAgICAgICAgICh7XG4gICAgICAgICAgICBlbWFpbDogZGF0YS5lbWFpbCA/PyBlbWFpbCxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBkYXRhLmRpc3BsYXlOYW1lID8/IGRpc3BsYXlOYW1lID8/IG51bGwsXG4gICAgICAgICAgICByb2xlOiBkYXRhLnJvbGUgPz8gXCJVU0VSXCIsXG4gICAgICAgICAgfSBhcyBBdXRoVXNlcik7XG5cbiAgICAgICAgc2V0VG9rZW4obmV4dFRva2VuKTtcbiAgICAgICAgc2V0VXNlcihuZXh0VXNlcik7XG4gICAgICAgIHBlcnNpc3RBdXRoKG5leHRUb2tlbiwgbmV4dFVzZXIpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbcGVyc2lzdEF1dGhdXG4gICk7XG5cbiAgY29uc3QgbG9nb3V0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFRva2VuKG51bGwpO1xuICAgIHNldFVzZXIobnVsbCk7XG4gICAgcGVyc2lzdEF1dGgobnVsbCwgbnVsbCk7XG4gIH0sIFtwZXJzaXN0QXV0aF0pO1xuXG4gIGNvbnN0IGdldEF1dGhIZWFkZXJzID0gdXNlQ2FsbGJhY2soKCk6IEhlYWRlcnNJbml0ID0+IHtcbiAgICByZXR1cm4gdG9rZW4gPyB7IEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gIH0gOiB7fTtcbiAgfSwgW3Rva2VuXSk7XG5cbiAgY29uc3QgdmFsdWU6IEF1dGhDb250ZXh0VmFsdWUgPSB7XG4gICAgdXNlcixcbiAgICB0b2tlbixcbiAgICBsb2FkaW5nLFxuICAgIGxvZ2luLFxuICAgIHJlZ2lzdGVyLFxuICAgIGxvZ291dCxcbiAgICBnZXRBdXRoSGVhZGVycyxcbiAgfTtcblxuICByZXR1cm4gPEF1dGhDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvQXV0aENvbnRleHQuUHJvdmlkZXI+O1xufVxuXG4vLyDwn5SRIFRoaXMgaXMgd2hhdCB5b3VyIHVzZUFwaSBob29rIGltcG9ydHNcbmV4cG9ydCBmdW5jdGlvbiB1c2VBdXRoKCk6IEF1dGhDb250ZXh0VmFsdWUge1xuICBjb25zdCBjdHggPSB1c2VDb250ZXh0KEF1dGhDb250ZXh0KTtcbiAgaWYgKCFjdHgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VBdXRoIG11c3QgYmUgdXNlZCB3aXRoaW4gYW4gQXV0aFByb3ZpZGVyXCIpO1xuICB9XG4gIHJldHVybiBjdHg7XG59Il0sIm5hbWVzIjpbImNyZWF0ZUNvbnRleHQiLCJ1c2VDYWxsYmFjayIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkFQSV9CQVNFX1VSTCIsInByb2Nlc3MiLCJlbnYiLCJORVhUX1BVQkxJQ19BUElfQkFTRV9VUkwiLCJBdXRoQ29udGV4dCIsInVuZGVmaW5lZCIsIlRPS0VOX0tFWSIsIlVTRVJfS0VZIiwiQXV0aFByb3ZpZGVyIiwiY2hpbGRyZW4iLCJ0b2tlbiIsInNldFRva2VuIiwidXNlciIsInNldFVzZXIiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsInN0b3JlZFRva2VuIiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInN0b3JlZFVzZXIiLCJKU09OIiwicGFyc2UiLCJyZW1vdmVJdGVtIiwicGVyc2lzdEF1dGgiLCJuZXh0VG9rZW4iLCJuZXh0VXNlciIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJsb2dpbiIsImVtYWlsIiwicGFzc3dvcmQiLCJyZXMiLCJmZXRjaCIsIm1ldGhvZCIsImhlYWRlcnMiLCJib2R5Iiwib2siLCJ0ZXh0IiwiY2F0Y2giLCJzdGF0dXNUZXh0IiwiRXJyb3IiLCJkYXRhIiwianNvbiIsImFjY2Vzc1Rva2VuIiwiZGlzcGxheU5hbWUiLCJyb2xlIiwicmVnaXN0ZXIiLCJsb2dvdXQiLCJnZXRBdXRoSGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJ2YWx1ZSIsIlByb3ZpZGVyIiwidXNlQXV0aCIsImN0eCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./context/AuthContext.tsx\n");
-
-/***/ }),
-
-/***/ "(ssr)/./data/gunbuilderParts.ts":
-/*!*********************************!*\
- !*** ./data/gunbuilderParts.ts ***!
- \*********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CATEGORIES: () => (/* binding */ CATEGORIES)\n/* harmony export */ });\nconst CATEGORIES = [\n // LOWER\n {\n id: \"lower\",\n name: \"Stripped Lowers\",\n description: \"Serialized lower – the foundation of the build.\",\n group: \"lower\"\n },\n {\n id: \"completeLower\",\n name: \"Complete Lowers\",\n description: \"Factory-built lower with stock, buffer system, and controls.\",\n group: \"lower\"\n },\n {\n id: \"lowerParts\",\n name: \"Lower Parts Kits\",\n description: \"Pins, springs, and controls for the lower.\",\n group: \"lower\"\n },\n {\n id: \"trigger\",\n name: \"Trigger / Fire Control\",\n description: \"Single-stage, two-stage, and match triggers.\",\n group: \"lower\"\n },\n {\n id: \"grip\",\n name: \"Pistol Grip\",\n description: \"Grips that shape how the rifle handles.\",\n group: \"lower\"\n },\n {\n id: \"safety\",\n name: \"Safety / Selector\",\n description: \"Ambi selectors and control upgrades.\",\n group: \"lower\"\n },\n {\n id: \"buffer\",\n name: \"Buffer System\",\n description: \"Buffer tube, buffer, spring, and related parts.\",\n group: \"lower\"\n },\n {\n id: \"stock\",\n name: \"Stock / Brace\",\n description: \"Adjustable, fixed, and minimalist stocks.\",\n group: \"lower\"\n },\n // UPPER\n {\n id: \"upper\",\n name: \"Stripped Uppers\",\n description: \"The core of the top half of your build.\",\n group: \"upper\"\n },\n {\n id: \"completeUpper\",\n name: \"Complete Uppers\",\n description: \"Pre-assembled uppers ready to pin and shoot.\",\n group: \"upper\"\n },\n {\n id: \"bcg\",\n name: \"Bolt Carriers\",\n description: \"The heartbeat of the rifle’s cycling.\",\n group: \"upper\"\n },\n {\n id: \"barrel\",\n name: \"Barrels\",\n description: \"Different lengths, profiles, and calibers.\",\n group: \"upper\"\n },\n {\n id: \"gasBlock\",\n name: \"Gas Blocks\",\n description: \"Standard and adjustable gas blocks.\",\n group: \"upper\"\n },\n {\n id: \"gasTube\",\n name: \"Gas Tubes\",\n description: \"Carbine, mid, rifle, and more.\",\n group: \"upper\"\n },\n {\n id: \"muzzleDevice\",\n name: \"Muzzle Devices\",\n description: \"Brakes, comps, and flash hiders.\",\n group: \"upper\"\n },\n {\n id: \"suppressor\",\n name: \"Suppressors\",\n description: \"Hearing-safe setups and hosts.\",\n group: \"upper\"\n },\n {\n id: \"handguard\",\n name: \"Handguards / Rails\",\n description: \"M-LOK rails and front-end furniture.\",\n group: \"upper\"\n },\n {\n id: \"chargingHandle\",\n name: \"Charging Handles\",\n description: \"Standard and ambi charging handles.\",\n group: \"upper\"\n },\n {\n id: \"sights\",\n name: \"Iron Sights\",\n description: \"Backup and primary irons.\",\n group: \"upper\"\n },\n {\n id: \"optic\",\n name: \"Optics\",\n description: \"LPVOs, red dots, and magnifiers.\",\n group: \"upper\"\n },\n // ACCESSORIES GROUP\n {\n id: \"magazine\",\n name: \"Magazines\",\n group: \"accessories\"\n },\n {\n id: \"weaponLight\",\n name: \"Weapon Lights & Lasers\",\n group: \"accessories\"\n },\n {\n id: \"foregrip\",\n name: \"Vertical / Angled Grips\",\n group: \"accessories\"\n },\n {\n id: \"bipod\",\n name: \"Bipods\",\n group: \"accessories\"\n },\n {\n id: \"sling\",\n name: \"Slings & Mounts\",\n group: \"accessories\"\n },\n {\n id: \"railAccessory\",\n name: \"Rail Sections & Covers\",\n group: \"accessories\"\n },\n {\n id: \"tools\",\n name: \"Tools & Maintenance\",\n group: \"accessories\"\n }\n];\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9kYXRhL2d1bmJ1aWxkZXJQYXJ0cy50cyIsIm1hcHBpbmdzIjoiOzs7O0FBRU8sTUFBTUEsYUFBeUI7SUFDcEMsUUFBUTtJQUNSO1FBQ0VDLElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLE9BQU87SUFDVDtJQUVBLFFBQVE7SUFDUjtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsYUFBYTtRQUNiQyxPQUFPO0lBQ1Q7SUFDQSxvQkFBb0I7SUFDcEI7UUFDRUgsSUFBSTtRQUNKQyxNQUFNO1FBQ05FLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNORSxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkUsT0FBTztJQUNUO0lBQ0E7UUFDRUgsSUFBSTtRQUNKQyxNQUFNO1FBQ05FLE9BQU87SUFDVDtJQUNBO1FBQ0VILElBQUk7UUFDSkMsTUFBTTtRQUNORSxPQUFPO0lBQ1Q7SUFDQTtRQUNFSCxJQUFJO1FBQ0pDLE1BQU07UUFDTkUsT0FBTztJQUNUO0lBQ0E7UUFDRUgsSUFBSTtRQUNKQyxNQUFNO1FBQ05FLE9BQU87SUFDVDtDQUNELENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL2RhdGEvZ3VuYnVpbGRlclBhcnRzLnRzPzczYWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDYXRlZ29yeSwgUGFydCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcblxuZXhwb3J0IGNvbnN0IENBVEVHT1JJRVM6IENhdGVnb3J5W10gPSBbXG4gIC8vIExPV0VSXG4gIHtcbiAgICBpZDogXCJsb3dlclwiLFxuICAgIG5hbWU6IFwiU3RyaXBwZWQgTG93ZXJzXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU2VyaWFsaXplZCBsb3dlciDigJMgdGhlIGZvdW5kYXRpb24gb2YgdGhlIGJ1aWxkLlwiLFxuICAgIGdyb3VwOiBcImxvd2VyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJjb21wbGV0ZUxvd2VyXCIsXG4gICAgbmFtZTogXCJDb21wbGV0ZSBMb3dlcnNcIixcbiAgICBkZXNjcmlwdGlvbjogXCJGYWN0b3J5LWJ1aWx0IGxvd2VyIHdpdGggc3RvY2ssIGJ1ZmZlciBzeXN0ZW0sIGFuZCBjb250cm9scy5cIixcbiAgICBncm91cDogXCJsb3dlclwiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwibG93ZXJQYXJ0c1wiLFxuICAgIG5hbWU6IFwiTG93ZXIgUGFydHMgS2l0c1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlBpbnMsIHNwcmluZ3MsIGFuZCBjb250cm9scyBmb3IgdGhlIGxvd2VyLlwiLFxuICAgIGdyb3VwOiBcImxvd2VyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJ0cmlnZ2VyXCIsXG4gICAgbmFtZTogXCJUcmlnZ2VyIC8gRmlyZSBDb250cm9sXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU2luZ2xlLXN0YWdlLCB0d28tc3RhZ2UsIGFuZCBtYXRjaCB0cmlnZ2Vycy5cIixcbiAgICBncm91cDogXCJsb3dlclwiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwiZ3JpcFwiLFxuICAgIG5hbWU6IFwiUGlzdG9sIEdyaXBcIixcbiAgICBkZXNjcmlwdGlvbjogXCJHcmlwcyB0aGF0IHNoYXBlIGhvdyB0aGUgcmlmbGUgaGFuZGxlcy5cIixcbiAgICBncm91cDogXCJsb3dlclwiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwic2FmZXR5XCIsXG4gICAgbmFtZTogXCJTYWZldHkgLyBTZWxlY3RvclwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkFtYmkgc2VsZWN0b3JzIGFuZCBjb250cm9sIHVwZ3JhZGVzLlwiLFxuICAgIGdyb3VwOiBcImxvd2VyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJidWZmZXJcIixcbiAgICBuYW1lOiBcIkJ1ZmZlciBTeXN0ZW1cIixcbiAgICBkZXNjcmlwdGlvbjogXCJCdWZmZXIgdHViZSwgYnVmZmVyLCBzcHJpbmcsIGFuZCByZWxhdGVkIHBhcnRzLlwiLFxuICAgIGdyb3VwOiBcImxvd2VyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJzdG9ja1wiLFxuICAgIG5hbWU6IFwiU3RvY2sgLyBCcmFjZVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkFkanVzdGFibGUsIGZpeGVkLCBhbmQgbWluaW1hbGlzdCBzdG9ja3MuXCIsXG4gICAgZ3JvdXA6IFwibG93ZXJcIixcbiAgfSxcblxuICAvLyBVUFBFUlxuICB7XG4gICAgaWQ6IFwidXBwZXJcIixcbiAgICBuYW1lOiBcIlN0cmlwcGVkIFVwcGVyc1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBjb3JlIG9mIHRoZSB0b3AgaGFsZiBvZiB5b3VyIGJ1aWxkLlwiLFxuICAgIGdyb3VwOiBcInVwcGVyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJjb21wbGV0ZVVwcGVyXCIsXG4gICAgbmFtZTogXCJDb21wbGV0ZSBVcHBlcnNcIixcbiAgICBkZXNjcmlwdGlvbjogXCJQcmUtYXNzZW1ibGVkIHVwcGVycyByZWFkeSB0byBwaW4gYW5kIHNob290LlwiLFxuICAgIGdyb3VwOiBcInVwcGVyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJiY2dcIixcbiAgICBuYW1lOiBcIkJvbHQgQ2FycmllcnNcIixcbiAgICBkZXNjcmlwdGlvbjogXCJUaGUgaGVhcnRiZWF0IG9mIHRoZSByaWZsZeKAmXMgY3ljbGluZy5cIixcbiAgICBncm91cDogXCJ1cHBlclwiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwiYmFycmVsXCIsXG4gICAgbmFtZTogXCJCYXJyZWxzXCIsXG4gICAgZGVzY3JpcHRpb246IFwiRGlmZmVyZW50IGxlbmd0aHMsIHByb2ZpbGVzLCBhbmQgY2FsaWJlcnMuXCIsXG4gICAgZ3JvdXA6IFwidXBwZXJcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcImdhc0Jsb2NrXCIsXG4gICAgbmFtZTogXCJHYXMgQmxvY2tzXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU3RhbmRhcmQgYW5kIGFkanVzdGFibGUgZ2FzIGJsb2Nrcy5cIixcbiAgICBncm91cDogXCJ1cHBlclwiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwiZ2FzVHViZVwiLFxuICAgIG5hbWU6IFwiR2FzIFR1YmVzXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQ2FyYmluZSwgbWlkLCByaWZsZSwgYW5kIG1vcmUuXCIsXG4gICAgZ3JvdXA6IFwidXBwZXJcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcIm11enpsZURldmljZVwiLFxuICAgIG5hbWU6IFwiTXV6emxlIERldmljZXNcIixcbiAgICBkZXNjcmlwdGlvbjogXCJCcmFrZXMsIGNvbXBzLCBhbmQgZmxhc2ggaGlkZXJzLlwiLFxuICAgIGdyb3VwOiBcInVwcGVyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJzdXBwcmVzc29yXCIsXG4gICAgbmFtZTogXCJTdXBwcmVzc29yc1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkhlYXJpbmctc2FmZSBzZXR1cHMgYW5kIGhvc3RzLlwiLFxuICAgIGdyb3VwOiBcInVwcGVyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJoYW5kZ3VhcmRcIixcbiAgICBuYW1lOiBcIkhhbmRndWFyZHMgLyBSYWlsc1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIk0tTE9LIHJhaWxzIGFuZCBmcm9udC1lbmQgZnVybml0dXJlLlwiLFxuICAgIGdyb3VwOiBcInVwcGVyXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJjaGFyZ2luZ0hhbmRsZVwiLFxuICAgIG5hbWU6IFwiQ2hhcmdpbmcgSGFuZGxlc1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlN0YW5kYXJkIGFuZCBhbWJpIGNoYXJnaW5nIGhhbmRsZXMuXCIsXG4gICAgZ3JvdXA6IFwidXBwZXJcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcInNpZ2h0c1wiLFxuICAgIG5hbWU6IFwiSXJvbiBTaWdodHNcIixcbiAgICBkZXNjcmlwdGlvbjogXCJCYWNrdXAgYW5kIHByaW1hcnkgaXJvbnMuXCIsXG4gICAgZ3JvdXA6IFwidXBwZXJcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcIm9wdGljXCIsXG4gICAgbmFtZTogXCJPcHRpY3NcIixcbiAgICBkZXNjcmlwdGlvbjogXCJMUFZPcywgcmVkIGRvdHMsIGFuZCBtYWduaWZpZXJzLlwiLFxuICAgIGdyb3VwOiBcInVwcGVyXCIsXG4gIH0sXG4gIC8vIEFDQ0VTU09SSUVTIEdST1VQXG4gIHtcbiAgICBpZDogXCJtYWdhemluZVwiLFxuICAgIG5hbWU6IFwiTWFnYXppbmVzXCIsXG4gICAgZ3JvdXA6IFwiYWNjZXNzb3JpZXNcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcIndlYXBvbkxpZ2h0XCIsXG4gICAgbmFtZTogXCJXZWFwb24gTGlnaHRzICYgTGFzZXJzXCIsXG4gICAgZ3JvdXA6IFwiYWNjZXNzb3JpZXNcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcImZvcmVncmlwXCIsXG4gICAgbmFtZTogXCJWZXJ0aWNhbCAvIEFuZ2xlZCBHcmlwc1wiLFxuICAgIGdyb3VwOiBcImFjY2Vzc29yaWVzXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJiaXBvZFwiLFxuICAgIG5hbWU6IFwiQmlwb2RzXCIsXG4gICAgZ3JvdXA6IFwiYWNjZXNzb3JpZXNcIixcbiAgfSxcbiAge1xuICAgIGlkOiBcInNsaW5nXCIsXG4gICAgbmFtZTogXCJTbGluZ3MgJiBNb3VudHNcIixcbiAgICBncm91cDogXCJhY2Nlc3Nvcmllc1wiLFxuICB9LFxuICB7XG4gICAgaWQ6IFwicmFpbEFjY2Vzc29yeVwiLFxuICAgIG5hbWU6IFwiUmFpbCBTZWN0aW9ucyAmIENvdmVyc1wiLFxuICAgIGdyb3VwOiBcImFjY2Vzc29yaWVzXCIsXG4gIH0sXG4gIHtcbiAgICBpZDogXCJ0b29sc1wiLFxuICAgIG5hbWU6IFwiVG9vbHMgJiBNYWludGVuYW5jZVwiLFxuICAgIGdyb3VwOiBcImFjY2Vzc29yaWVzXCIsXG4gIH0sXG5dO1xuIl0sIm5hbWVzIjpbIkNBVEVHT1JJRVMiLCJpZCIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsImdyb3VwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./data/gunbuilderParts.ts\n");
-
-/***/ }),
-
-/***/ "(ssr)/./data/partRoleMappings.ts":
-/*!**********************************!*\
- !*** ./data/partRoleMappings.ts ***!
- \**********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CATEGORY_TO_PART_ROLES: () => (/* binding */ CATEGORY_TO_PART_ROLES),\n/* harmony export */ PART_ROLE_TO_CATEGORY: () => (/* binding */ PART_ROLE_TO_CATEGORY)\n/* harmony export */ });\n// CategoryId -> partRoles\nconst CATEGORY_TO_PART_ROLES = {\n // CORE / EXISTING\n upper: [\n \"upper-receiver\"\n ],\n barrel: [\n \"barrel\"\n ],\n handguard: [\n \"handguard\"\n ],\n chargingHandle: [\n \"charging-handle\"\n ],\n buffer: [\n \"buffer-kit\"\n ],\n lowerParts: [\n \"lower-parts-kit\"\n ],\n sights: [\n \"sight\"\n ],\n lower: [\n \"lower-receiver\"\n ],\n optic: [\n \"optic\"\n ],\n stock: [\n \"stock\"\n ],\n // NEW LOWER PARTS\n trigger: [\n \"trigger\",\n \"trigger-kit\"\n ],\n grip: [\n \"pistol-grip\",\n \"grip\"\n ],\n safety: [\n \"safety\",\n \"safety-selector\"\n ],\n completeLower: [\n \"complete-lower\"\n ],\n // NEW UPPER PARTS\n completeUpper: [\n \"complete-upper\"\n ],\n bcg: [\n \"bcg\",\n \"bolt-carrier-group\"\n ],\n gasBlock: [\n \"gas-block\"\n ],\n gasTube: [\n \"gas-tube\"\n ],\n muzzleDevice: [\n \"muzzle-device\",\n \"compensator\",\n \"brake\"\n ],\n suppressor: [\n \"suppressor\"\n ],\n // ===== ACCESSORIES =====\n // Magazines\n magazine: [\n \"magazine\",\n \"mag\",\n \"magazine-ar15\",\n \"magazine-308\",\n \"drum-magazine\"\n ],\n // Lights / Lasers\n weaponLight: [\n \"weapon-light\",\n \"light\",\n \"weapon-light-laser\",\n \"light-laser-combo\",\n \"laser\"\n ],\n // Foregrips\n foregrip: [\n \"vertical-grip\",\n \"angled-foregrip\",\n \"foregrip\",\n \"handstop\"\n ],\n // Bipods\n bipod: [\n \"bipod\"\n ],\n // Slings & mounts\n sling: [\n \"sling\",\n \"sling-mount\",\n \"sling-swivel\",\n \"qd-sling-mount\"\n ],\n // Rail sections & covers\n railAccessory: [\n \"rail-section\",\n \"picatinny-rail-section\",\n \"m-lok-rail-section\",\n \"keymod-rail-section\",\n \"rail-cover\",\n \"rail-panel\"\n ],\n // Tools & maintenance\n tools: [\n \"tool\",\n \"armorer-tool\",\n \"armorer-wrench\",\n \"cleaning-kit\",\n \"bore-snake\",\n \"vise-block\",\n \"torque-wrench\"\n ]\n};\n// Invert to get partRole -> CategoryId\nconst PART_ROLE_TO_CATEGORY = Object.entries(CATEGORY_TO_PART_ROLES).reduce((acc, [categoryId, roles])=>{\n for (const role of roles){\n acc[role] = categoryId;\n }\n return acc;\n}, {});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9kYXRhL3BhcnRSb2xlTWFwcGluZ3MudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSwwQkFBMEI7QUFDbkIsTUFBTUEseUJBQXVEO0lBQ2xFLGtCQUFrQjtJQUNsQkMsT0FBTztRQUFDO0tBQWlCO0lBQ3pCQyxRQUFRO1FBQUM7S0FBUztJQUNsQkMsV0FBVztRQUFDO0tBQVk7SUFDeEJDLGdCQUFnQjtRQUFDO0tBQWtCO0lBQ25DQyxRQUFRO1FBQUM7S0FBYTtJQUN0QkMsWUFBWTtRQUFDO0tBQWtCO0lBQy9CQyxRQUFRO1FBQUM7S0FBUTtJQUNqQkMsT0FBTztRQUFDO0tBQWlCO0lBQ3pCQyxPQUFPO1FBQUM7S0FBUTtJQUNoQkMsT0FBTztRQUFDO0tBQVE7SUFFaEIsa0JBQWtCO0lBQ2xCQyxTQUFTO1FBQUM7UUFBVztLQUFjO0lBQ25DQyxNQUFNO1FBQUM7UUFBZTtLQUFPO0lBQzdCQyxRQUFRO1FBQUM7UUFBVTtLQUFrQjtJQUNyQ0MsZUFBZTtRQUFDO0tBQWlCO0lBRWpDLGtCQUFrQjtJQUNsQkMsZUFBZTtRQUFDO0tBQWlCO0lBQ2pDQyxLQUFLO1FBQUM7UUFBTztLQUFxQjtJQUNsQ0MsVUFBVTtRQUFDO0tBQVk7SUFDdkJDLFNBQVM7UUFBQztLQUFXO0lBQ3JCQyxjQUFjO1FBQUM7UUFBaUI7UUFBZTtLQUFRO0lBQ3ZEQyxZQUFZO1FBQUM7S0FBYTtJQUUxQiwwQkFBMEI7SUFFMUIsWUFBWTtJQUNaQyxVQUFVO1FBQ1I7UUFDQTtRQUNBO1FBQ0E7UUFDQTtLQUNEO0lBRUQsa0JBQWtCO0lBQ2xCQyxhQUFhO1FBQ1g7UUFDQTtRQUNBO1FBQ0E7UUFDQTtLQUNEO0lBRUQsWUFBWTtJQUNaQyxVQUFVO1FBQ1I7UUFDQTtRQUNBO1FBQ0E7S0FDRDtJQUVELFNBQVM7SUFDVEMsT0FBTztRQUNMO0tBQ0Q7SUFFRCxrQkFBa0I7SUFDbEJDLE9BQU87UUFDTDtRQUNBO1FBQ0E7UUFDQTtLQUNEO0lBRUQseUJBQXlCO0lBQ3pCQyxlQUFlO1FBQ2I7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO0tBQ0Q7SUFFRCxzQkFBc0I7SUFDdEJDLE9BQU87UUFDTDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtLQUNEO0FBQ0gsRUFBRTtBQUVGLHVDQUF1QztBQUNoQyxNQUFNQyx3QkFBb0RDLE9BQU9DLE9BQU8sQ0FDN0U5Qix3QkFDQStCLE1BQU0sQ0FBQyxDQUFDQyxLQUFLLENBQUNDLFlBQVlDLE1BQU07SUFDaEMsS0FBSyxNQUFNQyxRQUFRRCxNQUFPO1FBQ3hCRixHQUFHLENBQUNHLEtBQUssR0FBR0Y7SUFDZDtJQUNBLE9BQU9EO0FBQ1QsR0FBRyxDQUFDLEdBQWlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9kYXRhL3BhcnRSb2xlTWFwcGluZ3MudHM/YzYyNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENhdGVnb3J5SWQgfSBmcm9tIFwiQC90eXBlcy9ndW5idWlsZGVyXCI7XG5cbi8vIENhdGVnb3J5SWQgLT4gcGFydFJvbGVzXG5leHBvcnQgY29uc3QgQ0FURUdPUllfVE9fUEFSVF9ST0xFUzogUmVjb3JkPENhdGVnb3J5SWQsIHN0cmluZ1tdPiA9IHtcbiAgLy8gQ09SRSAvIEVYSVNUSU5HXG4gIHVwcGVyOiBbXCJ1cHBlci1yZWNlaXZlclwiXSxcbiAgYmFycmVsOiBbXCJiYXJyZWxcIl0sXG4gIGhhbmRndWFyZDogW1wiaGFuZGd1YXJkXCJdLFxuICBjaGFyZ2luZ0hhbmRsZTogW1wiY2hhcmdpbmctaGFuZGxlXCJdLFxuICBidWZmZXI6IFtcImJ1ZmZlci1raXRcIl0sXG4gIGxvd2VyUGFydHM6IFtcImxvd2VyLXBhcnRzLWtpdFwiXSxcbiAgc2lnaHRzOiBbXCJzaWdodFwiXSxcbiAgbG93ZXI6IFtcImxvd2VyLXJlY2VpdmVyXCJdLFxuICBvcHRpYzogW1wib3B0aWNcIl0sXG4gIHN0b2NrOiBbXCJzdG9ja1wiXSxcblxuICAvLyBORVcgTE9XRVIgUEFSVFNcbiAgdHJpZ2dlcjogW1widHJpZ2dlclwiLCBcInRyaWdnZXIta2l0XCJdLFxuICBncmlwOiBbXCJwaXN0b2wtZ3JpcFwiLCBcImdyaXBcIl0sXG4gIHNhZmV0eTogW1wic2FmZXR5XCIsIFwic2FmZXR5LXNlbGVjdG9yXCJdLFxuICBjb21wbGV0ZUxvd2VyOiBbXCJjb21wbGV0ZS1sb3dlclwiXSxcblxuICAvLyBORVcgVVBQRVIgUEFSVFNcbiAgY29tcGxldGVVcHBlcjogW1wiY29tcGxldGUtdXBwZXJcIl0sXG4gIGJjZzogW1wiYmNnXCIsIFwiYm9sdC1jYXJyaWVyLWdyb3VwXCJdLFxuICBnYXNCbG9jazogW1wiZ2FzLWJsb2NrXCJdLFxuICBnYXNUdWJlOiBbXCJnYXMtdHViZVwiXSxcbiAgbXV6emxlRGV2aWNlOiBbXCJtdXp6bGUtZGV2aWNlXCIsIFwiY29tcGVuc2F0b3JcIiwgXCJicmFrZVwiXSxcbiAgc3VwcHJlc3NvcjogW1wic3VwcHJlc3NvclwiXSxcblxuICAvLyA9PT09PSBBQ0NFU1NPUklFUyA9PT09PVxuXG4gIC8vIE1hZ2F6aW5lc1xuICBtYWdhemluZTogW1xuICAgIFwibWFnYXppbmVcIixcbiAgICBcIm1hZ1wiLFxuICAgIFwibWFnYXppbmUtYXIxNVwiLFxuICAgIFwibWFnYXppbmUtMzA4XCIsXG4gICAgXCJkcnVtLW1hZ2F6aW5lXCIsXG4gIF0sXG5cbiAgLy8gTGlnaHRzIC8gTGFzZXJzXG4gIHdlYXBvbkxpZ2h0OiBbXG4gICAgXCJ3ZWFwb24tbGlnaHRcIixcbiAgICBcImxpZ2h0XCIsXG4gICAgXCJ3ZWFwb24tbGlnaHQtbGFzZXJcIixcbiAgICBcImxpZ2h0LWxhc2VyLWNvbWJvXCIsXG4gICAgXCJsYXNlclwiLFxuICBdLFxuXG4gIC8vIEZvcmVncmlwc1xuICBmb3JlZ3JpcDogW1xuICAgIFwidmVydGljYWwtZ3JpcFwiLFxuICAgIFwiYW5nbGVkLWZvcmVncmlwXCIsXG4gICAgXCJmb3JlZ3JpcFwiLFxuICAgIFwiaGFuZHN0b3BcIixcbiAgXSxcblxuICAvLyBCaXBvZHNcbiAgYmlwb2Q6IFtcbiAgICBcImJpcG9kXCIsXG4gIF0sXG5cbiAgLy8gU2xpbmdzICYgbW91bnRzXG4gIHNsaW5nOiBbXG4gICAgXCJzbGluZ1wiLFxuICAgIFwic2xpbmctbW91bnRcIixcbiAgICBcInNsaW5nLXN3aXZlbFwiLFxuICAgIFwicWQtc2xpbmctbW91bnRcIixcbiAgXSxcblxuICAvLyBSYWlsIHNlY3Rpb25zICYgY292ZXJzXG4gIHJhaWxBY2Nlc3Nvcnk6IFtcbiAgICBcInJhaWwtc2VjdGlvblwiLFxuICAgIFwicGljYXRpbm55LXJhaWwtc2VjdGlvblwiLFxuICAgIFwibS1sb2stcmFpbC1zZWN0aW9uXCIsXG4gICAgXCJrZXltb2QtcmFpbC1zZWN0aW9uXCIsXG4gICAgXCJyYWlsLWNvdmVyXCIsXG4gICAgXCJyYWlsLXBhbmVsXCIsXG4gIF0sXG5cbiAgLy8gVG9vbHMgJiBtYWludGVuYW5jZVxuICB0b29sczogW1xuICAgIFwidG9vbFwiLFxuICAgIFwiYXJtb3Jlci10b29sXCIsXG4gICAgXCJhcm1vcmVyLXdyZW5jaFwiLFxuICAgIFwiY2xlYW5pbmcta2l0XCIsXG4gICAgXCJib3JlLXNuYWtlXCIsXG4gICAgXCJ2aXNlLWJsb2NrXCIsXG4gICAgXCJ0b3JxdWUtd3JlbmNoXCIsXG4gIF0sXG59O1xuXG4vLyBJbnZlcnQgdG8gZ2V0IHBhcnRSb2xlIC0+IENhdGVnb3J5SWRcbmV4cG9ydCBjb25zdCBQQVJUX1JPTEVfVE9fQ0FURUdPUlk6IFJlY29yZDxzdHJpbmcsIENhdGVnb3J5SWQ+ID0gT2JqZWN0LmVudHJpZXMoXG4gIENBVEVHT1JZX1RPX1BBUlRfUk9MRVMsXG4pLnJlZHVjZSgoYWNjLCBbY2F0ZWdvcnlJZCwgcm9sZXNdKSA9PiB7XG4gIGZvciAoY29uc3Qgcm9sZSBvZiByb2xlcykge1xuICAgIGFjY1tyb2xlXSA9IGNhdGVnb3J5SWQgYXMgQ2F0ZWdvcnlJZDtcbiAgfVxuICByZXR1cm4gYWNjO1xufSwge30gYXMgUmVjb3JkPHN0cmluZywgQ2F0ZWdvcnlJZD4pOyJdLCJuYW1lcyI6WyJDQVRFR09SWV9UT19QQVJUX1JPTEVTIiwidXBwZXIiLCJiYXJyZWwiLCJoYW5kZ3VhcmQiLCJjaGFyZ2luZ0hhbmRsZSIsImJ1ZmZlciIsImxvd2VyUGFydHMiLCJzaWdodHMiLCJsb3dlciIsIm9wdGljIiwic3RvY2siLCJ0cmlnZ2VyIiwiZ3JpcCIsInNhZmV0eSIsImNvbXBsZXRlTG93ZXIiLCJjb21wbGV0ZVVwcGVyIiwiYmNnIiwiZ2FzQmxvY2siLCJnYXNUdWJlIiwibXV6emxlRGV2aWNlIiwic3VwcHJlc3NvciIsIm1hZ2F6aW5lIiwid2VhcG9uTGlnaHQiLCJmb3JlZ3JpcCIsImJpcG9kIiwic2xpbmciLCJyYWlsQWNjZXNzb3J5IiwidG9vbHMiLCJQQVJUX1JPTEVfVE9fQ0FURUdPUlkiLCJPYmplY3QiLCJlbnRyaWVzIiwicmVkdWNlIiwiYWNjIiwiY2F0ZWdvcnlJZCIsInJvbGVzIiwicm9sZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./data/partRoleMappings.ts\n");
-
-/***/ }),
-
-/***/ "(rsc)/./app/globals.css":
-/*!*************************!*\
- !*** ./app/globals.css ***!
- \*************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"8e3b978f6080\");\nif (false) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvZ2xvYmFscy5jc3MiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlFQUFlLGNBQWM7QUFDN0IsSUFBSSxLQUFVLEVBQUUsRUFBdUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL2FwcC9nbG9iYWxzLmNzcz9jZDI4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IFwiOGUzYjk3OGY2MDgwXCJcbmlmIChtb2R1bGUuaG90KSB7IG1vZHVsZS5ob3QuYWNjZXB0KCkgfVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/globals.css\n");
-
-/***/ }),
-
-/***/ "(rsc)/./app/gunbuilder/page.tsx":
-/*!*********************************!*\
- !*** ./app/gunbuilder/page.tsx ***!
- \*********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ $$typeof: () => (/* binding */ $$typeof),
-/* harmony export */ __esModule: () => (/* binding */ __esModule),
-/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
-/* harmony export */ });
-/* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js");
-
-const proxy = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx`)
-
-// Accessing the __esModule property and exporting $$typeof are required here.
-// The __esModule getter forces the proxy target to create the default export
-// and the $$typeof value is for rendering logic to determine if the module
-// is a client boundary.
-const { __esModule, $$typeof } = proxy;
-const __default__ = proxy.default;
-
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx#default`));
-
-
-/***/ }),
-
-/***/ "(rsc)/./app/layout.tsx":
-/*!************************!*\
- !*** ./app/layout.tsx ***!
- \************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ RootLayout),\n/* harmony export */ metadata: () => (/* binding */ metadata)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(rsc)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.css */ \"(rsc)/./app/globals.css\");\n/* harmony import */ var _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/context/AuthContext */ \"(rsc)/./context/AuthContext.tsx\");\n/* harmony import */ var _components_TopNav__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/TopNav */ \"(rsc)/./components/TopNav.tsx\");\n/* harmony import */ var _components_BuilderNav__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/BuilderNav */ \"(rsc)/./components/BuilderNav.tsx\");\n\n\n\n\n\nconst metadata = {\n title: {\n default: \"Battl Builder\",\n template: \"%s | Battl Builder\"\n },\n description: \"Battl Builder — the smarter, faster, data‑driven way to build your next firearm.\"\n};\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"en\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: \"bg-black text-zinc-100\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.AuthProvider, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_TopNav__WEBPACK_IMPORTED_MODULE_3__.TopNav, {}, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 21,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_BuilderNav__WEBPACK_IMPORTED_MODULE_4__.BuilderNav, {}, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 22,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen\",\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 23,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 20,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 19,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 18,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvbGF5b3V0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDdUI7QUFFOEI7QUFDUjtBQUNRO0FBRTlDLE1BQU1HLFdBQVc7SUFDdEJDLE9BQU87UUFDTEMsU0FBUztRQUNUQyxVQUFVO0lBQ1o7SUFDQUMsYUFBYTtBQUNmLEVBQUU7QUFFYSxTQUFTQyxXQUFXLEVBQUVDLFFBQVEsRUFBMkI7SUFDdEUscUJBQ0UsOERBQUNDO1FBQUtDLE1BQUs7a0JBQ1QsNEVBQUNDO1lBQUtDLFdBQVU7c0JBQ2QsNEVBQUNiLDhEQUFZQTs7a0NBQ1gsOERBQUNDLHNEQUFNQTs7Ozs7a0NBQ1AsOERBQUNDLDhEQUFVQTs7Ozs7a0NBQ1gsOERBQUNZO3dCQUFLRCxXQUFVO2tDQUFnQko7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLMUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL2FwcC9sYXlvdXQudHN4Pzk5ODgiXSwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgXCIuL2dsb2JhbHMuY3NzXCI7XG5pbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQXV0aFByb3ZpZGVyIH0gZnJvbSBcIkAvY29udGV4dC9BdXRoQ29udGV4dFwiO1xuaW1wb3J0IHsgVG9wTmF2IH0gZnJvbSBcIkAvY29tcG9uZW50cy9Ub3BOYXZcIjtcbmltcG9ydCB7IEJ1aWxkZXJOYXYgfSBmcm9tIFwiQC9jb21wb25lbnRzL0J1aWxkZXJOYXZcIjtcblxuZXhwb3J0IGNvbnN0IG1ldGFkYXRhID0ge1xuICB0aXRsZToge1xuICAgIGRlZmF1bHQ6IFwiQmF0dGwgQnVpbGRlclwiLFxuICAgIHRlbXBsYXRlOiBcIiVzIHwgQmF0dGwgQnVpbGRlclwiLFxuICB9LFxuICBkZXNjcmlwdGlvbjogXCJCYXR0bCBCdWlsZGVyIOKAlCB0aGUgc21hcnRlciwgZmFzdGVyLCBkYXRh4oCRZHJpdmVuIHdheSB0byBidWlsZCB5b3VyIG5leHQgZmlyZWFybS5cIixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJvb3RMYXlvdXQoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfSkge1xuICByZXR1cm4gKFxuICAgIDxodG1sIGxhbmc9XCJlblwiPlxuICAgICAgPGJvZHkgY2xhc3NOYW1lPVwiYmctYmxhY2sgdGV4dC16aW5jLTEwMFwiPlxuICAgICAgICA8QXV0aFByb3ZpZGVyPlxuICAgICAgICAgIDxUb3BOYXYgLz5cbiAgICAgICAgICA8QnVpbGRlck5hdiAvPlxuICAgICAgICAgIDxtYWluIGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlblwiPntjaGlsZHJlbn08L21haW4+XG4gICAgICAgIDwvQXV0aFByb3ZpZGVyPlxuICAgICAgPC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKTtcbn0iXSwibmFtZXMiOlsiQXV0aFByb3ZpZGVyIiwiVG9wTmF2IiwiQnVpbGRlck5hdiIsIm1ldGFkYXRhIiwidGl0bGUiLCJkZWZhdWx0IiwidGVtcGxhdGUiLCJkZXNjcmlwdGlvbiIsIlJvb3RMYXlvdXQiLCJjaGlsZHJlbiIsImh0bWwiLCJsYW5nIiwiYm9keSIsImNsYXNzTmFtZSIsIm1haW4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/layout.tsx\n");
-
-/***/ }),
-
-/***/ "(rsc)/./components/BuilderNav.tsx":
-/*!***********************************!*\
- !*** ./components/BuilderNav.tsx ***!
- \***********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ $$typeof: () => (/* binding */ $$typeof),
-/* harmony export */ BuilderNav: () => (/* binding */ e0),
-/* harmony export */ __esModule: () => (/* binding */ __esModule),
-/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
-/* harmony export */ });
-/* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js");
-
-const proxy = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx`)
-
-// Accessing the __esModule property and exporting $$typeof are required here.
-// The __esModule getter forces the proxy target to create the default export
-// and the $$typeof value is for rendering logic to determine if the module
-// is a client boundary.
-const { __esModule, $$typeof } = proxy;
-const __default__ = proxy.default;
-
-const e0 = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx#BuilderNav`);
-
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx#default`));
-
-
-/***/ }),
-
-/***/ "(rsc)/./components/TopNav.tsx":
-/*!*******************************!*\
- !*** ./components/TopNav.tsx ***!
- \*******************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TopNav: () => (/* binding */ e0)\n/* harmony export */ });\n/* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ \"(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js\");\n\nconst proxy = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx`)\n\n// Accessing the __esModule property and exporting $$typeof are required here.\n// The __esModule getter forces the proxy target to create the default export\n// and the $$typeof value is for rendering logic to determine if the module\n// is a client boundary.\nconst { __esModule, $$typeof } = proxy;\nconst __default__ = proxy.default;\n\nconst e0 = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx#TopNav`);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9jb21wb25lbnRzL1RvcE5hdi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBd0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL2NvbXBvbmVudHMvVG9wTmF2LnRzeD9kZjU2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGNvbXBvbmVudHMvVG9wTmF2LnRzeFxuXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCBMaW5rIGZyb20gXCJuZXh0L2xpbmtcIjtcbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tIFwiQC9jb250ZXh0L0F1dGhDb250ZXh0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBUb3BOYXYoKSB7XG4gIGNvbnN0IHsgdXNlciwgbG9nb3V0LCBsb2FkaW5nIH0gPSB1c2VBdXRoKCk7XG5cbiAgY29uc3QgaXNBdXRoZW50aWNhdGVkID0gISF1c2VyO1xuXG4gIHJldHVybiAoXG4gICAgPGhlYWRlciBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItemluYy04MDAgYmctYmxhY2svOTUgYmFja2Ryb3AtYmx1clwiPlxuICAgICAgey8qIEVhcmx5IGFjY2VzcyBiYXIgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlci1iIGJvcmRlci1hbWJlci01MDAvMjAgYmctYW1iZXItNTAwLzVcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIGZsZXggbWF4LXctNnhsIGZsZXgtY29sIGdhcC0xIHB4LTQgcHktMiB0ZXh0LVswLjc1cmVtXSB0ZXh0LWFtYmVyLTEwMCBtZDpmbGV4LXJvdyBtZDppdGVtcy1jZW50ZXIgbWQ6anVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicm91bmRlZC1zbSBiZy1hbWJlci01MDAvMjAgcHgtMiBweS0wLjUgdGV4dC1bMC42NXJlbV0gZm9udC1zZW1pYm9sZCB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMThlbV0gdGV4dC1hbWJlci0zMDBcIj5cbiAgICAgICAgICAgICAgRWFybHkgQWNjZXNzIEJldGFcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImhpZGRlbiB0ZXh0LWFtYmVyLTEwMC85MCBtZDppbmxpbmVcIj5cbiAgICAgICAgICAgICAgWW91JmFwb3M7cmUgdXNpbmcgYW4gZWFybHktYWNjZXNzIHByb3RvdHlwZSBvZiBUaGUgQXJtb3J5LiBEYXRhLFxuICAgICAgICAgICAgICBwcmljaW5nLCBhbmQgYXZhaWxhYmxlIHBhcnRzIGFyZSBzdGlsbCBldm9sdmluZy5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWFtYmVyLTEwMC85MCBtZDpoaWRkZW5cIj5cbiAgICAgICAgICAgIEVhcmx5LWFjY2VzcyBwcm90b3R5cGUuIERhdGEgYW5kIHByaWNpbmcgbWF5IGNoYW5nZS5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBNYWluIG5hdiByb3cgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gZmxleCBtYXgtdy02eGwgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC00IHB5LTJcIj5cbiAgICAgICAgey8qIExlZnQ6IEJyYW5kIC8gSG9tZSAqL31cbiAgICAgICAgPExpbmtcbiAgICAgICAgICBocmVmPVwiL1wiXG4gICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjJlbV0gdXBwZXJjYXNlIHRleHQtemluYy00MDBcIlxuICAgICAgICA+XG4gICAgICAgICAgQmF0dGwgQnVpbGRlclxuICAgICAgICA8L0xpbms+XG5cbiAgICAgICAgey8qIENlbnRlcjogbWFpbiBuYXYgKEJ1aWxkZXIgLyBBZG1pbikgKi99XG4gICAgICAgIDxuYXYgY2xhc3NOYW1lPVwiaGlkZGVuIGl0ZW1zLWNlbnRlciBnYXAtNCBtZDpmbGV4XCI+XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGhyZWY9XCIvZ3VuYnVpbGRlclwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtemluYy0zMDAgaG92ZXI6dGV4dC16aW5jLTUwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBCdWlsZGVyXG4gICAgICAgICAgPC9MaW5rPlxuXG4gICAgICAgICAge2lzQXV0aGVudGljYXRlZCAmJiAoXG4gICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICBocmVmPVwiL2FkbWluXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LWVtZXJhbGQtNDAwIGhvdmVyOnRleHQtZW1lcmFsZC0zMDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBBZG1pblxuICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvbmF2PlxuXG4gICAgICAgIHsvKiBSaWdodCBzaWRlIGFjdGlvbnMgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgICB7LyogU2VhcmNoIHBsYWNlaG9sZGVyICovfVxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaC04IHctOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy05MDAvNjAgdGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMjAwIGhvdmVyOmJnLXppbmMtODAwIGhvdmVyOmJvcmRlci16aW5jLTUwMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VhcmNoIChjb21pbmcgc29vbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXsyfVxuICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC00IHctNFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMVwiIGN5PVwiMTFcIiByPVwiNlwiIC8+XG4gICAgICAgICAgICAgIDxsaW5lIHgxPVwiMTYuNVwiIHkxPVwiMTYuNVwiIHgyPVwiMjFcIiB5Mj1cIjIxXCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAge2xvYWRpbmcgPyAoXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy01MDBcIj5DaGVja2luZyBzZXNzaW9u4oCmPC9zcGFuPlxuICAgICAgICAgICkgOiBpc0F1dGhlbnRpY2F0ZWQgPyAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJoaWRkZW4gdGV4dC14cyB0ZXh0LXppbmMtMzAwIHNtOmlubGluZVwiPlxuICAgICAgICAgICAgICAgIHt1c2VyLmRpc3BsYXlOYW1lIHx8IHVzZXIuZW1haWx9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2xvZ291dH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtemluYy00MDAgaG92ZXI6dGV4dC16aW5jLTEwMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBMb2cgT3V0XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj1cIi9sb2dpblwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0xMDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgTG9nIEluXG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICBocmVmPVwiL3JlZ2lzdGVyXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYW1iZXItNDAwLzcwIGJnLWFtYmVyLTQwMC8xMCBweC0zIHB5LTEuNSB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0yMDAgaG92ZXI6YmctYW1iZXItNDAwLzIwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEpvaW4gQmV0YVxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaGVhZGVyPlxuICApO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./components/TopNav.tsx\n");
-
-/***/ }),
-
-/***/ "(rsc)/./context/AuthContext.tsx":
-/*!*********************************!*\
- !*** ./context/AuthContext.tsx ***!
- \*********************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ AuthProvider: () => (/* binding */ e0),
-/* harmony export */ useAuth: () => (/* binding */ e1)
-/* harmony export */ });
-/* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js");
-
-const proxy = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/context/AuthContext.tsx`)
-
-// Accessing the __esModule property and exporting $$typeof are required here.
-// The __esModule getter forces the proxy target to create the default export
-// and the $$typeof value is for rendering logic to determine if the module
-// is a client boundary.
-const { __esModule, $$typeof } = proxy;
-const __default__ = proxy.default;
-
-const e0 = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/context/AuthContext.tsx#AuthProvider`);
-
-const e1 = (0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/sean/Dev/gunbuilder-prototype/context/AuthContext.tsx#useAuth`);
-
-
-/***/ })
-
-};
-;
-
-// load runtime
-var __webpack_require__ = require("../../webpack-runtime.js");
-__webpack_require__.C(exports);
-var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
-var __webpack_exports__ = __webpack_require__.X(0, ["vendor-chunks/next","vendor-chunks/@swc","vendor-chunks/lucide-react"], () => (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!")));
-module.exports = __webpack_exports__;
-
-})();
\ No newline at end of file
diff --git a/.next/server/app/gunbuilder/page_client-reference-manifest.js b/.next/server/app/gunbuilder/page_client-reference-manifest.js
deleted file mode 100644
index f61730e..0000000
--- a/.next/server/app/gunbuilder/page_client-reference-manifest.js
+++ /dev/null
@@ -1 +0,0 @@
-globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/gunbuilder/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./app/globals.css":{"*":{"id":"(ssr)/./app/globals.css","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./components/BuilderNav.tsx":{"*":{"id":"(ssr)/./components/BuilderNav.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./components/TopNav.tsx":{"*":{"id":"(ssr)/./components/TopNav.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./context/AuthContext.tsx":{"*":{"id":"(ssr)/./context/AuthContext.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/admin/page.tsx":{"*":{"id":"(ssr)/./app/admin/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/admin/part-role-mappings/page.tsx":{"*":{"id":"(ssr)/./app/admin/part-role-mappings/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/admin/categories/page.tsx":{"*":{"id":"(ssr)/./app/admin/categories/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/admin/merchant-category-mappings/page.tsx":{"*":{"id":"(ssr)/./app/admin/merchant-category-mappings/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/admin/merchants/page.tsx":{"*":{"id":"(ssr)/./app/admin/merchants/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/link.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/link.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/build/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/build/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/sean/Dev/gunbuilder-prototype/app/globals.css":{"id":"(app-pages-browser)/./app/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx":{"id":"(app-pages-browser)/./components/BuilderNav.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx":{"id":"(app-pages-browser)/./components/TopNav.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/context/AuthContext.tsx":{"id":"(app-pages-browser)/./context/AuthContext.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/admin/page.tsx":{"id":"(app-pages-browser)/./app/admin/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/page.tsx","name":"*","chunks":["app/gunbuilder/page","static/chunks/app/gunbuilder/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/admin/part-role-mappings/page.tsx":{"id":"(app-pages-browser)/./app/admin/part-role-mappings/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/admin/categories/page.tsx":{"id":"(app-pages-browser)/./app/admin/categories/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/admin/merchant-category-mappings/page.tsx":{"id":"(app-pages-browser)/./app/admin/merchant-category-mappings/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/admin/merchants/page.tsx":{"id":"(app-pages-browser)/./app/admin/merchants/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/link.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/link.js","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/build/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/build/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/sean/Dev/gunbuilder-prototype/":[],"/Users/sean/Dev/gunbuilder-prototype/app/layout":["static/css/app/layout.css"],"/Users/sean/Dev/gunbuilder-prototype/app/page":[],"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page":[]}}
\ No newline at end of file
diff --git a/.next/server/interception-route-rewrite-manifest.js b/.next/server/interception-route-rewrite-manifest.js
deleted file mode 100644
index 82d3ab1..0000000
--- a/.next/server/interception-route-rewrite-manifest.js
+++ /dev/null
@@ -1 +0,0 @@
-self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST="[]"
\ No newline at end of file
diff --git a/.next/server/middleware-build-manifest.js b/.next/server/middleware-build-manifest.js
deleted file mode 100644
index c0e86ad..0000000
--- a/.next/server/middleware-build-manifest.js
+++ /dev/null
@@ -1 +0,0 @@
-self.__BUILD_MANIFEST={"polyfillFiles":["static/chunks/polyfills.js"],"devFiles":["static/chunks/react-refresh.js"],"ampDevFiles":[],"lowPriorityFiles":["static/development/_buildManifest.js","static/development/_ssgManifest.js"],"rootMainFiles":["static/chunks/webpack.js","static/chunks/main-app.js"],"pages":{"/_app":["static/chunks/webpack.js","static/chunks/main.js","static/chunks/pages/_app.js"],"/_error":["static/chunks/webpack.js","static/chunks/main.js","static/chunks/pages/_error.js"]},"ampFirstPages":[]}
\ No newline at end of file
diff --git a/.next/server/middleware-manifest.json b/.next/server/middleware-manifest.json
deleted file mode 100644
index 33872a3..0000000
--- a/.next/server/middleware-manifest.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "version": 3,
- "middleware": {},
- "functions": {},
- "sortedMiddleware": []
-}
\ No newline at end of file
diff --git a/.next/server/middleware-react-loadable-manifest.js b/.next/server/middleware-react-loadable-manifest.js
deleted file mode 100644
index ca34f09..0000000
--- a/.next/server/middleware-react-loadable-manifest.js
+++ /dev/null
@@ -1 +0,0 @@
-self.__REACT_LOADABLE_MANIFEST="{}"
\ No newline at end of file
diff --git a/.next/server/next-font-manifest.js b/.next/server/next-font-manifest.js
deleted file mode 100644
index 5cc97eb..0000000
--- a/.next/server/next-font-manifest.js
+++ /dev/null
@@ -1 +0,0 @@
-self.__NEXT_FONT_MANIFEST="{\"pages\":{},\"app\":{},\"appUsingSizeAdjust\":false,\"pagesUsingSizeAdjust\":false}"
\ No newline at end of file
diff --git a/.next/server/next-font-manifest.json b/.next/server/next-font-manifest.json
deleted file mode 100644
index 25f78e7..0000000
--- a/.next/server/next-font-manifest.json
+++ /dev/null
@@ -1 +0,0 @@
-{"pages":{},"app":{},"appUsingSizeAdjust":false,"pagesUsingSizeAdjust":false}
\ No newline at end of file
diff --git a/.next/server/pages-manifest.json b/.next/server/pages-manifest.json
deleted file mode 100644
index a679766..0000000
--- a/.next/server/pages-manifest.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "/_app": "pages/_app.js",
- "/_error": "pages/_error.js",
- "/_document": "pages/_document.js"
-}
\ No newline at end of file
diff --git a/.next/server/server-reference-manifest.js b/.next/server/server-reference-manifest.js
deleted file mode 100644
index 03e23cf..0000000
--- a/.next/server/server-reference-manifest.js
+++ /dev/null
@@ -1 +0,0 @@
-self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"8FrZQAkdSCaOE1KMpFoj5rwrLq2kj7eoZ32XbwDLK30=\"\n}"
\ No newline at end of file
diff --git a/.next/server/server-reference-manifest.json b/.next/server/server-reference-manifest.json
deleted file mode 100644
index 21e4517..0000000
--- a/.next/server/server-reference-manifest.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "node": {},
- "edge": {},
- "encryptionKey": "8FrZQAkdSCaOE1KMpFoj5rwrLq2kj7eoZ32XbwDLK30="
-}
\ No newline at end of file
diff --git a/.next/server/vendor-chunks/@swc.js b/.next/server/vendor-chunks/@swc.js
deleted file mode 100644
index effe736..0000000
--- a/.next/server/vendor-chunks/@swc.js
+++ /dev/null
@@ -1,95 +0,0 @@
-"use strict";
-/*
- * ATTENTION: An "eval-source-map" devtool has been used.
- * This devtool is neither made for production nor for readable output files.
- * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
- * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
- * or disable the default devtool with "devtool: false".
- * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
- */
-exports.id = "vendor-chunks/@swc";
-exports.ids = ["vendor-chunks/@swc"];
-exports.modules = {
-
-/***/ "./node_modules/@swc/helpers/cjs/_interop_require_default.cjs":
-/*!********************************************************************!*\
- !*** ./node_modules/@swc/helpers/cjs/_interop_require_default.cjs ***!
- \********************************************************************/
-/***/ ((__unused_webpack_module, exports) => {
-
-eval("\n\nexports._ = exports._interop_require_default = _interop_require_default;\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2Nqcy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuY2pzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLFNBQVMsR0FBRyxnQ0FBZ0M7QUFDNUM7QUFDQSwyQ0FBMkM7QUFDM0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvY2pzL19pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5janM/MGQyMyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fID0gZXhwb3J0cy5faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQgPSBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQ7XG5mdW5jdGlvbiBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@swc/helpers/cjs/_interop_require_default.cjs\n");
-
-/***/ }),
-
-/***/ "./node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs":
-/*!*********************************************************************!*\
- !*** ./node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs ***!
- \*********************************************************************/
-/***/ ((__unused_webpack_module, exports) => {
-
-eval("\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nexports._ = exports._interop_require_wildcard = _interop_require_wildcard;\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) return obj;\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") return { default: obj };\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) return cache.get(obj);\n\n var newObj = { __proto__: null };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);\n else newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n\n if (cache) cache.set(obj, newObj);\n\n return newObj;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2Nqcy9faW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkLmNqcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLFNBQVMsR0FBRyxpQ0FBaUM7QUFDN0M7QUFDQTtBQUNBLHVGQUF1Rjs7QUFFdkY7O0FBRUE7O0FBRUEsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvY2pzL19pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQuY2pzP2Q1MWMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkge1xuICAgIGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDtcblxuICAgIHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpO1xuXG4gICAgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbihub2RlSW50ZXJvcCkge1xuICAgICAgICByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7XG4gICAgfSkobm9kZUludGVyb3ApO1xufVxuZXhwb3J0cy5fID0gZXhwb3J0cy5faW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkID0gX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZDtcbmZ1bmN0aW9uIF9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkge1xuICAgIGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSByZXR1cm4gb2JqO1xuICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiB7IGRlZmF1bHQ6IG9iaiB9O1xuXG4gICAgdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTtcblxuICAgIGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgcmV0dXJuIGNhY2hlLmdldChvYmopO1xuXG4gICAgdmFyIG5ld09iaiA9IHsgX19wcm90b19fOiBudWxsIH07XG4gICAgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgICBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDtcbiAgICAgICAgICAgIGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICBlbHNlIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZXdPYmouZGVmYXVsdCA9IG9iajtcblxuICAgIGlmIChjYWNoZSkgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTtcblxuICAgIHJldHVybiBuZXdPYmo7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs\n");
-
-/***/ }),
-
-/***/ "(ssr)/./node_modules/@swc/helpers/esm/_class_private_field_loose_base.js":
-/*!**************************************************************************!*\
- !*** ./node_modules/@swc/helpers/esm/_class_private_field_loose_base.js ***!
- \**************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _class_private_field_loose_base),\n/* harmony export */ _class_private_field_loose_base: () => (/* binding */ _class_private_field_loose_base)\n/* harmony export */ });\nfunction _class_private_field_loose_base(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError(\"attempted to use private field on non-instance\");\n }\n\n return receiver;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9fY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9iYXNlLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNnRCIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLy4vbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9lc20vX2NsYXNzX3ByaXZhdGVfZmllbGRfbG9vc2VfYmFzZS5qcz81MTYwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBfY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9iYXNlKHJlY2VpdmVyLCBwcml2YXRlS2V5KSB7XG4gICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocmVjZWl2ZXIsIHByaXZhdGVLZXkpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gdXNlIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO1xuICAgIH1cblxuICAgIHJldHVybiByZWNlaXZlcjtcbn1cbmV4cG9ydCB7IF9jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2Jhc2UgYXMgXyB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@swc/helpers/esm/_class_private_field_loose_base.js\n");
-
-/***/ }),
-
-/***/ "(ssr)/./node_modules/@swc/helpers/esm/_class_private_field_loose_key.js":
-/*!*************************************************************************!*\
- !*** ./node_modules/@swc/helpers/esm/_class_private_field_loose_key.js ***!
- \*************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _class_private_field_loose_key),\n/* harmony export */ _class_private_field_loose_key: () => (/* binding */ _class_private_field_loose_key)\n/* harmony export */ });\nvar id = 0;\n\nfunction _class_private_field_loose_key(name) {\n return \"__private_\" + id++ + \"_\" + name;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9fY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXkuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7QUFFTztBQUNQO0FBQ0E7QUFDK0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2tleS5qcz81ODI1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBpZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBfY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXkobmFtZSkge1xuICAgIHJldHVybiBcIl9fcHJpdmF0ZV9cIiArIGlkKysgKyBcIl9cIiArIG5hbWU7XG59XG5leHBvcnQgeyBfY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXkgYXMgXyB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@swc/helpers/esm/_class_private_field_loose_key.js\n");
-
-/***/ }),
-
-/***/ "(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js":
-/*!*******************************************************************!*\
- !*** ./node_modules/@swc/helpers/esm/_interop_require_default.js ***!
- \*******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _interop_require_default),\n/* harmony export */ _interop_require_default: () => (/* binding */ _interop_require_default)\n/* harmony export */ });\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTztBQUNQLDJDQUEyQztBQUMzQztBQUN5QyIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLy4vbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9lc20vX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0LmpzP2FiZTYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTtcbn1cbmV4cG9ydCB7IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCBhcyBfIH07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\n");
-
-/***/ }),
-
-/***/ "(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js":
-/*!********************************************************************!*\
- !*** ./node_modules/@swc/helpers/esm/_interop_require_wildcard.js ***!
- \********************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _interop_require_wildcard),\n/* harmony export */ _interop_require_wildcard: () => (/* binding */ _interop_require_wildcard)\n/* harmony export */ });\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) return obj;\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") return { default: obj };\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) return cache.get(obj);\n\n var newObj = { __proto__: null };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);\n else newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n\n if (cache) cache.set(obj, newObj);\n\n return newObj;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9faW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDTztBQUNQO0FBQ0EsdUZBQXVGOztBQUV2Rjs7QUFFQTs7QUFFQSxtQkFBbUI7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUMwQyIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLy4vbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9lc20vX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZC5qcz8wMWE1Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkge1xuICAgIGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDtcblxuICAgIHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgdmFyIGNhY2hlTm9kZUludGVyb3AgPSBuZXcgV2Vha01hcCgpO1xuXG4gICAgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbihub2RlSW50ZXJvcCkge1xuICAgICAgICByZXR1cm4gbm9kZUludGVyb3AgPyBjYWNoZU5vZGVJbnRlcm9wIDogY2FjaGVCYWJlbEludGVyb3A7XG4gICAgfSkobm9kZUludGVyb3ApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkge1xuICAgIGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSByZXR1cm4gb2JqO1xuICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiB7IGRlZmF1bHQ6IG9iaiB9O1xuXG4gICAgdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTtcblxuICAgIGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgcmV0dXJuIGNhY2hlLmdldChvYmopO1xuXG4gICAgdmFyIG5ld09iaiA9IHsgX19wcm90b19fOiBudWxsIH07XG4gICAgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgICBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDtcbiAgICAgICAgICAgIGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICBlbHNlIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZXdPYmouZGVmYXVsdCA9IG9iajtcblxuICAgIGlmIChjYWNoZSkgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTtcblxuICAgIHJldHVybiBuZXdPYmo7XG59XG5leHBvcnQgeyBfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkIGFzIF8gfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\n");
-
-/***/ }),
-
-/***/ "(ssr)/./node_modules/@swc/helpers/esm/_tagged_template_literal_loose.js":
-/*!*************************************************************************!*\
- !*** ./node_modules/@swc/helpers/esm/_tagged_template_literal_loose.js ***!
- \*************************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _tagged_template_literal_loose),\n/* harmony export */ _tagged_template_literal_loose: () => (/* binding */ _tagged_template_literal_loose)\n/* harmony export */ });\nfunction _tagged_template_literal_loose(strings, raw) {\n if (!raw) raw = strings.slice(0);\n\n strings.raw = raw;\n\n return strings;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9fdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfbG9vc2UuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTztBQUNQOztBQUVBOztBQUVBO0FBQ0E7QUFDK0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL190YWdnZWRfdGVtcGxhdGVfbGl0ZXJhbF9sb29zZS5qcz9jMTdiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBfdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfbG9vc2Uoc3RyaW5ncywgcmF3KSB7XG4gICAgaWYgKCFyYXcpIHJhdyA9IHN0cmluZ3Muc2xpY2UoMCk7XG5cbiAgICBzdHJpbmdzLnJhdyA9IHJhdztcblxuICAgIHJldHVybiBzdHJpbmdzO1xufVxuZXhwb3J0IHsgX3RhZ2dlZF90ZW1wbGF0ZV9saXRlcmFsX2xvb3NlIGFzIF8gfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@swc/helpers/esm/_tagged_template_literal_loose.js\n");
-
-/***/ }),
-
-/***/ "(rsc)/./node_modules/@swc/helpers/esm/_interop_require_default.js":
-/*!*******************************************************************!*\
- !*** ./node_modules/@swc/helpers/esm/_interop_require_default.js ***!
- \*******************************************************************/
-/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
-
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _interop_require_default),\n/* harmony export */ _interop_require_default: () => (/* binding */ _interop_require_default)\n/* harmony export */ });\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTztBQUNQLDJDQUEyQztBQUMzQztBQUN5QyIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLy4vbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9lc20vX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0LmpzPzM5NWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTtcbn1cbmV4cG9ydCB7IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCBhcyBfIH07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/@swc/helpers/esm/_interop_require_default.js\n");
-
-/***/ })
-
-};
-;
\ No newline at end of file
diff --git a/.next/server/vendor-chunks/next.js b/.next/server/vendor-chunks/next.js
deleted file mode 100644
index 6048873..0000000
--- a/.next/server/vendor-chunks/next.js
+++ /dev/null
@@ -1,2743 +0,0 @@
-/*
- * ATTENTION: An "eval-source-map" devtool has been used.
- * This devtool is neither made for production nor for readable output files.
- * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
- * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
- * or disable the default devtool with "devtool: false".
- * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
- */
-exports.id = "vendor-chunks/next";
-exports.ids = ["vendor-chunks/next"];
-exports.modules = {
-
-/***/ "./node_modules/next/dist/build/templates/helpers.js":
-/*!***********************************************************!*\
- !*** ./node_modules/next/dist/build/templates/helpers.js ***!
- \***********************************************************/
-/***/ ((__unused_webpack_module, exports) => {
-
-"use strict";
-eval("/**\n * Hoists a name from a module or promised module.\n *\n * @param module the module to hoist the name from\n * @param name the name to hoist\n * @returns the value on the module (or promised module)\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"hoist\", ({\n enumerable: true,\n get: function() {\n return hoist;\n }\n}));\nfunction hoist(module, name) {\n // If the name is available in the module, return it.\n if (name in module) {\n return module[name];\n }\n // If a property called `then` exists, assume it's a promise and\n // return a promise that resolves to the name.\n if (\"then\" in module && typeof module.then === \"function\") {\n return module.then((mod)=>hoist(mod, name));\n }\n // If we're trying to hoise the default export, and the module is a function,\n // return the module itself.\n if (typeof module === \"function\" && name === \"default\") {\n return module;\n }\n // Otherwise, return undefined.\n return undefined;\n}\n\n//# sourceMappingURL=helpers.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3RlbXBsYXRlcy9oZWxwZXJzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQWlCO0FBQ2pCLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLHlDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC90ZW1wbGF0ZXMvaGVscGVycy5qcz9iMjg3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSG9pc3RzIGEgbmFtZSBmcm9tIGEgbW9kdWxlIG9yIHByb21pc2VkIG1vZHVsZS5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlIHRoZSBtb2R1bGUgdG8gaG9pc3QgdGhlIG5hbWUgZnJvbVxuICogQHBhcmFtIG5hbWUgdGhlIG5hbWUgdG8gaG9pc3RcbiAqIEByZXR1cm5zIHRoZSB2YWx1ZSBvbiB0aGUgbW9kdWxlIChvciBwcm9taXNlZCBtb2R1bGUpXG4gKi8gXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJob2lzdFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaG9pc3Q7XG4gICAgfVxufSk7XG5mdW5jdGlvbiBob2lzdChtb2R1bGUsIG5hbWUpIHtcbiAgICAvLyBJZiB0aGUgbmFtZSBpcyBhdmFpbGFibGUgaW4gdGhlIG1vZHVsZSwgcmV0dXJuIGl0LlxuICAgIGlmIChuYW1lIGluIG1vZHVsZSkge1xuICAgICAgICByZXR1cm4gbW9kdWxlW25hbWVdO1xuICAgIH1cbiAgICAvLyBJZiBhIHByb3BlcnR5IGNhbGxlZCBgdGhlbmAgZXhpc3RzLCBhc3N1bWUgaXQncyBhIHByb21pc2UgYW5kXG4gICAgLy8gcmV0dXJuIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBuYW1lLlxuICAgIGlmIChcInRoZW5cIiBpbiBtb2R1bGUgJiYgdHlwZW9mIG1vZHVsZS50aGVuID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIG1vZHVsZS50aGVuKChtb2QpPT5ob2lzdChtb2QsIG5hbWUpKTtcbiAgICB9XG4gICAgLy8gSWYgd2UncmUgdHJ5aW5nIHRvIGhvaXNlIHRoZSBkZWZhdWx0IGV4cG9ydCwgYW5kIHRoZSBtb2R1bGUgaXMgYSBmdW5jdGlvbixcbiAgICAvLyByZXR1cm4gdGhlIG1vZHVsZSBpdHNlbGYuXG4gICAgaWYgKHR5cGVvZiBtb2R1bGUgPT09IFwiZnVuY3Rpb25cIiAmJiBuYW1lID09PSBcImRlZmF1bHRcIikge1xuICAgICAgICByZXR1cm4gbW9kdWxlO1xuICAgIH1cbiAgICAvLyBPdGhlcndpc2UsIHJldHVybiB1bmRlZmluZWQuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVscGVycy5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/build/templates/helpers.js\n");
-
-/***/ }),
-
-/***/ "./node_modules/next/dist/pages/_app.js":
-/*!**********************************************!*\
- !*** ./node_modules/next/dist/pages/_app.js ***!
- \**********************************************/
-/***/ ((module, exports, __webpack_require__) => {
-
-"use strict";
-eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return App;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/cjs/_interop_require_default.cjs\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"react/jsx-runtime\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"react\"));\nconst _utils = __webpack_require__(/*! ../shared/lib/utils */ \"./node_modules/next/dist/shared/lib/utils.js\");\n/**\n * `App` component is used for initialize of pages. It allows for overwriting and full control of the `page` initialization.\n * This allows for keeping state between navigation, custom error handling, injecting additional data.\n */ async function appGetInitialProps(param) {\n let { Component, ctx } = param;\n const pageProps = await (0, _utils.loadGetInitialProps)(Component, ctx);\n return {\n pageProps\n };\n}\nclass App extends _react.default.Component {\n render() {\n const { Component, pageProps } = this.props;\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(Component, {\n ...pageProps\n });\n }\n}\nApp.origGetInitialProps = appGetInitialProps;\nApp.getInitialProps = appGetInitialProps;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=_app.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3BhZ2VzL19hcHAuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztlQWlDcUJBOzs7Ozs0RUFqQ0g7bUNBV2tCO0FBVXBDOzs7Q0FHQyxHQUNELGVBQWVDLG1CQUFtQkMsS0FHckI7SUFIcUIsTUFDaENDLFNBQVMsRUFDVEMsR0FBRyxFQUNRLEdBSHFCRjtJQUloQyxNQUFNRyxZQUFZLE1BQU1DLENBQUFBLEdBQUFBLE9BQUFBLG1CQUFtQixFQUFDSCxXQUFXQztJQUN2RCxPQUFPO1FBQUVDO0lBQVU7QUFDckI7QUFFZSxNQUFNTCxZQUFzQ08sT0FBQUEsT0FBSyxDQUFDSixTQUFTO0lBT3hFSyxTQUFTO1FBQ1AsTUFBTSxFQUFFTCxTQUFTLEVBQUVFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQ0ksS0FBSztRQUUzQyxPQUFPLFdBQVAsR0FBTyxJQUFBQyxZQUFBQyxHQUFBLEVBQUNSLFdBQUFBO1lBQVcsR0FBR0UsU0FBUzs7SUFDakM7QUFDRjtBQVpxQkwsSUFJWlksbUJBQUFBLEdBQXNCWDtBQUpWRCxJQUtaYSxlQUFBQSxHQUFrQloiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uLi8uLi9zcmMvcGFnZXMvX2FwcC50c3g/N2M2YSJdLCJuYW1lcyI6WyJBcHAiLCJhcHBHZXRJbml0aWFsUHJvcHMiLCJwYXJhbSIsIkNvbXBvbmVudCIsImN0eCIsInBhZ2VQcm9wcyIsImxvYWRHZXRJbml0aWFsUHJvcHMiLCJSZWFjdCIsInJlbmRlciIsInByb3BzIiwiX2pzeHJ1bnRpbWUiLCJqc3giLCJvcmlnR2V0SW5pdGlhbFByb3BzIiwiZ2V0SW5pdGlhbFByb3BzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/pages/_app.js\n");
-
-/***/ }),
-
-/***/ "./node_modules/next/dist/pages/_document.js":
-/*!***************************************************!*\
- !*** ./node_modules/next/dist/pages/_document.js ***!
- \***************************************************/
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-
-"use strict";
-eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n Head: function() {\n return Head;\n },\n Html: function() {\n return Html;\n },\n Main: function() {\n return Main;\n },\n NextScript: function() {\n return NextScript;\n },\n /**\n * `Document` component handles the initial `document` markup and renders only on the server side.\n * Commonly used for implementing server side rendering for `css-in-js` libraries.\n */ default: function() {\n return Document;\n }\n});\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"react/jsx-runtime\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard(__webpack_require__(/*! react */ \"react\"));\nconst _constants = __webpack_require__(/*! ../shared/lib/constants */ \"./node_modules/next/dist/shared/lib/constants.js\");\nconst _getpagefiles = __webpack_require__(/*! ../server/get-page-files */ \"./node_modules/next/dist/server/get-page-files.js\");\nconst _htmlescape = __webpack_require__(/*! ../server/htmlescape */ \"./node_modules/next/dist/server/htmlescape.js\");\nconst _iserror = /*#__PURE__*/ _interop_require_default(__webpack_require__(/*! ../lib/is-error */ \"./node_modules/next/dist/lib/is-error.js\"));\nconst _htmlcontextsharedruntime = __webpack_require__(/*! ../shared/lib/html-context.shared-runtime */ \"./node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/html-context.js\");\nconst _encodeuripath = __webpack_require__(/*! ../shared/lib/encode-uri-path */ \"./node_modules/next/dist/shared/lib/encode-uri-path.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {\n __proto__: null\n };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\n/** Set of pages that have triggered a large data warning on production mode. */ const largePageDataWarnings = new Set();\nfunction getDocumentFiles(buildManifest, pathname, inAmpMode) {\n const sharedFiles = (0, _getpagefiles.getPageFiles)(buildManifest, \"/_app\");\n const pageFiles = true && inAmpMode ? [] : (0, _getpagefiles.getPageFiles)(buildManifest, pathname);\n return {\n sharedFiles,\n pageFiles,\n allFiles: [\n ...new Set([\n ...sharedFiles,\n ...pageFiles\n ])\n ]\n };\n}\nfunction getPolyfillScripts(context, props) {\n // polyfills.js has to be rendered as nomodule without async\n // It also has to be the first script to load\n const { assetPrefix, buildManifest, assetQueryString, disableOptimizedLoading, crossOrigin } = context;\n return buildManifest.polyfillFiles.filter((polyfill)=>polyfill.endsWith(\".js\") && !polyfill.endsWith(\".module.js\")).map((polyfill)=>/*#__PURE__*/ (0, _jsxruntime.jsx)(\"script\", {\n defer: !disableOptimizedLoading,\n nonce: props.nonce,\n crossOrigin: props.crossOrigin || crossOrigin,\n noModule: true,\n src: `${assetPrefix}/_next/${(0, _encodeuripath.encodeURIPath)(polyfill)}${assetQueryString}`\n }, polyfill));\n}\nfunction hasComponentProps(child) {\n return !!child && !!child.props;\n}\nfunction AmpStyles({ styles }) {\n if (!styles) return null;\n // try to parse styles from fragment for backwards compat\n const curStyles = Array.isArray(styles) ? styles : [];\n if (styles.props && // @ts-ignore Property 'props' does not exist on type ReactElement\n Array.isArray(styles.props.children)) {\n const hasStyles = (el)=>{\n var _el_props_dangerouslySetInnerHTML, _el_props;\n return el == null ? void 0 : (_el_props = el.props) == null ? void 0 : (_el_props_dangerouslySetInnerHTML = _el_props.dangerouslySetInnerHTML) == null ? void 0 : _el_props_dangerouslySetInnerHTML.__html;\n };\n // @ts-ignore Property 'props' does not exist on type ReactElement\n styles.props.children.forEach((child)=>{\n if (Array.isArray(child)) {\n child.forEach((el)=>hasStyles(el) && curStyles.push(el));\n } else if (hasStyles(child)) {\n curStyles.push(child);\n }\n });\n }\n /* Add custom styles before AMP styles to prevent accidental overrides */ return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"style\", {\n \"amp-custom\": \"\",\n dangerouslySetInnerHTML: {\n __html: curStyles.map((style)=>style.props.dangerouslySetInnerHTML.__html).join(\"\").replace(/\\/\\*# sourceMappingURL=.*\\*\\//g, \"\").replace(/\\/\\*@ sourceURL=.*?\\*\\//g, \"\")\n }\n });\n}\nfunction getDynamicChunks(context, props, files) {\n const { dynamicImports, assetPrefix, isDevelopment, assetQueryString, disableOptimizedLoading, crossOrigin } = context;\n return dynamicImports.map((file)=>{\n if (!file.endsWith(\".js\") || files.allFiles.includes(file)) return null;\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"script\", {\n async: !isDevelopment && disableOptimizedLoading,\n defer: !disableOptimizedLoading,\n src: `${assetPrefix}/_next/${(0, _encodeuripath.encodeURIPath)(file)}${assetQueryString}`,\n nonce: props.nonce,\n crossOrigin: props.crossOrigin || crossOrigin\n }, file);\n });\n}\nfunction getScripts(context, props, files) {\n var _buildManifest_lowPriorityFiles;\n const { assetPrefix, buildManifest, isDevelopment, assetQueryString, disableOptimizedLoading, crossOrigin } = context;\n const normalScripts = files.allFiles.filter((file)=>file.endsWith(\".js\"));\n const lowPriorityScripts = (_buildManifest_lowPriorityFiles = buildManifest.lowPriorityFiles) == null ? void 0 : _buildManifest_lowPriorityFiles.filter((file)=>file.endsWith(\".js\"));\n return [\n ...normalScripts,\n ...lowPriorityScripts\n ].map((file)=>{\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"script\", {\n src: `${assetPrefix}/_next/${(0, _encodeuripath.encodeURIPath)(file)}${assetQueryString}`,\n nonce: props.nonce,\n async: !isDevelopment && disableOptimizedLoading,\n defer: !disableOptimizedLoading,\n crossOrigin: props.crossOrigin || crossOrigin\n }, file);\n });\n}\nfunction getPreNextWorkerScripts(context, props) {\n const { assetPrefix, scriptLoader, crossOrigin, nextScriptWorkers } = context;\n // disable `nextScriptWorkers` in edge runtime\n if (!nextScriptWorkers || \"nodejs\" === \"edge\") return null;\n try {\n let { partytownSnippet } = require(\"@builder.io/partytown/integration\");\n const children = Array.isArray(props.children) ? props.children : [\n props.children\n ];\n // Check to see if the user has defined their own Partytown configuration\n const userDefinedConfig = children.find((child)=>{\n var _child_props_dangerouslySetInnerHTML, _child_props;\n return hasComponentProps(child) && (child == null ? void 0 : (_child_props = child.props) == null ? void 0 : (_child_props_dangerouslySetInnerHTML = _child_props.dangerouslySetInnerHTML) == null ? void 0 : _child_props_dangerouslySetInnerHTML.__html.length) && \"data-partytown-config\" in child.props;\n });\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n !userDefinedConfig && /*#__PURE__*/ (0, _jsxruntime.jsx)(\"script\", {\n \"data-partytown-config\": \"\",\n dangerouslySetInnerHTML: {\n __html: `\n partytown = {\n lib: \"${assetPrefix}/_next/static/~partytown/\"\n };\n `\n }\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"script\", {\n \"data-partytown\": \"\",\n dangerouslySetInnerHTML: {\n __html: partytownSnippet()\n }\n }),\n (scriptLoader.worker || []).map((file, index)=>{\n const { strategy, src, children: scriptChildren, dangerouslySetInnerHTML, ...scriptProps } = file;\n let srcProps = {};\n if (src) {\n // Use external src if provided\n srcProps.src = src;\n } else if (dangerouslySetInnerHTML && dangerouslySetInnerHTML.__html) {\n // Embed inline script if provided with dangerouslySetInnerHTML\n srcProps.dangerouslySetInnerHTML = {\n __html: dangerouslySetInnerHTML.__html\n };\n } else if (scriptChildren) {\n // Embed inline script if provided with children\n srcProps.dangerouslySetInnerHTML = {\n __html: typeof scriptChildren === \"string\" ? scriptChildren : Array.isArray(scriptChildren) ? scriptChildren.join(\"\") : \"\"\n };\n } else {\n throw new Error(\"Invalid usage of next/script. Did you forget to include a src attribute or an inline script? https://nextjs.org/docs/messages/invalid-script\");\n }\n return /*#__PURE__*/ (0, _react.createElement)(\"script\", {\n ...srcProps,\n ...scriptProps,\n type: \"text/partytown\",\n key: src || index,\n nonce: props.nonce,\n \"data-nscript\": \"worker\",\n crossOrigin: props.crossOrigin || crossOrigin\n });\n })\n ]\n });\n } catch (err) {\n if ((0, _iserror.default)(err) && err.code !== \"MODULE_NOT_FOUND\") {\n console.warn(`Warning: ${err.message}`);\n }\n return null;\n }\n}\nfunction getPreNextScripts(context, props) {\n const { scriptLoader, disableOptimizedLoading, crossOrigin } = context;\n const webWorkerScripts = getPreNextWorkerScripts(context, props);\n const beforeInteractiveScripts = (scriptLoader.beforeInteractive || []).filter((script)=>script.src).map((file, index)=>{\n const { strategy, ...scriptProps } = file;\n return /*#__PURE__*/ (0, _react.createElement)(\"script\", {\n ...scriptProps,\n key: scriptProps.src || index,\n defer: scriptProps.defer ?? !disableOptimizedLoading,\n nonce: props.nonce,\n \"data-nscript\": \"beforeInteractive\",\n crossOrigin: props.crossOrigin || crossOrigin\n });\n });\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n webWorkerScripts,\n beforeInteractiveScripts\n ]\n });\n}\nfunction getHeadHTMLProps(props) {\n const { crossOrigin, nonce, ...restProps } = props;\n // This assignment is necessary for additional type checking to avoid unsupported attributes in
\n const headProps = restProps;\n return headProps;\n}\nfunction getAmpPath(ampPath, asPath) {\n return ampPath || `${asPath}${asPath.includes(\"?\") ? \"&\" : \"?\"}amp=1`;\n}\nfunction getNextFontLinkTags(nextFontManifest, dangerousAsPath, assetPrefix = \"\") {\n if (!nextFontManifest) {\n return {\n preconnect: null,\n preload: null\n };\n }\n const appFontsEntry = nextFontManifest.pages[\"/_app\"];\n const pageFontsEntry = nextFontManifest.pages[dangerousAsPath];\n const preloadedFontFiles = Array.from(new Set([\n ...appFontsEntry ?? [],\n ...pageFontsEntry ?? []\n ]));\n // If no font files should preload but there's an entry for the path, add a preconnect tag.\n const preconnectToSelf = !!(preloadedFontFiles.length === 0 && (appFontsEntry || pageFontsEntry));\n return {\n preconnect: preconnectToSelf ? /*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n \"data-next-font\": nextFontManifest.pagesUsingSizeAdjust ? \"size-adjust\" : \"\",\n rel: \"preconnect\",\n href: \"/\",\n crossOrigin: \"anonymous\"\n }) : null,\n preload: preloadedFontFiles ? preloadedFontFiles.map((fontFile)=>{\n const ext = /\\.(woff|woff2|eot|ttf|otf)$/.exec(fontFile)[1];\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"preload\",\n href: `${assetPrefix}/_next/${(0, _encodeuripath.encodeURIPath)(fontFile)}`,\n as: \"font\",\n type: `font/${ext}`,\n crossOrigin: \"anonymous\",\n \"data-next-font\": fontFile.includes(\"-s\") ? \"size-adjust\" : \"\"\n }, fontFile);\n }) : null\n };\n}\nclass Head extends _react.default.Component {\n static #_ = this.contextType = _htmlcontextsharedruntime.HtmlContext;\n getCssLinks(files) {\n const { assetPrefix, assetQueryString, dynamicImports, crossOrigin, optimizeCss, optimizeFonts } = this.context;\n const cssFiles = files.allFiles.filter((f)=>f.endsWith(\".css\"));\n const sharedFiles = new Set(files.sharedFiles);\n // Unmanaged files are CSS files that will be handled directly by the\n // webpack runtime (`mini-css-extract-plugin`).\n let unmangedFiles = new Set([]);\n let dynamicCssFiles = Array.from(new Set(dynamicImports.filter((file)=>file.endsWith(\".css\"))));\n if (dynamicCssFiles.length) {\n const existing = new Set(cssFiles);\n dynamicCssFiles = dynamicCssFiles.filter((f)=>!(existing.has(f) || sharedFiles.has(f)));\n unmangedFiles = new Set(dynamicCssFiles);\n cssFiles.push(...dynamicCssFiles);\n }\n let cssLinkElements = [];\n cssFiles.forEach((file)=>{\n const isSharedFile = sharedFiles.has(file);\n if (!optimizeCss) {\n cssLinkElements.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n nonce: this.props.nonce,\n rel: \"preload\",\n href: `${assetPrefix}/_next/${(0, _encodeuripath.encodeURIPath)(file)}${assetQueryString}`,\n as: \"style\",\n crossOrigin: this.props.crossOrigin || crossOrigin\n }, `${file}-preload`));\n }\n const isUnmanagedFile = unmangedFiles.has(file);\n cssLinkElements.push(/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n nonce: this.props.nonce,\n rel: \"stylesheet\",\n href: `${assetPrefix}/_next/${(0, _encodeuripath.encodeURIPath)(file)}${assetQueryString}`,\n crossOrigin: this.props.crossOrigin || crossOrigin,\n \"data-n-g\": isUnmanagedFile ? undefined : isSharedFile ? \"\" : undefined,\n \"data-n-p\": isUnmanagedFile ? undefined : isSharedFile ? undefined : \"\"\n }, file));\n });\n if (false) {}\n return cssLinkElements.length === 0 ? null : cssLinkElements;\n }\n getPreloadDynamicChunks() {\n const { dynamicImports, assetPrefix, assetQueryString, crossOrigin } = this.context;\n return dynamicImports.map((file)=>{\n if (!file.endsWith(\".js\")) {\n return null;\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"preload\",\n href: `${assetPrefix}/_next/${(0, _encodeuripath.encodeURIPath)(file)}${assetQueryString}`,\n as: \"script\",\n nonce: this.props.nonce,\n crossOrigin: this.props.crossOrigin || crossOrigin\n }, file);\n }) // Filter out nulled scripts\n .filter(Boolean);\n }\n getPreloadMainLinks(files) {\n const { assetPrefix, assetQueryString, scriptLoader, crossOrigin } = this.context;\n const preloadFiles = files.allFiles.filter((file)=>{\n return file.endsWith(\".js\");\n });\n return [\n ...(scriptLoader.beforeInteractive || []).map((file)=>/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n nonce: this.props.nonce,\n rel: \"preload\",\n href: file.src,\n as: \"script\",\n crossOrigin: this.props.crossOrigin || crossOrigin\n }, file.src)),\n ...preloadFiles.map((file)=>/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n nonce: this.props.nonce,\n rel: \"preload\",\n href: `${assetPrefix}/_next/${(0, _encodeuripath.encodeURIPath)(file)}${assetQueryString}`,\n as: \"script\",\n crossOrigin: this.props.crossOrigin || crossOrigin\n }, file))\n ];\n }\n getBeforeInteractiveInlineScripts() {\n const { scriptLoader } = this.context;\n const { nonce, crossOrigin } = this.props;\n return (scriptLoader.beforeInteractive || []).filter((script)=>!script.src && (script.dangerouslySetInnerHTML || script.children)).map((file, index)=>{\n const { strategy, children, dangerouslySetInnerHTML, src, ...scriptProps } = file;\n let html = \"\";\n if (dangerouslySetInnerHTML && dangerouslySetInnerHTML.__html) {\n html = dangerouslySetInnerHTML.__html;\n } else if (children) {\n html = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n }\n return /*#__PURE__*/ (0, _react.createElement)(\"script\", {\n ...scriptProps,\n dangerouslySetInnerHTML: {\n __html: html\n },\n key: scriptProps.id || index,\n nonce: nonce,\n \"data-nscript\": \"beforeInteractive\",\n crossOrigin: crossOrigin || undefined\n });\n });\n }\n getDynamicChunks(files) {\n return getDynamicChunks(this.context, this.props, files);\n }\n getPreNextScripts() {\n return getPreNextScripts(this.context, this.props);\n }\n getScripts(files) {\n return getScripts(this.context, this.props, files);\n }\n getPolyfillScripts() {\n return getPolyfillScripts(this.context, this.props);\n }\n makeStylesheetInert(node) {\n return _react.default.Children.map(node, (c)=>{\n var _c_props, _c_props1;\n if ((c == null ? void 0 : c.type) === \"link\" && (c == null ? void 0 : (_c_props = c.props) == null ? void 0 : _c_props.href) && _constants.OPTIMIZED_FONT_PROVIDERS.some(({ url })=>{\n var _c_props_href, _c_props;\n return c == null ? void 0 : (_c_props = c.props) == null ? void 0 : (_c_props_href = _c_props.href) == null ? void 0 : _c_props_href.startsWith(url);\n })) {\n const newProps = {\n ...c.props || {},\n \"data-href\": c.props.href,\n href: undefined\n };\n return /*#__PURE__*/ _react.default.cloneElement(c, newProps);\n } else if (c == null ? void 0 : (_c_props1 = c.props) == null ? void 0 : _c_props1.children) {\n const newProps = {\n ...c.props || {},\n children: this.makeStylesheetInert(c.props.children)\n };\n return /*#__PURE__*/ _react.default.cloneElement(c, newProps);\n }\n return c;\n // @types/react bug. Returned value from .map will not be `null` if you pass in `[null]`\n }).filter(Boolean);\n }\n render() {\n const { styles, ampPath, inAmpMode, hybridAmp, canonicalBase, __NEXT_DATA__, dangerousAsPath, headTags, unstable_runtimeJS, unstable_JsPreload, disableOptimizedLoading, optimizeCss, optimizeFonts, assetPrefix, nextFontManifest } = this.context;\n const disableRuntimeJS = unstable_runtimeJS === false;\n const disableJsPreload = unstable_JsPreload === false || !disableOptimizedLoading;\n this.context.docComponentsRendered.Head = true;\n let { head } = this.context;\n let cssPreloads = [];\n let otherHeadElements = [];\n if (head) {\n head.forEach((c)=>{\n let metaTag;\n if (this.context.strictNextHead) {\n metaTag = /*#__PURE__*/ _react.default.createElement(\"meta\", {\n name: \"next-head\",\n content: \"1\"\n });\n }\n if (c && c.type === \"link\" && c.props[\"rel\"] === \"preload\" && c.props[\"as\"] === \"style\") {\n metaTag && cssPreloads.push(metaTag);\n cssPreloads.push(c);\n } else {\n if (c) {\n if (metaTag && (c.type !== \"meta\" || !c.props[\"charSet\"])) {\n otherHeadElements.push(metaTag);\n }\n otherHeadElements.push(c);\n }\n }\n });\n head = cssPreloads.concat(otherHeadElements);\n }\n let children = _react.default.Children.toArray(this.props.children).filter(Boolean);\n // show a warning if Head contains (only in development)\n if (true) {\n children = _react.default.Children.map(children, (child)=>{\n var _child_props;\n const isReactHelmet = child == null ? void 0 : (_child_props = child.props) == null ? void 0 : _child_props[\"data-react-helmet\"];\n if (!isReactHelmet) {\n var _child_props1;\n if ((child == null ? void 0 : child.type) === \"title\") {\n console.warn(\"Warning: should not be used in _document.js's . https://nextjs.org/docs/messages/no-document-title\");\n } else if ((child == null ? void 0 : child.type) === \"meta\" && (child == null ? void 0 : (_child_props1 = child.props) == null ? void 0 : _child_props1.name) === \"viewport\") {\n console.warn(\"Warning: viewport meta tags should not be used in _document.js's . https://nextjs.org/docs/messages/no-document-viewport-meta\");\n }\n }\n return child;\n // @types/react bug. Returned value from .map will not be `null` if you pass in `[null]`\n });\n if (this.props.crossOrigin) console.warn(\"Warning: `Head` attribute `crossOrigin` is deprecated. https://nextjs.org/docs/messages/doc-crossorigin-deprecated\");\n }\n if (false) {}\n let hasAmphtmlRel = false;\n let hasCanonicalRel = false;\n // show warning and remove conflicting amp head tags\n head = _react.default.Children.map(head || [], (child)=>{\n if (!child) return child;\n const { type, props } = child;\n if ( true && inAmpMode) {\n let badProp = \"\";\n if (type === \"meta\" && props.name === \"viewport\") {\n badProp = 'name=\"viewport\"';\n } else if (type === \"link\" && props.rel === \"canonical\") {\n hasCanonicalRel = true;\n } else if (type === \"script\") {\n // only block if\n // 1. it has a src and isn't pointing to ampproject's CDN\n // 2. it is using dangerouslySetInnerHTML without a type or\n // a type of text/javascript\n if (props.src && props.src.indexOf(\"ampproject\") < -1 || props.dangerouslySetInnerHTML && (!props.type || props.type === \"text/javascript\")) {\n badProp = \"