diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a3f9b3e..585ba87 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -4,6 +4,7 @@ on: push: branches: - main + workflow_dispatch: jobs: build-and-deploy: diff --git a/frontend/dist/assets/index-uSxI_7i0.js b/frontend/dist/assets/index-uSxI_7i0.js new file mode 100644 index 0000000..ca7085a --- /dev/null +++ b/frontend/dist/assets/index-uSxI_7i0.js @@ -0,0 +1,199 @@ +function m0(a,r){for(var c=0;co[f]})}}}return Object.freeze(Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}))}(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const f of document.querySelectorAll('link[rel="modulepreload"]'))o(f);new MutationObserver(f=>{for(const d of f)if(d.type==="childList")for(const g of d.addedNodes)g.tagName==="LINK"&&g.rel==="modulepreload"&&o(g)}).observe(document,{childList:!0,subtree:!0});function c(f){const d={};return f.integrity&&(d.integrity=f.integrity),f.referrerPolicy&&(d.referrerPolicy=f.referrerPolicy),f.crossOrigin==="use-credentials"?d.credentials="include":f.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function o(f){if(f.ep)return;f.ep=!0;const d=c(f);fetch(f.href,d)}})();function iv(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var ru={exports:{}},Gi={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var hg;function h0(){if(hg)return Gi;hg=1;var a=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function c(o,f,d){var g=null;if(d!==void 0&&(g=""+d),f.key!==void 0&&(g=""+f.key),"key"in f){d={};for(var p in f)p!=="key"&&(d[p]=f[p])}else d=f;return f=d.ref,{$$typeof:a,type:o,key:g,ref:f!==void 0?f:null,props:d}}return Gi.Fragment=r,Gi.jsx=c,Gi.jsxs=c,Gi}var gg;function g0(){return gg||(gg=1,ru.exports=h0()),ru.exports}var u=g0(),ou={exports:{}},Se={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var vg;function v0(){if(vg)return Se;vg=1;var a=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),c=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),d=Symbol.for("react.consumer"),g=Symbol.for("react.context"),p=Symbol.for("react.forward_ref"),x=Symbol.for("react.suspense"),m=Symbol.for("react.memo"),v=Symbol.for("react.lazy"),b=Symbol.iterator;function w(A){return A===null||typeof A!="object"?null:(A=b&&A[b]||A["@@iterator"],typeof A=="function"?A:null)}var _={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},M=Object.assign,N={};function T(A,X,I){this.props=A,this.context=X,this.refs=N,this.updater=I||_}T.prototype.isReactComponent={},T.prototype.setState=function(A,X){if(typeof A!="object"&&typeof A!="function"&&A!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,A,X,"setState")},T.prototype.forceUpdate=function(A){this.updater.enqueueForceUpdate(this,A,"forceUpdate")};function z(){}z.prototype=T.prototype;function R(A,X,I){this.props=A,this.context=X,this.refs=N,this.updater=I||_}var U=R.prototype=new z;U.constructor=R,M(U,T.prototype),U.isPureReactComponent=!0;var Y=Array.isArray,G={H:null,A:null,T:null,S:null,V:null},J=Object.prototype.hasOwnProperty;function F(A,X,I,P,ee,ye){return I=ye.ref,{$$typeof:a,type:A,key:X,ref:I!==void 0?I:null,props:ye}}function Q(A,X){return F(A.type,X,void 0,void 0,void 0,A.props)}function ie(A){return typeof A=="object"&&A!==null&&A.$$typeof===a}function me(A){var X={"=":"=0",":":"=2"};return"$"+A.replace(/[=:]/g,function(I){return X[I]})}var xe=/\/+/g;function fe(A,X){return typeof A=="object"&&A!==null&&A.key!=null?me(""+A.key):X.toString(36)}function be(){}function ve(A){switch(A.status){case"fulfilled":return A.value;case"rejected":throw A.reason;default:switch(typeof A.status=="string"?A.then(be,be):(A.status="pending",A.then(function(X){A.status==="pending"&&(A.status="fulfilled",A.value=X)},function(X){A.status==="pending"&&(A.status="rejected",A.reason=X)})),A.status){case"fulfilled":return A.value;case"rejected":throw A.reason}}throw A}function de(A,X,I,P,ee){var ye=typeof A;(ye==="undefined"||ye==="boolean")&&(A=null);var oe=!1;if(A===null)oe=!0;else switch(ye){case"bigint":case"string":case"number":oe=!0;break;case"object":switch(A.$$typeof){case a:case r:oe=!0;break;case v:return oe=A._init,de(oe(A._payload),X,I,P,ee)}}if(oe)return ee=ee(A),oe=P===""?"."+fe(A,0):P,Y(ee)?(I="",oe!=null&&(I=oe.replace(xe,"$&/")+"/"),de(ee,X,I,"",function(De){return De})):ee!=null&&(ie(ee)&&(ee=Q(ee,I+(ee.key==null||A&&A.key===ee.key?"":(""+ee.key).replace(xe,"$&/")+"/")+oe)),X.push(ee)),1;oe=0;var W=P===""?".":P+":";if(Y(A))for(var ue=0;ue>>1,A=j[re];if(0>>1;ref(P,B))eef(ye,P)?(j[re]=ye,j[ee]=B,re=ee):(j[re]=P,j[I]=B,re=I);else if(eef(ye,B))j[re]=ye,j[ee]=B,re=ee;else break e}}return K}function f(j,K){var B=j.sortIndex-K.sortIndex;return B!==0?B:j.id-K.id}if(a.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var d=performance;a.unstable_now=function(){return d.now()}}else{var g=Date,p=g.now();a.unstable_now=function(){return g.now()-p}}var x=[],m=[],v=1,b=null,w=3,_=!1,M=!1,N=!1,T=!1,z=typeof setTimeout=="function"?setTimeout:null,R=typeof clearTimeout=="function"?clearTimeout:null,U=typeof setImmediate<"u"?setImmediate:null;function Y(j){for(var K=c(m);K!==null;){if(K.callback===null)o(m);else if(K.startTime<=j)o(m),K.sortIndex=K.expirationTime,r(x,K);else break;K=c(m)}}function G(j){if(N=!1,Y(j),!M)if(c(x)!==null)M=!0,J||(J=!0,fe());else{var K=c(m);K!==null&&de(G,K.startTime-j)}}var J=!1,F=-1,Q=5,ie=-1;function me(){return T?!0:!(a.unstable_now()-iej&&me());){var re=b.callback;if(typeof re=="function"){b.callback=null,w=b.priorityLevel;var A=re(b.expirationTime<=j);if(j=a.unstable_now(),typeof A=="function"){b.callback=A,Y(j),K=!0;break t}b===c(x)&&o(x),Y(j)}else o(x);b=c(x)}if(b!==null)K=!0;else{var X=c(m);X!==null&&de(G,X.startTime-j),K=!1}}break e}finally{b=null,w=B,_=!1}K=void 0}}finally{K?fe():J=!1}}}var fe;if(typeof U=="function")fe=function(){U(xe)};else if(typeof MessageChannel<"u"){var be=new MessageChannel,ve=be.port2;be.port1.onmessage=xe,fe=function(){ve.postMessage(null)}}else fe=function(){z(xe,0)};function de(j,K){F=z(function(){j(a.unstable_now())},K)}a.unstable_IdlePriority=5,a.unstable_ImmediatePriority=1,a.unstable_LowPriority=4,a.unstable_NormalPriority=3,a.unstable_Profiling=null,a.unstable_UserBlockingPriority=2,a.unstable_cancelCallback=function(j){j.callback=null},a.unstable_forceFrameRate=function(j){0>j||125re?(j.sortIndex=B,r(m,j),c(x)===null&&j===c(m)&&(N?(R(F),F=-1):N=!0,de(G,B-re))):(j.sortIndex=A,r(x,j),M||_||(M=!0,J||(J=!0,fe()))),j},a.unstable_shouldYield=me,a.unstable_wrapCallback=function(j){var K=w;return function(){var B=w;w=K;try{return j.apply(this,arguments)}finally{w=B}}}}(uu)),uu}var xg;function y0(){return xg||(xg=1,su.exports=p0()),su.exports}var fu={exports:{}},St={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var bg;function x0(){if(bg)return St;bg=1;var a=Qu();function r(x){var m="https://react.dev/errors/"+x;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(r){console.error(r)}}return a(),fu.exports=x0(),fu.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var wg;function b0(){if(wg)return Yi;wg=1;var a=y0(),r=Qu(),c=ov();function o(e){var t="https://react.dev/errors/"+e;if(1A||(e.current=re[A],re[A]=null,A--)}function P(e,t){A++,re[A]=e.current,e.current=t}var ee=X(null),ye=X(null),oe=X(null),W=X(null);function ue(e,t){switch(P(oe,t),P(ye,e),P(ee,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Yh(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Yh(t),e=Vh(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}I(ee),P(ee,e)}function De(){I(ee),I(ye),I(oe)}function Re(e){e.memoizedState!==null&&P(W,e);var t=ee.current,n=Vh(t,e.type);t!==n&&(P(ye,e),P(ee,n))}function Ne(e){ye.current===e&&(I(ee),I(ye)),W.current===e&&(I(W),Ui._currentValue=B)}var Ee=Object.prototype.hasOwnProperty,lt=a.unstable_scheduleCallback,ot=a.unstable_cancelCallback,rn=a.unstable_shouldYield,Sn=a.unstable_requestPaint,q=a.unstable_now,se=a.unstable_getCurrentPriorityLevel,pt=a.unstable_ImmediatePriority,Ft=a.unstable_UserBlockingPriority,Bt=a.unstable_NormalPriority,bl=a.unstable_LowPriority,ct=a.unstable_IdlePriority,Ql=a.log,Zl=a.unstable_setDisableYieldValue,Yn=null,yt=null;function Pt(e){if(typeof Ql=="function"&&Zl(e),yt&&typeof yt.setStrictMode=="function")try{yt.setStrictMode(Yn,e)}catch{}}var Ue=Math.clz32?Math.clz32:Wy,Iy=Math.log,Jy=Math.LN2;function Wy(e){return e>>>=0,e===0?32:31-(Iy(e)/Jy|0)|0}var Wi=256,er=4194304;function Sl(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function tr(e,t,n){var l=e.pendingLanes;if(l===0)return 0;var i=0,s=e.suspendedLanes,h=e.pingedLanes;e=e.warmLanes;var y=l&134217727;return y!==0?(l=y&~s,l!==0?i=Sl(l):(h&=y,h!==0?i=Sl(h):n||(n=y&~e,n!==0&&(i=Sl(n))))):(y=l&~s,y!==0?i=Sl(y):h!==0?i=Sl(h):n||(n=l&~e,n!==0&&(i=Sl(n)))),i===0?0:t!==0&&t!==i&&(t&s)===0&&(s=i&-i,n=t&-t,s>=n||s===32&&(n&4194048)!==0)?t:i}function Qa(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function ex(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Af(){var e=Wi;return Wi<<=1,(Wi&4194048)===0&&(Wi=256),e}function Cf(){var e=er;return er<<=1,(er&62914560)===0&&(er=4194304),e}function Fo(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Za(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function tx(e,t,n,l,i,s){var h=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var y=e.entanglements,E=e.expirationTimes,k=e.hiddenUpdates;for(n=h&~n;0)":-1i||E[l]!==k[i]){var V=` +`+E[l].replace(" at new "," at ");return e.displayName&&V.includes("")&&(V=V.replace("",e.displayName)),V}while(1<=l&&0<=i);break}}}finally{tc=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?Jl(n):""}function ox(e){switch(e.tag){case 26:case 27:case 5:return Jl(e.type);case 16:return Jl("Lazy");case 13:return Jl("Suspense");case 19:return Jl("SuspenseList");case 0:case 15:return nc(e.type,!1);case 11:return nc(e.type.render,!1);case 1:return nc(e.type,!0);case 31:return Jl("Activity");default:return""}}function Uf(e){try{var t="";do t+=ox(e),e=e.return;while(e);return t}catch(n){return` +Error generating stack: `+n.message+` +`+n.stack}}function qt(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Lf(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function cx(e){var t=Lf(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),l=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,s=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(h){l=""+h,s.call(this,h)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return l},setValue:function(h){l=""+h},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function ar(e){e._valueTracker||(e._valueTracker=cx(e))}function Hf(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),l="";return e&&(l=Lf(e)?e.checked?"true":"false":e.value),e=l,e!==n?(t.setValue(e),!0):!1}function ir(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var sx=/[\n"\\]/g;function Gt(e){return e.replace(sx,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function lc(e,t,n,l,i,s,h,y){e.name="",h!=null&&typeof h!="function"&&typeof h!="symbol"&&typeof h!="boolean"?e.type=h:e.removeAttribute("type"),t!=null?h==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+qt(t)):e.value!==""+qt(t)&&(e.value=""+qt(t)):h!=="submit"&&h!=="reset"||e.removeAttribute("value"),t!=null?ac(e,h,qt(t)):n!=null?ac(e,h,qt(n)):l!=null&&e.removeAttribute("value"),i==null&&s!=null&&(e.defaultChecked=!!s),i!=null&&(e.checked=i&&typeof i!="function"&&typeof i!="symbol"),y!=null&&typeof y!="function"&&typeof y!="symbol"&&typeof y!="boolean"?e.name=""+qt(y):e.removeAttribute("name")}function Bf(e,t,n,l,i,s,h,y){if(s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"&&(e.type=s),t!=null||n!=null){if(!(s!=="submit"&&s!=="reset"||t!=null))return;n=n!=null?""+qt(n):"",t=t!=null?""+qt(t):n,y||t===e.value||(e.value=t),e.defaultValue=t}l=l??i,l=typeof l!="function"&&typeof l!="symbol"&&!!l,e.checked=y?e.checked:!!l,e.defaultChecked=!!l,h!=null&&typeof h!="function"&&typeof h!="symbol"&&typeof h!="boolean"&&(e.name=h)}function ac(e,t,n){t==="number"&&ir(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function Wl(e,t,n,l){if(e=e.options,t){t={};for(var i=0;i"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),sc=!1;if(Nn)try{var Pa={};Object.defineProperty(Pa,"passive",{get:function(){sc=!0}}),window.addEventListener("test",Pa,Pa),window.removeEventListener("test",Pa,Pa)}catch{sc=!1}var Xn=null,uc=null,or=null;function Zf(){if(or)return or;var e,t=uc,n=t.length,l,i="value"in Xn?Xn.value:Xn.textContent,s=i.length;for(e=0;e=Wa),Jf=" ",Wf=!1;function ed(e,t){switch(e){case"keyup":return Lx.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function td(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var la=!1;function Bx(e,t){switch(e){case"compositionend":return td(t);case"keypress":return t.which!==32?null:(Wf=!0,Jf);case"textInput":return e=t.data,e===Jf&&Wf?null:e;default:return null}}function qx(e,t){if(la)return e==="compositionend"||!gc&&ed(e,t)?(e=Zf(),or=uc=Xn=null,la=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=l}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=sd(n)}}function fd(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?fd(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function dd(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=ir(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=ir(e.document)}return t}function yc(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var $x=Nn&&"documentMode"in document&&11>=document.documentMode,aa=null,xc=null,li=null,bc=!1;function md(e,t,n){var l=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;bc||aa==null||aa!==ir(l)||(l=aa,"selectionStart"in l&&yc(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),li&&ni(li,l)||(li=l,l=Ir(xc,"onSelect"),0>=h,i-=h,An=1<<32-Ue(t)+i|n<s?s:8;var h=j.T,y={};j.T=y,is(e,!1,t,n);try{var E=i(),k=j.S;if(k!==null&&k(y,E),E!==null&&typeof E=="object"&&typeof E.then=="function"){var V=lb(E,l);yi(e,t,V,kt(e))}else yi(e,t,l,kt(e))}catch($){yi(e,t,{then:function(){},status:"rejected",reason:$},kt())}finally{K.p=s,j.T=h}}function cb(){}function ls(e,t,n,l){if(e.tag!==5)throw Error(o(476));var i=hm(e).queue;mm(e,i,t,B,n===null?cb:function(){return gm(e),n(l)})}function hm(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:B,baseState:B,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Rn,lastRenderedState:B},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Rn,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function gm(e){var t=hm(e).next.queue;yi(e,t,{},kt())}function as(){return bt(Ui)}function vm(){return tt().memoizedState}function pm(){return tt().memoizedState}function sb(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=kt();e=Kn(n);var l=$n(t,e,n);l!==null&&(Ut(l,t,n),di(l,t,n)),t={cache:zc()},e.payload=t;return}t=t.return}}function ub(e,t,n){var l=kt();n={lane:l,revertLane:0,action:n,hasEagerState:!1,eagerState:null,next:null},Or(e)?xm(t,n):(n=Ec(e,t,n,l),n!==null&&(Ut(n,e,l),bm(n,t,l)))}function ym(e,t,n){var l=kt();yi(e,t,n,l)}function yi(e,t,n,l){var i={lane:l,revertLane:0,action:n,hasEagerState:!1,eagerState:null,next:null};if(Or(e))xm(t,i);else{var s=e.alternate;if(e.lanes===0&&(s===null||s.lanes===0)&&(s=t.lastRenderedReducer,s!==null))try{var h=t.lastRenderedState,y=s(h,n);if(i.hasEagerState=!0,i.eagerState=y,jt(y,h))return hr(e,t,i,0),Qe===null&&mr(),!1}catch{}finally{}if(n=Ec(e,t,i,l),n!==null)return Ut(n,e,l),bm(n,t,l),!0}return!1}function is(e,t,n,l){if(l={lane:2,revertLane:Ls(),action:l,hasEagerState:!1,eagerState:null,next:null},Or(e)){if(t)throw Error(o(479))}else t=Ec(e,n,l,2),t!==null&&Ut(t,e,2)}function Or(e){var t=e.alternate;return e===Ae||t!==null&&t===Ae}function xm(e,t){ha=Ar=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function bm(e,t,n){if((n&4194048)!==0){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,_f(e,n)}}var Mr={readContext:bt,use:Tr,useCallback:Ie,useContext:Ie,useEffect:Ie,useImperativeHandle:Ie,useLayoutEffect:Ie,useInsertionEffect:Ie,useMemo:Ie,useReducer:Ie,useRef:Ie,useState:Ie,useDebugValue:Ie,useDeferredValue:Ie,useTransition:Ie,useSyncExternalStore:Ie,useId:Ie,useHostTransitionStatus:Ie,useFormState:Ie,useActionState:Ie,useOptimistic:Ie,useMemoCache:Ie,useCacheRefresh:Ie},Sm={readContext:bt,use:Tr,useCallback:function(e,t){return Ct().memoizedState=[e,t===void 0?null:t],e},useContext:bt,useEffect:am,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,jr(4194308,4,cm.bind(null,t,e),n)},useLayoutEffect:function(e,t){return jr(4194308,4,e,t)},useInsertionEffect:function(e,t){jr(4,2,e,t)},useMemo:function(e,t){var n=Ct();t=t===void 0?null:t;var l=e();if(zl){Pt(!0);try{e()}finally{Pt(!1)}}return n.memoizedState=[l,t],l},useReducer:function(e,t,n){var l=Ct();if(n!==void 0){var i=n(t);if(zl){Pt(!0);try{n(t)}finally{Pt(!1)}}}else i=t;return l.memoizedState=l.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},l.queue=e,e=e.dispatch=ub.bind(null,Ae,e),[l.memoizedState,e]},useRef:function(e){var t=Ct();return e={current:e},t.memoizedState=e},useState:function(e){e=Wc(e);var t=e.queue,n=ym.bind(null,Ae,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:ts,useDeferredValue:function(e,t){var n=Ct();return ns(n,e,t)},useTransition:function(){var e=Wc(!1);return e=mm.bind(null,Ae,e.queue,!0,!1),Ct().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var l=Ae,i=Ct();if(Le){if(n===void 0)throw Error(o(407));n=n()}else{if(n=t(),Qe===null)throw Error(o(349));(Me&124)!==0||Yd(l,t,n)}i.memoizedState=n;var s={value:n,getSnapshot:t};return i.queue=s,am(Xd.bind(null,l,s,e),[e]),l.flags|=2048,va(9,Rr(),Vd.bind(null,l,s,n,t),null),n},useId:function(){var e=Ct(),t=Qe.identifierPrefix;if(Le){var n=Cn,l=An;n=(l&~(1<<32-Ue(l)-1)).toString(32)+n,t="«"+t+"R"+n,n=Cr++,0ge?(dt=ce,ce=null):dt=ce.sibling;var ze=L(O,ce,D[ge],Z);if(ze===null){ce===null&&(ce=dt);break}e&&ce&&ze.alternate===null&&t(O,ce),C=s(ze,C,ge),Te===null?ne=ze:Te.sibling=ze,Te=ze,ce=dt}if(ge===D.length)return n(O,ce),Le&&_l(O,ge),ne;if(ce===null){for(;gege?(dt=ce,ce=null):dt=ce.sibling;var fl=L(O,ce,ze.value,Z);if(fl===null){ce===null&&(ce=dt);break}e&&ce&&fl.alternate===null&&t(O,ce),C=s(fl,C,ge),Te===null?ne=fl:Te.sibling=fl,Te=fl,ce=dt}if(ze.done)return n(O,ce),Le&&_l(O,ge),ne;if(ce===null){for(;!ze.done;ge++,ze=D.next())ze=$(O,ze.value,Z),ze!==null&&(C=s(ze,C,ge),Te===null?ne=ze:Te.sibling=ze,Te=ze);return Le&&_l(O,ge),ne}for(ce=l(ce);!ze.done;ge++,ze=D.next())ze=H(ce,O,ge,ze.value,Z),ze!==null&&(e&&ze.alternate!==null&&ce.delete(ze.key===null?ge:ze.key),C=s(ze,C,ge),Te===null?ne=ze:Te.sibling=ze,Te=ze);return e&&ce.forEach(function(d0){return t(O,d0)}),Le&&_l(O,ge),ne}function Ye(O,C,D,Z){if(typeof D=="object"&&D!==null&&D.type===M&&D.key===null&&(D=D.props.children),typeof D=="object"&&D!==null){switch(D.$$typeof){case w:e:{for(var ne=D.key;C!==null;){if(C.key===ne){if(ne=D.type,ne===M){if(C.tag===7){n(O,C.sibling),Z=i(C,D.props.children),Z.return=O,O=Z;break e}}else if(C.elementType===ne||typeof ne=="object"&&ne!==null&&ne.$$typeof===Q&&Nm(ne)===C.type){n(O,C.sibling),Z=i(C,D.props),bi(Z,D),Z.return=O,O=Z;break e}n(O,C);break}else t(O,C);C=C.sibling}D.type===M?(Z=Cl(D.props.children,O.mode,Z,D.key),Z.return=O,O=Z):(Z=vr(D.type,D.key,D.props,null,O.mode,Z),bi(Z,D),Z.return=O,O=Z)}return h(O);case _:e:{for(ne=D.key;C!==null;){if(C.key===ne)if(C.tag===4&&C.stateNode.containerInfo===D.containerInfo&&C.stateNode.implementation===D.implementation){n(O,C.sibling),Z=i(C,D.children||[]),Z.return=O,O=Z;break e}else{n(O,C);break}else t(O,C);C=C.sibling}Z=Tc(D,O.mode,Z),Z.return=O,O=Z}return h(O);case Q:return ne=D._init,D=ne(D._payload),Ye(O,C,D,Z)}if(de(D))return pe(O,C,D,Z);if(fe(D)){if(ne=fe(D),typeof ne!="function")throw Error(o(150));return D=ne.call(D),he(O,C,D,Z)}if(typeof D.then=="function")return Ye(O,C,Dr(D),Z);if(D.$$typeof===U)return Ye(O,C,br(O,D),Z);zr(O,D)}return typeof D=="string"&&D!==""||typeof D=="number"||typeof D=="bigint"?(D=""+D,C!==null&&C.tag===6?(n(O,C.sibling),Z=i(C,D),Z.return=O,O=Z):(n(O,C),Z=Cc(D,O.mode,Z),Z.return=O,O=Z),h(O)):n(O,C)}return function(O,C,D,Z){try{xi=0;var ne=Ye(O,C,D,Z);return pa=null,ne}catch(ce){if(ce===ui||ce===wr)throw ce;var Te=Ot(29,ce,null,O.mode);return Te.lanes=Z,Te.return=O,Te}finally{}}}var ya=Em(!0),Am=Em(!1),Zt=X(null),cn=null;function Pn(e){var t=e.alternate;P(it,it.current&1),P(Zt,e),cn===null&&(t===null||ma.current!==null||t.memoizedState!==null)&&(cn=e)}function Cm(e){if(e.tag===22){if(P(it,it.current),P(Zt,e),cn===null){var t=e.alternate;t!==null&&t.memoizedState!==null&&(cn=e)}}else In()}function In(){P(it,it.current),P(Zt,Zt.current)}function jn(e){I(Zt),cn===e&&(cn=null),I(it)}var it=X(0);function kr(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||Fs(n)))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function rs(e,t,n,l){t=e.memoizedState,n=n(l,t),n=n==null?t:v({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var os={enqueueSetState:function(e,t,n){e=e._reactInternals;var l=kt(),i=Kn(l);i.payload=t,n!=null&&(i.callback=n),t=$n(e,i,l),t!==null&&(Ut(t,e,l),di(t,e,l))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var l=kt(),i=Kn(l);i.tag=1,i.payload=t,n!=null&&(i.callback=n),t=$n(e,i,l),t!==null&&(Ut(t,e,l),di(t,e,l))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=kt(),l=Kn(n);l.tag=2,t!=null&&(l.callback=t),t=$n(e,l,n),t!==null&&(Ut(t,e,n),di(t,e,n))}};function Tm(e,t,n,l,i,s,h){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(l,s,h):t.prototype&&t.prototype.isPureReactComponent?!ni(n,l)||!ni(i,s):!0}function _m(e,t,n,l){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(n,l),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(n,l),t.state!==e&&os.enqueueReplaceState(t,t.state,null)}function kl(e,t){var n=t;if("ref"in t){n={};for(var l in t)l!=="ref"&&(n[l]=t[l])}if(e=e.defaultProps){n===t&&(n=v({},n));for(var i in e)n[i]===void 0&&(n[i]=e[i])}return n}var Ur=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)};function Rm(e){Ur(e)}function jm(e){console.error(e)}function Om(e){Ur(e)}function Lr(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(l){setTimeout(function(){throw l})}}function Mm(e,t,n){try{var l=e.onCaughtError;l(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(i){setTimeout(function(){throw i})}}function cs(e,t,n){return n=Kn(n),n.tag=3,n.payload={element:null},n.callback=function(){Lr(e,t)},n}function Dm(e){return e=Kn(e),e.tag=3,e}function zm(e,t,n,l){var i=n.type.getDerivedStateFromError;if(typeof i=="function"){var s=l.value;e.payload=function(){return i(s)},e.callback=function(){Mm(t,n,l)}}var h=n.stateNode;h!==null&&typeof h.componentDidCatch=="function"&&(e.callback=function(){Mm(t,n,l),typeof i!="function"&&(ll===null?ll=new Set([this]):ll.add(this));var y=l.stack;this.componentDidCatch(l.value,{componentStack:y!==null?y:""})})}function db(e,t,n,l,i){if(n.flags|=32768,l!==null&&typeof l=="object"&&typeof l.then=="function"){if(t=n.alternate,t!==null&&oi(t,n,i,!0),n=Zt.current,n!==null){switch(n.tag){case 13:return cn===null?Ms():n.alternate===null&&Pe===0&&(Pe=3),n.flags&=-257,n.flags|=65536,n.lanes=i,l===Lc?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([l]):t.add(l),zs(e,l,i)),!1;case 22:return n.flags|=65536,l===Lc?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([l])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([l]):n.add(l)),zs(e,l,i)),!1}throw Error(o(435,n.tag))}return zs(e,l,i),Ms(),!1}if(Le)return t=Zt.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=i,l!==jc&&(e=Error(o(422),{cause:l}),ri(Yt(e,n)))):(l!==jc&&(t=Error(o(423),{cause:l}),ri(Yt(t,n))),e=e.current.alternate,e.flags|=65536,i&=-i,e.lanes|=i,l=Yt(l,n),i=cs(e.stateNode,l,i),qc(e,i),Pe!==4&&(Pe=2)),!1;var s=Error(o(520),{cause:l});if(s=Yt(s,n),Ti===null?Ti=[s]:Ti.push(s),Pe!==4&&(Pe=2),t===null)return!0;l=Yt(l,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=i&-i,n.lanes|=e,e=cs(n.stateNode,l,e),qc(n,e),!1;case 1:if(t=n.type,s=n.stateNode,(n.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||s!==null&&typeof s.componentDidCatch=="function"&&(ll===null||!ll.has(s))))return n.flags|=65536,i&=-i,n.lanes|=i,i=Dm(i),zm(i,e,n,l),qc(n,i),!1}n=n.return}while(n!==null);return!1}var km=Error(o(461)),ut=!1;function mt(e,t,n,l){t.child=e===null?Am(t,null,n,l):ya(t,e.child,n,l)}function Um(e,t,n,l,i){n=n.render;var s=t.ref;if("ref"in l){var h={};for(var y in l)y!=="ref"&&(h[y]=l[y])}else h=l;return Ml(t),l=Qc(e,t,n,h,s,i),y=Zc(),e!==null&&!ut?(Kc(e,t,i),On(e,t,i)):(Le&&y&&_c(t),t.flags|=1,mt(e,t,l,i),t.child)}function Lm(e,t,n,l,i){if(e===null){var s=n.type;return typeof s=="function"&&!Ac(s)&&s.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=s,Hm(e,t,s,l,i)):(e=vr(n.type,null,l,t,t.mode,i),e.ref=t.ref,e.return=t,t.child=e)}if(s=e.child,!vs(e,i)){var h=s.memoizedProps;if(n=n.compare,n=n!==null?n:ni,n(h,l)&&e.ref===t.ref)return On(e,t,i)}return t.flags|=1,e=En(s,l),e.ref=t.ref,e.return=t,t.child=e}function Hm(e,t,n,l,i){if(e!==null){var s=e.memoizedProps;if(ni(s,l)&&e.ref===t.ref)if(ut=!1,t.pendingProps=l=s,vs(e,i))(e.flags&131072)!==0&&(ut=!0);else return t.lanes=e.lanes,On(e,t,i)}return ss(e,t,n,l,i)}function Bm(e,t,n){var l=t.pendingProps,i=l.children,s=e!==null?e.memoizedState:null;if(l.mode==="hidden"){if((t.flags&128)!==0){if(l=s!==null?s.baseLanes|n:n,e!==null){for(i=t.child=e.child,s=0;i!==null;)s=s|i.lanes|i.childLanes,i=i.sibling;t.childLanes=s&~l}else t.childLanes=0,t.child=null;return qm(e,t,l,n)}if((n&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&Sr(t,s!==null?s.cachePool:null),s!==null?Hd(t,s):Yc(),Cm(t);else return t.lanes=t.childLanes=536870912,qm(e,t,s!==null?s.baseLanes|n:n,n)}else s!==null?(Sr(t,s.cachePool),Hd(t,s),In(),t.memoizedState=null):(e!==null&&Sr(t,null),Yc(),In());return mt(e,t,i,n),t.child}function qm(e,t,n,l){var i=Uc();return i=i===null?null:{parent:at._currentValue,pool:i},t.memoizedState={baseLanes:n,cachePool:i},e!==null&&Sr(t,null),Yc(),Cm(t),e!==null&&oi(e,t,l,!0),null}function Hr(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!="function"&&typeof n!="object")throw Error(o(284));(e===null||e.ref!==n)&&(t.flags|=4194816)}}function ss(e,t,n,l,i){return Ml(t),n=Qc(e,t,n,l,void 0,i),l=Zc(),e!==null&&!ut?(Kc(e,t,i),On(e,t,i)):(Le&&l&&_c(t),t.flags|=1,mt(e,t,n,i),t.child)}function Gm(e,t,n,l,i,s){return Ml(t),t.updateQueue=null,n=qd(t,l,n,i),Bd(e),l=Zc(),e!==null&&!ut?(Kc(e,t,s),On(e,t,s)):(Le&&l&&_c(t),t.flags|=1,mt(e,t,n,s),t.child)}function Ym(e,t,n,l,i){if(Ml(t),t.stateNode===null){var s=ca,h=n.contextType;typeof h=="object"&&h!==null&&(s=bt(h)),s=new n(l,s),t.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,s.updater=os,t.stateNode=s,s._reactInternals=t,s=t.stateNode,s.props=l,s.state=t.memoizedState,s.refs={},Hc(t),h=n.contextType,s.context=typeof h=="object"&&h!==null?bt(h):ca,s.state=t.memoizedState,h=n.getDerivedStateFromProps,typeof h=="function"&&(rs(t,n,h,l),s.state=t.memoizedState),typeof n.getDerivedStateFromProps=="function"||typeof s.getSnapshotBeforeUpdate=="function"||typeof s.UNSAFE_componentWillMount!="function"&&typeof s.componentWillMount!="function"||(h=s.state,typeof s.componentWillMount=="function"&&s.componentWillMount(),typeof s.UNSAFE_componentWillMount=="function"&&s.UNSAFE_componentWillMount(),h!==s.state&&os.enqueueReplaceState(s,s.state,null),hi(t,l,s,i),mi(),s.state=t.memoizedState),typeof s.componentDidMount=="function"&&(t.flags|=4194308),l=!0}else if(e===null){s=t.stateNode;var y=t.memoizedProps,E=kl(n,y);s.props=E;var k=s.context,V=n.contextType;h=ca,typeof V=="object"&&V!==null&&(h=bt(V));var $=n.getDerivedStateFromProps;V=typeof $=="function"||typeof s.getSnapshotBeforeUpdate=="function",y=t.pendingProps!==y,V||typeof s.UNSAFE_componentWillReceiveProps!="function"&&typeof s.componentWillReceiveProps!="function"||(y||k!==h)&&_m(t,s,l,h),Zn=!1;var L=t.memoizedState;s.state=L,hi(t,l,s,i),mi(),k=t.memoizedState,y||L!==k||Zn?(typeof $=="function"&&(rs(t,n,$,l),k=t.memoizedState),(E=Zn||Tm(t,n,E,l,L,k,h))?(V||typeof s.UNSAFE_componentWillMount!="function"&&typeof s.componentWillMount!="function"||(typeof s.componentWillMount=="function"&&s.componentWillMount(),typeof s.UNSAFE_componentWillMount=="function"&&s.UNSAFE_componentWillMount()),typeof s.componentDidMount=="function"&&(t.flags|=4194308)):(typeof s.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=l,t.memoizedState=k),s.props=l,s.state=k,s.context=h,l=E):(typeof s.componentDidMount=="function"&&(t.flags|=4194308),l=!1)}else{s=t.stateNode,Bc(e,t),h=t.memoizedProps,V=kl(n,h),s.props=V,$=t.pendingProps,L=s.context,k=n.contextType,E=ca,typeof k=="object"&&k!==null&&(E=bt(k)),y=n.getDerivedStateFromProps,(k=typeof y=="function"||typeof s.getSnapshotBeforeUpdate=="function")||typeof s.UNSAFE_componentWillReceiveProps!="function"&&typeof s.componentWillReceiveProps!="function"||(h!==$||L!==E)&&_m(t,s,l,E),Zn=!1,L=t.memoizedState,s.state=L,hi(t,l,s,i),mi();var H=t.memoizedState;h!==$||L!==H||Zn||e!==null&&e.dependencies!==null&&xr(e.dependencies)?(typeof y=="function"&&(rs(t,n,y,l),H=t.memoizedState),(V=Zn||Tm(t,n,V,l,L,H,E)||e!==null&&e.dependencies!==null&&xr(e.dependencies))?(k||typeof s.UNSAFE_componentWillUpdate!="function"&&typeof s.componentWillUpdate!="function"||(typeof s.componentWillUpdate=="function"&&s.componentWillUpdate(l,H,E),typeof s.UNSAFE_componentWillUpdate=="function"&&s.UNSAFE_componentWillUpdate(l,H,E)),typeof s.componentDidUpdate=="function"&&(t.flags|=4),typeof s.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof s.componentDidUpdate!="function"||h===e.memoizedProps&&L===e.memoizedState||(t.flags|=4),typeof s.getSnapshotBeforeUpdate!="function"||h===e.memoizedProps&&L===e.memoizedState||(t.flags|=1024),t.memoizedProps=l,t.memoizedState=H),s.props=l,s.state=H,s.context=E,l=V):(typeof s.componentDidUpdate!="function"||h===e.memoizedProps&&L===e.memoizedState||(t.flags|=4),typeof s.getSnapshotBeforeUpdate!="function"||h===e.memoizedProps&&L===e.memoizedState||(t.flags|=1024),l=!1)}return s=l,Hr(e,t),l=(t.flags&128)!==0,s||l?(s=t.stateNode,n=l&&typeof n.getDerivedStateFromError!="function"?null:s.render(),t.flags|=1,e!==null&&l?(t.child=ya(t,e.child,null,i),t.child=ya(t,null,n,i)):mt(e,t,n,i),t.memoizedState=s.state,e=t.child):e=On(e,t,i),e}function Vm(e,t,n,l){return ii(),t.flags|=256,mt(e,t,n,l),t.child}var us={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function fs(e){return{baseLanes:e,cachePool:jd()}}function ds(e,t,n){return e=e!==null?e.childLanes&~n:0,t&&(e|=Kt),e}function Xm(e,t,n){var l=t.pendingProps,i=!1,s=(t.flags&128)!==0,h;if((h=s)||(h=e!==null&&e.memoizedState===null?!1:(it.current&2)!==0),h&&(i=!0,t.flags&=-129),h=(t.flags&32)!==0,t.flags&=-33,e===null){if(Le){if(i?Pn(t):In(),Le){var y=Fe,E;if(E=y){e:{for(E=y,y=on;E.nodeType!==8;){if(!y){y=null;break e}if(E=Wt(E.nextSibling),E===null){y=null;break e}}y=E}y!==null?(t.memoizedState={dehydrated:y,treeContext:Tl!==null?{id:An,overflow:Cn}:null,retryLane:536870912,hydrationErrors:null},E=Ot(18,null,null,0),E.stateNode=y,E.return=t,t.child=E,Nt=t,Fe=null,E=!0):E=!1}E||jl(t)}if(y=t.memoizedState,y!==null&&(y=y.dehydrated,y!==null))return Fs(y)?t.lanes=32:t.lanes=536870912,null;jn(t)}return y=l.children,l=l.fallback,i?(In(),i=t.mode,y=Br({mode:"hidden",children:y},i),l=Cl(l,i,n,null),y.return=t,l.return=t,y.sibling=l,t.child=y,i=t.child,i.memoizedState=fs(n),i.childLanes=ds(e,h,n),t.memoizedState=us,l):(Pn(t),ms(t,y))}if(E=e.memoizedState,E!==null&&(y=E.dehydrated,y!==null)){if(s)t.flags&256?(Pn(t),t.flags&=-257,t=hs(e,t,n)):t.memoizedState!==null?(In(),t.child=e.child,t.flags|=128,t=null):(In(),i=l.fallback,y=t.mode,l=Br({mode:"visible",children:l.children},y),i=Cl(i,y,n,null),i.flags|=2,l.return=t,i.return=t,l.sibling=i,t.child=l,ya(t,e.child,null,n),l=t.child,l.memoizedState=fs(n),l.childLanes=ds(e,h,n),t.memoizedState=us,t=i);else if(Pn(t),Fs(y)){if(h=y.nextSibling&&y.nextSibling.dataset,h)var k=h.dgst;h=k,l=Error(o(419)),l.stack="",l.digest=h,ri({value:l,source:null,stack:null}),t=hs(e,t,n)}else if(ut||oi(e,t,n,!1),h=(n&e.childLanes)!==0,ut||h){if(h=Qe,h!==null&&(l=n&-n,l=(l&42)!==0?1:Po(l),l=(l&(h.suspendedLanes|n))!==0?0:l,l!==0&&l!==E.retryLane))throw E.retryLane=l,oa(e,l),Ut(h,e,l),km;y.data==="$?"||Ms(),t=hs(e,t,n)}else y.data==="$?"?(t.flags|=192,t.child=e.child,t=null):(e=E.treeContext,Fe=Wt(y.nextSibling),Nt=t,Le=!0,Rl=null,on=!1,e!==null&&(Xt[Qt++]=An,Xt[Qt++]=Cn,Xt[Qt++]=Tl,An=e.id,Cn=e.overflow,Tl=t),t=ms(t,l.children),t.flags|=4096);return t}return i?(In(),i=l.fallback,y=t.mode,E=e.child,k=E.sibling,l=En(E,{mode:"hidden",children:l.children}),l.subtreeFlags=E.subtreeFlags&65011712,k!==null?i=En(k,i):(i=Cl(i,y,n,null),i.flags|=2),i.return=t,l.return=t,l.sibling=i,t.child=l,l=i,i=t.child,y=e.child.memoizedState,y===null?y=fs(n):(E=y.cachePool,E!==null?(k=at._currentValue,E=E.parent!==k?{parent:k,pool:k}:E):E=jd(),y={baseLanes:y.baseLanes|n,cachePool:E}),i.memoizedState=y,i.childLanes=ds(e,h,n),t.memoizedState=us,l):(Pn(t),n=e.child,e=n.sibling,n=En(n,{mode:"visible",children:l.children}),n.return=t,n.sibling=null,e!==null&&(h=t.deletions,h===null?(t.deletions=[e],t.flags|=16):h.push(e)),t.child=n,t.memoizedState=null,n)}function ms(e,t){return t=Br({mode:"visible",children:t},e.mode),t.return=e,e.child=t}function Br(e,t){return e=Ot(22,e,null,t),e.lanes=0,e.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},e}function hs(e,t,n){return ya(t,e.child,null,n),e=ms(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Qm(e,t,n){e.lanes|=t;var l=e.alternate;l!==null&&(l.lanes|=t),Mc(e.return,t,n)}function gs(e,t,n,l,i){var s=e.memoizedState;s===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:l,tail:n,tailMode:i}:(s.isBackwards=t,s.rendering=null,s.renderingStartTime=0,s.last=l,s.tail=n,s.tailMode=i)}function Zm(e,t,n){var l=t.pendingProps,i=l.revealOrder,s=l.tail;if(mt(e,t,l.children,n),l=it.current,(l&2)!==0)l=l&1|2,t.flags|=128;else{if(e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Qm(e,n,t);else if(e.tag===19)Qm(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}l&=1}switch(P(it,l),i){case"forwards":for(n=t.child,i=null;n!==null;)e=n.alternate,e!==null&&kr(e)===null&&(i=n),n=n.sibling;n=i,n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),gs(t,!1,i,n,s);break;case"backwards":for(n=null,i=t.child,t.child=null;i!==null;){if(e=i.alternate,e!==null&&kr(e)===null){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}gs(t,!0,n,null,s);break;case"together":gs(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function On(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),nl|=t.lanes,(n&t.childLanes)===0)if(e!==null){if(oi(e,t,n,!1),(n&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error(o(153));if(t.child!==null){for(e=t.child,n=En(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=En(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function vs(e,t){return(e.lanes&t)!==0?!0:(e=e.dependencies,!!(e!==null&&xr(e)))}function mb(e,t,n){switch(t.tag){case 3:ue(t,t.stateNode.containerInfo),Qn(t,at,e.memoizedState.cache),ii();break;case 27:case 5:Re(t);break;case 4:ue(t,t.stateNode.containerInfo);break;case 10:Qn(t,t.type,t.memoizedProps.value);break;case 13:var l=t.memoizedState;if(l!==null)return l.dehydrated!==null?(Pn(t),t.flags|=128,null):(n&t.child.childLanes)!==0?Xm(e,t,n):(Pn(t),e=On(e,t,n),e!==null?e.sibling:null);Pn(t);break;case 19:var i=(e.flags&128)!==0;if(l=(n&t.childLanes)!==0,l||(oi(e,t,n,!1),l=(n&t.childLanes)!==0),i){if(l)return Zm(e,t,n);t.flags|=128}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),P(it,it.current),l)break;return null;case 22:case 23:return t.lanes=0,Bm(e,t,n);case 24:Qn(t,at,e.memoizedState.cache)}return On(e,t,n)}function Km(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps)ut=!0;else{if(!vs(e,n)&&(t.flags&128)===0)return ut=!1,mb(e,t,n);ut=(e.flags&131072)!==0}else ut=!1,Le&&(t.flags&1048576)!==0&&Nd(t,yr,t.index);switch(t.lanes=0,t.tag){case 16:e:{e=t.pendingProps;var l=t.elementType,i=l._init;if(l=i(l._payload),t.type=l,typeof l=="function")Ac(l)?(e=kl(l,e),t.tag=1,t=Ym(null,t,l,e,n)):(t.tag=0,t=ss(null,t,l,e,n));else{if(l!=null){if(i=l.$$typeof,i===Y){t.tag=11,t=Um(null,t,l,e,n);break e}else if(i===F){t.tag=14,t=Lm(null,t,l,e,n);break e}}throw t=ve(l)||l,Error(o(306,t,""))}}return t;case 0:return ss(e,t,t.type,t.pendingProps,n);case 1:return l=t.type,i=kl(l,t.pendingProps),Ym(e,t,l,i,n);case 3:e:{if(ue(t,t.stateNode.containerInfo),e===null)throw Error(o(387));l=t.pendingProps;var s=t.memoizedState;i=s.element,Bc(e,t),hi(t,l,null,n);var h=t.memoizedState;if(l=h.cache,Qn(t,at,l),l!==s.cache&&Dc(t,[at],n,!0),mi(),l=h.element,s.isDehydrated)if(s={element:l,isDehydrated:!1,cache:h.cache},t.updateQueue.baseState=s,t.memoizedState=s,t.flags&256){t=Vm(e,t,l,n);break e}else if(l!==i){i=Yt(Error(o(424)),t),ri(i),t=Vm(e,t,l,n);break e}else{switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName==="HTML"?e.ownerDocument.body:e}for(Fe=Wt(e.firstChild),Nt=t,Le=!0,Rl=null,on=!0,n=Am(t,null,l,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling}else{if(ii(),l===i){t=On(e,t,n);break e}mt(e,t,l,n)}t=t.child}return t;case 26:return Hr(e,t),e===null?(n=Ih(t.type,null,t.pendingProps,null))?t.memoizedState=n:Le||(n=t.type,e=t.pendingProps,l=Wr(oe.current).createElement(n),l[xt]=t,l[Et]=e,gt(l,n,e),st(l),t.stateNode=l):t.memoizedState=Ih(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return Re(t),e===null&&Le&&(l=t.stateNode=$h(t.type,t.pendingProps,oe.current),Nt=t,on=!0,i=Fe,rl(t.type)?(Ps=i,Fe=Wt(l.firstChild)):Fe=i),mt(e,t,t.pendingProps.children,n),Hr(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&Le&&((i=l=Fe)&&(l=Gb(l,t.type,t.pendingProps,on),l!==null?(t.stateNode=l,Nt=t,Fe=Wt(l.firstChild),on=!1,i=!0):i=!1),i||jl(t)),Re(t),i=t.type,s=t.pendingProps,h=e!==null?e.memoizedProps:null,l=s.children,Zs(i,s)?l=null:h!==null&&Zs(i,h)&&(t.flags|=32),t.memoizedState!==null&&(i=Qc(e,t,ib,null,null,n),Ui._currentValue=i),Hr(e,t),mt(e,t,l,n),t.child;case 6:return e===null&&Le&&((e=n=Fe)&&(n=Yb(n,t.pendingProps,on),n!==null?(t.stateNode=n,Nt=t,Fe=null,e=!0):e=!1),e||jl(t)),null;case 13:return Xm(e,t,n);case 4:return ue(t,t.stateNode.containerInfo),l=t.pendingProps,e===null?t.child=ya(t,null,l,n):mt(e,t,l,n),t.child;case 11:return Um(e,t,t.type,t.pendingProps,n);case 7:return mt(e,t,t.pendingProps,n),t.child;case 8:return mt(e,t,t.pendingProps.children,n),t.child;case 12:return mt(e,t,t.pendingProps.children,n),t.child;case 10:return l=t.pendingProps,Qn(t,t.type,l.value),mt(e,t,l.children,n),t.child;case 9:return i=t.type._context,l=t.pendingProps.children,Ml(t),i=bt(i),l=l(i),t.flags|=1,mt(e,t,l,n),t.child;case 14:return Lm(e,t,t.type,t.pendingProps,n);case 15:return Hm(e,t,t.type,t.pendingProps,n);case 19:return Zm(e,t,n);case 31:return l=t.pendingProps,n=t.mode,l={mode:l.mode,children:l.children},e===null?(n=Br(l,n),n.ref=t.ref,t.child=n,n.return=t,t=n):(n=En(e.child,l),n.ref=t.ref,t.child=n,n.return=t,t=n),t;case 22:return Bm(e,t,n);case 24:return Ml(t),l=bt(at),e===null?(i=Uc(),i===null&&(i=Qe,s=zc(),i.pooledCache=s,s.refCount++,s!==null&&(i.pooledCacheLanes|=n),i=s),t.memoizedState={parent:l,cache:i},Hc(t),Qn(t,at,i)):((e.lanes&n)!==0&&(Bc(e,t),hi(t,null,null,n),mi()),i=e.memoizedState,s=t.memoizedState,i.parent!==l?(i={parent:l,cache:l},t.memoizedState=i,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=i),Qn(t,at,l)):(l=s.cache,Qn(t,at,l),l!==i.cache&&Dc(t,[at],n,!0))),mt(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(o(156,t.tag))}function Mn(e){e.flags|=4}function $m(e,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!ng(t)){if(t=Zt.current,t!==null&&((Me&4194048)===Me?cn!==null:(Me&62914560)!==Me&&(Me&536870912)===0||t!==cn))throw fi=Lc,Od;e.flags|=8192}}function qr(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag!==22?Cf():536870912,e.lanes|=t,wa|=t)}function Si(e,t){if(!Le)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var l=null;n!==null;)n.alternate!==null&&(l=n),n=n.sibling;l===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:l.sibling=null}}function $e(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,l=0;if(t)for(var i=e.child;i!==null;)n|=i.lanes|i.childLanes,l|=i.subtreeFlags&65011712,l|=i.flags&65011712,i.return=e,i=i.sibling;else for(i=e.child;i!==null;)n|=i.lanes|i.childLanes,l|=i.subtreeFlags,l|=i.flags,i.return=e,i=i.sibling;return e.subtreeFlags|=l,e.childLanes=n,t}function hb(e,t,n){var l=t.pendingProps;switch(Rc(t),t.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return $e(t),null;case 1:return $e(t),null;case 3:return n=t.stateNode,l=null,e!==null&&(l=e.memoizedState.cache),t.memoizedState.cache!==l&&(t.flags|=2048),_n(at),De(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(ai(t)?Mn(t):e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,Cd())),$e(t),null;case 26:return n=t.memoizedState,e===null?(Mn(t),n!==null?($e(t),$m(t,n)):($e(t),t.flags&=-16777217)):n?n!==e.memoizedState?(Mn(t),$e(t),$m(t,n)):($e(t),t.flags&=-16777217):(e.memoizedProps!==l&&Mn(t),$e(t),t.flags&=-16777217),null;case 27:Ne(t),n=oe.current;var i=t.type;if(e!==null&&t.stateNode!=null)e.memoizedProps!==l&&Mn(t);else{if(!l){if(t.stateNode===null)throw Error(o(166));return $e(t),null}e=ee.current,ai(t)?Ed(t):(e=$h(i,l,n),t.stateNode=e,Mn(t))}return $e(t),null;case 5:if(Ne(t),n=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==l&&Mn(t);else{if(!l){if(t.stateNode===null)throw Error(o(166));return $e(t),null}if(e=ee.current,ai(t))Ed(t);else{switch(i=Wr(oe.current),e){case 1:e=i.createElementNS("http://www.w3.org/2000/svg",n);break;case 2:e=i.createElementNS("http://www.w3.org/1998/Math/MathML",n);break;default:switch(n){case"svg":e=i.createElementNS("http://www.w3.org/2000/svg",n);break;case"math":e=i.createElementNS("http://www.w3.org/1998/Math/MathML",n);break;case"script":e=i.createElement("div"),e.innerHTML=" + diff --git a/frontend/package-lock.json b/frontend/package-lock.json index dffa351..3fce9fd 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -21,6 +21,7 @@ "lucide-react": "^0.516.0", "react": "^19.1.0", "react-dom": "^19.1.0", + "react-router-dom": "^7.14.2", "tailwind-merge": "^3.3.1", "tailwindcss": "^4.1.10" }, @@ -895,13 +896,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.2.tgz", - "integrity": "sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.15.0", + "@eslint/core": "^0.15.2", "levn": "^0.4.1" }, "engines": { @@ -909,9 +910,9 @@ } }, "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.0.tgz", - "integrity": "sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1869,9 +1870,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz", - "integrity": "sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.2.tgz", + "integrity": "sha512-dnlp69efPPg6Uaw2dVqzWRfAWRnYVb1XJ8CyyhIbZeaq4CA5/mLeZ1IEt9QqQxmbdvagjLIm2ZL8BxXv5lH4Yw==", "cpu": [ "arm" ], @@ -1882,9 +1883,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.43.0.tgz", - "integrity": "sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.2.tgz", + "integrity": "sha512-OqZTwDRDchGRHHm/hwLOL7uVPB9aUvI0am/eQuWMNyFHf5PSEQmyEeYYheA0EPPKUO/l0uigCp+iaTjoLjVoHg==", "cpu": [ "arm64" ], @@ -1895,9 +1896,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.43.0.tgz", - "integrity": "sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.2.tgz", + "integrity": "sha512-UwRE7CGpvSVEQS8gUMBe1uADWjNnVgP3Iusyda1nSRwNDCsRjnGc7w6El6WLQsXmZTbLZx9cecegumcitNfpmA==", "cpu": [ "arm64" ], @@ -1908,9 +1909,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.43.0.tgz", - "integrity": "sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.2.tgz", + "integrity": "sha512-gjEtURKLCC5VXm1I+2i1u9OhxFsKAQJKTVB8WvDAHF+oZlq0GTVFOlTlO1q3AlCTE/DF32c16ESvfgqR7343/g==", "cpu": [ "x64" ], @@ -1921,9 +1922,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.43.0.tgz", - "integrity": "sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.2.tgz", + "integrity": "sha512-Bcl6CYDeAgE70cqZaMojOi/eK63h5Me97ZqAQoh77VPjMysA/4ORQBRGo3rRy45x4MzVlU9uZxs8Uwy7ZaKnBw==", "cpu": [ "arm64" ], @@ -1934,9 +1935,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.43.0.tgz", - "integrity": "sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.2.tgz", + "integrity": "sha512-LU+TPda3mAE2QB0/Hp5VyeKJivpC6+tlOXd1VMoXV/YFMvk/MNk5iXeBfB4MQGRWyOYVJ01625vjkr0Az98OJQ==", "cpu": [ "x64" ], @@ -1947,9 +1948,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.43.0.tgz", - "integrity": "sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.2.tgz", + "integrity": "sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg==", "cpu": [ "arm" ], @@ -1960,9 +1961,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.43.0.tgz", - "integrity": "sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.2.tgz", + "integrity": "sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw==", "cpu": [ "arm" ], @@ -1973,9 +1974,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.43.0.tgz", - "integrity": "sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.2.tgz", + "integrity": "sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg==", "cpu": [ "arm64" ], @@ -1986,9 +1987,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.43.0.tgz", - "integrity": "sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.2.tgz", + "integrity": "sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA==", "cpu": [ "arm64" ], @@ -1998,10 +1999,10 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.43.0.tgz", - "integrity": "sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==", + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.2.tgz", + "integrity": "sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A==", "cpu": [ "loong64" ], @@ -2011,10 +2012,36 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.43.0.tgz", - "integrity": "sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==", + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.2.tgz", + "integrity": "sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.2.tgz", + "integrity": "sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.2.tgz", + "integrity": "sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ==", "cpu": [ "ppc64" ], @@ -2025,9 +2052,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.43.0.tgz", - "integrity": "sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.2.tgz", + "integrity": "sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A==", "cpu": [ "riscv64" ], @@ -2038,9 +2065,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.43.0.tgz", - "integrity": "sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.2.tgz", + "integrity": "sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ==", "cpu": [ "riscv64" ], @@ -2051,9 +2078,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.43.0.tgz", - "integrity": "sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.2.tgz", + "integrity": "sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA==", "cpu": [ "s390x" ], @@ -2064,9 +2091,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.43.0.tgz", - "integrity": "sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.2.tgz", + "integrity": "sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ==", "cpu": [ "x64" ], @@ -2077,9 +2104,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.43.0.tgz", - "integrity": "sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.2.tgz", + "integrity": "sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw==", "cpu": [ "x64" ], @@ -2089,10 +2116,36 @@ "linux" ] }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.2.tgz", + "integrity": "sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.2.tgz", + "integrity": "sha512-NetAg5iO2uN7eB8zE5qrZ3CSil+7IJt4WDFLcC75Ymywq1VZVD6qJ6EvNLjZ3rEm6gB7XW5JdT60c6MN35Z85Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.43.0.tgz", - "integrity": "sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.2.tgz", + "integrity": "sha512-NCYhOotpgWZ5kdxCZsv6Iudx0wX8980Q/oW4pNFNihpBKsDbEA1zpkfxJGC0yugsUuyDZ7gL37dbzwhR0VI7pQ==", "cpu": [ "arm64" ], @@ -2103,9 +2156,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.43.0.tgz", - "integrity": "sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.2.tgz", + "integrity": "sha512-RXsaOqXxfoUBQoOgvmmijVxJnW2IGB0eoMO7F8FAjaj0UTywUO/luSqimWBJn04WNgUkeNhh7fs7pESXajWmkg==", "cpu": [ "ia32" ], @@ -2115,10 +2168,23 @@ "win32" ] }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.2.tgz", + "integrity": "sha512-qdAzEULD+/hzObedtmV6iBpdL5TIbKVztGiK7O3/KYSf+HIzU257+MX1EXJcyIiDbMAqmbwaufcYPvyRryeZtA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz", - "integrity": "sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.2.tgz", + "integrity": "sha512-Nd/SgG27WoA9e+/TdK74KnHz852TLa94ovOYySo/yMPuTmpckK/jIF2jSwS3g7ELSKXK13/cVdmg1Z/DaCWKxA==", "cpu": [ "x64" ], @@ -2439,7 +2505,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, "license": "MIT" }, "node_modules/@types/json-schema": { @@ -2676,9 +2741,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -2686,13 +2751,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -2801,9 +2866,9 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", "dependencies": { @@ -2860,9 +2925,9 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -3028,6 +3093,19 @@ "dev": true, "license": "MIT" }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -3470,9 +3548,9 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, @@ -3652,9 +3730,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -4004,9 +4082,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "dev": true, "license": "MIT" }, @@ -4070,9 +4148,9 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -4102,9 +4180,9 @@ } }, "node_modules/minizlib": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", - "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", "license": "MIT", "dependencies": { "minipass": "^7.1.2" @@ -4113,21 +4191,6 @@ "node": ">= 18" } }, - "node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -4257,9 +4320,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -4270,9 +4333,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.12.tgz", + "integrity": "sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==", "funding": [ { "type": "opencollective", @@ -4432,6 +4495,44 @@ } } }, + "node_modules/react-router": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.14.2.tgz", + "integrity": "sha512-yCqNne6I8IB6rVCH7XUvlBK7/QKyqypBFGv+8dj4QBFJiiRX+FG7/nkdAvGElyvVZ/HQP5N19wzteuTARXi5Gw==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.14.2.tgz", + "integrity": "sha512-YZcM5ES8jJSM+KrJ9BdvHHqlnGTg5tH3sC5ChFRj4inosKctdyzBDhOyyHdGk597q2OT6NTrCA1OvB/YDwfekQ==", + "license": "MIT", + "dependencies": { + "react-router": "7.14.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, "node_modules/react-style-singleton": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", @@ -4476,12 +4577,12 @@ } }, "node_modules/rollup": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.43.0.tgz", - "integrity": "sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.2.tgz", + "integrity": "sha512-J9qZyW++QK/09NyN/zeO0dG/1GdGfyp9lV8ajHnRVLfo/uFsbji5mHnDgn/qYdUHyCkM2N+8VyspgZclfAh0eQ==", "license": "MIT", "dependencies": { - "@types/estree": "1.0.7" + "@types/estree": "1.0.8" }, "bin": { "rollup": "dist/bin/rollup" @@ -4491,35 +4592,34 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.43.0", - "@rollup/rollup-android-arm64": "4.43.0", - "@rollup/rollup-darwin-arm64": "4.43.0", - "@rollup/rollup-darwin-x64": "4.43.0", - "@rollup/rollup-freebsd-arm64": "4.43.0", - "@rollup/rollup-freebsd-x64": "4.43.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.43.0", - "@rollup/rollup-linux-arm-musleabihf": "4.43.0", - "@rollup/rollup-linux-arm64-gnu": "4.43.0", - "@rollup/rollup-linux-arm64-musl": "4.43.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.43.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.43.0", - "@rollup/rollup-linux-riscv64-gnu": "4.43.0", - "@rollup/rollup-linux-riscv64-musl": "4.43.0", - "@rollup/rollup-linux-s390x-gnu": "4.43.0", - "@rollup/rollup-linux-x64-gnu": "4.43.0", - "@rollup/rollup-linux-x64-musl": "4.43.0", - "@rollup/rollup-win32-arm64-msvc": "4.43.0", - "@rollup/rollup-win32-ia32-msvc": "4.43.0", - "@rollup/rollup-win32-x64-msvc": "4.43.0", + "@rollup/rollup-android-arm-eabi": "4.60.2", + "@rollup/rollup-android-arm64": "4.60.2", + "@rollup/rollup-darwin-arm64": "4.60.2", + "@rollup/rollup-darwin-x64": "4.60.2", + "@rollup/rollup-freebsd-arm64": "4.60.2", + "@rollup/rollup-freebsd-x64": "4.60.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.2", + "@rollup/rollup-linux-arm-musleabihf": "4.60.2", + "@rollup/rollup-linux-arm64-gnu": "4.60.2", + "@rollup/rollup-linux-arm64-musl": "4.60.2", + "@rollup/rollup-linux-loong64-gnu": "4.60.2", + "@rollup/rollup-linux-loong64-musl": "4.60.2", + "@rollup/rollup-linux-ppc64-gnu": "4.60.2", + "@rollup/rollup-linux-ppc64-musl": "4.60.2", + "@rollup/rollup-linux-riscv64-gnu": "4.60.2", + "@rollup/rollup-linux-riscv64-musl": "4.60.2", + "@rollup/rollup-linux-s390x-gnu": "4.60.2", + "@rollup/rollup-linux-x64-gnu": "4.60.2", + "@rollup/rollup-linux-x64-musl": "4.60.2", + "@rollup/rollup-openbsd-x64": "4.60.2", + "@rollup/rollup-openharmony-arm64": "4.60.2", + "@rollup/rollup-win32-arm64-msvc": "4.60.2", + "@rollup/rollup-win32-ia32-msvc": "4.60.2", + "@rollup/rollup-win32-x64-gnu": "4.60.2", + "@rollup/rollup-win32-x64-msvc": "4.60.2", "fsevents": "~2.3.2" } }, - "node_modules/rollup/node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", - "license": "MIT" - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -4560,6 +4660,12 @@ "semver": "bin/semver.js" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4644,16 +4750,15 @@ } }, "node_modules/tar": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", - "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", - "license": "ISC", + "version": "7.5.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz", + "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==", + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", + "minizlib": "^3.1.0", "yallist": "^5.0.0" }, "engines": { @@ -4700,9 +4805,9 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", "engines": { "node": ">=12" @@ -4895,9 +5000,9 @@ } }, "node_modules/vite": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", - "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.2.tgz", + "integrity": "sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==", "license": "MIT", "dependencies": { "esbuild": "^0.25.0", @@ -4983,9 +5088,9 @@ } }, "node_modules/vite/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", "engines": { "node": ">=12" diff --git a/frontend/package.json b/frontend/package.json index 771fa94..bd7f716 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -23,6 +23,7 @@ "lucide-react": "^0.516.0", "react": "^19.1.0", "react-dom": "^19.1.0", + "react-router-dom": "^7.14.2", "tailwind-merge": "^3.3.1", "tailwindcss": "^4.1.10" }, diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index ccdf1da..d6f952a 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,7 +1,16 @@ "use client" +import { HashRouter, Routes, Route } from "react-router-dom" import TrainingMaterialsBrowser from "./training-materials-browser" +import ItemPage from "./pages/ItemPage" export default function App() { - return + return ( + + + } /> + } /> + + + ) } diff --git a/frontend/src/hooks/useInventoryData.ts b/frontend/src/hooks/useInventoryData.ts new file mode 100644 index 0000000..08babb7 --- /dev/null +++ b/frontend/src/hooks/useInventoryData.ts @@ -0,0 +1,26 @@ +import { useState, useEffect } from "react" +import type { ReproInventoryEntry } from "@/types/reproinventory" + +export function useInventoryData() { + const [data, setData] = useState([]) + const [loading, setLoading] = useState(true) + const [error, setError] = useState(null) + + useEffect(() => { + const fetchData = async () => { + try { + const response = await fetch(`${import.meta.env.BASE_URL}data/reproinventory_data.json`) + if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`) + const json: ReproInventoryEntry[] = await response.json() + setData(json) + } catch (e: any) { + setError(e.message) + } finally { + setLoading(false) + } + } + fetchData() + }, []) + + return { data, loading, error } +} diff --git a/frontend/src/lib/schema-org.ts b/frontend/src/lib/schema-org.ts new file mode 100644 index 0000000..486a5ad --- /dev/null +++ b/frontend/src/lib/schema-org.ts @@ -0,0 +1,72 @@ +import type { ReproInventoryEntry } from "@/types/reproinventory" + +function toEducationalLevel(levels: ReproInventoryEntry["level"]): string | undefined { + if (!levels || levels.length === 0) return undefined + const filtered = levels.filter((l) => l !== "NA") + return filtered.length > 0 ? filtered.join(", ") : undefined +} + +function toLearningResourceType(media: ReproInventoryEntry["instruction_medium"]): string[] | undefined { + if (!media || media.length === 0) return undefined + const filtered = media.filter((m) => m !== "NA") + return filtered.length > 0 ? filtered : undefined +} + +function toInLanguage(languages: ReproInventoryEntry["language"]): string[] | undefined { + if (!languages || languages.length === 0) return undefined + const filtered = languages.filter((l) => l !== "NA") + return filtered.length > 0 ? filtered : undefined +} + +export function toSchemaOrgLearningResource(entry: ReproInventoryEntry): Record { + const obj: Record = { + "@type": "LearningResource", + "@id": entry.url ?? `urn:reproinventory:${entry.id}`, + "identifier": `${window.location.origin}${import.meta.env.BASE_URL}#/item/${entry.id}`, + } + + if (entry.course_name) obj["name"] = entry.course_name + if (entry.url) obj["url"] = entry.url + + const desc = entry.description ?? entry.functionality + if (desc) obj["description"] = desc + + if (entry.keywords?.length) { + obj["keywords"] = entry.keywords.join(", ") + } + + const level = toEducationalLevel(entry.level) + if (level) obj["educationalLevel"] = level + + const resourceType = toLearningResourceType(entry.instruction_medium) + if (resourceType) obj["learningResourceType"] = resourceType + + const lang = toInLanguage(entry.language) + if (lang) obj["inLanguage"] = lang + + if (entry.last_updated) obj["dateModified"] = entry.last_updated + obj["isAccessibleForFree"] = true + + return obj +} + +export function buildSingleItemJsonLd(entry: ReproInventoryEntry): string { + const ld = { + "@context": "https://schema.org", + ...toSchemaOrgLearningResource(entry), + } + return JSON.stringify(ld) +} + +export function buildItemListJsonLd(entries: ReproInventoryEntry[]): string { + const ld = { + "@context": "https://schema.org", + "@type": "ItemList", + "itemListElement": entries.map((entry, i) => ({ + "@type": "ListItem", + "position": i + 1, + "item": toSchemaOrgLearningResource(entry), + })), + } + return JSON.stringify(ld) +} diff --git a/frontend/src/pages/ItemPage.tsx b/frontend/src/pages/ItemPage.tsx new file mode 100644 index 0000000..8eba8b5 --- /dev/null +++ b/frontend/src/pages/ItemPage.tsx @@ -0,0 +1,192 @@ +import { useEffect } from "react" +import { useParams, Link } from "react-router-dom" +import { ArrowLeft, ExternalLink, Clock } from "lucide-react" +import { Badge } from "@/components/ui/badge" +import { Button } from "@/components/ui/button" +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" +import { Label } from "@/components/ui/label" +import Footer from "@/components/Footer" +import { useInventoryData } from "@/hooks/useInventoryData" +import { buildSingleItemJsonLd } from "@/lib/schema-org" + +function DetailRow({ label, children }: { label: string; children: React.ReactNode }) { + return ( +
+ +
{children}
+
+ ) +} + +function BadgeList({ items }: { items: string[] | undefined }) { + if (!items?.length) return N/A + return ( +
+ {items.map((item) => ( + {item} + ))} +
+ ) +} + +export default function ItemPage() { + const { id } = useParams<{ id: string }>() + const { data, loading, error } = useInventoryData() + + const item = data.find((entry) => String(entry.id) === id) + + useEffect(() => { + if (!item) return + const existing = document.getElementById("reproinventory-item-schema-org") + if (existing) existing.remove() + const script = document.createElement("script") + script.type = "application/ld+json" + script.id = "reproinventory-item-schema-org" + script.textContent = buildSingleItemJsonLd(item) + document.head.appendChild(script) + if (item.course_name) document.title = `${item.course_name} — ReproInventory` + return () => { + document.getElementById("reproinventory-item-schema-org")?.remove() + document.title = "ReproInventory" + } + }, [item]) + + return ( +
+
+
+ + + +
+ + {loading &&

Loading...

} + {error &&

Error: {error}

} + {!loading && !error && !item && ( +
+

Item not found

+ +
+ )} + + {item && ( +
+
+

{item.course_name}

+ {item.description && ( +

{item.description}

+ )} +
+ + {item.url && ( + + + + )} + +
+ + Overview + + + l !== "NA")} /> + + +
+ + {item.course_length ?? "N/A"} +
+
+ + m !== "NA")} /> + + + + + + l !== "NA")} /> + +
+
+ + + Technical Details + + + p !== "NA")} /> + + + l !== "NA")} /> + + + s !== "NA")} /> + + + m !== "NA")} /> + + + + {item.open_dataset === true ? "Yes" : item.open_dataset === false ? "No" : "N/A"} + + + + + + {(item.keywords?.length || item.quadrants?.length || item.functionality) && ( + + Content + + {item.functionality && ( + +

{item.functionality}

+
+ )} + {item.keywords?.length && ( + + + + )} + {item.quadrants?.length && ( + + q !== "NA")} /> + + )} +
+
+ )} + + {(item.prerequisite?.length || item.notes) && ( + + Additional Info + + {item.prerequisite?.length && ( + + + + )} + {item.notes && ( + +

{item.notes}

+
+ )} + {item.last_updated && ( + + {item.last_updated} + + )} +
+
+ )} +
+
+ )} +
+
+
+ ) +} diff --git a/frontend/src/training-materials-browser.tsx b/frontend/src/training-materials-browser.tsx index 699573e..bdf08b6 100644 --- a/frontend/src/training-materials-browser.tsx +++ b/frontend/src/training-materials-browser.tsx @@ -2,6 +2,9 @@ import Footer from "@/components/Footer" import { getGitHubRepoUrl } from "@/lib/github" +import { buildItemListJsonLd } from "@/lib/schema-org" +import { useInventoryData } from "@/hooks/useInventoryData" +import { Link } from "react-router-dom" import { useState, useMemo, useEffect } from "react" import { Search, BookOpen, Video, FileText, Clock, ExternalLink } from "lucide-react" // Added ExternalLink import { Badge } from "@/components/ui/badge" @@ -30,31 +33,22 @@ import { } from "./types/reproinventory" // Import generated types export default function TrainingMaterialsBrowser() { - const [reproInventoryData, setReproInventoryData] = useState([]) - const [loading, setLoading] = useState(true) - const [error, setError] = useState(null) + const { data: reproInventoryData, loading, error } = useInventoryData() const [selectedRawMaterial, setSelectedRawMaterial] = useState(null) const [editingMaterial, setEditingMaterial] = useState(null) const [showAddMaterial, setShowAddMaterial] = useState(false) useEffect(() => { - const fetchData = async () => { - try { - const response = await fetch(`${import.meta.env.BASE_URL}data/reproinventory_data.json`) - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`) - } - const data: ReproInventoryEntry[] = await response.json() - setReproInventoryData(data) - } catch (e: any) { - setError(e.message) - } finally { - setLoading(false) - } - } - - fetchData() - }, []) + if (reproInventoryData.length === 0) return + const existing = document.getElementById("reproinventory-schema-org") + if (existing) existing.remove() + const script = document.createElement("script") + script.type = "application/ld+json" + script.id = "reproinventory-schema-org" + script.textContent = buildItemListJsonLd(reproInventoryData) + document.head.appendChild(script) + return () => { document.getElementById("reproinventory-schema-org")?.remove() } + }, [reproInventoryData]) // State for filters, adapted to schema const [searchQuery, setSearchQuery] = useState("") @@ -594,7 +588,11 @@ export default function TrainingMaterialsBrowser() { - {material.course_name} + + + {material.course_name} + + {material.description}