commit 74f8e268c31e9f1aeafbab54b9a8b11de7335a1f Author: mblanke Date: Wed Oct 29 16:22:35 2025 -0400 Initial commit: Holiday Travel App with resort comparison, trip management, and multi-provider search diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..1f99326 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,14 @@ +node_modules +.next +.git +.vscode +*.log +npm-debug.log* +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local +coverage +.nyc_output +*.ps1 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..f6c6bee --- /dev/null +++ b/.env.example @@ -0,0 +1,4 @@ +HOME_AIRPORT=YOW +DEFAULT_CURRENCY=CAD +DEMO=false +N8N_WEBHOOK_URL= diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/.next/app-build-manifest.json b/.next/app-build-manifest.json new file mode 100644 index 0000000..e43b462 --- /dev/null +++ b/.next/app-build-manifest.json @@ -0,0 +1,15 @@ +{ + "pages": { + "/page": [ + "static/chunks/webpack.js", + "static/chunks/main-app.js", + "static/chunks/app/page.js" + ], + "/layout": [ + "static/chunks/webpack.js", + "static/chunks/main-app.js", + "static/css/app/layout.css", + "static/chunks/app/layout.js" + ] + } +} \ No newline at end of file diff --git a/.next/build-manifest.json b/.next/build-manifest.json new file mode 100644 index 0000000..018cb67 --- /dev/null +++ b/.next/build-manifest.json @@ -0,0 +1,19 @@ +{ + "polyfillFiles": [ + "static/chunks/polyfills.js" + ], + "devFiles": [], + "ampDevFiles": [], + "lowPriorityFiles": [ + "static/development/_buildManifest.js", + "static/development/_ssgManifest.js" + ], + "rootMainFiles": [ + "static/chunks/webpack.js", + "static/chunks/main-app.js" + ], + "pages": { + "/_app": [] + }, + "ampFirstPages": [] +} \ No newline at end of file diff --git a/.next/cache/webpack/client-development/0.pack.gz b/.next/cache/webpack/client-development/0.pack.gz new file mode 100644 index 0000000..908721d Binary files /dev/null and b/.next/cache/webpack/client-development/0.pack.gz differ diff --git a/.next/cache/webpack/client-development/1.pack.gz b/.next/cache/webpack/client-development/1.pack.gz new file mode 100644 index 0000000..8c4c1d4 Binary files /dev/null and b/.next/cache/webpack/client-development/1.pack.gz differ diff --git a/.next/cache/webpack/client-development/2.pack.gz b/.next/cache/webpack/client-development/2.pack.gz new file mode 100644 index 0000000..f85eb9f Binary files /dev/null and b/.next/cache/webpack/client-development/2.pack.gz differ diff --git a/.next/cache/webpack/client-development/3.pack.gz b/.next/cache/webpack/client-development/3.pack.gz new file mode 100644 index 0000000..eef00f1 Binary files /dev/null and b/.next/cache/webpack/client-development/3.pack.gz differ diff --git a/.next/cache/webpack/client-development/4.pack.gz b/.next/cache/webpack/client-development/4.pack.gz new file mode 100644 index 0000000..1813373 Binary files /dev/null and b/.next/cache/webpack/client-development/4.pack.gz differ diff --git a/.next/cache/webpack/client-development/index.pack.gz b/.next/cache/webpack/client-development/index.pack.gz new file mode 100644 index 0000000..e3c74da Binary files /dev/null and b/.next/cache/webpack/client-development/index.pack.gz differ diff --git a/.next/cache/webpack/client-development/index.pack.gz.old b/.next/cache/webpack/client-development/index.pack.gz.old new file mode 100644 index 0000000..d6e5bca Binary files /dev/null and b/.next/cache/webpack/client-development/index.pack.gz.old differ diff --git a/.next/cache/webpack/server-development/0.pack.gz b/.next/cache/webpack/server-development/0.pack.gz new file mode 100644 index 0000000..64e88ff Binary files /dev/null and b/.next/cache/webpack/server-development/0.pack.gz differ diff --git a/.next/cache/webpack/server-development/1.pack.gz b/.next/cache/webpack/server-development/1.pack.gz new file mode 100644 index 0000000..a0c01c3 Binary files /dev/null and b/.next/cache/webpack/server-development/1.pack.gz differ diff --git a/.next/cache/webpack/server-development/2.pack.gz b/.next/cache/webpack/server-development/2.pack.gz new file mode 100644 index 0000000..640fb57 Binary files /dev/null and b/.next/cache/webpack/server-development/2.pack.gz differ diff --git a/.next/cache/webpack/server-development/3.pack.gz b/.next/cache/webpack/server-development/3.pack.gz new file mode 100644 index 0000000..d153687 Binary files /dev/null and b/.next/cache/webpack/server-development/3.pack.gz differ diff --git a/.next/cache/webpack/server-development/4.pack.gz b/.next/cache/webpack/server-development/4.pack.gz new file mode 100644 index 0000000..f82becb Binary files /dev/null and b/.next/cache/webpack/server-development/4.pack.gz differ diff --git a/.next/cache/webpack/server-development/5.pack.gz b/.next/cache/webpack/server-development/5.pack.gz new file mode 100644 index 0000000..34b647e Binary files /dev/null and b/.next/cache/webpack/server-development/5.pack.gz differ diff --git a/.next/cache/webpack/server-development/6.pack.gz b/.next/cache/webpack/server-development/6.pack.gz new file mode 100644 index 0000000..baf030e Binary files /dev/null and b/.next/cache/webpack/server-development/6.pack.gz differ diff --git a/.next/cache/webpack/server-development/7.pack.gz b/.next/cache/webpack/server-development/7.pack.gz new file mode 100644 index 0000000..33e4342 Binary files /dev/null and b/.next/cache/webpack/server-development/7.pack.gz differ diff --git a/.next/cache/webpack/server-development/8.pack.gz b/.next/cache/webpack/server-development/8.pack.gz new file mode 100644 index 0000000..0fda842 Binary files /dev/null and b/.next/cache/webpack/server-development/8.pack.gz differ diff --git a/.next/cache/webpack/server-development/index.pack.gz b/.next/cache/webpack/server-development/index.pack.gz new file mode 100644 index 0000000..933f155 Binary files /dev/null and b/.next/cache/webpack/server-development/index.pack.gz differ diff --git a/.next/cache/webpack/server-development/index.pack.gz.old b/.next/cache/webpack/server-development/index.pack.gz.old new file mode 100644 index 0000000..57224d5 Binary files /dev/null and b/.next/cache/webpack/server-development/index.pack.gz.old differ diff --git a/.next/package.json b/.next/package.json new file mode 100644 index 0000000..7156107 --- /dev/null +++ b/.next/package.json @@ -0,0 +1 @@ +{"type": "commonjs"} \ No newline at end of file diff --git a/.next/react-loadable-manifest.json b/.next/react-loadable-manifest.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/.next/react-loadable-manifest.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/.next/server/app-paths-manifest.json b/.next/server/app-paths-manifest.json new file mode 100644 index 0000000..e234c2e --- /dev/null +++ b/.next/server/app-paths-manifest.json @@ -0,0 +1,3 @@ +{ + "/page": "app/page.js" +} \ No newline at end of file diff --git a/.next/server/app/api/resort-compare/route.js b/.next/server/app/api/resort-compare/route.js new file mode 100644 index 0000000..c314af7 --- /dev/null +++ b/.next/server/app/api/resort-compare/route.js @@ -0,0 +1,76 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(() => { +var exports = {}; +exports.id = "app/api/resort-compare/route"; +exports.ids = ["app/api/resort-compare/route"]; +exports.modules = { + +/***/ "next/dist/compiled/next-server/app-page.runtime.dev.js": +/*!*************************************************************************!*\ + !*** external "next/dist/compiled/next-server/app-page.runtime.dev.js" ***! + \*************************************************************************/ +/***/ ((module) => { + +module.exports = require("next/dist/compiled/next-server/app-page.runtime.dev.js"); + +/***/ }), + +/***/ "next/dist/compiled/next-server/app-route.runtime.dev.js": +/*!**************************************************************************!*\ + !*** external "next/dist/compiled/next-server/app-route.runtime.dev.js" ***! + \**************************************************************************/ +/***/ ((module) => { + +module.exports = require("next/dist/compiled/next-server/app-route.runtime.dev.js"); + +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fresort-compare%2Froute&page=%2Fapi%2Fresort-compare%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fresort-compare%2Froute.ts&appDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!": +/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fresort-compare%2Froute&page=%2Fapi%2Fresort-compare%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fresort-compare%2Froute.ts&appDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D! ***! + \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ originalPathname: () => (/* binding */ originalPathname),\n/* harmony export */ patchFetch: () => (/* binding */ patchFetch),\n/* harmony export */ requestAsyncStorage: () => (/* binding */ requestAsyncStorage),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ serverHooks: () => (/* binding */ serverHooks),\n/* harmony export */ staticGenerationAsyncStorage: () => (/* binding */ staticGenerationAsyncStorage)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/future/route-modules/app-route/module.compiled */ \"(rsc)/./node_modules/next/dist/server/future/route-modules/app-route/module.compiled.js\");\n/* harmony import */ var next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_future_route_modules_app_route_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_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/server/lib/patch-fetch */ \"(rsc)/./node_modules/next/dist/server/lib/patch-fetch.js\");\n/* harmony import */ var next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var D_Projects_Dev_Holiday_Travel_App_app_api_resort_compare_route_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app/api/resort-compare/route.ts */ \"(rsc)/./app/api/resort-compare/route.ts\");\n\n\n\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"\"\nconst routeModule = new next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppRouteRouteModule({\n definition: {\n kind: next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_ROUTE,\n page: \"/api/resort-compare/route\",\n pathname: \"/api/resort-compare\",\n filename: \"route\",\n bundlePath: \"app/api/resort-compare/route\"\n },\n resolvedPagePath: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\api\\\\resort-compare\\\\route.ts\",\n nextConfigOutput,\n userland: D_Projects_Dev_Holiday_Travel_App_app_api_resort_compare_route_ts__WEBPACK_IMPORTED_MODULE_3__\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { requestAsyncStorage, staticGenerationAsyncStorage, serverHooks } = routeModule;\nconst originalPathname = \"/api/resort-compare/route\";\nfunction patchFetch() {\n return (0,next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__.patchFetch)({\n serverHooks,\n staticGenerationAsyncStorage\n });\n}\n\n\n//# sourceMappingURL=app-route.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWFwcC1sb2FkZXIuanM/bmFtZT1hcHAlMkZhcGklMkZyZXNvcnQtY29tcGFyZSUyRnJvdXRlJnBhZ2U9JTJGYXBpJTJGcmVzb3J0LWNvbXBhcmUlMkZyb3V0ZSZhcHBQYXRocz0mcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcGklMkZyZXNvcnQtY29tcGFyZSUyRnJvdXRlLnRzJmFwcERpcj1EJTNBJTVDUHJvamVjdHMlNUNEZXYlNUNIb2xpZGF5JTIwVHJhdmVsJTIwQXBwJTVDYXBwJnBhZ2VFeHRlbnNpb25zPXRzeCZwYWdlRXh0ZW5zaW9ucz10cyZwYWdlRXh0ZW5zaW9ucz1qc3gmcGFnZUV4dGVuc2lvbnM9anMmcm9vdERpcj1EJTNBJTVDUHJvamVjdHMlNUNEZXYlNUNIb2xpZGF5JTIwVHJhdmVsJTIwQXBwJmlzRGV2PXRydWUmdHNjb25maWdQYXRoPXRzY29uZmlnLmpzb24mYmFzZVBhdGg9JmFzc2V0UHJlZml4PSZuZXh0Q29uZmlnT3V0cHV0PSZwcmVmZXJyZWRSZWdpb249Jm1pZGRsZXdhcmVDb25maWc9ZTMwJTNEISIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBc0c7QUFDdkM7QUFDYztBQUN5QjtBQUN0RztBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0hBQW1CO0FBQzNDO0FBQ0EsY0FBYyx5RUFBUztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsWUFBWTtBQUNaLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxRQUFRLGlFQUFpRTtBQUN6RTtBQUNBO0FBQ0EsV0FBVyw0RUFBVztBQUN0QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ3VIOztBQUV2SCIsInNvdXJjZXMiOlsid2VicGFjazovL2hvbGlkYXktZGVhbC1maW5kZXIvPzUwY2IiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwUm91dGVSb3V0ZU1vZHVsZSB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2Z1dHVyZS9yb3V0ZS1tb2R1bGVzL2FwcC1yb3V0ZS9tb2R1bGUuY29tcGlsZWRcIjtcbmltcG9ydCB7IFJvdXRlS2luZCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2Z1dHVyZS9yb3V0ZS1raW5kXCI7XG5pbXBvcnQgeyBwYXRjaEZldGNoIGFzIF9wYXRjaEZldGNoIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL3BhdGNoLWZldGNoXCI7XG5pbXBvcnQgKiBhcyB1c2VybGFuZCBmcm9tIFwiRDpcXFxcUHJvamVjdHNcXFxcRGV2XFxcXEhvbGlkYXkgVHJhdmVsIEFwcFxcXFxhcHBcXFxcYXBpXFxcXHJlc29ydC1jb21wYXJlXFxcXHJvdXRlLnRzXCI7XG4vLyBXZSBpbmplY3QgdGhlIG5leHRDb25maWdPdXRwdXQgaGVyZSBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlbSBpbiB0aGUgcm91dGVcbi8vIG1vZHVsZS5cbmNvbnN0IG5leHRDb25maWdPdXRwdXQgPSBcIlwiXG5jb25zdCByb3V0ZU1vZHVsZSA9IG5ldyBBcHBSb3V0ZVJvdXRlTW9kdWxlKHtcbiAgICBkZWZpbml0aW9uOiB7XG4gICAgICAgIGtpbmQ6IFJvdXRlS2luZC5BUFBfUk9VVEUsXG4gICAgICAgIHBhZ2U6IFwiL2FwaS9yZXNvcnQtY29tcGFyZS9yb3V0ZVwiLFxuICAgICAgICBwYXRobmFtZTogXCIvYXBpL3Jlc29ydC1jb21wYXJlXCIsXG4gICAgICAgIGZpbGVuYW1lOiBcInJvdXRlXCIsXG4gICAgICAgIGJ1bmRsZVBhdGg6IFwiYXBwL2FwaS9yZXNvcnQtY29tcGFyZS9yb3V0ZVwiXG4gICAgfSxcbiAgICByZXNvbHZlZFBhZ2VQYXRoOiBcIkQ6XFxcXFByb2plY3RzXFxcXERldlxcXFxIb2xpZGF5IFRyYXZlbCBBcHBcXFxcYXBwXFxcXGFwaVxcXFxyZXNvcnQtY29tcGFyZVxcXFxyb3V0ZS50c1wiLFxuICAgIG5leHRDb25maWdPdXRwdXQsXG4gICAgdXNlcmxhbmRcbn0pO1xuLy8gUHVsbCBvdXQgdGhlIGV4cG9ydHMgdGhhdCB3ZSBuZWVkIHRvIGV4cG9zZSBmcm9tIHRoZSBtb2R1bGUuIFRoaXMgc2hvdWxkXG4vLyBiZSBlbGltaW5hdGVkIHdoZW4gd2UndmUgbW92ZWQgdGhlIG90aGVyIHJvdXRlcyB0byB0aGUgbmV3IGZvcm1hdC4gVGhlc2Vcbi8vIGFyZSB1c2VkIHRvIGhvb2sgaW50byB0aGUgcm91dGUuXG5jb25zdCB7IHJlcXVlc3RBc3luY1N0b3JhZ2UsIHN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2UsIHNlcnZlckhvb2tzIH0gPSByb3V0ZU1vZHVsZTtcbmNvbnN0IG9yaWdpbmFsUGF0aG5hbWUgPSBcIi9hcGkvcmVzb3J0LWNvbXBhcmUvcm91dGVcIjtcbmZ1bmN0aW9uIHBhdGNoRmV0Y2goKSB7XG4gICAgcmV0dXJuIF9wYXRjaEZldGNoKHtcbiAgICAgICAgc2VydmVySG9va3MsXG4gICAgICAgIHN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2VcbiAgICB9KTtcbn1cbmV4cG9ydCB7IHJvdXRlTW9kdWxlLCByZXF1ZXN0QXN5bmNTdG9yYWdlLCBzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlLCBzZXJ2ZXJIb29rcywgb3JpZ2luYWxQYXRobmFtZSwgcGF0Y2hGZXRjaCwgIH07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwcC1yb3V0ZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fresort-compare%2Froute&page=%2Fapi%2Fresort-compare%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fresort-compare%2Froute.ts&appDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!\n"); + +/***/ }), + +/***/ "(rsc)/./app/api/resort-compare/route.ts": +/*!*****************************************!*\ + !*** ./app/api/resort-compare/route.ts ***! + \*****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ POST: () => (/* binding */ POST)\n/* harmony export */ });\n/* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! zod */ \"(rsc)/./node_modules/zod/v3/types.js\");\n/* harmony import */ var _lib_resorts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/lib/resorts */ \"(rsc)/./lib/resorts.ts\");\n/* harmony import */ var _barrel_optimize_names_addDays_format_date_fns__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=addDays,format!=!date-fns */ \"(rsc)/./node_modules/date-fns/format.mjs\");\n/* harmony import */ var _barrel_optimize_names_addDays_format_date_fns__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=addDays,format!=!date-fns */ \"(rsc)/./node_modules/date-fns/addDays.mjs\");\n\n\n\nconst schema = zod__WEBPACK_IMPORTED_MODULE_1__.object({\n resorts: zod__WEBPACK_IMPORTED_MODULE_1__.array(zod__WEBPACK_IMPORTED_MODULE_1__.string()).nonempty(),\n departureDate: zod__WEBPACK_IMPORTED_MODULE_1__.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/),\n origin: zod__WEBPACK_IMPORTED_MODULE_1__.string().min(3).max(4).default(\"YOW\"),\n tripLength: zod__WEBPACK_IMPORTED_MODULE_1__.number().int().positive().default(7),\n budget: zod__WEBPACK_IMPORTED_MODULE_1__.number().positive().optional(),\n contingencyPercent: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(50).optional().default(15),\n preferences: zod__WEBPACK_IMPORTED_MODULE_1__.object({\n beach: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n pool: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n golf: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n spa: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n food: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n nightlife: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n shopping: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n culture: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n outdoor: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional(),\n family: zod__WEBPACK_IMPORTED_MODULE_1__.number().min(0).max(10).optional()\n }).optional()\n});\nfunction buildFlightLinks(origin, destination, departureDate, returnDate) {\n const depFormatted = departureDate.replace(/-/g, \"\");\n const retFormatted = returnDate.replace(/-/g, \"\");\n return {\n skyscanner: `https://www.skyscanner.ca/transport/flights/${origin.toLowerCase()}/${destination.toLowerCase()}/${depFormatted}/${retFormatted}/`,\n googleFlights: `https://www.google.com/travel/flights?q=${encodeURIComponent(`flights from ${origin} to ${destination} ${departureDate} to ${returnDate}`)}`,\n airCanada: `https://www.aircanada.com/ca/en/aco/home/book/travel.html?${new URLSearchParams({\n org1: origin.toUpperCase(),\n dest1: destination.toUpperCase(),\n departureDate1: departureDate,\n returnDate1: returnDate,\n tripType: \"2\",\n lang: \"en-CA\"\n }).toString()}`\n };\n}\nfunction estimateResortCost(priceRange, nights) {\n // CANADIAN ALL-INCLUSIVE PACKAGE PRICING (per person, CAD)\n // Based on real travel agent quotes for 7-night packages from Ottawa\n // Includes: flights, accommodations, transfers, taxes\n const packageRanges = {\n \"$\": {\n min: 1200,\n max: 1600\n },\n \"$$\": {\n min: 1600,\n max: 2000\n },\n \"$$$\": {\n min: 2000,\n max: 2400\n },\n \"$$$$\": {\n min: 2400,\n max: 2800\n },\n \"$$$$$\": {\n min: 2800,\n max: 3500\n } // Luxury packages\n };\n // Adjust for trip length (base is 7 nights)\n const baseDays = 7;\n const lengthMultiplier = nights / baseDays;\n const range = packageRanges[priceRange] || packageRanges[\"$$$\"];\n return {\n min: Math.round(range.min * lengthMultiplier),\n max: Math.round(range.max * lengthMultiplier)\n };\n}\nasync function POST(req) {\n try {\n const body = await req.json();\n const parsed = schema.parse(body);\n const comparisons = [];\n const notFound = [];\n // Calculate return date\n const returnDate = (0,_barrel_optimize_names_addDays_format_date_fns__WEBPACK_IMPORTED_MODULE_2__.format)((0,_barrel_optimize_names_addDays_format_date_fns__WEBPACK_IMPORTED_MODULE_3__.addDays)(new Date(parsed.departureDate), parsed.tripLength), \"yyyy-MM-dd\");\n for (const resortName of parsed.resorts){\n const resort = (0,_lib_resorts__WEBPACK_IMPORTED_MODULE_0__.findResort)(resortName);\n if (!resort) {\n notFound.push(resortName);\n continue;\n }\n const matchScore = (0,_lib_resorts__WEBPACK_IMPORTED_MODULE_0__.calculateResortScore)(resort, parsed.preferences);\n const flightLinks = buildFlightLinks(parsed.origin, resort.airportCode, parsed.departureDate, returnDate);\n // Package pricing (per person, includes flights)\n const packageCost = estimateResortCost(resort.priceRange || \"$$$\", parsed.tripLength);\n // Total cost for 2 people (standard package assumption)\n const estimatedTotalMin = packageCost.min * 2;\n const estimatedTotalMax = packageCost.max * 2;\n // Per person cost for display\n const estimatedPerPerson = `$${packageCost.min}-$${packageCost.max} per person`;\n // Budget analysis\n let withinBudget = true;\n let budgetStatus = \"Within Budget\";\n let overBudgetAmount = 0;\n if (parsed.budget) {\n const contingencyAmount = parsed.budget * ((parsed.contingencyPercent || 15) / 100);\n const budgetWithContingency = parsed.budget + contingencyAmount;\n if (estimatedTotalMin > parsed.budget) {\n overBudgetAmount = estimatedTotalMin - parsed.budget;\n // Check if high score justifies going over budget\n if (matchScore >= 1800 && estimatedTotalMin <= budgetWithContingency) {\n withinBudget = true;\n budgetStatus = `Over budget by $${overBudgetAmount.toFixed(0)} but HIGH MATCH (within ${parsed.contingencyPercent}% contingency)`;\n } else if (estimatedTotalMin <= budgetWithContingency) {\n withinBudget = true;\n budgetStatus = `Within ${parsed.contingencyPercent}% contingency (+$${overBudgetAmount.toFixed(0)})`;\n } else {\n withinBudget = false;\n budgetStatus = `Over budget by $${overBudgetAmount.toFixed(0)} (exceeds contingency)`;\n }\n } else {\n budgetStatus = `Under budget by $${(parsed.budget - estimatedTotalMin).toFixed(0)}`;\n }\n }\n comparisons.push({\n resort,\n matchScore,\n flightLinks,\n estimatedFlightPrice: estimatedPerPerson,\n estimatedFlightPriceMin: packageCost.min,\n estimatedFlightPriceMax: packageCost.max,\n estimatedTotalMin,\n estimatedTotalMax,\n withinBudget,\n budgetStatus,\n overBudgetAmount: overBudgetAmount > 0 ? overBudgetAmount : undefined\n });\n }\n // Sort by match score (highest first)\n comparisons.sort((a, b)=>b.matchScore - a.matchScore);\n // Filter by budget if specified (but include high-scoring resorts within contingency)\n let budgetFiltered = comparisons;\n if (parsed.budget) {\n budgetFiltered = comparisons.filter((c)=>c.withinBudget);\n }\n return new Response(JSON.stringify({\n comparisons: budgetFiltered,\n allComparisons: comparisons,\n notFound,\n budgetInfo: parsed.budget ? {\n budget: parsed.budget,\n contingencyPercent: parsed.contingencyPercent || 15,\n contingencyAmount: parsed.budget * ((parsed.contingencyPercent || 15) / 100),\n maxBudget: parsed.budget + parsed.budget * ((parsed.contingencyPercent || 15) / 100),\n withinBudgetCount: budgetFiltered.length,\n totalCount: comparisons.length,\n overBudgetCount: comparisons.length - budgetFiltered.length\n } : null,\n flightInfo: {\n origin: parsed.origin,\n departureDate: parsed.departureDate,\n returnDate,\n tripLength: parsed.tripLength\n },\n packageSites: [\n \"Sunwing Vacations\",\n \"Air Canada Vacations\",\n \"WestJet Vacations\",\n \"Air Transat Holidays\",\n \"RedTag.ca\"\n ],\n pricingNote: \"Estimates are for individual bookings (flight + resort). Package deals are typically 30-40% cheaper.\"\n }), {\n headers: {\n \"content-type\": \"application/json\"\n }\n });\n } catch (e) {\n return new Response(JSON.stringify({\n error: e?.message || \"Invalid payload\"\n }), {\n status: 400,\n headers: {\n \"content-type\": \"application/json\"\n }\n });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFFO2dCQUMxRWlGLFdBQVdwQyxPQUFPL0MsTUFBTSxHQUFJK0MsT0FBTy9DLE1BQU0sR0FBSSxFQUFDK0MsT0FBTzdDLGtCQUFrQixJQUFJLEVBQUMsSUFBSyxHQUFFO2dCQUNuRmtGLG1CQUFtQlQsZUFBZVUsTUFBTTtnQkFDeENDLFlBQVlyQyxZQUFZb0MsTUFBTTtnQkFDOUJFLGlCQUFpQnRDLFlBQVlvQyxNQUFNLEdBQUdWLGVBQWVVLE1BQU07WUFDN0QsSUFBSTtZQUNKRyxZQUFZO2dCQUNWaEcsUUFBUXVELE9BQU92RCxNQUFNO2dCQUNyQkYsZUFBZXlELE9BQU96RCxhQUFhO2dCQUNuQzBCO2dCQUNBcEIsWUFBWW1ELE9BQU9uRCxVQUFVO1lBQy9CO1lBQ0E2RixjQUFjO2dCQUNaO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2FBQ0Q7WUFDREMsYUFBYTtRQUNmLElBQUk7WUFDRkMsU0FBUztnQkFBRSxnQkFBZ0I7WUFBbUI7UUFDaEQ7SUFFRixFQUFFLE9BQU9DLEdBQVE7UUFDZixPQUFPLElBQUlkLFNBQVNDLEtBQUtDLFNBQVMsQ0FBQztZQUNqQ2EsT0FBT0QsR0FBR0UsV0FBVztRQUN2QixJQUFJO1lBQ0ZDLFFBQVE7WUFDUkosU0FBUztnQkFBRSxnQkFBZ0I7WUFBbUI7UUFDaEQ7SUFDRjtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vaG9saWRheS1kZWFsLWZpbmRlci8uL2FwcC9hcGkvcmVzb3J0LWNvbXBhcmUvcm91dGUudHM/NTQ2NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZXh0UmVxdWVzdCB9IGZyb20gXCJuZXh0L3NlcnZlclwiO1xyXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xyXG5pbXBvcnQgeyBmaW5kUmVzb3J0LCBjYWxjdWxhdGVSZXNvcnRTY29yZSwgdHlwZSBSZXNvcnQgfSBmcm9tIFwiQC9saWIvcmVzb3J0c1wiO1xyXG5pbXBvcnQgeyBmb3JtYXQsIGFkZERheXMgfSBmcm9tIFwiZGF0ZS1mbnNcIjtcclxuXHJcbmNvbnN0IHNjaGVtYSA9IHoub2JqZWN0KHtcclxuICByZXNvcnRzOiB6LmFycmF5KHouc3RyaW5nKCkpLm5vbmVtcHR5KCksXHJcbiAgZGVwYXJ0dXJlRGF0ZTogei5zdHJpbmcoKS5yZWdleCgvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9JC8pLFxyXG4gIG9yaWdpbjogei5zdHJpbmcoKS5taW4oMykubWF4KDQpLmRlZmF1bHQoXCJZT1dcIiksXHJcbiAgdHJpcExlbmd0aDogei5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpLmRlZmF1bHQoNyksXHJcbiAgYnVkZ2V0OiB6Lm51bWJlcigpLnBvc2l0aXZlKCkub3B0aW9uYWwoKSxcclxuICBjb250aW5nZW5jeVBlcmNlbnQ6IHoubnVtYmVyKCkubWluKDApLm1heCg1MCkub3B0aW9uYWwoKS5kZWZhdWx0KDE1KSwgLy8gQWxsb3cgdXAgdG8gMTUlIG92ZXIgYnVkZ2V0IGZvciBoaWdoIHNjb3Jlc1xyXG4gIHByZWZlcmVuY2VzOiB6Lm9iamVjdCh7XHJcbiAgICBiZWFjaDogei5udW1iZXIoKS5taW4oMCkubWF4KDEwKS5vcHRpb25hbCgpLFxyXG4gICAgcG9vbDogei5udW1iZXIoKS5taW4oMCkubWF4KDEwKS5vcHRpb25hbCgpLFxyXG4gICAgZ29sZjogei5udW1iZXIoKS5taW4oMCkubWF4KDEwKS5vcHRpb25hbCgpLFxyXG4gICAgc3BhOiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMTApLm9wdGlvbmFsKCksXHJcbiAgICBmb29kOiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMTApLm9wdGlvbmFsKCksXHJcbiAgICBuaWdodGxpZmU6IHoubnVtYmVyKCkubWluKDApLm1heCgxMCkub3B0aW9uYWwoKSxcclxuICAgIHNob3BwaW5nOiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMTApLm9wdGlvbmFsKCksXHJcbiAgICBjdWx0dXJlOiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMTApLm9wdGlvbmFsKCksXHJcbiAgICBvdXRkb29yOiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMTApLm9wdGlvbmFsKCksXHJcbiAgICBmYW1pbHk6IHoubnVtYmVyKCkubWluKDApLm1heCgxMCkub3B0aW9uYWwoKSxcclxuICB9KS5vcHRpb25hbCgpXHJcbn0pO1xyXG5cclxudHlwZSBSZXNvcnRDb21wYXJpc29uID0ge1xyXG4gIHJlc29ydDogUmVzb3J0O1xyXG4gIG1hdGNoU2NvcmU6IG51bWJlcjtcclxuICBmbGlnaHRMaW5rczoge1xyXG4gICAgc2t5c2Nhbm5lcjogc3RyaW5nO1xyXG4gICAgZ29vZ2xlRmxpZ2h0czogc3RyaW5nO1xyXG4gICAgYWlyQ2FuYWRhOiBzdHJpbmc7XHJcbiAgfTtcclxuICBlc3RpbWF0ZWRGbGlnaHRQcmljZT86IHN0cmluZztcclxuICBlc3RpbWF0ZWRGbGlnaHRQcmljZU1pbj86IG51bWJlcjtcclxuICBlc3RpbWF0ZWRGbGlnaHRQcmljZU1heD86IG51bWJlcjtcclxuICBlc3RpbWF0ZWRUb3RhbE1pbj86IG51bWJlcjtcclxuICBlc3RpbWF0ZWRUb3RhbE1heD86IG51bWJlcjtcclxuICB3aXRoaW5CdWRnZXQ/OiBib29sZWFuO1xyXG4gIGJ1ZGdldFN0YXR1cz86IHN0cmluZztcclxuICBvdmVyQnVkZ2V0QW1vdW50PzogbnVtYmVyO1xyXG59O1xyXG5cclxuZnVuY3Rpb24gYnVpbGRGbGlnaHRMaW5rcyhvcmlnaW46IHN0cmluZywgZGVzdGluYXRpb246IHN0cmluZywgZGVwYXJ0dXJlRGF0ZTogc3RyaW5nLCByZXR1cm5EYXRlOiBzdHJpbmcpIHtcclxuICBjb25zdCBkZXBGb3JtYXR0ZWQgPSBkZXBhcnR1cmVEYXRlLnJlcGxhY2UoLy0vZywgXCJcIik7XHJcbiAgY29uc3QgcmV0Rm9ybWF0dGVkID0gcmV0dXJuRGF0ZS5yZXBsYWNlKC8tL2csIFwiXCIpO1xyXG4gIFxyXG4gIHJldHVybiB7XHJcbiAgICBza3lzY2FubmVyOiBgaHR0cHM6Ly93d3cuc2t5c2Nhbm5lci5jYS90cmFuc3BvcnQvZmxpZ2h0cy8ke29yaWdpbi50b0xvd2VyQ2FzZSgpfS8ke2Rlc3RpbmF0aW9uLnRvTG93ZXJDYXNlKCl9LyR7ZGVwRm9ybWF0dGVkfS8ke3JldEZvcm1hdHRlZH0vYCxcclxuICAgIGdvb2dsZUZsaWdodHM6IGBodHRwczovL3d3dy5nb29nbGUuY29tL3RyYXZlbC9mbGlnaHRzP3E9JHtlbmNvZGVVUklDb21wb25lbnQoYGZsaWdodHMgZnJvbSAke29yaWdpbn0gdG8gJHtkZXN0aW5hdGlvbn0gJHtkZXBhcnR1cmVEYXRlfSB0byAke3JldHVybkRhdGV9YCl9YCxcclxuICAgIGFpckNhbmFkYTogYGh0dHBzOi8vd3d3LmFpcmNhbmFkYS5jb20vY2EvZW4vYWNvL2hvbWUvYm9vay90cmF2ZWwuaHRtbD8ke25ldyBVUkxTZWFyY2hQYXJhbXMoe1xyXG4gICAgICBvcmcxOiBvcmlnaW4udG9VcHBlckNhc2UoKSxcclxuICAgICAgZGVzdDE6IGRlc3RpbmF0aW9uLnRvVXBwZXJDYXNlKCksXHJcbiAgICAgIGRlcGFydHVyZURhdGUxOiBkZXBhcnR1cmVEYXRlLFxyXG4gICAgICByZXR1cm5EYXRlMTogcmV0dXJuRGF0ZSxcclxuICAgICAgdHJpcFR5cGU6IFwiMlwiLFxyXG4gICAgICBsYW5nOiBcImVuLUNBXCJcclxuICAgIH0pLnRvU3RyaW5nKCl9YFxyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVzdGltYXRlUmVzb3J0Q29zdChwcmljZVJhbmdlOiBzdHJpbmcsIG5pZ2h0czogbnVtYmVyKTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSB7XHJcbiAgLy8gQ0FOQURJQU4gQUxMLUlOQ0xVU0lWRSBQQUNLQUdFIFBSSUNJTkcgKHBlciBwZXJzb24sIENBRClcclxuICAvLyBCYXNlZCBvbiByZWFsIHRyYXZlbCBhZ2VudCBxdW90ZXMgZm9yIDctbmlnaHQgcGFja2FnZXMgZnJvbSBPdHRhd2FcclxuICAvLyBJbmNsdWRlczogZmxpZ2h0cywgYWNjb21tb2RhdGlvbnMsIHRyYW5zZmVycywgdGF4ZXNcclxuICBjb25zdCBwYWNrYWdlUmFuZ2VzOiBSZWNvcmQ8c3RyaW5nLCB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9PiA9IHtcclxuICAgIFwiJFwiOiB7IG1pbjogMTIwMCwgbWF4OiAxNjAwIH0sICAgICAgLy8gQnVkZ2V0IHBhY2thZ2VzXHJcbiAgICBcIiQkXCI6IHsgbWluOiAxNjAwLCBtYXg6IDIwMDAgfSwgICAgIC8vIE1pZC1yYW5nZSBwYWNrYWdlc1xyXG4gICAgXCIkJCRcIjogeyBtaW46IDIwMDAsIG1heDogMjQwMCB9LCAgICAvLyBVcHBlciBtaWQtcmFuZ2VcclxuICAgIFwiJCQkJFwiOiB7IG1pbjogMjQwMCwgbWF4OiAyODAwIH0sICAgLy8gUHJlbWl1bSAoRHJlYW1zIE9ueXg6ICQyNTA5KVxyXG4gICAgXCIkJCQkJFwiOiB7IG1pbjogMjgwMCwgbWF4OiAzNTAwIH0gICAvLyBMdXh1cnkgcGFja2FnZXNcclxuICB9O1xyXG4gIFxyXG4gIC8vIEFkanVzdCBmb3IgdHJpcCBsZW5ndGggKGJhc2UgaXMgNyBuaWdodHMpXHJcbiAgY29uc3QgYmFzZURheXMgPSA3O1xyXG4gIGNvbnN0IGxlbmd0aE11bHRpcGxpZXIgPSBuaWdodHMgLyBiYXNlRGF5cztcclxuICBcclxuICBjb25zdCByYW5nZSA9IHBhY2thZ2VSYW5nZXNbcHJpY2VSYW5nZV0gfHwgcGFja2FnZVJhbmdlc1tcIiQkJFwiXTtcclxuICByZXR1cm4ge1xyXG4gICAgbWluOiBNYXRoLnJvdW5kKHJhbmdlLm1pbiAqIGxlbmd0aE11bHRpcGxpZXIpLFxyXG4gICAgbWF4OiBNYXRoLnJvdW5kKHJhbmdlLm1heCAqIGxlbmd0aE11bHRpcGxpZXIpXHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIFBPU1QocmVxOiBOZXh0UmVxdWVzdCkge1xyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBib2R5ID0gYXdhaXQgcmVxLmpzb24oKTtcclxuICAgIGNvbnN0IHBhcnNlZCA9IHNjaGVtYS5wYXJzZShib2R5KTtcclxuICAgIFxyXG4gICAgY29uc3QgY29tcGFyaXNvbnM6IFJlc29ydENvbXBhcmlzb25bXSA9IFtdO1xyXG4gICAgY29uc3Qgbm90Rm91bmQ6IHN0cmluZ1tdID0gW107XHJcbiAgICBcclxuICAgIC8vIENhbGN1bGF0ZSByZXR1cm4gZGF0ZVxyXG4gICAgY29uc3QgcmV0dXJuRGF0ZSA9IGZvcm1hdChhZGREYXlzKG5ldyBEYXRlKHBhcnNlZC5kZXBhcnR1cmVEYXRlKSwgcGFyc2VkLnRyaXBMZW5ndGgpLCBcInl5eXktTU0tZGRcIik7XHJcbiAgICBcclxuICAgIGZvciAoY29uc3QgcmVzb3J0TmFtZSBvZiBwYXJzZWQucmVzb3J0cykge1xyXG4gICAgICBjb25zdCByZXNvcnQgPSBmaW5kUmVzb3J0KHJlc29ydE5hbWUpO1xyXG4gICAgICBcclxuICAgICAgaWYgKCFyZXNvcnQpIHtcclxuICAgICAgICBub3RGb3VuZC5wdXNoKHJlc29ydE5hbWUpO1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCBtYXRjaFNjb3JlID0gY2FsY3VsYXRlUmVzb3J0U2NvcmUocmVzb3J0LCBwYXJzZWQucHJlZmVyZW5jZXMpO1xyXG4gICAgICBjb25zdCBmbGlnaHRMaW5rcyA9IGJ1aWxkRmxpZ2h0TGlua3MocGFyc2VkLm9yaWdpbiwgcmVzb3J0LmFpcnBvcnRDb2RlLCBwYXJzZWQuZGVwYXJ0dXJlRGF0ZSwgcmV0dXJuRGF0ZSk7XHJcbiAgICAgIFxyXG4gICAgICAvLyBQYWNrYWdlIHByaWNpbmcgKHBlciBwZXJzb24sIGluY2x1ZGVzIGZsaWdodHMpXHJcbiAgICAgIGNvbnN0IHBhY2thZ2VDb3N0ID0gZXN0aW1hdGVSZXNvcnRDb3N0KHJlc29ydC5wcmljZVJhbmdlIHx8IFwiJCQkXCIsIHBhcnNlZC50cmlwTGVuZ3RoKTtcclxuICAgICAgXHJcbiAgICAgIC8vIFRvdGFsIGNvc3QgZm9yIDIgcGVvcGxlIChzdGFuZGFyZCBwYWNrYWdlIGFzc3VtcHRpb24pXHJcbiAgICAgIGNvbnN0IGVzdGltYXRlZFRvdGFsTWluID0gcGFja2FnZUNvc3QubWluICogMjtcclxuICAgICAgY29uc3QgZXN0aW1hdGVkVG90YWxNYXggPSBwYWNrYWdlQ29zdC5tYXggKiAyO1xyXG4gICAgICBcclxuICAgICAgLy8gUGVyIHBlcnNvbiBjb3N0IGZvciBkaXNwbGF5XHJcbiAgICAgIGNvbnN0IGVzdGltYXRlZFBlclBlcnNvbiA9IGAkJHtwYWNrYWdlQ29zdC5taW59LSQke3BhY2thZ2VDb3N0Lm1heH0gcGVyIHBlcnNvbmA7XHJcblxyXG4gICAgICBcclxuICAgICAgLy8gQnVkZ2V0IGFuYWx5c2lzXHJcbiAgICAgIGxldCB3aXRoaW5CdWRnZXQgPSB0cnVlO1xyXG4gICAgICBsZXQgYnVkZ2V0U3RhdHVzID0gXCJXaXRoaW4gQnVkZ2V0XCI7XHJcbiAgICAgIGxldCBvdmVyQnVkZ2V0QW1vdW50ID0gMDtcclxuICAgICAgXHJcbiAgICAgIGlmIChwYXJzZWQuYnVkZ2V0KSB7XHJcbiAgICAgICAgY29uc3QgY29udGluZ2VuY3lBbW91bnQgPSBwYXJzZWQuYnVkZ2V0ICogKChwYXJzZWQuY29udGluZ2VuY3lQZXJjZW50IHx8IDE1KSAvIDEwMCk7XHJcbiAgICAgICAgY29uc3QgYnVkZ2V0V2l0aENvbnRpbmdlbmN5ID0gcGFyc2VkLmJ1ZGdldCArIGNvbnRpbmdlbmN5QW1vdW50O1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChlc3RpbWF0ZWRUb3RhbE1pbiA+IHBhcnNlZC5idWRnZXQpIHtcclxuICAgICAgICAgIG92ZXJCdWRnZXRBbW91bnQgPSBlc3RpbWF0ZWRUb3RhbE1pbiAtIHBhcnNlZC5idWRnZXQ7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIENoZWNrIGlmIGhpZ2ggc2NvcmUganVzdGlmaWVzIGdvaW5nIG92ZXIgYnVkZ2V0XHJcbiAgICAgICAgICBpZiAobWF0Y2hTY29yZSA+PSAxODAwICYmIGVzdGltYXRlZFRvdGFsTWluIDw9IGJ1ZGdldFdpdGhDb250aW5nZW5jeSkge1xyXG4gICAgICAgICAgICB3aXRoaW5CdWRnZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICBidWRnZXRTdGF0dXMgPSBgT3ZlciBidWRnZXQgYnkgJCR7b3ZlckJ1ZGdldEFtb3VudC50b0ZpeGVkKDApfSBidXQgSElHSCBNQVRDSCAod2l0aGluICR7cGFyc2VkLmNvbnRpbmdlbmN5UGVyY2VudH0lIGNvbnRpbmdlbmN5KWA7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGVzdGltYXRlZFRvdGFsTWluIDw9IGJ1ZGdldFdpdGhDb250aW5nZW5jeSkge1xyXG4gICAgICAgICAgICB3aXRoaW5CdWRnZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICBidWRnZXRTdGF0dXMgPSBgV2l0aGluICR7cGFyc2VkLmNvbnRpbmdlbmN5UGVyY2VudH0lIGNvbnRpbmdlbmN5ICgrJCR7b3ZlckJ1ZGdldEFtb3VudC50b0ZpeGVkKDApfSlgO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgd2l0aGluQnVkZ2V0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJ1ZGdldFN0YXR1cyA9IGBPdmVyIGJ1ZGdldCBieSAkJHtvdmVyQnVkZ2V0QW1vdW50LnRvRml4ZWQoMCl9IChleGNlZWRzIGNvbnRpbmdlbmN5KWA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGJ1ZGdldFN0YXR1cyA9IGBVbmRlciBidWRnZXQgYnkgJCR7KHBhcnNlZC5idWRnZXQgLSBlc3RpbWF0ZWRUb3RhbE1pbikudG9GaXhlZCgwKX1gO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgY29tcGFyaXNvbnMucHVzaCh7XHJcbiAgICAgICAgcmVzb3J0LFxyXG4gICAgICAgIG1hdGNoU2NvcmUsXHJcbiAgICAgICAgZmxpZ2h0TGlua3MsXHJcbiAgICAgICAgZXN0aW1hdGVkRmxpZ2h0UHJpY2U6IGVzdGltYXRlZFBlclBlcnNvbixcclxuICAgICAgICBlc3RpbWF0ZWRGbGlnaHRQcmljZU1pbjogcGFja2FnZUNvc3QubWluLFxyXG4gICAgICAgIGVzdGltYXRlZEZsaWdodFByaWNlTWF4OiBwYWNrYWdlQ29zdC5tYXgsXHJcbiAgICAgICAgZXN0aW1hdGVkVG90YWxNaW4sXHJcbiAgICAgICAgZXN0aW1hdGVkVG90YWxNYXgsXHJcbiAgICAgICAgd2l0aGluQnVkZ2V0LFxyXG4gICAgICAgIGJ1ZGdldFN0YXR1cyxcclxuICAgICAgICBvdmVyQnVkZ2V0QW1vdW50OiBvdmVyQnVkZ2V0QW1vdW50ID4gMCA/IG92ZXJCdWRnZXRBbW91bnQgOiB1bmRlZmluZWRcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIFNvcnQgYnkgbWF0Y2ggc2NvcmUgKGhpZ2hlc3QgZmlyc3QpXHJcbiAgICBjb21wYXJpc29ucy5zb3J0KChhLCBiKSA9PiBiLm1hdGNoU2NvcmUgLSBhLm1hdGNoU2NvcmUpO1xyXG4gICAgXHJcbiAgICAvLyBGaWx0ZXIgYnkgYnVkZ2V0IGlmIHNwZWNpZmllZCAoYnV0IGluY2x1ZGUgaGlnaC1zY29yaW5nIHJlc29ydHMgd2l0aGluIGNvbnRpbmdlbmN5KVxyXG4gICAgbGV0IGJ1ZGdldEZpbHRlcmVkID0gY29tcGFyaXNvbnM7XHJcbiAgICBpZiAocGFyc2VkLmJ1ZGdldCkge1xyXG4gICAgICBidWRnZXRGaWx0ZXJlZCA9IGNvbXBhcmlzb25zLmZpbHRlcihjID0+IGMud2l0aGluQnVkZ2V0KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7IFxyXG4gICAgICBjb21wYXJpc29uczogYnVkZ2V0RmlsdGVyZWQsXHJcbiAgICAgIGFsbENvbXBhcmlzb25zOiBjb21wYXJpc29ucywgLy8gSW5jbHVkZSBhbGwgZm9yIHJlZmVyZW5jZVxyXG4gICAgICBub3RGb3VuZCxcclxuICAgICAgYnVkZ2V0SW5mbzogcGFyc2VkLmJ1ZGdldCA/IHtcclxuICAgICAgICBidWRnZXQ6IHBhcnNlZC5idWRnZXQsXHJcbiAgICAgICAgY29udGluZ2VuY3lQZXJjZW50OiBwYXJzZWQuY29udGluZ2VuY3lQZXJjZW50IHx8IDE1LFxyXG4gICAgICAgIGNvbnRpbmdlbmN5QW1vdW50OiBwYXJzZWQuYnVkZ2V0ICogKChwYXJzZWQuY29udGluZ2VuY3lQZXJjZW50IHx8IDE1KSAvIDEwMCksXHJcbiAgICAgICAgbWF4QnVkZ2V0OiBwYXJzZWQuYnVkZ2V0ICsgKHBhcnNlZC5idWRnZXQgKiAoKHBhcnNlZC5jb250aW5nZW5jeVBlcmNlbnQgfHwgMTUpIC8gMTAwKSksXHJcbiAgICAgICAgd2l0aGluQnVkZ2V0Q291bnQ6IGJ1ZGdldEZpbHRlcmVkLmxlbmd0aCxcclxuICAgICAgICB0b3RhbENvdW50OiBjb21wYXJpc29ucy5sZW5ndGgsXHJcbiAgICAgICAgb3ZlckJ1ZGdldENvdW50OiBjb21wYXJpc29ucy5sZW5ndGggLSBidWRnZXRGaWx0ZXJlZC5sZW5ndGhcclxuICAgICAgfSA6IG51bGwsXHJcbiAgICAgIGZsaWdodEluZm86IHtcclxuICAgICAgICBvcmlnaW46IHBhcnNlZC5vcmlnaW4sXHJcbiAgICAgICAgZGVwYXJ0dXJlRGF0ZTogcGFyc2VkLmRlcGFydHVyZURhdGUsXHJcbiAgICAgICAgcmV0dXJuRGF0ZSxcclxuICAgICAgICB0cmlwTGVuZ3RoOiBwYXJzZWQudHJpcExlbmd0aFxyXG4gICAgICB9LFxyXG4gICAgICBwYWNrYWdlU2l0ZXM6IFtcclxuICAgICAgICBcIlN1bndpbmcgVmFjYXRpb25zXCIsXHJcbiAgICAgICAgXCJBaXIgQ2FuYWRhIFZhY2F0aW9uc1wiLFxyXG4gICAgICAgIFwiV2VzdEpldCBWYWNhdGlvbnNcIixcclxuICAgICAgICBcIkFpciBUcmFuc2F0IEhvbGlkYXlzXCIsXHJcbiAgICAgICAgXCJSZWRUYWcuY2FcIlxyXG4gICAgICBdLFxyXG4gICAgICBwcmljaW5nTm90ZTogXCJFc3RpbWF0ZXMgYXJlIGZvciBpbmRpdmlkdWFsIGJvb2tpbmdzIChmbGlnaHQgKyByZXNvcnQpLiBQYWNrYWdlIGRlYWxzIGFyZSB0eXBpY2FsbHkgMzAtNDAlIGNoZWFwZXIuXCJcclxuICAgIH0pLCB7IFxyXG4gICAgICBoZWFkZXJzOiB7IFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0gXHJcbiAgICB9KTtcclxuICAgIFxyXG4gIH0gY2F0Y2ggKGU6IGFueSkge1xyXG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7IFxyXG4gICAgICBlcnJvcjogZT8ubWVzc2FnZSB8fCBcIkludmFsaWQgcGF5bG9hZFwiIFxyXG4gICAgfSksIHsgXHJcbiAgICAgIHN0YXR1czogNDAwLCBcclxuICAgICAgaGVhZGVyczogeyBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9IFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdLCJuYW1lcyI6WyJ6IiwiZmluZFJlc29ydCIsImNhbGN1bGF0ZVJlc29ydFNjb3JlIiwiZm9ybWF0IiwiYWRkRGF5cyIsInNjaGVtYSIsIm9iamVjdCIsInJlc29ydHMiLCJhcnJheSIsInN0cmluZyIsIm5vbmVtcHR5IiwiZGVwYXJ0dXJlRGF0ZSIsInJlZ2V4Iiwib3JpZ2luIiwibWluIiwibWF4IiwiZGVmYXVsdCIsInRyaXBMZW5ndGgiLCJudW1iZXIiLCJpbnQiLCJwb3NpdGl2ZSIsImJ1ZGdldCIsIm9wdGlvbmFsIiwiY29udGluZ2VuY3lQZXJjZW50IiwicHJlZmVyZW5jZXMiLCJiZWFjaCIsInBvb2wiLCJnb2xmIiwic3BhIiwiZm9vZCIsIm5pZ2h0bGlmZSIsInNob3BwaW5nIiwiY3VsdHVyZSIsIm91dGRvb3IiLCJmYW1pbHkiLCJidWlsZEZsaWdodExpbmtzIiwiZGVzdGluYXRpb24iLCJyZXR1cm5EYXRlIiwiZGVwRm9ybWF0dGVkIiwicmVwbGFjZSIsInJldEZvcm1hdHRlZCIsInNreXNjYW5uZXIiLCJ0b0xvd2VyQ2FzZSIsImdvb2dsZUZsaWdodHMiLCJlbmNvZGVVUklDb21wb25lbnQiLCJhaXJDYW5hZGEiLCJVUkxTZWFyY2hQYXJhbXMiLCJvcmcxIiwidG9VcHBlckNhc2UiLCJkZXN0MSIsImRlcGFydHVyZURhdGUxIiwicmV0dXJuRGF0ZTEiLCJ0cmlwVHlwZSIsImxhbmciLCJ0b1N0cmluZyIsImVzdGltYXRlUmVzb3J0Q29zdCIsInByaWNlUmFuZ2UiLCJuaWdodHMiLCJwYWNrYWdlUmFuZ2VzIiwiYmFzZURheXMiLCJsZW5ndGhNdWx0aXBsaWVyIiwicmFuZ2UiLCJNYXRoIiwicm91bmQiLCJQT1NUIiwicmVxIiwiYm9keSIsImpzb24iLCJwYXJzZWQiLCJwYXJzZSIsImNvbXBhcmlzb25zIiwibm90Rm91bmQiLCJEYXRlIiwicmVzb3J0TmFtZSIsInJlc29ydCIsInB1c2giLCJtYXRjaFNjb3JlIiwiZmxpZ2h0TGlua3MiLCJhaXJwb3J0Q29kZSIsInBhY2thZ2VDb3N0IiwiZXN0aW1hdGVkVG90YWxNaW4iLCJlc3RpbWF0ZWRUb3RhbE1heCIsImVzdGltYXRlZFBlclBlcnNvbiIsIndpdGhpbkJ1ZGdldCIsImJ1ZGdldFN0YXR1cyIsIm92ZXJCdWRnZXRBbW91bnQiLCJjb250aW5nZW5jeUFtb3VudCIsImJ1ZGdldFdpdGhDb250aW5nZW5jeSIsInRvRml4ZWQiLCJlc3RpbWF0ZWRGbGlnaHRQcmljZSIsImVzdGltYXRlZEZsaWdodFByaWNlTWluIiwiZXN0aW1hdGVkRmxpZ2h0UHJpY2VNYXgiLCJ1bmRlZmluZWQiLCJzb3J0IiwiYSIsImIiLCJidWRnZXRGaWx0ZXJlZCIsImZpbHRlciIsImMiLCJSZXNwb25zZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJhbGxDb21wYXJpc29ucyIsImJ1ZGdldEluZm8iLCJtYXhCdWRnZXQiLCJ3aXRoaW5CdWRnZXRDb3VudCIsImxlbmd0aCIsInRvdGFsQ291bnQiLCJvdmVyQnVkZ2V0Q291bnQiLCJmbGlnaHRJbmZvIiwicGFja2FnZVNpdGVzIiwicHJpY2luZ05vdGUiLCJoZWFkZXJzIiwiZSIsImVycm9yIiwibWVzc2FnZSIsInN0YXR1cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./app/api/resort-compare/route.ts\n"); + +/***/ }), + +/***/ "(rsc)/./lib/resorts.ts": +/*!************************!*\ + !*** ./lib/resorts.ts ***! + \************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RESORT_DATABASE: () => (/* binding */ RESORT_DATABASE),\n/* harmony export */ calculateResortScore: () => (/* binding */ calculateResortScore),\n/* harmony export */ findResort: () => (/* binding */ findResort)\n/* harmony export */ });\n// Resort database with features and ratings\n// Resort database\nconst RESORT_DATABASE = {\n \"bahia principe luxury sian ka'an\": {\n name: \"Bahia Principe Luxury Sian Ka'an\",\n destination: \"Riviera Maya\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 9,\n pool: 8,\n golf: 5,\n spa: 8,\n food: 8,\n nightlife: 6,\n shopping: 5,\n culture: 6,\n outdoor: 7,\n family: 9\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 8234,\n priceRange: \"$$$$\",\n allInclusive: true\n },\n \"catalonia royal tulum\": {\n name: \"Catalonia Royal Tulum\",\n destination: \"Tulum\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 10,\n pool: 9,\n golf: 4,\n spa: 7,\n food: 8,\n nightlife: 6,\n shopping: 4,\n culture: 7,\n outdoor: 8,\n family: 7\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 6421,\n priceRange: \"$$$$\",\n allInclusive: true\n },\n \"secrets akumal riviera maya\": {\n name: \"Secrets Akumal Riviera Maya\",\n destination: \"Akumal\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 10,\n pool: 9,\n golf: 5,\n spa: 9,\n food: 9,\n nightlife: 7,\n shopping: 5,\n culture: 6,\n outdoor: 9,\n family: 6\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 9127,\n priceRange: \"$$$$$\",\n allInclusive: true\n },\n \"unico 20\\xb087\\xb0 hotel riviera maya\": {\n name: \"UNICO 20\\xb087\\xb0 Hotel Riviera Maya\",\n destination: \"Riviera Maya\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 9,\n pool: 10,\n golf: 6,\n spa: 10,\n food: 10,\n nightlife: 8,\n shopping: 6,\n culture: 7,\n outdoor: 8,\n family: 7\n },\n tripAdvisorRating: 5.0,\n tripAdvisorReviews: 3894,\n priceRange: \"$$$$$\",\n allInclusive: true\n },\n \"trs yucat\\xe1n hotel\": {\n name: \"TRS Yucat\\xe1n Hotel\",\n destination: \"Riviera Maya\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 9,\n pool: 9,\n golf: 7,\n spa: 8,\n food: 8,\n nightlife: 7,\n shopping: 5,\n culture: 5,\n outdoor: 7,\n family: 8\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 5621,\n priceRange: \"$$$$\",\n allInclusive: true\n },\n \"barcelo maya riviera\": {\n name: \"Barcelo Maya Riviera\",\n destination: \"Riviera Maya\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 9,\n pool: 9,\n golf: 8,\n spa: 7,\n food: 8,\n nightlife: 7,\n shopping: 6,\n culture: 5,\n outdoor: 7,\n family: 9\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 12453,\n priceRange: \"$$$\",\n allInclusive: true\n },\n \"valentin imperial riviera maya\": {\n name: \"Valentin Imperial Riviera Maya\",\n destination: \"Playa del Carmen\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 10,\n pool: 8,\n golf: 5,\n spa: 8,\n food: 9,\n nightlife: 6,\n shopping: 5,\n culture: 5,\n outdoor: 7,\n family: 7\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 8934,\n priceRange: \"$$$$\",\n allInclusive: true\n },\n \"grand sirenis riviera maya\": {\n name: \"Grand Sirenis Riviera Maya\",\n destination: \"Riviera Maya\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 8,\n pool: 8,\n golf: 6,\n spa: 7,\n food: 7,\n nightlife: 6,\n shopping: 5,\n culture: 5,\n outdoor: 7,\n family: 9\n },\n tripAdvisorRating: 4.0,\n tripAdvisorReviews: 7821,\n priceRange: \"$$$\",\n allInclusive: true\n },\n \"dreams tulum resort & spa\": {\n name: \"Dreams Tulum Resort & Spa\",\n destination: \"Tulum\",\n country: \"Mexico\",\n airportCode: \"CUN\",\n features: {\n beach: 10,\n pool: 8,\n golf: 4,\n spa: 8,\n food: 8,\n nightlife: 6,\n shopping: 4,\n culture: 7,\n outdoor: 8,\n family: 8\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 6754,\n priceRange: \"$$$$\",\n allInclusive: true\n },\n \"hyatt zilara cap cana\": {\n name: \"Hyatt Zilara Cap Cana\",\n destination: \"Cap Cana\",\n country: \"Dominican Republic\",\n airportCode: \"PUJ\",\n features: {\n beach: 10,\n pool: 9,\n golf: 8,\n spa: 9,\n food: 9,\n nightlife: 8,\n shopping: 6,\n culture: 5,\n outdoor: 8,\n family: 5\n },\n tripAdvisorRating: 5.0,\n tripAdvisorReviews: 9821,\n priceRange: \"$$$$$\",\n allInclusive: true\n },\n \"secrets cap cana\": {\n name: \"Secrets Cap Cana\",\n destination: \"Cap Cana\",\n country: \"Dominican Republic\",\n airportCode: \"PUJ\",\n features: {\n beach: 10,\n pool: 9,\n golf: 9,\n spa: 9,\n food: 9,\n nightlife: 8,\n shopping: 6,\n culture: 5,\n outdoor: 8,\n family: 6\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 8432,\n priceRange: \"$$$$$\",\n allInclusive: true\n },\n \"dreams onyx resort & spa\": {\n name: \"Dreams Onyx Resort & Spa\",\n destination: \"Punta Cana\",\n country: \"Dominican Republic\",\n airportCode: \"PUJ\",\n features: {\n beach: 9,\n pool: 9,\n golf: 6,\n spa: 8,\n food: 8,\n nightlife: 7,\n shopping: 6,\n culture: 4,\n outdoor: 7,\n family: 8\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 5643,\n priceRange: \"$$$$\",\n allInclusive: true\n },\n \"royalton chic punta cana\": {\n name: \"Royalton CHIC Punta Cana\",\n destination: \"Punta Cana\",\n country: \"Dominican Republic\",\n airportCode: \"PUJ\",\n features: {\n beach: 9,\n pool: 9,\n golf: 6,\n spa: 8,\n food: 8,\n nightlife: 9,\n shopping: 7,\n culture: 4,\n outdoor: 7,\n family: 5\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 7234,\n priceRange: \"$$$$\",\n allInclusive: true\n },\n \"iberostar grand b\\xe1varo\": {\n name: \"Iberostar Grand B\\xe1varo\",\n destination: \"B\\xe1varo\",\n country: \"Dominican Republic\",\n airportCode: \"PUJ\",\n features: {\n beach: 10,\n pool: 8,\n golf: 7,\n spa: 8,\n food: 8,\n nightlife: 7,\n shopping: 6,\n culture: 4,\n outdoor: 7,\n family: 7\n },\n tripAdvisorRating: 4.5,\n tripAdvisorReviews: 6821,\n priceRange: \"$$$$\",\n allInclusive: true\n }\n};\nfunction findResort(name) {\n const normalized = name.toLowerCase().trim();\n return RESORT_DATABASE[normalized] || null;\n}\nfunction calculateResortScore(resort, preferences) {\n if (!preferences) return 0;\n let score = 0;\n let totalWeight = 0;\n for (const [feature, userRating] of Object.entries(preferences)){\n if (userRating && userRating > 0) {\n const resortRating = resort.features[feature] || 5;\n score += userRating * resortRating;\n totalWeight += userRating * 10;\n }\n }\n // Add TripAdvisor bonus\n if (resort.tripAdvisorRating) {\n score += resort.tripAdvisorRating * 100;\n }\n return totalWeight > 0 ? Math.round(score / totalWeight * 1000) : 0;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QkMsTUFBYyxFQUFFQyxXQUFvQztJQUN2RixJQUFJLENBQUNBLGFBQWEsT0FBTztJQUV6QixJQUFJQyxRQUFRO0lBQ1osSUFBSUMsY0FBYztJQUVsQixLQUFLLE1BQU0sQ0FBQ0MsU0FBU0MsV0FBVyxJQUFJQyxPQUFPQyxPQUFPLENBQUNOLGFBQWM7UUFDL0QsSUFBSUksY0FBY0EsYUFBYSxHQUFHO1lBQ2hDLE1BQU1HLGVBQWVSLE9BQU9wQixRQUFRLENBQUN3QixRQUF3QyxJQUFJO1lBQ2pGRixTQUFVRyxhQUFhRztZQUN2QkwsZUFBZ0JFLGFBQWE7UUFDL0I7SUFDRjtJQUVBLHdCQUF3QjtJQUN4QixJQUFJTCxPQUFPVCxpQkFBaUIsRUFBRTtRQUM1QlcsU0FBU0YsT0FBT1QsaUJBQWlCLEdBQUc7SUFDdEM7SUFFQSxPQUFPWSxjQUFjLElBQUlNLEtBQUtDLEtBQUssQ0FBQyxRQUFTUCxjQUFlLFFBQVE7QUFDdEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbGliL3Jlc29ydHMudHM/MzIxOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBSZXNvcnQgZGF0YWJhc2Ugd2l0aCBmZWF0dXJlcyBhbmQgcmF0aW5nc1xyXG5leHBvcnQgdHlwZSBSZXNvcnQgPSB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGRlc3RpbmF0aW9uOiBzdHJpbmc7XHJcbiAgY291bnRyeTogc3RyaW5nO1xyXG4gIGFpcnBvcnRDb2RlOiBzdHJpbmc7XHJcbiAgZmVhdHVyZXM6IHtcclxuICAgIGJlYWNoOiBudW1iZXI7XHJcbiAgICBwb29sOiBudW1iZXI7XHJcbiAgICBnb2xmOiBudW1iZXI7XHJcbiAgICBzcGE6IG51bWJlcjtcclxuICAgIGZvb2Q6IG51bWJlcjtcclxuICAgIG5pZ2h0bGlmZTogbnVtYmVyO1xyXG4gICAgc2hvcHBpbmc6IG51bWJlcjtcclxuICAgIGN1bHR1cmU6IG51bWJlcjtcclxuICAgIG91dGRvb3I6IG51bWJlcjtcclxuICAgIGZhbWlseTogbnVtYmVyO1xyXG4gIH07XHJcbiAgdHJpcEFkdmlzb3JSYXRpbmc/OiBudW1iZXI7XHJcbiAgdHJpcEFkdmlzb3JSZXZpZXdzPzogbnVtYmVyO1xyXG4gIHByaWNlUmFuZ2U/OiBzdHJpbmc7IC8vICQkJCwgJCQkJCwgZXRjLlxyXG4gIGFsbEluY2x1c2l2ZTogYm9vbGVhbjtcclxufTtcclxuXHJcbi8vIFJlc29ydCBkYXRhYmFzZVxyXG5leHBvcnQgY29uc3QgUkVTT1JUX0RBVEFCQVNFOiBSZWNvcmQ8c3RyaW5nLCBSZXNvcnQ+ID0ge1xyXG4gIFwiYmFoaWEgcHJpbmNpcGUgbHV4dXJ5IHNpYW4ga2EnYW5cIjoge1xyXG4gICAgbmFtZTogXCJCYWhpYSBQcmluY2lwZSBMdXh1cnkgU2lhbiBLYSdhblwiLFxyXG4gICAgZGVzdGluYXRpb246IFwiUml2aWVyYSBNYXlhXCIsXHJcbiAgICBjb3VudHJ5OiBcIk1leGljb1wiLFxyXG4gICAgYWlycG9ydENvZGU6IFwiQ1VOXCIsXHJcbiAgICBmZWF0dXJlczoge1xyXG4gICAgICBiZWFjaDogOSxcclxuICAgICAgcG9vbDogOCxcclxuICAgICAgZ29sZjogNSxcclxuICAgICAgc3BhOiA4LFxyXG4gICAgICBmb29kOiA4LFxyXG4gICAgICBuaWdodGxpZmU6IDYsXHJcbiAgICAgIHNob3BwaW5nOiA1LFxyXG4gICAgICBjdWx0dXJlOiA2LFxyXG4gICAgICBvdXRkb29yOiA3LFxyXG4gICAgICBmYW1pbHk6IDlcclxuICAgIH0sXHJcbiAgICB0cmlwQWR2aXNvclJhdGluZzogNC41LFxyXG4gICAgdHJpcEFkdmlzb3JSZXZpZXdzOiA4MjM0LFxyXG4gICAgcHJpY2VSYW5nZTogXCIkJCQkXCIsXHJcbiAgICBhbGxJbmNsdXNpdmU6IHRydWVcclxuICB9LFxyXG4gIFwiY2F0YWxvbmlhIHJveWFsIHR1bHVtXCI6IHtcclxuICAgIG5hbWU6IFwiQ2F0YWxvbmlhIFJveWFsIFR1bHVtXCIsXHJcbiAgICBkZXN0aW5hdGlvbjogXCJUdWx1bVwiLFxyXG4gICAgY291bnRyeTogXCJNZXhpY29cIixcclxuICAgIGFpcnBvcnRDb2RlOiBcIkNVTlwiLFxyXG4gICAgZmVhdHVyZXM6IHtcclxuICAgICAgYmVhY2g6IDEwLFxyXG4gICAgICBwb29sOiA5LFxyXG4gICAgICBnb2xmOiA0LFxyXG4gICAgICBzcGE6IDcsXHJcbiAgICAgIGZvb2Q6IDgsXHJcbiAgICAgIG5pZ2h0bGlmZTogNixcclxuICAgICAgc2hvcHBpbmc6IDQsXHJcbiAgICAgIGN1bHR1cmU6IDcsXHJcbiAgICAgIG91dGRvb3I6IDgsXHJcbiAgICAgIGZhbWlseTogN1xyXG4gICAgfSxcclxuICAgIHRyaXBBZHZpc29yUmF0aW5nOiA0LjUsXHJcbiAgICB0cmlwQWR2aXNvclJldmlld3M6IDY0MjEsXHJcbiAgICBwcmljZVJhbmdlOiBcIiQkJCRcIixcclxuICAgIGFsbEluY2x1c2l2ZTogdHJ1ZVxyXG4gIH0sXHJcbiAgXCJzZWNyZXRzIGFrdW1hbCByaXZpZXJhIG1heWFcIjoge1xyXG4gICAgbmFtZTogXCJTZWNyZXRzIEFrdW1hbCBSaXZpZXJhIE1heWFcIixcclxuICAgIGRlc3RpbmF0aW9uOiBcIkFrdW1hbFwiLFxyXG4gICAgY291bnRyeTogXCJNZXhpY29cIixcclxuICAgIGFpcnBvcnRDb2RlOiBcIkNVTlwiLFxyXG4gICAgZmVhdHVyZXM6IHtcclxuICAgICAgYmVhY2g6IDEwLFxyXG4gICAgICBwb29sOiA5LFxyXG4gICAgICBnb2xmOiA1LFxyXG4gICAgICBzcGE6IDksXHJcbiAgICAgIGZvb2Q6IDksXHJcbiAgICAgIG5pZ2h0bGlmZTogNyxcclxuICAgICAgc2hvcHBpbmc6IDUsXHJcbiAgICAgIGN1bHR1cmU6IDYsXHJcbiAgICAgIG91dGRvb3I6IDksXHJcbiAgICAgIGZhbWlseTogNlxyXG4gICAgfSxcclxuICAgIHRyaXBBZHZpc29yUmF0aW5nOiA0LjUsXHJcbiAgICB0cmlwQWR2aXNvclJldmlld3M6IDkxMjcsXHJcbiAgICBwcmljZVJhbmdlOiBcIiQkJCQkXCIsXHJcbiAgICBhbGxJbmNsdXNpdmU6IHRydWVcclxuICB9LFxyXG4gIFwidW5pY28gMjDCsDg3wrAgaG90ZWwgcml2aWVyYSBtYXlhXCI6IHtcclxuICAgIG5hbWU6IFwiVU5JQ08gMjDCsDg3wrAgSG90ZWwgUml2aWVyYSBNYXlhXCIsXHJcbiAgICBkZXN0aW5hdGlvbjogXCJSaXZpZXJhIE1heWFcIixcclxuICAgIGNvdW50cnk6IFwiTWV4aWNvXCIsXHJcbiAgICBhaXJwb3J0Q29kZTogXCJDVU5cIixcclxuICAgIGZlYXR1cmVzOiB7XHJcbiAgICAgIGJlYWNoOiA5LFxyXG4gICAgICBwb29sOiAxMCxcclxuICAgICAgZ29sZjogNixcclxuICAgICAgc3BhOiAxMCxcclxuICAgICAgZm9vZDogMTAsXHJcbiAgICAgIG5pZ2h0bGlmZTogOCxcclxuICAgICAgc2hvcHBpbmc6IDYsXHJcbiAgICAgIGN1bHR1cmU6IDcsXHJcbiAgICAgIG91dGRvb3I6IDgsXHJcbiAgICAgIGZhbWlseTogN1xyXG4gICAgfSxcclxuICAgIHRyaXBBZHZpc29yUmF0aW5nOiA1LjAsXHJcbiAgICB0cmlwQWR2aXNvclJldmlld3M6IDM4OTQsXHJcbiAgICBwcmljZVJhbmdlOiBcIiQkJCQkXCIsXHJcbiAgICBhbGxJbmNsdXNpdmU6IHRydWVcclxuICB9LFxyXG4gIFwidHJzIHl1Y2F0w6FuIGhvdGVsXCI6IHtcclxuICAgIG5hbWU6IFwiVFJTIFl1Y2F0w6FuIEhvdGVsXCIsXHJcbiAgICBkZXN0aW5hdGlvbjogXCJSaXZpZXJhIE1heWFcIixcclxuICAgIGNvdW50cnk6IFwiTWV4aWNvXCIsXHJcbiAgICBhaXJwb3J0Q29kZTogXCJDVU5cIixcclxuICAgIGZlYXR1cmVzOiB7XHJcbiAgICAgIGJlYWNoOiA5LFxyXG4gICAgICBwb29sOiA5LFxyXG4gICAgICBnb2xmOiA3LFxyXG4gICAgICBzcGE6IDgsXHJcbiAgICAgIGZvb2Q6IDgsXHJcbiAgICAgIG5pZ2h0bGlmZTogNyxcclxuICAgICAgc2hvcHBpbmc6IDUsXHJcbiAgICAgIGN1bHR1cmU6IDUsXHJcbiAgICAgIG91dGRvb3I6IDcsXHJcbiAgICAgIGZhbWlseTogOFxyXG4gICAgfSxcclxuICAgIHRyaXBBZHZpc29yUmF0aW5nOiA0LjUsXHJcbiAgICB0cmlwQWR2aXNvclJldmlld3M6IDU2MjEsXHJcbiAgICBwcmljZVJhbmdlOiBcIiQkJCRcIixcclxuICAgIGFsbEluY2x1c2l2ZTogdHJ1ZVxyXG4gIH0sXHJcbiAgXCJiYXJjZWxvIG1heWEgcml2aWVyYVwiOiB7XHJcbiAgICBuYW1lOiBcIkJhcmNlbG8gTWF5YSBSaXZpZXJhXCIsXHJcbiAgICBkZXN0aW5hdGlvbjogXCJSaXZpZXJhIE1heWFcIixcclxuICAgIGNvdW50cnk6IFwiTWV4aWNvXCIsXHJcbiAgICBhaXJwb3J0Q29kZTogXCJDVU5cIixcclxuICAgIGZlYXR1cmVzOiB7XHJcbiAgICAgIGJlYWNoOiA5LFxyXG4gICAgICBwb29sOiA5LFxyXG4gICAgICBnb2xmOiA4LFxyXG4gICAgICBzcGE6IDcsXHJcbiAgICAgIGZvb2Q6IDgsXHJcbiAgICAgIG5pZ2h0bGlmZTogNyxcclxuICAgICAgc2hvcHBpbmc6IDYsXHJcbiAgICAgIGN1bHR1cmU6IDUsXHJcbiAgICAgIG91dGRvb3I6IDcsXHJcbiAgICAgIGZhbWlseTogOVxyXG4gICAgfSxcclxuICAgIHRyaXBBZHZpc29yUmF0aW5nOiA0LjUsXHJcbiAgICB0cmlwQWR2aXNvclJldmlld3M6IDEyNDUzLFxyXG4gICAgcHJpY2VSYW5nZTogXCIkJCRcIixcclxuICAgIGFsbEluY2x1c2l2ZTogdHJ1ZVxyXG4gIH0sXHJcbiAgXCJ2YWxlbnRpbiBpbXBlcmlhbCByaXZpZXJhIG1heWFcIjoge1xyXG4gICAgbmFtZTogXCJWYWxlbnRpbiBJbXBlcmlhbCBSaXZpZXJhIE1heWFcIixcclxuICAgIGRlc3RpbmF0aW9uOiBcIlBsYXlhIGRlbCBDYXJtZW5cIixcclxuICAgIGNvdW50cnk6IFwiTWV4aWNvXCIsXHJcbiAgICBhaXJwb3J0Q29kZTogXCJDVU5cIixcclxuICAgIGZlYXR1cmVzOiB7XHJcbiAgICAgIGJlYWNoOiAxMCxcclxuICAgICAgcG9vbDogOCxcclxuICAgICAgZ29sZjogNSxcclxuICAgICAgc3BhOiA4LFxyXG4gICAgICBmb29kOiA5LFxyXG4gICAgICBuaWdodGxpZmU6IDYsXHJcbiAgICAgIHNob3BwaW5nOiA1LFxyXG4gICAgICBjdWx0dXJlOiA1LFxyXG4gICAgICBvdXRkb29yOiA3LFxyXG4gICAgICBmYW1pbHk6IDdcclxuICAgIH0sXHJcbiAgICB0cmlwQWR2aXNvclJhdGluZzogNC41LFxyXG4gICAgdHJpcEFkdmlzb3JSZXZpZXdzOiA4OTM0LFxyXG4gICAgcHJpY2VSYW5nZTogXCIkJCQkXCIsXHJcbiAgICBhbGxJbmNsdXNpdmU6IHRydWVcclxuICB9LFxyXG4gIFwiZ3JhbmQgc2lyZW5pcyByaXZpZXJhIG1heWFcIjoge1xyXG4gICAgbmFtZTogXCJHcmFuZCBTaXJlbmlzIFJpdmllcmEgTWF5YVwiLFxyXG4gICAgZGVzdGluYXRpb246IFwiUml2aWVyYSBNYXlhXCIsXHJcbiAgICBjb3VudHJ5OiBcIk1leGljb1wiLFxyXG4gICAgYWlycG9ydENvZGU6IFwiQ1VOXCIsXHJcbiAgICBmZWF0dXJlczoge1xyXG4gICAgICBiZWFjaDogOCxcclxuICAgICAgcG9vbDogOCxcclxuICAgICAgZ29sZjogNixcclxuICAgICAgc3BhOiA3LFxyXG4gICAgICBmb29kOiA3LFxyXG4gICAgICBuaWdodGxpZmU6IDYsXHJcbiAgICAgIHNob3BwaW5nOiA1LFxyXG4gICAgICBjdWx0dXJlOiA1LFxyXG4gICAgICBvdXRkb29yOiA3LFxyXG4gICAgICBmYW1pbHk6IDlcclxuICAgIH0sXHJcbiAgICB0cmlwQWR2aXNvclJhdGluZzogNC4wLFxyXG4gICAgdHJpcEFkdmlzb3JSZXZpZXdzOiA3ODIxLFxyXG4gICAgcHJpY2VSYW5nZTogXCIkJCRcIixcclxuICAgIGFsbEluY2x1c2l2ZTogdHJ1ZVxyXG4gIH0sXHJcbiAgXCJkcmVhbXMgdHVsdW0gcmVzb3J0ICYgc3BhXCI6IHtcclxuICAgIG5hbWU6IFwiRHJlYW1zIFR1bHVtIFJlc29ydCAmIFNwYVwiLFxyXG4gICAgZGVzdGluYXRpb246IFwiVHVsdW1cIixcclxuICAgIGNvdW50cnk6IFwiTWV4aWNvXCIsXHJcbiAgICBhaXJwb3J0Q29kZTogXCJDVU5cIixcclxuICAgIGZlYXR1cmVzOiB7XHJcbiAgICAgIGJlYWNoOiAxMCxcclxuICAgICAgcG9vbDogOCxcclxuICAgICAgZ29sZjogNCxcclxuICAgICAgc3BhOiA4LFxyXG4gICAgICBmb29kOiA4LFxyXG4gICAgICBuaWdodGxpZmU6IDYsXHJcbiAgICAgIHNob3BwaW5nOiA0LFxyXG4gICAgICBjdWx0dXJlOiA3LFxyXG4gICAgICBvdXRkb29yOiA4LFxyXG4gICAgICBmYW1pbHk6IDhcclxuICAgIH0sXHJcbiAgICB0cmlwQWR2aXNvclJhdGluZzogNC41LFxyXG4gICAgdHJpcEFkdmlzb3JSZXZpZXdzOiA2NzU0LFxyXG4gICAgcHJpY2VSYW5nZTogXCIkJCQkXCIsXHJcbiAgICBhbGxJbmNsdXNpdmU6IHRydWVcclxuICB9LFxyXG4gIFwiaHlhdHQgemlsYXJhIGNhcCBjYW5hXCI6IHtcclxuICAgIG5hbWU6IFwiSHlhdHQgWmlsYXJhIENhcCBDYW5hXCIsXHJcbiAgICBkZXN0aW5hdGlvbjogXCJDYXAgQ2FuYVwiLFxyXG4gICAgY291bnRyeTogXCJEb21pbmljYW4gUmVwdWJsaWNcIixcclxuICAgIGFpcnBvcnRDb2RlOiBcIlBVSlwiLFxyXG4gICAgZmVhdHVyZXM6IHtcclxuICAgICAgYmVhY2g6IDEwLFxyXG4gICAgICBwb29sOiA5LFxyXG4gICAgICBnb2xmOiA4LFxyXG4gICAgICBzcGE6IDksXHJcbiAgICAgIGZvb2Q6IDksXHJcbiAgICAgIG5pZ2h0bGlmZTogOCxcclxuICAgICAgc2hvcHBpbmc6IDYsXHJcbiAgICAgIGN1bHR1cmU6IDUsXHJcbiAgICAgIG91dGRvb3I6IDgsXHJcbiAgICAgIGZhbWlseTogNVxyXG4gICAgfSxcclxuICAgIHRyaXBBZHZpc29yUmF0aW5nOiA1LjAsXHJcbiAgICB0cmlwQWR2aXNvclJldmlld3M6IDk4MjEsXHJcbiAgICBwcmljZVJhbmdlOiBcIiQkJCQkXCIsXHJcbiAgICBhbGxJbmNsdXNpdmU6IHRydWVcclxuICB9LFxyXG4gIFwic2VjcmV0cyBjYXAgY2FuYVwiOiB7XHJcbiAgICBuYW1lOiBcIlNlY3JldHMgQ2FwIENhbmFcIixcclxuICAgIGRlc3RpbmF0aW9uOiBcIkNhcCBDYW5hXCIsXHJcbiAgICBjb3VudHJ5OiBcIkRvbWluaWNhbiBSZXB1YmxpY1wiLFxyXG4gICAgYWlycG9ydENvZGU6IFwiUFVKXCIsXHJcbiAgICBmZWF0dXJlczoge1xyXG4gICAgICBiZWFjaDogMTAsXHJcbiAgICAgIHBvb2w6IDksXHJcbiAgICAgIGdvbGY6IDksXHJcbiAgICAgIHNwYTogOSxcclxuICAgICAgZm9vZDogOSxcclxuICAgICAgbmlnaHRsaWZlOiA4LFxyXG4gICAgICBzaG9wcGluZzogNixcclxuICAgICAgY3VsdHVyZTogNSxcclxuICAgICAgb3V0ZG9vcjogOCxcclxuICAgICAgZmFtaWx5OiA2XHJcbiAgICB9LFxyXG4gICAgdHJpcEFkdmlzb3JSYXRpbmc6IDQuNSxcclxuICAgIHRyaXBBZHZpc29yUmV2aWV3czogODQzMixcclxuICAgIHByaWNlUmFuZ2U6IFwiJCQkJCRcIixcclxuICAgIGFsbEluY2x1c2l2ZTogdHJ1ZVxyXG4gIH0sXHJcbiAgXCJkcmVhbXMgb255eCByZXNvcnQgJiBzcGFcIjoge1xyXG4gICAgbmFtZTogXCJEcmVhbXMgT255eCBSZXNvcnQgJiBTcGFcIixcclxuICAgIGRlc3RpbmF0aW9uOiBcIlB1bnRhIENhbmFcIixcclxuICAgIGNvdW50cnk6IFwiRG9taW5pY2FuIFJlcHVibGljXCIsXHJcbiAgICBhaXJwb3J0Q29kZTogXCJQVUpcIixcclxuICAgIGZlYXR1cmVzOiB7XHJcbiAgICAgIGJlYWNoOiA5LFxyXG4gICAgICBwb29sOiA5LFxyXG4gICAgICBnb2xmOiA2LFxyXG4gICAgICBzcGE6IDgsXHJcbiAgICAgIGZvb2Q6IDgsXHJcbiAgICAgIG5pZ2h0bGlmZTogNyxcclxuICAgICAgc2hvcHBpbmc6IDYsXHJcbiAgICAgIGN1bHR1cmU6IDQsXHJcbiAgICAgIG91dGRvb3I6IDcsXHJcbiAgICAgIGZhbWlseTogOFxyXG4gICAgfSxcclxuICAgIHRyaXBBZHZpc29yUmF0aW5nOiA0LjUsXHJcbiAgICB0cmlwQWR2aXNvclJldmlld3M6IDU2NDMsXHJcbiAgICBwcmljZVJhbmdlOiBcIiQkJCRcIixcclxuICAgIGFsbEluY2x1c2l2ZTogdHJ1ZVxyXG4gIH0sXHJcbiAgXCJyb3lhbHRvbiBjaGljIHB1bnRhIGNhbmFcIjoge1xyXG4gICAgbmFtZTogXCJSb3lhbHRvbiBDSElDIFB1bnRhIENhbmFcIixcclxuICAgIGRlc3RpbmF0aW9uOiBcIlB1bnRhIENhbmFcIixcclxuICAgIGNvdW50cnk6IFwiRG9taW5pY2FuIFJlcHVibGljXCIsXHJcbiAgICBhaXJwb3J0Q29kZTogXCJQVUpcIixcclxuICAgIGZlYXR1cmVzOiB7XHJcbiAgICAgIGJlYWNoOiA5LFxyXG4gICAgICBwb29sOiA5LFxyXG4gICAgICBnb2xmOiA2LFxyXG4gICAgICBzcGE6IDgsXHJcbiAgICAgIGZvb2Q6IDgsXHJcbiAgICAgIG5pZ2h0bGlmZTogOSxcclxuICAgICAgc2hvcHBpbmc6IDcsXHJcbiAgICAgIGN1bHR1cmU6IDQsXHJcbiAgICAgIG91dGRvb3I6IDcsXHJcbiAgICAgIGZhbWlseTogNVxyXG4gICAgfSxcclxuICAgIHRyaXBBZHZpc29yUmF0aW5nOiA0LjUsXHJcbiAgICB0cmlwQWR2aXNvclJldmlld3M6IDcyMzQsXHJcbiAgICBwcmljZVJhbmdlOiBcIiQkJCRcIixcclxuICAgIGFsbEluY2x1c2l2ZTogdHJ1ZVxyXG4gIH0sXHJcbiAgXCJpYmVyb3N0YXIgZ3JhbmQgYsOhdmFyb1wiOiB7XHJcbiAgICBuYW1lOiBcIkliZXJvc3RhciBHcmFuZCBCw6F2YXJvXCIsXHJcbiAgICBkZXN0aW5hdGlvbjogXCJCw6F2YXJvXCIsXHJcbiAgICBjb3VudHJ5OiBcIkRvbWluaWNhbiBSZXB1YmxpY1wiLFxyXG4gICAgYWlycG9ydENvZGU6IFwiUFVKXCIsXHJcbiAgICBmZWF0dXJlczoge1xyXG4gICAgICBiZWFjaDogMTAsXHJcbiAgICAgIHBvb2w6IDgsXHJcbiAgICAgIGdvbGY6IDcsXHJcbiAgICAgIHNwYTogOCxcclxuICAgICAgZm9vZDogOCxcclxuICAgICAgbmlnaHRsaWZlOiA3LFxyXG4gICAgICBzaG9wcGluZzogNixcclxuICAgICAgY3VsdHVyZTogNCxcclxuICAgICAgb3V0ZG9vcjogNyxcclxuICAgICAgZmFtaWx5OiA3XHJcbiAgICB9LFxyXG4gICAgdHJpcEFkdmlzb3JSYXRpbmc6IDQuNSxcclxuICAgIHRyaXBBZHZpc29yUmV2aWV3czogNjgyMSxcclxuICAgIHByaWNlUmFuZ2U6IFwiJCQkJFwiLFxyXG4gICAgYWxsSW5jbHVzaXZlOiB0cnVlXHJcbiAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRSZXNvcnQobmFtZTogc3RyaW5nKTogUmVzb3J0IHwgbnVsbCB7XHJcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5hbWUudG9Mb3dlckNhc2UoKS50cmltKCk7XHJcbiAgcmV0dXJuIFJFU09SVF9EQVRBQkFTRVtub3JtYWxpemVkXSB8fCBudWxsO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlUmVzb3J0U2NvcmUocmVzb3J0OiBSZXNvcnQsIHByZWZlcmVuY2VzPzogUmVjb3JkPHN0cmluZywgbnVtYmVyPik6IG51bWJlciB7XHJcbiAgaWYgKCFwcmVmZXJlbmNlcykgcmV0dXJuIDA7XHJcbiAgXHJcbiAgbGV0IHNjb3JlID0gMDtcclxuICBsZXQgdG90YWxXZWlnaHQgPSAwO1xyXG4gIFxyXG4gIGZvciAoY29uc3QgW2ZlYXR1cmUsIHVzZXJSYXRpbmddIG9mIE9iamVjdC5lbnRyaWVzKHByZWZlcmVuY2VzKSkge1xyXG4gICAgaWYgKHVzZXJSYXRpbmcgJiYgdXNlclJhdGluZyA+IDApIHtcclxuICAgICAgY29uc3QgcmVzb3J0UmF0aW5nID0gcmVzb3J0LmZlYXR1cmVzW2ZlYXR1cmUgYXMga2V5b2YgdHlwZW9mIHJlc29ydC5mZWF0dXJlc10gfHwgNTtcclxuICAgICAgc2NvcmUgKz0gKHVzZXJSYXRpbmcgKiByZXNvcnRSYXRpbmcpO1xyXG4gICAgICB0b3RhbFdlaWdodCArPSAodXNlclJhdGluZyAqIDEwKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgLy8gQWRkIFRyaXBBZHZpc29yIGJvbnVzXHJcbiAgaWYgKHJlc29ydC50cmlwQWR2aXNvclJhdGluZykge1xyXG4gICAgc2NvcmUgKz0gcmVzb3J0LnRyaXBBZHZpc29yUmF0aW5nICogMTAwO1xyXG4gIH1cclxuICBcclxuICByZXR1cm4gdG90YWxXZWlnaHQgPiAwID8gTWF0aC5yb3VuZCgoc2NvcmUgLyB0b3RhbFdlaWdodCkgKiAxMDAwKSA6IDA7XHJcbn1cclxuIl0sIm5hbWVzIjpbIlJFU09SVF9EQVRBQkFTRSIsIm5hbWUiLCJkZXN0aW5hdGlvbiIsImNvdW50cnkiLCJhaXJwb3J0Q29kZSIsImZlYXR1cmVzIiwiYmVhY2giLCJwb29sIiwiZ29sZiIsInNwYSIsImZvb2QiLCJuaWdodGxpZmUiLCJzaG9wcGluZyIsImN1bHR1cmUiLCJvdXRkb29yIiwiZmFtaWx5IiwidHJpcEFkdmlzb3JSYXRpbmciLCJ0cmlwQWR2aXNvclJldmlld3MiLCJwcmljZVJhbmdlIiwiYWxsSW5jbHVzaXZlIiwiZmluZFJlc29ydCIsIm5vcm1hbGl6ZWQiLCJ0b0xvd2VyQ2FzZSIsInRyaW0iLCJjYWxjdWxhdGVSZXNvcnRTY29yZSIsInJlc29ydCIsInByZWZlcmVuY2VzIiwic2NvcmUiLCJ0b3RhbFdlaWdodCIsImZlYXR1cmUiLCJ1c2VyUmF0aW5nIiwiT2JqZWN0IiwiZW50cmllcyIsInJlc29ydFJhdGluZyIsIk1hdGgiLCJyb3VuZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./lib/resorts.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/date-fns","vendor-chunks/next","vendor-chunks/zod"], () => (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fresort-compare%2Froute&page=%2Fapi%2Fresort-compare%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fresort-compare%2Froute.ts&appDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"))); +module.exports = __webpack_exports__; + +})(); \ No newline at end of file diff --git a/.next/server/app/api/search/route.js b/.next/server/app/api/search/route.js new file mode 100644 index 0000000..cb3d11d --- /dev/null +++ b/.next/server/app/api/search/route.js @@ -0,0 +1,156 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(() => { +var exports = {}; +exports.id = "app/api/search/route"; +exports.ids = ["app/api/search/route"]; +exports.modules = { + +/***/ "next/dist/compiled/next-server/app-page.runtime.dev.js": +/*!*************************************************************************!*\ + !*** external "next/dist/compiled/next-server/app-page.runtime.dev.js" ***! + \*************************************************************************/ +/***/ ((module) => { + +module.exports = require("next/dist/compiled/next-server/app-page.runtime.dev.js"); + +/***/ }), + +/***/ "next/dist/compiled/next-server/app-route.runtime.dev.js": +/*!**************************************************************************!*\ + !*** external "next/dist/compiled/next-server/app-route.runtime.dev.js" ***! + \**************************************************************************/ +/***/ ((module) => { + +module.exports = require("next/dist/compiled/next-server/app-route.runtime.dev.js"); + +/***/ }), + +/***/ "undici": +/*!*************************!*\ + !*** external "undici" ***! + \*************************/ +/***/ ((module) => { + +module.exports = require("undici"); + +/***/ }), + +/***/ "buffer": +/*!*************************!*\ + !*** external "buffer" ***! + \*************************/ +/***/ ((module) => { + +module.exports = require("buffer"); + +/***/ }), + +/***/ "node:stream": +/*!******************************!*\ + !*** external "node:stream" ***! + \******************************/ +/***/ ((module) => { + +module.exports = require("node:stream"); + +/***/ }), + +/***/ "stream": +/*!*************************!*\ + !*** external "stream" ***! + \*************************/ +/***/ ((module) => { + +module.exports = require("stream"); + +/***/ }), + +/***/ "string_decoder": +/*!*********************************!*\ + !*** external "string_decoder" ***! + \*********************************/ +/***/ ((module) => { + +module.exports = require("string_decoder"); + +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fsearch%2Froute&page=%2Fapi%2Fsearch%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fsearch%2Froute.ts&appDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!": +/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fsearch%2Froute&page=%2Fapi%2Fsearch%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fsearch%2Froute.ts&appDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D! ***! + \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ originalPathname: () => (/* binding */ originalPathname),\n/* harmony export */ patchFetch: () => (/* binding */ patchFetch),\n/* harmony export */ requestAsyncStorage: () => (/* binding */ requestAsyncStorage),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ serverHooks: () => (/* binding */ serverHooks),\n/* harmony export */ staticGenerationAsyncStorage: () => (/* binding */ staticGenerationAsyncStorage)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/future/route-modules/app-route/module.compiled */ \"(rsc)/./node_modules/next/dist/server/future/route-modules/app-route/module.compiled.js\");\n/* harmony import */ var next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_future_route_modules_app_route_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_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/server/lib/patch-fetch */ \"(rsc)/./node_modules/next/dist/server/lib/patch-fetch.js\");\n/* harmony import */ var next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var D_Projects_Dev_Holiday_Travel_App_app_api_search_route_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app/api/search/route.ts */ \"(rsc)/./app/api/search/route.ts\");\n\n\n\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"\"\nconst routeModule = new next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppRouteRouteModule({\n definition: {\n kind: next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_ROUTE,\n page: \"/api/search/route\",\n pathname: \"/api/search\",\n filename: \"route\",\n bundlePath: \"app/api/search/route\"\n },\n resolvedPagePath: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\api\\\\search\\\\route.ts\",\n nextConfigOutput,\n userland: D_Projects_Dev_Holiday_Travel_App_app_api_search_route_ts__WEBPACK_IMPORTED_MODULE_3__\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { requestAsyncStorage, staticGenerationAsyncStorage, serverHooks } = routeModule;\nconst originalPathname = \"/api/search/route\";\nfunction patchFetch() {\n return (0,next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__.patchFetch)({\n serverHooks,\n staticGenerationAsyncStorage\n });\n}\n\n\n//# sourceMappingURL=app-route.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWFwcC1sb2FkZXIuanM/bmFtZT1hcHAlMkZhcGklMkZzZWFyY2glMkZyb3V0ZSZwYWdlPSUyRmFwaSUyRnNlYXJjaCUyRnJvdXRlJmFwcFBhdGhzPSZwYWdlUGF0aD1wcml2YXRlLW5leHQtYXBwLWRpciUyRmFwaSUyRnNlYXJjaCUyRnJvdXRlLnRzJmFwcERpcj1EJTNBJTVDUHJvamVjdHMlNUNEZXYlNUNIb2xpZGF5JTIwVHJhdmVsJTIwQXBwJTVDYXBwJnBhZ2VFeHRlbnNpb25zPXRzeCZwYWdlRXh0ZW5zaW9ucz10cyZwYWdlRXh0ZW5zaW9ucz1qc3gmcGFnZUV4dGVuc2lvbnM9anMmcm9vdERpcj1EJTNBJTVDUHJvamVjdHMlNUNEZXYlNUNIb2xpZGF5JTIwVHJhdmVsJTIwQXBwJmlzRGV2PXRydWUmdHNjb25maWdQYXRoPXRzY29uZmlnLmpzb24mYmFzZVBhdGg9JmFzc2V0UHJlZml4PSZuZXh0Q29uZmlnT3V0cHV0PSZwcmVmZXJyZWRSZWdpb249Jm1pZGRsZXdhcmVDb25maWc9ZTMwJTNEISIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBc0c7QUFDdkM7QUFDYztBQUNpQjtBQUM5RjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0hBQW1CO0FBQzNDO0FBQ0EsY0FBYyx5RUFBUztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsWUFBWTtBQUNaLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxRQUFRLGlFQUFpRTtBQUN6RTtBQUNBO0FBQ0EsV0FBVyw0RUFBVztBQUN0QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ3VIOztBQUV2SCIsInNvdXJjZXMiOlsid2VicGFjazovL2hvbGlkYXktZGVhbC1maW5kZXIvPzJlZjciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwUm91dGVSb3V0ZU1vZHVsZSB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2Z1dHVyZS9yb3V0ZS1tb2R1bGVzL2FwcC1yb3V0ZS9tb2R1bGUuY29tcGlsZWRcIjtcbmltcG9ydCB7IFJvdXRlS2luZCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2Z1dHVyZS9yb3V0ZS1raW5kXCI7XG5pbXBvcnQgeyBwYXRjaEZldGNoIGFzIF9wYXRjaEZldGNoIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL3BhdGNoLWZldGNoXCI7XG5pbXBvcnQgKiBhcyB1c2VybGFuZCBmcm9tIFwiRDpcXFxcUHJvamVjdHNcXFxcRGV2XFxcXEhvbGlkYXkgVHJhdmVsIEFwcFxcXFxhcHBcXFxcYXBpXFxcXHNlYXJjaFxcXFxyb3V0ZS50c1wiO1xuLy8gV2UgaW5qZWN0IHRoZSBuZXh0Q29uZmlnT3V0cHV0IGhlcmUgc28gdGhhdCB3ZSBjYW4gdXNlIHRoZW0gaW4gdGhlIHJvdXRlXG4vLyBtb2R1bGUuXG5jb25zdCBuZXh0Q29uZmlnT3V0cHV0ID0gXCJcIlxuY29uc3Qgcm91dGVNb2R1bGUgPSBuZXcgQXBwUm91dGVSb3V0ZU1vZHVsZSh7XG4gICAgZGVmaW5pdGlvbjoge1xuICAgICAgICBraW5kOiBSb3V0ZUtpbmQuQVBQX1JPVVRFLFxuICAgICAgICBwYWdlOiBcIi9hcGkvc2VhcmNoL3JvdXRlXCIsXG4gICAgICAgIHBhdGhuYW1lOiBcIi9hcGkvc2VhcmNoXCIsXG4gICAgICAgIGZpbGVuYW1lOiBcInJvdXRlXCIsXG4gICAgICAgIGJ1bmRsZVBhdGg6IFwiYXBwL2FwaS9zZWFyY2gvcm91dGVcIlxuICAgIH0sXG4gICAgcmVzb2x2ZWRQYWdlUGF0aDogXCJEOlxcXFxQcm9qZWN0c1xcXFxEZXZcXFxcSG9saWRheSBUcmF2ZWwgQXBwXFxcXGFwcFxcXFxhcGlcXFxcc2VhcmNoXFxcXHJvdXRlLnRzXCIsXG4gICAgbmV4dENvbmZpZ091dHB1dCxcbiAgICB1c2VybGFuZFxufSk7XG4vLyBQdWxsIG91dCB0aGUgZXhwb3J0cyB0aGF0IHdlIG5lZWQgdG8gZXhwb3NlIGZyb20gdGhlIG1vZHVsZS4gVGhpcyBzaG91bGRcbi8vIGJlIGVsaW1pbmF0ZWQgd2hlbiB3ZSd2ZSBtb3ZlZCB0aGUgb3RoZXIgcm91dGVzIHRvIHRoZSBuZXcgZm9ybWF0LiBUaGVzZVxuLy8gYXJlIHVzZWQgdG8gaG9vayBpbnRvIHRoZSByb3V0ZS5cbmNvbnN0IHsgcmVxdWVzdEFzeW5jU3RvcmFnZSwgc3RhdGljR2VuZXJhdGlvbkFzeW5jU3RvcmFnZSwgc2VydmVySG9va3MgfSA9IHJvdXRlTW9kdWxlO1xuY29uc3Qgb3JpZ2luYWxQYXRobmFtZSA9IFwiL2FwaS9zZWFyY2gvcm91dGVcIjtcbmZ1bmN0aW9uIHBhdGNoRmV0Y2goKSB7XG4gICAgcmV0dXJuIF9wYXRjaEZldGNoKHtcbiAgICAgICAgc2VydmVySG9va3MsXG4gICAgICAgIHN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2VcbiAgICB9KTtcbn1cbmV4cG9ydCB7IHJvdXRlTW9kdWxlLCByZXF1ZXN0QXN5bmNTdG9yYWdlLCBzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlLCBzZXJ2ZXJIb29rcywgb3JpZ2luYWxQYXRobmFtZSwgcGF0Y2hGZXRjaCwgIH07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwcC1yb3V0ZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fsearch%2Froute&page=%2Fapi%2Fsearch%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fsearch%2Froute.ts&appDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!\n"); + +/***/ }), + +/***/ "(rsc)/./app/api/search/route.ts": +/*!*********************************!*\ + !*** ./app/api/search/route.ts ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ POST: () => (/* binding */ POST)\n/* harmony export */ });\n/* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! zod */ \"(rsc)/./node_modules/zod/v3/types.js\");\n/* harmony import */ var _lib_providers_yowDeals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/lib/providers/yowDeals */ \"(rsc)/./lib/providers/yowDeals.ts\");\n/* harmony import */ var _lib_providers_linkBuilders__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/lib/providers/linkBuilders */ \"(rsc)/./lib/providers/linkBuilders.ts\");\n/* harmony import */ var _lib_score__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/lib/score */ \"(rsc)/./lib/score.ts\");\n\n\n\n\nconst schema = zod__WEBPACK_IMPORTED_MODULE_3__.object({\n origin: zod__WEBPACK_IMPORTED_MODULE_3__.string().min(3).max(4),\n destinations: zod__WEBPACK_IMPORTED_MODULE_3__.array(zod__WEBPACK_IMPORTED_MODULE_3__.string().min(3)).nonempty(),\n startDate: zod__WEBPACK_IMPORTED_MODULE_3__.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/),\n endDate: zod__WEBPACK_IMPORTED_MODULE_3__.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/),\n tripLengthMin: zod__WEBPACK_IMPORTED_MODULE_3__.number().int().positive(),\n tripLengthMax: zod__WEBPACK_IMPORTED_MODULE_3__.number().int().positive(),\n budget: zod__WEBPACK_IMPORTED_MODULE_3__.number().int().positive().optional().nullable(),\n currency: zod__WEBPACK_IMPORTED_MODULE_3__.string().default(\"CAD\").optional(),\n nonStopOnly: zod__WEBPACK_IMPORTED_MODULE_3__.boolean().optional(),\n sources: zod__WEBPACK_IMPORTED_MODULE_3__.array(zod__WEBPACK_IMPORTED_MODULE_3__.string()).optional(),\n preferences: zod__WEBPACK_IMPORTED_MODULE_3__.object({\n beach: zod__WEBPACK_IMPORTED_MODULE_3__.number().min(0).max(10).optional(),\n pool: zod__WEBPACK_IMPORTED_MODULE_3__.number().min(0).max(10).optional(),\n golf: zod__WEBPACK_IMPORTED_MODULE_3__.number().min(0).max(10).optional(),\n spa: zod__WEBPACK_IMPORTED_MODULE_3__.number().min(0).max(10).optional(),\n food: zod__WEBPACK_IMPORTED_MODULE_3__.number().min(0).max(10).optional(),\n nightlife: zod__WEBPACK_IMPORTED_MODULE_3__.number().min(0).max(10).optional(),\n shopping: zod__WEBPACK_IMPORTED_MODULE_3__.number().min(0).max(10).optional(),\n culture: zod__WEBPACK_IMPORTED_MODULE_3__.number().min(0).max(10).optional(),\n outdoor: zod__WEBPACK_IMPORTED_MODULE_3__.number().min(0).max(10).optional(),\n family: zod__WEBPACK_IMPORTED_MODULE_3__.number().min(0).max(10).optional()\n }).optional()\n});\nasync function POST(req) {\n try {\n const body = await req.json();\n const parsed = schema.parse(body);\n const sources = (parsed.sources && parsed.sources.length ? parsed.sources : [\n \"Deals\",\n \"Skyscanner\",\n \"GoogleFlights\",\n \"AirCanada\"\n ]).map((s)=>s.toLowerCase());\n const tasks = [];\n if (sources.includes(\"deals\")) tasks.push((0,_lib_providers_yowDeals__WEBPACK_IMPORTED_MODULE_0__.fetchCityDeals)(parsed));\n if (sources.includes(\"skyscanner\")) tasks.push((0,_lib_providers_linkBuilders__WEBPACK_IMPORTED_MODULE_1__.buildSkyscannerLinks)(parsed));\n if (sources.includes(\"googleflights\")) tasks.push((0,_lib_providers_linkBuilders__WEBPACK_IMPORTED_MODULE_1__.buildGoogleFlightsLinks)(parsed));\n if (sources.includes(\"aircanada\")) tasks.push((0,_lib_providers_linkBuilders__WEBPACK_IMPORTED_MODULE_1__.buildAirCanadaLinks)(parsed));\n // Demo mode fallback\n const demo = process.env.DEMO === \"true\";\n let results = [];\n if (demo) {\n results = [\n {\n id: \"demo1\",\n title: \"\\uD83D\\uDD25 Ottawa → Cancun (7 nights)\",\n source: \"Demo\",\n link: \"#\",\n price: 685,\n currency: \"CAD\",\n startDate: parsed.startDate,\n endDate: parsed.startDate,\n nights: 7,\n origin: parsed.origin,\n destination: parsed.destinations[0],\n stops: 0\n },\n {\n id: \"demo2\",\n title: \"Ottawa → Punta Cana (7 nights)\",\n source: \"Demo\",\n link: \"#\",\n price: 712,\n currency: \"CAD\",\n startDate: parsed.startDate,\n endDate: parsed.startDate,\n nights: 7,\n origin: parsed.origin,\n destination: parsed.destinations[0],\n stops: 1\n }\n ];\n } else {\n const settled = await Promise.allSettled(tasks);\n for (const s of settled){\n if (s.status === \"fulfilled\") results.push(...s.value);\n }\n }\n // Filter and score\n if (parsed.budget) results = results.filter((r)=>!r.price || r.price <= (parsed.budget || 0));\n if (parsed.nonStopOnly) results = results.filter((r)=>r.stops == null || r.stops === 0);\n results.forEach((r)=>r.score = (0,_lib_score__WEBPACK_IMPORTED_MODULE_2__.scoreDeal)(r, parsed.preferences));\n results.sort((a, b)=>(b.score || 0) - (a.score || 0));\n // Optional n8n webhook\n const webhook = process.env.N8N_WEBHOOK_URL;\n if (webhook) {\n try {\n await fetch(webhook, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\"\n },\n body: JSON.stringify({\n criteria: parsed,\n top10: results.slice(0, 10)\n })\n });\n } catch (e) {}\n }\n return new Response(JSON.stringify({\n results\n }), {\n headers: {\n \"content-type\": \"application/json\"\n }\n });\n } catch (e) {\n return new Response(JSON.stringify({\n error: e?.message || \"Invalid payload\"\n }), {\n status: 400,\n headers: {\n \"content-type\": \"application/json\"\n }\n });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RixJQUFJdUIsT0FBT2xCLFdBQVcsRUFBRStCLFVBQVVBLFFBQVFjLE1BQU0sQ0FBQ0MsQ0FBQUEsSUFBS0EsRUFBRVAsS0FBSyxJQUFJLFFBQVFPLEVBQUVQLEtBQUssS0FBSztRQUVyRlIsUUFBUWdCLE9BQU8sQ0FBQ0QsQ0FBQUEsSUFBS0EsRUFBRUUsS0FBSyxHQUFHdkUscURBQVNBLENBQUNxRSxHQUFHNUIsT0FBT2YsV0FBVztRQUM5RDRCLFFBQVFrQixJQUFJLENBQUMsQ0FBQ0MsR0FBRUMsSUFBTSxDQUFDQSxFQUFFSCxLQUFLLElBQUksS0FBTUUsQ0FBQUEsRUFBRUYsS0FBSyxJQUFJO1FBRW5ELHVCQUF1QjtRQUN2QixNQUFNSSxVQUFVeEIsUUFBUUMsR0FBRyxDQUFDd0IsZUFBZTtRQUMzQyxJQUFJRCxTQUFTO1lBQ1gsSUFBSTtnQkFDRixNQUFNRSxNQUFNRixTQUFTO29CQUFFRyxRQUFRO29CQUFRQyxTQUFTO3dCQUFFLGdCQUFnQjtvQkFBbUI7b0JBQUd4QyxNQUFNeUMsS0FBS0MsU0FBUyxDQUFDO3dCQUFFQyxVQUFVekM7d0JBQVEwQyxPQUFPN0IsUUFBUThCLEtBQUssQ0FBQyxHQUFFO29CQUFJO2dCQUFHO1lBQ2pLLEVBQUUsT0FBTUMsR0FBRyxDQUFlO1FBQzVCO1FBRUEsT0FBTyxJQUFJQyxTQUFTTixLQUFLQyxTQUFTLENBQUM7WUFBRTNCO1FBQVEsSUFBSTtZQUFFeUIsU0FBUztnQkFBRSxnQkFBZ0I7WUFBbUI7UUFBRTtJQUNyRyxFQUFFLE9BQU9NLEdBQVE7UUFDZixPQUFPLElBQUlDLFNBQVNOLEtBQUtDLFNBQVMsQ0FBQztZQUFFTSxPQUFPRixHQUFHRyxXQUFXO1FBQWtCLElBQUk7WUFBRXRCLFFBQVE7WUFBS2EsU0FBUztnQkFBRSxnQkFBZ0I7WUFBbUI7UUFBRTtJQUNqSjtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vaG9saWRheS1kZWFsLWZpbmRlci8uL2FwcC9hcGkvc2VhcmNoL3JvdXRlLnRzPzc4MzEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmV4dFJlcXVlc3QgfSBmcm9tIFwibmV4dC9zZXJ2ZXJcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgdHlwZSB7IFNlYXJjaENyaXRlcmlhLCBEZWFsIH0gZnJvbSBcIkAvbGliL3R5cGVzXCI7XG5pbXBvcnQgeyBmZXRjaENpdHlEZWFscyB9IGZyb20gXCJAL2xpYi9wcm92aWRlcnMveW93RGVhbHNcIjtcbmltcG9ydCB7IGJ1aWxkU2t5c2Nhbm5lckxpbmtzLCBidWlsZEdvb2dsZUZsaWdodHNMaW5rcywgYnVpbGRBaXJDYW5hZGFMaW5rcyB9IGZyb20gXCJAL2xpYi9wcm92aWRlcnMvbGlua0J1aWxkZXJzXCI7XG5pbXBvcnQgeyBzY29yZURlYWwgfSBmcm9tIFwiQC9saWIvc2NvcmVcIjtcblxuY29uc3Qgc2NoZW1hID0gei5vYmplY3Qoe1xuICBvcmlnaW46IHouc3RyaW5nKCkubWluKDMpLm1heCg0KSxcbiAgZGVzdGluYXRpb25zOiB6LmFycmF5KHouc3RyaW5nKCkubWluKDMpKS5ub25lbXB0eSgpLFxuICBzdGFydERhdGU6IHouc3RyaW5nKCkucmVnZXgoL15cXGR7NH0tXFxkezJ9LVxcZHsyfSQvKSxcbiAgZW5kRGF0ZTogei5zdHJpbmcoKS5yZWdleCgvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9JC8pLFxuICB0cmlwTGVuZ3RoTWluOiB6Lm51bWJlcigpLmludCgpLnBvc2l0aXZlKCksXG4gIHRyaXBMZW5ndGhNYXg6IHoubnVtYmVyKCkuaW50KCkucG9zaXRpdmUoKSxcbiAgYnVkZ2V0OiB6Lm51bWJlcigpLmludCgpLnBvc2l0aXZlKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLFxuICBjdXJyZW5jeTogei5zdHJpbmcoKS5kZWZhdWx0KFwiQ0FEXCIpLm9wdGlvbmFsKCksXG4gIG5vblN0b3BPbmx5OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBzb3VyY2VzOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIHByZWZlcmVuY2VzOiB6Lm9iamVjdCh7XG4gICAgYmVhY2g6IHoubnVtYmVyKCkubWluKDApLm1heCgxMCkub3B0aW9uYWwoKSxcbiAgICBwb29sOiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMTApLm9wdGlvbmFsKCksXG4gICAgZ29sZjogei5udW1iZXIoKS5taW4oMCkubWF4KDEwKS5vcHRpb25hbCgpLFxuICAgIHNwYTogei5udW1iZXIoKS5taW4oMCkubWF4KDEwKS5vcHRpb25hbCgpLFxuICAgIGZvb2Q6IHoubnVtYmVyKCkubWluKDApLm1heCgxMCkub3B0aW9uYWwoKSxcbiAgICBuaWdodGxpZmU6IHoubnVtYmVyKCkubWluKDApLm1heCgxMCkub3B0aW9uYWwoKSxcbiAgICBzaG9wcGluZzogei5udW1iZXIoKS5taW4oMCkubWF4KDEwKS5vcHRpb25hbCgpLFxuICAgIGN1bHR1cmU6IHoubnVtYmVyKCkubWluKDApLm1heCgxMCkub3B0aW9uYWwoKSxcbiAgICBvdXRkb29yOiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMTApLm9wdGlvbmFsKCksXG4gICAgZmFtaWx5OiB6Lm51bWJlcigpLm1pbigwKS5tYXgoMTApLm9wdGlvbmFsKCksXG4gIH0pLm9wdGlvbmFsKClcbn0pO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gUE9TVChyZXE6IE5leHRSZXF1ZXN0KSB7XG4gIHRyeSB7XG4gICAgY29uc3QgYm9keSA9IGF3YWl0IHJlcS5qc29uKCk7XG4gICAgY29uc3QgcGFyc2VkID0gc2NoZW1hLnBhcnNlKGJvZHkpIGFzIFNlYXJjaENyaXRlcmlhO1xuICAgIGNvbnN0IHNvdXJjZXMgPSAocGFyc2VkLnNvdXJjZXMgJiYgcGFyc2VkLnNvdXJjZXMubGVuZ3RoID8gcGFyc2VkLnNvdXJjZXMgOiBbXCJEZWFsc1wiLCBcIlNreXNjYW5uZXJcIiwgXCJHb29nbGVGbGlnaHRzXCIsIFwiQWlyQ2FuYWRhXCJdKS5tYXAocyA9PiBzLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgY29uc3QgdGFza3M6IFByb21pc2U8RGVhbFtdPltdID0gW107XG5cbiAgICBpZiAoc291cmNlcy5pbmNsdWRlcyhcImRlYWxzXCIpKSB0YXNrcy5wdXNoKGZldGNoQ2l0eURlYWxzKHBhcnNlZCkpO1xuICAgIGlmIChzb3VyY2VzLmluY2x1ZGVzKFwic2t5c2Nhbm5lclwiKSkgdGFza3MucHVzaChidWlsZFNreXNjYW5uZXJMaW5rcyhwYXJzZWQpKTtcbiAgICBpZiAoc291cmNlcy5pbmNsdWRlcyhcImdvb2dsZWZsaWdodHNcIikpIHRhc2tzLnB1c2goYnVpbGRHb29nbGVGbGlnaHRzTGlua3MocGFyc2VkKSk7XG4gICAgaWYgKHNvdXJjZXMuaW5jbHVkZXMoXCJhaXJjYW5hZGFcIikpIHRhc2tzLnB1c2goYnVpbGRBaXJDYW5hZGFMaW5rcyhwYXJzZWQpKTtcblxuICAgIC8vIERlbW8gbW9kZSBmYWxsYmFja1xuICAgIGNvbnN0IGRlbW8gPSBwcm9jZXNzLmVudi5ERU1PID09PSBcInRydWVcIjtcblxuICAgIGxldCByZXN1bHRzOiBEZWFsW10gPSBbXTtcbiAgICBpZiAoZGVtbykge1xuICAgICAgcmVzdWx0cyA9IFtcbiAgICAgICAgeyBpZDogXCJkZW1vMVwiLCB0aXRsZTogXCLwn5SlIE90dGF3YSDihpIgQ2FuY3VuICg3IG5pZ2h0cylcIiwgc291cmNlOiBcIkRlbW9cIiwgbGluazogXCIjXCIsIHByaWNlOiA2ODUsIGN1cnJlbmN5OiBcIkNBRFwiLCBzdGFydERhdGU6IHBhcnNlZC5zdGFydERhdGUsIGVuZERhdGU6IHBhcnNlZC5zdGFydERhdGUsIG5pZ2h0czogNywgb3JpZ2luOiBwYXJzZWQub3JpZ2luLCBkZXN0aW5hdGlvbjogcGFyc2VkLmRlc3RpbmF0aW9uc1swXSwgc3RvcHM6IDAgfSxcbiAgICAgICAgeyBpZDogXCJkZW1vMlwiLCB0aXRsZTogXCJPdHRhd2Eg4oaSIFB1bnRhIENhbmEgKDcgbmlnaHRzKVwiLCBzb3VyY2U6IFwiRGVtb1wiLCBsaW5rOiBcIiNcIiwgcHJpY2U6IDcxMiwgY3VycmVuY3k6IFwiQ0FEXCIsIHN0YXJ0RGF0ZTogcGFyc2VkLnN0YXJ0RGF0ZSwgZW5kRGF0ZTogcGFyc2VkLnN0YXJ0RGF0ZSwgbmlnaHRzOiA3LCBvcmlnaW46IHBhcnNlZC5vcmlnaW4sIGRlc3RpbmF0aW9uOiBwYXJzZWQuZGVzdGluYXRpb25zWzBdLCBzdG9wczogMSB9XG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZXR0bGVkID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHRhc2tzKTtcbiAgICAgIGZvciAoY29uc3QgcyBvZiBzZXR0bGVkKSB7XG4gICAgICAgIGlmIChzLnN0YXR1cyA9PT0gXCJmdWxmaWxsZWRcIikgcmVzdWx0cy5wdXNoKC4uLnMudmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpbHRlciBhbmQgc2NvcmVcbiAgICBpZiAocGFyc2VkLmJ1ZGdldCkgcmVzdWx0cyA9IHJlc3VsdHMuZmlsdGVyKHIgPT4gIXIucHJpY2UgfHwgci5wcmljZSA8PSAocGFyc2VkLmJ1ZGdldCB8fCAwKSk7XG4gICAgaWYgKHBhcnNlZC5ub25TdG9wT25seSkgcmVzdWx0cyA9IHJlc3VsdHMuZmlsdGVyKHIgPT4gci5zdG9wcyA9PSBudWxsIHx8IHIuc3RvcHMgPT09IDApO1xuXG4gICAgcmVzdWx0cy5mb3JFYWNoKHIgPT4gci5zY29yZSA9IHNjb3JlRGVhbChyLCBwYXJzZWQucHJlZmVyZW5jZXMpKTtcbiAgICByZXN1bHRzLnNvcnQoKGEsYikgPT4gKGIuc2NvcmUgfHwgMCkgLSAoYS5zY29yZSB8fCAwKSk7XG5cbiAgICAvLyBPcHRpb25hbCBuOG4gd2ViaG9va1xuICAgIGNvbnN0IHdlYmhvb2sgPSBwcm9jZXNzLmVudi5OOE5fV0VCSE9PS19VUkw7XG4gICAgaWYgKHdlYmhvb2spIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZldGNoKHdlYmhvb2ssIHsgbWV0aG9kOiBcIlBPU1RcIiwgaGVhZGVyczogeyBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LCBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGNyaXRlcmlhOiBwYXJzZWQsIHRvcDEwOiByZXN1bHRzLnNsaWNlKDAsMTApIH0pIH0pO1xuICAgICAgfSBjYXRjaChlKSB7IC8qIGlnbm9yZSAqLyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7IHJlc3VsdHMgfSksIHsgaGVhZGVyczogeyBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9IH0pO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6IGU/Lm1lc3NhZ2UgfHwgXCJJbnZhbGlkIHBheWxvYWRcIiB9KSwgeyBzdGF0dXM6IDQwMCwgaGVhZGVyczogeyBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9IH0pO1xuICB9XG59XG4iXSwibmFtZXMiOlsieiIsImZldGNoQ2l0eURlYWxzIiwiYnVpbGRTa3lzY2FubmVyTGlua3MiLCJidWlsZEdvb2dsZUZsaWdodHNMaW5rcyIsImJ1aWxkQWlyQ2FuYWRhTGlua3MiLCJzY29yZURlYWwiLCJzY2hlbWEiLCJvYmplY3QiLCJvcmlnaW4iLCJzdHJpbmciLCJtaW4iLCJtYXgiLCJkZXN0aW5hdGlvbnMiLCJhcnJheSIsIm5vbmVtcHR5Iiwic3RhcnREYXRlIiwicmVnZXgiLCJlbmREYXRlIiwidHJpcExlbmd0aE1pbiIsIm51bWJlciIsImludCIsInBvc2l0aXZlIiwidHJpcExlbmd0aE1heCIsImJ1ZGdldCIsIm9wdGlvbmFsIiwibnVsbGFibGUiLCJjdXJyZW5jeSIsImRlZmF1bHQiLCJub25TdG9wT25seSIsImJvb2xlYW4iLCJzb3VyY2VzIiwicHJlZmVyZW5jZXMiLCJiZWFjaCIsInBvb2wiLCJnb2xmIiwic3BhIiwiZm9vZCIsIm5pZ2h0bGlmZSIsInNob3BwaW5nIiwiY3VsdHVyZSIsIm91dGRvb3IiLCJmYW1pbHkiLCJQT1NUIiwicmVxIiwiYm9keSIsImpzb24iLCJwYXJzZWQiLCJwYXJzZSIsImxlbmd0aCIsIm1hcCIsInMiLCJ0b0xvd2VyQ2FzZSIsInRhc2tzIiwiaW5jbHVkZXMiLCJwdXNoIiwiZGVtbyIsInByb2Nlc3MiLCJlbnYiLCJERU1PIiwicmVzdWx0cyIsImlkIiwidGl0bGUiLCJzb3VyY2UiLCJsaW5rIiwicHJpY2UiLCJuaWdodHMiLCJkZXN0aW5hdGlvbiIsInN0b3BzIiwic2V0dGxlZCIsIlByb21pc2UiLCJhbGxTZXR0bGVkIiwic3RhdHVzIiwidmFsdWUiLCJmaWx0ZXIiLCJyIiwiZm9yRWFjaCIsInNjb3JlIiwic29ydCIsImEiLCJiIiwid2ViaG9vayIsIk44Tl9XRUJIT09LX1VSTCIsImZldGNoIiwibWV0aG9kIiwiaGVhZGVycyIsIkpTT04iLCJzdHJpbmdpZnkiLCJjcml0ZXJpYSIsInRvcDEwIiwic2xpY2UiLCJlIiwiUmVzcG9uc2UiLCJlcnJvciIsIm1lc3NhZ2UiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/api/search/route.ts\n"); + +/***/ }), + +/***/ "(rsc)/./lib/date.ts": +/*!*********************!*\ + !*** ./lib/date.ts ***! + \*********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ enumerateDatePairs: () => (/* binding */ enumerateDatePairs),\n/* harmony export */ isoToSkyscanner: () => (/* binding */ isoToSkyscanner)\n/* harmony export */ });\n/* harmony import */ var _barrel_optimize_names_addDays_differenceInDays_format_isBefore_parseISO_date_fns__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! __barrel_optimize__?names=addDays,differenceInDays,format,isBefore,parseISO!=!date-fns */ \"(rsc)/./node_modules/date-fns/parseISO.mjs\");\n/* harmony import */ var _barrel_optimize_names_addDays_differenceInDays_format_isBefore_parseISO_date_fns__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! __barrel_optimize__?names=addDays,differenceInDays,format,isBefore,parseISO!=!date-fns */ \"(rsc)/./node_modules/date-fns/isBefore.mjs\");\n/* harmony import */ var _barrel_optimize_names_addDays_differenceInDays_format_isBefore_parseISO_date_fns__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=addDays,differenceInDays,format,isBefore,parseISO!=!date-fns */ \"(rsc)/./node_modules/date-fns/addDays.mjs\");\n/* harmony import */ var _barrel_optimize_names_addDays_differenceInDays_format_isBefore_parseISO_date_fns__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=addDays,differenceInDays,format,isBefore,parseISO!=!date-fns */ \"(rsc)/./node_modules/date-fns/format.mjs\");\n/* harmony import */ var _barrel_optimize_names_addDays_differenceInDays_format_isBefore_parseISO_date_fns__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=addDays,differenceInDays,format,isBefore,parseISO!=!date-fns */ \"(rsc)/./node_modules/date-fns/differenceInDays.mjs\");\n\nfunction enumerateDatePairs(startISO, endISO, minNights, maxNights, maxPairs = 8) {\n const start = (0,_barrel_optimize_names_addDays_differenceInDays_format_isBefore_parseISO_date_fns__WEBPACK_IMPORTED_MODULE_0__.parseISO)(startISO);\n const end = (0,_barrel_optimize_names_addDays_differenceInDays_format_isBefore_parseISO_date_fns__WEBPACK_IMPORTED_MODULE_0__.parseISO)(endISO);\n const pairs = [];\n let cursor = start;\n while(!(0,_barrel_optimize_names_addDays_differenceInDays_format_isBefore_parseISO_date_fns__WEBPACK_IMPORTED_MODULE_1__.isBefore)(end, cursor) && pairs.length < maxPairs){\n for(let n = minNights; n <= maxNights && pairs.length < maxPairs; n++){\n const back = (0,_barrel_optimize_names_addDays_differenceInDays_format_isBefore_parseISO_date_fns__WEBPACK_IMPORTED_MODULE_2__.addDays)(cursor, n);\n if ((0,_barrel_optimize_names_addDays_differenceInDays_format_isBefore_parseISO_date_fns__WEBPACK_IMPORTED_MODULE_1__.isBefore)(end, back)) continue;\n pairs.push({\n out: (0,_barrel_optimize_names_addDays_differenceInDays_format_isBefore_parseISO_date_fns__WEBPACK_IMPORTED_MODULE_3__.format)(cursor, \"yyyyMMdd\"),\n back: (0,_barrel_optimize_names_addDays_differenceInDays_format_isBefore_parseISO_date_fns__WEBPACK_IMPORTED_MODULE_3__.format)(back, \"yyyyMMdd\"),\n nights: n\n });\n }\n cursor = (0,_barrel_optimize_names_addDays_differenceInDays_format_isBefore_parseISO_date_fns__WEBPACK_IMPORTED_MODULE_2__.addDays)(cursor, Math.max(1, Math.floor(((0,_barrel_optimize_names_addDays_differenceInDays_format_isBefore_parseISO_date_fns__WEBPACK_IMPORTED_MODULE_4__.differenceInDays)(end, start) || 1) / maxPairs)));\n }\n if (pairs.length === 0) {\n // fallback to exact minNights from start\n const back = (0,_barrel_optimize_names_addDays_differenceInDays_format_isBefore_parseISO_date_fns__WEBPACK_IMPORTED_MODULE_2__.addDays)(start, minNights);\n pairs.push({\n out: (0,_barrel_optimize_names_addDays_differenceInDays_format_isBefore_parseISO_date_fns__WEBPACK_IMPORTED_MODULE_3__.format)(start, \"yyyyMMdd\"),\n back: (0,_barrel_optimize_names_addDays_differenceInDays_format_isBefore_parseISO_date_fns__WEBPACK_IMPORTED_MODULE_3__.format)(back, \"yyyyMMdd\"),\n nights: minNights\n });\n }\n return pairs;\n}\nfunction isoToSkyscanner(iso) {\n return iso.replace(/-/g, \"\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9saWIvZGF0ZS50cyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQWlGO0FBRTFFLFNBQVNLLG1CQUFtQkMsUUFBZ0IsRUFBRUMsTUFBYyxFQUFFQyxTQUFpQixFQUFFQyxTQUFpQixFQUFFQyxXQUFXLENBQUM7SUFDckgsTUFBTUMsUUFBUVQsMkhBQVFBLENBQUNJO0lBQ3ZCLE1BQU1NLE1BQU1WLDJIQUFRQSxDQUFDSztJQUNyQixNQUFNTSxRQUF1RCxFQUFFO0lBQy9ELElBQUlDLFNBQVNIO0lBQ2IsTUFBTyxDQUFDUCwySEFBUUEsQ0FBQ1EsS0FBS0UsV0FBV0QsTUFBTUUsTUFBTSxHQUFHTCxTQUFVO1FBQ3hELElBQUssSUFBSU0sSUFBSVIsV0FBV1EsS0FBS1AsYUFBYUksTUFBTUUsTUFBTSxHQUFHTCxVQUFVTSxJQUFLO1lBQ3RFLE1BQU1DLE9BQU9qQiwwSEFBT0EsQ0FBQ2MsUUFBUUU7WUFDN0IsSUFBSVosMkhBQVFBLENBQUNRLEtBQUtLLE9BQU87WUFDekJKLE1BQU1LLElBQUksQ0FBQztnQkFBRUMsS0FBS2hCLHlIQUFNQSxDQUFDVyxRQUFRO2dCQUFhRyxNQUFNZCx5SEFBTUEsQ0FBQ2MsTUFBTTtnQkFBYUcsUUFBUUo7WUFBRTtRQUMxRjtRQUNBRixTQUFTZCwwSEFBT0EsQ0FBQ2MsUUFBUU8sS0FBS0MsR0FBRyxDQUFDLEdBQUdELEtBQUtFLEtBQUssQ0FBQyxDQUFDdEIsbUlBQWdCQSxDQUFDVyxLQUFLRCxVQUFVLEtBQU1EO0lBQ3pGO0lBQ0EsSUFBSUcsTUFBTUUsTUFBTSxLQUFLLEdBQUc7UUFDdEIseUNBQXlDO1FBQ3pDLE1BQU1FLE9BQU9qQiwwSEFBT0EsQ0FBQ1csT0FBT0g7UUFDNUJLLE1BQU1LLElBQUksQ0FBQztZQUFFQyxLQUFLaEIseUhBQU1BLENBQUNRLE9BQU87WUFBYU0sTUFBTWQseUhBQU1BLENBQUNjLE1BQU07WUFBYUcsUUFBUVo7UUFBVTtJQUNqRztJQUNBLE9BQU9LO0FBQ1Q7QUFFTyxTQUFTVyxnQkFBZ0JDLEdBQVc7SUFDekMsT0FBT0EsSUFBSUMsT0FBTyxDQUFDLE1BQU07QUFDM0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbGliL2RhdGUudHM/OTljMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGREYXlzLCBkaWZmZXJlbmNlSW5EYXlzLCBwYXJzZUlTTywgZm9ybWF0LCBpc0JlZm9yZSB9IGZyb20gXCJkYXRlLWZuc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bWVyYXRlRGF0ZVBhaXJzKHN0YXJ0SVNPOiBzdHJpbmcsIGVuZElTTzogc3RyaW5nLCBtaW5OaWdodHM6IG51bWJlciwgbWF4TmlnaHRzOiBudW1iZXIsIG1heFBhaXJzID0gOCkge1xuICBjb25zdCBzdGFydCA9IHBhcnNlSVNPKHN0YXJ0SVNPKTtcbiAgY29uc3QgZW5kID0gcGFyc2VJU08oZW5kSVNPKTtcbiAgY29uc3QgcGFpcnM6IHtvdXQ6IHN0cmluZywgYmFjazogc3RyaW5nLCBuaWdodHM6IG51bWJlcn1bXSA9IFtdO1xuICBsZXQgY3Vyc29yID0gc3RhcnQ7XG4gIHdoaWxlICghaXNCZWZvcmUoZW5kLCBjdXJzb3IpICYmIHBhaXJzLmxlbmd0aCA8IG1heFBhaXJzKSB7XG4gICAgZm9yIChsZXQgbiA9IG1pbk5pZ2h0czsgbiA8PSBtYXhOaWdodHMgJiYgcGFpcnMubGVuZ3RoIDwgbWF4UGFpcnM7IG4rKykge1xuICAgICAgY29uc3QgYmFjayA9IGFkZERheXMoY3Vyc29yLCBuKTtcbiAgICAgIGlmIChpc0JlZm9yZShlbmQsIGJhY2spKSBjb250aW51ZTtcbiAgICAgIHBhaXJzLnB1c2goeyBvdXQ6IGZvcm1hdChjdXJzb3IsIFwieXl5eU1NZGRcIiksIGJhY2s6IGZvcm1hdChiYWNrLCBcInl5eXlNTWRkXCIpLCBuaWdodHM6IG4gfSk7XG4gICAgfVxuICAgIGN1cnNvciA9IGFkZERheXMoY3Vyc29yLCBNYXRoLm1heCgxLCBNYXRoLmZsb29yKChkaWZmZXJlbmNlSW5EYXlzKGVuZCwgc3RhcnQpIHx8IDEpIC8gKG1heFBhaXJzKSkpKTtcbiAgfVxuICBpZiAocGFpcnMubGVuZ3RoID09PSAwKSB7XG4gICAgLy8gZmFsbGJhY2sgdG8gZXhhY3QgbWluTmlnaHRzIGZyb20gc3RhcnRcbiAgICBjb25zdCBiYWNrID0gYWRkRGF5cyhzdGFydCwgbWluTmlnaHRzKTtcbiAgICBwYWlycy5wdXNoKHsgb3V0OiBmb3JtYXQoc3RhcnQsIFwieXl5eU1NZGRcIiksIGJhY2s6IGZvcm1hdChiYWNrLCBcInl5eXlNTWRkXCIpLCBuaWdodHM6IG1pbk5pZ2h0cyB9KTtcbiAgfVxuICByZXR1cm4gcGFpcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc29Ub1NreXNjYW5uZXIoaXNvOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGlzby5yZXBsYWNlKC8tL2csIFwiXCIpO1xufVxuIl0sIm5hbWVzIjpbImFkZERheXMiLCJkaWZmZXJlbmNlSW5EYXlzIiwicGFyc2VJU08iLCJmb3JtYXQiLCJpc0JlZm9yZSIsImVudW1lcmF0ZURhdGVQYWlycyIsInN0YXJ0SVNPIiwiZW5kSVNPIiwibWluTmlnaHRzIiwibWF4TmlnaHRzIiwibWF4UGFpcnMiLCJzdGFydCIsImVuZCIsInBhaXJzIiwiY3Vyc29yIiwibGVuZ3RoIiwibiIsImJhY2siLCJwdXNoIiwib3V0IiwibmlnaHRzIiwiTWF0aCIsIm1heCIsImZsb29yIiwiaXNvVG9Ta3lzY2FubmVyIiwiaXNvIiwicmVwbGFjZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./lib/date.ts\n"); + +/***/ }), + +/***/ "(rsc)/./lib/providers/linkBuilders.ts": +/*!***************************************!*\ + !*** ./lib/providers/linkBuilders.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ buildAirCanadaLinks: () => (/* binding */ buildAirCanadaLinks),\n/* harmony export */ buildGoogleFlightsLinks: () => (/* binding */ buildGoogleFlightsLinks),\n/* harmony export */ buildSkyscannerLinks: () => (/* binding */ buildSkyscannerLinks)\n/* harmony export */ });\n/* harmony import */ var _date__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../date */ \"(rsc)/./lib/date.ts\");\n\nfunction toLower(s) {\n return (s || \"\").toLowerCase();\n}\nasync function buildSkyscannerLinks(c) {\n const origin = toLower(c.origin);\n const out = [];\n const pairs = (0,_date__WEBPACK_IMPORTED_MODULE_0__.enumerateDatePairs)(c.startDate, c.endDate, c.tripLengthMin, c.tripLengthMax, 6);\n for (const dest of c.destinations){\n for (const p of pairs){\n const path = `https://www.skyscanner.ca/transport/flights/${origin}/${toLower(dest)}/${p.out}/${p.back}/`;\n out.push({\n id: `sky-${origin}-${dest}-${p.out}-${p.back}`,\n title: `${c.origin} → ${dest} (${p.nights} nights)`,\n source: \"Skyscanner Link\",\n link: path,\n price: null,\n currency: c.currency || \"CAD\",\n startDate: `${p.out.slice(0, 4)}-${p.out.slice(4, 6)}-${p.out.slice(6, 8)}`,\n endDate: `${p.back.slice(0, 4)}-${p.back.slice(4, 6)}-${p.back.slice(6, 8)}`,\n nights: p.nights,\n origin: c.origin,\n destination: dest\n });\n }\n }\n return out;\n}\nasync function buildGoogleFlightsLinks(c) {\n const out = [];\n const pairs = (0,_date__WEBPACK_IMPORTED_MODULE_0__.enumerateDatePairs)(c.startDate, c.endDate, c.tripLengthMin, c.tripLengthMax, 4);\n for (const dest of c.destinations){\n for (const p of pairs){\n const q = encodeURIComponent(`flights from ${c.origin} to ${dest} ${p.out} to ${p.back}`);\n const link = `https://www.google.com/travel/flights?q=${q}`;\n out.push({\n id: `gfl-${c.origin}-${dest}-${p.out}-${p.back}`,\n title: `Google Flights: ${c.origin} → ${dest} (${p.nights} nights)`,\n source: \"Google Flights Link\",\n link,\n price: null,\n currency: c.currency || \"CAD\",\n startDate: `${p.out.slice(0, 4)}-${p.out.slice(4, 6)}-${p.out.slice(6, 8)}`,\n endDate: `${p.back.slice(0, 4)}-${p.back.slice(4, 6)}-${p.back.slice(6, 8)}`,\n nights: p.nights,\n origin: c.origin,\n destination: dest\n });\n }\n }\n return out;\n}\nasync function buildAirCanadaLinks(c) {\n const out = [];\n const pairs = (0,_date__WEBPACK_IMPORTED_MODULE_0__.enumerateDatePairs)(c.startDate, c.endDate, c.tripLengthMin, c.tripLengthMax, 3);\n for (const dest of c.destinations){\n for (const p of pairs){\n const sd = `${p.out.slice(0, 4)}-${p.out.slice(4, 6)}-${p.out.slice(6, 8)}`;\n const ed = `${p.back.slice(0, 4)}-${p.back.slice(4, 6)}-${p.back.slice(6, 8)}`;\n const params = new URLSearchParams({\n org1: c.origin.toUpperCase(),\n dest1: dest.toUpperCase(),\n departureDate1: sd,\n returnDate1: ed,\n tripType: \"2\",\n lang: \"en-CA\"\n });\n const link = `https://www.aircanada.com/ca/en/aco/home/book/travel.html?${params.toString()}`;\n out.push({\n id: `ac-${c.origin}-${dest}-${p.out}-${p.back}`,\n title: `Air Canada: ${c.origin} → ${dest} (${p.nights} nights)`,\n source: \"Air Canada Link\",\n link,\n price: null,\n currency: c.currency || \"CAD\",\n startDate: sd,\n endDate: ed,\n nights: p.nights,\n origin: c.origin,\n destination: dest\n });\n }\n }\n return out;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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ZGVyLy4vbGliL3Byb3ZpZGVycy9saW5rQnVpbGRlcnMudHM/OGE0MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERlYWwsIFNlYXJjaENyaXRlcmlhIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBlbnVtZXJhdGVEYXRlUGFpcnMgfSBmcm9tIFwiLi4vZGF0ZVwiO1xuXG5mdW5jdGlvbiB0b0xvd2VyKHM6IHN0cmluZykgeyByZXR1cm4gKHN8fFwiXCIpLnRvTG93ZXJDYXNlKCk7IH1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkU2t5c2Nhbm5lckxpbmtzKGM6IFNlYXJjaENyaXRlcmlhKTogUHJvbWlzZTxEZWFsW10+IHtcbiAgY29uc3Qgb3JpZ2luID0gdG9Mb3dlcihjLm9yaWdpbik7XG4gIGNvbnN0IG91dDogRGVhbFtdID0gW107XG4gIGNvbnN0IHBhaXJzID0gZW51bWVyYXRlRGF0ZVBhaXJzKGMuc3RhcnREYXRlLCBjLmVuZERhdGUsIGMudHJpcExlbmd0aE1pbiwgYy50cmlwTGVuZ3RoTWF4LCA2KTtcblxuICBmb3IgKGNvbnN0IGRlc3Qgb2YgYy5kZXN0aW5hdGlvbnMpIHtcbiAgICBmb3IgKGNvbnN0IHAgb2YgcGFpcnMpIHtcbiAgICAgIGNvbnN0IHBhdGggPSBgaHR0cHM6Ly93d3cuc2t5c2Nhbm5lci5jYS90cmFuc3BvcnQvZmxpZ2h0cy8ke29yaWdpbn0vJHt0b0xvd2VyKGRlc3QpfS8ke3Aub3V0fS8ke3AuYmFja30vYDtcbiAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgaWQ6IGBza3ktJHtvcmlnaW59LSR7ZGVzdH0tJHtwLm91dH0tJHtwLmJhY2t9YCxcbiAgICAgICAgdGl0bGU6IGAke2Mub3JpZ2lufSDihpIgJHtkZXN0fSAoJHtwLm5pZ2h0c30gbmlnaHRzKWAsXG4gICAgICAgIHNvdXJjZTogXCJTa3lzY2FubmVyIExpbmtcIixcbiAgICAgICAgbGluazogcGF0aCxcbiAgICAgICAgcHJpY2U6IG51bGwsXG4gICAgICAgIGN1cnJlbmN5OiBjLmN1cnJlbmN5IHx8IFwiQ0FEXCIsXG4gICAgICAgIHN0YXJ0RGF0ZTogYCR7cC5vdXQuc2xpY2UoMCw0KX0tJHtwLm91dC5zbGljZSg0LDYpfS0ke3Aub3V0LnNsaWNlKDYsOCl9YCxcbiAgICAgICAgZW5kRGF0ZTogYCR7cC5iYWNrLnNsaWNlKDAsNCl9LSR7cC5iYWNrLnNsaWNlKDQsNil9LSR7cC5iYWNrLnNsaWNlKDYsOCl9YCxcbiAgICAgICAgbmlnaHRzOiBwLm5pZ2h0cyxcbiAgICAgICAgb3JpZ2luOiBjLm9yaWdpbixcbiAgICAgICAgZGVzdGluYXRpb246IGRlc3QsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkR29vZ2xlRmxpZ2h0c0xpbmtzKGM6IFNlYXJjaENyaXRlcmlhKTogUHJvbWlzZTxEZWFsW10+IHtcbiAgY29uc3Qgb3V0OiBEZWFsW10gPSBbXTtcbiAgY29uc3QgcGFpcnMgPSBlbnVtZXJhdGVEYXRlUGFpcnMoYy5zdGFydERhdGUsIGMuZW5kRGF0ZSwgYy50cmlwTGVuZ3RoTWluLCBjLnRyaXBMZW5ndGhNYXgsIDQpO1xuICBmb3IgKGNvbnN0IGRlc3Qgb2YgYy5kZXN0aW5hdGlvbnMpIHtcbiAgICBmb3IgKGNvbnN0IHAgb2YgcGFpcnMpIHtcbiAgICAgIGNvbnN0IHEgPSBlbmNvZGVVUklDb21wb25lbnQoYGZsaWdodHMgZnJvbSAke2Mub3JpZ2lufSB0byAke2Rlc3R9ICR7cC5vdXR9IHRvICR7cC5iYWNrfWApO1xuICAgICAgY29uc3QgbGluayA9IGBodHRwczovL3d3dy5nb29nbGUuY29tL3RyYXZlbC9mbGlnaHRzP3E9JHtxfWA7XG4gICAgICBvdXQucHVzaCh7XG4gICAgICAgIGlkOiBgZ2ZsLSR7Yy5vcmlnaW59LSR7ZGVzdH0tJHtwLm91dH0tJHtwLmJhY2t9YCxcbiAgICAgICAgdGl0bGU6IGBHb29nbGUgRmxpZ2h0czogJHtjLm9yaWdpbn0g4oaSICR7ZGVzdH0gKCR7cC5uaWdodHN9IG5pZ2h0cylgLFxuICAgICAgICBzb3VyY2U6IFwiR29vZ2xlIEZsaWdodHMgTGlua1wiLFxuICAgICAgICBsaW5rLFxuICAgICAgICBwcmljZTogbnVsbCxcbiAgICAgICAgY3VycmVuY3k6IGMuY3VycmVuY3kgfHwgXCJDQURcIixcbiAgICAgICAgc3RhcnREYXRlOiBgJHtwLm91dC5zbGljZSgwLDQpfS0ke3Aub3V0LnNsaWNlKDQsNil9LSR7cC5vdXQuc2xpY2UoNiw4KX1gLFxuICAgICAgICBlbmREYXRlOiBgJHtwLmJhY2suc2xpY2UoMCw0KX0tJHtwLmJhY2suc2xpY2UoNCw2KX0tJHtwLmJhY2suc2xpY2UoNiw4KX1gLFxuICAgICAgICBuaWdodHM6IHAubmlnaHRzLFxuICAgICAgICBvcmlnaW46IGMub3JpZ2luLFxuICAgICAgICBkZXN0aW5hdGlvbjogZGVzdCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRBaXJDYW5hZGFMaW5rcyhjOiBTZWFyY2hDcml0ZXJpYSk6IFByb21pc2U8RGVhbFtdPiB7XG4gIGNvbnN0IG91dDogRGVhbFtdID0gW107XG4gIGNvbnN0IHBhaXJzID0gZW51bWVyYXRlRGF0ZVBhaXJzKGMuc3RhcnREYXRlLCBjLmVuZERhdGUsIGMudHJpcExlbmd0aE1pbiwgYy50cmlwTGVuZ3RoTWF4LCAzKTtcbiAgZm9yIChjb25zdCBkZXN0IG9mIGMuZGVzdGluYXRpb25zKSB7XG4gICAgZm9yIChjb25zdCBwIG9mIHBhaXJzKSB7XG4gICAgICBjb25zdCBzZCA9IGAke3Aub3V0LnNsaWNlKDAsNCl9LSR7cC5vdXQuc2xpY2UoNCw2KX0tJHtwLm91dC5zbGljZSg2LDgpfWA7XG4gICAgICBjb25zdCBlZCA9IGAke3AuYmFjay5zbGljZSgwLDQpfS0ke3AuYmFjay5zbGljZSg0LDYpfS0ke3AuYmFjay5zbGljZSg2LDgpfWA7XG4gICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgICAgb3JnMTogYy5vcmlnaW4udG9VcHBlckNhc2UoKSxcbiAgICAgICAgZGVzdDE6IGRlc3QudG9VcHBlckNhc2UoKSxcbiAgICAgICAgZGVwYXJ0dXJlRGF0ZTE6IHNkLFxuICAgICAgICByZXR1cm5EYXRlMTogZWQsXG4gICAgICAgIHRyaXBUeXBlOiBcIjJcIixcbiAgICAgICAgbGFuZzogXCJlbi1DQVwiXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGxpbmsgPSBgaHR0cHM6Ly93d3cuYWlyY2FuYWRhLmNvbS9jYS9lbi9hY28vaG9tZS9ib29rL3RyYXZlbC5odG1sPyR7cGFyYW1zLnRvU3RyaW5nKCl9YDtcbiAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgaWQ6IGBhYy0ke2Mub3JpZ2lufS0ke2Rlc3R9LSR7cC5vdXR9LSR7cC5iYWNrfWAsXG4gICAgICAgIHRpdGxlOiBgQWlyIENhbmFkYTogJHtjLm9yaWdpbn0g4oaSICR7ZGVzdH0gKCR7cC5uaWdodHN9IG5pZ2h0cylgLFxuICAgICAgICBzb3VyY2U6IFwiQWlyIENhbmFkYSBMaW5rXCIsXG4gICAgICAgIGxpbmssXG4gICAgICAgIHByaWNlOiBudWxsLFxuICAgICAgICBjdXJyZW5jeTogYy5jdXJyZW5jeSB8fCBcIkNBRFwiLFxuICAgICAgICBzdGFydERhdGU6IHNkLFxuICAgICAgICBlbmREYXRlOiBlZCxcbiAgICAgICAgbmlnaHRzOiBwLm5pZ2h0cyxcbiAgICAgICAgb3JpZ2luOiBjLm9yaWdpbixcbiAgICAgICAgZGVzdGluYXRpb246IGRlc3QsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiJdLCJuYW1lcyI6WyJlbnVtZXJhdGVEYXRlUGFpcnMiLCJ0b0xvd2VyIiwicyIsInRvTG93ZXJDYXNlIiwiYnVpbGRTa3lzY2FubmVyTGlua3MiLCJjIiwib3JpZ2luIiwib3V0IiwicGFpcnMiLCJzdGFydERhdGUiLCJlbmREYXRlIiwidHJpcExlbmd0aE1pbiIsInRyaXBMZW5ndGhNYXgiLCJkZXN0IiwiZGVzdGluYXRpb25zIiwicCIsInBhdGgiLCJiYWNrIiwicHVzaCIsImlkIiwidGl0bGUiLCJuaWdodHMiLCJzb3VyY2UiLCJsaW5rIiwicHJpY2UiLCJjdXJyZW5jeSIsInNsaWNlIiwiZGVzdGluYXRpb24iLCJidWlsZEdvb2dsZUZsaWdodHNMaW5rcyIsInEiLCJlbmNvZGVVUklDb21wb25lbnQiLCJidWlsZEFpckNhbmFkYUxpbmtzIiwic2QiLCJlZCIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsIm9yZzEiLCJ0b1VwcGVyQ2FzZSIsImRlc3QxIiwiZGVwYXJ0dXJlRGF0ZTEiLCJyZXR1cm5EYXRlMSIsInRyaXBUeXBlIiwibGFuZyIsInRvU3RyaW5nIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./lib/providers/linkBuilders.ts\n"); + +/***/ }), + +/***/ "(rsc)/./lib/providers/yowDeals.ts": +/*!***********************************!*\ + !*** ./lib/providers/yowDeals.ts ***! + \***********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ fetchCityDeals: () => (/* binding */ fetchCityDeals)\n/* harmony export */ });\n/* harmony import */ var cheerio__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! cheerio */ \"(rsc)/./node_modules/cheerio/dist/esm/index.js\");\n\nconst SITE_BY_ORIGIN = {\n \"YOW\": \"https://www.yowdeals.com\",\n \"YYZ\": \"https://www.yyzdeals.com\",\n \"YUL\": \"https://www.yuldeals.com\",\n \"YVR\": \"https://www.yvrdeals.com\",\n \"YYC\": \"https://www.yycdeals.com\",\n \"YEG\": \"https://www.yegdeals.com\"\n};\nasync function fetchCityDeals(criteria) {\n const site = SITE_BY_ORIGIN[(criteria.origin || \"\").toUpperCase()] || SITE_BY_ORIGIN[\"YOW\"];\n try {\n const res = await fetch(site, {\n cache: \"no-store\"\n });\n const html = await res.text();\n const $ = cheerio__WEBPACK_IMPORTED_MODULE_0__.load(html);\n const deals = [];\n $(\"h2.post-title a, .post h2 a, .post-title a\").each((_, el)=>{\n const title = $(el).text().trim();\n const link = $(el).attr(\"href\") || site;\n const priceMatch = title.match(/\\$\\s?(\\d+[\\,\\d+]*)/);\n const price = priceMatch ? parseInt(priceMatch[1].replace(/,/g, \"\")) : null;\n const id = `dealsite-${Buffer.from(link).toString(\"base64\").slice(0, 16)}`;\n deals.push({\n id,\n title,\n source: new URL(site).host.replace(\"www.\", \"\"),\n link,\n price,\n currency: \"CAD\",\n origin: criteria.origin.toUpperCase()\n });\n });\n return deals.slice(0, 20); // don't flood\n } catch (e) {\n return [];\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9saWIvcHJvdmlkZXJzL3lvd0RlYWxzLnRzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQW1DO0FBR25DLE1BQU1DLGlCQUF5QztJQUM3QyxPQUFPO0lBQ1AsT0FBTztJQUNQLE9BQU87SUFDUCxPQUFPO0lBQ1AsT0FBTztJQUNQLE9BQU87QUFDVDtBQUVPLGVBQWVDLGVBQWVDLFFBQXdCO0lBQzNELE1BQU1DLE9BQU9ILGNBQWMsQ0FBQyxDQUFDRSxTQUFTRSxNQUFNLElBQUksRUFBQyxFQUFHQyxXQUFXLEdBQUcsSUFBSUwsY0FBYyxDQUFDLE1BQU07SUFDM0YsSUFBSTtRQUNGLE1BQU1NLE1BQU0sTUFBTUMsTUFBTUosTUFBTTtZQUFFSyxPQUFPO1FBQVc7UUFDbEQsTUFBTUMsT0FBTyxNQUFNSCxJQUFJSSxJQUFJO1FBQzNCLE1BQU1DLElBQUlaLHlDQUFZLENBQUNVO1FBQ3ZCLE1BQU1JLFFBQWdCLEVBQUU7UUFFeEJGLEVBQUUsOENBQThDRyxJQUFJLENBQUMsQ0FBQ0MsR0FBR0M7WUFDdkQsTUFBTUMsUUFBUU4sRUFBRUssSUFBSU4sSUFBSSxHQUFHUSxJQUFJO1lBQy9CLE1BQU1DLE9BQU9SLEVBQUVLLElBQUlJLElBQUksQ0FBQyxXQUFXakI7WUFDbkMsTUFBTWtCLGFBQWFKLE1BQU1LLEtBQUssQ0FBQztZQUMvQixNQUFNQyxRQUFRRixhQUFhRyxTQUFTSCxVQUFVLENBQUMsRUFBRSxDQUFDSSxPQUFPLENBQUMsTUFBTSxPQUFPO1lBQ3ZFLE1BQU1DLEtBQUssQ0FBQyxTQUFTLEVBQUVDLE9BQU9DLElBQUksQ0FBQ1QsTUFBTVUsUUFBUSxDQUFDLFVBQVVDLEtBQUssQ0FBQyxHQUFFLElBQUksQ0FBQztZQUN6RWpCLE1BQU1rQixJQUFJLENBQUM7Z0JBQ1RMO2dCQUNBVDtnQkFDQWUsUUFBUSxJQUFJQyxJQUFJOUIsTUFBTStCLElBQUksQ0FBQ1QsT0FBTyxDQUFDLFFBQU87Z0JBQzFDTjtnQkFDQUk7Z0JBQ0FZLFVBQVU7Z0JBQ1YvQixRQUFRRixTQUFTRSxNQUFNLENBQUNDLFdBQVc7WUFDckM7UUFDRjtRQUVBLE9BQU9RLE1BQU1pQixLQUFLLENBQUMsR0FBRyxLQUFLLGNBQWM7SUFDM0MsRUFBRSxPQUFPTSxHQUFHO1FBQ1YsT0FBTyxFQUFFO0lBQ1g7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovL2hvbGlkYXktZGVhbC1maW5kZXIvLi9saWIvcHJvdmlkZXJzL3lvd0RlYWxzLnRzPzVjM2EiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2hlZXJpbyBmcm9tIFwiY2hlZXJpb1wiO1xuaW1wb3J0IHR5cGUgeyBEZWFsLCBTZWFyY2hDcml0ZXJpYSB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5jb25zdCBTSVRFX0JZX09SSUdJTjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgXCJZT1dcIjogXCJodHRwczovL3d3dy55b3dkZWFscy5jb21cIixcbiAgXCJZWVpcIjogXCJodHRwczovL3d3dy55eXpkZWFscy5jb21cIixcbiAgXCJZVUxcIjogXCJodHRwczovL3d3dy55dWxkZWFscy5jb21cIixcbiAgXCJZVlJcIjogXCJodHRwczovL3d3dy55dnJkZWFscy5jb21cIixcbiAgXCJZWUNcIjogXCJodHRwczovL3d3dy55eWNkZWFscy5jb21cIixcbiAgXCJZRUdcIjogXCJodHRwczovL3d3dy55ZWdkZWFscy5jb21cIixcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaENpdHlEZWFscyhjcml0ZXJpYTogU2VhcmNoQ3JpdGVyaWEpOiBQcm9taXNlPERlYWxbXT4ge1xuICBjb25zdCBzaXRlID0gU0lURV9CWV9PUklHSU5bKGNyaXRlcmlhLm9yaWdpbiB8fCBcIlwiKS50b1VwcGVyQ2FzZSgpXSB8fCBTSVRFX0JZX09SSUdJTltcIllPV1wiXTtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChzaXRlLCB7IGNhY2hlOiBcIm5vLXN0b3JlXCIgfSk7XG4gICAgY29uc3QgaHRtbCA9IGF3YWl0IHJlcy50ZXh0KCk7XG4gICAgY29uc3QgJCA9IGNoZWVyaW8ubG9hZChodG1sKTtcbiAgICBjb25zdCBkZWFsczogRGVhbFtdID0gW107XG5cbiAgICAkKFwiaDIucG9zdC10aXRsZSBhLCAucG9zdCBoMiBhLCAucG9zdC10aXRsZSBhXCIpLmVhY2goKF8sIGVsKSA9PiB7XG4gICAgICBjb25zdCB0aXRsZSA9ICQoZWwpLnRleHQoKS50cmltKCk7XG4gICAgICBjb25zdCBsaW5rID0gJChlbCkuYXR0cihcImhyZWZcIikgfHwgc2l0ZTtcbiAgICAgIGNvbnN0IHByaWNlTWF0Y2ggPSB0aXRsZS5tYXRjaCgvXFwkXFxzPyhcXGQrW1xcLFxcZCtdKikvKTtcbiAgICAgIGNvbnN0IHByaWNlID0gcHJpY2VNYXRjaCA/IHBhcnNlSW50KHByaWNlTWF0Y2hbMV0ucmVwbGFjZSgvLC9nLCBcIlwiKSkgOiBudWxsO1xuICAgICAgY29uc3QgaWQgPSBgZGVhbHNpdGUtJHtCdWZmZXIuZnJvbShsaW5rKS50b1N0cmluZyhcImJhc2U2NFwiKS5zbGljZSgwLDE2KX1gO1xuICAgICAgZGVhbHMucHVzaCh7XG4gICAgICAgIGlkLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgc291cmNlOiBuZXcgVVJMKHNpdGUpLmhvc3QucmVwbGFjZShcInd3dy5cIixcIlwiKSxcbiAgICAgICAgbGluayxcbiAgICAgICAgcHJpY2UsXG4gICAgICAgIGN1cnJlbmN5OiBcIkNBRFwiLFxuICAgICAgICBvcmlnaW46IGNyaXRlcmlhLm9yaWdpbi50b1VwcGVyQ2FzZSgpLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVhbHMuc2xpY2UoMCwgMjApOyAvLyBkb24ndCBmbG9vZFxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG4iXSwibmFtZXMiOlsiY2hlZXJpbyIsIlNJVEVfQllfT1JJR0lOIiwiZmV0Y2hDaXR5RGVhbHMiLCJjcml0ZXJpYSIsInNpdGUiLCJvcmlnaW4iLCJ0b1VwcGVyQ2FzZSIsInJlcyIsImZldGNoIiwiY2FjaGUiLCJodG1sIiwidGV4dCIsIiQiLCJsb2FkIiwiZGVhbHMiLCJlYWNoIiwiXyIsImVsIiwidGl0bGUiLCJ0cmltIiwibGluayIsImF0dHIiLCJwcmljZU1hdGNoIiwibWF0Y2giLCJwcmljZSIsInBhcnNlSW50IiwicmVwbGFjZSIsImlkIiwiQnVmZmVyIiwiZnJvbSIsInRvU3RyaW5nIiwic2xpY2UiLCJwdXNoIiwic291cmNlIiwiVVJMIiwiaG9zdCIsImN1cnJlbmN5IiwiZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./lib/providers/yowDeals.ts\n"); + +/***/ }), + +/***/ "(rsc)/./lib/score.ts": +/*!**********************!*\ + !*** ./lib/score.ts ***! + \**********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ scoreDeal: () => (/* binding */ scoreDeal)\n/* harmony export */ });\n// Destination feature profiles (0-10 ratings for common destinations)\nconst DESTINATION_PROFILES = {\n // Caribbean\n \"CUN\": {\n beach: 10,\n pool: 9,\n golf: 6,\n spa: 8,\n food: 8,\n nightlife: 9,\n shopping: 7,\n culture: 5,\n outdoor: 8,\n family: 9\n },\n \"PUJ\": {\n beach: 10,\n pool: 9,\n golf: 7,\n spa: 8,\n food: 7,\n nightlife: 8,\n shopping: 6,\n culture: 4,\n outdoor: 7,\n family: 9\n },\n \"MBJ\": {\n beach: 10,\n pool: 8,\n golf: 5,\n spa: 7,\n food: 8,\n nightlife: 7,\n shopping: 5,\n culture: 6,\n outdoor: 9,\n family: 8\n },\n \"NAS\": {\n beach: 9,\n pool: 8,\n golf: 6,\n spa: 6,\n food: 7,\n nightlife: 8,\n shopping: 7,\n culture: 5,\n outdoor: 8,\n family: 8\n },\n // Europe\n \"LHR\": {\n beach: 2,\n pool: 5,\n golf: 6,\n spa: 7,\n food: 9,\n nightlife: 8,\n shopping: 10,\n culture: 10,\n outdoor: 6,\n family: 7\n },\n \"CDG\": {\n beach: 1,\n pool: 6,\n golf: 5,\n spa: 8,\n food: 10,\n nightlife: 9,\n shopping: 10,\n culture: 10,\n outdoor: 5,\n family: 7\n },\n \"FCO\": {\n beach: 3,\n pool: 6,\n golf: 4,\n spa: 7,\n food: 10,\n nightlife: 8,\n shopping: 9,\n culture: 10,\n outdoor: 7,\n family: 8\n },\n \"BCN\": {\n beach: 8,\n pool: 7,\n golf: 5,\n spa: 7,\n food: 9,\n nightlife: 10,\n shopping: 8,\n culture: 9,\n outdoor: 7,\n family: 7\n },\n \"AMS\": {\n beach: 1,\n pool: 5,\n golf: 4,\n spa: 6,\n food: 8,\n nightlife: 9,\n shopping: 8,\n culture: 9,\n outdoor: 6,\n family: 7\n },\n // USA\n \"LAX\": {\n beach: 8,\n pool: 7,\n golf: 7,\n spa: 8,\n food: 9,\n nightlife: 9,\n shopping: 9,\n culture: 8,\n outdoor: 8,\n family: 7\n },\n \"LAS\": {\n beach: 0,\n pool: 9,\n golf: 8,\n spa: 10,\n food: 9,\n nightlife: 10,\n shopping: 10,\n culture: 5,\n outdoor: 5,\n family: 6\n },\n \"MIA\": {\n beach: 9,\n pool: 8,\n golf: 7,\n spa: 8,\n food: 8,\n nightlife: 10,\n shopping: 9,\n culture: 7,\n outdoor: 8,\n family: 7\n },\n \"MCO\": {\n beach: 5,\n pool: 10,\n golf: 8,\n spa: 7,\n food: 7,\n nightlife: 7,\n shopping: 8,\n culture: 6,\n outdoor: 6,\n family: 10\n },\n \"HNL\": {\n beach: 10,\n pool: 8,\n golf: 9,\n spa: 8,\n food: 8,\n nightlife: 7,\n shopping: 7,\n culture: 8,\n outdoor: 10,\n family: 9\n },\n // Default fallback\n \"DEFAULT\": {\n beach: 5,\n pool: 5,\n golf: 5,\n spa: 5,\n food: 5,\n nightlife: 5,\n shopping: 5,\n culture: 5,\n outdoor: 5,\n family: 5\n }\n};\nfunction calculatePreferenceMatch(deal, preferences) {\n if (!preferences || !deal.destination) return 0;\n const destProfile = DESTINATION_PROFILES[deal.destination.toUpperCase()] || DESTINATION_PROFILES[\"DEFAULT\"];\n let matchScore = 0;\n let totalWeight = 0;\n // Calculate how well the destination matches user preferences\n for (const [feature, userRating] of Object.entries(preferences)){\n if (userRating && userRating > 0) {\n const destRating = destProfile[feature] || 5;\n // Higher user rating + higher destination rating = better match\n matchScore += userRating * destRating;\n totalWeight += userRating * 10; // max possible for this feature\n }\n }\n // Normalize to 0-1000 scale\n if (totalWeight > 0) {\n return matchScore / totalWeight * 1000;\n }\n return 0;\n}\nfunction scoreDeal(d, preferences) {\n // Very simple scoring: prefer lower price, direct, reasonable nights\n let score = 0;\n if (typeof d.price === \"number\") score += Math.max(0, 10000 - d.price);\n if (d.stops === 0) score += 500;\n if (typeof d.nights === \"number\") {\n const target = 7;\n score += Math.max(0, 300 - Math.abs(d.nights - target) * 40);\n }\n if (d.source.includes(\"Deals\")) score += 150; // curated deal sites\n // Add preference matching bonus\n const preferenceBonus = calculatePreferenceMatch(d, preferences);\n score += preferenceBonus;\n return score;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9saWIvc2NvcmUudHMiLCJtYXBwaW5ncyI6Ijs7OztBQUVBLHNFQUFzRTtBQUN0RSxNQUFNQSx1QkFBMEQ7SUFDOUQsWUFBWTtJQUNaLE9BQU87UUFBRUMsT0FBTztRQUFJQyxNQUFNO1FBQUdDLE1BQU07UUFBR0MsS0FBSztRQUFHQyxNQUFNO1FBQUdDLFdBQVc7UUFBR0MsVUFBVTtRQUFHQyxTQUFTO1FBQUdDLFNBQVM7UUFBR0MsUUFBUTtJQUFFO0lBQ3BILE9BQU87UUFBRVQsT0FBTztRQUFJQyxNQUFNO1FBQUdDLE1BQU07UUFBR0MsS0FBSztRQUFHQyxNQUFNO1FBQUdDLFdBQVc7UUFBR0MsVUFBVTtRQUFHQyxTQUFTO1FBQUdDLFNBQVM7UUFBR0MsUUFBUTtJQUFFO0lBQ3BILE9BQU87UUFBRVQsT0FBTztRQUFJQyxNQUFNO1FBQUdDLE1BQU07UUFBR0MsS0FBSztRQUFHQyxNQUFNO1FBQUdDLFdBQVc7UUFBR0MsVUFBVTtRQUFHQyxTQUFTO1FBQUdDLFNBQVM7UUFBR0MsUUFBUTtJQUFFO0lBQ3BILE9BQU87UUFBRVQsT0FBTztRQUFHQyxNQUFNO1FBQUdDLE1BQU07UUFBR0MsS0FBSztRQUFHQyxNQUFNO1FBQUdDLFdBQVc7UUFBR0MsVUFBVTtRQUFHQyxTQUFTO1FBQUdDLFNBQVM7UUFBR0MsUUFBUTtJQUFFO0lBRW5ILFNBQVM7SUFDVCxPQUFPO1FBQUVULE9BQU87UUFBR0MsTUFBTTtRQUFHQyxNQUFNO1FBQUdDLEtBQUs7UUFBR0MsTUFBTTtRQUFHQyxXQUFXO1FBQUdDLFVBQVU7UUFBSUMsU0FBUztRQUFJQyxTQUFTO1FBQUdDLFFBQVE7SUFBRTtJQUNySCxPQUFPO1FBQUVULE9BQU87UUFBR0MsTUFBTTtRQUFHQyxNQUFNO1FBQUdDLEtBQUs7UUFBR0MsTUFBTTtRQUFJQyxXQUFXO1FBQUdDLFVBQVU7UUFBSUMsU0FBUztRQUFJQyxTQUFTO1FBQUdDLFFBQVE7SUFBRTtJQUN0SCxPQUFPO1FBQUVULE9BQU87UUFBR0MsTUFBTTtRQUFHQyxNQUFNO1FBQUdDLEtBQUs7UUFBR0MsTUFBTTtRQUFJQyxXQUFXO1FBQUdDLFVBQVU7UUFBR0MsU0FBUztRQUFJQyxTQUFTO1FBQUdDLFFBQVE7SUFBRTtJQUNySCxPQUFPO1FBQUVULE9BQU87UUFBR0MsTUFBTTtRQUFHQyxNQUFNO1FBQUdDLEtBQUs7UUFBR0MsTUFBTTtRQUFHQyxXQUFXO1FBQUlDLFVBQVU7UUFBR0MsU0FBUztRQUFHQyxTQUFTO1FBQUdDLFFBQVE7SUFBRTtJQUNwSCxPQUFPO1FBQUVULE9BQU87UUFBR0MsTUFBTTtRQUFHQyxNQUFNO1FBQUdDLEtBQUs7UUFBR0MsTUFBTTtRQUFHQyxXQUFXO1FBQUdDLFVBQVU7UUFBR0MsU0FBUztRQUFHQyxTQUFTO1FBQUdDLFFBQVE7SUFBRTtJQUVuSCxNQUFNO0lBQ04sT0FBTztRQUFFVCxPQUFPO1FBQUdDLE1BQU07UUFBR0MsTUFBTTtRQUFHQyxLQUFLO1FBQUdDLE1BQU07UUFBR0MsV0FBVztRQUFHQyxVQUFVO1FBQUdDLFNBQVM7UUFBR0MsU0FBUztRQUFHQyxRQUFRO0lBQUU7SUFDbkgsT0FBTztRQUFFVCxPQUFPO1FBQUdDLE1BQU07UUFBR0MsTUFBTTtRQUFHQyxLQUFLO1FBQUlDLE1BQU07UUFBR0MsV0FBVztRQUFJQyxVQUFVO1FBQUlDLFNBQVM7UUFBR0MsU0FBUztRQUFHQyxRQUFRO0lBQUU7SUFDdEgsT0FBTztRQUFFVCxPQUFPO1FBQUdDLE1BQU07UUFBR0MsTUFBTTtRQUFHQyxLQUFLO1FBQUdDLE1BQU07UUFBR0MsV0FBVztRQUFJQyxVQUFVO1FBQUdDLFNBQVM7UUFBR0MsU0FBUztRQUFHQyxRQUFRO0lBQUU7SUFDcEgsT0FBTztRQUFFVCxPQUFPO1FBQUdDLE1BQU07UUFBSUMsTUFBTTtRQUFHQyxLQUFLO1FBQUdDLE1BQU07UUFBR0MsV0FBVztRQUFHQyxVQUFVO1FBQUdDLFNBQVM7UUFBR0MsU0FBUztRQUFHQyxRQUFRO0lBQUc7SUFDckgsT0FBTztRQUFFVCxPQUFPO1FBQUlDLE1BQU07UUFBR0MsTUFBTTtRQUFHQyxLQUFLO1FBQUdDLE1BQU07UUFBR0MsV0FBVztRQUFHQyxVQUFVO1FBQUdDLFNBQVM7UUFBR0MsU0FBUztRQUFJQyxRQUFRO0lBQUU7SUFFckgsbUJBQW1CO0lBQ25CLFdBQVc7UUFBRVQsT0FBTztRQUFHQyxNQUFNO1FBQUdDLE1BQU07UUFBR0MsS0FBSztRQUFHQyxNQUFNO1FBQUdDLFdBQVc7UUFBR0MsVUFBVTtRQUFHQyxTQUFTO1FBQUdDLFNBQVM7UUFBR0MsUUFBUTtJQUFFO0FBQ3pIO0FBRUEsU0FBU0MseUJBQXlCQyxJQUFVLEVBQUVDLFdBQStCO0lBQzNFLElBQUksQ0FBQ0EsZUFBZSxDQUFDRCxLQUFLRSxXQUFXLEVBQUUsT0FBTztJQUU5QyxNQUFNQyxjQUFjZixvQkFBb0IsQ0FBQ1ksS0FBS0UsV0FBVyxDQUFDRSxXQUFXLEdBQUcsSUFBSWhCLG9CQUFvQixDQUFDLFVBQVU7SUFDM0csSUFBSWlCLGFBQWE7SUFDakIsSUFBSUMsY0FBYztJQUVsQiw4REFBOEQ7SUFDOUQsS0FBSyxNQUFNLENBQUNDLFNBQVNDLFdBQVcsSUFBSUMsT0FBT0MsT0FBTyxDQUFDVCxhQUFjO1FBQy9ELElBQUlPLGNBQWNBLGFBQWEsR0FBRztZQUNoQyxNQUFNRyxhQUFhUixXQUFXLENBQUNJLFFBQW1DLElBQUk7WUFDdEUsZ0VBQWdFO1lBQ2hFRixjQUFlRyxhQUFhRztZQUM1QkwsZUFBZ0JFLGFBQWEsSUFBSyxnQ0FBZ0M7UUFDcEU7SUFDRjtJQUVBLDRCQUE0QjtJQUM1QixJQUFJRixjQUFjLEdBQUc7UUFDbkIsT0FBTyxhQUFjQSxjQUFlO0lBQ3RDO0lBRUEsT0FBTztBQUNUO0FBRU8sU0FBU00sVUFBVUMsQ0FBTyxFQUFFWixXQUErQjtJQUNoRSxxRUFBcUU7SUFDckUsSUFBSWEsUUFBUTtJQUNaLElBQUksT0FBT0QsRUFBRUUsS0FBSyxLQUFLLFVBQVVELFNBQVNFLEtBQUtDLEdBQUcsQ0FBQyxHQUFHLFFBQVFKLEVBQUVFLEtBQUs7SUFDckUsSUFBSUYsRUFBRUssS0FBSyxLQUFLLEdBQUdKLFNBQVM7SUFDNUIsSUFBSSxPQUFPRCxFQUFFTSxNQUFNLEtBQUssVUFBVTtRQUNoQyxNQUFNQyxTQUFTO1FBQ2ZOLFNBQVNFLEtBQUtDLEdBQUcsQ0FBQyxHQUFHLE1BQU1ELEtBQUtLLEdBQUcsQ0FBQ1IsRUFBRU0sTUFBTSxHQUFHQyxVQUFVO0lBQzNEO0lBQ0EsSUFBSVAsRUFBRVMsTUFBTSxDQUFDQyxRQUFRLENBQUMsVUFBVVQsU0FBUyxLQUFLLHFCQUFxQjtJQUVuRSxnQ0FBZ0M7SUFDaEMsTUFBTVUsa0JBQWtCekIseUJBQXlCYyxHQUFHWjtJQUNwRGEsU0FBU1U7SUFFVCxPQUFPVjtBQUNUIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vaG9saWRheS1kZWFsLWZpbmRlci8uL2xpYi9zY29yZS50cz9iNGY4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGVhbCwgVHJhdmVsUHJlZmVyZW5jZXMgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vLyBEZXN0aW5hdGlvbiBmZWF0dXJlIHByb2ZpbGVzICgwLTEwIHJhdGluZ3MgZm9yIGNvbW1vbiBkZXN0aW5hdGlvbnMpXG5jb25zdCBERVNUSU5BVElPTl9QUk9GSUxFUzogUmVjb3JkPHN0cmluZywgVHJhdmVsUHJlZmVyZW5jZXM+ID0ge1xuICAvLyBDYXJpYmJlYW5cbiAgXCJDVU5cIjogeyBiZWFjaDogMTAsIHBvb2w6IDksIGdvbGY6IDYsIHNwYTogOCwgZm9vZDogOCwgbmlnaHRsaWZlOiA5LCBzaG9wcGluZzogNywgY3VsdHVyZTogNSwgb3V0ZG9vcjogOCwgZmFtaWx5OiA5IH0sXG4gIFwiUFVKXCI6IHsgYmVhY2g6IDEwLCBwb29sOiA5LCBnb2xmOiA3LCBzcGE6IDgsIGZvb2Q6IDcsIG5pZ2h0bGlmZTogOCwgc2hvcHBpbmc6IDYsIGN1bHR1cmU6IDQsIG91dGRvb3I6IDcsIGZhbWlseTogOSB9LFxuICBcIk1CSlwiOiB7IGJlYWNoOiAxMCwgcG9vbDogOCwgZ29sZjogNSwgc3BhOiA3LCBmb29kOiA4LCBuaWdodGxpZmU6IDcsIHNob3BwaW5nOiA1LCBjdWx0dXJlOiA2LCBvdXRkb29yOiA5LCBmYW1pbHk6IDggfSxcbiAgXCJOQVNcIjogeyBiZWFjaDogOSwgcG9vbDogOCwgZ29sZjogNiwgc3BhOiA2LCBmb29kOiA3LCBuaWdodGxpZmU6IDgsIHNob3BwaW5nOiA3LCBjdWx0dXJlOiA1LCBvdXRkb29yOiA4LCBmYW1pbHk6IDggfSxcbiAgXG4gIC8vIEV1cm9wZVxuICBcIkxIUlwiOiB7IGJlYWNoOiAyLCBwb29sOiA1LCBnb2xmOiA2LCBzcGE6IDcsIGZvb2Q6IDksIG5pZ2h0bGlmZTogOCwgc2hvcHBpbmc6IDEwLCBjdWx0dXJlOiAxMCwgb3V0ZG9vcjogNiwgZmFtaWx5OiA3IH0sXG4gIFwiQ0RHXCI6IHsgYmVhY2g6IDEsIHBvb2w6IDYsIGdvbGY6IDUsIHNwYTogOCwgZm9vZDogMTAsIG5pZ2h0bGlmZTogOSwgc2hvcHBpbmc6IDEwLCBjdWx0dXJlOiAxMCwgb3V0ZG9vcjogNSwgZmFtaWx5OiA3IH0sXG4gIFwiRkNPXCI6IHsgYmVhY2g6IDMsIHBvb2w6IDYsIGdvbGY6IDQsIHNwYTogNywgZm9vZDogMTAsIG5pZ2h0bGlmZTogOCwgc2hvcHBpbmc6IDksIGN1bHR1cmU6IDEwLCBvdXRkb29yOiA3LCBmYW1pbHk6IDggfSxcbiAgXCJCQ05cIjogeyBiZWFjaDogOCwgcG9vbDogNywgZ29sZjogNSwgc3BhOiA3LCBmb29kOiA5LCBuaWdodGxpZmU6IDEwLCBzaG9wcGluZzogOCwgY3VsdHVyZTogOSwgb3V0ZG9vcjogNywgZmFtaWx5OiA3IH0sXG4gIFwiQU1TXCI6IHsgYmVhY2g6IDEsIHBvb2w6IDUsIGdvbGY6IDQsIHNwYTogNiwgZm9vZDogOCwgbmlnaHRsaWZlOiA5LCBzaG9wcGluZzogOCwgY3VsdHVyZTogOSwgb3V0ZG9vcjogNiwgZmFtaWx5OiA3IH0sXG4gIFxuICAvLyBVU0FcbiAgXCJMQVhcIjogeyBiZWFjaDogOCwgcG9vbDogNywgZ29sZjogNywgc3BhOiA4LCBmb29kOiA5LCBuaWdodGxpZmU6IDksIHNob3BwaW5nOiA5LCBjdWx0dXJlOiA4LCBvdXRkb29yOiA4LCBmYW1pbHk6IDcgfSxcbiAgXCJMQVNcIjogeyBiZWFjaDogMCwgcG9vbDogOSwgZ29sZjogOCwgc3BhOiAxMCwgZm9vZDogOSwgbmlnaHRsaWZlOiAxMCwgc2hvcHBpbmc6IDEwLCBjdWx0dXJlOiA1LCBvdXRkb29yOiA1LCBmYW1pbHk6IDYgfSxcbiAgXCJNSUFcIjogeyBiZWFjaDogOSwgcG9vbDogOCwgZ29sZjogNywgc3BhOiA4LCBmb29kOiA4LCBuaWdodGxpZmU6IDEwLCBzaG9wcGluZzogOSwgY3VsdHVyZTogNywgb3V0ZG9vcjogOCwgZmFtaWx5OiA3IH0sXG4gIFwiTUNPXCI6IHsgYmVhY2g6IDUsIHBvb2w6IDEwLCBnb2xmOiA4LCBzcGE6IDcsIGZvb2Q6IDcsIG5pZ2h0bGlmZTogNywgc2hvcHBpbmc6IDgsIGN1bHR1cmU6IDYsIG91dGRvb3I6IDYsIGZhbWlseTogMTAgfSxcbiAgXCJITkxcIjogeyBiZWFjaDogMTAsIHBvb2w6IDgsIGdvbGY6IDksIHNwYTogOCwgZm9vZDogOCwgbmlnaHRsaWZlOiA3LCBzaG9wcGluZzogNywgY3VsdHVyZTogOCwgb3V0ZG9vcjogMTAsIGZhbWlseTogOSB9LFxuICBcbiAgLy8gRGVmYXVsdCBmYWxsYmFja1xuICBcIkRFRkFVTFRcIjogeyBiZWFjaDogNSwgcG9vbDogNSwgZ29sZjogNSwgc3BhOiA1LCBmb29kOiA1LCBuaWdodGxpZmU6IDUsIHNob3BwaW5nOiA1LCBjdWx0dXJlOiA1LCBvdXRkb29yOiA1LCBmYW1pbHk6IDUgfVxufTtcblxuZnVuY3Rpb24gY2FsY3VsYXRlUHJlZmVyZW5jZU1hdGNoKGRlYWw6IERlYWwsIHByZWZlcmVuY2VzPzogVHJhdmVsUHJlZmVyZW5jZXMpOiBudW1iZXIge1xuICBpZiAoIXByZWZlcmVuY2VzIHx8ICFkZWFsLmRlc3RpbmF0aW9uKSByZXR1cm4gMDtcbiAgXG4gIGNvbnN0IGRlc3RQcm9maWxlID0gREVTVElOQVRJT05fUFJPRklMRVNbZGVhbC5kZXN0aW5hdGlvbi50b1VwcGVyQ2FzZSgpXSB8fCBERVNUSU5BVElPTl9QUk9GSUxFU1tcIkRFRkFVTFRcIl07XG4gIGxldCBtYXRjaFNjb3JlID0gMDtcbiAgbGV0IHRvdGFsV2VpZ2h0ID0gMDtcbiAgXG4gIC8vIENhbGN1bGF0ZSBob3cgd2VsbCB0aGUgZGVzdGluYXRpb24gbWF0Y2hlcyB1c2VyIHByZWZlcmVuY2VzXG4gIGZvciAoY29uc3QgW2ZlYXR1cmUsIHVzZXJSYXRpbmddIG9mIE9iamVjdC5lbnRyaWVzKHByZWZlcmVuY2VzKSkge1xuICAgIGlmICh1c2VyUmF0aW5nICYmIHVzZXJSYXRpbmcgPiAwKSB7XG4gICAgICBjb25zdCBkZXN0UmF0aW5nID0gZGVzdFByb2ZpbGVbZmVhdHVyZSBhcyBrZXlvZiBUcmF2ZWxQcmVmZXJlbmNlc10gfHwgNTtcbiAgICAgIC8vIEhpZ2hlciB1c2VyIHJhdGluZyArIGhpZ2hlciBkZXN0aW5hdGlvbiByYXRpbmcgPSBiZXR0ZXIgbWF0Y2hcbiAgICAgIG1hdGNoU2NvcmUgKz0gKHVzZXJSYXRpbmcgKiBkZXN0UmF0aW5nKTtcbiAgICAgIHRvdGFsV2VpZ2h0ICs9ICh1c2VyUmF0aW5nICogMTApOyAvLyBtYXggcG9zc2libGUgZm9yIHRoaXMgZmVhdHVyZVxuICAgIH1cbiAgfVxuICBcbiAgLy8gTm9ybWFsaXplIHRvIDAtMTAwMCBzY2FsZVxuICBpZiAodG90YWxXZWlnaHQgPiAwKSB7XG4gICAgcmV0dXJuIChtYXRjaFNjb3JlIC8gdG90YWxXZWlnaHQpICogMTAwMDtcbiAgfVxuICBcbiAgcmV0dXJuIDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY29yZURlYWwoZDogRGVhbCwgcHJlZmVyZW5jZXM/OiBUcmF2ZWxQcmVmZXJlbmNlcyk6IG51bWJlciB7XG4gIC8vIFZlcnkgc2ltcGxlIHNjb3Jpbmc6IHByZWZlciBsb3dlciBwcmljZSwgZGlyZWN0LCByZWFzb25hYmxlIG5pZ2h0c1xuICBsZXQgc2NvcmUgPSAwO1xuICBpZiAodHlwZW9mIGQucHJpY2UgPT09IFwibnVtYmVyXCIpIHNjb3JlICs9IE1hdGgubWF4KDAsIDEwMDAwIC0gZC5wcmljZSk7XG4gIGlmIChkLnN0b3BzID09PSAwKSBzY29yZSArPSA1MDA7XG4gIGlmICh0eXBlb2YgZC5uaWdodHMgPT09IFwibnVtYmVyXCIpIHtcbiAgICBjb25zdCB0YXJnZXQgPSA3O1xuICAgIHNjb3JlICs9IE1hdGgubWF4KDAsIDMwMCAtIE1hdGguYWJzKGQubmlnaHRzIC0gdGFyZ2V0KSAqIDQwKTtcbiAgfVxuICBpZiAoZC5zb3VyY2UuaW5jbHVkZXMoXCJEZWFsc1wiKSkgc2NvcmUgKz0gMTUwOyAvLyBjdXJhdGVkIGRlYWwgc2l0ZXNcbiAgXG4gIC8vIEFkZCBwcmVmZXJlbmNlIG1hdGNoaW5nIGJvbnVzXG4gIGNvbnN0IHByZWZlcmVuY2VCb251cyA9IGNhbGN1bGF0ZVByZWZlcmVuY2VNYXRjaChkLCBwcmVmZXJlbmNlcyk7XG4gIHNjb3JlICs9IHByZWZlcmVuY2VCb251cztcbiAgXG4gIHJldHVybiBzY29yZTtcbn1cbiJdLCJuYW1lcyI6WyJERVNUSU5BVElPTl9QUk9GSUxFUyIsImJlYWNoIiwicG9vbCIsImdvbGYiLCJzcGEiLCJmb29kIiwibmlnaHRsaWZlIiwic2hvcHBpbmciLCJjdWx0dXJlIiwib3V0ZG9vciIsImZhbWlseSIsImNhbGN1bGF0ZVByZWZlcmVuY2VNYXRjaCIsImRlYWwiLCJwcmVmZXJlbmNlcyIsImRlc3RpbmF0aW9uIiwiZGVzdFByb2ZpbGUiLCJ0b1VwcGVyQ2FzZSIsIm1hdGNoU2NvcmUiLCJ0b3RhbFdlaWdodCIsImZlYXR1cmUiLCJ1c2VyUmF0aW5nIiwiT2JqZWN0IiwiZW50cmllcyIsImRlc3RSYXRpbmciLCJzY29yZURlYWwiLCJkIiwic2NvcmUiLCJwcmljZSIsIk1hdGgiLCJtYXgiLCJzdG9wcyIsIm5pZ2h0cyIsInRhcmdldCIsImFicyIsInNvdXJjZSIsImluY2x1ZGVzIiwicHJlZmVyZW5jZUJvbnVzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./lib/score.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/date-fns","vendor-chunks/iconv-lite","vendor-chunks/parse5","vendor-chunks/cheerio","vendor-chunks/css-select","vendor-chunks/entities","vendor-chunks/domutils","vendor-chunks/zod","vendor-chunks/htmlparser2","vendor-chunks/whatwg-mimetype","vendor-chunks/nth-check","vendor-chunks/cheerio-select","vendor-chunks/whatwg-encoding","vendor-chunks/encoding-sniffer","vendor-chunks/domhandler","vendor-chunks/dom-serializer","vendor-chunks/css-what","vendor-chunks/parse5-parser-stream","vendor-chunks/parse5-htmlparser2-tree-adapter","vendor-chunks/domelementtype","vendor-chunks/safer-buffer","vendor-chunks/boolbase"], () => (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fsearch%2Froute&page=%2Fapi%2Fsearch%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fsearch%2Froute.ts&appDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"))); +module.exports = __webpack_exports__; + +})(); \ No newline at end of file diff --git a/.next/server/app/api/trips/route.js b/.next/server/app/api/trips/route.js new file mode 100644 index 0000000..a90416b --- /dev/null +++ b/.next/server/app/api/trips/route.js @@ -0,0 +1,76 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(() => { +var exports = {}; +exports.id = "app/api/trips/route"; +exports.ids = ["app/api/trips/route"]; +exports.modules = { + +/***/ "next/dist/compiled/next-server/app-page.runtime.dev.js": +/*!*************************************************************************!*\ + !*** external "next/dist/compiled/next-server/app-page.runtime.dev.js" ***! + \*************************************************************************/ +/***/ ((module) => { + +module.exports = require("next/dist/compiled/next-server/app-page.runtime.dev.js"); + +/***/ }), + +/***/ "next/dist/compiled/next-server/app-route.runtime.dev.js": +/*!**************************************************************************!*\ + !*** external "next/dist/compiled/next-server/app-route.runtime.dev.js" ***! + \**************************************************************************/ +/***/ ((module) => { + +module.exports = require("next/dist/compiled/next-server/app-route.runtime.dev.js"); + +/***/ }), + +/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Ftrips%2Froute&page=%2Fapi%2Ftrips%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Ftrips%2Froute.ts&appDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!": +/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Ftrips%2Froute&page=%2Fapi%2Ftrips%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Ftrips%2Froute.ts&appDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D! ***! + \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ originalPathname: () => (/* binding */ originalPathname),\n/* harmony export */ patchFetch: () => (/* binding */ patchFetch),\n/* harmony export */ requestAsyncStorage: () => (/* binding */ requestAsyncStorage),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ serverHooks: () => (/* binding */ serverHooks),\n/* harmony export */ staticGenerationAsyncStorage: () => (/* binding */ staticGenerationAsyncStorage)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/future/route-modules/app-route/module.compiled */ \"(rsc)/./node_modules/next/dist/server/future/route-modules/app-route/module.compiled.js\");\n/* harmony import */ var next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_future_route_modules_app_route_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_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/server/lib/patch-fetch */ \"(rsc)/./node_modules/next/dist/server/lib/patch-fetch.js\");\n/* harmony import */ var next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var D_Projects_Dev_Holiday_Travel_App_app_api_trips_route_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app/api/trips/route.ts */ \"(rsc)/./app/api/trips/route.ts\");\n\n\n\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"\"\nconst routeModule = new next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppRouteRouteModule({\n definition: {\n kind: next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_ROUTE,\n page: \"/api/trips/route\",\n pathname: \"/api/trips\",\n filename: \"route\",\n bundlePath: \"app/api/trips/route\"\n },\n resolvedPagePath: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\api\\\\trips\\\\route.ts\",\n nextConfigOutput,\n userland: D_Projects_Dev_Holiday_Travel_App_app_api_trips_route_ts__WEBPACK_IMPORTED_MODULE_3__\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { requestAsyncStorage, staticGenerationAsyncStorage, serverHooks } = routeModule;\nconst originalPathname = \"/api/trips/route\";\nfunction patchFetch() {\n return (0,next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__.patchFetch)({\n serverHooks,\n staticGenerationAsyncStorage\n });\n}\n\n\n//# sourceMappingURL=app-route.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWFwcC1sb2FkZXIuanM/bmFtZT1hcHAlMkZhcGklMkZ0cmlwcyUyRnJvdXRlJnBhZ2U9JTJGYXBpJTJGdHJpcHMlMkZyb3V0ZSZhcHBQYXRocz0mcGFnZVBhdGg9cHJpdmF0ZS1uZXh0LWFwcC1kaXIlMkZhcGklMkZ0cmlwcyUyRnJvdXRlLnRzJmFwcERpcj1EJTNBJTVDUHJvamVjdHMlNUNEZXYlNUNIb2xpZGF5JTIwVHJhdmVsJTIwQXBwJTVDYXBwJnBhZ2VFeHRlbnNpb25zPXRzeCZwYWdlRXh0ZW5zaW9ucz10cyZwYWdlRXh0ZW5zaW9ucz1qc3gmcGFnZUV4dGVuc2lvbnM9anMmcm9vdERpcj1EJTNBJTVDUHJvamVjdHMlNUNEZXYlNUNIb2xpZGF5JTIwVHJhdmVsJTIwQXBwJmlzRGV2PXRydWUmdHNjb25maWdQYXRoPXRzY29uZmlnLmpzb24mYmFzZVBhdGg9JmFzc2V0UHJlZml4PSZuZXh0Q29uZmlnT3V0cHV0PSZwcmVmZXJyZWRSZWdpb249Jm1pZGRsZXdhcmVDb25maWc9ZTMwJTNEISIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBc0c7QUFDdkM7QUFDYztBQUNnQjtBQUM3RjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0hBQW1CO0FBQzNDO0FBQ0EsY0FBYyx5RUFBUztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsWUFBWTtBQUNaLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxRQUFRLGlFQUFpRTtBQUN6RTtBQUNBO0FBQ0EsV0FBVyw0RUFBVztBQUN0QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ3VIOztBQUV2SCIsInNvdXJjZXMiOlsid2VicGFjazovL2hvbGlkYXktZGVhbC1maW5kZXIvPzFlZWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwUm91dGVSb3V0ZU1vZHVsZSB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2Z1dHVyZS9yb3V0ZS1tb2R1bGVzL2FwcC1yb3V0ZS9tb2R1bGUuY29tcGlsZWRcIjtcbmltcG9ydCB7IFJvdXRlS2luZCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2Z1dHVyZS9yb3V0ZS1raW5kXCI7XG5pbXBvcnQgeyBwYXRjaEZldGNoIGFzIF9wYXRjaEZldGNoIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL3BhdGNoLWZldGNoXCI7XG5pbXBvcnQgKiBhcyB1c2VybGFuZCBmcm9tIFwiRDpcXFxcUHJvamVjdHNcXFxcRGV2XFxcXEhvbGlkYXkgVHJhdmVsIEFwcFxcXFxhcHBcXFxcYXBpXFxcXHRyaXBzXFxcXHJvdXRlLnRzXCI7XG4vLyBXZSBpbmplY3QgdGhlIG5leHRDb25maWdPdXRwdXQgaGVyZSBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlbSBpbiB0aGUgcm91dGVcbi8vIG1vZHVsZS5cbmNvbnN0IG5leHRDb25maWdPdXRwdXQgPSBcIlwiXG5jb25zdCByb3V0ZU1vZHVsZSA9IG5ldyBBcHBSb3V0ZVJvdXRlTW9kdWxlKHtcbiAgICBkZWZpbml0aW9uOiB7XG4gICAgICAgIGtpbmQ6IFJvdXRlS2luZC5BUFBfUk9VVEUsXG4gICAgICAgIHBhZ2U6IFwiL2FwaS90cmlwcy9yb3V0ZVwiLFxuICAgICAgICBwYXRobmFtZTogXCIvYXBpL3RyaXBzXCIsXG4gICAgICAgIGZpbGVuYW1lOiBcInJvdXRlXCIsXG4gICAgICAgIGJ1bmRsZVBhdGg6IFwiYXBwL2FwaS90cmlwcy9yb3V0ZVwiXG4gICAgfSxcbiAgICByZXNvbHZlZFBhZ2VQYXRoOiBcIkQ6XFxcXFByb2plY3RzXFxcXERldlxcXFxIb2xpZGF5IFRyYXZlbCBBcHBcXFxcYXBwXFxcXGFwaVxcXFx0cmlwc1xcXFxyb3V0ZS50c1wiLFxuICAgIG5leHRDb25maWdPdXRwdXQsXG4gICAgdXNlcmxhbmRcbn0pO1xuLy8gUHVsbCBvdXQgdGhlIGV4cG9ydHMgdGhhdCB3ZSBuZWVkIHRvIGV4cG9zZSBmcm9tIHRoZSBtb2R1bGUuIFRoaXMgc2hvdWxkXG4vLyBiZSBlbGltaW5hdGVkIHdoZW4gd2UndmUgbW92ZWQgdGhlIG90aGVyIHJvdXRlcyB0byB0aGUgbmV3IGZvcm1hdC4gVGhlc2Vcbi8vIGFyZSB1c2VkIHRvIGhvb2sgaW50byB0aGUgcm91dGUuXG5jb25zdCB7IHJlcXVlc3RBc3luY1N0b3JhZ2UsIHN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2UsIHNlcnZlckhvb2tzIH0gPSByb3V0ZU1vZHVsZTtcbmNvbnN0IG9yaWdpbmFsUGF0aG5hbWUgPSBcIi9hcGkvdHJpcHMvcm91dGVcIjtcbmZ1bmN0aW9uIHBhdGNoRmV0Y2goKSB7XG4gICAgcmV0dXJuIF9wYXRjaEZldGNoKHtcbiAgICAgICAgc2VydmVySG9va3MsXG4gICAgICAgIHN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2VcbiAgICB9KTtcbn1cbmV4cG9ydCB7IHJvdXRlTW9kdWxlLCByZXF1ZXN0QXN5bmNTdG9yYWdlLCBzdGF0aWNHZW5lcmF0aW9uQXN5bmNTdG9yYWdlLCBzZXJ2ZXJIb29rcywgb3JpZ2luYWxQYXRobmFtZSwgcGF0Y2hGZXRjaCwgIH07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwcC1yb3V0ZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Ftrips%2Froute&page=%2Fapi%2Ftrips%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Ftrips%2Froute.ts&appDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!\n"); + +/***/ }), + +/***/ "(rsc)/./app/api/trips/route.ts": +/*!********************************!*\ + !*** ./app/api/trips/route.ts ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GET: () => (/* binding */ GET)\n/* harmony export */ });\n/* harmony import */ var _lib_trips__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/lib/trips */ \"(rsc)/./lib/trips.ts\");\n\nasync function GET(req) {\n try {\n const { searchParams } = new URL(req.url);\n const id = searchParams.get(\"id\");\n const status = searchParams.get(\"status\");\n const region = searchParams.get(\"region\");\n // Get specific trip by ID\n if (id) {\n const trip = (0,_lib_trips__WEBPACK_IMPORTED_MODULE_0__.getTripById)(id);\n if (!trip) {\n return new Response(JSON.stringify({\n error: \"Trip not found\"\n }), {\n status: 404,\n headers: {\n \"content-type\": \"application/json\"\n }\n });\n }\n return new Response(JSON.stringify({\n trip\n }), {\n headers: {\n \"content-type\": \"application/json\"\n }\n });\n }\n // Filter by status\n if (status) {\n const trips = (0,_lib_trips__WEBPACK_IMPORTED_MODULE_0__.getTripsByStatus)(status);\n return new Response(JSON.stringify({\n trips,\n count: trips.length\n }), {\n headers: {\n \"content-type\": \"application/json\"\n }\n });\n }\n // Filter by region\n if (region) {\n const trips = (0,_lib_trips__WEBPACK_IMPORTED_MODULE_0__.getTripsByRegion)(region);\n return new Response(JSON.stringify({\n trips,\n count: trips.length\n }), {\n headers: {\n \"content-type\": \"application/json\"\n }\n });\n }\n // Get all trips\n const trips = (0,_lib_trips__WEBPACK_IMPORTED_MODULE_0__.getAllTrips)();\n return new Response(JSON.stringify({\n trips,\n count: trips.length,\n byStatus: {\n planning: (0,_lib_trips__WEBPACK_IMPORTED_MODULE_0__.getTripsByStatus)(\"planning\").length,\n booked: (0,_lib_trips__WEBPACK_IMPORTED_MODULE_0__.getTripsByStatus)(\"booked\").length,\n completed: (0,_lib_trips__WEBPACK_IMPORTED_MODULE_0__.getTripsByStatus)(\"completed\").length\n }\n }), {\n headers: {\n \"content-type\": \"application/json\"\n }\n });\n } catch (e) {\n return new Response(JSON.stringify({\n error: e?.message || \"Failed to retrieve trips\"\n }), {\n status: 500,\n headers: {\n \"content-type\": \"application/json\"\n }\n });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvYXBpL3RyaXBzL3JvdXRlLnRzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQzJGO0FBRXBGLGVBQWVJLElBQUlDLEdBQWdCO0lBQ3hDLElBQUk7UUFDRixNQUFNLEVBQUVDLFlBQVksRUFBRSxHQUFHLElBQUlDLElBQUlGLElBQUlHLEdBQUc7UUFDeEMsTUFBTUMsS0FBS0gsYUFBYUksR0FBRyxDQUFDO1FBQzVCLE1BQU1DLFNBQVNMLGFBQWFJLEdBQUcsQ0FBQztRQUNoQyxNQUFNRSxTQUFTTixhQUFhSSxHQUFHLENBQUM7UUFFaEMsMEJBQTBCO1FBQzFCLElBQUlELElBQUk7WUFDTixNQUFNSSxPQUFPWix1REFBV0EsQ0FBQ1E7WUFDekIsSUFBSSxDQUFDSSxNQUFNO2dCQUNULE9BQU8sSUFBSUMsU0FBU0MsS0FBS0MsU0FBUyxDQUFDO29CQUFFQyxPQUFPO2dCQUFpQixJQUFJO29CQUMvRE4sUUFBUTtvQkFDUk8sU0FBUzt3QkFBRSxnQkFBZ0I7b0JBQW1CO2dCQUNoRDtZQUNGO1lBQ0EsT0FBTyxJQUFJSixTQUFTQyxLQUFLQyxTQUFTLENBQUM7Z0JBQUVIO1lBQUssSUFBSTtnQkFDNUNLLFNBQVM7b0JBQUUsZ0JBQWdCO2dCQUFtQjtZQUNoRDtRQUNGO1FBRUEsbUJBQW1CO1FBQ25CLElBQUlQLFFBQVE7WUFDVixNQUFNUSxRQUFRakIsNERBQWdCQSxDQUFDUztZQUMvQixPQUFPLElBQUlHLFNBQVNDLEtBQUtDLFNBQVMsQ0FBQztnQkFBRUc7Z0JBQU9DLE9BQU9ELE1BQU1FLE1BQU07WUFBQyxJQUFJO2dCQUNsRUgsU0FBUztvQkFBRSxnQkFBZ0I7Z0JBQW1CO1lBQ2hEO1FBQ0Y7UUFFQSxtQkFBbUI7UUFDbkIsSUFBSU4sUUFBUTtZQUNWLE1BQU1PLFFBQVFoQiw0REFBZ0JBLENBQUNTO1lBQy9CLE9BQU8sSUFBSUUsU0FBU0MsS0FBS0MsU0FBUyxDQUFDO2dCQUFFRztnQkFBT0MsT0FBT0QsTUFBTUUsTUFBTTtZQUFDLElBQUk7Z0JBQ2xFSCxTQUFTO29CQUFFLGdCQUFnQjtnQkFBbUI7WUFDaEQ7UUFDRjtRQUVBLGdCQUFnQjtRQUNoQixNQUFNQyxRQUFRbkIsdURBQVdBO1FBQ3pCLE9BQU8sSUFBSWMsU0FBU0MsS0FBS0MsU0FBUyxDQUFDO1lBQ2pDRztZQUNBQyxPQUFPRCxNQUFNRSxNQUFNO1lBQ25CQyxVQUFVO2dCQUNSQyxVQUFVckIsNERBQWdCQSxDQUFDLFlBQVltQixNQUFNO2dCQUM3Q0csUUFBUXRCLDREQUFnQkEsQ0FBQyxVQUFVbUIsTUFBTTtnQkFDekNJLFdBQVd2Qiw0REFBZ0JBLENBQUMsYUFBYW1CLE1BQU07WUFDakQ7UUFDRixJQUFJO1lBQ0ZILFNBQVM7Z0JBQUUsZ0JBQWdCO1lBQW1CO1FBQ2hEO0lBRUYsRUFBRSxPQUFPUSxHQUFRO1FBQ2YsT0FBTyxJQUFJWixTQUFTQyxLQUFLQyxTQUFTLENBQUM7WUFDakNDLE9BQU9TLEdBQUdDLFdBQVc7UUFDdkIsSUFBSTtZQUNGaEIsUUFBUTtZQUNSTyxTQUFTO2dCQUFFLGdCQUFnQjtZQUFtQjtRQUNoRDtJQUNGO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vYXBwL2FwaS90cmlwcy9yb3V0ZS50cz9iZDdjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5leHRSZXF1ZXN0IH0gZnJvbSBcIm5leHQvc2VydmVyXCI7XHJcbmltcG9ydCB7IGdldEFsbFRyaXBzLCBnZXRUcmlwQnlJZCwgZ2V0VHJpcHNCeVN0YXR1cywgZ2V0VHJpcHNCeVJlZ2lvbiB9IGZyb20gXCJAL2xpYi90cmlwc1wiO1xyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIEdFVChyZXE6IE5leHRSZXF1ZXN0KSB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHsgc2VhcmNoUGFyYW1zIH0gPSBuZXcgVVJMKHJlcS51cmwpO1xyXG4gICAgY29uc3QgaWQgPSBzZWFyY2hQYXJhbXMuZ2V0KFwiaWRcIik7XHJcbiAgICBjb25zdCBzdGF0dXMgPSBzZWFyY2hQYXJhbXMuZ2V0KFwic3RhdHVzXCIpO1xyXG4gICAgY29uc3QgcmVnaW9uID0gc2VhcmNoUGFyYW1zLmdldChcInJlZ2lvblwiKTtcclxuICAgIFxyXG4gICAgLy8gR2V0IHNwZWNpZmljIHRyaXAgYnkgSURcclxuICAgIGlmIChpZCkge1xyXG4gICAgICBjb25zdCB0cmlwID0gZ2V0VHJpcEJ5SWQoaWQpO1xyXG4gICAgICBpZiAoIXRyaXApIHtcclxuICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6IFwiVHJpcCBub3QgZm91bmRcIiB9KSwge1xyXG4gICAgICAgICAgc3RhdHVzOiA0MDQsXHJcbiAgICAgICAgICBoZWFkZXJzOiB7IFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHsgdHJpcCB9KSwge1xyXG4gICAgICAgIGhlYWRlcnM6IHsgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gRmlsdGVyIGJ5IHN0YXR1c1xyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICBjb25zdCB0cmlwcyA9IGdldFRyaXBzQnlTdGF0dXMoc3RhdHVzIGFzIGFueSk7XHJcbiAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkoeyB0cmlwcywgY291bnQ6IHRyaXBzLmxlbmd0aCB9KSwge1xyXG4gICAgICAgIGhlYWRlcnM6IHsgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gRmlsdGVyIGJ5IHJlZ2lvblxyXG4gICAgaWYgKHJlZ2lvbikge1xyXG4gICAgICBjb25zdCB0cmlwcyA9IGdldFRyaXBzQnlSZWdpb24ocmVnaW9uKTtcclxuICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7IHRyaXBzLCBjb3VudDogdHJpcHMubGVuZ3RoIH0pLCB7XHJcbiAgICAgICAgaGVhZGVyczogeyBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBHZXQgYWxsIHRyaXBzXHJcbiAgICBjb25zdCB0cmlwcyA9IGdldEFsbFRyaXBzKCk7XHJcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHsgXHJcbiAgICAgIHRyaXBzLFxyXG4gICAgICBjb3VudDogdHJpcHMubGVuZ3RoLFxyXG4gICAgICBieVN0YXR1czoge1xyXG4gICAgICAgIHBsYW5uaW5nOiBnZXRUcmlwc0J5U3RhdHVzKFwicGxhbm5pbmdcIikubGVuZ3RoLFxyXG4gICAgICAgIGJvb2tlZDogZ2V0VHJpcHNCeVN0YXR1cyhcImJvb2tlZFwiKS5sZW5ndGgsXHJcbiAgICAgICAgY29tcGxldGVkOiBnZXRUcmlwc0J5U3RhdHVzKFwiY29tcGxldGVkXCIpLmxlbmd0aFxyXG4gICAgICB9XHJcbiAgICB9KSwge1xyXG4gICAgICBoZWFkZXJzOiB7IFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH1cclxuICAgIH0pO1xyXG4gICAgXHJcbiAgfSBjYXRjaCAoZTogYW55KSB7XHJcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHsgXHJcbiAgICAgIGVycm9yOiBlPy5tZXNzYWdlIHx8IFwiRmFpbGVkIHRvIHJldHJpZXZlIHRyaXBzXCIgXHJcbiAgICB9KSwgeyBcclxuICAgICAgc3RhdHVzOiA1MDAsIFxyXG4gICAgICBoZWFkZXJzOiB7IFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0gXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl0sIm5hbWVzIjpbImdldEFsbFRyaXBzIiwiZ2V0VHJpcEJ5SWQiLCJnZXRUcmlwc0J5U3RhdHVzIiwiZ2V0VHJpcHNCeVJlZ2lvbiIsIkdFVCIsInJlcSIsInNlYXJjaFBhcmFtcyIsIlVSTCIsInVybCIsImlkIiwiZ2V0Iiwic3RhdHVzIiwicmVnaW9uIiwidHJpcCIsIlJlc3BvbnNlIiwiSlNPTiIsInN0cmluZ2lmeSIsImVycm9yIiwiaGVhZGVycyIsInRyaXBzIiwiY291bnQiLCJsZW5ndGgiLCJieVN0YXR1cyIsInBsYW5uaW5nIiwiYm9va2VkIiwiY29tcGxldGVkIiwiZSIsIm1lc3NhZ2UiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/api/trips/route.ts\n"); + +/***/ }), + +/***/ "(rsc)/./lib/trips.ts": +/*!**********************!*\ + !*** ./lib/trips.ts ***! + \**********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TRIP_PLANS: () => (/* binding */ TRIP_PLANS),\n/* harmony export */ getAllTrips: () => (/* binding */ getAllTrips),\n/* harmony export */ getTripById: () => (/* binding */ getTripById),\n/* harmony export */ getTripsByRegion: () => (/* binding */ getTripsByRegion),\n/* harmony export */ getTripsByStatus: () => (/* binding */ getTripsByStatus)\n/* harmony export */ });\n// Trip planning database\n// Sample trips\nconst TRIP_PLANS = {\n 1: {\n id: 1,\n name: \"Jan 2026 Caribbean Holiday\",\n destination: \"Mexico & Dominican Republic\",\n region: \"Caribbean\",\n departureDate: \"2026-01-15\",\n tripLength: 7,\n budget: 5500,\n currency: \"CAD\",\n status: \"planning\",\n preferences: {\n food: 10,\n pool: 9,\n beach: 8,\n nightlife: 7,\n golf: 6,\n spa: 5,\n outdoor: 4\n },\n resorts: [\n \"Dreams Onyx Resort & Spa\",\n \"Excellence Riviera Cancun\",\n \"Secrets Maroma Beach\",\n \"Hyatt Ziva Cancun\",\n \"Moon Palace Cancun\",\n \"Barcelo Maya Riviera\",\n \"Grand Sirenis Riviera Maya\",\n \"Hotel Xcaret Mexico\"\n ],\n notes: \"All-inclusive beach vacation. Prefer adults-only or adult-focused resorts.\",\n createdAt: \"2025-10-29T00:00:00Z\",\n updatedAt: \"2025-10-29T00:00:00Z\"\n },\n 2: {\n id: 2,\n name: \"Fall 2026 Japan Adventure\",\n destination: \"Tokyo, Kyoto, Osaka\",\n region: \"Asia\",\n departureDate: \"2026-10-15\",\n tripLength: 14,\n budget: 8000,\n currency: \"CAD\",\n status: \"planning\",\n preferences: {\n culture: 10,\n food: 10,\n shopping: 8,\n outdoor: 7,\n nightlife: 6\n },\n notes: \"Cherry blossom season alternative. Focus on temples, food tours, and cultural experiences.\",\n createdAt: \"2025-10-29T00:00:00Z\",\n updatedAt: \"2025-10-29T00:00:00Z\"\n }\n};\nfunction getAllTrips() {\n return Object.values(TRIP_PLANS);\n}\nfunction getTripById(id) {\n const numId = typeof id === \"string\" ? parseInt(id, 10) : id;\n return TRIP_PLANS[numId];\n}\nfunction getTripsByStatus(status) {\n return Object.values(TRIP_PLANS).filter((trip)=>trip.status === status);\n}\nfunction getTripsByRegion(region) {\n return Object.values(TRIP_PLANS).filter((trip)=>trip.region.toLowerCase().includes(region.toLowerCase()));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9saWIvdHJpcHMudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSx5QkFBeUI7QUE4QnpCLGVBQWU7QUFDUixNQUFNQSxhQUF1QztJQUNsRCxHQUFHO1FBQ0RDLElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLFFBQVE7UUFDUkMsZUFBZTtRQUNmQyxZQUFZO1FBQ1pDLFFBQVE7UUFDUkMsVUFBVTtRQUNWQyxRQUFRO1FBQ1JDLGFBQWE7WUFDWEMsTUFBTTtZQUNOQyxNQUFNO1lBQ05DLE9BQU87WUFDUEMsV0FBVztZQUNYQyxNQUFNO1lBQ05DLEtBQUs7WUFDTEMsU0FBUztRQUNYO1FBQ0FDLFNBQVM7WUFDUDtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1NBQ0Q7UUFDREMsT0FBTztRQUNQQyxXQUFXO1FBQ1hDLFdBQVc7SUFDYjtJQUNBLEdBQUc7UUFDRHBCLElBQUk7UUFDSkMsTUFBTTtRQUNOQyxhQUFhO1FBQ2JDLFFBQVE7UUFDUkMsZUFBZTtRQUNmQyxZQUFZO1FBQ1pDLFFBQVE7UUFDUkMsVUFBVTtRQUNWQyxRQUFRO1FBQ1JDLGFBQWE7WUFDWFksU0FBUztZQUNUWCxNQUFNO1lBQ05ZLFVBQVU7WUFDVk4sU0FBUztZQUNUSCxXQUFXO1FBQ2I7UUFDQUssT0FBTztRQUNQQyxXQUFXO1FBQ1hDLFdBQVc7SUFDYjtBQUNGLEVBQUU7QUFFSyxTQUFTRztJQUNkLE9BQU9DLE9BQU9DLE1BQU0sQ0FBQzFCO0FBQ3ZCO0FBRU8sU0FBUzJCLFlBQVkxQixFQUFtQjtJQUM3QyxNQUFNMkIsUUFBUSxPQUFPM0IsT0FBTyxXQUFXNEIsU0FBUzVCLElBQUksTUFBTUE7SUFDMUQsT0FBT0QsVUFBVSxDQUFDNEIsTUFBTTtBQUMxQjtBQUVPLFNBQVNFLGlCQUFpQnJCLE1BQTJDO0lBQzFFLE9BQU9nQixPQUFPQyxNQUFNLENBQUMxQixZQUFZK0IsTUFBTSxDQUFDQyxDQUFBQSxPQUFRQSxLQUFLdkIsTUFBTSxLQUFLQTtBQUNsRTtBQUVPLFNBQVN3QixpQkFBaUI3QixNQUFjO0lBQzdDLE9BQU9xQixPQUFPQyxNQUFNLENBQUMxQixZQUFZK0IsTUFBTSxDQUFDQyxDQUFBQSxPQUN0Q0EsS0FBSzVCLE1BQU0sQ0FBQzhCLFdBQVcsR0FBR0MsUUFBUSxDQUFDL0IsT0FBTzhCLFdBQVc7QUFFekQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbGliL3RyaXBzLnRzP2Q1ZTAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVHJpcCBwbGFubmluZyBkYXRhYmFzZVxyXG5leHBvcnQgdHlwZSBUcmlwUGxhbiA9IHtcclxuICBpZDogbnVtYmVyO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBkZXN0aW5hdGlvbjogc3RyaW5nO1xyXG4gIHJlZ2lvbjogc3RyaW5nO1xyXG4gIGRlcGFydHVyZURhdGU/OiBzdHJpbmc7XHJcbiAgcmV0dXJuRGF0ZT86IHN0cmluZztcclxuICB0cmlwTGVuZ3RoPzogbnVtYmVyO1xyXG4gIGJ1ZGdldD86IG51bWJlcjtcclxuICBjdXJyZW5jeTogc3RyaW5nO1xyXG4gIHN0YXR1czogXCJwbGFubmluZ1wiIHwgXCJib29rZWRcIiB8IFwiY29tcGxldGVkXCI7XHJcbiAgcHJlZmVyZW5jZXM/OiB7XHJcbiAgICBiZWFjaD86IG51bWJlcjtcclxuICAgIHBvb2w/OiBudW1iZXI7XHJcbiAgICBnb2xmPzogbnVtYmVyO1xyXG4gICAgc3BhPzogbnVtYmVyO1xyXG4gICAgZm9vZD86IG51bWJlcjtcclxuICAgIG5pZ2h0bGlmZT86IG51bWJlcjtcclxuICAgIHNob3BwaW5nPzogbnVtYmVyO1xyXG4gICAgY3VsdHVyZT86IG51bWJlcjtcclxuICAgIG91dGRvb3I/OiBudW1iZXI7XHJcbiAgICBmYW1pbHk/OiBudW1iZXI7XHJcbiAgfTtcclxuICByZXNvcnRzPzogc3RyaW5nW107XHJcbiAgbm90ZXM/OiBzdHJpbmc7XHJcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XHJcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XHJcbn07XHJcblxyXG4vLyBTYW1wbGUgdHJpcHNcclxuZXhwb3J0IGNvbnN0IFRSSVBfUExBTlM6IFJlY29yZDxudW1iZXIsIFRyaXBQbGFuPiA9IHtcclxuICAxOiB7XHJcbiAgICBpZDogMSxcclxuICAgIG5hbWU6IFwiSmFuIDIwMjYgQ2FyaWJiZWFuIEhvbGlkYXlcIixcclxuICAgIGRlc3RpbmF0aW9uOiBcIk1leGljbyAmIERvbWluaWNhbiBSZXB1YmxpY1wiLFxyXG4gICAgcmVnaW9uOiBcIkNhcmliYmVhblwiLFxyXG4gICAgZGVwYXJ0dXJlRGF0ZTogXCIyMDI2LTAxLTE1XCIsXHJcbiAgICB0cmlwTGVuZ3RoOiA3LFxyXG4gICAgYnVkZ2V0OiA1NTAwLFxyXG4gICAgY3VycmVuY3k6IFwiQ0FEXCIsXHJcbiAgICBzdGF0dXM6IFwicGxhbm5pbmdcIixcclxuICAgIHByZWZlcmVuY2VzOiB7XHJcbiAgICAgIGZvb2Q6IDEwLFxyXG4gICAgICBwb29sOiA5LFxyXG4gICAgICBiZWFjaDogOCxcclxuICAgICAgbmlnaHRsaWZlOiA3LFxyXG4gICAgICBnb2xmOiA2LFxyXG4gICAgICBzcGE6IDUsXHJcbiAgICAgIG91dGRvb3I6IDRcclxuICAgIH0sXHJcbiAgICByZXNvcnRzOiBbXHJcbiAgICAgIFwiRHJlYW1zIE9ueXggUmVzb3J0ICYgU3BhXCIsXHJcbiAgICAgIFwiRXhjZWxsZW5jZSBSaXZpZXJhIENhbmN1blwiLFxyXG4gICAgICBcIlNlY3JldHMgTWFyb21hIEJlYWNoXCIsXHJcbiAgICAgIFwiSHlhdHQgWml2YSBDYW5jdW5cIixcclxuICAgICAgXCJNb29uIFBhbGFjZSBDYW5jdW5cIixcclxuICAgICAgXCJCYXJjZWxvIE1heWEgUml2aWVyYVwiLFxyXG4gICAgICBcIkdyYW5kIFNpcmVuaXMgUml2aWVyYSBNYXlhXCIsXHJcbiAgICAgIFwiSG90ZWwgWGNhcmV0IE1leGljb1wiXHJcbiAgICBdLFxyXG4gICAgbm90ZXM6IFwiQWxsLWluY2x1c2l2ZSBiZWFjaCB2YWNhdGlvbi4gUHJlZmVyIGFkdWx0cy1vbmx5IG9yIGFkdWx0LWZvY3VzZWQgcmVzb3J0cy5cIixcclxuICAgIGNyZWF0ZWRBdDogXCIyMDI1LTEwLTI5VDAwOjAwOjAwWlwiLFxyXG4gICAgdXBkYXRlZEF0OiBcIjIwMjUtMTAtMjlUMDA6MDA6MDBaXCJcclxuICB9LFxyXG4gIDI6IHtcclxuICAgIGlkOiAyLFxyXG4gICAgbmFtZTogXCJGYWxsIDIwMjYgSmFwYW4gQWR2ZW50dXJlXCIsXHJcbiAgICBkZXN0aW5hdGlvbjogXCJUb2t5bywgS3lvdG8sIE9zYWthXCIsXHJcbiAgICByZWdpb246IFwiQXNpYVwiLFxyXG4gICAgZGVwYXJ0dXJlRGF0ZTogXCIyMDI2LTEwLTE1XCIsXHJcbiAgICB0cmlwTGVuZ3RoOiAxNCxcclxuICAgIGJ1ZGdldDogODAwMCxcclxuICAgIGN1cnJlbmN5OiBcIkNBRFwiLFxyXG4gICAgc3RhdHVzOiBcInBsYW5uaW5nXCIsXHJcbiAgICBwcmVmZXJlbmNlczoge1xyXG4gICAgICBjdWx0dXJlOiAxMCxcclxuICAgICAgZm9vZDogMTAsXHJcbiAgICAgIHNob3BwaW5nOiA4LFxyXG4gICAgICBvdXRkb29yOiA3LFxyXG4gICAgICBuaWdodGxpZmU6IDZcclxuICAgIH0sXHJcbiAgICBub3RlczogXCJDaGVycnkgYmxvc3NvbSBzZWFzb24gYWx0ZXJuYXRpdmUuIEZvY3VzIG9uIHRlbXBsZXMsIGZvb2QgdG91cnMsIGFuZCBjdWx0dXJhbCBleHBlcmllbmNlcy5cIixcclxuICAgIGNyZWF0ZWRBdDogXCIyMDI1LTEwLTI5VDAwOjAwOjAwWlwiLFxyXG4gICAgdXBkYXRlZEF0OiBcIjIwMjUtMTAtMjlUMDA6MDA6MDBaXCJcclxuICB9XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsVHJpcHMoKTogVHJpcFBsYW5bXSB7XHJcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoVFJJUF9QTEFOUyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmlwQnlJZChpZDogbnVtYmVyIHwgc3RyaW5nKTogVHJpcFBsYW4gfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IG51bUlkID0gdHlwZW9mIGlkID09PSAnc3RyaW5nJyA/IHBhcnNlSW50KGlkLCAxMCkgOiBpZDtcclxuICByZXR1cm4gVFJJUF9QTEFOU1tudW1JZF07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmlwc0J5U3RhdHVzKHN0YXR1czogXCJwbGFubmluZ1wiIHwgXCJib29rZWRcIiB8IFwiY29tcGxldGVkXCIpOiBUcmlwUGxhbltdIHtcclxuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhUUklQX1BMQU5TKS5maWx0ZXIodHJpcCA9PiB0cmlwLnN0YXR1cyA9PT0gc3RhdHVzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFRyaXBzQnlSZWdpb24ocmVnaW9uOiBzdHJpbmcpOiBUcmlwUGxhbltdIHtcclxuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhUUklQX1BMQU5TKS5maWx0ZXIodHJpcCA9PiBcclxuICAgIHRyaXAucmVnaW9uLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocmVnaW9uLnRvTG93ZXJDYXNlKCkpXHJcbiAgKTtcclxufVxyXG4iXSwibmFtZXMiOlsiVFJJUF9QTEFOUyIsImlkIiwibmFtZSIsImRlc3RpbmF0aW9uIiwicmVnaW9uIiwiZGVwYXJ0dXJlRGF0ZSIsInRyaXBMZW5ndGgiLCJidWRnZXQiLCJjdXJyZW5jeSIsInN0YXR1cyIsInByZWZlcmVuY2VzIiwiZm9vZCIsInBvb2wiLCJiZWFjaCIsIm5pZ2h0bGlmZSIsImdvbGYiLCJzcGEiLCJvdXRkb29yIiwicmVzb3J0cyIsIm5vdGVzIiwiY3JlYXRlZEF0IiwidXBkYXRlZEF0IiwiY3VsdHVyZSIsInNob3BwaW5nIiwiZ2V0QWxsVHJpcHMiLCJPYmplY3QiLCJ2YWx1ZXMiLCJnZXRUcmlwQnlJZCIsIm51bUlkIiwicGFyc2VJbnQiLCJnZXRUcmlwc0J5U3RhdHVzIiwiZmlsdGVyIiwidHJpcCIsImdldFRyaXBzQnlSZWdpb24iLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./lib/trips.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"], () => (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Ftrips%2Froute&page=%2Fapi%2Ftrips%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Ftrips%2Froute.ts&appDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"))); +module.exports = __webpack_exports__; + +})(); \ No newline at end of file diff --git a/.next/server/app/page.js b/.next/server/app/page.js new file mode 100644 index 0000000..a4da900 --- /dev/null +++ b/.next/server/app/page.js @@ -0,0 +1,227 @@ +/* + * 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=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!": +/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D! ***! + \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GlobalError: () => (/* reexport default from dynamic */ next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2___default.a),\n/* harmony export */ __next_app__: () => (/* binding */ __next_app__),\n/* harmony export */ originalPathname: () => (/* binding */ originalPathname),\n/* harmony export */ pages: () => (/* binding */ pages),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ tree: () => (/* binding */ tree)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/future/route-modules/app-page/module.compiled */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js?d969\");\n/* harmony import */ var next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/future/route-kind */ \"(rsc)/./node_modules/next/dist/server/future/route-kind.js\");\n/* harmony import */ var next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/client/components/error-boundary */ \"(rsc)/./node_modules/next/dist/client/components/error-boundary.js\");\n/* harmony import */ var next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/server/app-render/entry-base */ \"(rsc)/./node_modules/next/dist/server/app-render/entry-base.js\");\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__) if([\"default\",\"tree\",\"pages\",\"GlobalError\",\"originalPathname\",\"__next_app__\",\"routeModule\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\"TURBOPACK { transition: next-ssr }\";\n\n\n// We inject the tree and pages here so that we can use them in the route\n// module.\nconst tree = {\n children: [\n '',\n {\n children: ['__PAGE__', {}, {\n page: [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/page.tsx */ \"(rsc)/./app/page.tsx\")), \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\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\")), \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\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 = [\"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\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/bmFtZT1hcHAlMkZwYWdlJnBhZ2U9JTJGcGFnZSZhcHBQYXRocz0lMkZwYWdlJnBhZ2VQYXRoPXByaXZhdGUtbmV4dC1hcHAtZGlyJTJGcGFnZS50c3gmYXBwRGlyPUQlM0ElNUNQcm9qZWN0cyU1Q0RldiU1Q0hvbGlkYXklMjBUcmF2ZWwlMjBBcHAlNUNhcHAmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZyb290RGlyPUQlM0ElNUNQcm9qZWN0cyU1Q0RldiU1Q0hvbGlkYXklMjBUcmF2ZWwlMjBBcHAmaXNEZXY9dHJ1ZSZ0c2NvbmZpZ1BhdGg9dHNjb25maWcuanNvbiZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JnByZWZlcnJlZFJlZ2lvbj0mbWlkZGxld2FyZUNvbmZpZz1lMzAlM0QhIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxhQUFhLHNCQUFzQjtBQUNpRTtBQUNyQztBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakMsdUJBQXVCLHdJQUF5RjtBQUNoSDtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSx5QkFBeUIsNElBQTJGO0FBQ3BILG9CQUFvQiwwTkFBZ0Y7QUFDcEc7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ3VCO0FBQzZEO0FBQ3BGLDZCQUE2QixtQkFBbUI7QUFDaEQ7QUFDTztBQUNBO0FBQ1A7QUFDQTtBQUNBO0FBQ3VEO0FBQ3ZEO0FBQ08sd0JBQXdCLDhHQUFrQjtBQUNqRDtBQUNBLGNBQWMseUVBQVM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLz84ZDc3Il0sInNvdXJjZXNDb250ZW50IjpbIlwiVFVSQk9QQUNLIHsgdHJhbnNpdGlvbjogbmV4dC1zc3IgfVwiO1xuaW1wb3J0IHsgQXBwUGFnZVJvdXRlTW9kdWxlIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXBhZ2UvbW9kdWxlLmNvbXBpbGVkXCI7XG5pbXBvcnQgeyBSb3V0ZUtpbmQgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9mdXR1cmUvcm91dGUta2luZFwiO1xuLy8gV2UgaW5qZWN0IHRoZSB0cmVlIGFuZCBwYWdlcyBoZXJlIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGVtIGluIHRoZSByb3V0ZVxuLy8gbW9kdWxlLlxuY29uc3QgdHJlZSA9IHtcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgJycsXG4gICAgICAgIHtcbiAgICAgICAgY2hpbGRyZW46IFsnX19QQUdFX18nLCB7fSwge1xuICAgICAgICAgIHBhZ2U6IFsoKSA9PiBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIkQ6XFxcXFByb2plY3RzXFxcXERldlxcXFxIb2xpZGF5IFRyYXZlbCBBcHBcXFxcYXBwXFxcXHBhZ2UudHN4XCIpLCBcIkQ6XFxcXFByb2plY3RzXFxcXERldlxcXFxIb2xpZGF5IFRyYXZlbCBBcHBcXFxcYXBwXFxcXHBhZ2UudHN4XCJdLFxuICAgICAgICAgIFxuICAgICAgICB9XVxuICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAnbGF5b3V0JzogWygpID0+IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiRDpcXFxcUHJvamVjdHNcXFxcRGV2XFxcXEhvbGlkYXkgVHJhdmVsIEFwcFxcXFxhcHBcXFxcbGF5b3V0LnRzeFwiKSwgXCJEOlxcXFxQcm9qZWN0c1xcXFxEZXZcXFxcSG9saWRheSBUcmF2ZWwgQXBwXFxcXGFwcFxcXFxsYXlvdXQudHN4XCJdLFxuJ25vdC1mb3VuZCc6IFsoKSA9PiBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9ub3QtZm91bmQtZXJyb3JcIiksIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvclwiXSxcbiAgICAgICAgXG4gICAgICB9XG4gICAgICBdXG4gICAgICB9LmNoaWxkcmVuO1xuY29uc3QgcGFnZXMgPSBbXCJEOlxcXFxQcm9qZWN0c1xcXFxEZXZcXFxcSG9saWRheSBUcmF2ZWwgQXBwXFxcXGFwcFxcXFxwYWdlLnRzeFwiXTtcbmV4cG9ydCB7IHRyZWUsIHBhZ2VzIH07XG5leHBvcnQgeyBkZWZhdWx0IGFzIEdsb2JhbEVycm9yIH0gZnJvbSBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9lcnJvci1ib3VuZGFyeVwiO1xuY29uc3QgX19uZXh0X2FwcF9yZXF1aXJlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fXG5jb25zdCBfX25leHRfYXBwX2xvYWRfY2h1bmtfXyA9ICgpID0+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=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!\n"); + +/***/ }), + +/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Capp%5C%5Cpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!": +/*!**********************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Capp%5C%5Cpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***! + \**********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/page.tsx */ \"(ssr)/./app/page.tsx\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMkQlM0ElNUMlNUNQcm9qZWN0cyU1QyU1Q0RldiU1QyU1Q0hvbGlkYXklMjBUcmF2ZWwlMjBBcHAlNUMlNUNhcHAlNUMlNUNwYWdlLnRzeCUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsd0lBQXlGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vaG9saWRheS1kZWFsLWZpbmRlci8/NGE0YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIkQ6XFxcXFByb2plY3RzXFxcXERldlxcXFxIb2xpZGF5IFRyYXZlbCBBcHBcXFxcYXBwXFxcXHBhZ2UudHN4XCIpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Capp%5C%5Cpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n"); + +/***/ }), + +/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Capp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Cclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Cerror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Clayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Cnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Crender-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%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Capp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Cclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Cerror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Clayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Cnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Crender-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMkQlM0ElNUMlNUNQcm9qZWN0cyU1QyU1Q0RldiU1QyU1Q0hvbGlkYXklMjBUcmF2ZWwlMjBBcHAlNUMlNUNub2RlX21vZHVsZXMlNUMlNUNuZXh0JTVDJTVDZGlzdCU1QyU1Q2NsaWVudCU1QyU1Q2NvbXBvbmVudHMlNUMlNUNhcHAtcm91dGVyLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMkQlM0ElNUMlNUNQcm9qZWN0cyU1QyU1Q0RldiU1QyU1Q0hvbGlkYXklMjBUcmF2ZWwlMjBBcHAlNUMlNUNub2RlX21vZHVsZXMlNUMlNUNuZXh0JTVDJTVDZGlzdCU1QyU1Q2NsaWVudCU1QyU1Q2NvbXBvbmVudHMlNUMlNUNjbGllbnQtcGFnZS5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjJEJTNBJTVDJTVDUHJvamVjdHMlNUMlNUNEZXYlNUMlNUNIb2xpZGF5JTIwVHJhdmVsJTIwQXBwJTVDJTVDbm9kZV9tb2R1bGVzJTVDJTVDbmV4dCU1QyU1Q2Rpc3QlNUMlNUNjbGllbnQlNUMlNUNjb21wb25lbnRzJTVDJTVDZXJyb3ItYm91bmRhcnkuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyRCUzQSU1QyU1Q1Byb2plY3RzJTVDJTVDRGV2JTVDJTVDSG9saWRheSUyMFRyYXZlbCUyMEFwcCU1QyU1Q25vZGVfbW9kdWxlcyU1QyU1Q25leHQlNUMlNUNkaXN0JTVDJTVDY2xpZW50JTVDJTVDY29tcG9uZW50cyU1QyU1Q2xheW91dC1yb3V0ZXIuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyRCUzQSU1QyU1Q1Byb2plY3RzJTVDJTVDRGV2JTVDJTVDSG9saWRheSUyMFRyYXZlbCUyMEFwcCU1QyU1Q25vZGVfbW9kdWxlcyU1QyU1Q25leHQlNUMlNUNkaXN0JTVDJTVDY2xpZW50JTVDJTVDY29tcG9uZW50cyU1QyU1Q25vdC1mb3VuZC1ib3VuZGFyeS5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjJEJTNBJTVDJTVDUHJvamVjdHMlNUMlNUNEZXYlNUMlNUNIb2xpZGF5JTIwVHJhdmVsJTIwQXBwJTVDJTVDbm9kZV9tb2R1bGVzJTVDJTVDbmV4dCU1QyU1Q2Rpc3QlNUMlNUNjbGllbnQlNUMlNUNjb21wb25lbnRzJTVDJTVDcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsa09BQXVJO0FBQ3ZJO0FBQ0Esb09BQXdJO0FBQ3hJO0FBQ0EsME9BQTJJO0FBQzNJO0FBQ0Esd09BQTBJO0FBQzFJO0FBQ0Esa1BBQStJO0FBQy9JO0FBQ0Esc1FBQXlKIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vaG9saWRheS1kZWFsLWZpbmRlci8/ZWYyMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIkQ6XFxcXFByb2plY3RzXFxcXERldlxcXFxIb2xpZGF5IFRyYXZlbCBBcHBcXFxcbm9kZV9tb2R1bGVzXFxcXG5leHRcXFxcZGlzdFxcXFxjbGllbnRcXFxcY29tcG9uZW50c1xcXFxhcHAtcm91dGVyLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCJEOlxcXFxQcm9qZWN0c1xcXFxEZXZcXFxcSG9saWRheSBUcmF2ZWwgQXBwXFxcXG5vZGVfbW9kdWxlc1xcXFxuZXh0XFxcXGRpc3RcXFxcY2xpZW50XFxcXGNvbXBvbmVudHNcXFxcY2xpZW50LXBhZ2UuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIkQ6XFxcXFByb2plY3RzXFxcXERldlxcXFxIb2xpZGF5IFRyYXZlbCBBcHBcXFxcbm9kZV9tb2R1bGVzXFxcXG5leHRcXFxcZGlzdFxcXFxjbGllbnRcXFxcY29tcG9uZW50c1xcXFxlcnJvci1ib3VuZGFyeS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiRDpcXFxcUHJvamVjdHNcXFxcRGV2XFxcXEhvbGlkYXkgVHJhdmVsIEFwcFxcXFxub2RlX21vZHVsZXNcXFxcbmV4dFxcXFxkaXN0XFxcXGNsaWVudFxcXFxjb21wb25lbnRzXFxcXGxheW91dC1yb3V0ZXIuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIkQ6XFxcXFByb2plY3RzXFxcXERldlxcXFxIb2xpZGF5IFRyYXZlbCBBcHBcXFxcbm9kZV9tb2R1bGVzXFxcXG5leHRcXFxcZGlzdFxcXFxjbGllbnRcXFxcY29tcG9uZW50c1xcXFxub3QtZm91bmQtYm91bmRhcnkuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIkQ6XFxcXFByb2plY3RzXFxcXERldlxcXFxIb2xpZGF5IFRyYXZlbCBBcHBcXFxcbm9kZV9tb2R1bGVzXFxcXG5leHRcXFxcZGlzdFxcXFxjbGllbnRcXFxcY29tcG9uZW50c1xcXFxyZW5kZXItZnJvbS10ZW1wbGF0ZS1jb250ZXh0LmpzXCIpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Capp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Cclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Cerror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Clayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Cnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cnode_modules%5C%5Cnext%5C%5Cdist%5C%5Cclient%5C%5Ccomponents%5C%5Crender-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%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cstyles%5C%5Cglobals.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%22D%3A%5C%5CProjects%5C%5CDev%5C%5CHoliday%20Travel%20App%5C%5Cstyles%5C%5Cglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***! + \****************************************************************************************************************************************************************************************************************************************************/ +/***/ (() => { + + + +/***/ }), + +/***/ "(ssr)/./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 */ \"(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 _components_Section__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/Section */ \"(ssr)/./components/Section.tsx\");\n/* harmony import */ var _components_DealCard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/DealCard */ \"(ssr)/./components/DealCard.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\nfunction Page() {\n const [origin, setOrigin] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"YOW\");\n const [dest, setDest] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"CUN,PUJ,MBJ\");\n const [startDate, setStartDate] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(new Date().toISOString().slice(0, 10));\n const [endDate, setEndDate] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(new Date(Date.now() + 1000 * 60 * 60 * 24 * 60).toISOString().slice(0, 10));\n const [minN, setMinN] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(5);\n const [maxN, setMaxN] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(9);\n const [budget, setBudget] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [nonStop, setNonStop] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [results, setResults] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [useDeals, setUseDeals] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [useSky, setUseSky] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [useG, setUseG] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [useAC, setUseAC] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [useAT, setUseAT] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n async function onSubmit(e) {\n e.preventDefault();\n setLoading(true);\n setResults([]);\n const payload = {\n origin: origin.trim().toUpperCase(),\n destinations: dest.split(\",\").map((s)=>s.trim().toUpperCase()).filter(Boolean),\n startDate,\n endDate,\n tripLengthMin: Number(minN),\n tripLengthMax: Number(maxN),\n budget: budget === \"\" ? null : Number(budget),\n currency: \"CAD\",\n nonStopOnly: nonStop,\n sources: [\n useDeals ? \"Deals\" : \"\",\n useSky ? \"Skyscanner\" : \"\",\n useG ? \"GoogleFlights\" : \"\",\n useAC ? \"AirCanada\" : \"\",\n useAT ? \"AirTransat\" : \"\"\n ].filter(Boolean)\n };\n const res = await fetch(\"/api/search\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\"\n },\n body: JSON.stringify(payload)\n });\n const data = await res.json();\n // Sort by destination, then by source/provider\n const sorted = (data.results || []).sort((a, b)=>{\n // First sort by destination\n const destCompare = (a.destination || \"\").localeCompare(b.destination || \"\");\n if (destCompare !== 0) return destCompare;\n // Then by source/provider\n return (a.source || \"\").localeCompare(b.source || \"\");\n });\n setResults(sorted);\n setLoading(false);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Section__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n title: \"Your trip idea\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"form\", {\n className: \"grid md:grid-cols-4 gap-4\",\n onSubmit: onSubmit,\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)(\"label\", {\n className: \"label\",\n children: \"From (IATA)\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 72,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n className: \"input\",\n value: origin,\n onChange: (e)=>setOrigin(e.target.value.toUpperCase()),\n maxLength: 4,\n placeholder: \"YOW\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 73,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 71,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"md:col-span-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"To (IATA, comma-separated)\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 76,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n className: \"input\",\n value: dest,\n onChange: (e)=>setDest(e.target.value),\n placeholder: \"CUN,PUJ,MBJ\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 77,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 75,\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)(\"label\", {\n className: \"label\",\n children: \"Start date\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 80,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"date\",\n className: \"input\",\n value: startDate,\n onChange: (e)=>setStartDate(e.target.value)\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 81,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 79,\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)(\"label\", {\n className: \"label\",\n children: \"End date\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 84,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"date\",\n className: \"input\",\n value: endDate,\n onChange: (e)=>setEndDate(e.target.value)\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 85,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 83,\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)(\"label\", {\n className: \"label\",\n children: \"Trip length (min)\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 88,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n className: \"input\",\n value: minN,\n onChange: (e)=>setMinN(Number(e.target.value)),\n min: 1\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 89,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 87,\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)(\"label\", {\n className: \"label\",\n children: \"Trip length (max)\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 92,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n className: \"input\",\n value: maxN,\n onChange: (e)=>setMaxN(Number(e.target.value)),\n min: minN\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 93,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 91,\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)(\"label\", {\n className: \"label\",\n children: \"Budget (CAD)\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 96,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"number\",\n className: \"input\",\n value: budget,\n onChange: (e)=>setBudget(e.target.value === \"\" ? \"\" : Number(e.target.value))\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 97,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 95,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-end gap-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"inline-flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n checked: nonStop,\n onChange: (e)=>setNonStop(e.target.checked)\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 101,\n columnNumber: 15\n }, this),\n \"Non-stop only\"\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 100,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 99,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"md:col-span-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"label\",\n children: \"Sources\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 106,\n columnNumber: 13\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)(\"label\", {\n className: \"inline-flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n checked: useDeals,\n onChange: (e)=>setUseDeals(e.target.checked)\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 108,\n columnNumber: 65\n }, this),\n \" Deal sites (YOW/YYZ/YUL/etc.)\"\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 108,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"inline-flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n checked: useSky,\n onChange: (e)=>setUseSky(e.target.checked)\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 109,\n columnNumber: 65\n }, this),\n \" Skyscanner links\"\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 109,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"inline-flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n checked: useG,\n onChange: (e)=>setUseG(e.target.checked)\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 110,\n columnNumber: 65\n }, this),\n \" Google Flights links\"\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 110,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"inline-flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n checked: useAC,\n onChange: (e)=>setUseAC(e.target.checked)\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 111,\n columnNumber: 65\n }, this),\n \" Air Canada links\"\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 111,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"inline-flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n checked: useAT,\n onChange: (e)=>setUseAT(e.target.checked)\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 112,\n columnNumber: 65\n }, this),\n \" Air Transat links\"\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 112,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 107,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 105,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"md:col-span-4 flex gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"btn\",\n type: \"submit\",\n disabled: loading,\n children: loading ? \"Searching...\" : \"Search deals & dates\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 116,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"btn\",\n type: \"button\",\n onClick: ()=>{\n localStorage.setItem(\"lastSearch\", JSON.stringify({\n origin,\n dest,\n startDate,\n endDate,\n minN,\n maxN,\n budget,\n nonStop,\n useDeals,\n useSky,\n useG,\n useAC,\n useAT\n }));\n alert(\"Saved to this browser.\");\n },\n children: \"Save search\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 117,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"btn\",\n type: \"button\",\n onClick: ()=>{\n const raw = localStorage.getItem(\"lastSearch\");\n if (raw) {\n const s = JSON.parse(raw);\n setOrigin(s.origin);\n setDest(s.dest);\n setStartDate(s.startDate);\n setEndDate(s.endDate);\n setMinN(s.minN);\n setMaxN(s.maxN);\n setBudget(s.budget);\n setNonStop(s.nonStop);\n setUseDeals(s.useDeals);\n setUseSky(s.useSky);\n setUseG(s.useG);\n setUseAC(s.useAC);\n setUseAT(s.useAT || true);\n } else alert(\"No saved search found.\");\n },\n children: \"Load last\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 121,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 115,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 70,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 69,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Section__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n title: \"Results\",\n children: [\n !loading && results.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"opacity-70\",\n children: \"No results yet. Fill the form and hit search.\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 138,\n columnNumber: 11\n }, this),\n results.length > 0 && (()=>{\n // Group by destination\n const grouped = {};\n results.forEach((r)=>{\n const dest = r.destination || \"Unknown\";\n if (!grouped[dest]) grouped[dest] = [];\n grouped[dest].push(r);\n });\n return Object.keys(grouped).sort().map((destination)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-xl font-bold mb-4 border-b border-slate-300 dark:border-slate-700 pb-2\",\n children: destination\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 151,\n columnNumber: 15\n }, this),\n (()=>{\n // Group by source/provider within this destination\n const bySource = {};\n grouped[destination].forEach((r)=>{\n const src = r.source || \"Other\";\n if (!bySource[src]) bySource[src] = [];\n bySource[src].push(r);\n });\n return Object.keys(bySource).sort().map((source)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h4\", {\n className: \"text-sm font-semibold mb-3 text-slate-600 dark:text-slate-400 uppercase tracking-wide\",\n children: source\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 165,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid md:grid-cols-2 gap-4\",\n children: bySource[source].map((r)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_DealCard__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n deal: r\n }, r.id, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 169,\n columnNumber: 57\n }, this))\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 168,\n columnNumber: 21\n }, this)\n ]\n }, source, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 164,\n columnNumber: 19\n }, this));\n })()\n ]\n }, destination, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 150,\n columnNumber: 13\n }, this));\n })()\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 136,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\page.tsx\",\n lineNumber: 68,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFaUM7QUFDVTtBQUNFO0FBTTlCLFNBQVNHO0lBQ3RCLE1BQU0sQ0FBQ0MsUUFBUUMsVUFBVSxHQUFHTCwrQ0FBUUEsQ0FBQztJQUNyQyxNQUFNLENBQUNNLE1BQU1DLFFBQVEsR0FBR1AsK0NBQVFBLENBQUM7SUFDakMsTUFBTSxDQUFDUSxXQUFXQyxhQUFhLEdBQUdULCtDQUFRQSxDQUFDLElBQUlVLE9BQU9DLFdBQVcsR0FBR0MsS0FBSyxDQUFDLEdBQUU7SUFDNUUsTUFBTSxDQUFDQyxTQUFTQyxXQUFXLEdBQUdkLCtDQUFRQSxDQUFDLElBQUlVLEtBQUtBLEtBQUtLLEdBQUcsS0FBSyxPQUFLLEtBQUcsS0FBRyxLQUFHLElBQUlKLFdBQVcsR0FBR0MsS0FBSyxDQUFDLEdBQUU7SUFDckcsTUFBTSxDQUFDSSxNQUFNQyxRQUFRLEdBQUdqQiwrQ0FBUUEsQ0FBQztJQUNqQyxNQUFNLENBQUNrQixNQUFNQyxRQUFRLEdBQUduQiwrQ0FBUUEsQ0FBQztJQUNqQyxNQUFNLENBQUNvQixRQUFRQyxVQUFVLEdBQUdyQiwrQ0FBUUEsQ0FBYztJQUNsRCxNQUFNLENBQUNzQixTQUFTQyxXQUFXLEdBQUd2QiwrQ0FBUUEsQ0FBQztJQUN2QyxNQUFNLENBQUN3QixTQUFTQyxXQUFXLEdBQUd6QiwrQ0FBUUEsQ0FBQztJQUN2QyxNQUFNLENBQUMwQixTQUFTQyxXQUFXLEdBQUczQiwrQ0FBUUEsQ0FBUSxFQUFFO0lBQ2hELE1BQU0sQ0FBQzRCLFVBQVVDLFlBQVksR0FBRzdCLCtDQUFRQSxDQUFDO0lBQ3pDLE1BQU0sQ0FBQzhCLFFBQVFDLFVBQVUsR0FBRy9CLCtDQUFRQSxDQUFDO0lBQ3JDLE1BQU0sQ0FBQ2dDLE1BQU1DLFFBQVEsR0FBR2pDLCtDQUFRQSxDQUFDO0lBQ2pDLE1BQU0sQ0FBQ2tDLE9BQU9DLFNBQVMsR0FBR25DLCtDQUFRQSxDQUFDO0lBQ25DLE1BQU0sQ0FBQ29DLE9BQU9DLFNBQVMsR0FBR3JDLCtDQUFRQSxDQUFDO0lBRW5DLGVBQWVzQyxTQUFTQyxDQUFrQjtRQUN4Q0EsRUFBRUMsY0FBYztRQUNoQmYsV0FBVztRQUNYRSxXQUFXLEVBQUU7UUFFYixNQUFNYyxVQUFVO1lBQ2RyQyxRQUFRQSxPQUFPc0MsSUFBSSxHQUFHQyxXQUFXO1lBQ2pDQyxjQUFjdEMsS0FBS3VDLEtBQUssQ0FBQyxLQUFLQyxHQUFHLENBQUNDLENBQUFBLElBQUtBLEVBQUVMLElBQUksR0FBR0MsV0FBVyxJQUFJSyxNQUFNLENBQUNDO1lBQ3RFekM7WUFBV0s7WUFDWHFDLGVBQWVDLE9BQU9uQztZQUFPb0MsZUFBZUQsT0FBT2pDO1lBQ25ERSxRQUFRQSxXQUFXLEtBQUssT0FBTytCLE9BQU8vQjtZQUN0Q2lDLFVBQVU7WUFDVkMsYUFBYWhDO1lBQ2JpQyxTQUFTO2dCQUNQM0IsV0FBVyxVQUFVO2dCQUNyQkUsU0FBUyxlQUFlO2dCQUN4QkUsT0FBTyxrQkFBa0I7Z0JBQ3pCRSxRQUFRLGNBQWM7Z0JBQ3RCRSxRQUFRLGVBQWU7YUFDeEIsQ0FBQ1ksTUFBTSxDQUFDQztRQUNYO1FBRUEsTUFBTU8sTUFBTSxNQUFNQyxNQUFNLGVBQWU7WUFBRUMsUUFBUTtZQUFRQyxTQUFTO2dCQUFFLGdCQUFnQjtZQUFtQjtZQUFHQyxNQUFNQyxLQUFLQyxTQUFTLENBQUNyQjtRQUFTO1FBQ3hJLE1BQU1zQixPQUFlLE1BQU1QLElBQUlRLElBQUk7UUFFbkMsK0NBQStDO1FBQy9DLE1BQU1DLFNBQVMsQ0FBQ0YsS0FBS3JDLE9BQU8sSUFBSSxFQUFFLEVBQUV3QyxJQUFJLENBQUMsQ0FBQ0MsR0FBUUM7WUFDaEQsNEJBQTRCO1lBQzVCLE1BQU1DLGNBQWMsQ0FBQ0YsRUFBRUcsV0FBVyxJQUFJLEVBQUMsRUFBR0MsYUFBYSxDQUFDSCxFQUFFRSxXQUFXLElBQUk7WUFDekUsSUFBSUQsZ0JBQWdCLEdBQUcsT0FBT0E7WUFFOUIsMEJBQTBCO1lBQzFCLE9BQU8sQ0FBQ0YsRUFBRUssTUFBTSxJQUFJLEVBQUMsRUFBR0QsYUFBYSxDQUFDSCxFQUFFSSxNQUFNLElBQUk7UUFDcEQ7UUFFQTdDLFdBQVdzQztRQUNYeEMsV0FBVztJQUNiO0lBRUEscUJBQ0UsOERBQUNnRDtRQUFLQyxXQUFVOzswQkFDZCw4REFBQ3pFLDJEQUFPQTtnQkFBQzBFLE9BQU07MEJBQ2IsNEVBQUNDO29CQUFLRixXQUFVO29CQUE0QnBDLFVBQVVBOztzQ0FDcEQsOERBQUN1Qzs7OENBQ0MsOERBQUNDO29DQUFNSixXQUFVOzhDQUFROzs7Ozs7OENBQ3pCLDhEQUFDSztvQ0FBTUwsV0FBVTtvQ0FBUU0sT0FBTzVFO29DQUFRNkUsVUFBVTFDLENBQUFBLElBQUdsQyxVQUFVa0MsRUFBRTJDLE1BQU0sQ0FBQ0YsS0FBSyxDQUFDckMsV0FBVztvQ0FBS3dDLFdBQVc7b0NBQUdDLGFBQVk7Ozs7Ozs7Ozs7OztzQ0FFMUgsOERBQUNQOzRCQUFJSCxXQUFVOzs4Q0FDYiw4REFBQ0k7b0NBQU1KLFdBQVU7OENBQVE7Ozs7Ozs4Q0FDekIsOERBQUNLO29DQUFNTCxXQUFVO29DQUFRTSxPQUFPMUU7b0NBQU0yRSxVQUFVMUMsQ0FBQUEsSUFBR2hDLFFBQVFnQyxFQUFFMkMsTUFBTSxDQUFDRixLQUFLO29DQUFHSSxhQUFZOzs7Ozs7Ozs7Ozs7c0NBRTFGLDhEQUFDUDs7OENBQ0MsOERBQUNDO29DQUFNSixXQUFVOzhDQUFROzs7Ozs7OENBQ3pCLDhEQUFDSztvQ0FBTU0sTUFBSztvQ0FBT1gsV0FBVTtvQ0FBUU0sT0FBT3hFO29DQUFXeUUsVUFBVTFDLENBQUFBLElBQUc5QixhQUFhOEIsRUFBRTJDLE1BQU0sQ0FBQ0YsS0FBSzs7Ozs7Ozs7Ozs7O3NDQUVqRyw4REFBQ0g7OzhDQUNDLDhEQUFDQztvQ0FBTUosV0FBVTs4Q0FBUTs7Ozs7OzhDQUN6Qiw4REFBQ0s7b0NBQU1NLE1BQUs7b0NBQU9YLFdBQVU7b0NBQVFNLE9BQU9uRTtvQ0FBU29FLFVBQVUxQyxDQUFBQSxJQUFHekIsV0FBV3lCLEVBQUUyQyxNQUFNLENBQUNGLEtBQUs7Ozs7Ozs7Ozs7OztzQ0FFN0YsOERBQUNIOzs4Q0FDQyw4REFBQ0M7b0NBQU1KLFdBQVU7OENBQVE7Ozs7Ozs4Q0FDekIsOERBQUNLO29DQUFNTSxNQUFLO29DQUFTWCxXQUFVO29DQUFRTSxPQUFPaEU7b0NBQU1pRSxVQUFVMUMsQ0FBQUEsSUFBR3RCLFFBQVFrQyxPQUFPWixFQUFFMkMsTUFBTSxDQUFDRixLQUFLO29DQUFJTSxLQUFLOzs7Ozs7Ozs7Ozs7c0NBRXpHLDhEQUFDVDs7OENBQ0MsOERBQUNDO29DQUFNSixXQUFVOzhDQUFROzs7Ozs7OENBQ3pCLDhEQUFDSztvQ0FBTU0sTUFBSztvQ0FBU1gsV0FBVTtvQ0FBUU0sT0FBTzlEO29DQUFNK0QsVUFBVTFDLENBQUFBLElBQUdwQixRQUFRZ0MsT0FBT1osRUFBRTJDLE1BQU0sQ0FBQ0YsS0FBSztvQ0FBSU0sS0FBS3RFOzs7Ozs7Ozs7Ozs7c0NBRXpHLDhEQUFDNkQ7OzhDQUNDLDhEQUFDQztvQ0FBTUosV0FBVTs4Q0FBUTs7Ozs7OzhDQUN6Qiw4REFBQ0s7b0NBQU1NLE1BQUs7b0NBQVNYLFdBQVU7b0NBQVFNLE9BQU81RDtvQ0FBUTZELFVBQVUxQyxDQUFBQSxJQUFHbEIsVUFBVWtCLEVBQUUyQyxNQUFNLENBQUNGLEtBQUssS0FBSyxLQUFLLEtBQUs3QixPQUFPWixFQUFFMkMsTUFBTSxDQUFDRixLQUFLOzs7Ozs7Ozs7Ozs7c0NBRWpJLDhEQUFDSDs0QkFBSUgsV0FBVTtzQ0FDYiw0RUFBQ0k7Z0NBQU1KLFdBQVU7O2tEQUNmLDhEQUFDSzt3Q0FBTU0sTUFBSzt3Q0FBV0UsU0FBU2pFO3dDQUFTMkQsVUFBVTFDLENBQUFBLElBQUdoQixXQUFXZ0IsRUFBRTJDLE1BQU0sQ0FBQ0ssT0FBTzs7Ozs7O29DQUFLOzs7Ozs7Ozs7Ozs7c0NBSTFGLDhEQUFDVjs0QkFBSUgsV0FBVTs7OENBQ2IsOERBQUNJO29DQUFNSixXQUFVOzhDQUFROzs7Ozs7OENBQ3pCLDhEQUFDRztvQ0FBSUgsV0FBVTs7c0RBQ2IsOERBQUNJOzRDQUFNSixXQUFVOzs4REFBaUMsOERBQUNLO29EQUFNTSxNQUFLO29EQUFXRSxTQUFTM0Q7b0RBQVVxRCxVQUFVMUMsQ0FBQUEsSUFBR1YsWUFBWVUsRUFBRTJDLE1BQU0sQ0FBQ0ssT0FBTzs7Ozs7O2dEQUFLOzs7Ozs7O3NEQUMxSSw4REFBQ1Q7NENBQU1KLFdBQVU7OzhEQUFpQyw4REFBQ0s7b0RBQU1NLE1BQUs7b0RBQVdFLFNBQVN6RDtvREFBUW1ELFVBQVUxQyxDQUFBQSxJQUFHUixVQUFVUSxFQUFFMkMsTUFBTSxDQUFDSyxPQUFPOzs7Ozs7Z0RBQUs7Ozs7Ozs7c0RBQ3RJLDhEQUFDVDs0Q0FBTUosV0FBVTs7OERBQWlDLDhEQUFDSztvREFBTU0sTUFBSztvREFBV0UsU0FBU3ZEO29EQUFNaUQsVUFBVTFDLENBQUFBLElBQUdOLFFBQVFNLEVBQUUyQyxNQUFNLENBQUNLLE9BQU87Ozs7OztnREFBSzs7Ozs7OztzREFDbEksOERBQUNUOzRDQUFNSixXQUFVOzs4REFBaUMsOERBQUNLO29EQUFNTSxNQUFLO29EQUFXRSxTQUFTckQ7b0RBQU8rQyxVQUFVMUMsQ0FBQUEsSUFBR0osU0FBU0ksRUFBRTJDLE1BQU0sQ0FBQ0ssT0FBTzs7Ozs7O2dEQUFLOzs7Ozs7O3NEQUNwSSw4REFBQ1Q7NENBQU1KLFdBQVU7OzhEQUFpQyw4REFBQ0s7b0RBQU1NLE1BQUs7b0RBQVdFLFNBQVNuRDtvREFBTzZDLFVBQVUxQyxDQUFBQSxJQUFHRixTQUFTRSxFQUFFMkMsTUFBTSxDQUFDSyxPQUFPOzs7Ozs7Z0RBQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0NBR3hJLDhEQUFDVjs0QkFBSUgsV0FBVTs7OENBQ2IsOERBQUNjO29DQUFPZCxXQUFVO29DQUFNVyxNQUFLO29DQUFTSSxVQUFVakU7OENBQVVBLFVBQVUsaUJBQWlCOzs7Ozs7OENBQ3JGLDhEQUFDZ0U7b0NBQU9kLFdBQVU7b0NBQU1XLE1BQUs7b0NBQVNLLFNBQVM7d0NBQzdDQyxhQUFhQyxPQUFPLENBQUMsY0FBYy9CLEtBQUtDLFNBQVMsQ0FBQzs0Q0FBQzFEOzRDQUFPRTs0Q0FBS0U7NENBQVVLOzRDQUFRRzs0Q0FBS0U7NENBQUtFOzRDQUFPRTs0Q0FBUU07NENBQVNFOzRDQUFPRTs0Q0FBS0U7NENBQU1FO3dDQUFLO3dDQUMxSXlELE1BQU07b0NBQ1I7OENBQUc7Ozs7Ozs4Q0FDSCw4REFBQ0w7b0NBQU9kLFdBQVU7b0NBQU1XLE1BQUs7b0NBQVNLLFNBQVM7d0NBQzdDLE1BQU1JLE1BQU1ILGFBQWFJLE9BQU8sQ0FBQzt3Q0FDakMsSUFBSUQsS0FBSzs0Q0FDUCxNQUFNL0MsSUFBSWMsS0FBS21DLEtBQUssQ0FBQ0Y7NENBQ3JCekYsVUFBVTBDLEVBQUUzQyxNQUFNOzRDQUFHRyxRQUFRd0MsRUFBRXpDLElBQUk7NENBQ25DRyxhQUFhc0MsRUFBRXZDLFNBQVM7NENBQUdNLFdBQVdpQyxFQUFFbEMsT0FBTzs0Q0FDL0NJLFFBQVE4QixFQUFFL0IsSUFBSTs0Q0FBR0csUUFBUTRCLEVBQUU3QixJQUFJOzRDQUMvQkcsVUFBVTBCLEVBQUUzQixNQUFNOzRDQUFHRyxXQUFXd0IsRUFBRXpCLE9BQU87NENBQ3pDTyxZQUFZa0IsRUFBRW5CLFFBQVE7NENBQUdHLFVBQVVnQixFQUFFakIsTUFBTTs0Q0FBR0csUUFBUWMsRUFBRWYsSUFBSTs0Q0FBR0csU0FBU1ksRUFBRWIsS0FBSzs0Q0FBR0csU0FBU1UsRUFBRVgsS0FBSyxJQUFJO3dDQUN4RyxPQUFPeUQsTUFBTTtvQ0FDZjs4Q0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBS1QsOERBQUM1RiwyREFBT0E7Z0JBQUMwRSxPQUFNOztvQkFDWixDQUFDbkQsV0FBV0UsUUFBUXVFLE1BQU0sS0FBSyxtQkFDOUIsOERBQUNwQjt3QkFBSUgsV0FBVTtrQ0FBYTs7Ozs7O29CQUU3QmhELFFBQVF1RSxNQUFNLEdBQUcsS0FBSyxDQUFDO3dCQUN0Qix1QkFBdUI7d0JBQ3ZCLE1BQU1DLFVBQWlDLENBQUM7d0JBQ3hDeEUsUUFBUXlFLE9BQU8sQ0FBQyxDQUFDQzs0QkFDZixNQUFNOUYsT0FBTzhGLEVBQUU5QixXQUFXLElBQUk7NEJBQzlCLElBQUksQ0FBQzRCLE9BQU8sQ0FBQzVGLEtBQUssRUFBRTRGLE9BQU8sQ0FBQzVGLEtBQUssR0FBRyxFQUFFOzRCQUN0QzRGLE9BQU8sQ0FBQzVGLEtBQUssQ0FBQytGLElBQUksQ0FBQ0Q7d0JBQ3JCO3dCQUVBLE9BQU9FLE9BQU9DLElBQUksQ0FBQ0wsU0FBU2hDLElBQUksR0FBR3BCLEdBQUcsQ0FBQ3dCLENBQUFBLDRCQUNyQyw4REFBQ087Z0NBQXNCSCxXQUFVOztrREFDL0IsOERBQUM4Qjt3Q0FBRzlCLFdBQVU7a0RBQ1hKOzs7Ozs7b0NBRUQ7d0NBQ0EsbURBQW1EO3dDQUNuRCxNQUFNbUMsV0FBa0MsQ0FBQzt3Q0FDekNQLE9BQU8sQ0FBQzVCLFlBQVksQ0FBQzZCLE9BQU8sQ0FBQyxDQUFDQzs0Q0FDNUIsTUFBTU0sTUFBTU4sRUFBRTVCLE1BQU0sSUFBSTs0Q0FDeEIsSUFBSSxDQUFDaUMsUUFBUSxDQUFDQyxJQUFJLEVBQUVELFFBQVEsQ0FBQ0MsSUFBSSxHQUFHLEVBQUU7NENBQ3RDRCxRQUFRLENBQUNDLElBQUksQ0FBQ0wsSUFBSSxDQUFDRDt3Q0FDckI7d0NBRUEsT0FBT0UsT0FBT0MsSUFBSSxDQUFDRSxVQUFVdkMsSUFBSSxHQUFHcEIsR0FBRyxDQUFDMEIsQ0FBQUEsdUJBQ3RDLDhEQUFDSztnREFBaUJILFdBQVU7O2tFQUMxQiw4REFBQ2lDO3dEQUFHakMsV0FBVTtrRUFDWEY7Ozs7OztrRUFFSCw4REFBQ0s7d0RBQUlILFdBQVU7a0VBQ1orQixRQUFRLENBQUNqQyxPQUFPLENBQUMxQixHQUFHLENBQUMsQ0FBQ3NELGtCQUFXLDhEQUFDbEcsNERBQVFBO2dFQUFZMEcsTUFBTVI7K0RBQVpBLEVBQUVTLEVBQUU7Ozs7Ozs7Ozs7OytDQUwvQ3JDOzs7OztvQ0FTZDs7K0JBdkJRRjs7Ozs7b0JBMEJkOzs7Ozs7Ozs7Ozs7O0FBSVIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vYXBwL3BhZ2UudHN4Pzc2MDMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFNlY3Rpb24gZnJvbSBcIkAvY29tcG9uZW50cy9TZWN0aW9uXCI7XG5pbXBvcnQgRGVhbENhcmQgZnJvbSBcIkAvY29tcG9uZW50cy9EZWFsQ2FyZFwiO1xuXG50eXBlIFJlc3VsdCA9IHtcbiAgcmVzdWx0czogYW55W11cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBhZ2UoKSB7XG4gIGNvbnN0IFtvcmlnaW4sIHNldE9yaWdpbl0gPSB1c2VTdGF0ZShcIllPV1wiKTtcbiAgY29uc3QgW2Rlc3QsIHNldERlc3RdID0gdXNlU3RhdGUoXCJDVU4sUFVKLE1CSlwiKTtcbiAgY29uc3QgW3N0YXJ0RGF0ZSwgc2V0U3RhcnREYXRlXSA9IHVzZVN0YXRlKG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKSk7XG4gIGNvbnN0IFtlbmREYXRlLCBzZXRFbmREYXRlXSA9IHVzZVN0YXRlKG5ldyBEYXRlKERhdGUubm93KCkgKyAxMDAwKjYwKjYwKjI0KjYwKS50b0lTT1N0cmluZygpLnNsaWNlKDAsMTApKTtcbiAgY29uc3QgW21pbk4sIHNldE1pbk5dID0gdXNlU3RhdGUoNSk7XG4gIGNvbnN0IFttYXhOLCBzZXRNYXhOXSA9IHVzZVN0YXRlKDkpO1xuICBjb25zdCBbYnVkZ2V0LCBzZXRCdWRnZXRdID0gdXNlU3RhdGU8bnVtYmVyIHwgJyc+KCcnKTtcbiAgY29uc3QgW25vblN0b3AsIHNldE5vblN0b3BdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZXN1bHRzLCBzZXRSZXN1bHRzXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gIGNvbnN0IFt1c2VEZWFscywgc2V0VXNlRGVhbHNdID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFt1c2VTa3ksIHNldFVzZVNreV0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgW3VzZUcsIHNldFVzZUddID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFt1c2VBQywgc2V0VXNlQUNdID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFt1c2VBVCwgc2V0VXNlQVRdID0gdXNlU3RhdGUodHJ1ZSk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gb25TdWJtaXQoZTogUmVhY3QuRm9ybUV2ZW50KSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgc2V0UmVzdWx0cyhbXSk7XG5cbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgb3JpZ2luOiBvcmlnaW4udHJpbSgpLnRvVXBwZXJDYXNlKCksXG4gICAgICBkZXN0aW5hdGlvbnM6IGRlc3Quc3BsaXQoJywnKS5tYXAocyA9PiBzLnRyaW0oKS50b1VwcGVyQ2FzZSgpKS5maWx0ZXIoQm9vbGVhbiksXG4gICAgICBzdGFydERhdGUsIGVuZERhdGUsXG4gICAgICB0cmlwTGVuZ3RoTWluOiBOdW1iZXIobWluTiksIHRyaXBMZW5ndGhNYXg6IE51bWJlcihtYXhOKSxcbiAgICAgIGJ1ZGdldDogYnVkZ2V0ID09PSAnJyA/IG51bGwgOiBOdW1iZXIoYnVkZ2V0KSxcbiAgICAgIGN1cnJlbmN5OiBcIkNBRFwiLFxuICAgICAgbm9uU3RvcE9ubHk6IG5vblN0b3AsXG4gICAgICBzb3VyY2VzOiBbXG4gICAgICAgIHVzZURlYWxzID8gXCJEZWFsc1wiIDogXCJcIixcbiAgICAgICAgdXNlU2t5ID8gXCJTa3lzY2FubmVyXCIgOiBcIlwiLFxuICAgICAgICB1c2VHID8gXCJHb29nbGVGbGlnaHRzXCIgOiBcIlwiLFxuICAgICAgICB1c2VBQyA/IFwiQWlyQ2FuYWRhXCIgOiBcIlwiLFxuICAgICAgICB1c2VBVCA/IFwiQWlyVHJhbnNhdFwiIDogXCJcIlxuICAgICAgXS5maWx0ZXIoQm9vbGVhbilcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goXCIvYXBpL3NlYXJjaFwiLCB7IG1ldGhvZDogXCJQT1NUXCIsIGhlYWRlcnM6IHsgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSwgYm9keTogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkgfSk7XG4gICAgY29uc3QgZGF0YTogUmVzdWx0ID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICBcbiAgICAvLyBTb3J0IGJ5IGRlc3RpbmF0aW9uLCB0aGVuIGJ5IHNvdXJjZS9wcm92aWRlclxuICAgIGNvbnN0IHNvcnRlZCA9IChkYXRhLnJlc3VsdHMgfHwgW10pLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAvLyBGaXJzdCBzb3J0IGJ5IGRlc3RpbmF0aW9uXG4gICAgICBjb25zdCBkZXN0Q29tcGFyZSA9IChhLmRlc3RpbmF0aW9uIHx8ICcnKS5sb2NhbGVDb21wYXJlKGIuZGVzdGluYXRpb24gfHwgJycpO1xuICAgICAgaWYgKGRlc3RDb21wYXJlICE9PSAwKSByZXR1cm4gZGVzdENvbXBhcmU7XG4gICAgICBcbiAgICAgIC8vIFRoZW4gYnkgc291cmNlL3Byb3ZpZGVyXG4gICAgICByZXR1cm4gKGEuc291cmNlIHx8ICcnKS5sb2NhbGVDb21wYXJlKGIuc291cmNlIHx8ICcnKTtcbiAgICB9KTtcbiAgICBcbiAgICBzZXRSZXN1bHRzKHNvcnRlZCk7XG4gICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxtYWluIGNsYXNzTmFtZT1cInNwYWNlLXktNlwiPlxuICAgICAgPFNlY3Rpb24gdGl0bGU9XCJZb3VyIHRyaXAgaWRlYVwiPlxuICAgICAgICA8Zm9ybSBjbGFzc05hbWU9XCJncmlkIG1kOmdyaWQtY29scy00IGdhcC00XCIgb25TdWJtaXQ9e29uU3VibWl0fT5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImxhYmVsXCI+RnJvbSAoSUFUQSk8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzTmFtZT1cImlucHV0XCIgdmFsdWU9e29yaWdpbn0gb25DaGFuZ2U9e2U9PnNldE9yaWdpbihlLnRhcmdldC52YWx1ZS50b1VwcGVyQ2FzZSgpKX0gbWF4TGVuZ3RoPXs0fSBwbGFjZWhvbGRlcj1cIllPV1wiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZDpjb2wtc3Bhbi0zXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwibGFiZWxcIj5UbyAoSUFUQSwgY29tbWEtc2VwYXJhdGVkKTwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPVwiaW5wdXRcIiB2YWx1ZT17ZGVzdH0gb25DaGFuZ2U9e2U9PnNldERlc3QoZS50YXJnZXQudmFsdWUpfSBwbGFjZWhvbGRlcj1cIkNVTixQVUosTUJKXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImxhYmVsXCI+U3RhcnQgZGF0ZTwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzc05hbWU9XCJpbnB1dFwiIHZhbHVlPXtzdGFydERhdGV9IG9uQ2hhbmdlPXtlPT5zZXRTdGFydERhdGUoZS50YXJnZXQudmFsdWUpfSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwibGFiZWxcIj5FbmQgZGF0ZTwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzc05hbWU9XCJpbnB1dFwiIHZhbHVlPXtlbmREYXRlfSBvbkNoYW5nZT17ZT0+c2V0RW5kRGF0ZShlLnRhcmdldC52YWx1ZSl9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJsYWJlbFwiPlRyaXAgbGVuZ3RoIChtaW4pPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3NOYW1lPVwiaW5wdXRcIiB2YWx1ZT17bWluTn0gb25DaGFuZ2U9e2U9PnNldE1pbk4oTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSl9IG1pbj17MX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImxhYmVsXCI+VHJpcCBsZW5ndGggKG1heCk8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzc05hbWU9XCJpbnB1dFwiIHZhbHVlPXttYXhOfSBvbkNoYW5nZT17ZT0+c2V0TWF4TihOdW1iZXIoZS50YXJnZXQudmFsdWUpKX0gbWluPXttaW5OfSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwibGFiZWxcIj5CdWRnZXQgKENBRCk8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzc05hbWU9XCJpbnB1dFwiIHZhbHVlPXtidWRnZXR9IG9uQ2hhbmdlPXtlPT5zZXRCdWRnZXQoZS50YXJnZXQudmFsdWUgPT09ICcnID8gJycgOiBOdW1iZXIoZS50YXJnZXQudmFsdWUpKX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtZW5kIGdhcC0zXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjaGVja2VkPXtub25TdG9wfSBvbkNoYW5nZT17ZT0+c2V0Tm9uU3RvcChlLnRhcmdldC5jaGVja2VkKX0gLz5cbiAgICAgICAgICAgICAgTm9uLXN0b3Agb25seVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1kOmNvbC1zcGFuLTRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJsYWJlbFwiPlNvdXJjZXM8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtd3JhcCBnYXAtM1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNoZWNrZWQ9e3VzZURlYWxzfSBvbkNoYW5nZT17ZT0+c2V0VXNlRGVhbHMoZS50YXJnZXQuY2hlY2tlZCl9IC8+IERlYWwgc2l0ZXMgKFlPVy9ZWVovWVVML2V0Yy4pPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjaGVja2VkPXt1c2VTa3l9IG9uQ2hhbmdlPXtlPT5zZXRVc2VTa3koZS50YXJnZXQuY2hlY2tlZCl9IC8+IFNreXNjYW5uZXIgbGlua3M8L2xhYmVsPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNoZWNrZWQ9e3VzZUd9IG9uQ2hhbmdlPXtlPT5zZXRVc2VHKGUudGFyZ2V0LmNoZWNrZWQpfSAvPiBHb29nbGUgRmxpZ2h0cyBsaW5rczwvbGFiZWw+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2hlY2tlZD17dXNlQUN9IG9uQ2hhbmdlPXtlPT5zZXRVc2VBQyhlLnRhcmdldC5jaGVja2VkKX0gLz4gQWlyIENhbmFkYSBsaW5rczwvbGFiZWw+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2hlY2tlZD17dXNlQVR9IG9uQ2hhbmdlPXtlPT5zZXRVc2VBVChlLnRhcmdldC5jaGVja2VkKX0gLz4gQWlyIFRyYW5zYXQgbGlua3M8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZDpjb2wtc3Bhbi00IGZsZXggZ2FwLTNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwiYnRuXCIgdHlwZT1cInN1Ym1pdFwiIGRpc2FibGVkPXtsb2FkaW5nfT57bG9hZGluZyA/IFwiU2VhcmNoaW5nLi4uXCIgOiBcIlNlYXJjaCBkZWFscyAmIGRhdGVzXCJ9PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImJ0blwiIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKT0+e1xuICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImxhc3RTZWFyY2hcIiwgSlNPTi5zdHJpbmdpZnkoe29yaWdpbixkZXN0LHN0YXJ0RGF0ZSxlbmREYXRlLG1pbk4sbWF4TixidWRnZXQsbm9uU3RvcCx1c2VEZWFscyx1c2VTa3ksdXNlRyx1c2VBQyx1c2VBVH0pKTtcbiAgICAgICAgICAgICAgYWxlcnQoXCJTYXZlZCB0byB0aGlzIGJyb3dzZXIuXCIpO1xuICAgICAgICAgICAgfX0+U2F2ZSBzZWFyY2g8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwiYnRuXCIgdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9eygpPT57XG4gICAgICAgICAgICAgIGNvbnN0IHJhdyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFzdFNlYXJjaFwiKTtcbiAgICAgICAgICAgICAgaWYgKHJhdykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBKU09OLnBhcnNlKHJhdyk7XG4gICAgICAgICAgICAgICAgc2V0T3JpZ2luKHMub3JpZ2luKTsgc2V0RGVzdChzLmRlc3QpO1xuICAgICAgICAgICAgICAgIHNldFN0YXJ0RGF0ZShzLnN0YXJ0RGF0ZSk7IHNldEVuZERhdGUocy5lbmREYXRlKTtcbiAgICAgICAgICAgICAgICBzZXRNaW5OKHMubWluTik7IHNldE1heE4ocy5tYXhOKTtcbiAgICAgICAgICAgICAgICBzZXRCdWRnZXQocy5idWRnZXQpOyBzZXROb25TdG9wKHMubm9uU3RvcCk7XG4gICAgICAgICAgICAgICAgc2V0VXNlRGVhbHMocy51c2VEZWFscyk7IHNldFVzZVNreShzLnVzZVNreSk7IHNldFVzZUcocy51c2VHKTsgc2V0VXNlQUMocy51c2VBQyk7IHNldFVzZUFUKHMudXNlQVQgfHwgdHJ1ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBhbGVydChcIk5vIHNhdmVkIHNlYXJjaCBmb3VuZC5cIik7XG4gICAgICAgICAgICB9fT5Mb2FkIGxhc3Q8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb3JtPlxuICAgICAgPC9TZWN0aW9uPlxuXG4gICAgICA8U2VjdGlvbiB0aXRsZT1cIlJlc3VsdHNcIj5cbiAgICAgICAgeyFsb2FkaW5nICYmIHJlc3VsdHMubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm9wYWNpdHktNzBcIj5ObyByZXN1bHRzIHlldC4gRmlsbCB0aGUgZm9ybSBhbmQgaGl0IHNlYXJjaC48L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAge3Jlc3VsdHMubGVuZ3RoID4gMCAmJiAoKCkgPT4ge1xuICAgICAgICAgIC8vIEdyb3VwIGJ5IGRlc3RpbmF0aW9uXG4gICAgICAgICAgY29uc3QgZ3JvdXBlZDogUmVjb3JkPHN0cmluZywgYW55W10+ID0ge307XG4gICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKChyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlc3QgPSByLmRlc3RpbmF0aW9uIHx8ICdVbmtub3duJztcbiAgICAgICAgICAgIGlmICghZ3JvdXBlZFtkZXN0XSkgZ3JvdXBlZFtkZXN0XSA9IFtdO1xuICAgICAgICAgICAgZ3JvdXBlZFtkZXN0XS5wdXNoKHIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIFxuICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhncm91cGVkKS5zb3J0KCkubWFwKGRlc3RpbmF0aW9uID0+IChcbiAgICAgICAgICAgIDxkaXYga2V5PXtkZXN0aW5hdGlvbn0gY2xhc3NOYW1lPVwibWItOFwiPlxuICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC14bCBmb250LWJvbGQgbWItNCBib3JkZXItYiBib3JkZXItc2xhdGUtMzAwIGRhcms6Ym9yZGVyLXNsYXRlLTcwMCBwYi0yXCI+XG4gICAgICAgICAgICAgICAge2Rlc3RpbmF0aW9ufVxuICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBHcm91cCBieSBzb3VyY2UvcHJvdmlkZXIgd2l0aGluIHRoaXMgZGVzdGluYXRpb25cbiAgICAgICAgICAgICAgICBjb25zdCBieVNvdXJjZTogUmVjb3JkPHN0cmluZywgYW55W10+ID0ge307XG4gICAgICAgICAgICAgICAgZ3JvdXBlZFtkZXN0aW5hdGlvbl0uZm9yRWFjaCgocjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzcmMgPSByLnNvdXJjZSB8fCAnT3RoZXInO1xuICAgICAgICAgICAgICAgICAgaWYgKCFieVNvdXJjZVtzcmNdKSBieVNvdXJjZVtzcmNdID0gW107XG4gICAgICAgICAgICAgICAgICBieVNvdXJjZVtzcmNdLnB1c2gocik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGJ5U291cmNlKS5zb3J0KCkubWFwKHNvdXJjZSA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17c291cmNlfSBjbGFzc05hbWU9XCJtYi02XCI+XG4gICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgbWItMyB0ZXh0LXNsYXRlLTYwMCBkYXJrOnRleHQtc2xhdGUtNDAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3NvdXJjZX1cbiAgICAgICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIG1kOmdyaWQtY29scy0yIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAge2J5U291cmNlW3NvdXJjZV0ubWFwKChyOiBhbnkpID0+IDxEZWFsQ2FyZCBrZXk9e3IuaWR9IGRlYWw9e3J9IC8+KX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkpO1xuICAgICAgICB9KSgpfVxuICAgICAgPC9TZWN0aW9uPlxuICAgIDwvbWFpbj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsIlNlY3Rpb24iLCJEZWFsQ2FyZCIsIlBhZ2UiLCJvcmlnaW4iLCJzZXRPcmlnaW4iLCJkZXN0Iiwic2V0RGVzdCIsInN0YXJ0RGF0ZSIsInNldFN0YXJ0RGF0ZSIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsInNsaWNlIiwiZW5kRGF0ZSIsInNldEVuZERhdGUiLCJub3ciLCJtaW5OIiwic2V0TWluTiIsIm1heE4iLCJzZXRNYXhOIiwiYnVkZ2V0Iiwic2V0QnVkZ2V0Iiwibm9uU3RvcCIsInNldE5vblN0b3AiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsInJlc3VsdHMiLCJzZXRSZXN1bHRzIiwidXNlRGVhbHMiLCJzZXRVc2VEZWFscyIsInVzZVNreSIsInNldFVzZVNreSIsInVzZUciLCJzZXRVc2VHIiwidXNlQUMiLCJzZXRVc2VBQyIsInVzZUFUIiwic2V0VXNlQVQiLCJvblN1Ym1pdCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInBheWxvYWQiLCJ0cmltIiwidG9VcHBlckNhc2UiLCJkZXN0aW5hdGlvbnMiLCJzcGxpdCIsIm1hcCIsInMiLCJmaWx0ZXIiLCJCb29sZWFuIiwidHJpcExlbmd0aE1pbiIsIk51bWJlciIsInRyaXBMZW5ndGhNYXgiLCJjdXJyZW5jeSIsIm5vblN0b3BPbmx5Iiwic291cmNlcyIsInJlcyIsImZldGNoIiwibWV0aG9kIiwiaGVhZGVycyIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5IiwiZGF0YSIsImpzb24iLCJzb3J0ZWQiLCJzb3J0IiwiYSIsImIiLCJkZXN0Q29tcGFyZSIsImRlc3RpbmF0aW9uIiwibG9jYWxlQ29tcGFyZSIsInNvdXJjZSIsIm1haW4iLCJjbGFzc05hbWUiLCJ0aXRsZSIsImZvcm0iLCJkaXYiLCJsYWJlbCIsImlucHV0IiwidmFsdWUiLCJvbkNoYW5nZSIsInRhcmdldCIsIm1heExlbmd0aCIsInBsYWNlaG9sZGVyIiwidHlwZSIsIm1pbiIsImNoZWNrZWQiLCJidXR0b24iLCJkaXNhYmxlZCIsIm9uQ2xpY2siLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwiYWxlcnQiLCJyYXciLCJnZXRJdGVtIiwicGFyc2UiLCJsZW5ndGgiLCJncm91cGVkIiwiZm9yRWFjaCIsInIiLCJwdXNoIiwiT2JqZWN0Iiwia2V5cyIsImgzIiwiYnlTb3VyY2UiLCJzcmMiLCJoNCIsImRlYWwiLCJpZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./app/page.tsx\n"); + +/***/ }), + +/***/ "(ssr)/./components/DealCard.tsx": +/*!*********************************!*\ + !*** ./components/DealCard.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 */ DealCard)\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 _barrel_optimize_names_Calendar_DollarSign_ExternalLink_Link_Plane_lucide_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! __barrel_optimize__?names=Calendar,DollarSign,ExternalLink,Link,Plane!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/plane.js\");\n/* harmony import */ var _barrel_optimize_names_Calendar_DollarSign_ExternalLink_Link_Plane_lucide_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! __barrel_optimize__?names=Calendar,DollarSign,ExternalLink,Link,Plane!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/calendar.js\");\n/* harmony import */ var _barrel_optimize_names_Calendar_DollarSign_ExternalLink_Link_Plane_lucide_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=Calendar,DollarSign,ExternalLink,Link,Plane!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/dollar-sign.js\");\n/* harmony import */ var _barrel_optimize_names_Calendar_DollarSign_ExternalLink_Link_Plane_lucide_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=Calendar,DollarSign,ExternalLink,Link,Plane!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/external-link.js\");\n/* harmony import */ var _barrel_optimize_names_Calendar_DollarSign_ExternalLink_Link_Plane_lucide_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! __barrel_optimize__?names=Calendar,DollarSign,ExternalLink,Link,Plane!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/link.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\nfunction DealCard({ deal }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card p-4 flex flex-col gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between gap-3\",\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)(\"h3\", {\n className: \"text-base md:text-lg font-semibold\",\n children: deal.title\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 10,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 flex flex-wrap gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"badge\",\n children: deal.source\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 12,\n columnNumber: 13\n }, this),\n deal.destination && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"badge\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Calendar_DollarSign_ExternalLink_Link_Plane_lucide_react__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n className: \"w-3 h-3 mr-1\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 13,\n columnNumber: 58\n }, this),\n \" \",\n deal.origin,\n \" → \",\n deal.destination\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 13,\n columnNumber: 34\n }, this),\n deal.nights != null && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"badge\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Calendar_DollarSign_ExternalLink_Link_Plane_lucide_react__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"w-3 h-3 mr-1\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 14,\n columnNumber: 61\n }, this),\n \" \",\n deal.nights,\n \" nights\"\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 14,\n columnNumber: 37\n }, this),\n deal.price != null && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"badge\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Calendar_DollarSign_ExternalLink_Link_Plane_lucide_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"w-3 h-3 mr-1\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 15,\n columnNumber: 60\n }, this),\n deal.price,\n \" \",\n deal.currency || \"\"\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 15,\n columnNumber: 36\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 11,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 9,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n className: \"btn\",\n href: deal.link,\n target: \"_blank\",\n rel: \"noreferrer\",\n children: [\n \"Open \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Calendar_DollarSign_ExternalLink_Link_Plane_lucide_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"w-4 h-4 ml-2\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 19,\n columnNumber: 16\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 18,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 8,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm opacity-80 flex gap-4\",\n children: [\n deal.startDate && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"Depart: \",\n deal.startDate\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 23,\n columnNumber: 28\n }, this),\n deal.endDate && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"Return: \",\n deal.endDate\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 24,\n columnNumber: 26\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"ml-auto flex items-center gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Calendar_DollarSign_ExternalLink_Link_Plane_lucide_react__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: \"w-3 h-3\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 25,\n columnNumber: 59\n }, this),\n \" \",\n new URL(deal.link, \"http://x\").host\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 25,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 22,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\DealCard.tsx\",\n lineNumber: 7,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb21wb25lbnRzL0RlYWxDYXJkLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDMkY7QUFHNUUsU0FBU00sU0FBUyxFQUFFQyxJQUFJLEVBQWtCO0lBQ3ZELHFCQUNFLDhEQUFDQztRQUFJQyxXQUFVOzswQkFDYiw4REFBQ0Q7Z0JBQUlDLFdBQVU7O2tDQUNiLDhEQUFDRDs7MENBQ0MsOERBQUNFO2dDQUFHRCxXQUFVOzBDQUFzQ0YsS0FBS0ksS0FBSzs7Ozs7OzBDQUM5RCw4REFBQ0g7Z0NBQUlDLFdBQVU7O2tEQUNiLDhEQUFDRzt3Q0FBS0gsV0FBVTtrREFBU0YsS0FBS00sTUFBTTs7Ozs7O29DQUNuQ04sS0FBS08sV0FBVyxrQkFBSSw4REFBQ0Y7d0NBQUtILFdBQVU7OzBEQUFRLDhEQUFDUix1SEFBS0E7Z0RBQUNRLFdBQVU7Ozs7Ozs0Q0FBaUI7NENBQUVGLEtBQUtRLE1BQU07NENBQUM7NENBQUlSLEtBQUtPLFdBQVc7Ozs7Ozs7b0NBQ2hIUCxLQUFLUyxNQUFNLElBQUksc0JBQVEsOERBQUNKO3dDQUFLSCxXQUFVOzswREFBUSw4REFBQ1AsdUhBQVFBO2dEQUFDTyxXQUFVOzs7Ozs7NENBQWlCOzRDQUFFRixLQUFLUyxNQUFNOzRDQUFDOzs7Ozs7O29DQUNsR1QsS0FBS1UsS0FBSyxJQUFJLHNCQUFRLDhEQUFDTDt3Q0FBS0gsV0FBVTs7MERBQVEsOERBQUNOLHVIQUFVQTtnREFBQ00sV0FBVTs7Ozs7OzRDQUFrQkYsS0FBS1UsS0FBSzs0Q0FBQzs0Q0FBRVYsS0FBS1csUUFBUSxJQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDQUd6SCw4REFBQ0M7d0JBQUVWLFdBQVU7d0JBQU1XLE1BQU1iLEtBQUtjLElBQUk7d0JBQUVDLFFBQU87d0JBQVNDLEtBQUk7OzRCQUFhOzBDQUM5RCw4REFBQ3ZCLHVIQUFZQTtnQ0FBQ1MsV0FBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQUdqQyw4REFBQ0Q7Z0JBQUlDLFdBQVU7O29CQUNaRixLQUFLaUIsU0FBUyxrQkFBSSw4REFBQ1o7OzRCQUFLOzRCQUFTTCxLQUFLaUIsU0FBUzs7Ozs7OztvQkFDL0NqQixLQUFLa0IsT0FBTyxrQkFBSSw4REFBQ2I7OzRCQUFLOzRCQUFTTCxLQUFLa0IsT0FBTzs7Ozs7OztrQ0FDNUMsOERBQUNiO3dCQUFLSCxXQUFVOzswQ0FBa0MsOERBQUNKLHVIQUFRQTtnQ0FBQ0ksV0FBVTs7Ozs7OzRCQUFZOzRCQUFFLElBQUlpQixJQUFJbkIsS0FBS2MsSUFBSSxFQUFFLFlBQVlNLElBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJL0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vY29tcG9uZW50cy9EZWFsQ2FyZC50c3g/Nzg0YyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5pbXBvcnQgeyBFeHRlcm5hbExpbmssIFBsYW5lLCBDYWxlbmRhciwgRG9sbGFyU2lnbiwgTGluayBhcyBMaW5rSWNvbiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgRGVhbCB9IGZyb20gXCJAL2xpYi90eXBlc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEZWFsQ2FyZCh7IGRlYWwgfTogeyBkZWFsOiBEZWFsIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmQgcC00IGZsZXggZmxleC1jb2wgZ2FwLTNcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW4gZ2FwLTNcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1iYXNlIG1kOnRleHQtbGcgZm9udC1zZW1pYm9sZFwiPntkZWFsLnRpdGxlfTwvaDM+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0xIGZsZXggZmxleC13cmFwIGdhcC0yXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiYWRnZVwiPntkZWFsLnNvdXJjZX08L3NwYW4+XG4gICAgICAgICAgICB7ZGVhbC5kZXN0aW5hdGlvbiAmJiA8c3BhbiBjbGFzc05hbWU9XCJiYWRnZVwiPjxQbGFuZSBjbGFzc05hbWU9XCJ3LTMgaC0zIG1yLTFcIiAvPiB7ZGVhbC5vcmlnaW59IOKGkiB7ZGVhbC5kZXN0aW5hdGlvbn08L3NwYW4+fVxuICAgICAgICAgICAge2RlYWwubmlnaHRzICE9IG51bGwgJiYgPHNwYW4gY2xhc3NOYW1lPVwiYmFkZ2VcIj48Q2FsZW5kYXIgY2xhc3NOYW1lPVwidy0zIGgtMyBtci0xXCIgLz4ge2RlYWwubmlnaHRzfSBuaWdodHM8L3NwYW4+fVxuICAgICAgICAgICAge2RlYWwucHJpY2UgIT0gbnVsbCAmJiA8c3BhbiBjbGFzc05hbWU9XCJiYWRnZVwiPjxEb2xsYXJTaWduIGNsYXNzTmFtZT1cInctMyBoLTMgbXItMVwiIC8+e2RlYWwucHJpY2V9IHtkZWFsLmN1cnJlbmN5IHx8IFwiXCJ9PC9zcGFuPn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxhIGNsYXNzTmFtZT1cImJ0blwiIGhyZWY9e2RlYWwubGlua30gdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9yZWZlcnJlclwiPlxuICAgICAgICAgIE9wZW4gPEV4dGVybmFsTGluayBjbGFzc05hbWU9XCJ3LTQgaC00IG1sLTJcIiAvPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSBvcGFjaXR5LTgwIGZsZXggZ2FwLTRcIj5cbiAgICAgICAge2RlYWwuc3RhcnREYXRlICYmIDxzcGFuPkRlcGFydDoge2RlYWwuc3RhcnREYXRlfTwvc3Bhbj59XG4gICAgICAgIHtkZWFsLmVuZERhdGUgJiYgPHNwYW4+UmV0dXJuOiB7ZGVhbC5lbmREYXRlfTwvc3Bhbj59XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1sLWF1dG8gZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFcIj48TGlua0ljb24gY2xhc3NOYW1lPVwidy0zIGgtM1wiIC8+IHtuZXcgVVJMKGRlYWwubGluaywgXCJodHRwOi8veFwiKS5ob3N0fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sIm5hbWVzIjpbIkV4dGVybmFsTGluayIsIlBsYW5lIiwiQ2FsZW5kYXIiLCJEb2xsYXJTaWduIiwiTGluayIsIkxpbmtJY29uIiwiRGVhbENhcmQiLCJkZWFsIiwiZGl2IiwiY2xhc3NOYW1lIiwiaDMiLCJ0aXRsZSIsInNwYW4iLCJzb3VyY2UiLCJkZXN0aW5hdGlvbiIsIm9yaWdpbiIsIm5pZ2h0cyIsInByaWNlIiwiY3VycmVuY3kiLCJhIiwiaHJlZiIsImxpbmsiLCJ0YXJnZXQiLCJyZWwiLCJzdGFydERhdGUiLCJlbmREYXRlIiwiVVJMIiwiaG9zdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./components/DealCard.tsx\n"); + +/***/ }), + +/***/ "(ssr)/./components/Section.tsx": +/*!********************************!*\ + !*** ./components/Section.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 */ Section)\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\nfunction Section({ title, children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-lg font-semibold\",\n children: title\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\Section.tsx\",\n lineNumber: 4,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"card p-4\",\n children: children\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\Section.tsx\",\n lineNumber: 5,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\components\\\\Section.tsx\",\n lineNumber: 3,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb21wb25lbnRzL1NlY3Rpb24udHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBZSxTQUFTQSxRQUFRLEVBQUVDLEtBQUssRUFBRUMsUUFBUSxFQUFnRDtJQUMvRixxQkFDRSw4REFBQ0M7UUFBUUMsV0FBVTs7MEJBQ2pCLDhEQUFDQztnQkFBR0QsV0FBVTswQkFBeUJIOzs7Ozs7MEJBQ3ZDLDhEQUFDSztnQkFBSUYsV0FBVTswQkFBWUY7Ozs7Ozs7Ozs7OztBQUdqQyIsInNvdXJjZXMiOlsid2VicGFjazovL2hvbGlkYXktZGVhbC1maW5kZXIvLi9jb21wb25lbnRzL1NlY3Rpb24udHN4P2ZhYWIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2VjdGlvbih7IHRpdGxlLCBjaGlsZHJlbiB9OiB7IHRpdGxlOiBzdHJpbmcsIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfSkge1xuICByZXR1cm4gKFxuICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInNwYWNlLXktM1wiPlxuICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZFwiPnt0aXRsZX08L2gyPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkIHAtNFwiPntjaGlsZHJlbn08L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJTZWN0aW9uIiwidGl0bGUiLCJjaGlsZHJlbiIsInNlY3Rpb24iLCJjbGFzc05hbWUiLCJoMiIsImRpdiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./components/Section.tsx\n"); + +/***/ }), + +/***/ "(rsc)/./styles/globals.css": +/*!****************************!*\ + !*** ./styles/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__ = (\"a9197088c934\");\nif (false) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9zdHlsZXMvZ2xvYmFscy5jc3MiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlFQUFlLGNBQWM7QUFDN0IsSUFBSSxLQUFVLEVBQUUsRUFBdUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vc3R5bGVzL2dsb2JhbHMuY3NzPzllNWQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCJhOTE5NzA4OGM5MzRcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./styles/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 _styles_globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../styles/globals.css */ \"(rsc)/./styles/globals.css\");\n\n\nconst metadata = {\n title: \"Holiday Deal Finder\",\n description: \"Search multiple sites at once for the best dates and fares\"\n};\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"en\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"container max-w-6xl py-6 md:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6 md:mb-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl md:text-3xl font-extrabold tracking-tight\",\n children: \"Holiday Deal Finder\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\layout.tsx\",\n lineNumber: 15,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"opacity-80\",\n children: \"Point it at a few destinations and a date range; it builds smart links and pulls curated deal posts.\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\layout.tsx\",\n lineNumber: 16,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\layout.tsx\",\n lineNumber: 14,\n columnNumber: 11\n }, this),\n children,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"footer\", {\n className: \"mt-10 text-sm opacity-70\",\n children: \"Built for your Holiday Travel App workflow. No scraping of paywalled content; links open official search UIs.\"\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\layout.tsx\",\n lineNumber: 19,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\layout.tsx\",\n lineNumber: 13,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\layout.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\Projects\\\\Dev\\\\Holiday Travel App\\\\app\\\\layout.tsx\",\n lineNumber: 11,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvbGF5b3V0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBK0I7QUFHeEIsTUFBTUEsV0FBcUI7SUFDaENDLE9BQU87SUFDUEMsYUFBYTtBQUNmLEVBQUU7QUFFYSxTQUFTQyxXQUFXLEVBQUVDLFFBQVEsRUFBaUM7SUFDNUUscUJBQ0UsOERBQUNDO1FBQUtDLE1BQUs7a0JBQ1QsNEVBQUNDO3NCQUNDLDRFQUFDQztnQkFBSUMsV0FBVTs7a0NBQ2IsOERBQUNDO3dCQUFPRCxXQUFVOzswQ0FDaEIsOERBQUNFO2dDQUFHRixXQUFVOzBDQUFxRDs7Ozs7OzBDQUNuRSw4REFBQ0c7Z0NBQUVILFdBQVU7MENBQWE7Ozs7Ozs7Ozs7OztvQkFFM0JMO2tDQUNELDhEQUFDUzt3QkFBT0osV0FBVTtrQ0FBMkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPdkQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vYXBwL2xheW91dC50c3g/OTk4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCIuLi9zdHlsZXMvZ2xvYmFscy5jc3NcIjtcbmltcG9ydCB0eXBlIHsgTWV0YWRhdGEgfSBmcm9tIFwibmV4dFwiO1xuXG5leHBvcnQgY29uc3QgbWV0YWRhdGE6IE1ldGFkYXRhID0ge1xuICB0aXRsZTogXCJIb2xpZGF5IERlYWwgRmluZGVyXCIsXG4gIGRlc2NyaXB0aW9uOiBcIlNlYXJjaCBtdWx0aXBsZSBzaXRlcyBhdCBvbmNlIGZvciB0aGUgYmVzdCBkYXRlcyBhbmQgZmFyZXNcIixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJvb3RMYXlvdXQoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfSkge1xuICByZXR1cm4gKFxuICAgIDxodG1sIGxhbmc9XCJlblwiPlxuICAgICAgPGJvZHk+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyIG1heC13LTZ4bCBweS02IG1kOnB5LTEwXCI+XG4gICAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJtYi02IG1kOm1iLTEwXCI+XG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwidGV4dC0yeGwgbWQ6dGV4dC0zeGwgZm9udC1leHRyYWJvbGQgdHJhY2tpbmctdGlnaHRcIj5Ib2xpZGF5IERlYWwgRmluZGVyPC9oMT5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm9wYWNpdHktODBcIj5Qb2ludCBpdCBhdCBhIGZldyBkZXN0aW5hdGlvbnMgYW5kIGEgZGF0ZSByYW5nZTsgaXQgYnVpbGRzIHNtYXJ0IGxpbmtzIGFuZCBwdWxscyBjdXJhdGVkIGRlYWwgcG9zdHMuPC9wPlxuICAgICAgICAgIDwvaGVhZGVyPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICA8Zm9vdGVyIGNsYXNzTmFtZT1cIm10LTEwIHRleHQtc20gb3BhY2l0eS03MFwiPlxuICAgICAgICAgICAgQnVpbHQgZm9yIHlvdXIgSG9saWRheSBUcmF2ZWwgQXBwIHdvcmtmbG93LiBObyBzY3JhcGluZyBvZiBwYXl3YWxsZWQgY29udGVudDsgbGlua3Mgb3BlbiBvZmZpY2lhbCBzZWFyY2ggVUlzLlxuICAgICAgICAgIDwvZm9vdGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYm9keT5cbiAgICA8L2h0bWw+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJtZXRhZGF0YSIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJSb290TGF5b3V0IiwiY2hpbGRyZW4iLCJodG1sIiwibGFuZyIsImJvZHkiLCJkaXYiLCJjbGFzc05hbWUiLCJoZWFkZXIiLCJoMSIsInAiLCJmb290ZXIiXSwic291cmNlUm9vdCI6IiJ9\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"; +__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`D:\Projects\Dev\Holiday Travel App\app\page.tsx`) + +// Accessing the __esModule property and exporting $$typeof are required here. +// The __esModule getter forces the proxy target to create the default export +// and the $$typeof value is for rendering logic to determine if the module +// is a client boundary. +const { __esModule, $$typeof } = proxy; +const __default__ = proxy.default; + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`D:\Projects\Dev\Holiday Travel App\app\page.tsx#default`)); + + +/***/ }) + +}; +; + +// 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/lucide-react","vendor-chunks/@swc"], () => (__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=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=D%3A%5CProjects%5CDev%5CHoliday%20Travel%20App&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"))); +module.exports = __webpack_exports__; + +})(); \ No newline at end of file diff --git a/.next/server/app/page_client-reference-manifest.js b/.next/server/app/page_client-reference-manifest.js new file mode 100644 index 0000000..182c701 --- /dev/null +++ b/.next/server/app/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./app/page.tsx":{"*":{"id":"(ssr)/./app/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"D:\\Projects\\Dev\\Holiday Travel App\\app\\page.tsx":{"id":"(app-pages-browser)/./app/page.tsx","name":"*","chunks":["app/page","static/chunks/app/page.js"],"async":false},"D:\\Projects\\Dev\\Holiday Travel App\\styles\\globals.css":{"id":"(app-pages-browser)/./styles/globals.css","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"D:\\Projects\\Dev\\Holiday Travel App\\node_modules\\next\\dist\\client\\components\\app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"D:\\Projects\\Dev\\Holiday Travel App\\node_modules\\next\\dist\\esm\\client\\components\\app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"D:\\Projects\\Dev\\Holiday Travel App\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"D:\\Projects\\Dev\\Holiday Travel App\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"D:\\Projects\\Dev\\Holiday Travel App\\node_modules\\next\\dist\\client\\components\\error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"D:\\Projects\\Dev\\Holiday Travel App\\node_modules\\next\\dist\\esm\\client\\components\\error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"D:\\Projects\\Dev\\Holiday Travel App\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"D:\\Projects\\Dev\\Holiday Travel App\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"D:\\Projects\\Dev\\Holiday Travel App\\node_modules\\next\\dist\\client\\components\\not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"D:\\Projects\\Dev\\Holiday Travel App\\node_modules\\next\\dist\\esm\\client\\components\\not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"D:\\Projects\\Dev\\Holiday Travel App\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"D:\\Projects\\Dev\\Holiday Travel App\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false}},"entryCSSFiles":{"D:\\Projects\\Dev\\Holiday Travel App\\":[],"D:\\Projects\\Dev\\Holiday Travel App\\app\\page":[],"D:\\Projects\\Dev\\Holiday Travel App\\app\\layout":["static/css/app/layout.css"]}} \ No newline at end of file diff --git a/.next/server/interception-route-rewrite-manifest.js b/.next/server/interception-route-rewrite-manifest.js new file mode 100644 index 0000000..82d3ab1 --- /dev/null +++ b/.next/server/interception-route-rewrite-manifest.js @@ -0,0 +1 @@ +self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST="[]" \ No newline at end of file diff --git a/.next/server/middleware-build-manifest.js b/.next/server/middleware-build-manifest.js new file mode 100644 index 0000000..c7ad621 --- /dev/null +++ b/.next/server/middleware-build-manifest.js @@ -0,0 +1 @@ +self.__BUILD_MANIFEST={"polyfillFiles":["static/chunks/polyfills.js"],"devFiles":[],"ampDevFiles":[],"lowPriorityFiles":["static/development/_buildManifest.js","static/development/_ssgManifest.js"],"rootMainFiles":["static/chunks/webpack.js","static/chunks/main-app.js"],"pages":{"/_app":[]},"ampFirstPages":[]} \ No newline at end of file diff --git a/.next/server/middleware-manifest.json b/.next/server/middleware-manifest.json new file mode 100644 index 0000000..33872a3 --- /dev/null +++ b/.next/server/middleware-manifest.json @@ -0,0 +1,6 @@ +{ + "version": 3, + "middleware": {}, + "functions": {}, + "sortedMiddleware": [] +} \ No newline at end of file diff --git a/.next/server/middleware-react-loadable-manifest.js b/.next/server/middleware-react-loadable-manifest.js new file mode 100644 index 0000000..ca34f09 --- /dev/null +++ b/.next/server/middleware-react-loadable-manifest.js @@ -0,0 +1 @@ +self.__REACT_LOADABLE_MANIFEST="{}" \ No newline at end of file diff --git a/.next/server/next-font-manifest.js b/.next/server/next-font-manifest.js new file mode 100644 index 0000000..5cc97eb --- /dev/null +++ b/.next/server/next-font-manifest.js @@ -0,0 +1 @@ +self.__NEXT_FONT_MANIFEST="{\"pages\":{},\"app\":{},\"appUsingSizeAdjust\":false,\"pagesUsingSizeAdjust\":false}" \ No newline at end of file diff --git a/.next/server/next-font-manifest.json b/.next/server/next-font-manifest.json new file mode 100644 index 0000000..25f78e7 --- /dev/null +++ b/.next/server/next-font-manifest.json @@ -0,0 +1 @@ +{"pages":{},"app":{},"appUsingSizeAdjust":false,"pagesUsingSizeAdjust":false} \ No newline at end of file diff --git a/.next/server/pages-manifest.json b/.next/server/pages-manifest.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/.next/server/pages-manifest.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/.next/server/server-reference-manifest.js b/.next/server/server-reference-manifest.js new file mode 100644 index 0000000..9016757 --- /dev/null +++ b/.next/server/server-reference-manifest.js @@ -0,0 +1 @@ +self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"7vgTjBaYq/1EpMhl6pNMojEbQH9+FXxTfq6RacpwotQ=\"\n}" \ No newline at end of file diff --git a/.next/server/server-reference-manifest.json b/.next/server/server-reference-manifest.json new file mode 100644 index 0000000..61c665f --- /dev/null +++ b/.next/server/server-reference-manifest.json @@ -0,0 +1,5 @@ +{ + "node": {}, + "edge": {}, + "encryptionKey": "7vgTjBaYq/1EpMhl6pNMojEbQH9+FXxTfq6RacpwotQ=" +} \ No newline at end of file diff --git a/.next/server/vendor-chunks/@swc.js b/.next/server/vendor-chunks/@swc.js new file mode 100644 index 0000000..376b0ff --- /dev/null +++ b/.next/server/vendor-chunks/@swc.js @@ -0,0 +1,75 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +exports.id = "vendor-chunks/@swc"; +exports.ids = ["vendor-chunks/@swc"]; +exports.modules = { + +/***/ "(ssr)/./node_modules/@swc/helpers/esm/_class_private_field_loose_base.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@swc/helpers/esm/_class_private_field_loose_base.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _class_private_field_loose_base),\n/* harmony export */ _class_private_field_loose_base: () => (/* binding */ _class_private_field_loose_base)\n/* harmony export */ });\nfunction _class_private_field_loose_base(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError(\"attempted to use private field on non-instance\");\n }\n\n return receiver;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9fY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9iYXNlLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNnRCIsInNvdXJjZXMiOlsid2VicGFjazovL2hvbGlkYXktZGVhbC1maW5kZXIvLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9fY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9iYXNlLmpzPzUwYjYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIF9jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2Jhc2UocmVjZWl2ZXIsIHByaXZhdGVLZXkpIHtcbiAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZWNlaXZlciwgcHJpdmF0ZUtleSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImF0dGVtcHRlZCB0byB1c2UgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2VcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY2VpdmVyO1xufVxuZXhwb3J0IHsgX2NsYXNzX3ByaXZhdGVfZmllbGRfbG9vc2VfYmFzZSBhcyBfIH07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@swc/helpers/esm/_class_private_field_loose_base.js\n"); + +/***/ }), + +/***/ "(ssr)/./node_modules/@swc/helpers/esm/_class_private_field_loose_key.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@swc/helpers/esm/_class_private_field_loose_key.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _class_private_field_loose_key),\n/* harmony export */ _class_private_field_loose_key: () => (/* binding */ _class_private_field_loose_key)\n/* harmony export */ });\nvar id = 0;\n\nfunction _class_private_field_loose_key(name) {\n return \"__private_\" + id++ + \"_\" + name;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9fY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXkuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7QUFFTztBQUNQO0FBQ0E7QUFDK0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9lc20vX2NsYXNzX3ByaXZhdGVfZmllbGRfbG9vc2Vfa2V5LmpzP2U3M2IiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlkID0gMDtcblxuZXhwb3J0IGZ1bmN0aW9uIF9jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2tleShuYW1lKSB7XG4gICAgcmV0dXJuIFwiX19wcml2YXRlX1wiICsgaWQrKyArIFwiX1wiICsgbmFtZTtcbn1cbmV4cG9ydCB7IF9jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2tleSBhcyBfIH07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@swc/helpers/esm/_class_private_field_loose_key.js\n"); + +/***/ }), + +/***/ "(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@swc/helpers/esm/_interop_require_default.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _interop_require_default),\n/* harmony export */ _interop_require_default: () => (/* binding */ _interop_require_default)\n/* harmony export */ });\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTztBQUNQLDJDQUEyQztBQUMzQztBQUN5QyIsInNvdXJjZXMiOlsid2VicGFjazovL2hvbGlkYXktZGVhbC1maW5kZXIvLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuanM/NTgzZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9O1xufVxuZXhwb3J0IHsgX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0IGFzIF8gfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@swc/helpers/esm/_interop_require_default.js\n"); + +/***/ }), + +/***/ "(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js": +/*!********************************************************************!*\ + !*** ./node_modules/@swc/helpers/esm/_interop_require_wildcard.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _interop_require_wildcard),\n/* harmony export */ _interop_require_wildcard: () => (/* binding */ _interop_require_wildcard)\n/* harmony export */ });\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) return obj;\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") return { default: obj };\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) return cache.get(obj);\n\n var newObj = { __proto__: null };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);\n else newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n\n if (cache) cache.set(obj, newObj);\n\n return newObj;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9faW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDTztBQUNQO0FBQ0EsdUZBQXVGOztBQUV2Rjs7QUFFQTs7QUFFQSxtQkFBbUI7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUMwQyIsInNvdXJjZXMiOlsid2VicGFjazovL2hvbGlkYXktZGVhbC1maW5kZXIvLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9faW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkLmpzPzc4M2YiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7XG4gICAgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsO1xuXG4gICAgdmFyIGNhY2hlQmFiZWxJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTtcbiAgICB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgICByZXR1cm4gKF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uKG5vZGVJbnRlcm9wKSB7XG4gICAgICAgIHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDtcbiAgICB9KShub2RlSW50ZXJvcCk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZChvYmosIG5vZGVJbnRlcm9wKSB7XG4gICAgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHJldHVybiBvYmo7XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHsgZGVmYXVsdDogb2JqIH07XG5cbiAgICB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApO1xuXG4gICAgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSByZXR1cm4gY2FjaGUuZ2V0KG9iaik7XG5cbiAgICB2YXIgbmV3T2JqID0geyBfX3Byb3RvX186IG51bGwgfTtcbiAgICB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTtcbiAgICAgICAgICAgIGVsc2UgbmV3T2JqW2tleV0gPSBvYmpba2V5XTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5ld09iai5kZWZhdWx0ID0gb2JqO1xuXG4gICAgaWYgKGNhY2hlKSBjYWNoZS5zZXQob2JqLCBuZXdPYmopO1xuXG4gICAgcmV0dXJuIG5ld09iajtcbn1cbmV4cG9ydCB7IF9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQgYXMgXyB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\n"); + +/***/ }), + +/***/ "(ssr)/./node_modules/@swc/helpers/esm/_tagged_template_literal_loose.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@swc/helpers/esm/_tagged_template_literal_loose.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _tagged_template_literal_loose),\n/* harmony export */ _tagged_template_literal_loose: () => (/* binding */ _tagged_template_literal_loose)\n/* harmony export */ });\nfunction _tagged_template_literal_loose(strings, raw) {\n if (!raw) raw = strings.slice(0);\n\n strings.raw = raw;\n\n return strings;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9fdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfbG9vc2UuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTztBQUNQOztBQUVBOztBQUVBO0FBQ0E7QUFDK0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9lc20vX3RhZ2dlZF90ZW1wbGF0ZV9saXRlcmFsX2xvb3NlLmpzPzA3YjUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIF90YWdnZWRfdGVtcGxhdGVfbGl0ZXJhbF9sb29zZShzdHJpbmdzLCByYXcpIHtcbiAgICBpZiAoIXJhdykgcmF3ID0gc3RyaW5ncy5zbGljZSgwKTtcblxuICAgIHN0cmluZ3MucmF3ID0gcmF3O1xuXG4gICAgcmV0dXJuIHN0cmluZ3M7XG59XG5leHBvcnQgeyBfdGFnZ2VkX3RlbXBsYXRlX2xpdGVyYWxfbG9vc2UgYXMgXyB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@swc/helpers/esm/_tagged_template_literal_loose.js\n"); + +/***/ }), + +/***/ "(rsc)/./node_modules/@swc/helpers/esm/_interop_require_default.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@swc/helpers/esm/_interop_require_default.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _interop_require_default),\n/* harmony export */ _interop_require_default: () => (/* binding */ _interop_require_default)\n/* harmony export */ });\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTztBQUNQLDJDQUEyQztBQUMzQztBQUN5QyIsInNvdXJjZXMiOlsid2VicGFjazovL2hvbGlkYXktZGVhbC1maW5kZXIvLi9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuanM/MDkzMyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9O1xufVxuZXhwb3J0IHsgX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0IGFzIF8gfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/@swc/helpers/esm/_interop_require_default.js\n"); + +/***/ }) + +}; +; \ No newline at end of file diff --git a/.next/server/vendor-chunks/boolbase.js b/.next/server/vendor-chunks/boolbase.js new file mode 100644 index 0000000..28ca136 --- /dev/null +++ b/.next/server/vendor-chunks/boolbase.js @@ -0,0 +1,24 @@ +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +exports.id = "vendor-chunks/boolbase"; +exports.ids = ["vendor-chunks/boolbase"]; +exports.modules = { + +/***/ "(rsc)/./node_modules/boolbase/index.js": +/*!****************************************!*\ + !*** ./node_modules/boolbase/index.js ***! + \****************************************/ +/***/ ((module) => { + +eval("module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvYm9vbGJhc2UvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vaG9saWRheS1kZWFsLWZpbmRlci8uL25vZGVfbW9kdWxlcy9ib29sYmFzZS9pbmRleC5qcz84NWI2Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge1xuXHR0cnVlRnVuYzogZnVuY3Rpb24gdHJ1ZUZ1bmMoKXtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblx0ZmFsc2VGdW5jOiBmdW5jdGlvbiBmYWxzZUZ1bmMoKXtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/boolbase/index.js\n"); + +/***/ }) + +}; +; \ No newline at end of file diff --git a/.next/server/vendor-chunks/cheerio-select.js b/.next/server/vendor-chunks/cheerio-select.js new file mode 100644 index 0000000..8c60d4c --- /dev/null +++ b/.next/server/vendor-chunks/cheerio-select.js @@ -0,0 +1,45 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +exports.id = "vendor-chunks/cheerio-select"; +exports.ids = ["vendor-chunks/cheerio-select"]; +exports.modules = { + +/***/ "(rsc)/./node_modules/cheerio-select/lib/esm/helpers.js": +/*!********************************************************!*\ + !*** ./node_modules/cheerio-select/lib/esm/helpers.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getDocumentRoot: () => (/* binding */ getDocumentRoot),\n/* harmony export */ groupSelectors: () => (/* binding */ groupSelectors)\n/* harmony export */ });\n/* harmony import */ var _positionals_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./positionals.js */ \"(rsc)/./node_modules/cheerio-select/lib/esm/positionals.js\");\n\nfunction getDocumentRoot(node) {\n while (node.parent)\n node = node.parent;\n return node;\n}\nfunction groupSelectors(selectors) {\n const filteredSelectors = [];\n const plainSelectors = [];\n for (const selector of selectors) {\n if (selector.some(_positionals_js__WEBPACK_IMPORTED_MODULE_0__.isFilter)) {\n filteredSelectors.push(selector);\n }\n else {\n plainSelectors.push(selector);\n }\n }\n return [plainSelectors, filteredSelectors];\n}\n//# sourceMappingURL=helpers.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvY2hlZXJpby1zZWxlY3QvbGliL2VzbS9oZWxwZXJzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE0QztBQUNyQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIscURBQVE7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vaG9saWRheS1kZWFsLWZpbmRlci8uL25vZGVfbW9kdWxlcy9jaGVlcmlvLXNlbGVjdC9saWIvZXNtL2hlbHBlcnMuanM/ZWRmMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0ZpbHRlciB9IGZyb20gXCIuL3Bvc2l0aW9uYWxzLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRSb290KG5vZGUpIHtcbiAgICB3aGlsZSAobm9kZS5wYXJlbnQpXG4gICAgICAgIG5vZGUgPSBub2RlLnBhcmVudDtcbiAgICByZXR1cm4gbm9kZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBncm91cFNlbGVjdG9ycyhzZWxlY3RvcnMpIHtcbiAgICBjb25zdCBmaWx0ZXJlZFNlbGVjdG9ycyA9IFtdO1xuICAgIGNvbnN0IHBsYWluU2VsZWN0b3JzID0gW107XG4gICAgZm9yIChjb25zdCBzZWxlY3RvciBvZiBzZWxlY3RvcnMpIHtcbiAgICAgICAgaWYgKHNlbGVjdG9yLnNvbWUoaXNGaWx0ZXIpKSB7XG4gICAgICAgICAgICBmaWx0ZXJlZFNlbGVjdG9ycy5wdXNoKHNlbGVjdG9yKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBsYWluU2VsZWN0b3JzLnB1c2goc2VsZWN0b3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbcGxhaW5TZWxlY3RvcnMsIGZpbHRlcmVkU2VsZWN0b3JzXTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhlbHBlcnMuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/cheerio-select/lib/esm/helpers.js\n"); + +/***/ }), + +/***/ "(rsc)/./node_modules/cheerio-select/lib/esm/index.js": +/*!******************************************************!*\ + !*** ./node_modules/cheerio-select/lib/esm/index.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ aliases: () => (/* reexport safe */ css_select__WEBPACK_IMPORTED_MODULE_0__.aliases),\n/* harmony export */ filter: () => (/* binding */ filter),\n/* harmony export */ filters: () => (/* reexport safe */ css_select__WEBPACK_IMPORTED_MODULE_0__.filters),\n/* harmony export */ is: () => (/* binding */ is),\n/* harmony export */ pseudos: () => (/* reexport safe */ css_select__WEBPACK_IMPORTED_MODULE_0__.pseudos),\n/* harmony export */ select: () => (/* binding */ select),\n/* harmony export */ some: () => (/* binding */ some)\n/* harmony export */ });\n/* harmony import */ var css_what__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! css-what */ \"(rsc)/./node_modules/css-what/lib/es/types.js\");\n/* harmony import */ var css_what__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! css-what */ \"(rsc)/./node_modules/css-what/lib/es/parse.js\");\n/* harmony import */ var css_select__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! css-select */ \"(rsc)/./node_modules/css-select/lib/esm/index.js\");\n/* harmony import */ var domutils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! domutils */ \"(rsc)/./node_modules/domutils/lib/esm/index.js\");\n/* harmony import */ var boolbase__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! boolbase */ \"(rsc)/./node_modules/boolbase/index.js\");\n/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers.js */ \"(rsc)/./node_modules/cheerio-select/lib/esm/helpers.js\");\n/* harmony import */ var _positionals_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./positionals.js */ \"(rsc)/./node_modules/cheerio-select/lib/esm/positionals.js\");\n\n\n\n\n\n\n// Re-export pseudo extension points\n\nconst UNIVERSAL_SELECTOR = {\n type: css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Universal,\n namespace: null,\n};\nconst SCOPE_PSEUDO = {\n type: css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Pseudo,\n name: \"scope\",\n data: null,\n};\nfunction is(element, selector, options = {}) {\n return some([element], selector, options);\n}\nfunction some(elements, selector, options = {}) {\n if (typeof selector === \"function\")\n return elements.some(selector);\n const [plain, filtered] = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.groupSelectors)((0,css_what__WEBPACK_IMPORTED_MODULE_6__.parse)(selector));\n return ((plain.length > 0 && elements.some((0,css_select__WEBPACK_IMPORTED_MODULE_0__._compileToken)(plain, options))) ||\n filtered.some((sel) => filterBySelector(sel, elements, options).length > 0));\n}\nfunction filterByPosition(filter, elems, data, options) {\n const num = typeof data === \"string\" ? parseInt(data, 10) : NaN;\n switch (filter) {\n case \"first\":\n case \"lt\":\n // Already done in `getLimit`\n return elems;\n case \"last\":\n return elems.length > 0 ? [elems[elems.length - 1]] : elems;\n case \"nth\":\n case \"eq\":\n return isFinite(num) && Math.abs(num) < elems.length\n ? [num < 0 ? elems[elems.length + num] : elems[num]]\n : [];\n case \"gt\":\n return isFinite(num) ? elems.slice(num + 1) : [];\n case \"even\":\n return elems.filter((_, i) => i % 2 === 0);\n case \"odd\":\n return elems.filter((_, i) => i % 2 === 1);\n case \"not\": {\n const filtered = new Set(filterParsed(data, elems, options));\n return elems.filter((e) => !filtered.has(e));\n }\n }\n}\nfunction filter(selector, elements, options = {}) {\n return filterParsed((0,css_what__WEBPACK_IMPORTED_MODULE_6__.parse)(selector), elements, options);\n}\n/**\n * Filter a set of elements by a selector.\n *\n * Will return elements in the original order.\n *\n * @param selector Selector to filter by.\n * @param elements Elements to filter.\n * @param options Options for selector.\n */\nfunction filterParsed(selector, elements, options) {\n if (elements.length === 0)\n return [];\n const [plainSelectors, filteredSelectors] = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.groupSelectors)(selector);\n let found;\n if (plainSelectors.length) {\n const filtered = filterElements(elements, plainSelectors, options);\n // If there are no filters, just return\n if (filteredSelectors.length === 0) {\n return filtered;\n }\n // Otherwise, we have to do some filtering\n if (filtered.length) {\n found = new Set(filtered);\n }\n }\n for (let i = 0; i < filteredSelectors.length && (found === null || found === void 0 ? void 0 : found.size) !== elements.length; i++) {\n const filteredSelector = filteredSelectors[i];\n const missing = found\n ? elements.filter((e) => domutils__WEBPACK_IMPORTED_MODULE_1__.isTag(e) && !found.has(e))\n : elements;\n if (missing.length === 0)\n break;\n const filtered = filterBySelector(filteredSelector, elements, options);\n if (filtered.length) {\n if (!found) {\n /*\n * If we haven't found anything before the last selector,\n * just return what we found now.\n */\n if (i === filteredSelectors.length - 1) {\n return filtered;\n }\n found = new Set(filtered);\n }\n else {\n filtered.forEach((el) => found.add(el));\n }\n }\n }\n return typeof found !== \"undefined\"\n ? (found.size === elements.length\n ? elements\n : // Filter elements to preserve order\n elements.filter((el) => found.has(el)))\n : [];\n}\nfunction filterBySelector(selector, elements, options) {\n var _a;\n if (selector.some(css_what__WEBPACK_IMPORTED_MODULE_6__.isTraversal)) {\n /*\n * Get root node, run selector with the scope\n * set to all of our nodes.\n */\n const root = (_a = options.root) !== null && _a !== void 0 ? _a : (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.getDocumentRoot)(elements[0]);\n const opts = { ...options, context: elements, relativeSelector: false };\n selector.push(SCOPE_PSEUDO);\n return findFilterElements(root, selector, opts, true, elements.length);\n }\n // Performance optimization: If we don't have to traverse, just filter set.\n return findFilterElements(elements, selector, options, false, elements.length);\n}\nfunction select(selector, root, options = {}, limit = Infinity) {\n if (typeof selector === \"function\") {\n return find(root, selector);\n }\n const [plain, filtered] = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.groupSelectors)((0,css_what__WEBPACK_IMPORTED_MODULE_6__.parse)(selector));\n const results = filtered.map((sel) => findFilterElements(root, sel, options, true, limit));\n // Plain selectors can be queried in a single go\n if (plain.length) {\n results.push(findElements(root, plain, options, limit));\n }\n if (results.length === 0) {\n return [];\n }\n // If there was only a single selector, just return the result\n if (results.length === 1) {\n return results[0];\n }\n // Sort results, filtering for duplicates\n return domutils__WEBPACK_IMPORTED_MODULE_1__.uniqueSort(results.reduce((a, b) => [...a, ...b]));\n}\n/**\n *\n * @param root Element(s) to search from.\n * @param selector Selector to look for.\n * @param options Options for querying.\n * @param queryForSelector Query multiple levels deep for the initial selector, even if it doesn't contain a traversal.\n */\nfunction findFilterElements(root, selector, options, queryForSelector, totalLimit) {\n const filterIndex = selector.findIndex(_positionals_js__WEBPACK_IMPORTED_MODULE_4__.isFilter);\n const sub = selector.slice(0, filterIndex);\n const filter = selector[filterIndex];\n // If we are at the end of the selector, we can limit the number of elements to retrieve.\n const partLimit = selector.length - 1 === filterIndex ? totalLimit : Infinity;\n /*\n * Set the number of elements to retrieve.\n * Eg. for :first, we only have to get a single element.\n */\n const limit = (0,_positionals_js__WEBPACK_IMPORTED_MODULE_4__.getLimit)(filter.name, filter.data, partLimit);\n if (limit === 0)\n return [];\n /*\n * Skip `findElements` call if our selector starts with a positional\n * pseudo.\n */\n const elemsNoLimit = sub.length === 0 && !Array.isArray(root)\n ? domutils__WEBPACK_IMPORTED_MODULE_1__.getChildren(root).filter(domutils__WEBPACK_IMPORTED_MODULE_1__.isTag)\n : sub.length === 0\n ? (Array.isArray(root) ? root : [root]).filter(domutils__WEBPACK_IMPORTED_MODULE_1__.isTag)\n : queryForSelector || sub.some(css_what__WEBPACK_IMPORTED_MODULE_6__.isTraversal)\n ? findElements(root, [sub], options, limit)\n : filterElements(root, [sub], options);\n const elems = elemsNoLimit.slice(0, limit);\n let result = filterByPosition(filter.name, elems, filter.data, options);\n if (result.length === 0 || selector.length === filterIndex + 1) {\n return result;\n }\n const remainingSelector = selector.slice(filterIndex + 1);\n const remainingHasTraversal = remainingSelector.some(css_what__WEBPACK_IMPORTED_MODULE_6__.isTraversal);\n if (remainingHasTraversal) {\n if ((0,css_what__WEBPACK_IMPORTED_MODULE_6__.isTraversal)(remainingSelector[0])) {\n const { type } = remainingSelector[0];\n if (type === css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Sibling ||\n type === css_what__WEBPACK_IMPORTED_MODULE_5__.SelectorType.Adjacent) {\n // If we have a sibling traversal, we need to also look at the siblings.\n result = (0,css_select__WEBPACK_IMPORTED_MODULE_0__.prepareContext)(result, domutils__WEBPACK_IMPORTED_MODULE_1__, true);\n }\n // Avoid a traversal-first selector error.\n remainingSelector.unshift(UNIVERSAL_SELECTOR);\n }\n options = {\n ...options,\n // Avoid absolutizing the selector\n relativeSelector: false,\n /*\n * Add a custom root func, to make sure traversals don't match elements\n * that aren't a part of the considered tree.\n */\n rootFunc: (el) => result.includes(el),\n };\n }\n else if (options.rootFunc && options.rootFunc !== boolbase__WEBPACK_IMPORTED_MODULE_2__.trueFunc) {\n options = { ...options, rootFunc: boolbase__WEBPACK_IMPORTED_MODULE_2__.trueFunc };\n }\n /*\n * If we have another filter, recursively call `findFilterElements`,\n * with the `recursive` flag disabled. We only have to look for more\n * elements when we see a traversal.\n *\n * Otherwise,\n */\n return remainingSelector.some(_positionals_js__WEBPACK_IMPORTED_MODULE_4__.isFilter)\n ? findFilterElements(result, remainingSelector, options, false, totalLimit)\n : remainingHasTraversal\n ? // Query existing elements to resolve traversal.\n findElements(result, [remainingSelector], options, totalLimit)\n : // If we don't have any more traversals, simply filter elements.\n filterElements(result, [remainingSelector], options);\n}\nfunction findElements(root, sel, options, limit) {\n const query = (0,css_select__WEBPACK_IMPORTED_MODULE_0__._compileToken)(sel, options, root);\n return find(root, query, limit);\n}\nfunction find(root, query, limit = Infinity) {\n const elems = (0,css_select__WEBPACK_IMPORTED_MODULE_0__.prepareContext)(root, domutils__WEBPACK_IMPORTED_MODULE_1__, query.shouldTestNextSiblings);\n return domutils__WEBPACK_IMPORTED_MODULE_1__.find((node) => domutils__WEBPACK_IMPORTED_MODULE_1__.isTag(node) && query(node), elems, true, limit);\n}\nfunction filterElements(elements, sel, options) {\n const els = (Array.isArray(elements) ? elements : [elements]).filter(domutils__WEBPACK_IMPORTED_MODULE_1__.isTag);\n if (els.length === 0)\n return els;\n const query = (0,css_select__WEBPACK_IMPORTED_MODULE_0__._compileToken)(sel, options);\n return query === boolbase__WEBPACK_IMPORTED_MODULE_2__.trueFunc ? els : els.filter(query);\n}\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvY2hlZXJpby1zZWxlY3QvbGliL2VzbS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUE0RDtBQUNnQjtBQUN2QztBQUNBO0FBQzBCO0FBQ1I7QUFDdkQ7QUFDdUQ7QUFDdkQ7QUFDQSxVQUFVLGtEQUFZO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLFVBQVUsa0RBQVk7QUFDdEI7QUFDQTtBQUNBO0FBQ08sMkNBQTJDO0FBQ2xEO0FBQ0E7QUFDTyw4Q0FBOEM7QUFDckQ7QUFDQTtBQUNBLDhCQUE4QiwyREFBYyxDQUFDLCtDQUFLO0FBQ2xELCtDQUErQyx5REFBWTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLGdEQUFnRDtBQUN2RCx3QkFBd0IsK0NBQUs7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsMkRBQWM7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGdIQUFnSDtBQUNwSTtBQUNBO0FBQ0EscUNBQXFDLDJDQUFjO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsaURBQVc7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwRUFBMEUsNERBQWU7QUFDekYsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLDRDQUE0QztBQUNuRDtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsMkRBQWMsQ0FBQywrQ0FBSztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsZ0RBQW1CO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxxREFBUTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHlEQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxpREFBb0IsY0FBYywyQ0FBYztBQUMxRDtBQUNBLDJEQUEyRCwyQ0FBYztBQUN6RSwyQ0FBMkMsaURBQVc7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxpREFBVztBQUNwRTtBQUNBLFlBQVkscURBQVc7QUFDdkIsb0JBQW9CLE9BQU87QUFDM0IseUJBQXlCLGtEQUFZO0FBQ3JDLHlCQUF5QixrREFBWTtBQUNyQztBQUNBLHlCQUF5QiwwREFBYyxTQUFTLHFDQUFRO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCw4Q0FBaUI7QUFDdkUsb0JBQW9CLHNCQUFzQiw4Q0FBaUI7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxxREFBUTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHlEQUFZO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiwwREFBYyxPQUFPLHFDQUFRO0FBQy9DLFdBQVcsMENBQWEsV0FBVywyQ0FBYztBQUNqRDtBQUNBO0FBQ0EseUVBQXlFLDJDQUFjO0FBQ3ZGO0FBQ0E7QUFDQSxrQkFBa0IseURBQVk7QUFDOUIscUJBQXFCLDhDQUFpQjtBQUN0QztBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vaG9saWRheS1kZWFsLWZpbmRlci8uL25vZGVfbW9kdWxlcy9jaGVlcmlvLXNlbGVjdC9saWIvZXNtL2luZGV4LmpzPzU2NzYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGFyc2UsIFNlbGVjdG9yVHlwZSwgaXNUcmF2ZXJzYWwgfSBmcm9tIFwiY3NzLXdoYXRcIjtcbmltcG9ydCB7IF9jb21waWxlVG9rZW4gYXMgY29tcGlsZVRva2VuLCBwcmVwYXJlQ29udGV4dCwgfSBmcm9tIFwiY3NzLXNlbGVjdFwiO1xuaW1wb3J0ICogYXMgRG9tVXRpbHMgZnJvbSBcImRvbXV0aWxzXCI7XG5pbXBvcnQgKiBhcyBib29sYmFzZSBmcm9tIFwiYm9vbGJhc2VcIjtcbmltcG9ydCB7IGdldERvY3VtZW50Um9vdCwgZ3JvdXBTZWxlY3RvcnMgfSBmcm9tIFwiLi9oZWxwZXJzLmpzXCI7XG5pbXBvcnQgeyBpc0ZpbHRlciwgZ2V0TGltaXQsIH0gZnJvbSBcIi4vcG9zaXRpb25hbHMuanNcIjtcbi8vIFJlLWV4cG9ydCBwc2V1ZG8gZXh0ZW5zaW9uIHBvaW50c1xuZXhwb3J0IHsgZmlsdGVycywgcHNldWRvcywgYWxpYXNlcyB9IGZyb20gXCJjc3Mtc2VsZWN0XCI7XG5jb25zdCBVTklWRVJTQUxfU0VMRUNUT1IgPSB7XG4gICAgdHlwZTogU2VsZWN0b3JUeXBlLlVuaXZlcnNhbCxcbiAgICBuYW1lc3BhY2U6IG51bGwsXG59O1xuY29uc3QgU0NPUEVfUFNFVURPID0ge1xuICAgIHR5cGU6IFNlbGVjdG9yVHlwZS5Qc2V1ZG8sXG4gICAgbmFtZTogXCJzY29wZVwiLFxuICAgIGRhdGE6IG51bGwsXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGlzKGVsZW1lbnQsIHNlbGVjdG9yLCBvcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gc29tZShbZWxlbWVudF0sIHNlbGVjdG9yLCBvcHRpb25zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzb21lKGVsZW1lbnRzLCBzZWxlY3Rvciwgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBzZWxlY3RvciA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICByZXR1cm4gZWxlbWVudHMuc29tZShzZWxlY3Rvcik7XG4gICAgY29uc3QgW3BsYWluLCBmaWx0ZXJlZF0gPSBncm91cFNlbGVjdG9ycyhwYXJzZShzZWxlY3RvcikpO1xuICAgIHJldHVybiAoKHBsYWluLmxlbmd0aCA+IDAgJiYgZWxlbWVudHMuc29tZShjb21waWxlVG9rZW4ocGxhaW4sIG9wdGlvbnMpKSkgfHxcbiAgICAgICAgZmlsdGVyZWQuc29tZSgoc2VsKSA9PiBmaWx0ZXJCeVNlbGVjdG9yKHNlbCwgZWxlbWVudHMsIG9wdGlvbnMpLmxlbmd0aCA+IDApKTtcbn1cbmZ1bmN0aW9uIGZpbHRlckJ5UG9zaXRpb24oZmlsdGVyLCBlbGVtcywgZGF0YSwgb3B0aW9ucykge1xuICAgIGNvbnN0IG51bSA9IHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiID8gcGFyc2VJbnQoZGF0YSwgMTApIDogTmFOO1xuICAgIHN3aXRjaCAoZmlsdGVyKSB7XG4gICAgICAgIGNhc2UgXCJmaXJzdFwiOlxuICAgICAgICBjYXNlIFwibHRcIjpcbiAgICAgICAgICAgIC8vIEFscmVhZHkgZG9uZSBpbiBgZ2V0TGltaXRgXG4gICAgICAgICAgICByZXR1cm4gZWxlbXM7XG4gICAgICAgIGNhc2UgXCJsYXN0XCI6XG4gICAgICAgICAgICByZXR1cm4gZWxlbXMubGVuZ3RoID4gMCA/IFtlbGVtc1tlbGVtcy5sZW5ndGggLSAxXV0gOiBlbGVtcztcbiAgICAgICAgY2FzZSBcIm50aFwiOlxuICAgICAgICBjYXNlIFwiZXFcIjpcbiAgICAgICAgICAgIHJldHVybiBpc0Zpbml0ZShudW0pICYmIE1hdGguYWJzKG51bSkgPCBlbGVtcy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IFtudW0gPCAwID8gZWxlbXNbZWxlbXMubGVuZ3RoICsgbnVtXSA6IGVsZW1zW251bV1dXG4gICAgICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgY2FzZSBcImd0XCI6XG4gICAgICAgICAgICByZXR1cm4gaXNGaW5pdGUobnVtKSA/IGVsZW1zLnNsaWNlKG51bSArIDEpIDogW107XG4gICAgICAgIGNhc2UgXCJldmVuXCI6XG4gICAgICAgICAgICByZXR1cm4gZWxlbXMuZmlsdGVyKChfLCBpKSA9PiBpICUgMiA9PT0gMCk7XG4gICAgICAgIGNhc2UgXCJvZGRcIjpcbiAgICAgICAgICAgIHJldHVybiBlbGVtcy5maWx0ZXIoKF8sIGkpID0+IGkgJSAyID09PSAxKTtcbiAgICAgICAgY2FzZSBcIm5vdFwiOiB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IG5ldyBTZXQoZmlsdGVyUGFyc2VkKGRhdGEsIGVsZW1zLCBvcHRpb25zKSk7XG4gICAgICAgICAgICByZXR1cm4gZWxlbXMuZmlsdGVyKChlKSA9PiAhZmlsdGVyZWQuaGFzKGUpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXIoc2VsZWN0b3IsIGVsZW1lbnRzLCBvcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gZmlsdGVyUGFyc2VkKHBhcnNlKHNlbGVjdG9yKSwgZWxlbWVudHMsIG9wdGlvbnMpO1xufVxuLyoqXG4gKiBGaWx0ZXIgYSBzZXQgb2YgZWxlbWVudHMgYnkgYSBzZWxlY3Rvci5cbiAqXG4gKiBXaWxsIHJldHVybiBlbGVtZW50cyBpbiB0aGUgb3JpZ2luYWwgb3JkZXIuXG4gKlxuICogQHBhcmFtIHNlbGVjdG9yIFNlbGVjdG9yIHRvIGZpbHRlciBieS5cbiAqIEBwYXJhbSBlbGVtZW50cyBFbGVtZW50cyB0byBmaWx0ZXIuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBzZWxlY3Rvci5cbiAqL1xuZnVuY3Rpb24gZmlsdGVyUGFyc2VkKHNlbGVjdG9yLCBlbGVtZW50cywgb3B0aW9ucykge1xuICAgIGlmIChlbGVtZW50cy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBbXTtcbiAgICBjb25zdCBbcGxhaW5TZWxlY3RvcnMsIGZpbHRlcmVkU2VsZWN0b3JzXSA9IGdyb3VwU2VsZWN0b3JzKHNlbGVjdG9yKTtcbiAgICBsZXQgZm91bmQ7XG4gICAgaWYgKHBsYWluU2VsZWN0b3JzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IGZpbHRlckVsZW1lbnRzKGVsZW1lbnRzLCBwbGFpblNlbGVjdG9ycywgb3B0aW9ucyk7XG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBmaWx0ZXJzLCBqdXN0IHJldHVyblxuICAgICAgICBpZiAoZmlsdGVyZWRTZWxlY3RvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBoYXZlIHRvIGRvIHNvbWUgZmlsdGVyaW5nXG4gICAgICAgIGlmIChmaWx0ZXJlZC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvdW5kID0gbmV3IFNldChmaWx0ZXJlZCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWx0ZXJlZFNlbGVjdG9ycy5sZW5ndGggJiYgKGZvdW5kID09PSBudWxsIHx8IGZvdW5kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmb3VuZC5zaXplKSAhPT0gZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRTZWxlY3RvciA9IGZpbHRlcmVkU2VsZWN0b3JzW2ldO1xuICAgICAgICBjb25zdCBtaXNzaW5nID0gZm91bmRcbiAgICAgICAgICAgID8gZWxlbWVudHMuZmlsdGVyKChlKSA9PiBEb21VdGlscy5pc1RhZyhlKSAmJiAhZm91bmQuaGFzKGUpKVxuICAgICAgICAgICAgOiBlbGVtZW50cztcbiAgICAgICAgaWYgKG1pc3NpbmcubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gZmlsdGVyQnlTZWxlY3RvcihmaWx0ZXJlZFNlbGVjdG9yLCBlbGVtZW50cywgb3B0aW9ucyk7XG4gICAgICAgIGlmIChmaWx0ZXJlZC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAqIElmIHdlIGhhdmVuJ3QgZm91bmQgYW55dGhpbmcgYmVmb3JlIHRoZSBsYXN0IHNlbGVjdG9yLFxuICAgICAgICAgICAgICAgICAqIGp1c3QgcmV0dXJuIHdoYXQgd2UgZm91bmQgbm93LlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGlmIChpID09PSBmaWx0ZXJlZFNlbGVjdG9ycy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm91bmQgPSBuZXcgU2V0KGZpbHRlcmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGZpbHRlcmVkLmZvckVhY2goKGVsKSA9PiBmb3VuZC5hZGQoZWwpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIGZvdW5kICE9PSBcInVuZGVmaW5lZFwiXG4gICAgICAgID8gKGZvdW5kLnNpemUgPT09IGVsZW1lbnRzLmxlbmd0aFxuICAgICAgICAgICAgPyBlbGVtZW50c1xuICAgICAgICAgICAgOiAvLyBGaWx0ZXIgZWxlbWVudHMgdG8gcHJlc2VydmUgb3JkZXJcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5maWx0ZXIoKGVsKSA9PiBmb3VuZC5oYXMoZWwpKSlcbiAgICAgICAgOiBbXTtcbn1cbmZ1bmN0aW9uIGZpbHRlckJ5U2VsZWN0b3Ioc2VsZWN0b3IsIGVsZW1lbnRzLCBvcHRpb25zKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmIChzZWxlY3Rvci5zb21lKGlzVHJhdmVyc2FsKSkge1xuICAgICAgICAvKlxuICAgICAgICAgKiBHZXQgcm9vdCBub2RlLCBydW4gc2VsZWN0b3Igd2l0aCB0aGUgc2NvcGVcbiAgICAgICAgICogc2V0IHRvIGFsbCBvZiBvdXIgbm9kZXMuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCByb290ID0gKF9hID0gb3B0aW9ucy5yb290KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBnZXREb2N1bWVudFJvb3QoZWxlbWVudHNbMF0pO1xuICAgICAgICBjb25zdCBvcHRzID0geyAuLi5vcHRpb25zLCBjb250ZXh0OiBlbGVtZW50cywgcmVsYXRpdmVTZWxlY3RvcjogZmFsc2UgfTtcbiAgICAgICAgc2VsZWN0b3IucHVzaChTQ09QRV9QU0VVRE8pO1xuICAgICAgICByZXR1cm4gZmluZEZpbHRlckVsZW1lbnRzKHJvb3QsIHNlbGVjdG9yLCBvcHRzLCB0cnVlLCBlbGVtZW50cy5sZW5ndGgpO1xuICAgIH1cbiAgICAvLyBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb246IElmIHdlIGRvbid0IGhhdmUgdG8gdHJhdmVyc2UsIGp1c3QgZmlsdGVyIHNldC5cbiAgICByZXR1cm4gZmluZEZpbHRlckVsZW1lbnRzKGVsZW1lbnRzLCBzZWxlY3Rvciwgb3B0aW9ucywgZmFsc2UsIGVsZW1lbnRzLmxlbmd0aCk7XG59XG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0KHNlbGVjdG9yLCByb290LCBvcHRpb25zID0ge30sIGxpbWl0ID0gSW5maW5pdHkpIHtcbiAgICBpZiAodHlwZW9mIHNlbGVjdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGZpbmQocm9vdCwgc2VsZWN0b3IpO1xuICAgIH1cbiAgICBjb25zdCBbcGxhaW4sIGZpbHRlcmVkXSA9IGdyb3VwU2VsZWN0b3JzKHBhcnNlKHNlbGVjdG9yKSk7XG4gICAgY29uc3QgcmVzdWx0cyA9IGZpbHRlcmVkLm1hcCgoc2VsKSA9PiBmaW5kRmlsdGVyRWxlbWVudHMocm9vdCwgc2VsLCBvcHRpb25zLCB0cnVlLCBsaW1pdCkpO1xuICAgIC8vIFBsYWluIHNlbGVjdG9ycyBjYW4gYmUgcXVlcmllZCBpbiBhIHNpbmdsZSBnb1xuICAgIGlmIChwbGFpbi5sZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0cy5wdXNoKGZpbmRFbGVtZW50cyhyb290LCBwbGFpbiwgb3B0aW9ucywgbGltaXQpKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgLy8gSWYgdGhlcmUgd2FzIG9ubHkgYSBzaW5nbGUgc2VsZWN0b3IsIGp1c3QgcmV0dXJuIHRoZSByZXN1bHRcbiAgICBpZiAocmVzdWx0cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHNbMF07XG4gICAgfVxuICAgIC8vIFNvcnQgcmVzdWx0cywgZmlsdGVyaW5nIGZvciBkdXBsaWNhdGVzXG4gICAgcmV0dXJuIERvbVV0aWxzLnVuaXF1ZVNvcnQocmVzdWx0cy5yZWR1Y2UoKGEsIGIpID0+IFsuLi5hLCAuLi5iXSkpO1xufVxuLyoqXG4gKlxuICogQHBhcmFtIHJvb3QgRWxlbWVudChzKSB0byBzZWFyY2ggZnJvbS5cbiAqIEBwYXJhbSBzZWxlY3RvciBTZWxlY3RvciB0byBsb29rIGZvci5cbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHF1ZXJ5aW5nLlxuICogQHBhcmFtIHF1ZXJ5Rm9yU2VsZWN0b3IgUXVlcnkgbXVsdGlwbGUgbGV2ZWxzIGRlZXAgZm9yIHRoZSBpbml0aWFsIHNlbGVjdG9yLCBldmVuIGlmIGl0IGRvZXNuJ3QgY29udGFpbiBhIHRyYXZlcnNhbC5cbiAqL1xuZnVuY3Rpb24gZmluZEZpbHRlckVsZW1lbnRzKHJvb3QsIHNlbGVjdG9yLCBvcHRpb25zLCBxdWVyeUZvclNlbGVjdG9yLCB0b3RhbExpbWl0KSB7XG4gICAgY29uc3QgZmlsdGVySW5kZXggPSBzZWxlY3Rvci5maW5kSW5kZXgoaXNGaWx0ZXIpO1xuICAgIGNvbnN0IHN1YiA9IHNlbGVjdG9yLnNsaWNlKDAsIGZpbHRlckluZGV4KTtcbiAgICBjb25zdCBmaWx0ZXIgPSBzZWxlY3RvcltmaWx0ZXJJbmRleF07XG4gICAgLy8gSWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIHNlbGVjdG9yLCB3ZSBjYW4gbGltaXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0byByZXRyaWV2ZS5cbiAgICBjb25zdCBwYXJ0TGltaXQgPSBzZWxlY3Rvci5sZW5ndGggLSAxID09PSBmaWx0ZXJJbmRleCA/IHRvdGFsTGltaXQgOiBJbmZpbml0eTtcbiAgICAvKlxuICAgICAqIFNldCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHJldHJpZXZlLlxuICAgICAqIEVnLiBmb3IgOmZpcnN0LCB3ZSBvbmx5IGhhdmUgdG8gZ2V0IGEgc2luZ2xlIGVsZW1lbnQuXG4gICAgICovXG4gICAgY29uc3QgbGltaXQgPSBnZXRMaW1pdChmaWx0ZXIubmFtZSwgZmlsdGVyLmRhdGEsIHBhcnRMaW1pdCk7XG4gICAgaWYgKGxpbWl0ID09PSAwKVxuICAgICAgICByZXR1cm4gW107XG4gICAgLypcbiAgICAgKiBTa2lwIGBmaW5kRWxlbWVudHNgIGNhbGwgaWYgb3VyIHNlbGVjdG9yIHN0YXJ0cyB3aXRoIGEgcG9zaXRpb25hbFxuICAgICAqIHBzZXVkby5cbiAgICAgKi9cbiAgICBjb25zdCBlbGVtc05vTGltaXQgPSBzdWIubGVuZ3RoID09PSAwICYmICFBcnJheS5pc0FycmF5KHJvb3QpXG4gICAgICAgID8gRG9tVXRpbHMuZ2V0Q2hpbGRyZW4ocm9vdCkuZmlsdGVyKERvbVV0aWxzLmlzVGFnKVxuICAgICAgICA6IHN1Yi5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gKEFycmF5LmlzQXJyYXkocm9vdCkgPyByb290IDogW3Jvb3RdKS5maWx0ZXIoRG9tVXRpbHMuaXNUYWcpXG4gICAgICAgICAgICA6IHF1ZXJ5Rm9yU2VsZWN0b3IgfHwgc3ViLnNvbWUoaXNUcmF2ZXJzYWwpXG4gICAgICAgICAgICAgICAgPyBmaW5kRWxlbWVudHMocm9vdCwgW3N1Yl0sIG9wdGlvbnMsIGxpbWl0KVxuICAgICAgICAgICAgICAgIDogZmlsdGVyRWxlbWVudHMocm9vdCwgW3N1Yl0sIG9wdGlvbnMpO1xuICAgIGNvbnN0IGVsZW1zID0gZWxlbXNOb0xpbWl0LnNsaWNlKDAsIGxpbWl0KTtcbiAgICBsZXQgcmVzdWx0ID0gZmlsdGVyQnlQb3NpdGlvbihmaWx0ZXIubmFtZSwgZWxlbXMsIGZpbHRlci5kYXRhLCBvcHRpb25zKTtcbiAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCB8fCBzZWxlY3Rvci5sZW5ndGggPT09IGZpbHRlckluZGV4ICsgMSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBjb25zdCByZW1haW5pbmdTZWxlY3RvciA9IHNlbGVjdG9yLnNsaWNlKGZpbHRlckluZGV4ICsgMSk7XG4gICAgY29uc3QgcmVtYWluaW5nSGFzVHJhdmVyc2FsID0gcmVtYWluaW5nU2VsZWN0b3Iuc29tZShpc1RyYXZlcnNhbCk7XG4gICAgaWYgKHJlbWFpbmluZ0hhc1RyYXZlcnNhbCkge1xuICAgICAgICBpZiAoaXNUcmF2ZXJzYWwocmVtYWluaW5nU2VsZWN0b3JbMF0pKSB7XG4gICAgICAgICAgICBjb25zdCB7IHR5cGUgfSA9IHJlbWFpbmluZ1NlbGVjdG9yWzBdO1xuICAgICAgICAgICAgaWYgKHR5cGUgPT09IFNlbGVjdG9yVHlwZS5TaWJsaW5nIHx8XG4gICAgICAgICAgICAgICAgdHlwZSA9PT0gU2VsZWN0b3JUeXBlLkFkamFjZW50KSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHNpYmxpbmcgdHJhdmVyc2FsLCB3ZSBuZWVkIHRvIGFsc28gbG9vayBhdCB0aGUgc2libGluZ3MuXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gcHJlcGFyZUNvbnRleHQocmVzdWx0LCBEb21VdGlscywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBdm9pZCBhIHRyYXZlcnNhbC1maXJzdCBzZWxlY3RvciBlcnJvci5cbiAgICAgICAgICAgIHJlbWFpbmluZ1NlbGVjdG9yLnVuc2hpZnQoVU5JVkVSU0FMX1NFTEVDVE9SKTtcbiAgICAgICAgfVxuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIC8vIEF2b2lkIGFic29sdXRpemluZyB0aGUgc2VsZWN0b3JcbiAgICAgICAgICAgIHJlbGF0aXZlU2VsZWN0b3I6IGZhbHNlLFxuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAqIEFkZCBhIGN1c3RvbSByb290IGZ1bmMsIHRvIG1ha2Ugc3VyZSB0cmF2ZXJzYWxzIGRvbid0IG1hdGNoIGVsZW1lbnRzXG4gICAgICAgICAgICAgKiB0aGF0IGFyZW4ndCBhIHBhcnQgb2YgdGhlIGNvbnNpZGVyZWQgdHJlZS5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcm9vdEZ1bmM6IChlbCkgPT4gcmVzdWx0LmluY2x1ZGVzKGVsKSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAob3B0aW9ucy5yb290RnVuYyAmJiBvcHRpb25zLnJvb3RGdW5jICE9PSBib29sYmFzZS50cnVlRnVuYykge1xuICAgICAgICBvcHRpb25zID0geyAuLi5vcHRpb25zLCByb290RnVuYzogYm9vbGJhc2UudHJ1ZUZ1bmMgfTtcbiAgICB9XG4gICAgLypcbiAgICAgKiBJZiB3ZSBoYXZlIGFub3RoZXIgZmlsdGVyLCByZWN1cnNpdmVseSBjYWxsIGBmaW5kRmlsdGVyRWxlbWVudHNgLFxuICAgICAqIHdpdGggdGhlIGByZWN1cnNpdmVgIGZsYWcgZGlzYWJsZWQuIFdlIG9ubHkgaGF2ZSB0byBsb29rIGZvciBtb3JlXG4gICAgICogZWxlbWVudHMgd2hlbiB3ZSBzZWUgYSB0cmF2ZXJzYWwuXG4gICAgICpcbiAgICAgKiBPdGhlcndpc2UsXG4gICAgICovXG4gICAgcmV0dXJuIHJlbWFpbmluZ1NlbGVjdG9yLnNvbWUoaXNGaWx0ZXIpXG4gICAgICAgID8gZmluZEZpbHRlckVsZW1lbnRzKHJlc3VsdCwgcmVtYWluaW5nU2VsZWN0b3IsIG9wdGlvbnMsIGZhbHNlLCB0b3RhbExpbWl0KVxuICAgICAgICA6IHJlbWFpbmluZ0hhc1RyYXZlcnNhbFxuICAgICAgICAgICAgPyAvLyBRdWVyeSBleGlzdGluZyBlbGVtZW50cyB0byByZXNvbHZlIHRyYXZlcnNhbC5cbiAgICAgICAgICAgICAgICBmaW5kRWxlbWVudHMocmVzdWx0LCBbcmVtYWluaW5nU2VsZWN0b3JdLCBvcHRpb25zLCB0b3RhbExpbWl0KVxuICAgICAgICAgICAgOiAvLyBJZiB3ZSBkb24ndCBoYXZlIGFueSBtb3JlIHRyYXZlcnNhbHMsIHNpbXBseSBmaWx0ZXIgZWxlbWVudHMuXG4gICAgICAgICAgICAgICAgZmlsdGVyRWxlbWVudHMocmVzdWx0LCBbcmVtYWluaW5nU2VsZWN0b3JdLCBvcHRpb25zKTtcbn1cbmZ1bmN0aW9uIGZpbmRFbGVtZW50cyhyb290LCBzZWwsIG9wdGlvbnMsIGxpbWl0KSB7XG4gICAgY29uc3QgcXVlcnkgPSBjb21waWxlVG9rZW4oc2VsLCBvcHRpb25zLCByb290KTtcbiAgICByZXR1cm4gZmluZChyb290LCBxdWVyeSwgbGltaXQpO1xufVxuZnVuY3Rpb24gZmluZChyb290LCBxdWVyeSwgbGltaXQgPSBJbmZpbml0eSkge1xuICAgIGNvbnN0IGVsZW1zID0gcHJlcGFyZUNvbnRleHQocm9vdCwgRG9tVXRpbHMsIHF1ZXJ5LnNob3VsZFRlc3ROZXh0U2libGluZ3MpO1xuICAgIHJldHVybiBEb21VdGlscy5maW5kKChub2RlKSA9PiBEb21VdGlscy5pc1RhZyhub2RlKSAmJiBxdWVyeShub2RlKSwgZWxlbXMsIHRydWUsIGxpbWl0KTtcbn1cbmZ1bmN0aW9uIGZpbHRlckVsZW1lbnRzKGVsZW1lbnRzLCBzZWwsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBlbHMgPSAoQXJyYXkuaXNBcnJheShlbGVtZW50cykgPyBlbGVtZW50cyA6IFtlbGVtZW50c10pLmZpbHRlcihEb21VdGlscy5pc1RhZyk7XG4gICAgaWYgKGVscy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBlbHM7XG4gICAgY29uc3QgcXVlcnkgPSBjb21waWxlVG9rZW4oc2VsLCBvcHRpb25zKTtcbiAgICByZXR1cm4gcXVlcnkgPT09IGJvb2xiYXNlLnRydWVGdW5jID8gZWxzIDogZWxzLmZpbHRlcihxdWVyeSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/cheerio-select/lib/esm/index.js\n"); + +/***/ }), + +/***/ "(rsc)/./node_modules/cheerio-select/lib/esm/positionals.js": +/*!************************************************************!*\ + !*** ./node_modules/cheerio-select/lib/esm/positionals.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ filterNames: () => (/* binding */ filterNames),\n/* harmony export */ getLimit: () => (/* binding */ getLimit),\n/* harmony export */ isFilter: () => (/* binding */ isFilter)\n/* harmony export */ });\nconst filterNames = new Set([\n \"first\",\n \"last\",\n \"eq\",\n \"gt\",\n \"nth\",\n \"lt\",\n \"even\",\n \"odd\",\n]);\nfunction isFilter(s) {\n if (s.type !== \"pseudo\")\n return false;\n if (filterNames.has(s.name))\n return true;\n if (s.name === \"not\" && Array.isArray(s.data)) {\n // Only consider `:not` with embedded filters\n return s.data.some((s) => s.some(isFilter));\n }\n return false;\n}\nfunction getLimit(filter, data, partLimit) {\n const num = data != null ? parseInt(data, 10) : NaN;\n switch (filter) {\n case \"first\":\n return 1;\n case \"nth\":\n case \"eq\":\n return isFinite(num) ? (num >= 0 ? num + 1 : Infinity) : 0;\n case \"lt\":\n return isFinite(num)\n ? num >= 0\n ? Math.min(num, partLimit)\n : Infinity\n : 0;\n case \"gt\":\n return isFinite(num) ? Infinity : 0;\n case \"odd\":\n return 2 * partLimit;\n case \"even\":\n return 2 * partLimit - 1;\n case \"last\":\n case \"not\":\n return Infinity;\n }\n}\n//# sourceMappingURL=positionals.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvY2hlZXJpby1zZWxlY3QvbGliL2VzbS9wb3NpdGlvbmFscy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vaG9saWRheS1kZWFsLWZpbmRlci8uL25vZGVfbW9kdWxlcy9jaGVlcmlvLXNlbGVjdC9saWIvZXNtL3Bvc2l0aW9uYWxzLmpzPzBmMmUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGZpbHRlck5hbWVzID0gbmV3IFNldChbXG4gICAgXCJmaXJzdFwiLFxuICAgIFwibGFzdFwiLFxuICAgIFwiZXFcIixcbiAgICBcImd0XCIsXG4gICAgXCJudGhcIixcbiAgICBcImx0XCIsXG4gICAgXCJldmVuXCIsXG4gICAgXCJvZGRcIixcbl0pO1xuZXhwb3J0IGZ1bmN0aW9uIGlzRmlsdGVyKHMpIHtcbiAgICBpZiAocy50eXBlICE9PSBcInBzZXVkb1wiKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGZpbHRlck5hbWVzLmhhcyhzLm5hbWUpKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAocy5uYW1lID09PSBcIm5vdFwiICYmIEFycmF5LmlzQXJyYXkocy5kYXRhKSkge1xuICAgICAgICAvLyBPbmx5IGNvbnNpZGVyIGA6bm90YCB3aXRoIGVtYmVkZGVkIGZpbHRlcnNcbiAgICAgICAgcmV0dXJuIHMuZGF0YS5zb21lKChzKSA9PiBzLnNvbWUoaXNGaWx0ZXIpKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldExpbWl0KGZpbHRlciwgZGF0YSwgcGFydExpbWl0KSB7XG4gICAgY29uc3QgbnVtID0gZGF0YSAhPSBudWxsID8gcGFyc2VJbnQoZGF0YSwgMTApIDogTmFOO1xuICAgIHN3aXRjaCAoZmlsdGVyKSB7XG4gICAgICAgIGNhc2UgXCJmaXJzdFwiOlxuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIGNhc2UgXCJudGhcIjpcbiAgICAgICAgY2FzZSBcImVxXCI6XG4gICAgICAgICAgICByZXR1cm4gaXNGaW5pdGUobnVtKSA/IChudW0gPj0gMCA/IG51bSArIDEgOiBJbmZpbml0eSkgOiAwO1xuICAgICAgICBjYXNlIFwibHRcIjpcbiAgICAgICAgICAgIHJldHVybiBpc0Zpbml0ZShudW0pXG4gICAgICAgICAgICAgICAgPyBudW0gPj0gMFxuICAgICAgICAgICAgICAgICAgICA/IE1hdGgubWluKG51bSwgcGFydExpbWl0KVxuICAgICAgICAgICAgICAgICAgICA6IEluZmluaXR5XG4gICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICBjYXNlIFwiZ3RcIjpcbiAgICAgICAgICAgIHJldHVybiBpc0Zpbml0ZShudW0pID8gSW5maW5pdHkgOiAwO1xuICAgICAgICBjYXNlIFwib2RkXCI6XG4gICAgICAgICAgICByZXR1cm4gMiAqIHBhcnRMaW1pdDtcbiAgICAgICAgY2FzZSBcImV2ZW5cIjpcbiAgICAgICAgICAgIHJldHVybiAyICogcGFydExpbWl0IC0gMTtcbiAgICAgICAgY2FzZSBcImxhc3RcIjpcbiAgICAgICAgY2FzZSBcIm5vdFwiOlxuICAgICAgICAgICAgcmV0dXJuIEluZmluaXR5O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvc2l0aW9uYWxzLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/cheerio-select/lib/esm/positionals.js\n"); + +/***/ }) + +}; +; \ No newline at end of file diff --git a/.next/server/vendor-chunks/cheerio.js b/.next/server/vendor-chunks/cheerio.js new file mode 100644 index 0000000..3c848ea --- /dev/null +++ b/.next/server/vendor-chunks/cheerio.js @@ -0,0 +1,165 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +exports.id = "vendor-chunks/cheerio"; +exports.ids = ["vendor-chunks/cheerio"]; +exports.modules = { + +/***/ "(rsc)/./node_modules/cheerio/dist/esm/api/attributes.js": +/*!*********************************************************!*\ + !*** ./node_modules/cheerio/dist/esm/api/attributes.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addClass: () => (/* binding */ addClass),\n/* harmony export */ attr: () => (/* binding */ attr),\n/* harmony export */ data: () => (/* binding */ data),\n/* harmony export */ hasClass: () => (/* binding */ hasClass),\n/* harmony export */ prop: () => (/* binding */ prop),\n/* harmony export */ removeAttr: () => (/* binding */ removeAttr),\n/* harmony export */ removeClass: () => (/* binding */ removeClass),\n/* harmony export */ toggleClass: () => (/* binding */ toggleClass),\n/* harmony export */ val: () => (/* binding */ val)\n/* harmony export */ });\n/* harmony import */ var _static_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../static.js */ \"(rsc)/./node_modules/cheerio/dist/esm/static.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils.js */ \"(rsc)/./node_modules/cheerio/dist/esm/utils.js\");\n/* harmony import */ var domhandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! domhandler */ \"(rsc)/./node_modules/domhandler/lib/esm/index.js\");\n/* harmony import */ var domutils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! domutils */ \"(rsc)/./node_modules/domutils/lib/esm/index.js\");\n/* harmony import */ var htmlparser2__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! htmlparser2 */ \"(rsc)/./node_modules/htmlparser2/dist/esm/index.js\");\n/**\n * Methods for getting and modifying attributes.\n *\n * @module cheerio/attributes\n */\nvar _a;\n\n\n\n\n\nconst hasOwn = \n// @ts-expect-error `hasOwn` is a standard object method\n(_a = Object.hasOwn) !== null && _a !== void 0 ? _a : ((object, prop) => Object.prototype.hasOwnProperty.call(object, prop));\nconst rspace = /\\s+/;\nconst dataAttrPrefix = 'data-';\n// Attributes that are booleans\nconst rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i;\n// Matches strings that look like JSON objects or arrays\nconst rbrace = /^{[^]*}$|^\\[[^]*]$/;\nfunction getAttr(elem, name, xmlMode) {\n var _a;\n if (!elem || !(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(elem))\n return undefined;\n (_a = elem.attribs) !== null && _a !== void 0 ? _a : (elem.attribs = {});\n // Return the entire attribs object if no attribute specified\n if (!name) {\n return elem.attribs;\n }\n if (hasOwn(elem.attribs, name)) {\n // Get the (decoded) attribute\n return !xmlMode && rboolean.test(name) ? name : elem.attribs[name];\n }\n // Mimic the DOM and return text content as value for `option's`\n if (elem.name === 'option' && name === 'value') {\n return (0,_static_js__WEBPACK_IMPORTED_MODULE_0__.text)(elem.children);\n }\n // Mimic DOM with default value for radios/checkboxes\n if (elem.name === 'input' &&\n (elem.attribs['type'] === 'radio' || elem.attribs['type'] === 'checkbox') &&\n name === 'value') {\n return 'on';\n }\n return undefined;\n}\n/**\n * Sets the value of an attribute. The attribute will be deleted if the value is\n * `null`.\n *\n * @private\n * @param el - The element to set the attribute on.\n * @param name - The attribute's name.\n * @param value - The attribute's value.\n */\nfunction setAttr(el, name, value) {\n if (value === null) {\n removeAttribute(el, name);\n }\n else {\n el.attribs[name] = `${value}`;\n }\n}\nfunction attr(name, value) {\n // Set the value (with attr map support)\n if (typeof name === 'object' || value !== undefined) {\n if (typeof value === 'function') {\n if (typeof name !== 'string') {\n {\n throw new Error('Bad combination of arguments.');\n }\n }\n return (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this, (el, i) => {\n if ((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))\n setAttr(el, name, value.call(el, i, el.attribs[name]));\n });\n }\n return (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this, (el) => {\n if (!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))\n return;\n if (typeof name === 'object') {\n for (const objName of Object.keys(name)) {\n const objValue = name[objName];\n setAttr(el, objName, objValue);\n }\n }\n else {\n setAttr(el, name, value);\n }\n });\n }\n return arguments.length > 1\n ? this\n : getAttr(this[0], name, this.options.xmlMode);\n}\n/**\n * Gets a node's prop.\n *\n * @private\n * @category Attributes\n * @param el - Element to get the prop of.\n * @param name - Name of the prop.\n * @param xmlMode - Disable handling of special HTML attributes.\n * @returns The prop's value.\n */\nfunction getProp(el, name, xmlMode) {\n return name in el\n ? // @ts-expect-error TS doesn't like us accessing the value directly here.\n el[name]\n : !xmlMode && rboolean.test(name)\n ? getAttr(el, name, false) !== undefined\n : getAttr(el, name, xmlMode);\n}\n/**\n * Sets the value of a prop.\n *\n * @private\n * @param el - The element to set the prop on.\n * @param name - The prop's name.\n * @param value - The prop's value.\n * @param xmlMode - Disable handling of special HTML attributes.\n */\nfunction setProp(el, name, value, xmlMode) {\n if (name in el) {\n // @ts-expect-error Overriding value\n el[name] = value;\n }\n else {\n setAttr(el, name, !xmlMode && rboolean.test(name)\n ? value\n ? ''\n : null\n : `${value}`);\n }\n}\nfunction prop(name, value) {\n var _a;\n if (typeof name === 'string' && value === undefined) {\n const el = this[0];\n if (!el)\n return undefined;\n switch (name) {\n case 'style': {\n const property = this.css();\n const keys = Object.keys(property);\n for (let i = 0; i < keys.length; i++) {\n property[i] = keys[i];\n }\n property.length = keys.length;\n return property;\n }\n case 'tagName':\n case 'nodeName': {\n if (!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))\n return undefined;\n return el.name.toUpperCase();\n }\n case 'href':\n case 'src': {\n if (!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))\n return undefined;\n const prop = (_a = el.attribs) === null || _a === void 0 ? void 0 : _a[name];\n if (typeof URL !== 'undefined' &&\n ((name === 'href' && (el.tagName === 'a' || el.tagName === 'link')) ||\n (name === 'src' &&\n (el.tagName === 'img' ||\n el.tagName === 'iframe' ||\n el.tagName === 'audio' ||\n el.tagName === 'video' ||\n el.tagName === 'source'))) &&\n prop !== undefined &&\n this.options.baseURI) {\n return new URL(prop, this.options.baseURI).href;\n }\n return prop;\n }\n case 'innerText': {\n return (0,domutils__WEBPACK_IMPORTED_MODULE_3__.innerText)(el);\n }\n case 'textContent': {\n return (0,domutils__WEBPACK_IMPORTED_MODULE_3__.textContent)(el);\n }\n case 'outerHTML': {\n if (el.type === htmlparser2__WEBPACK_IMPORTED_MODULE_4__.ElementType.Root)\n return this.html();\n return this.clone().wrap('').parent().html();\n }\n case 'innerHTML': {\n return this.html();\n }\n default: {\n if (!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))\n return undefined;\n return getProp(el, name, this.options.xmlMode);\n }\n }\n }\n if (typeof name === 'object' || value !== undefined) {\n if (typeof value === 'function') {\n if (typeof name === 'object') {\n throw new TypeError('Bad combination of arguments.');\n }\n return (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this, (el, i) => {\n if ((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el)) {\n setProp(el, name, value.call(el, i, getProp(el, name, this.options.xmlMode)), this.options.xmlMode);\n }\n });\n }\n return (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this, (el) => {\n if (!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))\n return;\n if (typeof name === 'object') {\n for (const key of Object.keys(name)) {\n const val = name[key];\n setProp(el, key, val, this.options.xmlMode);\n }\n }\n else {\n setProp(el, name, value, this.options.xmlMode);\n }\n });\n }\n return undefined;\n}\n/**\n * Sets the value of a data attribute.\n *\n * @private\n * @param elem - The element to set the data attribute on.\n * @param name - The data attribute's name.\n * @param value - The data attribute's value.\n */\nfunction setData(elem, name, value) {\n var _a;\n (_a = elem.data) !== null && _a !== void 0 ? _a : (elem.data = {});\n if (typeof name === 'object')\n Object.assign(elem.data, name);\n else if (typeof name === 'string' && value !== undefined) {\n elem.data[name] = value;\n }\n}\n/**\n * Read _all_ HTML5 `data-*` attributes from the equivalent HTML5 `data-*`\n * attribute, and cache the value in the node's internal data store.\n *\n * @private\n * @category Attributes\n * @param el - Element to get the data attribute of.\n * @returns A map with all of the data attributes.\n */\nfunction readAllData(el) {\n for (const domName of Object.keys(el.attribs)) {\n if (!domName.startsWith(dataAttrPrefix)) {\n continue;\n }\n const jsName = (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.camelCase)(domName.slice(dataAttrPrefix.length));\n if (!hasOwn(el.data, jsName)) {\n el.data[jsName] = parseDataValue(el.attribs[domName]);\n }\n }\n return el.data;\n}\n/**\n * Read the specified attribute from the equivalent HTML5 `data-*` attribute,\n * and (if present) cache the value in the node's internal data store.\n *\n * @private\n * @category Attributes\n * @param el - Element to get the data attribute of.\n * @param name - Name of the data attribute.\n * @returns The data attribute's value.\n */\nfunction readData(el, name) {\n const domName = dataAttrPrefix + (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.cssCase)(name);\n const data = el.data;\n if (hasOwn(data, name)) {\n return data[name];\n }\n if (hasOwn(el.attribs, domName)) {\n return (data[name] = parseDataValue(el.attribs[domName]));\n }\n return undefined;\n}\n/**\n * Coerce string data-* attributes to their corresponding JavaScript primitives.\n *\n * @private\n * @category Attributes\n * @param value - The value to parse.\n * @returns The parsed value.\n */\nfunction parseDataValue(value) {\n if (value === 'null')\n return null;\n if (value === 'true')\n return true;\n if (value === 'false')\n return false;\n const num = Number(value);\n if (value === String(num))\n return num;\n if (rbrace.test(value)) {\n try {\n return JSON.parse(value);\n }\n catch {\n /* Ignore */\n }\n }\n return value;\n}\nfunction data(name, value) {\n var _a;\n const elem = this[0];\n if (!elem || !(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(elem))\n return;\n const dataEl = elem;\n (_a = dataEl.data) !== null && _a !== void 0 ? _a : (dataEl.data = {});\n // Return the entire data object if no data specified\n if (name == null) {\n return readAllData(dataEl);\n }\n // Set the value (with attr map support)\n if (typeof name === 'object' || value !== undefined) {\n (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this, (el) => {\n if ((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el)) {\n if (typeof name === 'object')\n setData(el, name);\n else\n setData(el, name, value);\n }\n });\n return this;\n }\n return readData(dataEl, name);\n}\nfunction val(value) {\n const querying = arguments.length === 0;\n const element = this[0];\n if (!element || !(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(element))\n return querying ? undefined : this;\n switch (element.name) {\n case 'textarea': {\n return this.text(value);\n }\n case 'select': {\n const option = this.find('option:selected');\n if (!querying) {\n if (this.attr('multiple') == null && typeof value === 'object') {\n return this;\n }\n this.find('option').removeAttr('selected');\n const values = typeof value === 'object' ? value : [value];\n for (const val of values) {\n this.find(`option[value=\"${val}\"]`).attr('selected', '');\n }\n return this;\n }\n return this.attr('multiple')\n ? option.toArray().map((el) => (0,_static_js__WEBPACK_IMPORTED_MODULE_0__.text)(el.children))\n : option.attr('value');\n }\n case 'input':\n case 'option': {\n return querying\n ? this.attr('value')\n : this.attr('value', value);\n }\n }\n return undefined;\n}\n/**\n * Remove an attribute.\n *\n * @private\n * @param elem - Node to remove attribute from.\n * @param name - Name of the attribute to remove.\n */\nfunction removeAttribute(elem, name) {\n if (!elem.attribs || !hasOwn(elem.attribs, name))\n return;\n delete elem.attribs[name];\n}\n/**\n * Splits a space-separated list of names to individual names.\n *\n * @category Attributes\n * @param names - Names to split.\n * @returns - Split names.\n */\nfunction splitNames(names) {\n return names ? names.trim().split(rspace) : [];\n}\n/**\n * Method for removing attributes by `name`.\n *\n * @category Attributes\n * @example\n *\n * ```js\n * $('.pear').removeAttr('class').prop('outerHTML');\n * //=>
  • Pear
  • \n *\n * $('.apple').attr('id', 'favorite');\n * $('.apple').removeAttr('id class').prop('outerHTML');\n * //=>
  • Apple
  • \n * ```\n *\n * @param name - Name of the attribute.\n * @returns The instance itself.\n * @see {@link https://api.jquery.com/removeAttr/}\n */\nfunction removeAttr(name) {\n const attrNames = splitNames(name);\n for (const attrName of attrNames) {\n (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this, (elem) => {\n if ((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(elem))\n removeAttribute(elem, attrName);\n });\n }\n return this;\n}\n/**\n * Check to see if _any_ of the matched elements have the given `className`.\n *\n * @category Attributes\n * @example\n *\n * ```js\n * $('.pear').hasClass('pear');\n * //=> true\n *\n * $('apple').hasClass('fruit');\n * //=> false\n *\n * $('li').hasClass('pear');\n * //=> true\n * ```\n *\n * @param className - Name of the class.\n * @returns Indicates if an element has the given `className`.\n * @see {@link https://api.jquery.com/hasClass/}\n */\nfunction hasClass(className) {\n return this.toArray().some((elem) => {\n const clazz = (0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(elem) && elem.attribs['class'];\n let idx = -1;\n if (clazz && className.length > 0) {\n while ((idx = clazz.indexOf(className, idx + 1)) > -1) {\n const end = idx + className.length;\n if ((idx === 0 || rspace.test(clazz[idx - 1])) &&\n (end === clazz.length || rspace.test(clazz[end]))) {\n return true;\n }\n }\n }\n return false;\n });\n}\n/**\n * Adds class(es) to all of the matched elements. Also accepts a `function`.\n *\n * @category Attributes\n * @example\n *\n * ```js\n * $('.pear').addClass('fruit').prop('outerHTML');\n * //=>
  • Pear
  • \n *\n * $('.apple').addClass('fruit red').prop('outerHTML');\n * //=>
  • Apple
  • \n * ```\n *\n * @param value - Name of new class.\n * @returns The instance itself.\n * @see {@link https://api.jquery.com/addClass/}\n */\nfunction addClass(value) {\n // Support functions\n if (typeof value === 'function') {\n return (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this, (el, i) => {\n if ((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el)) {\n const className = el.attribs['class'] || '';\n addClass.call([el], value.call(el, i, className));\n }\n });\n }\n // Return if no value or not a string or function\n if (!value || typeof value !== 'string')\n return this;\n const classNames = value.split(rspace);\n const numElements = this.length;\n for (let i = 0; i < numElements; i++) {\n const el = this[i];\n // If selected element isn't a tag, move on\n if (!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))\n continue;\n // If we don't already have classes — always set xmlMode to false here, as it doesn't matter for classes\n const className = getAttr(el, 'class', false);\n if (className) {\n let setClass = ` ${className} `;\n // Check if class already exists\n for (const cn of classNames) {\n const appendClass = `${cn} `;\n if (!setClass.includes(` ${appendClass}`))\n setClass += appendClass;\n }\n setAttr(el, 'class', setClass.trim());\n }\n else {\n setAttr(el, 'class', classNames.join(' ').trim());\n }\n }\n return this;\n}\n/**\n * Removes one or more space-separated classes from the selected elements. If no\n * `className` is defined, all classes will be removed. Also accepts a\n * `function`.\n *\n * @category Attributes\n * @example\n *\n * ```js\n * $('.pear').removeClass('pear').prop('outerHTML');\n * //=>
  • Pear
  • \n *\n * $('.apple').addClass('red').removeClass().prop('outerHTML');\n * //=>
  • Apple
  • \n * ```\n *\n * @param name - Name of the class. If not specified, removes all elements.\n * @returns The instance itself.\n * @see {@link https://api.jquery.com/removeClass/}\n */\nfunction removeClass(name) {\n // Handle if value is a function\n if (typeof name === 'function') {\n return (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this, (el, i) => {\n if ((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el)) {\n removeClass.call([el], name.call(el, i, el.attribs['class'] || ''));\n }\n });\n }\n const classes = splitNames(name);\n const numClasses = classes.length;\n const removeAll = arguments.length === 0;\n return (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this, (el) => {\n if (!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))\n return;\n if (removeAll) {\n // Short circuit the remove all case as this is the nice one\n el.attribs['class'] = '';\n }\n else {\n const elClasses = splitNames(el.attribs['class']);\n let changed = false;\n for (let j = 0; j < numClasses; j++) {\n const index = elClasses.indexOf(classes[j]);\n if (index !== -1) {\n elClasses.splice(index, 1);\n changed = true;\n /*\n * We have to do another pass to ensure that there are not duplicate\n * classes listed\n */\n j--;\n }\n }\n if (changed) {\n el.attribs['class'] = elClasses.join(' ');\n }\n }\n });\n}\n/**\n * Add or remove class(es) from the matched elements, depending on either the\n * class's presence or the value of the switch argument. Also accepts a\n * `function`.\n *\n * @category Attributes\n * @example\n *\n * ```js\n * $('.apple.green').toggleClass('fruit green red').prop('outerHTML');\n * //=>
  • Apple
  • \n *\n * $('.apple.green').toggleClass('fruit green red', true).prop('outerHTML');\n * //=>
  • Apple
  • \n * ```\n *\n * @param value - Name of the class. Can also be a function.\n * @param stateVal - If specified the state of the class.\n * @returns The instance itself.\n * @see {@link https://api.jquery.com/toggleClass/}\n */\nfunction toggleClass(value, stateVal) {\n // Support functions\n if (typeof value === 'function') {\n return (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.domEach)(this, (el, i) => {\n if ((0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el)) {\n toggleClass.call([el], value.call(el, i, el.attribs['class'] || '', stateVal), stateVal);\n }\n });\n }\n // Return if no value or not a string or function\n if (!value || typeof value !== 'string')\n return this;\n const classNames = value.split(rspace);\n const numClasses = classNames.length;\n const state = typeof stateVal === 'boolean' ? (stateVal ? 1 : -1) : 0;\n const numElements = this.length;\n for (let i = 0; i < numElements; i++) {\n const el = this[i];\n // If selected element isn't a tag, move on\n if (!(0,domhandler__WEBPACK_IMPORTED_MODULE_2__.isTag)(el))\n continue;\n const elementClasses = splitNames(el.attribs['class']);\n // Check if class already exists\n for (let j = 0; j < numClasses; j++) {\n // Check if the class name is currently defined\n const index = elementClasses.indexOf(classNames[j]);\n // Add if stateValue === true or we are toggling and there is no value\n if (state >= 0 && index === -1) {\n elementClasses.push(classNames[j]);\n }\n else if (state <= 0 && index !== -1) {\n // Otherwise remove but only if the item exists\n elementClasses.splice(index, 1);\n }\n }\n el.attribs['class'] = elementClasses.join(' ');\n }\n return this;\n}\n//# sourceMappingURL=attributes.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvY2hlZXJpby9kaXN0L2VzbS9hcGkvYXR0cmlidXRlcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNvQztBQUNzQjtBQUN2QjtBQUNlO0FBQ1I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixLQUFLO0FBQ3ZCO0FBQ0E7QUFDQSxrQkFBa0IsaURBQUs7QUFDdkI7QUFDQSwyRUFBMkU7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGdEQUFJO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsTUFBTTtBQUNwQztBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGtEQUFPO0FBQzFCLG9CQUFvQixpREFBSztBQUN6QjtBQUNBLGFBQWE7QUFDYjtBQUNBLGVBQWUsa0RBQU87QUFDdEIsaUJBQWlCLGlEQUFLO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFp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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDTztBQUNQO0FBQ0E7QUFDQSxlQUFlLGtEQUFPO0FBQ3RCLGdCQUFnQixpREFBSztBQUNyQjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQSxhQUFhLGlEQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixnQkFBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbm9kZV9tb2R1bGVzL2NoZWVyaW8vZGlzdC9lc20vYXBpL2F0dHJpYnV0ZXMuanM/YWIxMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1ldGhvZHMgZm9yIGdldHRpbmcgYW5kIG1vZGlmeWluZyBhdHRyaWJ1dGVzLlxuICpcbiAqIEBtb2R1bGUgY2hlZXJpby9hdHRyaWJ1dGVzXG4gKi9cbnZhciBfYTtcbmltcG9ydCB7IHRleHQgfSBmcm9tICcuLi9zdGF0aWMuanMnO1xuaW1wb3J0IHsgZG9tRWFjaCwgY2FtZWxDYXNlLCBjc3NDYXNlIH0gZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IHsgaXNUYWcgfSBmcm9tICdkb21oYW5kbGVyJztcbmltcG9ydCB7IGlubmVyVGV4dCwgdGV4dENvbnRlbnQgfSBmcm9tICdkb211dGlscyc7XG5pbXBvcnQgeyBFbGVtZW50VHlwZSB9IGZyb20gJ2h0bWxwYXJzZXIyJztcbmNvbnN0IGhhc093biA9IFxuLy8gQHRzLWV4cGVjdC1lcnJvciBgaGFzT3duYCBpcyBhIHN0YW5kYXJkIG9iamVjdCBtZXRob2RcbihfYSA9IE9iamVjdC5oYXNPd24pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICgob2JqZWN0LCBwcm9wKSA9PiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wKSk7XG5jb25zdCByc3BhY2UgPSAvXFxzKy87XG5jb25zdCBkYXRhQXR0clByZWZpeCA9ICdkYXRhLSc7XG4vLyBBdHRyaWJ1dGVzIHRoYXQgYXJlIGJvb2xlYW5zXG5jb25zdCByYm9vbGVhbiA9IC9eKD86YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5jfGNoZWNrZWR8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWR8c2VsZWN0ZWQpJC9pO1xuLy8gTWF0Y2hlcyBzdHJpbmdzIHRoYXQgbG9vayBsaWtlIEpTT04gb2JqZWN0cyBvciBhcnJheXNcbmNvbnN0IHJicmFjZSA9IC9ee1teXSp9JHxeXFxbW15dKl0kLztcbmZ1bmN0aW9uIGdldEF0dHIoZWxlbSwgbmFtZSwgeG1sTW9kZSkge1xuICAgIHZhciBfYTtcbiAgICBpZiAoIWVsZW0gfHwgIWlzVGFnKGVsZW0pKVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIChfYSA9IGVsZW0uYXR0cmlicykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogKGVsZW0uYXR0cmlicyA9IHt9KTtcbiAgICAvLyBSZXR1cm4gdGhlIGVudGlyZSBhdHRyaWJzIG9iamVjdCBpZiBubyBhdHRyaWJ1dGUgc3BlY2lmaWVkXG4gICAgaWYgKCFuYW1lKSB7XG4gICAgICAgIHJldHVybiBlbGVtLmF0dHJpYnM7XG4gICAgfVxuICAgIGlmIChoYXNPd24oZWxlbS5hdHRyaWJzLCBuYW1lKSkge1xuICAgICAgICAvLyBHZXQgdGhlIChkZWNvZGVkKSBhdHRyaWJ1dGVcbiAgICAgICAgcmV0dXJuICF4bWxNb2RlICYmIHJib29sZWFuLnRlc3QobmFtZSkgPyBuYW1lIDogZWxlbS5hdHRyaWJzW25hbWVdO1xuICAgIH1cbiAgICAvLyBNaW1pYyB0aGUgRE9NIGFuZCByZXR1cm4gdGV4dCBjb250ZW50IGFzIHZhbHVlIGZvciBgb3B0aW9uJ3NgXG4gICAgaWYgKGVsZW0ubmFtZSA9PT0gJ29wdGlvbicgJiYgbmFtZSA9PT0gJ3ZhbHVlJykge1xuICAgICAgICByZXR1cm4gdGV4dChlbGVtLmNoaWxkcmVuKTtcbiAgICB9XG4gICAgLy8gTWltaWMgRE9NIHdpdGggZGVmYXVsdCB2YWx1ZSBmb3IgcmFkaW9zL2NoZWNrYm94ZXNcbiAgICBpZiAoZWxlbS5uYW1lID09PSAnaW5wdXQnICYmXG4gICAgICAgIChlbGVtLmF0dHJpYnNbJ3R5cGUnXSA9PT0gJ3JhZGlvJyB8fCBlbGVtLmF0dHJpYnNbJ3R5cGUnXSA9PT0gJ2NoZWNrYm94JykgJiZcbiAgICAgICAgbmFtZSA9PT0gJ3ZhbHVlJykge1xuICAgICAgICByZXR1cm4gJ29uJztcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbi8qKlxuICogU2V0cyB0aGUgdmFsdWUgb2YgYW4gYXR0cmlidXRlLiBUaGUgYXR0cmlidXRlIHdpbGwgYmUgZGVsZXRlZCBpZiB0aGUgdmFsdWUgaXNcbiAqIGBudWxsYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIGVsIC0gVGhlIGVsZW1lbnQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24uXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBhdHRyaWJ1dGUncyBuYW1lLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICovXG5mdW5jdGlvbiBzZXRBdHRyKGVsLCBuYW1lLCB2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICByZW1vdmVBdHRyaWJ1dGUoZWwsIG5hbWUpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZWwuYXR0cmlic1tuYW1lXSA9IGAke3ZhbHVlfWA7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGF0dHIobmFtZSwgdmFsdWUpIHtcbiAgICAvLyBTZXQgdGhlIHZhbHVlICh3aXRoIGF0dHIgbWFwIHN1cHBvcnQpXG4gICAgaWYgKHR5cGVvZiBuYW1lID09PSAnb2JqZWN0JyB8fCB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQmFkIGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cy4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZG9tRWFjaCh0aGlzLCAoZWwsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNUYWcoZWwpKVxuICAgICAgICAgICAgICAgICAgICBzZXRBdHRyKGVsLCBuYW1lLCB2YWx1ZS5jYWxsKGVsLCBpLCBlbC5hdHRyaWJzW25hbWVdKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZG9tRWFjaCh0aGlzLCAoZWwpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNUYWcoZWwpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG9iak5hbWUgb2YgT2JqZWN0LmtleXMobmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2JqVmFsdWUgPSBuYW1lW29iak5hbWVdO1xuICAgICAgICAgICAgICAgICAgICBzZXRBdHRyKGVsLCBvYmpOYW1lLCBvYmpWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0QXR0cihlbCwgbmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAxXG4gICAgICAgID8gdGhpc1xuICAgICAgICA6IGdldEF0dHIodGhpc1swXSwgbmFtZSwgdGhpcy5vcHRpb25zLnhtbE1vZGUpO1xufVxuLyoqXG4gKiBHZXRzIGEgbm9kZSdzIHByb3AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjYXRlZ29yeSBBdHRyaWJ1dGVzXG4gKiBAcGFyYW0gZWwgLSBFbGVtZW50IHRvIGdldCB0aGUgcHJvcCBvZi5cbiAqIEBwYXJhbSBuYW1lIC0gTmFtZSBvZiB0aGUgcHJvcC5cbiAqIEBwYXJhbSB4bWxNb2RlIC0gRGlzYWJsZSBoYW5kbGluZyBvZiBzcGVjaWFsIEhUTUwgYXR0cmlidXRlcy5cbiAqIEByZXR1cm5zIFRoZSBwcm9wJ3MgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGdldFByb3AoZWwsIG5hbWUsIHhtbE1vZGUpIHtcbiAgICByZXR1cm4gbmFtZSBpbiBlbFxuICAgICAgICA/IC8vIEB0cy1leHBlY3QtZXJyb3IgVFMgZG9lc24ndCBsaWtlIHVzIGFjY2Vzc2luZyB0aGUgdmFsdWUgZGlyZWN0bHkgaGVyZS5cbiAgICAgICAgICAgIGVsW25hbWVdXG4gICAgICAgIDogIXhtbE1vZGUgJiYgcmJvb2xlYW4udGVzdChuYW1lKVxuICAgICAgICAgICAgPyBnZXRBdHRyKGVsLCBuYW1lLCBmYWxzZSkgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgOiBnZXRBdHRyKGVsLCBuYW1lLCB4bWxNb2RlKTtcbn1cbi8qKlxuICogU2V0cyB0aGUgdmFsdWUgb2YgYSBwcm9wLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gZWwgLSBUaGUgZWxlbWVudCB0byBzZXQgdGhlIHByb3Agb24uXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBwcm9wJ3MgbmFtZS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBwcm9wJ3MgdmFsdWUuXG4gKiBAcGFyYW0geG1sTW9kZSAtIERpc2FibGUgaGFuZGxpbmcgb2Ygc3BlY2lhbCBIVE1MIGF0dHJpYnV0ZXMuXG4gKi9cbmZ1bmN0aW9uIHNldFByb3AoZWwsIG5hbWUsIHZhbHVlLCB4bWxNb2RlKSB7XG4gICAgaWYgKG5hbWUgaW4gZWwpIHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBPdmVycmlkaW5nIHZhbHVlXG4gICAgICAgIGVsW25hbWVdID0gdmFsdWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzZXRBdHRyKGVsLCBuYW1lLCAheG1sTW9kZSAmJiByYm9vbGVhbi50ZXN0KG5hbWUpXG4gICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgOiBgJHt2YWx1ZX1gKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gcHJvcChuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBfYTtcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzWzBdO1xuICAgICAgICBpZiAoIWVsKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgICBjYXNlICdzdHlsZSc6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuY3NzKCk7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHByb3BlcnR5KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlbaV0gPSBrZXlzW2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwcm9wZXJ0eS5sZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcGVydHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICd0YWdOYW1lJzpcbiAgICAgICAgICAgIGNhc2UgJ25vZGVOYW1lJzoge1xuICAgICAgICAgICAgICAgIGlmICghaXNUYWcoZWwpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHJldHVybiBlbC5uYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdocmVmJzpcbiAgICAgICAgICAgIGNhc2UgJ3NyYyc6IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVGFnKGVsKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wID0gKF9hID0gZWwuYXR0cmlicykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW25hbWVdO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgVVJMICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgICAgICAgICAoKG5hbWUgPT09ICdocmVmJyAmJiAoZWwudGFnTmFtZSA9PT0gJ2EnIHx8IGVsLnRhZ05hbWUgPT09ICdsaW5rJykpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA9PT0gJ3NyYycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWwudGFnTmFtZSA9PT0gJ2ltZycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwudGFnTmFtZSA9PT0gJ2lmcmFtZScgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwudGFnTmFtZSA9PT0gJ2F1ZGlvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbC50YWdOYW1lID09PSAndmlkZW8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsLnRhZ05hbWUgPT09ICdzb3VyY2UnKSkpICYmXG4gICAgICAgICAgICAgICAgICAgIHByb3AgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuYmFzZVVSSSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVSTChwcm9wLCB0aGlzLm9wdGlvbnMuYmFzZVVSSSkuaHJlZjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdpbm5lclRleHQnOiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlubmVyVGV4dChlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICd0ZXh0Q29udGVudCc6IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGV4dENvbnRlbnQoZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnb3V0ZXJIVE1MJzoge1xuICAgICAgICAgICAgICAgIGlmIChlbC50eXBlID09PSBFbGVtZW50VHlwZS5Sb290KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5odG1sKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS53cmFwKCc8Y29udGFpbmVyIC8+JykucGFyZW50KCkuaHRtbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnaW5uZXJIVE1MJzoge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmh0bWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVGFnKGVsKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UHJvcChlbCwgbmFtZSwgdGhpcy5vcHRpb25zLnhtbE1vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gJ29iamVjdCcgfHwgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG5hbWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQmFkIGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cy4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkb21FYWNoKHRoaXMsIChlbCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpc1RhZyhlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0UHJvcChlbCwgbmFtZSwgdmFsdWUuY2FsbChlbCwgaSwgZ2V0UHJvcChlbCwgbmFtZSwgdGhpcy5vcHRpb25zLnhtbE1vZGUpKSwgdGhpcy5vcHRpb25zLnhtbE1vZGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkb21FYWNoKHRoaXMsIChlbCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc1RhZyhlbCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBuYW1lID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IG5hbWVba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgc2V0UHJvcChlbCwga2V5LCB2YWwsIHRoaXMub3B0aW9ucy54bWxNb2RlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRQcm9wKGVsLCBuYW1lLCB2YWx1ZSwgdGhpcy5vcHRpb25zLnhtbE1vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbi8qKlxuICogU2V0cyB0aGUgdmFsdWUgb2YgYSBkYXRhIGF0dHJpYnV0ZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIGVsZW0gLSBUaGUgZWxlbWVudCB0byBzZXQgdGhlIGRhdGEgYXR0cmlidXRlIG9uLlxuICogQHBhcmFtIG5hbWUgLSBUaGUgZGF0YSBhdHRyaWJ1dGUncyBuYW1lLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIGRhdGEgYXR0cmlidXRlJ3MgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHNldERhdGEoZWxlbSwgbmFtZSwgdmFsdWUpIHtcbiAgICB2YXIgX2E7XG4gICAgKF9hID0gZWxlbS5kYXRhKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAoZWxlbS5kYXRhID0ge30pO1xuICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gJ29iamVjdCcpXG4gICAgICAgIE9iamVjdC5hc3NpZ24oZWxlbS5kYXRhLCBuYW1lKTtcbiAgICBlbHNlIGlmICh0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBlbGVtLmRhdGFbbmFtZV0gPSB2YWx1ZTtcbiAgICB9XG59XG4vKipcbiAqIFJlYWQgX2FsbF8gSFRNTDUgYGRhdGEtKmAgYXR0cmlidXRlcyBmcm9tIHRoZSBlcXVpdmFsZW50IEhUTUw1IGBkYXRhLSpgXG4gKiBhdHRyaWJ1dGUsIGFuZCBjYWNoZSB0aGUgdmFsdWUgaW4gdGhlIG5vZGUncyBpbnRlcm5hbCBkYXRhIHN0b3JlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY2F0ZWdvcnkgQXR0cmlidXRlc1xuICogQHBhcmFtIGVsIC0gRWxlbWVudCB0byBnZXQgdGhlIGRhdGEgYXR0cmlidXRlIG9mLlxuICogQHJldHVybnMgQSBtYXAgd2l0aCBhbGwgb2YgdGhlIGRhdGEgYXR0cmlidXRlcy5cbiAqL1xuZnVuY3Rpb24gcmVhZEFsbERhdGEoZWwpIHtcbiAgICBmb3IgKGNvbnN0IGRvbU5hbWUgb2YgT2JqZWN0LmtleXMoZWwuYXR0cmlicykpIHtcbiAgICAgICAgaWYgKCFkb21OYW1lLnN0YXJ0c1dpdGgoZGF0YUF0dHJQcmVmaXgpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc05hbWUgPSBjYW1lbENhc2UoZG9tTmFtZS5zbGljZShkYXRhQXR0clByZWZpeC5sZW5ndGgpKTtcbiAgICAgICAgaWYgKCFoYXNPd24oZWwuZGF0YSwganNOYW1lKSkge1xuICAgICAgICAgICAgZWwuZGF0YVtqc05hbWVdID0gcGFyc2VEYXRhVmFsdWUoZWwuYXR0cmlic1tkb21OYW1lXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVsLmRhdGE7XG59XG4vKipcbiAqIFJlYWQgdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGUgZnJvbSB0aGUgZXF1aXZhbGVudCBIVE1MNSBgZGF0YS0qYCBhdHRyaWJ1dGUsXG4gKiBhbmQgKGlmIHByZXNlbnQpIGNhY2hlIHRoZSB2YWx1ZSBpbiB0aGUgbm9kZSdzIGludGVybmFsIGRhdGEgc3RvcmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjYXRlZ29yeSBBdHRyaWJ1dGVzXG4gKiBAcGFyYW0gZWwgLSBFbGVtZW50IHRvIGdldCB0aGUgZGF0YSBhdHRyaWJ1dGUgb2YuXG4gKiBAcGFyYW0gbmFtZSAtIE5hbWUgb2YgdGhlIGRhdGEgYXR0cmlidXRlLlxuICogQHJldHVybnMgVGhlIGRhdGEgYXR0cmlidXRlJ3MgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHJlYWREYXRhKGVsLCBuYW1lKSB7XG4gICAgY29uc3QgZG9tTmFtZSA9IGRhdGFBdHRyUHJlZml4ICsgY3NzQ2FzZShuYW1lKTtcbiAgICBjb25zdCBkYXRhID0gZWwuZGF0YTtcbiAgICBpZiAoaGFzT3duKGRhdGEsIG5hbWUpKSB7XG4gICAgICAgIHJldHVybiBkYXRhW25hbWVdO1xuICAgIH1cbiAgICBpZiAoaGFzT3duKGVsLmF0dHJpYnMsIGRvbU5hbWUpKSB7XG4gICAgICAgIHJldHVybiAoZGF0YVtuYW1lXSA9IHBhcnNlRGF0YVZhbHVlKGVsLmF0dHJpYnNbZG9tTmFtZV0pKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbi8qKlxuICogQ29lcmNlIHN0cmluZyBkYXRhLSogYXR0cmlidXRlcyB0byB0aGVpciBjb3JyZXNwb25kaW5nIEphdmFTY3JpcHQgcHJpbWl0aXZlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNhdGVnb3J5IEF0dHJpYnV0ZXNcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBwYXJzZS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRGF0YVZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSAnbnVsbCcpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGlmICh2YWx1ZSA9PT0gJ3RydWUnKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAodmFsdWUgPT09ICdmYWxzZScpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBudW0gPSBOdW1iZXIodmFsdWUpO1xuICAgIGlmICh2YWx1ZSA9PT0gU3RyaW5nKG51bSkpXG4gICAgICAgIHJldHVybiBudW07XG4gICAgaWYgKHJicmFjZS50ZXN0KHZhbHVlKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgIC8qIElnbm9yZSAqL1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkYXRhKG5hbWUsIHZhbHVlKSB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IGVsZW0gPSB0aGlzWzBdO1xuICAgIGlmICghZWxlbSB8fCAhaXNUYWcoZWxlbSkpXG4gICAgICAgIHJldHVybjtcbiAgICBjb25zdCBkYXRhRWwgPSBlbGVtO1xuICAgIChfYSA9IGRhdGFFbC5kYXRhKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAoZGF0YUVsLmRhdGEgPSB7fSk7XG4gICAgLy8gUmV0dXJuIHRoZSBlbnRpcmUgZGF0YSBvYmplY3QgaWYgbm8gZGF0YSBzcGVjaWZpZWRcbiAgICBpZiAobmFtZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZWFkQWxsRGF0YShkYXRhRWwpO1xuICAgIH1cbiAgICAvLyBTZXQgdGhlIHZhbHVlICh3aXRoIGF0dHIgbWFwIHN1cHBvcnQpXG4gICAgaWYgKHR5cGVvZiBuYW1lID09PSAnb2JqZWN0JyB8fCB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRvbUVhY2godGhpcywgKGVsKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNUYWcoZWwpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBuYW1lID09PSAnb2JqZWN0JylcbiAgICAgICAgICAgICAgICAgICAgc2V0RGF0YShlbCwgbmFtZSk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBzZXREYXRhKGVsLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIHJlYWREYXRhKGRhdGFFbCwgbmFtZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdmFsKHZhbHVlKSB7XG4gICAgY29uc3QgcXVlcnlpbmcgPSBhcmd1bWVudHMubGVuZ3RoID09PSAwO1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzWzBdO1xuICAgIGlmICghZWxlbWVudCB8fCAhaXNUYWcoZWxlbWVudCkpXG4gICAgICAgIHJldHVybiBxdWVyeWluZyA/IHVuZGVmaW5lZCA6IHRoaXM7XG4gICAgc3dpdGNoIChlbGVtZW50Lm5hbWUpIHtcbiAgICAgICAgY2FzZSAndGV4dGFyZWEnOiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdzZWxlY3QnOiB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLmZpbmQoJ29wdGlvbjpzZWxlY3RlZCcpO1xuICAgICAgICAgICAgaWYgKCFxdWVyeWluZykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF0dHIoJ211bHRpcGxlJykgPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmZpbmQoJ29wdGlvbicpLnJlbW92ZUF0dHIoJ3NlbGVjdGVkJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHZhbCBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kKGBvcHRpb25bdmFsdWU9XCIke3ZhbH1cIl1gKS5hdHRyKCdzZWxlY3RlZCcsICcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdHRyKCdtdWx0aXBsZScpXG4gICAgICAgICAgICAgICAgPyBvcHRpb24udG9BcnJheSgpLm1hcCgoZWwpID0+IHRleHQoZWwuY2hpbGRyZW4pKVxuICAgICAgICAgICAgICAgIDogb3B0aW9uLmF0dHIoJ3ZhbHVlJyk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICBjYXNlICdvcHRpb24nOiB7XG4gICAgICAgICAgICByZXR1cm4gcXVlcnlpbmdcbiAgICAgICAgICAgICAgICA/IHRoaXMuYXR0cigndmFsdWUnKVxuICAgICAgICAgICAgICAgIDogdGhpcy5hdHRyKCd2YWx1ZScsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuLyoqXG4gKiBSZW1vdmUgYW4gYXR0cmlidXRlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gZWxlbSAtIE5vZGUgdG8gcmVtb3ZlIGF0dHJpYnV0ZSBmcm9tLlxuICogQHBhcmFtIG5hbWUgLSBOYW1lIG9mIHRoZSBhdHRyaWJ1dGUgdG8gcmVtb3ZlLlxuICovXG5mdW5jdGlvbiByZW1vdmVBdHRyaWJ1dGUoZWxlbSwgbmFtZSkge1xuICAgIGlmICghZWxlbS5hdHRyaWJzIHx8ICFoYXNPd24oZWxlbS5hdHRyaWJzLCBuYW1lKSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGRlbGV0ZSBlbGVtLmF0dHJpYnNbbmFtZV07XG59XG4vKipcbiAqIFNwbGl0cyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIG5hbWVzIHRvIGluZGl2aWR1YWwgbmFtZXMuXG4gKlxuICogQGNhdGVnb3J5IEF0dHJpYnV0ZXNcbiAqIEBwYXJhbSBuYW1lcyAtIE5hbWVzIHRvIHNwbGl0LlxuICogQHJldHVybnMgLSBTcGxpdCBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gc3BsaXROYW1lcyhuYW1lcykge1xuICAgIHJldHVybiBuYW1lcyA/IG5hbWVzLnRyaW0oKS5zcGxpdChyc3BhY2UpIDogW107XG59XG4vKipcbiAqIE1ldGhvZCBmb3IgcmVtb3ZpbmcgYXR0cmlidXRlcyBieSBgbmFtZWAuXG4gKlxuICogQGNhdGVnb3J5IEF0dHJpYnV0ZXNcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJy5wZWFyJykucmVtb3ZlQXR0cignY2xhc3MnKS5wcm9wKCdvdXRlckhUTUwnKTtcbiAqIC8vPT4gPGxpPlBlYXI8L2xpPlxuICpcbiAqICQoJy5hcHBsZScpLmF0dHIoJ2lkJywgJ2Zhdm9yaXRlJyk7XG4gKiAkKCcuYXBwbGUnKS5yZW1vdmVBdHRyKCdpZCBjbGFzcycpLnByb3AoJ291dGVySFRNTCcpO1xuICogLy89PiA8bGk+QXBwbGU8L2xpPlxuICogYGBgXG4gKlxuICogQHBhcmFtIG5hbWUgLSBOYW1lIG9mIHRoZSBhdHRyaWJ1dGUuXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgaXRzZWxmLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9yZW1vdmVBdHRyL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUF0dHIobmFtZSkge1xuICAgIGNvbnN0IGF0dHJOYW1lcyA9IHNwbGl0TmFtZXMobmFtZSk7XG4gICAgZm9yIChjb25zdCBhdHRyTmFtZSBvZiBhdHRyTmFtZXMpIHtcbiAgICAgICAgZG9tRWFjaCh0aGlzLCAoZWxlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzVGFnKGVsZW0pKVxuICAgICAgICAgICAgICAgIHJlbW92ZUF0dHJpYnV0ZShlbGVtLCBhdHRyTmFtZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbn1cbi8qKlxuICogQ2hlY2sgdG8gc2VlIGlmIF9hbnlfIG9mIHRoZSBtYXRjaGVkIGVsZW1lbnRzIGhhdmUgdGhlIGdpdmVuIGBjbGFzc05hbWVgLlxuICpcbiAqIEBjYXRlZ29yeSBBdHRyaWJ1dGVzXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCcucGVhcicpLmhhc0NsYXNzKCdwZWFyJyk7XG4gKiAvLz0+IHRydWVcbiAqXG4gKiAkKCdhcHBsZScpLmhhc0NsYXNzKCdmcnVpdCcpO1xuICogLy89PiBmYWxzZVxuICpcbiAqICQoJ2xpJykuaGFzQ2xhc3MoJ3BlYXInKTtcbiAqIC8vPT4gdHJ1ZVxuICogYGBgXG4gKlxuICogQHBhcmFtIGNsYXNzTmFtZSAtIE5hbWUgb2YgdGhlIGNsYXNzLlxuICogQHJldHVybnMgSW5kaWNhdGVzIGlmIGFuIGVsZW1lbnQgaGFzIHRoZSBnaXZlbiBgY2xhc3NOYW1lYC5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vaGFzQ2xhc3MvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzQ2xhc3MoY2xhc3NOYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheSgpLnNvbWUoKGVsZW0pID0+IHtcbiAgICAgICAgY29uc3QgY2xhenogPSBpc1RhZyhlbGVtKSAmJiBlbGVtLmF0dHJpYnNbJ2NsYXNzJ107XG4gICAgICAgIGxldCBpZHggPSAtMTtcbiAgICAgICAgaWYgKGNsYXp6ICYmIGNsYXNzTmFtZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB3aGlsZSAoKGlkeCA9IGNsYXp6LmluZGV4T2YoY2xhc3NOYW1lLCBpZHggKyAxKSkgPiAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IGlkeCArIGNsYXNzTmFtZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgaWYgKChpZHggPT09IDAgfHwgcnNwYWNlLnRlc3QoY2xhenpbaWR4IC0gMV0pKSAmJlxuICAgICAgICAgICAgICAgICAgICAoZW5kID09PSBjbGF6ei5sZW5ndGggfHwgcnNwYWNlLnRlc3QoY2xhenpbZW5kXSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG59XG4vKipcbiAqIEFkZHMgY2xhc3MoZXMpIHRvIGFsbCBvZiB0aGUgbWF0Y2hlZCBlbGVtZW50cy4gQWxzbyBhY2NlcHRzIGEgYGZ1bmN0aW9uYC5cbiAqXG4gKiBAY2F0ZWdvcnkgQXR0cmlidXRlc1xuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgnLnBlYXInKS5hZGRDbGFzcygnZnJ1aXQnKS5wcm9wKCdvdXRlckhUTUwnKTtcbiAqIC8vPT4gPGxpIGNsYXNzPVwicGVhciBmcnVpdFwiPlBlYXI8L2xpPlxuICpcbiAqICQoJy5hcHBsZScpLmFkZENsYXNzKCdmcnVpdCByZWQnKS5wcm9wKCdvdXRlckhUTUwnKTtcbiAqIC8vPT4gPGxpIGNsYXNzPVwiYXBwbGUgZnJ1aXQgcmVkXCI+QXBwbGU8L2xpPlxuICogYGBgXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gTmFtZSBvZiBuZXcgY2xhc3MuXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgaXRzZWxmLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9hZGRDbGFzcy99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRDbGFzcyh2YWx1ZSkge1xuICAgIC8vIFN1cHBvcnQgZnVuY3Rpb25zXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gZG9tRWFjaCh0aGlzLCAoZWwsIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChpc1RhZyhlbCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBlbC5hdHRyaWJzWydjbGFzcyddIHx8ICcnO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzLmNhbGwoW2VsXSwgdmFsdWUuY2FsbChlbCwgaSwgY2xhc3NOYW1lKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBSZXR1cm4gaWYgbm8gdmFsdWUgb3Igbm90IGEgc3RyaW5nIG9yIGZ1bmN0aW9uXG4gICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICBjb25zdCBjbGFzc05hbWVzID0gdmFsdWUuc3BsaXQocnNwYWNlKTtcbiAgICBjb25zdCBudW1FbGVtZW50cyA9IHRoaXMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtRWxlbWVudHM7IGkrKykge1xuICAgICAgICBjb25zdCBlbCA9IHRoaXNbaV07XG4gICAgICAgIC8vIElmIHNlbGVjdGVkIGVsZW1lbnQgaXNuJ3QgYSB0YWcsIG1vdmUgb25cbiAgICAgICAgaWYgKCFpc1RhZyhlbCkpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgLy8gSWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGNsYXNzZXMg4oCUIGFsd2F5cyBzZXQgeG1sTW9kZSB0byBmYWxzZSBoZXJlLCBhcyBpdCBkb2Vzbid0IG1hdHRlciBmb3IgY2xhc3Nlc1xuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBnZXRBdHRyKGVsLCAnY2xhc3MnLCBmYWxzZSk7XG4gICAgICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgICAgICAgIGxldCBzZXRDbGFzcyA9IGAgJHtjbGFzc05hbWV9IGA7XG4gICAgICAgICAgICAvLyBDaGVjayBpZiBjbGFzcyBhbHJlYWR5IGV4aXN0c1xuICAgICAgICAgICAgZm9yIChjb25zdCBjbiBvZiBjbGFzc05hbWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXBwZW5kQ2xhc3MgPSBgJHtjbn0gYDtcbiAgICAgICAgICAgICAgICBpZiAoIXNldENsYXNzLmluY2x1ZGVzKGAgJHthcHBlbmRDbGFzc31gKSlcbiAgICAgICAgICAgICAgICAgICAgc2V0Q2xhc3MgKz0gYXBwZW5kQ2xhc3M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRBdHRyKGVsLCAnY2xhc3MnLCBzZXRDbGFzcy50cmltKCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2V0QXR0cihlbCwgJ2NsYXNzJywgY2xhc3NOYW1lcy5qb2luKCcgJykudHJpbSgpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbn1cbi8qKlxuICogUmVtb3ZlcyBvbmUgb3IgbW9yZSBzcGFjZS1zZXBhcmF0ZWQgY2xhc3NlcyBmcm9tIHRoZSBzZWxlY3RlZCBlbGVtZW50cy4gSWYgbm9cbiAqIGBjbGFzc05hbWVgIGlzIGRlZmluZWQsIGFsbCBjbGFzc2VzIHdpbGwgYmUgcmVtb3ZlZC4gQWxzbyBhY2NlcHRzIGFcbiAqIGBmdW5jdGlvbmAuXG4gKlxuICogQGNhdGVnb3J5IEF0dHJpYnV0ZXNcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJy5wZWFyJykucmVtb3ZlQ2xhc3MoJ3BlYXInKS5wcm9wKCdvdXRlckhUTUwnKTtcbiAqIC8vPT4gPGxpIGNsYXNzPVwiXCI+UGVhcjwvbGk+XG4gKlxuICogJCgnLmFwcGxlJykuYWRkQ2xhc3MoJ3JlZCcpLnJlbW92ZUNsYXNzKCkucHJvcCgnb3V0ZXJIVE1MJyk7XG4gKiAvLz0+IDxsaSBjbGFzcz1cIlwiPkFwcGxlPC9saT5cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBuYW1lIC0gTmFtZSBvZiB0aGUgY2xhc3MuIElmIG5vdCBzcGVjaWZpZWQsIHJlbW92ZXMgYWxsIGVsZW1lbnRzLlxuICogQHJldHVybnMgVGhlIGluc3RhbmNlIGl0c2VsZi5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vcmVtb3ZlQ2xhc3MvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQ2xhc3MobmFtZSkge1xuICAgIC8vIEhhbmRsZSBpZiB2YWx1ZSBpcyBhIGZ1bmN0aW9uXG4gICAgaWYgKHR5cGVvZiBuYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBkb21FYWNoKHRoaXMsIChlbCwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzVGFnKGVsKSkge1xuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzLmNhbGwoW2VsXSwgbmFtZS5jYWxsKGVsLCBpLCBlbC5hdHRyaWJzWydjbGFzcyddIHx8ICcnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBjbGFzc2VzID0gc3BsaXROYW1lcyhuYW1lKTtcbiAgICBjb25zdCBudW1DbGFzc2VzID0gY2xhc3Nlcy5sZW5ndGg7XG4gICAgY29uc3QgcmVtb3ZlQWxsID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMDtcbiAgICByZXR1cm4gZG9tRWFjaCh0aGlzLCAoZWwpID0+IHtcbiAgICAgICAgaWYgKCFpc1RhZyhlbCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChyZW1vdmVBbGwpIHtcbiAgICAgICAgICAgIC8vIFNob3J0IGNpcmN1aXQgdGhlIHJlbW92ZSBhbGwgY2FzZSBhcyB0aGlzIGlzIHRoZSBuaWNlIG9uZVxuICAgICAgICAgICAgZWwuYXR0cmlic1snY2xhc3MnXSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZWxDbGFzc2VzID0gc3BsaXROYW1lcyhlbC5hdHRyaWJzWydjbGFzcyddKTtcbiAgICAgICAgICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG51bUNsYXNzZXM7IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZWxDbGFzc2VzLmluZGV4T2YoY2xhc3Nlc1tqXSk7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBlbENsYXNzZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAqIFdlIGhhdmUgdG8gZG8gYW5vdGhlciBwYXNzIHRvIGVuc3VyZSB0aGF0IHRoZXJlIGFyZSBub3QgZHVwbGljYXRlXG4gICAgICAgICAgICAgICAgICAgICAqIGNsYXNzZXMgbGlzdGVkXG4gICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICBqLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICBlbC5hdHRyaWJzWydjbGFzcyddID0gZWxDbGFzc2VzLmpvaW4oJyAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuLyoqXG4gKiBBZGQgb3IgcmVtb3ZlIGNsYXNzKGVzKSBmcm9tIHRoZSBtYXRjaGVkIGVsZW1lbnRzLCBkZXBlbmRpbmcgb24gZWl0aGVyIHRoZVxuICogY2xhc3MncyBwcmVzZW5jZSBvciB0aGUgdmFsdWUgb2YgdGhlIHN3aXRjaCBhcmd1bWVudC4gQWxzbyBhY2NlcHRzIGFcbiAqIGBmdW5jdGlvbmAuXG4gKlxuICogQGNhdGVnb3J5IEF0dHJpYnV0ZXNcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJy5hcHBsZS5ncmVlbicpLnRvZ2dsZUNsYXNzKCdmcnVpdCBncmVlbiByZWQnKS5wcm9wKCdvdXRlckhUTUwnKTtcbiAqIC8vPT4gPGxpIGNsYXNzPVwiYXBwbGUgZnJ1aXQgcmVkXCI+QXBwbGU8L2xpPlxuICpcbiAqICQoJy5hcHBsZS5ncmVlbicpLnRvZ2dsZUNsYXNzKCdmcnVpdCBncmVlbiByZWQnLCB0cnVlKS5wcm9wKCdvdXRlckhUTUwnKTtcbiAqIC8vPT4gPGxpIGNsYXNzPVwiYXBwbGUgZ3JlZW4gZnJ1aXQgcmVkXCI+QXBwbGU8L2xpPlxuICogYGBgXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gTmFtZSBvZiB0aGUgY2xhc3MuIENhbiBhbHNvIGJlIGEgZnVuY3Rpb24uXG4gKiBAcGFyYW0gc3RhdGVWYWwgLSBJZiBzcGVjaWZpZWQgdGhlIHN0YXRlIG9mIHRoZSBjbGFzcy5cbiAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBpdHNlbGYuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL3RvZ2dsZUNsYXNzL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUNsYXNzKHZhbHVlLCBzdGF0ZVZhbCkge1xuICAgIC8vIFN1cHBvcnQgZnVuY3Rpb25zXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gZG9tRWFjaCh0aGlzLCAoZWwsIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChpc1RhZyhlbCkpIHtcbiAgICAgICAgICAgICAgICB0b2dnbGVDbGFzcy5jYWxsKFtlbF0sIHZhbHVlLmNhbGwoZWwsIGksIGVsLmF0dHJpYnNbJ2NsYXNzJ10gfHwgJycsIHN0YXRlVmFsKSwgc3RhdGVWYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gUmV0dXJuIGlmIG5vIHZhbHVlIG9yIG5vdCBhIHN0cmluZyBvciBmdW5jdGlvblxuICAgIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJylcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IHZhbHVlLnNwbGl0KHJzcGFjZSk7XG4gICAgY29uc3QgbnVtQ2xhc3NlcyA9IGNsYXNzTmFtZXMubGVuZ3RoO1xuICAgIGNvbnN0IHN0YXRlID0gdHlwZW9mIHN0YXRlVmFsID09PSAnYm9vbGVhbicgPyAoc3RhdGVWYWwgPyAxIDogLTEpIDogMDtcbiAgICBjb25zdCBudW1FbGVtZW50cyA9IHRoaXMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtRWxlbWVudHM7IGkrKykge1xuICAgICAgICBjb25zdCBlbCA9IHRoaXNbaV07XG4gICAgICAgIC8vIElmIHNlbGVjdGVkIGVsZW1lbnQgaXNuJ3QgYSB0YWcsIG1vdmUgb25cbiAgICAgICAgaWYgKCFpc1RhZyhlbCkpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY29uc3QgZWxlbWVudENsYXNzZXMgPSBzcGxpdE5hbWVzKGVsLmF0dHJpYnNbJ2NsYXNzJ10pO1xuICAgICAgICAvLyBDaGVjayBpZiBjbGFzcyBhbHJlYWR5IGV4aXN0c1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG51bUNsYXNzZXM7IGorKykge1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGNsYXNzIG5hbWUgaXMgY3VycmVudGx5IGRlZmluZWRcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZWxlbWVudENsYXNzZXMuaW5kZXhPZihjbGFzc05hbWVzW2pdKTtcbiAgICAgICAgICAgIC8vIEFkZCBpZiBzdGF0ZVZhbHVlID09PSB0cnVlIG9yIHdlIGFyZSB0b2dnbGluZyBhbmQgdGhlcmUgaXMgbm8gdmFsdWVcbiAgICAgICAgICAgIGlmIChzdGF0ZSA+PSAwICYmIGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRDbGFzc2VzLnB1c2goY2xhc3NOYW1lc1tqXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzdGF0ZSA8PSAwICYmIGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSByZW1vdmUgYnV0IG9ubHkgaWYgdGhlIGl0ZW0gZXhpc3RzXG4gICAgICAgICAgICAgICAgZWxlbWVudENsYXNzZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbC5hdHRyaWJzWydjbGFzcyddID0gZWxlbWVudENsYXNzZXMuam9pbignICcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWF0dHJpYnV0ZXMuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/cheerio/dist/esm/api/attributes.js\n"); + +/***/ }), + +/***/ "(rsc)/./node_modules/cheerio/dist/esm/api/css.js": +/*!**************************************************!*\ + !*** ./node_modules/cheerio/dist/esm/api/css.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ css: () => (/* binding */ css)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"(rsc)/./node_modules/cheerio/dist/esm/utils.js\");\n/* harmony import */ var domhandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! domhandler */ \"(rsc)/./node_modules/domhandler/lib/esm/index.js\");\n\n\n/**\n * Set multiple CSS properties for every matched element.\n *\n * @category CSS\n * @param prop - The names of the properties.\n * @param val - The new values.\n * @returns The instance itself.\n * @see {@link https://api.jquery.com/css/}\n */\nfunction css(prop, val) {\n if ((prop != null && val != null) ||\n // When `prop` is a \"plain\" object\n (typeof prop === 'object' && !Array.isArray(prop))) {\n return (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.domEach)(this, (el, i) => {\n if ((0,domhandler__WEBPACK_IMPORTED_MODULE_1__.isTag)(el)) {\n // `prop` can't be an array here anymore.\n setCss(el, prop, val, i);\n }\n });\n }\n if (this.length === 0) {\n return undefined;\n }\n return getCss(this[0], prop);\n}\n/**\n * Set styles of all elements.\n *\n * @private\n * @param el - Element to set style of.\n * @param prop - Name of property.\n * @param value - Value to set property to.\n * @param idx - Optional index within the selection.\n */\nfunction setCss(el, prop, value, idx) {\n if (typeof prop === 'string') {\n const styles = getCss(el);\n const val = typeof value === 'function' ? value.call(el, idx, styles[prop]) : value;\n if (val === '') {\n delete styles[prop];\n }\n else if (val != null) {\n styles[prop] = val;\n }\n el.attribs['style'] = stringify(styles);\n }\n else if (typeof prop === 'object') {\n const keys = Object.keys(prop);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n setCss(el, k, prop[k], i);\n }\n }\n}\nfunction getCss(el, prop) {\n if (!el || !(0,domhandler__WEBPACK_IMPORTED_MODULE_1__.isTag)(el))\n return;\n const styles = parse(el.attribs['style']);\n if (typeof prop === 'string') {\n return styles[prop];\n }\n if (Array.isArray(prop)) {\n const newStyles = {};\n for (const item of prop) {\n if (styles[item] != null) {\n newStyles[item] = styles[item];\n }\n }\n return newStyles;\n }\n return styles;\n}\n/**\n * Stringify `obj` to styles.\n *\n * @private\n * @category CSS\n * @param obj - Object to stringify.\n * @returns The serialized styles.\n */\nfunction stringify(obj) {\n return Object.keys(obj).reduce((str, prop) => `${str}${str ? ' ' : ''}${prop}: ${obj[prop]};`, '');\n}\n/**\n * Parse `styles`.\n *\n * @private\n * @category CSS\n * @param styles - Styles to be parsed.\n * @returns The parsed styles.\n */\nfunction parse(styles) {\n styles = (styles || '').trim();\n if (!styles)\n return {};\n const obj = {};\n let key;\n for (const str of styles.split(';')) {\n const n = str.indexOf(':');\n // If there is no :, or if it is the first/last character, add to the previous item's value\n if (n < 1 || n === str.length - 1) {\n const trimmed = str.trimEnd();\n if (trimmed.length > 0 && key !== undefined) {\n obj[key] += `;${trimmed}`;\n }\n }\n else {\n key = str.slice(0, n).trim();\n obj[key] = str.slice(n + 1).trim();\n }\n }\n return obj;\n}\n//# sourceMappingURL=css.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvY2hlZXJpby9kaXN0L2VzbS9hcGkvY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFzQztBQUNIO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxlQUFlLGtEQUFPO0FBQ3RCLGdCQUFnQixpREFBSztBQUNyQjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpQkFBaUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGlEQUFLO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELElBQUksRUFBRSxlQUFlLEVBQUUsS0FBSyxJQUFJLFdBQVc7QUFDaEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsRUFBRSxRQUFRO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vaG9saWRheS1kZWFsLWZpbmRlci8uL25vZGVfbW9kdWxlcy9jaGVlcmlvL2Rpc3QvZXNtL2FwaS9jc3MuanM/MTI4ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkb21FYWNoIH0gZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IHsgaXNUYWcgfSBmcm9tICdkb21oYW5kbGVyJztcbi8qKlxuICogU2V0IG11bHRpcGxlIENTUyBwcm9wZXJ0aWVzIGZvciBldmVyeSBtYXRjaGVkIGVsZW1lbnQuXG4gKlxuICogQGNhdGVnb3J5IENTU1xuICogQHBhcmFtIHByb3AgLSBUaGUgbmFtZXMgb2YgdGhlIHByb3BlcnRpZXMuXG4gKiBAcGFyYW0gdmFsIC0gVGhlIG5ldyB2YWx1ZXMuXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgaXRzZWxmLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9jc3MvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3NzKHByb3AsIHZhbCkge1xuICAgIGlmICgocHJvcCAhPSBudWxsICYmIHZhbCAhPSBudWxsKSB8fFxuICAgICAgICAvLyBXaGVuIGBwcm9wYCBpcyBhIFwicGxhaW5cIiBvYmplY3RcbiAgICAgICAgKHR5cGVvZiBwcm9wID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShwcm9wKSkpIHtcbiAgICAgICAgcmV0dXJuIGRvbUVhY2godGhpcywgKGVsLCBpKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNUYWcoZWwpKSB7XG4gICAgICAgICAgICAgICAgLy8gYHByb3BgIGNhbid0IGJlIGFuIGFycmF5IGhlcmUgYW55bW9yZS5cbiAgICAgICAgICAgICAgICBzZXRDc3MoZWwsIHByb3AsIHZhbCwgaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGdldENzcyh0aGlzWzBdLCBwcm9wKTtcbn1cbi8qKlxuICogU2V0IHN0eWxlcyBvZiBhbGwgZWxlbWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBlbCAtIEVsZW1lbnQgdG8gc2V0IHN0eWxlIG9mLlxuICogQHBhcmFtIHByb3AgLSBOYW1lIG9mIHByb3BlcnR5LlxuICogQHBhcmFtIHZhbHVlIC0gVmFsdWUgdG8gc2V0IHByb3BlcnR5IHRvLlxuICogQHBhcmFtIGlkeCAtIE9wdGlvbmFsIGluZGV4IHdpdGhpbiB0aGUgc2VsZWN0aW9uLlxuICovXG5mdW5jdGlvbiBzZXRDc3MoZWwsIHByb3AsIHZhbHVlLCBpZHgpIHtcbiAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IGdldENzcyhlbCk7XG4gICAgICAgIGNvbnN0IHZhbCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLmNhbGwoZWwsIGlkeCwgc3R5bGVzW3Byb3BdKSA6IHZhbHVlO1xuICAgICAgICBpZiAodmFsID09PSAnJykge1xuICAgICAgICAgICAgZGVsZXRlIHN0eWxlc1twcm9wXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgIT0gbnVsbCkge1xuICAgICAgICAgICAgc3R5bGVzW3Byb3BdID0gdmFsO1xuICAgICAgICB9XG4gICAgICAgIGVsLmF0dHJpYnNbJ3N0eWxlJ10gPSBzdHJpbmdpZnkoc3R5bGVzKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIHByb3AgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhwcm9wKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBrID0ga2V5c1tpXTtcbiAgICAgICAgICAgIHNldENzcyhlbCwgaywgcHJvcFtrXSwgaSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBnZXRDc3MoZWwsIHByb3ApIHtcbiAgICBpZiAoIWVsIHx8ICFpc1RhZyhlbCkpXG4gICAgICAgIHJldHVybjtcbiAgICBjb25zdCBzdHlsZXMgPSBwYXJzZShlbC5hdHRyaWJzWydzdHlsZSddKTtcbiAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBzdHlsZXNbcHJvcF07XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHByb3ApKSB7XG4gICAgICAgIGNvbnN0IG5ld1N0eWxlcyA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgcHJvcCkge1xuICAgICAgICAgICAgaWYgKHN0eWxlc1tpdGVtXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbmV3U3R5bGVzW2l0ZW1dID0gc3R5bGVzW2l0ZW1dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdTdHlsZXM7XG4gICAgfVxuICAgIHJldHVybiBzdHlsZXM7XG59XG4vKipcbiAqIFN0cmluZ2lmeSBgb2JqYCB0byBzdHlsZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjYXRlZ29yeSBDU1NcbiAqIEBwYXJhbSBvYmogLSBPYmplY3QgdG8gc3RyaW5naWZ5LlxuICogQHJldHVybnMgVGhlIHNlcmlhbGl6ZWQgc3R5bGVzLlxuICovXG5mdW5jdGlvbiBzdHJpbmdpZnkob2JqKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikucmVkdWNlKChzdHIsIHByb3ApID0+IGAke3N0cn0ke3N0ciA/ICcgJyA6ICcnfSR7cHJvcH06ICR7b2JqW3Byb3BdfTtgLCAnJyk7XG59XG4vKipcbiAqIFBhcnNlIGBzdHlsZXNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY2F0ZWdvcnkgQ1NTXG4gKiBAcGFyYW0gc3R5bGVzIC0gU3R5bGVzIHRvIGJlIHBhcnNlZC5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgc3R5bGVzLlxuICovXG5mdW5jdGlvbiBwYXJzZShzdHlsZXMpIHtcbiAgICBzdHlsZXMgPSAoc3R5bGVzIHx8ICcnKS50cmltKCk7XG4gICAgaWYgKCFzdHlsZXMpXG4gICAgICAgIHJldHVybiB7fTtcbiAgICBjb25zdCBvYmogPSB7fTtcbiAgICBsZXQga2V5O1xuICAgIGZvciAoY29uc3Qgc3RyIG9mIHN0eWxlcy5zcGxpdCgnOycpKSB7XG4gICAgICAgIGNvbnN0IG4gPSBzdHIuaW5kZXhPZignOicpO1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyA6LCBvciBpZiBpdCBpcyB0aGUgZmlyc3QvbGFzdCBjaGFyYWN0ZXIsIGFkZCB0byB0aGUgcHJldmlvdXMgaXRlbSdzIHZhbHVlXG4gICAgICAgIGlmIChuIDwgMSB8fCBuID09PSBzdHIubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgdHJpbW1lZCA9IHN0ci50cmltRW5kKCk7XG4gICAgICAgICAgICBpZiAodHJpbW1lZC5sZW5ndGggPiAwICYmIGtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgb2JqW2tleV0gKz0gYDske3RyaW1tZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGtleSA9IHN0ci5zbGljZSgwLCBuKS50cmltKCk7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHN0ci5zbGljZShuICsgMSkudHJpbSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jc3MuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/cheerio/dist/esm/api/css.js\n"); + +/***/ }), + +/***/ "(rsc)/./node_modules/cheerio/dist/esm/api/extract.js": +/*!******************************************************!*\ + !*** ./node_modules/cheerio/dist/esm/api/extract.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ extract: () => (/* binding */ extract)\n/* harmony export */ });\nfunction getExtractDescr(descr) {\n var _a;\n if (typeof descr === 'string') {\n return { selector: descr, value: 'textContent' };\n }\n return {\n selector: descr.selector,\n value: (_a = descr.value) !== null && _a !== void 0 ? _a : 'textContent',\n };\n}\n/**\n * Extract multiple values from a document, and store them in an object.\n *\n * @param map - An object containing key-value pairs. The keys are the names of\n * the properties to be created on the object, and the values are the\n * selectors to be used to extract the values.\n * @returns An object containing the extracted values.\n */\nfunction extract(map) {\n const ret = {};\n for (const key in map) {\n const descr = map[key];\n const isArray = Array.isArray(descr);\n const { selector, value } = getExtractDescr(isArray ? descr[0] : descr);\n const fn = typeof value === 'function'\n ? value\n : typeof value === 'string'\n ? (el) => this._make(el).prop(value)\n : (el) => this._make(el).extract(value);\n if (isArray) {\n ret[key] = this._findBySelector(selector, Number.POSITIVE_INFINITY)\n .map((_, el) => fn(el, key, ret))\n .get();\n }\n else {\n const $ = this._findBySelector(selector, 1);\n ret[key] = $.length > 0 ? fn($[0], key, ret) : undefined;\n }\n }\n return ret;\n}\n//# sourceMappingURL=extract.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvY2hlZXJpby9kaXN0L2VzbS9hcGkvZXh0cmFjdC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGtCQUFrQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ob2xpZGF5LWRlYWwtZmluZGVyLy4vbm9kZV9tb2R1bGVzL2NoZWVyaW8vZGlzdC9lc20vYXBpL2V4dHJhY3QuanM/ZTQ5ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBnZXRFeHRyYWN0RGVzY3IoZGVzY3IpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHR5cGVvZiBkZXNjciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHsgc2VsZWN0b3I6IGRlc2NyLCB2YWx1ZTogJ3RleHRDb250ZW50JyB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBzZWxlY3RvcjogZGVzY3Iuc2VsZWN0b3IsXG4gICAgICAgIHZhbHVlOiAoX2EgPSBkZXNjci52YWx1ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ3RleHRDb250ZW50JyxcbiAgICB9O1xufVxuLyoqXG4gKiBFeHRyYWN0IG11bHRpcGxlIHZhbHVlcyBmcm9tIGEgZG9jdW1lbnQsIGFuZCBzdG9yZSB0aGVtIGluIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gbWFwIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcga2V5LXZhbHVlIHBhaXJzLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mXG4gKiAgIHRoZSBwcm9wZXJ0aWVzIHRvIGJlIGNyZWF0ZWQgb24gdGhlIG9iamVjdCwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZVxuICogICBzZWxlY3RvcnMgdG8gYmUgdXNlZCB0byBleHRyYWN0IHRoZSB2YWx1ZXMuXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgZXh0cmFjdGVkIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3QobWFwKSB7XG4gICAgY29uc3QgcmV0ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgaW4gbWFwKSB7XG4gICAgICAgIGNvbnN0IGRlc2NyID0gbWFwW2tleV07XG4gICAgICAgIGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KGRlc2NyKTtcbiAgICAgICAgY29uc3QgeyBzZWxlY3RvciwgdmFsdWUgfSA9IGdldEV4dHJhY3REZXNjcihpc0FycmF5ID8gZGVzY3JbMF0gOiBkZXNjcik7XG4gICAgICAgIGNvbnN0IGZuID0gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICA6IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICA/IChlbCkgPT4gdGhpcy5fbWFrZShlbCkucHJvcCh2YWx1ZSlcbiAgICAgICAgICAgICAgICA6IChlbCkgPT4gdGhpcy5fbWFrZShlbCkuZXh0cmFjdCh2YWx1ZSk7XG4gICAgICAgIGlmIChpc0FycmF5KSB7XG4gICAgICAgICAgICByZXRba2V5XSA9IHRoaXMuX2ZpbmRCeVNlbGVjdG9yKHNlbGVjdG9yLCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpXG4gICAgICAgICAgICAgICAgLm1hcCgoXywgZWwpID0+IGZuKGVsLCBrZXksIHJldCkpXG4gICAgICAgICAgICAgICAgLmdldCgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgJCA9IHRoaXMuX2ZpbmRCeVNlbGVjdG9yKHNlbGVjdG9yLCAxKTtcbiAgICAgICAgICAgIHJldFtrZXldID0gJC5sZW5ndGggPiAwID8gZm4oJFswXSwga2V5LCByZXQpIDogdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1leHRyYWN0LmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/cheerio/dist/esm/api/extract.js\n"); + +/***/ }), + +/***/ "(rsc)/./node_modules/cheerio/dist/esm/api/forms.js": +/*!****************************************************!*\ + !*** ./node_modules/cheerio/dist/esm/api/forms.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ serialize: () => (/* binding */ serialize),\n/* harmony export */ serializeArray: () => (/* binding */ serializeArray)\n/* harmony export */ });\n/* harmony import */ var domhandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! domhandler */ \"(rsc)/./node_modules/domhandler/lib/esm/index.js\");\n\n/*\n * https://github.com/jquery/jquery/blob/2.1.3/src/manipulation/var/rcheckableType.js\n * https://github.com/jquery/jquery/blob/2.1.3/src/serialize.js\n */\nconst submittableSelector = 'input,select,textarea,keygen';\nconst r20 = /%20/g;\nconst rCRLF = /\\r?\\n/g;\n/**\n * Encode a set of form elements as a string for submission.\n *\n * @category Forms\n * @example\n *\n * ```js\n * $('
    ').serialize();\n * //=> 'foo=bar'\n * ```\n *\n * @returns The serialized form.\n * @see {@link https://api.jquery.com/serialize/}\n */\nfunction serialize() {\n // Convert form elements into name/value objects\n const arr = this.serializeArray();\n // Serialize each element into a key/value string\n const retArr = arr.map((data) => `${encodeURIComponent(data.name)}=${encodeURIComponent(data.value)}`);\n // Return the resulting serialization\n return retArr.join('&').replace(r20, '+');\n}\n/**\n * Encode a set of form elements as an array of names and values.\n *\n * @category Forms\n * @example\n *\n * ```js\n * $('
    ').serializeArray();\n * //=> [ { name: 'foo', value: 'bar' } ]\n * ```\n *\n * @returns The serialized form.\n * @see {@link https://api.jquery.com/serializeArray/}\n */\nfunction serializeArray() {\n // Resolve all form elements from either forms or collections of form elements\n return this.map((_, elem) => {\n const $elem = this._make(elem);\n if ((0,domhandler__WEBPACK_IMPORTED_MODULE_0__.isTag)(elem) && elem.name === 'form') {\n return $elem.find(submittableSelector).toArray();\n }\n return $elem.filter(submittableSelector).toArray();\n })\n .filter(\n // Verify elements have a name (`attr.name`) and are not disabled (`:enabled`)\n '[name!=\"\"]:enabled' +\n // And cannot be clicked (`[type=submit]`) or are used in `x-www-form-urlencoded` (`[type=file]`)\n ':not(:submit, :button, :image, :reset, :file)' +\n // And are either checked/don't have a checkable state\n ':matches([checked], :not(:checkbox, :radio))')\n .map((_, elem) => {\n var _a;\n const $elem = this._make(elem);\n const name = $elem.attr('name'); // We have filtered for elements with a name before.\n // If there is no value set (e.g. `undefined`, `null`), then default value to empty\n const value = (_a = $elem.val()) !== null && _a !== void 0 ? _a : '';\n // If we have an array of values (e.g. `