Files
williammarch.xyz/.next/server/app/page.js
2026-04-02 21:01:48 +01:00

402 lines
313 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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/page";
exports.ids = ["app/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%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fwill%2FDocuments%2Fwilliam-march&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D!":
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fwill%2FDocuments%2Fwilliam-march&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=standalone&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: ['__PAGE__', {}, {\n page: [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/page.tsx */ \"(rsc)/./app/page.tsx\")), \"/Users/will/Documents/william-march/app/page.tsx\"],\n \n }]\n },\n {\n 'layout': [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/layout.tsx */ \"(rsc)/./app/layout.tsx\")), \"/Users/will/Documents/william-march/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/will/Documents/william-march/app/page.tsx\"];\n\n\nconst __next_app_require__ = __webpack_require__\nconst __next_app_load_chunk__ = () => Promise.resolve()\nconst originalPathname = \"/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: \"/page\",\n pathname: \"/\",\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/bmFtZT1hcHAlMkZwYWdlJnBhZ2U9JTJGcGFnZSZhcHBQYXRocz0lMkZwYWdlJnBhZ2VQYXRoPXByaXZhdGUtbmV4dC1hcHAtZGlyJTJGcGFnZS50c3gmYXBwRGlyPSUyRlVzZXJzJTJGd2lsbCUyRkRvY3VtZW50cyUyRndpbGxpYW0tbWFyY2glMkZhcHAmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZyb290RGlyPSUyRlVzZXJzJTJGd2lsbCUyRkRvY3VtZW50cyUyRndpbGxpYW0tbWFyY2gmaXNEZXY9dHJ1ZSZ0c2NvbmZpZ1BhdGg9dHNjb25maWcuanNvbiZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9c3RhbmRhbG9uZSZwcmVmZXJyZWRSZWdpb249Jm1pZGRsZXdhcmVDb25maWc9ZTMwJTNEISIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsYUFBYSxzQkFBc0I7QUFDaUU7QUFDckM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLHVCQUF1Qix3SUFBcUY7QUFDNUc7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EseUJBQXlCLDRJQUF1RjtBQUNoSCxvQkFBb0IsME5BQWdGO0FBQ3BHO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUN1QjtBQUM2RDtBQUNwRiw2QkFBNkIsbUJBQW1CO0FBQ2hEO0FBQ087QUFDQTtBQUNQO0FBQ0E7QUFDQTtBQUN1RDtBQUN2RDtBQUNPLHdCQUF3Qiw4R0FBa0I7QUFDakQ7QUFDQSxjQUFjLHlFQUFTO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd2lsbGlhbS1tYXJjaC8/N2ZhOSJdLCJzb3VyY2VzQ29udGVudCI6WyJcIlRVUkJPUEFDSyB7IHRyYW5zaXRpb246IG5leHQtc3NyIH1cIjtcbmltcG9ydCB7IEFwcFBhZ2VSb3V0ZU1vZHVsZSB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2Z1dHVyZS9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL21vZHVsZS5jb21waWxlZFwiO1xuaW1wb3J0IHsgUm91dGVLaW5kIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvZnV0dXJlL3JvdXRlLWtpbmRcIjtcbi8vIFdlIGluamVjdCB0aGUgdHJlZSBhbmQgcGFnZXMgaGVyZSBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlbSBpbiB0aGUgcm91dGVcbi8vIG1vZHVsZS5cbmNvbnN0IHRyZWUgPSB7XG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICcnLFxuICAgICAgICB7XG4gICAgICAgIGNoaWxkcmVuOiBbJ19fUEFHRV9fJywge30sIHtcbiAgICAgICAgICBwYWdlOiBbKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvd2lsbC9Eb2N1bWVudHMvd2lsbGlhbS1tYXJjaC9hcHAvcGFnZS50c3hcIiksIFwiL1VzZXJzL3dpbGwvRG9jdW1lbnRzL3dpbGxpYW0tbWFyY2gvYXBwL3BhZ2UudHN4XCJdLFxuICAgICAgICAgIFxuICAgICAgICB9XVxuICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAnbGF5b3V0JzogWygpID0+IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3dpbGwvRG9jdW1lbnRzL3dpbGxpYW0tbWFyY2gvYXBwL2xheW91dC50c3hcIiksIFwiL1VzZXJzL3dpbGwvRG9jdW1lbnRzL3dpbGxpYW0tbWFyY2gvYXBwL2xheW91dC50c3hcIl0sXG4nbm90LWZvdW5kJzogWygpID0+IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvclwiKSwgXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbm90LWZvdW5kLWVycm9yXCJdLFxuICAgICAgICBcbiAgICAgIH1cbiAgICAgIF1cbiAgICAgIH0uY2hpbGRyZW47XG5jb25zdCBwYWdlcyA9IFtcIi9Vc2Vycy93aWxsL0RvY3VtZW50cy93aWxsaWFtLW1hcmNoL2FwcC9wYWdlLnRzeFwiXTtcbmV4cG9ydCB7IHRyZWUsIHBhZ2VzIH07XG5leHBvcnQgeyBkZWZhdWx0IGFzIEdsb2JhbEVycm9yIH0gZnJvbSBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9lcnJvci1ib3VuZGFyeVwiO1xuY29uc3QgX19uZXh0X2FwcF9yZXF1aXJlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fXG5jb25zdCBfX25leHRfYXBwX2xvYWRfY2h1bmtfXyA9ICgpID0+IFByb21pc2UucmVzb2x2ZSgpXG5leHBvcnQgY29uc3Qgb3JpZ2luYWxQYXRobmFtZSA9IFwiL3BhZ2VcIjtcbmV4cG9ydCBjb25zdCBfX25leHRfYXBwX18gPSB7XG4gICAgcmVxdWlyZTogX19uZXh0X2FwcF9yZXF1aXJlX18sXG4gICAgbG9hZENodW5rOiBfX25leHRfYXBwX2xvYWRfY2h1bmtfX1xufTtcbmV4cG9ydCAqIGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2FwcC1yZW5kZXIvZW50cnktYmFzZVwiO1xuLy8gQ3JlYXRlIGFuZCBleHBvcnQgdGhlIHJvdXRlIG1vZHVsZSB0aGF0IHdpbGwgYmUgY29uc3VtZWQuXG5leHBvcnQgY29uc3Qgcm91dGVNb2R1bGUgPSBuZXcgQXBwUGFnZVJvdXRlTW9kdWxlKHtcbiAgICBkZWZpbml0aW9uOiB7XG4gICAgICAgIGtpbmQ6IFJvdXRlS2luZC5BUFBfUEFHRSxcbiAgICAgICAgcGFnZTogXCIvcGFnZVwiLFxuICAgICAgICBwYXRobmFtZTogXCIvXCIsXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlbid0IHVzZWQgaW4gcHJvZHVjdGlvbi5cbiAgICAgICAgYnVuZGxlUGF0aDogXCJcIixcbiAgICAgICAgZmlsZW5hbWU6IFwiXCIsXG4gICAgICAgIGFwcFBhdGhzOiBbXVxuICAgIH0sXG4gICAgdXNlcmxhbmQ6IHtcbiAgICAgICAgbG9hZGVyVHJlZTogdHJlZVxuICAgIH1cbn0pO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcHAtcGFnZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fwill%2FDocuments%2Fwilliam-march&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=standalone&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%2Fwill%2FDocuments%2Fwilliam-march%2Fcomponents%2FCommitSection.tsx%22%2C%22ids%22%3A%5B%22default%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fcomponents%2FContact.tsx%22%2C%22ids%22%3A%5B%22default%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fcomponents%2FNav.tsx%22%2C%22ids%22%3A%5B%22default%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fcomponents%2FProjects.tsx%22%2C%22ids%22%3A%5B%22default%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%2Fwill%2FDocuments%2Fwilliam-march%2Fcomponents%2FCommitSection.tsx%22%2C%22ids%22%3A%5B%22default%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fcomponents%2FContact.tsx%22%2C%22ids%22%3A%5B%22default%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fcomponents%2FNav.tsx%22%2C%22ids%22%3A%5B%22default%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fcomponents%2FProjects.tsx%22%2C%22ids%22%3A%5B%22default%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/CommitSection.tsx */ \"(ssr)/./components/CommitSection.tsx\"));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./components/Contact.tsx */ \"(ssr)/./components/Contact.tsx\"));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./components/Nav.tsx */ \"(ssr)/./components/Nav.tsx\"));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./components/Projects.tsx */ \"(ssr)/./components/Projects.tsx\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGd2lsbCUyRkRvY3VtZW50cyUyRndpbGxpYW0tbWFyY2glMkZjb21wb25lbnRzJTJGQ29tbWl0U2VjdGlvbi50c3glMjIlMkMlMjJpZHMlMjIlM0ElNUIlMjJkZWZhdWx0JTIyJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGd2lsbCUyRkRvY3VtZW50cyUyRndpbGxpYW0tbWFyY2glMkZjb21wb25lbnRzJTJGQ29udGFjdC50c3glMjIlMkMlMjJpZHMlMjIlM0ElNUIlMjJkZWZhdWx0JTIyJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGd2lsbCUyRkRvY3VtZW50cyUyRndpbGxpYW0tbWFyY2glMkZjb21wb25lbnRzJTJGTmF2LnRzeCUyMiUyQyUyMmlkcyUyMiUzQSU1QiUyMmRlZmF1bHQlMjIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZ3aWxsJTJGRG9jdW1lbnRzJTJGd2lsbGlhbS1tYXJjaCUyRmNvbXBvbmVudHMlMkZQcm9qZWN0cy50c3glMjIlMkMlMjJpZHMlMjIlM0ElNUIlMjJkZWZhdWx0JTIyJTVEJTdEJnNlcnZlcj10cnVlISIsIm1hcHBpbmdzIjoiQUFBQSx3S0FBa0k7QUFDbEk7QUFDQSw0SkFBNEg7QUFDNUg7QUFDQSxvSkFBd0g7QUFDeEg7QUFDQSw4SkFBNkgiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93aWxsaWFtLW1hcmNoLz9jMzU3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiLCB3ZWJwYWNrRXhwb3J0czogW1wiZGVmYXVsdFwiXSAqLyBcIi9Vc2Vycy93aWxsL0RvY3VtZW50cy93aWxsaWFtLW1hcmNoL2NvbXBvbmVudHMvQ29tbWl0U2VjdGlvbi50c3hcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiwgd2VicGFja0V4cG9ydHM6IFtcImRlZmF1bHRcIl0gKi8gXCIvVXNlcnMvd2lsbC9Eb2N1bWVudHMvd2lsbGlhbS1tYXJjaC9jb21wb25lbnRzL0NvbnRhY3QudHN4XCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIsIHdlYnBhY2tFeHBvcnRzOiBbXCJkZWZhdWx0XCJdICovIFwiL1VzZXJzL3dpbGwvRG9jdW1lbnRzL3dpbGxpYW0tbWFyY2gvY29tcG9uZW50cy9OYXYudHN4XCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIsIHdlYnBhY2tFeHBvcnRzOiBbXCJkZWZhdWx0XCJdICovIFwiL1VzZXJzL3dpbGwvRG9jdW1lbnRzL3dpbGxpYW0tbWFyY2gvY29tcG9uZW50cy9Qcm9qZWN0cy50c3hcIik7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\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%2Fwill%2FDocuments%2Fwilliam-march%2Fcomponents%2FCommitSection.tsx%22%2C%22ids%22%3A%5B%22default%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fcomponents%2FContact.tsx%22%2C%22ids%22%3A%5B%22default%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fcomponents%2FNav.tsx%22%2C%22ids%22%3A%5B%22default%22%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fcomponents%2FProjects.tsx%22%2C%22ids%22%3A%5B%22default%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%2Fwill%2FDocuments%2Fwilliam-march%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%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%2Fwill%2FDocuments%2Fwilliam-march%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%2Fwill%2FDocuments%2Fwilliam-march%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%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%2Fwill%2FDocuments%2Fwilliam-march%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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGd2lsbCUyRkRvY3VtZW50cyUyRndpbGxpYW0tbWFyY2glMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZhcHAtcm91dGVyLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGd2lsbCUyRkRvY3VtZW50cyUyRndpbGxpYW0tbWFyY2glMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZjbGllbnQtcGFnZS5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRndpbGwlMkZEb2N1bWVudHMlMkZ3aWxsaWFtLW1hcmNoJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGZXJyb3ItYm91bmRhcnkuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZ3aWxsJTJGRG9jdW1lbnRzJTJGd2lsbGlhbS1tYXJjaCUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmxheW91dC1yb3V0ZXIuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZ3aWxsJTJGRG9jdW1lbnRzJTJGd2lsbGlhbS1tYXJjaCUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRm5vdC1mb3VuZC1ib3VuZGFyeS5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRndpbGwlMkZEb2N1bWVudHMlMkZ3aWxsaWFtLW1hcmNoJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsa09BQStIO0FBQy9IO0FBQ0Esb09BQWdJO0FBQ2hJO0FBQ0EsME9BQW1JO0FBQ25JO0FBQ0Esd09BQWtJO0FBQ2xJO0FBQ0Esa1BBQXVJO0FBQ3ZJO0FBQ0Esc1FBQWlKIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd2lsbGlhbS1tYXJjaC8/ZTMyMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy93aWxsL0RvY3VtZW50cy93aWxsaWFtLW1hcmNoL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYXBwLXJvdXRlci5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3dpbGwvRG9jdW1lbnRzL3dpbGxpYW0tbWFyY2gvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtcGFnZS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3dpbGwvRG9jdW1lbnRzL3dpbGxpYW0tbWFyY2gvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9lcnJvci1ib3VuZGFyeS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3dpbGwvRG9jdW1lbnRzL3dpbGxpYW0tbWFyY2gvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9sYXlvdXQtcm91dGVyLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvd2lsbC9Eb2N1bWVudHMvd2lsbGlhbS1tYXJjaC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1ib3VuZGFyeS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3dpbGwvRG9jdW1lbnRzL3dpbGxpYW0tbWFyY2gvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9yZW5kZXItZnJvbS10ZW1wbGF0ZS1jb250ZXh0LmpzXCIpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\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%2Fwill%2FDocuments%2Fwilliam-march%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%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%2Fwill%2FDocuments%2Fwilliam-march%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%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%2Fwill%2FDocuments%2Fwilliam-march%2Fnode_modules%2Fnext%2Ffont%2Flocal%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22node_modules%2Fgeist%2Fdist%2Fsans.js%5C%22%2C%5C%22import%5C%22%3A%5C%22%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22src%5C%22%3A%5C%22.%2Ffonts%2Fgeist-sans%2FGeist-Variable.woff2%5C%22%2C%5C%22variable%5C%22%3A%5C%22--font-geist-sans%5C%22%2C%5C%22weight%5C%22%3A%5C%22100%20900%5C%22%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22GeistSans%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fnode_modules%2Fnext%2Ffont%2Flocal%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22node_modules%2Fgeist%2Fdist%2Fmono.js%5C%22%2C%5C%22import%5C%22%3A%5C%22%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22src%5C%22%3A%5C%22.%2Ffonts%2Fgeist-mono%2FGeistMono-Variable.woff2%5C%22%2C%5C%22variable%5C%22%3A%5C%22--font-geist-mono%5C%22%2C%5C%22adjustFontFallback%5C%22%3Afalse%2C%5C%22fallback%5C%22%3A%5B%5C%22ui-monospace%5C%22%2C%5C%22SFMono-Regular%5C%22%2C%5C%22Roboto%20Mono%5C%22%2C%5C%22Menlo%5C%22%2C%5C%22Monaco%5C%22%2C%5C%22Liberation%20Mono%5C%22%2C%5C%22DejaVu%20Sans%20Mono%5C%22%2C%5C%22Courier%20New%5C%22%2C%5C%22monospace%5C%22%5D%2C%5C%22weight%5C%22%3A%5C%22100%20900%5C%22%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22GeistMono%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fapp%2Fglobals.css%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%2Fwill%2FDocuments%2Fwilliam-march%2Fnode_modules%2Fnext%2Ffont%2Flocal%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22node_modules%2Fgeist%2Fdist%2Fsans.js%5C%22%2C%5C%22import%5C%22%3A%5C%22%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22src%5C%22%3A%5C%22.%2Ffonts%2Fgeist-sans%2FGeist-Variable.woff2%5C%22%2C%5C%22variable%5C%22%3A%5C%22--font-geist-sans%5C%22%2C%5C%22weight%5C%22%3A%5C%22100%20900%5C%22%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22GeistSans%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fnode_modules%2Fnext%2Ffont%2Flocal%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22node_modules%2Fgeist%2Fdist%2Fmono.js%5C%22%2C%5C%22import%5C%22%3A%5C%22%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22src%5C%22%3A%5C%22.%2Ffonts%2Fgeist-mono%2FGeistMono-Variable.woff2%5C%22%2C%5C%22variable%5C%22%3A%5C%22--font-geist-mono%5C%22%2C%5C%22adjustFontFallback%5C%22%3Afalse%2C%5C%22fallback%5C%22%3A%5B%5C%22ui-monospace%5C%22%2C%5C%22SFMono-Regular%5C%22%2C%5C%22Roboto%20Mono%5C%22%2C%5C%22Menlo%5C%22%2C%5C%22Monaco%5C%22%2C%5C%22Liberation%20Mono%5C%22%2C%5C%22DejaVu%20Sans%20Mono%5C%22%2C%5C%22Courier%20New%5C%22%2C%5C%22monospace%5C%22%5D%2C%5C%22weight%5C%22%3A%5C%22100%20900%5C%22%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22GeistMono%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***!
\***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (() => {
/***/ }),
/***/ "(ssr)/./components/CommitSection.tsx":
/*!**************************************!*\
!*** ./components/CommitSection.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 */ CommitSection)\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 _lib_gitea__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/lib/gitea */ \"(ssr)/./lib/gitea.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n// ── Calendar constants ──\nconst CELL = 12, GAP = 3, STEP = CELL + GAP;\nconst DAY_LABEL_W = 26;\nconst WEEKS = 52;\n// Luminosity levels (white-on-dark glow effect)\nconst LEVELS = [\n \"rgba(255,255,255,0.04)\",\n \"rgba(255,255,255,0.13)\",\n \"rgba(255,255,255,0.28)\",\n \"rgba(255,255,255,0.50)\",\n \"rgba(255,255,255,0.80)\"\n];\nfunction getLevel(n) {\n if (n === 0) return 0;\n if (n <= 2) return 1;\n if (n <= 5) return 2;\n if (n <= 9) return 3;\n return 4;\n}\nfunction timeAgo(s) {\n const d = Date.now() - new Date(s).getTime();\n const m = Math.floor(d / 60000);\n if (m < 1) return \"just now\";\n if (m < 60) return `${m}m`;\n const h = Math.floor(m / 60);\n if (h < 24) return `${h}h`;\n const days = Math.floor(h / 24);\n if (days < 30) return `${days}d`;\n return `${Math.floor(days / 30)}mo`;\n}\n// ── Stat card ──\nfunction Stat({ label, value, sub }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"glass rounded-2xl px-5 py-4 flex flex-col gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] font-semibold uppercase tracking-[.1em] text-white/25\",\n children: label\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 42,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[clamp(1.4rem,3vw,2rem)] font-black text-white tabular-nums leading-none\",\n children: value\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 43,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-white/30\",\n children: sub\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 44,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 41,\n columnNumber: 5\n }, this);\n}\n// ── Contribution Calendar ──\nfunction ContributionCalendar({ data }) {\n const [tooltip, setTooltip] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const dateMap = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const m = new Map();\n data.forEach((e)=>{\n const k = new Date(e.timestamp * 1000).toISOString().split(\"T\")[0];\n m.set(k, (m.get(k) || 0) + e.contributions);\n });\n return m;\n }, [\n data\n ]);\n // Build 52-week grid starting from Sunday 51 weeks ago\n const { weeks, monthLabels } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n const startSunday = new Date(today);\n startSunday.setDate(today.getDate() - today.getDay() - 51 * 7);\n const weeks = [];\n const monthLabels = [];\n let lastMonth = -1;\n const cur = new Date(startSunday);\n for(let w = 0; w < WEEKS; w++){\n const week = [];\n for(let d = 0; d < 7; d++){\n const k = cur.toISOString().split(\"T\")[0];\n week.push({\n date: new Date(cur),\n key: k,\n count: dateMap.get(k) || 0\n });\n cur.setDate(cur.getDate() + 1);\n }\n const mo = week[0].date.getMonth();\n if (mo !== lastMonth) {\n monthLabels.push({\n label: week[0].date.toLocaleDateString(\"en-US\", {\n month: \"short\"\n }),\n x: w * STEP + DAY_LABEL_W\n });\n lastMonth = mo;\n }\n weeks.push(week);\n }\n return {\n weeks,\n monthLabels\n };\n }, [\n dateMap\n ]);\n const svgW = DAY_LABEL_W + WEEKS * STEP;\n const svgH = 7 * STEP + 20;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[11px] font-semibold uppercase tracking-[.1em] text-white/30\",\n children: \"Contribution Calendar \\xb7 last 12 months\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 100,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1.5 text-[10px] text-white/20\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"Less\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 104,\n columnNumber: 11\n }, this),\n LEVELS.map((c, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"rounded-sm inline-block w-2.5 h-2.5 flex-shrink-0\",\n style: {\n background: c,\n border: \"1px solid rgba(255,255,255,0.06)\"\n },\n \"aria-hidden\": \"true\"\n }, i, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 106,\n columnNumber: 13\n }, this)),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"More\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 109,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 103,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 99,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"overflow-x-auto pb-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: svgW,\n height: svgH,\n \"aria-label\": \"Contribution calendar heatmap\",\n role: \"img\",\n children: [\n monthLabels.map((m, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"text\", {\n x: m.x,\n y: 10,\n fontSize: 9,\n fill: \"rgba(255,255,255,0.25)\",\n fontFamily: \"var(--font-geist-mono, monospace)\",\n children: m.label\n }, i, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 117,\n columnNumber: 13\n }, this)),\n [\n \"\",\n \"Mon\",\n \"\",\n \"Wed\",\n \"\",\n \"Fri\",\n \"\"\n ].map((d, i)=>d ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"text\", {\n x: DAY_LABEL_W - 4,\n y: 17 + i * STEP + CELL,\n fontSize: 9,\n fill: \"rgba(255,255,255,0.2)\",\n textAnchor: \"end\",\n fontFamily: \"var(--font-geist-mono, monospace)\",\n children: d\n }, i, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 122,\n columnNumber: 13\n }, this) : null),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"g\", {\n transform: `translate(${DAY_LABEL_W}, 14)`,\n children: weeks.map((week, wi)=>week.map((day, di)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"rect\", {\n x: wi * STEP,\n y: di * STEP,\n width: CELL,\n height: CELL,\n rx: 2.5,\n fill: LEVELS[getLevel(day.count)],\n onMouseEnter: (e)=>setTooltip({\n x: e.clientX,\n y: e.clientY,\n date: day.date.toLocaleDateString(\"en-GB\", {\n weekday: \"short\",\n day: \"numeric\",\n month: \"short\",\n year: \"numeric\"\n }),\n count: day.count\n }),\n onMouseLeave: ()=>setTooltip(null),\n className: \"transition-opacity duration-100 hover:opacity-70 cursor-default\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"title\", {\n children: `${day.count} contribution${day.count !== 1 ? \"s\" : \"\"} on ${day.date.toLocaleDateString()}`\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 143,\n columnNumber: 19\n }, this)\n }, day.key, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 130,\n columnNumber: 17\n }, this)))\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 127,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 114,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 113,\n columnNumber: 7\n }, this),\n tooltip && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed z-50 pointer-events-none px-2.5 py-1.5 rounded-lg text-xs font-medium text-white bg-[#1a1a1a] border border-white/[0.1] shadow-xl whitespace-nowrap\",\n style: {\n left: tooltip.x + 12,\n top: tooltip.y - 36\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-bold\",\n children: tooltip.count\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 157,\n columnNumber: 11\n }, this),\n \" contribution\",\n tooltip.count !== 1 ? \"s\" : \"\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white/40 ml-1.5\",\n children: tooltip.date\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 159,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 153,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 98,\n columnNumber: 5\n }, this);\n}\n// ── Monthly bar chart ──\nfunction MonthlyChart({ data }) {\n const months = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n return Array.from({\n length: 12\n }, (_, i)=>{\n const d = new Date();\n d.setMonth(d.getMonth() - 11 + i);\n const key = `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, \"0\")}`;\n const label = d.toLocaleDateString(\"en-US\", {\n month: \"short\"\n });\n const count = data.filter((e)=>{\n const ed = new Date(e.timestamp * 1000);\n return `${ed.getFullYear()}-${String(ed.getMonth() + 1).padStart(2, \"0\")}` === key;\n }).reduce((s, e)=>s + e.contributions, 0);\n return {\n label,\n count\n };\n });\n }, [\n data\n ]);\n const maxVal = Math.max(...months.map((m)=>m.count), 1);\n const barW = 100 / 12;\n return /*#__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)(\"span\", {\n className: \"text-[11px] font-semibold uppercase tracking-[.1em] text-white/30 block mb-5\",\n children: \"Monthly activity\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 189,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative h-24 flex items-end gap-1.5\",\n \"aria-label\": \"Monthly commit activity bar chart\",\n role: \"img\",\n children: months.map((m, i)=>{\n const pct = m.count / maxVal * 100;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 flex flex-col items-center gap-1.5 group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full relative\",\n style: {\n height: \"80px\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 right-0 rounded-sm transition-all duration-300 ease-out\",\n style: {\n height: `${Math.max(pct, 2)}%`,\n background: `rgba(255,255,255,${0.06 + pct / 100 * 0.5})`\n },\n title: `${m.label}: ${m.count} contributions`\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 198,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 197,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[8px] text-white/20 font-mono\",\n children: m.label\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 207,\n columnNumber: 15\n }, this)\n ]\n }, i, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 196,\n columnNumber: 13\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 192,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 188,\n columnNumber: 5\n }, this);\n}\n// ── Recent commits ──\nfunction RecentCommits({ commits }) {\n if (!commits.length) return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-white/20 py-4\",\n children: \"No recent commits.\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 219,\n columnNumber: 5\n }, this);\n return /*#__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)(\"span\", {\n className: \"text-[11px] font-semibold uppercase tracking-[.1em] text-white/30 block mb-5\",\n children: \"Recent commits\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 223,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ol\", {\n className: \"flex flex-col\",\n \"aria-label\": \"Recent commit list\",\n children: commits.slice(0, 10).map((c, i)=>{\n const sha = (c.sha || \"\").slice(0, 7);\n const msg = (c.commit?.message || \"\").split(\"\\n\")[0].slice(0, 64);\n const date = c.created || c.commit?.author?.date;\n const isLast = i === Math.min(9, commits.length - 1);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n className: `commit-line relative flex gap-3 pb-4 ${isLast ? \"\" : \"\"}`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1.5 flex-shrink-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"block w-2 h-2 rounded-full bg-white/20 relative z-10\",\n \"aria-hidden\": \"true\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 235,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 234,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-w-0 flex-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-baseline gap-2 mb-0.5 flex-wrap\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] font-semibold uppercase tracking-wider text-white/25\",\n children: c._repo\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 239,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: c._repoUrl ? `${c._repoUrl}/commit/${c.sha}` : \"#\",\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"font-mono text-[10px] text-white/20 hover:text-white/50 transition-colors px-1 py-0.5 rounded bg-white/[0.04] border border-white/[0.06]\",\n \"aria-label\": `View commit ${sha}`,\n children: sha\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 242,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] text-white/20 ml-auto\",\n children: date ? timeAgo(date) : \"\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 250,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 238,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-white/60 truncate leading-snug\",\n children: msg\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 252,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 237,\n columnNumber: 15\n }, this)\n ]\n }, c.sha, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 233,\n columnNumber: 13\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 226,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 222,\n columnNumber: 5\n }, this);\n}\n// ── Main section ──\nfunction CommitSection() {\n const [repos, setRepos] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [heatmap, setHeatmap] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [commits, setCommits] = (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 (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n async function load() {\n try {\n const [r, h] = await Promise.all([\n (0,_lib_gitea__WEBPACK_IMPORTED_MODULE_2__.getRepos)(6),\n (0,_lib_gitea__WEBPACK_IMPORTED_MODULE_2__.getHeatmap)()\n ]);\n setRepos(r);\n setHeatmap(h);\n const c = await (0,_lib_gitea__WEBPACK_IMPORTED_MODULE_2__.getRecentCommits)(r);\n setCommits(c);\n } catch (e) {\n const msg = e instanceof Error ? e.message : \"Unknown error\";\n setError(msg);\n } finally{\n setLoading(false);\n }\n }\n load();\n }, []);\n const stats = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>(0,_lib_gitea__WEBPACK_IMPORTED_MODULE_2__.calcStats)(heatmap), [\n heatmap\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n id: \"activity\",\n className: \"py-24 px-6\",\n \"aria-labelledby\": \"activity-heading\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-5xl mx-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"label\",\n children: \"Gitea \\xb7 Code activity\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 293,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n id: \"activity-heading\",\n className: \"text-[clamp(1.8rem,4vw,2.5rem)] font-black tracking-tight text-white mb-10\",\n children: \"Contributions\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 294,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 sm:grid-cols-4 gap-3 mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Stat, {\n label: \"Contributions\",\n value: loading ? \"—\" : stats.total.toLocaleString(),\n sub: \"this year\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 301,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Stat, {\n label: \"Current streak\",\n value: loading ? \"—\" : `${stats.currentStreak}d`,\n sub: \"days\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 302,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Stat, {\n label: \"Longest streak\",\n value: loading ? \"—\" : `${stats.longestStreak}d`,\n sub: \"days\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 303,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Stat, {\n label: \"Active days\",\n value: loading ? \"—\" : stats.activeDays,\n sub: \"this year\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 304,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 300,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"glass rounded-2xl p-5 sm:p-6 mb-4\",\n children: loading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"skel h-3 w-48\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 311,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"skel h-[120px] w-full rounded-xl\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 312,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 310,\n columnNumber: 13\n }, this) : error ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-white/30 text-sm\",\n children: \"Could not load heatmap\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 316,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-white/20 text-xs font-mono mt-1\",\n children: error\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 317,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 315,\n columnNumber: 13\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ContributionCalendar, {\n data: heatmap\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 320,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 308,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid lg:grid-cols-[1fr_360px] gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"glass rounded-2xl p-5 sm:p-6\",\n children: loading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"skel h-32 w-full rounded-xl\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 328,\n columnNumber: 17\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MonthlyChart, {\n data: heatmap\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 329,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 326,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"glass rounded-2xl p-5 sm:p-6 overflow-hidden\",\n children: loading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-4\",\n children: [\n ...Array(5)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"skel w-2 h-2 rounded-full mt-1.5 flex-shrink-0\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 338,\n columnNumber: 23\n }, this),\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: \"skel h-2.5 w-1/3 mb-1.5\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 340,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"skel h-3.5 w-5/6\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 341,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 339,\n columnNumber: 23\n }, this)\n ]\n }, i, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 337,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 335,\n columnNumber: 17\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(RecentCommits, {\n commits: commits\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 347,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 332,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 325,\n columnNumber: 9\n }, this),\n !loading && repos.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"glass rounded-2xl p-5 sm:p-6 mt-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[11px] font-semibold uppercase tracking-[.1em] text-white/30 block mb-5\",\n children: \"Repository breakdown\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 355,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-2.5\",\n children: repos.slice(0, 6).map((r)=>{\n const maxStars = Math.max(...repos.map((x)=>x.stars_count), 1);\n const pct = r.stars_count / maxStars * 100;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3 group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: r.html_url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"text-xs font-mono text-white/40 hover:text-white/70 transition-colors w-36 truncate shrink-0\",\n children: r.name\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 364,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 h-1.5 bg-white/[0.04] rounded-full overflow-hidden\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full rounded-full bg-white/25 transition-all duration-500\",\n style: {\n width: `${Math.max(pct, 2)}%`\n }\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 369,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 368,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] text-white/25 tabular-nums w-6 text-right\",\n children: r.stars_count\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 372,\n columnNumber: 21\n }, this)\n ]\n }, r.id, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 363,\n columnNumber: 19\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 358,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 354,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 292,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/CommitSection.tsx\",\n lineNumber: 291,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LFNBQVNBOzs7Ozs7Ozs7Ozs7Ozs7OztnQkFNL0IsQ0FBQ3lCLFdBQVdMLE1BQU1sQyxNQUFNLEdBQUcsbUJBQzFCLDhEQUFDL0U7b0JBQUlDLFdBQVU7O3NDQUNiLDhEQUFDQzs0QkFBS0QsV0FBVTtzQ0FBK0U7Ozs7OztzQ0FHL0YsOERBQUNEOzRCQUFJQyxXQUFVO3NDQUNaZ0gsTUFBTWpCLEtBQUssQ0FBQyxHQUFHLEdBQUd2RCxHQUFHLENBQUNrRixDQUFBQTtnQ0FDckIsTUFBTWMsV0FBV2pKLEtBQUtpRyxHQUFHLElBQUl3QixNQUFNeEUsR0FBRyxDQUFDSCxDQUFBQSxJQUFLQSxFQUFFb0csV0FBVyxHQUFHO2dDQUM1RCxNQUFNL0MsTUFBTSxFQUFHK0MsV0FBVyxHQUFHRCxXQUFZO2dDQUN6QyxxQkFDRSw4REFBQ3pJO29DQUFlQyxXQUFVOztzREFDeEIsOERBQUMwRzs0Q0FBRUMsTUFBTWUsRUFBRWdCLFFBQVE7NENBQUU3QixRQUFPOzRDQUFTQyxLQUFJOzRDQUN2QzlHLFdBQVU7c0RBQ1QwSCxFQUFFaUIsSUFBSTs7Ozs7O3NEQUVULDhEQUFDNUk7NENBQUlDLFdBQVU7c0RBQ2IsNEVBQUNEO2dEQUFJQyxXQUFVO2dEQUNiMkMsT0FBTztvREFBRUssT0FBTyxDQUFDLEVBQUV6RCxLQUFLaUcsR0FBRyxDQUFDRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dEQUFDOzs7Ozs7Ozs7OztzREFFM0MsOERBQUN6Rjs0Q0FBS0QsV0FBVTtzREFBeUQwSCxFQUFFZSxXQUFXOzs7Ozs7O21DQVQ5RWYsRUFBRU0sRUFBRTs7Ozs7NEJBWWxCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9kIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd2lsbGlhbS1tYXJjaC8uL2NvbXBvbmVudHMvQ29tbWl0U2VjdGlvbi50c3g/ZWY4YSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ2V0UmVwb3MsIGdldEhlYXRtYXAsIGdldFJlY2VudENvbW1pdHMsIGNhbGNTdGF0cyB9IGZyb20gJ0AvbGliL2dpdGVhJztcbmltcG9ydCB0eXBlIHsgR2l0ZWFSZXBvLCBHaXRlYUNvbW1pdCwgSGVhdG1hcEVudHJ5IH0gZnJvbSAnQC9saWIvdHlwZXMnO1xuXG4vLyDilIDilIAgQ2FsZW5kYXIgY29uc3RhbnRzIOKUgOKUgFxuY29uc3QgQ0VMTCA9IDEyLCBHQVAgPSAzLCBTVEVQID0gQ0VMTCArIEdBUDtcbmNvbnN0IERBWV9MQUJFTF9XID0gMjY7XG5jb25zdCBXRUVLUyA9IDUyO1xuLy8gTHVtaW5vc2l0eSBsZXZlbHMgKHdoaXRlLW9uLWRhcmsgZ2xvdyBlZmZlY3QpXG5jb25zdCBMRVZFTFMgPSBbXG4gICdyZ2JhKDI1NSwyNTUsMjU1LDAuMDQpJywgIC8vIDBcbiAgJ3JnYmEoMjU1LDI1NSwyNTUsMC4xMyknLCAgLy8gMS0yXG4gICdyZ2JhKDI1NSwyNTUsMjU1LDAuMjgpJywgIC8vIDMtNVxuICAncmdiYSgyNTUsMjU1LDI1NSwwLjUwKScsICAvLyA2LTlcbiAgJ3JnYmEoMjU1LDI1NSwyNTUsMC44MCknLCAgLy8gMTArXG5dO1xuZnVuY3Rpb24gZ2V0TGV2ZWwobjogbnVtYmVyKSB7XG4gIGlmIChuID09PSAwKSByZXR1cm4gMDtcbiAgaWYgKG4gPD0gMikgIHJldHVybiAxO1xuICBpZiAobiA8PSA1KSAgcmV0dXJuIDI7XG4gIGlmIChuIDw9IDkpICByZXR1cm4gMztcbiAgcmV0dXJuIDQ7XG59XG5cbmZ1bmN0aW9uIHRpbWVBZ28oczogc3RyaW5nKSB7XG4gIGNvbnN0IGQgPSBEYXRlLm5vdygpIC0gbmV3IERhdGUocykuZ2V0VGltZSgpO1xuICBjb25zdCBtID0gTWF0aC5mbG9vcihkIC8gNjAwMDApO1xuICBpZiAobSA8IDEpIHJldHVybiAnanVzdCBub3cnO1xuICBpZiAobSA8IDYwKSByZXR1cm4gYCR7bX1tYDtcbiAgY29uc3QgaCA9IE1hdGguZmxvb3IobSAvIDYwKTtcbiAgaWYgKGggPCAyNCkgcmV0dXJuIGAke2h9aGA7XG4gIGNvbnN0IGRheXMgPSBNYXRoLmZsb29yKGggLyAyNCk7XG4gIGlmIChkYXlzIDwgMzApIHJldHVybiBgJHtkYXlzfWRgO1xuICByZXR1cm4gYCR7TWF0aC5mbG9vcihkYXlzIC8gMzApfW1vYDtcbn1cblxuLy8g4pSA4pSAIFN0YXQgY2FyZCDilIDilIBcbmZ1bmN0aW9uIFN0YXQoeyBsYWJlbCwgdmFsdWUsIHN1YiB9OiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7IHN1Yjogc3RyaW5nIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImdsYXNzIHJvdW5kZWQtMnhsIHB4LTUgcHktNCBmbGV4IGZsZXgtY29sIGdhcC0xXCI+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsxMHB4XSBmb250LXNlbWlib2xkIHVwcGVyY2FzZSB0cmFja2luZy1bLjFlbV0gdGV4dC13aGl0ZS8yNVwiPntsYWJlbH08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVtjbGFtcCgxLjRyZW0sM3Z3LDJyZW0pXSBmb250LWJsYWNrIHRleHQtd2hpdGUgdGFidWxhci1udW1zIGxlYWRpbmctbm9uZVwiPnt2YWx1ZX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtd2hpdGUvMzBcIj57c3VifTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuLy8g4pSA4pSAIENvbnRyaWJ1dGlvbiBDYWxlbmRhciDilIDilIBcbmZ1bmN0aW9uIENvbnRyaWJ1dGlvbkNhbGVuZGFyKHsgZGF0YSB9OiB7IGRhdGE6IEhlYXRtYXBFbnRyeVtdIH0pIHtcbiAgY29uc3QgW3Rvb2x0aXAsIHNldFRvb2x0aXBdID0gdXNlU3RhdGU8eyB4OiBudW1iZXI7IHk6IG51bWJlcjsgZGF0ZTogc3RyaW5nOyBjb3VudDogbnVtYmVyIH0gfCBudWxsPihudWxsKTtcblxuICBjb25zdCBkYXRlTWFwID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgbSA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gICAgZGF0YS5mb3JFYWNoKGUgPT4ge1xuICAgICAgY29uc3QgayA9IG5ldyBEYXRlKGUudGltZXN0YW1wICogMTAwMCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xuICAgICAgbS5zZXQoaywgKG0uZ2V0KGspIHx8IDApICsgZS5jb250cmlidXRpb25zKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbTtcbiAgfSwgW2RhdGFdKTtcblxuICAvLyBCdWlsZCA1Mi13ZWVrIGdyaWQgc3RhcnRpbmcgZnJvbSBTdW5kYXkgNTEgd2Vla3MgYWdvXG4gIGNvbnN0IHsgd2Vla3MsIG1vbnRoTGFiZWxzIH0gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgdG9kYXkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgY29uc3Qgc3RhcnRTdW5kYXkgPSBuZXcgRGF0ZSh0b2RheSk7XG4gICAgc3RhcnRTdW5kYXkuc2V0RGF0ZSh0b2RheS5nZXREYXRlKCkgLSB0b2RheS5nZXREYXkoKSAtIDUxICogNyk7XG5cbiAgICBjb25zdCB3ZWVrczogeyBkYXRlOiBEYXRlOyBrZXk6IHN0cmluZzsgY291bnQ6IG51bWJlciB9W11bXSA9IFtdO1xuICAgIGNvbnN0IG1vbnRoTGFiZWxzOiB7IGxhYmVsOiBzdHJpbmc7IHg6IG51bWJlciB9W10gPSBbXTtcbiAgICBsZXQgbGFzdE1vbnRoID0gLTE7XG4gICAgY29uc3QgY3VyID0gbmV3IERhdGUoc3RhcnRTdW5kYXkpO1xuXG4gICAgZm9yIChsZXQgdyA9IDA7IHcgPCBXRUVLUzsgdysrKSB7XG4gICAgICBjb25zdCB3ZWVrOiB7IGRhdGU6IERhdGU7IGtleTogc3RyaW5nOyBjb3VudDogbnVtYmVyIH1bXSA9IFtdO1xuICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCA3OyBkKyspIHtcbiAgICAgICAgY29uc3QgayA9IGN1ci50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XG4gICAgICAgIHdlZWsucHVzaCh7IGRhdGU6IG5ldyBEYXRlKGN1ciksIGtleTogaywgY291bnQ6IGRhdGVNYXAuZ2V0KGspIHx8IDAgfSk7XG4gICAgICAgIGN1ci5zZXREYXRlKGN1ci5nZXREYXRlKCkgKyAxKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1vID0gd2Vla1swXS5kYXRlLmdldE1vbnRoKCk7XG4gICAgICBpZiAobW8gIT09IGxhc3RNb250aCkge1xuICAgICAgICBtb250aExhYmVscy5wdXNoKHtcbiAgICAgICAgICBsYWJlbDogd2Vla1swXS5kYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tVVMnLCB7IG1vbnRoOiAnc2hvcnQnIH0pLFxuICAgICAgICAgIHg6IHcgKiBTVEVQICsgREFZX0xBQkVMX1csXG4gICAgICAgIH0pO1xuICAgICAgICBsYXN0TW9udGggPSBtbztcbiAgICAgIH1cbiAgICAgIHdlZWtzLnB1c2god2Vlayk7XG4gICAgfVxuICAgIHJldHVybiB7IHdlZWtzLCBtb250aExhYmVscyB9O1xuICB9LCBbZGF0ZU1hcF0pO1xuXG4gIGNvbnN0IHN2Z1cgPSBEQVlfTEFCRUxfVyArIFdFRUtTICogU1RFUDtcbiAgY29uc3Qgc3ZnSCA9IDcgKiBTVEVQICsgMjA7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYi00XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzExcHhdIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLVsuMWVtXSB0ZXh0LXdoaXRlLzMwXCI+XG4gICAgICAgICAgQ29udHJpYnV0aW9uIENhbGVuZGFyIMK3IGxhc3QgMTIgbW9udGhzXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHRleHQtWzEwcHhdIHRleHQtd2hpdGUvMjBcIj5cbiAgICAgICAgICA8c3Bhbj5MZXNzPC9zcGFuPlxuICAgICAgICAgIHtMRVZFTFMubWFwKChjLCBpKSA9PiAoXG4gICAgICAgICAgICA8c3BhbiBrZXk9e2l9IGNsYXNzTmFtZT1cInJvdW5kZWQtc20gaW5saW5lLWJsb2NrIHctMi41IGgtMi41IGZsZXgtc2hyaW5rLTBcIlxuICAgICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kOiBjLCBib3JkZXI6ICcxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA2KScgfX0gYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgICA8c3Bhbj5Nb3JlPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm92ZXJmbG93LXgtYXV0byBwYi0xXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9e3N2Z1d9IGhlaWdodD17c3ZnSH0gYXJpYS1sYWJlbD1cIkNvbnRyaWJ1dGlvbiBjYWxlbmRhciBoZWF0bWFwXCIgcm9sZT1cImltZ1wiPlxuICAgICAgICAgIHsvKiBNb250aCBsYWJlbHMgKi99XG4gICAgICAgICAge21vbnRoTGFiZWxzLm1hcCgobSwgaSkgPT4gKFxuICAgICAgICAgICAgPHRleHQga2V5PXtpfSB4PXttLnh9IHk9ezEwfSBmb250U2l6ZT17OX0gZmlsbD1cInJnYmEoMjU1LDI1NSwyNTUsMC4yNSlcIlxuICAgICAgICAgICAgICBmb250RmFtaWx5PVwidmFyKC0tZm9udC1nZWlzdC1tb25vLCBtb25vc3BhY2UpXCI+e20ubGFiZWx9PC90ZXh0PlxuICAgICAgICAgICkpfVxuICAgICAgICAgIHsvKiBEYXkgbGFiZWxzICovfVxuICAgICAgICAgIHtbJycsICdNb24nLCAnJywgJ1dlZCcsICcnLCAnRnJpJywgJyddLm1hcCgoZCwgaSkgPT4gZCA/IChcbiAgICAgICAgICAgIDx0ZXh0IGtleT17aX0geD17REFZX0xBQkVMX1cgLSA0fSB5PXsxNyArIGkgKiBTVEVQICsgQ0VMTH1cbiAgICAgICAgICAgICAgZm9udFNpemU9ezl9IGZpbGw9XCJyZ2JhKDI1NSwyNTUsMjU1LDAuMilcIiB0ZXh0QW5jaG9yPVwiZW5kXCJcbiAgICAgICAgICAgICAgZm9udEZhbWlseT1cInZhcigtLWZvbnQtZ2Vpc3QtbW9ubywgbW9ub3NwYWNlKVwiPntkfTwvdGV4dD5cbiAgICAgICAgICApIDogbnVsbCl9XG4gICAgICAgICAgey8qIENlbGxzICovfVxuICAgICAgICAgIDxnIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgke0RBWV9MQUJFTF9XfSwgMTQpYH0+XG4gICAgICAgICAgICB7d2Vla3MubWFwKCh3ZWVrLCB3aSkgPT5cbiAgICAgICAgICAgICAgd2Vlay5tYXAoKGRheSwgZGkpID0+IChcbiAgICAgICAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAgICAgICAga2V5PXtkYXkua2V5fVxuICAgICAgICAgICAgICAgICAgeD17d2kgKiBTVEVQfSB5PXtkaSAqIFNURVB9XG4gICAgICAgICAgICAgICAgICB3aWR0aD17Q0VMTH0gaGVpZ2h0PXtDRUxMfSByeD17Mi41fVxuICAgICAgICAgICAgICAgICAgZmlsbD17TEVWRUxTW2dldExldmVsKGRheS5jb3VudCldfVxuICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXtlID0+IHNldFRvb2x0aXAoe1xuICAgICAgICAgICAgICAgICAgICB4OiBlLmNsaWVudFgsIHk6IGUuY2xpZW50WSxcbiAgICAgICAgICAgICAgICAgICAgZGF0ZTogZGF5LmRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1HQicsIHsgd2Vla2RheTogJ3Nob3J0JywgZGF5OiAnbnVtZXJpYycsIG1vbnRoOiAnc2hvcnQnLCB5ZWFyOiAnbnVtZXJpYycgfSksXG4gICAgICAgICAgICAgICAgICAgIGNvdW50OiBkYXkuY291bnQsXG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4gc2V0VG9vbHRpcChudWxsKX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi0xMDAgaG92ZXI6b3BhY2l0eS03MCBjdXJzb3ItZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHRpdGxlPntgJHtkYXkuY291bnR9IGNvbnRyaWJ1dGlvbiR7ZGF5LmNvdW50ICE9PSAxID8gJ3MnIDogJyd9IG9uICR7ZGF5LmRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCl9YH08L3RpdGxlPlxuICAgICAgICAgICAgICAgIDwvcmVjdD5cbiAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9nPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogVG9vbHRpcCAqL31cbiAgICAgIHt0b29sdGlwICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cImZpeGVkIHotNTAgcG9pbnRlci1ldmVudHMtbm9uZSBweC0yLjUgcHktMS41IHJvdW5kZWQtbGcgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXdoaXRlXG4gICAgICAgICAgICBiZy1bIzFhMWExYV0gYm9yZGVyIGJvcmRlci13aGl0ZS9bMC4xXSBzaGFkb3cteGwgd2hpdGVzcGFjZS1ub3dyYXBcIlxuICAgICAgICAgIHN0eWxlPXt7IGxlZnQ6IHRvb2x0aXAueCArIDEyLCB0b3A6IHRvb2x0aXAueSAtIDM2IH19PlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtYm9sZFwiPnt0b29sdGlwLmNvdW50fTwvc3Bhbj5cbiAgICAgICAgICB7JyBjb250cmlidXRpb24nfXt0b29sdGlwLmNvdW50ICE9PSAxID8gJ3MnIDogJyd9XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC13aGl0ZS80MCBtbC0xLjVcIj57dG9vbHRpcC5kYXRlfTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG4vLyDilIDilIAgTW9udGhseSBiYXIgY2hhcnQg4pSA4pSAXG5mdW5jdGlvbiBNb250aGx5Q2hhcnQoeyBkYXRhIH06IHsgZGF0YTogSGVhdG1hcEVudHJ5W10gfSkge1xuICBjb25zdCBtb250aHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTIgfSwgKF8sIGkpID0+IHtcbiAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSgpO1xuICAgICAgZC5zZXRNb250aChkLmdldE1vbnRoKCkgLSAxMSArIGkpO1xuICAgICAgY29uc3Qga2V5ID0gYCR7ZC5nZXRGdWxsWWVhcigpfS0ke1N0cmluZyhkLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gICAgICBjb25zdCBsYWJlbCA9IGQudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1VUycsIHsgbW9udGg6ICdzaG9ydCcgfSk7XG4gICAgICBjb25zdCBjb3VudCA9IGRhdGFcbiAgICAgICAgLmZpbHRlcihlID0+IHtcbiAgICAgICAgICBjb25zdCBlZCA9IG5ldyBEYXRlKGUudGltZXN0YW1wICogMTAwMCk7XG4gICAgICAgICAgcmV0dXJuIGAke2VkLmdldEZ1bGxZZWFyKCl9LSR7U3RyaW5nKGVkLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpfWAgPT09IGtleTtcbiAgICAgICAgfSlcbiAgICAgICAgLnJlZHVjZSgocywgZSkgPT4gcyArIGUuY29udHJpYnV0aW9ucywgMCk7XG4gICAgICByZXR1cm4geyBsYWJlbCwgY291bnQgfTtcbiAgICB9KTtcbiAgfSwgW2RhdGFdKTtcblxuICBjb25zdCBtYXhWYWwgPSBNYXRoLm1heCguLi5tb250aHMubWFwKG0gPT4gbS5jb3VudCksIDEpO1xuICBjb25zdCBiYXJXID0gMTAwIC8gMTI7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2PlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1bMTFweF0gZm9udC1zZW1pYm9sZCB1cHBlcmNhc2UgdHJhY2tpbmctWy4xZW1dIHRleHQtd2hpdGUvMzAgYmxvY2sgbWItNVwiPlxuICAgICAgICBNb250aGx5IGFjdGl2aXR5XG4gICAgICA8L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGgtMjQgZmxleCBpdGVtcy1lbmQgZ2FwLTEuNVwiIGFyaWEtbGFiZWw9XCJNb250aGx5IGNvbW1pdCBhY3Rpdml0eSBiYXIgY2hhcnRcIiByb2xlPVwiaW1nXCI+XG4gICAgICAgIHttb250aHMubWFwKChtLCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGN0ID0gKG0uY291bnQgLyBtYXhWYWwpICogMTAwO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPVwiZmxleC0xIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC0xLjUgZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgcmVsYXRpdmVcIiBzdHlsZT17eyBoZWlnaHQ6ICc4MHB4JyB9fT5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgcmlnaHQtMCByb3VuZGVkLXNtIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBlYXNlLW91dFwiXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGAke01hdGgubWF4KHBjdCwgMil9JWAsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGByZ2JhKDI1NSwyNTUsMjU1LCR7MC4wNiArIChwY3QgLyAxMDApICogMC41fSlgLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIHRpdGxlPXtgJHttLmxhYmVsfTogJHttLmNvdW50fSBjb250cmlidXRpb25zYH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1bOHB4XSB0ZXh0LXdoaXRlLzIwIGZvbnQtbW9ub1wiPnttLmxhYmVsfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICk7XG4gICAgICAgIH0pfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbi8vIOKUgOKUgCBSZWNlbnQgY29tbWl0cyDilIDilIBcbmZ1bmN0aW9uIFJlY2VudENvbW1pdHMoeyBjb21taXRzIH06IHsgY29tbWl0czogR2l0ZWFDb21taXRbXSB9KSB7XG4gIGlmICghY29tbWl0cy5sZW5ndGgpIHJldHVybiAoXG4gICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXdoaXRlLzIwIHB5LTRcIj5ObyByZWNlbnQgY29tbWl0cy48L3A+XG4gICk7XG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzExcHhdIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLVsuMWVtXSB0ZXh0LXdoaXRlLzMwIGJsb2NrIG1iLTVcIj5cbiAgICAgICAgUmVjZW50IGNvbW1pdHNcbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxvbCBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sXCIgYXJpYS1sYWJlbD1cIlJlY2VudCBjb21taXQgbGlzdFwiPlxuICAgICAgICB7Y29tbWl0cy5zbGljZSgwLCAxMCkubWFwKChjLCBpKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2hhID0gKGMuc2hhIHx8ICcnKS5zbGljZSgwLCA3KTtcbiAgICAgICAgICBjb25zdCBtc2cgPSAoYy5jb21taXQ/Lm1lc3NhZ2UgfHwgJycpLnNwbGl0KCdcXG4nKVswXS5zbGljZSgwLCA2NCk7XG4gICAgICAgICAgY29uc3QgZGF0ZSA9IGMuY3JlYXRlZCB8fCBjLmNvbW1pdD8uYXV0aG9yPy5kYXRlO1xuICAgICAgICAgIGNvbnN0IGlzTGFzdCA9IGkgPT09IE1hdGgubWluKDksIGNvbW1pdHMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxsaSBrZXk9e2Muc2hhfSBjbGFzc05hbWU9e2Bjb21taXQtbGluZSByZWxhdGl2ZSBmbGV4IGdhcC0zIHBiLTQgJHtpc0xhc3QgPyAnJyA6ICcnfWB9PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTEuNSBmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmxvY2sgdy0yIGgtMiByb3VuZGVkLWZ1bGwgYmctd2hpdGUvMjAgcmVsYXRpdmUgei0xMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi13LTAgZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWJhc2VsaW5lIGdhcC0yIG1iLTAuNSBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzEwcHhdIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyIHRleHQtd2hpdGUvMjVcIj5cbiAgICAgICAgICAgICAgICAgICAge2MuX3JlcG99XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBocmVmPXtjLl9yZXBvVXJsID8gYCR7Yy5fcmVwb1VybH0vY29tbWl0LyR7Yy5zaGF9YCA6ICcjJ31cbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZvbnQtbW9ubyB0ZXh0LVsxMHB4XSB0ZXh0LXdoaXRlLzIwIGhvdmVyOnRleHQtd2hpdGUvNTAgdHJhbnNpdGlvbi1jb2xvcnMgcHgtMSBweS0wLjVcbiAgICAgICAgICAgICAgICAgICAgICByb3VuZGVkIGJnLXdoaXRlL1swLjA0XSBib3JkZXIgYm9yZGVyLXdoaXRlL1swLjA2XVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2BWaWV3IGNvbW1pdCAke3NoYX1gfT5cbiAgICAgICAgICAgICAgICAgICAge3NoYX1cbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzEwcHhdIHRleHQtd2hpdGUvMjAgbWwtYXV0b1wiPntkYXRlID8gdGltZUFnbyhkYXRlKSA6ICcnfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtd2hpdGUvNjAgdHJ1bmNhdGUgbGVhZGluZy1zbnVnXCI+e21zZ308L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvb2w+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbi8vIOKUgOKUgCBNYWluIHNlY3Rpb24g4pSA4pSAXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb21taXRTZWN0aW9uKCkge1xuICBjb25zdCBbcmVwb3MsIHNldFJlcG9zXSAgICAgPSB1c2VTdGF0ZTxHaXRlYVJlcG9bXT4oW10pO1xuICBjb25zdCBbaGVhdG1hcCwgc2V0SGVhdG1hcF0gPSB1c2VTdGF0ZTxIZWF0bWFwRW50cnlbXT4oW10pO1xuICBjb25zdCBbY29tbWl0cywgc2V0Q29tbWl0c10gPSB1c2VTdGF0ZTxHaXRlYUNvbW1pdFtdPihbXSk7XG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSAgICAgPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGFzeW5jIGZ1bmN0aW9uIGxvYWQoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBbciwgaF0gPSBhd2FpdCBQcm9taXNlLmFsbChbZ2V0UmVwb3MoNiksIGdldEhlYXRtYXAoKV0pO1xuICAgICAgICBzZXRSZXBvcyhyKTtcbiAgICAgICAgc2V0SGVhdG1hcChoKTtcbiAgICAgICAgY29uc3QgYyA9IGF3YWl0IGdldFJlY2VudENvbW1pdHMocik7XG4gICAgICAgIHNldENvbW1pdHMoYyk7XG4gICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgIGNvbnN0IG1zZyA9IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJztcbiAgICAgICAgc2V0RXJyb3IobXNnKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBsb2FkKCk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBzdGF0cyA9IHVzZU1lbW8oKCkgPT4gY2FsY1N0YXRzKGhlYXRtYXApLCBbaGVhdG1hcF0pO1xuXG4gIHJldHVybiAoXG4gICAgPHNlY3Rpb24gaWQ9XCJhY3Rpdml0eVwiIGNsYXNzTmFtZT1cInB5LTI0IHB4LTZcIiBhcmlhLWxhYmVsbGVkYnk9XCJhY3Rpdml0eS1oZWFkaW5nXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTV4bCBteC1hdXRvXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImxhYmVsXCI+R2l0ZWEgwrcgQ29kZSBhY3Rpdml0eTwvc3Bhbj5cbiAgICAgICAgPGgyIGlkPVwiYWN0aXZpdHktaGVhZGluZ1wiXG4gICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1bY2xhbXAoMS44cmVtLDR2dywyLjVyZW0pXSBmb250LWJsYWNrIHRyYWNraW5nLXRpZ2h0IHRleHQtd2hpdGUgbWItMTBcIj5cbiAgICAgICAgICBDb250cmlidXRpb25zXG4gICAgICAgIDwvaDI+XG5cbiAgICAgICAgey8qIFN0YXRzIHJvdyAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0yIHNtOmdyaWQtY29scy00IGdhcC0zIG1iLTZcIj5cbiAgICAgICAgICA8U3RhdCBsYWJlbD1cIkNvbnRyaWJ1dGlvbnNcIiB2YWx1ZT17bG9hZGluZyA/ICfigJQnIDogc3RhdHMudG90YWwudG9Mb2NhbGVTdHJpbmcoKX0gc3ViPVwidGhpcyB5ZWFyXCIgLz5cbiAgICAgICAgICA8U3RhdCBsYWJlbD1cIkN1cnJlbnQgc3RyZWFrXCIgdmFsdWU9e2xvYWRpbmcgPyAn4oCUJyA6IGAke3N0YXRzLmN1cnJlbnRTdHJlYWt9ZGB9IHN1Yj1cImRheXNcIiAvPlxuICAgICAgICAgIDxTdGF0IGxhYmVsPVwiTG9uZ2VzdCBzdHJlYWtcIiB2YWx1ZT17bG9hZGluZyA/ICfigJQnIDogYCR7c3RhdHMubG9uZ2VzdFN0cmVha31kYH0gc3ViPVwiZGF5c1wiIC8+XG4gICAgICAgICAgPFN0YXQgbGFiZWw9XCJBY3RpdmUgZGF5c1wiICAgIHZhbHVlPXtsb2FkaW5nID8gJ+KAlCcgOiBzdGF0cy5hY3RpdmVEYXlzfSBzdWI9XCJ0aGlzIHllYXJcIiAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogQ2FsZW5kYXIgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ2xhc3Mgcm91bmRlZC0yeGwgcC01IHNtOnAtNiBtYi00XCI+XG4gICAgICAgICAge2xvYWRpbmcgPyAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJza2VsIGgtMyB3LTQ4XCIgLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJza2VsIGgtWzEyMHB4XSB3LWZ1bGwgcm91bmRlZC14bFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogZXJyb3IgPyAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIHB5LTZcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC13aGl0ZS8zMCB0ZXh0LXNtXCI+Q291bGQgbm90IGxvYWQgaGVhdG1hcDwvcD5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC13aGl0ZS8yMCB0ZXh0LXhzIGZvbnQtbW9ubyBtdC0xXCI+e2Vycm9yfTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8Q29udHJpYnV0aW9uQ2FsZW5kYXIgZGF0YT17aGVhdG1hcH0gLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogTW9udGhseSArIGNvbW1pdHMgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBsZzpncmlkLWNvbHMtWzFmcl8zNjBweF0gZ2FwLTRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdsYXNzIHJvdW5kZWQtMnhsIHAtNSBzbTpwLTZcIj5cbiAgICAgICAgICAgIHtsb2FkaW5nXG4gICAgICAgICAgICAgID8gPGRpdiBjbGFzc05hbWU9XCJza2VsIGgtMzIgdy1mdWxsIHJvdW5kZWQteGxcIiAvPlxuICAgICAgICAgICAgICA6IDxNb250aGx5Q2hhcnQgZGF0YT17aGVhdG1hcH0gLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdsYXNzIHJvdW5kZWQtMnhsIHAtNSBzbTpwLTYgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICB7bG9hZGluZ1xuICAgICAgICAgICAgICA/IChcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICAgIHtbLi4uQXJyYXkoNSldLm1hcCgoXywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPVwiZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2tlbCB3LTIgaC0yIHJvdW5kZWQtZnVsbCBtdC0xLjUgZmxleC1zaHJpbmstMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2tlbCBoLTIuNSB3LTEvMyBtYi0xLjVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJza2VsIGgtMy41IHctNS82XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IDxSZWNlbnRDb21taXRzIGNvbW1pdHM9e2NvbW1pdHN9IC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBSZXBvIGJhciBjaGFydCAqL31cbiAgICAgICAgeyFsb2FkaW5nICYmIHJlcG9zLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ2xhc3Mgcm91bmRlZC0yeGwgcC01IHNtOnAtNiBtdC00XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIHVwcGVyY2FzZSB0cmFja2luZy1bLjFlbV0gdGV4dC13aGl0ZS8zMCBibG9jayBtYi01XCI+XG4gICAgICAgICAgICAgIFJlcG9zaXRvcnkgYnJlYWtkb3duXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgZ2FwLTIuNVwiPlxuICAgICAgICAgICAgICB7cmVwb3Muc2xpY2UoMCwgNikubWFwKHIgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1heFN0YXJzID0gTWF0aC5tYXgoLi4ucmVwb3MubWFwKHggPT4geC5zdGFyc19jb3VudCksIDEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBjdCA9IChyLnN0YXJzX2NvdW50IC8gbWF4U3RhcnMpICogMTAwO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17ci5pZH0gY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMgZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj17ci5odG1sX3VybH0gdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1vbm8gdGV4dC13aGl0ZS80MCBob3Zlcjp0ZXh0LXdoaXRlLzcwIHRyYW5zaXRpb24tY29sb3JzIHctMzYgdHJ1bmNhdGUgc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7ci5uYW1lfVxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIGgtMS41IGJnLXdoaXRlL1swLjA0XSByb3VuZGVkLWZ1bGwgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLWZ1bGwgcm91bmRlZC1mdWxsIGJnLXdoaXRlLzI1IHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogYCR7TWF0aC5tYXgocGN0LCAyKX0lYCB9fSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1bMTBweF0gdGV4dC13aGl0ZS8yNSB0YWJ1bGFyLW51bXMgdy02IHRleHQtcmlnaHRcIj57ci5zdGFyc19jb3VudH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICApO1xufVxuIl0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidXNlTWVtbyIsImdldFJlcG9zIiwiZ2V0SGVhdG1hcCIsImdldFJlY2VudENvbW1pdHMiLCJjYWxjU3RhdHMiLCJDRUxMIiwiR0FQIiwiU1RFUCIsIkRBWV9MQUJFTF9XIiwiV0VFS1MiLCJMRVZFTFMiLCJnZXRMZXZlbCIsIm4iLCJ0aW1lQWdvIiwicyIsImQiLCJEYXRlIiwibm93IiwiZ2V0VGltZSIsIm0iLCJNYXRoIiwiZmxvb3IiLCJoIiwiZGF5cyIsIlN0YXQiLCJsYWJlbCIsInZhbHVlIiwic3ViIiwiZGl2IiwiY2xhc3NOYW1lIiwic3BhbiIsIkNvbnRyaWJ1dGlvbkNhbGVuZGFyIiwiZGF0YSIsInRvb2x0aXAiLCJzZXRUb29sdGlwIiwiZGF0ZU1hcCIsIk1hcCIsImZvckVhY2giLCJlIiwiayIsInRpbWVzdGFtcCIsInRvSVNPU3RyaW5nIiwic3BsaXQiLCJzZXQiLCJnZXQiLCJjb250cmlidXRpb25zIiwid2Vla3MiLCJtb250aExhYmVscyIsInRvZGF5Iiwic2V0SG91cnMiLCJzdGFydFN1bmRheSIsInNldERhdGUiLCJnZXREYXRlIiwiZ2V0RGF5IiwibGFzdE1vbnRoIiwiY3VyIiwidyIsIndlZWsiLCJwdXNoIiwiZGF0ZSIsImtleSIsImNvdW50IiwibW8iLCJnZXRNb250aCIsInRvTG9jYWxlRGF0ZVN0cmluZyIsIm1vbnRoIiwieCIsInN2Z1ciLCJzdmdIIiwibWFwIiwiYyIsImkiLCJzdHlsZSIsImJhY2tncm91bmQiLCJib3JkZXIiLCJhcmlhLWhpZGRlbiIsInN2ZyIsIndpZHRoIiwiaGVpZ2h0IiwiYXJpYS1sYWJlbCIsInJvbGUiLCJ0ZXh0IiwieSIsImZvbnRTaXplIiwiZmlsbCIsImZvbnRGYW1pbHkiLCJ0ZXh0QW5jaG9yIiwiZyIsInRyYW5zZm9ybSIsIndpIiwiZGF5IiwiZGkiLCJyZWN0IiwicngiLCJvbk1vdXNlRW50ZXIiLCJjbGllbnRYIiwiY2xpZW50WSIsIndlZWtkYXkiLCJ5ZWFyIiwib25Nb3VzZUxlYXZlIiwidGl0bGUiLCJsZWZ0IiwidG9wIiwiTW9udGhseUNoYXJ0IiwibW9udGhzIiwiQXJyYXkiLCJmcm9tIiwibGVuZ3RoIiwiXyIsInNldE1vbnRoIiwiZ2V0RnVsbFllYXIiLCJTdHJpbmciLCJwYWRTdGFydCIsImZpbHRlciIsImVkIiwicmVkdWNlIiwibWF4VmFsIiwibWF4IiwiYmFyVyIsInBjdCIsIlJlY2VudENvbW1pdHMiLCJjb21taXRzIiwicCIsIm9sIiwic2xpY2UiLCJzaGEiLCJtc2ciLCJjb21taXQiLCJtZXNzYWdlIiwiY3JlYXRlZCIsImF1dGhvciIsImlzTGFzdCIsIm1pbiIsImxpIiwiX3JlcG8iLCJhIiwiaHJlZiIsIl9yZXBvVXJsIiwidGFyZ2V0IiwicmVsIiwiQ29tbWl0U2VjdGlvbiIsInJlcG9zIiwic2V0UmVwb3MiLCJoZWF0bWFwIiwic2V0SGVhdG1hcCIsInNldENvbW1pdHMiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsImVycm9yIiwic2V0RXJyb3IiLCJsb2FkIiwiciIsIlByb21pc2UiLCJhbGwiLCJFcnJvciIsInN0YXRzIiwic2VjdGlvbiIsImlkIiwiYXJpYS1sYWJlbGxlZGJ5IiwiaDIiLCJ0b3RhbCIsInRvTG9jYWxlU3RyaW5nIiwiY3VycmVudFN0cmVhayIsImxvbmdlc3RTdHJlYWsiLCJhY3RpdmVEYXlzIiwibWF4U3RhcnMiLCJzdGFyc19jb3VudCIsImh0bWxfdXJsIiwibmFtZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./components/CommitSection.tsx\n");
/***/ }),
/***/ "(ssr)/./components/Contact.tsx":
/*!********************************!*\
!*** ./components/Contact.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 */ Contact)\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 _lib_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/lib/config */ \"(ssr)/./lib/config.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\nfunction Contact() {\n const [status, setStatus] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"idle\");\n function handleSubmit(e) {\n e.preventDefault();\n const fd = new FormData(e.currentTarget);\n const name = fd.get(\"name\");\n const email = fd.get(\"email\");\n const message = fd.get(\"message\");\n if (!name || !email || !message) return;\n const sub = encodeURIComponent(`Message from ${name} via williammarch.xyz`);\n const body = encodeURIComponent(`From: ${name} <${email}>\\n\\n${message}`);\n window.location.href = `mailto:${_lib_config__WEBPACK_IMPORTED_MODULE_2__.SITE.email}?subject=${sub}&body=${body}`;\n setStatus(\"sent\");\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n id: \"contact\",\n className: \"py-24 px-6 bg-[#0a0a0a]\",\n \"aria-labelledby\": \"contact-heading\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-5xl mx-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"label\",\n children: \"Get in touch\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 24,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n id: \"contact-heading\",\n className: \"text-[clamp(1.8rem,4vw,2.5rem)] font-black tracking-tight text-white mb-10\",\n children: \"Lets work together.\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 25,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid md:grid-cols-[280px_1fr] gap-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: `mailto:${_lib_config__WEBPACK_IMPORTED_MODULE_2__.SITE.email}`,\n className: \"glass rounded-xl p-4 flex items-center gap-3 group hover:border-white/[0.14] hover:-translate-x-[-4px] transition-all duration-150\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-8 h-8 rounded-lg bg-white/[0.05] flex items-center justify-center flex-shrink-0\",\n \"aria-hidden\": \"true\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"14\",\n height: \"14\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"rgba(255,255,255,0.5)\",\n strokeWidth: \"1.8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"rect\", {\n x: \"2\",\n y: \"4\",\n width: \"20\",\n height: \"16\",\n rx: \"2\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 38,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 38,\n columnNumber: 68\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 37,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 36,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-w-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-[10px] text-white/25 uppercase tracking-wider\",\n children: \"Email\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 42,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-medium text-white/55 truncate group-hover:text-white/80 transition-colors\",\n children: _lib_config__WEBPACK_IMPORTED_MODULE_2__.SITE.email\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 43,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 41,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 33,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: `${_lib_config__WEBPACK_IMPORTED_MODULE_2__.GITEA_URL}/${_lib_config__WEBPACK_IMPORTED_MODULE_2__.GITEA_USERNAME}`,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"glass rounded-xl p-4 flex items-center gap-3 group hover:border-white/[0.14] hover:translate-x-1 transition-all duration-150\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-8 h-8 rounded-lg bg-white/[0.05] flex items-center justify-center flex-shrink-0\",\n \"aria-hidden\": \"true\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"14\",\n height: \"14\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"rgba(255,255,255,0.5)\",\n strokeWidth: \"1.8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"M15 22v-4a4.8 4.8 0 0 0-1-3.2c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 52,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"M9 18c-4.51 2-5-2-7-2\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 53,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 51,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 50,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-w-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-[10px] text-white/25 uppercase tracking-wider\",\n children: \"Gitea\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 57,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-medium text-white/55 truncate group-hover:text-white/80 transition-colors font-mono\",\n children: [\n _lib_config__WEBPACK_IMPORTED_MODULE_2__.GITEA_URL.replace(/^https?:\\/\\//, \"\"),\n \"/\",\n _lib_config__WEBPACK_IMPORTED_MODULE_2__.GITEA_USERNAME\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 58,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 56,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 46,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 32,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n onSubmit: handleSubmit,\n className: \"glass rounded-xl p-6 flex flex-col gap-4\",\n noValidate: true,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid sm:grid-cols-2 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"flex flex-col gap-1.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] font-semibold uppercase tracking-wider text-white/30\",\n children: \"Name\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 69,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n name: \"name\",\n type: \"text\",\n required: true,\n placeholder: \"Your name\",\n autoComplete: \"name\",\n className: \"bg-white/[0.03] border border-white/[0.08] rounded-lg px-3 py-2.5 text-sm text-white placeholder-white/20 outline-none transition-colors focus:border-white/[0.2] focus:ring-1 focus:ring-white/[0.1]\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 70,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 68,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"flex flex-col gap-1.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] font-semibold uppercase tracking-wider text-white/30\",\n children: \"Email\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 76,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n name: \"email\",\n type: \"email\",\n required: true,\n placeholder: \"you@example.com\",\n autoComplete: \"email\",\n className: \"bg-white/[0.03] border border-white/[0.08] rounded-lg px-3 py-2.5 text-sm text-white placeholder-white/20 outline-none transition-colors focus:border-white/[0.2] focus:ring-1 focus:ring-white/[0.1]\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 77,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 75,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 67,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"flex flex-col gap-1.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] font-semibold uppercase tracking-wider text-white/30\",\n children: \"Message\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 84,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"textarea\", {\n name: \"message\",\n required: true,\n placeholder: \"What's on your mind?\",\n rows: 4,\n className: \"bg-white/[0.03] border border-white/[0.08] rounded-lg px-3 py-2.5 text-sm text-white placeholder-white/20 outline-none resize-none transition-colors focus:border-white/[0.2] focus:ring-1 focus:ring-white/[0.1]\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 85,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 83,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"submit\",\n className: \"btn btn-primary\",\n children: [\n status === \"sent\" ? \"Opening email…\" : \"Send message\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"13\",\n height: \"13\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2.5\",\n \"aria-hidden\": \"true\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"line\", {\n x1: \"22\",\n y1: \"2\",\n x2: \"11\",\n y2: \"13\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 94,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"polygon\", {\n points: \"22 2 15 22 11 13 2 9 22 2\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 94,\n columnNumber: 57\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 93,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 91,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 90,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 66,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 30,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 23,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Contact.tsx\",\n lineNumber: 22,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU3hFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd2lsbGlhbS1tYXJjaC8uL2NvbXBvbmVudHMvQ29udGFjdC50c3g/YWI0ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFNJVEUsIEdJVEVBX1VSTCwgR0lURUFfVVNFUk5BTUUgfSBmcm9tICdAL2xpYi9jb25maWcnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb250YWN0KCkge1xuICBjb25zdCBbc3RhdHVzLCBzZXRTdGF0dXNdID0gdXNlU3RhdGU8J2lkbGUnfCdzZW50Jz4oJ2lkbGUnKTtcblxuICBmdW5jdGlvbiBoYW5kbGVTdWJtaXQoZTogUmVhY3QuRm9ybUV2ZW50PEhUTUxGb3JtRWxlbWVudD4pIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgZmQgPSBuZXcgRm9ybURhdGEoZS5jdXJyZW50VGFyZ2V0KTtcbiAgICBjb25zdCBuYW1lICAgID0gZmQuZ2V0KCduYW1lJykgYXMgc3RyaW5nO1xuICAgIGNvbnN0IGVtYWlsICAgPSBmZC5nZXQoJ2VtYWlsJykgYXMgc3RyaW5nO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBmZC5nZXQoJ21lc3NhZ2UnKSBhcyBzdHJpbmc7XG4gICAgaWYgKCFuYW1lIHx8ICFlbWFpbCB8fCAhbWVzc2FnZSkgcmV0dXJuO1xuICAgIGNvbnN0IHN1YiAgPSBlbmNvZGVVUklDb21wb25lbnQoYE1lc3NhZ2UgZnJvbSAke25hbWV9IHZpYSB3aWxsaWFtbWFyY2gueHl6YCk7XG4gICAgY29uc3QgYm9keSA9IGVuY29kZVVSSUNvbXBvbmVudChgRnJvbTogJHtuYW1lfSA8JHtlbWFpbH0+XFxuXFxuJHttZXNzYWdlfWApO1xuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYG1haWx0bzoke1NJVEUuZW1haWx9P3N1YmplY3Q9JHtzdWJ9JmJvZHk9JHtib2R5fWA7XG4gICAgc2V0U3RhdHVzKCdzZW50Jyk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxzZWN0aW9uIGlkPVwiY29udGFjdFwiIGNsYXNzTmFtZT1cInB5LTI0IHB4LTYgYmctWyMwYTBhMGFdXCIgYXJpYS1sYWJlbGxlZGJ5PVwiY29udGFjdC1oZWFkaW5nXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTV4bCBteC1hdXRvXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImxhYmVsXCI+R2V0IGluIHRvdWNoPC9zcGFuPlxuICAgICAgICA8aDIgaWQ9XCJjb250YWN0LWhlYWRpbmdcIlxuICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtW2NsYW1wKDEuOHJlbSw0dncsMi41cmVtKV0gZm9udC1ibGFjayB0cmFja2luZy10aWdodCB0ZXh0LXdoaXRlIG1iLTEwXCI+XG4gICAgICAgICAgTGV0JnJzcXVvO3Mgd29yayB0b2dldGhlci5cbiAgICAgICAgPC9oMj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgbWQ6Z3JpZC1jb2xzLVsyODBweF8xZnJdIGdhcC02XCI+XG4gICAgICAgICAgey8qIExpbmtzICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiPlxuICAgICAgICAgICAgPGEgaHJlZj17YG1haWx0bzoke1NJVEUuZW1haWx9YH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZ2xhc3Mgcm91bmRlZC14bCBwLTQgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMgZ3JvdXAgaG92ZXI6Ym9yZGVyLXdoaXRlL1swLjE0XVxuICAgICAgICAgICAgICAgIGhvdmVyOi10cmFuc2xhdGUteC1bLTRweF0gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMTUwXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy04IGgtOCByb3VuZGVkLWxnIGJnLXdoaXRlL1swLjA1XSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBmbGV4LXNocmluay0wXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJyZ2JhKDI1NSwyNTUsMjU1LDAuNSlcIiBzdHJva2VXaWR0aD1cIjEuOFwiPlxuICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiNFwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxNlwiIHJ4PVwiMlwiLz48cGF0aCBkPVwibTIyIDctOC45NyA1LjdhMS45NCAxLjk0IDAgMCAxLTIuMDYgMEwyIDdcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi13LTBcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LVsxMHB4XSB0ZXh0LXdoaXRlLzI1IHVwcGVyY2FzZSB0cmFja2luZy13aWRlclwiPkVtYWlsPC9wPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1tZWRpdW0gdGV4dC13aGl0ZS81NSB0cnVuY2F0ZSBncm91cC1ob3Zlcjp0ZXh0LXdoaXRlLzgwIHRyYW5zaXRpb24tY29sb3JzXCI+e1NJVEUuZW1haWx9PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDxhIGhyZWY9e2Ake0dJVEVBX1VSTH0vJHtHSVRFQV9VU0VSTkFNRX1gfVxuICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZ2xhc3Mgcm91bmRlZC14bCBwLTQgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMgZ3JvdXAgaG92ZXI6Ym9yZGVyLXdoaXRlL1swLjE0XVxuICAgICAgICAgICAgICAgIGhvdmVyOnRyYW5zbGF0ZS14LTEgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMTUwXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy04IGgtOCByb3VuZGVkLWxnIGJnLXdoaXRlL1swLjA1XSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBmbGV4LXNocmluay0wXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJyZ2JhKDI1NSwyNTUsMjU1LDAuNSlcIiBzdHJva2VXaWR0aD1cIjEuOFwiPlxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSAyMnYtNGE0LjggNC44IDAgMCAwLTEtMy4yYzMgMCA2LTIgNi01LjUuMDgtMS4yNS0uMjctMi40OC0xLTMuNS4yOC0xLjE1LjI4LTIuMzUgMC0zLjUgMCAwLTEgMC0zIDEuNS0yLjY0LS41LTUuMzYtLjUtOCAwQzYgMiA1IDIgNSAyYy0uMyAxLjE1LS4zIDIuMzUgMCAzLjVBNS40MDMgNS40MDMgMCAwIDAgNCA5YzAgMy41IDMgNS41IDYgNS41LS4zOS40OS0uNjggMS4wNS0uODUgMS42NS0uMTcuNi0uMjIgMS4yMy0uMTUgMS44NXY0XCIvPlxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDE4Yy00LjUxIDItNS0yLTctMlwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLXctMFwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtWzEwcHhdIHRleHQtd2hpdGUvMjUgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyXCI+R2l0ZWE8L3A+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXdoaXRlLzU1IHRydW5jYXRlIGdyb3VwLWhvdmVyOnRleHQtd2hpdGUvODAgdHJhbnNpdGlvbi1jb2xvcnMgZm9udC1tb25vXCI+XG4gICAgICAgICAgICAgICAgICB7R0lURUFfVVJMLnJlcGxhY2UoL15odHRwcz86XFwvXFwvLywgJycpfS97R0lURUFfVVNFUk5BTUV9XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHsvKiBGb3JtICovfVxuICAgICAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9IGNsYXNzTmFtZT1cImdsYXNzIHJvdW5kZWQteGwgcC02IGZsZXggZmxleC1jb2wgZ2FwLTRcIiBub1ZhbGlkYXRlPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIHNtOmdyaWQtY29scy0yIGdhcC00XCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGdhcC0xLjVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsxMHB4XSBmb250LXNlbWlib2xkIHVwcGVyY2FzZSB0cmFja2luZy13aWRlciB0ZXh0LXdoaXRlLzMwXCI+TmFtZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIm5hbWVcIiB0eXBlPVwidGV4dFwiIHJlcXVpcmVkIHBsYWNlaG9sZGVyPVwiWW91ciBuYW1lXCIgYXV0b0NvbXBsZXRlPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy13aGl0ZS9bMC4wM10gYm9yZGVyIGJvcmRlci13aGl0ZS9bMC4wOF0gcm91bmRlZC1sZyBweC0zIHB5LTIuNSB0ZXh0LXNtXG4gICAgICAgICAgICAgICAgICAgIHRleHQtd2hpdGUgcGxhY2Vob2xkZXItd2hpdGUvMjAgb3V0bGluZS1ub25lIHRyYW5zaXRpb24tY29sb3JzXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzOmJvcmRlci13aGl0ZS9bMC4yXSBmb2N1czpyaW5nLTEgZm9jdXM6cmluZy13aGl0ZS9bMC4xXVwiIC8+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGdhcC0xLjVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsxMHB4XSBmb250LXNlbWlib2xkIHVwcGVyY2FzZSB0cmFja2luZy13aWRlciB0ZXh0LXdoaXRlLzMwXCI+RW1haWw8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJlbWFpbFwiIHR5cGU9XCJlbWFpbFwiIHJlcXVpcmVkIHBsYWNlaG9sZGVyPVwieW91QGV4YW1wbGUuY29tXCIgYXV0b0NvbXBsZXRlPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctd2hpdGUvWzAuMDNdIGJvcmRlciBib3JkZXItd2hpdGUvWzAuMDhdIHJvdW5kZWQtbGcgcHgtMyBweS0yLjUgdGV4dC1zbVxuICAgICAgICAgICAgICAgICAgICB0ZXh0LXdoaXRlIHBsYWNlaG9sZGVyLXdoaXRlLzIwIG91dGxpbmUtbm9uZSB0cmFuc2l0aW9uLWNvbG9yc1xuICAgICAgICAgICAgICAgICAgICBmb2N1czpib3JkZXItd2hpdGUvWzAuMl0gZm9jdXM6cmluZy0xIGZvY3VzOnJpbmctd2hpdGUvWzAuMV1cIiAvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBnYXAtMS41XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzEwcHhdIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyIHRleHQtd2hpdGUvMzBcIj5NZXNzYWdlPC9zcGFuPlxuICAgICAgICAgICAgICA8dGV4dGFyZWEgbmFtZT1cIm1lc3NhZ2VcIiByZXF1aXJlZCBwbGFjZWhvbGRlcj1cIldoYXQncyBvbiB5b3VyIG1pbmQ/XCIgcm93cz17NH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJiZy13aGl0ZS9bMC4wM10gYm9yZGVyIGJvcmRlci13aGl0ZS9bMC4wOF0gcm91bmRlZC1sZyBweC0zIHB5LTIuNSB0ZXh0LXNtXG4gICAgICAgICAgICAgICAgICB0ZXh0LXdoaXRlIHBsYWNlaG9sZGVyLXdoaXRlLzIwIG91dGxpbmUtbm9uZSByZXNpemUtbm9uZSB0cmFuc2l0aW9uLWNvbG9yc1xuICAgICAgICAgICAgICAgICAgZm9jdXM6Ym9yZGVyLXdoaXRlL1swLjJdIGZvY3VzOnJpbmctMSBmb2N1czpyaW5nLXdoaXRlL1swLjFdXCIgLz5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC00XCI+XG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzTmFtZT1cImJ0biBidG4tcHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgIHtzdGF0dXMgPT09ICdzZW50JyA/ICdPcGVuaW5nIGVtYWls4oCmJyA6ICdTZW5kIG1lc3NhZ2UnfVxuICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjEzXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIyLjVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIDxsaW5lIHgxPVwiMjJcIiB5MT1cIjJcIiB4Mj1cIjExXCIgeTI9XCIxM1wiLz48cG9seWdvbiBwb2ludHM9XCIyMiAyIDE1IDIyIDExIDEzIDIgOSAyMiAyXCIvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG4gICk7XG59XG4iXSwibmFtZXMiOlsidXNlU3RhdGUiLCJTSVRFIiwiR0lURUFfVVJMIiwiR0lURUFfVVNFUk5BTUUiLCJDb250YWN0Iiwic3RhdHVzIiwic2V0U3RhdHVzIiwiaGFuZGxlU3VibWl0IiwiZSIsInByZXZlbnREZWZhdWx0IiwiZmQiLCJGb3JtRGF0YSIsImN1cnJlbnRUYXJnZXQiLCJuYW1lIiwiZ2V0IiwiZW1haWwiLCJtZXNzYWdlIiwic3ViIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiYm9keSIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsInNlY3Rpb24iLCJpZCIsImNsYXNzTmFtZSIsImFyaWEtbGFiZWxsZWRieSIsImRpdiIsInNwYW4iLCJoMiIsImEiLCJhcmlhLWhpZGRlbiIsInN2ZyIsIndpZHRoIiwiaGVpZ2h0Iiwidmlld0JveCIsImZpbGwiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsInJlY3QiLCJ4IiwieSIsInJ4IiwicGF0aCIsImQiLCJwIiwidGFyZ2V0IiwicmVsIiwicmVwbGFjZSIsImZvcm0iLCJvblN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJsYWJlbCIsImlucHV0IiwidHlwZSIsInJlcXVpcmVkIiwicGxhY2Vob2xkZXIiLCJhdXRvQ29tcGxldGUiLCJ0ZXh0YXJlYSIsInJvd3MiLCJidXR0b24iLCJsaW5lIiwieDEiLCJ5MSIsIngyIiwieTIiLCJwb2x5Z29uIiwicG9pbnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./components/Contact.tsx\n");
/***/ }),
/***/ "(ssr)/./components/Nav.tsx":
/*!****************************!*\
!*** ./components/Nav.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 */ Nav)\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 _lib_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/lib/config */ \"(ssr)/./lib/config.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\nfunction Nav() {\n const [scrolled, setScrolled] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [mobileOpen, setMobileOpen] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const fn = ()=>setScrolled(window.scrollY > 24);\n window.addEventListener(\"scroll\", fn, {\n passive: true\n });\n return ()=>window.removeEventListener(\"scroll\", fn);\n }, []);\n const links = [\n {\n href: \"#about\",\n label: \"About\"\n },\n {\n href: \"#projects\",\n label: \"Projects\"\n },\n {\n href: \"#activity\",\n label: \"Activity\"\n },\n {\n href: \"#contact\",\n label: \"Contact\"\n }\n ];\n const navBase = \"fixed top-0 left-0 right-0 z-50 h-[60px] flex items-center transition-all duration-300\";\n const navStyle = scrolled ? \"bg-[rgba(7,7,7,0.85)] backdrop-blur-[20px] border-b border-white/[0.06]\" : \"bg-transparent\";\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: `${navBase} ${navStyle}`,\n \"aria-label\": \"Main navigation\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full max-w-5xl mx-auto px-6 flex items-center justify-between gap-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"#\",\n className: \"flex items-center gap-2.5 group\",\n \"aria-label\": \"William March\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"26\",\n height: \"26\",\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n \"aria-hidden\": \"true\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"rect\", {\n width: \"26\",\n height: \"26\",\n rx: \"5\",\n fill: \"rgba(255,255,255,0.9)\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 32,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"M4 7.5L9 19L13 9.5L17 19L22 7.5\",\n stroke: \"#070707\",\n strokeWidth: \"2.2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 33,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 31,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-semibold text-white/80 group-hover:text-white transition-colors duration-150 tracking-tight\",\n children: \"William March\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 36,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 30,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"hidden md:flex items-center gap-7\",\n role: \"list\",\n children: links.map((l)=>/*#__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)(\"a\", {\n href: l.href,\n className: \"text-sm text-white/40 hover:text-white/80 transition-colors duration-150 font-medium\",\n children: l.label\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 44,\n columnNumber: 15\n }, this)\n }, l.href, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 43,\n columnNumber: 13\n }, this))\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 41,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"hidden md:flex items-center gap-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: `${_lib_config__WEBPACK_IMPORTED_MODULE_2__.GITEA_URL}/${_lib_config__WEBPACK_IMPORTED_MODULE_2__.GITEA_USERNAME}`,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"flex items-center gap-1.5 text-xs text-white/40 hover:text-white/70 transition-colors duration-150 font-mono\",\n \"aria-label\": \"Gitea profile\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"14\",\n height: \"14\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"1.8\",\n \"aria-hidden\": \"true\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"M15 22v-4a4.8 4.8 0 0 0-1-3.2c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 59,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"M9 18c-4.51 2-5-2-7-2\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 60,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 58,\n columnNumber: 13\n }, this),\n \"gitea\"\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 53,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 52,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"md:hidden p-1.5 rounded-md text-white/50 hover:text-white/80 hover:bg-white/[0.05] transition-all\",\n onClick: ()=>setMobileOpen(!mobileOpen),\n \"aria-label\": \"Toggle menu\",\n \"aria-expanded\": mobileOpen,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2\",\n \"aria-hidden\": \"true\",\n children: mobileOpen ? /*#__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)(\"line\", {\n x1: \"18\",\n y1: \"6\",\n x2: \"6\",\n y2: \"18\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 72,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"line\", {\n x1: \"6\",\n y1: \"6\",\n x2: \"18\",\n y2: \"18\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 72,\n columnNumber: 56\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)(\"line\", {\n x1: \"3\",\n y1: \"6\",\n x2: \"21\",\n y2: \"6\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 73,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"line\", {\n x1: \"3\",\n y1: \"12\",\n x2: \"21\",\n y2: \"12\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 73,\n columnNumber: 55\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"line\", {\n x1: \"3\",\n y1: \"18\",\n x2: \"21\",\n y2: \"18\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 73,\n columnNumber: 93\n }, this)\n ]\n }, void 0, true)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 70,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 66,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 29,\n columnNumber: 7\n }, this),\n mobileOpen && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-[60px] left-0 right-0 bg-[#0f0f0f] border-b border-white/[0.06] px-6 py-4 md:hidden\",\n children: links.map((l)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: l.href,\n onClick: ()=>setMobileOpen(false),\n className: \"block py-2.5 text-sm text-white/60 hover:text-white transition-colors\",\n children: l.label\n }, l.href, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 82,\n columnNumber: 13\n }, this))\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 80,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Nav.tsx\",\n lineNumber: 28,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFLQyxJQUFHO3dDQUFJQyxJQUFHO3dDQUFJQyxJQUFHO3dDQUFLQyxJQUFHOzs7Ozs7OzZEQUN0RTs7a0RBQUUsOERBQUNKO3dDQUFLQyxJQUFHO3dDQUFJQyxJQUFHO3dDQUFJQyxJQUFHO3dDQUFLQyxJQUFHOzs7Ozs7a0RBQUssOERBQUNKO3dDQUFLQyxJQUFHO3dDQUFJQyxJQUFHO3dDQUFLQyxJQUFHO3dDQUFLQyxJQUFHOzs7Ozs7a0RBQU0sOERBQUNKO3dDQUFLQyxJQUFHO3dDQUFJQyxJQUFHO3dDQUFLQyxJQUFHO3dDQUFLQyxJQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFNckgvQyw0QkFDQyw4REFBQ2dCO2dCQUFJRixXQUFVOzBCQUNaTixNQUFNMkIsR0FBRyxDQUFDQyxDQUFBQSxrQkFDVCw4REFBQ25CO3dCQUFlUixNQUFNMkIsRUFBRTNCLElBQUk7d0JBQzFCZ0MsU0FBUyxJQUFNeEMsY0FBYzt3QkFDN0JhLFdBQVU7a0NBQ1RzQixFQUFFMUIsS0FBSzt1QkFIRjBCLEVBQUUzQixJQUFJOzs7Ozs7Ozs7Ozs7Ozs7O0FBVTFCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd2lsbGlhbS1tYXJjaC8uL2NvbXBvbmVudHMvTmF2LnRzeD9lNjMyIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTSVRFLCBHSVRFQV9VUkwsIEdJVEVBX1VTRVJOQU1FIH0gZnJvbSAnQC9saWIvY29uZmlnJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTmF2KCkge1xuICBjb25zdCBbc2Nyb2xsZWQsIHNldFNjcm9sbGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW21vYmlsZU9wZW4sIHNldE1vYmlsZU9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZm4gPSAoKSA9PiBzZXRTY3JvbGxlZCh3aW5kb3cuc2Nyb2xsWSA+IDI0KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZm4sIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGZuKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGxpbmtzID0gW1xuICAgIHsgaHJlZjogJyNhYm91dCcsICAgIGxhYmVsOiAnQWJvdXQnIH0sXG4gICAgeyBocmVmOiAnI3Byb2plY3RzJywgbGFiZWw6ICdQcm9qZWN0cycgfSxcbiAgICB7IGhyZWY6ICcjYWN0aXZpdHknLCBsYWJlbDogJ0FjdGl2aXR5JyB9LFxuICAgIHsgaHJlZjogJyNjb250YWN0JywgIGxhYmVsOiAnQ29udGFjdCcgfSxcbiAgXTtcblxuICBjb25zdCBuYXZCYXNlID0gJ2ZpeGVkIHRvcC0wIGxlZnQtMCByaWdodC0wIHotNTAgaC1bNjBweF0gZmxleCBpdGVtcy1jZW50ZXIgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwJztcbiAgY29uc3QgbmF2U3R5bGUgPSBzY3JvbGxlZFxuICAgID8gJ2JnLVtyZ2JhKDcsNyw3LDAuODUpXSBiYWNrZHJvcC1ibHVyLVsyMHB4XSBib3JkZXItYiBib3JkZXItd2hpdGUvWzAuMDZdJ1xuICAgIDogJ2JnLXRyYW5zcGFyZW50JztcblxuICByZXR1cm4gKFxuICAgIDxuYXYgY2xhc3NOYW1lPXtgJHtuYXZCYXNlfSAke25hdlN0eWxlfWB9IGFyaWEtbGFiZWw9XCJNYWluIG5hdmlnYXRpb25cIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIG1heC13LTV4bCBteC1hdXRvIHB4LTYgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC04XCI+XG4gICAgICAgIDxhIGhyZWY9XCIjXCIgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIuNSBncm91cFwiIGFyaWEtbGFiZWw9XCJXaWxsaWFtIE1hcmNoXCI+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjI2XCIgaGVpZ2h0PVwiMjZcIiB2aWV3Qm94PVwiMCAwIDI2IDI2XCIgZmlsbD1cIm5vbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjZcIiBoZWlnaHQ9XCIyNlwiIHJ4PVwiNVwiIGZpbGw9XCJyZ2JhKDI1NSwyNTUsMjU1LDAuOSlcIi8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTQgNy41TDkgMTlMMTMgOS41TDE3IDE5TDIyIDcuNVwiXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiMwNzA3MDdcIiBzdHJva2VXaWR0aD1cIjIuMlwiIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtd2hpdGUvODAgZ3JvdXAtaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0xNTAgdHJhY2tpbmctdGlnaHRcIj5cbiAgICAgICAgICAgIFdpbGxpYW0gTWFyY2hcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYT5cblxuICAgICAgICA8dWwgY2xhc3NOYW1lPVwiaGlkZGVuIG1kOmZsZXggaXRlbXMtY2VudGVyIGdhcC03XCIgcm9sZT1cImxpc3RcIj5cbiAgICAgICAgICB7bGlua3MubWFwKGwgPT4gKFxuICAgICAgICAgICAgPGxpIGtleT17bC5ocmVmfT5cbiAgICAgICAgICAgICAgPGEgaHJlZj17bC5ocmVmfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC13aGl0ZS80MCBob3Zlcjp0ZXh0LXdoaXRlLzgwIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTE1MCBmb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgIHtsLmxhYmVsfVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L3VsPlxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGlkZGVuIG1kOmZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9e2Ake0dJVEVBX1VSTH0vJHtHSVRFQV9VU0VSTkFNRX1gfVxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHRleHQteHMgdGV4dC13aGl0ZS80MCBob3Zlcjp0ZXh0LXdoaXRlLzcwIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTE1MCBmb250LW1vbm9cIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkdpdGVhIHByb2ZpbGVcIj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIxLjhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSAyMnYtNGE0LjggNC44IDAgMCAwLTEtMy4yYzMgMCA2LTIgNi01LjUuMDgtMS4yNS0uMjctMi40OC0xLTMuNS4yOC0xLjE1LjI4LTIuMzUgMC0zLjUgMCAwLTEgMC0zIDEuNS0yLjY0LS41LTUuMzYtLjUtOCAwQzYgMiA1IDIgNSAyYy0uMyAxLjE1LS4zIDIuMzUgMCAzLjVBNS40MDMgNS40MDMgMCAwIDAgNCA5YzAgMy41IDMgNS41IDYgNS41LS4zOS40OS0uNjggMS4wNS0uODUgMS42NS0uMTcuNi0uMjIgMS4yMy0uMTUgMS44NXY0XCIvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThjLTQuNTEgMi01LTItNy0yXCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICBnaXRlYVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT1cIm1kOmhpZGRlbiBwLTEuNSByb3VuZGVkLW1kIHRleHQtd2hpdGUvNTAgaG92ZXI6dGV4dC13aGl0ZS84MCBob3ZlcjpiZy13aGl0ZS9bMC4wNV0gdHJhbnNpdGlvbi1hbGxcIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE1vYmlsZU9wZW4oIW1vYmlsZU9wZW4pfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJUb2dnbGUgbWVudVwiIGFyaWEtZXhwYW5kZWQ9e21vYmlsZU9wZW59PlxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICB7bW9iaWxlT3BlblxuICAgICAgICAgICAgICA/IDw+PGxpbmUgeDE9XCIxOFwiIHkxPVwiNlwiIHgyPVwiNlwiIHkyPVwiMThcIi8+PGxpbmUgeDE9XCI2XCIgeTE9XCI2XCIgeDI9XCIxOFwiIHkyPVwiMThcIi8+PC8+XG4gICAgICAgICAgICAgIDogPD48bGluZSB4MT1cIjNcIiB5MT1cIjZcIiB4Mj1cIjIxXCIgeTI9XCI2XCIvPjxsaW5lIHgxPVwiM1wiIHkxPVwiMTJcIiB4Mj1cIjIxXCIgeTI9XCIxMlwiLz48bGluZSB4MT1cIjNcIiB5MT1cIjE4XCIgeDI9XCIyMVwiIHkyPVwiMThcIi8+PC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHttb2JpbGVPcGVuICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtWzYwcHhdIGxlZnQtMCByaWdodC0wIGJnLVsjMGYwZjBmXSBib3JkZXItYiBib3JkZXItd2hpdGUvWzAuMDZdIHB4LTYgcHktNCBtZDpoaWRkZW5cIj5cbiAgICAgICAgICB7bGlua3MubWFwKGwgPT4gKFxuICAgICAgICAgICAgPGEga2V5PXtsLmhyZWZ9IGhyZWY9e2wuaHJlZn1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9iaWxlT3BlbihmYWxzZSl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2NrIHB5LTIuNSB0ZXh0LXNtIHRleHQtd2hpdGUvNjAgaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICAgICAgICB7bC5sYWJlbH1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvbmF2PlxuICApO1xufVxuIl0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiR0lURUFfVVJMIiwiR0lURUFfVVNFUk5BTUUiLCJOYXYiLCJzY3JvbGxlZCIsInNldFNjcm9sbGVkIiwibW9iaWxlT3BlbiIsInNldE1vYmlsZU9wZW4iLCJmbiIsIndpbmRvdyIsInNjcm9sbFkiLCJhZGRFdmVudExpc3RlbmVyIiwicGFzc2l2ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJsaW5rcyIsImhyZWYiLCJsYWJlbCIsIm5hdkJhc2UiLCJuYXZTdHlsZSIsIm5hdiIsImNsYXNzTmFtZSIsImFyaWEtbGFiZWwiLCJkaXYiLCJhIiwic3ZnIiwid2lkdGgiLCJoZWlnaHQiLCJ2aWV3Qm94IiwiZmlsbCIsImFyaWEtaGlkZGVuIiwicmVjdCIsInJ4IiwicGF0aCIsImQiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsInNwYW4iLCJ1bCIsInJvbGUiLCJtYXAiLCJsIiwibGkiLCJ0YXJnZXQiLCJyZWwiLCJidXR0b24iLCJvbkNsaWNrIiwiYXJpYS1leHBhbmRlZCIsImxpbmUiLCJ4MSIsInkxIiwieDIiLCJ5MiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./components/Nav.tsx\n");
/***/ }),
/***/ "(ssr)/./components/Projects.tsx":
/*!*********************************!*\
!*** ./components/Projects.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 */ Projects)\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 _lib_gitea__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/lib/gitea */ \"(ssr)/./lib/gitea.ts\");\n/* harmony import */ var _lib_config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/lib/config */ \"(ssr)/./lib/config.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\nconst LANG_COLOR = {\n python: \"#3572A5\",\n javascript: \"#f1e05a\",\n typescript: \"#3178c6\",\n go: \"#00add8\",\n rust: \"#dea584\",\n \"c++\": \"#f34b7d\",\n c: \"#555\",\n html: \"#e34c26\",\n css: \"#563d7c\",\n shell: \"#89e051\",\n ruby: \"#701516\",\n java: \"#b07219\"\n};\nfunction langColor(l) {\n return LANG_COLOR[(l || \"\").toLowerCase()] || \"#555\";\n}\nfunction timeAgo(d) {\n const diff = Date.now() - new Date(d).getTime();\n const m = Math.floor(diff / 60000);\n if (m < 60) return `${m}m ago`;\n const h = Math.floor(m / 60);\n if (h < 24) return `${h}h ago`;\n const days = Math.floor(h / 24);\n if (days < 30) return `${days}d ago`;\n return `${Math.floor(days / 30)}mo ago`;\n}\nfunction Projects() {\n const [repos, setRepos] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n (0,_lib_gitea__WEBPACK_IMPORTED_MODULE_2__.getRepos)(_lib_config__WEBPACK_IMPORTED_MODULE_3__.SITE.repoLimit).then(setRepos).catch((e)=>setError(e.message));\n }, []);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n id: \"projects\",\n className: \"py-24 px-6 bg-[#0a0a0a]\",\n \"aria-labelledby\": \"projects-heading\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-5xl mx-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"label\",\n children: \"Gitea \\xb7 Public repos\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 41,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-end justify-between mb-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n id: \"projects-heading\",\n className: \"text-[clamp(1.8rem,4vw,2.5rem)] font-black tracking-tight text-white\",\n children: \"Recent Projects\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 43,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: `${_lib_config__WEBPACK_IMPORTED_MODULE_3__.GITEA_URL}/${_lib_config__WEBPACK_IMPORTED_MODULE_3__.GITEA_USERNAME}`,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"hidden sm:flex items-center gap-1.5 text-xs text-white/30 hover:text-white/60 transition-colors font-mono\",\n children: [\n \"All repos\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2\",\n \"aria-hidden\": \"true\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"M7 17L17 7M7 7h10v10\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 52,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 51,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 47,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 42,\n columnNumber: 9\n }, this),\n !repos && !error && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid sm:grid-cols-2 lg:grid-cols-3 gap-4\",\n children: [\n ...Array(6)\n ].map((_, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"glass rounded-2xl p-5 flex flex-col gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"skel h-4 w-1/2\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 61,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"skel h-3 w-5/6\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 62,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"skel h-3 w-3/4\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 63,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"skel h-3 w-1/3 mt-auto\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 64,\n columnNumber: 17\n }, this)\n ]\n }, i, true, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 60,\n columnNumber: 15\n }, this))\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 58,\n columnNumber: 11\n }, this),\n error && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"glass rounded-2xl p-10 text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-white/30 text-sm mb-1\",\n children: \"Could not load repositories\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 72,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-white/20 text-xs font-mono\",\n children: error\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 73,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 71,\n columnNumber: 11\n }, this),\n repos && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid sm:grid-cols-2 lg:grid-cols-3 gap-4\",\n \"aria-live\": \"polite\",\n children: repos.map((repo)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: repo.html_url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"glass rounded-2xl p-5 flex flex-col gap-4 group transition-all duration-200 hover:border-white/[0.14] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.6),0_16px_48px_rgba(0,0,0,0.6)] hover:-translate-y-[2px]\",\n \"aria-label\": `${repo.name}: ${repo.description || \"No description\"}`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-1.5 rounded-md bg-white/[0.04] border border-white/[0.07]\",\n \"aria-hidden\": \"true\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"14\",\n height: \"14\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"rgba(255,255,255,0.4)\",\n strokeWidth: \"1.8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"M15 22v-4a4.8 4.8 0 0 0-1-3.2c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 91,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"M9 18c-4.51 2-5-2-7-2\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 92,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 90,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 89,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"text-white/20 group-hover:text-white/40 transition-colors\",\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2\",\n \"aria-hidden\": \"true\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"M7 17L17 7M7 7h10v10\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 97,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 95,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 88,\n columnNumber: 17\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)(\"p\", {\n className: \"text-sm font-semibold text-white mb-1 truncate\",\n children: repo.name\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 101,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-white/35 leading-relaxed line-clamp-2\",\n children: repo.description || /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"italic text-white/20\",\n children: \"No description\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 103,\n columnNumber: 42\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 102,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 100,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4 mt-auto\",\n children: [\n repo.language && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"flex items-center gap-1.5 text-xs text-white/30\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-2 h-2 rounded-full flex-shrink-0\",\n style: {\n background: langColor(repo.language)\n },\n \"aria-hidden\": \"true\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 109,\n columnNumber: 23\n }, this),\n repo.language\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 108,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"flex items-center gap-1 text-xs text-white/25\",\n \"aria-label\": `${repo.stars_count} stars`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"10\",\n height: \"10\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"polygon\", {\n points: \"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 116,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 115,\n columnNumber: 21\n }, this),\n repo.stars_count\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 114,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-white/20 ml-auto tabular-nums\",\n children: timeAgo(repo.updated)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 120,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 106,\n columnNumber: 17\n }, this)\n ]\n }, repo.id, true, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 80,\n columnNumber: 15\n }, this))\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 78,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 40,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Projects.tsx\",\n lineNumber: 39,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUMxQjs0Q0FBS0gsV0FBVTs7OERBQ2QsOERBQUNHO29EQUFLSCxXQUFVO29EQUNkOEIsT0FBTzt3REFBRUMsWUFBWXpELFVBQVVrRCxLQUFLSyxRQUFRO29EQUFFO29EQUFHYixlQUFZOzs7Ozs7Z0RBQzlEUSxLQUFLSyxRQUFROzs7Ozs7O3NEQUdsQiw4REFBQzFCOzRDQUFLSCxXQUFVOzRDQUFnRDBCLGNBQVksQ0FBQyxFQUFFRixLQUFLUSxXQUFXLENBQUMsTUFBTSxDQUFDOzs4REFDckcsOERBQUN2QjtvREFBSUMsT0FBTTtvREFBS0MsUUFBTztvREFBS0MsU0FBUTtvREFBWUMsTUFBSztvREFBZUcsZUFBWTs4REFDOUUsNEVBQUNpQjt3REFBUUMsUUFBTzs7Ozs7Ozs7Ozs7Z0RBRWpCVixLQUFLUSxXQUFXOzs7Ozs7O3NEQUVuQiw4REFBQzdCOzRDQUFLSCxXQUFVO3NEQUE4Q3ZCLFFBQVErQyxLQUFLVyxPQUFPOzs7Ozs7Ozs7Ozs7OzJCQXZDL0VYLEtBQUt6QixFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnRDVCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vd2lsbGlhbS1tYXJjaC8uL2NvbXBvbmVudHMvUHJvamVjdHMudHN4P2YzZjgiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGdldFJlcG9zIH0gZnJvbSAnQC9saWIvZ2l0ZWEnO1xuaW1wb3J0IHR5cGUgeyBHaXRlYVJlcG8gfSBmcm9tICdAL2xpYi90eXBlcyc7XG5pbXBvcnQgeyBTSVRFLCBHSVRFQV9VUkwsIEdJVEVBX1VTRVJOQU1FIH0gZnJvbSAnQC9saWIvY29uZmlnJztcblxuY29uc3QgTEFOR19DT0xPUjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgcHl0aG9uOicjMzU3MkE1JyxqYXZhc2NyaXB0OicjZjFlMDVhJyx0eXBlc2NyaXB0OicjMzE3OGM2JyxcbiAgZ286JyMwMGFkZDgnLHJ1c3Q6JyNkZWE1ODQnLCdjKysnOicjZjM0YjdkJyxjOicjNTU1JyxcbiAgaHRtbDonI2UzNGMyNicsY3NzOicjNTYzZDdjJyxzaGVsbDonIzg5ZTA1MScscnVieTonIzcwMTUxNicsamF2YTonI2IwNzIxOSdcbn07XG5cbmZ1bmN0aW9uIGxhbmdDb2xvcihsOiBzdHJpbmcgfCBudWxsKSB7XG4gIHJldHVybiBMQU5HX0NPTE9SWyhsfHwnJykudG9Mb3dlckNhc2UoKV0gfHwgJyM1NTUnO1xufVxuXG5mdW5jdGlvbiB0aW1lQWdvKGQ6IHN0cmluZykge1xuICBjb25zdCBkaWZmID0gRGF0ZS5ub3coKSAtIG5ldyBEYXRlKGQpLmdldFRpbWUoKTtcbiAgY29uc3QgbSA9IE1hdGguZmxvb3IoZGlmZiAvIDYwMDAwKTtcbiAgaWYgKG0gPCA2MCkgcmV0dXJuIGAke219bSBhZ29gO1xuICBjb25zdCBoID0gTWF0aC5mbG9vcihtIC8gNjApO1xuICBpZiAoaCA8IDI0KSByZXR1cm4gYCR7aH1oIGFnb2A7XG4gIGNvbnN0IGRheXMgPSBNYXRoLmZsb29yKGggLyAyNCk7XG4gIGlmIChkYXlzIDwgMzApIHJldHVybiBgJHtkYXlzfWQgYWdvYDtcbiAgcmV0dXJuIGAke01hdGguZmxvb3IoZGF5cyAvIDMwKX1tbyBhZ29gO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQcm9qZWN0cygpIHtcbiAgY29uc3QgW3JlcG9zLCBzZXRSZXBvc10gPSB1c2VTdGF0ZTxHaXRlYVJlcG9bXSB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZ2V0UmVwb3MoU0lURS5yZXBvTGltaXQpXG4gICAgICAudGhlbihzZXRSZXBvcylcbiAgICAgIC5jYXRjaChlID0+IHNldEVycm9yKGUubWVzc2FnZSkpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8c2VjdGlvbiBpZD1cInByb2plY3RzXCIgY2xhc3NOYW1lPVwicHktMjQgcHgtNiBiZy1bIzBhMGEwYV1cIiBhcmlhLWxhYmVsbGVkYnk9XCJwcm9qZWN0cy1oZWFkaW5nXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTV4bCBteC1hdXRvXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImxhYmVsXCI+R2l0ZWEgwrcgUHVibGljIHJlcG9zPC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtZW5kIGp1c3RpZnktYmV0d2VlbiBtYi0xMFwiPlxuICAgICAgICAgIDxoMiBpZD1cInByb2plY3RzLWhlYWRpbmdcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1bY2xhbXAoMS44cmVtLDR2dywyLjVyZW0pXSBmb250LWJsYWNrIHRyYWNraW5nLXRpZ2h0IHRleHQtd2hpdGVcIj5cbiAgICAgICAgICAgIFJlY2VudCBQcm9qZWN0c1xuICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgPGEgaHJlZj17YCR7R0lURUFfVVJMfS8ke0dJVEVBX1VTRVJOQU1FfWB9XG4gICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImhpZGRlbiBzbTpmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHRleHQteHMgdGV4dC13aGl0ZS8zMCBob3Zlcjp0ZXh0LXdoaXRlLzYwIHRyYW5zaXRpb24tY29sb3JzIGZvbnQtbW9ub1wiPlxuICAgICAgICAgICAgQWxsIHJlcG9zXG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZVdpZHRoPVwiMlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgMTdMMTcgN003IDdoMTB2MTBcIi8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHshcmVwb3MgJiYgIWVycm9yICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgc206Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTMgZ2FwLTRcIj5cbiAgICAgICAgICAgIHtbLi4uQXJyYXkoNildLm1hcCgoXywgaSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPVwiZ2xhc3Mgcm91bmRlZC0yeGwgcC01IGZsZXggZmxleC1jb2wgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNrZWwgaC00IHctMS8yXCIgLz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNrZWwgaC0zIHctNS82XCIgLz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNrZWwgaC0zIHctMy80XCIgLz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNrZWwgaC0zIHctMS8zIG10LWF1dG9cIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuXG4gICAgICAgIHtlcnJvciAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJnbGFzcyByb3VuZGVkLTJ4bCBwLTEwIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlLzMwIHRleHQtc20gbWItMVwiPkNvdWxkIG5vdCBsb2FkIHJlcG9zaXRvcmllczwvcD5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtd2hpdGUvMjAgdGV4dC14cyBmb250LW1vbm9cIj57ZXJyb3J9PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuXG4gICAgICAgIHtyZXBvcyAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIHNtOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zIGdhcC00XCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICB7cmVwb3MubWFwKHJlcG8gPT4gKFxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGtleT17cmVwby5pZH1cbiAgICAgICAgICAgICAgICBocmVmPXtyZXBvLmh0bWxfdXJsfVxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImdsYXNzIHJvdW5kZWQtMnhsIHAtNSBmbGV4IGZsZXgtY29sIGdhcC00IGdyb3VwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMFxuICAgICAgICAgICAgICAgICAgaG92ZXI6Ym9yZGVyLXdoaXRlL1swLjE0XSBob3ZlcjpzaGFkb3ctWzBfMF8wXzFweF9yZ2JhKDAsMCwwLDAuNiksMF8xNnB4XzQ4cHhfcmdiYSgwLDAsMCwwLjYpXVxuICAgICAgICAgICAgICAgICAgaG92ZXI6LXRyYW5zbGF0ZS15LVsycHhdXCJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtgJHtyZXBvLm5hbWV9OiAke3JlcG8uZGVzY3JpcHRpb24gfHwgJ05vIGRlc2NyaXB0aW9uJ31gfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtMS41IHJvdW5kZWQtbWQgYmctd2hpdGUvWzAuMDRdIGJvcmRlciBib3JkZXItd2hpdGUvWzAuMDddXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwicmdiYSgyNTUsMjU1LDI1NSwwLjQpXCIgc3Ryb2tlV2lkdGg9XCIxLjhcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDIydi00YTQuOCA0LjggMCAwIDAtMS0zLjJjMyAwIDYtMiA2LTUuNS4wOC0xLjI1LS4yNy0yLjQ4LTEtMy41LjI4LTEuMTUuMjgtMi4zNSAwLTMuNSAwIDAtMSAwLTMgMS41LTIuNjQtLjUtNS4zNi0uNS04IDBDNiAyIDUgMiA1IDJjLS4zIDEuMTUtLjMgMi4zNSAwIDMuNUE1LjQwMyA1LjQwMyAwIDAgMCA0IDljMCAzLjUgMyA1LjUgNiA1LjUtLjM5LjQ5LS42OCAxLjA1LS44NSAxLjY1LS4xNy42LS4yMiAxLjIzLS4xNSAxLjg1djRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDE4Yy00LjUxIDItNS0yLTctMlwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwidGV4dC13aGl0ZS8yMCBncm91cC1ob3Zlcjp0ZXh0LXdoaXRlLzQwIHRyYW5zaXRpb24tY29sb3JzXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNyAxN0wxNyA3TTcgN2gxMHYxMFwiLz5cbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZSBtYi0xIHRydW5jYXRlXCI+e3JlcG8ubmFtZX08L3A+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtd2hpdGUvMzUgbGVhZGluZy1yZWxheGVkIGxpbmUtY2xhbXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICB7cmVwby5kZXNjcmlwdGlvbiB8fCA8c3BhbiBjbGFzc05hbWU9XCJpdGFsaWMgdGV4dC13aGl0ZS8yMFwiPk5vIGRlc2NyaXB0aW9uPC9zcGFuPn1cbiAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC00IG10LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgIHtyZXBvLmxhbmd1YWdlICYmIChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSB0ZXh0LXhzIHRleHQtd2hpdGUvMzBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ3LTIgaC0yIHJvdW5kZWQtZnVsbCBmbGV4LXNocmluay0wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmQ6IGxhbmdDb2xvcihyZXBvLmxhbmd1YWdlKSB9fSBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIHtyZXBvLmxhbmd1YWdlfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgdGV4dC14cyB0ZXh0LXdoaXRlLzI1XCIgYXJpYS1sYWJlbD17YCR7cmVwby5zdGFyc19jb3VudH0gc3RhcnNgfT5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz1cIjEyIDIgMTUuMDkgOC4yNiAyMiA5LjI3IDE3IDE0LjE0IDE4LjE4IDIxLjAyIDEyIDE3Ljc3IDUuODIgMjEuMDIgNyAxNC4xNCAyIDkuMjcgOC45MSA4LjI2IDEyIDJcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICB7cmVwby5zdGFyc19jb3VudH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC13aGl0ZS8yMCBtbC1hdXRvIHRhYnVsYXItbnVtc1wiPnt0aW1lQWdvKHJlcG8udXBkYXRlZCl9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsImdldFJlcG9zIiwiU0lURSIsIkdJVEVBX1VSTCIsIkdJVEVBX1VTRVJOQU1FIiwiTEFOR19DT0xPUiIsInB5dGhvbiIsImphdmFzY3JpcHQiLCJ0eXBlc2NyaXB0IiwiZ28iLCJydXN0IiwiYyIsImh0bWwiLCJjc3MiLCJzaGVsbCIsInJ1YnkiLCJqYXZhIiwibGFuZ0NvbG9yIiwibCIsInRvTG93ZXJDYXNlIiwidGltZUFnbyIsImQiLCJkaWZmIiwiRGF0ZSIsIm5vdyIsImdldFRpbWUiLCJtIiwiTWF0aCIsImZsb29yIiwiaCIsImRheXMiLCJQcm9qZWN0cyIsInJlcG9zIiwic2V0UmVwb3MiLCJlcnJvciIsInNldEVycm9yIiwicmVwb0xpbWl0IiwidGhlbiIsImNhdGNoIiwiZSIsIm1lc3NhZ2UiLCJzZWN0aW9uIiwiaWQiLCJjbGFzc05hbWUiLCJhcmlhLWxhYmVsbGVkYnkiLCJkaXYiLCJzcGFuIiwiaDIiLCJhIiwiaHJlZiIsInRhcmdldCIsInJlbCIsInN2ZyIsIndpZHRoIiwiaGVpZ2h0Iiwidmlld0JveCIsImZpbGwiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsImFyaWEtaGlkZGVuIiwicGF0aCIsIkFycmF5IiwibWFwIiwiXyIsImkiLCJwIiwiYXJpYS1saXZlIiwicmVwbyIsImh0bWxfdXJsIiwiYXJpYS1sYWJlbCIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsImxhbmd1YWdlIiwic3R5bGUiLCJiYWNrZ3JvdW5kIiwic3RhcnNfY291bnQiLCJwb2x5Z29uIiwicG9pbnRzIiwidXBkYXRlZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./components/Projects.tsx\n");
/***/ }),
/***/ "(ssr)/./lib/config.ts":
/*!***********************!*\
!*** ./lib/config.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 */ GITEA_TOKEN: () => (/* binding */ GITEA_TOKEN),\n/* harmony export */ GITEA_URL: () => (/* binding */ GITEA_URL),\n/* harmony export */ GITEA_USERNAME: () => (/* binding */ GITEA_USERNAME),\n/* harmony export */ SITE: () => (/* binding */ SITE)\n/* harmony export */ });\n// ★ UPDATE THESE ★\nconst GITEA_URL = process.env.NEXT_PUBLIC_GITEA_URL ?? \"https://git.williammarch.xyz\";\nconst GITEA_USERNAME = process.env.NEXT_PUBLIC_GITEA_USERNAME ?? \"m0dus\";\nconst GITEA_TOKEN = process.env.NEXT_PUBLIC_GITEA_TOKEN ?? \"\";\nconst SITE = {\n name: \"William March\",\n title: \"Software Engineer\",\n tagline: \"Building precise, purposeful, open-source software.\",\n about1: \"I'm a software engineer focused on writing clean, reliable code. I care about open-source tools that solve real problems — the kind that make other engineers' lives easier.\",\n about2: \"From small CLI utilities to complex systems, I approach every project with the same level of craft. Good code reads like good writing: clear, intentional, and easy to reason about.\",\n skills: [\n \"Go\",\n \"Python\",\n \"TypeScript\",\n \"Rust\",\n \"Linux\",\n \"Docker\",\n \"PostgreSQL\",\n \"Git\",\n \"Nix\"\n ],\n email: \"qemuguest@protonmail.com\",\n repoLimit: 6,\n commitFetchRepos: 4\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9saWIvY29uZmlnLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxtQkFBbUI7QUFDWixNQUFNQSxZQUFpQkMsUUFBUUMsR0FBRyxDQUFDQyxxQkFBcUIsSUFBUywrQkFBK0I7QUFDaEcsTUFBTUMsaUJBQWlCSCxRQUFRQyxHQUFHLENBQUNHLDBCQUEwQixJQUFJLFFBQVE7QUFDekUsTUFBTUMsY0FBaUJMLFFBQVFDLEdBQUcsQ0FBQ0ssdUJBQXVCLElBQU8sR0FBRztBQUVwRSxNQUFNQyxPQUFPO0lBQ2xCQyxNQUFZO0lBQ1pDLE9BQVk7SUFDWkMsU0FBWTtJQUNaQyxRQUFZO0lBQ1pDLFFBQVk7SUFDWkMsUUFBWTtRQUFDO1FBQU07UUFBVTtRQUFjO1FBQVE7UUFBUztRQUFVO1FBQWM7UUFBTztLQUFNO0lBQ2pHQyxPQUFZO0lBQ1pDLFdBQVk7SUFDWkMsa0JBQWtCO0FBQ3BCLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93aWxsaWFtLW1hcmNoLy4vbGliL2NvbmZpZy50cz8xMjg1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIOKYhSBVUERBVEUgVEhFU0Ug4piFXG5leHBvcnQgY29uc3QgR0lURUFfVVJMICAgICAgPSBwcm9jZXNzLmVudi5ORVhUX1BVQkxJQ19HSVRFQV9VUkwgICAgICA/PyAnaHR0cHM6Ly9naXQud2lsbGlhbW1hcmNoLnh5eic7XG5leHBvcnQgY29uc3QgR0lURUFfVVNFUk5BTUUgPSBwcm9jZXNzLmVudi5ORVhUX1BVQkxJQ19HSVRFQV9VU0VSTkFNRSA/PyAnbTBkdXMnO1xuZXhwb3J0IGNvbnN0IEdJVEVBX1RPS0VOICAgID0gcHJvY2Vzcy5lbnYuTkVYVF9QVUJMSUNfR0lURUFfVE9LRU4gICAgPz8gJyc7XG5cbmV4cG9ydCBjb25zdCBTSVRFID0ge1xuICBuYW1lOiAgICAgICAnV2lsbGlhbSBNYXJjaCcsXG4gIHRpdGxlOiAgICAgICdTb2Z0d2FyZSBFbmdpbmVlcicsXG4gIHRhZ2xpbmU6ICAgICdCdWlsZGluZyBwcmVjaXNlLCBwdXJwb3NlZnVsLCBvcGVuLXNvdXJjZSBzb2Z0d2FyZS4nLFxuICBhYm91dDE6ICAgICBcIkknbSBhIHNvZnR3YXJlIGVuZ2luZWVyIGZvY3VzZWQgb24gd3JpdGluZyBjbGVhbiwgcmVsaWFibGUgY29kZS4gSSBjYXJlIGFib3V0IG9wZW4tc291cmNlIHRvb2xzIHRoYXQgc29sdmUgcmVhbCBwcm9ibGVtcyDigJQgdGhlIGtpbmQgdGhhdCBtYWtlIG90aGVyIGVuZ2luZWVycycgbGl2ZXMgZWFzaWVyLlwiLFxuICBhYm91dDI6ICAgICBcIkZyb20gc21hbGwgQ0xJIHV0aWxpdGllcyB0byBjb21wbGV4IHN5c3RlbXMsIEkgYXBwcm9hY2ggZXZlcnkgcHJvamVjdCB3aXRoIHRoZSBzYW1lIGxldmVsIG9mIGNyYWZ0LiBHb29kIGNvZGUgcmVhZHMgbGlrZSBnb29kIHdyaXRpbmc6IGNsZWFyLCBpbnRlbnRpb25hbCwgYW5kIGVhc3kgdG8gcmVhc29uIGFib3V0LlwiLFxuICBza2lsbHM6ICAgICBbJ0dvJywgJ1B5dGhvbicsICdUeXBlU2NyaXB0JywgJ1J1c3QnLCAnTGludXgnLCAnRG9ja2VyJywgJ1Bvc3RncmVTUUwnLCAnR2l0JywgJ05peCddLFxuICBlbWFpbDogICAgICAncWVtdWd1ZXN0QHByb3Rvbm1haWwuY29tJyxcbiAgcmVwb0xpbWl0OiAgNixcbiAgY29tbWl0RmV0Y2hSZXBvczogNCxcbn07XG4iXSwibmFtZXMiOlsiR0lURUFfVVJMIiwicHJvY2VzcyIsImVudiIsIk5FWFRfUFVCTElDX0dJVEVBX1VSTCIsIkdJVEVBX1VTRVJOQU1FIiwiTkVYVF9QVUJMSUNfR0lURUFfVVNFUk5BTUUiLCJHSVRFQV9UT0tFTiIsIk5FWFRfUFVCTElDX0dJVEVBX1RPS0VOIiwiU0lURSIsIm5hbWUiLCJ0aXRsZSIsInRhZ2xpbmUiLCJhYm91dDEiLCJhYm91dDIiLCJza2lsbHMiLCJlbWFpbCIsInJlcG9MaW1pdCIsImNvbW1pdEZldGNoUmVwb3MiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./lib/config.ts\n");
/***/ }),
/***/ "(ssr)/./lib/gitea.ts":
/*!**********************!*\
!*** ./lib/gitea.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 */ calcStats: () => (/* binding */ calcStats),\n/* harmony export */ getHeatmap: () => (/* binding */ getHeatmap),\n/* harmony export */ getRecentCommits: () => (/* binding */ getRecentCommits),\n/* harmony export */ getRepoCommits: () => (/* binding */ getRepoCommits),\n/* harmony export */ getRepos: () => (/* binding */ getRepos)\n/* harmony export */ });\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config */ \"(ssr)/./lib/config.ts\");\n // keep only safe, non-secret values\nconst API_PREFIX = \"/api/gitea\";\nasync function get(path) {\n const res = await fetch(`${API_PREFIX}${path}`, {\n headers: {\n Accept: \"application/json\"\n },\n cache: \"no-store\"\n });\n if (!res.ok) throw new Error(`Gitea proxy ${path}: HTTP ${res.status}`);\n return res.json();\n}\nasync function getRepos(limit = 6) {\n return get(`/users/${_config__WEBPACK_IMPORTED_MODULE_0__.GITEA_USERNAME}/repos?limit=${limit}&sort=newest`);\n}\nasync function getHeatmap() {\n return get(`/users/${_config__WEBPACK_IMPORTED_MODULE_0__.GITEA_USERNAME}/heatmap`);\n}\nasync function getRepoCommits(repo, limit = 5) {\n return get(`/repos/${_config__WEBPACK_IMPORTED_MODULE_0__.GITEA_USERNAME}/${repo}/commits?limit=${limit}`);\n}\nasync function getRecentCommits(repos, perRepo = 4) {\n const results = await Promise.allSettled(repos.slice(0, 4).map((r)=>getRepoCommits(r.name, perRepo).then((commits)=>commits.map((c)=>({\n ...c,\n _repo: r.name,\n _repoUrl: r.html_url\n })))));\n const all = [];\n for (const r of results){\n if (r.status === \"fulfilled\") all.push(...r.value);\n }\n return all.sort((a, b)=>new Date(b.created).getTime() - new Date(a.created).getTime()).slice(0, 15);\n}\n/** Local date key (avoids UTC shift bugs) */ function dayKey(date) {\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, \"0\");\n const d = String(date.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${d}`;\n}\nfunction calcStats(heatmap) {\n const yearAgo = Date.now() / 1000 - 365 * 86400;\n const year = heatmap.filter((e)=>e.timestamp > yearAgo);\n const total = year.reduce((s, e)=>s + e.contributions, 0);\n const activeDays = year.filter((e)=>e.contributions > 0).length;\n const dateSet = new Set();\n for (const e of year){\n if (e.contributions <= 0) continue;\n const d = new Date(e.timestamp * 1000);\n dateSet.add(dayKey(d));\n }\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n // Current streak (backwards from today)\n let currentStreak = 0;\n const cur = new Date(today);\n if (!dateSet.has(dayKey(cur))) {\n cur.setDate(cur.getDate() - 1);\n }\n while(dateSet.has(dayKey(cur))){\n currentStreak++;\n cur.setDate(cur.getDate() - 1);\n }\n // Longest streak\n let longestStreak = 0;\n let streak = 0;\n const sorted = Array.from(dateSet).sort();\n for(let i = 0; i < sorted.length; i++){\n if (i === 0) {\n streak = 1;\n longestStreak = 1;\n continue;\n }\n const prev = new Date(sorted[i - 1] + \"T00:00:00\");\n prev.setDate(prev.getDate() + 1);\n if (dayKey(prev) === sorted[i]) streak++;\n else streak = 1;\n if (streak > longestStreak) longestStreak = streak;\n }\n return {\n total,\n currentStreak,\n longestStreak,\n activeDays\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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bGxpYW0tbWFyY2gvLi9saWIvZ2l0ZWEudHM/MGIzOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHSVRFQV9VU0VSTkFNRSB9IGZyb20gJy4vY29uZmlnJzsgLy8ga2VlcCBvbmx5IHNhZmUsIG5vbi1zZWNyZXQgdmFsdWVzXG5pbXBvcnQgdHlwZSB7XG4gIEdpdGVhUmVwbyxcbiAgR2l0ZWFDb21taXQsXG4gIEhlYXRtYXBFbnRyeSxcbiAgQ29tbWl0U3RhdHMsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBBUElfUFJFRklYID0gJy9hcGkvZ2l0ZWEnO1xuXG5hc3luYyBmdW5jdGlvbiBnZXQ8VD4ocGF0aDogc3RyaW5nKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke0FQSV9QUkVGSVh9JHtwYXRofWAsIHtcbiAgICBoZWFkZXJzOiB7IEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgY2FjaGU6ICduby1zdG9yZScsXG4gIH0pO1xuICBpZiAoIXJlcy5vaykgdGhyb3cgbmV3IEVycm9yKGBHaXRlYSBwcm94eSAke3BhdGh9OiBIVFRQICR7cmVzLnN0YXR1c31gKTtcbiAgcmV0dXJuIHJlcy5qc29uKCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRSZXBvcyhsaW1pdCA9IDYpOiBQcm9taXNlPEdpdGVhUmVwb1tdPiB7XG4gIHJldHVybiBnZXQ8R2l0ZWFSZXBvW10+KFxuICAgIGAvdXNlcnMvJHtHSVRFQV9VU0VSTkFNRX0vcmVwb3M/bGltaXQ9JHtsaW1pdH0mc29ydD1uZXdlc3RgXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRIZWF0bWFwKCk6IFByb21pc2U8SGVhdG1hcEVudHJ5W10+IHtcbiAgcmV0dXJuIGdldDxIZWF0bWFwRW50cnlbXT4oYC91c2Vycy8ke0dJVEVBX1VTRVJOQU1FfS9oZWF0bWFwYCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRSZXBvQ29tbWl0cyhcbiAgcmVwbzogc3RyaW5nLFxuICBsaW1pdCA9IDVcbik6IFByb21pc2U8R2l0ZWFDb21taXRbXT4ge1xuICByZXR1cm4gZ2V0PEdpdGVhQ29tbWl0W10+KFxuICAgIGAvcmVwb3MvJHtHSVRFQV9VU0VSTkFNRX0vJHtyZXBvfS9jb21taXRzP2xpbWl0PSR7bGltaXR9YFxuICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UmVjZW50Q29tbWl0cyhcbiAgcmVwb3M6IEdpdGVhUmVwb1tdLFxuICBwZXJSZXBvID0gNFxuKTogUHJvbWlzZTxHaXRlYUNvbW1pdFtdPiB7XG4gIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgcmVwb3Muc2xpY2UoMCwgNCkubWFwKChyKSA9PlxuICAgICAgZ2V0UmVwb0NvbW1pdHMoci5uYW1lLCBwZXJSZXBvKS50aGVuKChjb21taXRzKSA9PlxuICAgICAgICBjb21taXRzLm1hcCgoYykgPT4gKHtcbiAgICAgICAgICAuLi5jLFxuICAgICAgICAgIF9yZXBvOiByLm5hbWUsXG4gICAgICAgICAgX3JlcG9Vcmw6IHIuaHRtbF91cmwsXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjb25zdCBhbGw6IEdpdGVhQ29tbWl0W10gPSBbXTtcbiAgZm9yIChjb25zdCByIG9mIHJlc3VsdHMpIHtcbiAgICBpZiAoci5zdGF0dXMgPT09ICdmdWxmaWxsZWQnKSBhbGwucHVzaCguLi5yLnZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiBhbGxcbiAgICAuc29ydChcbiAgICAgIChhLCBiKSA9PlxuICAgICAgICBuZXcgRGF0ZShiLmNyZWF0ZWQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEuY3JlYXRlZCkuZ2V0VGltZSgpXG4gICAgKVxuICAgIC5zbGljZSgwLCAxNSk7XG59XG5cbi8qKiBMb2NhbCBkYXRlIGtleSAoYXZvaWRzIFVUQyBzaGlmdCBidWdzKSAqL1xuZnVuY3Rpb24gZGF5S2V5KGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICBjb25zdCB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtID0gU3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XG4gIGNvbnN0IGQgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gIHJldHVybiBgJHt5fS0ke219LSR7ZH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsY1N0YXRzKGhlYXRtYXA6IEhlYXRtYXBFbnRyeVtdKTogQ29tbWl0U3RhdHMge1xuICBjb25zdCB5ZWFyQWdvID0gRGF0ZS5ub3coKSAvIDEwMDAgLSAzNjUgKiA4NjQwMDtcbiAgY29uc3QgeWVhciA9IGhlYXRtYXAuZmlsdGVyKChlKSA9PiBlLnRpbWVzdGFtcCA+IHllYXJBZ28pO1xuICBjb25zdCB0b3RhbCA9IHllYXIucmVkdWNlKChzLCBlKSA9PiBzICsgZS5jb250cmlidXRpb25zLCAwKTtcbiAgY29uc3QgYWN0aXZlRGF5cyA9IHllYXIuZmlsdGVyKChlKSA9PiBlLmNvbnRyaWJ1dGlvbnMgPiAwKS5sZW5ndGg7XG5cbiAgY29uc3QgZGF0ZVNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IGUgb2YgeWVhcikge1xuICAgIGlmIChlLmNvbnRyaWJ1dGlvbnMgPD0gMCkgY29udGludWU7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKGUudGltZXN0YW1wICogMTAwMCk7XG4gICAgZGF0ZVNldC5hZGQoZGF5S2V5KGQpKTtcbiAgfVxuXG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgdG9kYXkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG5cbiAgLy8gQ3VycmVudCBzdHJlYWsgKGJhY2t3YXJkcyBmcm9tIHRvZGF5KVxuICBsZXQgY3VycmVudFN0cmVhayA9IDA7XG4gIGNvbnN0IGN1ciA9IG5ldyBEYXRlKHRvZGF5KTtcbiAgaWYgKCFkYXRlU2V0LmhhcyhkYXlLZXkoY3VyKSkpIHtcbiAgICBjdXIuc2V0RGF0ZShjdXIuZ2V0RGF0ZSgpIC0gMSk7XG4gIH1cbiAgd2hpbGUgKGRhdGVTZXQuaGFzKGRheUtleShjdXIpKSkge1xuICAgIGN1cnJlbnRTdHJlYWsrKztcbiAgICBjdXIuc2V0RGF0ZShjdXIuZ2V0RGF0ZSgpIC0gMSk7XG4gIH1cblxuICAvLyBMb25nZXN0IHN0cmVha1xuICBsZXQgbG9uZ2VzdFN0cmVhayA9IDA7XG4gIGxldCBzdHJlYWsgPSAwO1xuICBjb25zdCBzb3J0ZWQgPSBBcnJheS5mcm9tKGRhdGVTZXQpLnNvcnQoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgc3RyZWFrID0gMTtcbiAgICAgIGxvbmdlc3RTdHJlYWsgPSAxO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IHByZXYgPSBuZXcgRGF0ZShzb3J0ZWRbaSAtIDFdICsgJ1QwMDowMDowMCcpO1xuICAgIHByZXYuc2V0RGF0ZShwcmV2LmdldERhdGUoKSArIDEpO1xuICAgIGlmIChkYXlLZXkocHJldikgPT09IHNvcnRlZFtpXSkgc3RyZWFrKys7XG4gICAgZWxzZSBzdHJlYWsgPSAxO1xuICAgIGlmIChzdHJlYWsgPiBsb25nZXN0U3RyZWFrKSBsb25nZXN0U3RyZWFrID0gc3RyZWFrO1xuICB9XG5cbiAgcmV0dXJuIHsgdG90YWwsIGN1cnJlbnRTdHJlYWssIGxvbmdlc3RTdHJlYWssIGFjdGl2ZURheXMgfTtcbn1cbiJdLCJuYW1lcyI6WyJHSVRFQV9VU0VSTkFNRSIsIkFQSV9QUkVGSVgiLCJnZXQiLCJwYXRoIiwicmVzIiwiZmV0Y2giLCJoZWFkZXJzIiwiQWNjZXB0IiwiY2FjaGUiLCJvayIsIkVycm9yIiwic3RhdHVzIiwianNvbiIsImdldFJlcG9zIiwibGltaXQiLCJnZXRIZWF0bWFwIiwiZ2V0UmVwb0NvbW1pdHMiLCJyZXBvIiwiZ2V0UmVjZW50Q29tbWl0cyIsInJlcG9zIiwicGVyUmVwbyIsInJlc3VsdHMiLCJQcm9taXNlIiwiYWxsU2V0dGxlZCIsInNsaWNlIiwibWFwIiwiciIsIm5hbWUiLCJ0aGVuIiwiY29tbWl0cyIsImMiLCJfcmVwbyIsIl9yZXBvVXJsIiwiaHRtbF91cmwiLCJhbGwiLCJwdXNoIiwidmFsdWUiLCJzb3J0IiwiYSIsImIiLCJEYXRlIiwiY3JlYXRlZCIsImdldFRpbWUiLCJkYXlLZXkiLCJkYXRlIiwieSIsImdldEZ1bGxZZWFyIiwibSIsIlN0cmluZyIsImdldE1vbnRoIiwicGFkU3RhcnQiLCJkIiwiZ2V0RGF0ZSIsImNhbGNTdGF0cyIsImhlYXRtYXAiLCJ5ZWFyQWdvIiwibm93IiwieWVhciIsImZpbHRlciIsImUiLCJ0aW1lc3RhbXAiLCJ0b3RhbCIsInJlZHVjZSIsInMiLCJjb250cmlidXRpb25zIiwiYWN0aXZlRGF5cyIsImxlbmd0aCIsImRhdGVTZXQiLCJTZXQiLCJhZGQiLCJ0b2RheSIsInNldEhvdXJzIiwiY3VycmVudFN0cmVhayIsImN1ciIsImhhcyIsInNldERhdGUiLCJsb25nZXN0U3RyZWFrIiwic3RyZWFrIiwic29ydGVkIiwiQXJyYXkiLCJmcm9tIiwiaSIsInByZXYiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./lib/gitea.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__ = (\"d723ad607243\");\nif (false) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvZ2xvYmFscy5jc3MiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlFQUFlLGNBQWM7QUFDN0IsSUFBSSxLQUFVLEVBQUUsRUFBdUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93aWxsaWFtLW1hcmNoLy4vYXBwL2dsb2JhbHMuY3NzP2Y2MjAiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCJkNzIzYWQ2MDcyNDNcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\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 geist_font_sans__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! geist/font/sans */ \"(rsc)/./node_modules/geist/dist/sans.js\");\n/* harmony import */ var geist_font_mono__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! geist/font/mono */ \"(rsc)/./node_modules/geist/dist/mono.js\");\n/* harmony import */ var _globals_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./globals.css */ \"(rsc)/./app/globals.css\");\n\n\n\n\nconst metadata = {\n title: \"William March — Software Engineer\",\n description: \"Software engineer building precise, purposeful open-source tools.\",\n metadataBase: new URL(\"https://williammarch.xyz\"),\n openGraph: {\n title: \"William March\",\n description: \"Software engineer. Open-source builder.\",\n url: \"https://williammarch.xyz\",\n siteName: \"William March\"\n },\n twitter: {\n card: \"summary_large_image\",\n title: \"William March\",\n description: \"Software engineer.\"\n }\n};\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"en\",\n className: `${geist_font_sans__WEBPACK_IMPORTED_MODULE_1__.GeistSans.variable} ${geist_font_mono__WEBPACK_IMPORTED_MODULE_2__.GeistMono.variable}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n children: children\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/app/layout.tsx\",\n lineNumber: 22,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/app/layout.tsx\",\n lineNumber: 21,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvbGF5b3V0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUM0QztBQUNBO0FBQ3JCO0FBRWhCLE1BQU1FLFdBQXFCO0lBQ2hDQyxPQUFPO0lBQ1BDLGFBQWE7SUFDYkMsY0FBYyxJQUFJQyxJQUFJO0lBQ3RCQyxXQUFXO1FBQ1RKLE9BQU87UUFDUEMsYUFBYTtRQUNiSSxLQUFLO1FBQ0xDLFVBQVU7SUFDWjtJQUNBQyxTQUFTO1FBQUVDLE1BQU07UUFBdUJSLE9BQU87UUFBaUJDLGFBQWE7SUFBcUI7QUFDcEcsRUFBRTtBQUVhLFNBQVNRLFdBQVcsRUFBRUMsUUFBUSxFQUFpQztJQUM1RSxxQkFDRSw4REFBQ0M7UUFBS0MsTUFBSztRQUFLQyxXQUFXLENBQUMsRUFBRWhCLHNEQUFTQSxDQUFDaUIsUUFBUSxDQUFDLENBQUMsRUFBRWhCLHNEQUFTQSxDQUFDZ0IsUUFBUSxDQUFDLENBQUM7a0JBQ3RFLDRFQUFDQztzQkFBTUw7Ozs7Ozs7Ozs7O0FBR2IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93aWxsaWFtLW1hcmNoLy4vYXBwL2xheW91dC50c3g/OTk4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE1ldGFkYXRhIH0gZnJvbSAnbmV4dCc7XG5pbXBvcnQgeyBHZWlzdFNhbnMgfSBmcm9tICdnZWlzdC9mb250L3NhbnMnO1xuaW1wb3J0IHsgR2Vpc3RNb25vIH0gZnJvbSAnZ2Vpc3QvZm9udC9tb25vJztcbmltcG9ydCAnLi9nbG9iYWxzLmNzcyc7XG5cbmV4cG9ydCBjb25zdCBtZXRhZGF0YTogTWV0YWRhdGEgPSB7XG4gIHRpdGxlOiAnV2lsbGlhbSBNYXJjaCDigJQgU29mdHdhcmUgRW5naW5lZXInLFxuICBkZXNjcmlwdGlvbjogJ1NvZnR3YXJlIGVuZ2luZWVyIGJ1aWxkaW5nIHByZWNpc2UsIHB1cnBvc2VmdWwgb3Blbi1zb3VyY2UgdG9vbHMuJyxcbiAgbWV0YWRhdGFCYXNlOiBuZXcgVVJMKCdodHRwczovL3dpbGxpYW1tYXJjaC54eXonKSxcbiAgb3BlbkdyYXBoOiB7XG4gICAgdGl0bGU6ICdXaWxsaWFtIE1hcmNoJyxcbiAgICBkZXNjcmlwdGlvbjogJ1NvZnR3YXJlIGVuZ2luZWVyLiBPcGVuLXNvdXJjZSBidWlsZGVyLicsXG4gICAgdXJsOiAnaHR0cHM6Ly93aWxsaWFtbWFyY2gueHl6JyxcbiAgICBzaXRlTmFtZTogJ1dpbGxpYW0gTWFyY2gnLFxuICB9LFxuICB0d2l0dGVyOiB7IGNhcmQ6ICdzdW1tYXJ5X2xhcmdlX2ltYWdlJywgdGl0bGU6ICdXaWxsaWFtIE1hcmNoJywgZGVzY3JpcHRpb246ICdTb2Z0d2FyZSBlbmdpbmVlci4nIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSb290TGF5b3V0KHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8aHRtbCBsYW5nPVwiZW5cIiBjbGFzc05hbWU9e2Ake0dlaXN0U2Fucy52YXJpYWJsZX0gJHtHZWlzdE1vbm8udmFyaWFibGV9YH0+XG4gICAgICA8Ym9keT57Y2hpbGRyZW59PC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJHZWlzdFNhbnMiLCJHZWlzdE1vbm8iLCJtZXRhZGF0YSIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJtZXRhZGF0YUJhc2UiLCJVUkwiLCJvcGVuR3JhcGgiLCJ1cmwiLCJzaXRlTmFtZSIsInR3aXR0ZXIiLCJjYXJkIiwiUm9vdExheW91dCIsImNoaWxkcmVuIiwiaHRtbCIsImxhbmciLCJjbGFzc05hbWUiLCJ2YXJpYWJsZSIsImJvZHkiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/layout.tsx\n");
/***/ }),
/***/ "(rsc)/./app/page.tsx":
/*!**********************!*\
!*** ./app/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 */ Page)\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 _components_Nav__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/components/Nav */ \"(rsc)/./components/Nav.tsx\");\n/* harmony import */ var _components_Hero__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/Hero */ \"(rsc)/./components/Hero.tsx\");\n/* harmony import */ var _components_About__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/About */ \"(rsc)/./components/About.tsx\");\n/* harmony import */ var _components_Projects__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/Projects */ \"(rsc)/./components/Projects.tsx\");\n/* harmony import */ var _components_CommitSection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/CommitSection */ \"(rsc)/./components/CommitSection.tsx\");\n/* harmony import */ var _components_Contact__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/Contact */ \"(rsc)/./components/Contact.tsx\");\n/* harmony import */ var _components_Footer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/components/Footer */ \"(rsc)/./components/Footer.tsx\");\n\n\n\n\n\n\n\n\nfunction Page() {\n return /*#__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)(\"a\", {\n href: \"#main\",\n className: \"sr-only focus:not-sr-only focus:fixed focus:top-4 focus:left-4 focus:z-[200] focus:px-4 focus:py-2 focus:bg-white focus:text-black focus:rounded-lg focus:text-sm focus:font-semibold\",\n children: \"Skip to main content\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/app/page.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Nav__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/app/page.tsx\",\n lineNumber: 17,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n id: \"main\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Hero__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/app/page.tsx\",\n lineNumber: 19,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_About__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/app/page.tsx\",\n lineNumber: 20,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Projects__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/app/page.tsx\",\n lineNumber: 21,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_CommitSection__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/app/page.tsx\",\n lineNumber: 22,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Contact__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/app/page.tsx\",\n lineNumber: 23,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/app/page.tsx\",\n lineNumber: 18,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Footer__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/app/page.tsx\",\n lineNumber: 25,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBNEM7QUFDQztBQUNDO0FBQ0c7QUFDTTtBQUNQO0FBQ0Q7QUFFaEMsU0FBU087SUFDdEIscUJBQ0U7OzBCQUNFLDhEQUFDQztnQkFBRUMsTUFBSztnQkFBUUMsV0FBVTswQkFFVzs7Ozs7OzBCQUdyQyw4REFBQ1YsdURBQUdBOzs7OzswQkFDSiw4REFBQ1c7Z0JBQUtDLElBQUc7O2tDQUNQLDhEQUFDWCx3REFBSUE7Ozs7O2tDQUNMLDhEQUFDQyx5REFBS0E7Ozs7O2tDQUNOLDhEQUFDQyw0REFBUUE7Ozs7O2tDQUNULDhEQUFDQyxpRUFBYUE7Ozs7O2tDQUNkLDhEQUFDQywyREFBT0E7Ozs7Ozs7Ozs7OzBCQUVWLDhEQUFDQywwREFBTUE7Ozs7Ozs7QUFHYiIsInNvdXJjZXMiOlsid2VicGFjazovL3dpbGxpYW0tbWFyY2gvLi9hcHAvcGFnZS50c3g/NzYwMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTmF2ICAgICAgICAgIGZyb20gJ0AvY29tcG9uZW50cy9OYXYnO1xuaW1wb3J0IEhlcm8gICAgICAgICBmcm9tICdAL2NvbXBvbmVudHMvSGVybyc7XG5pbXBvcnQgQWJvdXQgICAgICAgIGZyb20gJ0AvY29tcG9uZW50cy9BYm91dCc7XG5pbXBvcnQgUHJvamVjdHMgICAgIGZyb20gJ0AvY29tcG9uZW50cy9Qcm9qZWN0cyc7XG5pbXBvcnQgQ29tbWl0U2VjdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvQ29tbWl0U2VjdGlvbic7XG5pbXBvcnQgQ29udGFjdCAgICAgIGZyb20gJ0AvY29tcG9uZW50cy9Db250YWN0JztcbmltcG9ydCBGb290ZXIgICAgICAgZnJvbSAnQC9jb21wb25lbnRzL0Zvb3Rlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBhZ2UoKSB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxhIGhyZWY9XCIjbWFpblwiIGNsYXNzTmFtZT1cInNyLW9ubHkgZm9jdXM6bm90LXNyLW9ubHkgZm9jdXM6Zml4ZWQgZm9jdXM6dG9wLTQgZm9jdXM6bGVmdC00XG4gICAgICAgIGZvY3VzOnotWzIwMF0gZm9jdXM6cHgtNCBmb2N1czpweS0yIGZvY3VzOmJnLXdoaXRlIGZvY3VzOnRleHQtYmxhY2sgZm9jdXM6cm91bmRlZC1sZ1xuICAgICAgICBmb2N1czp0ZXh0LXNtIGZvY3VzOmZvbnQtc2VtaWJvbGRcIj5cbiAgICAgICAgU2tpcCB0byBtYWluIGNvbnRlbnRcbiAgICAgIDwvYT5cbiAgICAgIDxOYXYgLz5cbiAgICAgIDxtYWluIGlkPVwibWFpblwiPlxuICAgICAgICA8SGVybyAvPlxuICAgICAgICA8QWJvdXQgLz5cbiAgICAgICAgPFByb2plY3RzIC8+XG4gICAgICAgIDxDb21taXRTZWN0aW9uIC8+XG4gICAgICAgIDxDb250YWN0IC8+XG4gICAgICA8L21haW4+XG4gICAgICA8Rm9vdGVyIC8+XG4gICAgPC8+XG4gICk7XG59XG4iXSwibmFtZXMiOlsiTmF2IiwiSGVybyIsIkFib3V0IiwiUHJvamVjdHMiLCJDb21taXRTZWN0aW9uIiwiQ29udGFjdCIsIkZvb3RlciIsIlBhZ2UiLCJhIiwiaHJlZiIsImNsYXNzTmFtZSIsIm1haW4iLCJpZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./app/page.tsx\n");
/***/ }),
/***/ "(rsc)/./components/About.tsx":
/*!******************************!*\
!*** ./components/About.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 */ About)\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 _lib_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/lib/config */ \"(rsc)/./lib/config.ts\");\n\n\nfunction About() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n id: \"about\",\n className: \"py-24 px-6\",\n \"aria-labelledby\": \"about-heading\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-5xl mx-auto grid md:grid-cols-[auto_1fr] gap-16 items-start\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-shrink-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"glass w-40 h-40 md:w-48 md:h-48 flex items-center justify-center rounded-2xl overflow-hidden\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-6xl font-black text-white/10 tracking-tighter select-none\",\n children: \"WM\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/About.tsx\",\n lineNumber: 10,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/About.tsx\",\n lineNumber: 9,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/About.tsx\",\n lineNumber: 8,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-6\",\n children: [\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)(\"span\", {\n className: \"label\",\n children: \"About\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/About.tsx\",\n lineNumber: 17,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n id: \"about-heading\",\n className: \"text-[clamp(1.8rem,4vw,2.5rem)] font-black tracking-tight text-white leading-tight\",\n children: [\n \"Building software\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {\n className: \"hidden sm:block\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/About.tsx\",\n lineNumber: 20,\n columnNumber: 32\n }, this),\n \" that matters.\"\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/About.tsx\",\n lineNumber: 18,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/About.tsx\",\n lineNumber: 16,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-white/50 leading-relaxed max-w-[52ch]\",\n children: _lib_config__WEBPACK_IMPORTED_MODULE_1__.SITE.about1\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/About.tsx\",\n lineNumber: 23,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-white/50 leading-relaxed max-w-[52ch]\",\n children: _lib_config__WEBPACK_IMPORTED_MODULE_1__.SITE.about2\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/About.tsx\",\n lineNumber: 24,\n columnNumber: 11\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)(\"p\", {\n className: \"text-xs font-semibold uppercase tracking-widest text-white/30 mb-3\",\n children: \"Stack\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/About.tsx\",\n lineNumber: 27,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-wrap gap-2\",\n children: _lib_config__WEBPACK_IMPORTED_MODULE_1__.SITE.skills.map((s)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-3 py-1 text-xs font-medium text-white/40 bg-white/[0.04] border border-white/[0.07] rounded-full hover:text-white/60 hover:border-white/[0.12] transition-colors duration-150 cursor-default\",\n children: s\n }, s, false, {\n fileName: \"/Users/will/Documents/william-march/components/About.tsx\",\n lineNumber: 30,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/About.tsx\",\n lineNumber: 28,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/About.tsx\",\n lineNumber: 26,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/About.tsx\",\n lineNumber: 15,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/About.tsx\",\n lineNumber: 6,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/About.tsx\",\n lineNumber: 5,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9jb21wb25lbnRzL0Fib3V0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFvQztBQUVyQixTQUFTQztJQUN0QixxQkFDRSw4REFBQ0M7UUFBUUMsSUFBRztRQUFRQyxXQUFVO1FBQWFDLG1CQUFnQjtrQkFDekQsNEVBQUNDO1lBQUlGLFdBQVU7OzhCQUViLDhEQUFDRTtvQkFBSUYsV0FBVTs4QkFDYiw0RUFBQ0U7d0JBQUlGLFdBQVU7a0NBQ2IsNEVBQUNHOzRCQUFLSCxXQUFVO3NDQUFpRTs7Ozs7Ozs7Ozs7Ozs7Ozs4QkFLckYsOERBQUNFO29CQUFJRixXQUFVOztzQ0FDYiw4REFBQ0U7OzhDQUNDLDhEQUFDQztvQ0FBS0gsV0FBVTs4Q0FBUTs7Ozs7OzhDQUN4Qiw4REFBQ0k7b0NBQUdMLElBQUc7b0NBQ0xDLFdBQVU7O3dDQUFxRjtzREFDOUUsOERBQUNLOzRDQUFHTCxXQUFVOzs7Ozs7d0NBQW9COzs7Ozs7Ozs7Ozs7O3NDQUd2RCw4REFBQ007NEJBQUVOLFdBQVU7c0NBQThDSiw2Q0FBSUEsQ0FBQ1csTUFBTTs7Ozs7O3NDQUN0RSw4REFBQ0Q7NEJBQUVOLFdBQVU7c0NBQThDSiw2Q0FBSUEsQ0FBQ1ksTUFBTTs7Ozs7O3NDQUV0RSw4REFBQ047OzhDQUNDLDhEQUFDSTtvQ0FBRU4sV0FBVTs4Q0FBcUU7Ozs7Ozs4Q0FDbEYsOERBQUNFO29DQUFJRixXQUFVOzhDQUNaSiw2Q0FBSUEsQ0FBQ2EsTUFBTSxDQUFDQyxHQUFHLENBQUNDLENBQUFBLGtCQUNmLDhEQUFDUjs0Q0FDQ0gsV0FBVTtzREFHVFc7MkNBSlFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhM0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93aWxsaWFtLW1hcmNoLy4vY29tcG9uZW50cy9BYm91dC50c3g/ZTU2NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTSVRFIH0gZnJvbSAnQC9saWIvY29uZmlnJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQWJvdXQoKSB7XG4gIHJldHVybiAoXG4gICAgPHNlY3Rpb24gaWQ9XCJhYm91dFwiIGNsYXNzTmFtZT1cInB5LTI0IHB4LTZcIiBhcmlhLWxhYmVsbGVkYnk9XCJhYm91dC1oZWFkaW5nXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTV4bCBteC1hdXRvIGdyaWQgbWQ6Z3JpZC1jb2xzLVthdXRvXzFmcl0gZ2FwLTE2IGl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgIHsvKiBBdmF0YXIgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC1zaHJpbmstMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ2xhc3Mgdy00MCBoLTQwIG1kOnctNDggbWQ6aC00OCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLTJ4bCBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtNnhsIGZvbnQtYmxhY2sgdGV4dC13aGl0ZS8xMCB0cmFja2luZy10aWdodGVyIHNlbGVjdC1ub25lXCI+V008L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBCb2R5ICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgZ2FwLTZcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibGFiZWxcIj5BYm91dDwvc3Bhbj5cbiAgICAgICAgICAgIDxoMiBpZD1cImFib3V0LWhlYWRpbmdcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LVtjbGFtcCgxLjhyZW0sNHZ3LDIuNXJlbSldIGZvbnQtYmxhY2sgdHJhY2tpbmctdGlnaHQgdGV4dC13aGl0ZSBsZWFkaW5nLXRpZ2h0XCI+XG4gICAgICAgICAgICAgIEJ1aWxkaW5nIHNvZnR3YXJlPGJyIGNsYXNzTmFtZT1cImhpZGRlbiBzbTpibG9ja1wiIC8+IHRoYXQgbWF0dGVycy5cbiAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC13aGl0ZS81MCBsZWFkaW5nLXJlbGF4ZWQgbWF4LXctWzUyY2hdXCI+e1NJVEUuYWJvdXQxfTwvcD5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlLzUwIGxlYWRpbmctcmVsYXhlZCBtYXgtdy1bNTJjaF1cIj57U0lURS5hYm91dDJ9PC9wPlxuXG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IHRleHQtd2hpdGUvMzAgbWItM1wiPlN0YWNrPC9wPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMlwiPlxuICAgICAgICAgICAgICB7U0lURS5za2lsbHMubWFwKHMgPT4gKFxuICAgICAgICAgICAgICAgIDxzcGFuIGtleT17c31cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInB4LTMgcHktMSB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtd2hpdGUvNDAgYmctd2hpdGUvWzAuMDRdXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlciBib3JkZXItd2hpdGUvWzAuMDddIHJvdW5kZWQtZnVsbCBob3Zlcjp0ZXh0LXdoaXRlLzYwIGhvdmVyOmJvcmRlci13aGl0ZS9bMC4xMl1cbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMTUwIGN1cnNvci1kZWZhdWx0XCI+XG4gICAgICAgICAgICAgICAgICB7c31cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICApO1xufVxuIl0sIm5hbWVzIjpbIlNJVEUiLCJBYm91dCIsInNlY3Rpb24iLCJpZCIsImNsYXNzTmFtZSIsImFyaWEtbGFiZWxsZWRieSIsImRpdiIsInNwYW4iLCJoMiIsImJyIiwicCIsImFib3V0MSIsImFib3V0MiIsInNraWxscyIsIm1hcCIsInMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./components/About.tsx\n");
/***/ }),
/***/ "(rsc)/./components/CommitSection.tsx":
/*!**************************************!*\
!*** ./components/CommitSection.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/will/Documents/william-march/components/CommitSection.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/will/Documents/william-march/components/CommitSection.tsx#default`));
/***/ }),
/***/ "(rsc)/./components/Contact.tsx":
/*!********************************!*\
!*** ./components/Contact.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/will/Documents/william-march/components/Contact.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/will/Documents/william-march/components/Contact.tsx#default`));
/***/ }),
/***/ "(rsc)/./components/Footer.tsx":
/*!*******************************!*\
!*** ./components/Footer.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 */ Footer)\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 _lib_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/lib/config */ \"(rsc)/./lib/config.ts\");\n\n\nfunction Footer() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"footer\", {\n className: \"border-t border-white/[0.05] py-8 px-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-5xl mx-auto flex items-center justify-between flex-wrap gap-4 text-xs text-white/20 font-mono\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"\\xa9 \",\n new Date().getFullYear(),\n \" William March\"\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Footer.tsx\",\n lineNumber: 8,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: `${_lib_config__WEBPACK_IMPORTED_MODULE_1__.GITEA_URL}/${_lib_config__WEBPACK_IMPORTED_MODULE_1__.GITEA_USERNAME}`,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"hover:text-white/40 transition-colors\",\n children: [\n _lib_config__WEBPACK_IMPORTED_MODULE_1__.GITEA_URL.replace(/^https?:\\/\\//, \"\"),\n \"/\",\n _lib_config__WEBPACK_IMPORTED_MODULE_1__.GITEA_USERNAME\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Footer.tsx\",\n lineNumber: 9,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"williammarch.xyz\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Footer.tsx\",\n lineNumber: 13,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Footer.tsx\",\n lineNumber: 6,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Footer.tsx\",\n lineNumber: 5,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9jb21wb25lbnRzL0Zvb3Rlci50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBeUQ7QUFFMUMsU0FBU0U7SUFDdEIscUJBQ0UsOERBQUNDO1FBQU9DLFdBQVU7a0JBQ2hCLDRFQUFDQztZQUFJRCxXQUFVOzs4QkFFYiw4REFBQ0U7O3dCQUFLO3dCQUFHLElBQUlDLE9BQU9DLFdBQVc7d0JBQUc7Ozs7Ozs7OEJBQ2xDLDhEQUFDQztvQkFBRUMsTUFBTSxDQUFDLEVBQUVWLGtEQUFTQSxDQUFDLENBQUMsRUFBRUMsdURBQWNBLENBQUMsQ0FBQztvQkFBRVUsUUFBTztvQkFBU0MsS0FBSTtvQkFDN0RSLFdBQVU7O3dCQUNUSixrREFBU0EsQ0FBQ2EsT0FBTyxDQUFDLGdCQUFnQjt3QkFBSTt3QkFBRVosdURBQWNBOzs7Ozs7OzhCQUV6RCw4REFBQ0s7OEJBQUs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSWQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93aWxsaWFtLW1hcmNoLy4vY29tcG9uZW50cy9Gb290ZXIudHN4P2E3OWYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR0lURUFfVVJMLCBHSVRFQV9VU0VSTkFNRSB9IGZyb20gJ0AvbGliL2NvbmZpZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZvb3RlcigpIHtcbiAgcmV0dXJuIChcbiAgICA8Zm9vdGVyIGNsYXNzTmFtZT1cImJvcmRlci10IGJvcmRlci13aGl0ZS9bMC4wNV0gcHktOCBweC02XCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTV4bCBteC1hdXRvIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBmbGV4LXdyYXAgZ2FwLTRcbiAgICAgICAgdGV4dC14cyB0ZXh0LXdoaXRlLzIwIGZvbnQtbW9ub1wiPlxuICAgICAgICA8c3Bhbj7CqSB7bmV3IERhdGUoKS5nZXRGdWxsWWVhcigpfSBXaWxsaWFtIE1hcmNoPC9zcGFuPlxuICAgICAgICA8YSBocmVmPXtgJHtHSVRFQV9VUkx9LyR7R0lURUFfVVNFUk5BTUV9YH0gdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgY2xhc3NOYW1lPVwiaG92ZXI6dGV4dC13aGl0ZS80MCB0cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICAgIHtHSVRFQV9VUkwucmVwbGFjZSgvXmh0dHBzPzpcXC9cXC8vLCAnJyl9L3tHSVRFQV9VU0VSTkFNRX1cbiAgICAgICAgPC9hPlxuICAgICAgICA8c3Bhbj53aWxsaWFtbWFyY2gueHl6PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb290ZXI+XG4gICk7XG59XG4iXSwibmFtZXMiOlsiR0lURUFfVVJMIiwiR0lURUFfVVNFUk5BTUUiLCJGb290ZXIiLCJmb290ZXIiLCJjbGFzc05hbWUiLCJkaXYiLCJzcGFuIiwiRGF0ZSIsImdldEZ1bGxZZWFyIiwiYSIsImhyZWYiLCJ0YXJnZXQiLCJyZWwiLCJyZXBsYWNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./components/Footer.tsx\n");
/***/ }),
/***/ "(rsc)/./components/Hero.tsx":
/*!*****************************!*\
!*** ./components/Hero.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 */ Hero)\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 _lib_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/lib/config */ \"(rsc)/./lib/config.ts\");\n\n\nfunction Hero() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"relative min-h-[100dvh] flex items-center noise overflow-hidden\",\n \"aria-labelledby\": \"hero-name\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 dot-grid opacity-[0.35] pointer-events-none\",\n \"aria-hidden\": \"true\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 7,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 pointer-events-none\",\n style: {\n background: \"radial-gradient(ellipse 80% 70% at 50% 60%, transparent 30%, #070707 100%)\"\n },\n \"aria-hidden\": \"true\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 9,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative z-10 w-full max-w-5xl mx-auto px-6 pt-28 pb-24\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col gap-8 max-w-3xl\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 self-start\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"inline-flex items-center gap-2 px-3 py-1 rounded-full text-xs font-medium text-white/50 bg-white/[0.04] border border-white/[0.07]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-1.5 h-1.5 rounded-full bg-white/50 animate-pulse\",\n \"aria-hidden\": \"true\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 19,\n columnNumber: 15\n }, this),\n \"Software Engineer\"\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 17,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 16,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n id: \"hero-name\",\n className: \"text-[clamp(3.5rem,10vw,8rem)] font-black leading-[0.9] tracking-[-0.05em] text-white\",\n children: [\n \"William\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 27,\n columnNumber: 20\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white/25\",\n children: \"March\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 28,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 25,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-[clamp(1rem,2vw,1.25rem)] text-white/40 max-w-[44ch] leading-relaxed font-light\",\n children: _lib_config__WEBPACK_IMPORTED_MODULE_1__.SITE.tagline\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 32,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-wrap gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"#projects\",\n className: \"btn btn-primary\",\n children: [\n \"View work\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"14\",\n height: \"14\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2.5\",\n \"aria-hidden\": \"true\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"M5 12h14M12 5l7 7-7 7\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 41,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 40,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 38,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"#contact\",\n className: \"btn btn-ghost\",\n children: \"Get in touch\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 44,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 37,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 14,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-10 left-6 flex items-center gap-2 text-white/20 text-xs font-mono\",\n \"aria-hidden\": \"true\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-[1px] h-8 bg-gradient-to-b from-transparent to-white/20\"\n }, void 0, false, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 50,\n columnNumber: 11\n }, this),\n \"scroll\"\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 49,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 13,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/will/Documents/william-march/components/Hero.tsx\",\n lineNumber: 5,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9jb21wb25lbnRzL0hlcm8udHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQW9DO0FBRXJCLFNBQVNDO0lBQ3RCLHFCQUNFLDhEQUFDQztRQUFRQyxXQUFVO1FBQWtFQyxtQkFBZ0I7OzBCQUVuRyw4REFBQ0M7Z0JBQUlGLFdBQVU7Z0JBQStERyxlQUFZOzs7Ozs7MEJBRTFGLDhEQUFDRDtnQkFBSUYsV0FBVTtnQkFDYkksT0FBTztvQkFBRUMsWUFBWTtnQkFBNkU7Z0JBQ2xHRixlQUFZOzs7Ozs7MEJBRWQsOERBQUNEO2dCQUFJRixXQUFVOztrQ0FDYiw4REFBQ0U7d0JBQUlGLFdBQVU7OzBDQUViLDhEQUFDRTtnQ0FBSUYsV0FBVTswQ0FDYiw0RUFBQ007b0NBQUtOLFdBQVU7O3NEQUVkLDhEQUFDTTs0Q0FBS04sV0FBVTs0Q0FBcURHLGVBQVk7Ozs7Ozt3Q0FBUzs7Ozs7Ozs7Ozs7OzBDQU05Riw4REFBQ0k7Z0NBQUdDLElBQUc7Z0NBQ0xSLFdBQVU7O29DQUF3RjtrREFDM0YsOERBQUNTOzs7OztrREFDUiw4REFBQ0g7d0NBQUtOLFdBQVU7a0RBQWdCOzs7Ozs7Ozs7Ozs7MENBSWxDLDhEQUFDVTtnQ0FBRVYsV0FBVTswQ0FDVkgsNkNBQUlBLENBQUNjLE9BQU87Ozs7OzswQ0FJZiw4REFBQ1Q7Z0NBQUlGLFdBQVU7O2tEQUNiLDhEQUFDWTt3Q0FBRUMsTUFBSzt3Q0FBWWIsV0FBVTs7NENBQWtCOzBEQUU5Qyw4REFBQ2M7Z0RBQUlDLE9BQU07Z0RBQUtDLFFBQU87Z0RBQUtDLFNBQVE7Z0RBQVlDLE1BQUs7Z0RBQU9DLFFBQU87Z0RBQWVDLGFBQVk7Z0RBQU1qQixlQUFZOzBEQUM5Ryw0RUFBQ2tCO29EQUFLQyxHQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztrREFHWiw4REFBQ1Y7d0NBQUVDLE1BQUs7d0NBQVdiLFdBQVU7a0RBQWdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7a0NBS2pELDhEQUFDRTt3QkFBSUYsV0FBVTt3QkFBb0ZHLGVBQVk7OzBDQUM3Ryw4REFBQ0c7Z0NBQUtOLFdBQVU7Ozs7Ozs0QkFBOEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNeEYiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93aWxsaWFtLW1hcmNoLy4vY29tcG9uZW50cy9IZXJvLnRzeD9lNzc5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNJVEUgfSBmcm9tICdAL2xpYi9jb25maWcnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBIZXJvKCkge1xuICByZXR1cm4gKFxuICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInJlbGF0aXZlIG1pbi1oLVsxMDBkdmhdIGZsZXggaXRlbXMtY2VudGVyIG5vaXNlIG92ZXJmbG93LWhpZGRlblwiIGFyaWEtbGFiZWxsZWRieT1cImhlcm8tbmFtZVwiPlxuICAgICAgey8qIERvdCBncmlkICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIGRvdC1ncmlkIG9wYWNpdHktWzAuMzVdIHBvaW50ZXItZXZlbnRzLW5vbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgey8qIFJhZGlhbCB2aWduZXR0ZSAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBwb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZDogJ3JhZGlhbC1ncmFkaWVudChlbGxpcHNlIDgwJSA3MCUgYXQgNTAlIDYwJSwgdHJhbnNwYXJlbnQgMzAlLCAjMDcwNzA3IDEwMCUpJyB9fVxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHotMTAgdy1mdWxsIG1heC13LTV4bCBteC1hdXRvIHB4LTYgcHQtMjggcGItMjRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGdhcC04IG1heC13LTN4bFwiPlxuICAgICAgICAgIHsvKiBTdGF0dXMgcGlsbCAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHNlbGYtc3RhcnRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBweC0zIHB5LTEgcm91bmRlZC1mdWxsIHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC13aGl0ZS81MFxuICAgICAgICAgICAgICBiZy13aGl0ZS9bMC4wNF0gYm9yZGVyIGJvcmRlci13aGl0ZS9bMC4wN11cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidy0xLjUgaC0xLjUgcm91bmRlZC1mdWxsIGJnLXdoaXRlLzUwIGFuaW1hdGUtcHVsc2VcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICBTb2Z0d2FyZSBFbmdpbmVlclxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIE5hbWUgKi99XG4gICAgICAgICAgPGgxIGlkPVwiaGVyby1uYW1lXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtW2NsYW1wKDMuNXJlbSwxMHZ3LDhyZW0pXSBmb250LWJsYWNrIGxlYWRpbmctWzAuOV0gdHJhY2tpbmctWy0wLjA1ZW1dIHRleHQtd2hpdGVcIj5cbiAgICAgICAgICAgIFdpbGxpYW08YnIgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtd2hpdGUvMjVcIj5NYXJjaDwvc3Bhbj5cbiAgICAgICAgICA8L2gxPlxuXG4gICAgICAgICAgey8qIFRhZ2xpbmUgKi99XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1bY2xhbXAoMXJlbSwydncsMS4yNXJlbSldIHRleHQtd2hpdGUvNDAgbWF4LXctWzQ0Y2hdIGxlYWRpbmctcmVsYXhlZCBmb250LWxpZ2h0XCI+XG4gICAgICAgICAgICB7U0lURS50YWdsaW5lfVxuICAgICAgICAgIDwvcD5cblxuICAgICAgICAgIHsvKiBDVEFzICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXdyYXAgZ2FwLTNcIj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCIjcHJvamVjdHNcIiBjbGFzc05hbWU9XCJidG4gYnRuLXByaW1hcnlcIj5cbiAgICAgICAgICAgICAgVmlldyB3b3JrXG4gICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIyLjVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUgMTJoMTRNMTIgNWw3IDctNyA3XCIvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDxhIGhyZWY9XCIjY29udGFjdFwiIGNsYXNzTmFtZT1cImJ0biBidG4tZ2hvc3RcIj5HZXQgaW4gdG91Y2g8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBTY3JvbGwgaGludCAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMTAgbGVmdC02IGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtd2hpdGUvMjAgdGV4dC14cyBmb250LW1vbm9cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ3LVsxcHhdIGgtOCBiZy1ncmFkaWVudC10by1iIGZyb20tdHJhbnNwYXJlbnQgdG8td2hpdGUvMjBcIiAvPlxuICAgICAgICAgIHNjcm9sbFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJTSVRFIiwiSGVybyIsInNlY3Rpb24iLCJjbGFzc05hbWUiLCJhcmlhLWxhYmVsbGVkYnkiLCJkaXYiLCJhcmlhLWhpZGRlbiIsInN0eWxlIiwiYmFja2dyb3VuZCIsInNwYW4iLCJoMSIsImlkIiwiYnIiLCJwIiwidGFnbGluZSIsImEiLCJocmVmIiwic3ZnIiwid2lkdGgiLCJoZWlnaHQiLCJ2aWV3Qm94IiwiZmlsbCIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwicGF0aCIsImQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./components/Hero.tsx\n");
/***/ }),
/***/ "(rsc)/./components/Nav.tsx":
/*!****************************!*\
!*** ./components/Nav.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/will/Documents/william-march/components/Nav.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/will/Documents/william-march/components/Nav.tsx#default`));
/***/ }),
/***/ "(rsc)/./components/Projects.tsx":
/*!*********************************!*\
!*** ./components/Projects.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/will/Documents/william-march/components/Projects.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/will/Documents/william-march/components/Projects.tsx#default`));
/***/ }),
/***/ "(rsc)/./lib/config.ts":
/*!***********************!*\
!*** ./lib/config.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 */ GITEA_TOKEN: () => (/* binding */ GITEA_TOKEN),\n/* harmony export */ GITEA_URL: () => (/* binding */ GITEA_URL),\n/* harmony export */ GITEA_USERNAME: () => (/* binding */ GITEA_USERNAME),\n/* harmony export */ SITE: () => (/* binding */ SITE)\n/* harmony export */ });\n// ★ UPDATE THESE ★\nconst GITEA_URL = process.env.NEXT_PUBLIC_GITEA_URL ?? \"https://git.williammarch.xyz\";\nconst GITEA_USERNAME = process.env.NEXT_PUBLIC_GITEA_USERNAME ?? \"m0dus\";\nconst GITEA_TOKEN = process.env.NEXT_PUBLIC_GITEA_TOKEN ?? \"\";\nconst SITE = {\n name: \"William March\",\n title: \"Software Engineer\",\n tagline: \"Building precise, purposeful, open-source software.\",\n about1: \"I'm a software engineer focused on writing clean, reliable code. I care about open-source tools that solve real problems — the kind that make other engineers' lives easier.\",\n about2: \"From small CLI utilities to complex systems, I approach every project with the same level of craft. Good code reads like good writing: clear, intentional, and easy to reason about.\",\n skills: [\n \"Go\",\n \"Python\",\n \"TypeScript\",\n \"Rust\",\n \"Linux\",\n \"Docker\",\n \"PostgreSQL\",\n \"Git\",\n \"Nix\"\n ],\n email: \"qemuguest@protonmail.com\",\n repoLimit: 6,\n commitFetchRepos: 4\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9saWIvY29uZmlnLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxtQkFBbUI7QUFDWixNQUFNQSxZQUFpQkMsUUFBUUMsR0FBRyxDQUFDQyxxQkFBcUIsSUFBUywrQkFBK0I7QUFDaEcsTUFBTUMsaUJBQWlCSCxRQUFRQyxHQUFHLENBQUNHLDBCQUEwQixJQUFJLFFBQVE7QUFDekUsTUFBTUMsY0FBaUJMLFFBQVFDLEdBQUcsQ0FBQ0ssdUJBQXVCLElBQU8sR0FBRztBQUVwRSxNQUFNQyxPQUFPO0lBQ2xCQyxNQUFZO0lBQ1pDLE9BQVk7SUFDWkMsU0FBWTtJQUNaQyxRQUFZO0lBQ1pDLFFBQVk7SUFDWkMsUUFBWTtRQUFDO1FBQU07UUFBVTtRQUFjO1FBQVE7UUFBUztRQUFVO1FBQWM7UUFBTztLQUFNO0lBQ2pHQyxPQUFZO0lBQ1pDLFdBQVk7SUFDWkMsa0JBQWtCO0FBQ3BCLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93aWxsaWFtLW1hcmNoLy4vbGliL2NvbmZpZy50cz8xMjg1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIOKYhSBVUERBVEUgVEhFU0Ug4piFXG5leHBvcnQgY29uc3QgR0lURUFfVVJMICAgICAgPSBwcm9jZXNzLmVudi5ORVhUX1BVQkxJQ19HSVRFQV9VUkwgICAgICA/PyAnaHR0cHM6Ly9naXQud2lsbGlhbW1hcmNoLnh5eic7XG5leHBvcnQgY29uc3QgR0lURUFfVVNFUk5BTUUgPSBwcm9jZXNzLmVudi5ORVhUX1BVQkxJQ19HSVRFQV9VU0VSTkFNRSA/PyAnbTBkdXMnO1xuZXhwb3J0IGNvbnN0IEdJVEVBX1RPS0VOICAgID0gcHJvY2Vzcy5lbnYuTkVYVF9QVUJMSUNfR0lURUFfVE9LRU4gICAgPz8gJyc7XG5cbmV4cG9ydCBjb25zdCBTSVRFID0ge1xuICBuYW1lOiAgICAgICAnV2lsbGlhbSBNYXJjaCcsXG4gIHRpdGxlOiAgICAgICdTb2Z0d2FyZSBFbmdpbmVlcicsXG4gIHRhZ2xpbmU6ICAgICdCdWlsZGluZyBwcmVjaXNlLCBwdXJwb3NlZnVsLCBvcGVuLXNvdXJjZSBzb2Z0d2FyZS4nLFxuICBhYm91dDE6ICAgICBcIkknbSBhIHNvZnR3YXJlIGVuZ2luZWVyIGZvY3VzZWQgb24gd3JpdGluZyBjbGVhbiwgcmVsaWFibGUgY29kZS4gSSBjYXJlIGFib3V0IG9wZW4tc291cmNlIHRvb2xzIHRoYXQgc29sdmUgcmVhbCBwcm9ibGVtcyDigJQgdGhlIGtpbmQgdGhhdCBtYWtlIG90aGVyIGVuZ2luZWVycycgbGl2ZXMgZWFzaWVyLlwiLFxuICBhYm91dDI6ICAgICBcIkZyb20gc21hbGwgQ0xJIHV0aWxpdGllcyB0byBjb21wbGV4IHN5c3RlbXMsIEkgYXBwcm9hY2ggZXZlcnkgcHJvamVjdCB3aXRoIHRoZSBzYW1lIGxldmVsIG9mIGNyYWZ0LiBHb29kIGNvZGUgcmVhZHMgbGlrZSBnb29kIHdyaXRpbmc6IGNsZWFyLCBpbnRlbnRpb25hbCwgYW5kIGVhc3kgdG8gcmVhc29uIGFib3V0LlwiLFxuICBza2lsbHM6ICAgICBbJ0dvJywgJ1B5dGhvbicsICdUeXBlU2NyaXB0JywgJ1J1c3QnLCAnTGludXgnLCAnRG9ja2VyJywgJ1Bvc3RncmVTUUwnLCAnR2l0JywgJ05peCddLFxuICBlbWFpbDogICAgICAncWVtdWd1ZXN0QHByb3Rvbm1haWwuY29tJyxcbiAgcmVwb0xpbWl0OiAgNixcbiAgY29tbWl0RmV0Y2hSZXBvczogNCxcbn07XG4iXSwibmFtZXMiOlsiR0lURUFfVVJMIiwicHJvY2VzcyIsImVudiIsIk5FWFRfUFVCTElDX0dJVEVBX1VSTCIsIkdJVEVBX1VTRVJOQU1FIiwiTkVYVF9QVUJMSUNfR0lURUFfVVNFUk5BTUUiLCJHSVRFQV9UT0tFTiIsIk5FWFRfUFVCTElDX0dJVEVBX1RPS0VOIiwiU0lURSIsIm5hbWUiLCJ0aXRsZSIsInRhZ2xpbmUiLCJhYm91dDEiLCJhYm91dDIiLCJza2lsbHMiLCJlbWFpbCIsInJlcG9MaW1pdCIsImNvbW1pdEZldGNoUmVwb3MiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./lib/config.ts\n");
/***/ })
};
;
// 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/geist"], () => (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fwill%2FDocuments%2Fwilliam-march%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fwill%2FDocuments%2Fwilliam-march&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D!")));
module.exports = __webpack_exports__;
})();