idea-manager 2.4.3 → 2.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +13 -13
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/api/global-advisor/route.js +5 -3
- package/.next/standalone/.next/server/app/api/projects/[id]/advisor/route.js +8 -3
- package/.next/standalone/.next/server/app/api/projects/[id]/auto-distribute/route.js +2 -2
- package/.next/standalone/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route.js +4 -2
- package/.next/standalone/.next/server/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/refine/route.js +1 -1
- package/.next/standalone/.next/server/app/index.html +2 -2
- package/.next/standalone/.next/server/app/index.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +13 -13
- package/.next/standalone/.next/server/edge-runtime-webpack.js +2 -0
- package/.next/standalone/.next/server/middleware-manifest.json +28 -2
- package/.next/standalone/.next/server/pages/404.html +2 -2
- package/.next/standalone/.next/server/pages/500.html +2 -2
- package/.next/standalone/.next/server/src/middleware.js +14 -0
- package/.next/standalone/.next/static/chunks/{main-f1d55fffd3cc9809.js → main-f520afb3db76c89a.js} +1 -1
- package/.next/standalone/package.json +2 -1
- package/SECURITY.md +98 -0
- package/package.json +2 -1
- package/src/app/api/global-advisor/route.ts +4 -2
- package/src/app/api/projects/[id]/advisor/route.ts +4 -2
- package/src/app/api/projects/[id]/sub-projects/[subId]/tasks/[taskId]/chat/route.ts +4 -2
- package/src/lib/ai/client.ts +8 -1
- package/src/middleware.ts +46 -0
- /package/.next/standalone/.next/static/{IOW4LMC5sTd5lEGD1oowD → 4KcO9RLSS5rLJZa3ECZOs}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{IOW4LMC5sTd5lEGD1oowD → 4KcO9RLSS5rLJZa3ECZOs}/_ssgManifest.js +0 -0
package/.next/standalone/.next/static/chunks/{main-f1d55fffd3cc9809.js → main-f520afb3db76c89a.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[792],{50:(e,t)=>{"use strict";function r(e){switch(e){case"catchall-intercepted-(..)(..)":case"dynamic-intercepted-(..)(..)":return"(..)(..)";case"catchall-intercepted-(.)":case"dynamic-intercepted-(.)":return"(.)";case"catchall-intercepted-(..)":case"dynamic-intercepted-(..)":return"(..)";case"catchall-intercepted-(...)":case"dynamic-intercepted-(...)":return"(...)";default:return null}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"interceptionPrefixFromParamType",{enumerable:!0,get:function(){return r}})},54:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={safeCompile:function(){return s},safePathToRegexp:function(){return u},safeRegexpToFunction:function(){return l},safeRouteMatcher:function(){return c}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(9509),i=r(2117);function u(e,t,r){if("string"!=typeof e)return(0,o.pathToRegexp)(e,t,r);let n=(0,i.hasAdjacentParameterIssues)(e),a=n?(0,i.normalizeAdjacentParameters)(e):e;try{return(0,o.pathToRegexp)(a,t,r)}catch(a){if(!n)try{let n=(0,i.normalizeAdjacentParameters)(e);return(0,o.pathToRegexp)(n,t,r)}catch(e){}throw a}}function s(e,t){let r=(0,i.hasAdjacentParameterIssues)(e),n=r?(0,i.normalizeAdjacentParameters)(e):e;try{let e=(0,o.compile)(n,t);if(r)return t=>(0,i.stripNormalizedSeparators)(e(t));return e}catch(n){if(!r)try{let r=(0,i.normalizeAdjacentParameters)(e),n=(0,o.compile)(r,t);return e=>(0,i.stripNormalizedSeparators)(n(e))}catch(e){}throw n}}function l(e,t){let r=(0,o.regexpToFunction)(e,t||[]);return e=>{let t=r(e);return!!t&&{...t,params:(0,i.stripParameterSeparators)(t.params)}}}function c(e){return t=>{let r=e(t);return!!r&&(0,i.stripParameterSeparators)(r)}}},88:e=>{"use strict";e.exports=["chrome 111","edge 111","firefox 111","safari 16.4"]},231:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={getSortedRouteObjects:function(){return o.getSortedRouteObjects},getSortedRoutes:function(){return o.getSortedRoutes},isDynamicRoute:function(){return i.isDynamicRoute}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(5845),i=r(393)},363:(e,t,r)=>{"use strict";let n,a,o,i,u,s,l,c,f,d,p,h;Object.defineProperty(t,"__esModule",{value:!0});let _=r(8365);Object.defineProperty(t,"__esModule",{value:!0});var m={emitter:function(){return W},hydrate:function(){return eh},initialize:function(){return z},router:function(){return n},version:function(){return H}};for(var g in m)Object.defineProperty(t,g,{enumerable:!0,get:m[g]});let E=r(4252),y=r(7876);r(1291);let b=E._(r(4232)),P=E._(r(8944)),R=r(941),v=E._(r(7069)),O=r(6194),S=r(2390),T=r(393),j=r(4450),A=r(8608),x=r(6232),w=E._(r(7933)),N=E._(r(550)),I=r(5944),C=r(7640),M=r(6240),L=r(8543),D=r(2267),U=r(5829),$=r(8832),F=r(435),k=r(3485),B=r(8193);r(1383),r(7585);let H="16.1.6",W=(0,v.default)(),X=e=>[].slice.call(e),G=!1;class q extends b.default.Component{componentDidCatch(e,t){this.props.fn(e,t)}componentDidMount(){this.scrollToHash(),n.isSsr&&(a.isFallback||a.nextExport&&((0,T.isDynamicRoute)(n.pathname)||location.search||G)||a.props&&a.props.__N_SSG&&(location.search||G))&&n.replace(n.pathname+"?"+String((0,j.assign)((0,j.urlQueryToSearchParams)(n.query),new URLSearchParams(location.search))),o,{_h:1,shallow:!a.isFallback&&!G}).catch(e=>{if(!e.cancelled)throw e})}componentDidUpdate(){this.scrollToHash()}scrollToHash(){let{hash:e}=location;if(!(e=e&&e.substring(1)))return;let t=document.getElementById(e);t&&setTimeout(()=>t.scrollIntoView(),0)}render(){return this.props.children}}async function z(e={}){a=JSON.parse(document.getElementById("__NEXT_DATA__").textContent),window.__NEXT_DATA__=a,h=a.defaultLocale;let t=a.assetPrefix||"";if(self.__next_set_public_path__(`${t}/_next/`),o=(0,A.getURL)(),(0,U.hasBasePath)(o)&&(o=(0,D.removeBasePath)(o)),a.scriptLoader){let{initScriptLoader:e}=r(2470);e(a.scriptLoader)}i=new N.default(a.buildId,t);let l=([e,t])=>i.routeLoader.onEntrypoint(e,t);return window.__NEXT_P&&window.__NEXT_P.map(e=>setTimeout(()=>l(e),0)),window.__NEXT_P=[],window.__NEXT_P.push=l,(s=(0,w.default)()).getIsSsr=()=>n.isSsr,u=document.getElementById("__next"),{assetPrefix:t}}function Y(e,t){return(0,y.jsx)(e,{...t})}function V({children:e}){let t=b.default.useMemo(()=>(0,F.adaptForAppRouterInstance)(n),[]);return(0,y.jsx)(q,{fn:e=>Q({App:f,err:e}).catch(e=>console.error("Error rendering page: ",e)),children:(0,y.jsx)($.AppRouterContext.Provider,{value:t,children:(0,y.jsx)(k.SearchParamsContext.Provider,{value:(0,F.adaptForSearchParams)(n),children:(0,y.jsx)(F.PathnameContextProviderAdapter,{router:n,isAutoExport:self.__NEXT_DATA__.autoExport??!1,children:(0,y.jsx)(k.PathParamsContext.Provider,{value:(0,F.adaptForPathParams)(n),children:(0,y.jsx)(O.RouterContext.Provider,{value:(0,C.makePublicRouterInstance)(n),children:(0,y.jsx)(R.HeadManagerContext.Provider,{value:s,children:(0,y.jsx)(L.ImageConfigContext.Provider,{value:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1},children:e})})})})})})})})}let K=e=>t=>{let r={...t,Component:p,err:a.err,router:n};return(0,y.jsx)(V,{children:Y(e,r)})};function Q(e){let{App:t,err:u}=e;return console.error(u),console.error("A client-side exception has occurred, see here for more info: https://nextjs.org/docs/messages/client-side-exception-occurred"),i.loadPage("/_error").then(({page:n,styleSheets:a})=>l?.Component===n?Promise.resolve().then(()=>_._(r(3899))).then(n=>Promise.resolve().then(()=>_._(r(1966))).then(r=>(e.App=t=r.default,n))).then(e=>({ErrorComponent:e.default,styleSheets:[]})):{ErrorComponent:n,styleSheets:a}).then(({ErrorComponent:r,styleSheets:i})=>{let s=K(t),l={Component:r,AppTree:s,router:n,ctx:{err:u,pathname:a.page,query:a.query,asPath:o,AppTree:s}};return Promise.resolve(e.props?.err?e.props:(0,A.loadGetInitialProps)(t,l)).then(t=>ed({...e,err:u,Component:r,styleSheets:i,props:t}))})}function J({callback:e}){return b.default.useLayoutEffect(()=>e(),[e]),null}let Z="beforeRender",ee="afterRender",et="afterHydrate",er="routeChange",en="Next.js-hydration",ea="Next.js-route-change-to-render",eo="Next.js-render",ei=null,eu=!0;function es(){[Z,et,ee,er].forEach(e=>performance.clearMarks(e))}function el(){A.ST&&(performance.mark(et),performance.getEntriesByName(Z,"mark").length&&(performance.measure("Next.js-before-hydration","navigationStart",Z),performance.measure(en,Z,et)),d&&performance.getEntriesByName(en).forEach(d),es())}function ec(){if(!A.ST)return;performance.mark(ee);let e=performance.getEntriesByName(er,"mark");e.length&&(performance.getEntriesByName(Z,"mark").length&&(performance.measure(ea,e[0].name,Z),performance.measure(eo,Z,ee),d&&(performance.getEntriesByName(eo).forEach(d),performance.getEntriesByName(ea).forEach(d))),es(),[ea,eo].forEach(e=>performance.clearMeasures(e)))}function ef({callbacks:e,children:t}){return b.default.useLayoutEffect(()=>e.forEach(e=>e()),[e]),t}function ed(e){var t,r;let a,o,{App:i,Component:s,props:f,err:d}=e,p="initial"in e?void 0:e.styleSheets;s=s||l.Component;let h={...f=f||l.props,Component:s,err:d,router:n};l=h;let _=!1,m=new Promise((e,t)=>{c&&c(),o=()=>{c=null,e()},c=()=>{_=!0,c=null;let e=Object.defineProperty(Error("Cancel rendering route"),"__NEXT_ERROR_CODE",{value:"E503",enumerable:!1,configurable:!0});e.cancelled=!0,t(e)}});function g(){o()}!function(){if(!p)return;let e=new Set(X(document.querySelectorAll("style[data-n-href]")).map(e=>e.getAttribute("data-n-href"))),t=document.querySelector("noscript[data-n-css]"),r=t?.getAttribute("data-n-css");p.forEach(({href:t,text:n})=>{if(!e.has(t)){let e=document.createElement("style");e.setAttribute("data-n-href",t),e.setAttribute("media","x"),r&&e.setAttribute("nonce",r),document.head.appendChild(e),e.appendChild(document.createTextNode(n))}})}();let E=(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(J,{callback:function(){if(p&&!_){let e=new Set(p.map(e=>e.href)),t=X(document.querySelectorAll("style[data-n-href]")),r=t.map(e=>e.getAttribute("data-n-href"));for(let n=0;n<r.length;++n)e.has(r[n])?t[n].removeAttribute("media"):t[n].setAttribute("media","x");let n=document.querySelector("noscript[data-n-css]");n&&p.forEach(({href:e})=>{let t=document.querySelector(`style[data-n-href="${e}"]`);t&&(n.parentNode.insertBefore(t,n.nextSibling),n=t)}),X(document.querySelectorAll("link[data-n-p]")).forEach(e=>{e.parentNode.removeChild(e)})}if(e.scroll){let{x:t,y:r}=e.scroll;(0,S.disableSmoothScrollDuringRouteTransition)(()=>{window.scrollTo(t,r)})}}}),(0,y.jsxs)(V,{children:[Y(i,h),(0,y.jsx)(x.Portal,{type:"next-route-announcer",children:(0,y.jsx)(I.RouteAnnouncer,{})})]})]});return t=u,r=e=>(0,y.jsx)(ef,{callbacks:[e,g],children:E}),A.ST&&performance.mark(Z),a=r(eu?el:ec),ei?(0,b.default.startTransition)(()=>{ei.render(a)}):(ei=P.default.hydrateRoot(t,a,{onRecoverableError:B.onRecoverableError}),eu=!1),m}async function ep(e){if(e.err&&(void 0===e.Component||!e.isHydratePass))return void await Q(e);try{await ed(e)}catch(r){let t=(0,M.getProperError)(r);if(t.cancelled)throw t;await Q({...e,err:t})}}async function eh(e){let t=a.err;try{let e=await i.routeLoader.whenEntrypoint("/_app");if("error"in e)throw e.error;let{component:t,exports:r}=e;f=t,r&&r.reportWebVitals&&(d=({id:e,name:t,startTime:n,value:a,duration:o,entryType:i,entries:u,attribution:s})=>{let l,c=`${Date.now()}-${Math.floor(Math.random()*(9e12-1))+1e12}`;u&&u.length&&(l=u[0].startTime);let f={id:e||c,name:t,startTime:n||l,value:null==a?o:a,label:"mark"===i||"measure"===i?"custom":"web-vital"};s&&(f.attribution=s),r.reportWebVitals(f)});let n=await i.routeLoader.whenEntrypoint(a.page);if("error"in n)throw n.error;p=n.component}catch(e){t=(0,M.getProperError)(e)}window.__NEXT_PRELOADREADY&&await window.__NEXT_PRELOADREADY(a.dynamicIds),n=(0,C.createRouter)(a.page,a.query,o,{initialProps:a.props,pageLoader:i,App:f,Component:p,wrapApp:K,err:t,isFallback:!!a.isFallback,subscription:(e,t,r)=>ep(Object.assign({},e,{App:t,scroll:r})),locale:a.locale,locales:a.locales,defaultLocale:h,domainLocales:a.domainLocales,isPreview:a.isPreview}),G=await n._initialMatchesMiddlewarePromise;let r={App:f,initial:!0,Component:p,props:a.props,err:t,isHydratePass:!0};e?.beforeRender&&await e.beforeRender(),ep(r)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},393:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isDynamicRoute",{enumerable:!0,get:function(){return i}});let n=r(834),a=/\/[^/]*\[[^/]+\][^/]*(?=\/|$)/,o=/\/\[[^/]+\](?=\/|$)/;function i(e,t=!0){return((0,n.isInterceptionRouteAppPath)(e)&&(e=(0,n.extractInterceptionRouteInformation)(e).interceptedRoute),t)?o.test(e):a.test(e)}},435:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={PathnameContextProviderAdapter:function(){return _},adaptForAppRouterInstance:function(){return d},adaptForPathParams:function(){return h},adaptForSearchParams:function(){return p}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(8365),i=r(7876),u=o._(r(4232)),s=r(3485),l=r(231),c=r(7779),f=r(7668);function d(e){return{back(){e.back()},forward(){e.forward()},refresh(){e.reload()},hmrRefresh(){},push(t,{scroll:r}={}){e.push(t,void 0,{scroll:r})},replace(t,{scroll:r}={}){e.replace(t,void 0,{scroll:r})},prefetch(t){e.prefetch(t)}}}function p(e){return e.isReady&&e.query?(0,c.asPathToSearchParams)(e.asPath):new URLSearchParams}function h(e){if(!e.isReady||!e.query)return null;let t={};for(let r of Object.keys((0,f.getRouteRegex)(e.pathname).groups))t[r]=e.query[r];return t}function _({children:e,router:t,...r}){let n=(0,u.useRef)(r.isAutoExport),a=(0,u.useMemo)(()=>{let e,r=n.current;if(r&&(n.current=!1),(0,l.isDynamicRoute)(t.pathname)&&(t.isFallback||r&&!t.isReady))return null;try{e=new URL(t.asPath,"http://f")}catch(e){return"/"}return e.pathname},[t.asPath,t.isFallback,t.isReady,t.pathname]);return(0,i.jsx)(s.PathnameContext.Provider,{value:a,children:e})}},532:(e,t)=>{"use strict";function r(e,t){let r={};return Object.keys(e).forEach(n=>{t.includes(n)||(r[n]=e[n])}),r}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"omit",{enumerable:!0,get:function(){return r}})},550:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return d}});let n=r(4252),a=r(8246),o=r(8935),i=n._(r(2209)),u=r(8285),s=r(393),l=r(3595),c=r(7404),f=r(566);r(8932);class d{constructor(e,t){this.routeLoader=(0,f.createRouteLoader)(t),this.buildId=e,this.assetPrefix=t,this.promisedSsgManifest=new Promise(e=>{window.__SSG_MANIFEST?e(window.__SSG_MANIFEST):window.__SSG_MANIFEST_CB=()=>{e(window.__SSG_MANIFEST)}})}getPageList(){return(0,f.getClientBuildManifest)().then(e=>e.sortedPages)}getMiddleware(){return window.__MIDDLEWARE_MATCHERS=[],window.__MIDDLEWARE_MATCHERS}getDataHref(e){var t;let r,{asPath:n,href:f,locale:d}=e,{pathname:p,query:h,search:_}=(0,l.parseRelativeUrl)(f),{pathname:m}=(0,l.parseRelativeUrl)(n),g=(0,c.removeTrailingSlash)(p);if("/"!==g[0])throw Object.defineProperty(Error(`Route name should start with a "/", got "${g}"`),"__NEXT_ERROR_CODE",{value:"E303",enumerable:!1,configurable:!0});return t=e.skipInterpolation?m:(0,s.isDynamicRoute)(g)?(0,o.interpolateAs)(p,m,h).result:g,r=(0,i.default)((0,c.removeTrailingSlash)((0,u.addLocale)(t,d)),".json"),(0,a.addBasePath)(`/_next/data/${this.buildId}${r}${_}`,!0)}_isSsg(e){return this.promisedSsgManifest.then(t=>t.has(e))}loadPage(e){return this.routeLoader.loadRoute(e).then(e=>{if("component"in e)return{page:e.component,mod:e.exports,styleSheets:e.styles.map(e=>({href:e.href,text:e.content}))};throw e.error})}prefetch(e){return this.routeLoader.prefetch(e)}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},566:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={createRouteLoader:function(){return E},getClientBuildManifest:function(){return m},isAssetError:function(){return d},markAssetError:function(){return f}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});r(4252),r(2209);let o=r(1128),i=r(1241),u=r(6958),s=r(4506);function l(e,t,r){let n,a=t.get(e);if(a)return"future"in a?a.future:Promise.resolve(a);let o=new Promise(e=>{n=e});return t.set(e,{resolve:n,future:o}),r?r().then(e=>(n(e),e)).catch(r=>{throw t.delete(e),r}):o}let c=Symbol("ASSET_LOAD_ERROR");function f(e){return Object.defineProperty(e,c,{})}function d(e){return e&&c in e}let p=function(e){try{return e=document.createElement("link"),!!window.MSInputMethodContext&&!!document.documentMode||e.relList.supports("prefetch")}catch{return!1}}(),h=()=>(0,u.getDeploymentIdQueryOrEmptyString)();function _(e,t,r){return new Promise((n,a)=>{let o=!1;e.then(e=>{o=!0,n(e)}).catch(a),(0,i.requestIdleCallback)(()=>setTimeout(()=>{o||a(r)},t))})}function m(){return self.__BUILD_MANIFEST?Promise.resolve(self.__BUILD_MANIFEST):_(new Promise(e=>{let t=self.__BUILD_MANIFEST_CB;self.__BUILD_MANIFEST_CB=()=>{e(self.__BUILD_MANIFEST),t&&t()}}),3800,f(Object.defineProperty(Error("Failed to load client build manifest"),"__NEXT_ERROR_CODE",{value:"E273",enumerable:!1,configurable:!0})))}function g(e,t){return m().then(r=>{if(!(t in r))throw f(Object.defineProperty(Error(`Failed to lookup route: ${t}`),"__NEXT_ERROR_CODE",{value:"E446",enumerable:!1,configurable:!0}));let n=r[t].map(t=>e+"/_next/"+(0,s.encodeURIPath)(t));return{scripts:n.filter(e=>e.endsWith(".js")).map(e=>(0,o.__unsafeCreateTrustedScriptURL)(e)+h()),css:n.filter(e=>e.endsWith(".css")).map(e=>e+h())}})}function E(e){let t=new Map,r=new Map,n=new Map,a=new Map;function o(e){{var t;let n=r.get(e.toString());return n?n:document.querySelector(`script[src^="${e}"]`)?Promise.resolve():(r.set(e.toString(),n=new Promise((r,n)=>{(t=document.createElement("script")).onload=r,t.onerror=()=>n(f(Object.defineProperty(Error(`Failed to load script: ${e}`),"__NEXT_ERROR_CODE",{value:"E74",enumerable:!1,configurable:!0}))),t.crossOrigin=void 0,t.src=e,document.body.appendChild(t)})),n)}}function u(e){let t=n.get(e);return t||n.set(e,t=fetch(e,{credentials:"same-origin"}).then(t=>{if(!t.ok)throw Object.defineProperty(Error(`Failed to load stylesheet: ${e}`),"__NEXT_ERROR_CODE",{value:"E189",enumerable:!1,configurable:!0});return t.text().then(t=>({href:e,content:t}))}).catch(e=>{throw f(e)})),t}return{whenEntrypoint:e=>l(e,t),onEntrypoint(e,r){(r?Promise.resolve().then(()=>r()).then(e=>({component:e&&e.default||e,exports:e}),e=>({error:e})):Promise.resolve(void 0)).then(r=>{let n=t.get(e);n&&"resolve"in n?r&&(t.set(e,r),n.resolve(r)):(r?t.set(e,r):t.delete(e),a.delete(e))})},loadRoute(r,n){return l(r,a,()=>{let a;return _(g(e,r).then(({scripts:e,css:n})=>Promise.all([t.has(r)?[]:Promise.all(e.map(o)),Promise.all(n.map(u))])).then(e=>this.whenEntrypoint(r).then(t=>({entrypoint:t,styles:e[1]}))),3800,f(Object.defineProperty(Error(`Route did not complete loading: ${r}`),"__NEXT_ERROR_CODE",{value:"E12",enumerable:!1,configurable:!0}))).then(({entrypoint:e,styles:t})=>{let r=Object.assign({styles:t},e);return"error"in e?e:r}).catch(e=>{if(n)throw e;return{error:e}}).finally(()=>a?.())})},prefetch(t){let r;return(r=navigator.connection)&&(r.saveData||/2g/.test(r.effectiveType))?Promise.resolve():g(e,t).then(e=>Promise.all(p?e.scripts.map(e=>{var t,r,n;return t=e.toString(),r="script",new Promise((e,a)=>{let o=`
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[792],{50:(e,t)=>{"use strict";function r(e){switch(e){case"catchall-intercepted-(..)(..)":case"dynamic-intercepted-(..)(..)":return"(..)(..)";case"catchall-intercepted-(.)":case"dynamic-intercepted-(.)":return"(.)";case"catchall-intercepted-(..)":case"dynamic-intercepted-(..)":return"(..)";case"catchall-intercepted-(...)":case"dynamic-intercepted-(...)":return"(...)";default:return null}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"interceptionPrefixFromParamType",{enumerable:!0,get:function(){return r}})},54:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={safeCompile:function(){return s},safePathToRegexp:function(){return u},safeRegexpToFunction:function(){return l},safeRouteMatcher:function(){return c}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(9509),i=r(2117);function u(e,t,r){if("string"!=typeof e)return(0,o.pathToRegexp)(e,t,r);let n=(0,i.hasAdjacentParameterIssues)(e),a=n?(0,i.normalizeAdjacentParameters)(e):e;try{return(0,o.pathToRegexp)(a,t,r)}catch(a){if(!n)try{let n=(0,i.normalizeAdjacentParameters)(e);return(0,o.pathToRegexp)(n,t,r)}catch(e){}throw a}}function s(e,t){let r=(0,i.hasAdjacentParameterIssues)(e),n=r?(0,i.normalizeAdjacentParameters)(e):e;try{let e=(0,o.compile)(n,t);if(r)return t=>(0,i.stripNormalizedSeparators)(e(t));return e}catch(n){if(!r)try{let r=(0,i.normalizeAdjacentParameters)(e),n=(0,o.compile)(r,t);return e=>(0,i.stripNormalizedSeparators)(n(e))}catch(e){}throw n}}function l(e,t){let r=(0,o.regexpToFunction)(e,t||[]);return e=>{let t=r(e);return!!t&&{...t,params:(0,i.stripParameterSeparators)(t.params)}}}function c(e){return t=>{let r=e(t);return!!r&&(0,i.stripParameterSeparators)(r)}}},88:e=>{"use strict";e.exports=["chrome 111","edge 111","firefox 111","safari 16.4"]},231:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={getSortedRouteObjects:function(){return o.getSortedRouteObjects},getSortedRoutes:function(){return o.getSortedRoutes},isDynamicRoute:function(){return i.isDynamicRoute}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(5845),i=r(393)},363:(e,t,r)=>{"use strict";let n,a,o,i,u,s,l,c,f,d,p,h;Object.defineProperty(t,"__esModule",{value:!0});let _=r(8365);Object.defineProperty(t,"__esModule",{value:!0});var m={emitter:function(){return W},hydrate:function(){return eh},initialize:function(){return z},router:function(){return n},version:function(){return H}};for(var g in m)Object.defineProperty(t,g,{enumerable:!0,get:m[g]});let E=r(4252),y=r(7876);r(1291);let b=E._(r(4232)),P=E._(r(8944)),R=r(941),v=E._(r(7069)),O=r(6194),S=r(2390),T=r(393),j=r(4450),A=r(8608),x=r(6232),w=E._(r(7933)),N=E._(r(550)),I=r(5944),C=r(7640),M=r(6240),L=r(8543),D=r(2267),U=r(5829),$=r(8832),F=r(435),k=r(3485),B=r(8193);r(1383),r(7585);let H="16.1.6",W=(0,v.default)(),X=e=>[].slice.call(e),G=!1;class q extends b.default.Component{componentDidCatch(e,t){this.props.fn(e,t)}componentDidMount(){this.scrollToHash(),n.isSsr&&(a.isFallback||a.nextExport&&((0,T.isDynamicRoute)(n.pathname)||location.search||G)||a.props&&a.props.__N_SSG&&(location.search||G))&&n.replace(n.pathname+"?"+String((0,j.assign)((0,j.urlQueryToSearchParams)(n.query),new URLSearchParams(location.search))),o,{_h:1,shallow:!a.isFallback&&!G}).catch(e=>{if(!e.cancelled)throw e})}componentDidUpdate(){this.scrollToHash()}scrollToHash(){let{hash:e}=location;if(!(e=e&&e.substring(1)))return;let t=document.getElementById(e);t&&setTimeout(()=>t.scrollIntoView(),0)}render(){return this.props.children}}async function z(e={}){a=JSON.parse(document.getElementById("__NEXT_DATA__").textContent),window.__NEXT_DATA__=a,h=a.defaultLocale;let t=a.assetPrefix||"";if(self.__next_set_public_path__(`${t}/_next/`),o=(0,A.getURL)(),(0,U.hasBasePath)(o)&&(o=(0,D.removeBasePath)(o)),a.scriptLoader){let{initScriptLoader:e}=r(2470);e(a.scriptLoader)}i=new N.default(a.buildId,t);let l=([e,t])=>i.routeLoader.onEntrypoint(e,t);return window.__NEXT_P&&window.__NEXT_P.map(e=>setTimeout(()=>l(e),0)),window.__NEXT_P=[],window.__NEXT_P.push=l,(s=(0,w.default)()).getIsSsr=()=>n.isSsr,u=document.getElementById("__next"),{assetPrefix:t}}function Y(e,t){return(0,y.jsx)(e,{...t})}function V({children:e}){let t=b.default.useMemo(()=>(0,F.adaptForAppRouterInstance)(n),[]);return(0,y.jsx)(q,{fn:e=>Q({App:f,err:e}).catch(e=>console.error("Error rendering page: ",e)),children:(0,y.jsx)($.AppRouterContext.Provider,{value:t,children:(0,y.jsx)(k.SearchParamsContext.Provider,{value:(0,F.adaptForSearchParams)(n),children:(0,y.jsx)(F.PathnameContextProviderAdapter,{router:n,isAutoExport:self.__NEXT_DATA__.autoExport??!1,children:(0,y.jsx)(k.PathParamsContext.Provider,{value:(0,F.adaptForPathParams)(n),children:(0,y.jsx)(O.RouterContext.Provider,{value:(0,C.makePublicRouterInstance)(n),children:(0,y.jsx)(R.HeadManagerContext.Provider,{value:s,children:(0,y.jsx)(L.ImageConfigContext.Provider,{value:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1},children:e})})})})})})})})}let K=e=>t=>{let r={...t,Component:p,err:a.err,router:n};return(0,y.jsx)(V,{children:Y(e,r)})};function Q(e){let{App:t,err:u}=e;return console.error(u),console.error("A client-side exception has occurred, see here for more info: https://nextjs.org/docs/messages/client-side-exception-occurred"),i.loadPage("/_error").then(({page:n,styleSheets:a})=>l?.Component===n?Promise.resolve().then(()=>_._(r(3899))).then(n=>Promise.resolve().then(()=>_._(r(1966))).then(r=>(e.App=t=r.default,n))).then(e=>({ErrorComponent:e.default,styleSheets:[]})):{ErrorComponent:n,styleSheets:a}).then(({ErrorComponent:r,styleSheets:i})=>{let s=K(t),l={Component:r,AppTree:s,router:n,ctx:{err:u,pathname:a.page,query:a.query,asPath:o,AppTree:s}};return Promise.resolve(e.props?.err?e.props:(0,A.loadGetInitialProps)(t,l)).then(t=>ed({...e,err:u,Component:r,styleSheets:i,props:t}))})}function J({callback:e}){return b.default.useLayoutEffect(()=>e(),[e]),null}let Z="beforeRender",ee="afterRender",et="afterHydrate",er="routeChange",en="Next.js-hydration",ea="Next.js-route-change-to-render",eo="Next.js-render",ei=null,eu=!0;function es(){[Z,et,ee,er].forEach(e=>performance.clearMarks(e))}function el(){A.ST&&(performance.mark(et),performance.getEntriesByName(Z,"mark").length&&(performance.measure("Next.js-before-hydration","navigationStart",Z),performance.measure(en,Z,et)),d&&performance.getEntriesByName(en).forEach(d),es())}function ec(){if(!A.ST)return;performance.mark(ee);let e=performance.getEntriesByName(er,"mark");e.length&&(performance.getEntriesByName(Z,"mark").length&&(performance.measure(ea,e[0].name,Z),performance.measure(eo,Z,ee),d&&(performance.getEntriesByName(eo).forEach(d),performance.getEntriesByName(ea).forEach(d))),es(),[ea,eo].forEach(e=>performance.clearMeasures(e)))}function ef({callbacks:e,children:t}){return b.default.useLayoutEffect(()=>e.forEach(e=>e()),[e]),t}function ed(e){var t,r;let a,o,{App:i,Component:s,props:f,err:d}=e,p="initial"in e?void 0:e.styleSheets;s=s||l.Component;let h={...f=f||l.props,Component:s,err:d,router:n};l=h;let _=!1,m=new Promise((e,t)=>{c&&c(),o=()=>{c=null,e()},c=()=>{_=!0,c=null;let e=Object.defineProperty(Error("Cancel rendering route"),"__NEXT_ERROR_CODE",{value:"E503",enumerable:!1,configurable:!0});e.cancelled=!0,t(e)}});function g(){o()}!function(){if(!p)return;let e=new Set(X(document.querySelectorAll("style[data-n-href]")).map(e=>e.getAttribute("data-n-href"))),t=document.querySelector("noscript[data-n-css]"),r=t?.getAttribute("data-n-css");p.forEach(({href:t,text:n})=>{if(!e.has(t)){let e=document.createElement("style");e.setAttribute("data-n-href",t),e.setAttribute("media","x"),r&&e.setAttribute("nonce",r),document.head.appendChild(e),e.appendChild(document.createTextNode(n))}})}();let E=(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(J,{callback:function(){if(p&&!_){let e=new Set(p.map(e=>e.href)),t=X(document.querySelectorAll("style[data-n-href]")),r=t.map(e=>e.getAttribute("data-n-href"));for(let n=0;n<r.length;++n)e.has(r[n])?t[n].removeAttribute("media"):t[n].setAttribute("media","x");let n=document.querySelector("noscript[data-n-css]");n&&p.forEach(({href:e})=>{let t=document.querySelector(`style[data-n-href="${e}"]`);t&&(n.parentNode.insertBefore(t,n.nextSibling),n=t)}),X(document.querySelectorAll("link[data-n-p]")).forEach(e=>{e.parentNode.removeChild(e)})}if(e.scroll){let{x:t,y:r}=e.scroll;(0,S.disableSmoothScrollDuringRouteTransition)(()=>{window.scrollTo(t,r)})}}}),(0,y.jsxs)(V,{children:[Y(i,h),(0,y.jsx)(x.Portal,{type:"next-route-announcer",children:(0,y.jsx)(I.RouteAnnouncer,{})})]})]});return t=u,r=e=>(0,y.jsx)(ef,{callbacks:[e,g],children:E}),A.ST&&performance.mark(Z),a=r(eu?el:ec),ei?(0,b.default.startTransition)(()=>{ei.render(a)}):(ei=P.default.hydrateRoot(t,a,{onRecoverableError:B.onRecoverableError}),eu=!1),m}async function ep(e){if(e.err&&(void 0===e.Component||!e.isHydratePass))return void await Q(e);try{await ed(e)}catch(r){let t=(0,M.getProperError)(r);if(t.cancelled)throw t;await Q({...e,err:t})}}async function eh(e){let t=a.err;try{let e=await i.routeLoader.whenEntrypoint("/_app");if("error"in e)throw e.error;let{component:t,exports:r}=e;f=t,r&&r.reportWebVitals&&(d=({id:e,name:t,startTime:n,value:a,duration:o,entryType:i,entries:u,attribution:s})=>{let l,c=`${Date.now()}-${Math.floor(Math.random()*(9e12-1))+1e12}`;u&&u.length&&(l=u[0].startTime);let f={id:e||c,name:t,startTime:n||l,value:null==a?o:a,label:"mark"===i||"measure"===i?"custom":"web-vital"};s&&(f.attribution=s),r.reportWebVitals(f)});let n=await i.routeLoader.whenEntrypoint(a.page);if("error"in n)throw n.error;p=n.component}catch(e){t=(0,M.getProperError)(e)}window.__NEXT_PRELOADREADY&&await window.__NEXT_PRELOADREADY(a.dynamicIds),n=(0,C.createRouter)(a.page,a.query,o,{initialProps:a.props,pageLoader:i,App:f,Component:p,wrapApp:K,err:t,isFallback:!!a.isFallback,subscription:(e,t,r)=>ep(Object.assign({},e,{App:t,scroll:r})),locale:a.locale,locales:a.locales,defaultLocale:h,domainLocales:a.domainLocales,isPreview:a.isPreview}),G=await n._initialMatchesMiddlewarePromise;let r={App:f,initial:!0,Component:p,props:a.props,err:t,isHydratePass:!0};e?.beforeRender&&await e.beforeRender(),ep(r)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},393:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isDynamicRoute",{enumerable:!0,get:function(){return i}});let n=r(834),a=/\/[^/]*\[[^/]+\][^/]*(?=\/|$)/,o=/\/\[[^/]+\](?=\/|$)/;function i(e,t=!0){return((0,n.isInterceptionRouteAppPath)(e)&&(e=(0,n.extractInterceptionRouteInformation)(e).interceptedRoute),t)?o.test(e):a.test(e)}},435:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={PathnameContextProviderAdapter:function(){return _},adaptForAppRouterInstance:function(){return d},adaptForPathParams:function(){return h},adaptForSearchParams:function(){return p}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(8365),i=r(7876),u=o._(r(4232)),s=r(3485),l=r(231),c=r(7779),f=r(7668);function d(e){return{back(){e.back()},forward(){e.forward()},refresh(){e.reload()},hmrRefresh(){},push(t,{scroll:r}={}){e.push(t,void 0,{scroll:r})},replace(t,{scroll:r}={}){e.replace(t,void 0,{scroll:r})},prefetch(t){e.prefetch(t)}}}function p(e){return e.isReady&&e.query?(0,c.asPathToSearchParams)(e.asPath):new URLSearchParams}function h(e){if(!e.isReady||!e.query)return null;let t={};for(let r of Object.keys((0,f.getRouteRegex)(e.pathname).groups))t[r]=e.query[r];return t}function _({children:e,router:t,...r}){let n=(0,u.useRef)(r.isAutoExport),a=(0,u.useMemo)(()=>{let e,r=n.current;if(r&&(n.current=!1),(0,l.isDynamicRoute)(t.pathname)&&(t.isFallback||r&&!t.isReady))return null;try{e=new URL(t.asPath,"http://f")}catch(e){return"/"}return e.pathname},[t.asPath,t.isFallback,t.isReady,t.pathname]);return(0,i.jsx)(s.PathnameContext.Provider,{value:a,children:e})}},532:(e,t)=>{"use strict";function r(e,t){let r={};return Object.keys(e).forEach(n=>{t.includes(n)||(r[n]=e[n])}),r}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"omit",{enumerable:!0,get:function(){return r}})},550:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return d}});let n=r(4252),a=r(8246),o=r(8935),i=n._(r(2209)),u=r(8285),s=r(393),l=r(3595),c=r(7404),f=r(566);r(8932);class d{constructor(e,t){this.routeLoader=(0,f.createRouteLoader)(t),this.buildId=e,this.assetPrefix=t,this.promisedSsgManifest=new Promise(e=>{window.__SSG_MANIFEST?e(window.__SSG_MANIFEST):window.__SSG_MANIFEST_CB=()=>{e(window.__SSG_MANIFEST)}})}getPageList(){return(0,f.getClientBuildManifest)().then(e=>e.sortedPages)}getMiddleware(){return window.__MIDDLEWARE_MATCHERS=[{regexp:"^(?:\\/(_next\\/data\\/[^/]{1,}))?\\/api(?:\\/((?:[^\\/#\\?]+?)(?:\\/(?:[^\\/#\\?]+?))*))?(\\.json)?[\\/#\\?]?$",originalSource:"/api/:path*"}],window.__MIDDLEWARE_MATCHERS}getDataHref(e){var t;let r,{asPath:n,href:f,locale:d}=e,{pathname:p,query:h,search:_}=(0,l.parseRelativeUrl)(f),{pathname:m}=(0,l.parseRelativeUrl)(n),g=(0,c.removeTrailingSlash)(p);if("/"!==g[0])throw Object.defineProperty(Error(`Route name should start with a "/", got "${g}"`),"__NEXT_ERROR_CODE",{value:"E303",enumerable:!1,configurable:!0});return t=e.skipInterpolation?m:(0,s.isDynamicRoute)(g)?(0,o.interpolateAs)(p,m,h).result:g,r=(0,i.default)((0,c.removeTrailingSlash)((0,u.addLocale)(t,d)),".json"),(0,a.addBasePath)(`/_next/data/${this.buildId}${r}${_}`,!0)}_isSsg(e){return this.promisedSsgManifest.then(t=>t.has(e))}loadPage(e){return this.routeLoader.loadRoute(e).then(e=>{if("component"in e)return{page:e.component,mod:e.exports,styleSheets:e.styles.map(e=>({href:e.href,text:e.content}))};throw e.error})}prefetch(e){return this.routeLoader.prefetch(e)}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},566:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={createRouteLoader:function(){return E},getClientBuildManifest:function(){return m},isAssetError:function(){return d},markAssetError:function(){return f}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});r(4252),r(2209);let o=r(1128),i=r(1241),u=r(6958),s=r(4506);function l(e,t,r){let n,a=t.get(e);if(a)return"future"in a?a.future:Promise.resolve(a);let o=new Promise(e=>{n=e});return t.set(e,{resolve:n,future:o}),r?r().then(e=>(n(e),e)).catch(r=>{throw t.delete(e),r}):o}let c=Symbol("ASSET_LOAD_ERROR");function f(e){return Object.defineProperty(e,c,{})}function d(e){return e&&c in e}let p=function(e){try{return e=document.createElement("link"),!!window.MSInputMethodContext&&!!document.documentMode||e.relList.supports("prefetch")}catch{return!1}}(),h=()=>(0,u.getDeploymentIdQueryOrEmptyString)();function _(e,t,r){return new Promise((n,a)=>{let o=!1;e.then(e=>{o=!0,n(e)}).catch(a),(0,i.requestIdleCallback)(()=>setTimeout(()=>{o||a(r)},t))})}function m(){return self.__BUILD_MANIFEST?Promise.resolve(self.__BUILD_MANIFEST):_(new Promise(e=>{let t=self.__BUILD_MANIFEST_CB;self.__BUILD_MANIFEST_CB=()=>{e(self.__BUILD_MANIFEST),t&&t()}}),3800,f(Object.defineProperty(Error("Failed to load client build manifest"),"__NEXT_ERROR_CODE",{value:"E273",enumerable:!1,configurable:!0})))}function g(e,t){return m().then(r=>{if(!(t in r))throw f(Object.defineProperty(Error(`Failed to lookup route: ${t}`),"__NEXT_ERROR_CODE",{value:"E446",enumerable:!1,configurable:!0}));let n=r[t].map(t=>e+"/_next/"+(0,s.encodeURIPath)(t));return{scripts:n.filter(e=>e.endsWith(".js")).map(e=>(0,o.__unsafeCreateTrustedScriptURL)(e)+h()),css:n.filter(e=>e.endsWith(".css")).map(e=>e+h())}})}function E(e){let t=new Map,r=new Map,n=new Map,a=new Map;function o(e){{var t;let n=r.get(e.toString());return n?n:document.querySelector(`script[src^="${e}"]`)?Promise.resolve():(r.set(e.toString(),n=new Promise((r,n)=>{(t=document.createElement("script")).onload=r,t.onerror=()=>n(f(Object.defineProperty(Error(`Failed to load script: ${e}`),"__NEXT_ERROR_CODE",{value:"E74",enumerable:!1,configurable:!0}))),t.crossOrigin=void 0,t.src=e,document.body.appendChild(t)})),n)}}function u(e){let t=n.get(e);return t||n.set(e,t=fetch(e,{credentials:"same-origin"}).then(t=>{if(!t.ok)throw Object.defineProperty(Error(`Failed to load stylesheet: ${e}`),"__NEXT_ERROR_CODE",{value:"E189",enumerable:!1,configurable:!0});return t.text().then(t=>({href:e,content:t}))}).catch(e=>{throw f(e)})),t}return{whenEntrypoint:e=>l(e,t),onEntrypoint(e,r){(r?Promise.resolve().then(()=>r()).then(e=>({component:e&&e.default||e,exports:e}),e=>({error:e})):Promise.resolve(void 0)).then(r=>{let n=t.get(e);n&&"resolve"in n?r&&(t.set(e,r),n.resolve(r)):(r?t.set(e,r):t.delete(e),a.delete(e))})},loadRoute(r,n){return l(r,a,()=>{let a;return _(g(e,r).then(({scripts:e,css:n})=>Promise.all([t.has(r)?[]:Promise.all(e.map(o)),Promise.all(n.map(u))])).then(e=>this.whenEntrypoint(r).then(t=>({entrypoint:t,styles:e[1]}))),3800,f(Object.defineProperty(Error(`Route did not complete loading: ${r}`),"__NEXT_ERROR_CODE",{value:"E12",enumerable:!1,configurable:!0}))).then(({entrypoint:e,styles:t})=>{let r=Object.assign({styles:t},e);return"error"in e?e:r}).catch(e=>{if(n)throw e;return{error:e}}).finally(()=>a?.())})},prefetch(t){let r;return(r=navigator.connection)&&(r.saveData||/2g/.test(r.effectiveType))?Promise.resolve():g(e,t).then(e=>Promise.all(p?e.scripts.map(e=>{var t,r,n;return t=e.toString(),r="script",new Promise((e,a)=>{let o=`
|
|
2
2
|
link[rel="prefetch"][href^="${t}"],
|
|
3
3
|
link[rel="preload"][href^="${t}"],
|
|
4
4
|
script[src^="${t}"]`;if(document.querySelector(o))return e();n=document.createElement("link"),r&&(n.as=r),n.rel="prefetch",n.crossOrigin=void 0,n.onload=e,n.onerror=()=>a(f(Object.defineProperty(Error(`Failed to prefetch: ${t}`),"__NEXT_ERROR_CODE",{value:"E268",enumerable:!1,configurable:!0}))),n.href=t,document.head.appendChild(n)})}):[])).then(()=>{(0,i.requestIdleCallback)(()=>this.loadRoute(t,!0).catch(()=>{}))}).catch(()=>{})}}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},834:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={INTERCEPTION_ROUTE_MARKERS:function(){return i},extractInterceptionRouteInformation:function(){return s},isInterceptionRouteAppPath:function(){return u}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(3849),i=["(..)(..)","(.)","(..)","(...)"];function u(e){return void 0!==e.split("/").find(e=>i.find(t=>e.startsWith(t)))}function s(e){let t,r,n;for(let a of e.split("/"))if(r=i.find(e=>a.startsWith(e))){[t,n]=e.split(r,2);break}if(!t||!r||!n)throw Object.defineProperty(Error(`Invalid interception route: ${e}. Must be in the format /<intercepting route>/(..|...|..)(..)/<intercepted route>`),"__NEXT_ERROR_CODE",{value:"E269",enumerable:!1,configurable:!0});switch(t=(0,o.normalizeAppPath)(t),r){case"(.)":n="/"===t?`/${n}`:t+"/"+n;break;case"(..)":if("/"===t)throw Object.defineProperty(Error(`Invalid interception route: ${e}. Cannot use (..) marker at the root level, use (.) instead.`),"__NEXT_ERROR_CODE",{value:"E207",enumerable:!1,configurable:!0});n=t.split("/").slice(0,-1).concat(n).join("/");break;case"(...)":n="/"+n;break;case"(..)(..)":let a=t.split("/");if(a.length<=2)throw Object.defineProperty(Error(`Invalid interception route: ${e}. Cannot use (..)(..) marker at the root level or one level up.`),"__NEXT_ERROR_CODE",{value:"E486",enumerable:!1,configurable:!0});n=a.slice(0,-2).concat(n).join("/");break;default:throw Object.defineProperty(Error("Invariant: unexpected marker"),"__NEXT_ERROR_CODE",{value:"E112",enumerable:!1,configurable:!0})}return{interceptingRoute:t,interceptedRoute:n}}},941:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HeadManagerContext",{enumerable:!0,get:function(){return n}});let n=r(4252)._(r(4232)).default.createContext({})},1101:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={BailoutToCSRError:function(){return o},isBailoutToCSRError:function(){return i}};for(var n in r)Object.defineProperty(t,n,{enumerable:!0,get:r[n]});let a="BAILOUT_TO_CLIENT_SIDE_RENDERING";class o extends Error{constructor(e){super(`Bail out to client-side rendering: ${e}`),this.reason=e,this.digest=a}}function i(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===a}},1128:(e,t)=>{"use strict";let r;function n(e){return(void 0===r&&(r=window.trustedTypes?.createPolicy("nextjs",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})||null),r)?.createScriptURL(e)||e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"__unsafeCreateTrustedScriptURL",{enumerable:!0,get:function(){return n}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1175:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isLocalURL",{enumerable:!0,get:function(){return o}});let n=r(8608),a=r(5829);function o(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,a.hasBasePath)(r.pathname)}catch(e){return!1}}},1226:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={formatUrl:function(){return u},formatWithValidation:function(){return l},urlObjectKeys:function(){return s}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(8365)._(r(4450)),i=/https?|ftp|gopher|file/;function u(e){let{auth:t,hostname:r}=e,n=e.protocol||"",a=e.pathname||"",u=e.hash||"",s=e.query||"",l=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?l=t+e.host:r&&(l=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(l+=":"+e.port)),s&&"object"==typeof s&&(s=String(o.urlQueryToSearchParams(s)));let c=e.search||s&&`?${s}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||i.test(n))&&!1!==l?(l="//"+(l||""),a&&"/"!==a[0]&&(a="/"+a)):l||(l=""),u&&"#"!==u[0]&&(u="#"+u),c&&"?"!==c[0]&&(c="?"+c),a=a.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${n}${l}${a}${c}${u}`}let s=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function l(e){return u(e)}},1241:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={cancelIdleCallback:function(){return o},requestIdleCallback:function(){return a}};for(var n in r)Object.defineProperty(t,n,{enumerable:!0,get:r[n]});let a="u">typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(e){let t=Date.now();return self.setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},o="u">typeof self&&self.cancelIdleCallback&&self.cancelIdleCallback.bind(window)||function(e){return clearTimeout(e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1291:()=>{"trimStart"in String.prototype||(String.prototype.trimStart=String.prototype.trimLeft),"trimEnd"in String.prototype||(String.prototype.trimEnd=String.prototype.trimRight),"description"in Symbol.prototype||Object.defineProperty(Symbol.prototype,"description",{configurable:!0,get:function(){var e=/\((.*)\)/.exec(this.toString());return e?e[1]:void 0}}),Array.prototype.flat||(Array.prototype.flat=function(e,t){return t=this.concat.apply([],this),e>1&&t.some(Array.isArray)?t.flat(e-1):t},Array.prototype.flatMap=function(e,t){return this.map(e,t).flat()}),Promise.prototype.finally||(Promise.prototype.finally=function(e){if("function"!=typeof e)return this.then(e,e);var t=this.constructor||Promise;return this.then(function(r){return t.resolve(e()).then(function(){return r})},function(r){return t.resolve(e()).then(function(){throw r})})}),Object.fromEntries||(Object.fromEntries=function(e){return Array.from(e).reduce(function(e,t){return e[t[0]]=t[1],e},{})}),Array.prototype.at||(Array.prototype.at=function(e){var t=Math.trunc(e)||0;if(t<0&&(t+=this.length),!(t<0||t>=this.length))return this[t]}),Object.hasOwn||(Object.hasOwn=function(e,t){if(null==e)throw TypeError("Cannot convert undefined or null to object");return Object.prototype.hasOwnProperty.call(Object(e),t)}),"canParse"in URL||(URL.canParse=function(e,t){try{return new URL(e,t),!0}catch(e){return!1}})},1383:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i}});let n=r(4252)._(r(7069));class a{constructor(e,t,r){this.name=e,this.attributes=t.attributes??{},this.startTime=t.startTime??Date.now(),this.onSpanEnd=r,this.state={state:"inprogress"}}end(e){if("ended"===this.state.state)throw Object.defineProperty(Error("Span has already ended"),"__NEXT_ERROR_CODE",{value:"E17",enumerable:!1,configurable:!0});this.state={state:"ended",endTime:e??Date.now()},this.onSpanEnd(this)}}class o{startSpan(e,t){return new a(e,t,this.handleSpanEnd)}onSpanEnd(e){return this._emitter.on("spanend",e),()=>{this._emitter.off("spanend",e)}}constructor(){this._emitter=(0,n.default)(),this.handleSpanEnd=e=>{this._emitter.emit("spanend",e)}}}let i=new o;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1623:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathTrailingSlash",{enumerable:!0,get:function(){return o}});let n=r(7404),a=r(8600),o=e=>{if(!e.startsWith("/"))return e;let{pathname:t,query:r,hash:o}=(0,a.parsePath)(e);return`${(0,n.removeTrailingSlash)(t)}${r}${o}`};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1654:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"pathHasPrefix",{enumerable:!0,get:function(){return a}});let n=r(8600);function a(e,t){if("string"!=typeof e)return!1;let{pathname:r}=(0,n.parsePath)(e);return r===t||r.startsWith(t+"/")}},1692:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return n}});class r extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class n extends URLSearchParams{append(){throw new r}delete(){throw new r}set(){throw new r}sort(){throw new r}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1966:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}});let n=r(4252),a=r(7876),o=n._(r(4232)),i=r(8608);async function u({Component:e,ctx:t}){return{pageProps:await (0,i.loadGetInitialProps)(e,t)}}class s extends o.default.Component{static{this.origGetInitialProps=u}static{this.getInitialProps=u}render(){let{Component:e,pageProps:t}=this.props;return(0,a.jsx)(e,{...t})}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2117:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={PARAM_SEPARATOR:function(){return a},hasAdjacentParameterIssues:function(){return o},normalizeAdjacentParameters:function(){return i},normalizeTokensForRegexp:function(){return u},stripNormalizedSeparators:function(){return s},stripParameterSeparators:function(){return l}};for(var n in r)Object.defineProperty(t,n,{enumerable:!0,get:r[n]});let a="_NEXTSEP_";function o(e){return"string"==typeof e&&!!(/\/\(\.{1,3}\):[^/\s]+/.test(e)||/:[a-zA-Z_][a-zA-Z0-9_]*:[a-zA-Z_][a-zA-Z0-9_]*/.test(e))}function i(e){let t=e;return(t=t.replace(/(\([^)]*\)):([^/\s]+)/g,`$1${a}:$2`)).replace(/:([^:/\s)]+)(?=:)/g,`:$1${a}`)}function u(e){return e.map(e=>"object"==typeof e&&null!==e&&"modifier"in e&&("*"===e.modifier||"+"===e.modifier)&&"prefix"in e&&"suffix"in e&&""===e.prefix&&""===e.suffix?{...e,prefix:"/"}:e)}function s(e){return e.replace(RegExp(`\\)${a}`,"g"),")")}function l(e){let t={};for(let[r,n]of Object.entries(e))"string"==typeof n?t[r]=n.replace(RegExp(`^${a}`),""):Array.isArray(n)?t[r]=n.map(e=>"string"==typeof e?e.replace(RegExp(`^${a}`),""):e):t[r]=n;return t}},2209:(e,t)=>{"use strict";function r(e,t=""){return("/"===e?"/index":/^\/index(\/|$)/.test(e)?`/index${e}`:e)+t}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r}})},2257:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"denormalizePagePath",{enumerable:!0,get:function(){return o}});let n=r(231),a=r(6093);function o(e){let t=(0,a.normalizePathSep)(e);return t.startsWith("/index/")&&!(0,n.isDynamicRoute)(t)?t.slice(6):"/index"!==t?t:"/"}},2267:(e,t,r)=>{"use strict";function n(e){return e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeBasePath",{enumerable:!0,get:function(){return n}}),r(5829),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2326:(e,t)=>{"use strict";function r(e){return"/api"===e||!!(null==e?void 0:e.startsWith("/api/"))}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isAPIRoute",{enumerable:!0,get:function(){return r}})},2390:(e,t,r)=>{"use strict";function n(e,t={}){if(t.onlyHashChange)return void e();let r=document.documentElement;if("smooth"!==r.dataset.scrollBehavior)return void e();let a=r.style.scrollBehavior;r.style.scrollBehavior="auto",t.dontForceLayout||r.getClientRects(),e(),r.style.scrollBehavior=a}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"disableSmoothScrollDuringRouteTransition",{enumerable:!0,get:function(){return n}}),r(7897)},2470:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={default:function(){return y},handleClientScriptLoad:function(){return m},initScriptLoader:function(){return g}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(4252),i=r(8365),u=r(7876),s=o._(r(8477)),l=i._(r(4232)),c=r(941),f=r(9341),d=r(1241),p=new Map,h=new Set,_=e=>{let{src:t,id:r,onLoad:n=()=>{},onReady:a=null,dangerouslySetInnerHTML:o,children:i="",strategy:u="afterInteractive",onError:l,stylesheets:c}=e,d=r||t;if(d&&h.has(d))return;if(p.has(t)){h.add(d),p.get(t).then(n,l);return}let _=()=>{a&&a(),h.add(d)},m=document.createElement("script"),g=new Promise((e,t)=>{m.addEventListener("load",function(t){e(),n&&n.call(this,t),_()}),m.addEventListener("error",function(e){t(e)})}).catch(function(e){l&&l(e)});o?(m.innerHTML=o.__html||"",_()):i?(m.textContent="string"==typeof i?i:Array.isArray(i)?i.join(""):"",_()):t&&(m.src=t,p.set(t,g)),(0,f.setAttributesFromProps)(m,e),"worker"===u&&m.setAttribute("type","text/partytown"),m.setAttribute("data-nscript",u),c&&(e=>{if(s.default.preinit)return e.forEach(e=>{s.default.preinit(e,{as:"style"})});{let t=document.head;e.forEach(e=>{let r=document.createElement("link");r.type="text/css",r.rel="stylesheet",r.href=e,t.appendChild(r)})}})(c),document.body.appendChild(m)};function m(e){let{strategy:t="afterInteractive"}=e;"lazyOnload"===t?window.addEventListener("load",()=>{(0,d.requestIdleCallback)(()=>_(e))}):_(e)}function g(e){e.forEach(m),[...document.querySelectorAll('[data-nscript="beforeInteractive"]'),...document.querySelectorAll('[data-nscript="beforePageRender"]')].forEach(e=>{let t=e.id||e.getAttribute("src");h.add(t)})}function E(e){let{id:t,src:r="",onLoad:n=()=>{},onReady:a=null,strategy:o="afterInteractive",onError:i,stylesheets:f,...p}=e,{updateScripts:m,scripts:g,getIsSsr:E,appDir:y,nonce:b}=(0,l.useContext)(c.HeadManagerContext);b=p.nonce||b;let P=(0,l.useRef)(!1);(0,l.useEffect)(()=>{let e=t||r;P.current||(a&&e&&h.has(e)&&a(),P.current=!0)},[a,t,r]);let R=(0,l.useRef)(!1);if((0,l.useEffect)(()=>{if(!R.current){if("afterInteractive"===o)_(e);else"lazyOnload"===o&&("complete"===document.readyState?(0,d.requestIdleCallback)(()=>_(e)):window.addEventListener("load",()=>{(0,d.requestIdleCallback)(()=>_(e))}));R.current=!0}},[e,o]),("beforeInteractive"===o||"worker"===o)&&(m?(g[o]=(g[o]||[]).concat([{id:t,src:r,onLoad:n,onReady:a,onError:i,...p,nonce:b}]),m(g)):E&&E()?h.add(t||r):E&&!E()&&_({...e,nonce:b})),y){if(f&&f.forEach(e=>{s.default.preinit(e,{as:"style"})}),"beforeInteractive"===o)if(!r)return p.dangerouslySetInnerHTML&&(p.children=p.dangerouslySetInnerHTML.__html,delete p.dangerouslySetInnerHTML),(0,u.jsx)("script",{nonce:b,dangerouslySetInnerHTML:{__html:`(self.__next_s=self.__next_s||[]).push(${JSON.stringify([0,{...p,id:t}])})`}});else return s.default.preload(r,p.integrity?{as:"script",integrity:p.integrity,nonce:b,crossOrigin:p.crossOrigin}:{as:"script",nonce:b,crossOrigin:p.crossOrigin}),(0,u.jsx)("script",{nonce:b,dangerouslySetInnerHTML:{__html:`(self.__next_s=self.__next_s||[]).push(${JSON.stringify([r,{...p,id:t}])})`}});"afterInteractive"===o&&r&&s.default.preload(r,p.integrity?{as:"script",integrity:p.integrity,nonce:b,crossOrigin:p.crossOrigin}:{as:"script",nonce:b,crossOrigin:p.crossOrigin})}return null}Object.defineProperty(E,"__nextScript",{value:!0});let y=E;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2803:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={getParamProperties:function(){return s},getSegmentParam:function(){return i},isCatchAll:function(){return u}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(834);function i(e){let t=o.INTERCEPTION_ROUTE_MARKERS.find(t=>e.startsWith(t));return(t&&(e=e.slice(t.length)),e.startsWith("[[...")&&e.endsWith("]]"))?{paramType:"optional-catchall",paramName:e.slice(5,-2)}:e.startsWith("[...")&&e.endsWith("]")?{paramType:t?`catchall-intercepted-${t}`:"catchall",paramName:e.slice(4,-1)}:e.startsWith("[")&&e.endsWith("]")?{paramType:t?`dynamic-intercepted-${t}`:"dynamic",paramName:e.slice(1,-1)}:null}function u(e){return"catchall"===e||"catchall-intercepted-(..)(..)"===e||"catchall-intercepted-(.)"===e||"catchall-intercepted-(..)"===e||"catchall-intercepted-(...)"===e||"optional-catchall"===e}function s(e){let t=!1,r=!1;switch(e){case"catchall":case"catchall-intercepted-(..)(..)":case"catchall-intercepted-(.)":case"catchall-intercepted-(..)":case"catchall-intercepted-(...)":t=!0;break;case"optional-catchall":t=!0,r=!0}return{repeat:t,optional:r}}},3073:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={isInterceptionAppRoute:function(){return c},isNormalizedAppRoute:function(){return l},parseAppRoute:function(){return function e(t,r){let n,a,i,u=t.split("/").filter(Boolean),l=[];for(let c of u){let u=s(c);if(u){if(r&&("route-group"===u.type||"parallel-route"===u.type))throw Object.defineProperty(new o.InvariantError(`${t} is being parsed as a normalized route, but it has a route group or parallel route segment.`),"__NEXT_ERROR_CODE",{value:"E923",enumerable:!1,configurable:!0});if(l.push(u),u.interceptionMarker){let o=t.split(u.interceptionMarker);if(2!==o.length)throw Object.defineProperty(Error(`Invalid interception route: ${t}`),"__NEXT_ERROR_CODE",{value:"E924",enumerable:!1,configurable:!0});a=r?e(o[0],!0):e(o[0],!1),i=r?e(o[1],!0):e(o[1],!1),n=u.interceptionMarker}}}let c=l.filter(e=>"dynamic"===e.type);return{normalized:r,pathname:t,segments:l,dynamicSegments:c,interceptionMarker:n,interceptingRoute:a,interceptedRoute:i}}},parseAppRouteSegment:function(){return s}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(9642),i=r(2803),u=r(834);function s(e){if(""===e)return null;let t=u.INTERCEPTION_ROUTE_MARKERS.find(t=>e.startsWith(t)),r=(0,i.getSegmentParam)(e);return r?{type:"dynamic",name:e,param:r,interceptionMarker:t}:e.startsWith("(")&&e.endsWith(")")?{type:"route-group",name:e,interceptionMarker:t}:e.startsWith("@")?{type:"parallel-route",name:e,interceptionMarker:t}:{type:"static",name:e,interceptionMarker:t}}function l(e){return e.normalized}function c(e){return void 0!==e.interceptionMarker&&void 0!==e.interceptingRoute&&void 0!==e.interceptedRoute}},3133:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={HTML_LIMITED_BOT_UA_RE:function(){return o.HTML_LIMITED_BOT_UA_RE},HTML_LIMITED_BOT_UA_RE_STRING:function(){return u},getBotType:function(){return c},isBot:function(){return l}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(5977),i=/Googlebot(?!-)|Googlebot$/i,u=o.HTML_LIMITED_BOT_UA_RE.source;function s(e){return o.HTML_LIMITED_BOT_UA_RE.test(e)}function l(e){return i.test(e)||s(e)}function c(e){return i.test(e)?"dom":s(e)?"html":void 0}},3330:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removePathPrefix",{enumerable:!0,get:function(){return a}});let n=r(1654);function a(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:`/${r}`}},3347:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={PARAMETER_PATTERN:function(){return f},getDynamicParam:function(){return c},interpolateParallelRouteParams:function(){return l},parseMatchedParameter:function(){return p},parseParameter:function(){return d}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(9642),i=r(7263),u=r(3073),s=r(8475);function l(e,t,r,n){let a=structuredClone(t),l=[{tree:e,depth:0}],c=(0,u.parseAppRoute)(r,!0);for(;l.length>0;){let{tree:e,depth:t}=l.pop(),{segment:r,parallelRoutes:f}=(0,i.parseLoaderTree)(e),d=(0,u.parseAppRouteSegment)(r);if(d?.type==="dynamic"&&!a.hasOwnProperty(d.param.paramName)&&!n?.has(d.param.paramName)){let{paramName:e,paramType:r}=d.param,n=(0,s.resolveParamValue)(e,r,t,c,a);if(void 0!==n)a[e]=n;else if("optional-catchall"!==r)throw Object.defineProperty(new o.InvariantError(`Could not resolve param value for segment: ${e}`),"__NEXT_ERROR_CODE",{value:"E932",enumerable:!1,configurable:!0})}let p=t;for(let e of(d&&"route-group"!==d.type&&"parallel-route"!==d.type&&p++,Object.values(f)))l.push({tree:e,depth:p})}return a}function c(e,t,r,n){let a=function(e,t,r){let n=e[t];if(r?.has(t)){let[e]=r.get(t);n=e}else Array.isArray(n)?n=n.map(e=>encodeURIComponent(e)):"string"==typeof n&&(n=encodeURIComponent(n));return n}(e,t,n);if(!a||0===a.length){if("oc"===r)return{param:t,value:null,type:r,treeSegment:[t,"",r]};throw Object.defineProperty(new o.InvariantError(`Missing value for segment key: "${t}" with dynamic param type: ${r}`),"__NEXT_ERROR_CODE",{value:"E864",enumerable:!1,configurable:!0})}return{param:t,value:a,treeSegment:[t,Array.isArray(a)?a.join("/"):a,r],type:r}}let f=/^([^[]*)\[((?:\[[^\]]*\])|[^\]]+)\](.*)$/;function d(e){let t=e.match(f);return t?p(t[2]):p(e)}function p(e){let t=e.startsWith("[")&&e.endsWith("]");t&&(e=e.slice(1,-1));let r=e.startsWith("...");return r&&(e=e.slice(3)),{key:e,repeat:r,optional:t}}},3417:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,a={REDIRECT_ERROR_CODE:function(){return u},RedirectType:function(){return s},isRedirectError:function(){return l}};for(var o in a)Object.defineProperty(t,o,{enumerable:!0,get:a[o]});let i=r(5067),u="NEXT_REDIRECT";var s=((n={}).push="push",n.replace="replace",n);function l(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let t=e.digest.split(";"),[r,n]=t,a=t.slice(2,-2).join(";"),o=Number(t.at(-2));return r===u&&("replace"===n||"push"===n)&&"string"==typeof a&&!isNaN(o)&&o in i.RedirectStatusCode}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3485:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={NavigationPromisesContext:function(){return c},PathParamsContext:function(){return l},PathnameContext:function(){return s},ReadonlyURLSearchParams:function(){return i.ReadonlyURLSearchParams},SearchParamsContext:function(){return u},createDevToolsInstrumentedPromise:function(){return f}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(4232),i=r(1692),u=(0,o.createContext)(null),s=(0,o.createContext)(null),l=(0,o.createContext)(null),c=(0,o.createContext)(null);function f(e,t){let r=Promise.resolve(t);return r.status="fulfilled",r.value=t,r.displayName=`${e} (SSR)`,r}},3595:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"parseRelativeUrl",{enumerable:!0,get:function(){return o}});let n=r(8608),a=r(4450);function o(e,t,r=!0){let i=new URL((0,n.getLocationOrigin)()),u=t?new URL(t,i):e.startsWith(".")?new URL(window.location.href):i,{pathname:s,searchParams:l,search:c,hash:f,href:d,origin:p}=new URL(e,u);if(p!==i.origin)throw Object.defineProperty(Error(`invariant: invalid relative URL, router received ${e}`),"__NEXT_ERROR_CODE",{value:"E159",enumerable:!1,configurable:!0});return{pathname:s,query:r?(0,a.searchParamsToUrlQuery)(l):void 0,search:c,hash:f,href:d.slice(p.length),slashes:void 0}}},3684:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizeLocalePath",{enumerable:!0,get:function(){return n}});let r=new WeakMap;function n(e,t){let n;if(!t)return{pathname:e};let a=r.get(t);a||(a=t.map(e=>e.toLowerCase()),r.set(t,a));let o=e.split("/",2);if(!o[1])return{pathname:e};let i=o[1].toLowerCase(),u=a.indexOf(i);return u<0?{pathname:e}:(n=t[u],{pathname:e=e.slice(n.length+1)||"/",detectedLocale:n})}},3822:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"escapeStringRegexp",{enumerable:!0,get:function(){return a}});let r=/[|\\{}()[\]^$+*?.-]/,n=/[|\\{}()[\]^$+*?.-]/g;function a(e){return r.test(e)?e.replace(n,"\\$&"):e}},3849:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={normalizeAppPath:function(){return u},normalizeRscURL:function(){return s}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(5068),i=r(5712);function u(e){return(0,o.ensureLeadingSlash)(e.split("/").reduce((e,t,r,n)=>!t||(0,i.isGroupSegment)(t)||"@"===t[0]||("page"===t||"route"===t)&&r===n.length-1?e:`${e}/${t}`,""))}function s(e){return e.replace(/\.rsc($|\?)/,"$1")}},3882:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"formatNextPathnameInfo",{enumerable:!0,get:function(){return u}});let n=r(7404),a=r(5527),o=r(6786),i=r(8385);function u(e){let t=(0,i.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,o.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,o.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},3899:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return h}});let n=r(4252),a=r(7876),o=n._(r(4232)),i=n._(r(8005)),u={400:"Bad Request",404:"This page could not be found",405:"Method Not Allowed",500:"Internal Server Error"};function s({req:e,res:t,err:r}){return{statusCode:t&&t.statusCode?t.statusCode:r?r.statusCode:404,hostname:window.location.hostname}}let l={fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},c={lineHeight:"48px"},f={display:"inline-block",margin:"0 20px 0 0",paddingRight:23,fontSize:24,fontWeight:500,verticalAlign:"top"},d={fontSize:14,fontWeight:400,lineHeight:"28px"},p={display:"inline-block"};class h extends o.default.Component{static{this.displayName="ErrorPage"}static{this.getInitialProps=s}static{this.origGetInitialProps=s}render(){let{statusCode:e,withDarkMode:t=!0}=this.props,r=this.props.title||u[e]||"An unexpected error has occurred";return(0,a.jsxs)("div",{style:l,children:[(0,a.jsx)(i.default,{children:(0,a.jsx)("title",{children:e?`${e}: ${r}`:"Application error: a client-side exception has occurred"})}),(0,a.jsxs)("div",{style:c,children:[(0,a.jsx)("style",{dangerouslySetInnerHTML:{__html:`body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}${t?"@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}":""}`}}),e?(0,a.jsx)("h1",{className:"next-error-h1",style:f,children:e}):null,(0,a.jsx)("div",{style:p,children:(0,a.jsxs)("h2",{style:d,children:[this.props.title||e?r:(0,a.jsxs)(a.Fragment,{children:["Application error: a client-side exception has occurred"," ",!!this.props.hostname&&(0,a.jsxs)(a.Fragment,{children:["while loading ",this.props.hostname]})," ","(see the browser console for more information)"]}),"."]})})]})]})}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4087:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"reportGlobalError",{enumerable:!0,get:function(){return r}});let r="function"==typeof reportError?reportError:e=>{globalThis.console.error(e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4252:(e,t,r)=>{"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.r(t),r.d(t,{_:()=>n})},4450:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={assign:function(){return u},searchParamsToUrlQuery:function(){return a},urlQueryToSearchParams:function(){return i}};for(var n in r)Object.defineProperty(t,n,{enumerable:!0,get:r[n]});function a(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function o(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function i(e){let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)t.append(r,o(e));else t.set(r,o(n));return t}function u(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,n]of r.entries())e.append(t,n)}return e}},4506:(e,t)=>{"use strict";function r(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"encodeURIPath",{enumerable:!0,get:function(){return r}})},4933:(e,t)=>{"use strict";function r(e,t){let r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let n=r.length;n--;){let a=r[n];if("query"===a){let r=Object.keys(e.query);if(r.length!==Object.keys(t.query).length)return!1;for(let n=r.length;n--;){let a=r[n];if(!t.query.hasOwnProperty(a)||e.query[a]!==t.query[a])return!1}}else if(!t.hasOwnProperty(a)||e[a]!==t[a])return!1}return!0}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"compareRouterStates",{enumerable:!0,get:function(){return r}})},5029:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}}),r(4252);let n=r(7876);r(4232);let a=r(7640);function o(e){function t(t){return(0,n.jsx)(e,{router:(0,a.useRouter)(),...t})}return t.getInitialProps=e.getInitialProps,t.origGetInitialProps=e.origGetInitialProps,t}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5067:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RedirectStatusCode",{enumerable:!0,get:function(){return n}});var r,n=((r={})[r.SeeOther=303]="SeeOther",r[r.TemporaryRedirect=307]="TemporaryRedirect",r[r.PermanentRedirect=308]="PermanentRedirect",r);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5068:(e,t)=>{"use strict";function r(e){return e.startsWith("/")?e:`/${e}`}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ensureLeadingSlash",{enumerable:!0,get:function(){return r}})},5162:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"detectDomainLocale",{enumerable:!0,get:function(){return r}});let r=(...e)=>{};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5364:(e,t,r)=>{"use strict";var n,a;e.exports=(null==(n=r.g.process)?void 0:n.env)&&"object"==typeof(null==(a=r.g.process)?void 0:a.env)?r.g.process:r(5861)},5376:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(6958);if((0,n.getDeploymentId)()){let e=(0,n.getDeploymentIdQueryOrEmptyString)(),t=r.u;r.u=(...r)=>t(...r)+e;let a=r.k;r.k=(...t)=>a(...t)+e;let o=r.miniCssF;r.miniCssF=(...t)=>o(...t)+e}self.__next_set_public_path__=e=>{r.p=e},("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5474:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={getObjectClassLabel:function(){return a},isPlainObject:function(){return o}};for(var n in r)Object.defineProperty(t,n,{enumerable:!0,get:r[n]});function a(e){return Object.prototype.toString.call(e)}function o(e){if("[object Object]"!==a(e))return!1;let t=Object.getPrototypeOf(e);return null===t||t.hasOwnProperty("isPrototypeOf")}},5527:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addPathPrefix",{enumerable:!0,get:function(){return a}});let n=r(8600);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:o}=(0,n.parsePath)(e);return`${t}${r}${a}${o}`}},5594:(e,t,r)=>{"use strict";function n(e,t){return e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeLocale",{enumerable:!0,get:function(){return n}}),r(8600),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5712:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={DEFAULT_SEGMENT_KEY:function(){return c},NOT_FOUND_SEGMENT_KEY:function(){return f},PAGE_SEGMENT_KEY:function(){return l},addSearchParamsIfPageSegment:function(){return u},computeSelectedLayoutSegment:function(){return s},getSegmentValue:function(){return a},getSelectedLayoutSegmentPath:function(){return function e(t,r,n=!0,o=[]){let i;if(n)i=t[1][r];else{let e=t[1];i=e.children??Object.values(e)[0]}if(!i)return o;let u=a(i[0]);return!u||u.startsWith(l)?o:(o.push(u),e(i,r,!1,o))}},isGroupSegment:function(){return o},isParallelRouteSegment:function(){return i}};for(var n in r)Object.defineProperty(t,n,{enumerable:!0,get:r[n]});function a(e){return Array.isArray(e)?e[1]:e}function o(e){return"("===e[0]&&e.endsWith(")")}function i(e){return e.startsWith("@")&&"@children"!==e}function u(e,t){if(e.includes(l)){let e=JSON.stringify(t);return"{}"!==e?l+"?"+e:l}return e}function s(e,t){if(!e||0===e.length)return null;let r="children"===t?e[0]:e[e.length-1];return r===c?null:r}let l="__PAGE__",c="__DEFAULT__",f="/_not-found"},5829:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasBasePath",{enumerable:!0,get:function(){return a}});let n=r(1654);function a(e){return(0,n.pathHasPrefix)(e,"")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5845:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={getSortedRouteObjects:function(){return i},getSortedRoutes:function(){return o}};for(var n in r)Object.defineProperty(t,n,{enumerable:!0,get:r[n]});class a{insert(e){this._insert(e.split("/").filter(Boolean),[],!1)}smoosh(){return this._smoosh()}_smoosh(e="/"){let t=[...this.children.keys()].sort();null!==this.slugName&&t.splice(t.indexOf("[]"),1),null!==this.restSlugName&&t.splice(t.indexOf("[...]"),1),null!==this.optionalRestSlugName&&t.splice(t.indexOf("[[...]]"),1);let r=t.map(t=>this.children.get(t)._smoosh(`${e}${t}/`)).reduce((e,t)=>[...e,...t],[]);if(null!==this.slugName&&r.push(...this.children.get("[]")._smoosh(`${e}[${this.slugName}]/`)),!this.placeholder){let t="/"===e?"/":e.slice(0,-1);if(null!=this.optionalRestSlugName)throw Object.defineProperty(Error(`You cannot define a route with the same specificity as a optional catch-all route ("${t}" and "${t}[[...${this.optionalRestSlugName}]]").`),"__NEXT_ERROR_CODE",{value:"E458",enumerable:!1,configurable:!0});r.unshift(t)}return null!==this.restSlugName&&r.push(...this.children.get("[...]")._smoosh(`${e}[...${this.restSlugName}]/`)),null!==this.optionalRestSlugName&&r.push(...this.children.get("[[...]]")._smoosh(`${e}[[...${this.optionalRestSlugName}]]/`)),r}_insert(e,t,r){if(0===e.length){this.placeholder=!1;return}if(r)throw Object.defineProperty(Error("Catch-all must be the last part of the URL."),"__NEXT_ERROR_CODE",{value:"E392",enumerable:!1,configurable:!0});let n=e[0];if(n.startsWith("[")&&n.endsWith("]")){let a=n.slice(1,-1),i=!1;if(a.startsWith("[")&&a.endsWith("]")&&(a=a.slice(1,-1),i=!0),a.startsWith("…"))throw Object.defineProperty(Error(`Detected a three-dot character ('…') at ('${a}'). Did you mean ('...')?`),"__NEXT_ERROR_CODE",{value:"E147",enumerable:!1,configurable:!0});if(a.startsWith("...")&&(a=a.substring(3),r=!0),a.startsWith("[")||a.endsWith("]"))throw Object.defineProperty(Error(`Segment names may not start or end with extra brackets ('${a}').`),"__NEXT_ERROR_CODE",{value:"E421",enumerable:!1,configurable:!0});if(a.startsWith("."))throw Object.defineProperty(Error(`Segment names may not start with erroneous periods ('${a}').`),"__NEXT_ERROR_CODE",{value:"E288",enumerable:!1,configurable:!0});function o(e,r){if(null!==e&&e!==r)throw Object.defineProperty(Error(`You cannot use different slug names for the same dynamic path ('${e}' !== '${r}').`),"__NEXT_ERROR_CODE",{value:"E337",enumerable:!1,configurable:!0});t.forEach(e=>{if(e===r)throw Object.defineProperty(Error(`You cannot have the same slug name "${r}" repeat within a single dynamic path`),"__NEXT_ERROR_CODE",{value:"E247",enumerable:!1,configurable:!0});if(e.replace(/\W/g,"")===n.replace(/\W/g,""))throw Object.defineProperty(Error(`You cannot have the slug names "${e}" and "${r}" differ only by non-word symbols within a single dynamic path`),"__NEXT_ERROR_CODE",{value:"E499",enumerable:!1,configurable:!0})}),t.push(r)}if(r)if(i){if(null!=this.restSlugName)throw Object.defineProperty(Error(`You cannot use both an required and optional catch-all route at the same level ("[...${this.restSlugName}]" and "${e[0]}" ).`),"__NEXT_ERROR_CODE",{value:"E299",enumerable:!1,configurable:!0});o(this.optionalRestSlugName,a),this.optionalRestSlugName=a,n="[[...]]"}else{if(null!=this.optionalRestSlugName)throw Object.defineProperty(Error(`You cannot use both an optional and required catch-all route at the same level ("[[...${this.optionalRestSlugName}]]" and "${e[0]}").`),"__NEXT_ERROR_CODE",{value:"E300",enumerable:!1,configurable:!0});o(this.restSlugName,a),this.restSlugName=a,n="[...]"}else{if(i)throw Object.defineProperty(Error(`Optional route parameters are not yet supported ("${e[0]}").`),"__NEXT_ERROR_CODE",{value:"E435",enumerable:!1,configurable:!0});o(this.slugName,a),this.slugName=a,n="[]"}}this.children.has(n)||this.children.set(n,new a),this.children.get(n)._insert(e.slice(1),t,r)}constructor(){this.placeholder=!0,this.children=new Map,this.slugName=null,this.restSlugName=null,this.optionalRestSlugName=null}}function o(e){let t=new a;return e.forEach(e=>t.insert(e)),t.smoosh()}function i(e,t){let r={},n=[];for(let a=0;a<e.length;a++){let o=t(e[a]);r[o]=a,n[a]=o}return o(n).map(t=>e[r[t]])}},5861:e=>{var t={229:function(e){var t,r,n,a=e.exports={};function o(){throw Error("setTimeout has not been defined")}function i(){throw Error("clearTimeout has not been defined")}try{t="function"==typeof setTimeout?setTimeout:o}catch(e){t=o}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}function u(e){if(t===setTimeout)return setTimeout(e,0);if((t===o||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}var s=[],l=!1,c=-1;function f(){l&&n&&(l=!1,n.length?s=n.concat(s):c=-1,s.length&&d())}function d(){if(!l){var e=u(f);l=!0;for(var t=s.length;t;){for(n=s,s=[];++c<t;)n&&n[c].run();c=-1,t=s.length}n=null,l=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function h(){}a.nextTick=function(e){var t=Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];s.push(new p(e,t)),1!==s.length||l||u(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},a.title="browser",a.browser=!0,a.env={},a.argv=[],a.version="",a.versions={},a.on=h,a.addListener=h,a.once=h,a.off=h,a.removeListener=h,a.removeAllListeners=h,a.emit=h,a.prependListener=h,a.prependOnceListener=h,a.listeners=function(e){return[]},a.binding=function(e){throw Error("process.binding is not supported")},a.cwd=function(){return"/"},a.chdir=function(e){throw Error("process.chdir is not supported")},a.umask=function(){return 0}}},r={};function n(e){var a=r[e];if(void 0!==a)return a.exports;var o=r[e]={exports:{}},i=!0;try{t[e](o,o.exports,n),i=!1}finally{i&&delete r[e]}return o.exports}n.ab="//",e.exports=n(229)},5944:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={RouteAnnouncer:function(){return c},default:function(){return f}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(4252),i=r(7876),u=o._(r(4232)),s=r(7640),l={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",top:0,width:"1px",whiteSpace:"nowrap",wordWrap:"normal"},c=()=>{let{asPath:e}=(0,s.useRouter)(),[t,r]=u.default.useState(""),n=u.default.useRef(e);return u.default.useEffect(()=>{if(n.current!==e)if(n.current=e,document.title)r(document.title);else{let t=document.querySelector("h1");r((t?.innerText??t?.textContent)||e)}},[e]),(0,i.jsx)("p",{"aria-live":"assertive",id:"__next-route-announcer__",role:"alert",style:l,children:t})},f=c;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5977:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTML_LIMITED_BOT_UA_RE",{enumerable:!0,get:function(){return r}});let r=/[\w-]+-Google|Google-[\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight/i},6093:(e,t)=>{"use strict";function r(e){return e.replace(/\\/g,"/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathSep",{enumerable:!0,get:function(){return r}})},6194:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RouterContext",{enumerable:!0,get:function(){return n}});let n=r(4252)._(r(4232)).default.createContext(null)},6232:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Portal",{enumerable:!0,get:function(){return o}});let n=r(4232),a=r(8477),o=({children:e,type:t})=>{let[r,o]=(0,n.useState)(null);return(0,n.useEffect)(()=>{let e=document.createElement(t);return document.body.appendChild(e),o(e),()=>{document.body.removeChild(e)}},[t]),r?(0,a.createPortal)(e,r):null};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6240:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={default:function(){return i},getProperError:function(){return u}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(5474);function i(e){return"object"==typeof e&&null!==e&&"name"in e&&"message"in e}function u(e){let t;return i(e)?e:Object.defineProperty(Error((0,o.isPlainObject)(e)?(t=new WeakSet,JSON.stringify(e,(e,r)=>{if("object"==typeof r&&null!==r){if(t.has(r))return"[Circular]";t.add(r)}return r})):e+""),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}},6251:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={HTTPAccessErrorStatus:function(){return a},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return i},getAccessFallbackErrorTypeByStatus:function(){return l},getAccessFallbackHTTPStatus:function(){return s},isHTTPAccessFallbackError:function(){return u}};for(var n in r)Object.defineProperty(t,n,{enumerable:!0,get:r[n]});let a={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},o=new Set(Object.values(a)),i="NEXT_HTTP_ERROR_FALLBACK";function u(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r]=e.digest.split(";");return t===i&&o.has(Number(r))}function s(e){return Number(e.digest.split(";")[1])}function l(e){switch(e){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6786:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addPathSuffix",{enumerable:!0,get:function(){return a}});let n=r(8600);function a(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:a,hash:o}=(0,n.parsePath)(e);return`${r}${t}${a}${o}`}},6820:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),r(5376),r(7647);let n=r(363);window.next={version:n.version,get router(){return n.router},emitter:n.emitter},(0,n.initialize)({}).then(()=>(0,n.hydrate)()).catch(console.error),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6958:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={getDeploymentId:function(){return a},getDeploymentIdQueryOrEmptyString:function(){return o}};for(var n in r)Object.defineProperty(t,n,{enumerable:!0,get:r[n]});function a(){return!1}function o(){return""}},7069:(e,t)=>{"use strict";function r(){let e=Object.create(null);return{on(t,r){(e[t]||(e[t]=[])).push(r)},off(t,r){e[t]&&e[t].splice(e[t].indexOf(r)>>>0,1)},emit(t,...r){(e[t]||[]).slice().map(e=>{e(...r)})}}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r}})},7263:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"parseLoaderTree",{enumerable:!0,get:function(){return a}});let n=r(5712);function a(e){let[t,r,a]=e,{layout:o,template:i}=a,{page:u}=a;u=t===n.DEFAULT_SEGMENT_KEY?a.defaultPage:u;let s=o?.[1]||i?.[1]||u?.[1];return{page:u,segment:t,modules:a,conventionPath:s,parallelRoutes:r}}},7404:(e,t)=>{"use strict";function r(e){return e.replace(/\/$/,"")||"/"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return r}})},7445:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getRouteMatcher",{enumerable:!0,get:function(){return o}});let n=r(8608),a=r(54);function o({re:e,groups:t}){return(0,a.safeRouteMatcher)(r=>{let a=e.exec(r);if(!a)return!1;let o=e=>{try{return decodeURIComponent(e)}catch{throw Object.defineProperty(new n.DecodeError("failed to decode param"),"__NEXT_ERROR_CODE",{value:"E528",enumerable:!1,configurable:!0})}},i={};for(let[e,r]of Object.entries(t)){let t=a[r.pos];void 0!==t&&(r.repeat?i[e]=t.split("/").map(e=>o(e)):i[e]=o(t))}return i})}},7585:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNextRouterError",{enumerable:!0,get:function(){return o}});let n=r(6251),a=r(3417);function o(e){return(0,a.isRedirectError)(e)||(0,n.isHTTPAccessFallbackError)(e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7640:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={Router:function(){return u.default},createRouter:function(){return g},default:function(){return _},makePublicRouterInstance:function(){return E},useRouter:function(){return m},withRouter:function(){return c.default}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(4252),i=o._(r(4232)),u=o._(r(8762)),s=r(6194),l=o._(r(6240)),c=o._(r(5029)),f={router:null,readyCallbacks:[],ready(e){if(this.router)return e();this.readyCallbacks.push(e)}},d=["pathname","route","query","asPath","components","isFallback","basePath","locale","locales","defaultLocale","isReady","isPreview","isLocaleDomain","domainLocales"],p=["push","replace","reload","back","prefetch","beforePopState"];function h(){if(!f.router)throw Object.defineProperty(Error('No router instance found.\nYou should only use "next/router" on the client side of your app.\n'),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return f.router}Object.defineProperty(f,"events",{get:()=>u.default.events}),d.forEach(e=>{Object.defineProperty(f,e,{get:()=>h()[e]})}),p.forEach(e=>{f[e]=(...t)=>h()[e](...t)}),["routeChangeStart","beforeHistoryChange","routeChangeComplete","routeChangeError","hashChangeStart","hashChangeComplete"].forEach(e=>{f.ready(()=>{u.default.events.on(e,(...t)=>{let r=`on${e.charAt(0).toUpperCase()}${e.substring(1)}`;if(f[r])try{f[r](...t)}catch(e){console.error(`Error when running the Router event: ${r}`),console.error((0,l.default)(e)?`${e.message}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "idea-manager",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.5",
|
|
4
4
|
"description": "AI-powered idea & task manager for developers. Brainstorm → structured tasks → AI agent execution. CodeMirror editor with slash commands, MCP Server, Claude/Gemini/Codex support. Local-first SQLite, cross-PC Git sync.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"idea-manager",
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"files": [
|
|
41
41
|
"README.md",
|
|
42
|
+
"SECURITY.md",
|
|
42
43
|
"bin/",
|
|
43
44
|
"src/",
|
|
44
45
|
"public/",
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
IM (Idea Manager) is a **local-first CLI task manager** that intentionally uses the following capabilities. This document explains each and why they are safe.
|
|
4
|
+
|
|
5
|
+
## Reporting a Vulnerability
|
|
6
|
+
|
|
7
|
+
Open an issue at <https://github.com/navskh/IM/issues> or email the maintainer.
|
|
8
|
+
We take security seriously; please report privately if the issue could be exploited.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Intentional Capabilities (not vulnerabilities)
|
|
13
|
+
|
|
14
|
+
### 1. Network calls
|
|
15
|
+
|
|
16
|
+
| Where | Purpose |
|
|
17
|
+
|---|---|
|
|
18
|
+
| `registry.npmjs.org` | Check if a newer version is published (version badge + auto-update) |
|
|
19
|
+
| `http://localhost:<port>` | Readiness probe during `im start` |
|
|
20
|
+
|
|
21
|
+
No external hostnames except `registry.npmjs.org`. No telemetry. No analytics.
|
|
22
|
+
|
|
23
|
+
### 2. Child process spawn
|
|
24
|
+
|
|
25
|
+
| Binary | Purpose |
|
|
26
|
+
|---|---|
|
|
27
|
+
| `claude` / `gemini` / `codex` | User-chosen AI CLI for the Advisor, Refine, and Watch features |
|
|
28
|
+
| `npm` | Only invoked by the auto-update flow to run `npm install -g idea-manager@latest` |
|
|
29
|
+
| `git` / `gh` | Only invoked by the optional Git sync feature |
|
|
30
|
+
| User's default browser | `im start` opens the web UI via `--app=` mode |
|
|
31
|
+
|
|
32
|
+
All binary names are fixed. No user input is ever concatenated into a shell command; arguments are passed as arrays to `child_process.spawn`/`execFile`. `shell: true` is only set on Windows (required for `.cmd` wrapper resolution) and arguments are escaped by Node's native handling.
|
|
33
|
+
|
|
34
|
+
### 3. Filesystem access
|
|
35
|
+
|
|
36
|
+
| Path | Purpose |
|
|
37
|
+
|---|---|
|
|
38
|
+
| `~/.idea-manager/data/im.db` | SQLite database (user's tasks, notes, conversations) |
|
|
39
|
+
| `~/.idea-manager/sync/` | Optional Git sync working directory |
|
|
40
|
+
| `~/.idea-manager/media/` | Reserved for future image attachments |
|
|
41
|
+
| Package install directory | Read-only — Next.js build output, node_modules |
|
|
42
|
+
| User-selected project paths | Listed/scanned for file tree UI; read only |
|
|
43
|
+
|
|
44
|
+
No writes outside `~/.idea-manager/` and the package's own install directory.
|
|
45
|
+
|
|
46
|
+
### 4. Auto-update (v1.8.0+)
|
|
47
|
+
|
|
48
|
+
`im start` checks npm registry on boot and, if a newer version is available,
|
|
49
|
+
spawns `npm install -g idea-manager@latest` and re-execs itself. This is an
|
|
50
|
+
intentional "download-and-execute" pattern. It can be disabled with:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
IM_NO_AUTO_UPDATE=1 im start
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
We require the `im` binary to already be installed globally by the user.
|
|
57
|
+
The install command is invoked with fixed arguments, not derived from user input.
|
|
58
|
+
|
|
59
|
+
### 5. CSRF protection
|
|
60
|
+
|
|
61
|
+
All `/api/*` mutation endpoints (POST/PUT/DELETE/PATCH) reject cross-origin
|
|
62
|
+
browser requests. Only same-origin (`localhost`/`127.0.0.1`) or non-browser
|
|
63
|
+
clients (no `Origin` header, e.g. CLI/MCP) are allowed. See `src/middleware.ts`.
|
|
64
|
+
|
|
65
|
+
### 6. What IM does NOT do
|
|
66
|
+
|
|
67
|
+
- No remote code execution (beyond known AI CLIs or `npm install`)
|
|
68
|
+
- No credential handling (relies on user's pre-configured AI CLI auth)
|
|
69
|
+
- No telemetry or analytics
|
|
70
|
+
- No outbound network except npm registry version check
|
|
71
|
+
- No access to browser data, OAuth tokens, or passwords
|
|
72
|
+
- No uploads to any third-party service
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Known Static-Analyzer False Positives
|
|
77
|
+
|
|
78
|
+
Some static-analysis tools (e.g., SafeSkill) flag the following as risky:
|
|
79
|
+
|
|
80
|
+
- `http.get()` + filesystem access → **readiness probe only**, target is `localhost`
|
|
81
|
+
- `fetch(npmjs.org)` + `spawn('npm install -g')` → **intentional auto-update**, opt-out available
|
|
82
|
+
- `spawn(agent-binary)` with project `cwd` → **user-configured AI CLI**, not arbitrary code
|
|
83
|
+
|
|
84
|
+
These are features, not vulnerabilities. They are documented here for auditors.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Runtime Hardening
|
|
89
|
+
|
|
90
|
+
- Next.js middleware blocks cross-origin mutation attempts.
|
|
91
|
+
- AI CLI spawn uses fixed binary names; user input is never shell-interpolated.
|
|
92
|
+
- SQLite prepared statements; no string concatenation into SQL.
|
|
93
|
+
- sql.js WASM pinned to the bundled `sql.js/dist/sql-wasm.wasm` (see `next.config.mjs`).
|
|
94
|
+
- Standalone Next.js build removes absolute paths from published artifacts.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
Last updated: 2026-04-17
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "idea-manager",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.5",
|
|
4
4
|
"description": "AI-powered idea & task manager for developers. Brainstorm → structured tasks → AI agent execution. CodeMirror editor with slash commands, MCP Server, Claude/Gemini/Codex support. Local-first SQLite, cross-PC Git sync.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"idea-manager",
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"files": [
|
|
41
41
|
"README.md",
|
|
42
|
+
"SECURITY.md",
|
|
42
43
|
"bin/",
|
|
43
44
|
"src/",
|
|
44
45
|
"public/",
|
|
@@ -37,8 +37,10 @@ export async function POST(request: NextRequest) {
|
|
|
37
37
|
}
|
|
38
38
|
const aiMsg = addGlobalConversation('assistant', trimmedResponse);
|
|
39
39
|
return NextResponse.json({ userMessage: userMsg, aiMessage: aiMsg });
|
|
40
|
-
} catch {
|
|
41
|
-
const
|
|
40
|
+
} catch (err) {
|
|
41
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
42
|
+
console.error('[global-advisor] AI call failed:', detail);
|
|
43
|
+
const errorMsg = addGlobalConversation('assistant', `⚠ AI 호출 실패: ${detail}\n\nClaude CLI가 설치되어 PATH에 있는지 확인하세요 (\`claude --version\`).`);
|
|
42
44
|
return NextResponse.json({ userMessage: userMsg, aiMessage: errorMsg });
|
|
43
45
|
}
|
|
44
46
|
}
|
|
@@ -54,8 +54,10 @@ export async function POST(
|
|
|
54
54
|
}
|
|
55
55
|
const aiMsg = addProjectConversation(id, 'assistant', trimmedResponse);
|
|
56
56
|
return NextResponse.json({ userMessage: userMsg, aiMessage: aiMsg });
|
|
57
|
-
} catch {
|
|
58
|
-
const
|
|
57
|
+
} catch (err) {
|
|
58
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
59
|
+
console.error('[advisor] AI call failed:', detail);
|
|
60
|
+
const errorMsg = addProjectConversation(id, 'assistant', `⚠ AI 호출 실패: ${detail}\n\n**체크리스트**\n- Claude CLI가 PATH에 있는가? (\`claude --version\` 확인)\n- 네트워크 연결 / 로그인 상태?\n- Windows라면 \`claude.cmd\`가 \`where claude\`로 찾아지는지?`);
|
|
59
61
|
return NextResponse.json({ userMessage: userMsg, aiMessage: errorMsg });
|
|
60
62
|
}
|
|
61
63
|
}
|
|
@@ -72,8 +72,10 @@ ${brainstorm?.content ? `\nBrainstorming context:\n${brainstorm.content.slice(0,
|
|
|
72
72
|
}
|
|
73
73
|
const aiMsg = addTaskConversation(taskId, 'assistant', trimmed);
|
|
74
74
|
return NextResponse.json({ userMessage: userMsg, aiMessage: aiMsg });
|
|
75
|
-
} catch {
|
|
76
|
-
const
|
|
75
|
+
} catch (err) {
|
|
76
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
77
|
+
console.error('[task-chat] AI call failed:', detail);
|
|
78
|
+
const errorMsg = addTaskConversation(taskId, 'assistant', `⚠ AI 호출 실패: ${detail}\n\nClaude CLI가 설치되어 있고 PATH에 있는지 확인하세요 (\`claude --version\`).`);
|
|
77
79
|
return NextResponse.json({ userMessage: userMsg, aiMessage: errorMsg });
|
|
78
80
|
}
|
|
79
81
|
}
|
package/src/lib/ai/client.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
2
3
|
import { AGENTS } from './agents';
|
|
3
4
|
import type { AgentType } from '../../types';
|
|
4
5
|
|
|
@@ -33,8 +34,14 @@ export function runAgent(
|
|
|
33
34
|
const args = config.buildArgs({ streaming: useStreamJson, model: options?.model });
|
|
34
35
|
const env = config.buildEnv();
|
|
35
36
|
|
|
37
|
+
// If a cwd was requested but doesn't exist on this machine (e.g. a Mac path
|
|
38
|
+
// synced to a Windows box), fall back to process.cwd() instead of failing
|
|
39
|
+
// with the opaque ENOENT that spawn throws.
|
|
40
|
+
const requestedCwd = options?.cwd;
|
|
41
|
+
const effectiveCwd = requestedCwd && existsSync(requestedCwd) ? requestedCwd : process.cwd();
|
|
42
|
+
|
|
36
43
|
const proc = spawn(config.binary, args, {
|
|
37
|
-
cwd:
|
|
44
|
+
cwd: effectiveCwd,
|
|
38
45
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
39
46
|
shell: process.platform === 'win32',
|
|
40
47
|
windowsHide: true,
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
2
|
+
|
|
3
|
+
// Reject cross-origin mutations on /api/* routes to prevent CSRF:
|
|
4
|
+
// a malicious site opened in the user's browser while IM is running could
|
|
5
|
+
// otherwise POST to localhost:3456/api/update (or any mutation endpoint).
|
|
6
|
+
//
|
|
7
|
+
// - Same-origin browser requests include matching Origin → allowed
|
|
8
|
+
// - Non-browser clients (curl, MCP stdio callers) usually omit Origin → allowed
|
|
9
|
+
// - Cross-origin browser requests have a non-local Origin → blocked
|
|
10
|
+
|
|
11
|
+
const MUTATION_METHODS = new Set(['POST', 'PUT', 'DELETE', 'PATCH']);
|
|
12
|
+
|
|
13
|
+
function isLocalOrigin(origin: string): boolean {
|
|
14
|
+
try {
|
|
15
|
+
const { hostname } = new URL(origin);
|
|
16
|
+
return hostname === 'localhost' || hostname === '127.0.0.1' || hostname === '::1';
|
|
17
|
+
} catch {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function middleware(request: NextRequest) {
|
|
23
|
+
if (!MUTATION_METHODS.has(request.method)) {
|
|
24
|
+
return NextResponse.next();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const origin = request.headers.get('origin');
|
|
28
|
+
if (!origin) {
|
|
29
|
+
// No Origin header: likely a non-browser client (curl, Claude MCP, etc.).
|
|
30
|
+
// These run locally and are trusted.
|
|
31
|
+
return NextResponse.next();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (isLocalOrigin(origin)) {
|
|
35
|
+
return NextResponse.next();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return NextResponse.json(
|
|
39
|
+
{ error: 'Cross-origin requests are not allowed' },
|
|
40
|
+
{ status: 403 },
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export const config = {
|
|
45
|
+
matcher: '/api/:path*',
|
|
46
|
+
};
|
|
File without changes
|
|
File without changes
|