diff --git a/.github/workflows/fly-deploy.yml b/.github/workflows/fly-deploy.yml new file mode 100644 index 0000000..067cdac --- /dev/null +++ b/.github/workflows/fly-deploy.yml @@ -0,0 +1,29 @@ +name: Deploy Backend to Fly.io + +on: + workflow_dispatch: # Allows manual trigger from Actions page + push: + branches: + - main # Optional: auto-deploy on push to main + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + # Step 1: Checkout repo + - name: Checkout code + uses: actions/checkout@v3 + + # Step 2: Install Fly CLI + - name: Install Fly CLI + run: | + curl -L https://fly.io/install.sh | sh + echo "$HOME/.fly/bin" >> $GITHUB_PATH + + # Step 3: Deploy to Fly.io + - name: Deploy Backend + env: + FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} + run: fly deploy --config fly.toml --remote-only + working-directory: ./backend diff --git a/.gitignore b/.gitignore index f4fe569..3a51e72 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ backend/.venv backend/__pycache__ backend/routers/__pycache__ +backend/.env +frontend/.env.production diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9cf1062 --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..a68ccae --- /dev/null +++ b/README.md @@ -0,0 +1,130 @@ +# Portfolio Management App + +A full-stack portfolio management application built with Google Antigravity, hosted with github pages, Fly.io & Aiven MySQL. + +Vist app here [https://ms16dev.github.io](https://ms16dev.github.io) + +## 🚀 Technologies + +### Frontend +- **Core:** React 18, Vite +- **Styling:** TailwindCSS v4 +- **Animations & 3D:** GSAP, Three.js, Vanta.js +- **State & Logic:** React Router v7, React Hook Form, Zod (Validation), Axios + +### Backend +- **Framework:** FastAPI +- **Database:** SQLModel (SQLAlchemy + Pydantic) +- **Authentication:** JWT (OAuth2 with Password Bearer) +- **Infrastructure:** Fly.io configuration + +## 📂 Project Structure + +``` +portfolio-app/ +├── backend/ # FastAPI Application +│ ├── routers/ # API Endpoints (Auth, Projects, etc.) +│ ├── models.py # Database Models +│ ├── main.py # Entry point +│ └── ... +├── frontend/ # React Application +│ ├── src/ # Components, Pages, Hooks +│ ├── public/ +│ └── ... +└── ... +``` + +## 🛠️ Getting Started + +### Prerequisites +- **Node.js** (v18 or higher) +- **Python** (v3.9 or higher) + +### 1. Backend Setup + +The backend serves the API and handles database operations. + +```bash +# Navigate to backend directory +cd backend + +# Create a virtual environment +python -m venv .venv + +# Activate the virtual environment +# Windows: +.\.venv\Scripts\Activate.ps1 + + +# Install dependencies +pip install -r requirements.txt + +# Run the server +uvicorn main:app --reload --host 127.0.0.1 --port 9000 +``` +_The API will be available at `http://127.0.0.1:9000`. API Docs at `/docs`._ + +### 2. Frontend Setup + +The frontend is a Vite-powered React app. + +```bash +# Navigate to frontend directory +cd frontend + +# Install dependencies +npm install + +# Start the development server +npm run dev -- --port 3000 +``` +_The application will be accessible at `http://localhost:3000`._ + +## 🌍 Deployment + +### Backend (Fly.io) + +1. **Install Fly CLI:** Follow instructions at [fly.io](https://fly.io/docs/hands-on/install-flyctl/). +2. **Login:** `fly auth login` +3. **Launch:** Run `fly launch` in the `backend` directory. +4. **Set Secrets:** Set the required environment variables. + ```bash + fly secrets set DATABASE_URL="" \ + JWT_SECRET="" \ + JWT_ALGORITHM="HS256" \ + ACCESS_TOKEN_EXPIRE_MINUTES="60" \ + ADMIN_USERNAME="" \ + ADMIN_PASSWORD="" + ``` +5. **Deploy:** `fly deploy` + +### Frontend (GitHub Pages) + +1. **Rename your repo to your github user name** + + +2. **Navigate to Frontend:** `cd frontend` +3. **Build Project:** Generate the production build. + ```bash + npm run build + ``` +4. **Move Artifacts:** Copy the contents of the `dist` folder to the repository root. + ```bash + # Windows (PowerShell) + Copy-Item -Path dist\* -Destination ..\ -Recurse -Force + + # macOS/Linux + cp -r dist/* ../ + ``` +5. **Push to GitHub:** Commit and push the changes to your repository to trigger the GitHub Pages deployment. + +## ✨ Key Features + +- **Dynamic Content Management:** Admin dashboard to manage Projects, Resume, About info, and Calendar events. +- **Secure Authentication:** JWT-based login for admin access. +- **Vibrant UI:** Custom animations and links using GSAP and Three.js. +- **Responsive Design:** Fully optimized experience across desktop and mobile devices. + +## 📝 License + +This project is open source and available under the [MIT License](LICENSE). diff --git a/assets/index-DoYlY2_D.js b/assets/index-DoYlY2_D.js new file mode 100644 index 0000000..4ff84d2 --- /dev/null +++ b/assets/index-DoYlY2_D.js @@ -0,0 +1,3763 @@ +(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function t(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(i){if(i.ep)return;i.ep=!0;const s=t(i);fetch(i.href,s)}})();function TS(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var C_={exports:{}},Bp={},R_={exports:{}},tn={};var $E;function GL(){if($E)return tn;$E=1;var n=Symbol.for("react.element"),e=Symbol.for("react.portal"),t=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),s=Symbol.for("react.provider"),o=Symbol.for("react.context"),a=Symbol.for("react.forward_ref"),u=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),m=Symbol.iterator;function v(W){return W===null||typeof W!="object"?null:(W=m&&W[m]||W["@@iterator"],typeof W=="function"?W:null)}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,S={};function x(W,se,ae){this.props=W,this.context=se,this.refs=S,this.updater=ae||y}x.prototype.isReactComponent={},x.prototype.setState=function(W,se){if(typeof W!="object"&&typeof W!="function"&&W!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,W,se,"setState")},x.prototype.forceUpdate=function(W){this.updater.enqueueForceUpdate(this,W,"forceUpdate")};function w(){}w.prototype=x.prototype;function M(W,se,ae){this.props=W,this.context=se,this.refs=S,this.updater=ae||y}var T=M.prototype=new w;T.constructor=M,_(T,x.prototype),T.isPureReactComponent=!0;var L=Array.isArray,D=Object.prototype.hasOwnProperty,z={current:null},U={key:!0,ref:!0,__self:!0,__source:!0};function H(W,se,ae){var he,Re={},ke=null,De=null;if(se!=null)for(he in se.ref!==void 0&&(De=se.ref),se.key!==void 0&&(ke=""+se.key),se)D.call(se,he)&&!U.hasOwnProperty(he)&&(Re[he]=se[he]);var qe=arguments.length-2;if(qe===1)Re.children=ae;else if(1>>1,se=B[W];if(0>>1;Wi(Re,Y))kei(De,Re)?(B[W]=De,B[ke]=Y,W=ke):(B[W]=Re,B[he]=Y,W=he);else if(kei(De,Y))B[W]=De,B[ke]=Y,W=ke;else break e}}return $}function i(B,$){var Y=B.sortIndex-$.sortIndex;return Y!==0?Y:B.id-$.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;n.unstable_now=function(){return s.now()}}else{var o=Date,a=o.now();n.unstable_now=function(){return o.now()-a}}var u=[],d=[],h=1,m=null,v=3,y=!1,_=!1,S=!1,x=typeof setTimeout=="function"?setTimeout:null,w=typeof clearTimeout=="function"?clearTimeout:null,M=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function T(B){for(var $=t(d);$!==null;){if($.callback===null)r(d);else if($.startTime<=B)r(d),$.sortIndex=$.expirationTime,e(u,$);else break;$=t(d)}}function L(B){if(S=!1,T(B),!_)if(t(u)!==null)_=!0,q(D);else{var $=t(d);$!==null&&J(L,$.startTime-B)}}function D(B,$){_=!1,S&&(S=!1,w(H),H=-1),y=!0;var Y=v;try{for(T($),m=t(u);m!==null&&(!(m.expirationTime>$)||B&&!j());){var W=m.callback;if(typeof W=="function"){m.callback=null,v=m.priorityLevel;var se=W(m.expirationTime<=$);$=n.unstable_now(),typeof se=="function"?m.callback=se:m===t(u)&&r(u),T($)}else r(u);m=t(u)}if(m!==null)var ae=!0;else{var he=t(d);he!==null&&J(L,he.startTime-$),ae=!1}return ae}finally{m=null,v=Y,y=!1}}var z=!1,U=null,H=-1,P=5,O=-1;function j(){return!(n.unstable_now()-OB||125W?(B.sortIndex=Y,e(d,B),t(u)===null&&B===t(d)&&(S?(w(H),H=-1):S=!0,J(L,Y-W))):(B.sortIndex=se,e(u,B),_||y||(_=!0,q(D))),B},n.unstable_shouldYield=j,n.unstable_wrapCallback=function(B){var $=v;return function(){var Y=v;v=$;try{return B.apply(this,arguments)}finally{v=Y}}}})(L_)),L_}var KE;function $L(){return KE||(KE=1,N_.exports=XL()),N_.exports}var QE;function qL(){if(QE)return hs;QE=1;var n=ry(),e=$L();function t(l){for(var c="https://reactjs.org/docs/error-decoder.html?invariant="+l,g=1;g"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),u=Object.prototype.hasOwnProperty,d=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,h={},m={};function v(l){return u.call(m,l)?!0:u.call(h,l)?!1:d.test(l)?m[l]=!0:(h[l]=!0,!1)}function y(l,c,g,b){if(g!==null&&g.type===0)return!1;switch(typeof c){case"function":case"symbol":return!0;case"boolean":return b?!1:g!==null?!g.acceptsBooleans:(l=l.toLowerCase().slice(0,5),l!=="data-"&&l!=="aria-");default:return!1}}function _(l,c,g,b){if(c===null||typeof c>"u"||y(l,c,g,b))return!0;if(b)return!1;if(g!==null)switch(g.type){case 3:return!c;case 4:return c===!1;case 5:return isNaN(c);case 6:return isNaN(c)||1>c}return!1}function S(l,c,g,b,C,I,X){this.acceptsBooleans=c===2||c===3||c===4,this.attributeName=b,this.attributeNamespace=C,this.mustUseProperty=g,this.propertyName=l,this.type=c,this.sanitizeURL=I,this.removeEmptyString=X}var x={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(l){x[l]=new S(l,0,!1,l,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(l){var c=l[0];x[c]=new S(c,1,!1,l[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(l){x[l]=new S(l,2,!1,l.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(l){x[l]=new S(l,2,!1,l,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(l){x[l]=new S(l,3,!1,l.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(l){x[l]=new S(l,3,!0,l,null,!1,!1)}),["capture","download"].forEach(function(l){x[l]=new S(l,4,!1,l,null,!1,!1)}),["cols","rows","size","span"].forEach(function(l){x[l]=new S(l,6,!1,l,null,!1,!1)}),["rowSpan","start"].forEach(function(l){x[l]=new S(l,5,!1,l.toLowerCase(),null,!1,!1)});var w=/[\-:]([a-z])/g;function M(l){return l[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(l){var c=l.replace(w,M);x[c]=new S(c,1,!1,l,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(l){var c=l.replace(w,M);x[c]=new S(c,1,!1,l,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(l){var c=l.replace(w,M);x[c]=new S(c,1,!1,l,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(l){x[l]=new S(l,1,!1,l.toLowerCase(),null,!1,!1)}),x.xlinkHref=new S("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(l){x[l]=new S(l,1,!1,l.toLowerCase(),null,!0,!0)});function T(l,c,g,b){var C=x.hasOwnProperty(c)?x[c]:null;(C!==null?C.type!==0:b||!(2oe||C[X]!==I[oe]){var ce=` +`+C[X].replace(" at new "," at ");return l.displayName&&ce.includes("")&&(ce=ce.replace("",l.displayName)),ce}while(1<=X&&0<=oe);break}}}finally{ae=!1,Error.prepareStackTrace=g}return(l=l?l.displayName||l.name:"")?se(l):""}function Re(l){switch(l.tag){case 5:return se(l.type);case 16:return se("Lazy");case 13:return se("Suspense");case 19:return se("SuspenseList");case 0:case 2:case 15:return l=he(l.type,!1),l;case 11:return l=he(l.type.render,!1),l;case 1:return l=he(l.type,!0),l;default:return""}}function ke(l){if(l==null)return null;if(typeof l=="function")return l.displayName||l.name||null;if(typeof l=="string")return l;switch(l){case U:return"Fragment";case z:return"Portal";case P:return"Profiler";case H:return"StrictMode";case te:return"Suspense";case V:return"SuspenseList"}if(typeof l=="object")switch(l.$$typeof){case j:return(l.displayName||"Context")+".Consumer";case O:return(l._context.displayName||"Context")+".Provider";case ee:var c=l.render;return l=l.displayName,l||(l=c.displayName||c.name||"",l=l!==""?"ForwardRef("+l+")":"ForwardRef"),l;case G:return c=l.displayName||null,c!==null?c:ke(l.type)||"Memo";case q:c=l._payload,l=l._init;try{return ke(l(c))}catch{}}return null}function De(l){var c=l.type;switch(l.tag){case 24:return"Cache";case 9:return(c.displayName||"Context")+".Consumer";case 10:return(c._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return l=c.render,l=l.displayName||l.name||"",c.displayName||(l!==""?"ForwardRef("+l+")":"ForwardRef");case 7:return"Fragment";case 5:return c;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ke(c);case 8:return c===H?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof c=="function")return c.displayName||c.name||null;if(typeof c=="string")return c}return null}function qe(l){switch(typeof l){case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function nt(l){var c=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(c==="checkbox"||c==="radio")}function Qe(l){var c=nt(l)?"checked":"value",g=Object.getOwnPropertyDescriptor(l.constructor.prototype,c),b=""+l[c];if(!l.hasOwnProperty(c)&&typeof g<"u"&&typeof g.get=="function"&&typeof g.set=="function"){var C=g.get,I=g.set;return Object.defineProperty(l,c,{configurable:!0,get:function(){return C.call(this)},set:function(X){b=""+X,I.call(this,X)}}),Object.defineProperty(l,c,{enumerable:g.enumerable}),{getValue:function(){return b},setValue:function(X){b=""+X},stopTracking:function(){l._valueTracker=null,delete l[c]}}}}function mt(l){l._valueTracker||(l._valueTracker=Qe(l))}function ue(l){if(!l)return!1;var c=l._valueTracker;if(!c)return!0;var g=c.getValue(),b="";return l&&(b=nt(l)?l.checked?"true":"false":l.value),l=b,l!==g?(c.setValue(l),!0):!1}function Be(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}function Le(l,c){var g=c.checked;return Y({},c,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:g??l._wrapperState.initialChecked})}function je(l,c){var g=c.defaultValue==null?"":c.defaultValue,b=c.checked!=null?c.checked:c.defaultChecked;g=qe(c.value!=null?c.value:g),l._wrapperState={initialChecked:b,initialValue:g,controlled:c.type==="checkbox"||c.type==="radio"?c.checked!=null:c.value!=null}}function Ie(l,c){c=c.checked,c!=null&&T(l,"checked",c,!1)}function gt(l,c){Ie(l,c);var g=qe(c.value),b=c.type;if(g!=null)b==="number"?(g===0&&l.value===""||l.value!=g)&&(l.value=""+g):l.value!==""+g&&(l.value=""+g);else if(b==="submit"||b==="reset"){l.removeAttribute("value");return}c.hasOwnProperty("value")?Q(l,c.type,g):c.hasOwnProperty("defaultValue")&&Q(l,c.type,qe(c.defaultValue)),c.checked==null&&c.defaultChecked!=null&&(l.defaultChecked=!!c.defaultChecked)}function rt(l,c,g){if(c.hasOwnProperty("value")||c.hasOwnProperty("defaultValue")){var b=c.type;if(!(b!=="submit"&&b!=="reset"||c.value!==void 0&&c.value!==null))return;c=""+l._wrapperState.initialValue,g||c===l.value||(l.value=c),l.defaultValue=c}g=l.name,g!==""&&(l.name=""),l.defaultChecked=!!l._wrapperState.initialChecked,g!==""&&(l.name=g)}function Q(l,c,g){(c!=="number"||Be(l.ownerDocument)!==l)&&(g==null?l.defaultValue=""+l._wrapperState.initialValue:l.defaultValue!==""+g&&(l.defaultValue=""+g))}var k=Array.isArray;function K(l,c,g,b){if(l=l.options,c){c={};for(var C=0;C"+c.valueOf().toString()+"",c=Ye.firstChild;l.firstChild;)l.removeChild(l.firstChild);for(;c.firstChild;)l.appendChild(c.firstChild)}});function ze(l,c){if(c){var g=l.firstChild;if(g&&g===l.lastChild&&g.nodeType===3){g.nodeValue=c;return}}l.textContent=c}var Dt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},jt=["Webkit","ms","Moz","O"];Object.keys(Dt).forEach(function(l){jt.forEach(function(c){c=c+l.charAt(0).toUpperCase()+l.substring(1),Dt[c]=Dt[l]})});function Ct(l,c,g){return c==null||typeof c=="boolean"||c===""?"":g||typeof c!="number"||c===0||Dt.hasOwnProperty(l)&&Dt[l]?(""+c).trim():c+"px"}function xt(l,c){l=l.style;for(var g in c)if(c.hasOwnProperty(g)){var b=g.indexOf("--")===0,C=Ct(g,c[g],b);g==="float"&&(g="cssFloat"),b?l.setProperty(g,C):l[g]=C}}var ct=Y({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function kt(l,c){if(c){if(ct[l]&&(c.children!=null||c.dangerouslySetInnerHTML!=null))throw Error(t(137,l));if(c.dangerouslySetInnerHTML!=null){if(c.children!=null)throw Error(t(60));if(typeof c.dangerouslySetInnerHTML!="object"||!("__html"in c.dangerouslySetInnerHTML))throw Error(t(61))}if(c.style!=null&&typeof c.style!="object")throw Error(t(62))}}function en(l,c){if(l.indexOf("-")===-1)return typeof c.is=="string";switch(l){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var gn=null;function Ht(l){return l=l.target||l.srcElement||window,l.correspondingUseElement&&(l=l.correspondingUseElement),l.nodeType===3?l.parentNode:l}var $e=null,de=null,Je=null;function et(l){if(l=Ao(l)){if(typeof $e!="function")throw Error(t(280));var c=l.stateNode;c&&(c=ff(c),$e(l.stateNode,l.type,c))}}function Rt(l){de?Je?Je.push(l):Je=[l]:de=l}function Mt(){if(de){var l=de,c=Je;if(Je=de=null,et(l),c)for(l=0;l>>=0,l===0?32:31-(qt(l)/jn|0)|0}var ai=64,Kn=4194304;function Rn(l){switch(l&-l){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: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 l&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return l&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return l}}function Oi(l,c){var g=l.pendingLanes;if(g===0)return 0;var b=0,C=l.suspendedLanes,I=l.pingedLanes,X=g&268435455;if(X!==0){var oe=X&~C;oe!==0?b=Rn(oe):(I&=X,I!==0&&(b=Rn(I)))}else X=g&~C,X!==0?b=Rn(X):I!==0&&(b=Rn(I));if(b===0)return 0;if(c!==0&&c!==b&&(c&C)===0&&(C=b&-b,I=c&-c,C>=I||C===16&&(I&4194240)!==0))return c;if((b&4)!==0&&(b|=g&16),c=l.entangledLanes,c!==0)for(l=l.entanglements,c&=b;0g;g++)c.push(l);return c}function qu(l,c,g){l.pendingLanes|=c,c!==536870912&&(l.suspendedLanes=0,l.pingedLanes=0),l=l.eventTimes,c=31-Gn(c),l[c]=g}function Ky(l,c){var g=l.pendingLanes&~c;l.pendingLanes=c,l.suspendedLanes=0,l.pingedLanes=0,l.expiredLanes&=c,l.mutableReadLanes&=c,l.entangledLanes&=c,c=l.entanglements;var b=l.eventTimes;for(l=l.expirationTimes;0=Br),as=" ",tp=!1;function np(l,c){switch(l){case"keyup":return ep.indexOf(c.keyCode)!==-1;case"keydown":return c.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qd(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var ua=!1;function Tg(l,c){switch(l){case"compositionend":return qd(c);case"keypress":return c.which!==32?null:(tp=!0,as);case"textInput":return l=c.data,l===as&&tp?null:l;default:return null}}function tc(l,c){if(ua)return l==="compositionend"||!ci&&np(l,c)?(l=Qu(),_i=qh=Rs=null,ua=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(c.ctrlKey||c.altKey||c.metaKey)||c.ctrlKey&&c.altKey){if(c.char&&1=c)return{node:g,offset:c-l};l=b}e:{for(;g;){if(g.nextSibling){g=g.nextSibling;break e}g=g.parentNode}g=void 0}g=nc(g)}}function Wa(l,c){return l&&c?l===c?!0:l&&l.nodeType===3?!1:c&&c.nodeType===3?Wa(l,c.parentNode):"contains"in l?l.contains(c):l.compareDocumentPosition?!!(l.compareDocumentPosition(c)&16):!1:!1}function Hn(){for(var l=window,c=Be();c instanceof l.HTMLIFrameElement;){try{var g=typeof c.contentWindow.location.href=="string"}catch{g=!1}if(g)l=c.contentWindow;else break;c=Be(l.document)}return c}function Mr(l){var c=l&&l.nodeName&&l.nodeName.toLowerCase();return c&&(c==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||c==="textarea"||l.contentEditable==="true")}function Tr(l){var c=Hn(),g=l.focusedElem,b=l.selectionRange;if(c!==g&&g&&g.ownerDocument&&Wa(g.ownerDocument.documentElement,g)){if(b!==null&&Mr(g)){if(c=b.start,l=b.end,l===void 0&&(l=c),"selectionStart"in g)g.selectionStart=c,g.selectionEnd=Math.min(l,g.value.length);else if(l=(c=g.ownerDocument||document)&&c.defaultView||window,l.getSelection){l=l.getSelection();var C=g.textContent.length,I=Math.min(b.start,C);b=b.end===void 0?I:Math.min(b.end,C),!l.extend&&I>b&&(C=b,b=I,I=C),C=Fi(g,I);var X=Fi(g,b);C&&X&&(l.rangeCount!==1||l.anchorNode!==C.node||l.anchorOffset!==C.offset||l.focusNode!==X.node||l.focusOffset!==X.offset)&&(c=c.createRange(),c.setStart(C.node,C.offset),l.removeAllRanges(),I>b?(l.addRange(c),l.extend(X.node,X.offset)):(c.setEnd(X.node,X.offset),l.addRange(c)))}}for(c=[],l=g;l=l.parentNode;)l.nodeType===1&&c.push({element:l,left:l.scrollLeft,top:l.scrollTop});for(typeof g.focus=="function"&&g.focus(),g=0;g=document.documentMode,to=null,Xa=null,rc=null,Ar=!1;function Qd(l,c,g){var b=g.window===g?g.document:g.nodeType===9?g:g.ownerDocument;Ar||to==null||to!==Be(b)||(b=to,"selectionStart"in b&&Mr(b)?b={start:b.selectionStart,end:b.selectionEnd}:(b=(b.ownerDocument&&b.ownerDocument.defaultView||window).getSelection(),b={anchorNode:b.anchorNode,anchorOffset:b.anchorOffset,focusNode:b.focusNode,focusOffset:b.focusOffset}),rc&&ja(rc,b)||(rc=b,b=af(Xa,"onSelect"),0Cr||(l.current=pp[Cr],pp[Cr]=null,Cr--)}function xn(l,c){Cr++,pp[Cr]=l.current,l.current=c}var Co={},Vr=Wn(Co),di=Wn(!1),Ro=Co;function Ya(l,c){var g=l.type.contextTypes;if(!g)return Co;var b=l.stateNode;if(b&&b.__reactInternalMemoizedUnmaskedChildContext===c)return b.__reactInternalMemoizedMaskedChildContext;var C={},I;for(I in g)C[I]=c[I];return b&&(l=l.stateNode,l.__reactInternalMemoizedUnmaskedChildContext=c,l.__reactInternalMemoizedMaskedChildContext=C),C}function Jr(l){return l=l.childContextTypes,l!=null}function dc(){An(di),An(Vr)}function mp(l,c,g){if(Vr.current!==Co)throw Error(t(168));xn(Vr,c),xn(di,g)}function fc(l,c,g){var b=l.stateNode;if(c=c.childContextTypes,typeof b.getChildContext!="function")return g;b=b.getChildContext();for(var C in b)if(!(C in c))throw Error(t(108,De(l)||"Unknown",C));return Y({},g,b)}function Ja(l){return l=(l=l.stateNode)&&l.__reactInternalMemoizedMergedChildContext||Co,Ro=Vr.current,xn(Vr,l),xn(di,di.current),!0}function gp(l,c,g){var b=l.stateNode;if(!b)throw Error(t(169));g?(l=fc(l,c,Ro),b.__reactInternalMemoizedMergedChildContext=l,An(di),An(Vr),xn(Vr,l)):An(di),xn(di,g)}var Is=null,hc=!1,hf=!1;function pc(l){Is===null?Is=[l]:Is.push(l)}function kg(l){hc=!0,pc(l)}function ro(){if(!hf&&Is!==null){hf=!0;var l=0,c=ln;try{var g=Is;for(ln=1;l>=X,C-=X,Ze=1<<32-Gn(c)+C|g<Ut?(ti=Lt,Lt=null):ti=Lt.sibling;var pn=Fe(_e,Lt,xe[Ut],Xe);if(pn===null){Lt===null&&(Lt=ti);break}l&&Lt&&pn.alternate===null&&c(_e,Lt),fe=I(pn,fe,Ut),Nt===null?St=pn:Nt.sibling=pn,Nt=pn,Lt=ti}if(Ut===xe.length)return g(_e,Lt),Pn&&Po(_e,Ut),St;if(Lt===null){for(;UtUt?(ti=Lt,Lt=null):ti=Lt.sibling;var mu=Fe(_e,Lt,pn.value,Xe);if(mu===null){Lt===null&&(Lt=ti);break}l&&Lt&&mu.alternate===null&&c(_e,Lt),fe=I(mu,fe,Ut),Nt===null?St=mu:Nt.sibling=mu,Nt=mu,Lt=ti}if(pn.done)return g(_e,Lt),Pn&&Po(_e,Ut),St;if(Lt===null){for(;!pn.done;Ut++,pn=xe.next())pn=Ge(_e,pn.value,Xe),pn!==null&&(fe=I(pn,fe,Ut),Nt===null?St=pn:Nt.sibling=pn,Nt=pn);return Pn&&Po(_e,Ut),St}for(Lt=b(_e,Lt);!pn.done;Ut++,pn=xe.next())pn=at(Lt,_e,Ut,pn.value,Xe),pn!==null&&(l&&pn.alternate!==null&&Lt.delete(pn.key===null?Ut:pn.key),fe=I(pn,fe,Ut),Nt===null?St=pn:Nt.sibling=pn,Nt=pn);return l&&Lt.forEach(function(HL){return c(_e,HL)}),Pn&&Po(_e,Ut),St}function mr(_e,fe,xe,Xe){if(typeof xe=="object"&&xe!==null&&xe.type===U&&xe.key===null&&(xe=xe.props.children),typeof xe=="object"&&xe!==null){switch(xe.$$typeof){case D:e:{for(var St=xe.key,Nt=fe;Nt!==null;){if(Nt.key===St){if(St=xe.type,St===U){if(Nt.tag===7){g(_e,Nt.sibling),fe=C(Nt,xe.props.children),fe.return=_e,_e=fe;break e}}else if(Nt.elementType===St||typeof St=="object"&&St!==null&&St.$$typeof===q&&Sp(St)===Nt.type){g(_e,Nt.sibling),fe=C(Nt,xe.props),fe.ref=mc(_e,Nt,xe),fe.return=_e,_e=fe;break e}g(_e,Nt);break}else c(_e,Nt);Nt=Nt.sibling}xe.type===U?(fe=Ic(xe.props.children,_e.mode,Xe,xe.key),fe.return=_e,_e=fe):(Xe=rv(xe.type,xe.key,xe.props,null,_e.mode,Xe),Xe.ref=mc(_e,fe,xe),Xe.return=_e,_e=Xe)}return X(_e);case z:e:{for(Nt=xe.key;fe!==null;){if(fe.key===Nt)if(fe.tag===4&&fe.stateNode.containerInfo===xe.containerInfo&&fe.stateNode.implementation===xe.implementation){g(_e,fe.sibling),fe=C(fe,xe.children||[]),fe.return=_e,_e=fe;break e}else{g(_e,fe);break}else c(_e,fe);fe=fe.sibling}fe=E_(xe,_e.mode,Xe),fe.return=_e,_e=fe}return X(_e);case q:return Nt=xe._init,mr(_e,fe,Nt(xe._payload),Xe)}if(k(xe))return ht(_e,fe,xe,Xe);if($(xe))return vt(_e,fe,xe,Xe);gc(_e,xe)}return typeof xe=="string"&&xe!==""||typeof xe=="number"?(xe=""+xe,fe!==null&&fe.tag===6?(g(_e,fe.sibling),fe=C(fe,xe),fe.return=_e,_e=fe):(g(_e,fe),fe=S_(xe,_e.mode,Xe),fe.return=_e,_e=fe),X(_e)):g(_e,fe)}return mr}var el=Ep(!0),vc=Ep(!1),tl=Wn(null),nl=null,Lo=null,iu=null;function rl(){iu=Lo=nl=null}function yc(l){var c=tl.current;An(tl),l._currentValue=c}function _c(l,c,g){for(;l!==null;){var b=l.alternate;if((l.childLanes&c)!==c?(l.childLanes|=c,b!==null&&(b.childLanes|=c)):b!==null&&(b.childLanes&c)!==c&&(b.childLanes|=c),l===g)break;l=l.return}}function ma(l,c){nl=l,iu=Lo=null,l=l.dependencies,l!==null&&l.firstContext!==null&&((l.lanes&c)!==0&&(Xt=!0),l.firstContext=null)}function Vi(l){var c=l._currentValue;if(iu!==l)if(l={context:l,memoizedValue:c,next:null},Lo===null){if(nl===null)throw Error(t(308));Lo=l,nl.dependencies={lanes:0,firstContext:l}}else Lo=Lo.next=l;return c}var Io=null;function bp(l){Io===null?Io=[l]:Io.push(l)}function xc(l,c,g,b){var C=c.interleaved;return C===null?(g.next=g,bp(c)):(g.next=C.next,C.next=g),c.interleaved=g,ks(l,b)}function ks(l,c){l.lanes|=c;var g=l.alternate;for(g!==null&&(g.lanes|=c),g=l,l=l.return;l!==null;)l.childLanes|=c,g=l.alternate,g!==null&&(g.childLanes|=c),g=l,l=l.return;return g.tag===3?g.stateNode:null}var yn=!1;function Wt(l){l.updateQueue={baseState:l.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function er(l,c){l=l.updateQueue,c.updateQueue===l&&(c.updateQueue={baseState:l.baseState,firstBaseUpdate:l.firstBaseUpdate,lastBaseUpdate:l.lastBaseUpdate,shared:l.shared,effects:l.effects})}function _n(l,c){return{eventTime:l,lane:c,tag:0,payload:null,callback:null,next:null}}function On(l,c,g){var b=l.updateQueue;if(b===null)return null;if(b=b.shared,(cn&2)!==0){var C=b.pending;return C===null?c.next=c:(c.next=C.next,C.next=c),b.pending=c,ks(l,g)}return C=b.interleaved,C===null?(c.next=c,bp(b)):(c.next=C.next,C.next=c),b.interleaved=c,ks(l,g)}function Kr(l,c,g){if(c=c.updateQueue,c!==null&&(c=c.shared,(g&4194240)!==0)){var b=c.lanes;b&=l.pendingLanes,g|=b,c.lanes=g,Ul(l,g)}}function il(l,c){var g=l.updateQueue,b=l.alternate;if(b!==null&&(b=b.updateQueue,g===b)){var C=null,I=null;if(g=g.firstBaseUpdate,g!==null){do{var X={eventTime:g.eventTime,lane:g.lane,tag:g.tag,payload:g.payload,callback:g.callback,next:null};I===null?C=I=X:I=I.next=X,g=g.next}while(g!==null);I===null?C=I=c:I=I.next=c}else C=I=c;g={baseState:b.baseState,firstBaseUpdate:C,lastBaseUpdate:I,shared:b.shared,effects:b.effects},l.updateQueue=g;return}l=g.lastBaseUpdate,l===null?g.firstBaseUpdate=c:l.next=c,g.lastBaseUpdate=c}function Xn(l,c,g,b){var C=l.updateQueue;yn=!1;var I=C.firstBaseUpdate,X=C.lastBaseUpdate,oe=C.shared.pending;if(oe!==null){C.shared.pending=null;var ce=oe,be=ce.next;ce.next=null,X===null?I=be:X.next=be,X=ce;var Ve=l.alternate;Ve!==null&&(Ve=Ve.updateQueue,oe=Ve.lastBaseUpdate,oe!==X&&(oe===null?Ve.firstBaseUpdate=be:oe.next=be,Ve.lastBaseUpdate=ce))}if(I!==null){var Ge=C.baseState;X=0,Ve=be=ce=null,oe=I;do{var Fe=oe.lane,at=oe.eventTime;if((b&Fe)===Fe){Ve!==null&&(Ve=Ve.next={eventTime:at,lane:0,tag:oe.tag,payload:oe.payload,callback:oe.callback,next:null});e:{var ht=l,vt=oe;switch(Fe=c,at=g,vt.tag){case 1:if(ht=vt.payload,typeof ht=="function"){Ge=ht.call(at,Ge,Fe);break e}Ge=ht;break e;case 3:ht.flags=ht.flags&-65537|128;case 0:if(ht=vt.payload,Fe=typeof ht=="function"?ht.call(at,Ge,Fe):ht,Fe==null)break e;Ge=Y({},Ge,Fe);break e;case 2:yn=!0}}oe.callback!==null&&oe.lane!==0&&(l.flags|=64,Fe=C.effects,Fe===null?C.effects=[oe]:Fe.push(oe))}else at={eventTime:at,lane:Fe,tag:oe.tag,payload:oe.payload,callback:oe.callback,next:null},Ve===null?(be=Ve=at,ce=Ge):Ve=Ve.next=at,X|=Fe;if(oe=oe.next,oe===null){if(oe=C.shared.pending,oe===null)break;Fe=oe,oe=Fe.next,Fe.next=null,C.lastBaseUpdate=Fe,C.shared.pending=null}}while(!0);if(Ve===null&&(ce=Ge),C.baseState=ce,C.firstBaseUpdate=be,C.lastBaseUpdate=Ve,c=C.shared.interleaved,c!==null){C=c;do X|=C.lane,C=C.next;while(C!==c)}else I===null&&(C.shared.lanes=0);Rc|=X,l.lanes=X,l.memoizedState=Ge}}function su(l,c,g){if(l=c.effects,c.effects=null,l!==null)for(c=0;cg?g:4,l(!0);var b=ll.transition;ll.transition={};try{l(!1),c()}finally{ln=g,ll.transition=b}}function zo(){return Gi().memoizedState}function Sf(l,c,g){var b=fu(l);if(g={lane:b,action:g,hasEagerState:!1,eagerState:null,next:null},Ac(l))Ef(c,g);else if(g=xc(l,c,g,b),g!==null){var C=Xi();Vo(g,l,b,C),bf(g,c,b)}}function ul(l,c,g){var b=fu(l),C={lane:b,action:g,hasEagerState:!1,eagerState:null,next:null};if(Ac(l))Ef(c,C);else{var I=l.alternate;if(l.lanes===0&&(I===null||I.lanes===0)&&(I=c.lastRenderedReducer,I!==null))try{var X=c.lastRenderedState,oe=I(X,g);if(C.hasEagerState=!0,C.eagerState=oe,Ui(oe,X)){var ce=c.interleaved;ce===null?(C.next=C,bp(c)):(C.next=ce.next,ce.next=C),c.interleaved=C;return}}catch{}finally{}g=xc(l,c,C,b),g!==null&&(C=Xi(),Vo(g,l,b,C),bf(g,c,b))}}function Ac(l){var c=l.alternate;return l===Cn||c!==null&&c===Cn}function Ef(l,c){Qr=Os=!0;var g=l.pending;g===null?c.next=c:(c.next=g.next,g.next=c),l.pending=c}function bf(l,c,g){if((g&4194240)!==0){var b=c.lanes;b&=l.pendingLanes,g|=b,c.lanes=g,Ul(l,g)}}var Mf={readContext:Vi,useCallback:Gr,useContext:Gr,useEffect:Gr,useImperativeHandle:Gr,useInsertionEffect:Gr,useLayoutEffect:Gr,useMemo:Gr,useReducer:Gr,useRef:Gr,useState:Gr,useDebugValue:Gr,useDeferredValue:Gr,useTransition:Gr,useMutableSource:Gr,useSyncExternalStore:Gr,useId:Gr,unstable_isNewReconciler:!1},Vg={readContext:Vi,useCallback:function(l,c){return jr().memoizedState=[l,c===void 0?null:c],l},useContext:Vi,useEffect:pi,useImperativeHandle:function(l,c,g){return g=g!=null?g.concat([l]):null,oo(4194308,4,Fg.bind(null,c,l),g)},useLayoutEffect:function(l,c){return oo(4194308,4,l,c)},useInsertionEffect:function(l,c){return oo(4,2,l,c)},useMemo:function(l,c){var g=jr();return c=c===void 0?null:c,l=l(),g.memoizedState=[l,c],l},useReducer:function(l,c,g){var b=jr();return c=g!==void 0?g(c):c,b.memoizedState=b.baseState=c,l={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:c},b.queue=l,l=l.dispatch=Sf.bind(null,Cn,l),[b.memoizedState,l]},useRef:function(l){var c=jr();return l={current:l},c.memoizedState=l},useState:Rp,useDebugValue:xf,useDeferredValue:function(l){return jr().memoizedState=l},useTransition:function(){var l=Rp(!1),c=l[0];return l=i_.bind(null,l[1]),jr().memoizedState=l,[c,l]},useMutableSource:function(){},useSyncExternalStore:function(l,c,g){var b=Cn,C=jr();if(Pn){if(g===void 0)throw Error(t(407));g=g()}else{if(g=c(),ei===null)throw Error(t(349));(Do&30)!==0||_f(b,c,g)}C.memoizedState=g;var I={value:g,getSnapshot:c};return C.queue=I,pi(Dg.bind(null,b,I,l),[l]),b.flags|=2048,zs(9,Mc.bind(null,b,I,g,c),void 0,null),g},useId:function(){var l=jr(),c=ei.identifierPrefix;if(Pn){var g=ls,b=Ze;g=(b&~(1<<32-Gn(b)-1)).toString(32)+g,c=":"+c+"R"+g,g=va++,0<\/script>",l=l.removeChild(l.firstChild)):typeof b.is=="string"?l=X.createElement(g,{is:b.is}):(l=X.createElement(g),g==="select"&&(X=l,b.multiple?X.multiple=!0:b.size&&(X.size=b.size))):l=X.createElementNS(l,g),l[pr]=c,l[tu]=b,yE(l,c,!1,!1),c.stateNode=l;e:{switch(X=en(g,b),g){case"dialog":Tn("cancel",l),Tn("close",l),C=b;break;case"iframe":case"object":case"embed":Tn("load",l),C=b;break;case"video":case"audio":for(C=0;CRf&&(c.flags|=128,b=!0,kp(I,!1),c.lanes=4194304)}else{if(!b)if(l=Ds(X),l!==null){if(c.flags|=128,b=!0,g=l.updateQueue,g!==null&&(c.updateQueue=g,c.flags|=4),kp(I,!0),I.tail===null&&I.tailMode==="hidden"&&!X.alternate&&!Pn)return bi(c),null}else 2*ot()-I.renderingStartTime>Rf&&g!==1073741824&&(c.flags|=128,b=!0,kp(I,!1),c.lanes=4194304);I.isBackwards?(X.sibling=c.child,c.child=X):(g=I.last,g!==null?g.sibling=X:c.child=X,I.last=X)}return I.tail!==null?(c=I.tail,I.rendering=c,I.tail=c.sibling,I.renderingStartTime=ot(),c.sibling=null,g=Nn.current,xn(Nn,b?g&1|2:g&1),c):(bi(c),null);case 22:case 23:return __(),b=c.memoizedState!==null,l!==null&&l.memoizedState!==null!==b&&(c.flags|=8192),b&&(c.mode&1)!==0?(Us&1073741824)!==0&&(bi(c),c.subtreeFlags&6&&(c.flags|=8192)):bi(c),null;case 24:return null;case 25:return null}throw Error(t(156,c.tag))}function SL(l,c){switch(No(c),c.tag){case 1:return Jr(c.type)&&dc(),l=c.flags,l&65536?(c.flags=l&-65537|128,c):null;case 3:return ga(),An(di),An(Vr),so(),l=c.flags,(l&65536)!==0&&(l&128)===0?(c.flags=l&-65537|128,c):null;case 5:return ou(c),null;case 13:if(An(Nn),l=c.memoizedState,l!==null&&l.dehydrated!==null){if(c.alternate===null)throw Error(t(340));pa()}return l=c.flags,l&65536?(c.flags=l&-65537|128,c):null;case 19:return An(Nn),null;case 4:return ga(),null;case 10:return yc(c.type._context),null;case 22:case 23:return __(),null;case 24:return null;default:return null}}var $g=!1,Mi=!1,EL=typeof WeakSet=="function"?WeakSet:Set,ft=null;function Af(l,c){var g=l.ref;if(g!==null)if(typeof g=="function")try{g(null)}catch(b){ar(l,c,b)}else g.current=null}function a_(l,c,g){try{g()}catch(b){ar(l,c,b)}}var wE=!1;function bL(l,c){if(eu=ns,l=Hn(),Mr(l)){if("selectionStart"in l)var g={start:l.selectionStart,end:l.selectionEnd};else e:{g=(g=l.ownerDocument)&&g.defaultView||window;var b=g.getSelection&&g.getSelection();if(b&&b.rangeCount!==0){g=b.anchorNode;var C=b.anchorOffset,I=b.focusNode;b=b.focusOffset;try{g.nodeType,I.nodeType}catch{g=null;break e}var X=0,oe=-1,ce=-1,be=0,Ve=0,Ge=l,Fe=null;t:for(;;){for(var at;Ge!==g||C!==0&&Ge.nodeType!==3||(oe=X+C),Ge!==I||b!==0&&Ge.nodeType!==3||(ce=X+b),Ge.nodeType===3&&(X+=Ge.nodeValue.length),(at=Ge.firstChild)!==null;)Fe=Ge,Ge=at;for(;;){if(Ge===l)break t;if(Fe===g&&++be===C&&(oe=X),Fe===I&&++Ve===b&&(ce=X),(at=Ge.nextSibling)!==null)break;Ge=Fe,Fe=Ge.parentNode}Ge=at}g=oe===-1||ce===-1?null:{start:oe,end:ce}}else g=null}g=g||{start:0,end:0}}else g=null;for(up={focusedElem:l,selectionRange:g},ns=!1,ft=c;ft!==null;)if(c=ft,l=c.child,(c.subtreeFlags&1028)!==0&&l!==null)l.return=c,ft=l;else for(;ft!==null;){c=ft;try{var ht=c.alternate;if((c.flags&1024)!==0)switch(c.tag){case 0:case 11:case 15:break;case 1:if(ht!==null){var vt=ht.memoizedProps,mr=ht.memoizedState,_e=c.stateNode,fe=_e.getSnapshotBeforeUpdate(c.elementType===c.type?vt:cs(c.type,vt),mr);_e.__reactInternalSnapshotBeforeUpdate=fe}break;case 3:var xe=c.stateNode.containerInfo;xe.nodeType===1?xe.textContent="":xe.nodeType===9&&xe.documentElement&&xe.removeChild(xe.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(t(163))}}catch(Xe){ar(c,c.return,Xe)}if(l=c.sibling,l!==null){l.return=c.return,ft=l;break}ft=c.return}return ht=wE,wE=!1,ht}function Dp(l,c,g){var b=c.updateQueue;if(b=b!==null?b.lastEffect:null,b!==null){var C=b=b.next;do{if((C.tag&l)===l){var I=C.destroy;C.destroy=void 0,I!==void 0&&a_(c,g,I)}C=C.next}while(C!==b)}}function qg(l,c){if(c=c.updateQueue,c=c!==null?c.lastEffect:null,c!==null){var g=c=c.next;do{if((g.tag&l)===l){var b=g.create;g.destroy=b()}g=g.next}while(g!==c)}}function l_(l){var c=l.ref;if(c!==null){var g=l.stateNode;switch(l.tag){case 5:l=g;break;default:l=g}typeof c=="function"?c(l):c.current=l}}function SE(l){var c=l.alternate;c!==null&&(l.alternate=null,SE(c)),l.child=null,l.deletions=null,l.sibling=null,l.tag===5&&(c=l.stateNode,c!==null&&(delete c[pr],delete c[tu],delete c[Za],delete c[cf],delete c[df])),l.stateNode=null,l.return=null,l.dependencies=null,l.memoizedProps=null,l.memoizedState=null,l.pendingProps=null,l.stateNode=null,l.updateQueue=null}function EE(l){return l.tag===5||l.tag===3||l.tag===4}function bE(l){e:for(;;){for(;l.sibling===null;){if(l.return===null||EE(l.return))return null;l=l.return}for(l.sibling.return=l.return,l=l.sibling;l.tag!==5&&l.tag!==6&&l.tag!==18;){if(l.flags&2||l.child===null||l.tag===4)continue e;l.child.return=l,l=l.child}if(!(l.flags&2))return l.stateNode}}function u_(l,c,g){var b=l.tag;if(b===5||b===6)l=l.stateNode,c?g.nodeType===8?g.parentNode.insertBefore(l,c):g.insertBefore(l,c):(g.nodeType===8?(c=g.parentNode,c.insertBefore(l,g)):(c=g,c.appendChild(l)),g=g._reactRootContainer,g!=null||c.onclick!==null||(c.onclick=cc));else if(b!==4&&(l=l.child,l!==null))for(u_(l,c,g),l=l.sibling;l!==null;)u_(l,c,g),l=l.sibling}function c_(l,c,g){var b=l.tag;if(b===5||b===6)l=l.stateNode,c?g.insertBefore(l,c):g.appendChild(l);else if(b!==4&&(l=l.child,l!==null))for(c_(l,c,g),l=l.sibling;l!==null;)c_(l,c,g),l=l.sibling}var mi=null,Fo=!1;function uu(l,c,g){for(g=g.child;g!==null;)ME(l,c,g),g=g.sibling}function ME(l,c,g){if(wt&&typeof wt.onCommitFiberUnmount=="function")try{wt.onCommitFiberUnmount(Jn,g)}catch{}switch(g.tag){case 5:Mi||Af(g,c);case 6:var b=mi,C=Fo;mi=null,uu(l,c,g),mi=b,Fo=C,mi!==null&&(Fo?(l=mi,g=g.stateNode,l.nodeType===8?l.parentNode.removeChild(g):l.removeChild(g)):mi.removeChild(g.stateNode));break;case 18:mi!==null&&(Fo?(l=mi,g=g.stateNode,l.nodeType===8?uf(l.parentNode,g):l.nodeType===1&&uf(l,g),Ku(l)):uf(mi,g.stateNode));break;case 4:b=mi,C=Fo,mi=g.stateNode.containerInfo,Fo=!0,uu(l,c,g),mi=b,Fo=C;break;case 0:case 11:case 14:case 15:if(!Mi&&(b=g.updateQueue,b!==null&&(b=b.lastEffect,b!==null))){C=b=b.next;do{var I=C,X=I.destroy;I=I.tag,X!==void 0&&((I&2)!==0||(I&4)!==0)&&a_(g,c,X),C=C.next}while(C!==b)}uu(l,c,g);break;case 1:if(!Mi&&(Af(g,c),b=g.stateNode,typeof b.componentWillUnmount=="function"))try{b.props=g.memoizedProps,b.state=g.memoizedState,b.componentWillUnmount()}catch(oe){ar(g,c,oe)}uu(l,c,g);break;case 21:uu(l,c,g);break;case 22:g.mode&1?(Mi=(b=Mi)||g.memoizedState!==null,uu(l,c,g),Mi=b):uu(l,c,g);break;default:uu(l,c,g)}}function TE(l){var c=l.updateQueue;if(c!==null){l.updateQueue=null;var g=l.stateNode;g===null&&(g=l.stateNode=new EL),c.forEach(function(b){var C=IL.bind(null,l,b);g.has(b)||(g.add(b),b.then(C,C))})}}function Bo(l,c){var g=c.deletions;if(g!==null)for(var b=0;bC&&(C=X),b&=~I}if(b=C,b=ot()-b,b=(120>b?120:480>b?480:1080>b?1080:1920>b?1920:3e3>b?3e3:4320>b?4320:1960*TL(b/1960))-b,10l?16:l,du===null)var b=!1;else{if(l=du,du=null,Qg=0,(cn&6)!==0)throw Error(t(331));var C=cn;for(cn|=4,ft=l.current;ft!==null;){var I=ft,X=I.child;if((ft.flags&16)!==0){var oe=I.deletions;if(oe!==null){for(var ce=0;ceot()-h_?Nc(l,0):f_|=g),fs(l,c)}function FE(l,c){c===0&&((l.mode&1)===0?c=1:(c=Kn,Kn<<=1,(Kn&130023424)===0&&(Kn=4194304)));var g=Xi();l=ks(l,c),l!==null&&(qu(l,c,g),fs(l,g))}function LL(l){var c=l.memoizedState,g=0;c!==null&&(g=c.retryLane),FE(l,g)}function IL(l,c){var g=0;switch(l.tag){case 13:var b=l.stateNode,C=l.memoizedState;C!==null&&(g=C.retryLane);break;case 19:b=l.stateNode;break;default:throw Error(t(314))}b!==null&&b.delete(c),FE(l,g)}var BE;BE=function(l,c,g){if(l!==null)if(l.memoizedProps!==c.pendingProps||di.current)Xt=!0;else{if((l.lanes&g)===0&&(c.flags&128)===0)return Xt=!1,xL(l,c,g);Xt=(l.flags&131072)!==0}else Xt=!1,Pn&&(c.flags&1048576)!==0&&vp(c,mf,c.index);switch(c.lanes=0,c.tag){case 2:var b=c.type;Xg(l,c),l=c.pendingProps;var C=Ya(c,Vr.current);ma(c,g),C=Ec(null,c,b,l,C,g);var I=Mp();return c.flags|=1,typeof C=="object"&&C!==null&&typeof C.render=="function"&&C.$$typeof===void 0?(c.tag=1,c.memoizedState=null,c.updateQueue=null,Jr(b)?(I=!0,Ja(c)):I=!1,c.memoizedState=C.state!==null&&C.state!==void 0?C.state:null,Wt(c),C.updater=Tf,c.stateNode=C,C._reactInternals=c,E(c,b,l,g),c=Gt(null,c,b,!0,I,g)):(c.tag=0,Pn&&I&&yp(c),it(null,c,C,g),c=c.child),c;case 16:b=c.elementType;e:{switch(Xg(l,c),l=c.pendingProps,C=b._init,b=C(b._payload),c.type=b,C=c.tag=DL(b),l=cs(b,l),C){case 0:c=tt(null,c,b,l,g);break e;case 1:c=yt(null,c,b,l,g);break e;case 11:c=Wr(null,c,b,l,g);break e;case 14:c=Wi(null,c,b,cs(b.type,l),g);break e}throw Error(t(306,b,""))}return c;case 0:return b=c.type,C=c.pendingProps,C=c.elementType===b?C:cs(b,C),tt(l,c,b,C,g);case 1:return b=c.type,C=c.pendingProps,C=c.elementType===b?C:cs(b,C),yt(l,c,b,C,g);case 3:e:{if(Vt(c),l===null)throw Error(t(387));b=c.pendingProps,I=c.memoizedState,C=I.element,er(l,c),Xn(c,b,null,g);var X=c.memoizedState;if(b=X.element,I.isDehydrated)if(I={element:b,isDehydrated:!1,cache:X.cache,pendingSuspenseBoundaries:X.pendingSuspenseBoundaries,transitions:X.transitions},c.updateQueue.baseState=I,c.memoizedState=I,c.flags&256){C=A(Error(t(423)),c),c=sn(l,c,b,g,C);break e}else if(b!==C){C=A(Error(t(424)),c),c=sn(l,c,b,g,C);break e}else for(hi=To(c.stateNode.containerInfo.firstChild),Hr=c,Pn=!0,us=null,g=vc(c,null,b,g),c.child=g;g;)g.flags=g.flags&-3|4096,g=g.sibling;else{if(pa(),b===C){c=cl(l,c,g);break e}it(l,c,b,g)}c=c.child}return c;case 5:return ol(c),l===null&&vf(c),b=c.type,C=c.pendingProps,I=l!==null?l.memoizedProps:null,X=C.children,cp(b,C)?X=null:I!==null&&cp(b,I)&&(c.flags|=32),Ce(l,c),it(l,c,X,g),c.child;case 6:return l===null&&vf(c),null;case 13:return Uo(l,c,g);case 4:return wc(c,c.stateNode.containerInfo),b=c.pendingProps,l===null?c.child=el(c,null,b,g):it(l,c,b,g),c.child;case 11:return b=c.type,C=c.pendingProps,C=c.elementType===b?C:cs(b,C),Wr(l,c,b,C,g);case 7:return it(l,c,c.pendingProps,g),c.child;case 8:return it(l,c,c.pendingProps.children,g),c.child;case 12:return it(l,c,c.pendingProps.children,g),c.child;case 10:e:{if(b=c.type._context,C=c.pendingProps,I=c.memoizedProps,X=C.value,xn(tl,b._currentValue),b._currentValue=X,I!==null)if(Ui(I.value,X)){if(I.children===C.children&&!di.current){c=cl(l,c,g);break e}}else for(I=c.child,I!==null&&(I.return=c);I!==null;){var oe=I.dependencies;if(oe!==null){X=I.child;for(var ce=oe.firstContext;ce!==null;){if(ce.context===b){if(I.tag===1){ce=_n(-1,g&-g),ce.tag=2;var be=I.updateQueue;if(be!==null){be=be.shared;var Ve=be.pending;Ve===null?ce.next=ce:(ce.next=Ve.next,Ve.next=ce),be.pending=ce}}I.lanes|=g,ce=I.alternate,ce!==null&&(ce.lanes|=g),_c(I.return,g,c),oe.lanes|=g;break}ce=ce.next}}else if(I.tag===10)X=I.type===c.type?null:I.child;else if(I.tag===18){if(X=I.return,X===null)throw Error(t(341));X.lanes|=g,oe=X.alternate,oe!==null&&(oe.lanes|=g),_c(X,g,c),X=I.sibling}else X=I.child;if(X!==null)X.return=I;else for(X=I;X!==null;){if(X===c){X=null;break}if(I=X.sibling,I!==null){I.return=X.return,X=I;break}X=X.return}I=X}it(l,c,C.children,g),c=c.child}return c;case 9:return C=c.type,b=c.pendingProps.children,ma(c,g),C=Vi(C),b=b(C),c.flags|=1,it(l,c,b,g),c.child;case 14:return b=c.type,C=cs(b,c.pendingProps),C=cs(b.type,C),Wi(l,c,b,C,g);case 15:return we(l,c,c.type,c.pendingProps,g);case 17:return b=c.type,C=c.pendingProps,C=c.elementType===b?C:cs(b,C),Xg(l,c),c.tag=1,Jr(b)?(l=!0,Ja(c)):l=!1,ma(c,g),f(c,b,C),E(c,b,C,g),Gt(null,c,b,!0,l,g);case 19:return vE(l,c,g);case 22:return ge(l,c,g)}throw Error(t(156,c.tag))};function VE(l,c){return Ee(l,c)}function kL(l,c,g,b){this.tag=l,this.key=g,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=c,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=b,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function lo(l,c,g,b){return new kL(l,c,g,b)}function w_(l){return l=l.prototype,!(!l||!l.isReactComponent)}function DL(l){if(typeof l=="function")return w_(l)?1:0;if(l!=null){if(l=l.$$typeof,l===ee)return 11;if(l===G)return 14}return 2}function pu(l,c){var g=l.alternate;return g===null?(g=lo(l.tag,c,l.key,l.mode),g.elementType=l.elementType,g.type=l.type,g.stateNode=l.stateNode,g.alternate=l,l.alternate=g):(g.pendingProps=c,g.type=l.type,g.flags=0,g.subtreeFlags=0,g.deletions=null),g.flags=l.flags&14680064,g.childLanes=l.childLanes,g.lanes=l.lanes,g.child=l.child,g.memoizedProps=l.memoizedProps,g.memoizedState=l.memoizedState,g.updateQueue=l.updateQueue,c=l.dependencies,g.dependencies=c===null?null:{lanes:c.lanes,firstContext:c.firstContext},g.sibling=l.sibling,g.index=l.index,g.ref=l.ref,g}function rv(l,c,g,b,C,I){var X=2;if(b=l,typeof l=="function")w_(l)&&(X=1);else if(typeof l=="string")X=5;else e:switch(l){case U:return Ic(g.children,C,I,c);case H:X=8,C|=8;break;case P:return l=lo(12,g,c,C|2),l.elementType=P,l.lanes=I,l;case te:return l=lo(13,g,c,C),l.elementType=te,l.lanes=I,l;case V:return l=lo(19,g,c,C),l.elementType=V,l.lanes=I,l;case J:return iv(g,C,I,c);default:if(typeof l=="object"&&l!==null)switch(l.$$typeof){case O:X=10;break e;case j:X=9;break e;case ee:X=11;break e;case G:X=14;break e;case q:X=16,b=null;break e}throw Error(t(130,l==null?l:typeof l,""))}return c=lo(X,g,c,C),c.elementType=l,c.type=b,c.lanes=I,c}function Ic(l,c,g,b){return l=lo(7,l,b,c),l.lanes=g,l}function iv(l,c,g,b){return l=lo(22,l,b,c),l.elementType=J,l.lanes=g,l.stateNode={isHidden:!1},l}function S_(l,c,g){return l=lo(6,l,null,c),l.lanes=g,l}function E_(l,c,g){return c=lo(4,l.children!==null?l.children:[],l.key,c),c.lanes=g,c.stateNode={containerInfo:l.containerInfo,pendingChildren:null,implementation:l.implementation},c}function OL(l,c,g,b,C){this.tag=c,this.containerInfo=l,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=zl(0),this.expirationTimes=zl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=zl(0),this.identifierPrefix=b,this.onRecoverableError=C,this.mutableSourceEagerHydrationData=null}function b_(l,c,g,b,C,I,X,oe,ce){return l=new OL(l,c,g,oe,ce),c===1?(c=1,I===!0&&(c|=8)):c=0,I=lo(3,null,null,c),l.current=I,I.stateNode=l,I.memoizedState={element:b,isDehydrated:g,cache:null,transitions:null,pendingSuspenseBoundaries:null},Wt(I),l}function zL(l,c,g){var b=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}return n(),P_.exports=qL(),P_.exports}var tb;function YL(){if(tb)return dv;tb=1;var n=ZL();return dv.createRoot=n.createRoot,dv.hydrateRoot=n.hydrateRoot,dv}var JL=YL();var nb="popstate";function KL(n={}){function e(i,s){let{pathname:o="/",search:a="",hash:u=""}=Ed(i.location.hash.substring(1));return!o.startsWith("/")&&!o.startsWith(".")&&(o="/"+o),iw("",{pathname:o,search:a,hash:u},s.state&&s.state.usr||null,s.state&&s.state.key||"default")}function t(i,s){let o=i.document.querySelector("base"),a="";if(o&&o.getAttribute("href")){let u=i.location.href,d=u.indexOf("#");a=d===-1?u:u.slice(0,d)}return a+"#"+(typeof s=="string"?s:xm(s))}function r(i,s){Zs(i.pathname.charAt(0)==="/",`relative pathnames are not supported in hash history.push(${JSON.stringify(s)})`)}return e3(e,t,r,n)}function Zn(n,e){if(n===!1||n===null||typeof n>"u")throw new Error(e)}function Zs(n,e){if(!n){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}function QL(){return Math.random().toString(36).substring(2,10)}function rb(n,e){return{usr:n.state,key:n.key,idx:e}}function iw(n,e,t=null,r){return{pathname:typeof n=="string"?n:n.pathname,search:"",hash:"",...typeof e=="string"?Ed(e):e,state:t,key:e&&e.key||r||QL()}}function xm({pathname:n="/",search:e="",hash:t=""}){return e&&e!=="?"&&(n+=e.charAt(0)==="?"?e:"?"+e),t&&t!=="#"&&(n+=t.charAt(0)==="#"?t:"#"+t),n}function Ed(n){let e={};if(n){let t=n.indexOf("#");t>=0&&(e.hash=n.substring(t),n=n.substring(0,t));let r=n.indexOf("?");r>=0&&(e.search=n.substring(r),n=n.substring(0,r)),n&&(e.pathname=n)}return e}function e3(n,e,t,r={}){let{window:i=document.defaultView,v5Compat:s=!1}=r,o=i.history,a="POP",u=null,d=h();d==null&&(d=0,o.replaceState({...o.state,idx:d},""));function h(){return(o.state||{idx:null}).idx}function m(){a="POP";let x=h(),w=x==null?null:x-d;d=x,u&&u({action:a,location:S.location,delta:w})}function v(x,w){a="PUSH";let M=iw(S.location,x,w);t&&t(M,x),d=h()+1;let T=rb(M,d),L=S.createHref(M);try{o.pushState(T,"",L)}catch(D){if(D instanceof DOMException&&D.name==="DataCloneError")throw D;i.location.assign(L)}s&&u&&u({action:a,location:S.location,delta:1})}function y(x,w){a="REPLACE";let M=iw(S.location,x,w);t&&t(M,x),d=h();let T=rb(M,d),L=S.createHref(M);o.replaceState(T,"",L),s&&u&&u({action:a,location:S.location,delta:0})}function _(x){return t3(x)}let S={get action(){return a},get location(){return n(i,o)},listen(x){if(u)throw new Error("A history only accepts one active listener");return i.addEventListener(nb,m),u=x,()=>{i.removeEventListener(nb,m),u=null}},createHref(x){return e(i,x)},createURL:_,encodeLocation(x){let w=_(x);return{pathname:w.pathname,search:w.search,hash:w.hash}},push:v,replace:y,go(x){return o.go(x)}};return S}function t3(n,e=!1){let t="http://localhost";typeof window<"u"&&(t=window.location.origin!=="null"?window.location.origin:window.location.href),Zn(t,"No window.location.(origin|href) available to create URL");let r=typeof n=="string"?n:xm(n);return r=r.replace(/ $/,"%20"),!e&&r.startsWith("//")&&(r=t+r),new URL(r,t)}function qA(n,e,t="/"){return n3(n,e,t,!1)}function n3(n,e,t,r){let i=typeof e=="string"?Ed(e):e,s=Cl(i.pathname||"/",t);if(s==null)return null;let o=ZA(n);r3(o);let a=null;for(let u=0;a==null&&u{let h={relativePath:d===void 0?o.path||"":d,caseSensitive:o.caseSensitive===!0,childrenIndex:a,route:o};if(h.relativePath.startsWith("/")){if(!h.relativePath.startsWith(r)&&u)return;Zn(h.relativePath.startsWith(r),`Absolute route path "${h.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),h.relativePath=h.relativePath.slice(r.length)}let m=Tl([r,h.relativePath]),v=t.concat(h);o.children&&o.children.length>0&&(Zn(o.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${m}".`),ZA(o.children,e,v,m,u)),!(o.path==null&&!o.index)&&e.push({path:m,score:c3(m,o.index),routesMeta:v})};return n.forEach((o,a)=>{if(o.path===""||!o.path?.includes("?"))s(o,a);else for(let u of YA(o.path))s(o,a,!0,u)}),e}function YA(n){let e=n.split("/");if(e.length===0)return[];let[t,...r]=e,i=t.endsWith("?"),s=t.replace(/\?$/,"");if(r.length===0)return i?[s,""]:[s];let o=YA(r.join("/")),a=[];return a.push(...o.map(u=>u===""?s:[s,u].join("/"))),i&&a.push(...o),a.map(u=>n.startsWith("/")&&u===""?"/":u)}function r3(n){n.sort((e,t)=>e.score!==t.score?t.score-e.score:d3(e.routesMeta.map(r=>r.childrenIndex),t.routesMeta.map(r=>r.childrenIndex)))}var i3=/^:[\w-]+$/,s3=3,o3=2,a3=1,l3=10,u3=-2,ib=n=>n==="*";function c3(n,e){let t=n.split("/"),r=t.length;return t.some(ib)&&(r+=u3),e&&(r+=o3),t.filter(i=>!ib(i)).reduce((i,s)=>i+(i3.test(s)?s3:s===""?a3:l3),r)}function d3(n,e){return n.length===e.length&&n.slice(0,-1).every((r,i)=>r===e[i])?n[n.length-1]-e[e.length-1]:0}function f3(n,e,t=!1){let{routesMeta:r}=n,i={},s="/",o=[];for(let a=0;a{if(h==="*"){let _=a[v]||"";o=s.slice(0,s.length-_.length).replace(/(.)\/+$/,"$1")}const y=a[v];return m&&!y?d[h]=void 0:d[h]=(y||"").replace(/%2F/g,"/"),d},{}),pathname:s,pathnameBase:o,pattern:n}}function h3(n,e=!1,t=!0){Zs(n==="*"||!n.endsWith("*")||n.endsWith("/*"),`Route path "${n}" will be treated as if it were "${n.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${n.replace(/\*$/,"/*")}".`);let r=[],i="^"+n.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(o,a,u)=>(r.push({paramName:a,isOptional:u!=null}),u?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return n.endsWith("*")?(r.push({paramName:"*"}),i+=n==="*"||n==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):t?i+="\\/*$":n!==""&&n!=="/"&&(i+="(?:(?=\\/|$))"),[new RegExp(i,e?void 0:"i"),r]}function p3(n){try{return n.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(e){return Zs(!1,`The URL path "${n}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${e}).`),n}}function Cl(n,e){if(e==="/")return n;if(!n.toLowerCase().startsWith(e.toLowerCase()))return null;let t=e.endsWith("/")?e.length-1:e.length,r=n.charAt(t);return r&&r!=="/"?null:n.slice(t)||"/"}var m3=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,g3=n=>m3.test(n);function v3(n,e="/"){let{pathname:t,search:r="",hash:i=""}=typeof n=="string"?Ed(n):n,s;if(t)if(g3(t))s=t;else{if(t.includes("//")){let o=t;t=t.replace(/\/\/+/g,"/"),Zs(!1,`Pathnames cannot have embedded double slashes - normalizing ${o} -> ${t}`)}t.startsWith("/")?s=sb(t.substring(1),"/"):s=sb(t,e)}else s=e;return{pathname:s,search:x3(r),hash:w3(i)}}function sb(n,e){let t=e.replace(/\/+$/,"").split("/");return n.split("/").forEach(i=>{i===".."?t.length>1&&t.pop():i!=="."&&t.push(i)}),t.length>1?t.join("/"):"/"}function I_(n,e,t,r){return`Cannot include a '${n}' character in a manually specified \`to.${e}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${t}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function y3(n){return n.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function AS(n){let e=y3(n);return e.map((t,r)=>r===e.length-1?t.pathname:t.pathnameBase)}function CS(n,e,t,r=!1){let i;typeof n=="string"?i=Ed(n):(i={...n},Zn(!i.pathname||!i.pathname.includes("?"),I_("?","pathname","search",i)),Zn(!i.pathname||!i.pathname.includes("#"),I_("#","pathname","hash",i)),Zn(!i.search||!i.search.includes("#"),I_("#","search","hash",i)));let s=n===""||i.pathname==="",o=s?"/":i.pathname,a;if(o==null)a=t;else{let m=e.length-1;if(!r&&o.startsWith("..")){let v=o.split("/");for(;v[0]==="..";)v.shift(),m-=1;i.pathname=v.join("/")}a=m>=0?e[m]:"/"}let u=v3(i,a),d=o&&o!=="/"&&o.endsWith("/"),h=(s||o===".")&&t.endsWith("/");return!u.pathname.endsWith("/")&&(d||h)&&(u.pathname+="/"),u}var Tl=n=>n.join("/").replace(/\/\/+/g,"/"),_3=n=>n.replace(/\/+$/,"").replace(/^\/*/,"/"),x3=n=>!n||n==="?"?"":n.startsWith("?")?n:"?"+n,w3=n=>!n||n==="#"?"":n.startsWith("#")?n:"#"+n;function S3(n){return n!=null&&typeof n.status=="number"&&typeof n.statusText=="string"&&typeof n.internal=="boolean"&&"data"in n}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var JA=["POST","PUT","PATCH","DELETE"];new Set(JA);var E3=["GET",...JA];new Set(E3);var Ih=Z.createContext(null);Ih.displayName="DataRouter";var iy=Z.createContext(null);iy.displayName="DataRouterState";Z.createContext(!1);var KA=Z.createContext({isTransitioning:!1});KA.displayName="ViewTransition";var b3=Z.createContext(new Map);b3.displayName="Fetchers";var M3=Z.createContext(null);M3.displayName="Await";var Qo=Z.createContext(null);Qo.displayName="Navigation";var Jm=Z.createContext(null);Jm.displayName="Location";var ea=Z.createContext({outlet:null,matches:[],isDataRoute:!1});ea.displayName="Route";var RS=Z.createContext(null);RS.displayName="RouteError";function T3(n,{relative:e}={}){Zn(kh(),"useHref() may be used only in the context of a component.");let{basename:t,navigator:r}=Z.useContext(Qo),{hash:i,pathname:s,search:o}=Km(n,{relative:e}),a=s;return t!=="/"&&(a=s==="/"?t:Tl([t,s])),r.createHref({pathname:a,search:o,hash:i})}function kh(){return Z.useContext(Jm)!=null}function La(){return Zn(kh(),"useLocation() may be used only in the context of a component."),Z.useContext(Jm).location}var QA="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function eC(n){Z.useContext(Qo).static||Z.useLayoutEffect(n)}function Dh(){let{isDataRoute:n}=Z.useContext(ea);return n?V3():A3()}function A3(){Zn(kh(),"useNavigate() may be used only in the context of a component.");let n=Z.useContext(Ih),{basename:e,navigator:t}=Z.useContext(Qo),{matches:r}=Z.useContext(ea),{pathname:i}=La(),s=JSON.stringify(AS(r)),o=Z.useRef(!1);return eC(()=>{o.current=!0}),Z.useCallback((u,d={})=>{if(Zs(o.current,QA),!o.current)return;if(typeof u=="number"){t.go(u);return}let h=CS(u,JSON.parse(s),i,d.relative==="path");n==null&&e!=="/"&&(h.pathname=h.pathname==="/"?e:Tl([e,h.pathname])),(d.replace?t.replace:t.push)(h,d.state,d)},[e,t,s,i,n])}var C3=Z.createContext(null);function R3(n){let e=Z.useContext(ea).outlet;return Z.useMemo(()=>e&&Z.createElement(C3.Provider,{value:n},e),[e,n])}function Km(n,{relative:e}={}){let{matches:t}=Z.useContext(ea),{pathname:r}=La(),i=JSON.stringify(AS(t));return Z.useMemo(()=>CS(n,JSON.parse(i),r,e==="path"),[n,i,r,e])}function P3(n,e){return tC(n,e)}function tC(n,e,t,r,i){Zn(kh(),"useRoutes() may be used only in the context of a component.");let{navigator:s}=Z.useContext(Qo),{matches:o}=Z.useContext(ea),a=o[o.length-1],u=a?a.params:{},d=a?a.pathname:"/",h=a?a.pathnameBase:"/",m=a&&a.route;{let M=m&&m.path||"";nC(d,!m||M.endsWith("*")||M.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${d}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + +Please change the parent to .`)}let v=La(),y;if(e){let M=typeof e=="string"?Ed(e):e;Zn(h==="/"||M.pathname?.startsWith(h),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${h}" but pathname "${M.pathname}" was given in the \`location\` prop.`),y=M}else y=v;let _=y.pathname||"/",S=_;if(h!=="/"){let M=h.replace(/^\//,"").split("/");S="/"+_.replace(/^\//,"").split("/").slice(M.length).join("/")}let x=qA(n,{pathname:S});Zs(m||x!=null,`No routes matched location "${y.pathname}${y.search}${y.hash}" `),Zs(x==null||x[x.length-1].route.element!==void 0||x[x.length-1].route.Component!==void 0||x[x.length-1].route.lazy!==void 0,`Matched leaf route at location "${y.pathname}${y.search}${y.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let w=D3(x&&x.map(M=>Object.assign({},M,{params:Object.assign({},u,M.params),pathname:Tl([h,s.encodeLocation?s.encodeLocation(M.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:M.pathname]),pathnameBase:M.pathnameBase==="/"?h:Tl([h,s.encodeLocation?s.encodeLocation(M.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:M.pathnameBase])})),o,t,r,i);return e&&w?Z.createElement(Jm.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...y},navigationType:"POP"}},w):w}function N3(){let n=B3(),e=S3(n)?`${n.status} ${n.statusText}`:n instanceof Error?n.message:JSON.stringify(n),t=n instanceof Error?n.stack:null,r="rgba(200,200,200, 0.5)",i={padding:"0.5rem",backgroundColor:r},s={padding:"2px 4px",backgroundColor:r},o=null;return console.error("Error handled by React Router default ErrorBoundary:",n),o=Z.createElement(Z.Fragment,null,Z.createElement("p",null,"💿 Hey developer 👋"),Z.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",Z.createElement("code",{style:s},"ErrorBoundary")," or"," ",Z.createElement("code",{style:s},"errorElement")," prop on your route.")),Z.createElement(Z.Fragment,null,Z.createElement("h2",null,"Unexpected Application Error!"),Z.createElement("h3",{style:{fontStyle:"italic"}},e),t?Z.createElement("pre",{style:i},t):null,o)}var L3=Z.createElement(N3,null),I3=class extends Z.Component{constructor(n){super(n),this.state={location:n.location,revalidation:n.revalidation,error:n.error}}static getDerivedStateFromError(n){return{error:n}}static getDerivedStateFromProps(n,e){return e.location!==n.location||e.revalidation!=="idle"&&n.revalidation==="idle"?{error:n.error,location:n.location,revalidation:n.revalidation}:{error:n.error!==void 0?n.error:e.error,location:e.location,revalidation:n.revalidation||e.revalidation}}componentDidCatch(n,e){this.props.onError?this.props.onError(n,e):console.error("React Router caught the following error during render",n)}render(){return this.state.error!==void 0?Z.createElement(ea.Provider,{value:this.props.routeContext},Z.createElement(RS.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function k3({routeContext:n,match:e,children:t}){let r=Z.useContext(Ih);return r&&r.static&&r.staticContext&&(e.route.errorElement||e.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=e.route.id),Z.createElement(ea.Provider,{value:n},t)}function D3(n,e=[],t=null,r=null,i=null){if(n==null){if(!t)return null;if(t.errors)n=t.matches;else if(e.length===0&&!t.initialized&&t.matches.length>0)n=t.matches;else return null}let s=n,o=t?.errors;if(o!=null){let h=s.findIndex(m=>m.route.id&&o?.[m.route.id]!==void 0);Zn(h>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(o).join(",")}`),s=s.slice(0,Math.min(s.length,h+1))}let a=!1,u=-1;if(t)for(let h=0;h=0?s=s.slice(0,u+1):s=[s[0]];break}}}let d=t&&r?(h,m)=>{r(h,{location:t.location,params:t.matches?.[0]?.params??{},errorInfo:m})}:void 0;return s.reduceRight((h,m,v)=>{let y,_=!1,S=null,x=null;t&&(y=o&&m.route.id?o[m.route.id]:void 0,S=m.route.errorElement||L3,a&&(u<0&&v===0?(nC("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),_=!0,x=null):u===v&&(_=!0,x=m.route.hydrateFallbackElement||null)));let w=e.concat(s.slice(0,v+1)),M=()=>{let T;return y?T=S:_?T=x:m.route.Component?T=Z.createElement(m.route.Component,null):m.route.element?T=m.route.element:T=h,Z.createElement(k3,{match:m,routeContext:{outlet:h,matches:w,isDataRoute:t!=null},children:T})};return t&&(m.route.ErrorBoundary||m.route.errorElement||v===0)?Z.createElement(I3,{location:t.location,revalidation:t.revalidation,component:S,error:y,children:M(),routeContext:{outlet:null,matches:w,isDataRoute:!0},onError:d}):M()},null)}function PS(n){return`${n} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function O3(n){let e=Z.useContext(Ih);return Zn(e,PS(n)),e}function z3(n){let e=Z.useContext(iy);return Zn(e,PS(n)),e}function U3(n){let e=Z.useContext(ea);return Zn(e,PS(n)),e}function NS(n){let e=U3(n),t=e.matches[e.matches.length-1];return Zn(t.route.id,`${n} can only be used on routes that contain a unique "id"`),t.route.id}function F3(){return NS("useRouteId")}function B3(){let n=Z.useContext(RS),e=z3("useRouteError"),t=NS("useRouteError");return n!==void 0?n:e.errors?.[t]}function V3(){let{router:n}=O3("useNavigate"),e=NS("useNavigate"),t=Z.useRef(!1);return eC(()=>{t.current=!0}),Z.useCallback(async(i,s={})=>{Zs(t.current,QA),t.current&&(typeof i=="number"?n.navigate(i):await n.navigate(i,{fromRouteId:e,...s}))},[n,e])}var ob={};function nC(n,e,t){!e&&!ob[n]&&(ob[n]=!0,Zs(!1,t))}Z.memo(H3);function H3({routes:n,future:e,state:t,unstable_onError:r}){return tC(n,void 0,t,r,e)}function G3({to:n,replace:e,state:t,relative:r}){Zn(kh()," may be used only in the context of a component.");let{static:i}=Z.useContext(Qo);Zs(!i," must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");let{matches:s}=Z.useContext(ea),{pathname:o}=La(),a=Dh(),u=CS(n,AS(s),o,r==="path"),d=JSON.stringify(u);return Z.useEffect(()=>{a(JSON.parse(d),{replace:e,state:t,relative:r})},[a,d,r,e,t]),null}function j3(n){return R3(n.context)}function xa(n){Zn(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function W3({basename:n="/",children:e=null,location:t,navigationType:r="POP",navigator:i,static:s=!1}){Zn(!kh(),"You cannot render a inside another . You should never have more than one in your app.");let o=n.replace(/^\/*/,"/"),a=Z.useMemo(()=>({basename:o,navigator:i,static:s,future:{}}),[o,i,s]);typeof t=="string"&&(t=Ed(t));let{pathname:u="/",search:d="",hash:h="",state:m=null,key:v="default"}=t,y=Z.useMemo(()=>{let _=Cl(u,o);return _==null?null:{location:{pathname:_,search:d,hash:h,state:m,key:v},navigationType:r}},[o,u,d,h,m,v,r]);return Zs(y!=null,` is not able to match the URL "${u}${d}${h}" because it does not start with the basename, so the won't render anything.`),y==null?null:Z.createElement(Qo.Provider,{value:a},Z.createElement(Jm.Provider,{children:e,value:y}))}function X3({children:n,location:e}){return P3(sw(n),e)}function sw(n,e=[]){let t=[];return Z.Children.forEach(n,(r,i)=>{if(!Z.isValidElement(r))return;let s=[...e,i];if(r.type===Z.Fragment){t.push.apply(t,sw(r.props.children,s));return}Zn(r.type===xa,`[${typeof r.type=="string"?r.type:r.type.name}] is not a component. All component children of must be a or `),Zn(!r.props.index||!r.props.children,"An index route cannot have child routes.");let o={id:r.props.id||s.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,middleware:r.props.middleware,loader:r.props.loader,action:r.props.action,hydrateFallbackElement:r.props.hydrateFallbackElement,HydrateFallback:r.props.HydrateFallback,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.hasErrorBoundary===!0||r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(o.children=sw(r.props.children,s)),t.push(o)}),t}var m0="get",g0="application/x-www-form-urlencoded";function sy(n){return n!=null&&typeof n.tagName=="string"}function $3(n){return sy(n)&&n.tagName.toLowerCase()==="button"}function q3(n){return sy(n)&&n.tagName.toLowerCase()==="form"}function Z3(n){return sy(n)&&n.tagName.toLowerCase()==="input"}function Y3(n){return!!(n.metaKey||n.altKey||n.ctrlKey||n.shiftKey)}function J3(n,e){return n.button===0&&(!e||e==="_self")&&!Y3(n)}var fv=null;function K3(){if(fv===null)try{new FormData(document.createElement("form"),0),fv=!1}catch{fv=!0}return fv}var Q3=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function k_(n){return n!=null&&!Q3.has(n)?(Zs(!1,`"${n}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${g0}"`),null):n}function eI(n,e){let t,r,i,s,o;if(q3(n)){let a=n.getAttribute("action");r=a?Cl(a,e):null,t=n.getAttribute("method")||m0,i=k_(n.getAttribute("enctype"))||g0,s=new FormData(n)}else if($3(n)||Z3(n)&&(n.type==="submit"||n.type==="image")){let a=n.form;if(a==null)throw new Error('Cannot submit a