@atzentis/auth-react 0.0.13 → 0.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/provider.tsx","../src/hooks/use-auth-context.ts","../src/hooks/use-api-keys.ts","../src/hooks/use-auth.ts","../src/hooks/use-devices.ts","../src/hooks/use-login-activity.ts","../src/hooks/use-organizations.ts","../src/hooks/use-phone.ts","../src/hooks/use-session.ts","../src/hooks/use-sessions.ts","../src/hooks/use-user.ts"],"names":["useState","useCallback"],"mappings":"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","file":"index.js","sourcesContent":["// AuthProvider — React context provider for @atzentis/auth-react\n\nimport type { AuthError, User } from \"@atzentis/auth-sdk\";\nimport { AuthClient } from \"@atzentis/auth-sdk\";\nimport type { Session } from \"@atzentis/auth-sdk\";\nimport { createContext, useCallback, useMemo, useState } from \"react\";\nimport type { AuthContextValue, AuthProviderProps } from \"./types\";\n\nexport const AuthContext = createContext<AuthContextValue | null>(null);\n\nexport function AuthProvider({\n apiKey,\n baseUrl,\n autoRefreshToken,\n refreshThreshold,\n timeout,\n collectDeviceSignals,\n onSessionExpired,\n onTokenRefreshed,\n onNewDeviceAlert,\n children,\n initialUser,\n storage,\n}: AuthProviderProps) {\n const [client] = useState(() => {\n const handleSessionExpired = () => {\n setUser(null);\n setSession(null);\n onSessionExpired?.();\n };\n\n return new AuthClient({\n apiKey,\n baseUrl,\n timeout,\n autoRefreshToken,\n refreshThreshold,\n collectDeviceSignals,\n onSessionExpired: handleSessionExpired,\n onTokenRefreshed,\n onNewDeviceAlert,\n storage,\n });\n });\n\n const [user, setUser] = useState<User | null>(initialUser ?? null);\n const [session, setSession] = useState<Session | null>(null);\n const [isLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const clearError = useCallback(() => {\n setError(null);\n }, []);\n\n const value: AuthContextValue = useMemo(\n () => ({\n client,\n user,\n session,\n isAuthenticated: user !== null,\n isLoading,\n error,\n setUser,\n setSession,\n setError,\n clearError,\n }),\n [client, user, session, isLoading, error, clearError],\n );\n\n return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;\n}\n","// Internal hook to access auth context with error boundary\n\nimport { useContext } from \"react\";\nimport { AuthContext } from \"../provider\";\nimport type { AuthContextValue } from \"../types\";\n\nexport function useAuthContext(): AuthContextValue {\n const context = useContext(AuthContext);\n\n if (!context) {\n throw new Error(\"useAuthContext must be used within AuthProvider\");\n }\n\n return context;\n}\n","// useApiKeys hook — API key management\n\nimport type {\n ApiKey,\n AuthError,\n CreateApiKeyRequest,\n UpdateApiKeyRequest,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useApiKeys() {\n const { client } = useAuthContext();\n\n const [apiKeys, setApiKeys] = useState<ApiKey[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.apiKeys.list();\n setApiKeys(response.data);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const create = useCallback(\n async (data: CreateApiKeyRequest) => {\n const response = await client.apiKeys.create(data);\n await refresh();\n return response;\n },\n [client, refresh],\n );\n\n const get = useCallback(\n async (keyId: string) => {\n return client.apiKeys.get(keyId);\n },\n [client],\n );\n\n const update = useCallback(\n async (keyId: string, data: UpdateApiKeyRequest) => {\n const updated = await client.apiKeys.update(keyId, data);\n await refresh();\n return updated;\n },\n [client, refresh],\n );\n\n const rotate = useCallback(\n async (keyId: string) => {\n const response = await client.apiKeys.rotate(keyId);\n await refresh();\n return response;\n },\n [client, refresh],\n );\n\n const revoke = useCallback(\n async (keyId: string) => {\n await client.apiKeys.revoke(keyId);\n await refresh();\n },\n [client, refresh],\n );\n\n const validate = useCallback(\n async (keyString: string) => {\n return client.apiKeys.validate(keyString);\n },\n [client],\n );\n\n const getUsage = useCallback(\n async (keyId: string) => {\n return client.apiKeys.getUsage(keyId);\n },\n [client],\n );\n\n return {\n apiKeys,\n isLoading,\n error,\n refresh,\n create,\n get,\n update,\n rotate,\n revoke,\n validate,\n getUsage,\n };\n}\n","// useAuth hook — auth state and methods\n\nimport type {\n GetOAuthUrlRequest,\n LoginCredentials,\n SendMagicLinkRequest,\n SignupData,\n UsernameLoginCredentials,\n VerifyMagicLinkRequest,\n VerifyOAuthCodeRequest,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useAuth() {\n const { client, user, isAuthenticated, isLoading, error, setUser, clearError } = useAuthContext();\n\n const login = useCallback(\n async (credentials: LoginCredentials) => {\n const response = await client.login(credentials);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const loginWithUsername = useCallback(\n async (credentials: UsernameLoginCredentials) => {\n const response = await client.loginWithUsername(credentials);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const signup = useCallback(\n async (data: SignupData) => {\n const response = await client.signup(data);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const logout = useCallback(async () => {\n await client.logout();\n setUser(null);\n }, [client, setUser]);\n\n const logoutAllDevices = useCallback(async () => {\n await client.logoutAllDevices();\n setUser(null);\n }, [client, setUser]);\n\n const getOAuthUrl = useCallback(\n (config: GetOAuthUrlRequest) => {\n return client.getOAuthUrl(config);\n },\n [client],\n );\n\n const verifyOAuthCode = useCallback(\n async (request: VerifyOAuthCodeRequest) => {\n const response = await client.verifyOAuthCode(request);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const sendMagicLink = useCallback(\n async (request: SendMagicLinkRequest) => {\n await client.sendMagicLink(request);\n },\n [client],\n );\n\n const verifyMagicLink = useCallback(\n async (request: VerifyMagicLinkRequest) => {\n const response = await client.verifyMagicLink(request);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const isUsernameAvailable = useCallback(\n async (username: string) => {\n return client.isUsernameAvailable(username);\n },\n [client],\n );\n\n const getAccessToken = useCallback(async () => {\n return client.getAccessToken();\n }, [client]);\n\n const refreshToken = useCallback(async () => {\n return client.refreshToken();\n }, [client]);\n\n const getAuthHeader = useCallback(async () => {\n const token = await client.getAccessToken();\n if (token) {\n return { Authorization: `Bearer ${token}` };\n }\n return {};\n }, [client]);\n\n return {\n user,\n isAuthenticated,\n isLoading,\n error,\n login,\n loginWithUsername,\n signup,\n logout,\n logoutAllDevices,\n getOAuthUrl,\n verifyOAuthCode,\n sendMagicLink,\n verifyMagicLink,\n isUsernameAvailable,\n getAccessToken,\n refreshToken,\n getAuthHeader,\n clearError,\n };\n}\n","// useDevices hook — device management and trust settings\n\nimport type { AuthError, Device } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useDevices() {\n const { client } = useAuthContext();\n\n const [devices, setDevices] = useState<Device[]>([]);\n const [currentDevice, setCurrentDevice] = useState<Device | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.devices.list();\n setDevices(response.data);\n const current = response.data.find((d) => d.isCurrent) ?? null;\n setCurrentDevice(current);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const trustDevice = useCallback(\n async (id: string) => {\n await client.devices.trust(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const untrustDevice = useCallback(\n async (id: string) => {\n await client.devices.untrust(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const removeDevice = useCallback(\n async (id: string) => {\n await client.devices.remove(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const removeAllOtherDevices = useCallback(async () => {\n await client.devices.removeAllOthers();\n await refresh();\n }, [client, refresh]);\n\n return {\n devices,\n currentDevice,\n isLoading,\n error,\n refresh,\n trustDevice,\n untrustDevice,\n removeDevice,\n removeAllOtherDevices,\n };\n}\n","// useLoginActivity hook — login history with filtering and reporting\n\nimport type { AuthError, ListLoginEventsRequest, LoginEvent } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\ninterface UseLoginActivityOptions {\n limit?: number;\n}\n\nexport function useLoginActivity(options: UseLoginActivityOptions = {}) {\n const { client } = useAuthContext();\n\n const [events, setEvents] = useState<LoginEvent[]>([]);\n const [total, setTotal] = useState(0);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n const [filterOptions, setFilterOptions] = useState<ListLoginEventsRequest>({\n limit: options.limit ?? 50,\n offset: 0,\n });\n\n const hasMore = events.length < total;\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.loginActivity.list(filterOptions);\n setEvents(response.data);\n setTotal(response.total);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client, filterOptions]);\n\n const loadMore = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.loginActivity.list({\n ...filterOptions,\n offset: events.length,\n });\n setEvents((prev) => [...prev, ...response.data]);\n setTotal(response.total);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client, filterOptions, events.length]);\n\n const filter = useCallback(\n (newOptions: ListLoginEventsRequest) => {\n const merged = { ...filterOptions, ...newOptions, offset: 0 };\n setFilterOptions(merged);\n setEvents([]);\n setTotal(0);\n },\n [filterOptions],\n );\n\n const markRecognized = useCallback(\n async (eventId: string) => {\n await client.loginActivity.markRecognized(eventId);\n },\n [client],\n );\n\n const reportSuspicious = useCallback(\n async (eventId: string) => {\n return client.loginActivity.reportSuspicious(eventId);\n },\n [client],\n );\n\n return {\n events,\n total,\n hasMore,\n isLoading,\n error,\n refresh,\n loadMore,\n filter,\n markRecognized,\n reportSuspicious,\n };\n}\n","// useOrganizations hook — organization management\n\nimport type {\n AcceptInvitationRequest,\n AuthError,\n CreateOrganizationRequest,\n DeclineInvitationRequest,\n InviteMemberRequest,\n ListInvitationsRequest,\n ListMembersRequest,\n Organization,\n UpdateMemberRequest,\n UpdateOrganizationRequest,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useOrganizations() {\n const { client } = useAuthContext();\n\n const [organizations, setOrganizations] = useState<Organization[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.organizations.list();\n setOrganizations(response.data);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const create = useCallback(\n async (data: CreateOrganizationRequest) => {\n const org = await client.organizations.create(data);\n await refresh();\n return org;\n },\n [client, refresh],\n );\n\n const update = useCallback(\n async (orgId: string, data: UpdateOrganizationRequest) => {\n const org = await client.organizations.update(orgId, data);\n await refresh();\n return org;\n },\n [client, refresh],\n );\n\n const deleteOrg = useCallback(\n async (orgId: string) => {\n await client.organizations.delete(orgId);\n await refresh();\n },\n [client, refresh],\n );\n\n const listMembers = useCallback(\n async (orgId: string, options?: ListMembersRequest) => {\n return client.organizations.listMembers(orgId, options);\n },\n [client],\n );\n\n const updateMember = useCallback(\n async (orgId: string, userId: string, data: UpdateMemberRequest) => {\n return client.organizations.updateMember(orgId, userId, data);\n },\n [client],\n );\n\n const removeMember = useCallback(\n async (orgId: string, userId: string) => {\n await client.organizations.removeMember(orgId, userId);\n },\n [client],\n );\n\n const inviteMember = useCallback(\n async (orgId: string, data: InviteMemberRequest) => {\n return client.organizations.inviteMember(orgId, data);\n },\n [client],\n );\n\n const listInvitations = useCallback(\n async (orgId: string, options?: ListInvitationsRequest) => {\n return client.organizations.listInvitations(orgId, options);\n },\n [client],\n );\n\n const resendInvitation = useCallback(\n async (orgId: string, invitationId: string) => {\n await client.organizations.resendInvitation(orgId, invitationId);\n },\n [client],\n );\n\n const cancelInvitation = useCallback(\n async (orgId: string, invitationId: string) => {\n await client.organizations.cancelInvitation(orgId, invitationId);\n },\n [client],\n );\n\n const acceptInvitation = useCallback(\n async (data: AcceptInvitationRequest) => {\n await client.organizations.acceptInvitation(data);\n },\n [client],\n );\n\n const declineInvitation = useCallback(\n async (data: DeclineInvitationRequest) => {\n await client.organizations.declineInvitation(data);\n },\n [client],\n );\n\n const leave = useCallback(\n async (orgId: string) => {\n await client.organizations.leave(orgId);\n await refresh();\n },\n [client, refresh],\n );\n\n return {\n organizations,\n isLoading,\n error,\n refresh,\n create,\n update,\n delete: deleteOrg,\n listMembers,\n updateMember,\n removeMember,\n inviteMember,\n listInvitations,\n resendInvitation,\n cancelInvitation,\n acceptInvitation,\n declineInvitation,\n leave,\n };\n}\n","// usePhone hook — phone OTP authentication\n\nimport type { AuthError } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function usePhone() {\n const { client, setUser } = useAuthContext();\n\n const [isSending, setIsSending] = useState(false);\n const [isVerifying, setIsVerifying] = useState(false);\n const [codeSent, setCodeSent] = useState(false);\n const [expiresIn, setExpiresIn] = useState<number | null>(null);\n const [error, setError] = useState<AuthError | null>(null);\n\n const sendOTP = useCallback(\n async (phoneNumber: string) => {\n setIsSending(true);\n setError(null);\n try {\n const response = await client.phone.sendOTP({ phoneNumber });\n setCodeSent(true);\n setExpiresIn(response.expiresIn);\n return response;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsSending(false);\n }\n },\n [client],\n );\n\n const verify = useCallback(\n async (phoneNumber: string, code: string) => {\n setIsVerifying(true);\n setError(null);\n try {\n const response = await client.phone.verify({ phoneNumber, code });\n setUser(response.user);\n return response;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsVerifying(false);\n }\n },\n [client, setUser],\n );\n\n const signIn = useCallback(\n async (phoneNumber: string, password: string) => {\n setIsVerifying(true);\n setError(null);\n try {\n const response = await client.phone.signIn({ phoneNumber, password });\n setUser(response.user);\n return response;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsVerifying(false);\n }\n },\n [client, setUser],\n );\n\n return {\n isSending,\n isVerifying,\n codeSent,\n expiresIn,\n error,\n sendOTP,\n verify,\n signIn,\n };\n}\n","// useSession hook — current session state\n\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useSession() {\n const { user, session, isAuthenticated, isLoading } = useAuthContext();\n\n return {\n user,\n session,\n isAuthenticated,\n isLoading,\n };\n}\n","// useSessions hook — session management with multi-session support\n\nimport type {\n AuthError,\n DeviceSession,\n RevokeAllSessionsOptions,\n Session,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useSessions() {\n const { client, session, setUser } = useAuthContext();\n\n const [sessions, setSessions] = useState<Session[]>([]);\n const [deviceSessions, setDeviceSessions] = useState<DeviceSession[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const [sessionsResponse, deviceSessionsResponse] = await Promise.all([\n client.sessions.list(),\n client.sessions.listDeviceSessions(),\n ]);\n setSessions(sessionsResponse.data);\n setDeviceSessions(deviceSessionsResponse);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const revokeSession = useCallback(\n async (id: string) => {\n await client.sessions.revoke(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const revokeAllSessions = useCallback(\n async (options?: RevokeAllSessionsOptions) => {\n await client.sessions.revokeAll(options);\n await refresh();\n },\n [client, refresh],\n );\n\n const switchAccount = useCallback(\n async (sessionToken: string) => {\n const response = await client.sessions.setActive({ sessionToken });\n setUser(response.user);\n },\n [client, setUser],\n );\n\n const revokeDeviceSession = useCallback(\n async (sessionToken: string) => {\n await client.sessions.revokeDeviceSession({ sessionToken });\n await refresh();\n },\n [client, refresh],\n );\n\n return {\n session,\n sessions,\n deviceSessions,\n isLoading,\n error,\n refresh,\n revokeSession,\n revokeAllSessions,\n switchAccount,\n revokeDeviceSession,\n };\n}\n","// useUser hook — profile, 2FA, OAuth, and phone management\n\nimport type { AuthError, ConnectOAuthRequest, UserUpdate } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useUser() {\n const { client, user, setUser } = useAuthContext();\n\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const updateProfile = useCallback(\n async (data: UserUpdate) => {\n setIsLoading(true);\n setError(null);\n try {\n const updated = await client.users.update(data);\n setUser(updated);\n return updated;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsLoading(false);\n }\n },\n [client, setUser],\n );\n\n const changePassword = useCallback(\n async (currentPassword: string, newPassword: string) => {\n await client.users.changePassword({ currentPassword, newPassword });\n },\n [client],\n );\n\n const setupTwoFactor = useCallback(async () => {\n return client.users.setupTwoFactor();\n }, [client]);\n\n const verifyTwoFactorSetup = useCallback(\n async (code: string) => {\n await client.users.verifyTwoFactorSetup({ code });\n },\n [client],\n );\n\n const disableTwoFactor = useCallback(\n async (password: string) => {\n await client.users.disableTwoFactor({ password });\n },\n [client],\n );\n\n const deleteAccount = useCallback(\n async (password: string, reason?: string) => {\n await client.users.deleteAccount({ password, reason });\n setUser(null);\n },\n [client, setUser],\n );\n\n const listConnectedProviders = useCallback(async () => {\n return client.users.listConnectedProviders();\n }, [client]);\n\n const connectOAuthProvider = useCallback(\n async (data: ConnectOAuthRequest) => {\n return client.users.connectOAuthProvider(data);\n },\n [client],\n );\n\n const disconnectOAuthProvider = useCallback(\n async (provider: string) => {\n await client.users.disconnectOAuthProvider(provider);\n },\n [client],\n );\n\n const addPhoneNumber = useCallback(\n async (phoneNumber: string) => {\n await client.users.addPhoneNumber({ phoneNumber });\n },\n [client],\n );\n\n const verifyPhoneNumber = useCallback(\n async (code: string) => {\n await client.users.verifyPhoneNumber({ code });\n },\n [client],\n );\n\n const removePhoneNumber = useCallback(\n async (password: string) => {\n await client.users.removePhoneNumber({ password });\n },\n [client],\n );\n\n return {\n user,\n isLoading,\n error,\n updateProfile,\n changePassword,\n setupTwoFactor,\n verifyTwoFactorSetup,\n disableTwoFactor,\n deleteAccount,\n listConnectedProviders,\n connectOAuthProvider,\n disconnectOAuthProvider,\n addPhoneNumber,\n verifyPhoneNumber,\n removePhoneNumber,\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/provider/auth-provider.tsx","../src/localization/error-codes.ts","../src/localization/auth-localization.ts","../src/localization/get-localized-error.ts","../src/hooks/use-auth-context.ts","../src/hooks/use-api-keys.ts","../src/hooks/use-auth.ts","../src/hooks/use-auth-localization.ts","../src/hooks/use-devices.ts","../src/hooks/use-login-activity.ts","../src/hooks/use-organizations.ts","../src/hooks/use-phone.ts","../src/hooks/use-session.ts","../src/hooks/use-sessions.ts","../src/hooks/use-user.ts","../src/helpers/initials.ts","../src/components/sessions/account-switcher.tsx","../src/components/sessions/session-guard.tsx","../src/components/auth/auth-view-paths.ts","../src/helpers/to-auth-error.ts","../src/schemas/email-otp-schema.ts","../src/components/shared/submit-button.tsx","../src/components/shared/utils.ts","../src/components/auth/forms/email-otp.tsx","../src/components/auth/forms/email-verification.tsx","../src/schemas/forgot-password-schema.ts","../src/components/auth/forms/forgot-password.tsx","../src/schemas/login-schema.ts","../src/components/auth/oauth-button.tsx","../src/schemas/phone-login-schema.ts","../src/components/shared/country-codes.ts","../src/components/auth/forms/phone-login.tsx","../src/components/auth/forms/login.tsx","../src/schemas/recover-account-schema.ts","../src/components/auth/forms/recover-account.tsx","../src/schemas/reset-password-schema.ts","../src/components/auth/forms/reset-password.tsx","../src/schemas/signup-schema.ts","../src/components/auth/forms/signup.tsx","../src/schemas/two-factor-schema.ts","../src/components/auth/forms/two-factor.tsx","../src/components/auth/auth-view.tsx","../src/schemas/magic-link-schema.ts","../src/components/auth/forms/magic-link.tsx","../src/components/devices/device-list.tsx","../src/components/shared/loading-boundary.tsx","../src/helpers/risk-utils.ts","../src/components/activity/login-activity-feed.tsx","../src/components/organizations/organization-menu.tsx","../src/components/users/user-menu.tsx"],"names":["useState","useCallback","useContext","jsx","Fragment","AuthError","Button","useEffect","jsxs","Card","z","useForm","zodResolver","FormInput","otpVerifySchema","useMemo","OTPInput","FormPasswordInput","useRef","CardHeader","CardTitle","CardDescription","CardContent","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","DropdownMenuSeparator"],"mappings":";;;;;;;;;AASO,IAAM,WAAA,GAAc,cAAuC,IAAI;AAM/D,IAAM,sBAAsB,aAAA,CAAwC;AAAA,EACzE,SAAA,EAAW,IAAA;AAAA,EACX,cAAA,EAAgB;AAClB,CAAC;AAEM,SAAS,YAAA,CAAa;AAAA,EAC3B,MAAA;AAAA,EACA,OAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,OAAA;AAAA,EACA,oBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA,GAAiB;AACnB,CAAA,EAAsB;AACpB,EAAA,MAAM,CAAC,MAAM,CAAA,GAAI,QAAA,CAAS,MAAM;AAC9B,IAAA,MAAM,uBAAuB,MAAM;AACjC,MAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,gBAAA,IAAmB;AAAA,IACrB,CAAA;AAEA,IAAA,OAAO,IAAI,UAAA,CAAW;AAAA,MACpB,MAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,gBAAA;AAAA,MACA,gBAAA;AAAA,MACA,oBAAA;AAAA,MACA,gBAAA,EAAkB,oBAAA;AAAA,MAClB,gBAAA;AAAA,MACA,gBAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH,CAAC,CAAA;AAED,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,QAAA,CAAsB,eAAe,IAAI,CAAA;AACjE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAyB,IAAI,CAAA;AAC3D,EAAA,MAAM,CAAC,SAAS,CAAA,GAAI,QAAA,CAAS,KAAK,CAAA;AAClC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAA2B,IAAI,CAAA;AAEzD,EAAA,MAAM,UAAA,GAAa,YAAY,MAAM;AACnC,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAA,GAA0B,OAAA;AAAA,IAC9B,OAAO;AAAA,MACL,MAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,iBAAiB,IAAA,KAAS,IAAA;AAAA,MAC1B,SAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,SAAA,EAAW,OAAO,UAAU;AAAA,GACtD;AAEA,EAAA,MAAM,iBAAA,GAAoB,OAAA;AAAA,IACxB,OAAO,EAAE,SAAA,EAAW,YAAA,IAAgB,MAAM,cAAA,EAAe,CAAA;AAAA,IACzD,CAAC,cAAc,cAAc;AAAA,GAC/B;AAEA,EAAA,uBACE,GAAA,CAAC,WAAA,CAAY,QAAA,EAAZ,EAAqB,KAAA,EACpB,QAAA,kBAAA,GAAA,CAAC,mBAAA,CAAoB,QAAA,EAApB,EAA6B,KAAA,EAAO,iBAAA,EAClC,QAAA,EACH,CAAA,EACF,CAAA;AAEJ;;;AC3FO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,mBAAA,EAAqB,2BAAA;AAAA,EACrB,kBAAA,EAAoB,+BAAA;AAAA,EACpB,mBAAA,EAAqB,uCAAA;AAAA,EACrB,oBAAA,EAAsB,sBAAA;AAAA,EACtB,WAAA,EAAa,+BAAA;AAAA,EACb,WAAA,EAAa,2BAAA;AAAA,EACb,gBAAA,EAAkB,gCAAA;AAAA,EAClB,mBAAA,EAAqB,gCAAA;AAAA,EACrB,cAAA,EAAgB,8BAAA;AAAA,EAChB,cAAA,EAAgB,2BAAA;AAAA,EAChB,gBAAA,EAAkB,kBAAA;AAAA,EAClB,iBAAA,EAAmB,2BAAA;AAAA,EACnB,gBAAA,EAAkB,kBAAA;AAAA,EAClB,qBAAA,EAAuB,uBAAA;AAAA,EACvB,eAAA,EAAiB,kCAAA;AAAA,EACjB,qBAAA,EAAuB,qCAAA;AAAA,EACvB,gBAAA,EAAkB,kCAAA;AAAA,EAClB,eAAA,EAAiB,6BAAA;AAAA,EACjB,iBAAA,EAAmB,+CAAA;AAAA,EACnB,eAAA,EAAiB,iBAAA;AAAA,EACjB,aAAA,EAAe,mBAAA;AAAA,EACf,aAAA,EAAe,eAAA;AAAA,EACf,iBAAA,EAAmB,mDAAA;AAAA,EACnB,sBAAA,EAAwB,wBAAA;AAAA,EACxB,iBAAA,EAAmB,mBAAA;AAAA,EACnB,YAAA,EAAc,4CAAA;AAAA,EACd,aAAA,EAAe,8CAAA;AAAA,EACf,OAAA,EAAS,sCAAA;AAAA,EACT,cAAA,EAAgB,gBAAA;AAAA,EAChB,mBAAA,EAAqB,uCAAA;AAAA,EACrB,aAAA,EAAe,uBAAA;AAAA,EACf,aAAA,EAAe,sBAAA;AAAA,EACf,kBAAA,EAAoB,6BAAA;AAAA,EACpB,qBAAA,EAAuB,uBAAA;AAAA,EACvB,aAAA,EAAe,mBAAA;AAAA,EACf,WAAA,EAAa,0BAAA;AAAA,EACb,WAAA,EAAa;AACf;;;AC3BO,IAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA,EAI9B,QAAA,EAAU,UAAA;AAAA;AAAA,EAGV,MAAA,EAAQ,QAAA;AAAA;AAAA,EAGR,IAAA,EAAM,MAAA;AAAA;AAAA,EAGN,MAAA,EAAQ,QAAA;AAAA;AAAA,EAGR,MAAA,EAAQ,QAAA;AAAA;AAAA,EAGR,MAAA,EAAQ,QAAA;AAAA;AAAA,EAGR,IAAA,EAAM,MAAA;AAAA;AAAA,EAGN,OAAA,EAAS,SAAA;AAAA;AAAA,EAGT,OAAA,EAAS,YAAA;AAAA;AAAA,EAGT,SAAA,EAAW,WAAA;AAAA;AAAA,EAGX,OAAA,EAAS,SAAA;AAAA;AAAA,EAGT,cAAA,EAAgB,gBAAA;AAAA;AAAA,EAGhB,oBAAA,EAAsB,sBAAA;AAAA;AAAA;AAAA,EAKtB,OAAA,EAAS,SAAA;AAAA;AAAA,EAGT,cAAA,EAAgB,SAAA;AAAA;AAAA,EAGhB,mBAAA,EAAqB,mCAAA;AAAA;AAAA,EAGrB,4BAAA,EAA8B,yCAAA;AAAA;AAAA,EAG9B,4BAAA,EAA8B,mBAAA;AAAA;AAAA,EAG9B,UAAA,EAAY,eAAA;AAAA;AAAA,EAGZ,iBAAA,EAAmB,eAAA;AAAA;AAAA,EAGnB,oBAAA,EAAsB,UAAA;AAAA;AAAA,EAGtB,oBAAA,EAAsB,uBAAA;AAAA;AAAA,EAGtB,iBAAA,EAAmB,mBAAA;AAAA;AAAA,EAGnB,iBAAA,EAAmB,mBAAA;AAAA;AAAA,EAGnB,gBAAA,EAAkB,kBAAA;AAAA;AAAA,EAGlB,YAAA,EAAc,cAAA;AAAA;AAAA,EAGd,oBAAA,EAAsB,wBAAA;AAAA;AAAA,EAGtB,WAAA,EAAa,aAAA;AAAA;AAAA;AAAA,EAKb,OAAA,EAAS,SAAA;AAAA;AAAA,EAGT,cAAA,EAAgB,gBAAA;AAAA;AAAA,EAGhB,mBAAA,EAAqB,6CAAA;AAAA;AAAA,EAGrB,aAAA,EAAe,6CAAA;AAAA;AAAA,EAGf,gBAAA,EAAkB,MAAA;AAAA;AAAA,EAGlB,gBAAA,EAAkB,8BAAA;AAAA;AAAA,EAGlB,oBAAA,EAAsB,UAAA;AAAA;AAAA,EAGtB,QAAA,EAAU,UAAA;AAAA;AAAA,EAGV,4BAAA,EAA8B,kBAAA;AAAA;AAAA,EAG9B,uBAAA,EAAyB,0BAAA;AAAA;AAAA,EAGzB,YAAA,EAAc,mCAAA;AAAA;AAAA,EAGd,kBAAA,EAAoB,2BAAA;AAAA;AAAA,EAGpB,uBAAA,EAAyB,iCAAA;AAAA;AAAA,EAGzB,gBAAA,EAAkB,kBAAA;AAAA;AAAA,EAGlB,cAAA,EAAgB,gBAAA;AAAA;AAAA;AAAA,EAKhB,wBAAA,EAA0B,cAAA;AAAA;AAAA,EAG1B,YAAA,EAAc,cAAA;AAAA;AAAA,EAGd,sBAAA,EAAwB,WAAA;AAAA;AAAA,EAGxB,yBAAA,EAA2B,iBAAA;AAAA;AAAA,EAG3B,iBAAA,EAAmB,mBAAA;AAAA;AAAA,EAGnB,uBAAA,EAAyB,mBAAA;AAAA;AAAA,EAGzB,MAAA,EAAQ,QAAA;AAAA;AAAA,EAGR,SAAA,EAAW,cAAA;AAAA;AAAA,EAGX,eAAA,EAAiB,iBAAA;AAAA;AAAA,EAGjB,WAAA,EAAa,aAAA;AAAA;AAAA,EAGb,oBAAA,EAAsB,uBAAA;AAAA;AAAA;AAAA,EAKtB,aAAA,EAAe,eAAA;AAAA;AAAA,EAGf,WAAA,EAAa,gBAAA;AAAA;AAAA;AAAA,EAKb,UAAA,EAAY,YAAA;AAAA;AAAA,EAGZ,iBAAA,EAAmB,iBAAA;AAAA;AAAA,EAGnB,sBAAA,EAAwB,0CAAA;AAAA;AAAA,EAGxB,gBAAA,EAAkB,yBAAA;AAAA;AAAA,EAGlB,eAAA,EAAiB,iDAAA;AAAA;AAAA,EAGjB,OAAA,EAAS,YAAA;AAAA;AAAA,EAGT,MAAA,EAAQ,QAAA;AAAA;AAAA,EAGR,SAAA,EAAW,cAAA;AAAA;AAAA;AAAA,EAKX,QAAA,EAAU,UAAA;AAAA;AAAA,EAGV,YAAA,EAAc,cAAA;AAAA;AAAA,EAGd,gBAAA,EAAkB,kBAAA;AAAA;AAAA,EAGlB,eAAA,EAAiB,iBAAA;AAAA;AAAA,EAGjB,2BAAA,EAA6B,qCAAA;AAAA;AAAA,EAG7B,uBAAA,EAAyB,2BAAA;AAAA;AAAA,EAGzB,eAAA,EAAiB,iBAAA;AAAA;AAAA,EAGjB,sBAAA,EAAwB,iBAAA;AAAA;AAAA,EAGxB,2BAAA,EAA6B,yCAAA;AAAA;AAAA,EAG7B,qBAAA,EAAuB,qCAAA;AAAA;AAAA,EAGvB,cAAA,EAAgB,gBAAA;AAAA;AAAA,EAGhB,qBAAA,EAAuB,mBAAA;AAAA;AAAA,EAGvB,sBAAA,EAAwB,6BAAA;AAAA;AAAA,EAGxB,oBAAA,EAAsB,sBAAA;AAAA;AAAA,EAGtB,YAAA,EAAc,cAAA;AAAA;AAAA,EAGd,wBAAA,EAA0B,2DAAA;AAAA;AAAA;AAAA,EAK1B,gBAAA,EAAkB,kBAAA;AAAA;AAAA,EAGlB,SAAA,EAAW,wBAAA;AAAA;AAAA;AAAA,EAKX,kBAAA,EAAoB,oBAAA;AAAA;AAAA,EAGpB,8BAAA,EAAgC,2BAAA;AAAA;AAAA,EAGhC,0BAAA,EAA4B,6BAAA;AAAA;AAAA,EAG5B,2BAAA,EAA6B,yBAAA;AAAA;AAAA,EAG7B,yBAAA,EAA2B,2BAAA;AAAA;AAAA,EAG3B,uBAAA,EAAyB,yBAAA;AAAA;AAAA;AAAA,EAKzB,SAAA,EAAW,yBAAA;AAAA;AAAA,EAGX,qBAAA,EAAuB,iDAAA;AAAA;AAAA,EAGvB,cAAA,EAAgB,mBAAA;AAAA;AAAA,EAGhB,uBAAA,EAAyB,wBAAA;AAAA;AAAA;AAAA,EAKzB,eAAA,EAAiB,iBAAA;AAAA;AAAA,EAGjB,2BAAA,EAA6B,gCAAA;AAAA;AAAA,EAG7B,sBAAA,EAAwB,wBAAA;AAAA;AAAA,EAGxB,eAAA,EAAiB,sBAAA;AAAA;AAAA,EAGjB,gBAAA,EAAkB,wBAAA;AAAA;AAAA,EAGlB,gBAAA,EAAkB,kBAAA;AAAA;AAAA,EAGlB,OAAA,EAAS,+BAAA;AAAA;AAAA;AAAA,EAKT,eAAA,EAAiB,iBAAA;AAAA;AAAA,EAGjB,cAAA,EAAgB,gBAAA;AAAA;AAAA,EAGhB,QAAA,EAAU,UAAA;AAAA;AAAA,EAGV,oBAAA,EAAsB,6BAAA;AAAA;AAAA,EAGtB,YAAA,EAAc,OAAA;AAAA;AAAA,EAGd,cAAA,EAAgB,SAAA;AAAA;AAAA,EAGhB,eAAA,EAAiB,oBAAA;AAAA;AAAA,EAGjB,UAAA,EAAY,kBAAA;AAAA;AAAA,EAGZ,SAAA,EAAW,YAAA;AAAA;AAAA,EAGX,QAAA,EAAU,KAAA;AAAA;AAAA,EAGV,QAAA,EAAU,UAAA;AAAA;AAAA,EAGV,iBAAA,EAAmB,0CAAA;AAAA;AAAA;AAAA,EAKnB,cAAA,EAAgB,gBAAA;AAAA;AAAA,EAGhB,0BAAA,EAA4B,uBAAA;AAAA;AAAA,EAG5B,QAAA,EAAU,KAAA;AAAA;AAAA,EAGV,WAAA,EAAa,QAAA;AAAA;AAAA,EAGb,SAAA,EAAW,MAAA;AAAA;AAAA,EAGX,eAAA,EAAiB,aAAA;AAAA;AAAA,EAGjB,iBAAA,EAAmB,QAAA;AAAA;AAAA,EAGnB,gBAAA,EAAkB,qBAAA;AAAA;AAAA,EAGlB,WAAA,EAAa,yBAAA;AAAA;AAAA;AAAA,EAKb,QAAA,EAAU,UAAA;AAAA;AAAA,EAGV,oBAAA,EAAsB,2BAAA;AAAA;AAAA,EAGtB,WAAA,EAAa,aAAA;AAAA;AAAA,EAGb,cAAA,EAAgB,gBAAA;AAAA;AAAA,EAGhB,cAAA,EAAgB,gBAAA;AAAA;AAAA,EAGhB,gBAAA,EAAkB,kBAAA;AAAA;AAAA,EAGlB,QAAA,EAAU,UAAA;AAAA;AAAA;AAAA,EAKV,YAAA,EAAc,cAAA;AAAA;AAAA,EAGd,aAAA,EAAe,eAAA;AAAA;AAAA,EAGf,yBAAA,EAA2B,2BAAA;AAAA;AAAA,EAG3B,mBAAA,EAAqB,qBAAA;AAAA;AAAA,EAGrB,mBAAA,EAAqB,qBAAA;AAAA;AAAA,EAGrB,iBAAA,EAAmB,MAAA;AAAA;AAAA,EAGnB,6BAAA,EAA+B,WAAA;AAAA;AAAA,EAG/B,kBAAA,EAAoB,oBAAA;AAAA;AAAA,EAGpB,mBAAA,EAAqB,qBAAA;AAAA;AAAA,EAGrB,OAAA,EAAS,SAAA;AAAA;AAAA,EAGT,aAAA,EAAe,eAAA;AAAA;AAAA,EAGf,aAAA,EAAe,eAAA;AAAA;AAAA,EAGf,IAAA,EAAM,MAAA;AAAA;AAAA,EAGN,KAAA,EAAO,OAAA;AAAA;AAAA,EAGP,MAAA,EAAQ,QAAA;AAAA;AAAA,EAGR,KAAA,EAAO,OAAA;AAAA;AAAA;AAAA,EAKP,QAAA,EAAU,UAAA;AAAA;AAAA,EAGV,OAAA,EAAS,SAAA;AAAA;AAAA,EAGT,MAAA,EAAQ,QAAA;AAAA;AAAA,EAGR,kBAAA,EAAoB,qCAAA;AAAA;AAAA,EAGpB,aAAA,EAAe,eAAA;AAAA;AAAA,EAGf,aAAA,EAAe,eAAA;AAAA;AAAA,EAGf,KAAA,EAAO,OAAA;AAAA;AAAA,EAGP,IAAA,EAAM,MAAA;AAAA;AAAA;AAAA,EAKN,UAAA,EAAY,YAAA;AAAA;AAAA,EAGZ,iBAAA,EAAmB,2BAAA;AAAA;AAAA,EAGnB,sBAAA,EAAwB,8BAAA;AAAA;AAAA,EAGxB,iBAAA,EAAmB,aAAA;AAAA;AAAA,EAGnB,kBAAA,EAAoB,4CAAA;AAAA;AAAA,EAGpB,mBAAA,EAAqB,6CAAA;AAAA;AAAA,EAGrB,iBAAA,EAAmB,mBAAA;AAAA;AAAA,EAGnB,kBAAA,EAAoB,oBAAA;AAAA;AAAA,EAGpB,YAAA,EAAc,cAAA;AAAA;AAAA,EAGd,wBAAA,EAA0B,oCAAA;AAAA;AAAA;AAAA,EAK1B,eAAA,EAAiB,yBAAA;AAAA;AAAA,EAGjB,eAAA,EAAiB,iBAAA;AAAA;AAAA,EAGjB,iBAAA,EAAmB,mBAAA;AAAA;AAAA,EAGnB,uBAAA,EAAyB,mBAAA;AAAA;AAAA;AAAA,EAKzB,sBAAA,EAAwB,wBAAA;AAAA;AAAA,EAGxB,iBAAA,EAAmB,sBAAA;AAAA;AAAA,EAGnB,cAAA,EAAgB,2BAAA;AAAA;AAAA,EAGhB,WAAA,EAAa,aAAA;AAAA;AAAA,EAGb,UAAA,EAAY,YAAA;AAAA;AAAA,EAGZ,GAAG;AACL;ACriBO,SAAS,iBAAA,CACd,KAAA,EACA,YAAA,EACA,cAAA,EACQ;AACR,EAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,IAAA,IAAI,KAAA,YAAiB,KAAA,IAAS,KAAA,CAAM,OAAA,SAAgB,KAAA,CAAM,OAAA;AAC1D,IAAA,OAAO,gBAAA,CAAiB,cAAA;AAAA,EAC1B;AAEA,EAAA,IAAI,iBAAiB,SAAA,EAAW;AAC9B,IAAA,MAAM,YAAY,KAAA,CAAM,IAAA;AACxB,IAAA,IAAI,YAAA,GAAe,SAAS,CAAA,EAAG,OAAO,aAAa,SAAS,CAAA;AAAA,EAC9D;AAEA,EAAA,IAAI,KAAA,YAAiB,KAAA,IAAS,KAAA,CAAM,OAAA,SAAgB,KAAA,CAAM,OAAA;AAE1D,EAAA,OAAO,YAAA,EAAc,kBAAkB,gBAAA,CAAiB,cAAA;AAC1D;AC5BO,SAAS,cAAA,GAAmC;AACjD,EAAA,MAAM,OAAA,GAAU,WAAW,WAAW,CAAA;AAEtC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,iDAAiD,CAAA;AAAA,EACnE;AAEA,EAAA,OAAO,OAAA;AACT;;;ACHO,SAAS,UAAA,GAAa;AAC3B,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,cAAA,EAAe;AAElC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,QAAAA,CAAmB,EAAE,CAAA;AACnD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAA2B,IAAI,CAAA;AAEzD,EAAA,MAAM,OAAA,GAAUC,YAAY,YAAY;AACtC,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,OAAA,CAAQ,IAAA,EAAK;AAC3C,MAAA,UAAA,CAAW,SAAS,IAAI,CAAA;AAAA,IAC1B,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAgB,CAAA;AAAA,IAC3B,CAAA,SAAE;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,MAAA,GAASA,WAAAA;AAAA,IACb,OAAO,IAAA,KAA8B;AACnC,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,OAAA,CAAQ,OAAO,IAAI,CAAA;AACjD,MAAA,MAAM,OAAA,EAAQ;AACd,MAAA,OAAO,QAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,GAAA,GAAMA,WAAAA;AAAA,IACV,OAAO,KAAA,KAAkB;AACvB,MAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAA;AAAA,IACjC,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,MAAA,GAASA,WAAAA;AAAA,IACb,OAAO,OAAe,IAAA,KAA8B;AAClD,MAAA,MAAM,UAAU,MAAM,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,OAAO,IAAI,CAAA;AACvD,MAAA,MAAM,OAAA,EAAQ;AACd,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,MAAA,GAASA,WAAAA;AAAA,IACb,OAAO,KAAA,KAAkB;AACvB,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,OAAA,CAAQ,OAAO,KAAK,CAAA;AAClD,MAAA,MAAM,OAAA,EAAQ;AACd,MAAA,OAAO,QAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,MAAA,GAASA,WAAAA;AAAA,IACb,OAAO,KAAA,KAAkB;AACvB,MAAA,MAAM,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA;AACjC,MAAA,MAAM,OAAA,EAAQ;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,QAAA,GAAWA,WAAAA;AAAA,IACf,OAAO,SAAA,KAAsB;AAC3B,MAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,QAAA,CAAS,SAAS,CAAA;AAAA,IAC1C,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,QAAA,GAAWA,WAAAA;AAAA,IACf,OAAO,KAAA,KAAkB;AACvB,MAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,QAAA,CAAS,KAAK,CAAA;AAAA,IACtC,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,GAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AACF;AClFO,SAAS,OAAA,GAAU;AACxB,EAAA,MAAM,EAAE,QAAQ,IAAA,EAAM,eAAA,EAAiB,WAAW,KAAA,EAAO,OAAA,EAAS,UAAA,EAAW,GAAI,cAAA,EAAe;AAEhG,EAAA,MAAM,KAAA,GAAQA,WAAAA;AAAA,IACZ,OAAO,WAAA,KAAkC;AACvC,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,KAAA,CAAM,WAAW,CAAA;AAC/C,MAAA,OAAA,CAAQ,SAAS,IAAI,CAAA;AACrB,MAAA,OAAO,QAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,iBAAA,GAAoBA,WAAAA;AAAA,IACxB,OAAO,WAAA,KAA0C;AAC/C,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,iBAAA,CAAkB,WAAW,CAAA;AAC3D,MAAA,OAAA,CAAQ,SAAS,IAAI,CAAA;AACrB,MAAA,OAAO,QAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,MAAA,GAASA,WAAAA;AAAA,IACb,OAAO,IAAA,KAAqB;AAC1B,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,MAAA,CAAO,IAAI,CAAA;AACzC,MAAA,OAAA,CAAQ,SAAS,IAAI,CAAA;AACrB,MAAA,OAAO,QAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,MAAA,GAASA,YAAY,YAAY;AACrC,IAAA,MAAM,OAAO,MAAA,EAAO;AACpB,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,EACd,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAEpB,EAAA,MAAM,gBAAA,GAAmBA,YAAY,YAAY;AAC/C,IAAA,MAAM,OAAO,gBAAA,EAAiB;AAC9B,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,EACd,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAEpB,EAAA,MAAM,WAAA,GAAcA,WAAAA;AAAA,IAClB,CAAC,MAAA,KAA+B;AAC9B,MAAA,OAAO,MAAA,CAAO,YAAY,MAAM,CAAA;AAAA,IAClC,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,eAAA,GAAkBA,WAAAA;AAAA,IACtB,OAAO,OAAA,KAAoC;AACzC,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,eAAA,CAAgB,OAAO,CAAA;AACrD,MAAA,OAAA,CAAQ,SAAS,IAAI,CAAA;AACrB,MAAA,OAAO,QAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,aAAA,GAAgBA,WAAAA;AAAA,IACpB,OAAO,OAAA,KAAkC;AACvC,MAAA,MAAM,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,IACpC,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,eAAA,GAAkBA,WAAAA;AAAA,IACtB,OAAO,OAAA,KAAoC;AACzC,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,eAAA,CAAgB,OAAO,CAAA;AACrD,MAAA,OAAA,CAAQ,SAAS,IAAI,CAAA;AACrB,MAAA,OAAO,QAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,mBAAA,GAAsBA,WAAAA;AAAA,IAC1B,OAAO,QAAA,KAAqB;AAC1B,MAAA,OAAO,MAAA,CAAO,oBAAoB,QAAQ,CAAA;AAAA,IAC5C,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,cAAA,GAAiBA,YAAY,YAAY;AAC7C,IAAA,OAAO,OAAO,cAAA,EAAe;AAAA,EAC/B,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,YAAA,GAAeA,YAAY,YAAY;AAC3C,IAAA,OAAO,OAAO,YAAA,EAAa;AAAA,EAC7B,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,aAAA,GAAgBA,YAAY,YAAY;AAC5C,IAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,cAAA,EAAe;AAC1C,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAO,EAAE,aAAA,EAAe,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA,EAAG;AAAA,IAC5C;AACA,IAAA,OAAO,EAAC;AAAA,EACV,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,oBAAA,GAAuBA,WAAAA;AAAA,IAC3B,OAAO,OAAA,KAAyC;AAC9C,MAAA,MAAM,MAAA,CAAO,qBAAqB,OAAO,CAAA;AAAA,IAC3C,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,aAAA,GAAgBA,WAAAA;AAAA,IACpB,OAAO,OAAA,KAAkC;AACvC,MAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,IACrC,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,qBAAA,GAAwBA,WAAAA;AAAA,IAC5B,OAAO,OAAA,KAA0C;AAC/C,MAAA,MAAM,MAAA,CAAO,sBAAsB,OAAO,CAAA;AAAA,IAC5C,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,WAAA,GAAcA,WAAAA;AAAA,IAClB,OAAO,OAAA,KAAgC;AACrC,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,WAAA,CAAY,OAAO,CAAA;AACjD,MAAA,OAAA,CAAQ,SAAS,IAAI,CAAA;AACrB,MAAA,OAAO,QAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,eAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAA;AAAA,IACA,mBAAA;AAAA,IACA,KAAA;AAAA,IACA,iBAAA;AAAA,IACA,MAAA;AAAA,IACA,gBAAA;AAAA,IACA,YAAA;AAAA,IACA,oBAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,qBAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AACF;AC7JO,SAAS,mBAAA,GAAiD;AAC/D,EAAA,MAAM,GAAA,GAAMC,WAAW,mBAAmB,CAAA;AAC1C,EAAA,MAAM,YAAA,GAAe,IAAI,SAAA,GAAY,EAAE,GAAG,gBAAA,EAAkB,GAAG,GAAA,CAAI,SAAA,EAAU,GAAI,gBAAA;AACjF,EAAA,OAAO,EAAE,YAAA,EAAc,cAAA,EAAgB,GAAA,CAAI,cAAA,EAAe;AAC5D;ACRO,SAAS,UAAA,GAAa;AAC3B,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,cAAA,EAAe;AAElC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIF,QAAAA,CAAmB,EAAE,CAAA;AACnD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,SAAwB,IAAI,CAAA;AACtE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAA2B,IAAI,CAAA;AAEzD,EAAA,MAAM,OAAA,GAAUC,YAAY,YAAY;AACtC,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,OAAA,CAAQ,IAAA,EAAK;AAC3C,MAAA,UAAA,CAAW,SAAS,IAAI,CAAA;AACxB,MAAA,MAAM,OAAA,GAAU,SAAS,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,CAAA,IAAK,IAAA;AAC1D,MAAA,gBAAA,CAAiB,OAAO,CAAA;AAAA,IAC1B,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAgB,CAAA;AAAA,IAC3B,CAAA,SAAE;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,WAAA,GAAcA,WAAAA;AAAA,IAClB,OAAO,EAAA,KAAe;AACpB,MAAA,MAAM,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAM,EAAE,CAAA;AAC7B,MAAA,MAAM,OAAA,EAAQ;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,aAAA,GAAgBA,WAAAA;AAAA,IACpB,OAAO,EAAA,KAAe;AACpB,MAAA,MAAM,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,EAAE,CAAA;AAC/B,MAAA,MAAM,OAAA,EAAQ;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,YAAA,GAAeA,WAAAA;AAAA,IACnB,OAAO,EAAA,KAAe;AACpB,MAAA,MAAM,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,EAAE,CAAA;AAC9B,MAAA,MAAM,OAAA,EAAQ;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,qBAAA,GAAwBA,YAAY,YAAY;AACpD,IAAA,MAAM,MAAA,CAAO,QAAQ,eAAA,EAAgB;AACrC,IAAA,MAAM,OAAA,EAAQ;AAAA,EAChB,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAEpB,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF;AACF;AC3DO,SAAS,gBAAA,CAAiB,OAAA,GAAmC,EAAC,EAAG;AACtE,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,cAAA,EAAe;AAElC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAID,QAAAA,CAAuB,EAAE,CAAA;AACrD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAS,CAAC,CAAA;AACpC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAA2B,IAAI,CAAA;AACzD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,QAAAA,CAAiC;AAAA,IACzE,KAAA,EAAO,QAAQ,KAAA,IAAS,EAAA;AAAA,IACxB,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,MAAM,OAAA,GAAU,OAAO,MAAA,GAAS,KAAA;AAEhC,EAAA,MAAM,OAAA,GAAUC,YAAY,YAAY;AACtC,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,aAAA,CAAc,KAAK,aAAa,CAAA;AAC9D,MAAA,SAAA,CAAU,SAAS,IAAI,CAAA;AACvB,MAAA,QAAA,CAAS,SAAS,KAAK,CAAA;AAAA,IACzB,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAgB,CAAA;AAAA,IAC3B,CAAA,SAAE;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,aAAa,CAAC,CAAA;AAE1B,EAAA,MAAM,QAAA,GAAWA,YAAY,YAAY;AACvC,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,aAAA,CAAc,IAAA,CAAK;AAAA,QAC/C,GAAG,aAAA;AAAA,QACH,QAAQ,MAAA,CAAO;AAAA,OAChB,CAAA;AACD,MAAA,SAAA,CAAU,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,QAAA,CAAS,IAAI,CAAC,CAAA;AAC/C,MAAA,QAAA,CAAS,SAAS,KAAK,CAAA;AAAA,IACzB,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAgB,CAAA;AAAA,IAC3B,CAAA,SAAE;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,MAAA,EAAQ,aAAA,EAAe,MAAA,CAAO,MAAM,CAAC,CAAA;AAEzC,EAAA,MAAM,MAAA,GAASA,WAAAA;AAAA,IACb,CAAC,UAAA,KAAuC;AACtC,MAAA,MAAM,SAAS,EAAE,GAAG,eAAe,GAAG,UAAA,EAAY,QAAQ,CAAA,EAAE;AAC5D,MAAA,gBAAA,CAAiB,MAAM,CAAA;AACvB,MAAA,SAAA,CAAU,EAAE,CAAA;AACZ,MAAA,QAAA,CAAS,CAAC,CAAA;AAAA,IACZ,CAAA;AAAA,IACA,CAAC,aAAa;AAAA,GAChB;AAEA,EAAA,MAAM,cAAA,GAAiBA,WAAAA;AAAA,IACrB,OAAO,OAAA,KAAoB;AACzB,MAAA,MAAM,MAAA,CAAO,aAAA,CAAc,cAAA,CAAe,OAAO,CAAA;AAAA,IACnD,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,gBAAA,GAAmBA,WAAAA;AAAA,IACvB,OAAO,OAAA,KAAoB;AACzB,MAAA,OAAO,MAAA,CAAO,aAAA,CAAc,gBAAA,CAAiB,OAAO,CAAA;AAAA,IACtD,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AACF;AC1EO,SAAS,gBAAA,GAAmB;AACjC,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,cAAA,EAAe;AAElC,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAID,QAAAA,CAAyB,EAAE,CAAA;AACrE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAA2B,IAAI,CAAA;AAEzD,EAAA,MAAM,OAAA,GAAUC,YAAY,YAAY;AACtC,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,aAAA,CAAc,IAAA,EAAK;AACjD,MAAA,gBAAA,CAAiB,SAAS,IAAI,CAAA;AAAA,IAChC,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAgB,CAAA;AAAA,IAC3B,CAAA,SAAE;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,MAAA,GAASA,WAAAA;AAAA,IACb,OAAO,IAAA,KAAoC;AACzC,MAAA,MAAM,GAAA,GAAM,MAAM,MAAA,CAAO,aAAA,CAAc,OAAO,IAAI,CAAA;AAClD,MAAA,MAAM,OAAA,EAAQ;AACd,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,MAAA,GAASA,WAAAA;AAAA,IACb,OAAO,OAAe,IAAA,KAAoC;AACxD,MAAA,MAAM,MAAM,MAAM,MAAA,CAAO,aAAA,CAAc,MAAA,CAAO,OAAO,IAAI,CAAA;AACzD,MAAA,MAAM,OAAA,EAAQ;AACd,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,SAAA,GAAYA,WAAAA;AAAA,IAChB,OAAO,KAAA,KAAkB;AACvB,MAAA,MAAM,MAAA,CAAO,aAAA,CAAc,MAAA,CAAO,KAAK,CAAA;AACvC,MAAA,MAAM,OAAA,EAAQ;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,WAAA,GAAcA,WAAAA;AAAA,IAClB,OAAO,OAAe,OAAA,KAAiC;AACrD,MAAA,OAAO,MAAA,CAAO,aAAA,CAAc,WAAA,CAAY,KAAA,EAAO,OAAO,CAAA;AAAA,IACxD,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,YAAA,GAAeA,WAAAA;AAAA,IACnB,OAAO,KAAA,EAAe,MAAA,EAAgB,IAAA,KAA8B;AAClE,MAAA,OAAO,MAAA,CAAO,aAAA,CAAc,YAAA,CAAa,KAAA,EAAO,QAAQ,IAAI,CAAA;AAAA,IAC9D,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,YAAA,GAAeA,WAAAA;AAAA,IACnB,OAAO,OAAe,MAAA,KAAmB;AACvC,MAAA,MAAM,MAAA,CAAO,aAAA,CAAc,YAAA,CAAa,KAAA,EAAO,MAAM,CAAA;AAAA,IACvD,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,YAAA,GAAeA,WAAAA;AAAA,IACnB,OAAO,OAAe,IAAA,KAA8B;AAClD,MAAA,OAAO,MAAA,CAAO,aAAA,CAAc,YAAA,CAAa,KAAA,EAAO,IAAI,CAAA;AAAA,IACtD,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,eAAA,GAAkBA,WAAAA;AAAA,IACtB,OAAO,OAAe,OAAA,KAAqC;AACzD,MAAA,OAAO,MAAA,CAAO,aAAA,CAAc,eAAA,CAAgB,KAAA,EAAO,OAAO,CAAA;AAAA,IAC5D,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,gBAAA,GAAmBA,WAAAA;AAAA,IACvB,OAAO,OAAe,YAAA,KAAyB;AAC7C,MAAA,MAAM,MAAA,CAAO,aAAA,CAAc,gBAAA,CAAiB,KAAA,EAAO,YAAY,CAAA;AAAA,IACjE,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,gBAAA,GAAmBA,WAAAA;AAAA,IACvB,OAAO,OAAe,YAAA,KAAyB;AAC7C,MAAA,MAAM,MAAA,CAAO,aAAA,CAAc,gBAAA,CAAiB,KAAA,EAAO,YAAY,CAAA;AAAA,IACjE,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,gBAAA,GAAmBA,WAAAA;AAAA,IACvB,OAAO,IAAA,KAAkC;AACvC,MAAA,MAAM,MAAA,CAAO,aAAA,CAAc,gBAAA,CAAiB,IAAI,CAAA;AAAA,IAClD,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,iBAAA,GAAoBA,WAAAA;AAAA,IACxB,OAAO,IAAA,KAAmC;AACxC,MAAA,MAAM,MAAA,CAAO,aAAA,CAAc,iBAAA,CAAkB,IAAI,CAAA;AAAA,IACnD,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,KAAA,GAAQA,WAAAA;AAAA,IACZ,OAAO,KAAA,KAAkB;AACvB,MAAA,MAAM,MAAA,CAAO,aAAA,CAAc,KAAA,CAAM,KAAK,CAAA;AACtC,MAAA,MAAM,OAAA,EAAQ;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,OAAO;AAAA,IACL,aAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA,EAAQ,SAAA;AAAA,IACR,WAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACF;AACF;ACnJO,SAAS,QAAA,GAAW;AACzB,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAQ,GAAI,cAAA,EAAe;AAE3C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAID,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,SAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAC9D,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAA2B,IAAI,CAAA;AAEzD,EAAA,MAAM,OAAA,GAAUC,WAAAA;AAAA,IACd,OAAO,WAAA,KAAwB;AAC7B,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,IAAI;AACF,QAAA,MAAM,WAAW,MAAM,MAAA,CAAO,MAAM,OAAA,CAAQ,EAAE,aAAa,CAAA;AAC3D,QAAA,WAAA,CAAY,IAAI,CAAA;AAChB,QAAA,YAAA,CAAa,SAAS,SAAS,CAAA;AAC/B,QAAA,OAAO,QAAA;AAAA,MACT,SAAS,GAAA,EAAK;AACZ,QAAA,QAAA,CAAS,GAAgB,CAAA;AACzB,QAAA,MAAM,GAAA;AAAA,MACR,CAAA,SAAE;AACA,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACpB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,MAAA,GAASA,WAAAA;AAAA,IACb,OAAO,aAAqB,IAAA,KAAiB;AAC3C,MAAA,cAAA,CAAe,IAAI,CAAA;AACnB,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,IAAI;AACF,QAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,KAAA,CAAM,OAAO,EAAE,WAAA,EAAa,MAAM,CAAA;AAChE,QAAA,OAAA,CAAQ,SAAS,IAAI,CAAA;AACrB,QAAA,OAAO,QAAA;AAAA,MACT,SAAS,GAAA,EAAK;AACZ,QAAA,QAAA,CAAS,GAAgB,CAAA;AACzB,QAAA,MAAM,GAAA;AAAA,MACR,CAAA,SAAE;AACA,QAAA,cAAA,CAAe,KAAK,CAAA;AAAA,MACtB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,MAAA,GAASA,WAAAA;AAAA,IACb,OAAO,aAAqB,QAAA,KAAqB;AAC/C,MAAA,cAAA,CAAe,IAAI,CAAA;AACnB,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,IAAI;AACF,QAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,KAAA,CAAM,OAAO,EAAE,WAAA,EAAa,UAAU,CAAA;AACpE,QAAA,OAAA,CAAQ,SAAS,IAAI,CAAA;AACrB,QAAA,OAAO,QAAA;AAAA,MACT,SAAS,GAAA,EAAK;AACZ,QAAA,QAAA,CAAS,GAAgB,CAAA;AACzB,QAAA,MAAM,GAAA;AAAA,MACR,CAAA,SAAE;AACA,QAAA,cAAA,CAAe,KAAK,CAAA;AAAA,MACtB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,OAAO;AAAA,IACL,SAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AACF;;;AC5EO,SAAS,UAAA,GAAa;AAC3B,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,eAAA,EAAiB,SAAA,KAAc,cAAA,EAAe;AAErE,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AACF;ACFO,SAAS,WAAA,GAAc;AAC5B,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,OAAA,KAAY,cAAA,EAAe;AAEpD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAID,QAAAA,CAAoB,EAAE,CAAA;AACtD,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,QAAAA,CAA0B,EAAE,CAAA;AACxE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAA2B,IAAI,CAAA;AAEzD,EAAA,MAAM,OAAA,GAAUC,YAAY,YAAY;AACtC,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,IAAI;AACF,MAAA,MAAM,CAAC,gBAAA,EAAkB,sBAAsB,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,QACnE,MAAA,CAAO,SAAS,IAAA,EAAK;AAAA,QACrB,MAAA,CAAO,SAAS,kBAAA;AAAmB,OACpC,CAAA;AACD,MAAA,WAAA,CAAY,iBAAiB,IAAI,CAAA;AACjC,MAAA,iBAAA,CAAkB,sBAAsB,CAAA;AAAA,IAC1C,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAgB,CAAA;AAAA,IAC3B,CAAA,SAAE;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,aAAA,GAAgBA,WAAAA;AAAA,IACpB,OAAO,EAAA,KAAe;AACpB,MAAA,MAAM,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,EAAE,CAAA;AAC/B,MAAA,MAAM,OAAA,EAAQ;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,iBAAA,GAAoBA,WAAAA;AAAA,IACxB,OAAO,OAAA,KAAuC;AAC5C,MAAA,MAAM,MAAA,CAAO,QAAA,CAAS,SAAA,CAAU,OAAO,CAAA;AACvC,MAAA,MAAM,OAAA,EAAQ;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,aAAA,GAAgBA,WAAAA;AAAA,IACpB,OAAO,YAAA,KAAyB;AAC9B,MAAA,MAAM,WAAW,MAAM,MAAA,CAAO,SAAS,SAAA,CAAU,EAAE,cAAc,CAAA;AACjE,MAAA,OAAA,CAAQ,SAAS,IAAI,CAAA;AAAA,IACvB,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,mBAAA,GAAsBA,WAAAA;AAAA,IAC1B,OAAO,YAAA,KAAyB;AAC9B,MAAA,MAAM,MAAA,CAAO,QAAA,CAAS,mBAAA,CAAoB,EAAE,cAAc,CAAA;AAC1D,MAAA,MAAM,OAAA,EAAQ;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,aAAA;AAAA,IACA,iBAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AACF;AC1EO,SAAS,OAAA,GAAU;AACxB,EAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAA,KAAY,cAAA,EAAe;AAEjD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAID,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAA2B,IAAI,CAAA;AAEzD,EAAA,MAAM,aAAA,GAAgBC,WAAAA;AAAA,IACpB,OAAO,IAAA,KAAqB;AAC1B,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,IAAI;AACF,QAAA,MAAM,OAAA,GAAU,MAAM,MAAA,CAAO,KAAA,CAAM,OAAO,IAAI,CAAA;AAC9C,QAAA,OAAA,CAAQ,OAAO,CAAA;AACf,QAAA,OAAO,OAAA;AAAA,MACT,SAAS,GAAA,EAAK;AACZ,QAAA,QAAA,CAAS,GAAgB,CAAA;AACzB,QAAA,MAAM,GAAA;AAAA,MACR,CAAA,SAAE;AACA,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACpB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,cAAA,GAAiBA,WAAAA;AAAA,IACrB,OAAO,iBAAyB,WAAA,KAAwB;AACtD,MAAA,MAAM,OAAO,KAAA,CAAM,cAAA,CAAe,EAAE,eAAA,EAAiB,aAAa,CAAA;AAAA,IACpE,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,cAAA,GAAiBA,YAAY,YAAY;AAC7C,IAAA,OAAO,MAAA,CAAO,MAAM,cAAA,EAAe;AAAA,EACrC,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,oBAAA,GAAuBA,WAAAA;AAAA,IAC3B,OAAO,IAAA,KAAiB;AACtB,MAAA,MAAM,MAAA,CAAO,KAAA,CAAM,oBAAA,CAAqB,EAAE,MAAM,CAAA;AAAA,IAClD,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,gBAAA,GAAmBA,WAAAA;AAAA,IACvB,OAAO,QAAA,KAAqB;AAC1B,MAAA,MAAM,MAAA,CAAO,KAAA,CAAM,gBAAA,CAAiB,EAAE,UAAU,CAAA;AAAA,IAClD,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,aAAA,GAAgBA,WAAAA;AAAA,IACpB,OAAO,UAAkB,MAAA,KAAoB;AAC3C,MAAA,MAAM,OAAO,KAAA,CAAM,aAAA,CAAc,EAAE,QAAA,EAAU,QAAQ,CAAA;AACrD,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,IACd,CAAA;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,GAClB;AAEA,EAAA,MAAM,sBAAA,GAAyBA,YAAY,YAAY;AACrD,IAAA,OAAO,MAAA,CAAO,MAAM,sBAAA,EAAuB;AAAA,EAC7C,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,oBAAA,GAAuBA,WAAAA;AAAA,IAC3B,OAAO,IAAA,KAA8B;AACnC,MAAA,OAAO,MAAA,CAAO,KAAA,CAAM,oBAAA,CAAqB,IAAI,CAAA;AAAA,IAC/C,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,uBAAA,GAA0BA,WAAAA;AAAA,IAC9B,OAAO,QAAA,KAAqB;AAC1B,MAAA,MAAM,MAAA,CAAO,KAAA,CAAM,uBAAA,CAAwB,QAAQ,CAAA;AAAA,IACrD,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,cAAA,GAAiBA,WAAAA;AAAA,IACrB,OAAO,WAAA,KAAwB;AAC7B,MAAA,MAAM,MAAA,CAAO,KAAA,CAAM,cAAA,CAAe,EAAE,aAAa,CAAA;AAAA,IACnD,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,iBAAA,GAAoBA,WAAAA;AAAA,IACxB,OAAO,IAAA,KAAiB;AACtB,MAAA,MAAM,MAAA,CAAO,KAAA,CAAM,iBAAA,CAAkB,EAAE,MAAM,CAAA;AAAA,IAC/C,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,iBAAA,GAAoBA,WAAAA;AAAA,IACxB,OAAO,QAAA,KAAqB;AAC1B,MAAA,MAAM,MAAA,CAAO,KAAA,CAAM,iBAAA,CAAkB,EAAE,UAAU,CAAA;AAAA,IACnD,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,gBAAA;AAAA,IACA,aAAA;AAAA,IACA,sBAAA;AAAA,IACA,oBAAA;AAAA,IACA,uBAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACF;AACF;;;ACvHO,SAAS,YAAY,IAAA,EAAsB;AAChD,EAAA,OAAO,KACJ,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAC,MAAM,CAAA,CAAE,CAAC,CAAC,CAAA,CACf,KAAK,EAAE,CAAA,CACP,aAAY,CACZ,KAAA,CAAM,GAAG,CAAC,CAAA;AACf;ACUO,SAAS,eAAA,CAAgB;AAAA,EAC9B,cAAA,GAAiB,KAAA;AAAA,EACjB,QAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA,GAAc,CAAA;AAAA,EACd;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,EAAE,cAAA,EAAgB,aAAA,EAAe,SAAA,EAAW,OAAA,KAAY,WAAA,EAAY;AAC1E,EAAA,MAAM,EAAE,YAAA,EAAa,GAAI,mBAAA,EAAoB;AAE7C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAA,EAAQ;AAAA,EACV,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,MAAM,YAAA,GAAeA,WAAAA;AAAA,IACnB,OAAO,cAAsB,IAAA,KAAe;AAC1C,MAAA,MAAM,cAAc,YAAY,CAAA;AAChC,MAAA,QAAA,GAAW,IAAI,CAAA;AAAA,IACjB,CAAA;AAAA,IACA,CAAC,eAAe,QAAQ;AAAA,GAC1B;AAEA,EAAA,MAAM,eAAA,GAAkB,cAAA,CAAe,KAAA,CAAM,CAAA,EAAG,WAAW,CAAA;AAC3D,EAAA,MAAM,gBAAgB,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,QAAQ,CAAA;AAE3D,EAAA,uBACEE,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EACH,+BAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAA,IAAC,mBAAA,EAAA,EAAoB,OAAA,EAAO,IAAA,EAC1B,QAAA,kBAAAA,IAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,QAAA,EAAU,WACjC,QAAA,EAAA,aAAA,GAAgB,aAAA,CAAc,KAAK,IAAA,GAAO,YAAA,CAAa,gBAC1D,CAAA,EACF,CAAA;AAAA,oBACA,IAAA,CAAC,mBAAA,EAAA,EAAoB,KAAA,EAAM,KAAA,EACxB,QAAA,EAAA;AAAA,MAAA,eAAA,CAAgB,GAAA,CAAI,CAAC,OAAA,qBACpBA,GAAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UAEC,SAAS,MAAM,YAAA,CAAa,OAAA,CAAQ,YAAA,EAAc,QAAQ,IAAI,CAAA;AAAA,UAE9D,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,4BAAAA,GAAAA,CAAC,UAAK,SAAA,EAAU,uFAAA,EACb,kBAAQ,IAAA,CAAK,MAAA,mBACZA,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,QAAQ,IAAA,CAAK,MAAA,EAAQ,GAAA,EAAI,EAAA,EAAG,SAAA,EAAU,sBAAA,EAAuB,IAEvE,WAAA,CAAY,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,EAEjC,CAAA;AAAA,4BACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,EAAA;AAAA,8BAAAA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAuB,QAAA,EAAA,OAAA,CAAQ,KAAK,IAAA,EAAK,CAAA;AAAA,8BACzDA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,uBAAA,EAAyB,QAAA,EAAA,OAAA,CAAQ,KAAK,KAAA,EAAM;AAAA,aAAA,EAC9D,CAAA;AAAA,YACC,QAAQ,QAAA,oBAAYA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAmB,QAAA,EAAA,QAAA,EAAS;AAAA,WAAA,EACnE;AAAA,SAAA;AAAA,QAhBK,OAAA,CAAQ;AAAA,OAkBhB,CAAA;AAAA,MAEA,kCACC,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAAA,IAAC,qBAAA,EAAA,EAAsB,CAAA;AAAA,wBACvBA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,OAAA,EAAS,YAAA,EAAe,uBAAa,WAAA,EAAY;AAAA,OAAA,EACrE;AAAA,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ;AC9EO,SAAS,YAAA,CAAa;AAAA,EAC3B,QAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA,GAAkB,IAAA;AAAA,EAClB,aAAA,GAAgB,KAAA;AAAA,EAChB,cAAA,GAAiB,GAAA;AAAA,EACjB,YAAA;AAAA,EACA;AACF,CAAA,EAAsB;AACpB,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,eAAA,EAAiB,SAAA,KAAc,UAAA,EAAW;AAEjE,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,OAAO,SAAA,mBAAYA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAuB,QAAA,EAAA,eAAA,EAAgB,CAAA,mBAASA,GAAAA,CAAAC,QAAAA,EAAA,EAAG,QAAA,EAAA,eAAA,EAAgB,CAAA;AAAA,EAC7F;AAEA,EAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,IAAA,OAAO,SAAA,mBAAYD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAuB,QAAA,EAAA,QAAA,EAAS,CAAA,mBAASA,GAAAA,CAAAC,QAAAA,EAAA,EAAG,QAAA,EAAA,QAAA,EAAS,CAAA;AAAA,EAC/E;AAEA,EAAA,IAAI,iBAAiB,OAAA,EAAS;AAC5B,IAAA,MAAM,UAAA,GAAA,CAAc,IAAA,CAAK,GAAA,EAAI,GAAI,IAAI,KAAK,OAAA,CAAQ,SAAS,CAAA,CAAE,OAAA,EAAQ,IAAK,GAAA;AAC1E,IAAA,IAAI,aAAa,cAAA,EAAgB;AAC/B,MAAA,OAAO,SAAA,mBAAYD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAuB,QAAA,EAAA,QAAA,EAAS,CAAA,mBAASA,GAAAA,CAAAC,QAAAA,EAAA,EAAG,QAAA,EAAA,QAAA,EAAS,CAAA;AAAA,IAC/E;AAAA,EACF;AAEA,EAAA,IAAI,gBAAgB,IAAA,EAAM;AACxB,IAAA,MAAM,WAAY,IAAA,CAA4C,IAAA;AAC9D,IAAA,IAAI,aAAa,YAAA,EAAc;AAC7B,MAAA,OAAO,SAAA,mBAAYD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAuB,QAAA,EAAA,QAAA,EAAS,CAAA,mBAASA,GAAAA,CAAAC,QAAAA,EAAA,EAAG,QAAA,EAAA,QAAA,EAAS,CAAA;AAAA,IAC/E;AAAA,EACF;AAEA,EAAA,OAAO,SAAA,mBAAYD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAuB,QAAA,EAAS,CAAA,mBAASA,GAAAA,CAAAC,QAAAA,EAAA,EAAG,QAAA,EAAS,CAAA;AAC/E;;;ACvBO,IAAM,aAAA,GAA8C;AAAA,EACzD,UAAA,EAAY,UAAA;AAAA,EACZ,UAAA,EAAY,UAAA;AAAA,EACZ,kBAAA,EAAoB,kBAAA;AAAA,EACpB,iBAAA,EAAmB,iBAAA;AAAA,EACnB,eAAA,EAAiB,eAAA;AAAA,EACjB,YAAA,EAAc,YAAA;AAAA,EACd,kBAAA,EAAoB,kBAAA;AAAA,EACpB,aAAA,EAAe;AACjB;AClBO,SAAS,YAAY,KAAA,EAA2B;AACrD,EAAA,IAAI,KAAA,YAAiBC,WAAW,OAAO,KAAA;AACvC,EAAA,MAAM,UAAU,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AACrE,EAAA,OAAO,IAAIA,SAAAA,CAAU;AAAA,IACnB,MAAM,aAAA,CAAc,YAAA;AAAA,IACpB,OAAA;AAAA,IACA,UAAA,EAAY;AAAA,GACb,CAAA;AACH;ACbO,IAAM,mBAAA,GAAsB,EAAE,MAAA,CAAO;AAAA,EAC1C,OAAO,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,KAAA;AAC3B,CAAC;AAIM,IAAM,kBAAA,GAAqB,EAAE,MAAA,CAAO;AAAA,EACzC,IAAA,EAAM,EACH,MAAA,EAAO,CACP,OAAO,CAAC,CAAA,CACR,MAAM,SAAS;AACpB,CAAC;ACFM,SAAS,aAAa,EAAE,OAAA,EAAS,YAAA,EAAc,WAAA,EAAa,WAAU,EAAsB;AACjG,EAAA,uBACEF,GAAAA,CAACG,MAAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,QAAA,EAAU,OAAA,EAAS,SAAA,EAAW,SAAA,IAAa,QAAA,EAC9D,QAAA,EAAA,OAAA,GAAU,eAAe,WAAA,EAC5B,CAAA;AAEJ;;;ACjBO,SAAS,QAAQ,KAAA,EAAwB;AAC9C,EAAA,OAAO,KAAA,CAAM,SAAS,GAAG,CAAA;AAC3B;AAEO,SAAS,UAAU,KAAA,EAAuB;AAC/C,EAAA,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,GAAI,KAAA,CAAM,MAAM,GAAG,CAAA;AACvC,EAAA,IAAI,CAAC,KAAA,IAAS,CAAC,MAAA,EAAQ,OAAO,KAAA;AAC9B,EAAA,MAAM,SACJ,KAAA,CAAM,MAAA,IAAU,IAAI,KAAA,GAAQ,CAAA,EAAG,MAAM,CAAC,CAAC,GAAG,GAAA,CAAI,MAAA,CAAO,KAAK,GAAA,CAAI,KAAA,CAAM,SAAS,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA,CAAA;AACrF,EAAA,OAAO,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AAC5B;ACOO,SAAS,YAAA,CAAa;AAAA,EAC3B,WAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA,GAAiB,EAAA;AAAA,EACjB,UAAA,GAAa,IAAA;AAAA,EACb;AACF,CAAA,EAAsB;AACpB,EAAA,MAAM,EAAE,qBAAA,EAAuB,WAAA,EAAY,GAAI,OAAA,EAAQ;AACvD,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAA,EAAoB;AAC7D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIN,SAAgB,CAAC,CAAA;AACzC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAS,EAAE,CAAA;AACrC,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAC9D,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,SAAS,CAAC,CAAA;AAC5D,EAAA,MAAM,OAAA,GAAU,OAAO,EAAE,CAAA;AAEzB,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA,EAAW,EAAE,MAAA;AAAO,MAClB,OAAA,CAA+B;AAAA,IACjC,QAAA,EAAU,YAAY,mBAAmB,CAAA;AAAA,IACzC,aAAA,EAAe,EAAE,KAAA,EAAO,EAAA;AAAG,GAC5B,CAAA;AAED,EAAAO,UAAU,MAAM;AACd,IAAA,IAAI,qBAAqB,CAAA,EAAG;AAE5B,IAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,MAAA,oBAAA,CAAqB,CAAC,IAAA,KAAS,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,GAAO,CAAC,CAAC,CAAA;AAAA,IACtD,GAAG,GAAI,CAAA;AAEP,IAAA,OAAO,MAAM,cAAc,KAAK,CAAA;AAAA,EAClC,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAEtB,EAAA,MAAM,aAAA,GAAgBN,WAAAA;AAAA,IACpB,OAAO,IAAA,KAAgC;AACrC,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,IAAI;AACF,QAAA,MAAM,sBAAsB,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,EAAO,aAAa,CAAA;AAC9D,QAAA,QAAA,CAAS,KAAK,KAAK,CAAA;AACnB,QAAA,OAAA,CAAQ,CAAC,CAAA;AACT,QAAA,oBAAA,CAAqB,cAAc,CAAA;AAAA,MACrC,SAAS,GAAA,EAAK;AACZ,QAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,QAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,MAC5B,CAAA,SAAE;AACA,QAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,MACvB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,qBAAA,EAAuB,WAAA,EAAa,cAAA,EAAgB,OAAA,EAAS,cAAc,cAAc;AAAA,GAC5F;AAEA,EAAA,MAAM,gBAAA,GAAmBA,WAAAA;AAAA,IACvB,OAAO,IAAA,KAAiB;AACtB,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,IAAI;AACF,QAAA,MAAM,WAAW,MAAM,WAAA,CAAY,EAAE,KAAA,EAAO,MAAM,CAAA;AAClD,QAAA,SAAA,GAAY,SAAS,IAAI,CAAA;AAAA,MAC3B,SAAS,GAAA,EAAK;AACZ,QAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,QAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,MAC5B,CAAA,SAAE;AACA,QAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,MACvB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,SAAA,EAAW,OAAA,EAAS,cAAc,cAAc;AAAA,GAChE;AAEA,EAAA,MAAM,iBAAA,GAAoBA,WAAAA;AAAA,IACxB,CAAC,IAAA,KAAiB;AAChB,MAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAClB,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,gBAAA,CAAiB,IAAI,CAAA;AAAA,MACvB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAY,gBAAgB;AAAA,GAC/B;AAEA,EAAA,MAAM,kBAAA,GAAqBA,WAAAA;AAAA,IACzB,CAAC,CAAA,KAAuB;AACtB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,QAAA,gBAAA,CAAiB,QAAQ,OAAO,CAAA;AAAA,MAClC;AAAA,IACF,CAAA;AAAA,IACA,CAAC,gBAAgB;AAAA,GACnB;AAEA,EAAA,MAAM,YAAA,GAAeA,YAAY,YAAY;AAC3C,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,IAAA,IAAI;AACF,MAAA,MAAM,qBAAA,CAAsB,EAAE,KAAA,EAAO,WAAA,EAAa,CAAA;AAClD,MAAA,oBAAA,CAAqB,cAAc,CAAA;AAAA,IACrC,SAAS,GAAA,EAAK;AACZ,MAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AAAA,IACnE,CAAA,SAAE;AACA,MAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,IACvB;AAAA,EACF,CAAA,EAAG,CAAC,qBAAA,EAAuB,KAAA,EAAO,aAAa,cAAA,EAAgB,YAAA,EAAc,cAAc,CAAC,CAAA;AAE5F,EAAA,MAAM,YAAA,GAAeA,YAAY,MAAM;AACrC,IAAA,OAAA,CAAQ,CAAC,CAAA;AACT,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,OAAA,CAAQ,OAAA,GAAU,EAAA;AAAA,EACpB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,SAAS,CAAA,EAAG;AACd,IAAA,uBACEE,IAAC,IAAA,EAAA,EAAK,SAAA,EACJ,0BAAAK,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,eAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uBAAA,EAAyB,uBAAa,SAAA,EAAU,CAAA;AAAA,wBAC9DK,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EACV,QAAA,EAAA;AAAA,UAAA,YAAA,CAAa,cAAA;AAAA,UAAe,GAAA;AAAA,0BAACL,GAAAA,CAAC,QAAA,EAAA,EAAQ,QAAA,EAAA,SAAA,CAAU,KAAK,CAAA,EAAE;AAAA,SAAA,EAC1D;AAAA,OAAA,EACF,CAAA;AAAA,sBAEAK,IAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,WAAU,WAAA,EAE5C,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,2BAAA,EACd,QAAA,EAAA;AAAA,UAAA,YAAA,CAAa,uBAAA;AAAA,0BACdL,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,MAAA,EAAQ,CAAA;AAAA,cACR,UAAA,EAAY,iBAAA;AAAA,cACZ,QAAA,EAAU,YAAA;AAAA,cACV,SAAA,EAAU;AAAA;AAAA;AACZ,SAAA,EACF,CAAA;AAAA,QAEC,SAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,wBAGFA,GAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,YAAA;AAAA,YACT,cAAc,YAAA,CAAa,SAAA;AAAA,YAC3B,aAAa,YAAA,CAAa;AAAA;AAAA,SAC5B;AAAA,wBAEAK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,0BAAAL,GAAAA;AAAA,YAACG,MAAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAQ,SAAA;AAAA,cACR,QAAA,EAAU,gBAAgB,iBAAA,GAAoB,CAAA;AAAA,cAC9C,OAAA,EAAS,YAAA;AAAA,cACT,SAAA,EAAU,QAAA;AAAA,cAET,QAAA,EAAA,iBAAA,GAAoB,CAAA,GACjB,YAAA,CAAa,SAAA,CAAU,OAAA,CAAQ,aAAA,EAAe,MAAA,CAAO,iBAAiB,CAAC,CAAA,GACvE,YAAA,GACE,YAAA,CAAa,YACb,YAAA,CAAa;AAAA;AAAA,WACrB;AAAA,0BAEAH,GAAAA,CAACG,MAAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAQ,OAAA,EAAQ,OAAA,EAAS,YAAA,EAAc,SAAA,EAAU,QAAA,EACpE,uBAAa,OAAA,EAChB;AAAA,SAAA,EACF;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEH,IAAC,IAAA,EAAA,EAAK,SAAA,EACJ,0BAAAK,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,eAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,sBAAAL,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uBAAA,EAAyB,uBAAa,SAAA,EAAU,CAAA;AAAA,sBAC9DA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uBAAA,EAAyB,uBAAa,qBAAA,EAAsB;AAAA,KAAA,EAC3E,CAAA;AAAA,oBAEAK,KAAC,MAAA,EAAA,EAAK,QAAA,EAAU,aAAa,aAAa,CAAA,EAAG,WAAU,WAAA,EACrD,QAAA,EAAA;AAAA,sBAAAL,GAAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,OAAO,YAAA,CAAa,KAAA;AAAA,UACpB,EAAA,EAAG,iBAAA;AAAA,UACH,IAAA,EAAK,OAAA;AAAA,UACL,YAAA,EAAa,OAAA;AAAA,UACb,KAAA,EAAO,OAAO,KAAA,EAAO,OAAA;AAAA,UACrB,QAAA,EAAU,YAAA;AAAA,UACT,GAAG,SAAS,OAAO;AAAA;AAAA,OACtB;AAAA,MAEC,SAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,sBAGFA,GAAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,YAAA;AAAA,UACT,cAAc,YAAA,CAAa,OAAA;AAAA,UAC3B,aAAa,YAAA,CAAa;AAAA;AAAA;AAC5B,KAAA,EACF;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ;AC5MO,SAAS,qBAAA,CAAsB;AAAA,EACpC,KAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA,GAAiB,EAAA;AAAA,EACjB;AACF,CAAA,EAA+B;AAC7B,EAAA,MAAM,EAAE,qBAAA,EAAuB,WAAA,EAAY,GAAI,OAAA,EAAQ;AACvD,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAA,EAAoB;AAC7D,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIH,QAAAA;AAAA,IAC1B,QAAQ,WAAA,GAAc;AAAA,GACxB;AACA,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAC9D,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,SAAS,CAAC,CAAA;AAC5D,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,KAAK,CAAA;AAIpD,EAAAO,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,IAAA,SAAA,CAAU,WAAW,CAAA;AACrB,IAAA,WAAA,CAAY,EAAE,KAAA,EAAO,CAAA,CAClB,IAAA,CAAK,CAAC,QAAA,KAAa;AAClB,MAAA,SAAA,CAAU,SAAS,CAAA;AACnB,MAAA,SAAA,GAAY,SAAS,IAAI,CAAA;AAAA,IAC3B,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,GAAA,KAAQ;AACd,MAAA,SAAA,CAAU,OAAO,CAAA;AACjB,MAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,MAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,IAC5B,CAAC,CAAA;AAAA,EACL,CAAA,EAAG,EAAE,CAAA;AAGL,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,qBAAqB,CAAA,EAAG;AAC5B,IAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,MAAA,oBAAA,CAAqB,CAAC,IAAA,KAAS;AAC7B,QAAA,IAAI,QAAQ,CAAA,EAAG;AACb,UAAA,aAAA,CAAc,KAAK,CAAA;AACnB,UAAA,OAAO,CAAA;AAAA,QACT;AACA,QAAA,OAAO,IAAA,GAAO,CAAA;AAAA,MAChB,CAAC,CAAA;AAAA,IACH,GAAG,GAAI,CAAA;AACP,IAAA,OAAO,MAAM,cAAc,KAAK,CAAA;AAAA,EAClC,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAEtB,EAAA,MAAM,YAAA,GAAeN,YAAY,YAAY;AAC3C,IAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,cAAA,CAAe,IAAI,CAAA;AACnB,IAAA,IAAI;AACF,MAAA,MAAM,qBAAA,CAAsB,EAAE,KAAA,EAAO,WAAA,EAAa,CAAA;AAClD,MAAA,oBAAA,CAAqB,cAAc,CAAA;AAAA,IACrC,SAAS,GAAA,EAAK;AACZ,MAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,MAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,IAC5B,CAAA,SAAE;AACA,MAAA,cAAA,CAAe,KAAK,CAAA;AAAA,IACtB;AAAA,EACF,CAAA,EAAG;AAAA,IACD,KAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,qBAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACD,CAAA;AAGD,EAAA,IAAI,WAAW,WAAA,EAAa;AAC1B,IAAA,uBACEO,IAAAA,CAACC,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,EAAA;AAAA,sBAAAD,KAAC,UAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAC,SAAA,EAAA,EAAW,QAAA,EAAA,YAAA,CAAa,kBAAA,EAAmB,CAAA;AAAA,wBAC5CA,GAAAA,CAAC,eAAA,EAAA,EAAiB,QAAA,EAAA,YAAA,CAAa,8BAAA,EAA+B;AAAA,OAAA,EAChE,CAAA;AAAA,sBACAA,GAAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EAAwC,WAAA,EAAU,QAAA,EAC/D,QAAA,kBAAAK,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,6BAAA,EACb,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8EAAA,EAA+E,CAAA;AAAA,wBAC9FA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uBAAA,EAAyB,uBAAa,2BAAA,EAA4B;AAAA,OAAA,EACjF,GACF,CAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAGA,EAAA,IAAI,WAAW,SAAA,EAAW;AACxB,IAAA,uBACEK,IAAAA,CAACC,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,EAAA;AAAA,sBAAAD,KAAC,UAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAC,SAAA,EAAA,EAAW,QAAA,EAAA,YAAA,CAAa,kBAAA,EAAmB,CAAA;AAAA,wBAC5CA,GAAAA,CAAC,eAAA,EAAA,EAAiB,QAAA,EAAA,YAAA,CAAa,8BAAA,EAA+B;AAAA,OAAA,EAChE,CAAA;AAAA,sBACAA,GAAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAK,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,0DAAA;AAAA,UACV,WAAA,EAAU,QAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+BAAA,EACb,QAAA,kBAAAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,wBAAA;AAAA,gBACV,IAAA,EAAK,MAAA;AAAA,gBACL,MAAA,EAAO,cAAA;AAAA,gBACP,OAAA,EAAQ,WAAA;AAAA,gBACR,aAAA,EAAY,MAAA;AAAA,gBAEZ,QAAA,kBAAAA,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,aAAA,EAAc,OAAA;AAAA,oBACd,cAAA,EAAe,OAAA;AAAA,oBACf,WAAA,EAAa,CAAA;AAAA,oBACb,CAAA,EAAE;AAAA;AAAA;AACJ;AAAA,aACF,EACF,CAAA;AAAA,4BACAA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,oCAAA,EACV,uBAAa,0BAAA,EAChB;AAAA;AAAA;AAAA,OACF,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAGA,EAAA,uBACEK,IAAAA,CAACC,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,EAAA;AAAA,oBAAAD,KAAC,UAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAL,GAAAA,CAAC,SAAA,EAAA,EAAW,QAAA,EAAA,YAAA,CAAa,kBAAA,EAAmB,CAAA;AAAA,sBAC5CA,GAAAA,CAAC,eAAA,EAAA,EAAiB,QAAA,EAAA,YAAA,CAAa,8BAAA,EAA+B;AAAA,KAAA,EAChE,CAAA;AAAA,oBACAA,GAAAA,CAAC,WAAA,EAAA,EACC,0BAAAK,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,oBACCA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,YAAA,CAAa,gBAAA;AAAA,QAAiB,IAAA;AAAA,wBAAEL,GAAAA,CAAC,QAAA,EAAA,EAAQ,QAAA,EAAA,SAAA,CAAU,KAAK,CAAA,EAAE;AAAA,OAAA,EAC7D,CAAA;AAAA,MAGD,SAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,sBAGFA,GAAAA;AAAA,QAACG,MAAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAQ,SAAA;AAAA,UACR,QAAA,EAAU,eAAe,iBAAA,GAAoB,CAAA;AAAA,UAC7C,OAAA,EAAS,YAAA;AAAA,UACT,SAAA,EAAU,QAAA;AAAA,UAET,QAAA,EAAA,WAAA,GACG,YAAA,CAAa,SAAA,GACb,iBAAA,GAAoB,CAAA,GAClB,YAAA,CAAa,SAAA,CAAU,OAAA,CAAQ,aAAA,EAAe,iBAAA,CAAkB,QAAA,EAAU,IAC1E,YAAA,CAAa;AAAA;AAAA;AACrB,KAAA,EACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AC3LO,IAAM,oBAAA,GAAuBI,EAAE,MAAA,CAAO;AAAA,EAC3C,OAAOA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,KAAA;AAC3B,CAAC;ACaM,SAAS,kBAAA,CAAmB;AAAA,EACjC,WAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA,GAAiB,EAAA;AAAA,EACjB;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,EAAE,oBAAA,EAAqB,GAAI,OAAA,EAAQ;AACzC,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAA,EAAoB;AAC7D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIV,SAAS,KAAK,CAAA;AACtC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAS,EAAE,CAAA;AAC7C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAC9D,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,SAAS,CAAC,CAAA;AAE5D,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA,EAAW,EAAE,MAAA,EAAO;AAAA,IACpB;AAAA,MACEW,OAAAA,CAAgC;AAAA,IAClC,QAAA,EAAUC,YAAY,oBAAoB,CAAA;AAAA,IAC1C,aAAA,EAAe,EAAE,KAAA,EAAO,EAAA;AAAG,GAC5B,CAAA;AAED,EAAAL,UAAU,MAAM;AACd,IAAA,IAAI,qBAAqB,CAAA,EAAG;AAE5B,IAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,MAAA,oBAAA,CAAqB,CAAC,IAAA,KAAS,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,GAAO,CAAC,CAAC,CAAA;AAAA,IACtD,GAAG,GAAI,CAAA;AAEP,IAAA,OAAO,MAAM,cAAc,KAAK,CAAA;AAAA,EAClC,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAEtB,EAAA,MAAM,QAAA,GAAWN,WAAAA;AAAA,IACf,OAAO,IAAA,KAAiC;AACtC,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,IAAI;AACF,QAAA,MAAM,qBAAqB,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,EAAO,aAAa,CAAA;AAC7D,QAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,QAAA,YAAA,CAAa,KAAK,KAAK,CAAA;AACvB,QAAA,oBAAA,CAAqB,cAAc,CAAA;AACnC,QAAA,SAAA,IAAY;AAAA,MACd,SAAS,GAAA,EAAK;AACZ,QAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,QAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,MAC5B,CAAA,SAAE;AACA,QAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,MACvB;AAAA,IACF,CAAA;AAAA,IACA;AAAA,MACE,oBAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,MAAM,YAAA,GAAeA,YAAY,YAAY;AAC3C,IAAA,MAAM,KAAA,GAAQ,UAAU,OAAO,CAAA;AAC/B,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,IAAA,IAAI;AACF,MAAA,MAAM,oBAAA,CAAqB,EAAE,KAAA,EAAO,WAAA,EAAa,CAAA;AACjD,MAAA,oBAAA,CAAqB,cAAc,CAAA;AAAA,IACrC,SAAS,GAAA,EAAK;AACZ,MAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AAAA,IACnE,CAAA,SAAE;AACA,MAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,IACvB;AAAA,EACF,CAAA,EAAG,CAAC,oBAAA,EAAsB,WAAA,EAAa,gBAAgB,SAAA,EAAW,YAAA,EAAc,cAAc,CAAC,CAAA;AAE/F,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,uBACEE,IAACM,IAAAA,EAAA,EAAK,WACJ,QAAA,kBAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uBAAA,EAAyB,uBAAa,gBAAA,EAAiB,CAAA;AAAA,wBACrEA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAW,uBAAa,qBAAA,EAAsB,CAAA;AAAA,wBAC3DA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,qBAAA,EAAuB,QAAA,EAAA,SAAA,CAAU,SAAS,CAAA,EAAE;AAAA,OAAA,EAC3D,CAAA;AAAA,sBAEAK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,wBAAAL,GAAAA;AAAA,UAACG,MAAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAQ,SAAA;AAAA,YACR,QAAA,EAAU,gBAAgB,iBAAA,GAAoB,CAAA;AAAA,YAC9C,OAAA,EAAS,YAAA;AAAA,YACT,SAAA,EAAU,QAAA;AAAA,YAET,QAAA,EAAA,iBAAA,GAAoB,CAAA,GACjB,YAAA,CAAa,SAAA,CAAU,OAAA,CAAQ,aAAA,EAAe,MAAA,CAAO,iBAAiB,CAAC,CAAA,GACvE,YAAA,GACE,YAAA,CAAa,YACb,YAAA,CAAa;AAAA;AAAA,SACrB;AAAA,QAEC,aAAA,oBACCH,GAAAA,CAACG,MAAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAQ,OAAA,EAAQ,OAAA,EAAS,aAAA,EAAe,SAAA,EAAU,QAAA,EACrE,uBAAa,OAAA,EAChB;AAAA,OAAA,EAEJ,CAAA;AAAA,MAEC,SAAA,oBACCH,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,oCAC/B,QAAA,EAAA,SAAA,EACH;AAAA,KAAA,EAEJ,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,IAACM,IAAAA,EAAA,EAAK,WACJ,QAAA,kBAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,sBAAAL,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uBAAA,EAAyB,uBAAa,eAAA,EAAgB,CAAA;AAAA,sBACpEA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uBAAA,EAAyB,uBAAa,2BAAA,EAA4B;AAAA,KAAA,EACjF,CAAA;AAAA,oBAEAK,KAAC,MAAA,EAAA,EAAK,QAAA,EAAU,aAAa,QAAQ,CAAA,EAAG,WAAU,WAAA,EAChD,QAAA,EAAA;AAAA,sBAAAL,GAAAA;AAAA,QAACU,SAAAA;AAAA,QAAA;AAAA,UACC,OAAO,YAAA,CAAa,KAAA;AAAA,UACpB,EAAA,EAAG,uBAAA;AAAA,UACH,IAAA,EAAK,OAAA;AAAA,UACL,YAAA,EAAa,OAAA;AAAA,UACb,KAAA,EAAO,OAAO,KAAA,EAAO,OAAA;AAAA,UACrB,QAAA,EAAU,YAAA;AAAA,UACT,GAAG,SAAS,OAAO;AAAA;AAAA,OACtB;AAAA,MAEC,SAAA,oBACCV,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,sBAGFA,GAAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,YAAA;AAAA,UACT,cAAc,YAAA,CAAa,OAAA;AAAA,UAC3B,aAAa,YAAA,CAAa;AAAA;AAAA,OAC5B;AAAA,MAEC,aAAA,oBACCA,GAAAA,CAACG,MAAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAQ,OAAA,EAAQ,OAAA,EAAS,aAAA,EAAe,SAAA,EAAU,QAAA,EACrE,uBAAa,OAAA,EAChB;AAAA,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ;AC9KO,IAAM,qBAAA,GAAwBI,EAAE,MAAA,CAAO;AAAA,EAC5C,UAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,GAAG,+BAA+B,CAAA;AAAA,EAC3D,UAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,GAAG,sBAAsB,CAAA;AAAA,EAClD,YAAA,EAAcA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAC3B,CAAC;AAIM,IAAM,gBAAA,GAAmBA,EAAE,MAAA,CAAO;AAAA,EACvC,WAAA,EAAaA,EAAE,MAAA,EAAO;AAAA,EACtB,aAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,GAAG,0BAA0B;AAC3D,CAAC;AAGM,IAAM,eAAA,GAAkBA,EAAE,MAAA,CAAO;AAAA,EACtC,MAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAA,CAAO,GAAG,uBAAuB;AACpD,CAAC;ACVD,IAAM,cAAA,GAAgD;AAAA,EACpD,MAAA,EAAQ,QAAA;AAAA,EACR,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO,OAAA;AAAA,EACP,SAAA,EAAW,WAAA;AAAA,EACX,QAAA,EAAU;AACZ,CAAA;AAEO,SAAS,WAAA,CAAY;AAAA,EAC1B,QAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,OAAA,EAAQ;AAChC,EAAA,MAAM,EAAE,YAAA,EAAa,GAAI,mBAAA,EAAoB;AAC7C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIV,SAAS,KAAK,CAAA;AAEhD,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,EAAA,EAAI,IAAA;AAAA,IACJ,EAAA,EAAI,SAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACN;AAEA,EAAA,MAAM,YAAA,GAAe,eAAe,QAAQ,CAAA;AAE5C,EAAA,MAAM,WAAA,GAAcC,YAAY,YAAY;AAC1C,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,GAAM,MAAM,WAAA,CAAY,EAAE,UAAU,WAAA,EAAa,KAAA,EAAO,KAAA,IAAS,EAAA,EAAI,CAAA;AAC3E,MAAA,MAAA,CAAO,SAAS,IAAA,GAAO,GAAA;AAAA,IACzB,CAAA,CAAA,MAAQ;AACN,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,WAAA,EAAa,QAAA,EAAU,WAAA,EAAa,KAAK,CAAC,CAAA;AAE9C,EAAA,uBACEE,GAAAA;AAAA,IAACG,MAAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,OAAA,EAAS,OAAA,KAAY,QAAA,GAAW,SAAA,GAAY,SAAA;AAAA,MAC5C,IAAA,EAAM,QAAQ,IAAI,CAAA;AAAA,MAClB,QAAA,EAAU,SAAA;AAAA,MACV,OAAA,EAAS,WAAA;AAAA,MACT,YAAA,EAAY,CAAA,EAAG,YAAA,CAAa,YAAY,IAAI,YAAY,CAAA,CAAA;AAAA,MACxD,SAAA;AAAA,MAEC,sBAAY,YAAA,CAAa,WAAA,GAAc,GAAG,YAAA,CAAa,aAAa,IAAI,YAAY,CAAA;AAAA;AAAA,GACvF;AAEJ;AC1DO,IAAM,iBAAA,GAAoBI,EAAE,MAAA,CAAO;AAAA,EACxC,WAAA,EAAaA,EAAE,MAAA,EAAO;AAAA,EACtB,aAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,GAAG,0BAA0B;AAC3D,CAAC;AAGM,IAAMI,gBAAAA,GAAkBJ,EAAE,MAAA,CAAO;AAAA,EACtC,MAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAA,CAAO,GAAG,uBAAuB;AACpD,CAAC;AAGM,IAAM,mBAAA,GAAsBA,EAAE,MAAA,CAAO;AAAA,EAC1C,WAAA,EAAaA,EAAE,MAAA,EAAO;AAAA,EACtB,aAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,GAAG,0BAA0B,CAAA;AAAA,EACzD,UAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,GAAG,sBAAsB;AACpD,CAAC;;;ACVM,IAAM,aAAA,GAA+B;AAAA,EAC1C,EAAE,MAAM,KAAA,EAAO,OAAA,EAAS,MAAM,IAAA,EAAM,QAAA,EAAU,MAAM,oBAAA,EAAqB;AAAA,EACzE,EAAE,MAAM,KAAA,EAAO,OAAA,EAAS,MAAM,IAAA,EAAM,SAAA,EAAW,MAAM,oBAAA,EAAqB;AAAA,EAC1E,EAAE,MAAM,IAAA,EAAM,OAAA,EAAS,MAAM,IAAA,EAAM,eAAA,EAAiB,MAAM,oBAAA,EAAqB;AAAA,EAC/E,EAAE,MAAM,KAAA,EAAO,OAAA,EAAS,MAAM,IAAA,EAAM,gBAAA,EAAkB,MAAM,oBAAA,EAAqB;AAAA,EACjF,EAAE,MAAM,KAAA,EAAO,OAAA,EAAS,MAAM,IAAA,EAAM,QAAA,EAAU,MAAM,oBAAA,EAAqB;AAAA,EACzE,EAAE,MAAM,KAAA,EAAO,OAAA,EAAS,MAAM,IAAA,EAAM,OAAA,EAAS,MAAM,oBAAA,EAAqB;AAAA,EACxE,EAAE,MAAM,KAAA,EAAO,OAAA,EAAS,MAAM,IAAA,EAAM,OAAA,EAAS,MAAM,oBAAA,EAAqB;AAAA,EACxE,EAAE,MAAM,KAAA,EAAO,OAAA,EAAS,MAAM,IAAA,EAAM,aAAA,EAAe,MAAM,oBAAA,EAAqB;AAAA,EAC9E,EAAE,MAAM,KAAA,EAAO,OAAA,EAAS,MAAM,IAAA,EAAM,SAAA,EAAW,MAAM,oBAAA,EAAqB;AAAA,EAC1E,EAAE,MAAM,KAAA,EAAO,OAAA,EAAS,MAAM,IAAA,EAAM,aAAA,EAAe,MAAM,oBAAA,EAAqB;AAAA,EAC9E,EAAE,MAAM,MAAA,EAAQ,OAAA,EAAS,MAAM,IAAA,EAAM,QAAA,EAAU,MAAM,oBAAA,EAAqB;AAAA,EAC1E,EAAE,MAAM,KAAA,EAAO,OAAA,EAAS,MAAM,IAAA,EAAM,QAAA,EAAU,MAAM,oBAAA;AACtD,CAAA;ACFO,SAAS,cAAA,CAAe;AAAA,EAC7B,SAAA;AAAA,EACA,OAAA;AAAA,EACA,mBAAA,GAAsB,CAAC,KAAA,EAAO,KAAK,CAAA;AAAA,EACnC,oBAAA,GAAuB,KAAA;AAAA,EACvB;AACF,CAAA,EAAwB;AACtB,EAAA,MAAM,EAAE,SAAS,MAAA,EAAQ,MAAA,EAAQ,WAAW,WAAA,EAAa,SAAA,KAAc,QAAA,EAAS;AAChF,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAA,EAAoB;AAC7D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIV,SAAuC,OAAO,CAAA;AACtE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAC9D,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIA,SAAS,EAAE,CAAA;AAEzD,EAAA,MAAM,oBAAA,GAAuBe,OAAAA;AAAA,IAC3B,MAAM,cAAc,MAAA,CAAO,CAAC,MAAM,mBAAA,CAAoB,QAAA,CAAS,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,IACtE,CAAC,mBAAmB;AAAA,GACtB;AAEA,EAAA,MAAM,YAAYJ,OAAAA,CAA6B;AAAA,IAC7C,QAAA,EAAUC,YAAY,iBAAiB,CAAA;AAAA,IACvC,aAAA,EAAe;AAAA,MACb,WAAA,EAAa,oBAAA,CAAqB,CAAC,CAAA,EAAG,IAAA,IAAQ,KAAA;AAAA,MAC9C,WAAA,EAAa;AAAA;AACf,GACD,CAAA;AAED,EAAA,MAAM,UAAUD,OAAAA,CAA2B;AAAA,IACzC,QAAA,EAAUC,YAAYE,gBAAe,CAAA;AAAA,IACrC,aAAA,EAAe,EAAE,IAAA,EAAM,EAAA;AAAG,GAC3B,CAAA;AAED,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAId,SAAS,EAAE,CAAA;AAErD,EAAA,MAAM,kBAAA,GAAyC,oBAAA,CAAqB,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IAC9E,OAAO,CAAA,CAAE,IAAA;AAAA,IACT,KAAA,EAAO,GAAG,CAAA,CAAE,IAAI,IAAI,CAAA,CAAE,IAAI,CAAA,EAAA,EAAK,CAAA,CAAE,IAAI,CAAA,CAAA;AAAA,GACvC,CAAE,CAAA;AAEF,EAAA,MAAM,iBAAA,GAAoBC,WAAAA;AAAA,IACxB,OAAO,IAAA,KAA8B;AACnC,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,MAAM,QAAQ,CAAA,EAAG,IAAA,CAAK,WAAW,CAAA,EAAG,KAAK,WAAW,CAAA,CAAA;AACpD,MAAA,kBAAA,CAAmB,KAAK,CAAA;AACxB,MAAA,IAAI;AACF,QAAA,MAAM,QAAQ,KAAK,CAAA;AACnB,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MACf,SAAS,GAAA,EAAK;AACZ,QAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,QAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,MAC5B;AAAA,IACF,CAAA;AAAA,IACA,CAAC,OAAA,EAAS,OAAA,EAAS,YAAA,EAAc,cAAc;AAAA,GACjD;AAEA,EAAA,MAAM,eAAA,GAAkBA,WAAAA;AAAA,IACtB,OAAO,IAAA,KAA4B;AACjC,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,IAAI;AACF,QAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,eAAA,EAAiB,KAAK,IAAI,CAAA;AACxD,QAAA,SAAA,CAAU,SAAS,IAAI,CAAA;AAAA,MACzB,SAAS,GAAA,EAAK;AACZ,QAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,QAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,MAC5B;AAAA,IACF,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,eAAA,EAAiB,SAAA,EAAW,OAAA,EAAS,cAAc,cAAc;AAAA,GAC5E;AAEA,EAAA,MAAM,iBAAA,GAAoBA,WAAAA;AAAA,IACxB,CAAC,IAAA,KAAiB;AAChB,MAAA,OAAA,CAAQ,QAAA,CAAS,QAAQ,IAAI,CAAA;AAC7B,MAAA,OAAA,CAAQ,YAAA,CAAa,eAAe,CAAA,EAAE;AAAA,IACxC,CAAA;AAAA,IACA,CAAC,SAAS,eAAe;AAAA,GAC3B;AAEA,EAAA,MAAM,oBAAA,GAAuBA,WAAAA;AAAA,IAC3B,OAAO,CAAA,KAAuB;AAC5B,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,IAAI;AACF,QAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,eAAA,EAAiB,aAAa,CAAA;AAC5D,QAAA,SAAA,CAAU,SAAS,IAAI,CAAA;AAAA,MACzB,SAAS,GAAA,EAAK;AACZ,QAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,QAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,MAC5B;AAAA,IACF,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,eAAA,EAAiB,eAAe,SAAA,EAAW,OAAA,EAAS,cAAc,cAAc;AAAA,GAC3F;AAEA,EAAA,uBACEE,IAACM,IAAAA,EAAA,EAAK,WACJ,QAAA,kBAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACZ,QAAA,EAAA;AAAA,IAAA,IAAA,KAAS,OAAA,oBACRA,IAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAU,UAAU,YAAA,CAAa,iBAAiB,CAAA,EAAG,SAAA,EAAU,WAAA,EACnE,QAAA,EAAA;AAAA,sBAAAL,GAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,OAAO,YAAA,CAAa,YAAA;AAAA,UACpB,OAAA,EAAS,kBAAA;AAAA,UACT,KAAA,EAAO,SAAA,CAAU,KAAA,CAAM,aAAa,CAAA;AAAA,UACpC,eAAe,CAAC,KAAA,KAAU,SAAA,CAAU,QAAA,CAAS,eAAe,KAAK;AAAA;AAAA,OACnE;AAAA,sBAEAA,GAAAA;AAAA,QAACU,SAAAA;AAAA,QAAA;AAAA,UACC,OAAO,YAAA,CAAa,wBAAA;AAAA,UACpB,EAAA,EAAG,cAAA;AAAA,UACH,IAAA,EAAK,KAAA;AAAA,UACL,KAAA,EAAO,SAAA,CAAU,SAAA,CAAU,MAAA,CAAO,WAAA,EAAa,OAAA;AAAA,UAC9C,GAAG,SAAA,CAAU,QAAA,CAAS,aAAa;AAAA;AAAA,OACtC;AAAA,MAEC,SAAA,oBACCV,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,sBAGFA,GAAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,SAAA;AAAA,UACT,cAAc,YAAA,CAAa,yBAAA;AAAA,UAC3B,aAAa,YAAA,CAAa;AAAA;AAAA;AAC5B,KAAA,EACF,CAAA;AAAA,IAGD,IAAA,KAAS,KAAA,oBACRK,IAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAU,OAAA,CAAQ,YAAA,CAAa,eAAe,CAAA,EAAG,SAAA,EAAU,WAAA,EAE/D,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,2BAAA,EACd,QAAA,EAAA;AAAA,QAAA,YAAA,CAAa,uBAAA;AAAA,wBACdL,IAACa,QAAAA,EAAA,EAAS,QAAQ,CAAA,EAAG,UAAA,EAAY,iBAAA,EAAmB,QAAA,EAAU,WAAA,EAAa;AAAA,OAAA,EAC7E,CAAA;AAAA,MAEC,cAAc,IAAA,oBACbR,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,uBAAA,EACV,QAAA,EAAA;AAAA,QAAA,YAAA,CAAa,eAAA;AAAA,QAAgB,GAAA;AAAA,QAAE,SAAA;AAAA,QAAU;AAAA,OAAA,EAC5C,CAAA;AAAA,MAGD,SAAA,oBACCL,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,sBAGFA,GAAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,WAAA;AAAA,UACT,cAAc,YAAA,CAAa,SAAA;AAAA,UAC3B,aAAa,YAAA,CAAa;AAAA;AAAA,OAC5B;AAAA,MAEC,wCACCA,GAAAA;AAAA,QAACG,MAAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,MAAA;AAAA,UACR,IAAA,EAAK,QAAA;AAAA,UACL,SAAA,EAAU,oBAAA;AAAA,UACV,OAAA,EAAS,MAAM,OAAA,CAAQ,UAAU,CAAA;AAAA,UAEhC,QAAA,EAAA,YAAA,CAAa;AAAA;AAAA;AAChB,KAAA,EAEJ,CAAA;AAAA,IAGD,IAAA,KAAS,8BACRE,IAAAA,CAAC,UAAK,QAAA,EAAU,oBAAA,EAAsB,WAAU,WAAA,EAC9C,QAAA,EAAA;AAAA,sBAAAL,GAAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,OAAO,YAAA,CAAa,QAAA;AAAA,UACpB,EAAA,EAAG,gBAAA;AAAA,UACH,KAAA,EAAO,aAAA;AAAA,UACP,UAAU,CAAC,CAAA,KAAM,gBAAA,CAAiB,CAAA,CAAE,OAAO,KAAK;AAAA;AAAA,OAClD;AAAA,MAEC,SAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,sBAGFA,GAAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,WAAA;AAAA,UACT,cAAc,YAAA,CAAa,UAAA;AAAA,UAC3B,aAAa,YAAA,CAAa;AAAA;AAAA;AAC5B,KAAA,EACF;AAAA,GAAA,EAEJ,CAAA,EACF,CAAA;AAEJ;AC5LO,SAAS,SAAA,CAAU;AAAA,EACxB,SAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,oBAAA,GAAuB,KAAA;AAAA,EACvB,qBAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,MAAM,cAAA,GAAiB,gBAAA,IAAoB,UAAA,GAAa,UAAA,CAAW,cAAA,GAAiB,MAAA;AACpF,EAAA,MAAM,gBAAA,GAAmB,kBAAA,IAAsB,UAAA,GAAa,UAAA,CAAW,gBAAA,GAAmB,EAAA;AAE1F,EAAA,MAAM,EAAE,KAAA,EAAO,iBAAA,EAAkB,GAAI,OAAA,EAAQ;AAC7C,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAA,EAAoB;AAC7D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIH,SAAiC,YAAY,CAAA;AACrE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAC9D,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAS,KAAK,CAAA;AAEtD,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA,EAAW,EAAE,MAAA;AAAO,MAClBW,OAAAA,CAAiC;AAAA,IACnC,QAAA,EAAUC,YAAY,qBAAqB,CAAA;AAAA,IAC3C,aAAA,EAAe,EAAE,QAAA,EAAU,EAAA,EAAI,UAAU,EAAA;AAAG,GAC7C,CAAA;AAED,EAAA,MAAM,aAAA,GAAgB,MAAM,UAAU,CAAA;AAEtC,EAAA,MAAM,QAAA,GAAWX,WAAAA;AAAA,IACf,OAAO,IAAA,KAAkC;AACvC,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,IAAI;AACF,QAAA,IAAI,OAAA,CAAQ,IAAA,CAAK,QAAQ,CAAA,EAAG;AAC1B,UAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM;AAAA,YAC3B,OAAO,IAAA,CAAK,QAAA;AAAA,YACZ,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,cAAc,IAAA,CAAK;AAAA,WACpB,CAAA;AACD,UAAA,SAAA,CAAU,SAAS,IAAI,CAAA;AAAA,QACzB,CAAA,MAAO;AACL,UAAA,MAAM,QAAA,GAAW,MAAM,iBAAA,CAAkB;AAAA,YACvC,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,cAAc,IAAA,CAAK;AAAA,WACpB,CAAA;AACD,UAAA,SAAA,CAAU,SAAS,IAAI,CAAA;AAAA,QACzB;AAAA,MACF,SAAS,GAAA,EAAK;AACZ,QAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,QAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,MAC5B,CAAA,SAAE;AACA,QAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,MACvB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,iBAAA,EAAmB,SAAA,EAAW,OAAA,EAAS,cAAc,cAAc;AAAA,GAC7E;AAEA,EAAA,MAAM,mBAAA,GAAsBA,YAAY,MAAM;AAC5C,IAAA,OAAA,CAAQ,OAAO,CAAA;AACf,IAAA,YAAA,CAAa,IAAI,CAAA;AAAA,EACnB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,wBAAA,GAA2BA,YAAY,MAAM;AACjD,IAAA,OAAA,CAAQ,YAAY,CAAA;AACpB,IAAA,YAAA,CAAa,IAAI,CAAA;AAAA,EACnB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,SAAS,OAAA,EAAS;AACpB,IAAA,uBACEE,IAACM,IAAAA,EAAA,EAAK,WACJ,QAAA,kBAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,EAAA;AAAA,sBAAAL,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAsB,OAAA,EAAkB,CAAA;AAAA,sBACxDA,GAAAA;AAAA,QAACG,MAAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,MAAA;AAAA,UACR,IAAA,EAAK,QAAA;AAAA,UACL,SAAA,EAAU,oBAAA;AAAA,UACV,OAAA,EAAS,wBAAA;AAAA,UAER,QAAA,EAAA,YAAA,CAAa;AAAA;AAAA;AAChB,KAAA,EACF,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEH,GAAAA,CAACM,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,kBAAAD,IAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAU,YAAA,CAAa,QAAQ,CAAA,EAAG,WAAU,eAAA,EAChD,QAAA,EAAA;AAAA,oBAAAL,GAAAA;AAAA,MAACU,SAAAA;AAAA,MAAA;AAAA,QACC,OAAO,YAAA,CAAa,4BAAA;AAAA,QACpB,EAAA,EAAG,gBAAA;AAAA,QACH,IAAA,EAAK,MAAA;AAAA,QACL,YAAA,EAAa,UAAA;AAAA,QACb,KAAA,EAAO,OAAO,QAAA,EAAU,OAAA;AAAA,QACvB,GAAG,SAAS,UAAU;AAAA;AAAA,KACzB;AAAA,IAEC,iCACCV,GAAAA;AAAA,MAACc,iBAAAA;AAAA,MAAA;AAAA,QACC,OAAO,YAAA,CAAa,QAAA;AAAA,QACpB,EAAA,EAAG,gBAAA;AAAA,QACH,YAAA,EAAa,kBAAA;AAAA,QACb,KAAA,EAAO,OAAO,QAAA,EAAU,OAAA;AAAA,QACvB,GAAG,SAAS,UAAU;AAAA;AAAA,KACzB;AAAA,IAGD,SAAA,oBACCd,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,oBAGFA,GAAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,YAAA;AAAA,QACT,cAAc,YAAA,CAAa,UAAA;AAAA,QAC3B,aAAa,YAAA,CAAa;AAAA;AAAA,KAC5B;AAAA,oBAEAK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAAA,EACZ,QAAA,EAAA;AAAA,MAAA,oBAAA,oBACCL,GAAAA;AAAA,QAACG,MAAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,MAAA;AAAA,UACR,IAAA,EAAK,QAAA;AAAA,UACL,SAAA,EAAU,YAAA;AAAA,UACV,OAAA,EAAS,qBAAA;AAAA,UAER,QAAA,EAAA,YAAA,CAAa;AAAA;AAAA,OAChB;AAAA,MAED,+BACCH,GAAAA;AAAA,QAACG,MAAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,MAAA;AAAA,UACR,IAAA,EAAK,QAAA;AAAA,UACL,SAAA,EAAU,YAAA;AAAA,UACV,OAAA,EAAS,mBAAA;AAAA,UAER,QAAA,EAAA,YAAA,CAAa;AAAA;AAAA;AAChB,KAAA,EAEJ,CAAA;AAAA,IAEC,kBAAkB,cAAA,CAAe,MAAA,GAAS,qBACzCE,IAAAA,CAAAJ,UAAA,EACE,QAAA,EAAA;AAAA,sBAAAI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EACb,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oCAAA,EAAqC,CAAA;AAAA,wBACpDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4BAAA,EAA8B,uBAAa,gBAAA,EAAiB,CAAA;AAAA,wBAC5EA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oCAAA,EAAqC;AAAA,OAAA,EACtD,CAAA;AAAA,sBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACZ,yBAAe,GAAA,CAAI,CAAC,QAAA,qBACnBA,IAAC,WAAA,EAAA,EAA2B,QAAA,EAAoB,aAAa,gBAAA,EAAA,EAA3C,QAA6D,CAChF,CAAA,EACH;AAAA,KAAA,EACF;AAAA,GAAA,EAEJ,CAAA,EACF,CAAA;AAEJ;ACnLO,IAAM,kBAAA,GAAqBO,EAAE,MAAA,CAAO;AAAA,EACzC,OAAOA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,KAAA;AAC3B,CAAC;AAIM,IAAM,iBAAA,GAAoBA,EAAE,MAAA,CAAO;AAAA,EACxC,IAAA,EAAMA,EACH,MAAA,EAAO,CACP,OAAO,CAAC,CAAA,CACR,MAAM,SAAS;AACpB,CAAC;AAIM,IAAM,wBAAA,GAA2BA,EACrC,MAAA,CAAO;AAAA,EACN,WAAA,EAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC7B,eAAA,EAAiBA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AACnC,CAAC,EACA,MAAA,CAAO,CAAC,SAAS,IAAA,CAAK,WAAA,KAAgB,KAAK,eAAA,EAAiB;AAAA,EAC3D,OAAA,EAAS,wBAAA;AAAA,EACT,IAAA,EAAM,CAAC,iBAAiB;AAC1B,CAAC;AAII,IAAM,kBAAA,GAAqBA,EAAE,MAAA,CAAO;AAAA,EACzC,WAAA,EAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AAC/B,CAAC;ACGM,SAAS,kBAAA,CAAmB;AAAA,EACjC,WAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,SAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA,GAAiB,EAAA;AAAA,EACjB;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,EAAE,oBAAA,EAAsB,qBAAA,EAAuB,WAAA,EAAa,aAAA,KAAkB,OAAA,EAAQ;AAC5F,EAAA,MAAM,EAAE,OAAA,EAAS,MAAA,EAAQ,WAAA,KAAgB,QAAA,EAAS;AAClD,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAA,EAAoB;AAE7D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIV,SAAwB,CAAC,CAAA;AACjD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAS,EAAE,CAAA;AACrC,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,EAAE,CAAA;AACjD,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,SAAgC,IAAI,CAAA;AAChF,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAC9E,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAC9D,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,SAAS,CAAC,CAAA;AAC5D,EAAA,MAAM,OAAA,GAAUkB,OAAO,EAAE,CAAA;AAEzB,EAAA,MAAM,YAAYP,OAAAA,CAA8B;AAAA,IAC9C,QAAA,EAAUC,YAAY,kBAAkB,CAAA;AAAA,IACxC,aAAA,EAAe,EAAE,KAAA,EAAO,EAAA;AAAG,GAC5B,CAAA;AAED,EAAA,MAAM,YAAYD,OAAAA,CAA8B;AAAA,IAC9C,QAAA,EAAUC,YAAY,kBAAkB,CAAA;AAAA,IACxC,aAAA,EAAe,EAAE,WAAA,EAAa,EAAA;AAAG,GAClC,CAAA;AAED,EAAA,MAAM,eAAeD,OAAAA,CAAoC;AAAA,IACvD,QAAA,EAAUC,YAAY,wBAAwB,CAAA;AAAA,IAC9C,aAAA,EAAe,EAAE,WAAA,EAAa,EAAA,EAAI,iBAAiB,EAAA;AAAG,GACvD,CAAA;AAED,EAAAL,UAAU,MAAM;AACd,IAAA,IAAI,qBAAqB,CAAA,EAAG;AAE5B,IAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,MAAA,oBAAA,CAAqB,CAAC,IAAA,KAAS,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,GAAO,CAAC,CAAC,CAAA;AAAA,IACtD,GAAG,GAAI,CAAA;AAEP,IAAA,OAAO,MAAM,cAAc,KAAK,CAAA;AAAA,EAClC,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAEtB,EAAA,MAAM,aAAA,GAAgBN,YAAY,MAAM;AACtC,IAAA,IAAI,cAAA,KAAmB,cAAc,OAAO,CAAA;AAC5C,IAAA,OAAO,CAAA;AAAA,EACT,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAEnB,EAAA,MAAM,YAAA,GAAeA,YAAY,MAAM;AACrC,IAAA,IAAI,SAAS,CAAA,EAAG;AACd,MAAA,OAAA,CAAQ,CAAC,CAAA;AACT,MAAA,iBAAA,CAAkB,IAAI,CAAA;AAAA,IACxB,CAAA,MAAA,IAAW,SAAS,CAAA,EAAG;AACrB,MAAA,OAAA,CAAQ,CAAC,CAAA;AACT,MAAA,OAAA,CAAQ,OAAA,GAAU,EAAA;AAAA,IACpB,CAAA,MAAA,IAAW,SAAS,CAAA,EAAG;AACrB,MAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,IACX;AACA,IAAA,YAAA,CAAa,IAAI,CAAA;AAAA,EACnB,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,aAAA,GAAgBA,WAAAA,CAAY,OAAO,IAAA,KAA+B;AACtE,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,QAAA,CAAS,KAAK,KAAK,CAAA;AACnB,IAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,EACX,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,kBAAA,GAAqBA,WAAAA;AAAA,IACzB,OAAO,MAAA,KAA2B;AAChC,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,iBAAA,CAAkB,MAAM,CAAA;AAExB,MAAA,IAAI;AACF,QAAA,IAAI,WAAW,YAAA,EAAc;AAC3B,UAAA,MAAM,oBAAA,CAAqB,EAAE,KAAA,EAAO,WAAA,EAAa,CAAA;AACjD,UAAA,oBAAA,CAAqB,cAAc,CAAA;AACnC,UAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,QACX,CAAA,MAAA,IAAW,WAAW,YAAA,EAAc;AAClC,UAAA,MAAM,qBAAA,CAAsB,EAAE,KAAA,EAAO,WAAA,EAAa,CAAA;AAClD,UAAA,oBAAA,CAAqB,cAAc,CAAA;AACnC,UAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,QACX,CAAA,MAAA,IAAW,WAAW,WAAA,EAAa;AACjC,UAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,QACX;AAAA,MACF,SAAS,GAAA,EAAK;AACZ,QAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,QAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,MAC5B,CAAA,SAAE;AACA,QAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,MACvB;AAAA,IACF,CAAA;AAAA,IACA;AAAA,MACE,KAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,qBAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,MAAM,qBAAA,GAAwBA,YAAY,YAAY;AACpD,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,IAAA,IAAI;AACF,MAAA,MAAM,oBAAA,CAAqB,EAAE,KAAA,EAAO,WAAA,EAAa,CAAA;AACjD,MAAA,oBAAA,CAAqB,cAAc,CAAA;AAAA,IACrC,SAAS,GAAA,EAAK;AACZ,MAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AAAA,IACnE,CAAA,SAAE;AACA,MAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,IACvB;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,WAAA,EAAa,gBAAgB,oBAAA,EAAsB,YAAA,EAAc,cAAc,CAAC,CAAA;AAE3F,EAAA,MAAM,qBAAA,GAAwBA,YAAY,YAAY;AACpD,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,IAAA,IAAI;AACF,MAAA,MAAM,qBAAA,CAAsB,EAAE,KAAA,EAAO,WAAA,EAAa,CAAA;AAClD,MAAA,oBAAA,CAAqB,cAAc,CAAA;AAAA,IACrC,SAAS,GAAA,EAAK;AACZ,MAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AAAA,IACnE,CAAA,SAAE;AACA,MAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,IACvB;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,WAAA,EAAa,gBAAgB,qBAAA,EAAuB,YAAA,EAAc,cAAc,CAAC,CAAA;AAE5F,EAAA,MAAM,oBAAA,GAAuBA,YAAY,YAAY;AACnD,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,IAAA,IAAI;AACF,MAAA,MAAM,QAAQ,WAAW,CAAA;AACzB,MAAA,oBAAA,CAAqB,cAAc,CAAA;AAAA,IACrC,SAAS,GAAA,EAAK;AACZ,MAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AAAA,IACnE,CAAA,SAAE;AACA,MAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,WAAA,EAAa,gBAAgB,OAAA,EAAS,YAAA,EAAc,cAAc,CAAC,CAAA;AAEvE,EAAA,MAAM,aAAA,GAAgBA,WAAAA;AAAA,IACpB,OAAO,IAAA,KAA+B;AACpC,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,IAAI;AACF,QAAA,cAAA,CAAe,KAAK,WAAW,CAAA;AAC/B,QAAA,MAAM,OAAA,CAAQ,KAAK,WAAW,CAAA;AAC9B,QAAA,oBAAA,CAAqB,cAAc,CAAA;AACnC,QAAA,YAAA,CAAa,IAAI,CAAA;AAAA,MACnB,SAAS,GAAA,EAAK;AACZ,QAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,QAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,MAC5B,CAAA,SAAE;AACA,QAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,MACvB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,OAAA,EAAS,cAAA,EAAgB,OAAA,EAAS,cAAc,cAAc;AAAA,GACjE;AAEA,EAAA,MAAM,qBAAA,GAAwBA,WAAAA;AAAA,IAC5B,OAAO,IAAA,KAAiB;AACtB,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,IAAI;AACF,QAAA,MAAM,WAAA,CAAY,EAAE,KAAA,EAAO,IAAA,EAAM,CAAA;AACjC,QAAA,oBAAA,CAAqB,IAAI,CAAA;AACzB,QAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,MACX,SAAS,GAAA,EAAK;AACZ,QAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,QAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,MAC5B,CAAA,SAAE;AACA,QAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,MACvB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,OAAA,EAAS,YAAA,EAAc,cAAc;AAAA,GACrD;AAEA,EAAA,MAAM,qBAAA,GAAwBA,WAAAA;AAAA,IAC5B,OAAO,IAAA,KAAiB;AACtB,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,IAAI;AACF,QAAA,MAAM,WAAA,CAAY,aAAa,IAAI,CAAA;AACnC,QAAA,oBAAA,CAAqB,IAAI,CAAA;AACzB,QAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,MACX,SAAS,GAAA,EAAK;AACZ,QAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,QAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,MAC5B,CAAA,SAAE;AACA,QAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,MACvB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,WAAA,EAAa,OAAA,EAAS,cAAc,cAAc;AAAA,GAClE;AAEA,EAAA,MAAM,iBAAA,GAAoBA,WAAAA;AAAA,IACxB,CAAC,IAAA,KAAiB;AAChB,MAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAClB,MAAA,IAAI,mBAAmB,YAAA,EAAc;AACnC,QAAA,qBAAA,CAAsB,IAAI,CAAA;AAAA,MAC5B,CAAA,MAAA,IAAW,mBAAmB,WAAA,EAAa;AACzC,QAAA,qBAAA,CAAsB,IAAI,CAAA;AAAA,MAC5B;AAAA,IACF,CAAA;AAAA,IACA,CAAC,cAAA,EAAgB,qBAAA,EAAuB,qBAAqB;AAAA,GAC/D;AAEA,EAAA,MAAM,kBAAA,GAAqBA,WAAAA;AAAA,IACzB,CAAC,CAAA,KAAuB;AACtB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,QAAA,IAAI,mBAAmB,YAAA,EAAc;AACnC,UAAA,qBAAA,CAAsB,QAAQ,OAAO,CAAA;AAAA,QACvC,CAAA,MAAA,IAAW,mBAAmB,WAAA,EAAa;AACzC,UAAA,qBAAA,CAAsB,QAAQ,OAAO,CAAA;AAAA,QACvC;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,cAAA,EAAgB,qBAAA,EAAuB,qBAAqB;AAAA,GAC/D;AAEA,EAAA,MAAM,gBAAA,GAAmBA,WAAAA;AAAA,IACvB,OAAO,IAAA,KAAqC;AAC1C,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,IAAI;AACF,QAAA,MAAM,QAAQ,iBAAA,IAAqB,EAAA;AACnC,QAAA,MAAM,cAAc,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,CAAK,aAAa,CAAA;AAC5D,QAAA,SAAA,IAAY;AAAA,MACd,SAAS,GAAA,EAAK;AACZ,QAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,QAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,MAC5B,CAAA,SAAE;AACA,QAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,MACvB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,iBAAA,EAAmB,aAAA,EAAe,SAAA,EAAW,OAAA,EAAS,cAAc,cAAc;AAAA,GACrF;AAEA,EAAA,IAAI,SAAS,CAAA,EAAG;AACd,IAAA,uBACEO,IAAAA,CAACC,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,EAAA;AAAA,sBAAAD,IAAAA,CAACW,YAAA,EACC,QAAA,EAAA;AAAA,wBAAAhB,GAAAA,CAACiB,SAAAA,EAAA,EAAW,QAAA,EAAA,YAAA,CAAa,eAAA,EAAgB,CAAA;AAAA,wBACzCjB,GAAAA,CAACkB,eAAAA,EAAA,EAAiB,uBAAa,2BAAA,EAA4B;AAAA,OAAA,EAC7D,CAAA;AAAA,sBACAlB,GAAAA,CAACmB,WAAAA,EAAA,EACC,QAAA,kBAAAd,IAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAU,SAAA,CAAU,YAAA,CAAa,aAAa,CAAA,EAAG,WAAU,WAAA,EAC/D,QAAA,EAAA;AAAA,wBAAAL,GAAAA;AAAA,UAACU,SAAAA;AAAA,UAAA;AAAA,YACC,OAAO,YAAA,CAAa,KAAA;AAAA,YACpB,EAAA,EAAG,eAAA;AAAA,YACH,IAAA,EAAK,OAAA;AAAA,YACL,YAAA,EAAa,OAAA;AAAA,YACb,KAAA,EAAO,SAAA,CAAU,SAAA,CAAU,MAAA,CAAO,KAAA,EAAO,OAAA;AAAA,YACzC,QAAA,EAAU,YAAA;AAAA,YACT,GAAG,SAAA,CAAU,QAAA,CAAS,OAAO;AAAA;AAAA,SAChC;AAAA,QAEC,SAAA,oBACCV,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,wBAGFA,GAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,YAAA;AAAA,YACT,cAAc,YAAA,CAAa,OAAA;AAAA,YAC3B,aAAa,YAAA,CAAa;AAAA;AAAA;AAC5B,OAAA,EACF,CAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,IAAI,SAAS,CAAA,EAAG;AACd,IAAA,uBACEK,IAAAA,CAACC,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,EAAA;AAAA,sBAAAD,IAAAA,CAACW,YAAA,EACC,QAAA,EAAA;AAAA,wBAAAhB,GAAAA,CAACiB,SAAAA,EAAA,EAAW,QAAA,EAAA,YAAA,CAAa,sBAAA,EAAuB,CAAA;AAAA,wBAChDjB,IAACkB,eAAAA,EAAA,EACE,uBAAa,OAAA,CAAQ,OAAA,CAAQ,aAAA,EAAe,GAAG,CAAA,CAAE,OAAA;AAAA,UAChD,WAAA;AAAA,UACA,MAAA,CAAO,eAAe;AAAA,SACxB,EACF;AAAA,OAAA,EACF,CAAA;AAAA,sBACAb,IAAAA,CAACc,WAAAA,EAAA,EAAY,WAAU,WAAA,EACrB,QAAA,EAAA;AAAA,wBAAAnB,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,MAAM,kBAAA,CAAmB,YAAY,CAAA;AAAA,YAC9C,QAAA,EAAU,YAAA;AAAA,YACV,SAAA,EAAU,2HAAA;AAAA,YAEV,QAAA,kBAAAK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,8BAAAL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAe,uBAAa,eAAA,EAAgB,CAAA;AAAA,8BAC3DA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EAAyB,uBAAa,qBAAA,EAAsB;AAAA,aAAA,EAC7E;AAAA;AAAA,SACF;AAAA,wBAEAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,MAAM,kBAAA,CAAmB,YAAY,CAAA;AAAA,YAC9C,QAAA,EAAU,YAAA;AAAA,YACV,SAAA,EAAU,2HAAA;AAAA,YAEV,QAAA,kBAAAK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,8BAAAL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAe,uBAAa,gBAAA,EAAiB,CAAA;AAAA,8BAC5DA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EAAyB,uBAAa,qBAAA,EAAsB;AAAA,aAAA,EAC7E;AAAA;AAAA,SACF;AAAA,QAEC,+BACCA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,MAAM,kBAAA,CAAmB,WAAW,CAAA;AAAA,YAC7C,QAAA,EAAU,YAAA;AAAA,YACV,SAAA,EAAU,2HAAA;AAAA,YAEV,QAAA,kBAAAK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,8BAAAL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAe,uBAAa,gBAAA,EAAiB,CAAA;AAAA,8BAC5DA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACZ,uBAAa,yBAAA,EAChB;AAAA,aAAA,EACF;AAAA;AAAA,SACF;AAAA,QAGD,SAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,wBAGFA,GAAAA,CAACG,MAAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAQ,OAAA,EAAQ,OAAA,EAAS,YAAA,EAAc,SAAA,EAAU,QAAA,EACpE,uBAAa,OAAA,EAChB;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,IAAI,SAAS,CAAA,EAAG;AACd,IAAA,IAAI,mBAAmB,YAAA,EAAc;AACnC,MAAA,uBACEE,IAAAA,CAACC,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,EAAA;AAAA,wBAAAD,IAAAA,CAACW,YAAA,EACC,QAAA,EAAA;AAAA,0BAAAhB,GAAAA,CAACiB,SAAAA,EAAA,EAAW,QAAA,EAAA,YAAA,CAAa,gBAAA,EAAiB,CAAA;AAAA,0BAC1CjB,IAACkB,eAAAA,EAAA,EACE,uBAAa,OAAA,CAAQ,OAAA,CAAQ,aAAA,EAAe,GAAG,CAAA,CAAE,OAAA;AAAA,YAChD,WAAA;AAAA,YACA,MAAA,CAAO,eAAe;AAAA,WACxB,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBACAb,IAAAA,CAACc,WAAAA,EAAA,EAAY,WAAU,WAAA,EACrB,QAAA,EAAA;AAAA,0BAAAd,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,4BAAAL,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAW,uBAAa,qBAAA,EAAsB,CAAA;AAAA,4BAC3DA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,qBAAA,EAAuB,QAAA,EAAA,SAAA,CAAU,KAAK,CAAA,EAAE;AAAA,WAAA,EACvD,CAAA;AAAA,0BAEAK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,4BAAAL,GAAAA;AAAA,cAACG,MAAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAQ,SAAA;AAAA,gBACR,QAAA,EAAU,gBAAgB,iBAAA,GAAoB,CAAA;AAAA,gBAC9C,OAAA,EAAS,qBAAA;AAAA,gBACT,SAAA,EAAU,QAAA;AAAA,gBAET,QAAA,EAAA,iBAAA,GAAoB,CAAA,GACjB,YAAA,CAAa,SAAA,CAAU,OAAA,CAAQ,aAAA,EAAe,MAAA,CAAO,iBAAiB,CAAC,CAAA,GACvE,YAAA,GACE,YAAA,CAAa,YACb,YAAA,CAAa;AAAA;AAAA,aACrB;AAAA,4BAEAH,GAAAA,CAACG,MAAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAQ,OAAA,EAAQ,OAAA,EAAS,YAAA,EAAc,SAAA,EAAU,QAAA,EACpE,uBAAa,OAAA,EAChB;AAAA,WAAA,EACF,CAAA;AAAA,UAEC,SAAA,oBACCH,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,oCAC/B,QAAA,EAAA,SAAA,EACH;AAAA,SAAA,EAEJ;AAAA,OAAA,EACF,CAAA;AAAA,IAEJ;AAEA,IAAA,IAAI,mBAAmB,YAAA,EAAc;AACnC,MAAA,uBACEK,IAAAA,CAACC,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,EAAA;AAAA,wBAAAD,IAAAA,CAACW,YAAA,EACC,QAAA,EAAA;AAAA,0BAAAhB,GAAAA,CAACiB,SAAAA,EAAA,EAAW,QAAA,EAAA,YAAA,CAAa,SAAA,EAAU,CAAA;AAAA,0BACnCjB,IAACkB,eAAAA,EAAA,EACE,uBAAa,OAAA,CAAQ,OAAA,CAAQ,aAAA,EAAe,GAAG,CAAA,CAAE,OAAA;AAAA,YAChD,WAAA;AAAA,YACA,MAAA,CAAO,eAAe;AAAA,WACxB,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBACAlB,IAACmB,WAAAA,EAAA,EACC,0BAAAd,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACb,QAAA,EAAA;AAAA,0BAAAL,GAAAA,CAAC,SAAI,SAAA,EAAU,uBAAA,EACb,0BAAAK,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,SAAA,EACV,QAAA,EAAA;AAAA,YAAA,YAAA,CAAa,cAAA;AAAA,YAAe,GAAA;AAAA,4BAACL,GAAAA,CAAC,QAAA,EAAA,EAAQ,QAAA,EAAA,SAAA,CAAU,KAAK,CAAA,EAAE;AAAA,WAAA,EAC1D,CAAA,EACF,CAAA;AAAA,0BAEAK,IAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,WAAU,WAAA,EAE5C,QAAA,EAAA;AAAA,4BAAAA,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,2BAAA,EACd,QAAA,EAAA;AAAA,cAAA,YAAA,CAAa,uBAAA;AAAA,8BACdL,GAAAA;AAAA,gBAACa,QAAAA;AAAA,gBAAA;AAAA,kBACC,MAAA,EAAQ,CAAA;AAAA,kBACR,UAAA,EAAY,iBAAA;AAAA,kBACZ,QAAA,EAAU,YAAA;AAAA,kBACV,SAAA,EAAU;AAAA;AAAA;AACZ,aAAA,EACF,CAAA;AAAA,YAEC,SAAA,oBACCb,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,4BAGFA,GAAAA;AAAA,cAAC,YAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,YAAA;AAAA,gBACT,cAAc,YAAA,CAAa,SAAA;AAAA,gBAC3B,aAAa,YAAA,CAAa;AAAA;AAAA,aAC5B;AAAA,4BAEAK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,8BAAAL,GAAAA;AAAA,gBAACG,MAAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,OAAA,EAAQ,SAAA;AAAA,kBACR,QAAA,EAAU,gBAAgB,iBAAA,GAAoB,CAAA;AAAA,kBAC9C,OAAA,EAAS,qBAAA;AAAA,kBACT,SAAA,EAAU,QAAA;AAAA,kBAET,QAAA,EAAA,iBAAA,GAAoB,CAAA,GACjB,YAAA,CAAa,SAAA,CAAU,OAAA,CAAQ,aAAA,EAAe,MAAA,CAAO,iBAAiB,CAAC,CAAA,GACvE,YAAA,GACE,YAAA,CAAa,YACb,YAAA,CAAa;AAAA;AAAA,eACrB;AAAA,8BAEAH,GAAAA,CAACG,MAAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAQ,OAAA,EAAQ,OAAA,EAAS,YAAA,EAAc,SAAA,EAAU,QAAA,EACpE,uBAAa,OAAA,EAChB;AAAA,aAAA,EACF;AAAA,WAAA,EACF;AAAA,SAAA,EACF,CAAA,EACF;AAAA,OAAA,EACF,CAAA;AAAA,IAEJ;AAEA,IAAA,IAAI,mBAAmB,WAAA,EAAa;AAClC,MAAA,IAAI,CAAC,WAAA,EAAa;AAChB,QAAA,uBACEE,IAAAA,CAACC,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,EAAA;AAAA,0BAAAD,IAAAA,CAACW,YAAA,EACC,QAAA,EAAA;AAAA,4BAAAhB,GAAAA,CAACiB,SAAAA,EAAA,EAAW,QAAA,EAAA,YAAA,CAAa,gBAAA,EAAiB,CAAA;AAAA,4BAC1CjB,IAACkB,eAAAA,EAAA,EACE,uBAAa,OAAA,CAAQ,OAAA,CAAQ,aAAA,EAAe,GAAG,CAAA,CAAE,OAAA;AAAA,cAChD,WAAA;AAAA,cACA,MAAA,CAAO,eAAe;AAAA,aACxB,EACF;AAAA,WAAA,EACF,CAAA;AAAA,0BACAlB,GAAAA,CAACmB,WAAAA,EAAA,EACC,QAAA,kBAAAd,IAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAU,SAAA,CAAU,YAAA,CAAa,aAAa,CAAA,EAAG,WAAU,WAAA,EAC/D,QAAA,EAAA;AAAA,4BAAAL,GAAAA;AAAA,cAACU,SAAAA;AAAA,cAAA;AAAA,gBACC,OAAO,YAAA,CAAa,wBAAA;AAAA,gBACpB,EAAA,EAAG,eAAA;AAAA,gBACH,IAAA,EAAK,KAAA;AAAA,gBACL,YAAA,EAAa,KAAA;AAAA,gBACb,KAAA,EAAO,SAAA,CAAU,SAAA,CAAU,MAAA,CAAO,WAAA,EAAa,OAAA;AAAA,gBAC/C,QAAA,EAAU,YAAA;AAAA,gBACT,GAAG,SAAA,CAAU,QAAA,CAAS,aAAa;AAAA;AAAA,aACtC;AAAA,YAEC,SAAA,oBACCV,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,4BAGFA,GAAAA;AAAA,cAAC,YAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,YAAA;AAAA,gBACT,cAAc,YAAA,CAAa,yBAAA;AAAA,gBAC3B,aAAa,YAAA,CAAa;AAAA;AAAA,aAC5B;AAAA,4BAEAA,GAAAA,CAACG,MAAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAQ,OAAA,EAAQ,OAAA,EAAS,YAAA,EAAc,SAAA,EAAU,QAAA,EACpE,uBAAa,OAAA,EAChB;AAAA,WAAA,EACF,CAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,MAEJ;AAEA,MAAA,uBACEE,IAAAA,CAACC,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,EAAA;AAAA,wBAAAD,IAAAA,CAACW,YAAA,EACC,QAAA,EAAA;AAAA,0BAAAhB,GAAAA,CAACiB,SAAAA,EAAA,EAAW,QAAA,EAAA,YAAA,CAAa,iBAAA,EAAkB,CAAA;AAAA,0BAC3CjB,IAACkB,eAAAA,EAAA,EACE,uBAAa,OAAA,CAAQ,OAAA,CAAQ,aAAA,EAAe,GAAG,CAAA,CAAE,OAAA;AAAA,YAChD,WAAA;AAAA,YACA,MAAA,CAAO,eAAe;AAAA,WACxB,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBACAlB,IAACmB,WAAAA,EAAA,EACC,0BAAAd,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACb,QAAA,EAAA;AAAA,0BAAAL,GAAAA,CAAC,SAAI,SAAA,EAAU,uBAAA,EACb,0BAAAK,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,SAAA,EACV,QAAA,EAAA;AAAA,YAAA,YAAA,CAAa,cAAA;AAAA,YAAe,GAAA;AAAA,4BAACL,GAAAA,CAAC,QAAA,EAAA,EAAQ,QAAA,EAAA,WAAA,EAAY;AAAA,WAAA,EACrD,CAAA,EACF,CAAA;AAAA,0BAEAK,IAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,WAAU,WAAA,EAE5C,QAAA,EAAA;AAAA,4BAAAA,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,2BAAA,EACd,QAAA,EAAA;AAAA,cAAA,YAAA,CAAa,uBAAA;AAAA,8BACdL,GAAAA;AAAA,gBAACa,QAAAA;AAAA,gBAAA;AAAA,kBACC,MAAA,EAAQ,CAAA;AAAA,kBACR,UAAA,EAAY,iBAAA;AAAA,kBACZ,QAAA,EAAU,YAAA;AAAA,kBACV,SAAA,EAAU;AAAA;AAAA;AACZ,aAAA,EACF,CAAA;AAAA,YAEC,SAAA,oBACCb,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,4BAGFA,GAAAA;AAAA,cAAC,YAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,YAAA;AAAA,gBACT,cAAc,YAAA,CAAa,SAAA;AAAA,gBAC3B,aAAa,YAAA,CAAa;AAAA;AAAA,aAC5B;AAAA,4BAEAK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,8BAAAL,GAAAA;AAAA,gBAACG,MAAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,OAAA,EAAQ,SAAA;AAAA,kBACR,QAAA,EAAU,gBAAgB,iBAAA,GAAoB,CAAA;AAAA,kBAC9C,OAAA,EAAS,oBAAA;AAAA,kBACT,SAAA,EAAU,QAAA;AAAA,kBAET,QAAA,EAAA,iBAAA,GAAoB,CAAA,GACjB,YAAA,CAAa,SAAA,CAAU,OAAA,CAAQ,aAAA,EAAe,MAAA,CAAO,iBAAiB,CAAC,CAAA,GACvE,YAAA,GACE,YAAA,CAAa,YACb,YAAA,CAAa;AAAA;AAAA,eACrB;AAAA,8BAEAH,GAAAA,CAACG,MAAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAQ,OAAA,EAAQ,OAAA,EAAS,YAAA,EAAc,SAAA,EAAU,QAAA,EACpE,uBAAa,OAAA,EAChB;AAAA,aAAA,EACF;AAAA,WAAA,EACF;AAAA,SAAA,EACF,CAAA,EACF;AAAA,OAAA,EACF,CAAA;AAAA,IAEJ;AAAA,EACF;AAEA,EAAA,IAAI,SAAS,CAAA,EAAG;AACd,IAAA,uBACEE,IAAAA,CAACC,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,EAAA;AAAA,sBAAAD,IAAAA,CAACW,YAAA,EACC,QAAA,EAAA;AAAA,wBAAAhB,GAAAA,CAACiB,SAAAA,EAAA,EAAW,QAAA,EAAA,YAAA,CAAa,cAAA,EAAe,CAAA;AAAA,wBACxCjB,IAACkB,eAAAA,EAAA,EACE,uBAAa,OAAA,CAAQ,OAAA,CAAQ,aAAA,EAAe,GAAG,CAAA,CAAE,OAAA;AAAA,UAChD,WAAA;AAAA,UACA,MAAA,CAAO,eAAe;AAAA,SACxB,EACF;AAAA,OAAA,EACF,CAAA;AAAA,sBACAlB,GAAAA,CAACmB,WAAAA,EAAA,EACC,QAAA,kBAAAd,IAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAU,YAAA,CAAa,YAAA,CAAa,gBAAgB,CAAA,EAAG,WAAU,WAAA,EACrE,QAAA,EAAA;AAAA,wBAAAL,GAAAA;AAAA,UAACc,iBAAAA;AAAA,UAAA;AAAA,YACC,OAAO,YAAA,CAAa,YAAA;AAAA,YACpB,EAAA,EAAG,cAAA;AAAA,YACH,YAAA,EAAa,cAAA;AAAA,YACb,KAAA,EAAO,YAAA,CAAa,SAAA,CAAU,MAAA,CAAO,WAAA,EAAa,OAAA;AAAA,YAClD,QAAA,EAAU,YAAA;AAAA,YACT,GAAG,YAAA,CAAa,QAAA,CAAS,aAAa;AAAA;AAAA,SACzC;AAAA,wBAEAd,GAAAA;AAAA,UAACc,iBAAAA;AAAA,UAAA;AAAA,YACC,OAAO,YAAA,CAAa,oBAAA;AAAA,YACpB,EAAA,EAAG,kBAAA;AAAA,YACH,YAAA,EAAa,cAAA;AAAA,YACb,KAAA,EAAO,YAAA,CAAa,SAAA,CAAU,MAAA,CAAO,eAAA,EAAiB,OAAA;AAAA,YACtD,QAAA,EAAU,YAAA;AAAA,YACT,GAAG,YAAA,CAAa,QAAA,CAAS,iBAAiB;AAAA;AAAA,SAC7C;AAAA,QAEC,SAAA,oBACCd,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,wBAGFA,GAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,YAAA;AAAA,YACT,cAAc,YAAA,CAAa,OAAA;AAAA,YAC3B,aAAa,YAAA,CAAa;AAAA;AAAA,SAC5B;AAAA,wBAEAA,GAAAA,CAACG,MAAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAQ,OAAA,EAAQ,OAAA,EAAS,YAAA,EAAc,SAAA,EAAU,QAAA,EACpE,uBAAa,OAAA,EAChB;AAAA,OAAA,EACF,CAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,OAAO,IAAA;AACT;AC9pBO,IAAM,mBAAA,GAAsBI,EAChC,MAAA,CAAO;AAAA,EACN,WAAA,EAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC7B,eAAA,EAAiBA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AACnC,CAAC,EACA,MAAA,CAAO,CAAC,SAAS,IAAA,CAAK,WAAA,KAAgB,KAAK,eAAA,EAAiB;AAAA,EAC3D,OAAA,EAAS,wBAAA;AAAA,EACT,IAAA,EAAM,CAAC,iBAAiB;AAC1B,CAAC;ACMI,SAAS,iBAAA,CAAkB;AAAA,EAChC,KAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAA2B;AACzB,EAAA,MAAM,EAAE,aAAA,EAAc,GAAI,OAAA,EAAQ;AAClC,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAA,EAAoB;AAC7D,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIV,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAE9D,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA,EAAW,EAAE,MAAA;AAAO,MAClBW,OAAAA,CAA+B;AAAA,IACjC,QAAA,EAAUC,YAAY,mBAAmB,CAAA;AAAA,IACzC,aAAA,EAAe,EAAE,WAAA,EAAa,EAAA,EAAI,iBAAiB,EAAA;AAAG,GACvD,CAAA;AAED,EAAA,MAAM,QAAA,GAAWX,WAAAA;AAAA,IACf,OAAO,IAAA,KAAgC;AACrC,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,IAAI;AACF,QAAA,MAAM,cAAc,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,CAAK,aAAa,CAAA;AAC5D,QAAA,YAAA,CAAa,IAAI,CAAA;AACjB,QAAA,SAAA,IAAY;AAAA,MACd,SAAS,GAAA,EAAK;AACZ,QAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,QAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,MAC5B,CAAA,SAAE;AACA,QAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,MACvB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,aAAA,EAAe,KAAA,EAAO,SAAA,EAAW,OAAA,EAAS,cAAc,cAAc;AAAA,GACzE;AAEA,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,uBACEE,IAACM,IAAAA,EAAA,EAAK,WACJ,QAAA,kBAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAAA,EACb,QAAA,EAAA;AAAA,sBAAAL,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uBAAA,EAAyB,uBAAa,sBAAA,EAAuB,CAAA;AAAA,sBAC3EA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uBAAA,EAAyB,uBAAa,sBAAA,EAAuB;AAAA,KAAA,EAC5E,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,IAACM,IAAAA,EAAA,EAAK,WACJ,QAAA,kBAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,sBAAAL,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uBAAA,EAAyB,uBAAa,cAAA,EAAe,CAAA;AAAA,sBACnEA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uBAAA,EAAyB,uBAAa,2BAAA,EAA4B;AAAA,KAAA,EACjF,CAAA;AAAA,oBAEAK,KAAC,MAAA,EAAA,EAAK,QAAA,EAAU,aAAa,QAAQ,CAAA,EAAG,WAAU,WAAA,EAChD,QAAA,EAAA;AAAA,sBAAAL,GAAAA;AAAA,QAACc,iBAAAA;AAAA,QAAA;AAAA,UACC,OAAO,YAAA,CAAa,YAAA;AAAA,UACpB,EAAA,EAAG,oBAAA;AAAA,UACH,YAAA,EAAa,cAAA;AAAA,UACb,KAAA,EAAO,OAAO,WAAA,EAAa,OAAA;AAAA,UAC3B,QAAA,EAAU,YAAA;AAAA,UACT,GAAG,SAAS,aAAa;AAAA;AAAA,OAC5B;AAAA,sBAEAd,GAAAA;AAAA,QAACc,iBAAAA;AAAA,QAAA;AAAA,UACC,OAAO,YAAA,CAAa,oBAAA;AAAA,UACpB,EAAA,EAAG,wBAAA;AAAA,UACH,YAAA,EAAa,cAAA;AAAA,UACb,KAAA,EACE,OAAO,eAAA,EAAiB,OAAA,KAAY,2BAChC,YAAA,CAAa,sBAAA,IAA0B,wBAAA,GACvC,MAAA,CAAO,eAAA,EAAiB,OAAA;AAAA,UAE9B,QAAA,EAAU,YAAA;AAAA,UACT,GAAG,SAAS,iBAAiB;AAAA;AAAA,OAChC;AAAA,MAEC,SAAA,oBACCd,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,sBAGFA,GAAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,YAAA;AAAA,UACT,cAAc,YAAA,CAAa,OAAA;AAAA,UAC3B,aAAa,YAAA,CAAa;AAAA;AAAA;AAC5B,KAAA,EACF;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ;AC9GO,IAAM,YAAA,GAAeO,EAAE,MAAA,CAAO;AAAA,EACnC,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,uBAAuB,CAAA;AAAA,EAC/C,UAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,GAAG,wCAAwC,CAAA;AAAA,EACpE,MAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,GAAG,kBAAkB,CAAA;AAAA,EAC1C,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,WAAA,EAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,gBAAA,EAAkBA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACtC,WAAA,EAAaA,EAAE,OAAA,EAAQ;AAAA,EACvB,YAAA,EAAcA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAC3B,CAAC;ACKM,SAAS,UAAA,CAAW;AAAA,EACzB,SAAA;AAAA,EACA,OAAA;AAAA,EACA,iBAAA,GAAoB,KAAA;AAAA,EACpB,cAAA,GAAiB,KAAA;AAAA,EACjB,gBAAA;AAAA,EACA,mBAAA,GAAsB,KAAA;AAAA,EACtB,YAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,OAAA,EAAQ;AAC3B,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAA,EAAoB;AAC7D,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIV,SAAwB,IAAI,CAAA;AAC9D,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAS,KAAK,CAAA;AAEtD,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA,EAAW,EAAE,MAAA;AAAO,MAClBW,OAAAA,CAAwB;AAAA,IAC1B,QAAA,EAAUC,WAAAA;AAAA,MACR,sBACI,YAAA,CAAa,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,gBAAgB,IAAA,EAAM;AAAA,QACvD,SAAS,YAAA,CAAa,kBAAA;AAAA,QACtB,IAAA,EAAM,CAAC,aAAa;AAAA,OACrB,CAAA,GACD;AAAA,KACN;AAAA,IACA,aAAA,EAAe;AAAA,MACb,KAAA,EAAO,EAAA;AAAA,MACP,QAAA,EAAU,EAAA;AAAA,MACV,IAAA,EAAM,EAAA;AAAA,MACN,QAAA,EAAU,EAAA;AAAA,MACV,WAAA,EAAa,EAAA;AAAA,MACb,kBAAkB,gBAAA,IAAoB,EAAA;AAAA,MACtC,WAAA,EAAa;AAAA;AACf,GACD,CAAA;AAED,EAAA,MAAM,QAAA,GAAWX,WAAAA;AAAA,IACf,OAAO,IAAA,KAAyB;AAC9B,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,IAAI;AACF,QAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO;AAAA,UAC5B,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,UAAU,IAAA,CAAK,QAAA;AAAA,UACf,MAAM,IAAA,CAAK,IAAA;AAAA,UACX,UAAU,IAAA,CAAK,QAAA;AAAA,UACf,kBAAkB,IAAA,CAAK,gBAAA;AAAA,UACvB,aAAa,IAAA,CAAK;AAAA,SACnB,CAAA;AACD,QAAA,SAAA,CAAU,SAAS,IAAI,CAAA;AAAA,MACzB,SAAS,GAAA,EAAK;AACZ,QAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,QAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,MAC5B,CAAA,SAAE;AACA,QAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,MACvB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,SAAA,EAAW,OAAA,EAAS,cAAc,cAAc;AAAA,GAC3D;AAEA,EAAA,uBACEE,GAAAA,CAACM,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,kBAAAD,IAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAU,YAAA,CAAa,QAAQ,CAAA,EAAG,WAAU,eAAA,EAChD,QAAA,EAAA;AAAA,oBAAAL,GAAAA;AAAA,MAACU,SAAAA;AAAA,MAAA;AAAA,QACC,OAAO,YAAA,CAAa,IAAA;AAAA,QACpB,EAAA,EAAG,aAAA;AAAA,QACH,IAAA,EAAK,MAAA;AAAA,QACL,YAAA,EAAa,MAAA;AAAA,QACb,KAAA,EAAO,OAAO,IAAA,EAAM,OAAA;AAAA,QACnB,GAAG,SAAS,MAAM;AAAA;AAAA,KACrB;AAAA,oBAEAV,GAAAA;AAAA,MAACU,SAAAA;AAAA,MAAA;AAAA,QACC,OAAO,YAAA,CAAa,KAAA;AAAA,QACpB,EAAA,EAAG,cAAA;AAAA,QACH,IAAA,EAAK,OAAA;AAAA,QACL,YAAA,EAAa,OAAA;AAAA,QACb,KAAA,EAAO,OAAO,KAAA,EAAO,OAAA;AAAA,QACpB,GAAG,SAAS,OAAO;AAAA;AAAA,KACtB;AAAA,oBAEAV,GAAAA;AAAA,MAACc,iBAAAA;AAAA,MAAA;AAAA,QACC,OAAO,YAAA,CAAa,QAAA;AAAA,QACpB,EAAA,EAAG,iBAAA;AAAA,QACH,YAAA,EAAa,cAAA;AAAA,QACb,KAAA,EAAO,OAAO,QAAA,EAAU,OAAA;AAAA,QACvB,GAAG,SAAS,UAAU;AAAA;AAAA,KACzB;AAAA,IAEC,qCACCd,GAAAA;AAAA,MAACU,SAAAA;AAAA,MAAA;AAAA,QACC,OAAO,YAAA,CAAa,QAAA;AAAA,QACpB,EAAA,EAAG,iBAAA;AAAA,QACH,IAAA,EAAK,MAAA;AAAA,QACL,YAAA,EAAa,UAAA;AAAA,QACb,KAAA,EAAO,OAAO,QAAA,EAAU,OAAA;AAAA,QACvB,GAAG,SAAS,UAAU;AAAA;AAAA,KACzB;AAAA,IAGD,kCACCV,GAAAA;AAAA,MAACU,SAAAA;AAAA,MAAA;AAAA,QACC,OAAO,YAAA,CAAa,wBAAA;AAAA,QACpB,EAAA,EAAG,cAAA;AAAA,QACH,IAAA,EAAK,KAAA;AAAA,QACL,YAAA,EAAa,KAAA;AAAA,QACb,KAAA,EAAO,OAAO,WAAA,EAAa,OAAA;AAAA,QAC1B,GAAG,SAAS,aAAa;AAAA;AAAA,KAC5B;AAAA,IAGD,mBAAA,oBACCL,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,sBAAAL,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAG,cAAA;AAAA,UACH,IAAA,EAAK,UAAA;AAAA,UACL,cAAA,EAAc,MAAA,CAAO,WAAA,GAAc,IAAA,GAAO,MAAA;AAAA,UACzC,GAAG,SAAS,aAAa;AAAA;AAAA,OAC5B;AAAA,sBACAA,IAAC,OAAA,EAAA,EAAM,OAAA,EAAQ,gBAAe,SAAA,EAAU,SAAA,EACrC,uBAAa,YAAA,EAChB,CAAA;AAAA,MACC,MAAA,CAAO,+BACNA,GAAAA,CAAC,OAAE,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAA,MAAA,CAAO,WAAA,CAAY,OAAA,EAAQ;AAAA,KAAA,EAEpE,CAAA;AAAA,IAGD,SAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,oBAGFA,GAAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,YAAA;AAAA,QACT,cAAc,YAAA,CAAa,UAAA;AAAA,QAC3B,aAAa,YAAA,CAAa;AAAA;AAAA,KAC5B;AAAA,IAEC,YAAA,oBACCK,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,qBAAA,EACV,QAAA,EAAA;AAAA,MAAA,YAAA,CAAa,uBAAA;AAAA,MAAyB,GAAA;AAAA,sBACvCL,GAAAA;AAAA,QAACG,MAAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,MAAA;AAAA,UACR,IAAA,EAAK,QAAA;AAAA,UACL,SAAA,EAAU,oBAAA;AAAA,UACV,OAAA,EAAS,YAAA;AAAA,UAER,QAAA,EAAA,YAAA,CAAa;AAAA;AAAA;AAChB,KAAA,EACF;AAAA,GAAA,EAEJ,CAAA,EACF,CAAA;AAEJ;AC7KO,IAAM,UAAA,GAAaI,EAAE,MAAA,CAAO;AAAA,EACjC,IAAA,EAAMA,EACH,MAAA,EAAO,CACP,OAAO,CAAC,CAAA,CACR,MAAM,SAAS;AACpB,CAAC;AAIM,IAAM,gBAAA,GAAmBA,EAAE,MAAA,CAAO;AAAA,EACvC,UAAA,EAAYA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AAC9B,CAAC;ACSM,SAAS,aAAA,CAAc;AAAA,EAC5B,QAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,SAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAA,EAAoB;AAC7D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIV,SAA4B,MAAM,CAAA;AAC1D,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAC9D,EAAA,MAAM,OAAA,GAAUkB,OAAO,EAAE,CAAA;AAEzB,EAAA,MAAM,UAAU,SAAA,IAAa,YAAA;AAE7B,EAAA,MAAM,aAAaP,OAAAA,CAA4B;AAAA,IAC7C,QAAA,EAAUC,YAAY,gBAAgB,CAAA;AAAA,IACtC,aAAA,EAAe,EAAE,UAAA,EAAY,EAAA;AAAG,GACjC,CAAA;AAED,EAAA,MAAM,YAAA,GAAeX,WAAAA;AAAA,IACnB,OAAO,IAAA,KAAiB;AACtB,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,IAAI;AACF,QAAA,MAAM,SAAS,IAAI,CAAA;AAAA,MACrB,SAAS,GAAA,EAAK;AACZ,QAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,QAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,MAC5B,CAAA,SAAE;AACA,QAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,MACvB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,OAAA,EAAS,YAAA,EAAc,cAAc;AAAA,GAClD;AAEA,EAAA,MAAM,iBAAA,GAAoBA,WAAAA;AAAA,IACxB,CAAC,IAAA,KAAiB;AAChB,MAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAClB,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,YAAA,CAAa,IAAI,CAAA;AAAA,MACnB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAY,YAAY;AAAA,GAC3B;AAEA,EAAA,MAAM,kBAAA,GAAqBA,WAAAA;AAAA,IACzB,CAAC,CAAA,KAAuB;AACtB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,QAAA,YAAA,CAAa,QAAQ,OAAO,CAAA;AAAA,MAC9B;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEA,EAAA,MAAM,kBAAA,GAAqBA,WAAAA;AAAA,IACzB,OAAO,IAAA,KAA6B;AAClC,MAAA,MAAM,YAAA,CAAa,KAAK,UAAU,CAAA;AAAA,IACpC,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEA,EAAA,uBACEO,IAAAA,CAACC,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,EAAA;AAAA,oBAAAD,IAAAA,CAACW,YAAA,EACC,QAAA,EAAA;AAAA,sBAAAhB,GAAAA,CAACiB,SAAAA,EAAA,EAAW,QAAA,EAAA,YAAA,CAAa,iBAAA,EAAkB,CAAA;AAAA,sBAC3CjB,IAACkB,eAAAA,EAAA,EACE,mBAAS,MAAA,GAAS,YAAA,CAAa,eAAA,GAAkB,YAAA,CAAa,YAAA,EACjE;AAAA,KAAA,EACF,CAAA;AAAA,oBACAb,IAAAA,CAACc,WAAAA,EAAA,EAAY,WAAU,WAAA,EACpB,QAAA,EAAA;AAAA,MAAA,IAAA,KAAS,0BACRd,IAAAA,CAAC,UAAK,QAAA,EAAU,kBAAA,EAAoB,WAAU,WAAA,EAE5C,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,2BAAA,EACd,QAAA,EAAA;AAAA,UAAA,YAAA,CAAa,uBAAA;AAAA,0BACdL,GAAAA;AAAA,YAACa,QAAAA;AAAA,YAAA;AAAA,cACC,MAAA,EAAQ,CAAA;AAAA,cACR,UAAA,EAAY,iBAAA;AAAA,cACZ,QAAA,EAAU,OAAA;AAAA,cACV,SAAA,EAAU;AAAA;AAAA;AACZ,SAAA,EACF,CAAA;AAAA,QAEC,SAAA,oBACCb,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,wBAGFA,GAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,OAAA;AAAA,YACA,cAAc,YAAA,CAAa,SAAA;AAAA,YAC3B,aAAa,YAAA,CAAa;AAAA;AAAA,SAC5B;AAAA,wBAEAA,GAAAA;AAAA,UAACG,MAAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAU,oBAAA;AAAA,YACV,OAAA,EAAS,MAAM,OAAA,CAAQ,QAAQ,CAAA;AAAA,YAC/B,QAAA,EAAU,OAAA;AAAA,YAET,QAAA,EAAA,YAAA,CAAa;AAAA;AAAA;AAChB,OAAA,EACF,CAAA;AAAA,MAGD,IAAA,KAAS,QAAA,oBACRE,IAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAU,UAAA,CAAW,YAAA,CAAa,kBAAkB,CAAA,EAAG,SAAA,EAAU,WAAA,EACrE,QAAA,EAAA;AAAA,wBAAAL,GAAAA;AAAA,UAACU,SAAAA;AAAA,UAAA;AAAA,YACC,OAAO,YAAA,CAAa,uBAAA;AAAA,YACpB,EAAA,EAAG,aAAA;AAAA,YACH,KAAA,EAAO,UAAA,CAAW,SAAA,CAAU,MAAA,CAAO,UAAA,EAAY,OAAA;AAAA,YAC/C,QAAA,EAAU,OAAA;AAAA,YACT,GAAG,UAAA,CAAW,QAAA,CAAS,YAAY;AAAA;AAAA,SACtC;AAAA,QAEC,SAAA,oBACCV,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,wBAGFA,GAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,OAAA;AAAA,YACA,cAAc,YAAA,CAAa,SAAA;AAAA,YAC3B,aAAa,YAAA,CAAa;AAAA;AAAA,SAC5B;AAAA,wBAEAA,GAAAA;AAAA,UAACG,MAAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAU,oBAAA;AAAA,YACV,OAAA,EAAS,MAAM,OAAA,CAAQ,MAAM,CAAA;AAAA,YAC7B,QAAA,EAAU,OAAA;AAAA,YAET,QAAA,EAAA,YAAA,CAAa;AAAA;AAAA;AAChB,OAAA,EACF;AAAA,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA;AAEJ;ACnIO,SAAS,QAAA,CAAS;AAAA,EACvB,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,YAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAAkB;AAEhB,EAAA,MAAM,aAAA,GAAgBS,QAAQ,MAAM;AAClC,IAAA,OAAO,EAAE,GAAG,aAAA,EAAe,GAAG,KAAA,EAAM;AAAA,EACtC,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAGV,EAAA,MAAM,QAAA,GAAW,CAAC,GAAA,KAAoC;AACpD,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,OAAO,aAAa,GAAG,CAAA;AAAA,IACzB;AACA,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,OAAO,eAAe,GAAG,CAAA;AAAA,IAC3B;AACA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AAGA,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,OAAA,CAAQ,aAAa,CAAA,CAAE,IAAA;AAAA,IAChD,CAAC,GAAG,UAAU,MAAM,UAAA,KAAe;AAAA,MACjC,CAAC,CAAA;AAGL,EAAA,QAAQ,WAAA;AAAa,IACnB,KAAK,UAAA,EAAY;AAEf,MAAA,IAAI,kBAAkB,gBAAA,EAAkB;AACtC,QAAA,uBACEZ,GAAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,CAAC,IAAA,KAAS,SAAA,GAAY,IAAI,CAAA;AAAA,YACrC,OAAA;AAAA,YACA,WAAA;AAAA,YACA,cAAA;AAAA,YACA,gBAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,MAEJ;AACA,MAAA,uBACEA,GAAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,CAAC,IAAA,KAAS,SAAA,GAAY,IAAI,CAAA;AAAA,UACrC,OAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,IAEJ;AAAA,IAEA,KAAK,UAAA,EAAY;AACf,MAAA,uBACEA,GAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,CAAC,IAAA,KAAS,SAAA,GAAY,IAAI,CAAA;AAAA,UACrC,OAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,IAEJ;AAAA,IAEA,KAAK,kBAAA,EAAoB;AACvB,MAAA,IAAI,CAAC,WAAA,EAAa;AAChB,QAAA,MAAM,IAAI,MAAM,wDAAwD,CAAA;AAAA,MAC1E;AACA,MAAA,uBACEA,GAAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UACC,WAAA;AAAA,UACA,SAAA,EAAW,MAAM,SAAA,IAAY;AAAA,UAC7B,OAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,IAEJ;AAAA,IAEA,KAAK,iBAAA,EAAmB;AACtB,MAAA,MAAM,KAAA,GAAQ,SAAS,OAAO,CAAA;AAC9B,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,MAAM,IAAI,MAAM,6DAA6D,CAAA;AAAA,MAC/E;AACA,MAAA,uBACEA,GAAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,KAAA;AAAA,UACA,SAAA,EAAW,MAAM,SAAA,IAAY;AAAA,UAC7B,OAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,IAEJ;AAAA,IAEA,KAAK,eAAA,EAAiB;AACpB,MAAA,IAAI,CAAC,WAAA,EAAa;AAChB,QAAA,MAAM,IAAI,MAAM,qDAAqD,CAAA;AAAA,MACvE;AACA,MAAA,MAAM,KAAA,GAAQ,SAAS,OAAO,CAAA;AAC9B,MAAA,MAAM,KAAA,GAAQ,SAAS,OAAO,CAAA;AAC9B,MAAA,uBACEA,GAAAA;AAAA,QAAC,qBAAA;AAAA,QAAA;AAAA,UACC,KAAA;AAAA,UACA,KAAA;AAAA,UACA,WAAA;AAAA,UACA,SAAA,EAAW,CAAC,IAAA,KAAe,SAAA,GAAY,IAAI,CAAA;AAAA,UAC3C,OAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,IAEJ;AAAA,IAEA,KAAK,YAAA,EAAc;AACjB,MAAA,IAAI,CAAC,WAAA,EAAa;AAChB,QAAA,MAAM,IAAI,MAAM,kDAAkD,CAAA;AAAA,MACpE;AACA,MAAA,uBACEA,GAAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,WAAA;AAAA,UACA,SAAA,EAAW,CAAC,IAAA,KAAe,SAAA,GAAY,IAAI,CAAA;AAAA,UAC3C,OAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,IAEJ;AAAA,IAEA,KAAK,kBAAA,EAAoB;AACvB,MAAA,IAAI,CAAC,WAAA,EAAa;AAChB,QAAA,MAAM,IAAI,MAAM,wDAAwD,CAAA;AAAA,MAC1E;AACA,MAAA,uBACEA,GAAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UACC,WAAA;AAAA,UACA,WAAA;AAAA,UACA,SAAA,EAAW,MAAM,SAAA,IAAY;AAAA,UAC7B,OAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,IAEJ;AAAA,IAEA,KAAK,aAAA,EAAe;AAClB,MAAA,uBACEA,GAAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,UAAU,MAAM;AAEd,YAAA,SAAA,IAAY;AAAA,UACd,CAAA;AAAA,UACA,OAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,IAEJ;AAAA,IAEA,SAAS;AAEP,MAAA,uBAAOA,GAAAA,CAAAC,QAAAA,EAAA,EAAG,QAAA,EAAA,QAAA,EAAS,CAAA;AAAA,IACrB;AAAA;AAEJ;ACvMO,IAAM,eAAA,GAAkBM,EAAE,MAAA,CAAO;AAAA,EACtC,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,uBAAuB;AACjD,CAAC;ACaM,SAAS,cAAc,EAAE,WAAA,EAAa,SAAA,EAAW,OAAA,EAAS,WAAU,EAAuB;AAChG,EAAA,MAAM,EAAE,aAAA,EAAc,GAAI,OAAA,EAAQ;AAClC,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAA,EAAoB;AAC7D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIV,SAAS,KAAK,CAAA;AACtC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAS,EAAE,CAAA;AAC7C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAE9D,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA,EAAW,EAAE,MAAA,EAAO;AAAA,IACpB;AAAA,MACEW,OAAAA,CAA2B;AAAA,IAC7B,QAAA,EAAUC,YAAY,eAAe,CAAA;AAAA,IACrC,aAAA,EAAe,EAAE,KAAA,EAAO,EAAA;AAAG,GAC5B,CAAA;AAED,EAAA,MAAM,QAAA,GAAWX,WAAAA;AAAA,IACf,OAAO,IAAA,KAA4B;AACjC,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,IAAI;AACF,QAAA,MAAM,cAAc,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,EAAO,aAAa,CAAA;AACtD,QAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,QAAA,YAAA,CAAa,KAAK,KAAK,CAAA;AACvB,QAAA,SAAA,IAAY;AAAA,MACd,SAAS,GAAA,EAAK;AACZ,QAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AACjE,QAAA,OAAA,GAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,MAC5B,CAAA,SAAE;AACA,QAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,MACvB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,aAAA,EAAe,WAAA,EAAa,SAAA,EAAW,OAAA,EAAS,cAAc,cAAc;AAAA,GAC/E;AAEA,EAAA,MAAM,YAAA,GAAeA,YAAY,YAAY;AAC3C,IAAA,MAAM,KAAA,GAAQ,UAAU,OAAO,CAAA;AAC/B,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,IAAA,IAAI;AACF,MAAA,MAAM,aAAA,CAAc,EAAE,KAAA,EAAO,WAAA,EAAa,CAAA;AAAA,IAC5C,SAAS,GAAA,EAAK;AACZ,MAAA,YAAA,CAAa,iBAAA,CAAkB,GAAA,EAAK,YAAA,EAAc,cAAc,CAAC,CAAA;AAAA,IACnE,CAAA,SAAE;AACA,MAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,aAAA,EAAe,aAAa,SAAA,EAAW,YAAA,EAAc,cAAc,CAAC,CAAA;AAExE,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,uBACEE,IAACM,IAAAA,EAAA,EAAK,WACJ,QAAA,kBAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EACV,QAAA,EAAA;AAAA,QAAA,YAAA,CAAa,gBAAA;AAAA,QAAiB,GAAA;AAAA,wBAACL,GAAAA,CAAC,QAAA,EAAA,EAAQ,QAAA,EAAA,SAAA,CAAU,SAAS,CAAA,EAAE;AAAA,OAAA,EAChE,CAAA;AAAA,sBACAA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uBAAA,EAAyB,uBAAa,eAAA,EAAgB,CAAA;AAAA,sBACnEA,GAAAA,CAACG,MAAAA,EAAA,EAAO,IAAA,EAAK,UAAS,OAAA,EAAQ,SAAA,EAAU,QAAA,EAAU,YAAA,EAAc,SAAS,YAAA,EACtE,QAAA,EAAA,YAAA,GAAe,YAAA,CAAa,SAAA,GAAY,aAAa,MAAA,EACxD,CAAA;AAAA,MACC,SAAA,oBACCH,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH;AAAA,KAAA,EAEJ,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA,CAACM,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,kBAAAD,IAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAU,YAAA,CAAa,QAAQ,CAAA,EAAG,WAAU,eAAA,EAChD,QAAA,EAAA;AAAA,oBAAAL,GAAAA;AAAA,MAACU,SAAAA;AAAA,MAAA;AAAA,QACC,OAAO,YAAA,CAAa,KAAA;AAAA,QACpB,EAAA,EAAG,kBAAA;AAAA,QACH,IAAA,EAAK,OAAA;AAAA,QACL,YAAA,EAAa,OAAA;AAAA,QACb,KAAA,EAAO,OAAO,KAAA,EAAO,OAAA;AAAA,QACpB,GAAG,SAAS,OAAO;AAAA;AAAA,KACtB;AAAA,IAEC,SAAA,oBACCV,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAU,QAAA,EAAS,SAAA,EAAU,wBAC/B,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,oBAGFA,GAAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,YAAA;AAAA,QACT,cAAc,YAAA,CAAa,OAAA;AAAA,QAC3B,aAAa,YAAA,CAAa;AAAA;AAAA;AAC5B,GAAA,EACF,CAAA,EACF,CAAA;AAEJ;ACzGA,IAAM,oBAAA,GAA+C;AAAA,EACnD,MAAA,EAAQ,WAAA;AAAA,EACR,OAAA,EAAS,WAAA;AAAA,EACT,MAAA,EAAQ;AACV,CAAA;AAEO,SAAS,UAAA,CAAW;AAAA,EACzB,eAAA,GAAkB,KAAA;AAAA,EAClB,gBAAA,GAAmB,KAAA;AAAA,EACnB,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,EAAE,SAAS,SAAA,EAAW,KAAA,EAAO,SAAS,WAAA,EAAa,aAAA,EAAe,YAAA,EAAa,GACnF,UAAA,EAAW;AACb,EAAA,MAAM,EAAE,YAAA,EAAa,GAAI,mBAAA,EAAoB;AAE7C,EAAAI,UAAU,MAAM;AACd,IAAA,OAAA,EAAQ;AAAA,EACV,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,MAAM,iBAAA,GAAoBN,WAAAA;AAAA,IACxB,OAAO,MAAA,KAAmB;AACxB,MAAA,IAAI,OAAO,SAAA,EAAW;AACpB,QAAA,MAAM,aAAA,CAAc,OAAO,EAAE,CAAA;AAC7B,QAAA,iBAAA,GAAoB,MAAM,CAAA;AAAA,MAC5B,CAAA,MAAO;AACL,QAAA,MAAM,WAAA,CAAY,OAAO,EAAE,CAAA;AAC3B,QAAA,eAAA,GAAkB,MAAM,CAAA;AAAA,MAC1B;AAAA,IACF,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,aAAA,EAAe,eAAA,EAAiB,iBAAiB;AAAA,GACjE;AAEA,EAAA,MAAM,YAAA,GAAeA,WAAAA;AAAA,IACnB,OAAO,MAAA,KAAmB;AACxB,MAAA,MAAM,YAAA,CAAa,OAAO,EAAE,CAAA;AAC5B,MAAA,eAAA,GAAkB,MAAM,CAAA;AAAA,IAC1B,CAAA;AAAA,IACA,CAAC,cAAc,eAAe;AAAA,GAChC;AAEA,EAAA,IAAI,SAAA,IAAa,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG;AACrC,IAAA,uBACEE,GAAAA,CAACM,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,kBAAAN,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EAAyC,QAAA,EAAA,YAAA,CAAa,eAAA,EAAgB,CAAA,EACvF,CAAA;AAAA,EAEJ;AAEA,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,uBACEA,GAAAA,CAACM,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,kBAAAN,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EAAwC,QAAA,EAAA,KAAA,CAAM,OAAA,EAAQ,CAAA,EACvE,CAAA;AAAA,EAEJ;AAEA,EAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,IAAA,uBACEA,GAAAA,CAACM,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,kBAAAN,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EAAyC,QAAA,EAAA,YAAA,CAAa,UAAA,EAAW,CAAA,EAClF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA,CAACM,IAAAA,EAAA,EAAK,WACJ,QAAA,kBAAAN,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACZ,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,2BACZK,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MAEC,SAAA,EAAU,2DAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,EAAA;AAAA,0BAAAL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EACb,QAAA,EAAA,gBAAA,GACG,gBAAA,CAAiB,MAAM,CAAA,GACtB,oBAAA,CAAqB,MAAA,CAAO,UAAU,CAAA,IAAK,WAAA,EAClD,CAAA;AAAA,0BACAK,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,8BAAAL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAe,iBAAO,IAAA,EAAK,CAAA;AAAA,cAC1C,MAAA,CAAO,6BACNA,GAAAA,CAAC,UAAK,SAAA,EAAU,uDAAA,EACb,uBAAa,cAAA,EAChB;AAAA,aAAA,EAEJ,CAAA;AAAA,4BACAK,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uBAAA,EACV,QAAA,EAAA;AAAA,cAAA,MAAA,CAAO,OAAA;AAAA,cAAQ,QAAA;AAAA,cAAW,MAAA,CAAO;AAAA,aAAA,EACpC,CAAA;AAAA,YAAA,CACE,MAAA,CAAO,YAAY,MAAA,CAAO,WAAA,qBAC1BL,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,uBAAA,EACV,QAAA,EAAA,CAAC,OAAO,QAAA,EAAU,MAAA,CAAO,WAAW,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA,EAClE,CAAA;AAAA,4BAEFK,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uBAAA,EACV,QAAA,EAAA;AAAA,cAAA,YAAA,CAAa,SAAA;AAAA,cAAU,GAAA;AAAA,cAAE,MAAA,CAAO,UAAA;AAAA,cAAW,QAAA;AAAA,cAAW,YAAA,CAAa,QAAA;AAAA,cAAU,GAAA;AAAA,cAC7E,MAAA,CAAO;AAAA,aAAA,EACV;AAAA,WAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBAEAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,eAAA,oBACCL,GAAAA;AAAA,YAACG,MAAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAQ,SAAA;AAAA,cACR,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAS,MAAM,iBAAA,CAAkB,MAAM,CAAA;AAAA,cAEtC,QAAA,EAAA,MAAA,CAAO,SAAA,GAAY,YAAA,CAAa,cAAA,GAAiB,YAAA,CAAa;AAAA;AAAA,WACjE;AAAA,UAED,oCACCH,GAAAA;AAAA,YAACG,MAAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAQ,aAAA;AAAA,cACR,IAAA,EAAK,IAAA;AAAA,cACL,UAAU,MAAA,CAAO,SAAA;AAAA,cACjB,OAAA,EAAS,MAAM,YAAA,CAAa,MAAM,CAAA;AAAA,cAEjC,QAAA,EAAA,YAAA,CAAa;AAAA;AAAA;AAChB,SAAA,EAEJ;AAAA;AAAA,KAAA;AAAA,IAvDK,MAAA,CAAO;AAAA,GAyDf,GACH,CAAA,EACF,CAAA;AAEJ;ACzIO,SAAS,eAAA,CAAgB;AAAA,EAC9B,QAAA;AAAA,EACA,OAAA,mBAAUH,GAAAA,CAAC,KAAA,EAAA,EAAI,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,EACzB,KAAA,GAAQ,CAAA;AAAA,EACR;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,EAAE,SAAA,EAAU,GAAI,UAAA,EAAW;AACjC,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,IAAIH,QAAAA,CAAS,KAAA,KAAU,KAAK,SAAS,CAAA;AAEvE,EAAAO,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,cAAA,CAAe,KAAK,CAAA;AACpB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,UAAU,CAAA,EAAG;AACf,MAAA,cAAA,CAAe,IAAI,CAAA;AACnB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,KAAA,GAAQ,WAAW,MAAM;AAC7B,MAAA,cAAA,CAAe,IAAI,CAAA;AAAA,IACrB,GAAG,KAAK,CAAA;AAER,IAAA,OAAO,MAAM,aAAa,KAAK,CAAA;AAAA,EACjC,CAAA,EAAG,CAAC,SAAA,EAAW,KAAK,CAAC,CAAA;AAErB,EAAA,IAAI,aAAa,WAAA,EAAa;AAC5B,IAAA,OAAO,SAAA,mBAAYJ,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAuB,QAAA,EAAA,OAAA,EAAQ,CAAA,mBAASA,GAAAA,CAAAC,QAAAA,EAAA,EAAG,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,EAC7E;AAEA,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBAAOD,GAAAA,CAAAC,QAAAA,EAAA,EAAG,QAAA,EAAS,CAAA;AACrB;;;ACxCO,SAAS,aAAa,KAAA,EAA0B;AACrD,EAAA,IAAI,KAAA,GAAQ,IAAI,OAAO,KAAA;AACvB,EAAA,IAAI,KAAA,GAAQ,IAAI,OAAO,QAAA;AACvB,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,WAAA,GAAyC;AAAA,EACpD,GAAA,EAAK,4BAAA;AAAA,EACL,MAAA,EAAQ,8BAAA;AAAA,EACR,IAAA,EAAM;AACR;ACFO,SAAS,iBAAA,CAAkB;AAAA,EAChC,KAAA,GAAQ,EAAA;AAAA,EACR,aAAA,GAAgB,KAAA;AAAA,EAChB,iBAAA,GAAoB,KAAA;AAAA,EACpB,cAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACF,CAAA,EAA2B;AACzB,EAAA,MAAM;AAAA,IACJ,MAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF,GAAI,gBAAA,CAAiB,EAAE,KAAA,EAAO,CAAA;AAC9B,EAAA,MAAM,EAAE,YAAA,EAAa,GAAI,mBAAA,EAAoB;AAE7C,EAAAG,UAAU,MAAM;AACd,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,MAAA,CAAO,EAAE,MAAA,EAAQ,cAAA,EAAgB,KAAA,EAAO,CAAA;AAAA,IAC1C;AACA,IAAA,OAAA,EAAQ;AAAA,EACV,GAAG,CAAC,OAAA,EAAS,MAAA,EAAQ,cAAA,EAAgB,KAAK,CAAC,CAAA;AAE3C,EAAA,MAAM,oBAAA,GAAuBN,WAAAA;AAAA,IAC3B,OAAO,KAAA,KAAsB;AAC3B,MAAA,MAAM,cAAA,CAAe,MAAM,EAAE,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA,CAAC,cAAc;AAAA,GACjB;AAEA,EAAA,MAAM,sBAAA,GAAyBA,WAAAA;AAAA,IAC7B,OAAO,KAAA,KAAsB;AAC3B,MAAA,MAAM,gBAAA,CAAiB,MAAM,EAAE,CAAA;AAC/B,MAAA,oBAAA,GAAuB,KAAK,CAAA;AAAA,IAC9B,CAAA;AAAA,IACA,CAAC,kBAAkB,oBAAoB;AAAA,GACzC;AAEA,EAAA,IAAI,SAAA,IAAa,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG;AACpC,IAAA,uBACEE,GAAAA,CAACM,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,kBAAAN,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EAAyC,QAAA,EAAA,YAAA,CAAa,gBAAA,EAAiB,CAAA,EACxF,CAAA;AAAA,EAEJ;AAEA,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,uBACEA,GAAAA,CAACM,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,kBAAAN,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EAAwC,QAAA,EAAA,KAAA,CAAM,OAAA,EAAQ,CAAA,EACvE,CAAA;AAAA,EAEJ;AAEA,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAA,uBACEA,GAAAA,CAACM,IAAAA,EAAA,EAAK,SAAA,EACJ,QAAA,kBAAAN,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EAAyC,QAAA,EAAA,YAAA,CAAa,WAAA,EAAY,CAAA,EACnF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,IAACM,IAAAA,EAAA,EAAK,WACJ,QAAA,kBAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACZ,QAAA,EAAA;AAAA,IAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU;AACrB,MAAA,MAAM,SAAA,GAAY,YAAA,CAAa,KAAA,CAAM,SAAS,CAAA;AAC9C,MAAA,uBACEA,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAU,2DAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAA,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,gCAAAL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAe,gBAAM,UAAA,EAAW,CAAA;AAAA,gCAChDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uDAAA,EACb,gBAAM,MAAA,EACT,CAAA;AAAA,gBACC,aAAA,oBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,+BAA+B,WAAA,CAAY,SAAS,CAAC,CAAA,CAAA,EACnE,QAAA,EAAA,SAAA,EACH;AAAA,eAAA,EAEJ,CAAA;AAAA,8BACAK,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uBAAA,EACV,QAAA,EAAA;AAAA,gBAAA,KAAA,CAAM,MAAA;AAAA,gBAAO,QAAA;AAAA,gBAAW,KAAA,CAAM;AAAA,eAAA,EACjC,CAAA;AAAA,cAAA,CACE,KAAA,CAAM,QAAQ,KAAA,CAAM,OAAA,qBACpBL,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,uBAAA,EACV,QAAA,EAAA,CAAC,MAAM,IAAA,EAAM,KAAA,CAAM,OAAO,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA,EACxD,CAAA;AAAA,8BAEFA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uBAAA,EAAyB,gBAAM,SAAA,EAAU;AAAA,aAAA,EACxD,CAAA;AAAA,YAEC,iBAAA,oBACCK,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,8BAAAL,GAAAA;AAAA,gBAACG,MAAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,OAAA,EAAQ,SAAA;AAAA,kBACR,IAAA,EAAK,IAAA;AAAA,kBACL,OAAA,EAAS,MAAM,oBAAA,CAAqB,KAAK,CAAA;AAAA,kBAExC,QAAA,EAAA,YAAA,CAAa;AAAA;AAAA,eAChB;AAAA,8BACAH,GAAAA;AAAA,gBAACG,MAAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,OAAA,EAAQ,aAAA;AAAA,kBACR,IAAA,EAAK,IAAA;AAAA,kBACL,OAAA,EAAS,MAAM,sBAAA,CAAuB,KAAK,CAAA;AAAA,kBAE1C,QAAA,EAAA,YAAA,CAAa;AAAA;AAAA;AAChB,aAAA,EACF;AAAA;AAAA,SAAA;AAAA,QA5CG,KAAA,CAAM;AAAA,OA8Cb;AAAA,IAEJ,CAAC,CAAA;AAAA,IAEA,OAAA,oBACCH,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,aAAA,EACb,QAAA,kBAAAA,GAAAA,CAACG,MAAAA,EAAA,EAAO,IAAA,EAAK,UAAS,OAAA,EAAQ,SAAA,EAAU,QAAA,EAAU,SAAA,EAAW,OAAA,EAAS,QAAA,EACnE,sBAAY,YAAA,CAAa,OAAA,GAAU,YAAA,CAAa,SAAA,EACnD,CAAA,EACF;AAAA,GAAA,EAEJ,CAAA,EACF,CAAA;AAEJ;AChIO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,aAAA,GAAgB,KAAA;AAAA,EAChB,YAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,EAAE,aAAA,EAAe,SAAA,EAAW,OAAA,KAAY,gBAAA,EAAiB;AAC/D,EAAA,MAAM,EAAE,YAAA,EAAa,GAAI,mBAAA,EAAoB;AAE7C,EAAAC,UAAU,MAAM;AACd,IAAA,OAAA,EAAQ;AAAA,EACV,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,MAAM,aAAa,aAAA,CAAc,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,YAAY,CAAA;AAElE,EAAA,uBACEJ,GAAAA,CAAC,KAAA,EAAA,EAAI,WACH,QAAA,kBAAAK,IAAAA,CAACe,cAAA,EACC,QAAA,EAAA;AAAA,oBAAApB,IAACqB,mBAAAA,EAAA,EAAoB,SAAO,IAAA,EAC1B,QAAA,kBAAArB,IAACG,MAAAA,EAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,UAAU,SAAA,EACjC,QAAA,EAAA,UAAA,mBACCE,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,MAAA,UAAA,CAAW,IAAA,mBACVL,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAK,UAAA,CAAW,IAAA,EAAM,KAAI,EAAA,EAAG,SAAA,EAAU,mBAAkB,CAAA,mBAE9DA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wEACb,QAAA,EAAA,WAAA,CAAY,UAAA,CAAW,IAAI,CAAA,EAC9B,CAAA;AAAA,MAED,UAAA,CAAW;AAAA,KAAA,EACd,CAAA,GAEA,YAAA,CAAa,mBAAA,EAEjB,CAAA,EACF,CAAA;AAAA,oBACAK,IAAAA,CAACiB,mBAAAA,EAAA,EAAoB,OAAM,KAAA,EACxB,QAAA,EAAA;AAAA,MAAA,aAAA,CAAc,IAAI,CAAC,GAAA,qBAClBtB,GAAAA,CAACuB,kBAAA,EAA8B,OAAA,EAAS,MAAM,QAAA,GAAW,GAAG,CAAA,EAC1D,QAAA,kBAAAlB,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,GAAA,CAAI,IAAA,mBACHL,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAK,GAAA,CAAI,IAAA,EAAM,KAAI,EAAA,EAAG,SAAA,EAAU,mBAAkB,CAAA,mBAEvDA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wEACb,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,IAAI,CAAA,EACvB,CAAA;AAAA,wBAEFA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,GAAA,CAAI,IAAA,EAAK,CAAA;AAAA,QACf,GAAA,CAAI,OAAO,YAAA,oBAAgBA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAW,QAAA,EAAA,QAAA,EAAS;AAAA,OAAA,EAClE,CAAA,EAAA,EAXqB,GAAA,CAAI,EAY3B,CACD,CAAA;AAAA,MAEA,aAAA,oBACCK,IAAAA,CAAAJ,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAACwB,uBAAA,EAAsB,CAAA;AAAA,wBACvBxB,GAAAA,CAACuB,gBAAAA,EAAA,EAAiB,OAAA,EAAS,WAAA,EACxB,uBAAa,mBAAA,EAChB;AAAA,OAAA,EACF;AAAA,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ;AChEO,SAAS,SAAS,EAAE,gBAAA,GAAmB,KAAA,EAAO,SAAA,EAAW,WAAU,EAAkB;AAC1F,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,UAAA,EAAW;AAC5B,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,OAAA,EAAQ;AAC3B,EAAA,MAAM,EAAE,YAAA,EAAa,GAAI,mBAAA,EAAoB;AAE7C,EAAA,MAAM,aAAA,GAAgBzB,YAAY,YAAY;AAC5C,IAAA,MAAM,MAAA,EAAO;AAAA,EACf,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,EAAA,uBACEE,GAAAA,CAAC,KAAA,EAAA,EAAI,WACH,QAAA,kBAAAK,IAAAA,CAACe,cAAA,EACC,QAAA,EAAA;AAAA,oBAAApB,GAAAA,CAACqB,mBAAAA,EAAA,EAAoB,OAAA,EAAO,MAC1B,QAAA,kBAAArB,GAAAA,CAACG,MAAAA,EAAA,EAAO,SAAQ,OAAA,EACd,QAAA,kBAAAE,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,MAAA,IAAA,CAAK,MAAA,mBACJL,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAK,IAAA,CAAK,MAAA,EAAQ,KAAI,EAAA,EAAG,SAAA,EAAU,wBAAuB,CAAA,mBAE/DA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yFACb,QAAA,EAAA,WAAA,CAAY,IAAA,CAAK,IAAI,CAAA,EACxB,CAAA;AAAA,sBAEFA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAuB,eAAK,IAAA,EAAK;AAAA,KAAA,EACnD,GACF,CAAA,EACF,CAAA;AAAA,oBACAK,IAAAA,CAACiB,mBAAAA,EAAA,EAAoB,OAAM,KAAA,EACzB,QAAA,EAAA;AAAA,sBAAAtB,GAAAA,CAAC,iBAAA,EAAA,EACC,QAAA,kBAAAK,IAAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAW,eAAK,KAAA,EAAM,CAAA;AAAA,QAClC,oCACCA,GAAAA,CAAC,OAAE,SAAA,EAAU,uBAAA,EAAyB,uBAAa,YAAA,EAAa;AAAA,OAAA,EAEpE,CAAA,EACF,CAAA;AAAA,sBACAA,GAAAA,CAACwB,qBAAAA,EAAA,EAAsB,CAAA;AAAA,MAEtB,SAAA,EAAW,GAAA,CAAI,CAAC,IAAA,qBACfxB,GAAAA,CAACuB,gBAAAA,EAAA,EAAkC,OAAA,EAAS,KAAK,OAAA,EAC9C,QAAA,EAAA,IAAA,CAAK,KAAA,EAAA,EADe,IAAA,CAAK,KAE5B,CACD,CAAA;AAAA,MAEA,aAAa,SAAA,CAAU,MAAA,GAAS,qBAAKvB,GAAAA,CAACwB,uBAAA,EAAsB,CAAA;AAAA,sBAE7DxB,GAAAA,CAACuB,gBAAAA,EAAA,EAAiB,OAAA,EAAS,aAAA,EAAgB,uBAAa,QAAA,EAAS;AAAA,KAAA,EACnE;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ","file":"index.js","sourcesContent":["// AuthProvider — React context provider for @atzentis/auth-react\n\nimport type { AuthError, User } from \"@atzentis/auth-sdk\";\nimport { AuthClient } from \"@atzentis/auth-sdk\";\nimport type { Session } from \"@atzentis/auth-sdk\";\nimport { createContext, useCallback, useMemo, useState } from \"react\";\nimport type { AuthLocalization } from \"../localization\";\nimport type { AuthContextValue, AuthProviderProps } from \"./provider.types\";\n\nexport const AuthContext = createContext<AuthContextValue | null>(null);\nexport interface LocalizationContextValue {\n overrides: AuthLocalization | null;\n localizeErrors: boolean;\n}\n\nexport const LocalizationContext = createContext<LocalizationContextValue>({\n overrides: null,\n localizeErrors: true,\n});\n\nexport function AuthProvider({\n apiKey,\n baseUrl,\n autoRefreshToken,\n refreshThreshold,\n timeout,\n collectDeviceSignals,\n onSessionExpired,\n onTokenRefreshed,\n onNewDeviceAlert,\n children,\n initialUser,\n storage,\n localization,\n localizeErrors = true,\n}: AuthProviderProps) {\n const [client] = useState(() => {\n const handleSessionExpired = () => {\n setUser(null);\n setSession(null);\n onSessionExpired?.();\n };\n\n return new AuthClient({\n apiKey,\n baseUrl,\n timeout,\n autoRefreshToken,\n refreshThreshold,\n collectDeviceSignals,\n onSessionExpired: handleSessionExpired,\n onTokenRefreshed,\n onNewDeviceAlert,\n storage,\n });\n });\n\n const [user, setUser] = useState<User | null>(initialUser ?? null);\n const [session, setSession] = useState<Session | null>(null);\n const [isLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const clearError = useCallback(() => {\n setError(null);\n }, []);\n\n const value: AuthContextValue = useMemo(\n () => ({\n client,\n user,\n session,\n isAuthenticated: user !== null,\n isLoading,\n error,\n setUser,\n setSession,\n setError,\n clearError,\n }),\n [client, user, session, isLoading, error, clearError],\n );\n\n const localizationValue = useMemo(\n () => ({ overrides: localization ?? null, localizeErrors }),\n [localization, localizeErrors],\n );\n\n return (\n <AuthContext.Provider value={value}>\n <LocalizationContext.Provider value={localizationValue}>\n {children}\n </LocalizationContext.Provider>\n </AuthContext.Provider>\n );\n}\n","// Error code defaults from @atzentis/auth-sdk\n// Keys match AuthErrorCode enum string values exactly\n\nexport const AUTH_ERROR_CODES = {\n INVALID_CREDENTIALS: \"Invalid email or password\",\n EMAIL_NOT_VERIFIED: \"Email address is not verified\",\n TWO_FACTOR_REQUIRED: \"Two-factor authentication is required\",\n INVALID_PHONE_NUMBER: \"Invalid phone number\",\n OTP_EXPIRED: \"Verification code has expired\",\n OTP_INVALID: \"Invalid verification code\",\n OTP_MAX_ATTEMPTS: \"Too many verification attempts\",\n PHONE_NUMBER_IN_USE: \"Phone number is already in use\",\n FRAUD_DETECTED: \"Suspicious activity detected\",\n USERNAME_TAKEN: \"Username is already taken\",\n USERNAME_INVALID: \"Invalid username\",\n USERNAME_RESERVED: \"This username is reserved\",\n DEVICE_NOT_FOUND: \"Device not found\",\n LOGIN_EVENT_NOT_FOUND: \"Login event not found\",\n REAUTH_REQUIRED: \"Please sign in again to continue\",\n MAX_SESSIONS_EXCEEDED: \"Maximum number of sessions exceeded\",\n CAPTCHA_REQUIRED: \"CAPTCHA verification is required\",\n CAPTCHA_INVALID: \"CAPTCHA verification failed\",\n PASSWORD_BREACHED: \"This password has been found in a data breach\",\n SESSION_EXPIRED: \"Session expired\",\n TOKEN_EXPIRED: \"Token has expired\",\n INVALID_TOKEN: \"Invalid token\",\n UNAUTHORIZED_ROLE: \"You do not have permission to perform this action\",\n ORGANIZATION_NOT_FOUND: \"Organization not found\",\n PERMISSION_DENIED: \"Permission denied\",\n RATE_LIMITED: \"Too many requests. Please try again later.\",\n NETWORK_ERROR: \"Network error. Please check your connection.\",\n TIMEOUT: \"Request timed out. Please try again.\",\n USER_NOT_FOUND: \"User not found\",\n USER_ALREADY_EXISTS: \"A user with this email already exists\",\n INVALID_EMAIL: \"Invalid email address\",\n WEAK_PASSWORD: \"Password is too weak\",\n ORG_LIMIT_EXCEEDED: \"Organization limit exceeded\",\n MEMBER_LIMIT_EXCEEDED: \"Member limit exceeded\",\n KEY_NOT_FOUND: \"API key not found\",\n KEY_REVOKED: \"API key has been revoked\",\n KEY_EXPIRED: \"API key has expired\",\n};\n","import { AUTH_ERROR_CODES } from \"./error-codes\";\n\n/**\n * Centralized localization for all @atzentis/auth-react components.\n *\n * This const object contains all default English strings.\n * The `AuthLocalization` type is derived as `Partial<typeof authLocalization>`.\n *\n * Pass a partial override to AuthProvider:\n * ```tsx\n * const de: AuthLocalization = { SIGN_IN: \"Anmelden\", ... };\n * <AuthProvider localization={de}>\n * ```\n */\nexport const authLocalization = {\n // --- General / Shared ---\n\n /** @default \"Continue\" */\n CONTINUE: \"Continue\",\n\n /** @default \"Cancel\" */\n CANCEL: \"Cancel\",\n\n /** @default \"Save\" */\n SAVE: \"Save\",\n\n /** @default \"Delete\" */\n DELETE: \"Delete\",\n\n /** @default \"Update\" */\n UPDATE: \"Update\",\n\n /** @default \"Remove\" */\n REMOVE: \"Remove\",\n\n /** @default \"Done\" */\n DONE: \"Done\",\n\n /** @default \"Go back\" */\n GO_BACK: \"Go back\",\n\n /** @default \"Loading...\" */\n LOADING: \"Loading...\",\n\n /** @default \"Load more\" */\n LOAD_MORE: \"Load more\",\n\n /** @default \"Unknown\" */\n UNKNOWN: \"Unknown\",\n\n /** @default \"Request failed\" */\n REQUEST_FAILED: \"Request failed\",\n\n /** @default \"Updated successfully\" */\n UPDATED_SUCCESSFULLY: \"Updated successfully\",\n\n // --- Sign In (LoginForm) ---\n\n /** @default \"Sign in\" */\n SIGN_IN: \"Sign in\",\n\n /** @default \"Sign in\" */\n SIGN_IN_ACTION: \"Sign in\",\n\n /** @default \"Enter your email below to sign in\" */\n SIGN_IN_DESCRIPTION: \"Enter your email below to sign in\",\n\n /** @default \"Enter your username or email to sign in\" */\n SIGN_IN_USERNAME_DESCRIPTION: \"Enter your username or email to sign in\",\n\n /** @default \"Username or email\" */\n SIGN_IN_USERNAME_PLACEHOLDER: \"Username or email\",\n\n /** @default \"Signing in...\" */\n SIGNING_IN: \"Signing in...\",\n\n /** @default \"m@example.com\" */\n EMAIL_PLACEHOLDER: \"m@example.com\",\n\n /** @default \"Password\" */\n PASSWORD_PLACEHOLDER: \"Password\",\n\n /** @default \"Forgot your password?\" */\n FORGOT_PASSWORD_LINK: \"Forgot your password?\",\n\n /** @default \"Use phone instead\" */\n USE_PHONE_INSTEAD: \"Use phone instead\",\n\n /** @default \"Use email instead\" */\n USE_EMAIL_INSTEAD: \"Use email instead\",\n\n /** @default \"Or continue with\" */\n OR_CONTINUE_WITH: \"Or continue with\",\n\n /** @default \"Sign in with\" */\n SIGN_IN_WITH: \"Sign in with\",\n\n /** @default \"Don't have an account?\" */\n DONT_HAVE_AN_ACCOUNT: \"Don't have an account?\",\n\n /** @default \"Remember me\" */\n REMEMBER_ME: \"Remember me\",\n\n // --- Sign Up (SignupForm) ---\n\n /** @default \"Sign up\" */\n SIGN_UP: \"Sign up\",\n\n /** @default \"Create account\" */\n SIGN_UP_ACTION: \"Create account\",\n\n /** @default \"Enter your information to create an account\" */\n SIGN_UP_DESCRIPTION: \"Enter your information to create an account\",\n\n /** @default \"Check your email for the verification link.\" */\n SIGN_UP_EMAIL: \"Check your email for the verification link.\",\n\n /** @default \"Name\" */\n NAME_PLACEHOLDER: \"Name\",\n\n /** @default \"Please enter your full name.\" */\n NAME_DESCRIPTION: \"Please enter your full name.\",\n\n /** @default \"Username\" */\n USERNAME_PLACEHOLDER: \"Username\",\n\n /** @default \"Username\" */\n USERNAME: \"Username\",\n\n /** @default \"Confirm password\" */\n CONFIRM_PASSWORD_PLACEHOLDER: \"Confirm password\",\n\n /** @default \"Already have an account?\" */\n ALREADY_HAVE_AN_ACCOUNT: \"Already have an account?\",\n\n /** @default \"I accept the terms and conditions\" */\n ACCEPT_TERMS: \"I accept the terms and conditions\",\n\n /** @default \"You must accept the terms\" */\n ACCEPT_TERMS_ERROR: \"You must accept the terms\",\n\n /** @default \"By continuing, you agree to the\" */\n BY_CONTINUING_YOU_AGREE: \"By continuing, you agree to the\",\n\n /** @default \"Terms of Service\" */\n TERMS_OF_SERVICE: \"Terms of Service\",\n\n /** @default \"Privacy Policy\" */\n PRIVACY_POLICY: \"Privacy Policy\",\n\n // --- Phone Login (PhoneLoginForm) ---\n\n /** @default \"Phone number\" */\n PHONE_NUMBER_PLACEHOLDER: \"Phone number\",\n\n /** @default \"Country code\" */\n COUNTRY_CODE: \"Country code\",\n\n /** @default \"Send code\" */\n SEND_VERIFICATION_CODE: \"Send code\",\n\n /** @default \"Sending code...\" */\n SENDING_VERIFICATION_CODE: \"Sending code...\",\n\n /** @default \"One-Time Password\" */\n ONE_TIME_PASSWORD: \"One-Time Password\",\n\n /** @default \"Verification code\" */\n VERIFICATION_CODE_LABEL: \"Verification code\",\n\n /** @default \"Verify\" */\n VERIFY: \"Verify\",\n\n /** @default \"Verifying...\" */\n VERIFYING: \"Verifying...\",\n\n /** @default \"Code expires in\" */\n CODE_EXPIRES_IN: \"Code expires in\",\n\n /** @default \"Resend code\" */\n RESEND_CODE: \"Resend code\",\n\n /** @default \"Sign in with password\" */\n USE_PASSWORD_INSTEAD: \"Sign in with password\",\n\n // --- OAuth ---\n\n /** @default \"Continue with\" */\n CONTINUE_WITH: \"Continue with\",\n\n /** @default \"Redirecting...\" */\n REDIRECTING: \"Redirecting...\",\n\n // --- Magic Link ---\n\n /** @default \"Magic Link\" */\n MAGIC_LINK: \"Magic Link\",\n\n /** @default \"Send magic link\" */\n MAGIC_LINK_ACTION: \"Send magic link\",\n\n /** @default \"Enter your email to receive a magic link\" */\n MAGIC_LINK_DESCRIPTION: \"Enter your email to receive a magic link\",\n\n /** @default \"We sent a magic link to\" */\n MAGIC_LINK_EMAIL: \"We sent a magic link to\",\n\n /** @default \"Check your inbox and click the link to sign in.\" */\n MAGIC_LINK_HINT: \"Check your inbox and click the link to sign in.\",\n\n /** @default \"Sending...\" */\n SENDING: \"Sending...\",\n\n /** @default \"Resend\" */\n RESEND: \"Resend\",\n\n /** @default \"Resending...\" */\n RESENDING: \"Resending...\",\n\n // --- Password Management ---\n\n /** @default \"Password\" */\n PASSWORD: \"Password\",\n\n /** @default \"New Password\" */\n NEW_PASSWORD: \"New Password\",\n\n /** @default \"Current Password\" */\n CURRENT_PASSWORD: \"Current Password\",\n\n /** @default \"Change Password\" */\n CHANGE_PASSWORD: \"Change Password\",\n\n /** @default \"Enter your current and new password\" */\n CHANGE_PASSWORD_DESCRIPTION: \"Enter your current and new password\",\n\n /** @default \"Password has been changed\" */\n CHANGE_PASSWORD_SUCCESS: \"Password has been changed\",\n\n /** @default \"Forgot Password\" */\n FORGOT_PASSWORD: \"Forgot Password\",\n\n /** @default \"Send reset link\" */\n FORGOT_PASSWORD_ACTION: \"Send reset link\",\n\n /** @default \"Enter your email to reset your password\" */\n FORGOT_PASSWORD_DESCRIPTION: \"Enter your email to reset your password\",\n\n /** @default \"Check your email for the reset link\" */\n FORGOT_PASSWORD_EMAIL: \"Check your email for the reset link\",\n\n /** @default \"Reset Password\" */\n RESET_PASSWORD: \"Reset Password\",\n\n /** @default \"Save new password\" */\n RESET_PASSWORD_ACTION: \"Save new password\",\n\n /** @default \"Password reset successfully\" */\n RESET_PASSWORD_SUCCESS: \"Password reset successfully\",\n\n /** @default \"Confirm new password\" */\n CONFIRM_NEW_PASSWORD: \"Confirm new password\",\n\n /** @default \"Set Password\" */\n SET_PASSWORD: \"Set Password\",\n\n /** @default \"Click the button to receive an email to set your password\" */\n SET_PASSWORD_DESCRIPTION: \"Click the button to receive an email to set your password\",\n\n // --- Forgot Password (P11) ---\n\n /** @default \"Check your email\" */\n CHECK_YOUR_EMAIL: \"Check your email\",\n\n /** @default \"Resend in {{seconds}}s\" */\n RESEND_IN: \"Resend in {{seconds}}s\",\n\n // --- Email Verification (P11) ---\n\n /** @default \"Email Verification\" */\n EMAIL_VERIFICATION: \"Email Verification\",\n\n /** @default \"Verify your email address\" */\n EMAIL_VERIFICATION_DESCRIPTION: \"Verify your email address\",\n\n /** @default \"Email verified successfully\" */\n EMAIL_VERIFICATION_SUCCESS: \"Email verified successfully\",\n\n /** @default \"Verifying your email...\" */\n EMAIL_VERIFICATION_CHECKING: \"Verifying your email...\",\n\n /** @default \"Resend verification email\" */\n RESEND_VERIFICATION_EMAIL: \"Resend verification email\",\n\n /** @default \"Verification email sent\" */\n VERIFICATION_EMAIL_SENT: \"Verification email sent\",\n\n // --- Email OTP (P11) ---\n\n /** @default \"Email Code Verification\" */\n EMAIL_OTP: \"Email Code Verification\",\n\n /** @default \"Enter your email to receive a verification code\" */\n EMAIL_OTP_DESCRIPTION: \"Enter your email to receive a verification code\",\n\n /** @default \"We sent a code to\" */\n EMAIL_OTP_SENT: \"We sent a code to\",\n\n /** @default \"Enter the 6-digit code\" */\n ENTER_VERIFICATION_CODE: \"Enter the 6-digit code\",\n\n // --- Account Recovery ---\n\n /** @default \"Recover Account\" */\n RECOVER_ACCOUNT: \"Recover Account\",\n\n /** @default \"Recover access to your account\" */\n RECOVER_ACCOUNT_DESCRIPTION: \"Recover access to your account\",\n\n /** @default \"Select recovery method\" */\n SELECT_RECOVERY_METHOD: \"Select recovery method\",\n\n /** @default \"Reset via email link\" */\n RESET_VIA_EMAIL: \"Reset via email link\",\n\n /** @default \"Verify with email code\" */\n VERIFY_WITH_CODE: \"Verify with email code\",\n\n /** @default \"Verify via phone\" */\n VERIFY_VIA_PHONE: \"Verify via phone\",\n\n /** @default \"Step {{current}} of {{total}}\" */\n STEP_OF: \"Step {{current}} of {{total}}\",\n\n // --- Devices & Sessions ---\n\n /** @default \"Current Session\" */\n CURRENT_SESSION: \"Current Session\",\n\n /** @default \"Current device\" */\n CURRENT_DEVICE: \"Current device\",\n\n /** @default \"Sessions\" */\n SESSIONS: \"Sessions\",\n\n /** @default \"Manage your active sessions\" */\n SESSIONS_DESCRIPTION: \"Manage your active sessions\",\n\n /** @default \"Trust\" */\n TRUST_DEVICE: \"Trust\",\n\n /** @default \"Untrust\" */\n UNTRUST_DEVICE: \"Untrust\",\n\n /** @default \"Loading devices...\" */\n LOADING_DEVICES: \"Loading devices...\",\n\n /** @default \"No devices found\" */\n NO_DEVICES: \"No devices found\",\n\n /** @default \"Last used:\" */\n LAST_USED: \"Last used:\",\n\n /** @default \"IP:\" */\n IP_LABEL: \"IP:\",\n\n /** @default \"Security\" */\n SECURITY: \"Security\",\n\n /** @default \"Session not fresh. Please sign in again.\" */\n SESSION_NOT_FRESH: \"Session not fresh. Please sign in again.\",\n\n // --- Login Activity & Risk ---\n\n /** @default \"Login Activity\" */\n LOGIN_ACTIVITY: \"Login Activity\",\n\n /** @default \"Recent login attempts\" */\n LOGIN_ACTIVITY_DESCRIPTION: \"Recent login attempts\",\n\n /** @default \"Low\" */\n RISK_LOW: \"Low\",\n\n /** @default \"Medium\" */\n RISK_MEDIUM: \"Medium\",\n\n /** @default \"High\" */\n RISK_HIGH: \"High\",\n\n /** @default \"This was me\" */\n MARK_RECOGNIZED: \"This was me\",\n\n /** @default \"Not me\" */\n REPORT_SUSPICIOUS: \"Not me\",\n\n /** @default \"Loading activity...\" */\n LOADING_ACTIVITY: \"Loading activity...\",\n\n /** @default \"No login activity found\" */\n NO_ACTIVITY: \"No login activity found\",\n\n // --- Accounts & Switching ---\n\n /** @default \"Accounts\" */\n ACCOUNTS: \"Accounts\",\n\n /** @default \"Manage signed in accounts\" */\n ACCOUNTS_DESCRIPTION: \"Manage signed in accounts\",\n\n /** @default \"Add account\" */\n ADD_ACCOUNT: \"Add account\",\n\n /** @default \"Switch Account\" */\n SWITCH_ACCOUNT: \"Switch Account\",\n\n /** @default \"Select account\" */\n SELECT_ACCOUNT: \"Select account\",\n\n /** @default \"Personal Account\" */\n PERSONAL_ACCOUNT: \"Personal Account\",\n\n /** @default \"Sign out\" */\n SIGN_OUT: \"Sign out\",\n\n // --- Organizations ---\n\n /** @default \"Organization\" */\n ORGANIZATION: \"Organization\",\n\n /** @default \"Organizations\" */\n ORGANIZATIONS: \"Organizations\",\n\n /** @default \"Manage your organizations\" */\n ORGANIZATIONS_DESCRIPTION: \"Manage your organizations\",\n\n /** @default \"Select organization\" */\n SELECT_ORGANIZATION: \"Select organization\",\n\n /** @default \"Create organization\" */\n CREATE_ORGANIZATION: \"Create organization\",\n\n /** @default \"Name\" */\n ORGANIZATION_NAME: \"Name\",\n\n /** @default \"Acme Inc.\" */\n ORGANIZATION_NAME_PLACEHOLDER: \"Acme Inc.\",\n\n /** @default \"Leave Organization\" */\n LEAVE_ORGANIZATION: \"Leave Organization\",\n\n /** @default \"Delete Organization\" */\n DELETE_ORGANIZATION: \"Delete Organization\",\n\n /** @default \"Members\" */\n MEMBERS: \"Members\",\n\n /** @default \"Invite Member\" */\n INVITE_MEMBER: \"Invite Member\",\n\n /** @default \"Remove Member\" */\n REMOVE_MEMBER: \"Remove Member\",\n\n /** @default \"Role\" */\n ROLE: \"Role\",\n\n /** @default \"Admin\" */\n ADMIN: \"Admin\",\n\n /** @default \"Member\" */\n MEMBER: \"Member\",\n\n /** @default \"Owner\" */\n OWNER: \"Owner\",\n\n // --- User Menu ---\n\n /** @default \"Settings\" */\n SETTINGS: \"Settings\",\n\n /** @default \"Account\" */\n ACCOUNT: \"Account\",\n\n /** @default \"Avatar\" */\n AVATAR: \"Avatar\",\n\n /** @default \"Click avatar to upload a custom one\" */\n AVATAR_DESCRIPTION: \"Click avatar to upload a custom one\",\n\n /** @default \"Delete Avatar\" */\n DELETE_AVATAR: \"Delete Avatar\",\n\n /** @default \"Upload Avatar\" */\n UPLOAD_AVATAR: \"Upload Avatar\",\n\n /** @default \"Email\" */\n EMAIL: \"Email\",\n\n /** @default \"Name\" */\n NAME: \"Name\",\n\n // --- Two-Factor ---\n\n /** @default \"Two-Factor\" */\n TWO_FACTOR: \"Two-Factor\",\n\n /** @default \"Two-Factor Authentication\" */\n TWO_FACTOR_PROMPT: \"Two-Factor Authentication\",\n\n /** @default \"Enter your one-time password\" */\n TWO_FACTOR_DESCRIPTION: \"Enter your one-time password\",\n\n /** @default \"Verify code\" */\n TWO_FACTOR_ACTION: \"Verify code\",\n\n /** @default \"Two-factor authentication has been enabled\" */\n TWO_FACTOR_ENABLED: \"Two-factor authentication has been enabled\",\n\n /** @default \"Two-factor authentication has been disabled\" */\n TWO_FACTOR_DISABLED: \"Two-factor authentication has been disabled\",\n\n /** @default \"Enable Two-Factor\" */\n ENABLE_TWO_FACTOR: \"Enable Two-Factor\",\n\n /** @default \"Disable Two-Factor\" */\n DISABLE_TWO_FACTOR: \"Disable Two-Factor\",\n\n /** @default \"Backup Codes\" */\n BACKUP_CODES: \"Backup Codes\",\n\n /** @default \"Save these codes in a secure place\" */\n BACKUP_CODES_DESCRIPTION: \"Save these codes in a secure place\",\n\n // --- Two-Factor (P11) ---\n\n /** @default \"Enter your 6-digit code\" */\n ENTER_TOTP_CODE: \"Enter your 6-digit code\",\n\n /** @default \"Use backup code\" */\n USE_BACKUP_CODE: \"Use backup code\",\n\n /** @default \"Use authenticator\" */\n USE_AUTHENTICATOR: \"Use authenticator\",\n\n /** @default \"Enter backup code\" */\n BACKUP_CODE_PLACEHOLDER: \"Enter backup code\",\n\n // --- Validation ---\n\n /** @default \"Passwords do not match\" */\n PASSWORDS_DO_NOT_MATCH: \"Passwords do not match\",\n\n /** @default \"Password is required\" */\n PASSWORD_REQUIRED: \"Password is required\",\n\n /** @default \"Email address is required\" */\n EMAIL_REQUIRED: \"Email address is required\",\n\n /** @default \"is required\" */\n IS_REQUIRED: \"is required\",\n\n /** @default \"is invalid\" */\n IS_INVALID: \"is invalid\",\n\n // --- Error Codes ---\n ...AUTH_ERROR_CODES,\n};\n\nexport type AuthLocalization = Partial<typeof authLocalization>;\n","import { AuthError } from \"@atzentis/auth-sdk\";\nimport type { AuthLocalization } from \"./auth-localization\";\nimport { authLocalization } from \"./auth-localization\";\n\n/**\n * Gets a localized error message from an error object.\n *\n * When `localizeErrors` is true, looks up the error code directly\n * in the localization dictionary (error codes are localization keys).\n *\n * Fallback chain:\n * 1. localization[error.code] (if AuthError and localizeErrors)\n * 2. error.message\n * 3. localization.REQUEST_FAILED\n * 4. \"Request failed\"\n */\nexport function getLocalizedError(\n error: unknown,\n localization: AuthLocalization,\n localizeErrors: boolean,\n): string {\n if (!localizeErrors) {\n if (error instanceof Error && error.message) return error.message;\n return authLocalization.REQUEST_FAILED;\n }\n\n if (error instanceof AuthError) {\n const errorCode = error.code as keyof typeof authLocalization;\n if (localization?.[errorCode]) return localization[errorCode];\n }\n\n if (error instanceof Error && error.message) return error.message;\n\n return localization?.REQUEST_FAILED ?? authLocalization.REQUEST_FAILED;\n}\n","// Internal hook to access auth context with error boundary\n\nimport { useContext } from \"react\";\nimport type { AuthContextValue } from \"../provider\";\nimport { AuthContext } from \"../provider\";\n\nexport function useAuthContext(): AuthContextValue {\n const context = useContext(AuthContext);\n\n if (!context) {\n throw new Error(\"useAuthContext must be used within AuthProvider\");\n }\n\n return context;\n}\n","// useApiKeys hook — API key management\n\nimport type {\n ApiKey,\n AuthError,\n CreateApiKeyRequest,\n UpdateApiKeyRequest,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useApiKeys() {\n const { client } = useAuthContext();\n\n const [apiKeys, setApiKeys] = useState<ApiKey[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.apiKeys.list();\n setApiKeys(response.data);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const create = useCallback(\n async (data: CreateApiKeyRequest) => {\n const response = await client.apiKeys.create(data);\n await refresh();\n return response;\n },\n [client, refresh],\n );\n\n const get = useCallback(\n async (keyId: string) => {\n return client.apiKeys.get(keyId);\n },\n [client],\n );\n\n const update = useCallback(\n async (keyId: string, data: UpdateApiKeyRequest) => {\n const updated = await client.apiKeys.update(keyId, data);\n await refresh();\n return updated;\n },\n [client, refresh],\n );\n\n const rotate = useCallback(\n async (keyId: string) => {\n const response = await client.apiKeys.rotate(keyId);\n await refresh();\n return response;\n },\n [client, refresh],\n );\n\n const revoke = useCallback(\n async (keyId: string) => {\n await client.apiKeys.revoke(keyId);\n await refresh();\n },\n [client, refresh],\n );\n\n const validate = useCallback(\n async (keyString: string) => {\n return client.apiKeys.validate(keyString);\n },\n [client],\n );\n\n const getUsage = useCallback(\n async (keyId: string) => {\n return client.apiKeys.getUsage(keyId);\n },\n [client],\n );\n\n return {\n apiKeys,\n isLoading,\n error,\n refresh,\n create,\n get,\n update,\n rotate,\n revoke,\n validate,\n getUsage,\n };\n}\n","// useAuth hook — auth state and methods\n\nimport type {\n GetOAuthUrlRequest,\n LoginCredentials,\n RequestPasswordResetRequest,\n ResetPasswordRequest,\n SendMagicLinkRequest,\n SendVerificationEmailRequest,\n SignupData,\n UsernameLoginCredentials,\n VerifyEmailRequest,\n VerifyMagicLinkRequest,\n VerifyOAuthCodeRequest,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useAuth() {\n const { client, user, isAuthenticated, isLoading, error, setUser, clearError } = useAuthContext();\n\n const login = useCallback(\n async (credentials: LoginCredentials) => {\n const response = await client.login(credentials);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const loginWithUsername = useCallback(\n async (credentials: UsernameLoginCredentials) => {\n const response = await client.loginWithUsername(credentials);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const signup = useCallback(\n async (data: SignupData) => {\n const response = await client.signup(data);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const logout = useCallback(async () => {\n await client.logout();\n setUser(null);\n }, [client, setUser]);\n\n const logoutAllDevices = useCallback(async () => {\n await client.logoutAllDevices();\n setUser(null);\n }, [client, setUser]);\n\n const getOAuthUrl = useCallback(\n (config: GetOAuthUrlRequest) => {\n return client.getOAuthUrl(config);\n },\n [client],\n );\n\n const verifyOAuthCode = useCallback(\n async (request: VerifyOAuthCodeRequest) => {\n const response = await client.verifyOAuthCode(request);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const sendMagicLink = useCallback(\n async (request: SendMagicLinkRequest) => {\n await client.sendMagicLink(request);\n },\n [client],\n );\n\n const verifyMagicLink = useCallback(\n async (request: VerifyMagicLinkRequest) => {\n const response = await client.verifyMagicLink(request);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const isUsernameAvailable = useCallback(\n async (username: string) => {\n return client.isUsernameAvailable(username);\n },\n [client],\n );\n\n const getAccessToken = useCallback(async () => {\n return client.getAccessToken();\n }, [client]);\n\n const refreshToken = useCallback(async () => {\n return client.refreshToken();\n }, [client]);\n\n const getAuthHeader = useCallback(async () => {\n const token = await client.getAccessToken();\n if (token) {\n return { Authorization: `Bearer ${token}` };\n }\n return {};\n }, [client]);\n\n const requestPasswordReset = useCallback(\n async (request: RequestPasswordResetRequest) => {\n await client.requestPasswordReset(request);\n },\n [client],\n );\n\n const resetPassword = useCallback(\n async (request: ResetPasswordRequest) => {\n return client.resetPassword(request);\n },\n [client],\n );\n\n const sendVerificationEmail = useCallback(\n async (request: SendVerificationEmailRequest) => {\n await client.sendVerificationEmail(request);\n },\n [client],\n );\n\n const verifyEmail = useCallback(\n async (request: VerifyEmailRequest) => {\n const response = await client.verifyEmail(request);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n return {\n user,\n isAuthenticated,\n isLoading,\n error,\n clearError,\n getAccessToken,\n getAuthHeader,\n getOAuthUrl,\n isUsernameAvailable,\n login,\n loginWithUsername,\n logout,\n logoutAllDevices,\n refreshToken,\n requestPasswordReset,\n resetPassword,\n sendMagicLink,\n sendVerificationEmail,\n signup,\n verifyEmail,\n verifyMagicLink,\n verifyOAuthCode,\n };\n}\n","import { useContext } from \"react\";\nimport type { AuthLocalization } from \"../localization\";\nimport { authLocalization } from \"../localization\";\nimport { LocalizationContext } from \"../provider\";\n\nexport interface UseAuthLocalizationResult {\n localization: Required<AuthLocalization>;\n localizeErrors: boolean;\n}\n\nexport function useAuthLocalization(): UseAuthLocalizationResult {\n const ctx = useContext(LocalizationContext);\n const localization = ctx.overrides ? { ...authLocalization, ...ctx.overrides } : authLocalization;\n return { localization, localizeErrors: ctx.localizeErrors };\n}\n","// useDevices hook — device management and trust settings\n\nimport type { AuthError, Device } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useDevices() {\n const { client } = useAuthContext();\n\n const [devices, setDevices] = useState<Device[]>([]);\n const [currentDevice, setCurrentDevice] = useState<Device | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.devices.list();\n setDevices(response.data);\n const current = response.data.find((d) => d.isCurrent) ?? null;\n setCurrentDevice(current);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const trustDevice = useCallback(\n async (id: string) => {\n await client.devices.trust(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const untrustDevice = useCallback(\n async (id: string) => {\n await client.devices.untrust(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const removeDevice = useCallback(\n async (id: string) => {\n await client.devices.remove(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const removeAllOtherDevices = useCallback(async () => {\n await client.devices.removeAllOthers();\n await refresh();\n }, [client, refresh]);\n\n return {\n devices,\n currentDevice,\n isLoading,\n error,\n refresh,\n trustDevice,\n untrustDevice,\n removeDevice,\n removeAllOtherDevices,\n };\n}\n","// useLoginActivity hook — login history with filtering and reporting\n\nimport type { AuthError, ListLoginEventsRequest, LoginEvent } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\ninterface UseLoginActivityOptions {\n limit?: number;\n}\n\nexport function useLoginActivity(options: UseLoginActivityOptions = {}) {\n const { client } = useAuthContext();\n\n const [events, setEvents] = useState<LoginEvent[]>([]);\n const [total, setTotal] = useState(0);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n const [filterOptions, setFilterOptions] = useState<ListLoginEventsRequest>({\n limit: options.limit ?? 50,\n offset: 0,\n });\n\n const hasMore = events.length < total;\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.loginActivity.list(filterOptions);\n setEvents(response.data);\n setTotal(response.total);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client, filterOptions]);\n\n const loadMore = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.loginActivity.list({\n ...filterOptions,\n offset: events.length,\n });\n setEvents((prev) => [...prev, ...response.data]);\n setTotal(response.total);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client, filterOptions, events.length]);\n\n const filter = useCallback(\n (newOptions: ListLoginEventsRequest) => {\n const merged = { ...filterOptions, ...newOptions, offset: 0 };\n setFilterOptions(merged);\n setEvents([]);\n setTotal(0);\n },\n [filterOptions],\n );\n\n const markRecognized = useCallback(\n async (eventId: string) => {\n await client.loginActivity.markRecognized(eventId);\n },\n [client],\n );\n\n const reportSuspicious = useCallback(\n async (eventId: string) => {\n return client.loginActivity.reportSuspicious(eventId);\n },\n [client],\n );\n\n return {\n events,\n total,\n hasMore,\n isLoading,\n error,\n refresh,\n loadMore,\n filter,\n markRecognized,\n reportSuspicious,\n };\n}\n","// useOrganizations hook — organization management\n\nimport type {\n AcceptInvitationRequest,\n AuthError,\n CreateOrganizationRequest,\n DeclineInvitationRequest,\n InviteMemberRequest,\n ListInvitationsRequest,\n ListMembersRequest,\n Organization,\n UpdateMemberRequest,\n UpdateOrganizationRequest,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useOrganizations() {\n const { client } = useAuthContext();\n\n const [organizations, setOrganizations] = useState<Organization[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.organizations.list();\n setOrganizations(response.data);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const create = useCallback(\n async (data: CreateOrganizationRequest) => {\n const org = await client.organizations.create(data);\n await refresh();\n return org;\n },\n [client, refresh],\n );\n\n const update = useCallback(\n async (orgId: string, data: UpdateOrganizationRequest) => {\n const org = await client.organizations.update(orgId, data);\n await refresh();\n return org;\n },\n [client, refresh],\n );\n\n const deleteOrg = useCallback(\n async (orgId: string) => {\n await client.organizations.delete(orgId);\n await refresh();\n },\n [client, refresh],\n );\n\n const listMembers = useCallback(\n async (orgId: string, options?: ListMembersRequest) => {\n return client.organizations.listMembers(orgId, options);\n },\n [client],\n );\n\n const updateMember = useCallback(\n async (orgId: string, userId: string, data: UpdateMemberRequest) => {\n return client.organizations.updateMember(orgId, userId, data);\n },\n [client],\n );\n\n const removeMember = useCallback(\n async (orgId: string, userId: string) => {\n await client.organizations.removeMember(orgId, userId);\n },\n [client],\n );\n\n const inviteMember = useCallback(\n async (orgId: string, data: InviteMemberRequest) => {\n return client.organizations.inviteMember(orgId, data);\n },\n [client],\n );\n\n const listInvitations = useCallback(\n async (orgId: string, options?: ListInvitationsRequest) => {\n return client.organizations.listInvitations(orgId, options);\n },\n [client],\n );\n\n const resendInvitation = useCallback(\n async (orgId: string, invitationId: string) => {\n await client.organizations.resendInvitation(orgId, invitationId);\n },\n [client],\n );\n\n const cancelInvitation = useCallback(\n async (orgId: string, invitationId: string) => {\n await client.organizations.cancelInvitation(orgId, invitationId);\n },\n [client],\n );\n\n const acceptInvitation = useCallback(\n async (data: AcceptInvitationRequest) => {\n await client.organizations.acceptInvitation(data);\n },\n [client],\n );\n\n const declineInvitation = useCallback(\n async (data: DeclineInvitationRequest) => {\n await client.organizations.declineInvitation(data);\n },\n [client],\n );\n\n const leave = useCallback(\n async (orgId: string) => {\n await client.organizations.leave(orgId);\n await refresh();\n },\n [client, refresh],\n );\n\n return {\n organizations,\n isLoading,\n error,\n refresh,\n create,\n update,\n delete: deleteOrg,\n listMembers,\n updateMember,\n removeMember,\n inviteMember,\n listInvitations,\n resendInvitation,\n cancelInvitation,\n acceptInvitation,\n declineInvitation,\n leave,\n };\n}\n","// usePhone hook — phone OTP authentication\n\nimport type { AuthError } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function usePhone() {\n const { client, setUser } = useAuthContext();\n\n const [isSending, setIsSending] = useState(false);\n const [isVerifying, setIsVerifying] = useState(false);\n const [codeSent, setCodeSent] = useState(false);\n const [expiresIn, setExpiresIn] = useState<number | null>(null);\n const [error, setError] = useState<AuthError | null>(null);\n\n const sendOTP = useCallback(\n async (phoneNumber: string) => {\n setIsSending(true);\n setError(null);\n try {\n const response = await client.phone.sendOTP({ phoneNumber });\n setCodeSent(true);\n setExpiresIn(response.expiresIn);\n return response;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsSending(false);\n }\n },\n [client],\n );\n\n const verify = useCallback(\n async (phoneNumber: string, code: string) => {\n setIsVerifying(true);\n setError(null);\n try {\n const response = await client.phone.verify({ phoneNumber, code });\n setUser(response.user);\n return response;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsVerifying(false);\n }\n },\n [client, setUser],\n );\n\n const signIn = useCallback(\n async (phoneNumber: string, password: string) => {\n setIsVerifying(true);\n setError(null);\n try {\n const response = await client.phone.signIn({ phoneNumber, password });\n setUser(response.user);\n return response;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsVerifying(false);\n }\n },\n [client, setUser],\n );\n\n return {\n isSending,\n isVerifying,\n codeSent,\n expiresIn,\n error,\n sendOTP,\n verify,\n signIn,\n };\n}\n","// useSession hook — current session state\n\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useSession() {\n const { user, session, isAuthenticated, isLoading } = useAuthContext();\n\n return {\n user,\n session,\n isAuthenticated,\n isLoading,\n };\n}\n","// useSessions hook — session management with multi-session support\n\nimport type {\n AuthError,\n DeviceSession,\n RevokeAllSessionsOptions,\n Session,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useSessions() {\n const { client, session, setUser } = useAuthContext();\n\n const [sessions, setSessions] = useState<Session[]>([]);\n const [deviceSessions, setDeviceSessions] = useState<DeviceSession[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const [sessionsResponse, deviceSessionsResponse] = await Promise.all([\n client.sessions.list(),\n client.sessions.listDeviceSessions(),\n ]);\n setSessions(sessionsResponse.data);\n setDeviceSessions(deviceSessionsResponse);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const revokeSession = useCallback(\n async (id: string) => {\n await client.sessions.revoke(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const revokeAllSessions = useCallback(\n async (options?: RevokeAllSessionsOptions) => {\n await client.sessions.revokeAll(options);\n await refresh();\n },\n [client, refresh],\n );\n\n const switchAccount = useCallback(\n async (sessionToken: string) => {\n const response = await client.sessions.setActive({ sessionToken });\n setUser(response.user);\n },\n [client, setUser],\n );\n\n const revokeDeviceSession = useCallback(\n async (sessionToken: string) => {\n await client.sessions.revokeDeviceSession({ sessionToken });\n await refresh();\n },\n [client, refresh],\n );\n\n return {\n session,\n sessions,\n deviceSessions,\n isLoading,\n error,\n refresh,\n revokeSession,\n revokeAllSessions,\n switchAccount,\n revokeDeviceSession,\n };\n}\n","// useUser hook — profile, 2FA, OAuth, and phone management\n\nimport type { AuthError, ConnectOAuthRequest, UserUpdate } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useUser() {\n const { client, user, setUser } = useAuthContext();\n\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const updateProfile = useCallback(\n async (data: UserUpdate) => {\n setIsLoading(true);\n setError(null);\n try {\n const updated = await client.users.update(data);\n setUser(updated);\n return updated;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsLoading(false);\n }\n },\n [client, setUser],\n );\n\n const changePassword = useCallback(\n async (currentPassword: string, newPassword: string) => {\n await client.users.changePassword({ currentPassword, newPassword });\n },\n [client],\n );\n\n const setupTwoFactor = useCallback(async () => {\n return client.users.setupTwoFactor();\n }, [client]);\n\n const verifyTwoFactorSetup = useCallback(\n async (code: string) => {\n await client.users.verifyTwoFactorSetup({ code });\n },\n [client],\n );\n\n const disableTwoFactor = useCallback(\n async (password: string) => {\n await client.users.disableTwoFactor({ password });\n },\n [client],\n );\n\n const deleteAccount = useCallback(\n async (password: string, reason?: string) => {\n await client.users.deleteAccount({ password, reason });\n setUser(null);\n },\n [client, setUser],\n );\n\n const listConnectedProviders = useCallback(async () => {\n return client.users.listConnectedProviders();\n }, [client]);\n\n const connectOAuthProvider = useCallback(\n async (data: ConnectOAuthRequest) => {\n return client.users.connectOAuthProvider(data);\n },\n [client],\n );\n\n const disconnectOAuthProvider = useCallback(\n async (provider: string) => {\n await client.users.disconnectOAuthProvider(provider);\n },\n [client],\n );\n\n const addPhoneNumber = useCallback(\n async (phoneNumber: string) => {\n await client.users.addPhoneNumber({ phoneNumber });\n },\n [client],\n );\n\n const verifyPhoneNumber = useCallback(\n async (code: string) => {\n await client.users.verifyPhoneNumber({ code });\n },\n [client],\n );\n\n const removePhoneNumber = useCallback(\n async (password: string) => {\n await client.users.removePhoneNumber({ password });\n },\n [client],\n );\n\n return {\n user,\n isLoading,\n error,\n updateProfile,\n changePassword,\n setupTwoFactor,\n verifyTwoFactorSetup,\n disableTwoFactor,\n deleteAccount,\n listConnectedProviders,\n connectOAuthProvider,\n disconnectOAuthProvider,\n addPhoneNumber,\n verifyPhoneNumber,\n removePhoneNumber,\n };\n}\n","export function getInitials(name: string): string {\n return name\n .split(\" \")\n .map((w) => w[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n}\n","\"use client\";\n\nimport type { User } from \"@atzentis/auth-sdk\";\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@atzentis/ui-shadcn\";\nimport { useCallback, useEffect } from \"react\";\nimport { getInitials } from \"../../helpers/initials\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { useSessions } from \"../../hooks/use-sessions\";\nimport type { AccountSwitcherProps } from \"../../types/components\";\n\nexport function AccountSwitcher({\n showAddAccount = false,\n onSwitch,\n onAddAccount,\n maxAccounts = 5,\n className,\n}: AccountSwitcherProps) {\n const { deviceSessions, switchAccount, isLoading, refresh } = useSessions();\n const { localization } = useAuthLocalization();\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n const handleSwitch = useCallback(\n async (sessionToken: string, user: User) => {\n await switchAccount(sessionToken);\n onSwitch?.(user);\n },\n [switchAccount, onSwitch],\n );\n\n const visibleSessions = deviceSessions.slice(0, maxAccounts);\n const activeSession = deviceSessions.find((s) => s.isActive);\n\n return (\n <div className={className}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" disabled={isLoading}>\n {activeSession ? activeSession.user.name : localization.SELECT_ACCOUNT}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {visibleSessions.map((session) => (\n <DropdownMenuItem\n key={session.sessionToken}\n onClick={() => handleSwitch(session.sessionToken, session.user)}\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"flex h-8 w-8 items-center justify-center rounded-full bg-gray-200 text-xs font-medium\">\n {session.user.avatar ? (\n <img src={session.user.avatar} alt=\"\" className=\"h-8 w-8 rounded-full\" />\n ) : (\n getInitials(session.user.name)\n )}\n </span>\n <div className=\"flex flex-col\">\n <span className=\"text-sm font-medium\">{session.user.name}</span>\n <span className=\"text-xs text-gray-500\">{session.user.email}</span>\n </div>\n {session.isActive && <span className=\"ml-auto text-sm\">{\"\\u2713\"}</span>}\n </div>\n </DropdownMenuItem>\n ))}\n\n {showAddAccount && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={onAddAccount}>{localization.ADD_ACCOUNT}</DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n","\"use client\";\n\nimport { useSession } from \"../../hooks/use-session\";\nimport type { SessionGuardProps } from \"../../types/components\";\n\nexport function SessionGuard({\n children,\n fallback,\n loadingFallback = null,\n freshRequired = false,\n freshThreshold = 300,\n requiredRole,\n className,\n}: SessionGuardProps) {\n const { user, session, isAuthenticated, isLoading } = useSession();\n\n if (isLoading) {\n return className ? <div className={className}>{loadingFallback}</div> : <>{loadingFallback}</>;\n }\n\n if (!isAuthenticated) {\n return className ? <div className={className}>{fallback}</div> : <>{fallback}</>;\n }\n\n if (freshRequired && session) {\n const sessionAge = (Date.now() - new Date(session.createdAt).getTime()) / 1000;\n if (sessionAge > freshThreshold) {\n return className ? <div className={className}>{fallback}</div> : <>{fallback}</>;\n }\n }\n\n if (requiredRole && user) {\n const userRole = (user as unknown as Record<string, unknown>).role as string | undefined;\n if (userRole !== requiredRole) {\n return className ? <div className={className}>{fallback}</div> : <>{fallback}</>;\n }\n }\n\n return className ? <div className={className}>{children}</div> : <>{children}</>;\n}\n","import type { AuthViewPath } from \"../../types/components\";\n\n/**\n * Default path mapping for AuthView component.\n * Maps logical auth flow paths to actual URL paths.\n *\n * @example\n * // Use in Next.js App Router:\n * <AuthView pathname={pathname} paths={authViewPaths} />\n *\n * // Override specific paths:\n * <AuthView\n * pathname={pathname}\n * paths={{ ...authViewPaths, \"/sign-in\": \"/login\" }}\n * />\n */\nexport const authViewPaths: Record<AuthViewPath, string> = {\n \"/sign-in\": \"/sign-in\",\n \"/sign-up\": \"/sign-up\",\n \"/forgot-password\": \"/forgot-password\",\n \"/reset-password\": \"/reset-password\",\n \"/verify-email\": \"/verify-email\",\n \"/email-otp\": \"/email-otp\",\n \"/recover-account\": \"/recover-account\",\n \"/two-factor\": \"/two-factor\",\n};\n","import { AuthError, AuthErrorCode } from \"@atzentis/auth-sdk\";\n\n/**\n * Safely converts an unknown caught value to AuthError.\n * If the value is already an AuthError, returns it directly.\n * Otherwise wraps the message in a new AuthError.\n */\nexport function toAuthError(error: unknown): AuthError {\n if (error instanceof AuthError) return error;\n const message = error instanceof Error ? error.message : String(error);\n return new AuthError({\n code: AuthErrorCode.NetworkError,\n message,\n statusCode: 0,\n });\n}\n","import { z } from \"zod\";\n\nexport const emailOtpEmailSchema = z.object({\n email: z.string().min(1).email(),\n});\n\nexport type EmailOtpEmailFormData = z.infer<typeof emailOtpEmailSchema>;\n\nexport const emailOtpCodeSchema = z.object({\n code: z\n .string()\n .length(6)\n .regex(/^\\d{6}$/),\n});\n\nexport type EmailOtpCodeFormData = z.infer<typeof emailOtpCodeSchema>;\n","\"use client\";\n\nimport { Button } from \"@atzentis/ui-shadcn\";\n\nexport interface SubmitButtonProps {\n loading: boolean;\n loadingLabel: string;\n actionLabel: string;\n className?: string;\n}\n\nexport function SubmitButton({ loading, loadingLabel, actionLabel, className }: SubmitButtonProps) {\n return (\n <Button type=\"submit\" disabled={loading} className={className ?? \"w-full\"}>\n {loading ? loadingLabel : actionLabel}\n </Button>\n );\n}\n","export function isEmail(value: string): boolean {\n return value.includes(\"@\");\n}\n\nexport function maskEmail(email: string): string {\n const [local, domain] = email.split(\"@\");\n if (!local || !domain) return email;\n const masked =\n local.length <= 1 ? local : `${local[0]}${\"*\".repeat(Math.min(local.length - 1, 3))}`;\n return `${masked}@${domain}`;\n}\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput, OTPInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { EmailOtpEmailFormData } from \"../../../schemas/email-otp-schema\";\nimport { emailOtpEmailSchema } from \"../../../schemas/email-otp-schema\";\nimport type { EmailOTPFormProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\nimport { maskEmail } from \"../../shared/utils\";\n\nexport function EmailOTPForm({\n redirectUrl,\n onSuccess,\n onError,\n resendCooldown = 60,\n autoSubmit = true,\n className,\n}: EmailOTPFormProps) {\n const { sendVerificationEmail, verifyEmail } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [step, setStep] = useState<1 | 2>(1);\n const [email, setEmail] = useState(\"\");\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n const [cooldownRemaining, setCooldownRemaining] = useState(0);\n const codeRef = useRef(\"\");\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<EmailOtpEmailFormData>({\n resolver: zodResolver(emailOtpEmailSchema),\n defaultValues: { email: \"\" },\n });\n\n useEffect(() => {\n if (cooldownRemaining <= 0) return;\n\n const timer = setInterval(() => {\n setCooldownRemaining((prev) => Math.max(0, prev - 1));\n }, 1000);\n\n return () => clearInterval(timer);\n }, [cooldownRemaining]);\n\n const onEmailSubmit = useCallback(\n async (data: EmailOtpEmailFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await sendVerificationEmail({ email: data.email, redirectUrl });\n setEmail(data.email);\n setStep(2);\n setCooldownRemaining(resendCooldown);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [sendVerificationEmail, redirectUrl, resendCooldown, onError, localization, localizeErrors],\n );\n\n const handleVerifyCode = useCallback(\n async (code: string) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n const response = await verifyEmail({ token: code });\n onSuccess?.(response.user);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [verifyEmail, onSuccess, onError, localization, localizeErrors],\n );\n\n const handleOtpComplete = useCallback(\n (code: string) => {\n codeRef.current = code;\n if (autoSubmit) {\n handleVerifyCode(code);\n }\n },\n [autoSubmit, handleVerifyCode],\n );\n\n const handleManualVerify = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n if (codeRef.current) {\n handleVerifyCode(codeRef.current);\n }\n },\n [handleVerifyCode],\n );\n\n const handleResend = useCallback(async () => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await sendVerificationEmail({ email, redirectUrl });\n setCooldownRemaining(resendCooldown);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n } finally {\n setIsSubmitting(false);\n }\n }, [sendVerificationEmail, email, redirectUrl, resendCooldown, localization, localizeErrors]);\n\n const handleGoBack = useCallback(() => {\n setStep(1);\n setFormError(null);\n codeRef.current = \"\";\n }, []);\n\n if (step === 2) {\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <div className=\"text-center space-y-2\">\n <h2 className=\"text-lg font-semibold\">{localization.EMAIL_OTP}</h2>\n <p className=\"text-sm\">\n {localization.EMAIL_OTP_SENT} <strong>{maskEmail(email)}</strong>\n </p>\n </div>\n\n <form onSubmit={handleManualVerify} className=\"space-y-4\">\n {/* biome-ignore lint/a11y/noLabelWithoutControl: OTPInput renders its own input cells */}\n <label className=\"block text-sm font-medium\">\n {localization.ENTER_VERIFICATION_CODE}\n <OTPInput\n length={6}\n onComplete={handleOtpComplete}\n disabled={isSubmitting}\n className=\"mt-2\"\n />\n </label>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.VERIFYING}\n actionLabel={localization.VERIFY}\n />\n\n <div className=\"space-y-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={isSubmitting || cooldownRemaining > 0}\n onClick={handleResend}\n className=\"w-full\"\n >\n {cooldownRemaining > 0\n ? localization.RESEND_IN.replace(\"{{seconds}}\", String(cooldownRemaining))\n : isSubmitting\n ? localization.RESENDING\n : localization.RESEND}\n </Button>\n\n <Button type=\"button\" variant=\"ghost\" onClick={handleGoBack} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n </div>\n </form>\n </div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <div className=\"text-center space-y-2\">\n <h2 className=\"text-lg font-semibold\">{localization.EMAIL_OTP}</h2>\n <p className=\"text-sm text-gray-500\">{localization.EMAIL_OTP_DESCRIPTION}</p>\n </div>\n\n <form onSubmit={handleSubmit(onEmailSubmit)} className=\"space-y-4\">\n <FormInput\n label={localization.EMAIL}\n id=\"email-otp-email\"\n type=\"email\"\n autoComplete=\"email\"\n error={errors.email?.message}\n disabled={isSubmitting}\n {...register(\"email\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.SENDING}\n actionLabel={localization.SEND_VERIFICATION_CODE}\n />\n </form>\n </div>\n </Card>\n );\n}\n","\"use client\";\n\nimport {\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@atzentis/ui-shadcn\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { EmailVerificationFormProps } from \"../../../types/components\";\nimport { maskEmail } from \"../../shared/utils\";\n\nexport function EmailVerificationForm({\n token,\n email,\n redirectUrl,\n onSuccess,\n onError,\n resendCooldown = 60,\n className,\n}: EmailVerificationFormProps) {\n const { sendVerificationEmail, verifyEmail } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [status, setStatus] = useState<\"verifying\" | \"success\" | \"error\" | \"resend\">(\n token ? \"verifying\" : \"resend\",\n );\n const [formError, setFormError] = useState<string | null>(null);\n const [cooldownRemaining, setCooldownRemaining] = useState(0);\n const [isResending, setIsResending] = useState(false);\n\n // Verify token on mount if provided\n // biome-ignore lint/correctness/useExhaustiveDependencies: Only run once on mount for token verification\n useEffect(() => {\n if (!token) return;\n\n setStatus(\"verifying\");\n verifyEmail({ token })\n .then((response) => {\n setStatus(\"success\");\n onSuccess?.(response.user);\n })\n .catch((err) => {\n setStatus(\"error\");\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n });\n }, []);\n\n // Cooldown timer effect\n useEffect(() => {\n if (cooldownRemaining <= 0) return;\n const timer = setInterval(() => {\n setCooldownRemaining((prev) => {\n if (prev <= 1) {\n clearInterval(timer);\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n return () => clearInterval(timer);\n }, [cooldownRemaining]);\n\n const handleResend = useCallback(async () => {\n if (!email) return;\n\n setFormError(null);\n setIsResending(true);\n try {\n await sendVerificationEmail({ email, redirectUrl });\n setCooldownRemaining(resendCooldown);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsResending(false);\n }\n }, [\n email,\n redirectUrl,\n resendCooldown,\n sendVerificationEmail,\n localization,\n localizeErrors,\n onError,\n ]);\n\n // Verifying state — loading spinner\n if (status === \"verifying\") {\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.EMAIL_VERIFICATION}</CardTitle>\n <CardDescription>{localization.EMAIL_VERIFICATION_DESCRIPTION}</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"flex items-center justify-center py-8\" aria-live=\"polite\">\n <div className=\"flex items-center space-x-3\">\n <div className=\"h-5 w-5 animate-spin rounded-full border-2 border-gray-300 border-t-gray-900\" />\n <p className=\"text-sm text-gray-600\">{localization.EMAIL_VERIFICATION_CHECKING}</p>\n </div>\n </div>\n </CardContent>\n </Card>\n );\n }\n\n // Success state\n if (status === \"success\") {\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.EMAIL_VERIFICATION}</CardTitle>\n <CardDescription>{localization.EMAIL_VERIFICATION_DESCRIPTION}</CardDescription>\n </CardHeader>\n <CardContent>\n <div\n className=\"flex flex-col items-center justify-center py-8 space-y-4\"\n aria-live=\"polite\"\n >\n <div className=\"rounded-full bg-green-100 p-3\">\n <svg\n className=\"h-8 w-8 text-green-600\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n </div>\n <p className=\"text-sm font-medium text-green-600\">\n {localization.EMAIL_VERIFICATION_SUCCESS}\n </p>\n </div>\n </CardContent>\n </Card>\n );\n }\n\n // Error or resend state\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.EMAIL_VERIFICATION}</CardTitle>\n <CardDescription>{localization.EMAIL_VERIFICATION_DESCRIPTION}</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n {email && (\n <div className=\"text-sm text-gray-600\">\n {localization.CHECK_YOUR_EMAIL}: <strong>{maskEmail(email)}</strong>\n </div>\n )}\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={isResending || cooldownRemaining > 0}\n onClick={handleResend}\n className=\"w-full\"\n >\n {isResending\n ? localization.RESENDING\n : cooldownRemaining > 0\n ? localization.RESEND_IN.replace(\"{{seconds}}\", cooldownRemaining.toString())\n : localization.RESEND_VERIFICATION_EMAIL}\n </Button>\n </div>\n </CardContent>\n </Card>\n );\n}\n","import { z } from \"zod\";\n\nexport const forgotPasswordSchema = z.object({\n email: z.string().min(1).email(),\n});\n\nexport type ForgotPasswordFormData = z.infer<typeof forgotPasswordSchema>;\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { ForgotPasswordFormData } from \"../../../schemas/forgot-password-schema\";\nimport { forgotPasswordSchema } from \"../../../schemas/forgot-password-schema\";\nimport type { ForgotPasswordFormProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\nimport { maskEmail } from \"../../shared/utils\";\n\nexport function ForgotPasswordForm({\n redirectUrl,\n onSuccess,\n onError,\n onBackToLogin,\n resendCooldown = 60,\n className,\n}: ForgotPasswordFormProps) {\n const { requestPasswordReset } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [sent, setSent] = useState(false);\n const [sentEmail, setSentEmail] = useState(\"\");\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n const [cooldownRemaining, setCooldownRemaining] = useState(0);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n getValues,\n } = useForm<ForgotPasswordFormData>({\n resolver: zodResolver(forgotPasswordSchema),\n defaultValues: { email: \"\" },\n });\n\n useEffect(() => {\n if (cooldownRemaining <= 0) return;\n\n const timer = setInterval(() => {\n setCooldownRemaining((prev) => Math.max(0, prev - 1));\n }, 1000);\n\n return () => clearInterval(timer);\n }, [cooldownRemaining]);\n\n const onSubmit = useCallback(\n async (data: ForgotPasswordFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await requestPasswordReset({ email: data.email, redirectUrl });\n setSent(true);\n setSentEmail(data.email);\n setCooldownRemaining(resendCooldown);\n onSuccess?.();\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [\n requestPasswordReset,\n redirectUrl,\n resendCooldown,\n onSuccess,\n onError,\n localization,\n localizeErrors,\n ],\n );\n\n const handleResend = useCallback(async () => {\n const email = getValues(\"email\");\n setFormError(null);\n setIsSubmitting(true);\n try {\n await requestPasswordReset({ email, redirectUrl });\n setCooldownRemaining(resendCooldown);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n } finally {\n setIsSubmitting(false);\n }\n }, [requestPasswordReset, redirectUrl, resendCooldown, getValues, localization, localizeErrors]);\n\n if (sent) {\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <div className=\"text-center space-y-2\">\n <h2 className=\"text-lg font-semibold\">{localization.CHECK_YOUR_EMAIL}</h2>\n <p className=\"text-sm\">{localization.FORGOT_PASSWORD_EMAIL}</p>\n <p className=\"text-sm font-medium\">{maskEmail(sentEmail)}</p>\n </div>\n\n <div className=\"space-y-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={isSubmitting || cooldownRemaining > 0}\n onClick={handleResend}\n className=\"w-full\"\n >\n {cooldownRemaining > 0\n ? localization.RESEND_IN.replace(\"{{seconds}}\", String(cooldownRemaining))\n : isSubmitting\n ? localization.RESENDING\n : localization.RESEND}\n </Button>\n\n {onBackToLogin && (\n <Button type=\"button\" variant=\"ghost\" onClick={onBackToLogin} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n )}\n </div>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600 text-center\">\n {formError}\n </div>\n )}\n </div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <div className=\"text-center space-y-2\">\n <h2 className=\"text-lg font-semibold\">{localization.FORGOT_PASSWORD}</h2>\n <p className=\"text-sm text-gray-500\">{localization.FORGOT_PASSWORD_DESCRIPTION}</p>\n </div>\n\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-4\">\n <FormInput\n label={localization.EMAIL}\n id=\"forgot-password-email\"\n type=\"email\"\n autoComplete=\"email\"\n error={errors.email?.message}\n disabled={isSubmitting}\n {...register(\"email\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.SENDING}\n actionLabel={localization.FORGOT_PASSWORD_ACTION}\n />\n\n {onBackToLogin && (\n <Button type=\"button\" variant=\"ghost\" onClick={onBackToLogin} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n )}\n </form>\n </div>\n </Card>\n );\n}\n","import { z } from \"zod\";\n\n// Credential mode: email-or-username + password\nexport const credentialLoginSchema = z.object({\n identity: z.string().min(1, \"Email or username is required\"),\n password: z.string().min(1, \"Password is required\"),\n captchaToken: z.string().optional(),\n});\nexport type CredentialLoginFormData = z.infer<typeof credentialLoginSchema>;\n\n// Phone mode: phone number + OTP code\nexport const phoneLoginSchema = z.object({\n countryCode: z.string(),\n phoneNumber: z.string().min(1, \"Phone number is required\"),\n});\nexport type PhoneLoginFormData = z.infer<typeof phoneLoginSchema>;\n\nexport const otpVerifySchema = z.object({\n code: z.string().length(6, \"Code must be 6 digits\"),\n});\nexport type OtpVerifyFormData = z.infer<typeof otpVerifySchema>;\n","\"use client\";\n\nimport type { OAuthProvider } from \"@atzentis/auth-sdk\";\nimport { Button } from \"@atzentis/ui-shadcn\";\nimport { useCallback, useState } from \"react\";\nimport { useAuth } from \"../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport type { OAuthButtonProps } from \"../../types/components\";\n\nconst PROVIDER_NAMES: Record<OAuthProvider, string> = {\n google: \"Google\",\n github: \"GitHub\",\n apple: \"Apple\",\n microsoft: \"Microsoft\",\n atzentis: \"Atzentis\",\n};\n\nexport function OAuthButton({\n provider,\n redirectUri,\n state,\n variant = \"outline\",\n size = \"md\",\n className,\n}: OAuthButtonProps) {\n const { getOAuthUrl } = useAuth();\n const { localization } = useAuthLocalization();\n const [isLoading, setIsLoading] = useState(false);\n\n const sizeMap = {\n sm: \"sm\" as const,\n md: \"default\" as const,\n lg: \"lg\" as const,\n };\n\n const providerName = PROVIDER_NAMES[provider];\n\n const handleClick = useCallback(async () => {\n setIsLoading(true);\n try {\n const url = await getOAuthUrl({ provider, redirectUri, state: state ?? \"\" });\n window.location.href = url;\n } catch {\n setIsLoading(false);\n }\n }, [getOAuthUrl, provider, redirectUri, state]);\n\n return (\n <Button\n type=\"button\"\n variant={variant === \"filled\" ? \"default\" : \"outline\"}\n size={sizeMap[size]}\n disabled={isLoading}\n onClick={handleClick}\n aria-label={`${localization.SIGN_IN_WITH} ${providerName}`}\n className={className}\n >\n {isLoading ? localization.REDIRECTING : `${localization.CONTINUE_WITH} ${providerName}`}\n </Button>\n );\n}\n","import { z } from \"zod\";\n\nexport const phoneNumberSchema = z.object({\n countryCode: z.string(),\n phoneNumber: z.string().min(1, \"Phone number is required\"),\n});\nexport type PhoneNumberFormData = z.infer<typeof phoneNumberSchema>;\n\nexport const otpVerifySchema = z.object({\n code: z.string().length(6, \"Code must be 6 digits\"),\n});\nexport type OtpVerifyFormData = z.infer<typeof otpVerifySchema>;\n\nexport const phonePasswordSchema = z.object({\n countryCode: z.string(),\n phoneNumber: z.string().min(1, \"Phone number is required\"),\n password: z.string().min(1, \"Password is required\"),\n});\nexport type PhonePasswordFormData = z.infer<typeof phonePasswordSchema>;\n","export interface CountryCode {\n code: string;\n country: string;\n name: string;\n flag: string;\n}\n\nexport const COUNTRY_CODES: CountryCode[] = [\n { code: \"+30\", country: \"GR\", name: \"Greece\", flag: \"\\u{1F1EC}\\u{1F1F7}\" },\n { code: \"+49\", country: \"DE\", name: \"Germany\", flag: \"\\u{1F1E9}\\u{1F1EA}\" },\n { code: \"+1\", country: \"US\", name: \"United States\", flag: \"\\u{1F1FA}\\u{1F1F8}\" },\n { code: \"+44\", country: \"GB\", name: \"United Kingdom\", flag: \"\\u{1F1EC}\\u{1F1E7}\" },\n { code: \"+33\", country: \"FR\", name: \"France\", flag: \"\\u{1F1EB}\\u{1F1F7}\" },\n { code: \"+39\", country: \"IT\", name: \"Italy\", flag: \"\\u{1F1EE}\\u{1F1F9}\" },\n { code: \"+34\", country: \"ES\", name: \"Spain\", flag: \"\\u{1F1EA}\\u{1F1F8}\" },\n { code: \"+31\", country: \"NL\", name: \"Netherlands\", flag: \"\\u{1F1F3}\\u{1F1F1}\" },\n { code: \"+43\", country: \"AT\", name: \"Austria\", flag: \"\\u{1F1E6}\\u{1F1F9}\" },\n { code: \"+41\", country: \"CH\", name: \"Switzerland\", flag: \"\\u{1F1E8}\\u{1F1ED}\" },\n { code: \"+357\", country: \"CY\", name: \"Cyprus\", flag: \"\\u{1F1E8}\\u{1F1FE}\" },\n { code: \"+90\", country: \"TR\", name: \"Turkey\", flag: \"\\u{1F1F9}\\u{1F1F7}\" },\n];\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput, FormPasswordInput, FormSelect, OTPInput } from \"@atzentis/ui-shared\";\nimport type { FormSelectOption } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { usePhone } from \"../../../hooks/use-phone\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { OtpVerifyFormData, PhoneNumberFormData } from \"../../../schemas/phone-login-schema\";\nimport { otpVerifySchema, phoneNumberSchema } from \"../../../schemas/phone-login-schema\";\nimport type { PhoneLoginFormProps } from \"../../../types/components\";\nimport { COUNTRY_CODES } from \"../../shared/country-codes\";\nimport { SubmitButton } from \"../../shared/submit-button\";\n\nexport function PhoneLoginForm({\n onSuccess,\n onError,\n allowedCountryCodes = [\"+30\", \"+49\"],\n showPasswordFallback = false,\n className,\n}: PhoneLoginFormProps) {\n const { sendOTP, verify, signIn, isSending, isVerifying, expiresIn } = usePhone();\n const { localization, localizeErrors } = useAuthLocalization();\n const [step, setStep] = useState<\"phone\" | \"otp\" | \"password\">(\"phone\");\n const [formError, setFormError] = useState<string | null>(null);\n const [fullPhoneNumber, setFullPhoneNumber] = useState(\"\");\n\n const filteredCountryCodes = useMemo(\n () => COUNTRY_CODES.filter((c) => allowedCountryCodes.includes(c.code)),\n [allowedCountryCodes],\n );\n\n const phoneForm = useForm<PhoneNumberFormData>({\n resolver: zodResolver(phoneNumberSchema),\n defaultValues: {\n countryCode: filteredCountryCodes[0]?.code ?? \"+30\",\n phoneNumber: \"\",\n },\n });\n\n const otpForm = useForm<OtpVerifyFormData>({\n resolver: zodResolver(otpVerifySchema),\n defaultValues: { code: \"\" },\n });\n\n const [passwordValue, setPasswordValue] = useState(\"\");\n\n const countryCodeOptions: FormSelectOption[] = filteredCountryCodes.map((c) => ({\n value: c.code,\n label: `${c.flag} ${c.name} (${c.code})`,\n }));\n\n const handlePhoneSubmit = useCallback(\n async (data: PhoneNumberFormData) => {\n setFormError(null);\n const phone = `${data.countryCode}${data.phoneNumber}`;\n setFullPhoneNumber(phone);\n try {\n await sendOTP(phone);\n setStep(\"otp\");\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n }\n },\n [sendOTP, onError, localization, localizeErrors],\n );\n\n const handleOtpSubmit = useCallback(\n async (data: OtpVerifyFormData) => {\n setFormError(null);\n try {\n const response = await verify(fullPhoneNumber, data.code);\n onSuccess(response.user);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n }\n },\n [verify, fullPhoneNumber, onSuccess, onError, localization, localizeErrors],\n );\n\n const handleOtpComplete = useCallback(\n (code: string) => {\n otpForm.setValue(\"code\", code);\n otpForm.handleSubmit(handleOtpSubmit)();\n },\n [otpForm, handleOtpSubmit],\n );\n\n const handlePasswordSubmit = useCallback(\n async (e: React.FormEvent) => {\n e.preventDefault();\n setFormError(null);\n try {\n const response = await signIn(fullPhoneNumber, passwordValue);\n onSuccess(response.user);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n }\n },\n [signIn, fullPhoneNumber, passwordValue, onSuccess, onError, localization, localizeErrors],\n );\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n {step === \"phone\" && (\n <form onSubmit={phoneForm.handleSubmit(handlePhoneSubmit)} className=\"space-y-4\">\n <FormSelect\n label={localization.COUNTRY_CODE}\n options={countryCodeOptions}\n value={phoneForm.watch(\"countryCode\")}\n onValueChange={(value) => phoneForm.setValue(\"countryCode\", value)}\n />\n\n <FormInput\n label={localization.PHONE_NUMBER_PLACEHOLDER}\n id=\"phone-number\"\n type=\"tel\"\n error={phoneForm.formState.errors.phoneNumber?.message}\n {...phoneForm.register(\"phoneNumber\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSending}\n loadingLabel={localization.SENDING_VERIFICATION_CODE}\n actionLabel={localization.SEND_VERIFICATION_CODE}\n />\n </form>\n )}\n\n {step === \"otp\" && (\n <form onSubmit={otpForm.handleSubmit(handleOtpSubmit)} className=\"space-y-4\">\n {/* biome-ignore lint/a11y/noLabelWithoutControl: OTPInput renders its own input cells */}\n <label className=\"block text-sm font-medium\">\n {localization.VERIFICATION_CODE_LABEL}\n <OTPInput length={6} onComplete={handleOtpComplete} disabled={isVerifying} />\n </label>\n\n {expiresIn !== null && (\n <p className=\"text-sm text-gray-500\">\n {localization.CODE_EXPIRES_IN} {expiresIn}s\n </p>\n )}\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isVerifying}\n loadingLabel={localization.VERIFYING}\n actionLabel={localization.VERIFY}\n />\n\n {showPasswordFallback && (\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto text-sm\"\n onClick={() => setStep(\"password\")}\n >\n {localization.USE_PASSWORD_INSTEAD}\n </Button>\n )}\n </form>\n )}\n\n {step === \"password\" && (\n <form onSubmit={handlePasswordSubmit} className=\"space-y-4\">\n <FormPasswordInput\n label={localization.PASSWORD}\n id=\"phone-password\"\n value={passwordValue}\n onChange={(e) => setPasswordValue(e.target.value)}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isVerifying}\n loadingLabel={localization.SIGNING_IN}\n actionLabel={localization.SIGN_IN}\n />\n </form>\n )}\n </div>\n </Card>\n );\n}\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput, FormPasswordInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { CredentialLoginFormData } from \"../../../schemas/login-schema\";\nimport { credentialLoginSchema } from \"../../../schemas/login-schema\";\nimport type { LoginFormProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\nimport { isEmail } from \"../../shared/utils\";\nimport { OAuthButton } from \"../oauth-button\";\nimport { PhoneLoginForm } from \"./phone-login\";\n\nexport function LoginForm({\n onSuccess,\n onError,\n enablePhone = false,\n enableForgotPassword = false,\n onForgotPasswordClick,\n className,\n ...oauthProps\n}: LoginFormProps) {\n const oauthProviders = \"oauthProviders\" in oauthProps ? oauthProps.oauthProviders : undefined;\n const oauthRedirectUri = \"oauthRedirectUri\" in oauthProps ? oauthProps.oauthRedirectUri : \"\";\n\n const { login, loginWithUsername } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [mode, setMode] = useState<\"credential\" | \"phone\">(\"credential\");\n const [formError, setFormError] = useState<string | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const {\n register,\n handleSubmit,\n watch,\n formState: { errors },\n } = useForm<CredentialLoginFormData>({\n resolver: zodResolver(credentialLoginSchema),\n defaultValues: { identity: \"\", password: \"\" },\n });\n\n const identityValue = watch(\"identity\");\n\n const onSubmit = useCallback(\n async (data: CredentialLoginFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n if (isEmail(data.identity)) {\n const response = await login({\n email: data.identity,\n password: data.password,\n captchaToken: data.captchaToken,\n });\n onSuccess(response.user);\n } else {\n const response = await loginWithUsername({\n username: data.identity,\n password: data.password,\n captchaToken: data.captchaToken,\n });\n onSuccess(response.user);\n }\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [login, loginWithUsername, onSuccess, onError, localization, localizeErrors],\n );\n\n const handleSwitchToPhone = useCallback(() => {\n setMode(\"phone\");\n setFormError(null);\n }, []);\n\n const handleSwitchToCredential = useCallback(() => {\n setMode(\"credential\");\n setFormError(null);\n }, []);\n\n if (mode === \"phone\") {\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <PhoneLoginForm onSuccess={onSuccess} onError={onError} />\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto text-sm\"\n onClick={handleSwitchToCredential}\n >\n {localization.USE_EMAIL_INSTEAD}\n </Button>\n </div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <form onSubmit={handleSubmit(onSubmit)} className=\"p-6 space-y-4\">\n <FormInput\n label={localization.SIGN_IN_USERNAME_PLACEHOLDER}\n id=\"login-identity\"\n type=\"text\"\n autoComplete=\"username\"\n error={errors.identity?.message}\n {...register(\"identity\")}\n />\n\n {identityValue && (\n <FormPasswordInput\n label={localization.PASSWORD}\n id=\"login-password\"\n autoComplete=\"current-password\"\n error={errors.password?.message}\n {...register(\"password\")}\n />\n )}\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.SIGNING_IN}\n actionLabel={localization.SIGN_IN}\n />\n\n <div className=\"flex items-center justify-between text-sm\">\n {enableForgotPassword && (\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto\"\n onClick={onForgotPasswordClick}\n >\n {localization.FORGOT_PASSWORD_LINK}\n </Button>\n )}\n {enablePhone && (\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto\"\n onClick={handleSwitchToPhone}\n >\n {localization.USE_PHONE_INSTEAD}\n </Button>\n )}\n </div>\n\n {oauthProviders && oauthProviders.length > 0 && (\n <>\n <div className=\"relative flex items-center py-2\">\n <div className=\"flex-grow border-t border-gray-300\" />\n <span className=\"mx-4 text-sm text-gray-500\">{localization.OR_CONTINUE_WITH}</span>\n <div className=\"flex-grow border-t border-gray-300\" />\n </div>\n <div className=\"space-y-2\">\n {oauthProviders.map((provider) => (\n <OAuthButton key={provider} provider={provider} redirectUri={oauthRedirectUri} />\n ))}\n </div>\n </>\n )}\n </form>\n </Card>\n );\n}\n","import { z } from \"zod\";\n\nexport const recoverEmailSchema = z.object({\n email: z.string().min(1).email(),\n});\n\nexport type RecoverEmailFormData = z.infer<typeof recoverEmailSchema>;\n\nexport const recoverCodeSchema = z.object({\n code: z\n .string()\n .length(6)\n .regex(/^\\d{6}$/),\n});\n\nexport type RecoverCodeFormData = z.infer<typeof recoverCodeSchema>;\n\nexport const recoverNewPasswordSchema = z\n .object({\n newPassword: z.string().min(8),\n confirmPassword: z.string().min(1),\n })\n .refine((data) => data.newPassword === data.confirmPassword, {\n message: \"PASSWORDS_DO_NOT_MATCH\",\n path: [\"confirmPassword\"],\n });\n\nexport type RecoverNewPasswordFormData = z.infer<typeof recoverNewPasswordSchema>;\n\nexport const recoverPhoneSchema = z.object({\n phoneNumber: z.string().min(1),\n});\n\nexport type RecoverPhoneFormData = z.infer<typeof recoverPhoneSchema>;\n\nexport type RecoveryMethod = \"email_link\" | \"email_code\" | \"phone_otp\";\n","\"use client\";\n\nimport {\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@atzentis/ui-shadcn\";\nimport { FormInput, FormPasswordInput, OTPInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { usePhone } from \"../../../hooks/use-phone\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type {\n RecoverEmailFormData,\n RecoverNewPasswordFormData,\n RecoverPhoneFormData,\n RecoveryMethod,\n} from \"../../../schemas/recover-account-schema\";\nimport {\n recoverEmailSchema,\n recoverNewPasswordSchema,\n recoverPhoneSchema,\n} from \"../../../schemas/recover-account-schema\";\nimport type { RecoverAccountFormProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\nimport { maskEmail } from \"../../shared/utils\";\n\nexport function RecoverAccountForm({\n redirectUrl,\n enablePhone = false,\n onSuccess,\n onError,\n resendCooldown = 60,\n className,\n}: RecoverAccountFormProps) {\n const { requestPasswordReset, sendVerificationEmail, verifyEmail, resetPassword } = useAuth();\n const { sendOTP, verify: verifyPhone } = usePhone();\n const { localization, localizeErrors } = useAuthLocalization();\n\n const [step, setStep] = useState<1 | 2 | 3 | 4>(1);\n const [email, setEmail] = useState(\"\");\n const [phoneNumber, setPhoneNumber] = useState(\"\");\n const [selectedMethod, setSelectedMethod] = useState<RecoveryMethod | null>(null);\n const [verificationToken, setVerificationToken] = useState<string | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n const [cooldownRemaining, setCooldownRemaining] = useState(0);\n const codeRef = useRef(\"\");\n\n const emailForm = useForm<RecoverEmailFormData>({\n resolver: zodResolver(recoverEmailSchema),\n defaultValues: { email: \"\" },\n });\n\n const phoneForm = useForm<RecoverPhoneFormData>({\n resolver: zodResolver(recoverPhoneSchema),\n defaultValues: { phoneNumber: \"\" },\n });\n\n const passwordForm = useForm<RecoverNewPasswordFormData>({\n resolver: zodResolver(recoverNewPasswordSchema),\n defaultValues: { newPassword: \"\", confirmPassword: \"\" },\n });\n\n useEffect(() => {\n if (cooldownRemaining <= 0) return;\n\n const timer = setInterval(() => {\n setCooldownRemaining((prev) => Math.max(0, prev - 1));\n }, 1000);\n\n return () => clearInterval(timer);\n }, [cooldownRemaining]);\n\n const getTotalSteps = useCallback(() => {\n if (selectedMethod === \"email_link\") return 3;\n return 4;\n }, [selectedMethod]);\n\n const handleGoBack = useCallback(() => {\n if (step === 2) {\n setStep(1);\n setSelectedMethod(null);\n } else if (step === 3) {\n setStep(2);\n codeRef.current = \"\";\n } else if (step === 4) {\n setStep(3);\n }\n setFormError(null);\n }, [step]);\n\n const onEmailSubmit = useCallback(async (data: RecoverEmailFormData) => {\n setFormError(null);\n setEmail(data.email);\n setStep(2);\n }, []);\n\n const handleMethodSelect = useCallback(\n async (method: RecoveryMethod) => {\n setFormError(null);\n setIsSubmitting(true);\n setSelectedMethod(method);\n\n try {\n if (method === \"email_link\") {\n await requestPasswordReset({ email, redirectUrl });\n setCooldownRemaining(resendCooldown);\n setStep(3);\n } else if (method === \"email_code\") {\n await sendVerificationEmail({ email, redirectUrl });\n setCooldownRemaining(resendCooldown);\n setStep(3);\n } else if (method === \"phone_otp\") {\n setStep(3);\n }\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [\n email,\n redirectUrl,\n resendCooldown,\n requestPasswordReset,\n sendVerificationEmail,\n onError,\n localization,\n localizeErrors,\n ],\n );\n\n const handleResendEmailLink = useCallback(async () => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await requestPasswordReset({ email, redirectUrl });\n setCooldownRemaining(resendCooldown);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n } finally {\n setIsSubmitting(false);\n }\n }, [email, redirectUrl, resendCooldown, requestPasswordReset, localization, localizeErrors]);\n\n const handleResendEmailCode = useCallback(async () => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await sendVerificationEmail({ email, redirectUrl });\n setCooldownRemaining(resendCooldown);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n } finally {\n setIsSubmitting(false);\n }\n }, [email, redirectUrl, resendCooldown, sendVerificationEmail, localization, localizeErrors]);\n\n const handleResendPhoneOTP = useCallback(async () => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await sendOTP(phoneNumber);\n setCooldownRemaining(resendCooldown);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n } finally {\n setIsSubmitting(false);\n }\n }, [phoneNumber, resendCooldown, sendOTP, localization, localizeErrors]);\n\n const onPhoneSubmit = useCallback(\n async (data: RecoverPhoneFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n setPhoneNumber(data.phoneNumber);\n await sendOTP(data.phoneNumber);\n setCooldownRemaining(resendCooldown);\n setFormError(null);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [sendOTP, resendCooldown, onError, localization, localizeErrors],\n );\n\n const handleVerifyEmailCode = useCallback(\n async (code: string) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await verifyEmail({ token: code });\n setVerificationToken(code);\n setStep(4);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [verifyEmail, onError, localization, localizeErrors],\n );\n\n const handleVerifyPhoneCode = useCallback(\n async (code: string) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await verifyPhone(phoneNumber, code);\n setVerificationToken(code);\n setStep(4);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [verifyPhone, phoneNumber, onError, localization, localizeErrors],\n );\n\n const handleOtpComplete = useCallback(\n (code: string) => {\n codeRef.current = code;\n if (selectedMethod === \"email_code\") {\n handleVerifyEmailCode(code);\n } else if (selectedMethod === \"phone_otp\") {\n handleVerifyPhoneCode(code);\n }\n },\n [selectedMethod, handleVerifyEmailCode, handleVerifyPhoneCode],\n );\n\n const handleManualVerify = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n if (codeRef.current) {\n if (selectedMethod === \"email_code\") {\n handleVerifyEmailCode(codeRef.current);\n } else if (selectedMethod === \"phone_otp\") {\n handleVerifyPhoneCode(codeRef.current);\n }\n }\n },\n [selectedMethod, handleVerifyEmailCode, handleVerifyPhoneCode],\n );\n\n const onPasswordSubmit = useCallback(\n async (data: RecoverNewPasswordFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n const token = verificationToken ?? \"\";\n await resetPassword({ token, newPassword: data.newPassword });\n onSuccess?.();\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [verificationToken, resetPassword, onSuccess, onError, localization, localizeErrors],\n );\n\n if (step === 1) {\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.RECOVER_ACCOUNT}</CardTitle>\n <CardDescription>{localization.RECOVER_ACCOUNT_DESCRIPTION}</CardDescription>\n </CardHeader>\n <CardContent>\n <form onSubmit={emailForm.handleSubmit(onEmailSubmit)} className=\"space-y-4\">\n <FormInput\n label={localization.EMAIL}\n id=\"recover-email\"\n type=\"email\"\n autoComplete=\"email\"\n error={emailForm.formState.errors.email?.message}\n disabled={isSubmitting}\n {...emailForm.register(\"email\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.LOADING}\n actionLabel={localization.CONTINUE}\n />\n </form>\n </CardContent>\n </Card>\n );\n }\n\n if (step === 2) {\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.SELECT_RECOVERY_METHOD}</CardTitle>\n <CardDescription>\n {localization.STEP_OF.replace(\"{{current}}\", \"2\").replace(\n \"{{total}}\",\n String(getTotalSteps()),\n )}\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <button\n type=\"button\"\n onClick={() => handleMethodSelect(\"email_link\")}\n disabled={isSubmitting}\n className=\"w-full p-4 text-left border rounded-lg hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n >\n <div className=\"space-y-1\">\n <div className=\"font-medium\">{localization.RESET_VIA_EMAIL}</div>\n <div className=\"text-sm text-gray-500\">{localization.FORGOT_PASSWORD_EMAIL}</div>\n </div>\n </button>\n\n <button\n type=\"button\"\n onClick={() => handleMethodSelect(\"email_code\")}\n disabled={isSubmitting}\n className=\"w-full p-4 text-left border rounded-lg hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n >\n <div className=\"space-y-1\">\n <div className=\"font-medium\">{localization.VERIFY_WITH_CODE}</div>\n <div className=\"text-sm text-gray-500\">{localization.EMAIL_OTP_DESCRIPTION}</div>\n </div>\n </button>\n\n {enablePhone && (\n <button\n type=\"button\"\n onClick={() => handleMethodSelect(\"phone_otp\")}\n disabled={isSubmitting}\n className=\"w-full p-4 text-left border rounded-lg hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n >\n <div className=\"space-y-1\">\n <div className=\"font-medium\">{localization.VERIFY_VIA_PHONE}</div>\n <div className=\"text-sm text-gray-500\">\n {localization.SENDING_VERIFICATION_CODE}\n </div>\n </div>\n </button>\n )}\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <Button type=\"button\" variant=\"ghost\" onClick={handleGoBack} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n </CardContent>\n </Card>\n );\n }\n\n if (step === 3) {\n if (selectedMethod === \"email_link\") {\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.CHECK_YOUR_EMAIL}</CardTitle>\n <CardDescription>\n {localization.STEP_OF.replace(\"{{current}}\", \"3\").replace(\n \"{{total}}\",\n String(getTotalSteps()),\n )}\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"text-center space-y-2\">\n <p className=\"text-sm\">{localization.FORGOT_PASSWORD_EMAIL}</p>\n <p className=\"text-sm font-medium\">{maskEmail(email)}</p>\n </div>\n\n <div className=\"space-y-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={isSubmitting || cooldownRemaining > 0}\n onClick={handleResendEmailLink}\n className=\"w-full\"\n >\n {cooldownRemaining > 0\n ? localization.RESEND_IN.replace(\"{{seconds}}\", String(cooldownRemaining))\n : isSubmitting\n ? localization.RESENDING\n : localization.RESEND}\n </Button>\n\n <Button type=\"button\" variant=\"ghost\" onClick={handleGoBack} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n </div>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600 text-center\">\n {formError}\n </div>\n )}\n </CardContent>\n </Card>\n );\n }\n\n if (selectedMethod === \"email_code\") {\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.EMAIL_OTP}</CardTitle>\n <CardDescription>\n {localization.STEP_OF.replace(\"{{current}}\", \"3\").replace(\n \"{{total}}\",\n String(getTotalSteps()),\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n <div className=\"text-center space-y-2\">\n <p className=\"text-sm\">\n {localization.EMAIL_OTP_SENT} <strong>{maskEmail(email)}</strong>\n </p>\n </div>\n\n <form onSubmit={handleManualVerify} className=\"space-y-4\">\n {/* biome-ignore lint/a11y/noLabelWithoutControl: OTPInput renders its own input cells */}\n <label className=\"block text-sm font-medium\">\n {localization.ENTER_VERIFICATION_CODE}\n <OTPInput\n length={6}\n onComplete={handleOtpComplete}\n disabled={isSubmitting}\n className=\"mt-2\"\n />\n </label>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.VERIFYING}\n actionLabel={localization.VERIFY}\n />\n\n <div className=\"space-y-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={isSubmitting || cooldownRemaining > 0}\n onClick={handleResendEmailCode}\n className=\"w-full\"\n >\n {cooldownRemaining > 0\n ? localization.RESEND_IN.replace(\"{{seconds}}\", String(cooldownRemaining))\n : isSubmitting\n ? localization.RESENDING\n : localization.RESEND}\n </Button>\n\n <Button type=\"button\" variant=\"ghost\" onClick={handleGoBack} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n </div>\n </form>\n </div>\n </CardContent>\n </Card>\n );\n }\n\n if (selectedMethod === \"phone_otp\") {\n if (!phoneNumber) {\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.VERIFY_VIA_PHONE}</CardTitle>\n <CardDescription>\n {localization.STEP_OF.replace(\"{{current}}\", \"3\").replace(\n \"{{total}}\",\n String(getTotalSteps()),\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <form onSubmit={phoneForm.handleSubmit(onPhoneSubmit)} className=\"space-y-4\">\n <FormInput\n label={localization.PHONE_NUMBER_PLACEHOLDER}\n id=\"recover-phone\"\n type=\"tel\"\n autoComplete=\"tel\"\n error={phoneForm.formState.errors.phoneNumber?.message}\n disabled={isSubmitting}\n {...phoneForm.register(\"phoneNumber\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.SENDING_VERIFICATION_CODE}\n actionLabel={localization.SEND_VERIFICATION_CODE}\n />\n\n <Button type=\"button\" variant=\"ghost\" onClick={handleGoBack} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n </form>\n </CardContent>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.ONE_TIME_PASSWORD}</CardTitle>\n <CardDescription>\n {localization.STEP_OF.replace(\"{{current}}\", \"3\").replace(\n \"{{total}}\",\n String(getTotalSteps()),\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n <div className=\"text-center space-y-2\">\n <p className=\"text-sm\">\n {localization.EMAIL_OTP_SENT} <strong>{phoneNumber}</strong>\n </p>\n </div>\n\n <form onSubmit={handleManualVerify} className=\"space-y-4\">\n {/* biome-ignore lint/a11y/noLabelWithoutControl: OTPInput renders its own input cells */}\n <label className=\"block text-sm font-medium\">\n {localization.ENTER_VERIFICATION_CODE}\n <OTPInput\n length={6}\n onComplete={handleOtpComplete}\n disabled={isSubmitting}\n className=\"mt-2\"\n />\n </label>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.VERIFYING}\n actionLabel={localization.VERIFY}\n />\n\n <div className=\"space-y-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={isSubmitting || cooldownRemaining > 0}\n onClick={handleResendPhoneOTP}\n className=\"w-full\"\n >\n {cooldownRemaining > 0\n ? localization.RESEND_IN.replace(\"{{seconds}}\", String(cooldownRemaining))\n : isSubmitting\n ? localization.RESENDING\n : localization.RESEND}\n </Button>\n\n <Button type=\"button\" variant=\"ghost\" onClick={handleGoBack} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n </div>\n </form>\n </div>\n </CardContent>\n </Card>\n );\n }\n }\n\n if (step === 4) {\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.RESET_PASSWORD}</CardTitle>\n <CardDescription>\n {localization.STEP_OF.replace(\"{{current}}\", \"4\").replace(\n \"{{total}}\",\n String(getTotalSteps()),\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <form onSubmit={passwordForm.handleSubmit(onPasswordSubmit)} className=\"space-y-4\">\n <FormPasswordInput\n label={localization.NEW_PASSWORD}\n id=\"new-password\"\n autoComplete=\"new-password\"\n error={passwordForm.formState.errors.newPassword?.message}\n disabled={isSubmitting}\n {...passwordForm.register(\"newPassword\")}\n />\n\n <FormPasswordInput\n label={localization.CONFIRM_NEW_PASSWORD}\n id=\"confirm-password\"\n autoComplete=\"new-password\"\n error={passwordForm.formState.errors.confirmPassword?.message}\n disabled={isSubmitting}\n {...passwordForm.register(\"confirmPassword\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.LOADING}\n actionLabel={localization.RESET_PASSWORD_ACTION}\n />\n\n <Button type=\"button\" variant=\"ghost\" onClick={handleGoBack} className=\"w-full\">\n {localization.GO_BACK}\n </Button>\n </form>\n </CardContent>\n </Card>\n );\n }\n\n return null;\n}\n","import { z } from \"zod\";\n\nexport const resetPasswordSchema = z\n .object({\n newPassword: z.string().min(8),\n confirmPassword: z.string().min(1),\n })\n .refine((data) => data.newPassword === data.confirmPassword, {\n message: \"PASSWORDS_DO_NOT_MATCH\",\n path: [\"confirmPassword\"],\n });\n\nexport type ResetPasswordFormData = z.infer<typeof resetPasswordSchema>;\n","\"use client\";\n\nimport { Card } from \"@atzentis/ui-shadcn\";\nimport { FormPasswordInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { ResetPasswordFormData } from \"../../../schemas/reset-password-schema\";\nimport { resetPasswordSchema } from \"../../../schemas/reset-password-schema\";\nimport type { ResetPasswordFormProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\n\nexport function ResetPasswordForm({\n token,\n onSuccess,\n onError,\n className,\n}: ResetPasswordFormProps) {\n const { resetPassword } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [isSuccess, setIsSuccess] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<ResetPasswordFormData>({\n resolver: zodResolver(resetPasswordSchema),\n defaultValues: { newPassword: \"\", confirmPassword: \"\" },\n });\n\n const onSubmit = useCallback(\n async (data: ResetPasswordFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await resetPassword({ token, newPassword: data.newPassword });\n setIsSuccess(true);\n onSuccess?.();\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [resetPassword, token, onSuccess, onError, localization, localizeErrors],\n );\n\n if (isSuccess) {\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4 text-center\">\n <h2 className=\"text-lg font-semibold\">{localization.RESET_PASSWORD_SUCCESS}</h2>\n <p className=\"text-sm text-gray-500\">{localization.RESET_PASSWORD_SUCCESS}</p>\n </div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n <div className=\"text-center space-y-2\">\n <h2 className=\"text-lg font-semibold\">{localization.RESET_PASSWORD}</h2>\n <p className=\"text-sm text-gray-500\">{localization.CHANGE_PASSWORD_DESCRIPTION}</p>\n </div>\n\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-4\">\n <FormPasswordInput\n label={localization.NEW_PASSWORD}\n id=\"reset-password-new\"\n autoComplete=\"new-password\"\n error={errors.newPassword?.message}\n disabled={isSubmitting}\n {...register(\"newPassword\")}\n />\n\n <FormPasswordInput\n label={localization.CONFIRM_NEW_PASSWORD}\n id=\"reset-password-confirm\"\n autoComplete=\"new-password\"\n error={\n errors.confirmPassword?.message === \"PASSWORDS_DO_NOT_MATCH\"\n ? localization.PASSWORDS_DO_NOT_MATCH || \"Passwords do not match\"\n : errors.confirmPassword?.message\n }\n disabled={isSubmitting}\n {...register(\"confirmPassword\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.LOADING}\n actionLabel={localization.RESET_PASSWORD_ACTION}\n />\n </form>\n </div>\n </Card>\n );\n}\n","import { z } from \"zod\";\n\nexport const signupSchema = z.object({\n email: z.string().email(\"Invalid email address\"),\n password: z.string().min(8, \"Password must be at least 8 characters\"),\n name: z.string().min(1, \"Name is required\"),\n username: z.string().optional(),\n phoneNumber: z.string().optional(),\n organizationName: z.string().optional(),\n acceptTerms: z.boolean(),\n captchaToken: z.string().optional(),\n});\nexport type SignupFormData = z.infer<typeof signupSchema>;\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput, FormPasswordInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { SignupFormData } from \"../../../schemas/signup-schema\";\nimport { signupSchema } from \"../../../schemas/signup-schema\";\nimport type { SignupFormProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\n\nexport function SignupForm({\n onSuccess,\n onError,\n showUsernameField = false,\n showPhoneField = false,\n organizationName,\n acceptTermsRequired = false,\n onLoginClick,\n className,\n}: SignupFormProps) {\n const { signup } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [formError, setFormError] = useState<string | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<SignupFormData>({\n resolver: zodResolver(\n acceptTermsRequired\n ? signupSchema.refine((data) => data.acceptTerms === true, {\n message: localization.ACCEPT_TERMS_ERROR,\n path: [\"acceptTerms\"],\n })\n : signupSchema,\n ),\n defaultValues: {\n email: \"\",\n password: \"\",\n name: \"\",\n username: \"\",\n phoneNumber: \"\",\n organizationName: organizationName ?? \"\",\n acceptTerms: false,\n },\n });\n\n const onSubmit = useCallback(\n async (data: SignupFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n const response = await signup({\n email: data.email,\n password: data.password,\n name: data.name,\n username: data.username,\n organizationName: data.organizationName,\n acceptTerms: data.acceptTerms,\n });\n onSuccess(response.user);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [signup, onSuccess, onError, localization, localizeErrors],\n );\n\n return (\n <Card className={className}>\n <form onSubmit={handleSubmit(onSubmit)} className=\"p-6 space-y-4\">\n <FormInput\n label={localization.NAME}\n id=\"signup-name\"\n type=\"text\"\n autoComplete=\"name\"\n error={errors.name?.message}\n {...register(\"name\")}\n />\n\n <FormInput\n label={localization.EMAIL}\n id=\"signup-email\"\n type=\"email\"\n autoComplete=\"email\"\n error={errors.email?.message}\n {...register(\"email\")}\n />\n\n <FormPasswordInput\n label={localization.PASSWORD}\n id=\"signup-password\"\n autoComplete=\"new-password\"\n error={errors.password?.message}\n {...register(\"password\")}\n />\n\n {showUsernameField && (\n <FormInput\n label={localization.USERNAME}\n id=\"signup-username\"\n type=\"text\"\n autoComplete=\"username\"\n error={errors.username?.message}\n {...register(\"username\")}\n />\n )}\n\n {showPhoneField && (\n <FormInput\n label={localization.PHONE_NUMBER_PLACEHOLDER}\n id=\"signup-phone\"\n type=\"tel\"\n autoComplete=\"tel\"\n error={errors.phoneNumber?.message}\n {...register(\"phoneNumber\")}\n />\n )}\n\n {acceptTermsRequired && (\n <div className=\"flex items-center gap-2\">\n <input\n id=\"signup-terms\"\n type=\"checkbox\"\n aria-invalid={errors.acceptTerms ? true : undefined}\n {...register(\"acceptTerms\")}\n />\n <label htmlFor=\"signup-terms\" className=\"text-sm\">\n {localization.ACCEPT_TERMS}\n </label>\n {errors.acceptTerms && (\n <p className=\"text-sm text-red-600\">{errors.acceptTerms.message}</p>\n )}\n </div>\n )}\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.SIGNING_IN}\n actionLabel={localization.SIGN_UP_ACTION}\n />\n\n {onLoginClick && (\n <p className=\"text-sm text-center\">\n {localization.ALREADY_HAVE_AN_ACCOUNT}{\" \"}\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto text-sm\"\n onClick={onLoginClick}\n >\n {localization.SIGN_IN}\n </Button>\n </p>\n )}\n </form>\n </Card>\n );\n}\n","import { z } from \"zod\";\n\nexport const totpSchema = z.object({\n code: z\n .string()\n .length(6)\n .regex(/^\\d{6}$/),\n});\n\nexport type TotpFormData = z.infer<typeof totpSchema>;\n\nexport const backupCodeSchema = z.object({\n backupCode: z.string().min(1),\n});\n\nexport type BackupCodeFormData = z.infer<typeof backupCodeSchema>;\n","\"use client\";\n\nimport {\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@atzentis/ui-shadcn\";\nimport { FormInput, OTPInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useRef, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { BackupCodeFormData } from \"../../../schemas/two-factor-schema\";\nimport { backupCodeSchema } from \"../../../schemas/two-factor-schema\";\nimport type { TwoFactorFormProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\n\nexport function TwoFactorForm({\n onVerify,\n onError,\n autoSubmit = true,\n isLoading,\n className,\n}: TwoFactorFormProps) {\n const { localization, localizeErrors } = useAuthLocalization();\n const [mode, setMode] = useState<\"totp\" | \"backup\">(\"totp\");\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n const codeRef = useRef(\"\");\n\n const loading = isLoading ?? isSubmitting;\n\n const backupForm = useForm<BackupCodeFormData>({\n resolver: zodResolver(backupCodeSchema),\n defaultValues: { backupCode: \"\" },\n });\n\n const handleVerify = useCallback(\n async (code: string) => {\n setIsSubmitting(true);\n setFormError(null);\n try {\n await onVerify(code);\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [onVerify, onError, localization, localizeErrors],\n );\n\n const handleOtpComplete = useCallback(\n (code: string) => {\n codeRef.current = code;\n if (autoSubmit) {\n handleVerify(code);\n }\n },\n [autoSubmit, handleVerify],\n );\n\n const handleManualVerify = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n if (codeRef.current) {\n handleVerify(codeRef.current);\n }\n },\n [handleVerify],\n );\n\n const handleBackupSubmit = useCallback(\n async (data: BackupCodeFormData) => {\n await handleVerify(data.backupCode);\n },\n [handleVerify],\n );\n\n return (\n <Card className={className}>\n <CardHeader>\n <CardTitle>{localization.TWO_FACTOR_PROMPT}</CardTitle>\n <CardDescription>\n {mode === \"totp\" ? localization.ENTER_TOTP_CODE : localization.BACKUP_CODES}\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {mode === \"totp\" && (\n <form onSubmit={handleManualVerify} className=\"space-y-4\">\n {/* biome-ignore lint/a11y/noLabelWithoutControl: OTPInput renders its own input cells */}\n <label className=\"block text-sm font-medium\">\n {localization.VERIFICATION_CODE_LABEL}\n <OTPInput\n length={6}\n onComplete={handleOtpComplete}\n disabled={loading}\n className=\"mt-2\"\n />\n </label>\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={loading}\n loadingLabel={localization.VERIFYING}\n actionLabel={localization.TWO_FACTOR_ACTION}\n />\n\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto text-sm\"\n onClick={() => setMode(\"backup\")}\n disabled={loading}\n >\n {localization.USE_BACKUP_CODE}\n </Button>\n </form>\n )}\n\n {mode === \"backup\" && (\n <form onSubmit={backupForm.handleSubmit(handleBackupSubmit)} className=\"space-y-4\">\n <FormInput\n label={localization.BACKUP_CODE_PLACEHOLDER}\n id=\"backup-code\"\n error={backupForm.formState.errors.backupCode?.message}\n disabled={loading}\n {...backupForm.register(\"backupCode\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={loading}\n loadingLabel={localization.VERIFYING}\n actionLabel={localization.VERIFY}\n />\n\n <Button\n variant=\"link\"\n type=\"button\"\n className=\"p-0 h-auto text-sm\"\n onClick={() => setMode(\"totp\")}\n disabled={loading}\n >\n {localization.USE_AUTHENTICATOR}\n </Button>\n </form>\n )}\n </CardContent>\n </Card>\n );\n}\n","\"use client\";\n\nimport type { User } from \"@atzentis/auth-sdk\";\nimport { useMemo } from \"react\";\nimport type { AuthViewProps } from \"../../types/components\";\nimport { authViewPaths } from \"./auth-view-paths\";\nimport { EmailOTPForm } from \"./forms/email-otp\";\nimport { EmailVerificationForm } from \"./forms/email-verification\";\nimport { ForgotPasswordForm } from \"./forms/forgot-password\";\nimport { LoginForm } from \"./forms/login\";\nimport { RecoverAccountForm } from \"./forms/recover-account\";\nimport { ResetPasswordForm } from \"./forms/reset-password\";\nimport { SignupForm } from \"./forms/signup\";\nimport { TwoFactorForm } from \"./forms/two-factor\";\n\n/**\n * AuthView — Pathname-based router for auth flows.\n * Renders the appropriate auth form component based on the pathname prop.\n *\n * @example\n * // Next.js App Router:\n * import { AuthView } from \"@atzentis/auth-react\";\n *\n * export default function AuthPage({ params, searchParams }) {\n * const pathname = `/${params.slug?.join(\"/\") || \"\"}`;\n * return <AuthView pathname={pathname} searchParams={searchParams} />;\n * }\n *\n * @example\n * // Custom path mapping:\n * <AuthView\n * pathname=\"/login\"\n * paths={{ \"/sign-in\": \"/login\", \"/sign-up\": \"/register\" }}\n * onSuccess={(user) => router.push(\"/dashboard\")}\n * />\n */\nexport function AuthView({\n pathname,\n paths,\n fallback = null,\n searchParams,\n getSearchParam,\n onSuccess,\n onError,\n enablePhone,\n oauthProviders,\n oauthRedirectUri,\n redirectUrl,\n className,\n}: AuthViewProps) {\n // Merge default paths with consumer overrides\n const resolvedPaths = useMemo(() => {\n return { ...authViewPaths, ...paths };\n }, [paths]);\n\n // Helper to extract search params\n const getParam = (key: string): string | undefined => {\n if (searchParams) {\n return searchParams[key];\n }\n if (getSearchParam) {\n return getSearchParam(key);\n }\n return undefined;\n };\n\n // Reverse lookup: find which AuthViewPath maps to this pathname\n const matchedPath = Object.entries(resolvedPaths).find(\n ([, mappedPath]) => mappedPath === pathname,\n )?.[0];\n\n // Render matched component\n switch (matchedPath) {\n case \"/sign-in\": {\n // LoginForm expects OAuthProvider[] when oauthProviders is passed\n if (oauthProviders && oauthRedirectUri) {\n return (\n <LoginForm\n onSuccess={(user) => onSuccess?.(user)}\n onError={onError}\n enablePhone={enablePhone}\n oauthProviders={oauthProviders}\n oauthRedirectUri={oauthRedirectUri}\n className={className}\n />\n );\n }\n return (\n <LoginForm\n onSuccess={(user) => onSuccess?.(user)}\n onError={onError}\n enablePhone={enablePhone}\n className={className}\n />\n );\n }\n\n case \"/sign-up\": {\n return (\n <SignupForm\n onSuccess={(user) => onSuccess?.(user)}\n onError={onError}\n className={className}\n />\n );\n }\n\n case \"/forgot-password\": {\n if (!redirectUrl) {\n throw new Error(\"AuthView: redirectUrl is required for /forgot-password\");\n }\n return (\n <ForgotPasswordForm\n redirectUrl={redirectUrl}\n onSuccess={() => onSuccess?.()}\n onError={onError}\n className={className}\n />\n );\n }\n\n case \"/reset-password\": {\n const token = getParam(\"token\");\n if (!token) {\n throw new Error(\"AuthView: token query param is required for /reset-password\");\n }\n return (\n <ResetPasswordForm\n token={token}\n onSuccess={() => onSuccess?.()}\n onError={onError}\n className={className}\n />\n );\n }\n\n case \"/verify-email\": {\n if (!redirectUrl) {\n throw new Error(\"AuthView: redirectUrl is required for /verify-email\");\n }\n const token = getParam(\"token\");\n const email = getParam(\"email\");\n return (\n <EmailVerificationForm\n token={token}\n email={email}\n redirectUrl={redirectUrl}\n onSuccess={(user: User) => onSuccess?.(user)}\n onError={onError}\n className={className}\n />\n );\n }\n\n case \"/email-otp\": {\n if (!redirectUrl) {\n throw new Error(\"AuthView: redirectUrl is required for /email-otp\");\n }\n return (\n <EmailOTPForm\n redirectUrl={redirectUrl}\n onSuccess={(user: User) => onSuccess?.(user)}\n onError={onError}\n className={className}\n />\n );\n }\n\n case \"/recover-account\": {\n if (!redirectUrl) {\n throw new Error(\"AuthView: redirectUrl is required for /recover-account\");\n }\n return (\n <RecoverAccountForm\n redirectUrl={redirectUrl}\n enablePhone={enablePhone}\n onSuccess={() => onSuccess?.()}\n onError={onError}\n className={className}\n />\n );\n }\n\n case \"/two-factor\": {\n return (\n <TwoFactorForm\n onVerify={() => {\n // Map onVerify to onSuccess for consistency\n onSuccess?.();\n }}\n onError={onError}\n className={className}\n />\n );\n }\n\n default: {\n // No match — render fallback\n return <>{fallback}</>;\n }\n }\n}\n","import { z } from \"zod\";\n\nexport const magicLinkSchema = z.object({\n email: z.string().email(\"Invalid email address\"),\n});\nexport type MagicLinkFormData = z.infer<typeof magicLinkSchema>;\n","\"use client\";\n\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { FormInput } from \"@atzentis/ui-shared\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useCallback, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { toAuthError } from \"../../../helpers/to-auth-error\";\nimport { useAuth } from \"../../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../../hooks/use-auth-localization\";\nimport { getLocalizedError } from \"../../../localization\";\nimport type { MagicLinkFormData } from \"../../../schemas/magic-link-schema\";\nimport { magicLinkSchema } from \"../../../schemas/magic-link-schema\";\nimport type { MagicLinkFormProps } from \"../../../types/components\";\nimport { SubmitButton } from \"../../shared/submit-button\";\nimport { maskEmail } from \"../../shared/utils\";\n\nexport function MagicLinkForm({ redirectUrl, onSuccess, onError, className }: MagicLinkFormProps) {\n const { sendMagicLink } = useAuth();\n const { localization, localizeErrors } = useAuthLocalization();\n const [sent, setSent] = useState(false);\n const [sentEmail, setSentEmail] = useState(\"\");\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [formError, setFormError] = useState<string | null>(null);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n getValues,\n } = useForm<MagicLinkFormData>({\n resolver: zodResolver(magicLinkSchema),\n defaultValues: { email: \"\" },\n });\n\n const onSubmit = useCallback(\n async (data: MagicLinkFormData) => {\n setFormError(null);\n setIsSubmitting(true);\n try {\n await sendMagicLink({ email: data.email, redirectUrl });\n setSent(true);\n setSentEmail(data.email);\n onSuccess?.();\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n onError?.(toAuthError(err));\n } finally {\n setIsSubmitting(false);\n }\n },\n [sendMagicLink, redirectUrl, onSuccess, onError, localization, localizeErrors],\n );\n\n const handleResend = useCallback(async () => {\n const email = getValues(\"email\");\n setFormError(null);\n setIsSubmitting(true);\n try {\n await sendMagicLink({ email, redirectUrl });\n } catch (err) {\n setFormError(getLocalizedError(err, localization, localizeErrors));\n } finally {\n setIsSubmitting(false);\n }\n }, [sendMagicLink, redirectUrl, getValues, localization, localizeErrors]);\n\n if (sent) {\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4 text-center\">\n <p className=\"text-sm\">\n {localization.MAGIC_LINK_EMAIL} <strong>{maskEmail(sentEmail)}</strong>\n </p>\n <p className=\"text-sm text-gray-500\">{localization.MAGIC_LINK_HINT}</p>\n <Button type=\"button\" variant=\"outline\" disabled={isSubmitting} onClick={handleResend}>\n {isSubmitting ? localization.RESENDING : localization.RESEND}\n </Button>\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n </div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <form onSubmit={handleSubmit(onSubmit)} className=\"p-6 space-y-4\">\n <FormInput\n label={localization.EMAIL}\n id=\"magic-link-email\"\n type=\"email\"\n autoComplete=\"email\"\n error={errors.email?.message}\n {...register(\"email\")}\n />\n\n {formError && (\n <div aria-live=\"polite\" className=\"text-sm text-red-600\">\n {formError}\n </div>\n )}\n\n <SubmitButton\n loading={isSubmitting}\n loadingLabel={localization.SENDING}\n actionLabel={localization.MAGIC_LINK_ACTION}\n />\n </form>\n </Card>\n );\n}\n","\"use client\";\n\nimport type { Device } from \"@atzentis/auth-sdk\";\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { useCallback, useEffect } from \"react\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { useDevices } from \"../../hooks/use-devices\";\nimport type { DeviceListProps } from \"../../types/components\";\n\nconst DEFAULT_DEVICE_ICONS: Record<string, string> = {\n mobile: \"\\u{1F4F1}\",\n desktop: \"\\u{1F4BB}\",\n tablet: \"\\u{1F4DF}\",\n};\n\nexport function DeviceList({\n showTrustToggle = false,\n showRemoveAction = false,\n onDeviceTrusted,\n onDeviceUntrusted,\n onDeviceRemoved,\n renderDeviceIcon,\n className,\n}: DeviceListProps) {\n const { devices, isLoading, error, refresh, trustDevice, untrustDevice, removeDevice } =\n useDevices();\n const { localization } = useAuthLocalization();\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n const handleTrustToggle = useCallback(\n async (device: Device) => {\n if (device.isTrusted) {\n await untrustDevice(device.id);\n onDeviceUntrusted?.(device);\n } else {\n await trustDevice(device.id);\n onDeviceTrusted?.(device);\n }\n },\n [trustDevice, untrustDevice, onDeviceTrusted, onDeviceUntrusted],\n );\n\n const handleRemove = useCallback(\n async (device: Device) => {\n await removeDevice(device.id);\n onDeviceRemoved?.(device);\n },\n [removeDevice, onDeviceRemoved],\n );\n\n if (isLoading && devices.length === 0) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-gray-500\">{localization.LOADING_DEVICES}</div>\n </Card>\n );\n }\n\n if (error) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-red-600\">{error.message}</div>\n </Card>\n );\n }\n\n if (devices.length === 0) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-gray-500\">{localization.NO_DEVICES}</div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n {devices.map((device) => (\n <div\n key={device.id}\n className=\"flex items-start justify-between gap-4 rounded border p-4\"\n >\n <div className=\"flex items-start gap-3\">\n <span className=\"text-2xl\">\n {renderDeviceIcon\n ? renderDeviceIcon(device)\n : (DEFAULT_DEVICE_ICONS[device.deviceType] ?? \"\\u{1F4BB}\")}\n </span>\n <div>\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium\">{device.name}</span>\n {device.isCurrent && (\n <span className=\"rounded bg-blue-100 px-2 py-0.5 text-xs text-blue-700\">\n {localization.CURRENT_DEVICE}\n </span>\n )}\n </div>\n <p className=\"text-sm text-gray-500\">\n {device.browser} &middot; {device.os}\n </p>\n {(device.lastCity || device.lastCountry) && (\n <p className=\"text-sm text-gray-500\">\n {[device.lastCity, device.lastCountry].filter(Boolean).join(\", \")}\n </p>\n )}\n <p className=\"text-xs text-gray-400\">\n {localization.LAST_USED} {device.lastUsedAt} &middot; {localization.IP_LABEL}{\" \"}\n {device.lastIp}\n </p>\n </div>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {showTrustToggle && (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleTrustToggle(device)}\n >\n {device.isTrusted ? localization.UNTRUST_DEVICE : localization.TRUST_DEVICE}\n </Button>\n )}\n {showRemoveAction && (\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n disabled={device.isCurrent}\n onClick={() => handleRemove(device)}\n >\n {localization.REMOVE}\n </Button>\n )}\n </div>\n </div>\n ))}\n </div>\n </Card>\n );\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { useSession } from \"../../hooks/use-session\";\nimport type { LoadingBoundaryProps } from \"../../types/components\";\n\nexport function LoadingBoundary({\n children,\n spinner = <div>Loading...</div>,\n delay = 0,\n className,\n}: LoadingBoundaryProps) {\n const { isLoading } = useSession();\n const [showSpinner, setShowSpinner] = useState(delay === 0 && isLoading);\n\n useEffect(() => {\n if (!isLoading) {\n setShowSpinner(false);\n return;\n }\n\n if (delay === 0) {\n setShowSpinner(true);\n return;\n }\n\n const timer = setTimeout(() => {\n setShowSpinner(true);\n }, delay);\n\n return () => clearTimeout(timer);\n }, [isLoading, delay]);\n\n if (isLoading && showSpinner) {\n return className ? <div className={className}>{spinner}</div> : <>{spinner}</>;\n }\n\n if (isLoading) {\n return null;\n }\n\n return <>{children}</>;\n}\n","export type RiskLevel = \"low\" | \"medium\" | \"high\";\n\nexport function getRiskLevel(score: number): RiskLevel {\n if (score < 30) return \"low\";\n if (score < 60) return \"medium\";\n return \"high\";\n}\n\nexport const RISK_COLORS: Record<RiskLevel, string> = {\n low: \"text-green-600 bg-green-50\",\n medium: \"text-yellow-600 bg-yellow-50\",\n high: \"text-red-600 bg-red-50\",\n};\n","\"use client\";\n\nimport type { LoginEvent } from \"@atzentis/auth-sdk\";\nimport { Button, Card } from \"@atzentis/ui-shadcn\";\nimport { useCallback, useEffect } from \"react\";\nimport { RISK_COLORS, getRiskLevel } from \"../../helpers/risk-utils\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { useLoginActivity } from \"../../hooks/use-login-activity\";\nimport type { LoginActivityFeedProps } from \"../../types/components\";\n\nexport function LoginActivityFeed({\n limit = 20,\n showRiskBadge = false,\n showReportActions = false,\n filterByStatus,\n onSuspiciousReported,\n className,\n}: LoginActivityFeedProps) {\n const {\n events,\n hasMore,\n isLoading,\n error,\n refresh,\n loadMore,\n filter,\n markRecognized,\n reportSuspicious,\n } = useLoginActivity({ limit });\n const { localization } = useAuthLocalization();\n\n useEffect(() => {\n if (filterByStatus) {\n filter({ status: filterByStatus, limit });\n }\n refresh();\n }, [refresh, filter, filterByStatus, limit]);\n\n const handleMarkRecognized = useCallback(\n async (event: LoginEvent) => {\n await markRecognized(event.id);\n },\n [markRecognized],\n );\n\n const handleReportSuspicious = useCallback(\n async (event: LoginEvent) => {\n await reportSuspicious(event.id);\n onSuspiciousReported?.(event);\n },\n [reportSuspicious, onSuspiciousReported],\n );\n\n if (isLoading && events.length === 0) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-gray-500\">{localization.LOADING_ACTIVITY}</div>\n </Card>\n );\n }\n\n if (error) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-red-600\">{error.message}</div>\n </Card>\n );\n }\n\n if (events.length === 0) {\n return (\n <Card className={className}>\n <div className=\"p-6 text-center text-sm text-gray-500\">{localization.NO_ACTIVITY}</div>\n </Card>\n );\n }\n\n return (\n <Card className={className}>\n <div className=\"p-6 space-y-4\">\n {events.map((event) => {\n const riskLevel = getRiskLevel(event.riskScore);\n return (\n <div\n key={event.id}\n className=\"flex items-start justify-between gap-4 rounded border p-4\"\n >\n <div>\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium\">{event.deviceName}</span>\n <span className=\"rounded bg-gray-100 px-2 py-0.5 text-xs text-gray-600\">\n {event.status}\n </span>\n {showRiskBadge && (\n <span className={`rounded px-2 py-0.5 text-xs ${RISK_COLORS[riskLevel]}`}>\n {riskLevel}\n </span>\n )}\n </div>\n <p className=\"text-sm text-gray-500\">\n {event.method} &middot; {event.ip}\n </p>\n {(event.city || event.country) && (\n <p className=\"text-sm text-gray-500\">\n {[event.city, event.country].filter(Boolean).join(\", \")}\n </p>\n )}\n <p className=\"text-xs text-gray-400\">{event.createdAt}</p>\n </div>\n\n {showReportActions && (\n <div className=\"flex items-center gap-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleMarkRecognized(event)}\n >\n {localization.MARK_RECOGNIZED}\n </Button>\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => handleReportSuspicious(event)}\n >\n {localization.REPORT_SUSPICIOUS}\n </Button>\n </div>\n )}\n </div>\n );\n })}\n\n {hasMore && (\n <div className=\"text-center\">\n <Button type=\"button\" variant=\"outline\" disabled={isLoading} onClick={loadMore}>\n {isLoading ? localization.LOADING : localization.LOAD_MORE}\n </Button>\n </div>\n )}\n </div>\n </Card>\n );\n}\n","\"use client\";\n\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@atzentis/ui-shadcn\";\nimport { useEffect } from \"react\";\nimport { getInitials } from \"../../helpers/initials\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { useOrganizations } from \"../../hooks/use-organizations\";\nimport type { OrganizationMenuProps } from \"../../types/components\";\n\nexport function OrganizationMenu({\n showCreateNew = false,\n currentOrgId,\n onSwitch,\n onCreateNew,\n className,\n}: OrganizationMenuProps) {\n const { organizations, isLoading, refresh } = useOrganizations();\n const { localization } = useAuthLocalization();\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n const currentOrg = organizations.find((o) => o.id === currentOrgId);\n\n return (\n <div className={className}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" disabled={isLoading}>\n {currentOrg ? (\n <span className=\"flex items-center gap-2\">\n {currentOrg.logo ? (\n <img src={currentOrg.logo} alt=\"\" className=\"h-5 w-5 rounded\" />\n ) : (\n <span className=\"flex h-5 w-5 items-center justify-center rounded bg-gray-200 text-xs\">\n {getInitials(currentOrg.name)}\n </span>\n )}\n {currentOrg.name}\n </span>\n ) : (\n localization.SELECT_ORGANIZATION\n )}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {organizations.map((org) => (\n <DropdownMenuItem key={org.id} onClick={() => onSwitch?.(org)}>\n <div className=\"flex items-center gap-2\">\n {org.logo ? (\n <img src={org.logo} alt=\"\" className=\"h-5 w-5 rounded\" />\n ) : (\n <span className=\"flex h-5 w-5 items-center justify-center rounded bg-gray-200 text-xs\">\n {getInitials(org.name)}\n </span>\n )}\n <span>{org.name}</span>\n {org.id === currentOrgId && <span className=\"ml-auto\">{\"\\u2713\"}</span>}\n </div>\n </DropdownMenuItem>\n ))}\n\n {showCreateNew && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={onCreateNew}>\n {localization.CREATE_ORGANIZATION}\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n","\"use client\";\n\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@atzentis/ui-shadcn\";\nimport { useCallback } from \"react\";\nimport { getInitials } from \"../../helpers/initials\";\nimport { useAuth } from \"../../hooks/use-auth\";\nimport { useAuthLocalization } from \"../../hooks/use-auth-localization\";\nimport { useSession } from \"../../hooks/use-session\";\nimport type { UserMenuProps } from \"../../types/components\";\n\nexport function UserMenu({ showOrganization = false, menuItems, className }: UserMenuProps) {\n const { user } = useSession();\n const { logout } = useAuth();\n const { localization } = useAuthLocalization();\n\n const handleSignOut = useCallback(async () => {\n await logout();\n }, [logout]);\n\n if (!user) return null;\n\n return (\n <div className={className}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\">\n <span className=\"flex items-center gap-2\">\n {user.avatar ? (\n <img src={user.avatar} alt=\"\" className=\"h-8 w-8 rounded-full\" />\n ) : (\n <span className=\"flex h-8 w-8 items-center justify-center rounded-full bg-gray-200 text-xs font-medium\">\n {getInitials(user.name)}\n </span>\n )}\n <span className=\"text-sm font-medium\">{user.name}</span>\n </span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuLabel>\n <div>\n <p className=\"text-sm\">{user.email}</p>\n {showOrganization && (\n <p className=\"text-xs text-gray-500\">{localization.ORGANIZATION}</p>\n )}\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n\n {menuItems?.map((item) => (\n <DropdownMenuItem key={item.label} onClick={item.onClick}>\n {item.label}\n </DropdownMenuItem>\n ))}\n\n {menuItems && menuItems.length > 0 && <DropdownMenuSeparator />}\n\n <DropdownMenuItem onClick={handleSignOut}>{localization.SIGN_OUT}</DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n"]}