From 5b2f14123ef9c0e55f16df98598a95d2e8f26fb8 Mon Sep 17 00:00:00 2001 From: baiyanyun Date: Wed, 10 Jun 2026 15:56:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=B8=E6=94=B6=E6=95=B0=E5=AD=97=E5=91=98?= =?UTF-8?q?=E5=B7=A5=E9=80=9A=E7=9F=A5=E8=AE=A2=E9=98=85=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../embedded/sgrobot-digital/src/index.css | 50 ++++- .../embedded/sgrobot-digital/src/lib/api.ts | 16 +- .../src/lib/qimingclawAdapter.ts | 99 +++++++++- .../pages/digital/DigitalEmployeeShell.tsx | 114 ++++++++++- .../embedded/sgrobot-digital/src/types/api.ts | 7 + .../sgrobot-digital/assets/index-Cel_CqfI.js | 179 ----------------- .../sgrobot-digital/assets/index-DDRkk0GO.js | 184 ++++++++++++++++++ .../sgrobot-digital/assets/index-DLC8VZMk.css | 1 - .../sgrobot-digital/assets/index-DqdYYbRq.css | 1 + .../public/sgrobot-digital/index.html | 4 +- .../scripts/check-digital-employee.js | 34 ++++ .../digitalEmployee/stateService.test.ts | 56 ++++++ .../services/digitalEmployee/stateService.ts | 41 ++++ ...ital-employee-frontend-integration-plan.md | 6 +- 14 files changed, 597 insertions(+), 195 deletions(-) delete mode 100644 qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-Cel_CqfI.js create mode 100644 qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-DDRkk0GO.js delete mode 100644 qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-DLC8VZMk.css create mode 100644 qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-DqdYYbRq.css diff --git a/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/index.css b/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/index.css index d3a8af0c..41dca196 100644 --- a/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/index.css +++ b/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/index.css @@ -639,7 +639,7 @@ width: min(380px, calc(100vw - 28px)); max-height: min(620px, calc(100vh - 88px)); display: grid; - grid-template-rows: auto minmax(0, 1fr); + grid-template-rows: auto auto minmax(0, 1fr); overflow: hidden; border-radius: 14px; background: rgba(252,254,255,0.98); @@ -654,10 +654,56 @@ padding: 14px; border-bottom: 1px solid rgba(61,132,184,0.12); } -.de-notification-head div { min-width: 0; display: grid; gap: 2px; } +.de-notification-head-title { min-width: 0; display: grid; gap: 2px; } .de-notification-head strong { color: #12344f; font-size: 15px; } .de-notification-head span { color: #6a8094; font-size: 12px; } +.de-notification-head-actions { display: inline-flex; align-items: center; gap: 6px; } .de-notification-close { width: 26px; height: 26px; color: #496a85; background: rgba(79,172,254,0.1); } +.de-notification-preferences { + display: grid; + gap: 10px; + padding: 10px 12px 12px; + border-bottom: 1px solid rgba(61,132,184,0.12); + background: rgba(247,251,255,0.86); +} +.de-notification-switch, +.de-notification-toggle-grid label { + display: inline-flex; + align-items: center; + gap: 7px; + color: #31526d; + font-size: 12px; + font-weight: 700; +} +.de-notification-switch input, +.de-notification-toggle-grid input { accent-color: #1684d8; } +.de-notification-preference-group { display: grid; gap: 7px; } +.de-notification-preference-group > span { color: #7890a7; font-size: 11px; font-weight: 800; } +.de-notification-segment-row, +.de-notification-toggle-grid { display: flex; flex-wrap: wrap; gap: 7px; } +.de-notification-segment-row button { + min-height: 26px; + border: 1px solid rgba(61,132,184,0.16); + border-radius: 999px; + padding: 0 10px; + color: #31526d; + background: #fff; + font-size: 12px; + font-weight: 700; + cursor: pointer; +} +.de-notification-segment-row button.active { + color: #fff; + border-color: rgba(49,82,109,0.12); + background: #31526d; +} +.de-notification-toggle-grid label { + min-height: 26px; + padding: 0 9px; + border-radius: 999px; + background: #fff; + border: 1px solid rgba(61,132,184,0.12); +} .de-notification-list { min-height: 0; overflow-y: auto; diff --git a/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/lib/api.ts b/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/lib/api.ts index 7e83ead0..0d92048b 100644 --- a/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/lib/api.ts +++ b/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/lib/api.ts @@ -12,6 +12,7 @@ import type { Session, ChannelDetail, BrowserSession, + NotificationPreferences, UserNotification, DebugStoreResponse, DebugPlan, @@ -542,7 +543,7 @@ export function getEventLog(params: { // Notifications // --------------------------------------------------------------------------- -export { type UserNotification }; +export { type NotificationPreferences, type UserNotification }; export function getNotifications( status: string = 'unread', @@ -558,6 +559,19 @@ export function getUnreadNotificationCount(): Promise { ); } +export function getNotificationPreferences(): Promise { + return apiFetch('/api/notifications/preferences'); +} + +export function patchNotificationPreferences( + patch: Partial, +): Promise { + return apiFetch('/api/notifications/preferences', { + method: 'PATCH', + body: JSON.stringify(patch), + }); +} + export function markNotificationRead(id: string): Promise { return apiFetch<{ ok: boolean }>(`/api/notifications/${encodeURIComponent(id)}/read`, { method: 'POST', diff --git a/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/lib/qimingclawAdapter.ts b/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/lib/qimingclawAdapter.ts index 9badb359..e8293545 100644 --- a/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/lib/qimingclawAdapter.ts +++ b/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/lib/qimingclawAdapter.ts @@ -31,6 +31,7 @@ import type { IngressRouteRequest, IngressRouteResponse, MemoryEntry, + NotificationPreferences, PlanDispatchResponse, PlanStepSummary, RouteDecisionRecord, @@ -85,6 +86,7 @@ interface AdapterState { reportGeneratedAtByDate: Record; decisionResultsByDate: Record>; notificationStateById?: Record; + notificationPreferences?: NotificationPreferences; consoleRole?: string; rolePreferences?: Record; profile: { @@ -103,6 +105,18 @@ interface NotificationState { replied_at?: string | null; } +const NOTIFICATION_LEVELS: UserNotification['level'][] = ['info', 'warn', 'error', 'action']; +const NOTIFICATION_KINDS: UserNotification['kind'][] = [ + 'user_message', + 'need_input', + 'need_approval', + 'task_progress', + 'task_failed', + 'task_finished', + 'confirmation_pending', + 'confirmation_resolved', +]; + interface QimingclawServiceStatus { running?: boolean; error?: string; @@ -836,6 +850,15 @@ export async function handleQimingclawDigitalApi( if (method === 'GET' && pathname === '/api/notifications') { return buildNotificationsResponse(url.searchParams.get('status'), await readQimingclawSnapshot()) as T; } + if (method === 'GET' && pathname === '/api/notifications/preferences') { + return notificationPreferences(notificationAdapterState(await readQimingclawSnapshot())) as T; + } + if (method === 'PATCH' && pathname === '/api/notifications/preferences') { + return await handleNotificationPreferencesPatch( + parseJsonBody>(options.body), + await readQimingclawSnapshot(), + ) as T; + } if (method === 'GET' && pathname === '/api/notifications/unread-count') { const snapshot = await readQimingclawSnapshot(); return { count: buildNotifications(snapshot, notificationAdapterState(snapshot)).filter((notification) => notification.status === 'unread').length } as T; @@ -922,6 +945,7 @@ function defaultState(): AdapterState { reportGeneratedAtByDate: {}, decisionResultsByDate: {}, notificationStateById: {}, + notificationPreferences: defaultNotificationPreferences(), consoleRole: 'sales', rolePreferences: {}, profile: { @@ -936,12 +960,20 @@ function defaultState(): AdapterState { function readState(): AdapterState { try { const raw = window.localStorage.getItem(STATE_KEY); - return raw ? { ...defaultState(), ...JSON.parse(raw) as Partial } : defaultState(); + return normalizeAdapterState(raw ? JSON.parse(raw) as Partial : {}); } catch { return defaultState(); } } +function normalizeAdapterState(value: Partial): AdapterState { + return { + ...defaultState(), + ...value, + notificationPreferences: notificationPreferences(value), + }; +} + function writeState(state: AdapterState): void { window.localStorage.setItem(STATE_KEY, JSON.stringify(state)); } @@ -3423,7 +3455,7 @@ function dedupeApprovalTimelineEvents(events: ApprovalTimelineResponse['events'] } function notificationAdapterState(snapshot: QimingclawSnapshot | null): AdapterState { - return snapshot?.uiState ?? readState(); + return snapshot?.uiState ? normalizeAdapterState(snapshot.uiState) : readState(); } function buildNotificationsResponse(status: string | null, snapshot: QimingclawSnapshot | null): { notifications: UserNotification[] } { @@ -3450,9 +3482,72 @@ function buildNotifications(snapshot: QimingclawSnapshot | null, state: AdapterS const overlays = state.notificationStateById ?? {}; return notifications .map((notification) => applyNotificationOverlay(notification, overlays[notification.notification_id])) + .filter((notification) => notificationMatchesPreferences(notification, state.notificationPreferences)) .sort((left, right) => right.created_at.localeCompare(left.created_at) || right.notification_id.localeCompare(left.notification_id)); } +function defaultNotificationPreferences(): NotificationPreferences { + return { + enabled: true, + muted_kinds: [], + muted_levels: [], + updated_at: null, + }; +} + +function notificationPreferences(state: Partial | null | undefined): NotificationPreferences { + const stored = state?.notificationPreferences; + const fallback = defaultNotificationPreferences(); + if (!stored || typeof stored !== 'object') return fallback; + const mutedKinds = Array.isArray(stored.muted_kinds) + ? stored.muted_kinds.filter((kind): kind is UserNotification['kind'] => NOTIFICATION_KINDS.includes(kind as UserNotification['kind'])) + : []; + const mutedLevels = Array.isArray(stored.muted_levels) + ? stored.muted_levels.filter((level): level is UserNotification['level'] => NOTIFICATION_LEVELS.includes(level as UserNotification['level'])) + : []; + return { + enabled: stored.enabled !== false, + muted_kinds: [...new Set(mutedKinds)], + muted_levels: [...new Set(mutedLevels)], + updated_at: typeof stored.updated_at === 'string' ? stored.updated_at : fallback.updated_at, + }; +} + +function notificationMatchesPreferences( + notification: UserNotification, + preferences: NotificationPreferences | undefined, +): boolean { + const normalized = notificationPreferences({ notificationPreferences: preferences }); + if (!normalized.enabled) return false; + if (normalized.muted_levels.includes(notification.level)) return false; + return !normalized.muted_kinds.includes(notification.kind); +} + +async function handleNotificationPreferencesPatch( + patch: Partial, + snapshot: QimingclawSnapshot | null, +): Promise { + const state = snapshot?.uiState ?? await readBridgeUiState() ?? readState(); + const current = notificationPreferences(state); + const next = notificationPreferences({ + notificationPreferences: { + ...current, + ...patch, + updated_at: new Date().toISOString(), + }, + }); + await saveState( + { + ...normalizeAdapterState(state), + notificationPreferences: next, + }, + 'update_notification_preferences', + undefined, + { notification_preferences: next }, + ); + return next; +} + function approvalNotifications(snapshot: QimingclawSnapshot | null): UserNotification[] { const summaries = new Map(businessApprovalRows(snapshot).map((approval) => [stringValue(approval.approval_id), approval])); return buildApprovals(snapshot) diff --git a/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/pages/digital/DigitalEmployeeShell.tsx b/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/pages/digital/DigitalEmployeeShell.tsx index efab4b26..ee24b4fb 100644 --- a/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/pages/digital/DigitalEmployeeShell.tsx +++ b/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/pages/digital/DigitalEmployeeShell.tsx @@ -1,13 +1,16 @@ import { useCallback, useEffect, useState } from 'react'; -import { Bell, Check, Mail, MessageSquare, X } from 'lucide-react'; +import { Bell, Check, Mail, MessageSquare, Settings2, X } from 'lucide-react'; import { useLocation, useNavigate } from 'react-router-dom'; import { RoleProvider } from '@/contexts/RoleContext'; import { dismissNotification, + getNotificationPreferences, getNotifications, getUnreadNotificationCount, markNotificationRead, + patchNotificationPreferences, replyToNotification, + type NotificationPreferences, type UserNotification, } from '@/lib/api'; import CommandDeck from './CommandDeck'; @@ -26,6 +29,28 @@ const TABS: { id: DigitalTab; label: string }[] = [ ]; const DIGITAL_EMPLOYEE_CLOSE_MESSAGE = 'qimingclaw:digital-close'; +const NOTIFICATION_LEVEL_OPTIONS: Array<{ id: UserNotification['level']; label: string }> = [ + { id: 'info', label: '消息' }, + { id: 'warn', label: '提醒' }, + { id: 'error', label: '异常' }, + { id: 'action', label: '待处理' }, +]; + +const NOTIFICATION_KIND_OPTIONS: Array<{ id: UserNotification['kind']; label: string }> = [ + { id: 'task_finished', label: '任务完成' }, + { id: 'task_failed', label: '任务异常' }, + { id: 'need_approval', label: '审批' }, + { id: 'need_input', label: '输入' }, + { id: 'task_progress', label: '进度' }, +]; + +const DEFAULT_NOTIFICATION_PREFERENCES: NotificationPreferences = { + enabled: true, + muted_kinds: [], + muted_levels: [], + updated_at: null, +}; + function isDigitalTab(value: string | null): value is DigitalTab { return Boolean(value && TABS.some(tab => tab.id === value)); } @@ -104,6 +129,8 @@ export default function DigitalEmployeeShell() { const [notifications, setNotifications] = useState([]); const [unreadCount, setUnreadCount] = useState(0); const [notificationsLoading, setNotificationsLoading] = useState(false); + const [notificationSettingsOpen, setNotificationSettingsOpen] = useState(false); + const [notificationPreferences, setNotificationPreferences] = useState(DEFAULT_NOTIFICATION_PREFERENCES); const [replyDraftById, setReplyDraftById] = useState>({}); const refreshNotifications = useCallback(async () => { @@ -115,9 +142,13 @@ export default function DigitalEmployeeShell() { ]); setNotifications(items); setUnreadCount(count); + void getNotificationPreferences() + .then(setNotificationPreferences) + .catch(() => setNotificationPreferences(DEFAULT_NOTIFICATION_PREFERENCES)); } catch { setNotifications([]); setUnreadCount(0); + setNotificationPreferences(DEFAULT_NOTIFICATION_PREFERENCES); } finally { setNotificationsLoading(false); } @@ -164,6 +195,26 @@ export default function DigitalEmployeeShell() { await refreshNotifications(); }, [refreshNotifications, replyDraftById]); + const updateNotificationPreferences = useCallback(async (patch: Partial) => { + const next = await patchNotificationPreferences(patch); + setNotificationPreferences(next); + await refreshNotifications(); + }, [refreshNotifications]); + + const toggleMutedLevel = useCallback((level: UserNotification['level']) => { + const muted = new Set(notificationPreferences.muted_levels); + if (muted.has(level)) muted.delete(level); + else muted.add(level); + void updateNotificationPreferences({ muted_levels: Array.from(muted) }); + }, [notificationPreferences.muted_levels, updateNotificationPreferences]); + + const toggleMutedKind = useCallback((kind: UserNotification['kind']) => { + const muted = new Set(notificationPreferences.muted_kinds); + if (muted.has(kind)) muted.delete(kind); + else muted.add(kind); + void updateNotificationPreferences({ muted_kinds: Array.from(muted) }); + }, [notificationPreferences.muted_kinds, updateNotificationPreferences]); + return (
@@ -206,14 +257,67 @@ export default function DigitalEmployeeShell() { {notificationsOpen && (
-
+
通知 {unreadCount > 0 ? `${unreadCount} 条未读` : '暂无未读'}
- +
+ + +
+ {notificationSettingsOpen && ( +
+ +
+ 静音等级 +
+ {NOTIFICATION_LEVEL_OPTIONS.map((option) => ( + + ))} +
+
+
+ 静音类型 +
+ {NOTIFICATION_KIND_OPTIONS.map((option) => ( + + ))} +
+
+
+ )}
{notificationsLoading &&
加载中
} {!notificationsLoading && notifications.length === 0 &&
暂无通知
} diff --git a/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/types/api.ts b/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/types/api.ts index 7846b356..1c3da72d 100644 --- a/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/types/api.ts +++ b/qimingclaw/crates/agent-electron-client/embedded/sgrobot-digital/src/types/api.ts @@ -180,6 +180,13 @@ export interface UserNotification { replied_at?: string | null; } +export interface NotificationPreferences { + enabled: boolean; + muted_kinds: UserNotification['kind'][]; + muted_levels: UserNotification['level'][]; + updated_at: string | null; +} + export type ChatRouteMode = 'auto' | 'chat' | 'direct' | 'plan'; export interface WsMessage { diff --git a/qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-Cel_CqfI.js b/qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-Cel_CqfI.js deleted file mode 100644 index d0699658..00000000 --- a/qimingclaw/crates/agent-electron-client/public/sgrobot-digital/assets/index-Cel_CqfI.js +++ /dev/null @@ -1,179 +0,0 @@ -(function(){const l=document.createElement("link").relList;if(l&&l.supports&&l.supports("modulepreload"))return;for(const u of document.querySelectorAll('link[rel="modulepreload"]'))r(u);new MutationObserver(u=>{for(const f of u)if(f.type==="childList")for(const m of f.addedNodes)m.tagName==="LINK"&&m.rel==="modulepreload"&&r(m)}).observe(document,{childList:!0,subtree:!0});function s(u){const f={};return u.integrity&&(f.integrity=u.integrity),u.referrerPolicy&&(f.referrerPolicy=u.referrerPolicy),u.crossOrigin==="use-credentials"?f.credentials="include":u.crossOrigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function r(u){if(u.ep)return;u.ep=!0;const f=s(u);fetch(u.href,f)}})();function $b(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var bd={exports:{}},Zs={};/** - * @license React - * react-jsx-runtime.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var u_;function Mb(){if(u_)return Zs;u_=1;var n=Symbol.for("react.transitional.element"),l=Symbol.for("react.fragment");function s(r,u,f){var m=null;if(f!==void 0&&(m=""+f),u.key!==void 0&&(m=""+u.key),"key"in u){f={};for(var y in u)y!=="key"&&(f[y]=u[y])}else f=u;return u=f.ref,{$$typeof:n,type:r,key:m,ref:u!==void 0?u:null,props:f}}return Zs.Fragment=l,Zs.jsx=s,Zs.jsxs=s,Zs}var d_;function zb(){return d_||(d_=1,bd.exports=Mb()),bd.exports}var c=zb(),Sd={exports:{}},be={};/** - * @license React - * react.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var f_;function Ob(){if(f_)return be;f_=1;var n=Symbol.for("react.transitional.element"),l=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),u=Symbol.for("react.profiler"),f=Symbol.for("react.consumer"),m=Symbol.for("react.context"),y=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),g=Symbol.for("react.memo"),S=Symbol.for("react.lazy"),x=Symbol.for("react.activity"),j=Symbol.iterator;function R(E){return E===null||typeof E!="object"?null:(E=j&&E[j]||E["@@iterator"],typeof E=="function"?E:null)}var A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},D=Object.assign,T={};function M(E,Y,P){this.props=E,this.context=Y,this.refs=T,this.updater=P||A}M.prototype.isReactComponent={},M.prototype.setState=function(E,Y){if(typeof E!="object"&&typeof E!="function"&&E!=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,E,Y,"setState")},M.prototype.forceUpdate=function(E){this.updater.enqueueForceUpdate(this,E,"forceUpdate")};function J(){}J.prototype=M.prototype;function O(E,Y,P){this.props=E,this.context=Y,this.refs=T,this.updater=P||A}var ee=O.prototype=new J;ee.constructor=O,D(ee,M.prototype),ee.isPureReactComponent=!0;var ie=Array.isArray;function pe(){}var F={H:null,A:null,T:null,S:null},W=Object.prototype.hasOwnProperty;function V(E,Y,P){var te=P.ref;return{$$typeof:n,type:E,key:Y,ref:te!==void 0?te:null,props:P}}function _e(E,Y){return V(E.type,Y,E.props)}function we(E){return typeof E=="object"&&E!==null&&E.$$typeof===n}function Ke(E){var Y={"=":"=0",":":"=2"};return"$"+E.replace(/[=:]/g,function(P){return Y[P]})}var Z=/\/+/g;function oe(E,Y){return typeof E=="object"&&E!==null&&E.key!=null?Ke(""+E.key):Y.toString(36)}function H(E){switch(E.status){case"fulfilled":return E.value;case"rejected":throw E.reason;default:switch(typeof E.status=="string"?E.then(pe,pe):(E.status="pending",E.then(function(Y){E.status==="pending"&&(E.status="fulfilled",E.value=Y)},function(Y){E.status==="pending"&&(E.status="rejected",E.reason=Y)})),E.status){case"fulfilled":return E.value;case"rejected":throw E.reason}}throw E}function $(E,Y,P,te,ue){var ye=typeof E;(ye==="undefined"||ye==="boolean")&&(E=null);var X=!1;if(E===null)X=!0;else switch(ye){case"bigint":case"string":case"number":X=!0;break;case"object":switch(E.$$typeof){case n:case l:X=!0;break;case S:return X=E._init,$(X(E._payload),Y,P,te,ue)}}if(X)return ue=ue(E),X=te===""?"."+oe(E,0):te,ie(ue)?(P="",X!=null&&(P=X.replace(Z,"$&/")+"/"),$(ue,Y,P,"",function(qe){return qe})):ue!=null&&(we(ue)&&(ue=_e(ue,P+(ue.key==null||E&&E.key===ue.key?"":(""+ue.key).replace(Z,"$&/")+"/")+X)),Y.push(ue)),1;X=0;var se=te===""?".":te+":";if(ie(E))for(var Oe=0;Oe>>1,Ae=$[me];if(0>>1;meu(P,ae))teu(ue,P)?($[me]=ue,$[te]=ae,me=te):($[me]=P,$[Y]=ae,me=Y);else if(teu(ue,ae))$[me]=ue,$[te]=ae,me=te;else break e}}return K}function u($,K){var ae=$.sortIndex-K.sortIndex;return ae!==0?ae:$.id-K.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var f=performance;n.unstable_now=function(){return f.now()}}else{var m=Date,y=m.now();n.unstable_now=function(){return m.now()-y}}var p=[],g=[],S=1,x=null,j=3,R=!1,A=!1,D=!1,T=!1,M=typeof setTimeout=="function"?setTimeout:null,J=typeof clearTimeout=="function"?clearTimeout:null,O=typeof setImmediate<"u"?setImmediate:null;function ee($){for(var K=s(g);K!==null;){if(K.callback===null)r(g);else if(K.startTime<=$)r(g),K.sortIndex=K.expirationTime,l(p,K);else break;K=s(g)}}function ie($){if(D=!1,ee($),!A)if(s(p)!==null)A=!0,pe||(pe=!0,Ke());else{var K=s(g);K!==null&&H(ie,K.startTime-$)}}var pe=!1,F=-1,W=5,V=-1;function _e(){return T?!0:!(n.unstable_now()-V$&&_e());){var me=x.callback;if(typeof me=="function"){x.callback=null,j=x.priorityLevel;var Ae=me(x.expirationTime<=$);if($=n.unstable_now(),typeof Ae=="function"){x.callback=Ae,ee($),K=!0;break t}x===s(p)&&r(p),ee($)}else r(p);x=s(p)}if(x!==null)K=!0;else{var E=s(g);E!==null&&H(ie,E.startTime-$),K=!1}}break e}finally{x=null,j=ae,R=!1}K=void 0}}finally{K?Ke():pe=!1}}}var Ke;if(typeof O=="function")Ke=function(){O(we)};else if(typeof MessageChannel<"u"){var Z=new MessageChannel,oe=Z.port2;Z.port1.onmessage=we,Ke=function(){oe.postMessage(null)}}else Ke=function(){M(we,0)};function H($,K){F=M(function(){$(n.unstable_now())},K)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function($){$.callback=null},n.unstable_forceFrameRate=function($){0>$||125<$?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):W=0<$?Math.floor(1e3/$):5},n.unstable_getCurrentPriorityLevel=function(){return j},n.unstable_next=function($){switch(j){case 1:case 2:case 3:var K=3;break;default:K=j}var ae=j;j=K;try{return $()}finally{j=ae}},n.unstable_requestPaint=function(){T=!0},n.unstable_runWithPriority=function($,K){switch($){case 1:case 2:case 3:case 4:case 5:break;default:$=3}var ae=j;j=$;try{return K()}finally{j=ae}},n.unstable_scheduleCallback=function($,K,ae){var me=n.unstable_now();switch(typeof ae=="object"&&ae!==null?(ae=ae.delay,ae=typeof ae=="number"&&0me?($.sortIndex=ae,l(g,$),s(p)===null&&$===s(g)&&(D?(J(F),F=-1):D=!0,H(ie,ae-me))):($.sortIndex=Ae,l(p,$),A||R||(A=!0,pe||(pe=!0,Ke()))),$},n.unstable_shouldYield=_e,n.unstable_wrapCallback=function($){var K=j;return function(){var ae=j;j=K;try{return $.apply(this,arguments)}finally{j=ae}}}})(jd)),jd}var p_;function Ub(){return p_||(p_=1,kd.exports=Lb()),kd.exports}var wd={exports:{}},Ot={};/** - * @license React - * react-dom.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var __;function Bb(){if(__)return Ot;__=1;var n=rf();function l(p){var g="https://react.dev/errors/"+p;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(l){console.error(l)}}return n(),wd.exports=Bb(),wd.exports}/** - * @license React - * react-dom-client.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var y_;function Gb(){if(y_)return Js;y_=1;var n=Ub(),l=rf(),s=Hb();function r(e){var t="https://react.dev/errors/"+e;if(1Ae||(e.current=me[Ae],me[Ae]=null,Ae--)}function P(e,t){Ae++,me[Ae]=e.current,e.current=t}var te=E(null),ue=E(null),ye=E(null),X=E(null);function se(e,t){switch(P(ye,t),P(ue,e),P(te,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?$p(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=$p(t),e=Mp(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}Y(te),P(te,e)}function Oe(){Y(te),Y(ue),Y(ye)}function qe(e){e.memoizedState!==null&&P(X,e);var t=te.current,a=Mp(t,e.type);t!==a&&(P(ue,e),P(te,a))}function Rt(e){ue.current===e&&(Y(te),Y(ue)),X.current===e&&(Y(X),Ks._currentValue=ae)}var $t,Le;function Me(e){if($t===void 0)try{throw Error()}catch(a){var t=a.stack.trim().match(/\n( *(at )?)/);$t=t&&t[1]||"",Le=-1)":-1o||w[i]!==q[o]){var B=` -`+w[i].replace(" at new "," at ");return e.displayName&&B.includes("")&&(B=B.replace("",e.displayName)),B}while(1<=i&&0<=o);break}}}finally{Fe=!1,Error.prepareStackTrace=a}return(a=e?e.displayName||e.name:"")?Me(a):""}function Un(e,t){switch(e.tag){case 26:case 27:case 5:return Me(e.type);case 16:return Me("Lazy");case 13:return e.child!==t&&t!==null?Me("Suspense Fallback"):Me("Suspense");case 19:return Me("SuspenseList");case 0:case 15:return en(e.type,!1);case 11:return en(e.type.render,!1);case 1:return en(e.type,!0);case 31:return Me("Activity");default:return""}}function Zi(e){try{var t="",a=null;do t+=Un(e,a),a=e,e=e.return;while(e);return t}catch(i){return` -Error generating stack: `+i.message+` -`+i.stack}}var Ji=Object.prototype.hasOwnProperty,gl=n.unstable_scheduleCallback,Fi=n.unstable_cancelCallback,po=n.unstable_shouldYield,Lt=n.unstable_requestPaint,Mt=n.unstable_now,xe=n.unstable_getCurrentPriorityLevel,Na=n.unstable_ImmediatePriority,Ut=n.unstable_UserBlockingPriority,zt=n.unstable_NormalPriority,Jl=n.unstable_LowPriority,fn=n.unstable_IdlePriority,Bt=n.log,Fl=n.unstable_setDisableYieldValue,tn=null,vt=null;function mn(e){if(typeof Bt=="function"&&Fl(e),vt&&typeof vt.setStrictMode=="function")try{vt.setStrictMode(tn,e)}catch{}}var We=Math.clz32?Math.clz32:Ta,_o=Math.log,_r=Math.LN2;function Ta(e){return e>>>=0,e===0?32:31-(_o(e)/_r|0)|0}var Wl=256,Da=262144,Pl=4194304;function Pn(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072: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 ei(e,t,a){var i=e.pendingLanes;if(i===0)return 0;var o=0,d=e.suspendedLanes,_=e.pingedLanes;e=e.warmLanes;var b=i&134217727;return b!==0?(i=b&~d,i!==0?o=Pn(i):(_&=b,_!==0?o=Pn(_):a||(a=b&~e,a!==0&&(o=Pn(a))))):(b=i&~d,b!==0?o=Pn(b):_!==0?o=Pn(_):a||(a=i&~e,a!==0&&(o=Pn(a)))),o===0?0:t!==0&&t!==o&&(t&d)===0&&(d=o&-o,a=t&-t,d>=a||d===32&&(a&4194048)!==0)?t:o}function yl(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function An(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ie(){var e=Pl;return Pl<<=1,(Pl&62914560)===0&&(Pl=4194304),e}function Ee(e){for(var t=[],a=0;31>a;a++)t.push(e);return t}function ea(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Of(e,t,a,i,o,d){var _=e.pendingLanes;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=a,e.entangledLanes&=a,e.errorRecoveryDisabledLanes&=a,e.shellSuspendCounter=0;var b=e.entanglements,w=e.expirationTimes,q=e.hiddenUpdates;for(a=_&~a;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var So=/[\n"\\]/g;function It(e){return e.replace(So,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function ls(e,t,a,i,o,d,_,b){e.name="",_!=null&&typeof _!="function"&&typeof _!="symbol"&&typeof _!="boolean"?e.type=_:e.removeAttribute("type"),t!=null?_==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+Kt(t)):e.value!==""+Kt(t)&&(e.value=""+Kt(t)):_!=="submit"&&_!=="reset"||e.removeAttribute("value"),t!=null?is(e,_,Kt(t)):a!=null?is(e,_,Kt(a)):i!=null&&e.removeAttribute("value"),o==null&&d!=null&&(e.defaultChecked=!!d),o!=null&&(e.checked=o&&typeof o!="function"&&typeof o!="symbol"),b!=null&&typeof b!="function"&&typeof b!="symbol"&&typeof b!="boolean"?e.name=""+Kt(b):e.removeAttribute("name")}function yr(e,t,a,i,o,d,_,b){if(d!=null&&typeof d!="function"&&typeof d!="symbol"&&typeof d!="boolean"&&(e.type=d),t!=null||a!=null){if(!(d!=="submit"&&d!=="reset"||t!=null)){li(e);return}a=a!=null?""+Kt(a):"",t=t!=null?""+Kt(t):a,b||t===e.value||(e.value=t),e.defaultValue=t}i=i??o,i=typeof i!="function"&&typeof i!="symbol"&&!!i,e.checked=b?e.checked:!!i,e.defaultChecked=!!i,_!=null&&typeof _!="function"&&typeof _!="symbol"&&typeof _!="boolean"&&(e.name=_),li(e)}function is(e,t,a){t==="number"&&Yn(e.ownerDocument)===e||e.defaultValue===""+a||(e.defaultValue=""+a)}function Oa(e,t,a,i){if(e=e.options,t){t={};for(var o=0;o"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),us=!1;if(pn)try{var sa={};Object.defineProperty(sa,"passive",{get:function(){us=!0}}),window.addEventListener("test",sa,sa),window.removeEventListener("test",sa,sa)}catch{us=!1}var Dn=null,Kn=null,ii=null;function xr(){if(ii)return ii;var e,t=Kn,a=t.length,i,o="value"in Dn?Dn.value:Dn.textContent,d=o.length;for(e=0;e=fs),Bf=" ",Hf=!1;function Gf(e,t){switch(e){case"keyup":return tv.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Yf(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var ci=!1;function av(e,t){switch(e){case"compositionend":return Yf(t);case"keypress":return t.which!==32?null:(Hf=!0,Bf);case"textInput":return e=t.data,e===Bf&&Hf?null:e;default:return null}}function lv(e,t){if(ci)return e==="compositionend"||!Ao&&Gf(e,t)?(e=xr(),ii=Kn=Dn=null,ci=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:a,offset:t-e};e=i}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Ff(a)}}function Pf(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Pf(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function em(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Yn(e.document);t instanceof e.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)e=t.contentWindow;else break;t=Yn(e.document)}return t}function No(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var fv=pn&&"documentMode"in document&&11>=document.documentMode,oi=null,To=null,_s=null,Do=!1;function tm(e,t,a){var i=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;Do||oi==null||oi!==Yn(i)||(i=oi,"selectionStart"in i&&No(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),_s&&ps(_s,i)||(_s=i,i=mc(To,"onSelect"),0>=_,o-=_,Xn=1<<32-We(t)+o|a<je?(De=re,re=null):De=re.sibling;var Be=L(N,re,z[je],G);if(Be===null){re===null&&(re=De);break}e&&re&&Be.alternate===null&&t(N,re),C=d(Be,C,je),Ue===null?de=Be:Ue.sibling=Be,Ue=Be,re=De}if(je===z.length)return a(N,re),Re&&ca(N,je),de;if(re===null){for(;jeje?(De=re,re=null):De=re.sibling;var sl=L(N,re,Be.value,G);if(sl===null){re===null&&(re=De);break}e&&re&&sl.alternate===null&&t(N,re),C=d(sl,C,je),Ue===null?de=sl:Ue.sibling=sl,Ue=sl,re=De}if(Be.done)return a(N,re),Re&&ca(N,je),de;if(re===null){for(;!Be.done;je++,Be=z.next())Be=Q(N,Be.value,G),Be!==null&&(C=d(Be,C,je),Ue===null?de=Be:Ue.sibling=Be,Ue=Be);return Re&&ca(N,je),de}for(re=i(re);!Be.done;je++,Be=z.next())Be=U(re,N,je,Be.value,G),Be!==null&&(e&&Be.alternate!==null&&re.delete(Be.key===null?je:Be.key),C=d(Be,C,je),Ue===null?de=Be:Ue.sibling=Be,Ue=Be);return e&&re.forEach(function(Rb){return t(N,Rb)}),Re&&ca(N,je),de}function Je(N,C,z,G){if(typeof z=="object"&&z!==null&&z.type===D&&z.key===null&&(z=z.props.children),typeof z=="object"&&z!==null){switch(z.$$typeof){case R:e:{for(var de=z.key;C!==null;){if(C.key===de){if(de=z.type,de===D){if(C.tag===7){a(N,C.sibling),G=o(C,z.props.children),G.return=N,N=G;break e}}else if(C.elementType===de||typeof de=="object"&&de!==null&&de.$$typeof===W&&zl(de)===C.type){a(N,C.sibling),G=o(C,z.props),xs(G,z),G.return=N,N=G;break e}a(N,C);break}else t(N,C);C=C.sibling}z.type===D?(G=Tl(z.props.children,N.mode,G,z.key),G.return=N,N=G):(G=Tr(z.type,z.key,z.props,null,N.mode,G),xs(G,z),G.return=N,N=G)}return _(N);case A:e:{for(de=z.key;C!==null;){if(C.key===de)if(C.tag===4&&C.stateNode.containerInfo===z.containerInfo&&C.stateNode.implementation===z.implementation){a(N,C.sibling),G=o(C,z.children||[]),G.return=N,N=G;break e}else{a(N,C);break}else t(N,C);C=C.sibling}G=Lo(z,N.mode,G),G.return=N,N=G}return _(N);case W:return z=zl(z),Je(N,C,z,G)}if(H(z))return le(N,C,z,G);if(Ke(z)){if(de=Ke(z),typeof de!="function")throw Error(r(150));return z=de.call(z),he(N,C,z,G)}if(typeof z.then=="function")return Je(N,C,qr(z),G);if(z.$$typeof===O)return Je(N,C,$r(N,z),G);Lr(N,z)}return typeof z=="string"&&z!==""||typeof z=="number"||typeof z=="bigint"?(z=""+z,C!==null&&C.tag===6?(a(N,C.sibling),G=o(C,z),G.return=N,N=G):(a(N,C),G=qo(z,N.mode,G),G.return=N,N=G),_(N)):a(N,C)}return function(N,C,z,G){try{Ss=0;var de=Je(N,C,z,G);return bi=null,de}catch(re){if(re===vi||re===zr)throw re;var Ue=an(29,re,null,N.mode);return Ue.lanes=G,Ue.return=N,Ue}finally{}}}var ql=jm(!0),wm=jm(!1),Ya=!1;function Jo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Fo(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Qa(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Ka(e,t,a){var i=e.updateQueue;if(i===null)return null;if(i=i.shared,(Ge&2)!==0){var o=i.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),i.pending=t,t=Nr(e),cm(e,null,a),t}return Cr(e,i,t,a),Nr(e)}function ks(e,t,a){if(t=t.updateQueue,t!==null&&(t=t.shared,(a&4194048)!==0)){var i=t.lanes;i&=e.pendingLanes,a|=i,t.lanes=a,go(e,a)}}function Wo(e,t){var a=e.updateQueue,i=e.alternate;if(i!==null&&(i=i.updateQueue,a===i)){var o=null,d=null;if(a=a.firstBaseUpdate,a!==null){do{var _={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};d===null?o=d=_:d=d.next=_,a=a.next}while(a!==null);d===null?o=d=t:d=d.next=t}else o=d=t;a={baseState:i.baseState,firstBaseUpdate:o,lastBaseUpdate:d,shared:i.shared,callbacks:i.callbacks},e.updateQueue=a;return}e=a.lastBaseUpdate,e===null?a.firstBaseUpdate=t:e.next=t,a.lastBaseUpdate=t}var Po=!1;function js(){if(Po){var e=yi;if(e!==null)throw e}}function ws(e,t,a,i){Po=!1;var o=e.updateQueue;Ya=!1;var d=o.firstBaseUpdate,_=o.lastBaseUpdate,b=o.shared.pending;if(b!==null){o.shared.pending=null;var w=b,q=w.next;w.next=null,_===null?d=q:_.next=q,_=w;var B=e.alternate;B!==null&&(B=B.updateQueue,b=B.lastBaseUpdate,b!==_&&(b===null?B.firstBaseUpdate=q:b.next=q,B.lastBaseUpdate=w))}if(d!==null){var Q=o.baseState;_=0,B=q=w=null,b=d;do{var L=b.lane&-536870913,U=L!==b.lane;if(U?(Te&L)===L:(i&L)===L){L!==0&&L===gi&&(Po=!0),B!==null&&(B=B.next={lane:0,tag:b.tag,payload:b.payload,callback:null,next:null});e:{var le=e,he=b;L=t;var Je=a;switch(he.tag){case 1:if(le=he.payload,typeof le=="function"){Q=le.call(Je,Q,L);break e}Q=le;break e;case 3:le.flags=le.flags&-65537|128;case 0:if(le=he.payload,L=typeof le=="function"?le.call(Je,Q,L):le,L==null)break e;Q=x({},Q,L);break e;case 2:Ya=!0}}L=b.callback,L!==null&&(e.flags|=64,U&&(e.flags|=8192),U=o.callbacks,U===null?o.callbacks=[L]:U.push(L))}else U={lane:L,tag:b.tag,payload:b.payload,callback:b.callback,next:null},B===null?(q=B=U,w=Q):B=B.next=U,_|=L;if(b=b.next,b===null){if(b=o.shared.pending,b===null)break;U=b,b=U.next,U.next=null,o.lastBaseUpdate=U,o.shared.pending=null}}while(!0);B===null&&(w=Q),o.baseState=w,o.firstBaseUpdate=q,o.lastBaseUpdate=B,d===null&&(o.shared.lanes=0),Ja|=_,e.lanes=_,e.memoizedState=Q}}function Am(e,t){if(typeof e!="function")throw Error(r(191,e));e.call(t)}function Em(e,t){var a=e.callbacks;if(a!==null)for(e.callbacks=null,e=0;ed?d:8;var _=$.T,b={};$.T=b,yu(e,!1,t,a);try{var w=o(),q=$.S;if(q!==null&&q(b,w),w!==null&&typeof w=="object"&&typeof w.then=="function"){var B=Sv(w,i);Cs(e,t,B,on(e))}else Cs(e,t,i,on(e))}catch(Q){Cs(e,t,{then:function(){},status:"rejected",reason:Q},on())}finally{K.p=d,_!==null&&b.types!==null&&(_.types=b.types),$.T=_}}function Ev(){}function _u(e,t,a,i){if(e.tag!==5)throw Error(r(476));var o=ih(e).queue;lh(e,o,t,ae,a===null?Ev:function(){return sh(e),a(i)})}function ih(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ae,baseState:ae,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:fa,lastRenderedState:ae},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:fa,lastRenderedState:a},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function sh(e){var t=ih(e);t.next===null&&(t=e.alternate.memoizedState),Cs(e,t.next.queue,{},on())}function gu(){return Ct(Ks)}function rh(){return dt().memoizedState}function ch(){return dt().memoizedState}function Cv(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var a=on();e=Qa(a);var i=Ka(t,e,a);i!==null&&(Wt(i,t,a),ks(i,t,a)),t={cache:Io()},e.payload=t;return}t=t.return}}function Nv(e,t,a){var i=on();a={lane:i,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},Vr(e)?uh(t,a):(a=zo(e,t,a,i),a!==null&&(Wt(a,e,i),dh(a,t,i)))}function oh(e,t,a){var i=on();Cs(e,t,a,i)}function Cs(e,t,a,i){var o={lane:i,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(Vr(e))uh(t,o);else{var d=e.alternate;if(e.lanes===0&&(d===null||d.lanes===0)&&(d=t.lastRenderedReducer,d!==null))try{var _=t.lastRenderedState,b=d(_,a);if(o.hasEagerState=!0,o.eagerState=b,nn(b,_))return Cr(e,t,o,0),Pe===null&&Er(),!1}catch{}finally{}if(a=zo(e,t,o,i),a!==null)return Wt(a,e,i),dh(a,t,i),!0}return!1}function yu(e,t,a,i){if(i={lane:2,revertLane:Ju(),gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null},Vr(e)){if(t)throw Error(r(479))}else t=zo(e,a,i,2),t!==null&&Wt(t,e,2)}function Vr(e){var t=e.alternate;return e===ke||t!==null&&t===ke}function uh(e,t){xi=Hr=!0;var a=e.pending;a===null?t.next=t:(t.next=a.next,a.next=t),e.pending=t}function dh(e,t,a){if((a&4194048)!==0){var i=t.lanes;i&=e.pendingLanes,a|=i,t.lanes=a,go(e,a)}}var Ns={readContext:Ct,use:Qr,useCallback:rt,useContext:rt,useEffect:rt,useImperativeHandle:rt,useLayoutEffect:rt,useInsertionEffect:rt,useMemo:rt,useReducer:rt,useRef:rt,useState:rt,useDebugValue:rt,useDeferredValue:rt,useTransition:rt,useSyncExternalStore:rt,useId:rt,useHostTransitionStatus:rt,useFormState:rt,useActionState:rt,useOptimistic:rt,useMemoCache:rt,useCacheRefresh:rt};Ns.useEffectEvent=rt;var fh={readContext:Ct,use:Qr,useCallback:function(e,t){return Yt().memoizedState=[e,t===void 0?null:t],e},useContext:Ct,useEffect:Zm,useImperativeHandle:function(e,t,a){a=a!=null?a.concat([e]):null,Ir(4194308,4,Pm.bind(null,t,e),a)},useLayoutEffect:function(e,t){return Ir(4194308,4,e,t)},useInsertionEffect:function(e,t){Ir(4,2,e,t)},useMemo:function(e,t){var a=Yt();t=t===void 0?null:t;var i=e();if(Ll){mn(!0);try{e()}finally{mn(!1)}}return a.memoizedState=[i,t],i},useReducer:function(e,t,a){var i=Yt();if(a!==void 0){var o=a(t);if(Ll){mn(!0);try{a(t)}finally{mn(!1)}}}else o=t;return i.memoizedState=i.baseState=o,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:o},i.queue=e,e=e.dispatch=Nv.bind(null,ke,e),[i.memoizedState,e]},useRef:function(e){var t=Yt();return e={current:e},t.memoizedState=e},useState:function(e){e=du(e);var t=e.queue,a=oh.bind(null,ke,t);return t.dispatch=a,[e.memoizedState,a]},useDebugValue:hu,useDeferredValue:function(e,t){var a=Yt();return pu(a,e,t)},useTransition:function(){var e=du(!1);return e=lh.bind(null,ke,e.queue,!0,!1),Yt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,a){var i=ke,o=Yt();if(Re){if(a===void 0)throw Error(r(407));a=a()}else{if(a=t(),Pe===null)throw Error(r(349));(Te&127)!==0||$m(i,t,a)}o.memoizedState=a;var d={value:a,getSnapshot:t};return o.queue=d,Zm(zm.bind(null,i,d,e),[e]),i.flags|=2048,ji(9,{destroy:void 0},Mm.bind(null,i,d,a,t),null),a},useId:function(){var e=Yt(),t=Pe.identifierPrefix;if(Re){var a=Vn,i=Xn;a=(i&~(1<<32-We(i)-1)).toString(32)+a,t="_"+t+"R_"+a,a=Gr++,0<\/script>",d=d.removeChild(d.firstChild);break;case"select":d=typeof i.is=="string"?_.createElement("select",{is:i.is}):_.createElement("select"),i.multiple?d.multiple=!0:i.size&&(d.size=i.size);break;default:d=typeof i.is=="string"?_.createElement(o,{is:i.is}):_.createElement(o)}}d[ot]=t,d[ce]=i;e:for(_=t.child;_!==null;){if(_.tag===5||_.tag===6)d.appendChild(_.stateNode);else if(_.tag!==4&&_.tag!==27&&_.child!==null){_.child.return=_,_=_.child;continue}if(_===t)break e;for(;_.sibling===null;){if(_.return===null||_.return===t)break e;_=_.return}_.sibling.return=_.return,_=_.sibling}t.stateNode=d;e:switch(Tt(d,o,i),o){case"button":case"input":case"select":case"textarea":i=!!i.autoFocus;break e;case"img":i=!0;break e;default:i=!1}i&&ha(t)}}return nt(t),Ru(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,a),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==i&&ha(t);else{if(typeof i!="string"&&t.stateNode===null)throw Error(r(166));if(e=ye.current,pi(t)){if(e=t.stateNode,a=t.memoizedProps,i=null,o=Et,o!==null)switch(o.tag){case 27:case 5:i=o.memoizedProps}e[ot]=t,e=!!(e.nodeValue===a||i!==null&&i.suppressHydrationWarning===!0||Dp(e.nodeValue,a)),e||Ha(t,!0)}else e=hc(e).createTextNode(i),e[ot]=t,t.stateNode=e}return nt(t),null;case 31:if(a=t.memoizedState,e===null||e.memoizedState!==null){if(i=pi(t),a!==null){if(e===null){if(!i)throw Error(r(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(557));e[ot]=t}else Dl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;nt(t),e=!1}else a=Go(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),e=!0;if(!e)return t.flags&256?(sn(t),t):(sn(t),null);if((t.flags&128)!==0)throw Error(r(558))}return nt(t),null;case 13:if(i=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(o=pi(t),i!==null&&i.dehydrated!==null){if(e===null){if(!o)throw Error(r(318));if(o=t.memoizedState,o=o!==null?o.dehydrated:null,!o)throw Error(r(317));o[ot]=t}else Dl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;nt(t),o=!1}else o=Go(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=o),o=!0;if(!o)return t.flags&256?(sn(t),t):(sn(t),null)}return sn(t),(t.flags&128)!==0?(t.lanes=a,t):(a=i!==null,e=e!==null&&e.memoizedState!==null,a&&(i=t.child,o=null,i.alternate!==null&&i.alternate.memoizedState!==null&&i.alternate.memoizedState.cachePool!==null&&(o=i.alternate.memoizedState.cachePool.pool),d=null,i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(d=i.memoizedState.cachePool.pool),d!==o&&(i.flags|=2048)),a!==e&&a&&(t.child.flags|=8192),Pr(t,t.updateQueue),nt(t),null);case 4:return Oe(),e===null&&ed(t.stateNode.containerInfo),nt(t),null;case 10:return ua(t.type),nt(t),null;case 19:if(Y(ut),i=t.memoizedState,i===null)return nt(t),null;if(o=(t.flags&128)!==0,d=i.rendering,d===null)if(o)Ds(i,!1);else{if(ct!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(d=Br(e),d!==null){for(t.flags|=128,Ds(i,!1),e=d.updateQueue,t.updateQueue=e,Pr(t,e),t.subtreeFlags=0,e=a,a=t.child;a!==null;)om(a,e),a=a.sibling;return P(ut,ut.current&1|2),Re&&ca(t,i.treeForkCount),t.child}e=e.sibling}i.tail!==null&&Mt()>lc&&(t.flags|=128,o=!0,Ds(i,!1),t.lanes=4194304)}else{if(!o)if(e=Br(d),e!==null){if(t.flags|=128,o=!0,e=e.updateQueue,t.updateQueue=e,Pr(t,e),Ds(i,!0),i.tail===null&&i.tailMode==="hidden"&&!d.alternate&&!Re)return nt(t),null}else 2*Mt()-i.renderingStartTime>lc&&a!==536870912&&(t.flags|=128,o=!0,Ds(i,!1),t.lanes=4194304);i.isBackwards?(d.sibling=t.child,t.child=d):(e=i.last,e!==null?e.sibling=d:t.child=d,i.last=d)}return i.tail!==null?(e=i.tail,i.rendering=e,i.tail=e.sibling,i.renderingStartTime=Mt(),e.sibling=null,a=ut.current,P(ut,o?a&1|2:a&1),Re&&ca(t,i.treeForkCount),e):(nt(t),null);case 22:case 23:return sn(t),tu(),i=t.memoizedState!==null,e!==null?e.memoizedState!==null!==i&&(t.flags|=8192):i&&(t.flags|=8192),i?(a&536870912)!==0&&(t.flags&128)===0&&(nt(t),t.subtreeFlags&6&&(t.flags|=8192)):nt(t),a=t.updateQueue,a!==null&&Pr(t,a.retryQueue),a=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(a=e.memoizedState.cachePool.pool),i=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(i=t.memoizedState.cachePool.pool),i!==a&&(t.flags|=2048),e!==null&&Y(Ml),null;case 24:return a=null,e!==null&&(a=e.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),ua(pt),nt(t),null;case 25:return null;case 30:return null}throw Error(r(156,t.tag))}function Mv(e,t){switch(Bo(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ua(pt),Oe(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Rt(t),null;case 31:if(t.memoizedState!==null){if(sn(t),t.alternate===null)throw Error(r(340));Dl()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(sn(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(r(340));Dl()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Y(ut),null;case 4:return Oe(),null;case 10:return ua(t.type),null;case 22:case 23:return sn(t),tu(),e!==null&&Y(Ml),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ua(pt),null;case 25:return null;default:return null}}function Oh(e,t){switch(Bo(t),t.tag){case 3:ua(pt),Oe();break;case 26:case 27:case 5:Rt(t);break;case 4:Oe();break;case 31:t.memoizedState!==null&&sn(t);break;case 13:sn(t);break;case 19:Y(ut);break;case 10:ua(t.type);break;case 22:case 23:sn(t),tu(),e!==null&&Y(Ml);break;case 24:ua(pt)}}function Rs(e,t){try{var a=t.updateQueue,i=a!==null?a.lastEffect:null;if(i!==null){var o=i.next;a=o;do{if((a.tag&e)===e){i=void 0;var d=a.create,_=a.inst;i=d(),_.destroy=i}a=a.next}while(a!==o)}}catch(b){Qe(t,t.return,b)}}function Va(e,t,a){try{var i=t.updateQueue,o=i!==null?i.lastEffect:null;if(o!==null){var d=o.next;i=d;do{if((i.tag&e)===e){var _=i.inst,b=_.destroy;if(b!==void 0){_.destroy=void 0,o=t;var w=a,q=b;try{q()}catch(B){Qe(o,w,B)}}}i=i.next}while(i!==d)}}catch(B){Qe(t,t.return,B)}}function qh(e){var t=e.updateQueue;if(t!==null){var a=e.stateNode;try{Em(t,a)}catch(i){Qe(e,e.return,i)}}}function Lh(e,t,a){a.props=Ul(e.type,e.memoizedProps),a.state=e.memoizedState;try{a.componentWillUnmount()}catch(i){Qe(e,t,i)}}function $s(e,t){try{var a=e.ref;if(a!==null){switch(e.tag){case 26:case 27:case 5:var i=e.stateNode;break;case 30:i=e.stateNode;break;default:i=e.stateNode}typeof a=="function"?e.refCleanup=a(i):a.current=i}}catch(o){Qe(e,t,o)}}function Zn(e,t){var a=e.ref,i=e.refCleanup;if(a!==null)if(typeof i=="function")try{i()}catch(o){Qe(e,t,o)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(o){Qe(e,t,o)}else a.current=null}function Uh(e){var t=e.type,a=e.memoizedProps,i=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":a.autoFocus&&i.focus();break e;case"img":a.src?i.src=a.src:a.srcSet&&(i.srcset=a.srcSet)}}catch(o){Qe(e,e.return,o)}}function $u(e,t,a){try{var i=e.stateNode;nb(i,e.type,a,t),i[ce]=t}catch(o){Qe(e,e.return,o)}}function Bh(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&tl(e.type)||e.tag===4}function Mu(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Bh(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&&tl(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function zu(e,t,a){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(e,t):(t=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,t.appendChild(e),a=a._reactRootContainer,a!=null||t.onclick!==null||(t.onclick=Tn));else if(i!==4&&(i===27&&tl(e.type)&&(a=e.stateNode,t=null),e=e.child,e!==null))for(zu(e,t,a),e=e.sibling;e!==null;)zu(e,t,a),e=e.sibling}function ec(e,t,a){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?a.insertBefore(e,t):a.appendChild(e);else if(i!==4&&(i===27&&tl(e.type)&&(a=e.stateNode),e=e.child,e!==null))for(ec(e,t,a),e=e.sibling;e!==null;)ec(e,t,a),e=e.sibling}function Hh(e){var t=e.stateNode,a=e.memoizedProps;try{for(var i=e.type,o=t.attributes;o.length;)t.removeAttributeNode(o[0]);Tt(t,i,a),t[ot]=e,t[ce]=a}catch(d){Qe(e,e.return,d)}}var pa=!1,yt=!1,Ou=!1,Gh=typeof WeakSet=="function"?WeakSet:Set,jt=null;function zv(e,t){if(e=e.containerInfo,ad=Sc,e=em(e),No(e)){if("selectionStart"in e)var a={start:e.selectionStart,end:e.selectionEnd};else e:{a=(a=e.ownerDocument)&&a.defaultView||window;var i=a.getSelection&&a.getSelection();if(i&&i.rangeCount!==0){a=i.anchorNode;var o=i.anchorOffset,d=i.focusNode;i=i.focusOffset;try{a.nodeType,d.nodeType}catch{a=null;break e}var _=0,b=-1,w=-1,q=0,B=0,Q=e,L=null;t:for(;;){for(var U;Q!==a||o!==0&&Q.nodeType!==3||(b=_+o),Q!==d||i!==0&&Q.nodeType!==3||(w=_+i),Q.nodeType===3&&(_+=Q.nodeValue.length),(U=Q.firstChild)!==null;)L=Q,Q=U;for(;;){if(Q===e)break t;if(L===a&&++q===o&&(b=_),L===d&&++B===i&&(w=_),(U=Q.nextSibling)!==null)break;Q=L,L=Q.parentNode}Q=U}a=b===-1||w===-1?null:{start:b,end:w}}else a=null}a=a||{start:0,end:0}}else a=null;for(ld={focusedElem:e,selectionRange:a},Sc=!1,jt=t;jt!==null;)if(t=jt,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,jt=e;else for(;jt!==null;){switch(t=jt,d=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(a=0;a title"))),Tt(d,i,a),d[ot]=e,ht(d),i=d;break e;case"link":var _=Vp("link","href",o).get(i+(a.href||""));if(_){for(var b=0;b<_.length;b++)if(d=_[b],d.getAttribute("href")===(a.href==null||a.href===""?null:a.href)&&d.getAttribute("rel")===(a.rel==null?null:a.rel)&&d.getAttribute("title")===(a.title==null?null:a.title)&&d.getAttribute("crossorigin")===(a.crossOrigin==null?null:a.crossOrigin)){_.splice(b,1);break t}}d=o.createElement(i),Tt(d,i,a),o.head.appendChild(d);break;case"meta":if(_=Vp("meta","content",o).get(i+(a.content||""))){for(b=0;b<_.length;b++)if(d=_[b],d.getAttribute("content")===(a.content==null?null:""+a.content)&&d.getAttribute("name")===(a.name==null?null:a.name)&&d.getAttribute("property")===(a.property==null?null:a.property)&&d.getAttribute("http-equiv")===(a.httpEquiv==null?null:a.httpEquiv)&&d.getAttribute("charset")===(a.charSet==null?null:a.charSet)){_.splice(b,1);break t}}d=o.createElement(i),Tt(d,i,a),o.head.appendChild(d);break;default:throw Error(r(468,i))}d[ot]=e,ht(d),i=d}e.stateNode=i}else Zp(o,e.type,e.stateNode);else e.stateNode=Xp(o,i,e.memoizedProps);else d!==i?(d===null?a.stateNode!==null&&(a=a.stateNode,a.parentNode.removeChild(a)):d.count--,i===null?Zp(o,e.type,e.stateNode):Xp(o,i,e.memoizedProps)):i===null&&e.stateNode!==null&&$u(e,e.memoizedProps,a.memoizedProps)}break;case 27:Zt(t,e),Jt(e),i&512&&(yt||a===null||Zn(a,a.return)),a!==null&&i&4&&$u(e,e.memoizedProps,a.memoizedProps);break;case 5:if(Zt(t,e),Jt(e),i&512&&(yt||a===null||Zn(a,a.return)),e.flags&32){o=e.stateNode;try{aa(o,"")}catch(le){Qe(e,e.return,le)}}i&4&&e.stateNode!=null&&(o=e.memoizedProps,$u(e,o,a!==null?a.memoizedProps:o)),i&1024&&(Ou=!0);break;case 6:if(Zt(t,e),Jt(e),i&4){if(e.stateNode===null)throw Error(r(162));i=e.memoizedProps,a=e.stateNode;try{a.nodeValue=i}catch(le){Qe(e,e.return,le)}}break;case 3:if(gc=null,o=$n,$n=pc(t.containerInfo),Zt(t,e),$n=o,Jt(e),i&4&&a!==null&&a.memoizedState.isDehydrated)try{Oi(t.containerInfo)}catch(le){Qe(e,e.return,le)}Ou&&(Ou=!1,Zh(e));break;case 4:i=$n,$n=pc(e.stateNode.containerInfo),Zt(t,e),Jt(e),$n=i;break;case 12:Zt(t,e),Jt(e);break;case 31:Zt(t,e),Jt(e),i&4&&(i=e.updateQueue,i!==null&&(e.updateQueue=null,tc(e,i)));break;case 13:Zt(t,e),Jt(e),e.child.flags&8192&&e.memoizedState!==null!=(a!==null&&a.memoizedState!==null)&&(ac=Mt()),i&4&&(i=e.updateQueue,i!==null&&(e.updateQueue=null,tc(e,i)));break;case 22:o=e.memoizedState!==null;var w=a!==null&&a.memoizedState!==null,q=pa,B=yt;if(pa=q||o,yt=B||w,Zt(t,e),yt=B,pa=q,Jt(e),i&8192)e:for(t=e.stateNode,t._visibility=o?t._visibility&-2:t._visibility|1,o&&(a===null||w||pa||yt||Bl(e)),a=null,t=e;;){if(t.tag===5||t.tag===26){if(a===null){w=a=t;try{if(d=w.stateNode,o)_=d.style,typeof _.setProperty=="function"?_.setProperty("display","none","important"):_.display="none";else{b=w.stateNode;var Q=w.memoizedProps.style,L=Q!=null&&Q.hasOwnProperty("display")?Q.display:null;b.style.display=L==null||typeof L=="boolean"?"":(""+L).trim()}}catch(le){Qe(w,w.return,le)}}}else if(t.tag===6){if(a===null){w=t;try{w.stateNode.nodeValue=o?"":w.memoizedProps}catch(le){Qe(w,w.return,le)}}}else if(t.tag===18){if(a===null){w=t;try{var U=w.stateNode;o?Lp(U,!0):Lp(w.stateNode,!1)}catch(le){Qe(w,w.return,le)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break e;for(;t.sibling===null;){if(t.return===null||t.return===e)break e;a===t&&(a=null),t=t.return}a===t&&(a=null),t.sibling.return=t.return,t=t.sibling}i&4&&(i=e.updateQueue,i!==null&&(a=i.retryQueue,a!==null&&(i.retryQueue=null,tc(e,a))));break;case 19:Zt(t,e),Jt(e),i&4&&(i=e.updateQueue,i!==null&&(e.updateQueue=null,tc(e,i)));break;case 30:break;case 21:break;default:Zt(t,e),Jt(e)}}function Jt(e){var t=e.flags;if(t&2){try{for(var a,i=e.return;i!==null;){if(Bh(i)){a=i;break}i=i.return}if(a==null)throw Error(r(160));switch(a.tag){case 27:var o=a.stateNode,d=Mu(e);ec(e,d,o);break;case 5:var _=a.stateNode;a.flags&32&&(aa(_,""),a.flags&=-33);var b=Mu(e);ec(e,b,_);break;case 3:case 4:var w=a.stateNode.containerInfo,q=Mu(e);zu(e,q,w);break;default:throw Error(r(161))}}catch(B){Qe(e,e.return,B)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function Zh(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;Zh(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function ga(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)Yh(e,t.alternate,t),t=t.sibling}function Bl(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:Va(4,t,t.return),Bl(t);break;case 1:Zn(t,t.return);var a=t.stateNode;typeof a.componentWillUnmount=="function"&&Lh(t,t.return,a),Bl(t);break;case 27:Gs(t.stateNode);case 26:case 5:Zn(t,t.return),Bl(t);break;case 22:t.memoizedState===null&&Bl(t);break;case 30:Bl(t);break;default:Bl(t)}e=e.sibling}}function ya(e,t,a){for(a=a&&(t.subtreeFlags&8772)!==0,t=t.child;t!==null;){var i=t.alternate,o=e,d=t,_=d.flags;switch(d.tag){case 0:case 11:case 15:ya(o,d,a),Rs(4,d);break;case 1:if(ya(o,d,a),i=d,o=i.stateNode,typeof o.componentDidMount=="function")try{o.componentDidMount()}catch(q){Qe(i,i.return,q)}if(i=d,o=i.updateQueue,o!==null){var b=i.stateNode;try{var w=o.shared.hiddenCallbacks;if(w!==null)for(o.shared.hiddenCallbacks=null,o=0;oJe&&(_=Je,Je=he,he=_);var N=Wf(b,he),C=Wf(b,Je);if(N&&C&&(U.rangeCount!==1||U.anchorNode!==N.node||U.anchorOffset!==N.offset||U.focusNode!==C.node||U.focusOffset!==C.offset)){var z=Q.createRange();z.setStart(N.node,N.offset),U.removeAllRanges(),he>Je?(U.addRange(z),U.extend(C.node,C.offset)):(z.setEnd(C.node,C.offset),U.addRange(z))}}}}for(Q=[],U=b;U=U.parentNode;)U.nodeType===1&&Q.push({element:U,left:U.scrollLeft,top:U.scrollTop});for(typeof b.focus=="function"&&b.focus(),b=0;ba?32:a,$.T=null,a=Yu,Yu=null;var d=Wa,_=ba;if(St=0,Ni=Wa=null,ba=0,(Ge&6)!==0)throw Error(r(331));var b=Ge;if(Ge|=4,Ph(d.current),Jh(d,d.current,_,a),Ge=b,Us(0,!1),vt&&typeof vt.onPostCommitFiberRoot=="function")try{vt.onPostCommitFiberRoot(tn,d)}catch{}return!0}finally{K.p=o,$.T=i,gp(e,t)}}function vp(e,t,a){t=gn(a,t),t=xu(e.stateNode,t,2),e=Ka(e,t,2),e!==null&&(ea(e,2),Jn(e))}function Qe(e,t,a){if(e.tag===3)vp(e,e,a);else for(;t!==null;){if(t.tag===3){vp(t,e,a);break}else if(t.tag===1){var i=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof i.componentDidCatch=="function"&&(Fa===null||!Fa.has(i))){e=gn(a,e),a=bh(2),i=Ka(t,a,2),i!==null&&(Sh(a,i,t,e),ea(i,2),Jn(i));break}}t=t.return}}function Xu(e,t,a){var i=e.pingCache;if(i===null){i=e.pingCache=new Lv;var o=new Set;i.set(t,o)}else o=i.get(t),o===void 0&&(o=new Set,i.set(t,o));o.has(a)||(Uu=!0,o.add(a),e=Yv.bind(null,e,t,a),t.then(e,e))}function Yv(e,t,a){var i=e.pingCache;i!==null&&i.delete(t),e.pingedLanes|=e.suspendedLanes&a,e.warmLanes&=~a,Pe===e&&(Te&a)===a&&(ct===4||ct===3&&(Te&62914560)===Te&&300>Mt()-ac?(Ge&2)===0&&Ti(e,0):Bu|=a,Ci===Te&&(Ci=0)),Jn(e)}function bp(e,t){t===0&&(t=Ie()),e=Nl(e,t),e!==null&&(ea(e,t),Jn(e))}function Qv(e){var t=e.memoizedState,a=0;t!==null&&(a=t.retryLane),bp(e,a)}function Kv(e,t){var a=0;switch(e.tag){case 31:case 13:var i=e.stateNode,o=e.memoizedState;o!==null&&(a=o.retryLane);break;case 19:i=e.stateNode;break;case 22:i=e.stateNode._retryCache;break;default:throw Error(r(314))}i!==null&&i.delete(t),bp(e,a)}function Iv(e,t){return gl(e,t)}var uc=null,Ri=null,Vu=!1,dc=!1,Zu=!1,el=0;function Jn(e){e!==Ri&&e.next===null&&(Ri===null?uc=Ri=e:Ri=Ri.next=e),dc=!0,Vu||(Vu=!0,Vv())}function Us(e,t){if(!Zu&&dc){Zu=!0;do for(var a=!1,i=uc;i!==null;){if(e!==0){var o=i.pendingLanes;if(o===0)var d=0;else{var _=i.suspendedLanes,b=i.pingedLanes;d=(1<<31-We(42|e)+1)-1,d&=o&~(_&~b),d=d&201326741?d&201326741|1:d?d|2:0}d!==0&&(a=!0,jp(i,d))}else d=Te,d=ei(i,i===Pe?d:0,i.cancelPendingCommit!==null||i.timeoutHandle!==-1),(d&3)===0||yl(i,d)||(a=!0,jp(i,d));i=i.next}while(a);Zu=!1}}function Xv(){Sp()}function Sp(){dc=Vu=!1;var e=0;el!==0&&lb()&&(e=el);for(var t=Mt(),a=null,i=uc;i!==null;){var o=i.next,d=xp(i,t);d===0?(i.next=null,a===null?uc=o:a.next=o,o===null&&(Ri=a)):(a=i,(e!==0||(d&3)!==0)&&(dc=!0)),i=o}St!==0&&St!==5||Us(e),el!==0&&(el=0)}function xp(e,t){for(var a=e.suspendedLanes,i=e.pingedLanes,o=e.expirationTimes,d=e.pendingLanes&-62914561;0b)break;var B=w.transferSize,Q=w.initiatorType;B&&Rp(Q)&&(w=w.responseEnd,_+=B*(w"u"?null:document;function Qp(e,t,a){var i=$i;if(i&&typeof t=="string"&&t){var o=It(t);o='link[rel="'+e+'"][href="'+o+'"]',typeof a=="string"&&(o+='[crossorigin="'+a+'"]'),Yp.has(o)||(Yp.add(o),e={rel:e,crossOrigin:a,href:t},i.querySelector(o)===null&&(t=i.createElement("link"),Tt(t,"link",e),ht(t),i.head.appendChild(t)))}}function mb(e){Sa.D(e),Qp("dns-prefetch",e,null)}function hb(e,t){Sa.C(e,t),Qp("preconnect",e,t)}function pb(e,t,a){Sa.L(e,t,a);var i=$i;if(i&&e&&t){var o='link[rel="preload"][as="'+It(t)+'"]';t==="image"&&a&&a.imageSrcSet?(o+='[imagesrcset="'+It(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(o+='[imagesizes="'+It(a.imageSizes)+'"]')):o+='[href="'+It(e)+'"]';var d=o;switch(t){case"style":d=Mi(e);break;case"script":d=zi(e)}kn.has(d)||(e=x({rel:"preload",href:t==="image"&&a&&a.imageSrcSet?void 0:e,as:t},a),kn.set(d,e),i.querySelector(o)!==null||t==="style"&&i.querySelector(Ys(d))||t==="script"&&i.querySelector(Qs(d))||(t=i.createElement("link"),Tt(t,"link",e),ht(t),i.head.appendChild(t)))}}function _b(e,t){Sa.m(e,t);var a=$i;if(a&&e){var i=t&&typeof t.as=="string"?t.as:"script",o='link[rel="modulepreload"][as="'+It(i)+'"][href="'+It(e)+'"]',d=o;switch(i){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":d=zi(e)}if(!kn.has(d)&&(e=x({rel:"modulepreload",href:e},t),kn.set(d,e),a.querySelector(o)===null)){switch(i){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(Qs(d)))return}i=a.createElement("link"),Tt(i,"link",e),ht(i),a.head.appendChild(i)}}}function gb(e,t,a){Sa.S(e,t,a);var i=$i;if(i&&e){var o=Ma(i).hoistableStyles,d=Mi(e);t=t||"default";var _=o.get(d);if(!_){var b={loading:0,preload:null};if(_=i.querySelector(Ys(d)))b.loading=5;else{e=x({rel:"stylesheet",href:e,"data-precedence":t},a),(a=kn.get(d))&&dd(e,a);var w=_=i.createElement("link");ht(w),Tt(w,"link",e),w._p=new Promise(function(q,B){w.onload=q,w.onerror=B}),w.addEventListener("load",function(){b.loading|=1}),w.addEventListener("error",function(){b.loading|=2}),b.loading|=4,_c(_,t,i)}_={type:"stylesheet",instance:_,count:1,state:b},o.set(d,_)}}}function yb(e,t){Sa.X(e,t);var a=$i;if(a&&e){var i=Ma(a).hoistableScripts,o=zi(e),d=i.get(o);d||(d=a.querySelector(Qs(o)),d||(e=x({src:e,async:!0},t),(t=kn.get(o))&&fd(e,t),d=a.createElement("script"),ht(d),Tt(d,"link",e),a.head.appendChild(d)),d={type:"script",instance:d,count:1,state:null},i.set(o,d))}}function vb(e,t){Sa.M(e,t);var a=$i;if(a&&e){var i=Ma(a).hoistableScripts,o=zi(e),d=i.get(o);d||(d=a.querySelector(Qs(o)),d||(e=x({src:e,async:!0,type:"module"},t),(t=kn.get(o))&&fd(e,t),d=a.createElement("script"),ht(d),Tt(d,"link",e),a.head.appendChild(d)),d={type:"script",instance:d,count:1,state:null},i.set(o,d))}}function Kp(e,t,a,i){var o=(o=ye.current)?pc(o):null;if(!o)throw Error(r(446));switch(e){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(t=Mi(a.href),a=Ma(o).hoistableStyles,i=a.get(t),i||(i={type:"style",instance:null,count:0,state:null},a.set(t,i)),i):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){e=Mi(a.href);var d=Ma(o).hoistableStyles,_=d.get(e);if(_||(o=o.ownerDocument||o,_={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},d.set(e,_),(d=o.querySelector(Ys(e)))&&!d._p&&(_.instance=d,_.state.loading=5),kn.has(e)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},kn.set(e,a),d||bb(o,e,a,_.state))),t&&i===null)throw Error(r(528,""));return _}if(t&&i!==null)throw Error(r(529,""));return null;case"script":return t=a.async,a=a.src,typeof a=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=zi(a),a=Ma(o).hoistableScripts,i=a.get(t),i||(i={type:"script",instance:null,count:0,state:null},a.set(t,i)),i):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,e))}}function Mi(e){return'href="'+It(e)+'"'}function Ys(e){return'link[rel="stylesheet"]['+e+"]"}function Ip(e){return x({},e,{"data-precedence":e.precedence,precedence:null})}function bb(e,t,a,i){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?i.loading=1:(t=e.createElement("link"),i.preload=t,t.addEventListener("load",function(){return i.loading|=1}),t.addEventListener("error",function(){return i.loading|=2}),Tt(t,"link",a),ht(t),e.head.appendChild(t))}function zi(e){return'[src="'+It(e)+'"]'}function Qs(e){return"script[async]"+e}function Xp(e,t,a){if(t.count++,t.instance===null)switch(t.type){case"style":var i=e.querySelector('style[data-href~="'+It(a.href)+'"]');if(i)return t.instance=i,ht(i),i;var o=x({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return i=(e.ownerDocument||e).createElement("style"),ht(i),Tt(i,"style",o),_c(i,a.precedence,e),t.instance=i;case"stylesheet":o=Mi(a.href);var d=e.querySelector(Ys(o));if(d)return t.state.loading|=4,t.instance=d,ht(d),d;i=Ip(a),(o=kn.get(o))&&dd(i,o),d=(e.ownerDocument||e).createElement("link"),ht(d);var _=d;return _._p=new Promise(function(b,w){_.onload=b,_.onerror=w}),Tt(d,"link",i),t.state.loading|=4,_c(d,a.precedence,e),t.instance=d;case"script":return d=zi(a.src),(o=e.querySelector(Qs(d)))?(t.instance=o,ht(o),o):(i=a,(o=kn.get(d))&&(i=x({},a),fd(i,o)),e=e.ownerDocument||e,o=e.createElement("script"),ht(o),Tt(o,"link",i),e.head.appendChild(o),t.instance=o);case"void":return null;default:throw Error(r(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(i=t.instance,t.state.loading|=4,_c(i,a.precedence,e));return t.instance}function _c(e,t,a){for(var i=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),o=i.length?i[i.length-1]:null,d=o,_=0;_ title"):null)}function Sb(e,t,a){if(a===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Jp(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function xb(e,t,a,i){if(a.type==="stylesheet"&&(typeof i.media!="string"||matchMedia(i.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var o=Mi(i.href),d=t.querySelector(Ys(o));if(d){t=d._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=yc.bind(e),t.then(e,e)),a.state.loading|=4,a.instance=d,ht(d);return}d=t.ownerDocument||t,i=Ip(i),(o=kn.get(o))&&dd(i,o),d=d.createElement("link"),ht(d);var _=d;_._p=new Promise(function(b,w){_.onload=b,_.onerror=w}),Tt(d,"link",i),a.instance=d}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(a,t),(t=a.state.preload)&&(a.state.loading&3)===0&&(e.count++,a=yc.bind(e),t.addEventListener("load",a),t.addEventListener("error",a))}}var md=0;function kb(e,t){return e.stylesheets&&e.count===0&&bc(e,e.stylesheets),0md?50:800)+t);return e.unsuspend=a,function(){e.unsuspend=null,clearTimeout(i),clearTimeout(o)}}:null}function yc(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)bc(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var vc=null;function bc(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,vc=new Map,t.forEach(jb,e),vc=null,yc.call(e))}function jb(e,t){if(!(t.state.loading&4)){var a=vc.get(e);if(a)var i=a.get(null);else{a=new Map,vc.set(e,a);for(var o=e.querySelectorAll("link[data-precedence],style[data-precedence]"),d=0;d"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(l){console.error(l)}}return n(),xd.exports=Gb(),xd.exports}var Qb=Yb();/** - * react-router v7.17.0 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */var b_="popstate";function S_(n){return typeof n=="object"&&n!=null&&"pathname"in n&&"search"in n&&"hash"in n&&"state"in n&&"key"in n}function Kb(n={}){function l(u,f){let{pathname:m="/",search:y="",hash:p=""}=Vl(u.location.hash.substring(1));return!m.startsWith("/")&&!m.startsWith(".")&&(m="/"+m),Gd("",{pathname:m,search:y,hash:p},f.state&&f.state.usr||null,f.state&&f.state.key||"default")}function s(u,f){let m=u.document.querySelector("base"),y="";if(m&&m.getAttribute("href")){let p=u.location.href,g=p.indexOf("#");y=g===-1?p:p.slice(0,g)}return y+"#"+(typeof f=="string"?f:sr(f))}function r(u,f){jn(u.pathname.charAt(0)==="/",`relative pathnames are not supported in hash history.push(${JSON.stringify(f)})`)}return Xb(l,s,r,n)}function lt(n,l){if(n===!1||n===null||typeof n>"u")throw new Error(l)}function jn(n,l){if(!n){typeof console<"u"&&console.warn(l);try{throw new Error(l)}catch{}}}function Ib(){return Math.random().toString(36).substring(2,10)}function x_(n,l){return{usr:n.state,key:n.key,idx:l,masked:n.mask?{pathname:n.pathname,search:n.search,hash:n.hash}:void 0}}function Gd(n,l,s=null,r,u){return{pathname:typeof n=="string"?n:n.pathname,search:"",hash:"",...typeof l=="string"?Vl(l):l,state:s,key:l&&l.key||r||Ib(),mask:u}}function sr({pathname:n="/",search:l="",hash:s=""}){return l&&l!=="?"&&(n+=l.charAt(0)==="?"?l:"?"+l),s&&s!=="#"&&(n+=s.charAt(0)==="#"?s:"#"+s),n}function Vl(n){let l={};if(n){let s=n.indexOf("#");s>=0&&(l.hash=n.substring(s),n=n.substring(0,s));let r=n.indexOf("?");r>=0&&(l.search=n.substring(r),n=n.substring(0,r)),n&&(l.pathname=n)}return l}function Xb(n,l,s,r={}){let{window:u=document.defaultView,v5Compat:f=!1}=r,m=u.history,y="POP",p=null,g=S();g==null&&(g=0,m.replaceState({...m.state,idx:g},""));function S(){return(m.state||{idx:null}).idx}function x(){y="POP";let T=S(),M=T==null?null:T-g;g=T,p&&p({action:y,location:D.location,delta:M})}function j(T,M){y="PUSH";let J=S_(T)?T:Gd(D.location,T,M);s&&s(J,T),g=S()+1;let O=x_(J,g),ee=D.createHref(J.mask||J);try{m.pushState(O,"",ee)}catch(ie){if(ie instanceof DOMException&&ie.name==="DataCloneError")throw ie;u.location.assign(ee)}f&&p&&p({action:y,location:D.location,delta:1})}function R(T,M){y="REPLACE";let J=S_(T)?T:Gd(D.location,T,M);s&&s(J,T),g=S();let O=x_(J,g),ee=D.createHref(J.mask||J);m.replaceState(O,"",ee),f&&p&&p({action:y,location:D.location,delta:0})}function A(T){return Vb(u,T)}let D={get action(){return y},get location(){return n(u,m)},listen(T){if(p)throw new Error("A history only accepts one active listener");return u.addEventListener(b_,x),p=T,()=>{u.removeEventListener(b_,x),p=null}},createHref(T){return l(u,T)},createURL:A,encodeLocation(T){let M=A(T);return{pathname:M.pathname,search:M.search,hash:M.hash}},push:j,replace:R,go(T){return m.go(T)}};return D}function Vb(n,l,s=!1){let r="http://localhost";n&&(r=n.location.origin!=="null"?n.location.origin:n.location.href),lt(r,"No window.location.(origin|href) available to create URL");let u=typeof l=="string"?l:sr(l);return u=u.replace(/ $/,"%20"),!s&&u.startsWith("//")&&(u=r+u),new URL(u,r)}function gg(n,l,s="/"){return Zb(n,l,s,!1)}function Zb(n,l,s,r,u){let f=typeof l=="string"?Vl(l):l,m=wa(f.pathname||"/",s);if(m==null)return null;let y=Jb(n),p=null,g=c0(m);for(let S=0;p==null&&S{let S={relativePath:g===void 0?m.path||"":g,caseSensitive:m.caseSensitive===!0,childrenIndex:y,route:m};if(S.relativePath.startsWith("/")){if(!S.relativePath.startsWith(r)&&p)return;lt(S.relativePath.startsWith(r),`Absolute route path "${S.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),S.relativePath=S.relativePath.slice(r.length)}let x=On([r,S.relativePath]),j=s.concat(S);m.children&&m.children.length>0&&(lt(m.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${x}".`),yg(m.children,l,j,x,p)),!(m.path==null&&!m.index)&&l.push({path:x,score:l0(x,m.index),routesMeta:j})};return n.forEach((m,y)=>{var p;if(m.path===""||!((p=m.path)!=null&&p.includes("?")))f(m,y);else for(let g of vg(m.path))f(m,y,!0,g)}),l}function vg(n){let l=n.split("/");if(l.length===0)return[];let[s,...r]=l,u=s.endsWith("?"),f=s.replace(/\?$/,"");if(r.length===0)return u?[f,""]:[f];let m=vg(r.join("/")),y=[];return y.push(...m.map(p=>p===""?f:[f,p].join("/"))),u&&y.push(...m),y.map(p=>n.startsWith("/")&&p===""?"/":p)}function Fb(n){n.sort((l,s)=>l.score!==s.score?s.score-l.score:i0(l.routesMeta.map(r=>r.childrenIndex),s.routesMeta.map(r=>r.childrenIndex)))}var Wb=/^:[\w-]+$/,Pb=3,e0=2,t0=1,n0=10,a0=-2,k_=n=>n==="*";function l0(n,l){let s=n.split("/"),r=s.length;return s.some(k_)&&(r+=a0),l&&(r+=e0),s.filter(u=>!k_(u)).reduce((u,f)=>u+(Wb.test(f)?Pb:f===""?t0:n0),r)}function i0(n,l){return n.length===l.length&&n.slice(0,-1).every((r,u)=>r===l[u])?n[n.length-1]-l[l.length-1]:0}function s0(n,l,s=!1){let{routesMeta:r}=n,u={},f="/",m=[];for(let y=0;y{if(S==="*"){let A=y[j]||"";m=f.slice(0,f.length-A.length).replace(/(.)\/+$/,"$1")}const R=y[j];return x&&!R?g[S]=void 0:g[S]=(R||"").replace(/%2F/g,"/"),g},{}),pathname:f,pathnameBase:m,pattern:n}}function r0(n,l=!1,s=!0){jn(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=[],u="^"+n.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(m,y,p,g,S)=>{if(r.push({paramName:y,isOptional:p!=null}),p){let x=S.charAt(g+m.length);return x&&x!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return n.endsWith("*")?(r.push({paramName:"*"}),u+=n==="*"||n==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):s?u+="\\/*$":n!==""&&n!=="/"&&(u+="(?:(?=\\/|$))"),[new RegExp(u,l?void 0:"i"),r]}function c0(n){try{return n.split("/").map(l=>decodeURIComponent(l).replace(/\//g,"%2F")).join("/")}catch(l){return jn(!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 (${l}).`),n}}function wa(n,l){if(l==="/")return n;if(!n.toLowerCase().startsWith(l.toLowerCase()))return null;let s=l.endsWith("/")?l.length-1:l.length,r=n.charAt(s);return r&&r!=="/"?null:n.slice(s)||"/"}var o0=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function u0(n,l="/"){let{pathname:s,search:r="",hash:u=""}=typeof n=="string"?Vl(n):n,f;return s?(s=bg(s),s.startsWith("/")?f=j_(s.substring(1),"/"):f=j_(s,l)):f=l,{pathname:f,search:m0(r),hash:h0(u)}}function j_(n,l){let s=Gc(l).split("/");return n.split("/").forEach(u=>{u===".."?s.length>1&&s.pop():u!=="."&&s.push(u)}),s.length>1?s.join("/"):"/"}function Ad(n,l,s,r){return`Cannot include a '${n}' character in a manually specified \`to.${l}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${s}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function d0(n){return n.filter((l,s)=>s===0||l.route.path&&l.route.path.length>0)}function cf(n){let l=d0(n);return l.map((s,r)=>r===l.length-1?s.pathname:s.pathnameBase)}function Fc(n,l,s,r=!1){let u;typeof n=="string"?u=Vl(n):(u={...n},lt(!u.pathname||!u.pathname.includes("?"),Ad("?","pathname","search",u)),lt(!u.pathname||!u.pathname.includes("#"),Ad("#","pathname","hash",u)),lt(!u.search||!u.search.includes("#"),Ad("#","search","hash",u)));let f=n===""||u.pathname==="",m=f?"/":u.pathname,y;if(m==null)y=s;else{let x=l.length-1;if(!r&&m.startsWith("..")){let j=m.split("/");for(;j[0]==="..";)j.shift(),x-=1;u.pathname=j.join("/")}y=x>=0?l[x]:"/"}let p=u0(u,y),g=m&&m!=="/"&&m.endsWith("/"),S=(f||m===".")&&s.endsWith("/");return!p.pathname.endsWith("/")&&(g||S)&&(p.pathname+="/"),p}var bg=n=>n.replace(/\/\/+/g,"/"),On=n=>bg(n.join("/")),Gc=n=>n.replace(/\/+$/,""),f0=n=>Gc(n).replace(/^\/*/,"/"),m0=n=>!n||n==="?"?"":n.startsWith("?")?n:"?"+n,h0=n=>!n||n==="#"?"":n.startsWith("#")?n:"#"+n,p0=class{constructor(n,l,s,r=!1){this.status=n,this.statusText=l||"",this.internal=r,s instanceof Error?(this.data=s.toString(),this.error=s):this.data=s}};function _0(n){return n!=null&&typeof n.status=="number"&&typeof n.statusText=="string"&&typeof n.internal=="boolean"&&"data"in n}function g0(n){let l=n.map(s=>s.route.path).filter(Boolean);return On(l)||"/"}var Sg=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function xg(n,l){let s=n;if(typeof s!="string"||!o0.test(s))return{absoluteURL:void 0,isExternal:!1,to:s};let r=s,u=!1;if(Sg)try{let f=new URL(window.location.href),m=s.startsWith("//")?new URL(f.protocol+s):new URL(s),y=wa(m.pathname,l);m.origin===f.origin&&y!=null?s=y+m.search+m.hash:u=!0}catch{jn(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:u,to:s}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var kg=["POST","PUT","PATCH","DELETE"];new Set(kg);var y0=["GET",...kg];new Set(y0);var Qi=k.createContext(null);Qi.displayName="DataRouter";var Wc=k.createContext(null);Wc.displayName="DataRouterState";var jg=k.createContext(!1);function v0(){return k.useContext(jg)}var wg=k.createContext({isTransitioning:!1});wg.displayName="ViewTransition";var b0=k.createContext(new Map);b0.displayName="Fetchers";var S0=k.createContext(null);S0.displayName="Await";var dn=k.createContext(null);dn.displayName="Navigation";var ur=k.createContext(null);ur.displayName="Location";var Wn=k.createContext({outlet:null,matches:[],isDataRoute:!1});Wn.displayName="Route";var of=k.createContext(null);of.displayName="RouteError";var Ag="REACT_ROUTER_ERROR",x0="REDIRECT",k0="ROUTE_ERROR_RESPONSE";function j0(n){if(n.startsWith(`${Ag}:${x0}:{`))try{let l=JSON.parse(n.slice(28));if(typeof l=="object"&&l&&typeof l.status=="number"&&typeof l.statusText=="string"&&typeof l.location=="string"&&typeof l.reloadDocument=="boolean"&&typeof l.replace=="boolean")return l}catch{}}function w0(n){if(n.startsWith(`${Ag}:${k0}:{`))try{let l=JSON.parse(n.slice(40));if(typeof l=="object"&&l&&typeof l.status=="number"&&typeof l.statusText=="string")return new p0(l.status,l.statusText,l.data)}catch{}}function A0(n,{relative:l}={}){lt(Ki(),"useHref() may be used only in the context of a component.");let{basename:s,navigator:r}=k.useContext(dn),{hash:u,pathname:f,search:m}=dr(n,{relative:l}),y=f;return s!=="/"&&(y=f==="/"?s:On([s,f])),r.createHref({pathname:y,search:m,hash:u})}function Ki(){return k.useContext(ur)!=null}function Ln(){return lt(Ki(),"useLocation() may be used only in the context of a component."),k.useContext(ur).location}var Eg="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Cg(n){k.useContext(dn).static||k.useLayoutEffect(n)}function uf(){let{isDataRoute:n}=k.useContext(Wn);return n?U0():E0()}function E0(){lt(Ki(),"useNavigate() may be used only in the context of a component.");let n=k.useContext(Qi),{basename:l,navigator:s}=k.useContext(dn),{matches:r}=k.useContext(Wn),{pathname:u}=Ln(),f=JSON.stringify(cf(r)),m=k.useRef(!1);return Cg(()=>{m.current=!0}),k.useCallback((p,g={})=>{if(jn(m.current,Eg),!m.current)return;if(typeof p=="number"){s.go(p);return}let S=Fc(p,JSON.parse(f),u,g.relative==="path");n==null&&l!=="/"&&(S.pathname=S.pathname==="/"?l:On([l,S.pathname])),(g.replace?s.replace:s.push)(S,g.state,g)},[l,s,f,u,n])}k.createContext(null);function dr(n,{relative:l}={}){let{matches:s}=k.useContext(Wn),{pathname:r}=Ln(),u=JSON.stringify(cf(s));return k.useMemo(()=>Fc(n,JSON.parse(u),r,l==="path"),[n,u,r,l])}function C0(n,l){return Ng(n,l)}function Ng(n,l,s){var T;lt(Ki(),"useRoutes() may be used only in the context of a component.");let{navigator:r}=k.useContext(dn),{matches:u}=k.useContext(Wn),f=u[u.length-1],m=f?f.params:{},y=f?f.pathname:"/",p=f?f.pathnameBase:"/",g=f&&f.route;{let M=g&&g.path||"";Dg(y,!g||M.endsWith("*")||M.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${y}" (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 S=Ln(),x;if(l){let M=typeof l=="string"?Vl(l):l;lt(p==="/"||((T=M.pathname)==null?void 0:T.startsWith(p)),`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 "${p}" but pathname "${M.pathname}" was given in the \`location\` prop.`),x=M}else x=S;let j=x.pathname||"/",R=j;if(p!=="/"){let M=p.replace(/^\//,"").split("/");R="/"+j.replace(/^\//,"").split("/").slice(M.length).join("/")}let A=s&&s.state.matches.length?s.state.matches.map(M=>Object.assign(M,{route:s.manifest[M.route.id]||M.route})):gg(n,{pathname:R});jn(g||A!=null,`No routes matched location "${x.pathname}${x.search}${x.hash}" `),jn(A==null||A[A.length-1].route.element!==void 0||A[A.length-1].route.Component!==void 0||A[A.length-1].route.lazy!==void 0,`Matched leaf route at location "${x.pathname}${x.search}${x.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 D=$0(A&&A.map(M=>Object.assign({},M,{params:Object.assign({},m,M.params),pathname:On([p,r.encodeLocation?r.encodeLocation(M.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:M.pathname]),pathnameBase:M.pathnameBase==="/"?p:On([p,r.encodeLocation?r.encodeLocation(M.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:M.pathnameBase])})),u,s);return l&&D?k.createElement(ur.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",mask:void 0,...x},navigationType:"POP"}},D):D}function N0(){let n=L0(),l=_0(n)?`${n.status} ${n.statusText}`:n instanceof Error?n.message:JSON.stringify(n),s=n instanceof Error?n.stack:null,r="rgba(200,200,200, 0.5)",u={padding:"0.5rem",backgroundColor:r},f={padding:"2px 4px",backgroundColor:r},m=null;return console.error("Error handled by React Router default ErrorBoundary:",n),m=k.createElement(k.Fragment,null,k.createElement("p",null,"💿 Hey developer 👋"),k.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",k.createElement("code",{style:f},"ErrorBoundary")," or"," ",k.createElement("code",{style:f},"errorElement")," prop on your route.")),k.createElement(k.Fragment,null,k.createElement("h2",null,"Unexpected Application Error!"),k.createElement("h3",{style:{fontStyle:"italic"}},l),s?k.createElement("pre",{style:u},s):null,m)}var T0=k.createElement(N0,null),Tg=class extends k.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,l){return l.location!==n.location||l.revalidation!=="idle"&&n.revalidation==="idle"?{error:n.error,location:n.location,revalidation:n.revalidation}:{error:n.error!==void 0?n.error:l.error,location:l.location,revalidation:n.revalidation||l.revalidation}}componentDidCatch(n,l){this.props.onError?this.props.onError(n,l):console.error("React Router caught the following error during render",n)}render(){let n=this.state.error;if(this.context&&typeof n=="object"&&n&&"digest"in n&&typeof n.digest=="string"){const s=w0(n.digest);s&&(n=s)}let l=n!==void 0?k.createElement(Wn.Provider,{value:this.props.routeContext},k.createElement(of.Provider,{value:n,children:this.props.component})):this.props.children;return this.context?k.createElement(D0,{error:n},l):l}};Tg.contextType=jg;var Ed=new WeakMap;function D0({children:n,error:l}){let{basename:s}=k.useContext(dn);if(typeof l=="object"&&l&&"digest"in l&&typeof l.digest=="string"){let r=j0(l.digest);if(r){let u=Ed.get(l);if(u)throw u;let f=xg(r.location,s);if(Sg&&!Ed.get(l))if(f.isExternal||r.reloadDocument)window.location.href=f.absoluteURL||f.to;else{const m=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(f.to,{replace:r.replace}));throw Ed.set(l,m),m}return k.createElement("meta",{httpEquiv:"refresh",content:`0;url=${f.absoluteURL||f.to}`})}}return n}function R0({routeContext:n,match:l,children:s}){let r=k.useContext(Qi);return r&&r.static&&r.staticContext&&(l.route.errorElement||l.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=l.route.id),k.createElement(Wn.Provider,{value:n},s)}function $0(n,l=[],s){let r=s==null?void 0:s.state;if(n==null){if(!r)return null;if(r.errors)n=r.matches;else if(l.length===0&&!r.initialized&&r.matches.length>0)n=r.matches;else return null}let u=n,f=r==null?void 0:r.errors;if(f!=null){let S=u.findIndex(x=>x.route.id&&(f==null?void 0:f[x.route.id])!==void 0);lt(S>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(f).join(",")}`),u=u.slice(0,Math.min(u.length,S+1))}let m=!1,y=-1;if(s&&r){m=r.renderFallback;for(let S=0;S=0?u=u.slice(0,y+1):u=[u[0]];break}}}}let p=s==null?void 0:s.onError,g=r&&p?(S,x)=>{var j,R;p(S,{location:r.location,params:((R=(j=r.matches)==null?void 0:j[0])==null?void 0:R.params)??{},pattern:g0(r.matches),errorInfo:x})}:void 0;return u.reduceRight((S,x,j)=>{let R,A=!1,D=null,T=null;r&&(R=f&&x.route.id?f[x.route.id]:void 0,D=x.route.errorElement||T0,m&&(y<0&&j===0?(Dg("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),A=!0,T=null):y===j&&(A=!0,T=x.route.hydrateFallbackElement||null)));let M=l.concat(u.slice(0,j+1)),J=()=>{let O;return R?O=D:A?O=T:x.route.Component?O=k.createElement(x.route.Component,null):x.route.element?O=x.route.element:O=S,k.createElement(R0,{match:x,routeContext:{outlet:S,matches:M,isDataRoute:r!=null},children:O})};return r&&(x.route.ErrorBoundary||x.route.errorElement||j===0)?k.createElement(Tg,{location:r.location,revalidation:r.revalidation,component:D,error:R,children:J(),routeContext:{outlet:null,matches:M,isDataRoute:!0},onError:g}):J()},null)}function df(n){return`${n} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function M0(n){let l=k.useContext(Qi);return lt(l,df(n)),l}function z0(n){let l=k.useContext(Wc);return lt(l,df(n)),l}function O0(n){let l=k.useContext(Wn);return lt(l,df(n)),l}function ff(n){let l=O0(n),s=l.matches[l.matches.length-1];return lt(s.route.id,`${n} can only be used on routes that contain a unique "id"`),s.route.id}function q0(){return ff("useRouteId")}function L0(){var r;let n=k.useContext(of),l=z0("useRouteError"),s=ff("useRouteError");return n!==void 0?n:(r=l.errors)==null?void 0:r[s]}function U0(){let{router:n}=M0("useNavigate"),l=ff("useNavigate"),s=k.useRef(!1);return Cg(()=>{s.current=!0}),k.useCallback(async(u,f={})=>{jn(s.current,Eg),s.current&&(typeof u=="number"?await n.navigate(u):await n.navigate(u,{fromRouteId:l,...f}))},[n,l])}var w_={};function Dg(n,l,s){!l&&!w_[n]&&(w_[n]=!0,jn(!1,s))}k.memo(B0);function B0({routes:n,manifest:l,future:s,state:r,isStatic:u,onError:f}){return Ng(n,void 0,{manifest:l,state:r,isStatic:u,onError:f})}function H0({to:n,replace:l,state:s,relative:r}){lt(Ki()," may be used only in the context of a component.");let{static:u}=k.useContext(dn);jn(!u," 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:f}=k.useContext(Wn),{pathname:m}=Ln(),y=uf(),p=Fc(n,cf(f),m,r==="path"),g=JSON.stringify(p);return k.useEffect(()=>{y(JSON.parse(g),{replace:l,state:s,relative:r})},[y,g,r,l,s]),null}function Yd(n){lt(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function G0({basename:n="/",children:l=null,location:s,navigationType:r="POP",navigator:u,static:f=!1,useTransitions:m}){lt(!Ki(),"You cannot render a inside another . You should never have more than one in your app.");let y=n.replace(/^\/*/,"/"),p=k.useMemo(()=>({basename:y,navigator:u,static:f,useTransitions:m,future:{}}),[y,u,f,m]);typeof s=="string"&&(s=Vl(s));let{pathname:g="/",search:S="",hash:x="",state:j=null,key:R="default",mask:A}=s,D=k.useMemo(()=>{let T=wa(g,y);return T==null?null:{location:{pathname:T,search:S,hash:x,state:j,key:R,mask:A},navigationType:r}},[y,g,S,x,j,R,r,A]);return jn(D!=null,` is not able to match the URL "${g}${S}${x}" because it does not start with the basename, so the won't render anything.`),D==null?null:k.createElement(dn.Provider,{value:p},k.createElement(ur.Provider,{children:l,value:D}))}function Y0({children:n,location:l}){return C0(Qd(n),l)}function Qd(n,l=[]){let s=[];return k.Children.forEach(n,(r,u)=>{if(!k.isValidElement(r))return;let f=[...l,u];if(r.type===k.Fragment){s.push.apply(s,Qd(r.props.children,f));return}lt(r.type===Yd,`[${typeof r.type=="string"?r.type:r.type.name}] is not a component. All component children of must be a or `),lt(!r.props.index||!r.props.children,"An index route cannot have child routes.");let m={id:r.props.id||f.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&&(m.children=Qd(r.props.children,f)),s.push(m)}),s}var Mc="get",zc="application/x-www-form-urlencoded";function Pc(n){return typeof HTMLElement<"u"&&n instanceof HTMLElement}function Q0(n){return Pc(n)&&n.tagName.toLowerCase()==="button"}function K0(n){return Pc(n)&&n.tagName.toLowerCase()==="form"}function I0(n){return Pc(n)&&n.tagName.toLowerCase()==="input"}function X0(n){return!!(n.metaKey||n.altKey||n.ctrlKey||n.shiftKey)}function V0(n,l){return n.button===0&&(!l||l==="_self")&&!X0(n)}var Cc=null;function Z0(){if(Cc===null)try{new FormData(document.createElement("form"),0),Cc=!1}catch{Cc=!0}return Cc}var J0=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Cd(n){return n!=null&&!J0.has(n)?(jn(!1,`"${n}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${zc}"`),null):n}function F0(n,l){let s,r,u,f,m;if(K0(n)){let y=n.getAttribute("action");r=y?wa(y,l):null,s=n.getAttribute("method")||Mc,u=Cd(n.getAttribute("enctype"))||zc,f=new FormData(n)}else if(Q0(n)||I0(n)&&(n.type==="submit"||n.type==="image")){let y=n.form;if(y==null)throw new Error('Cannot submit a