diff --git a/server/public/assets/index-DXJpsJXf.js b/server/public/assets/index-DXJpsJXf.js deleted file mode 100644 index ca03a1d2..00000000 --- a/server/public/assets/index-DXJpsJXf.js +++ /dev/null @@ -1,126 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/OrbitControls-BJ-UXxdt.js","assets/three.module--MGUDD-H.js"])))=>i.map(i=>d[i]); -(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const u of document.querySelectorAll('link[rel="modulepreload"]'))o(u);new MutationObserver(u=>{for(const m of u)if(m.type==="childList")for(const p of m.addedNodes)p.tagName==="LINK"&&p.rel==="modulepreload"&&o(p)}).observe(document,{childList:!0,subtree:!0});function l(u){const m={};return u.integrity&&(m.integrity=u.integrity),u.referrerPolicy&&(m.referrerPolicy=u.referrerPolicy),u.crossOrigin==="use-credentials"?m.credentials="include":u.crossOrigin==="anonymous"?m.credentials="omit":m.credentials="same-origin",m}function o(u){if(u.ep)return;u.ep=!0;const m=l(u);fetch(u.href,m)}})();function Yd(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var b9={exports:{}},p8={};var ri;function Kd(){if(ri)return p8;ri=1;var t=Symbol.for("react.transitional.element"),a=Symbol.for("react.fragment");function l(o,u,m){var p=null;if(m!==void 0&&(p=""+m),u.key!==void 0&&(p=""+u.key),"key"in u){m={};for(var v in u)v!=="key"&&(m[v]=u[v])}else m=u;return u=m.ref,{$$typeof:t,type:o,key:p,ref:u!==void 0?u:null,props:m}}return p8.Fragment=a,p8.jsx=l,p8.jsxs=l,p8}var ii;function Qd(){return ii||(ii=1,b9.exports=Kd()),b9.exports}var r=Qd(),M9={exports:{}},N1={};var si;function Xd(){if(si)return N1;si=1;var t=Symbol.for("react.transitional.element"),a=Symbol.for("react.portal"),l=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),u=Symbol.for("react.profiler"),m=Symbol.for("react.consumer"),p=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),x=Symbol.for("react.memo"),z=Symbol.for("react.lazy"),b=Symbol.for("react.activity"),y=Symbol.iterator;function H(R){return R===null||typeof R!="object"?null:(R=y&&R[y]||R["@@iterator"],typeof R=="function"?R:null)}var V={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w=Object.assign,C={};function S(R,Z,c1){this.props=R,this.context=Z,this.refs=C,this.updater=c1||V}S.prototype.isReactComponent={},S.prototype.setState=function(R,Z){if(typeof R!="object"&&typeof R!="function"&&R!=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,R,Z,"setState")},S.prototype.forceUpdate=function(R){this.updater.enqueueForceUpdate(this,R,"forceUpdate")};function B(){}B.prototype=S.prototype;function L(R,Z,c1){this.props=R,this.context=Z,this.refs=C,this.updater=c1||V}var k=L.prototype=new B;k.constructor=L,w(k,S.prototype),k.isPureReactComponent=!0;var q=Array.isArray;function j(){}var N={H:null,A:null,T:null,S:null},F=Object.prototype.hasOwnProperty;function _(R,Z,c1){var d1=c1.ref;return{$$typeof:t,type:R,key:Z,ref:d1!==void 0?d1:null,props:c1}}function D(R,Z){return _(R.type,Z,R.props)}function T(R){return typeof R=="object"&&R!==null&&R.$$typeof===t}function I(R){var Z={"=":"=0",":":"=2"};return"$"+R.replace(/[=:]/g,function(c1){return Z[c1]})}var h1=/\/+/g;function r1(R,Z){return typeof R=="object"&&R!==null&&R.key!=null?I(""+R.key):Z.toString(36)}function t1(R){switch(R.status){case"fulfilled":return R.value;case"rejected":throw R.reason;default:switch(typeof R.status=="string"?R.then(j,j):(R.status="pending",R.then(function(Z){R.status==="pending"&&(R.status="fulfilled",R.value=Z)},function(Z){R.status==="pending"&&(R.status="rejected",R.reason=Z)})),R.status){case"fulfilled":return R.value;case"rejected":throw R.reason}}throw R}function E(R,Z,c1,d1,p1){var M1=typeof R;(M1==="undefined"||M1==="boolean")&&(R=null);var x1=!1;if(R===null)x1=!0;else switch(M1){case"bigint":case"string":case"number":x1=!0;break;case"object":switch(R.$$typeof){case t:case a:x1=!0;break;case z:return x1=R._init,E(x1(R._payload),Z,c1,d1,p1)}}if(x1)return p1=p1(R),x1=d1===""?"."+r1(R,0):d1,q(p1)?(c1="",x1!=null&&(c1=x1.replace(h1,"$&/")+"/"),E(p1,Z,c1,"",function(_1){return _1})):p1!=null&&(T(p1)&&(p1=D(p1,c1+(p1.key==null||R&&R.key===p1.key?"":(""+p1.key).replace(h1,"$&/")+"/")+x1)),Z.push(p1)),1;x1=0;var j1=d1===""?".":d1+":";if(q(R))for(var V1=0;V1>>1,a1=E[e1];if(0>>1;e1u(c1,P))d1u(p1,c1)?(E[e1]=p1,E[d1]=P,e1=d1):(E[e1]=c1,E[Z]=P,e1=Z);else if(d1u(p1,P))E[e1]=p1,E[d1]=P,e1=d1;else break t}}return $}function u(E,$){var P=E.sortIndex-$.sortIndex;return P!==0?P:E.id-$.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var m=performance;t.unstable_now=function(){return m.now()}}else{var p=Date,v=p.now();t.unstable_now=function(){return p.now()-v}}var g=[],x=[],z=1,b=null,y=3,H=!1,V=!1,w=!1,C=!1,S=typeof setTimeout=="function"?setTimeout:null,B=typeof clearTimeout=="function"?clearTimeout:null,L=typeof setImmediate<"u"?setImmediate:null;function k(E){for(var $=l(x);$!==null;){if($.callback===null)o(x);else if($.startTime<=E)o(x),$.sortIndex=$.expirationTime,a(g,$);else break;$=l(x)}}function q(E){if(w=!1,k(E),!V)if(l(g)!==null)V=!0,j||(j=!0,I());else{var $=l(x);$!==null&&t1(q,$.startTime-E)}}var j=!1,N=-1,F=5,_=-1;function D(){return C?!0:!(t.unstable_now()-_E&&D());){var e1=b.callback;if(typeof e1=="function"){b.callback=null,y=b.priorityLevel;var a1=e1(b.expirationTime<=E);if(E=t.unstable_now(),typeof a1=="function"){b.callback=a1,k(E),$=!0;break e}b===l(g)&&o(g),k(E)}else o(g);b=l(g)}if(b!==null)$=!0;else{var R=l(x);R!==null&&t1(q,R.startTime-E),$=!1}}break t}finally{b=null,y=P,H=!1}$=void 0}}finally{$?I():j=!1}}}var I;if(typeof L=="function")I=function(){L(T)};else if(typeof MessageChannel<"u"){var h1=new MessageChannel,r1=h1.port2;h1.port1.onmessage=T,I=function(){r1.postMessage(null)}}else I=function(){S(T,0)};function t1(E,$){N=S(function(){E(t.unstable_now())},$)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(E){E.callback=null},t.unstable_forceFrameRate=function(E){0>E||125e1?(E.sortIndex=P,a(x,E),l(g)===null&&E===l(x)&&(w?(B(N),N=-1):w=!0,t1(q,P-e1))):(E.sortIndex=a1,a(g,E),V||H||(V=!0,j||(j=!0,I()))),E},t.unstable_shouldYield=D,t.unstable_wrapCallback=function(E){var $=y;return function(){var P=y;y=$;try{return E.apply(this,arguments)}finally{y=P}}}})(w9)),w9}var hi;function Wd(){return hi||(hi=1,C9.exports=Jd()),C9.exports}var H9={exports:{}},G2={};var di;function tf(){if(di)return G2;di=1;var t=wc();function a(g){var x="https://react.dev/errors/"+g;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(a){console.error(a)}}return t(),H9.exports=tf(),H9.exports}var mi;function ef(){if(mi)return g8;mi=1;var t=Wd(),a=wc(),l=Os();function o(e){var c="https://react.dev/errors/"+e;if(1a1||(e.current=e1[a1],e1[a1]=null,a1--)}function c1(e,c){a1++,e1[a1]=e.current,e.current=c}var d1=R(null),p1=R(null),M1=R(null),x1=R(null);function j1(e,c){switch(c1(M1,c),c1(p1,e),c1(d1,null),c.nodeType){case 9:case 11:e=(e=c.documentElement)&&(e=e.namespaceURI)?Lr(e):0;break;default:if(e=c.tagName,c=c.namespaceURI)c=Lr(c),e=Br(c,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}Z(d1),c1(d1,e)}function V1(){Z(d1),Z(p1),Z(M1)}function _1(e){e.memoizedState!==null&&c1(x1,e);var c=d1.current,n=Br(c,e.type);c!==n&&(c1(p1,e),c1(d1,n))}function T1(e){p1.current===e&&(Z(d1),Z(p1)),x1.current===e&&(Z(x1),d8._currentValue=P)}var Q,s1;function f1(e){if(Q===void 0)try{throw Error()}catch(n){var c=n.stack.trim().match(/\n( *(at )?)/);Q=c&&c[1]||"",s1=-1)":-1h||O[s]!==K[h]){var n1=` -`+O[s].replace(" at new "," at ");return e.displayName&&n1.includes("")&&(n1=n1.replace("",e.displayName)),n1}while(1<=s&&0<=h);break}}}finally{v1=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?f1(n):""}function g1(e,c){switch(e.tag){case 26:case 27:case 5:return f1(e.type);case 16:return f1("Lazy");case 13:return e.child!==c&&c!==null?f1("Suspense Fallback"):f1("Suspense");case 19:return f1("SuspenseList");case 0:case 15:return z1(e.type,!1);case 11:return z1(e.type.render,!1);case 1:return z1(e.type,!0);case 31:return f1("Activity");default:return""}}function D1(e){try{var c="",n=null;do c+=g1(e,n),n=e,e=e.return;while(e);return c}catch(s){return` -Error generating stack: `+s.message+` -`+s.stack}}var e2=Object.prototype.hasOwnProperty,b1=t.unstable_scheduleCallback,C1=t.unstable_cancelCallback,P1=t.unstable_shouldYield,V2=t.unstable_requestPaint,I1=t.unstable_now,v2=t.unstable_getCurrentPriorityLevel,X1=t.unstable_ImmediatePriority,J1=t.unstable_UserBlockingPriority,u1=t.unstable_NormalPriority,J=t.unstable_LowPriority,l1=t.unstable_IdlePriority,H1=t.log,l2=t.unstable_setDisableYieldValue,r2=null,z2=null;function e4(e){if(typeof H1=="function"&&l2(e),z2&&typeof z2.setStrictMode=="function")try{z2.setStrictMode(r2,e)}catch{}}var y1=Math.clz32?Math.clz32:O1,u2=Math.log,W1=Math.LN2;function O1(e){return e>>>=0,e===0?32:31-(u2(e)/W1|0)|0}var c2=256,I2=262144,E4=4194304;function d4(e){var c=e&42;if(c!==0)return c;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:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;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 b2(e,c,n){var s=e.pendingLanes;if(s===0)return 0;var h=0,f=e.suspendedLanes,M=e.pingedLanes;e=e.warmLanes;var A=s&134217727;return A!==0?(s=A&~f,s!==0?h=d4(s):(M&=A,M!==0?h=d4(M):n||(n=A&~e,n!==0&&(h=d4(n))))):(A=s&~f,A!==0?h=d4(A):M!==0?h=d4(M):n||(n=s&~e,n!==0&&(h=d4(n)))),h===0?0:c!==0&&c!==h&&(c&f)===0&&(f=h&-h,n=c&-c,f>=n||f===32&&(n&4194048)!==0)?c:h}function A4(e,c){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&c)===0}function Ru(e,c){switch(e){case 1:case 2:case 4:case 8:case 64:return c+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 c+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 oa(){var e=E4;return E4<<=1,(E4&62914560)===0&&(E4=4194304),e}function st(e){for(var c=[],n=0;31>n;n++)c.push(e);return c}function S0(e,c){e.pendingLanes|=c,c!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Eu(e,c,n,s,h,f){var M=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 A=e.entanglements,O=e.expirationTimes,K=e.hiddenUpdates;for(n=M&~n;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var Uu=/[\n"\\]/g;function m4(e){return e.replace(Uu,function(c){return"\\"+c.charCodeAt(0).toString(16)+" "})}function mt(e,c,n,s,h,f,M,A){e.name="",M!=null&&typeof M!="function"&&typeof M!="symbol"&&typeof M!="boolean"?e.type=M:e.removeAttribute("type"),c!=null?M==="number"?(c===0&&e.value===""||e.value!=c)&&(e.value=""+f4(c)):e.value!==""+f4(c)&&(e.value=""+f4(c)):M!=="submit"&&M!=="reset"||e.removeAttribute("value"),c!=null?vt(e,M,f4(c)):n!=null?vt(e,M,f4(n)):s!=null&&e.removeAttribute("value"),h==null&&f!=null&&(e.defaultChecked=!!f),h!=null&&(e.checked=h&&typeof h!="function"&&typeof h!="symbol"),A!=null&&typeof A!="function"&&typeof A!="symbol"&&typeof A!="boolean"?e.name=""+f4(A):e.removeAttribute("name")}function ya(e,c,n,s,h,f,M,A){if(f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"&&(e.type=f),c!=null||n!=null){if(!(f!=="submit"&&f!=="reset"||c!=null)){ft(e);return}n=n!=null?""+f4(n):"",c=c!=null?""+f4(c):n,A||c===e.value||(e.value=c),e.defaultValue=c}s=s??h,s=typeof s!="function"&&typeof s!="symbol"&&!!s,e.checked=A?e.checked:!!s,e.defaultChecked=!!s,M!=null&&typeof M!="function"&&typeof M!="symbol"&&typeof M!="boolean"&&(e.name=M),ft(e)}function vt(e,c,n){c==="number"&&I8(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function w6(e,c,n,s){if(e=e.options,c){c={};for(var h=0;h"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),bt=!1;if(P4)try{var B0={};Object.defineProperty(B0,"passive",{get:function(){bt=!0}}),window.addEventListener("test",B0,B0),window.removeEventListener("test",B0,B0)}catch{bt=!1}var x3=null,Mt=null,K8=null;function La(){if(K8)return K8;var e,c=Mt,n=c.length,s,h="value"in x3?x3.value:x3.textContent,f=h.length;for(e=0;e=F0),Ra=" ",Ea=!1;function Ta(e,c){switch(e){case"keyup":return ph.indexOf(c.keyCode)!==-1;case"keydown":return c.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qa(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var A6=!1;function xh(e,c){switch(e){case"compositionend":return qa(c);case"keypress":return c.which!==32?null:(Ea=!0,Ra);case"textInput":return e=c.data,e===Ra&&Ea?null:e;default:return null}}function zh(e,c){if(A6)return e==="compositionend"||!St&&Ta(e,c)?(e=La(),K8=Mt=x3=null,A6=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(c.ctrlKey||c.altKey||c.metaKey)||c.ctrlKey&&c.altKey){if(c.char&&1=c)return{node:n,offset:c-e};e=s}t:{for(;n;){if(n.nextSibling){n=n.nextSibling;break t}n=n.parentNode}n=void 0}n=Pa(n)}}function Ya(e,c){return e&&c?e===c?!0:e&&e.nodeType===3?!1:c&&c.nodeType===3?Ya(e,c.parentNode):"contains"in e?e.contains(c):e.compareDocumentPosition?!!(e.compareDocumentPosition(c)&16):!1:!1}function Ka(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var c=I8(e.document);c instanceof e.HTMLIFrameElement;){try{var n=typeof c.contentWindow.location.href=="string"}catch{n=!1}if(n)e=c.contentWindow;else break;c=I8(e.document)}return c}function Lt(e){var c=e&&e.nodeName&&e.nodeName.toLowerCase();return c&&(c==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||c==="textarea"||e.contentEditable==="true")}var Vh=P4&&"documentMode"in document&&11>=document.documentMode,L6=null,Bt=null,T0=null,jt=!1;function Qa(e,c,n){var s=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;jt||L6==null||L6!==I8(s)||(s=L6,"selectionStart"in s&&Lt(s)?s={start:s.selectionStart,end:s.selectionEnd}:(s=(s.ownerDocument&&s.ownerDocument.defaultView||window).getSelection(),s={anchorNode:s.anchorNode,anchorOffset:s.anchorOffset,focusNode:s.focusNode,focusOffset:s.focusOffset}),T0&&E0(T0,s)||(T0=s,s=U5(Bt,"onSelect"),0>=M,h-=M,T4=1<<32-y1(c)+h|n<E1?(G1=S1,S1=null):G1=S1.sibling;var Q1=X(G,S1,Y[E1],i1);if(Q1===null){S1===null&&(S1=G1);break}e&&S1&&Q1.alternate===null&&c(G,S1),U=f(Q1,U,E1),K1===null?A1=Q1:K1.sibling=Q1,K1=Q1,S1=G1}if(E1===Y.length)return n(G,S1),Y1&&Y4(G,E1),A1;if(S1===null){for(;E1E1?(G1=S1,S1=null):G1=S1.sibling;var O3=X(G,S1,Q1.value,i1);if(O3===null){S1===null&&(S1=G1);break}e&&S1&&O3.alternate===null&&c(G,S1),U=f(O3,U,E1),K1===null?A1=O3:K1.sibling=O3,K1=O3,S1=G1}if(Q1.done)return n(G,S1),Y1&&Y4(G,E1),A1;if(S1===null){for(;!Q1.done;E1++,Q1=Y.next())Q1=o1(G,Q1.value,i1),Q1!==null&&(U=f(Q1,U,E1),K1===null?A1=Q1:K1.sibling=Q1,K1=Q1);return Y1&&Y4(G,E1),A1}for(S1=s(S1);!Q1.done;E1++,Q1=Y.next())Q1=W(S1,G,E1,Q1.value,i1),Q1!==null&&(e&&Q1.alternate!==null&&S1.delete(Q1.key===null?E1:Q1.key),U=f(Q1,U,E1),K1===null?A1=Q1:K1.sibling=Q1,K1=Q1);return e&&S1.forEach(function(Id){return c(G,Id)}),Y1&&Y4(G,E1),A1}function o2(G,U,Y,i1){if(typeof Y=="object"&&Y!==null&&Y.type===w&&Y.key===null&&(Y=Y.props.children),typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case H:t:{for(var A1=Y.key;U!==null;){if(U.key===A1){if(A1=Y.type,A1===w){if(U.tag===7){n(G,U.sibling),i1=h(U,Y.props.children),i1.return=G,G=i1;break t}}else if(U.elementType===A1||typeof A1=="object"&&A1!==null&&A1.$$typeof===F&&W3(A1)===U.type){n(G,U.sibling),i1=h(U,Y.props),Z0(i1,Y),i1.return=G,G=i1;break t}n(G,U);break}else c(G,U);U=U.sibling}Y.type===w?(i1=Y3(Y.props.children,G.mode,i1,Y.key),i1.return=G,G=i1):(i1=l5(Y.type,Y.key,Y.props,null,G.mode,i1),Z0(i1,Y),i1.return=G,G=i1)}return M(G);case V:t:{for(A1=Y.key;U!==null;){if(U.key===A1)if(U.tag===4&&U.stateNode.containerInfo===Y.containerInfo&&U.stateNode.implementation===Y.implementation){n(G,U.sibling),i1=h(U,Y.children||[]),i1.return=G,G=i1;break t}else{n(G,U);break}else c(G,U);U=U.sibling}i1=qt(Y,G.mode,i1),i1.return=G,G=i1}return M(G);case F:return Y=W3(Y),o2(G,U,Y,i1)}if(t1(Y))return w1(G,U,Y,i1);if(I(Y)){if(A1=I(Y),typeof A1!="function")throw Error(o(150));return Y=A1.call(Y),L1(G,U,Y,i1)}if(typeof Y.then=="function")return o2(G,U,d5(Y),i1);if(Y.$$typeof===L)return o2(G,U,s5(G,Y),i1);f5(G,Y)}return typeof Y=="string"&&Y!==""||typeof Y=="number"||typeof Y=="bigint"?(Y=""+Y,U!==null&&U.tag===6?(n(G,U.sibling),i1=h(U,Y),i1.return=G,G=i1):(n(G,U),i1=Tt(Y,G.mode,i1),i1.return=G,G=i1),M(G)):n(G,U)}return function(G,U,Y,i1){try{U0=0;var A1=o2(G,U,Y,i1);return O6=null,A1}catch(S1){if(S1===D6||S1===u5)throw S1;var K1=a4(29,S1,null,G.mode);return K1.lanes=i1,K1.return=G,K1}finally{}}}var e6=bn(!0),Mn=bn(!1),C3=!1;function Qt(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Xt(e,c){e=e.updateQueue,c.updateQueue===e&&(c.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function w3(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function H3(e,c,n){var s=e.updateQueue;if(s===null)return null;if(s=s.shared,(t2&2)!==0){var h=s.pending;return h===null?c.next=c:(c.next=h.next,h.next=c),s.pending=c,c=n5(e),an(e,null,n),c}return a5(e,s,c,n),n5(e)}function $0(e,c,n){if(c=c.updateQueue,c!==null&&(c=c.shared,(n&4194048)!==0)){var s=c.lanes;s&=e.pendingLanes,n|=s,c.lanes=n,ha(e,n)}}function Jt(e,c){var n=e.updateQueue,s=e.alternate;if(s!==null&&(s=s.updateQueue,n===s)){var h=null,f=null;if(n=n.firstBaseUpdate,n!==null){do{var M={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};f===null?h=f=M:f=f.next=M,n=n.next}while(n!==null);f===null?h=f=c:f=f.next=c}else h=f=c;n={baseState:s.baseState,firstBaseUpdate:h,lastBaseUpdate:f,shared:s.shared,callbacks:s.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=c:e.next=c,n.lastBaseUpdate=c}var Wt=!1;function G0(){if(Wt){var e=q6;if(e!==null)throw e}}function P0(e,c,n,s){Wt=!1;var h=e.updateQueue;C3=!1;var f=h.firstBaseUpdate,M=h.lastBaseUpdate,A=h.shared.pending;if(A!==null){h.shared.pending=null;var O=A,K=O.next;O.next=null,M===null?f=K:M.next=K,M=O;var n1=e.alternate;n1!==null&&(n1=n1.updateQueue,A=n1.lastBaseUpdate,A!==M&&(A===null?n1.firstBaseUpdate=K:A.next=K,n1.lastBaseUpdate=O))}if(f!==null){var o1=h.baseState;M=0,n1=K=O=null,A=f;do{var X=A.lane&-536870913,W=X!==A.lane;if(W?($1&X)===X:(s&X)===X){X!==0&&X===T6&&(Wt=!0),n1!==null&&(n1=n1.next={lane:0,tag:A.tag,payload:A.payload,callback:null,next:null});t:{var w1=e,L1=A;X=c;var o2=n;switch(L1.tag){case 1:if(w1=L1.payload,typeof w1=="function"){o1=w1.call(o2,o1,X);break t}o1=w1;break t;case 3:w1.flags=w1.flags&-65537|128;case 0:if(w1=L1.payload,X=typeof w1=="function"?w1.call(o2,o1,X):w1,X==null)break t;o1=b({},o1,X);break t;case 2:C3=!0}}X=A.callback,X!==null&&(e.flags|=64,W&&(e.flags|=8192),W=h.callbacks,W===null?h.callbacks=[X]:W.push(X))}else W={lane:X,tag:A.tag,payload:A.payload,callback:A.callback,next:null},n1===null?(K=n1=W,O=o1):n1=n1.next=W,M|=X;if(A=A.next,A===null){if(A=h.shared.pending,A===null)break;W=A,A=W.next,W.next=null,h.lastBaseUpdate=W,h.shared.pending=null}}while(!0);n1===null&&(O=o1),h.baseState=O,h.firstBaseUpdate=K,h.lastBaseUpdate=n1,f===null&&(h.shared.lanes=0),B3|=M,e.lanes=M,e.memoizedState=o1}}function yn(e,c){if(typeof e!="function")throw Error(o(191,e));e.call(c)}function Cn(e,c){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ef?f:8;var M=E.T,A={};E.T=A,xe(e,!1,c,n);try{var O=h(),K=E.S;if(K!==null&&K(A,O),O!==null&&typeof O=="object"&&typeof O.then=="function"){var n1=Eh(O,s);K0(e,c,n1,s4(e))}else K0(e,c,s,s4(e))}catch(o1){K0(e,c,{then:function(){},status:"rejected",reason:o1},s4())}finally{$.p=f,M!==null&&A.types!==null&&(M.types=A.types),E.T=M}}function Uh(){}function pe(e,c,n,s){if(e.tag!==5)throw Error(o(476));var h=el(e).queue;tl(e,h,c,P,n===null?Uh:function(){return cl(e),n(s)})}function el(e){var c=e.memoizedState;if(c!==null)return c;c={memoizedState:P,baseState:P,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:J4,lastRenderedState:P},next:null};var n={};return c.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:J4,lastRenderedState:n},next:null},e.memoizedState=c,e=e.alternate,e!==null&&(e.memoizedState=c),c}function cl(e){var c=el(e);c.next===null&&(c=e.alternate.memoizedState),K0(e,c.next.queue,{},s4())}function ge(){return _2(d8)}function al(){return H2().memoizedState}function nl(){return H2().memoizedState}function Zh(e){for(var c=e.return;c!==null;){switch(c.tag){case 24:case 3:var n=s4();e=w3(n);var s=H3(c,e,n);s!==null&&(t4(s,c,n),$0(s,c,n)),c={cache:Pt()},e.payload=c;return}c=c.return}}function $h(e,c,n){var s=s4();n={lane:s,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},C5(e)?rl(c,n):(n=Rt(e,c,n,s),n!==null&&(t4(n,e,s),il(n,c,s)))}function ll(e,c,n){var s=s4();K0(e,c,n,s)}function K0(e,c,n,s){var h={lane:s,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(C5(e))rl(c,h);else{var f=e.alternate;if(e.lanes===0&&(f===null||f.lanes===0)&&(f=c.lastRenderedReducer,f!==null))try{var M=c.lastRenderedState,A=f(M,n);if(h.hasEagerState=!0,h.eagerState=A,c4(A,M))return a5(e,c,h,0),h2===null&&c5(),!1}catch{}finally{}if(n=Rt(e,c,h,s),n!==null)return t4(n,e,s),il(n,c,s),!0}return!1}function xe(e,c,n,s){if(s={lane:2,revertLane:Qe(),gesture:null,action:s,hasEagerState:!1,eagerState:null,next:null},C5(e)){if(c)throw Error(o(479))}else c=Rt(e,n,s,2),c!==null&&t4(c,e,2)}function C5(e){var c=e.alternate;return e===k1||c!==null&&c===k1}function rl(e,c){U6=p5=!0;var n=e.pending;n===null?c.next=c:(c.next=n.next,n.next=c),e.pending=c}function il(e,c,n){if((n&4194048)!==0){var s=c.lanes;s&=e.pendingLanes,n|=s,c.lanes=n,ha(e,n)}}var Q0={readContext:_2,use:z5,useCallback:M2,useContext:M2,useEffect:M2,useImperativeHandle:M2,useLayoutEffect:M2,useInsertionEffect:M2,useMemo:M2,useReducer:M2,useRef:M2,useState:M2,useDebugValue:M2,useDeferredValue:M2,useTransition:M2,useSyncExternalStore:M2,useId:M2,useHostTransitionStatus:M2,useFormState:M2,useActionState:M2,useOptimistic:M2,useMemoCache:M2,useCacheRefresh:M2};Q0.useEffectEvent=M2;var sl={readContext:_2,use:z5,useCallback:function(e,c){return P2().memoizedState=[e,c===void 0?null:c],e},useContext:_2,useEffect:Gn,useImperativeHandle:function(e,c,n){n=n!=null?n.concat([e]):null,M5(4194308,4,Kn.bind(null,c,e),n)},useLayoutEffect:function(e,c){return M5(4194308,4,e,c)},useInsertionEffect:function(e,c){M5(4,2,e,c)},useMemo:function(e,c){var n=P2();c=c===void 0?null:c;var s=e();if(c6){e4(!0);try{e()}finally{e4(!1)}}return n.memoizedState=[s,c],s},useReducer:function(e,c,n){var s=P2();if(n!==void 0){var h=n(c);if(c6){e4(!0);try{n(c)}finally{e4(!1)}}}else h=c;return s.memoizedState=s.baseState=h,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:h},s.queue=e,e=e.dispatch=$h.bind(null,k1,e),[s.memoizedState,e]},useRef:function(e){var c=P2();return e={current:e},c.memoizedState=e},useState:function(e){e=he(e);var c=e.queue,n=ll.bind(null,k1,c);return c.dispatch=n,[e.memoizedState,n]},useDebugValue:me,useDeferredValue:function(e,c){var n=P2();return ve(n,e,c)},useTransition:function(){var e=he(!1);return e=tl.bind(null,k1,e.queue,!0,!1),P2().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,c,n){var s=k1,h=P2();if(Y1){if(n===void 0)throw Error(o(407));n=n()}else{if(n=c(),h2===null)throw Error(o(349));($1&127)!==0||Ln(s,c,n)}h.memoizedState=n;var f={value:n,getSnapshot:c};return h.queue=f,Gn(jn.bind(null,s,f,e),[e]),s.flags|=2048,$6(9,{destroy:void 0},Bn.bind(null,s,f,n,c),null),n},useId:function(){var e=P2(),c=h2.identifierPrefix;if(Y1){var n=q4,s=T4;n=(s&~(1<<32-y1(s)-1)).toString(32)+n,c="_"+c+"R_"+n,n=g5++,0<\/script>",f=f.removeChild(f.firstChild);break;case"select":f=typeof s.is=="string"?M.createElement("select",{is:s.is}):M.createElement("select"),s.multiple?f.multiple=!0:s.size&&(f.size=s.size);break;default:f=typeof s.is=="string"?M.createElement(h,{is:s.is}):M.createElement(h)}}f[D2]=c,f[Y2]=s;t:for(M=c.child;M!==null;){if(M.tag===5||M.tag===6)f.appendChild(M.stateNode);else if(M.tag!==4&&M.tag!==27&&M.child!==null){M.child.return=M,M=M.child;continue}if(M===c)break t;for(;M.sibling===null;){if(M.return===null||M.return===c)break t;M=M.return}M.sibling.return=M.return,M=M.sibling}c.stateNode=f;t:switch(Z2(f,h,s),h){case"button":case"input":case"select":case"textarea":s=!!s.autoFocus;break t;case"img":s=!0;break t;default:s=!1}s&&t3(c)}}return f2(c),Ne(c,c.type,e===null?null:e.memoizedProps,c.pendingProps,n),null;case 6:if(e&&c.stateNode!=null)e.memoizedProps!==s&&t3(c);else{if(typeof s!="string"&&c.stateNode===null)throw Error(o(166));if(e=M1.current,R6(c)){if(e=c.stateNode,n=c.memoizedProps,s=null,h=O2,h!==null)switch(h.tag){case 27:case 5:s=h.memoizedProps}e[D2]=c,e=!!(e.nodeValue===n||s!==null&&s.suppressHydrationWarning===!0||Vr(e.nodeValue,n)),e||M3(c,!0)}else e=Z5(e).createTextNode(s),e[D2]=c,c.stateNode=e}return f2(c),null;case 31:if(n=c.memoizedState,e===null||e.memoizedState!==null){if(s=R6(c),n!==null){if(e===null){if(!s)throw Error(o(318));if(e=c.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(557));e[D2]=c}else K3(),(c.flags&128)===0&&(c.memoizedState=null),c.flags|=4;f2(c),e=!1}else n=Ut(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return c.flags&256?(l4(c),c):(l4(c),null);if((c.flags&128)!==0)throw Error(o(558))}return f2(c),null;case 13:if(s=c.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(h=R6(c),s!==null&&s.dehydrated!==null){if(e===null){if(!h)throw Error(o(318));if(h=c.memoizedState,h=h!==null?h.dehydrated:null,!h)throw Error(o(317));h[D2]=c}else K3(),(c.flags&128)===0&&(c.memoizedState=null),c.flags|=4;f2(c),h=!1}else h=Ut(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=h),h=!0;if(!h)return c.flags&256?(l4(c),c):(l4(c),null)}return l4(c),(c.flags&128)!==0?(c.lanes=n,c):(n=s!==null,e=e!==null&&e.memoizedState!==null,n&&(s=c.child,h=null,s.alternate!==null&&s.alternate.memoizedState!==null&&s.alternate.memoizedState.cachePool!==null&&(h=s.alternate.memoizedState.cachePool.pool),f=null,s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(f=s.memoizedState.cachePool.pool),f!==h&&(s.flags|=2048)),n!==e&&n&&(c.child.flags|=8192),A5(c,c.updateQueue),f2(c),null);case 4:return V1(),e===null&&t9(c.stateNode.containerInfo),f2(c),null;case 10:return Q4(c.type),f2(c),null;case 19:if(Z(w2),s=c.memoizedState,s===null)return f2(c),null;if(h=(c.flags&128)!==0,f=s.rendering,f===null)if(h)J0(s,!1);else{if(y2!==0||e!==null&&(e.flags&128)!==0)for(e=c.child;e!==null;){if(f=v5(e),f!==null){for(c.flags|=128,J0(s,!1),e=f.updateQueue,c.updateQueue=e,A5(c,e),c.subtreeFlags=0,e=n,n=c.child;n!==null;)nn(n,e),n=n.sibling;return c1(w2,w2.current&1|2),Y1&&Y4(c,s.treeForkCount),c.child}e=e.sibling}s.tail!==null&&I1()>F5&&(c.flags|=128,h=!0,J0(s,!1),c.lanes=4194304)}else{if(!h)if(e=v5(f),e!==null){if(c.flags|=128,h=!0,e=e.updateQueue,c.updateQueue=e,A5(c,e),J0(s,!0),s.tail===null&&s.tailMode==="hidden"&&!f.alternate&&!Y1)return f2(c),null}else 2*I1()-s.renderingStartTime>F5&&n!==536870912&&(c.flags|=128,h=!0,J0(s,!1),c.lanes=4194304);s.isBackwards?(f.sibling=c.child,c.child=f):(e=s.last,e!==null?e.sibling=f:c.child=f,s.last=f)}return s.tail!==null?(e=s.tail,s.rendering=e,s.tail=e.sibling,s.renderingStartTime=I1(),e.sibling=null,n=w2.current,c1(w2,h?n&1|2:n&1),Y1&&Y4(c,s.treeForkCount),e):(f2(c),null);case 22:case 23:return l4(c),ee(),s=c.memoizedState!==null,e!==null?e.memoizedState!==null!==s&&(c.flags|=8192):s&&(c.flags|=8192),s?(n&536870912)!==0&&(c.flags&128)===0&&(f2(c),c.subtreeFlags&6&&(c.flags|=8192)):f2(c),n=c.updateQueue,n!==null&&A5(c,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),s=null,c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(s=c.memoizedState.cachePool.pool),s!==n&&(c.flags|=2048),e!==null&&Z(J3),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),c.memoizedState.cache!==n&&(c.flags|=2048),Q4(A2),f2(c),null;case 25:return null;case 30:return null}throw Error(o(156,c.tag))}function Kh(e,c){switch(Ot(c),c.tag){case 1:return e=c.flags,e&65536?(c.flags=e&-65537|128,c):null;case 3:return Q4(A2),V1(),e=c.flags,(e&65536)!==0&&(e&128)===0?(c.flags=e&-65537|128,c):null;case 26:case 27:case 5:return T1(c),null;case 31:if(c.memoizedState!==null){if(l4(c),c.alternate===null)throw Error(o(340));K3()}return e=c.flags,e&65536?(c.flags=e&-65537|128,c):null;case 13:if(l4(c),e=c.memoizedState,e!==null&&e.dehydrated!==null){if(c.alternate===null)throw Error(o(340));K3()}return e=c.flags,e&65536?(c.flags=e&-65537|128,c):null;case 19:return Z(w2),null;case 4:return V1(),null;case 10:return Q4(c.type),null;case 22:case 23:return l4(c),ee(),e!==null&&Z(J3),e=c.flags,e&65536?(c.flags=e&-65537|128,c):null;case 24:return Q4(A2),null;case 25:return null;default:return null}}function Nl(e,c){switch(Ot(c),c.tag){case 3:Q4(A2),V1();break;case 26:case 27:case 5:T1(c);break;case 4:V1();break;case 31:c.memoizedState!==null&&l4(c);break;case 13:l4(c);break;case 19:Z(w2);break;case 10:Q4(c.type);break;case 22:case 23:l4(c),ee(),e!==null&&Z(J3);break;case 24:Q4(A2)}}function W0(e,c){try{var n=c.updateQueue,s=n!==null?n.lastEffect:null;if(s!==null){var h=s.next;n=h;do{if((n.tag&e)===e){s=void 0;var f=n.create,M=n.inst;s=f(),M.destroy=s}n=n.next}while(n!==h)}}catch(A){n2(c,c.return,A)}}function A3(e,c,n){try{var s=c.updateQueue,h=s!==null?s.lastEffect:null;if(h!==null){var f=h.next;s=f;do{if((s.tag&e)===e){var M=s.inst,A=M.destroy;if(A!==void 0){M.destroy=void 0,h=c;var O=n,K=A;try{K()}catch(n1){n2(h,O,n1)}}}s=s.next}while(s!==f)}}catch(n1){n2(c,c.return,n1)}}function Fl(e){var c=e.updateQueue;if(c!==null){var n=e.stateNode;try{Cn(c,n)}catch(s){n2(e,e.return,s)}}}function kl(e,c,n){n.props=a6(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(s){n2(e,c,s)}}function t8(e,c){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var s=e.stateNode;break;case 30:s=e.stateNode;break;default:s=e.stateNode}typeof n=="function"?e.refCleanup=n(s):n.current=s}}catch(h){n2(e,c,h)}}function D4(e,c){var n=e.ref,s=e.refCleanup;if(n!==null)if(typeof s=="function")try{s()}catch(h){n2(e,c,h)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(h){n2(e,c,h)}else n.current=null}function Rl(e){var c=e.type,n=e.memoizedProps,s=e.stateNode;try{t:switch(c){case"button":case"input":case"select":case"textarea":n.autoFocus&&s.focus();break t;case"img":n.src?s.src=n.src:n.srcSet&&(s.srcset=n.srcSet)}}catch(h){n2(e,e.return,h)}}function Fe(e,c,n){try{var s=e.stateNode;gd(s,e.type,n,c),s[Y2]=c}catch(h){n2(e,e.return,h)}}function El(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&R3(e.type)||e.tag===4}function ke(e){t:for(;;){for(;e.sibling===null;){if(e.return===null||El(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&R3(e.type)||e.flags&2||e.child===null||e.tag===4)continue t;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Re(e,c,n){var s=e.tag;if(s===5||s===6)e=e.stateNode,c?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,c):(c=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,c.appendChild(e),n=n._reactRootContainer,n!=null||c.onclick!==null||(c.onclick=G4));else if(s!==4&&(s===27&&R3(e.type)&&(n=e.stateNode,c=null),e=e.child,e!==null))for(Re(e,c,n),e=e.sibling;e!==null;)Re(e,c,n),e=e.sibling}function L5(e,c,n){var s=e.tag;if(s===5||s===6)e=e.stateNode,c?n.insertBefore(e,c):n.appendChild(e);else if(s!==4&&(s===27&&R3(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(L5(e,c,n),e=e.sibling;e!==null;)L5(e,c,n),e=e.sibling}function Tl(e){var c=e.stateNode,n=e.memoizedProps;try{for(var s=e.type,h=c.attributes;h.length;)c.removeAttributeNode(h[0]);Z2(c,s,n),c[D2]=e,c[Y2]=n}catch(f){n2(e,e.return,f)}}var e3=!1,j2=!1,Ee=!1,ql=typeof WeakSet=="function"?WeakSet:Set,E2=null;function Qh(e,c){if(e=e.containerInfo,a9=Q5,e=Ka(e),Lt(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else t:{n=(n=e.ownerDocument)&&n.defaultView||window;var s=n.getSelection&&n.getSelection();if(s&&s.rangeCount!==0){n=s.anchorNode;var h=s.anchorOffset,f=s.focusNode;s=s.focusOffset;try{n.nodeType,f.nodeType}catch{n=null;break t}var M=0,A=-1,O=-1,K=0,n1=0,o1=e,X=null;e:for(;;){for(var W;o1!==n||h!==0&&o1.nodeType!==3||(A=M+h),o1!==f||s!==0&&o1.nodeType!==3||(O=M+s),o1.nodeType===3&&(M+=o1.nodeValue.length),(W=o1.firstChild)!==null;)X=o1,o1=W;for(;;){if(o1===e)break e;if(X===n&&++K===h&&(A=M),X===f&&++n1===s&&(O=M),(W=o1.nextSibling)!==null)break;o1=X,X=o1.parentNode}o1=W}n=A===-1||O===-1?null:{start:A,end:O}}else n=null}n=n||{start:0,end:0}}else n=null;for(n9={focusedElem:e,selectionRange:n},Q5=!1,E2=c;E2!==null;)if(c=E2,e=c.child,(c.subtreeFlags&1028)!==0&&e!==null)e.return=c,E2=e;else for(;E2!==null;){switch(c=E2,f=c.alternate,e=c.flags,c.tag){case 0:if((e&4)!==0&&(e=c.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n title"))),Z2(f,s,n),f[D2]=e,R2(f),s=f;break t;case"link":var M=$r("link","href",h).get(s+(n.href||""));if(M){for(var A=0;Ao2&&(M=o2,o2=L1,L1=M);var G=Ia(A,L1),U=Ia(A,o2);if(G&&U&&(W.rangeCount!==1||W.anchorNode!==G.node||W.anchorOffset!==G.offset||W.focusNode!==U.node||W.focusOffset!==U.offset)){var Y=o1.createRange();Y.setStart(G.node,G.offset),W.removeAllRanges(),L1>o2?(W.addRange(Y),W.extend(U.node,U.offset)):(Y.setEnd(U.node,U.offset),W.addRange(Y))}}}}for(o1=[],W=A;W=W.parentNode;)W.nodeType===1&&o1.push({element:W,left:W.scrollLeft,top:W.scrollTop});for(typeof A.focus=="function"&&A.focus(),A=0;An?32:n,E.T=null,n=Ze,Ze=null;var f=N3,M=r3;if(k2=0,K6=N3=null,r3=0,(t2&6)!==0)throw Error(o(331));var A=t2;if(t2|=4,Kl(f.current),Pl(f,f.current,M,n),t2=A,r8(0,!1),z2&&typeof z2.onPostCommitFiberRoot=="function")try{z2.onPostCommitFiberRoot(r2,f)}catch{}return!0}finally{$.p=h,E.T=s,fr(e,c)}}function vr(e,c,n){c=p4(n,c),c=ye(e.stateNode,c,2),e=H3(e,c,2),e!==null&&(S0(e,2),O4(e))}function n2(e,c,n){if(e.tag===3)vr(e,e,n);else for(;c!==null;){if(c.tag===3){vr(c,e,n);break}else if(c.tag===1){var s=c.stateNode;if(typeof c.type.getDerivedStateFromError=="function"||typeof s.componentDidCatch=="function"&&(j3===null||!j3.has(s))){e=p4(n,e),n=pl(2),s=H3(c,n,2),s!==null&&(gl(n,s,c,e),S0(s,2),O4(s));break}}c=c.return}}function Ie(e,c,n){var s=e.pingCache;if(s===null){s=e.pingCache=new Wh;var h=new Set;s.set(c,h)}else h=s.get(c),h===void 0&&(h=new Set,s.set(c,h));h.has(n)||(De=!0,h.add(n),e=nd.bind(null,e,c,n),c.then(e,e))}function nd(e,c,n){var s=e.pingCache;s!==null&&s.delete(c),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,h2===e&&($1&n)===n&&(y2===4||y2===3&&($1&62914560)===$1&&300>I1()-N5?(t2&2)===0&&Q6(e,0):Oe|=n,Y6===$1&&(Y6=0)),O4(e)}function pr(e,c){c===0&&(c=oa()),e=I3(e,c),e!==null&&(S0(e,c),O4(e))}function ld(e){var c=e.memoizedState,n=0;c!==null&&(n=c.retryLane),pr(e,n)}function rd(e,c){var n=0;switch(e.tag){case 31:case 13:var s=e.stateNode,h=e.memoizedState;h!==null&&(n=h.retryLane);break;case 19:s=e.stateNode;break;case 22:s=e.stateNode._retryCache;break;default:throw Error(o(314))}s!==null&&s.delete(c),pr(e,n)}function id(e,c){return b1(e,c)}var D5=null,J6=null,Ye=!1,O5=!1,Ke=!1,k3=0;function O4(e){e!==J6&&e.next===null&&(J6===null?D5=J6=e:J6=J6.next=e),O5=!0,Ye||(Ye=!0,od())}function r8(e,c){if(!Ke&&O5){Ke=!0;do for(var n=!1,s=D5;s!==null;){if(e!==0){var h=s.pendingLanes;if(h===0)var f=0;else{var M=s.suspendedLanes,A=s.pingedLanes;f=(1<<31-y1(42|e)+1)-1,f&=h&~(M&~A),f=f&201326741?f&201326741|1:f?f|2:0}f!==0&&(n=!0,br(s,f))}else f=$1,f=b2(s,s===h2?f:0,s.cancelPendingCommit!==null||s.timeoutHandle!==-1),(f&3)===0||A4(s,f)||(n=!0,br(s,f));s=s.next}while(n);Ke=!1}}function sd(){gr()}function gr(){O5=Ye=!1;var e=0;k3!==0&&zd()&&(e=k3);for(var c=I1(),n=null,s=D5;s!==null;){var h=s.next,f=xr(s,c);f===0?(s.next=null,n===null?D5=h:n.next=h,h===null&&(J6=n)):(n=s,(e!==0||(f&3)!==0)&&(O5=!0)),s=h}k2!==0&&k2!==5||r8(e),k3!==0&&(k3=0)}function xr(e,c){for(var n=e.suspendedLanes,s=e.pingedLanes,h=e.expirationTimes,f=e.pendingLanes&-62914561;0A)break;var n1=O.transferSize,o1=O.initiatorType;n1&&Ar(o1)&&(O=O.responseEnd,M+=n1*(O"u"?null:document;function Or(e,c,n){var s=W6;if(s&&typeof c=="string"&&c){var h=m4(c);h='link[rel="'+e+'"][href="'+h+'"]',typeof n=="string"&&(h+='[crossorigin="'+n+'"]'),Dr.has(h)||(Dr.add(h),e={rel:e,crossOrigin:n,href:c},s.querySelector(h)===null&&(c=s.createElement("link"),Z2(c,"link",e),R2(c),s.head.appendChild(c)))}}function Ad(e){i3.D(e),Or("dns-prefetch",e,null)}function Ld(e,c){i3.C(e,c),Or("preconnect",e,c)}function Bd(e,c,n){i3.L(e,c,n);var s=W6;if(s&&e&&c){var h='link[rel="preload"][as="'+m4(c)+'"]';c==="image"&&n&&n.imageSrcSet?(h+='[imagesrcset="'+m4(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(h+='[imagesizes="'+m4(n.imageSizes)+'"]')):h+='[href="'+m4(e)+'"]';var f=h;switch(c){case"style":f=t0(e);break;case"script":f=e0(e)}y4.has(f)||(e=b({rel:"preload",href:c==="image"&&n&&n.imageSrcSet?void 0:e,as:c},n),y4.set(f,e),s.querySelector(h)!==null||c==="style"&&s.querySelector(u8(f))||c==="script"&&s.querySelector(h8(f))||(c=s.createElement("link"),Z2(c,"link",e),R2(c),s.head.appendChild(c)))}}function jd(e,c){i3.m(e,c);var n=W6;if(n&&e){var s=c&&typeof c.as=="string"?c.as:"script",h='link[rel="modulepreload"][as="'+m4(s)+'"][href="'+m4(e)+'"]',f=h;switch(s){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":f=e0(e)}if(!y4.has(f)&&(e=b({rel:"modulepreload",href:e},c),y4.set(f,e),n.querySelector(h)===null)){switch(s){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(h8(f)))return}s=n.createElement("link"),Z2(s,"link",e),R2(s),n.head.appendChild(s)}}}function Nd(e,c,n){i3.S(e,c,n);var s=W6;if(s&&e){var h=y6(s).hoistableStyles,f=t0(e);c=c||"default";var M=h.get(f);if(!M){var A={loading:0,preload:null};if(M=s.querySelector(u8(f)))A.loading=5;else{e=b({rel:"stylesheet",href:e,"data-precedence":c},n),(n=y4.get(f))&&h9(e,n);var O=M=s.createElement("link");R2(O),Z2(O,"link",e),O._p=new Promise(function(K,n1){O.onload=K,O.onerror=n1}),O.addEventListener("load",function(){A.loading|=1}),O.addEventListener("error",function(){A.loading|=2}),A.loading|=4,G5(M,c,s)}M={type:"stylesheet",instance:M,count:1,state:A},h.set(f,M)}}}function Fd(e,c){i3.X(e,c);var n=W6;if(n&&e){var s=y6(n).hoistableScripts,h=e0(e),f=s.get(h);f||(f=n.querySelector(h8(h)),f||(e=b({src:e,async:!0},c),(c=y4.get(h))&&d9(e,c),f=n.createElement("script"),R2(f),Z2(f,"link",e),n.head.appendChild(f)),f={type:"script",instance:f,count:1,state:null},s.set(h,f))}}function kd(e,c){i3.M(e,c);var n=W6;if(n&&e){var s=y6(n).hoistableScripts,h=e0(e),f=s.get(h);f||(f=n.querySelector(h8(h)),f||(e=b({src:e,async:!0,type:"module"},c),(c=y4.get(h))&&d9(e,c),f=n.createElement("script"),R2(f),Z2(f,"link",e),n.head.appendChild(f)),f={type:"script",instance:f,count:1,state:null},s.set(h,f))}}function _r(e,c,n,s){var h=(h=M1.current)?$5(h):null;if(!h)throw Error(o(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(c=t0(n.href),n=y6(h).hoistableStyles,s=n.get(c),s||(s={type:"style",instance:null,count:0,state:null},n.set(c,s)),s):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=t0(n.href);var f=y6(h).hoistableStyles,M=f.get(e);if(M||(h=h.ownerDocument||h,M={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},f.set(e,M),(f=h.querySelector(u8(e)))&&!f._p&&(M.instance=f,M.state.loading=5),y4.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},y4.set(e,n),f||Rd(h,e,n,M.state))),c&&s===null)throw Error(o(528,""));return M}if(c&&s!==null)throw Error(o(529,""));return null;case"script":return c=n.async,n=n.src,typeof n=="string"&&c&&typeof c!="function"&&typeof c!="symbol"?(c=e0(n),n=y6(h).hoistableScripts,s=n.get(c),s||(s={type:"script",instance:null,count:0,state:null},n.set(c,s)),s):{type:"void",instance:null,count:0,state:null};default:throw Error(o(444,e))}}function t0(e){return'href="'+m4(e)+'"'}function u8(e){return'link[rel="stylesheet"]['+e+"]"}function Ur(e){return b({},e,{"data-precedence":e.precedence,precedence:null})}function Rd(e,c,n,s){e.querySelector('link[rel="preload"][as="style"]['+c+"]")?s.loading=1:(c=e.createElement("link"),s.preload=c,c.addEventListener("load",function(){return s.loading|=1}),c.addEventListener("error",function(){return s.loading|=2}),Z2(c,"link",n),R2(c),e.head.appendChild(c))}function e0(e){return'[src="'+m4(e)+'"]'}function h8(e){return"script[async]"+e}function Zr(e,c,n){if(c.count++,c.instance===null)switch(c.type){case"style":var s=e.querySelector('style[data-href~="'+m4(n.href)+'"]');if(s)return c.instance=s,R2(s),s;var h=b({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return s=(e.ownerDocument||e).createElement("style"),R2(s),Z2(s,"style",h),G5(s,n.precedence,e),c.instance=s;case"stylesheet":h=t0(n.href);var f=e.querySelector(u8(h));if(f)return c.state.loading|=4,c.instance=f,R2(f),f;s=Ur(n),(h=y4.get(h))&&h9(s,h),f=(e.ownerDocument||e).createElement("link"),R2(f);var M=f;return M._p=new Promise(function(A,O){M.onload=A,M.onerror=O}),Z2(f,"link",s),c.state.loading|=4,G5(f,n.precedence,e),c.instance=f;case"script":return f=e0(n.src),(h=e.querySelector(h8(f)))?(c.instance=h,R2(h),h):(s=n,(h=y4.get(f))&&(s=b({},n),d9(s,h)),e=e.ownerDocument||e,h=e.createElement("script"),R2(h),Z2(h,"link",s),e.head.appendChild(h),c.instance=h);case"void":return null;default:throw Error(o(443,c.type))}else c.type==="stylesheet"&&(c.state.loading&4)===0&&(s=c.instance,c.state.loading|=4,G5(s,n.precedence,e));return c.instance}function G5(e,c,n){for(var s=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),h=s.length?s[s.length-1]:null,f=h,M=0;M title"):null)}function Ed(e,c,n){if(n===1||c.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof c.precedence!="string"||typeof c.href!="string"||c.href==="")break;return!0;case"link":if(typeof c.rel!="string"||typeof c.href!="string"||c.href===""||c.onLoad||c.onError)break;switch(c.rel){case"stylesheet":return e=c.disabled,typeof c.precedence=="string"&&e==null;default:return!0}case"script":if(c.async&&typeof c.async!="function"&&typeof c.async!="symbol"&&!c.onLoad&&!c.onError&&c.src&&typeof c.src=="string")return!0}return!1}function Pr(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function Td(e,c,n,s){if(n.type==="stylesheet"&&(typeof s.media!="string"||matchMedia(s.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var h=t0(s.href),f=c.querySelector(u8(h));if(f){c=f._p,c!==null&&typeof c=="object"&&typeof c.then=="function"&&(e.count++,e=I5.bind(e),c.then(e,e)),n.state.loading|=4,n.instance=f,R2(f);return}f=c.ownerDocument||c,s=Ur(s),(h=y4.get(h))&&h9(s,h),f=f.createElement("link"),R2(f);var M=f;M._p=new Promise(function(A,O){M.onload=A,M.onerror=O}),Z2(f,"link",s),n.instance=f}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,c),(c=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=I5.bind(e),c.addEventListener("load",n),c.addEventListener("error",n))}}var f9=0;function qd(e,c){return e.stylesheets&&e.count===0&&K5(e,e.stylesheets),0f9?50:800)+c);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(s),clearTimeout(h)}}:null}function I5(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)K5(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Y5=null;function K5(e,c){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Y5=new Map,c.forEach(Dd,e),Y5=null,I5.call(e))}function Dd(e,c){if(!(c.state.loading&4)){var n=Y5.get(e);if(n)var s=n.get(null);else{n=new Map,Y5.set(e,n);for(var h=e.querySelectorAll("link[data-precedence],style[data-precedence]"),f=0;f"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(a){console.error(a)}}return t(),y9.exports=ef(),y9.exports}var af=cf();var pi="popstate";function nf(t={}){function a(o,u){let{pathname:m,search:p,hash:v}=o.location;return nc("",{pathname:m,search:p,hash:v},u.state&&u.state.usr||null,u.state&&u.state.key||"default")}function l(o,u){return typeof u=="string"?u:L8(u)}return rf(a,l,null,t)}function g2(t,a){if(t===!1||t===null||typeof t>"u")throw new Error(a)}function R4(t,a){if(!t){typeof console<"u"&&console.warn(a);try{throw new Error(a)}catch{}}}function lf(){return Math.random().toString(36).substring(2,10)}function gi(t,a){return{usr:t.state,key:t.key,idx:a}}function nc(t,a,l=null,o){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof a=="string"?b0(a):a,state:l,key:a&&a.key||o||lf()}}function L8({pathname:t="/",search:a="",hash:l=""}){return a&&a!=="?"&&(t+=a.charAt(0)==="?"?a:"?"+a),l&&l!=="#"&&(t+=l.charAt(0)==="#"?l:"#"+l),t}function b0(t){let a={};if(t){let l=t.indexOf("#");l>=0&&(a.hash=t.substring(l),t=t.substring(0,l));let o=t.indexOf("?");o>=0&&(a.search=t.substring(o),t=t.substring(0,o)),t&&(a.pathname=t)}return a}function rf(t,a,l,o={}){let{window:u=document.defaultView,v5Compat:m=!1}=o,p=u.history,v="POP",g=null,x=z();x==null&&(x=0,p.replaceState({...p.state,idx:x},""));function z(){return(p.state||{idx:null}).idx}function b(){v="POP";let C=z(),S=C==null?null:C-x;x=C,g&&g({action:v,location:w.location,delta:S})}function y(C,S){v="PUSH";let B=nc(w.location,C,S);x=z()+1;let L=gi(B,x),k=w.createHref(B);try{p.pushState(L,"",k)}catch(q){if(q instanceof DOMException&&q.name==="DataCloneError")throw q;u.location.assign(k)}m&&g&&g({action:v,location:w.location,delta:1})}function H(C,S){v="REPLACE";let B=nc(w.location,C,S);x=z();let L=gi(B,x),k=w.createHref(B);p.replaceState(L,"",k),m&&g&&g({action:v,location:w.location,delta:0})}function V(C){return sf(C)}let w={get action(){return v},get location(){return t(u,p)},listen(C){if(g)throw new Error("A history only accepts one active listener");return u.addEventListener(pi,b),g=C,()=>{u.removeEventListener(pi,b),g=null}},createHref(C){return a(u,C)},createURL:V,encodeLocation(C){let S=V(C);return{pathname:S.pathname,search:S.search,hash:S.hash}},push:y,replace:H,go(C){return p.go(C)}};return w}function sf(t,a=!1){let l="http://localhost";typeof window<"u"&&(l=window.location.origin!=="null"?window.location.origin:window.location.href),g2(l,"No window.location.(origin|href) available to create URL");let o=typeof t=="string"?t:L8(t);return o=o.replace(/ $/,"%20"),!a&&o.startsWith("//")&&(o=l+o),new URL(o,l)}function _s(t,a,l="/"){return of(t,a,l,!1)}function of(t,a,l,o){let u=typeof a=="string"?b0(a):a,m=m3(u.pathname||"/",l);if(m==null)return null;let p=Us(t);uf(p);let v=null;for(let g=0;v==null&&g{let z={relativePath:x===void 0?p.path||"":x,caseSensitive:p.caseSensitive===!0,childrenIndex:v,route:p};if(z.relativePath.startsWith("/")){if(!z.relativePath.startsWith(o)&&g)return;g2(z.relativePath.startsWith(o),`Absolute route path "${z.relativePath}" nested under path "${o}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),z.relativePath=z.relativePath.slice(o.length)}let b=f3([o,z.relativePath]),y=l.concat(z);p.children&&p.children.length>0&&(g2(p.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${b}".`),Us(p.children,a,y,b,g)),!(p.path==null&&!p.index)&&a.push({path:b,score:gf(b,p.index),routesMeta:y})};return t.forEach((p,v)=>{if(p.path===""||!p.path?.includes("?"))m(p,v);else for(let g of Zs(p.path))m(p,v,!0,g)}),a}function Zs(t){let a=t.split("/");if(a.length===0)return[];let[l,...o]=a,u=l.endsWith("?"),m=l.replace(/\?$/,"");if(o.length===0)return u?[m,""]:[m];let p=Zs(o.join("/")),v=[];return v.push(...p.map(g=>g===""?m:[m,g].join("/"))),u&&v.push(...p),v.map(g=>t.startsWith("/")&&g===""?"/":g)}function uf(t){t.sort((a,l)=>a.score!==l.score?l.score-a.score:xf(a.routesMeta.map(o=>o.childrenIndex),l.routesMeta.map(o=>o.childrenIndex)))}var hf=/^:[\w-]+$/,df=3,ff=2,mf=1,vf=10,pf=-2,xi=t=>t==="*";function gf(t,a){let l=t.split("/"),o=l.length;return l.some(xi)&&(o+=pf),a&&(o+=ff),l.filter(u=>!xi(u)).reduce((u,m)=>u+(hf.test(m)?df:m===""?mf:vf),o)}function xf(t,a){return t.length===a.length&&t.slice(0,-1).every((o,u)=>o===a[u])?t[t.length-1]-a[a.length-1]:0}function zf(t,a,l=!1){let{routesMeta:o}=t,u={},m="/",p=[];for(let v=0;v{if(z==="*"){let V=v[y]||"";p=m.slice(0,m.length-V.length).replace(/(.)\/+$/,"$1")}const H=v[y];return b&&!H?x[z]=void 0:x[z]=(H||"").replace(/%2F/g,"/"),x},{}),pathname:m,pathnameBase:p,pattern:t}}function bf(t,a=!1,l=!0){R4(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let o=[],u="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(p,v,g)=>(o.push({paramName:v,isOptional:g!=null}),g?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(o.push({paramName:"*"}),u+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):l?u+="\\/*$":t!==""&&t!=="/"&&(u+="(?:(?=\\/|$))"),[new RegExp(u,a?void 0:"i"),o]}function Mf(t){try{return t.split("/").map(a=>decodeURIComponent(a).replace(/\//g,"%2F")).join("/")}catch(a){return R4(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${a}).`),t}}function m3(t,a){if(a==="/")return t;if(!t.toLowerCase().startsWith(a.toLowerCase()))return null;let l=a.endsWith("/")?a.length-1:a.length,o=t.charAt(l);return o&&o!=="/"?null:t.slice(l)||"/"}var yf=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Cf=t=>yf.test(t);function wf(t,a="/"){let{pathname:l,search:o="",hash:u=""}=typeof t=="string"?b0(t):t,m;if(l)if(Cf(l))m=l;else{if(l.includes("//")){let p=l;l=l.replace(/\/\/+/g,"/"),R4(!1,`Pathnames cannot have embedded double slashes - normalizing ${p} -> ${l}`)}l.startsWith("/")?m=zi(l.substring(1),"/"):m=zi(l,a)}else m=a;return{pathname:m,search:Vf(o),hash:Af(u)}}function zi(t,a){let l=a.replace(/\/+$/,"").split("/");return t.split("/").forEach(u=>{u===".."?l.length>1&&l.pop():u!=="."&&l.push(u)}),l.length>1?l.join("/"):"/"}function S9(t,a,l,o){return`Cannot include a '${t}' character in a manually specified \`to.${a}\` field [${JSON.stringify(o)}]. Please separate it out to the \`to.${l}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function Hf(t){return t.filter((a,l)=>l===0||a.route.path&&a.route.path.length>0)}function $s(t){let a=Hf(t);return a.map((l,o)=>o===a.length-1?l.pathname:l.pathnameBase)}function Gs(t,a,l,o=!1){let u;typeof t=="string"?u=b0(t):(u={...t},g2(!u.pathname||!u.pathname.includes("?"),S9("?","pathname","search",u)),g2(!u.pathname||!u.pathname.includes("#"),S9("#","pathname","hash",u)),g2(!u.search||!u.search.includes("#"),S9("#","search","hash",u)));let m=t===""||u.pathname==="",p=m?"/":u.pathname,v;if(p==null)v=l;else{let b=a.length-1;if(!o&&p.startsWith("..")){let y=p.split("/");for(;y[0]==="..";)y.shift(),b-=1;u.pathname=y.join("/")}v=b>=0?a[b]:"/"}let g=wf(u,v),x=p&&p!=="/"&&p.endsWith("/"),z=(m||p===".")&&l.endsWith("/");return!g.pathname.endsWith("/")&&(x||z)&&(g.pathname+="/"),g}var f3=t=>t.join("/").replace(/\/\/+/g,"/"),Sf=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),Vf=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,Af=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t;function Lf(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Ps=["POST","PUT","PATCH","DELETE"];new Set(Ps);var Bf=["GET",...Ps];new Set(Bf);var M0=d.createContext(null);M0.displayName="DataRouter";var Y7=d.createContext(null);Y7.displayName="DataRouterState";d.createContext(!1);var Is=d.createContext({isTransitioning:!1});Is.displayName="ViewTransition";var jf=d.createContext(new Map);jf.displayName="Fetchers";var Nf=d.createContext(null);Nf.displayName="Await";var Z4=d.createContext(null);Z4.displayName="Navigation";var E8=d.createContext(null);E8.displayName="Location";var v3=d.createContext({outlet:null,matches:[],isDataRoute:!1});v3.displayName="Route";var Hc=d.createContext(null);Hc.displayName="RouteError";function Ff(t,{relative:a}={}){g2(T8(),"useHref() may be used only in the context of a component.");let{basename:l,navigator:o}=d.useContext(Z4),{hash:u,pathname:m,search:p}=q8(t,{relative:a}),v=m;return l!=="/"&&(v=m==="/"?l:f3([l,m])),o.createHref({pathname:v,search:p,hash:u})}function T8(){return d.useContext(E8)!=null}function p6(){return g2(T8(),"useLocation() may be used only in the context of a component."),d.useContext(E8).location}var Ys="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Ks(t){d.useContext(Z4).static||d.useLayoutEffect(t)}function kf(){let{isDataRoute:t}=d.useContext(v3);return t?If():Rf()}function Rf(){g2(T8(),"useNavigate() may be used only in the context of a component.");let t=d.useContext(M0),{basename:a,navigator:l}=d.useContext(Z4),{matches:o}=d.useContext(v3),{pathname:u}=p6(),m=JSON.stringify($s(o)),p=d.useRef(!1);return Ks(()=>{p.current=!0}),d.useCallback((g,x={})=>{if(R4(p.current,Ys),!p.current)return;if(typeof g=="number"){l.go(g);return}let z=Gs(g,JSON.parse(m),u,x.relative==="path");t==null&&a!=="/"&&(z.pathname=z.pathname==="/"?a:f3([a,z.pathname])),(x.replace?l.replace:l.push)(z,x.state,x)},[a,l,m,u,t])}d.createContext(null);function q8(t,{relative:a}={}){let{matches:l}=d.useContext(v3),{pathname:o}=p6(),u=JSON.stringify($s(l));return d.useMemo(()=>Gs(t,JSON.parse(u),o,a==="path"),[t,u,o,a])}function Ef(t,a){return Qs(t,a)}function Qs(t,a,l,o,u){g2(T8(),"useRoutes() may be used only in the context of a component.");let{navigator:m}=d.useContext(Z4),{matches:p}=d.useContext(v3),v=p[p.length-1],g=v?v.params:{},x=v?v.pathname:"/",z=v?v.pathnameBase:"/",b=v&&v.route;{let B=b&&b.path||"";Xs(x,!b||B.endsWith("*")||B.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${x}" (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 y=p6(),H;if(a){let B=typeof a=="string"?b0(a):a;g2(z==="/"||B.pathname?.startsWith(z),`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 "${z}" but pathname "${B.pathname}" was given in the \`location\` prop.`),H=B}else H=y;let V=H.pathname||"/",w=V;if(z!=="/"){let B=z.replace(/^\//,"").split("/");w="/"+V.replace(/^\//,"").split("/").slice(B.length).join("/")}let C=_s(t,{pathname:w});R4(b||C!=null,`No routes matched location "${H.pathname}${H.search}${H.hash}" `),R4(C==null||C[C.length-1].route.element!==void 0||C[C.length-1].route.Component!==void 0||C[C.length-1].route.lazy!==void 0,`Matched leaf route at location "${H.pathname}${H.search}${H.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 S=_f(C&&C.map(B=>Object.assign({},B,{params:Object.assign({},g,B.params),pathname:f3([z,m.encodeLocation?m.encodeLocation(B.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:B.pathname]),pathnameBase:B.pathnameBase==="/"?z:f3([z,m.encodeLocation?m.encodeLocation(B.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:B.pathnameBase])})),p,l,o,u);return a&&S?d.createElement(E8.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...H},navigationType:"POP"}},S):S}function Tf(){let t=Pf(),a=Lf(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),l=t instanceof Error?t.stack:null,o="rgba(200,200,200, 0.5)",u={padding:"0.5rem",backgroundColor:o},m={padding:"2px 4px",backgroundColor:o},p=null;return console.error("Error handled by React Router default ErrorBoundary:",t),p=d.createElement(d.Fragment,null,d.createElement("p",null,"💿 Hey developer 👋"),d.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",d.createElement("code",{style:m},"ErrorBoundary")," or"," ",d.createElement("code",{style:m},"errorElement")," prop on your route.")),d.createElement(d.Fragment,null,d.createElement("h2",null,"Unexpected Application Error!"),d.createElement("h3",{style:{fontStyle:"italic"}},a),l?d.createElement("pre",{style:u},l):null,p)}var qf=d.createElement(Tf,null),Df=class extends d.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,a){return a.location!==t.location||a.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:a.error,location:a.location,revalidation:t.revalidation||a.revalidation}}componentDidCatch(t,a){this.props.onError?this.props.onError(t,a):console.error("React Router caught the following error during render",t)}render(){return this.state.error!==void 0?d.createElement(v3.Provider,{value:this.props.routeContext},d.createElement(Hc.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function Of({routeContext:t,match:a,children:l}){let o=d.useContext(M0);return o&&o.static&&o.staticContext&&(a.route.errorElement||a.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=a.route.id),d.createElement(v3.Provider,{value:t},l)}function _f(t,a=[],l=null,o=null,u=null){if(t==null){if(!l)return null;if(l.errors)t=l.matches;else if(a.length===0&&!l.initialized&&l.matches.length>0)t=l.matches;else return null}let m=t,p=l?.errors;if(p!=null){let z=m.findIndex(b=>b.route.id&&p?.[b.route.id]!==void 0);g2(z>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(p).join(",")}`),m=m.slice(0,Math.min(m.length,z+1))}let v=!1,g=-1;if(l)for(let z=0;z=0?m=m.slice(0,g+1):m=[m[0]];break}}}let x=l&&o?(z,b)=>{o(z,{location:l.location,params:l.matches?.[0]?.params??{},errorInfo:b})}:void 0;return m.reduceRight((z,b,y)=>{let H,V=!1,w=null,C=null;l&&(H=p&&b.route.id?p[b.route.id]:void 0,w=b.route.errorElement||qf,v&&(g<0&&y===0?(Xs("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),V=!0,C=null):g===y&&(V=!0,C=b.route.hydrateFallbackElement||null)));let S=a.concat(m.slice(0,y+1)),B=()=>{let L;return H?L=w:V?L=C:b.route.Component?L=d.createElement(b.route.Component,null):b.route.element?L=b.route.element:L=z,d.createElement(Of,{match:b,routeContext:{outlet:z,matches:S,isDataRoute:l!=null},children:L})};return l&&(b.route.ErrorBoundary||b.route.errorElement||y===0)?d.createElement(Df,{location:l.location,revalidation:l.revalidation,component:w,error:H,children:B(),routeContext:{outlet:null,matches:S,isDataRoute:!0},onError:x}):B()},null)}function Sc(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Uf(t){let a=d.useContext(M0);return g2(a,Sc(t)),a}function Zf(t){let a=d.useContext(Y7);return g2(a,Sc(t)),a}function $f(t){let a=d.useContext(v3);return g2(a,Sc(t)),a}function Vc(t){let a=$f(t),l=a.matches[a.matches.length-1];return g2(l.route.id,`${t} can only be used on routes that contain a unique "id"`),l.route.id}function Gf(){return Vc("useRouteId")}function Pf(){let t=d.useContext(Hc),a=Zf("useRouteError"),l=Vc("useRouteError");return t!==void 0?t:a.errors?.[l]}function If(){let{router:t}=Uf("useNavigate"),a=Vc("useNavigate"),l=d.useRef(!1);return Ks(()=>{l.current=!0}),d.useCallback(async(u,m={})=>{R4(l.current,Ys),l.current&&(typeof u=="number"?t.navigate(u):await t.navigate(u,{fromRouteId:a,...m}))},[t,a])}var bi={};function Xs(t,a,l){!a&&!bi[t]&&(bi[t]=!0,R4(!1,l))}d.memo(Yf);function Yf({routes:t,future:a,state:l,unstable_onError:o}){return Qs(t,void 0,l,o,a)}function u0(t){g2(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function Kf({basename:t="/",children:a=null,location:l,navigationType:o="POP",navigator:u,static:m=!1}){g2(!T8(),"You cannot render a inside another . You should never have more than one in your app.");let p=t.replace(/^\/*/,"/"),v=d.useMemo(()=>({basename:p,navigator:u,static:m,future:{}}),[p,u,m]);typeof l=="string"&&(l=b0(l));let{pathname:g="/",search:x="",hash:z="",state:b=null,key:y="default"}=l,H=d.useMemo(()=>{let V=m3(g,p);return V==null?null:{location:{pathname:V,search:x,hash:z,state:b,key:y},navigationType:o}},[p,g,x,z,b,y,o]);return R4(H!=null,` is not able to match the URL "${g}${x}${z}" because it does not start with the basename, so the won't render anything.`),H==null?null:d.createElement(Z4.Provider,{value:v},d.createElement(E8.Provider,{children:a,value:H}))}function Qf({children:t,location:a}){return Ef(lc(t),a)}function lc(t,a=[]){let l=[];return d.Children.forEach(t,(o,u)=>{if(!d.isValidElement(o))return;let m=[...a,u];if(o.type===d.Fragment){l.push.apply(l,lc(o.props.children,m));return}g2(o.type===u0,`[${typeof o.type=="string"?o.type:o.type.name}] is not a component. All component children of must be a or `),g2(!o.props.index||!o.props.children,"An index route cannot have child routes.");let p={id:o.props.id||m.join("-"),caseSensitive:o.props.caseSensitive,element:o.props.element,Component:o.props.Component,index:o.props.index,path:o.props.path,middleware:o.props.middleware,loader:o.props.loader,action:o.props.action,hydrateFallbackElement:o.props.hydrateFallbackElement,HydrateFallback:o.props.HydrateFallback,errorElement:o.props.errorElement,ErrorBoundary:o.props.ErrorBoundary,hasErrorBoundary:o.props.hasErrorBoundary===!0||o.props.ErrorBoundary!=null||o.props.errorElement!=null,shouldRevalidate:o.props.shouldRevalidate,handle:o.props.handle,lazy:o.props.lazy};o.props.children&&(p.children=lc(o.props.children,m)),l.push(p)}),l}var g7="get",x7="application/x-www-form-urlencoded";function K7(t){return t!=null&&typeof t.tagName=="string"}function Xf(t){return K7(t)&&t.tagName.toLowerCase()==="button"}function Jf(t){return K7(t)&&t.tagName.toLowerCase()==="form"}function Wf(t){return K7(t)&&t.tagName.toLowerCase()==="input"}function tm(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function em(t,a){return t.button===0&&(!a||a==="_self")&&!tm(t)}var a7=null;function cm(){if(a7===null)try{new FormData(document.createElement("form"),0),a7=!1}catch{a7=!0}return a7}var am=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function V9(t){return t!=null&&!am.has(t)?(R4(!1,`"${t}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${x7}"`),null):t}function nm(t,a){let l,o,u,m,p;if(Jf(t)){let v=t.getAttribute("action");o=v?m3(v,a):null,l=t.getAttribute("method")||g7,u=V9(t.getAttribute("enctype"))||x7,m=new FormData(t)}else if(Xf(t)||Wf(t)&&(t.type==="submit"||t.type==="image")){let v=t.form;if(v==null)throw new Error('Cannot submit a + + + ); +} + +const MemoizedChatMessageList = memo(ChatMessageList); +const MemoizedChatComposer = memo(ChatComposer); + +export default function ChatPanel({ + hideInput = false, + hideSpectatorNotice = false, + fillHeight = false, + allowSpectatorInput = false, + title = 'Chat and speech', + minimal = false, +}) { + const effectiveHideInput = minimal || hideInput; + const effectiveTitle = minimal ? '' : title; return ( -
- {sorted.length === 0 && typingRows.length === 0 ? ( -

No messages yet.

- ) : ( - sorted.map((msg) => ) - )} - {typingRows.map((entry) => ( - - ))} -
+ {!effectiveHideInput && ( -
-
- -
- { - const next = e.target.value; - setDraft(next); - setTypingActive(Boolean(next.trim())); - }} - onFocus={(event) => { - onInputFocus(event); - setTypingActive(Boolean(draft.trim())); - }} - onBlur={(event) => { - onInputBlur(event); - setTypingActive(false); - }} - onKeyDown={(event) => { - if (event.key === 'Enter' && !draft.trim()) { - event.preventDefault(); - blurChat(); - setTypingActive(false); - } - }} - ref={(el) => registerInputRef(el, { target: 'panel' })} - placeholder={canChat ? 'Type a message…' : hideSpectatorNotice ? '' : 'Spectators cannot chat'} - disabled={!canChat} - /> - - {ttsSupported && ( -
- - - {engine === 'flite' || engine === 'chromegtts' ? ( - <> - - {engine === 'chromegtts' && ( - <> - - - - )} - - ) : ( - - )} -
- )} -
+ )}
); diff --git a/webui/src/components/HudOverlays/HudChatInput/index.jsx b/webui/src/components/HudOverlays/HudChatInput/index.jsx index 38a528fb..3251efdc 100644 --- a/webui/src/components/HudOverlays/HudChatInput/index.jsx +++ b/webui/src/components/HudOverlays/HudChatInput/index.jsx @@ -2,7 +2,7 @@ // Purpose: Defines the Hud Chat Input module and the local helpers/components used in this file. // Scope: Keeps behavior unchanged while isolating this concern into a clear, single-responsibility unit. import { memo, useMemo, useState } from 'react'; -import { useChat } from '../../../context/ChatContext.jsx'; +import { useChatActions } from '../../../context/ChatContext.jsx'; import { useSessionSelector } from '../../../context/SessionContext.jsx'; import { useSettingsNamespace } from '../../../settings/index.js'; @@ -26,7 +26,7 @@ function HudChatInput({ compact = false }) { const role = useSessionSelector((state) => state.session?.role || null); const currentRoverId = useSessionSelector((state) => state.session?.assignment?.roverId || null); const roverRoster = useSessionSelector((state) => state.session?.roster || []); - const { sendMessage, onInputFocus, onInputBlur, blurChat, registerInputRef, setTypingActive } = useChat(); + const { sendMessage, onInputFocus, onInputBlur, blurChat, registerInputRef, setTypingActive } = useChatActions(); const { value: ttsSettings } = useSettingsNamespace('tts', { engine: 'flite', voice: 'rms', diff --git a/webui/src/context/ChatContext.jsx b/webui/src/context/ChatContext.jsx index ce591172..39b9d7e1 100644 --- a/webui/src/context/ChatContext.jsx +++ b/webui/src/context/ChatContext.jsx @@ -9,9 +9,12 @@ import messageSound from '../assets/message.mp3'; import { useSettingsNamespace } from '../settings/index.js'; import { AUDIO_SETTINGS_DEFAULTS } from '../settings/namespaces.js'; -const ChatContext = createContext({ +const CHAT_TIMELINE_DEFAULT = { messages: [], typing: [], +}; + +const CHAT_ACTIONS_DEFAULT = { sendMessage: async () => {}, focusChat: () => {}, blurChat: () => {}, @@ -19,7 +22,31 @@ const ChatContext = createContext({ onInputFocus: () => {}, onInputBlur: () => {}, setTypingActive: () => {}, +}; + +const CHAT_FOCUS_DEFAULT = { isChatFocused: false, + selfSocketId: null, +}; + +// Chat messages and typing indicators are the highest-churn chat data. Keeping +// them in their own context lets transcript components update without forcing +// controlled composer inputs to re-render and re-commit unchanged attributes. +const ChatTimelineContext = createContext(CHAT_TIMELINE_DEFAULT); + +// Actions are intentionally separate from timeline state. Consumers such as the +// HUD composer only need stable command functions, so subscribing them to the +// message array would recreate the performance issue this provider is avoiding. +const ChatActionsContext = createContext(CHAT_ACTIONS_DEFAULT); + +// Focus state is used by keyboard input capture. It changes for input focus and +// blur events, but it should not be tied to incoming chat traffic either. +const ChatFocusContext = createContext(CHAT_FOCUS_DEFAULT); + +const ChatContext = createContext({ + ...CHAT_TIMELINE_DEFAULT, + ...CHAT_ACTIONS_DEFAULT, + ...CHAT_FOCUS_DEFAULT, }); export function ChatProvider({ children }) { @@ -91,7 +118,7 @@ export function ChatProvider({ children }) { return () => { socket.off('chat:message', handleMessage); }; - }, [playSound, session?.socketId, socket]); + }, [playSound, pushAlert, session?.socketId, socket]); useEffect(() => { function handleTyping(payload = {}) { @@ -221,9 +248,18 @@ export function ChatProvider({ children }) { const onInputFocus = useCallback(() => setIsChatFocused(true), []); const onInputBlur = useCallback(() => setIsChatFocused(false), []); - const value = useMemo( + // Each published value is memoized independently so React only wakes the + // consumers attached to the slice that actually changed. + const timelineValue = useMemo( () => ({ messages, + typing, + }), + [messages, typing], + ); + + const actionsValue = useMemo( + () => ({ sendMessage, focusChat, blurChat, @@ -231,14 +267,38 @@ export function ChatProvider({ children }) { onInputFocus, onInputBlur, setTypingActive, - typing, + }), + [blurChat, focusChat, onInputBlur, onInputFocus, registerInputRef, sendMessage, setTypingActive], + ); + + const focusValue = useMemo( + () => ({ isChatFocused, selfSocketId: session?.socketId || null, }), - [blurChat, focusChat, isChatFocused, messages, onInputBlur, onInputFocus, registerInputRef, sendMessage, session?.socketId, setTypingActive, typing], + [isChatFocused, session?.socketId], ); - return {children}; + const value = useMemo( + () => ({ + ...timelineValue, + ...actionsValue, + ...focusValue, + }), + [actionsValue, focusValue, timelineValue], + ); + + return ( + // Nesting the focused providers keeps the public provider API unchanged for + // callers while giving individual consumers smaller subscriptions. + + + + {children} + + + + ); } export function useChat() { @@ -248,3 +308,27 @@ export function useChat() { } return ctx; } + +export function useChatTimeline() { + const ctx = useContext(ChatTimelineContext); + if (!ctx) { + throw new Error('useChatTimeline must be used inside ChatProvider'); + } + return ctx; +} + +export function useChatActions() { + const ctx = useContext(ChatActionsContext); + if (!ctx) { + throw new Error('useChatActions must be used inside ChatProvider'); + } + return ctx; +} + +export function useChatFocus() { + const ctx = useContext(ChatFocusContext); + if (!ctx) { + throw new Error('useChatFocus must be used inside ChatProvider'); + } + return ctx; +} diff --git a/webui/src/controls/inputs/KeyboardInputManager.jsx b/webui/src/controls/inputs/KeyboardInputManager.jsx index a442c577..2678d5e7 100644 --- a/webui/src/controls/inputs/KeyboardInputManager.jsx +++ b/webui/src/controls/inputs/KeyboardInputManager.jsx @@ -2,7 +2,7 @@ // Purpose: Captures and translates keyboard events into normalized control intents. Scope: Owns keydown/keyup listeners and dispatch coordination for drive controls. import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react'; import { useControlActions, useControlSelector } from '../ControlContext.jsx'; -import { useChat } from '../../context/ChatContext.jsx'; +import { useChatActions, useChatFocus } from '../../context/ChatContext.jsx'; import { useSessionActions, useSessionSelector } from '../../context/SessionContext.jsx'; import { normalizeKeymapEntries, tokensForEvent } from '../keymapUtils.js'; import { isKeyboardCaptureLocked } from './keyboardCaptureLock.js'; @@ -105,7 +105,8 @@ export default function KeyboardInputManager() { const homeAssistant = useSessionSelector((state) => state.session?.homeAssistant || null); const dockAssist = useManualDockAssist(); const { homeAssistantSetState } = useSessionActions(); - const { focusChat, isChatFocused } = useChat(); + const { focusChat } = useChatActions(); + const { isChatFocused } = useChatFocus(); const { value: inputSettings } = useSettingsNamespace('inputs', INPUT_SETTINGS_DEFAULTS); const { save: saveVideoSettings } = useSettingsNamespace('video', VIDEO_SETTINGS_DEFAULTS); const keymap = useMemo(() => normalizeKeymapEntries(rawKeymap), [rawKeymap]);