diff --git a/apps/backend/.env b/apps/backend/.env index 8987705..2708468 100644 --- a/apps/backend/.env +++ b/apps/backend/.env @@ -3,6 +3,8 @@ SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhY SUPABASE_ANON_KEY=sb_publishable_RgMLVBTCTClhK-1Ks_X02Q_Sq1Z1Pq- CORS_ORIGIN=http://localhost:5173,http://127.0.0.1:5173 DATABASE_URL=postgres://super_admin:solotech25@localhost:5432/playzer-dev +BETTER_AUTH_SECRET=767a2e0fb8b58a9f4df3155d88d22ecdc4eaea4447565c2ed518c532f6410598 +BETTER_AUTH_URL=http://localhost:5173 APP_BASE_URL=http://localhost:5173 ONBOARDING_TTL_MINUTES=60 SMTP_HOST=sandbox.smtp.mailtrap.io diff --git a/apps/backend/package.json b/apps/backend/package.json index df95d36..a4de44a 100644 --- a/apps/backend/package.json +++ b/apps/backend/package.json @@ -14,11 +14,15 @@ "prisma:seed:reset:plans": "bun prisma/reset-plans.ts" }, "dependencies": { + "@better-auth/prisma-adapter": "^1.6.2", "@hono/zod-validator": "^0.7.6", "@prisma/adapter-pg": "^7.6.0", "@prisma/client": "^7", "@repo/api-contract": "workspace:*", "@supabase/supabase-js": "2.101.1", + "@types/bcrypt": "^6.0.0", + "bcrypt": "^6.0.0", + "better-auth": "^1.6.2", "dotenv": "^17.4.1", "hono": "4.12.10", "nodemailer": "^8.0.5", diff --git a/apps/backend/prisma/complex.prisma b/apps/backend/prisma/complex.prisma deleted file mode 100644 index 37a285a..0000000 --- a/apps/backend/prisma/complex.prisma +++ /dev/null @@ -1,37 +0,0 @@ -model Complex { - id String @id @db.Uuid - complexName String @map("complex_name") - physicalAddress String? @map("physical_address") @db.VarChar(200) - city String? @map("city") @db.VarChar(100) - state String? @map("state") @db.VarChar(100) - country String? @map("country") @db.VarChar(100) - complexSlug String @unique @map("complex_slug") - adminEmail String @map("admin_email") - planCode String? @map("plan_code") @db.VarChar(10) - createdAt DateTime @default(now()) @map("created_at") - updatedAt DateTime @updatedAt @map("updated_at") - plan Plan? @relation(fields: [planCode], references: [code]) - users ComplexUser[] - courts Court[] - - @@index([planCode]) - @@index([complexSlug]) - @@map("complexes") -} - -enum ComplexUserRole { - ADMIN -} - -model ComplexUser { - complexId String @map("complex_id") @db.Uuid - userId String @map("user_id") @db.Uuid - role ComplexUserRole @default(ADMIN) - createdAt DateTime @default(now()) @map("created_at") - complex Complex @relation(fields: [complexId], references: [id], onDelete: Cascade) - user User @relation(fields: [userId], references: [id], onDelete: Cascade) - - @@id([complexId, userId]) - @@index([userId]) - @@map("complex_users") -} diff --git a/apps/backend/prisma/court.prisma b/apps/backend/prisma/court.prisma deleted file mode 100644 index 75af280..0000000 --- a/apps/backend/prisma/court.prisma +++ /dev/null @@ -1,96 +0,0 @@ -enum DayOfWeek { - MONDAY - TUESDAY - WEDNESDAY - THURSDAY - FRIDAY - SATURDAY - SUNDAY -} - -enum CourtBookingStatus { - CONFIRMED - CANCELLED - COMPLETED -} - -model Sport { - id String @id @db.Uuid - name String @unique - slug String @unique - isActive Boolean @default(true) @map("is_active") - createdAt DateTime @default(now()) @map("created_at") - updatedAt DateTime @updatedAt @map("updated_at") - courts Court[] - - @@map("sports") -} - -model Court { - id String @id @db.Uuid - complexId String @map("complex_id") @db.Uuid - sportId String @map("sport_id") @db.Uuid - name String - slotDurationMinutes Int @map("slot_duration_minutes") - basePrice Decimal @map("base_price") @db.Decimal(19, 2) - createdAt DateTime @default(now()) @map("created_at") - updatedAt DateTime @updatedAt @map("updated_at") - complex Complex @relation(fields: [complexId], references: [id], onDelete: Cascade) - sport Sport @relation(fields: [sportId], references: [id]) - availabilities CourtAvailability[] - priceRules CourtPriceRule[] - bookings CourtBooking[] - - @@index([complexId]) - @@index([sportId]) - @@map("courts") -} - -model CourtAvailability { - id String @id @db.Uuid - courtId String @map("court_id") @db.Uuid - dayOfWeek DayOfWeek @map("day_of_week") - startTime String @map("start_time") @db.VarChar(5) - endTime String @map("end_time") @db.VarChar(5) - createdAt DateTime @default(now()) @map("created_at") - court Court @relation(fields: [courtId], references: [id], onDelete: Cascade) - - @@index([courtId, dayOfWeek]) - @@map("court_availabilities") -} - -model CourtPriceRule { - id String @id @db.Uuid - courtId String @map("court_id") @db.Uuid - dayOfWeek DayOfWeek? @map("day_of_week") - startTime String? @map("start_time") @db.VarChar(5) - endTime String? @map("end_time") @db.VarChar(5) - price Decimal @db.Decimal(19, 2) - isActive Boolean @default(true) @map("is_active") - createdAt DateTime @default(now()) @map("created_at") - updatedAt DateTime @updatedAt @map("updated_at") - court Court @relation(fields: [courtId], references: [id], onDelete: Cascade) - - @@index([courtId, isActive]) - @@map("court_price_rules") -} - -model CourtBooking { - id String @id @db.Uuid - bookingCode String @unique @map("booking_code") @db.VarChar(8) - courtId String @map("court_id") @db.Uuid - bookingDate DateTime @map("booking_date") @db.Date - startTime String @map("start_time") @db.VarChar(5) - endTime String @map("end_time") @db.VarChar(5) - customerName String @map("customer_name") @db.VarChar(120) - customerPhone String @map("customer_phone") @db.VarChar(30) - status CourtBookingStatus @default(CONFIRMED) - createdAt DateTime @default(now()) @map("created_at") - updatedAt DateTime @updatedAt @map("updated_at") - court Court @relation(fields: [courtId], references: [id], onDelete: Cascade) - - @@unique([courtId, bookingDate, startTime]) - @@index([courtId, bookingDate]) - @@index([bookingDate]) - @@map("court_bookings") -} diff --git a/apps/backend/prisma/onboarding.prisma b/apps/backend/prisma/onboarding.prisma deleted file mode 100644 index 13d6d46..0000000 --- a/apps/backend/prisma/onboarding.prisma +++ /dev/null @@ -1,18 +0,0 @@ -model OnboardingRequest { - id String @id @db.Uuid - fullName String @map("full_name") - email String - otpHash String @map("otp_hash") - otpExpiresAt DateTime @map("otp_expires_at") - otpAttempts Int @default(0) @map("otp_attempts") - otpLastSentAt DateTime @map("otp_last_sent_at") - otpResendCount Int @default(0) @map("otp_resend_count") - emailVerifiedAt DateTime? @map("email_verified_at") - completedAt DateTime? @map("completed_at") - createdAt DateTime @default(now()) @map("created_at") - updatedAt DateTime @updatedAt @map("updated_at") - - @@index([email]) - @@index([otpExpiresAt]) - @@map("onboarding_requests") -} diff --git a/apps/backend/prisma/password-reset.prisma b/apps/backend/prisma/password-reset.prisma deleted file mode 100644 index 4027f82..0000000 --- a/apps/backend/prisma/password-reset.prisma +++ /dev/null @@ -1,16 +0,0 @@ -model PasswordResetRequest { - id String @id @db.Uuid - email String - otpHash String @map("otp_hash") - otpExpiresAt DateTime @map("otp_expires_at") - otpAttempts Int @default(0) @map("otp_attempts") - otpLastSentAt DateTime @map("otp_last_sent_at") - otpResendCount Int @default(0) @map("otp_resend_count") - usedAt DateTime? @map("used_at") - createdAt DateTime @default(now()) @map("created_at") - updatedAt DateTime @updatedAt @map("updated_at") - - @@index([email]) - @@index([otpExpiresAt]) - @@map("password_reset_requests") -} \ No newline at end of file diff --git a/apps/backend/prisma/plan.prisma b/apps/backend/prisma/plan.prisma deleted file mode 100644 index 5222c98..0000000 --- a/apps/backend/prisma/plan.prisma +++ /dev/null @@ -1,10 +0,0 @@ -model Plan { - code String @id @db.VarChar(10) - name String @db.VarChar(30) - price Decimal @db.Decimal(19, 2) - rules Json - lastUpdatedAt DateTime @default(now()) @map("last_updated_at") - complexes Complex[] - - @@map("plans") -} diff --git a/apps/backend/prisma/schema.prisma b/apps/backend/prisma/schema.prisma index dfb621e..46acd69 100644 --- a/apps/backend/prisma/schema.prisma +++ b/apps/backend/prisma/schema.prisma @@ -6,3 +6,253 @@ generator client { datasource db { provider = "postgresql" } + +// ============== APP MODELS (existing) ============== + +model Plan { + code String @id @map("code") @db.VarChar(10) + name String @db.VarChar(30) + price Decimal @map("price") @db.Decimal(19, 2) + rules Json @map("rules") + lastUpdatedAt DateTime @default(now()) @map("last_updated_at") + complexes Complex[] + + @@map("plans") +} + +model Complex { + id String @id @db.Uuid + complexSlug String @unique @map("complex_slug") + complexName String @map("complex_name") + physicalAddress String @map("physical_address") + city String? + state String? + country String? + adminEmail String @map("admin_email") + planCode String @map("plan_code") + isActive Boolean @default(true) @map("is_active") + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + plan Plan @relation(fields: [planCode], references: [code]) + users ComplexUser[] + courts Court[] + + @@index([adminEmail]) + @@map("complexes") +} + +model ComplexUser { + id String @id @default(cuid()) @map("id") + complexId String @map("complex_id") @db.Uuid + userId String @map("user_id") + role ComplexUserRole + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + complex Complex @relation(fields: [complexId], references: [id], onDelete: Cascade) + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@unique([complexId, userId]) + @@map("complex_users") +} + +enum ComplexUserRole { + ADMIN + MANAGER + USER +} + +enum DayOfWeek { + MONDAY + TUESDAY + WEDNESDAY + THURSDAY + FRIDAY + SATURDAY + SUNDAY +} + +enum CourtBookingStatus { + CONFIRMED + CANCELLED + COMPLETED +} + +model Sport { + id String @id @db.Uuid + name String @unique + slug String @unique + isActive Boolean @default(true) @map("is_active") + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + courts Court[] + + @@map("sports") +} + +model Court { + id String @id @db.Uuid + complexId String @map("complex_id") @db.Uuid + sportId String @map("sport_id") @db.Uuid + name String + slotDurationMinutes Int @map("slot_duration_minutes") + basePrice Decimal @map("base_price") @db.Decimal(19, 2) + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + complex Complex @relation(fields: [complexId], references: [id], onDelete: Cascade) + sport Sport @relation(fields: [sportId], references: [id]) + availabilities CourtAvailability[] + priceRules CourtPriceRule[] + bookings CourtBooking[] + + @@index([complexId]) + @@index([sportId]) + @@map("courts") +} + +model CourtAvailability { + id String @id @db.Uuid + courtId String @map("court_id") @db.Uuid + dayOfWeek DayOfWeek @map("day_of_week") + startTime String @map("start_time") @db.VarChar(5) + endTime String @map("end_time") @db.VarChar(5) + createdAt DateTime @default(now()) @map("created_at") + court Court @relation(fields: [courtId], references: [id], onDelete: Cascade) + + @@index([courtId, dayOfWeek]) + @@map("court_availabilities") +} + +model CourtPriceRule { + id String @id @db.Uuid + courtId String @map("court_id") @db.Uuid + dayOfWeek DayOfWeek? @map("day_of_week") + startTime String? @map("start_time") @db.VarChar(5) + endTime String? @map("end_time") @db.VarChar(5) + price Decimal @db.Decimal(19, 2) + isActive Boolean @default(true) @map("is_active") + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + court Court @relation(fields: [courtId], references: [id], onDelete: Cascade) + + @@index([courtId, isActive]) + @@map("court_price_rules") +} + +model CourtBooking { + id String @id @db.Uuid + bookingCode String @unique @map("booking_code") @db.VarChar(8) + courtId String @map("court_id") @db.Uuid + bookingDate DateTime @map("booking_date") @db.Date + startTime String @map("start_time") @db.VarChar(5) + endTime String @map("end_time") @db.VarChar(5) + customerName String @map("customer_name") @db.VarChar(120) + customerPhone String @map("customer_phone") @db.VarChar(30) + status CourtBookingStatus @default(CONFIRMED) + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + court Court @relation(fields: [courtId], references: [id], onDelete: Cascade) + + @@unique([courtId, bookingDate, startTime]) + @@index([courtId, bookingDate]) + @@index([bookingDate]) + @@map("court_bookings") +} + +model OnboardingRequest { + id String @id @db.Uuid + fullName String @map("full_name") + email String + otpHash String @map("otp_hash") + otpExpiresAt DateTime @map("otp_expires_at") + otpAttempts Int @default(0) @map("otp_attempts") + otpLastSentAt DateTime @map("otp_last_sent_at") + otpResendCount Int @default(0) @map("otp_resend_count") + emailVerifiedAt DateTime? @map("email_verified_at") + completedAt DateTime? @map("completed_at") + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + + @@index([email]) + @@index([otpExpiresAt]) + @@map("onboarding_requests") +} + +model PasswordResetRequest { + id String @id @db.Uuid + email String + otpHash String @map("otp_hash") + otpExpiresAt DateTime @map("otp_expires_at") + otpAttempts Int @default(0) @map("otp_attempts") + otpLastSentAt DateTime @map("otp_last_sent_at") + otpResendCount Int @default(0) @map("otp_resend_count") + usedAt DateTime? @map("used_at") + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + + @@index([email]) + @@index([otpExpiresAt]) + @@map("password_reset_requests") +} + +// ============== BETTER AUTH MODELS ============== + +model User { + id String @id @default(cuid()) @map("id") + supabaseUserId String? @unique @map("supabase_user_id") @db.Uuid + name String? + email String @unique + emailVerified Boolean @default(false) + image String? + fullName String? @map("full_name") + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + accounts Account[] + sessions Session[] + complexes ComplexUser[] + + @@map("users") +} + +model Session { + id String @id @default(cuid()) @map("id") + userId String @map("user_id") + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + token String @unique + expiresAt DateTime @map("expires_at") + ipAddress String? @map("ip_address") + userAgent String? @map("user_agent") + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + + @@map("session") +} + +model Account { + id String @id @default(cuid()) @map("id") + userId String @map("user_id") + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + accountId String @map("account_id") + providerId String @map("provider_id") + accessToken String? @map("access_token") + refreshToken String? @map("refresh_token") + accessTokenExpiresAt DateTime? @map("access_token_expires_at") + refreshTokenExpiresAt DateTime? @map("refresh_token_expires_at") + scope String? @map("scope") + idToken String? @map("id_token") + password String? @map("password") + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + + @@map("account") +} + +model Verification { + id String @id @default(cuid()) @map("id") + identifier String + value String + expiresAt DateTime @map("expires_at") + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + + @@map("verification") +} diff --git a/apps/backend/prisma/user.prisma b/apps/backend/prisma/user.prisma deleted file mode 100644 index a626604..0000000 --- a/apps/backend/prisma/user.prisma +++ /dev/null @@ -1,11 +0,0 @@ -model User { - id String @id @db.Uuid - supabaseUserId String @unique @map("supabase_user_id") @db.Uuid - email String @unique - fullName String @map("full_name") - createdAt DateTime @default(now()) @map("created_at") - updatedAt DateTime @updatedAt @map("updated_at") - complexes ComplexUser[] - - @@map("users") -} diff --git a/apps/backend/src/app.ts b/apps/backend/src/app.ts index a7bb377..16254ee 100644 --- a/apps/backend/src/app.ts +++ b/apps/backend/src/app.ts @@ -21,6 +21,7 @@ export function createApp() { }, allowHeaders: ['Authorization', 'Content-Type'], allowMethods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], + credentials: true, }) ); diff --git a/apps/backend/src/auth-routes.js b/apps/backend/src/auth-routes.js new file mode 100644 index 0000000..699ad62 --- /dev/null +++ b/apps/backend/src/auth-routes.js @@ -0,0 +1,21 @@ +import { auth } from '@/lib/auth'; +import { cors } from 'hono/cors'; +export function registerAuthRoutes(app) { + const allowedOrigins = (Bun.env.CORS_ORIGIN ?? 'http://localhost:5173,http://127.0.0.1:5173') + .split(',') + .map((value) => value.trim()) + .filter(Boolean); + app.use('/api/auth/*', cors({ + origin: (origin) => { + if (!origin) + return allowedOrigins[0] ?? ''; + return allowedOrigins.includes(origin) ? origin : ''; + }, + allowHeaders: ['Content-Type', 'Authorization'], + allowMethods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], + credentials: true, + })); + app.on(['POST', 'GET'], '/api/auth/*', (c) => { + return auth.handler(c.req.raw); + }); +} diff --git a/apps/backend/src/auth-routes.ts b/apps/backend/src/auth-routes.ts new file mode 100644 index 0000000..9a8a71c --- /dev/null +++ b/apps/backend/src/auth-routes.ts @@ -0,0 +1,28 @@ +import { auth } from '@/lib/auth'; +import type { AppEnv } from '@/types/hono'; +import type { Hono } from 'hono'; +import { cors } from 'hono/cors'; + +export function registerAuthRoutes(app: Hono) { + const allowedOrigins = (Bun.env.CORS_ORIGIN ?? 'http://localhost:5173,http://127.0.0.1:5173') + .split(',') + .map((value) => value.trim()) + .filter(Boolean); + + app.use( + '/api/auth/*', + cors({ + origin: (origin) => { + if (!origin) return allowedOrigins[0] ?? ''; + return allowedOrigins.includes(origin) ? origin : ''; + }, + allowHeaders: ['Content-Type', 'Authorization'], + allowMethods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], + credentials: true, + }) + ); + + app.on(['POST', 'GET'], '/api/auth/*', (c) => { + return auth.handler(c.req.raw); + }); +} diff --git a/apps/backend/src/generated/prisma/browser.ts b/apps/backend/src/generated/prisma/browser.ts index 46b2af3..683b6ad 100644 --- a/apps/backend/src/generated/prisma/browser.ts +++ b/apps/backend/src/generated/prisma/browser.ts @@ -17,6 +17,11 @@ import * as Prisma from './internal/prismaNamespaceBrowser' export { Prisma } export * as $Enums from './enums' export * from './enums'; +/** + * Model Plan + * + */ +export type Plan = Prisma.PlanModel /** * Model Complex * @@ -62,13 +67,23 @@ export type OnboardingRequest = Prisma.OnboardingRequestModel * */ export type PasswordResetRequest = Prisma.PasswordResetRequestModel -/** - * Model Plan - * - */ -export type Plan = Prisma.PlanModel /** * Model User * */ export type User = Prisma.UserModel +/** + * Model Session + * + */ +export type Session = Prisma.SessionModel +/** + * Model Account + * + */ +export type Account = Prisma.AccountModel +/** + * Model Verification + * + */ +export type Verification = Prisma.VerificationModel diff --git a/apps/backend/src/generated/prisma/client.ts b/apps/backend/src/generated/prisma/client.ts index c4d2875..36d31ac 100644 --- a/apps/backend/src/generated/prisma/client.ts +++ b/apps/backend/src/generated/prisma/client.ts @@ -31,8 +31,8 @@ export * from "./enums" * const prisma = new PrismaClient({ * adapter: new PrismaPg({ connectionString: process.env.DATABASE_URL }) * }) - * // Fetch zero or more Complexes - * const complexes = await prisma.complex.findMany() + * // Fetch zero or more Plans + * const plans = await prisma.plan.findMany() * ``` * * Read more in our [docs](https://pris.ly/d/client). @@ -41,6 +41,11 @@ export const PrismaClient = $Class.getPrismaClientClass() export type PrismaClient = $Class.PrismaClient export { Prisma } +/** + * Model Plan + * + */ +export type Plan = Prisma.PlanModel /** * Model Complex * @@ -86,13 +91,23 @@ export type OnboardingRequest = Prisma.OnboardingRequestModel * */ export type PasswordResetRequest = Prisma.PasswordResetRequestModel -/** - * Model Plan - * - */ -export type Plan = Prisma.PlanModel /** * Model User * */ export type User = Prisma.UserModel +/** + * Model Session + * + */ +export type Session = Prisma.SessionModel +/** + * Model Account + * + */ +export type Account = Prisma.AccountModel +/** + * Model Verification + * + */ +export type Verification = Prisma.VerificationModel diff --git a/apps/backend/src/generated/prisma/commonInputTypes.ts b/apps/backend/src/generated/prisma/commonInputTypes.ts index f527e11..5603e5a 100644 --- a/apps/backend/src/generated/prisma/commonInputTypes.ts +++ b/apps/backend/src/generated/prisma/commonInputTypes.ts @@ -14,18 +14,6 @@ import * as $Enums from "./enums" import type * as Prisma from "./internal/prismaNamespace" -export type UuidFilter<$PrismaModel = never> = { - equals?: string | Prisma.StringFieldRefInput<$PrismaModel> - in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> - notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> - lt?: string | Prisma.StringFieldRefInput<$PrismaModel> - lte?: string | Prisma.StringFieldRefInput<$PrismaModel> - gt?: string | Prisma.StringFieldRefInput<$PrismaModel> - gte?: string | Prisma.StringFieldRefInput<$PrismaModel> - mode?: Prisma.QueryMode - not?: Prisma.NestedUuidFilter<$PrismaModel> | string -} - export type StringFilter<$PrismaModel = never> = { equals?: string | Prisma.StringFieldRefInput<$PrismaModel> in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> @@ -41,6 +29,139 @@ export type StringFilter<$PrismaModel = never> = { not?: Prisma.NestedStringFilter<$PrismaModel> | string } +export type DecimalFilter<$PrismaModel = never> = { + equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> + notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> + lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + not?: Prisma.NestedDecimalFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string +} + +export type JsonFilter<$PrismaModel = never> = +| Prisma.PatchUndefined< + Prisma.Either>, Exclude>, 'path'>>, + Required> + > +| Prisma.OptionalFlat>, 'path'>> + +export type JsonFilterBase<$PrismaModel = never> = { + equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter + path?: string[] + mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> + string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_ends_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter +} + +export type DateTimeFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeFilter<$PrismaModel> | Date | string +} + +export type StringWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + mode?: Prisma.QueryMode + not?: Prisma.NestedStringWithAggregatesFilter<$PrismaModel> | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedStringFilter<$PrismaModel> + _max?: Prisma.NestedStringFilter<$PrismaModel> +} + +export type DecimalWithAggregatesFilter<$PrismaModel = never> = { + equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> + notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> + lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + not?: Prisma.NestedDecimalWithAggregatesFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _avg?: Prisma.NestedDecimalFilter<$PrismaModel> + _sum?: Prisma.NestedDecimalFilter<$PrismaModel> + _min?: Prisma.NestedDecimalFilter<$PrismaModel> + _max?: Prisma.NestedDecimalFilter<$PrismaModel> +} + +export type JsonWithAggregatesFilter<$PrismaModel = never> = +| Prisma.PatchUndefined< + Prisma.Either>, Exclude>, 'path'>>, + Required> + > +| Prisma.OptionalFlat>, 'path'>> + +export type JsonWithAggregatesFilterBase<$PrismaModel = never> = { + equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter + path?: string[] + mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> + string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_ends_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedJsonFilter<$PrismaModel> + _max?: Prisma.NestedJsonFilter<$PrismaModel> +} + +export type DateTimeWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedDateTimeFilter<$PrismaModel> + _max?: Prisma.NestedDateTimeFilter<$PrismaModel> +} + +export type UuidFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + mode?: Prisma.QueryMode + not?: Prisma.NestedUuidFilter<$PrismaModel> | string +} + export type StringNullableFilter<$PrismaModel = never> = { equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null @@ -56,15 +177,9 @@ export type StringNullableFilter<$PrismaModel = never> = { not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null } -export type DateTimeFilter<$PrismaModel = never> = { - equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> - notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> - lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - not?: Prisma.NestedDateTimeFilter<$PrismaModel> | Date | string +export type BoolFilter<$PrismaModel = never> = { + equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel> + not?: Prisma.NestedBoolFilter<$PrismaModel> | boolean } export type SortOrderInput = { @@ -87,24 +202,6 @@ export type UuidWithAggregatesFilter<$PrismaModel = never> = { _max?: Prisma.NestedStringFilter<$PrismaModel> } -export type StringWithAggregatesFilter<$PrismaModel = never> = { - equals?: string | Prisma.StringFieldRefInput<$PrismaModel> - in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> - notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> - lt?: string | Prisma.StringFieldRefInput<$PrismaModel> - lte?: string | Prisma.StringFieldRefInput<$PrismaModel> - gt?: string | Prisma.StringFieldRefInput<$PrismaModel> - gte?: string | Prisma.StringFieldRefInput<$PrismaModel> - contains?: string | Prisma.StringFieldRefInput<$PrismaModel> - startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - mode?: Prisma.QueryMode - not?: Prisma.NestedStringWithAggregatesFilter<$PrismaModel> | string - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedStringFilter<$PrismaModel> - _max?: Prisma.NestedStringFilter<$PrismaModel> -} - export type StringNullableWithAggregatesFilter<$PrismaModel = never> = { equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null @@ -123,18 +220,12 @@ export type StringNullableWithAggregatesFilter<$PrismaModel = never> = { _max?: Prisma.NestedStringNullableFilter<$PrismaModel> } -export type DateTimeWithAggregatesFilter<$PrismaModel = never> = { - equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> - notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> - lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - not?: Prisma.NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string +export type BoolWithAggregatesFilter<$PrismaModel = never> = { + equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel> + not?: Prisma.NestedBoolWithAggregatesFilter<$PrismaModel> | boolean _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedDateTimeFilter<$PrismaModel> - _max?: Prisma.NestedDateTimeFilter<$PrismaModel> + _min?: Prisma.NestedBoolFilter<$PrismaModel> + _max?: Prisma.NestedBoolFilter<$PrismaModel> } export type EnumComplexUserRoleFilter<$PrismaModel = never> = { @@ -154,19 +245,6 @@ export type EnumComplexUserRoleWithAggregatesFilter<$PrismaModel = never> = { _max?: Prisma.NestedEnumComplexUserRoleFilter<$PrismaModel> } -export type BoolFilter<$PrismaModel = never> = { - equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel> - not?: Prisma.NestedBoolFilter<$PrismaModel> | boolean -} - -export type BoolWithAggregatesFilter<$PrismaModel = never> = { - equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel> - not?: Prisma.NestedBoolWithAggregatesFilter<$PrismaModel> | boolean - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedBoolFilter<$PrismaModel> - _max?: Prisma.NestedBoolFilter<$PrismaModel> -} - export type IntFilter<$PrismaModel = never> = { equals?: number | Prisma.IntFieldRefInput<$PrismaModel> in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> @@ -178,17 +256,6 @@ export type IntFilter<$PrismaModel = never> = { not?: Prisma.NestedIntFilter<$PrismaModel> | number } -export type DecimalFilter<$PrismaModel = never> = { - equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> - notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> - lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - not?: Prisma.NestedDecimalFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string -} - export type IntWithAggregatesFilter<$PrismaModel = never> = { equals?: number | Prisma.IntFieldRefInput<$PrismaModel> in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> @@ -205,22 +272,6 @@ export type IntWithAggregatesFilter<$PrismaModel = never> = { _max?: Prisma.NestedIntFilter<$PrismaModel> } -export type DecimalWithAggregatesFilter<$PrismaModel = never> = { - equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> - notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> - lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - not?: Prisma.NestedDecimalWithAggregatesFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string - _count?: Prisma.NestedIntFilter<$PrismaModel> - _avg?: Prisma.NestedDecimalFilter<$PrismaModel> - _sum?: Prisma.NestedDecimalFilter<$PrismaModel> - _min?: Prisma.NestedDecimalFilter<$PrismaModel> - _max?: Prisma.NestedDecimalFilter<$PrismaModel> -} - export type EnumDayOfWeekFilter<$PrismaModel = never> = { equals?: $Enums.DayOfWeek | Prisma.EnumDayOfWeekFieldRefInput<$PrismaModel> in?: $Enums.DayOfWeek[] | Prisma.ListEnumDayOfWeekFieldRefInput<$PrismaModel> @@ -297,66 +348,31 @@ export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = { _max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> } -export type JsonFilter<$PrismaModel = never> = -| Prisma.PatchUndefined< - Prisma.Either>, Exclude>, 'path'>>, - Required> - > -| Prisma.OptionalFlat>, 'path'>> - -export type JsonFilterBase<$PrismaModel = never> = { - equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter - path?: string[] - mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> - string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> - string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> - string_ends_with?: string | Prisma.StringFieldRefInput<$PrismaModel> - array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter -} - -export type JsonWithAggregatesFilter<$PrismaModel = never> = -| Prisma.PatchUndefined< - Prisma.Either>, Exclude>, 'path'>>, - Required> - > -| Prisma.OptionalFlat>, 'path'>> - -export type JsonWithAggregatesFilterBase<$PrismaModel = never> = { - equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter - path?: string[] - mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> - string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> - string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> - string_ends_with?: string | Prisma.StringFieldRefInput<$PrismaModel> - array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedJsonFilter<$PrismaModel> - _max?: Prisma.NestedJsonFilter<$PrismaModel> -} - -export type NestedUuidFilter<$PrismaModel = never> = { - equals?: string | Prisma.StringFieldRefInput<$PrismaModel> - in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> - notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> +export type UuidNullableFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null lt?: string | Prisma.StringFieldRefInput<$PrismaModel> lte?: string | Prisma.StringFieldRefInput<$PrismaModel> gt?: string | Prisma.StringFieldRefInput<$PrismaModel> gte?: string | Prisma.StringFieldRefInput<$PrismaModel> - not?: Prisma.NestedUuidFilter<$PrismaModel> | string + mode?: Prisma.QueryMode + not?: Prisma.NestedUuidNullableFilter<$PrismaModel> | string | null +} + +export type UuidNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + mode?: Prisma.QueryMode + not?: Prisma.NestedUuidNullableWithAggregatesFilter<$PrismaModel> | string | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedStringNullableFilter<$PrismaModel> + _max?: Prisma.NestedStringNullableFilter<$PrismaModel> } export type NestedStringFilter<$PrismaModel = never> = { @@ -373,18 +389,15 @@ export type NestedStringFilter<$PrismaModel = never> = { not?: Prisma.NestedStringFilter<$PrismaModel> | string } -export type NestedStringNullableFilter<$PrismaModel = never> = { - equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null - in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null - notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null - lt?: string | Prisma.StringFieldRefInput<$PrismaModel> - lte?: string | Prisma.StringFieldRefInput<$PrismaModel> - gt?: string | Prisma.StringFieldRefInput<$PrismaModel> - gte?: string | Prisma.StringFieldRefInput<$PrismaModel> - contains?: string | Prisma.StringFieldRefInput<$PrismaModel> - startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null +export type NestedDecimalFilter<$PrismaModel = never> = { + equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> + notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> + lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + not?: Prisma.NestedDecimalFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string } export type NestedDateTimeFilter<$PrismaModel = never> = { @@ -398,7 +411,7 @@ export type NestedDateTimeFilter<$PrismaModel = never> = { not?: Prisma.NestedDateTimeFilter<$PrismaModel> | Date | string } -export type NestedUuidWithAggregatesFilter<$PrismaModel = never> = { +export type NestedStringWithAggregatesFilter<$PrismaModel = never> = { equals?: string | Prisma.StringFieldRefInput<$PrismaModel> in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> @@ -406,7 +419,10 @@ export type NestedUuidWithAggregatesFilter<$PrismaModel = never> = { lte?: string | Prisma.StringFieldRefInput<$PrismaModel> gt?: string | Prisma.StringFieldRefInput<$PrismaModel> gte?: string | Prisma.StringFieldRefInput<$PrismaModel> - not?: Prisma.NestedUuidWithAggregatesFilter<$PrismaModel> | string + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedStringWithAggregatesFilter<$PrismaModel> | string _count?: Prisma.NestedIntFilter<$PrismaModel> _min?: Prisma.NestedStringFilter<$PrismaModel> _max?: Prisma.NestedStringFilter<$PrismaModel> @@ -423,7 +439,61 @@ export type NestedIntFilter<$PrismaModel = never> = { not?: Prisma.NestedIntFilter<$PrismaModel> | number } -export type NestedStringWithAggregatesFilter<$PrismaModel = never> = { +export type NestedDecimalWithAggregatesFilter<$PrismaModel = never> = { + equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> + notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> + lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> + not?: Prisma.NestedDecimalWithAggregatesFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _avg?: Prisma.NestedDecimalFilter<$PrismaModel> + _sum?: Prisma.NestedDecimalFilter<$PrismaModel> + _min?: Prisma.NestedDecimalFilter<$PrismaModel> + _max?: Prisma.NestedDecimalFilter<$PrismaModel> +} + +export type NestedJsonFilter<$PrismaModel = never> = +| Prisma.PatchUndefined< + Prisma.Either>, Exclude>, 'path'>>, + Required> + > +| Prisma.OptionalFlat>, 'path'>> + +export type NestedJsonFilterBase<$PrismaModel = never> = { + equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter + path?: string[] + mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> + string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_ends_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter +} + +export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedDateTimeFilter<$PrismaModel> + _max?: Prisma.NestedDateTimeFilter<$PrismaModel> +} + +export type NestedUuidFilter<$PrismaModel = never> = { equals?: string | Prisma.StringFieldRefInput<$PrismaModel> in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> @@ -431,10 +501,37 @@ export type NestedStringWithAggregatesFilter<$PrismaModel = never> = { lte?: string | Prisma.StringFieldRefInput<$PrismaModel> gt?: string | Prisma.StringFieldRefInput<$PrismaModel> gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedUuidFilter<$PrismaModel> | string +} + +export type NestedStringNullableFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> contains?: string | Prisma.StringFieldRefInput<$PrismaModel> startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - not?: Prisma.NestedStringWithAggregatesFilter<$PrismaModel> | string + not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null +} + +export type NestedBoolFilter<$PrismaModel = never> = { + equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel> + not?: Prisma.NestedBoolFilter<$PrismaModel> | boolean +} + +export type NestedUuidWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedUuidWithAggregatesFilter<$PrismaModel> | string _count?: Prisma.NestedIntFilter<$PrismaModel> _min?: Prisma.NestedStringFilter<$PrismaModel> _max?: Prisma.NestedStringFilter<$PrismaModel> @@ -468,18 +565,12 @@ export type NestedIntNullableFilter<$PrismaModel = never> = { not?: Prisma.NestedIntNullableFilter<$PrismaModel> | number | null } -export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = { - equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> - notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> - lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - not?: Prisma.NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string +export type NestedBoolWithAggregatesFilter<$PrismaModel = never> = { + equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel> + not?: Prisma.NestedBoolWithAggregatesFilter<$PrismaModel> | boolean _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedDateTimeFilter<$PrismaModel> - _max?: Prisma.NestedDateTimeFilter<$PrismaModel> + _min?: Prisma.NestedBoolFilter<$PrismaModel> + _max?: Prisma.NestedBoolFilter<$PrismaModel> } export type NestedEnumComplexUserRoleFilter<$PrismaModel = never> = { @@ -499,30 +590,6 @@ export type NestedEnumComplexUserRoleWithAggregatesFilter<$PrismaModel = never> _max?: Prisma.NestedEnumComplexUserRoleFilter<$PrismaModel> } -export type NestedBoolFilter<$PrismaModel = never> = { - equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel> - not?: Prisma.NestedBoolFilter<$PrismaModel> | boolean -} - -export type NestedBoolWithAggregatesFilter<$PrismaModel = never> = { - equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel> - not?: Prisma.NestedBoolWithAggregatesFilter<$PrismaModel> | boolean - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedBoolFilter<$PrismaModel> - _max?: Prisma.NestedBoolFilter<$PrismaModel> -} - -export type NestedDecimalFilter<$PrismaModel = never> = { - equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> - notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> - lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - not?: Prisma.NestedDecimalFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string -} - export type NestedIntWithAggregatesFilter<$PrismaModel = never> = { equals?: number | Prisma.IntFieldRefInput<$PrismaModel> in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> @@ -550,22 +617,6 @@ export type NestedFloatFilter<$PrismaModel = never> = { not?: Prisma.NestedFloatFilter<$PrismaModel> | number } -export type NestedDecimalWithAggregatesFilter<$PrismaModel = never> = { - equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> - notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> - lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - not?: Prisma.NestedDecimalWithAggregatesFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string - _count?: Prisma.NestedIntFilter<$PrismaModel> - _avg?: Prisma.NestedDecimalFilter<$PrismaModel> - _sum?: Prisma.NestedDecimalFilter<$PrismaModel> - _min?: Prisma.NestedDecimalFilter<$PrismaModel> - _max?: Prisma.NestedDecimalFilter<$PrismaModel> -} - export type NestedEnumDayOfWeekFilter<$PrismaModel = never> = { equals?: $Enums.DayOfWeek | Prisma.EnumDayOfWeekFieldRefInput<$PrismaModel> in?: $Enums.DayOfWeek[] | Prisma.ListEnumDayOfWeekFieldRefInput<$PrismaModel> @@ -642,28 +693,29 @@ export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = { _max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> } -export type NestedJsonFilter<$PrismaModel = never> = -| Prisma.PatchUndefined< - Prisma.Either>, Exclude>, 'path'>>, - Required> - > -| Prisma.OptionalFlat>, 'path'>> +export type NestedUuidNullableFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedUuidNullableFilter<$PrismaModel> | string | null +} -export type NestedJsonFilterBase<$PrismaModel = never> = { - equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter - path?: string[] - mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> - string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> - string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> - string_ends_with?: string | Prisma.StringFieldRefInput<$PrismaModel> - array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter +export type NestedUuidNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedUuidNullableWithAggregatesFilter<$PrismaModel> | string | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedStringNullableFilter<$PrismaModel> + _max?: Prisma.NestedStringNullableFilter<$PrismaModel> } diff --git a/apps/backend/src/generated/prisma/enums.ts b/apps/backend/src/generated/prisma/enums.ts index 0455865..7cf815d 100644 --- a/apps/backend/src/generated/prisma/enums.ts +++ b/apps/backend/src/generated/prisma/enums.ts @@ -10,7 +10,9 @@ */ export const ComplexUserRole = { - ADMIN: 'ADMIN' + ADMIN: 'ADMIN', + MANAGER: 'MANAGER', + USER: 'USER' } as const export type ComplexUserRole = (typeof ComplexUserRole)[keyof typeof ComplexUserRole] diff --git a/apps/backend/src/generated/prisma/internal/class.ts b/apps/backend/src/generated/prisma/internal/class.ts index 5719c39..1162948 100644 --- a/apps/backend/src/generated/prisma/internal/class.ts +++ b/apps/backend/src/generated/prisma/internal/class.ts @@ -20,7 +20,7 @@ const config: runtime.GetPrismaClientConfig = { "clientVersion": "7.6.0", "engineVersion": "75cbdc1eb7150937890ad5465d861175c6624711", "activeProvider": "postgresql", - "inlineSchema": "model Complex {\n id String @id @db.Uuid\n complexName String @map(\"complex_name\")\n physicalAddress String? @map(\"physical_address\") @db.VarChar(200)\n city String? @map(\"city\") @db.VarChar(100)\n state String? @map(\"state\") @db.VarChar(100)\n country String? @map(\"country\") @db.VarChar(100)\n complexSlug String @unique @map(\"complex_slug\")\n adminEmail String @map(\"admin_email\")\n planCode String? @map(\"plan_code\") @db.VarChar(10)\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n plan Plan? @relation(fields: [planCode], references: [code])\n users ComplexUser[]\n courts Court[]\n\n @@index([planCode])\n @@index([complexSlug])\n @@map(\"complexes\")\n}\n\nenum ComplexUserRole {\n ADMIN\n}\n\nmodel ComplexUser {\n complexId String @map(\"complex_id\") @db.Uuid\n userId String @map(\"user_id\") @db.Uuid\n role ComplexUserRole @default(ADMIN)\n createdAt DateTime @default(now()) @map(\"created_at\")\n complex Complex @relation(fields: [complexId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@id([complexId, userId])\n @@index([userId])\n @@map(\"complex_users\")\n}\n\nenum DayOfWeek {\n MONDAY\n TUESDAY\n WEDNESDAY\n THURSDAY\n FRIDAY\n SATURDAY\n SUNDAY\n}\n\nenum CourtBookingStatus {\n CONFIRMED\n CANCELLED\n COMPLETED\n}\n\nmodel Sport {\n id String @id @db.Uuid\n name String @unique\n slug String @unique\n isActive Boolean @default(true) @map(\"is_active\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n courts Court[]\n\n @@map(\"sports\")\n}\n\nmodel Court {\n id String @id @db.Uuid\n complexId String @map(\"complex_id\") @db.Uuid\n sportId String @map(\"sport_id\") @db.Uuid\n name String\n slotDurationMinutes Int @map(\"slot_duration_minutes\")\n basePrice Decimal @map(\"base_price\") @db.Decimal(19, 2)\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n complex Complex @relation(fields: [complexId], references: [id], onDelete: Cascade)\n sport Sport @relation(fields: [sportId], references: [id])\n availabilities CourtAvailability[]\n priceRules CourtPriceRule[]\n bookings CourtBooking[]\n\n @@index([complexId])\n @@index([sportId])\n @@map(\"courts\")\n}\n\nmodel CourtAvailability {\n id String @id @db.Uuid\n courtId String @map(\"court_id\") @db.Uuid\n dayOfWeek DayOfWeek @map(\"day_of_week\")\n startTime String @map(\"start_time\") @db.VarChar(5)\n endTime String @map(\"end_time\") @db.VarChar(5)\n createdAt DateTime @default(now()) @map(\"created_at\")\n court Court @relation(fields: [courtId], references: [id], onDelete: Cascade)\n\n @@index([courtId, dayOfWeek])\n @@map(\"court_availabilities\")\n}\n\nmodel CourtPriceRule {\n id String @id @db.Uuid\n courtId String @map(\"court_id\") @db.Uuid\n dayOfWeek DayOfWeek? @map(\"day_of_week\")\n startTime String? @map(\"start_time\") @db.VarChar(5)\n endTime String? @map(\"end_time\") @db.VarChar(5)\n price Decimal @db.Decimal(19, 2)\n isActive Boolean @default(true) @map(\"is_active\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n court Court @relation(fields: [courtId], references: [id], onDelete: Cascade)\n\n @@index([courtId, isActive])\n @@map(\"court_price_rules\")\n}\n\nmodel CourtBooking {\n id String @id @db.Uuid\n bookingCode String @unique @map(\"booking_code\") @db.VarChar(8)\n courtId String @map(\"court_id\") @db.Uuid\n bookingDate DateTime @map(\"booking_date\") @db.Date\n startTime String @map(\"start_time\") @db.VarChar(5)\n endTime String @map(\"end_time\") @db.VarChar(5)\n customerName String @map(\"customer_name\") @db.VarChar(120)\n customerPhone String @map(\"customer_phone\") @db.VarChar(30)\n status CourtBookingStatus @default(CONFIRMED)\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n court Court @relation(fields: [courtId], references: [id], onDelete: Cascade)\n\n @@unique([courtId, bookingDate, startTime])\n @@index([courtId, bookingDate])\n @@index([bookingDate])\n @@map(\"court_bookings\")\n}\n\nmodel OnboardingRequest {\n id String @id @db.Uuid\n fullName String @map(\"full_name\")\n email String\n otpHash String @map(\"otp_hash\")\n otpExpiresAt DateTime @map(\"otp_expires_at\")\n otpAttempts Int @default(0) @map(\"otp_attempts\")\n otpLastSentAt DateTime @map(\"otp_last_sent_at\")\n otpResendCount Int @default(0) @map(\"otp_resend_count\")\n emailVerifiedAt DateTime? @map(\"email_verified_at\")\n completedAt DateTime? @map(\"completed_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n @@index([email])\n @@index([otpExpiresAt])\n @@map(\"onboarding_requests\")\n}\n\nmodel PasswordResetRequest {\n id String @id @db.Uuid\n email String\n otpHash String @map(\"otp_hash\")\n otpExpiresAt DateTime @map(\"otp_expires_at\")\n otpAttempts Int @default(0) @map(\"otp_attempts\")\n otpLastSentAt DateTime @map(\"otp_last_sent_at\")\n otpResendCount Int @default(0) @map(\"otp_resend_count\")\n usedAt DateTime? @map(\"used_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n @@index([email])\n @@index([otpExpiresAt])\n @@map(\"password_reset_requests\")\n}\n\nmodel Plan {\n code String @id @db.VarChar(10)\n name String @db.VarChar(30)\n price Decimal @db.Decimal(19, 2)\n rules Json\n lastUpdatedAt DateTime @default(now()) @map(\"last_updated_at\")\n complexes Complex[]\n\n @@map(\"plans\")\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel User {\n id String @id @db.Uuid\n supabaseUserId String @unique @map(\"supabase_user_id\") @db.Uuid\n email String @unique\n fullName String @map(\"full_name\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n complexes ComplexUser[]\n\n @@map(\"users\")\n}\n", + "inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\n// ============== APP MODELS (existing) ==============\n\nmodel Plan {\n code String @id @map(\"code\") @db.VarChar(10)\n name String @db.VarChar(30)\n price Decimal @map(\"price\") @db.Decimal(19, 2)\n rules Json @map(\"rules\")\n lastUpdatedAt DateTime @default(now()) @map(\"last_updated_at\")\n complexes Complex[]\n\n @@map(\"plans\")\n}\n\nmodel Complex {\n id String @id @db.Uuid\n complexSlug String @unique @map(\"complex_slug\")\n complexName String @map(\"complex_name\")\n physicalAddress String @map(\"physical_address\")\n city String?\n state String?\n country String?\n adminEmail String @map(\"admin_email\")\n planCode String @map(\"plan_code\")\n isActive Boolean @default(true) @map(\"is_active\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n plan Plan @relation(fields: [planCode], references: [code])\n users ComplexUser[]\n courts Court[]\n\n @@index([adminEmail])\n @@map(\"complexes\")\n}\n\nmodel ComplexUser {\n id String @id @default(cuid()) @map(\"id\")\n complexId String @map(\"complex_id\") @db.Uuid\n userId String @map(\"user_id\")\n role ComplexUserRole\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n complex Complex @relation(fields: [complexId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([complexId, userId])\n @@map(\"complex_users\")\n}\n\nenum ComplexUserRole {\n ADMIN\n MANAGER\n USER\n}\n\nenum DayOfWeek {\n MONDAY\n TUESDAY\n WEDNESDAY\n THURSDAY\n FRIDAY\n SATURDAY\n SUNDAY\n}\n\nenum CourtBookingStatus {\n CONFIRMED\n CANCELLED\n COMPLETED\n}\n\nmodel Sport {\n id String @id @db.Uuid\n name String @unique\n slug String @unique\n isActive Boolean @default(true) @map(\"is_active\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n courts Court[]\n\n @@map(\"sports\")\n}\n\nmodel Court {\n id String @id @db.Uuid\n complexId String @map(\"complex_id\") @db.Uuid\n sportId String @map(\"sport_id\") @db.Uuid\n name String\n slotDurationMinutes Int @map(\"slot_duration_minutes\")\n basePrice Decimal @map(\"base_price\") @db.Decimal(19, 2)\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n complex Complex @relation(fields: [complexId], references: [id], onDelete: Cascade)\n sport Sport @relation(fields: [sportId], references: [id])\n availabilities CourtAvailability[]\n priceRules CourtPriceRule[]\n bookings CourtBooking[]\n\n @@index([complexId])\n @@index([sportId])\n @@map(\"courts\")\n}\n\nmodel CourtAvailability {\n id String @id @db.Uuid\n courtId String @map(\"court_id\") @db.Uuid\n dayOfWeek DayOfWeek @map(\"day_of_week\")\n startTime String @map(\"start_time\") @db.VarChar(5)\n endTime String @map(\"end_time\") @db.VarChar(5)\n createdAt DateTime @default(now()) @map(\"created_at\")\n court Court @relation(fields: [courtId], references: [id], onDelete: Cascade)\n\n @@index([courtId, dayOfWeek])\n @@map(\"court_availabilities\")\n}\n\nmodel CourtPriceRule {\n id String @id @db.Uuid\n courtId String @map(\"court_id\") @db.Uuid\n dayOfWeek DayOfWeek? @map(\"day_of_week\")\n startTime String? @map(\"start_time\") @db.VarChar(5)\n endTime String? @map(\"end_time\") @db.VarChar(5)\n price Decimal @db.Decimal(19, 2)\n isActive Boolean @default(true) @map(\"is_active\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n court Court @relation(fields: [courtId], references: [id], onDelete: Cascade)\n\n @@index([courtId, isActive])\n @@map(\"court_price_rules\")\n}\n\nmodel CourtBooking {\n id String @id @db.Uuid\n bookingCode String @unique @map(\"booking_code\") @db.VarChar(8)\n courtId String @map(\"court_id\") @db.Uuid\n bookingDate DateTime @map(\"booking_date\") @db.Date\n startTime String @map(\"start_time\") @db.VarChar(5)\n endTime String @map(\"end_time\") @db.VarChar(5)\n customerName String @map(\"customer_name\") @db.VarChar(120)\n customerPhone String @map(\"customer_phone\") @db.VarChar(30)\n status CourtBookingStatus @default(CONFIRMED)\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n court Court @relation(fields: [courtId], references: [id], onDelete: Cascade)\n\n @@unique([courtId, bookingDate, startTime])\n @@index([courtId, bookingDate])\n @@index([bookingDate])\n @@map(\"court_bookings\")\n}\n\nmodel OnboardingRequest {\n id String @id @db.Uuid\n fullName String @map(\"full_name\")\n email String\n otpHash String @map(\"otp_hash\")\n otpExpiresAt DateTime @map(\"otp_expires_at\")\n otpAttempts Int @default(0) @map(\"otp_attempts\")\n otpLastSentAt DateTime @map(\"otp_last_sent_at\")\n otpResendCount Int @default(0) @map(\"otp_resend_count\")\n emailVerifiedAt DateTime? @map(\"email_verified_at\")\n completedAt DateTime? @map(\"completed_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n @@index([email])\n @@index([otpExpiresAt])\n @@map(\"onboarding_requests\")\n}\n\nmodel PasswordResetRequest {\n id String @id @db.Uuid\n email String\n otpHash String @map(\"otp_hash\")\n otpExpiresAt DateTime @map(\"otp_expires_at\")\n otpAttempts Int @default(0) @map(\"otp_attempts\")\n otpLastSentAt DateTime @map(\"otp_last_sent_at\")\n otpResendCount Int @default(0) @map(\"otp_resend_count\")\n usedAt DateTime? @map(\"used_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n @@index([email])\n @@index([otpExpiresAt])\n @@map(\"password_reset_requests\")\n}\n\n// ============== BETTER AUTH MODELS ==============\n\nmodel User {\n id String @id @default(cuid()) @map(\"id\")\n supabaseUserId String? @unique @map(\"supabase_user_id\") @db.Uuid\n name String?\n email String @unique\n emailVerified Boolean @default(false)\n image String?\n fullName String? @map(\"full_name\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n accounts Account[]\n sessions Session[]\n complexes ComplexUser[]\n\n @@map(\"users\")\n}\n\nmodel Session {\n id String @id @default(cuid()) @map(\"id\")\n userId String @map(\"user_id\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n token String @unique\n expiresAt DateTime @map(\"expires_at\")\n ipAddress String? @map(\"ip_address\")\n userAgent String? @map(\"user_agent\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n @@map(\"session\")\n}\n\nmodel Account {\n id String @id @default(cuid()) @map(\"id\")\n userId String @map(\"user_id\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n accountId String @map(\"account_id\")\n providerId String @map(\"provider_id\")\n accessToken String? @map(\"access_token\")\n refreshToken String? @map(\"refresh_token\")\n accessTokenExpiresAt DateTime? @map(\"access_token_expires_at\")\n refreshTokenExpiresAt DateTime? @map(\"refresh_token_expires_at\")\n scope String? @map(\"scope\")\n idToken String? @map(\"id_token\")\n password String? @map(\"password\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n @@map(\"account\")\n}\n\nmodel Verification {\n id String @id @default(cuid()) @map(\"id\")\n identifier String\n value String\n expiresAt DateTime @map(\"expires_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n @@map(\"verification\")\n}\n", "runtimeDataModel": { "models": {}, "enums": {}, @@ -32,10 +32,10 @@ const config: runtime.GetPrismaClientConfig = { } } -config.runtimeDataModel = JSON.parse("{\"models\":{\"Complex\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complexName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_name\"},{\"name\":\"physicalAddress\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"physical_address\"},{\"name\":\"city\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"city\"},{\"name\":\"state\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"state\"},{\"name\":\"country\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"country\"},{\"name\":\"complexSlug\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_slug\"},{\"name\":\"adminEmail\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"admin_email\"},{\"name\":\"planCode\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"plan_code\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"plan\",\"kind\":\"object\",\"type\":\"Plan\",\"relationName\":\"ComplexToPlan\"},{\"name\":\"users\",\"kind\":\"object\",\"type\":\"ComplexUser\",\"relationName\":\"ComplexToComplexUser\"},{\"name\":\"courts\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"ComplexToCourt\"}],\"dbName\":\"complexes\"},\"ComplexUser\":{\"fields\":[{\"name\":\"complexId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_id\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"ComplexUserRole\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToComplexUser\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ComplexUserToUser\"}],\"dbName\":\"complex_users\"},\"Sport\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"is_active\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"courts\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"CourtToSport\"}],\"dbName\":\"sports\"},\"Court\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complexId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_id\"},{\"name\":\"sportId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"sport_id\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"slotDurationMinutes\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"slot_duration_minutes\"},{\"name\":\"basePrice\",\"kind\":\"scalar\",\"type\":\"Decimal\",\"dbName\":\"base_price\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToCourt\"},{\"name\":\"sport\",\"kind\":\"object\",\"type\":\"Sport\",\"relationName\":\"CourtToSport\"},{\"name\":\"availabilities\",\"kind\":\"object\",\"type\":\"CourtAvailability\",\"relationName\":\"CourtToCourtAvailability\"},{\"name\":\"priceRules\",\"kind\":\"object\",\"type\":\"CourtPriceRule\",\"relationName\":\"CourtToCourtPriceRule\"},{\"name\":\"bookings\",\"kind\":\"object\",\"type\":\"CourtBooking\",\"relationName\":\"CourtToCourtBooking\"}],\"dbName\":\"courts\"},\"CourtAvailability\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"courtId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"court_id\"},{\"name\":\"dayOfWeek\",\"kind\":\"enum\",\"type\":\"DayOfWeek\",\"dbName\":\"day_of_week\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"start_time\"},{\"name\":\"endTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"end_time\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"court\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"CourtToCourtAvailability\"}],\"dbName\":\"court_availabilities\"},\"CourtPriceRule\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"courtId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"court_id\"},{\"name\":\"dayOfWeek\",\"kind\":\"enum\",\"type\":\"DayOfWeek\",\"dbName\":\"day_of_week\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"start_time\"},{\"name\":\"endTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"end_time\"},{\"name\":\"price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"is_active\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"court\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"CourtToCourtPriceRule\"}],\"dbName\":\"court_price_rules\"},\"CourtBooking\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bookingCode\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"booking_code\"},{\"name\":\"courtId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"court_id\"},{\"name\":\"bookingDate\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"booking_date\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"start_time\"},{\"name\":\"endTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"end_time\"},{\"name\":\"customerName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"customer_name\"},{\"name\":\"customerPhone\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"customer_phone\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"CourtBookingStatus\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"court\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"CourtToCourtBooking\"}],\"dbName\":\"court_bookings\"},\"OnboardingRequest\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fullName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"full_name\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"otpHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"otp_hash\"},{\"name\":\"otpExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"otp_expires_at\"},{\"name\":\"otpAttempts\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"otp_attempts\"},{\"name\":\"otpLastSentAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"otp_last_sent_at\"},{\"name\":\"otpResendCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"otp_resend_count\"},{\"name\":\"emailVerifiedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"email_verified_at\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"completed_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"onboarding_requests\"},\"PasswordResetRequest\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"otpHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"otp_hash\"},{\"name\":\"otpExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"otp_expires_at\"},{\"name\":\"otpAttempts\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"otp_attempts\"},{\"name\":\"otpLastSentAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"otp_last_sent_at\"},{\"name\":\"otpResendCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"otp_resend_count\"},{\"name\":\"usedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"used_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"password_reset_requests\"},\"Plan\":{\"fields\":[{\"name\":\"code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"rules\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"lastUpdatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"last_updated_at\"},{\"name\":\"complexes\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToPlan\"}],\"dbName\":\"plans\"},\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"supabaseUserId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"supabase_user_id\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fullName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"full_name\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"complexes\",\"kind\":\"object\",\"type\":\"ComplexUser\",\"relationName\":\"ComplexUserToUser\"}],\"dbName\":\"users\"}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"Plan\":{\"fields\":[{\"name\":\"code\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"code\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"price\",\"kind\":\"scalar\",\"type\":\"Decimal\",\"dbName\":\"price\"},{\"name\":\"rules\",\"kind\":\"scalar\",\"type\":\"Json\",\"dbName\":\"rules\"},{\"name\":\"lastUpdatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"last_updated_at\"},{\"name\":\"complexes\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToPlan\"}],\"dbName\":\"plans\"},\"Complex\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complexSlug\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_slug\"},{\"name\":\"complexName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_name\"},{\"name\":\"physicalAddress\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"physical_address\"},{\"name\":\"city\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"country\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"adminEmail\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"admin_email\"},{\"name\":\"planCode\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"plan_code\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"is_active\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"plan\",\"kind\":\"object\",\"type\":\"Plan\",\"relationName\":\"ComplexToPlan\"},{\"name\":\"users\",\"kind\":\"object\",\"type\":\"ComplexUser\",\"relationName\":\"ComplexToComplexUser\"},{\"name\":\"courts\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"ComplexToCourt\"}],\"dbName\":\"complexes\"},\"ComplexUser\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"id\"},{\"name\":\"complexId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_id\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"ComplexUserRole\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToComplexUser\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ComplexUserToUser\"}],\"dbName\":\"complex_users\"},\"Sport\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"is_active\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"courts\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"CourtToSport\"}],\"dbName\":\"sports\"},\"Court\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complexId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_id\"},{\"name\":\"sportId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"sport_id\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"slotDurationMinutes\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"slot_duration_minutes\"},{\"name\":\"basePrice\",\"kind\":\"scalar\",\"type\":\"Decimal\",\"dbName\":\"base_price\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToCourt\"},{\"name\":\"sport\",\"kind\":\"object\",\"type\":\"Sport\",\"relationName\":\"CourtToSport\"},{\"name\":\"availabilities\",\"kind\":\"object\",\"type\":\"CourtAvailability\",\"relationName\":\"CourtToCourtAvailability\"},{\"name\":\"priceRules\",\"kind\":\"object\",\"type\":\"CourtPriceRule\",\"relationName\":\"CourtToCourtPriceRule\"},{\"name\":\"bookings\",\"kind\":\"object\",\"type\":\"CourtBooking\",\"relationName\":\"CourtToCourtBooking\"}],\"dbName\":\"courts\"},\"CourtAvailability\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"courtId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"court_id\"},{\"name\":\"dayOfWeek\",\"kind\":\"enum\",\"type\":\"DayOfWeek\",\"dbName\":\"day_of_week\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"start_time\"},{\"name\":\"endTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"end_time\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"court\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"CourtToCourtAvailability\"}],\"dbName\":\"court_availabilities\"},\"CourtPriceRule\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"courtId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"court_id\"},{\"name\":\"dayOfWeek\",\"kind\":\"enum\",\"type\":\"DayOfWeek\",\"dbName\":\"day_of_week\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"start_time\"},{\"name\":\"endTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"end_time\"},{\"name\":\"price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"is_active\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"court\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"CourtToCourtPriceRule\"}],\"dbName\":\"court_price_rules\"},\"CourtBooking\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bookingCode\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"booking_code\"},{\"name\":\"courtId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"court_id\"},{\"name\":\"bookingDate\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"booking_date\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"start_time\"},{\"name\":\"endTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"end_time\"},{\"name\":\"customerName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"customer_name\"},{\"name\":\"customerPhone\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"customer_phone\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"CourtBookingStatus\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"court\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"CourtToCourtBooking\"}],\"dbName\":\"court_bookings\"},\"OnboardingRequest\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fullName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"full_name\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"otpHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"otp_hash\"},{\"name\":\"otpExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"otp_expires_at\"},{\"name\":\"otpAttempts\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"otp_attempts\"},{\"name\":\"otpLastSentAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"otp_last_sent_at\"},{\"name\":\"otpResendCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"otp_resend_count\"},{\"name\":\"emailVerifiedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"email_verified_at\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"completed_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"onboarding_requests\"},\"PasswordResetRequest\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"otpHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"otp_hash\"},{\"name\":\"otpExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"otp_expires_at\"},{\"name\":\"otpAttempts\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"otp_attempts\"},{\"name\":\"otpLastSentAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"otp_last_sent_at\"},{\"name\":\"otpResendCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"otp_resend_count\"},{\"name\":\"usedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"used_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"password_reset_requests\"},\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"id\"},{\"name\":\"supabaseUserId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"supabase_user_id\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fullName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"full_name\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"complexes\",\"kind\":\"object\",\"type\":\"ComplexUser\",\"relationName\":\"ComplexUserToUser\"}],\"dbName\":\"users\"},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"id\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"expires_at\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"ip_address\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_agent\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"session\"},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"id\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"},{\"name\":\"accountId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"account_id\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_id\"},{\"name\":\"accessToken\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"access_token\"},{\"name\":\"refreshToken\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"refresh_token\"},{\"name\":\"accessTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"access_token_expires_at\"},{\"name\":\"refreshTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"refresh_token_expires_at\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"scope\"},{\"name\":\"idToken\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"id_token\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"password\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"account\"},\"Verification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"id\"},{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"expires_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"verification\"}},\"enums\":{},\"types\":{}}") config.parameterizationSchema = { - strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"complexes\",\"_count\",\"plan\",\"complex\",\"user\",\"users\",\"courts\",\"sport\",\"court\",\"availabilities\",\"priceRules\",\"bookings\",\"Complex.findUnique\",\"Complex.findUniqueOrThrow\",\"Complex.findFirst\",\"Complex.findFirstOrThrow\",\"Complex.findMany\",\"data\",\"Complex.createOne\",\"Complex.createMany\",\"Complex.createManyAndReturn\",\"Complex.updateOne\",\"Complex.updateMany\",\"Complex.updateManyAndReturn\",\"create\",\"update\",\"Complex.upsertOne\",\"Complex.deleteOne\",\"Complex.deleteMany\",\"having\",\"_min\",\"_max\",\"Complex.groupBy\",\"Complex.aggregate\",\"ComplexUser.findUnique\",\"ComplexUser.findUniqueOrThrow\",\"ComplexUser.findFirst\",\"ComplexUser.findFirstOrThrow\",\"ComplexUser.findMany\",\"ComplexUser.createOne\",\"ComplexUser.createMany\",\"ComplexUser.createManyAndReturn\",\"ComplexUser.updateOne\",\"ComplexUser.updateMany\",\"ComplexUser.updateManyAndReturn\",\"ComplexUser.upsertOne\",\"ComplexUser.deleteOne\",\"ComplexUser.deleteMany\",\"ComplexUser.groupBy\",\"ComplexUser.aggregate\",\"Sport.findUnique\",\"Sport.findUniqueOrThrow\",\"Sport.findFirst\",\"Sport.findFirstOrThrow\",\"Sport.findMany\",\"Sport.createOne\",\"Sport.createMany\",\"Sport.createManyAndReturn\",\"Sport.updateOne\",\"Sport.updateMany\",\"Sport.updateManyAndReturn\",\"Sport.upsertOne\",\"Sport.deleteOne\",\"Sport.deleteMany\",\"Sport.groupBy\",\"Sport.aggregate\",\"Court.findUnique\",\"Court.findUniqueOrThrow\",\"Court.findFirst\",\"Court.findFirstOrThrow\",\"Court.findMany\",\"Court.createOne\",\"Court.createMany\",\"Court.createManyAndReturn\",\"Court.updateOne\",\"Court.updateMany\",\"Court.updateManyAndReturn\",\"Court.upsertOne\",\"Court.deleteOne\",\"Court.deleteMany\",\"_avg\",\"_sum\",\"Court.groupBy\",\"Court.aggregate\",\"CourtAvailability.findUnique\",\"CourtAvailability.findUniqueOrThrow\",\"CourtAvailability.findFirst\",\"CourtAvailability.findFirstOrThrow\",\"CourtAvailability.findMany\",\"CourtAvailability.createOne\",\"CourtAvailability.createMany\",\"CourtAvailability.createManyAndReturn\",\"CourtAvailability.updateOne\",\"CourtAvailability.updateMany\",\"CourtAvailability.updateManyAndReturn\",\"CourtAvailability.upsertOne\",\"CourtAvailability.deleteOne\",\"CourtAvailability.deleteMany\",\"CourtAvailability.groupBy\",\"CourtAvailability.aggregate\",\"CourtPriceRule.findUnique\",\"CourtPriceRule.findUniqueOrThrow\",\"CourtPriceRule.findFirst\",\"CourtPriceRule.findFirstOrThrow\",\"CourtPriceRule.findMany\",\"CourtPriceRule.createOne\",\"CourtPriceRule.createMany\",\"CourtPriceRule.createManyAndReturn\",\"CourtPriceRule.updateOne\",\"CourtPriceRule.updateMany\",\"CourtPriceRule.updateManyAndReturn\",\"CourtPriceRule.upsertOne\",\"CourtPriceRule.deleteOne\",\"CourtPriceRule.deleteMany\",\"CourtPriceRule.groupBy\",\"CourtPriceRule.aggregate\",\"CourtBooking.findUnique\",\"CourtBooking.findUniqueOrThrow\",\"CourtBooking.findFirst\",\"CourtBooking.findFirstOrThrow\",\"CourtBooking.findMany\",\"CourtBooking.createOne\",\"CourtBooking.createMany\",\"CourtBooking.createManyAndReturn\",\"CourtBooking.updateOne\",\"CourtBooking.updateMany\",\"CourtBooking.updateManyAndReturn\",\"CourtBooking.upsertOne\",\"CourtBooking.deleteOne\",\"CourtBooking.deleteMany\",\"CourtBooking.groupBy\",\"CourtBooking.aggregate\",\"OnboardingRequest.findUnique\",\"OnboardingRequest.findUniqueOrThrow\",\"OnboardingRequest.findFirst\",\"OnboardingRequest.findFirstOrThrow\",\"OnboardingRequest.findMany\",\"OnboardingRequest.createOne\",\"OnboardingRequest.createMany\",\"OnboardingRequest.createManyAndReturn\",\"OnboardingRequest.updateOne\",\"OnboardingRequest.updateMany\",\"OnboardingRequest.updateManyAndReturn\",\"OnboardingRequest.upsertOne\",\"OnboardingRequest.deleteOne\",\"OnboardingRequest.deleteMany\",\"OnboardingRequest.groupBy\",\"OnboardingRequest.aggregate\",\"PasswordResetRequest.findUnique\",\"PasswordResetRequest.findUniqueOrThrow\",\"PasswordResetRequest.findFirst\",\"PasswordResetRequest.findFirstOrThrow\",\"PasswordResetRequest.findMany\",\"PasswordResetRequest.createOne\",\"PasswordResetRequest.createMany\",\"PasswordResetRequest.createManyAndReturn\",\"PasswordResetRequest.updateOne\",\"PasswordResetRequest.updateMany\",\"PasswordResetRequest.updateManyAndReturn\",\"PasswordResetRequest.upsertOne\",\"PasswordResetRequest.deleteOne\",\"PasswordResetRequest.deleteMany\",\"PasswordResetRequest.groupBy\",\"PasswordResetRequest.aggregate\",\"Plan.findUnique\",\"Plan.findUniqueOrThrow\",\"Plan.findFirst\",\"Plan.findFirstOrThrow\",\"Plan.findMany\",\"Plan.createOne\",\"Plan.createMany\",\"Plan.createManyAndReturn\",\"Plan.updateOne\",\"Plan.updateMany\",\"Plan.updateManyAndReturn\",\"Plan.upsertOne\",\"Plan.deleteOne\",\"Plan.deleteMany\",\"Plan.groupBy\",\"Plan.aggregate\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"User.groupBy\",\"User.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"supabaseUserId\",\"email\",\"fullName\",\"createdAt\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"every\",\"some\",\"none\",\"code\",\"name\",\"price\",\"rules\",\"lastUpdatedAt\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"otpHash\",\"otpExpiresAt\",\"otpAttempts\",\"otpLastSentAt\",\"otpResendCount\",\"usedAt\",\"emailVerifiedAt\",\"completedAt\",\"bookingCode\",\"courtId\",\"bookingDate\",\"startTime\",\"endTime\",\"customerName\",\"customerPhone\",\"CourtBookingStatus\",\"status\",\"DayOfWeek\",\"dayOfWeek\",\"isActive\",\"complexId\",\"sportId\",\"slotDurationMinutes\",\"basePrice\",\"slug\",\"userId\",\"ComplexUserRole\",\"role\",\"complexName\",\"physicalAddress\",\"city\",\"state\",\"country\",\"complexSlug\",\"adminEmail\",\"planCode\",\"courtId_bookingDate_startTime\",\"complexId_userId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "6gRosAERBQAA_gIAIAgAALUCACAJAADkAgAgxwEAAP0CADDIAQAABQAQyQEAAP0CADDKAQEAAAABzgFAALQCACHPAUAAtAIAIYUCAQCzAgAhhgIBAPACACGHAgEA8AIAIYgCAQDwAgAhiQIBAPACACGKAgEAAAABiwIBALMCACGMAgEA8AIAIQEAAAABACAJAwAAwAIAIMcBAAC9AgAwyAEAAAMAEMkBAAC9AgAw3gEBALMCACHfAQEAswIAIeABEAC-AgAh4QEAAL8CACDiAUAAtAIAIQEAAAADACARBQAA_gIAIAgAALUCACAJAADkAgAgxwEAAP0CADDIAQAABQAQyQEAAP0CADDKAQEAsgIAIc4BQAC0AgAhzwFAALQCACGFAgEAswIAIYYCAQDwAgAhhwIBAPACACGIAgEA8AIAIYkCAQDwAgAhigIBALMCACGLAgEAswIAIYwCAQDwAgAhCAUAALoEACAIAACVAwAgCQAAqgQAIIYCAAD4AwAghwIAAPgDACCIAgAA-AMAIIkCAAD4AwAgjAIAAPgDACADAAAABQAgAQAABgAwAgAAAQAgAQAAAAUAIAkGAAD0AgAgBwAA_AIAIMcBAAD6AgAwyAEAAAkAEMkBAAD6AgAwzgFAALQCACH9AQEAsgIAIYICAQCyAgAhhAIAAPsChAIiAgYAALQEACAHAAC5BAAgCgYAAPQCACAHAAD8AgAgxwEAAPoCADDIAQAACQAQyQEAAPoCADDOAUAAtAIAIf0BAQCyAgAhggIBALICACGEAgAA-wKEAiKOAgAA-QIAIAMAAAAJACABAAAKADACAAALACADAAAACQAgAQAACgAwAgAACwAgAQAAAAkAIBAGAAD0AgAgCgAA9QIAIAwAAPYCACANAAD3AgAgDgAA-AIAIMcBAADzAgAwyAEAAA8AEMkBAADzAgAwygEBALICACHOAUAAtAIAIc8BQAC0AgAh3wEBALMCACH9AQEAsgIAIf4BAQCyAgAh_wECAMoCACGAAhAAvgIAIQUGAAC0BAAgCgAAtQQAIAwAALYEACANAAC3BAAgDgAAuAQAIBAGAAD0AgAgCgAA9QIAIAwAAPYCACANAAD3AgAgDgAA-AIAIMcBAADzAgAwyAEAAA8AEMkBAADzAgAwygEBAAAAAc4BQAC0AgAhzwFAALQCACHfAQEAswIAIf0BAQCyAgAh_gEBALICACH_AQIAygIAIYACEAC-AgAhAwAAAA8AIAEAABAAMAIAABEAIAMAAAAPACABAAAQADACAAARACABAAAADwAgCgsAAO0CACDHAQAA8QIAMMgBAAAVABDJAQAA8QIAMMoBAQCyAgAhzgFAALQCACHyAQEAsgIAIfQBAQCzAgAh9QEBALMCACH7AQAA8gL7ASIBCwAAswQAIAoLAADtAgAgxwEAAPECADDIAQAAFQAQyQEAAPECADDKAQEAAAABzgFAALQCACHyAQEAsgIAIfQBAQCzAgAh9QEBALMCACH7AQAA8gL7ASIDAAAAFQAgAQAAFgAwAgAAFwAgDQsAAO0CACDHAQAA7gIAMMgBAAAZABDJAQAA7gIAMMoBAQCyAgAhzgFAALQCACHPAUAAtAIAIeABEAC-AgAh8gEBALICACH0AQEA8AIAIfUBAQDwAgAh-wEAAO8C-wEj_AEgAOMCACEECwAAswQAIPQBAAD4AwAg9QEAAPgDACD7AQAA-AMAIA0LAADtAgAgxwEAAO4CADDIAQAAGQAQyQEAAO4CADDKAQEAAAABzgFAALQCACHPAUAAtAIAIeABEAC-AgAh8gEBALICACH0AQEA8AIAIfUBAQDwAgAh-wEAAO8C-wEj_AEgAOMCACEDAAAAGQAgAQAAGgAwAgAAGwAgDwsAAO0CACDHAQAA6wIAMMgBAAAdABDJAQAA6wIAMMoBAQCyAgAhzgFAALQCACHPAUAAtAIAIfEBAQCzAgAh8gEBALICACHzAUAAtAIAIfQBAQCzAgAh9QEBALMCACH2AQEAswIAIfcBAQCzAgAh-QEAAOwC-QEiAQsAALMEACAQCwAA7QIAIMcBAADrAgAwyAEAAB0AEMkBAADrAgAwygEBAAAAAc4BQAC0AgAhzwFAALQCACHxAQEAAAAB8gEBALICACHzAUAAtAIAIfQBAQCzAgAh9QEBALMCACH2AQEAswIAIfcBAQCzAgAh-QEAAOwC-QEijQIAAOoCACADAAAAHQAgAQAAHgAwAgAAHwAgAQAAABUAIAEAAAAZACABAAAAHQAgAQAAAAkAIAEAAAAPACABAAAAAQAgAwAAAAUAIAEAAAYAMAIAAAEAIAMAAAAFACABAAAGADACAAABACADAAAABQAgAQAABgAwAgAAAQAgDgUAALIEACAIAAD0AwAgCQAA9QMAIMoBAQAAAAHOAUAAAAABzwFAAAAAAYUCAQAAAAGGAgEAAAABhwIBAAAAAYgCAQAAAAGJAgEAAAABigIBAAAAAYsCAQAAAAGMAgEAAAABARQAACoAIAvKAQEAAAABzgFAAAAAAc8BQAAAAAGFAgEAAAABhgIBAAAAAYcCAQAAAAGIAgEAAAABiQIBAAAAAYoCAQAAAAGLAgEAAAABjAIBAAAAAQEUAAAsADABFAAALAAwAQAAAAMAIA4FAACxBAAgCAAAqQMAIAkAAKoDACDKAQEAggMAIc4BQACDAwAhzwFAAIMDACGFAgEAggMAIYYCAQCnAwAhhwIBAKcDACGIAgEApwMAIYkCAQCnAwAhigIBAIIDACGLAgEAggMAIYwCAQCnAwAhAgAAAAEAIBQAADAAIAvKAQEAggMAIc4BQACDAwAhzwFAAIMDACGFAgEAggMAIYYCAQCnAwAhhwIBAKcDACGIAgEApwMAIYkCAQCnAwAhigIBAIIDACGLAgEAggMAIYwCAQCnAwAhAgAAAAUAIBQAADIAIAIAAAAFACAUAAAyACABAAAAAwAgAwAAAAEAIBsAACoAIBwAADAAIAEAAAABACABAAAABQAgCAQAAK4EACAhAACwBAAgIgAArwQAIIYCAAD4AwAghwIAAPgDACCIAgAA-AMAIIkCAAD4AwAgjAIAAPgDACAOxwEAAOkCADDIAQAAOgAQyQEAAOkCADDKAQEAqAIAIc4BQACqAgAhzwFAAKoCACGFAgEAqQIAIYYCAQDUAgAhhwIBANQCACGIAgEA1AIAIYkCAQDUAgAhigIBAKkCACGLAgEAqQIAIYwCAQDUAgAhAwAAAAUAIAEAADkAMCAAADoAIAMAAAAFACABAAAGADACAAABACABAAAACwAgAQAAAAsAIAMAAAAJACABAAAKADACAAALACADAAAACQAgAQAACgAwAgAACwAgAwAAAAkAIAEAAAoAMAIAAAsAIAYGAACTAwAgBwAA8gMAIM4BQAAAAAH9AQEAAAABggIBAAAAAYQCAAAAhAICARQAAEIAIATOAUAAAAAB_QEBAAAAAYICAQAAAAGEAgAAAIQCAgEUAABEADABFAAARAAwBgYAAJEDACAHAADwAwAgzgFAAIMDACH9AQEAggMAIYICAQCCAwAhhAIAAI8DhAIiAgAAAAsAIBQAAEcAIATOAUAAgwMAIf0BAQCCAwAhggIBAIIDACGEAgAAjwOEAiICAAAACQAgFAAASQAgAgAAAAkAIBQAAEkAIAMAAAALACAbAABCACAcAABHACABAAAACwAgAQAAAAkAIAMEAACrBAAgIQAArQQAICIAAKwEACAHxwEAAOUCADDIAQAAUAAQyQEAAOUCADDOAUAAqgIAIf0BAQCoAgAhggIBAKgCACGEAgAA5gKEAiIDAAAACQAgAQAATwAwIAAAUAAgAwAAAAkAIAEAAAoAMAIAAAsAIAoJAADkAgAgxwEAAOICADDIAQAAVgAQyQEAAOICADDKAQEAAAABzgFAALQCACHPAUAAtAIAId8BAQAAAAH8ASAA4wIAIYECAQAAAAEBAAAAUwAgAQAAAFMAIAoJAADkAgAgxwEAAOICADDIAQAAVgAQyQEAAOICADDKAQEAsgIAIc4BQAC0AgAhzwFAALQCACHfAQEAswIAIfwBIADjAgAhgQIBALMCACEBCQAAqgQAIAMAAABWACABAABXADACAABTACADAAAAVgAgAQAAVwAwAgAAUwAgAwAAAFYAIAEAAFcAMAIAAFMAIAcJAACpBAAgygEBAAAAAc4BQAAAAAHPAUAAAAAB3wEBAAAAAfwBIAAAAAGBAgEAAAABARQAAFsAIAbKAQEAAAABzgFAAAAAAc8BQAAAAAHfAQEAAAAB_AEgAAAAAYECAQAAAAEBFAAAXQAwARQAAF0AMAcJAACfBAAgygEBAIIDACHOAUAAgwMAIc8BQACDAwAh3wEBAIIDACH8ASAA0wMAIYECAQCCAwAhAgAAAFMAIBQAAGAAIAbKAQEAggMAIc4BQACDAwAhzwFAAIMDACHfAQEAggMAIfwBIADTAwAhgQIBAIIDACECAAAAVgAgFAAAYgAgAgAAAFYAIBQAAGIAIAMAAABTACAbAABbACAcAABgACABAAAAUwAgAQAAAFYAIAMEAACcBAAgIQAAngQAICIAAJ0EACAJxwEAAOECADDIAQAAaQAQyQEAAOECADDKAQEAqAIAIc4BQACqAgAhzwFAAKoCACHfAQEAqQIAIfwBIADVAgAhgQIBAKkCACEDAAAAVgAgAQAAaAAwIAAAaQAgAwAAAFYAIAEAAFcAMAIAAFMAIAEAAAARACABAAAAEQAgAwAAAA8AIAEAABAAMAIAABEAIAMAAAAPACABAAAQADACAAARACADAAAADwAgAQAAEAAwAgAAEQAgDQYAAJsEACAKAADkAwAgDAAA5QMAIA0AAOYDACAOAADnAwAgygEBAAAAAc4BQAAAAAHPAUAAAAAB3wEBAAAAAf0BAQAAAAH-AQEAAAAB_wECAAAAAYACEAAAAAEBFAAAcQAgCMoBAQAAAAHOAUAAAAABzwFAAAAAAd8BAQAAAAH9AQEAAAAB_gEBAAAAAf8BAgAAAAGAAhAAAAABARQAAHMAMAEUAABzADANBgAAmgQAIAoAALcDACAMAAC4AwAgDQAAuQMAIA4AALoDACDKAQEAggMAIc4BQACDAwAhzwFAAIMDACHfAQEAggMAIf0BAQCCAwAh_gEBAIIDACH_AQIAtQMAIYACEACbAwAhAgAAABEAIBQAAHYAIAjKAQEAggMAIc4BQACDAwAhzwFAAIMDACHfAQEAggMAIf0BAQCCAwAh_gEBAIIDACH_AQIAtQMAIYACEACbAwAhAgAAAA8AIBQAAHgAIAIAAAAPACAUAAB4ACADAAAAEQAgGwAAcQAgHAAAdgAgAQAAABEAIAEAAAAPACAFBAAAlQQAICEAAJgEACAiAACXBAAgUwAAlgQAIFQAAJkEACALxwEAAOACADDIAQAAfwAQyQEAAOACADDKAQEAqAIAIc4BQACqAgAhzwFAAKoCACHfAQEAqQIAIf0BAQCoAgAh_gEBAKgCACH_AQIAwgIAIYACEAC4AgAhAwAAAA8AIAEAAH4AMCAAAH8AIAMAAAAPACABAAAQADACAAARACABAAAAFwAgAQAAABcAIAMAAAAVACABAAAWADACAAAXACADAAAAFQAgAQAAFgAwAgAAFwAgAwAAABUAIAEAABYAMAIAABcAIAcLAACUBAAgygEBAAAAAc4BQAAAAAHyAQEAAAAB9AEBAAAAAfUBAQAAAAH7AQAAAPsBAgEUAACHAQAgBsoBAQAAAAHOAUAAAAAB8gEBAAAAAfQBAQAAAAH1AQEAAAAB-wEAAAD7AQIBFAAAiQEAMAEUAACJAQAwBwsAAJMEACDKAQEAggMAIc4BQACDAwAh8gEBAIIDACH0AQEAggMAIfUBAQCCAwAh-wEAAOAD-wEiAgAAABcAIBQAAIwBACAGygEBAIIDACHOAUAAgwMAIfIBAQCCAwAh9AEBAIIDACH1AQEAggMAIfsBAADgA_sBIgIAAAAVACAUAACOAQAgAgAAABUAIBQAAI4BACADAAAAFwAgGwAAhwEAIBwAAIwBACABAAAAFwAgAQAAABUAIAMEAACQBAAgIQAAkgQAICIAAJEEACAJxwEAANwCADDIAQAAlQEAEMkBAADcAgAwygEBAKgCACHOAUAAqgIAIfIBAQCoAgAh9AEBAKkCACH1AQEAqQIAIfsBAADdAvsBIgMAAAAVACABAACUAQAwIAAAlQEAIAMAAAAVACABAAAWADACAAAXACABAAAAGwAgAQAAABsAIAMAAAAZACABAAAaADACAAAbACADAAAAGQAgAQAAGgAwAgAAGwAgAwAAABkAIAEAABoAMAIAABsAIAoLAACPBAAgygEBAAAAAc4BQAAAAAHPAUAAAAAB4AEQAAAAAfIBAQAAAAH0AQEAAAAB9QEBAAAAAfsBAAAA-wED_AEgAAAAAQEUAACdAQAgCcoBAQAAAAHOAUAAAAABzwFAAAAAAeABEAAAAAHyAQEAAAAB9AEBAAAAAfUBAQAAAAH7AQAAAPsBA_wBIAAAAAEBFAAAnwEAMAEUAACfAQAwCgsAAI4EACDKAQEAggMAIc4BQACDAwAhzwFAAIMDACHgARAAmwMAIfIBAQCCAwAh9AEBAKcDACH1AQEApwMAIfsBAADSA_sBI_wBIADTAwAhAgAAABsAIBQAAKIBACAJygEBAIIDACHOAUAAgwMAIc8BQACDAwAh4AEQAJsDACHyAQEAggMAIfQBAQCnAwAh9QEBAKcDACH7AQAA0gP7ASP8ASAA0wMAIQIAAAAZACAUAACkAQAgAgAAABkAIBQAAKQBACADAAAAGwAgGwAAnQEAIBwAAKIBACABAAAAGwAgAQAAABkAIAgEAACJBAAgIQAAjAQAICIAAIsEACBTAACKBAAgVAAAjQQAIPQBAAD4AwAg9QEAAPgDACD7AQAA-AMAIAzHAQAA0gIAMMgBAACrAQAQyQEAANICADDKAQEAqAIAIc4BQACqAgAhzwFAAKoCACHgARAAuAIAIfIBAQCoAgAh9AEBANQCACH1AQEA1AIAIfsBAADTAvsBI_wBIADVAgAhAwAAABkAIAEAAKoBADAgAACrAQAgAwAAABkAIAEAABoAMAIAABsAIAEAAAAfACABAAAAHwAgAwAAAB0AIAEAAB4AMAIAAB8AIAMAAAAdACABAAAeADACAAAfACADAAAAHQAgAQAAHgAwAgAAHwAgDAsAAIgEACDKAQEAAAABzgFAAAAAAc8BQAAAAAHxAQEAAAAB8gEBAAAAAfMBQAAAAAH0AQEAAAAB9QEBAAAAAfYBAQAAAAH3AQEAAAAB-QEAAAD5AQIBFAAAswEAIAvKAQEAAAABzgFAAAAAAc8BQAAAAAHxAQEAAAAB8gEBAAAAAfMBQAAAAAH0AQEAAAAB9QEBAAAAAfYBAQAAAAH3AQEAAAAB-QEAAAD5AQIBFAAAtQEAMAEUAAC1AQAwDAsAAIcEACDKAQEAggMAIc4BQACDAwAhzwFAAIMDACHxAQEAggMAIfIBAQCCAwAh8wFAAIMDACH0AQEAggMAIfUBAQCCAwAh9gEBAIIDACH3AQEAggMAIfkBAADFA_kBIgIAAAAfACAUAAC4AQAgC8oBAQCCAwAhzgFAAIMDACHPAUAAgwMAIfEBAQCCAwAh8gEBAIIDACHzAUAAgwMAIfQBAQCCAwAh9QEBAIIDACH2AQEAggMAIfcBAQCCAwAh-QEAAMUD-QEiAgAAAB0AIBQAALoBACACAAAAHQAgFAAAugEAIAMAAAAfACAbAACzAQAgHAAAuAEAIAEAAAAfACABAAAAHQAgAwQAAIQEACAhAACGBAAgIgAAhQQAIA7HAQAAzgIAMMgBAADBAQAQyQEAAM4CADDKAQEAqAIAIc4BQACqAgAhzwFAAKoCACHxAQEAqQIAIfIBAQCoAgAh8wFAAKoCACH0AQEAqQIAIfUBAQCpAgAh9gEBAKkCACH3AQEAqQIAIfkBAADPAvkBIgMAAAAdACABAADAAQAwIAAAwQEAIAMAAAAdACABAAAeADACAAAfACAPxwEAAM0CADDIAQAAxwEAEMkBAADNAgAwygEBAAAAAcwBAQCzAgAhzQEBALMCACHOAUAAtAIAIc8BQAC0AgAh6QEBALMCACHqAUAAtAIAIesBAgDKAgAh7AFAALQCACHtAQIAygIAIe8BQADLAgAh8AFAAMsCACEBAAAAxAEAIAEAAADEAQAgD8cBAADNAgAwyAEAAMcBABDJAQAAzQIAMMoBAQCyAgAhzAEBALMCACHNAQEAswIAIc4BQAC0AgAhzwFAALQCACHpAQEAswIAIeoBQAC0AgAh6wECAMoCACHsAUAAtAIAIe0BAgDKAgAh7wFAAMsCACHwAUAAywIAIQLvAQAA-AMAIPABAAD4AwAgAwAAAMcBACABAADIAQAwAgAAxAEAIAMAAADHAQAgAQAAyAEAMAIAAMQBACADAAAAxwEAIAEAAMgBADACAADEAQAgDMoBAQAAAAHMAQEAAAABzQEBAAAAAc4BQAAAAAHPAUAAAAAB6QEBAAAAAeoBQAAAAAHrAQIAAAAB7AFAAAAAAe0BAgAAAAHvAUAAAAAB8AFAAAAAAQEUAADMAQAgDMoBAQAAAAHMAQEAAAABzQEBAAAAAc4BQAAAAAHPAUAAAAAB6QEBAAAAAeoBQAAAAAHrAQIAAAAB7AFAAAAAAe0BAgAAAAHvAUAAAAAB8AFAAAAAAQEUAADOAQAwARQAAM4BADAMygEBAIIDACHMAQEAggMAIc0BAQCCAwAhzgFAAIMDACHPAUAAgwMAIekBAQCCAwAh6gFAAIMDACHrAQIAtQMAIewBQACDAwAh7QECALUDACHvAUAA_gMAIfABQAD-AwAhAgAAAMQBACAUAADRAQAgDMoBAQCCAwAhzAEBAIIDACHNAQEAggMAIc4BQACDAwAhzwFAAIMDACHpAQEAggMAIeoBQACDAwAh6wECALUDACHsAUAAgwMAIe0BAgC1AwAh7wFAAP4DACHwAUAA_gMAIQIAAADHAQAgFAAA0wEAIAIAAADHAQAgFAAA0wEAIAMAAADEAQAgGwAAzAEAIBwAANEBACABAAAAxAEAIAEAAADHAQAgBwQAAP8DACAhAACCBAAgIgAAgQQAIFMAAIAEACBUAACDBAAg7wEAAPgDACDwAQAA-AMAIA_HAQAAzAIAMMgBAADaAQAQyQEAAMwCADDKAQEAqAIAIcwBAQCpAgAhzQEBAKkCACHOAUAAqgIAIc8BQACqAgAh6QEBAKkCACHqAUAAqgIAIesBAgDCAgAh7AFAAKoCACHtAQIAwgIAIe8BQADDAgAh8AFAAMMCACEDAAAAxwEAIAEAANkBADAgAADaAQAgAwAAAMcBACABAADIAQAwAgAAxAEAIA3HAQAAyQIAMMgBAADgAQAQyQEAAMkCADDKAQEAAAABzAEBALMCACHOAUAAtAIAIc8BQAC0AgAh6QEBALMCACHqAUAAtAIAIesBAgDKAgAh7AFAALQCACHtAQIAygIAIe4BQADLAgAhAQAAAN0BACABAAAA3QEAIA3HAQAAyQIAMMgBAADgAQAQyQEAAMkCADDKAQEAsgIAIcwBAQCzAgAhzgFAALQCACHPAUAAtAIAIekBAQCzAgAh6gFAALQCACHrAQIAygIAIewBQAC0AgAh7QECAMoCACHuAUAAywIAIQHuAQAA-AMAIAMAAADgAQAgAQAA4QEAMAIAAN0BACADAAAA4AEAIAEAAOEBADACAADdAQAgAwAAAOABACABAADhAQAwAgAA3QEAIArKAQEAAAABzAEBAAAAAc4BQAAAAAHPAUAAAAAB6QEBAAAAAeoBQAAAAAHrAQIAAAAB7AFAAAAAAe0BAgAAAAHuAUAAAAABARQAAOUBACAKygEBAAAAAcwBAQAAAAHOAUAAAAABzwFAAAAAAekBAQAAAAHqAUAAAAAB6wECAAAAAewBQAAAAAHtAQIAAAAB7gFAAAAAAQEUAADnAQAwARQAAOcBADAKygEBAIIDACHMAQEAggMAIc4BQACDAwAhzwFAAIMDACHpAQEAggMAIeoBQACDAwAh6wECALUDACHsAUAAgwMAIe0BAgC1AwAh7gFAAP4DACECAAAA3QEAIBQAAOoBACAKygEBAIIDACHMAQEAggMAIc4BQACDAwAhzwFAAIMDACHpAQEAggMAIeoBQACDAwAh6wECALUDACHsAUAAgwMAIe0BAgC1AwAh7gFAAP4DACECAAAA4AEAIBQAAOwBACACAAAA4AEAIBQAAOwBACADAAAA3QEAIBsAAOUBACAcAADqAQAgAQAAAN0BACABAAAA4AEAIAYEAAD5AwAgIQAA_AMAICIAAPsDACBTAAD6AwAgVAAA_QMAIO4BAAD4AwAgDccBAADBAgAwyAEAAPMBABDJAQAAwQIAMMoBAQCoAgAhzAEBAKkCACHOAUAAqgIAIc8BQACqAgAh6QEBAKkCACHqAUAAqgIAIesBAgDCAgAh7AFAAKoCACHtAQIAwgIAIe4BQADDAgAhAwAAAOABACABAADyAQAwIAAA8wEAIAMAAADgAQAgAQAA4QEAMAIAAN0BACAJAwAAwAIAIMcBAAC9AgAwyAEAAAMAEMkBAAC9AgAw3gEBAAAAAd8BAQCzAgAh4AEQAL4CACHhAQAAvwIAIOIBQAC0AgAhAQAAAPYBACABAAAA9gEAIAEDAAD3AwAgAwAAAAMAIAEAAPkBADACAAD2AQAgAwAAAAMAIAEAAPkBADACAAD2AQAgAwAAAAMAIAEAAPkBADACAAD2AQAgBgMAAPYDACDeAQEAAAAB3wEBAAAAAeABEAAAAAHhAYAAAAAB4gFAAAAAAQEUAAD9AQAgBd4BAQAAAAHfAQEAAAAB4AEQAAAAAeEBgAAAAAHiAUAAAAABARQAAP8BADABFAAA_wEAMAYDAACcAwAg3gEBAIIDACHfAQEAggMAIeABEACbAwAh4QGAAAAAAeIBQACDAwAhAgAAAPYBACAUAACCAgAgBd4BAQCCAwAh3wEBAIIDACHgARAAmwMAIeEBgAAAAAHiAUAAgwMAIQIAAAADACAUAACEAgAgAgAAAAMAIBQAAIQCACADAAAA9gEAIBsAAP0BACAcAACCAgAgAQAAAPYBACABAAAAAwAgBQQAAJYDACAhAACZAwAgIgAAmAMAIFMAAJcDACBUAACaAwAgCMcBAAC3AgAwyAEAAIsCABDJAQAAtwIAMN4BAQCpAgAh3wEBAKkCACHgARAAuAIAIeEBAAC5AgAg4gFAAKoCACEDAAAAAwAgAQAAigIAMCAAAIsCACADAAAAAwAgAQAA-QEAMAIAAPYBACAKAwAAtQIAIMcBAACxAgAwyAEAAJECABDJAQAAsQIAMMoBAQAAAAHLAQEAAAABzAEBAAAAAc0BAQCzAgAhzgFAALQCACHPAUAAtAIAIQEAAACOAgAgAQAAAI4CACAKAwAAtQIAIMcBAACxAgAwyAEAAJECABDJAQAAsQIAMMoBAQCyAgAhywEBALICACHMAQEAswIAIc0BAQCzAgAhzgFAALQCACHPAUAAtAIAIQEDAACVAwAgAwAAAJECACABAACSAgAwAgAAjgIAIAMAAACRAgAgAQAAkgIAMAIAAI4CACADAAAAkQIAIAEAAJICADACAACOAgAgBwMAAJQDACDKAQEAAAABywEBAAAAAcwBAQAAAAHNAQEAAAABzgFAAAAAAc8BQAAAAAEBFAAAlgIAIAbKAQEAAAABywEBAAAAAcwBAQAAAAHNAQEAAAABzgFAAAAAAc8BQAAAAAEBFAAAmAIAMAEUAACYAgAwBwMAAIQDACDKAQEAggMAIcsBAQCCAwAhzAEBAIIDACHNAQEAggMAIc4BQACDAwAhzwFAAIMDACECAAAAjgIAIBQAAJsCACAGygEBAIIDACHLAQEAggMAIcwBAQCCAwAhzQEBAIIDACHOAUAAgwMAIc8BQACDAwAhAgAAAJECACAUAACdAgAgAgAAAJECACAUAACdAgAgAwAAAI4CACAbAACWAgAgHAAAmwIAIAEAAACOAgAgAQAAAJECACADBAAA_wIAICEAAIEDACAiAACAAwAgCccBAACnAgAwyAEAAKQCABDJAQAApwIAMMoBAQCoAgAhywEBAKgCACHMAQEAqQIAIc0BAQCpAgAhzgFAAKoCACHPAUAAqgIAIQMAAACRAgAgAQAAowIAMCAAAKQCACADAAAAkQIAIAEAAJICADACAACOAgAgCccBAACnAgAwyAEAAKQCABDJAQAApwIAMMoBAQCoAgAhywEBAKgCACHMAQEAqQIAIc0BAQCpAgAhzgFAAKoCACHPAUAAqgIAIQsEAACsAgAgIQAArwIAICIAAK8CACDQAQEAAAAB0QEBAAAABNIBAQAAAATTAQEAAAAB1AEBAAAAAdUBAQAAAAHWAQEAAAAB1wEBALACACEOBAAArAIAICEAAK8CACAiAACvAgAg0AEBAAAAAdEBAQAAAATSAQEAAAAE0wEBAAAAAdQBAQAAAAHVAQEAAAAB1gEBAAAAAdcBAQCuAgAh2AEBAAAAAdkBAQAAAAHaAQEAAAABCwQAAKwCACAhAACtAgAgIgAArQIAINABQAAAAAHRAUAAAAAE0gFAAAAABNMBQAAAAAHUAUAAAAAB1QFAAAAAAdYBQAAAAAHXAUAAqwIAIQsEAACsAgAgIQAArQIAICIAAK0CACDQAUAAAAAB0QFAAAAABNIBQAAAAATTAUAAAAAB1AFAAAAAAdUBQAAAAAHWAUAAAAAB1wFAAKsCACEI0AECAAAAAdEBAgAAAATSAQIAAAAE0wECAAAAAdQBAgAAAAHVAQIAAAAB1gECAAAAAdcBAgCsAgAhCNABQAAAAAHRAUAAAAAE0gFAAAAABNMBQAAAAAHUAUAAAAAB1QFAAAAAAdYBQAAAAAHXAUAArQIAIQ4EAACsAgAgIQAArwIAICIAAK8CACDQAQEAAAAB0QEBAAAABNIBAQAAAATTAQEAAAAB1AEBAAAAAdUBAQAAAAHWAQEAAAAB1wEBAK4CACHYAQEAAAAB2QEBAAAAAdoBAQAAAAEL0AEBAAAAAdEBAQAAAATSAQEAAAAE0wEBAAAAAdQBAQAAAAHVAQEAAAAB1gEBAAAAAdcBAQCvAgAh2AEBAAAAAdkBAQAAAAHaAQEAAAABCwQAAKwCACAhAACvAgAgIgAArwIAINABAQAAAAHRAQEAAAAE0gEBAAAABNMBAQAAAAHUAQEAAAAB1QEBAAAAAdYBAQAAAAHXAQEAsAIAIQoDAAC1AgAgxwEAALECADDIAQAAkQIAEMkBAACxAgAwygEBALICACHLAQEAsgIAIcwBAQCzAgAhzQEBALMCACHOAUAAtAIAIc8BQAC0AgAhCNABAQAAAAHRAQEAAAAE0gEBAAAABNMBAQAAAAHUAQEAAAAB1QEBAAAAAdYBAQAAAAHXAQEAtgIAIQvQAQEAAAAB0QEBAAAABNIBAQAAAATTAQEAAAAB1AEBAAAAAdUBAQAAAAHWAQEAAAAB1wEBAK8CACHYAQEAAAAB2QEBAAAAAdoBAQAAAAEI0AFAAAAAAdEBQAAAAATSAUAAAAAE0wFAAAAAAdQBQAAAAAHVAUAAAAAB1gFAAAAAAdcBQACtAgAhA9sBAAAJACDcAQAACQAg3QEAAAkAIAjQAQEAAAAB0QEBAAAABNIBAQAAAATTAQEAAAAB1AEBAAAAAdUBAQAAAAHWAQEAAAAB1wEBALYCACEIxwEAALcCADDIAQAAiwIAEMkBAAC3AgAw3gEBAKkCACHfAQEAqQIAIeABEAC4AgAh4QEAALkCACDiAUAAqgIAIQ0EAACsAgAgIQAAvAIAICIAALwCACBTAAC8AgAgVAAAvAIAINABEAAAAAHRARAAAAAE0gEQAAAABNMBEAAAAAHUARAAAAAB1QEQAAAAAdYBEAAAAAHXARAAuwIAIQ8EAACsAgAgIQAAugIAICIAALoCACDQAYAAAAAB0wGAAAAAAdQBgAAAAAHVAYAAAAAB1gGAAAAAAdcBgAAAAAHjAQEAAAAB5AEBAAAAAeUBAQAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAEM0AGAAAAAAdMBgAAAAAHUAYAAAAAB1QGAAAAAAdYBgAAAAAHXAYAAAAAB4wEBAAAAAeQBAQAAAAHlAQEAAAAB5gGAAAAAAecBgAAAAAHoAYAAAAABDQQAAKwCACAhAAC8AgAgIgAAvAIAIFMAALwCACBUAAC8AgAg0AEQAAAAAdEBEAAAAATSARAAAAAE0wEQAAAAAdQBEAAAAAHVARAAAAAB1gEQAAAAAdcBEAC7AgAhCNABEAAAAAHRARAAAAAE0gEQAAAABNMBEAAAAAHUARAAAAAB1QEQAAAAAdYBEAAAAAHXARAAvAIAIQkDAADAAgAgxwEAAL0CADDIAQAAAwAQyQEAAL0CADDeAQEAswIAId8BAQCzAgAh4AEQAL4CACHhAQAAvwIAIOIBQAC0AgAhCNABEAAAAAHRARAAAAAE0gEQAAAABNMBEAAAAAHUARAAAAAB1QEQAAAAAdYBEAAAAAHXARAAvAIAIQzQAYAAAAAB0wGAAAAAAdQBgAAAAAHVAYAAAAAB1gGAAAAAAdcBgAAAAAHjAQEAAAAB5AEBAAAAAeUBAQAAAAHmAYAAAAAB5wGAAAAAAegBgAAAAAED2wEAAAUAINwBAAAFACDdAQAABQAgDccBAADBAgAwyAEAAPMBABDJAQAAwQIAMMoBAQCoAgAhzAEBAKkCACHOAUAAqgIAIc8BQACqAgAh6QEBAKkCACHqAUAAqgIAIesBAgDCAgAh7AFAAKoCACHtAQIAwgIAIe4BQADDAgAhDQQAAKwCACAhAACsAgAgIgAArAIAIFMAAMgCACBUAACsAgAg0AECAAAAAdEBAgAAAATSAQIAAAAE0wECAAAAAdQBAgAAAAHVAQIAAAAB1gECAAAAAdcBAgDHAgAhCwQAAMUCACAhAADGAgAgIgAAxgIAINABQAAAAAHRAUAAAAAF0gFAAAAABdMBQAAAAAHUAUAAAAAB1QFAAAAAAdYBQAAAAAHXAUAAxAIAIQsEAADFAgAgIQAAxgIAICIAAMYCACDQAUAAAAAB0QFAAAAABdIBQAAAAAXTAUAAAAAB1AFAAAAAAdUBQAAAAAHWAUAAAAAB1wFAAMQCACEI0AECAAAAAdEBAgAAAAXSAQIAAAAF0wECAAAAAdQBAgAAAAHVAQIAAAAB1gECAAAAAdcBAgDFAgAhCNABQAAAAAHRAUAAAAAF0gFAAAAABdMBQAAAAAHUAUAAAAAB1QFAAAAAAdYBQAAAAAHXAUAAxgIAIQ0EAACsAgAgIQAArAIAICIAAKwCACBTAADIAgAgVAAArAIAINABAgAAAAHRAQIAAAAE0gECAAAABNMBAgAAAAHUAQIAAAAB1QECAAAAAdYBAgAAAAHXAQIAxwIAIQjQAQgAAAAB0QEIAAAABNIBCAAAAATTAQgAAAAB1AEIAAAAAdUBCAAAAAHWAQgAAAAB1wEIAMgCACENxwEAAMkCADDIAQAA4AEAEMkBAADJAgAwygEBALICACHMAQEAswIAIc4BQAC0AgAhzwFAALQCACHpAQEAswIAIeoBQAC0AgAh6wECAMoCACHsAUAAtAIAIe0BAgDKAgAh7gFAAMsCACEI0AECAAAAAdEBAgAAAATSAQIAAAAE0wECAAAAAdQBAgAAAAHVAQIAAAAB1gECAAAAAdcBAgCsAgAhCNABQAAAAAHRAUAAAAAF0gFAAAAABdMBQAAAAAHUAUAAAAAB1QFAAAAAAdYBQAAAAAHXAUAAxgIAIQ_HAQAAzAIAMMgBAADaAQAQyQEAAMwCADDKAQEAqAIAIcwBAQCpAgAhzQEBAKkCACHOAUAAqgIAIc8BQACqAgAh6QEBAKkCACHqAUAAqgIAIesBAgDCAgAh7AFAAKoCACHtAQIAwgIAIe8BQADDAgAh8AFAAMMCACEPxwEAAM0CADDIAQAAxwEAEMkBAADNAgAwygEBALICACHMAQEAswIAIc0BAQCzAgAhzgFAALQCACHPAUAAtAIAIekBAQCzAgAh6gFAALQCACHrAQIAygIAIewBQAC0AgAh7QECAMoCACHvAUAAywIAIfABQADLAgAhDscBAADOAgAwyAEAAMEBABDJAQAAzgIAMMoBAQCoAgAhzgFAAKoCACHPAUAAqgIAIfEBAQCpAgAh8gEBAKgCACHzAUAAqgIAIfQBAQCpAgAh9QEBAKkCACH2AQEAqQIAIfcBAQCpAgAh-QEAAM8C-QEiBwQAAKwCACAhAADRAgAgIgAA0QIAINABAAAA-QEC0QEAAAD5AQjSAQAAAPkBCNcBAADQAvkBIgcEAACsAgAgIQAA0QIAICIAANECACDQAQAAAPkBAtEBAAAA-QEI0gEAAAD5AQjXAQAA0AL5ASIE0AEAAAD5AQLRAQAAAPkBCNIBAAAA-QEI1wEAANEC-QEiDMcBAADSAgAwyAEAAKsBABDJAQAA0gIAMMoBAQCoAgAhzgFAAKoCACHPAUAAqgIAIeABEAC4AgAh8gEBAKgCACH0AQEA1AIAIfUBAQDUAgAh-wEAANMC-wEj_AEgANUCACEHBAAAxQIAICEAANsCACAiAADbAgAg0AEAAAD7AQPRAQAAAPsBCdIBAAAA-wEJ1wEAANoC-wEjDgQAAMUCACAhAADZAgAgIgAA2QIAINABAQAAAAHRAQEAAAAF0gEBAAAABdMBAQAAAAHUAQEAAAAB1QEBAAAAAdYBAQAAAAHXAQEA2AIAIdgBAQAAAAHZAQEAAAAB2gEBAAAAAQUEAACsAgAgIQAA1wIAICIAANcCACDQASAAAAAB1wEgANYCACEFBAAArAIAICEAANcCACAiAADXAgAg0AEgAAAAAdcBIADWAgAhAtABIAAAAAHXASAA1wIAIQ4EAADFAgAgIQAA2QIAICIAANkCACDQAQEAAAAB0QEBAAAABdIBAQAAAAXTAQEAAAAB1AEBAAAAAdUBAQAAAAHWAQEAAAAB1wEBANgCACHYAQEAAAAB2QEBAAAAAdoBAQAAAAEL0AEBAAAAAdEBAQAAAAXSAQEAAAAF0wEBAAAAAdQBAQAAAAHVAQEAAAAB1gEBAAAAAdcBAQDZAgAh2AEBAAAAAdkBAQAAAAHaAQEAAAABBwQAAMUCACAhAADbAgAgIgAA2wIAINABAAAA-wED0QEAAAD7AQnSAQAAAPsBCdcBAADaAvsBIwTQAQAAAPsBA9EBAAAA-wEJ0gEAAAD7AQnXAQAA2wL7ASMJxwEAANwCADDIAQAAlQEAEMkBAADcAgAwygEBAKgCACHOAUAAqgIAIfIBAQCoAgAh9AEBAKkCACH1AQEAqQIAIfsBAADdAvsBIgcEAACsAgAgIQAA3wIAICIAAN8CACDQAQAAAPsBAtEBAAAA-wEI0gEAAAD7AQjXAQAA3gL7ASIHBAAArAIAICEAAN8CACAiAADfAgAg0AEAAAD7AQLRAQAAAPsBCNIBAAAA-wEI1wEAAN4C-wEiBNABAAAA-wEC0QEAAAD7AQjSAQAAAPsBCNcBAADfAvsBIgvHAQAA4AIAMMgBAAB_ABDJAQAA4AIAMMoBAQCoAgAhzgFAAKoCACHPAUAAqgIAId8BAQCpAgAh_QEBAKgCACH-AQEAqAIAIf8BAgDCAgAhgAIQALgCACEJxwEAAOECADDIAQAAaQAQyQEAAOECADDKAQEAqAIAIc4BQACqAgAhzwFAAKoCACHfAQEAqQIAIfwBIADVAgAhgQIBAKkCACEKCQAA5AIAIMcBAADiAgAwyAEAAFYAEMkBAADiAgAwygEBALICACHOAUAAtAIAIc8BQAC0AgAh3wEBALMCACH8ASAA4wIAIYECAQCzAgAhAtABIAAAAAHXASAA1wIAIQPbAQAADwAg3AEAAA8AIN0BAAAPACAHxwEAAOUCADDIAQAAUAAQyQEAAOUCADDOAUAAqgIAIf0BAQCoAgAhggIBAKgCACGEAgAA5gKEAiIHBAAArAIAICEAAOgCACAiAADoAgAg0AEAAACEAgLRAQAAAIQCCNIBAAAAhAII1wEAAOcChAIiBwQAAKwCACAhAADoAgAgIgAA6AIAINABAAAAhAIC0QEAAACEAgjSAQAAAIQCCNcBAADnAoQCIgTQAQAAAIQCAtEBAAAAhAII0gEAAACEAgjXAQAA6AKEAiIOxwEAAOkCADDIAQAAOgAQyQEAAOkCADDKAQEAqAIAIc4BQACqAgAhzwFAAKoCACGFAgEAqQIAIYYCAQDUAgAhhwIBANQCACGIAgEA1AIAIYkCAQDUAgAhigIBAKkCACGLAgEAqQIAIYwCAQDUAgAhA_IBAQAAAAHzAUAAAAAB9AEBAAAAAQ8LAADtAgAgxwEAAOsCADDIAQAAHQAQyQEAAOsCADDKAQEAsgIAIc4BQAC0AgAhzwFAALQCACHxAQEAswIAIfIBAQCyAgAh8wFAALQCACH0AQEAswIAIfUBAQCzAgAh9gEBALMCACH3AQEAswIAIfkBAADsAvkBIgTQAQAAAPkBAtEBAAAA-QEI0gEAAAD5AQjXAQAA0QL5ASISBgAA9AIAIAoAAPUCACAMAAD2AgAgDQAA9wIAIA4AAPgCACDHAQAA8wIAMMgBAAAPABDJAQAA8wIAMMoBAQCyAgAhzgFAALQCACHPAUAAtAIAId8BAQCzAgAh_QEBALICACH-AQEAsgIAIf8BAgDKAgAhgAIQAL4CACGPAgAADwAgkAIAAA8AIA0LAADtAgAgxwEAAO4CADDIAQAAGQAQyQEAAO4CADDKAQEAsgIAIc4BQAC0AgAhzwFAALQCACHgARAAvgIAIfIBAQCyAgAh9AEBAPACACH1AQEA8AIAIfsBAADvAvsBI_wBIADjAgAhBNABAAAA-wED0QEAAAD7AQnSAQAAAPsBCdcBAADbAvsBIwvQAQEAAAAB0QEBAAAABdIBAQAAAAXTAQEAAAAB1AEBAAAAAdUBAQAAAAHWAQEAAAAB1wEBANkCACHYAQEAAAAB2QEBAAAAAdoBAQAAAAEKCwAA7QIAIMcBAADxAgAwyAEAABUAEMkBAADxAgAwygEBALICACHOAUAAtAIAIfIBAQCyAgAh9AEBALMCACH1AQEAswIAIfsBAADyAvsBIgTQAQAAAPsBAtEBAAAA-wEI0gEAAAD7AQjXAQAA3wL7ASIQBgAA9AIAIAoAAPUCACAMAAD2AgAgDQAA9wIAIA4AAPgCACDHAQAA8wIAMMgBAAAPABDJAQAA8wIAMMoBAQCyAgAhzgFAALQCACHPAUAAtAIAId8BAQCzAgAh_QEBALICACH-AQEAsgIAIf8BAgDKAgAhgAIQAL4CACETBQAA_gIAIAgAALUCACAJAADkAgAgxwEAAP0CADDIAQAABQAQyQEAAP0CADDKAQEAsgIAIc4BQAC0AgAhzwFAALQCACGFAgEAswIAIYYCAQDwAgAhhwIBAPACACGIAgEA8AIAIYkCAQDwAgAhigIBALMCACGLAgEAswIAIYwCAQDwAgAhjwIAAAUAIJACAAAFACAMCQAA5AIAIMcBAADiAgAwyAEAAFYAEMkBAADiAgAwygEBALICACHOAUAAtAIAIc8BQAC0AgAh3wEBALMCACH8ASAA4wIAIYECAQCzAgAhjwIAAFYAIJACAABWACAD2wEAABUAINwBAAAVACDdAQAAFQAgA9sBAAAZACDcAQAAGQAg3QEAABkAIAPbAQAAHQAg3AEAAB0AIN0BAAAdACAC_QEBAAAAAYICAQAAAAEJBgAA9AIAIAcAAPwCACDHAQAA-gIAMMgBAAAJABDJAQAA-gIAMM4BQAC0AgAh_QEBALICACGCAgEAsgIAIYQCAAD7AoQCIgTQAQAAAIQCAtEBAAAAhAII0gEAAACEAgjXAQAA6AKEAiIMAwAAtQIAIMcBAACxAgAwyAEAAJECABDJAQAAsQIAMMoBAQCyAgAhywEBALICACHMAQEAswIAIc0BAQCzAgAhzgFAALQCACHPAUAAtAIAIY8CAACRAgAgkAIAAJECACARBQAA_gIAIAgAALUCACAJAADkAgAgxwEAAP0CADDIAQAABQAQyQEAAP0CADDKAQEAsgIAIc4BQAC0AgAhzwFAALQCACGFAgEAswIAIYYCAQDwAgAhhwIBAPACACGIAgEA8AIAIYkCAQDwAgAhigIBALMCACGLAgEAswIAIYwCAQDwAgAhCwMAAMACACDHAQAAvQIAMMgBAAADABDJAQAAvQIAMN4BAQCzAgAh3wEBALMCACHgARAAvgIAIeEBAAC_AgAg4gFAALQCACGPAgAAAwAgkAIAAAMAIAAAAAGUAgEAAAABAZQCQAAAAAELGwAAhQMAMBwAAIoDADCRAgAAhgMAMJICAACHAwAwkwIAAIgDACCUAgAAiQMAMJUCAACJAwAwlgIAAIkDADCXAgAAiQMAMJgCAACLAwAwmQIAAIwDADAEBgAAkwMAIM4BQAAAAAH9AQEAAAABhAIAAACEAgICAAAACwAgGwAAkgMAIAMAAAALACAbAACSAwAgHAAAkAMAIAEUAADqBAAwCgYAAPQCACAHAAD8AgAgxwEAAPoCADDIAQAACQAQyQEAAPoCADDOAUAAtAIAIf0BAQCyAgAhggIBALICACGEAgAA-wKEAiKOAgAA-QIAIAIAAAALACAUAACQAwAgAgAAAI0DACAUAACOAwAgB8cBAACMAwAwyAEAAI0DABDJAQAAjAMAMM4BQAC0AgAh_QEBALICACGCAgEAsgIAIYQCAAD7AoQCIgfHAQAAjAMAMMgBAACNAwAQyQEAAIwDADDOAUAAtAIAIf0BAQCyAgAhggIBALICACGEAgAA-wKEAiIDzgFAAIMDACH9AQEAggMAIYQCAACPA4QCIgGUAgAAAIQCAgQGAACRAwAgzgFAAIMDACH9AQEAggMAIYQCAACPA4QCIgUbAADlBAAgHAAA6AQAIJECAADmBAAgkgIAAOcEACCXAgAAAQAgBAYAAJMDACDOAUAAAAAB_QEBAAAAAYQCAAAAhAICAxsAAOUEACCRAgAA5gQAIJcCAAABACAEGwAAhQMAMJECAACGAwAwkwIAAIgDACCXAgAAiQMAMAAAAAAAAAWUAhAAAAABmgIQAAAAAZsCEAAAAAGcAhAAAAABnQIQAAAAAQsbAACdAwAwHAAAogMAMJECAACeAwAwkgIAAJ8DADCTAgAAoAMAIJQCAAChAwAwlQIAAKEDADCWAgAAoQMAMJcCAAChAwAwmAIAAKMDADCZAgAApAMAMAwIAAD0AwAgCQAA9QMAIMoBAQAAAAHOAUAAAAABzwFAAAAAAYUCAQAAAAGGAgEAAAABhwIBAAAAAYgCAQAAAAGJAgEAAAABigIBAAAAAYsCAQAAAAECAAAAAQAgGwAA8wMAIAMAAAABACAbAADzAwAgHAAAqAMAIAEUAADkBAAwEQUAAP4CACAIAAC1AgAgCQAA5AIAIMcBAAD9AgAwyAEAAAUAEMkBAAD9AgAwygEBAAAAAc4BQAC0AgAhzwFAALQCACGFAgEAswIAIYYCAQDwAgAhhwIBAPACACGIAgEA8AIAIYkCAQDwAgAhigIBAAAAAYsCAQCzAgAhjAIBAPACACECAAAAAQAgFAAAqAMAIAIAAAClAwAgFAAApgMAIA7HAQAApAMAMMgBAAClAwAQyQEAAKQDADDKAQEAsgIAIc4BQAC0AgAhzwFAALQCACGFAgEAswIAIYYCAQDwAgAhhwIBAPACACGIAgEA8AIAIYkCAQDwAgAhigIBALMCACGLAgEAswIAIYwCAQDwAgAhDscBAACkAwAwyAEAAKUDABDJAQAApAMAMMoBAQCyAgAhzgFAALQCACHPAUAAtAIAIYUCAQCzAgAhhgIBAPACACGHAgEA8AIAIYgCAQDwAgAhiQIBAPACACGKAgEAswIAIYsCAQCzAgAhjAIBAPACACEKygEBAIIDACHOAUAAgwMAIc8BQACDAwAhhQIBAIIDACGGAgEApwMAIYcCAQCnAwAhiAIBAKcDACGJAgEApwMAIYoCAQCCAwAhiwIBAIIDACEBlAIBAAAAAQwIAACpAwAgCQAAqgMAIMoBAQCCAwAhzgFAAIMDACHPAUAAgwMAIYUCAQCCAwAhhgIBAKcDACGHAgEApwMAIYgCAQCnAwAhiQIBAKcDACGKAgEAggMAIYsCAQCCAwAhCxsAAOgDADAcAADsAwAwkQIAAOkDADCSAgAA6gMAMJMCAADrAwAglAIAAIkDADCVAgAAiQMAMJYCAACJAwAwlwIAAIkDADCYAgAA7QMAMJkCAACMAwAwCxsAAKsDADAcAACwAwAwkQIAAKwDADCSAgAArQMAMJMCAACuAwAglAIAAK8DADCVAgAArwMAMJYCAACvAwAwlwIAAK8DADCYAgAAsQMAMJkCAACyAwAwCwoAAOQDACAMAADlAwAgDQAA5gMAIA4AAOcDACDKAQEAAAABzgFAAAAAAc8BQAAAAAHfAQEAAAAB_gEBAAAAAf8BAgAAAAGAAhAAAAABAgAAABEAIBsAAOMDACADAAAAEQAgGwAA4wMAIBwAALYDACABFAAA4wQAMBAGAAD0AgAgCgAA9QIAIAwAAPYCACANAAD3AgAgDgAA-AIAIMcBAADzAgAwyAEAAA8AEMkBAADzAgAwygEBAAAAAc4BQAC0AgAhzwFAALQCACHfAQEAswIAIf0BAQCyAgAh_gEBALICACH_AQIAygIAIYACEAC-AgAhAgAAABEAIBQAALYDACACAAAAswMAIBQAALQDACALxwEAALIDADDIAQAAswMAEMkBAACyAwAwygEBALICACHOAUAAtAIAIc8BQAC0AgAh3wEBALMCACH9AQEAsgIAIf4BAQCyAgAh_wECAMoCACGAAhAAvgIAIQvHAQAAsgMAMMgBAACzAwAQyQEAALIDADDKAQEAsgIAIc4BQAC0AgAhzwFAALQCACHfAQEAswIAIf0BAQCyAgAh_gEBALICACH_AQIAygIAIYACEAC-AgAhB8oBAQCCAwAhzgFAAIMDACHPAUAAgwMAId8BAQCCAwAh_gEBAIIDACH_AQIAtQMAIYACEACbAwAhBZQCAgAAAAGaAgIAAAABmwICAAAAAZwCAgAAAAGdAgIAAAABCwoAALcDACAMAAC4AwAgDQAAuQMAIA4AALoDACDKAQEAggMAIc4BQACDAwAhzwFAAIMDACHfAQEAggMAIf4BAQCCAwAh_wECALUDACGAAhAAmwMAIQUbAADbBAAgHAAA4QQAIJECAADcBAAgkgIAAOAEACCXAgAAUwAgCxsAANYDADAcAADbAwAwkQIAANcDADCSAgAA2AMAMJMCAADZAwAglAIAANoDADCVAgAA2gMAMJYCAADaAwAwlwIAANoDADCYAgAA3AMAMJkCAADdAwAwCxsAAMgDADAcAADNAwAwkQIAAMkDADCSAgAAygMAMJMCAADLAwAglAIAAMwDADCVAgAAzAMAMJYCAADMAwAwlwIAAMwDADCYAgAAzgMAMJkCAADPAwAwCxsAALsDADAcAADAAwAwkQIAALwDADCSAgAAvQMAMJMCAAC-AwAglAIAAL8DADCVAgAAvwMAMJYCAAC_AwAwlwIAAL8DADCYAgAAwQMAMJkCAADCAwAwCsoBAQAAAAHOAUAAAAABzwFAAAAAAfEBAQAAAAHzAUAAAAAB9AEBAAAAAfUBAQAAAAH2AQEAAAAB9wEBAAAAAfkBAAAA-QECAgAAAB8AIBsAAMcDACADAAAAHwAgGwAAxwMAIBwAAMYDACABFAAA3wQAMBALAADtAgAgxwEAAOsCADDIAQAAHQAQyQEAAOsCADDKAQEAAAABzgFAALQCACHPAUAAtAIAIfEBAQAAAAHyAQEAsgIAIfMBQAC0AgAh9AEBALMCACH1AQEAswIAIfYBAQCzAgAh9wEBALMCACH5AQAA7AL5ASKNAgAA6gIAIAIAAAAfACAUAADGAwAgAgAAAMMDACAUAADEAwAgDscBAADCAwAwyAEAAMMDABDJAQAAwgMAMMoBAQCyAgAhzgFAALQCACHPAUAAtAIAIfEBAQCzAgAh8gEBALICACHzAUAAtAIAIfQBAQCzAgAh9QEBALMCACH2AQEAswIAIfcBAQCzAgAh-QEAAOwC-QEiDscBAADCAwAwyAEAAMMDABDJAQAAwgMAMMoBAQCyAgAhzgFAALQCACHPAUAAtAIAIfEBAQCzAgAh8gEBALICACHzAUAAtAIAIfQBAQCzAgAh9QEBALMCACH2AQEAswIAIfcBAQCzAgAh-QEAAOwC-QEiCsoBAQCCAwAhzgFAAIMDACHPAUAAgwMAIfEBAQCCAwAh8wFAAIMDACH0AQEAggMAIfUBAQCCAwAh9gEBAIIDACH3AQEAggMAIfkBAADFA_kBIgGUAgAAAPkBAgrKAQEAggMAIc4BQACDAwAhzwFAAIMDACHxAQEAggMAIfMBQACDAwAh9AEBAIIDACH1AQEAggMAIfYBAQCCAwAh9wEBAIIDACH5AQAAxQP5ASIKygEBAAAAAc4BQAAAAAHPAUAAAAAB8QEBAAAAAfMBQAAAAAH0AQEAAAAB9QEBAAAAAfYBAQAAAAH3AQEAAAAB-QEAAAD5AQIIygEBAAAAAc4BQAAAAAHPAUAAAAAB4AEQAAAAAfQBAQAAAAH1AQEAAAAB-wEAAAD7AQP8ASAAAAABAgAAABsAIBsAANUDACADAAAAGwAgGwAA1QMAIBwAANQDACABFAAA3gQAMA0LAADtAgAgxwEAAO4CADDIAQAAGQAQyQEAAO4CADDKAQEAAAABzgFAALQCACHPAUAAtAIAIeABEAC-AgAh8gEBALICACH0AQEA8AIAIfUBAQDwAgAh-wEAAO8C-wEj_AEgAOMCACECAAAAGwAgFAAA1AMAIAIAAADQAwAgFAAA0QMAIAzHAQAAzwMAMMgBAADQAwAQyQEAAM8DADDKAQEAsgIAIc4BQAC0AgAhzwFAALQCACHgARAAvgIAIfIBAQCyAgAh9AEBAPACACH1AQEA8AIAIfsBAADvAvsBI_wBIADjAgAhDMcBAADPAwAwyAEAANADABDJAQAAzwMAMMoBAQCyAgAhzgFAALQCACHPAUAAtAIAIeABEAC-AgAh8gEBALICACH0AQEA8AIAIfUBAQDwAgAh-wEAAO8C-wEj_AEgAOMCACEIygEBAIIDACHOAUAAgwMAIc8BQACDAwAh4AEQAJsDACH0AQEApwMAIfUBAQCnAwAh-wEAANID-wEj_AEgANMDACEBlAIAAAD7AQMBlAIgAAAAAQjKAQEAggMAIc4BQACDAwAhzwFAAIMDACHgARAAmwMAIfQBAQCnAwAh9QEBAKcDACH7AQAA0gP7ASP8ASAA0wMAIQjKAQEAAAABzgFAAAAAAc8BQAAAAAHgARAAAAAB9AEBAAAAAfUBAQAAAAH7AQAAAPsBA_wBIAAAAAEFygEBAAAAAc4BQAAAAAH0AQEAAAAB9QEBAAAAAfsBAAAA-wECAgAAABcAIBsAAOIDACADAAAAFwAgGwAA4gMAIBwAAOEDACABFAAA3QQAMAoLAADtAgAgxwEAAPECADDIAQAAFQAQyQEAAPECADDKAQEAAAABzgFAALQCACHyAQEAsgIAIfQBAQCzAgAh9QEBALMCACH7AQAA8gL7ASICAAAAFwAgFAAA4QMAIAIAAADeAwAgFAAA3wMAIAnHAQAA3QMAMMgBAADeAwAQyQEAAN0DADDKAQEAsgIAIc4BQAC0AgAh8gEBALICACH0AQEAswIAIfUBAQCzAgAh-wEAAPIC-wEiCccBAADdAwAwyAEAAN4DABDJAQAA3QMAMMoBAQCyAgAhzgFAALQCACHyAQEAsgIAIfQBAQCzAgAh9QEBALMCACH7AQAA8gL7ASIFygEBAIIDACHOAUAAgwMAIfQBAQCCAwAh9QEBAIIDACH7AQAA4AP7ASIBlAIAAAD7AQIFygEBAIIDACHOAUAAgwMAIfQBAQCCAwAh9QEBAIIDACH7AQAA4AP7ASIFygEBAAAAAc4BQAAAAAH0AQEAAAAB9QEBAAAAAfsBAAAA-wECCwoAAOQDACAMAADlAwAgDQAA5gMAIA4AAOcDACDKAQEAAAABzgFAAAAAAc8BQAAAAAHfAQEAAAAB_gEBAAAAAf8BAgAAAAGAAhAAAAABAxsAANsEACCRAgAA3AQAIJcCAABTACAEGwAA1gMAMJECAADXAwAwkwIAANkDACCXAgAA2gMAMAQbAADIAwAwkQIAAMkDADCTAgAAywMAIJcCAADMAwAwBBsAALsDADCRAgAAvAMAMJMCAAC-AwAglwIAAL8DADAEBwAA8gMAIM4BQAAAAAGCAgEAAAABhAIAAACEAgICAAAACwAgGwAA8QMAIAMAAAALACAbAADxAwAgHAAA7wMAIAEUAADaBAAwAgAAAAsAIBQAAO8DACACAAAAjQMAIBQAAO4DACADzgFAAIMDACGCAgEAggMAIYQCAACPA4QCIgQHAADwAwAgzgFAAIMDACGCAgEAggMAIYQCAACPA4QCIgUbAADVBAAgHAAA2AQAIJECAADWBAAgkgIAANcEACCXAgAAjgIAIAQHAADyAwAgzgFAAAAAAYICAQAAAAGEAgAAAIQCAgMbAADVBAAgkQIAANYEACCXAgAAjgIAIAwIAAD0AwAgCQAA9QMAIMoBAQAAAAHOAUAAAAABzwFAAAAAAYUCAQAAAAGGAgEAAAABhwIBAAAAAYgCAQAAAAGJAgEAAAABigIBAAAAAYsCAQAAAAEEGwAA6AMAMJECAADpAwAwkwIAAOsDACCXAgAAiQMAMAQbAACrAwAwkQIAAKwDADCTAgAArgMAIJcCAACvAwAwBBsAAJ0DADCRAgAAngMAMJMCAACgAwAglwIAAKEDADAAAAAAAAAAAZQCQAAAAAEAAAAAAAAAAAUbAADQBAAgHAAA0wQAIJECAADRBAAgkgIAANIEACCXAgAAEQAgAxsAANAEACCRAgAA0QQAIJcCAAARACAAAAAAAAUbAADLBAAgHAAAzgQAIJECAADMBAAgkgIAAM0EACCXAgAAEQAgAxsAAMsEACCRAgAAzAQAIJcCAAARACAAAAAFGwAAxgQAIBwAAMkEACCRAgAAxwQAIJICAADIBAAglwIAABEAIAMbAADGBAAgkQIAAMcEACCXAgAAEQAgAAAAAAAFGwAAwQQAIBwAAMQEACCRAgAAwgQAIJICAADDBAAglwIAAAEAIAMbAADBBAAgkQIAAMIEACCXAgAAAQAgAAAACxsAAKAEADAcAACkBAAwkQIAAKEEADCSAgAAogQAMJMCAACjBAAglAIAAK8DADCVAgAArwMAMJYCAACvAwAwlwIAAK8DADCYAgAApQQAMJkCAACyAwAwCwYAAJsEACAMAADlAwAgDQAA5gMAIA4AAOcDACDKAQEAAAABzgFAAAAAAc8BQAAAAAHfAQEAAAAB_QEBAAAAAf8BAgAAAAGAAhAAAAABAgAAABEAIBsAAKgEACADAAAAEQAgGwAAqAQAIBwAAKcEACABFAAAwAQAMAIAAAARACAUAACnBAAgAgAAALMDACAUAACmBAAgB8oBAQCCAwAhzgFAAIMDACHPAUAAgwMAId8BAQCCAwAh_QEBAIIDACH_AQIAtQMAIYACEACbAwAhCwYAAJoEACAMAAC4AwAgDQAAuQMAIA4AALoDACDKAQEAggMAIc4BQACDAwAhzwFAAIMDACHfAQEAggMAIf0BAQCCAwAh_wECALUDACGAAhAAmwMAIQsGAACbBAAgDAAA5QMAIA0AAOYDACAOAADnAwAgygEBAAAAAc4BQAAAAAHPAUAAAAAB3wEBAAAAAf0BAQAAAAH_AQIAAAABgAIQAAAAAQQbAACgBAAwkQIAAKEEADCTAgAAowQAIJcCAACvAwAwAAAAAAAAAAcbAAC7BAAgHAAAvgQAIJECAAC8BAAgkgIAAL0EACCVAgAAAwAglgIAAAMAIJcCAAD2AQAgAxsAALsEACCRAgAAvAQAIJcCAAD2AQAgBQYAALQEACAKAAC1BAAgDAAAtgQAIA0AALcEACAOAAC4BAAgCAUAALoEACAIAACVAwAgCQAAqgQAIIYCAAD4AwAghwIAAPgDACCIAgAA-AMAIIkCAAD4AwAgjAIAAPgDACABCQAAqgQAIAAAAAEDAACVAwAgAQMAAPcDACAF3gEBAAAAAd8BAQAAAAHgARAAAAAB4QGAAAAAAeIBQAAAAAECAAAA9gEAIBsAALsEACADAAAAAwAgGwAAuwQAIBwAAL8EACAHAAAAAwAgFAAAvwQAIN4BAQCCAwAh3wEBAIIDACHgARAAmwMAIeEBgAAAAAHiAUAAgwMAIQXeAQEAggMAId8BAQCCAwAh4AEQAJsDACHhAYAAAAAB4gFAAIMDACEHygEBAAAAAc4BQAAAAAHPAUAAAAAB3wEBAAAAAf0BAQAAAAH_AQIAAAABgAIQAAAAAQ0FAACyBAAgCAAA9AMAIMoBAQAAAAHOAUAAAAABzwFAAAAAAYUCAQAAAAGGAgEAAAABhwIBAAAAAYgCAQAAAAGJAgEAAAABigIBAAAAAYsCAQAAAAGMAgEAAAABAgAAAAEAIBsAAMEEACADAAAABQAgGwAAwQQAIBwAAMUEACAPAAAABQAgBQAAsQQAIAgAAKkDACAUAADFBAAgygEBAIIDACHOAUAAgwMAIc8BQACDAwAhhQIBAIIDACGGAgEApwMAIYcCAQCnAwAhiAIBAKcDACGJAgEApwMAIYoCAQCCAwAhiwIBAIIDACGMAgEApwMAIQ0FAACxBAAgCAAAqQMAIMoBAQCCAwAhzgFAAIMDACHPAUAAgwMAIYUCAQCCAwAhhgIBAKcDACGHAgEApwMAIYgCAQCnAwAhiQIBAKcDACGKAgEAggMAIYsCAQCCAwAhjAIBAKcDACEMBgAAmwQAIAoAAOQDACANAADmAwAgDgAA5wMAIMoBAQAAAAHOAUAAAAABzwFAAAAAAd8BAQAAAAH9AQEAAAAB_gEBAAAAAf8BAgAAAAGAAhAAAAABAgAAABEAIBsAAMYEACADAAAADwAgGwAAxgQAIBwAAMoEACAOAAAADwAgBgAAmgQAIAoAALcDACANAAC5AwAgDgAAugMAIBQAAMoEACDKAQEAggMAIc4BQACDAwAhzwFAAIMDACHfAQEAggMAIf0BAQCCAwAh_gEBAIIDACH_AQIAtQMAIYACEACbAwAhDAYAAJoEACAKAAC3AwAgDQAAuQMAIA4AALoDACDKAQEAggMAIc4BQACDAwAhzwFAAIMDACHfAQEAggMAIf0BAQCCAwAh_gEBAIIDACH_AQIAtQMAIYACEACbAwAhDAYAAJsEACAKAADkAwAgDAAA5QMAIA4AAOcDACDKAQEAAAABzgFAAAAAAc8BQAAAAAHfAQEAAAAB_QEBAAAAAf4BAQAAAAH_AQIAAAABgAIQAAAAAQIAAAARACAbAADLBAAgAwAAAA8AIBsAAMsEACAcAADPBAAgDgAAAA8AIAYAAJoEACAKAAC3AwAgDAAAuAMAIA4AALoDACAUAADPBAAgygEBAIIDACHOAUAAgwMAIc8BQACDAwAh3wEBAIIDACH9AQEAggMAIf4BAQCCAwAh_wECALUDACGAAhAAmwMAIQwGAACaBAAgCgAAtwMAIAwAALgDACAOAAC6AwAgygEBAIIDACHOAUAAgwMAIc8BQACDAwAh3wEBAIIDACH9AQEAggMAIf4BAQCCAwAh_wECALUDACGAAhAAmwMAIQwGAACbBAAgCgAA5AMAIAwAAOUDACANAADmAwAgygEBAAAAAc4BQAAAAAHPAUAAAAAB3wEBAAAAAf0BAQAAAAH-AQEAAAAB_wECAAAAAYACEAAAAAECAAAAEQAgGwAA0AQAIAMAAAAPACAbAADQBAAgHAAA1AQAIA4AAAAPACAGAACaBAAgCgAAtwMAIAwAALgDACANAAC5AwAgFAAA1AQAIMoBAQCCAwAhzgFAAIMDACHPAUAAgwMAId8BAQCCAwAh_QEBAIIDACH-AQEAggMAIf8BAgC1AwAhgAIQAJsDACEMBgAAmgQAIAoAALcDACAMAAC4AwAgDQAAuQMAIMoBAQCCAwAhzgFAAIMDACHPAUAAgwMAId8BAQCCAwAh_QEBAIIDACH-AQEAggMAIf8BAgC1AwAhgAIQAJsDACEGygEBAAAAAcsBAQAAAAHMAQEAAAABzQEBAAAAAc4BQAAAAAHPAUAAAAABAgAAAI4CACAbAADVBAAgAwAAAJECACAbAADVBAAgHAAA2QQAIAgAAACRAgAgFAAA2QQAIMoBAQCCAwAhywEBAIIDACHMAQEAggMAIc0BAQCCAwAhzgFAAIMDACHPAUAAgwMAIQbKAQEAggMAIcsBAQCCAwAhzAEBAIIDACHNAQEAggMAIc4BQACDAwAhzwFAAIMDACEDzgFAAAAAAYICAQAAAAGEAgAAAIQCAgbKAQEAAAABzgFAAAAAAc8BQAAAAAHfAQEAAAAB_AEgAAAAAYECAQAAAAECAAAAUwAgGwAA2wQAIAXKAQEAAAABzgFAAAAAAfQBAQAAAAH1AQEAAAAB-wEAAAD7AQIIygEBAAAAAc4BQAAAAAHPAUAAAAAB4AEQAAAAAfQBAQAAAAH1AQEAAAAB-wEAAAD7AQP8ASAAAAABCsoBAQAAAAHOAUAAAAABzwFAAAAAAfEBAQAAAAHzAUAAAAAB9AEBAAAAAfUBAQAAAAH2AQEAAAAB9wEBAAAAAfkBAAAA-QECAwAAAFYAIBsAANsEACAcAADiBAAgCAAAAFYAIBQAAOIEACDKAQEAggMAIc4BQACDAwAhzwFAAIMDACHfAQEAggMAIfwBIADTAwAhgQIBAIIDACEGygEBAIIDACHOAUAAgwMAIc8BQACDAwAh3wEBAIIDACH8ASAA0wMAIYECAQCCAwAhB8oBAQAAAAHOAUAAAAABzwFAAAAAAd8BAQAAAAH-AQEAAAAB_wECAAAAAYACEAAAAAEKygEBAAAAAc4BQAAAAAHPAUAAAAABhQIBAAAAAYYCAQAAAAGHAgEAAAABiAIBAAAAAYkCAQAAAAGKAgEAAAABiwIBAAAAAQ0FAACyBAAgCQAA9QMAIMoBAQAAAAHOAUAAAAABzwFAAAAAAYUCAQAAAAGGAgEAAAABhwIBAAAAAYgCAQAAAAGJAgEAAAABigIBAAAAAYsCAQAAAAGMAgEAAAABAgAAAAEAIBsAAOUEACADAAAABQAgGwAA5QQAIBwAAOkEACAPAAAABQAgBQAAsQQAIAkAAKoDACAUAADpBAAgygEBAIIDACHOAUAAgwMAIc8BQACDAwAhhQIBAIIDACGGAgEApwMAIYcCAQCnAwAhiAIBAKcDACGJAgEApwMAIYoCAQCCAwAhiwIBAIIDACGMAgEApwMAIQ0FAACxBAAgCQAAqgMAIMoBAQCCAwAhzgFAAIMDACHPAUAAgwMAIYUCAQCCAwAhhgIBAKcDACGHAgEApwMAIYgCAQCnAwAhiQIBAKcDACGKAgEAggMAIYsCAQCCAwAhjAIBAKcDACEDzgFAAAAAAf0BAQAAAAGEAgAAAIQCAgQEAA4FBAIIDAQJEgcCAwcBBAADAQMIAAIGAAEHAAUCAw0EBAAGAQMOAAYEAA0GAAEKAAgMGAoNHAsOIAwCBAAJCRMHAQkUAAELAAcBCwAHAQsABwMMIQANIgAOIwACCCQACSUAAAEFLwIBBTUCAwQAEyEAFCIAFQAAAAMEABMhABQiABUCBgABBwAFAgYAAQcABQMEABohABsiABwAAAADBAAaIQAbIgAcAAADBAAhIQAiIgAjAAAAAwQAISEAIiIAIwIGAAEKAAgCBgABCgAIBQQAKCEAKyIALFMAKVQAKgAAAAAABQQAKCEAKyIALFMAKVQAKgELAAcBCwAHAwQAMSEAMiIAMwAAAAMEADEhADIiADMBCwAHAQsABwUEADghADsiADxTADlUADoAAAAAAAUEADghADsiADxTADlUADoBCwAHAQsABwMEAEEhAEIiAEMAAAADBABBIQBCIgBDAAAABQQASSEATCIATVMASlQASwAAAAAABQQASSEATCIATVMASlQASwAAAAUEAFMhAFYiAFdTAFRUAFUAAAAAAAUEAFMhAFYiAFdTAFRUAFUAAAUEAFwhAF8iAGBTAF1UAF4AAAAAAAUEAFwhAF8iAGBTAF1UAF4AAAMEAGUhAGYiAGcAAAADBABlIQBmIgBnDwIBECYBEScBEigBEykBFSsBFi0PFy4QGDEBGTMPGjQRHTYBHjcBHzgPIzsSJDwWJT0EJj4EJz8EKEAEKUEEKkMEK0UPLEYXLUgELkoPL0sYMEwEMU0EMk4PM1EZNFIdNVQINlUIN1gIOFkIOVoIOlwIO14PPF8ePWEIPmMPP2QfQGUIQWYIQmcPQ2ogRGskRWwHRm0HR24HSG8HSXAHSnIHS3QPTHUlTXcHTnkPT3omUHsHUXwHUn0PVYABJ1aBAS1XggEKWIMBClmEAQpahQEKW4YBClyIAQpdigEPXosBLl-NAQpgjwEPYZABL2KRAQpjkgEKZJMBD2WWATBmlwE0Z5gBC2iZAQtpmgELapsBC2ucAQtsngELbaABD26hATVvowELcKUBD3GmATZypwELc6gBC3SpAQ91rAE3dq0BPXeuAQx4rwEMebABDHqxAQx7sgEMfLQBDH22AQ9-twE-f7kBDIABuwEPgQG8AT-CAb0BDIMBvgEMhAG_AQ-FAcIBQIYBwwFEhwHFAUWIAcYBRYkByQFFigHKAUWLAcsBRYwBzQFFjQHPAQ-OAdABRo8B0gFFkAHUAQ-RAdUBR5IB1gFFkwHXAUWUAdgBD5UB2wFIlgHcAU6XAd4BT5gB3wFPmQHiAU-aAeMBT5sB5AFPnAHmAU-dAegBD54B6QFQnwHrAU-gAe0BD6EB7gFRogHvAU-jAfABT6QB8QEPpQH0AVKmAfUBWKcB9wECqAH4AQKpAfoBAqoB-wECqwH8AQKsAf4BAq0BgAIPrgGBAlmvAYMCArABhQIPsQGGAlqyAYcCArMBiAICtAGJAg-1AYwCW7YBjQJhtwGPAgW4AZACBbkBkwIFugGUAgW7AZUCBbwBlwIFvQGZAg--AZoCYr8BnAIFwAGeAg_BAZ8CY8IBoAIFwwGhAgXEAaICD8UBpQJkxgGmAmg" + strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"plan\",\"complex\",\"user\",\"accounts\",\"sessions\",\"complexes\",\"_count\",\"users\",\"courts\",\"sport\",\"court\",\"availabilities\",\"priceRules\",\"bookings\",\"Plan.findUnique\",\"Plan.findUniqueOrThrow\",\"Plan.findFirst\",\"Plan.findFirstOrThrow\",\"Plan.findMany\",\"data\",\"Plan.createOne\",\"Plan.createMany\",\"Plan.createManyAndReturn\",\"Plan.updateOne\",\"Plan.updateMany\",\"Plan.updateManyAndReturn\",\"create\",\"update\",\"Plan.upsertOne\",\"Plan.deleteOne\",\"Plan.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"Plan.groupBy\",\"Plan.aggregate\",\"Complex.findUnique\",\"Complex.findUniqueOrThrow\",\"Complex.findFirst\",\"Complex.findFirstOrThrow\",\"Complex.findMany\",\"Complex.createOne\",\"Complex.createMany\",\"Complex.createManyAndReturn\",\"Complex.updateOne\",\"Complex.updateMany\",\"Complex.updateManyAndReturn\",\"Complex.upsertOne\",\"Complex.deleteOne\",\"Complex.deleteMany\",\"Complex.groupBy\",\"Complex.aggregate\",\"ComplexUser.findUnique\",\"ComplexUser.findUniqueOrThrow\",\"ComplexUser.findFirst\",\"ComplexUser.findFirstOrThrow\",\"ComplexUser.findMany\",\"ComplexUser.createOne\",\"ComplexUser.createMany\",\"ComplexUser.createManyAndReturn\",\"ComplexUser.updateOne\",\"ComplexUser.updateMany\",\"ComplexUser.updateManyAndReturn\",\"ComplexUser.upsertOne\",\"ComplexUser.deleteOne\",\"ComplexUser.deleteMany\",\"ComplexUser.groupBy\",\"ComplexUser.aggregate\",\"Sport.findUnique\",\"Sport.findUniqueOrThrow\",\"Sport.findFirst\",\"Sport.findFirstOrThrow\",\"Sport.findMany\",\"Sport.createOne\",\"Sport.createMany\",\"Sport.createManyAndReturn\",\"Sport.updateOne\",\"Sport.updateMany\",\"Sport.updateManyAndReturn\",\"Sport.upsertOne\",\"Sport.deleteOne\",\"Sport.deleteMany\",\"Sport.groupBy\",\"Sport.aggregate\",\"Court.findUnique\",\"Court.findUniqueOrThrow\",\"Court.findFirst\",\"Court.findFirstOrThrow\",\"Court.findMany\",\"Court.createOne\",\"Court.createMany\",\"Court.createManyAndReturn\",\"Court.updateOne\",\"Court.updateMany\",\"Court.updateManyAndReturn\",\"Court.upsertOne\",\"Court.deleteOne\",\"Court.deleteMany\",\"Court.groupBy\",\"Court.aggregate\",\"CourtAvailability.findUnique\",\"CourtAvailability.findUniqueOrThrow\",\"CourtAvailability.findFirst\",\"CourtAvailability.findFirstOrThrow\",\"CourtAvailability.findMany\",\"CourtAvailability.createOne\",\"CourtAvailability.createMany\",\"CourtAvailability.createManyAndReturn\",\"CourtAvailability.updateOne\",\"CourtAvailability.updateMany\",\"CourtAvailability.updateManyAndReturn\",\"CourtAvailability.upsertOne\",\"CourtAvailability.deleteOne\",\"CourtAvailability.deleteMany\",\"CourtAvailability.groupBy\",\"CourtAvailability.aggregate\",\"CourtPriceRule.findUnique\",\"CourtPriceRule.findUniqueOrThrow\",\"CourtPriceRule.findFirst\",\"CourtPriceRule.findFirstOrThrow\",\"CourtPriceRule.findMany\",\"CourtPriceRule.createOne\",\"CourtPriceRule.createMany\",\"CourtPriceRule.createManyAndReturn\",\"CourtPriceRule.updateOne\",\"CourtPriceRule.updateMany\",\"CourtPriceRule.updateManyAndReturn\",\"CourtPriceRule.upsertOne\",\"CourtPriceRule.deleteOne\",\"CourtPriceRule.deleteMany\",\"CourtPriceRule.groupBy\",\"CourtPriceRule.aggregate\",\"CourtBooking.findUnique\",\"CourtBooking.findUniqueOrThrow\",\"CourtBooking.findFirst\",\"CourtBooking.findFirstOrThrow\",\"CourtBooking.findMany\",\"CourtBooking.createOne\",\"CourtBooking.createMany\",\"CourtBooking.createManyAndReturn\",\"CourtBooking.updateOne\",\"CourtBooking.updateMany\",\"CourtBooking.updateManyAndReturn\",\"CourtBooking.upsertOne\",\"CourtBooking.deleteOne\",\"CourtBooking.deleteMany\",\"CourtBooking.groupBy\",\"CourtBooking.aggregate\",\"OnboardingRequest.findUnique\",\"OnboardingRequest.findUniqueOrThrow\",\"OnboardingRequest.findFirst\",\"OnboardingRequest.findFirstOrThrow\",\"OnboardingRequest.findMany\",\"OnboardingRequest.createOne\",\"OnboardingRequest.createMany\",\"OnboardingRequest.createManyAndReturn\",\"OnboardingRequest.updateOne\",\"OnboardingRequest.updateMany\",\"OnboardingRequest.updateManyAndReturn\",\"OnboardingRequest.upsertOne\",\"OnboardingRequest.deleteOne\",\"OnboardingRequest.deleteMany\",\"OnboardingRequest.groupBy\",\"OnboardingRequest.aggregate\",\"PasswordResetRequest.findUnique\",\"PasswordResetRequest.findUniqueOrThrow\",\"PasswordResetRequest.findFirst\",\"PasswordResetRequest.findFirstOrThrow\",\"PasswordResetRequest.findMany\",\"PasswordResetRequest.createOne\",\"PasswordResetRequest.createMany\",\"PasswordResetRequest.createManyAndReturn\",\"PasswordResetRequest.updateOne\",\"PasswordResetRequest.updateMany\",\"PasswordResetRequest.updateManyAndReturn\",\"PasswordResetRequest.upsertOne\",\"PasswordResetRequest.deleteOne\",\"PasswordResetRequest.deleteMany\",\"PasswordResetRequest.groupBy\",\"PasswordResetRequest.aggregate\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"User.groupBy\",\"User.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"Account.groupBy\",\"Account.aggregate\",\"Verification.findUnique\",\"Verification.findUniqueOrThrow\",\"Verification.findFirst\",\"Verification.findFirstOrThrow\",\"Verification.findMany\",\"Verification.createOne\",\"Verification.createMany\",\"Verification.createManyAndReturn\",\"Verification.updateOne\",\"Verification.updateMany\",\"Verification.updateManyAndReturn\",\"Verification.upsertOne\",\"Verification.deleteOne\",\"Verification.deleteMany\",\"Verification.groupBy\",\"Verification.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"identifier\",\"value\",\"expiresAt\",\"createdAt\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"userId\",\"accountId\",\"providerId\",\"accessToken\",\"refreshToken\",\"accessTokenExpiresAt\",\"refreshTokenExpiresAt\",\"scope\",\"idToken\",\"password\",\"token\",\"ipAddress\",\"userAgent\",\"supabaseUserId\",\"name\",\"email\",\"emailVerified\",\"image\",\"fullName\",\"every\",\"some\",\"none\",\"otpHash\",\"otpExpiresAt\",\"otpAttempts\",\"otpLastSentAt\",\"otpResendCount\",\"usedAt\",\"emailVerifiedAt\",\"completedAt\",\"bookingCode\",\"courtId\",\"bookingDate\",\"startTime\",\"endTime\",\"customerName\",\"customerPhone\",\"CourtBookingStatus\",\"status\",\"DayOfWeek\",\"dayOfWeek\",\"price\",\"isActive\",\"complexId\",\"sportId\",\"slotDurationMinutes\",\"basePrice\",\"slug\",\"ComplexUserRole\",\"role\",\"complexSlug\",\"complexName\",\"physicalAddress\",\"city\",\"state\",\"country\",\"adminEmail\",\"planCode\",\"code\",\"rules\",\"lastUpdatedAt\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"courtId_bookingDate_startTime\",\"complexId_userId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), + graph: "-QWAAeABCQgAAMADACD5AQAAvQMAMPoBAAAwABD7AQAAvQMAMJsCAQD8AgAhtgIQAL4DACHHAgEAAAAByAIAAL8DACDJAkAA_QIAIQEAAAABACASAwAA1gMAIAoAAJMDACALAAC0AwAg-QEAANUDADD6AQAAAwAQ-wEAANUDADD8AQEAnAMAIYACQAD9AgAhgQJAAP0CACG3AiAAkAMAIb8CAQD8AgAhwAIBAPwCACHBAgEA_AIAIcICAQCPAwAhwwIBAI8DACHEAgEAjwMAIcUCAQD8AgAhxgIBAPwCACEGAwAAvQUAIAoAAJwEACALAACBBQAgwgIAANwDACDDAgAA3AMAIMQCAADcAwAgEgMAANYDACAKAACTAwAgCwAAtAMAIPkBAADVAwAw-gEAAAMAEPsBAADVAwAw_AEBAAAAAYACQAD9AgAhgQJAAP0CACG3AiAAkAMAIb8CAQAAAAHAAgEA_AIAIcECAQD8AgAhwgIBAI8DACHDAgEAjwMAIcQCAQCPAwAhxQIBAPwCACHGAgEA_AIAIQMAAAADACABAAAEADACAAAFACALBAAAygMAIAUAANADACD5AQAA0wMAMPoBAAAHABD7AQAA0wMAMPwBAQD8AgAhgAJAAP0CACGBAkAA_QIAIY0CAQD8AgAhuAIBAJwDACG-AgAA1AO-AiICBAAAtwUAIAUAALwFACAMBAAAygMAIAUAANADACD5AQAA0wMAMPoBAAAHABD7AQAA0wMAMPwBAQAAAAGAAkAA_QIAIYECQAD9AgAhjQIBAPwCACG4AgEAnAMAIb4CAADUA74CItECAADSAwAgAwAAAAcAIAEAAAgAMAIAAAkAIBEFAADQAwAg-QEAANEDADD6AQAACwAQ-wEAANEDADD8AQEA_AIAIYACQAD9AgAhgQJAAP0CACGNAgEA_AIAIY4CAQD8AgAhjwIBAPwCACGQAgEAjwMAIZECAQCPAwAhkgJAAJ4DACGTAkAAngMAIZQCAQCPAwAhlQIBAI8DACGWAgEAjwMAIQgFAAC8BQAgkAIAANwDACCRAgAA3AMAIJICAADcAwAgkwIAANwDACCUAgAA3AMAIJUCAADcAwAglgIAANwDACARBQAA0AMAIPkBAADRAwAw-gEAAAsAEPsBAADRAwAw_AEBAAAAAYACQAD9AgAhgQJAAP0CACGNAgEA_AIAIY4CAQD8AgAhjwIBAPwCACGQAgEAjwMAIZECAQCPAwAhkgJAAJ4DACGTAkAAngMAIZQCAQCPAwAhlQIBAI8DACGWAgEAjwMAIQMAAAALACABAAAMADACAAANACAMBQAA0AMAIPkBAADPAwAw-gEAAA8AEPsBAADPAwAw_AEBAPwCACH_AUAA_QIAIYACQAD9AgAhgQJAAP0CACGNAgEA_AIAIZcCAQD8AgAhmAIBAI8DACGZAgEAjwMAIQMFAAC8BQAgmAIAANwDACCZAgAA3AMAIAwFAADQAwAg-QEAAM8DADD6AQAADwAQ-wEAAM8DADD8AQEAAAAB_wFAAP0CACGAAkAA_QIAIYECQAD9AgAhjQIBAPwCACGXAgEAAAABmAIBAI8DACGZAgEAjwMAIQMAAAAPACABAAAQADACAAARACADAAAABwAgAQAACAAwAgAACQAgAQAAAAsAIAEAAAAPACABAAAABwAgEAQAAMoDACAMAADLAwAgDgAAzAMAIA8AAM0DACAQAADOAwAg-QEAAMkDADD6AQAAFwAQ-wEAAMkDADD8AQEAnAMAIYACQAD9AgAhgQJAAP0CACGbAgEA_AIAIbgCAQCcAwAhuQIBAJwDACG6AgIAnQMAIbsCEAC-AwAhBQQAALcFACAMAAC4BQAgDgAAuQUAIA8AALoFACAQAAC7BQAgEAQAAMoDACAMAADLAwAgDgAAzAMAIA8AAM0DACAQAADOAwAg-QEAAMkDADD6AQAAFwAQ-wEAAMkDADD8AQEAAAABgAJAAP0CACGBAkAA_QIAIZsCAQD8AgAhuAIBAJwDACG5AgEAnAMAIboCAgCdAwAhuwIQAL4DACEDAAAAFwAgAQAAGAAwAgAAGQAgAwAAABcAIAEAABgAMAIAABkAIAEAAAAXACAKDQAAxAMAIPkBAADHAwAw-gEAAB0AEPsBAADHAwAw_AEBAJwDACGAAkAA_QIAIawCAQCcAwAhrgIBAPwCACGvAgEA_AIAIbUCAADIA7UCIgENAAC2BQAgCg0AAMQDACD5AQAAxwMAMPoBAAAdABD7AQAAxwMAMPwBAQAAAAGAAkAA_QIAIawCAQCcAwAhrgIBAPwCACGvAgEA_AIAIbUCAADIA7UCIgMAAAAdACABAAAeADACAAAfACANDQAAxAMAIPkBAADFAwAw-gEAACEAEPsBAADFAwAw_AEBAJwDACGAAkAA_QIAIYECQAD9AgAhrAIBAJwDACGuAgEAjwMAIa8CAQCPAwAhtQIAAMYDtQIjtgIQAL4DACG3AiAAkAMAIQQNAAC2BQAgrgIAANwDACCvAgAA3AMAILUCAADcAwAgDQ0AAMQDACD5AQAAxQMAMPoBAAAhABD7AQAAxQMAMPwBAQAAAAGAAkAA_QIAIYECQAD9AgAhrAIBAJwDACGuAgEAjwMAIa8CAQCPAwAhtQIAAMYDtQIjtgIQAL4DACG3AiAAkAMAIQMAAAAhACABAAAiADACAAAjACAPDQAAxAMAIPkBAADCAwAw-gEAACUAEPsBAADCAwAw_AEBAJwDACGAAkAA_QIAIYECQAD9AgAhqwIBAPwCACGsAgEAnAMAIa0CQAD9AgAhrgIBAPwCACGvAgEA_AIAIbACAQD8AgAhsQIBAPwCACGzAgAAwwOzAiIBDQAAtgUAIBANAADEAwAg-QEAAMIDADD6AQAAJQAQ-wEAAMIDADD8AQEAAAABgAJAAP0CACGBAkAA_QIAIasCAQAAAAGsAgEAnAMAIa0CQAD9AgAhrgIBAPwCACGvAgEA_AIAIbACAQD8AgAhsQIBAPwCACGzAgAAwwOzAiLQAgAAwQMAIAMAAAAlACABAAAmADACAAAnACABAAAAHQAgAQAAACEAIAEAAAAlACABAAAABwAgAQAAABcAIAEAAAADACABAAAAAQAgCQgAAMADACD5AQAAvQMAMPoBAAAwABD7AQAAvQMAMJsCAQD8AgAhtgIQAL4DACHHAgEA_AIAIcgCAAC_AwAgyQJAAP0CACEBCAAAtQUAIAMAAAAwACABAAAxADACAAABACADAAAAMAAgAQAAMQAwAgAAAQAgAwAAADAAIAEAADEAMAIAAAEAIAYIAAC0BQAgmwIBAAAAAbYCEAAAAAHHAgEAAAAByAKAAAAAAckCQAAAAAEBFgAANQAgBZsCAQAAAAG2AhAAAAABxwIBAAAAAcgCgAAAAAHJAkAAAAABARYAADcAMAEWAAA3ADAGCAAApwUAIJsCAQDaAwAhtgIQALQEACHHAgEA2gMAIcgCgAAAAAHJAkAA2wMAIQIAAAABACAWAAA6ACAFmwIBANoDACG2AhAAtAQAIccCAQDaAwAhyAKAAAAAAckCQADbAwAhAgAAADAAIBYAADwAIAIAAAAwACAWAAA8ACADAAAAAQAgHQAANQAgHgAAOgAgAQAAAAEAIAEAAAAwACAFCQAAogUAICMAAKMFACAkAACmBQAgJQAApQUAICYAAKQFACAI-QEAALoDADD6AQAAQwAQ-wEAALoDADCbAgEA9AIAIbYCEACoAwAhxwIBAPQCACHIAgAAuwMAIMkCQAD1AgAhAwAAADAAIAEAAEIAMCIAAEMAIAMAAAAwACABAAAxADACAAABACABAAAABQAgAQAAAAUAIAMAAAADACABAAAEADACAAAFACADAAAAAwAgAQAABAAwAgAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIA8DAACfBQAgCgAAoAUAIAsAAKEFACD8AQEAAAABgAJAAAAAAYECQAAAAAG3AiAAAAABvwIBAAAAAcACAQAAAAHBAgEAAAABwgIBAAAAAcMCAQAAAAHEAgEAAAABxQIBAAAAAcYCAQAAAAEBFgAASwAgDPwBAQAAAAGAAkAAAAABgQJAAAAAAbcCIAAAAAG_AgEAAAABwAIBAAAAAcECAQAAAAHCAgEAAAABwwIBAAAAAcQCAQAAAAHFAgEAAAABxgIBAAAAAQEWAABNADABFgAATQAwDwMAAIoFACAKAACLBQAgCwAAjAUAIPwBAQDaAwAhgAJAANsDACGBAkAA2wMAIbcCIADsAwAhvwIBANoDACHAAgEA2gMAIcECAQDaAwAhwgIBAOADACHDAgEA4AMAIcQCAQDgAwAhxQIBANoDACHGAgEA2gMAIQIAAAAFACAWAABQACAM_AEBANoDACGAAkAA2wMAIYECQADbAwAhtwIgAOwDACG_AgEA2gMAIcACAQDaAwAhwQIBANoDACHCAgEA4AMAIcMCAQDgAwAhxAIBAOADACHFAgEA2gMAIcYCAQDaAwAhAgAAAAMAIBYAAFIAIAIAAAADACAWAABSACADAAAABQAgHQAASwAgHgAAUAAgAQAAAAUAIAEAAAADACAGCQAAhwUAICUAAIkFACAmAACIBQAgwgIAANwDACDDAgAA3AMAIMQCAADcAwAgD_kBAAC5AwAw-gEAAFkAEPsBAAC5AwAw_AEBAJYDACGAAkAA9QIAIYECQAD1AgAhtwIgAIkDACG_AgEA9AIAIcACAQD0AgAhwQIBAPQCACHCAgEA_wIAIcMCAQD_AgAhxAIBAP8CACHFAgEA9AIAIcYCAQD0AgAhAwAAAAMAIAEAAFgAMCIAAFkAIAMAAAADACABAAAEADACAAAFACABAAAACQAgAQAAAAkAIAMAAAAHACABAAAIADACAAAJACADAAAABwAgAQAACAAwAgAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAgEAAD-AwAgBQAAhgUAIPwBAQAAAAGAAkAAAAABgQJAAAAAAY0CAQAAAAG4AgEAAAABvgIAAAC-AgIBFgAAYQAgBvwBAQAAAAGAAkAAAAABgQJAAAAAAY0CAQAAAAG4AgEAAAABvgIAAAC-AgIBFgAAYwAwARYAAGMAMAgEAAD8AwAgBQAAhQUAIPwBAQDaAwAhgAJAANsDACGBAkAA2wMAIY0CAQDaAwAhuAIBANoDACG-AgAA-gO-AiICAAAACQAgFgAAZgAgBvwBAQDaAwAhgAJAANsDACGBAkAA2wMAIY0CAQDaAwAhuAIBANoDACG-AgAA-gO-AiICAAAABwAgFgAAaAAgAgAAAAcAIBYAAGgAIAMAAAAJACAdAABhACAeAABmACABAAAACQAgAQAAAAcAIAMJAACCBQAgJQAAhAUAICYAAIMFACAJ-QEAALUDADD6AQAAbwAQ-wEAALUDADD8AQEA9AIAIYACQAD1AgAhgQJAAPUCACGNAgEA9AIAIbgCAQCWAwAhvgIAALYDvgIiAwAAAAcAIAEAAG4AMCIAAG8AIAMAAAAHACABAAAIADACAAAJACAKCwAAtAMAIPkBAACzAwAw-gEAAHUAEPsBAACzAwAw_AEBAAAAAYACQAD9AgAhgQJAAP0CACGbAgEAAAABtwIgAJADACG8AgEAAAABAQAAAHIAIAEAAAByACAKCwAAtAMAIPkBAACzAwAw-gEAAHUAEPsBAACzAwAw_AEBAJwDACGAAkAA_QIAIYECQAD9AgAhmwIBAPwCACG3AiAAkAMAIbwCAQD8AgAhAQsAAIEFACADAAAAdQAgAQAAdgAwAgAAcgAgAwAAAHUAIAEAAHYAMAIAAHIAIAMAAAB1ACABAAB2ADACAAByACAHCwAAgAUAIPwBAQAAAAGAAkAAAAABgQJAAAAAAZsCAQAAAAG3AiAAAAABvAIBAAAAAQEWAAB6ACAG_AEBAAAAAYACQAAAAAGBAkAAAAABmwIBAAAAAbcCIAAAAAG8AgEAAAABARYAAHwAMAEWAAB8ADAHCwAA8wQAIPwBAQDaAwAhgAJAANsDACGBAkAA2wMAIZsCAQDaAwAhtwIgAOwDACG8AgEA2gMAIQIAAAByACAWAAB_ACAG_AEBANoDACGAAkAA2wMAIYECQADbAwAhmwIBANoDACG3AiAA7AMAIbwCAQDaAwAhAgAAAHUAIBYAAIEBACACAAAAdQAgFgAAgQEAIAMAAAByACAdAAB6ACAeAAB_ACABAAAAcgAgAQAAAHUAIAMJAADwBAAgJQAA8gQAICYAAPEEACAJ-QEAALIDADD6AQAAiAEAEPsBAACyAwAw_AEBAJYDACGAAkAA9QIAIYECQAD1AgAhmwIBAPQCACG3AiAAiQMAIbwCAQD0AgAhAwAAAHUAIAEAAIcBADAiAACIAQAgAwAAAHUAIAEAAHYAMAIAAHIAIAEAAAAZACABAAAAGQAgAwAAABcAIAEAABgAMAIAABkAIAMAAAAXACABAAAYADACAAAZACADAAAAFwAgAQAAGAAwAgAAGQAgDQQAAOsEACAMAADsBAAgDgAA7QQAIA8AAO4EACAQAADvBAAg_AEBAAAAAYACQAAAAAGBAkAAAAABmwIBAAAAAbgCAQAAAAG5AgEAAAABugICAAAAAbsCEAAAAAEBFgAAkAEAIAj8AQEAAAABgAJAAAAAAYECQAAAAAGbAgEAAAABuAIBAAAAAbkCAQAAAAG6AgIAAAABuwIQAAAAAQEWAACSAQAwARYAAJIBADANBAAAwgQAIAwAAMMEACAOAADEBAAgDwAAxQQAIBAAAMYEACD8AQEA2gMAIYACQADbAwAhgQJAANsDACGbAgEA2gMAIbgCAQDaAwAhuQIBANoDACG6AgIAogQAIbsCEAC0BAAhAgAAABkAIBYAAJUBACAI_AEBANoDACGAAkAA2wMAIYECQADbAwAhmwIBANoDACG4AgEA2gMAIbkCAQDaAwAhugICAKIEACG7AhAAtAQAIQIAAAAXACAWAACXAQAgAgAAABcAIBYAAJcBACADAAAAGQAgHQAAkAEAIB4AAJUBACABAAAAGQAgAQAAABcAIAUJAAC9BAAgIwAAvgQAICQAAMEEACAlAADABAAgJgAAvwQAIAv5AQAAsQMAMPoBAACeAQAQ-wEAALEDADD8AQEAlgMAIYACQAD1AgAhgQJAAPUCACGbAgEA9AIAIbgCAQCWAwAhuQIBAJYDACG6AgIAlwMAIbsCEACoAwAhAwAAABcAIAEAAJ0BADAiAACeAQAgAwAAABcAIAEAABgAMAIAABkAIAEAAAAfACABAAAAHwAgAwAAAB0AIAEAAB4AMAIAAB8AIAMAAAAdACABAAAeADACAAAfACADAAAAHQAgAQAAHgAwAgAAHwAgBw0AALwEACD8AQEAAAABgAJAAAAAAawCAQAAAAGuAgEAAAABrwIBAAAAAbUCAAAAtQICARYAAKYBACAG_AEBAAAAAYACQAAAAAGsAgEAAAABrgIBAAAAAa8CAQAAAAG1AgAAALUCAgEWAACoAQAwARYAAKgBADAHDQAAuwQAIPwBAQDaAwAhgAJAANsDACGsAgEA2gMAIa4CAQDaAwAhrwIBANoDACG1AgAAugS1AiICAAAAHwAgFgAAqwEAIAb8AQEA2gMAIYACQADbAwAhrAIBANoDACGuAgEA2gMAIa8CAQDaAwAhtQIAALoEtQIiAgAAAB0AIBYAAK0BACACAAAAHQAgFgAArQEAIAMAAAAfACAdAACmAQAgHgAAqwEAIAEAAAAfACABAAAAHQAgAwkAALcEACAlAAC5BAAgJgAAuAQAIAn5AQAArQMAMPoBAAC0AQAQ-wEAAK0DADD8AQEAlgMAIYACQAD1AgAhrAIBAJYDACGuAgEA9AIAIa8CAQD0AgAhtQIAAK4DtQIiAwAAAB0AIAEAALMBADAiAAC0AQAgAwAAAB0AIAEAAB4AMAIAAB8AIAEAAAAjACABAAAAIwAgAwAAACEAIAEAACIAMAIAACMAIAMAAAAhACABAAAiADACAAAjACADAAAAIQAgAQAAIgAwAgAAIwAgCg0AALYEACD8AQEAAAABgAJAAAAAAYECQAAAAAGsAgEAAAABrgIBAAAAAa8CAQAAAAG1AgAAALUCA7YCEAAAAAG3AiAAAAABARYAALwBACAJ_AEBAAAAAYACQAAAAAGBAkAAAAABrAIBAAAAAa4CAQAAAAGvAgEAAAABtQIAAAC1AgO2AhAAAAABtwIgAAAAAQEWAAC-AQAwARYAAL4BADAKDQAAtQQAIPwBAQDaAwAhgAJAANsDACGBAkAA2wMAIawCAQDaAwAhrgIBAOADACGvAgEA4AMAIbUCAACzBLUCI7YCEAC0BAAhtwIgAOwDACECAAAAIwAgFgAAwQEAIAn8AQEA2gMAIYACQADbAwAhgQJAANsDACGsAgEA2gMAIa4CAQDgAwAhrwIBAOADACG1AgAAswS1AiO2AhAAtAQAIbcCIADsAwAhAgAAACEAIBYAAMMBACACAAAAIQAgFgAAwwEAIAMAAAAjACAdAAC8AQAgHgAAwQEAIAEAAAAjACABAAAAIQAgCAkAAK4EACAjAACvBAAgJAAAsgQAICUAALEEACAmAACwBAAgrgIAANwDACCvAgAA3AMAILUCAADcAwAgDPkBAACmAwAw-gEAAMoBABD7AQAApgMAMPwBAQCWAwAhgAJAAPUCACGBAkAA9QIAIawCAQCWAwAhrgIBAP8CACGvAgEA_wIAIbUCAACnA7UCI7YCEACoAwAhtwIgAIkDACEDAAAAIQAgAQAAyQEAMCIAAMoBACADAAAAIQAgAQAAIgAwAgAAIwAgAQAAACcAIAEAAAAnACADAAAAJQAgAQAAJgAwAgAAJwAgAwAAACUAIAEAACYAMAIAACcAIAMAAAAlACABAAAmADACAAAnACAMDQAArQQAIPwBAQAAAAGAAkAAAAABgQJAAAAAAasCAQAAAAGsAgEAAAABrQJAAAAAAa4CAQAAAAGvAgEAAAABsAIBAAAAAbECAQAAAAGzAgAAALMCAgEWAADSAQAgC_wBAQAAAAGAAkAAAAABgQJAAAAAAasCAQAAAAGsAgEAAAABrQJAAAAAAa4CAQAAAAGvAgEAAAABsAIBAAAAAbECAQAAAAGzAgAAALMCAgEWAADUAQAwARYAANQBADAMDQAArAQAIPwBAQDaAwAhgAJAANsDACGBAkAA2wMAIasCAQDaAwAhrAIBANoDACGtAkAA2wMAIa4CAQDaAwAhrwIBANoDACGwAgEA2gMAIbECAQDaAwAhswIAAKsEswIiAgAAACcAIBYAANcBACAL_AEBANoDACGAAkAA2wMAIYECQADbAwAhqwIBANoDACGsAgEA2gMAIa0CQADbAwAhrgIBANoDACGvAgEA2gMAIbACAQDaAwAhsQIBANoDACGzAgAAqwSzAiICAAAAJQAgFgAA2QEAIAIAAAAlACAWAADZAQAgAwAAACcAIB0AANIBACAeAADXAQAgAQAAACcAIAEAAAAlACADCQAAqAQAICUAAKoEACAmAACpBAAgDvkBAACiAwAw-gEAAOABABD7AQAAogMAMPwBAQCWAwAhgAJAAPUCACGBAkAA9QIAIasCAQD0AgAhrAIBAJYDACGtAkAA9QIAIa4CAQD0AgAhrwIBAPQCACGwAgEA9AIAIbECAQD0AgAhswIAAKMDswIiAwAAACUAIAEAAN8BADAiAADgAQAgAwAAACUAIAEAACYAMAIAACcAIA_5AQAAoQMAMPoBAADmAQAQ-wEAAKEDADD8AQEAAAABgAJAAP0CACGBAkAA_QIAIZwCAQD8AgAhnwIBAPwCACGjAgEA_AIAIaQCQAD9AgAhpQICAJ0DACGmAkAA_QIAIacCAgCdAwAhqQJAAJ4DACGqAkAAngMAIQEAAADjAQAgAQAAAOMBACAP-QEAAKEDADD6AQAA5gEAEPsBAAChAwAw_AEBAJwDACGAAkAA_QIAIYECQAD9AgAhnAIBAPwCACGfAgEA_AIAIaMCAQD8AgAhpAJAAP0CACGlAgIAnQMAIaYCQAD9AgAhpwICAJ0DACGpAkAAngMAIaoCQACeAwAhAqkCAADcAwAgqgIAANwDACADAAAA5gEAIAEAAOcBADACAADjAQAgAwAAAOYBACABAADnAQAwAgAA4wEAIAMAAADmAQAgAQAA5wEAMAIAAOMBACAM_AEBAAAAAYACQAAAAAGBAkAAAAABnAIBAAAAAZ8CAQAAAAGjAgEAAAABpAJAAAAAAaUCAgAAAAGmAkAAAAABpwICAAAAAakCQAAAAAGqAkAAAAABARYAAOsBACAM_AEBAAAAAYACQAAAAAGBAkAAAAABnAIBAAAAAZ8CAQAAAAGjAgEAAAABpAJAAAAAAaUCAgAAAAGmAkAAAAABpwICAAAAAakCQAAAAAGqAkAAAAABARYAAO0BADABFgAA7QEAMAz8AQEA2gMAIYACQADbAwAhgQJAANsDACGcAgEA2gMAIZ8CAQDaAwAhowIBANoDACGkAkAA2wMAIaUCAgCiBAAhpgJAANsDACGnAgIAogQAIakCQADhAwAhqgJAAOEDACECAAAA4wEAIBYAAPABACAM_AEBANoDACGAAkAA2wMAIYECQADbAwAhnAIBANoDACGfAgEA2gMAIaMCAQDaAwAhpAJAANsDACGlAgIAogQAIaYCQADbAwAhpwICAKIEACGpAkAA4QMAIaoCQADhAwAhAgAAAOYBACAWAADyAQAgAgAAAOYBACAWAADyAQAgAwAAAOMBACAdAADrAQAgHgAA8AEAIAEAAADjAQAgAQAAAOYBACAHCQAAowQAICMAAKQEACAkAACnBAAgJQAApgQAICYAAKUEACCpAgAA3AMAIKoCAADcAwAgD_kBAACgAwAw-gEAAPkBABD7AQAAoAMAMPwBAQCWAwAhgAJAAPUCACGBAkAA9QIAIZwCAQD0AgAhnwIBAPQCACGjAgEA9AIAIaQCQAD1AgAhpQICAJcDACGmAkAA9QIAIacCAgCXAwAhqQJAAIADACGqAkAAgAMAIQMAAADmAQAgAQAA-AEAMCIAAPkBACADAAAA5gEAIAEAAOcBADACAADjAQAgDfkBAACbAwAw-gEAAP8BABD7AQAAmwMAMPwBAQAAAAGAAkAA_QIAIYECQAD9AgAhnAIBAPwCACGjAgEA_AIAIaQCQAD9AgAhpQICAJ0DACGmAkAA_QIAIacCAgCdAwAhqAJAAJ4DACEBAAAA_AEAIAEAAAD8AQAgDfkBAACbAwAw-gEAAP8BABD7AQAAmwMAMPwBAQCcAwAhgAJAAP0CACGBAkAA_QIAIZwCAQD8AgAhowIBAPwCACGkAkAA_QIAIaUCAgCdAwAhpgJAAP0CACGnAgIAnQMAIagCQACeAwAhAagCAADcAwAgAwAAAP8BACABAACAAgAwAgAA_AEAIAMAAAD_AQAgAQAAgAIAMAIAAPwBACADAAAA_wEAIAEAAIACADACAAD8AQAgCvwBAQAAAAGAAkAAAAABgQJAAAAAAZwCAQAAAAGjAgEAAAABpAJAAAAAAaUCAgAAAAGmAkAAAAABpwICAAAAAagCQAAAAAEBFgAAhAIAIAr8AQEAAAABgAJAAAAAAYECQAAAAAGcAgEAAAABowIBAAAAAaQCQAAAAAGlAgIAAAABpgJAAAAAAacCAgAAAAGoAkAAAAABARYAAIYCADABFgAAhgIAMAr8AQEA2gMAIYACQADbAwAhgQJAANsDACGcAgEA2gMAIaMCAQDaAwAhpAJAANsDACGlAgIAogQAIaYCQADbAwAhpwICAKIEACGoAkAA4QMAIQIAAAD8AQAgFgAAiQIAIAr8AQEA2gMAIYACQADbAwAhgQJAANsDACGcAgEA2gMAIaMCAQDaAwAhpAJAANsDACGlAgIAogQAIaYCQADbAwAhpwICAKIEACGoAkAA4QMAIQIAAAD_AQAgFgAAiwIAIAIAAAD_AQAgFgAAiwIAIAMAAAD8AQAgHQAAhAIAIB4AAIkCACABAAAA_AEAIAEAAAD_AQAgBgkAAJ0EACAjAACeBAAgJAAAoQQAICUAAKAEACAmAACfBAAgqAIAANwDACAN-QEAAJUDADD6AQAAkgIAEPsBAACVAwAw_AEBAJYDACGAAkAA9QIAIYECQAD1AgAhnAIBAPQCACGjAgEA9AIAIaQCQAD1AgAhpQICAJcDACGmAkAA9QIAIacCAgCXAwAhqAJAAIADACEDAAAA_wEAIAEAAJECADAiAACSAgAgAwAAAP8BACABAACAAgAwAgAA_AEAIA8GAACRAwAgBwAAkgMAIAgAAJMDACD5AQAAjQMAMPoBAACYAgAQ-wEAAI0DADD8AQEAAAABgAJAAP0CACGBAkAA_QIAIZoCAQAAAAGbAgEAjwMAIZwCAQAAAAGdAiAAkAMAIZ4CAQCPAwAhnwIBAI8DACEBAAAAlQIAIAEAAACVAgAgDwYAAJEDACAHAACSAwAgCAAAkwMAIPkBAACNAwAw-gEAAJgCABD7AQAAjQMAMPwBAQD8AgAhgAJAAP0CACGBAkAA_QIAIZoCAQCOAwAhmwIBAI8DACGcAgEA_AIAIZ0CIACQAwAhngIBAI8DACGfAgEAjwMAIQcGAACaBAAgBwAAmwQAIAgAAJwEACCaAgAA3AMAIJsCAADcAwAgngIAANwDACCfAgAA3AMAIAMAAACYAgAgAQAAmQIAMAIAAJUCACADAAAAmAIAIAEAAJkCADACAACVAgAgAwAAAJgCACABAACZAgAwAgAAlQIAIAwGAACXBAAgBwAAmAQAIAgAAJkEACD8AQEAAAABgAJAAAAAAYECQAAAAAGaAgEAAAABmwIBAAAAAZwCAQAAAAGdAiAAAAABngIBAAAAAZ8CAQAAAAEBFgAAnQIAIAn8AQEAAAABgAJAAAAAAYECQAAAAAGaAgEAAAABmwIBAAAAAZwCAQAAAAGdAiAAAAABngIBAAAAAZ8CAQAAAAEBFgAAnwIAMAEWAACfAgAwDAYAAO0DACAHAADuAwAgCAAA7wMAIPwBAQDaAwAhgAJAANsDACGBAkAA2wMAIZoCAQDgAwAhmwIBAOADACGcAgEA2gMAIZ0CIADsAwAhngIBAOADACGfAgEA4AMAIQIAAACVAgAgFgAAogIAIAn8AQEA2gMAIYACQADbAwAhgQJAANsDACGaAgEA4AMAIZsCAQDgAwAhnAIBANoDACGdAiAA7AMAIZ4CAQDgAwAhnwIBAOADACECAAAAmAIAIBYAAKQCACACAAAAmAIAIBYAAKQCACADAAAAlQIAIB0AAJ0CACAeAACiAgAgAQAAAJUCACABAAAAmAIAIAcJAADpAwAgJQAA6wMAICYAAOoDACCaAgAA3AMAIJsCAADcAwAgngIAANwDACCfAgAA3AMAIAz5AQAAhwMAMPoBAACrAgAQ-wEAAIcDADD8AQEA9AIAIYACQAD1AgAhgQJAAPUCACGaAgEAiAMAIZsCAQD_AgAhnAIBAPQCACGdAiAAiQMAIZ4CAQD_AgAhnwIBAP8CACEDAAAAmAIAIAEAAKoCADAiAACrAgAgAwAAAJgCACABAACZAgAwAgAAlQIAIAEAAAARACABAAAAEQAgAwAAAA8AIAEAABAAMAIAABEAIAMAAAAPACABAAAQADACAAARACADAAAADwAgAQAAEAAwAgAAEQAgCQUAAOgDACD8AQEAAAAB_wFAAAAAAYACQAAAAAGBAkAAAAABjQIBAAAAAZcCAQAAAAGYAgEAAAABmQIBAAAAAQEWAACzAgAgCPwBAQAAAAH_AUAAAAABgAJAAAAAAYECQAAAAAGNAgEAAAABlwIBAAAAAZgCAQAAAAGZAgEAAAABARYAALUCADABFgAAtQIAMAkFAADnAwAg_AEBANoDACH_AUAA2wMAIYACQADbAwAhgQJAANsDACGNAgEA2gMAIZcCAQDaAwAhmAIBAOADACGZAgEA4AMAIQIAAAARACAWAAC4AgAgCPwBAQDaAwAh_wFAANsDACGAAkAA2wMAIYECQADbAwAhjQIBANoDACGXAgEA2gMAIZgCAQDgAwAhmQIBAOADACECAAAADwAgFgAAugIAIAIAAAAPACAWAAC6AgAgAwAAABEAIB0AALMCACAeAAC4AgAgAQAAABEAIAEAAAAPACAFCQAA5AMAICUAAOYDACAmAADlAwAgmAIAANwDACCZAgAA3AMAIAv5AQAAhgMAMPoBAADBAgAQ-wEAAIYDADD8AQEA9AIAIf8BQAD1AgAhgAJAAPUCACGBAkAA9QIAIY0CAQD0AgAhlwIBAPQCACGYAgEA_wIAIZkCAQD_AgAhAwAAAA8AIAEAAMACADAiAADBAgAgAwAAAA8AIAEAABAAMAIAABEAIAEAAAANACABAAAADQAgAwAAAAsAIAEAAAwAMAIAAA0AIAMAAAALACABAAAMADACAAANACADAAAACwAgAQAADAAwAgAADQAgDgUAAOMDACD8AQEAAAABgAJAAAAAAYECQAAAAAGNAgEAAAABjgIBAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICQAAAAAGTAkAAAAABlAIBAAAAAZUCAQAAAAGWAgEAAAABARYAAMkCACAN_AEBAAAAAYACQAAAAAGBAkAAAAABjQIBAAAAAY4CAQAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAkAAAAABkwJAAAAAAZQCAQAAAAGVAgEAAAABlgIBAAAAAQEWAADLAgAwARYAAMsCADAOBQAA4gMAIPwBAQDaAwAhgAJAANsDACGBAkAA2wMAIY0CAQDaAwAhjgIBANoDACGPAgEA2gMAIZACAQDgAwAhkQIBAOADACGSAkAA4QMAIZMCQADhAwAhlAIBAOADACGVAgEA4AMAIZYCAQDgAwAhAgAAAA0AIBYAAM4CACAN_AEBANoDACGAAkAA2wMAIYECQADbAwAhjQIBANoDACGOAgEA2gMAIY8CAQDaAwAhkAIBAOADACGRAgEA4AMAIZICQADhAwAhkwJAAOEDACGUAgEA4AMAIZUCAQDgAwAhlgIBAOADACECAAAACwAgFgAA0AIAIAIAAAALACAWAADQAgAgAwAAAA0AIB0AAMkCACAeAADOAgAgAQAAAA0AIAEAAAALACAKCQAA3QMAICUAAN8DACAmAADeAwAgkAIAANwDACCRAgAA3AMAIJICAADcAwAgkwIAANwDACCUAgAA3AMAIJUCAADcAwAglgIAANwDACAQ-QEAAP4CADD6AQAA1wIAEPsBAAD-AgAw_AEBAPQCACGAAkAA9QIAIYECQAD1AgAhjQIBAPQCACGOAgEA9AIAIY8CAQD0AgAhkAIBAP8CACGRAgEA_wIAIZICQACAAwAhkwJAAIADACGUAgEA_wIAIZUCAQD_AgAhlgIBAP8CACEDAAAACwAgAQAA1gIAMCIAANcCACADAAAACwAgAQAADAAwAgAADQAgCfkBAAD7AgAw-gEAAN0CABD7AQAA-wIAMPwBAQAAAAH9AQEA_AIAIf4BAQD8AgAh_wFAAP0CACGAAkAA_QIAIYECQAD9AgAhAQAAANoCACABAAAA2gIAIAn5AQAA-wIAMPoBAADdAgAQ-wEAAPsCADD8AQEA_AIAIf0BAQD8AgAh_gEBAPwCACH_AUAA_QIAIYACQAD9AgAhgQJAAP0CACEAAwAAAN0CACABAADeAgAwAgAA2gIAIAMAAADdAgAgAQAA3gIAMAIAANoCACADAAAA3QIAIAEAAN4CADACAADaAgAgBvwBAQAAAAH9AQEAAAAB_gEBAAAAAf8BQAAAAAGAAkAAAAABgQJAAAAAAQEWAADiAgAgBvwBAQAAAAH9AQEAAAAB_gEBAAAAAf8BQAAAAAGAAkAAAAABgQJAAAAAAQEWAADkAgAwARYAAOQCADAG_AEBANoDACH9AQEA2gMAIf4BAQDaAwAh_wFAANsDACGAAkAA2wMAIYECQADbAwAhAgAAANoCACAWAADnAgAgBvwBAQDaAwAh_QEBANoDACH-AQEA2gMAIf8BQADbAwAhgAJAANsDACGBAkAA2wMAIQIAAADdAgAgFgAA6QIAIAIAAADdAgAgFgAA6QIAIAMAAADaAgAgHQAA4gIAIB4AAOcCACABAAAA2gIAIAEAAADdAgAgAwkAANcDACAlAADZAwAgJgAA2AMAIAn5AQAA8wIAMPoBAADwAgAQ-wEAAPMCADD8AQEA9AIAIf0BAQD0AgAh_gEBAPQCACH_AUAA9QIAIYACQAD1AgAhgQJAAPUCACEDAAAA3QIAIAEAAO8CADAiAADwAgAgAwAAAN0CACABAADeAgAwAgAA2gIAIAn5AQAA8wIAMPoBAADwAgAQ-wEAAPMCADD8AQEA9AIAIf0BAQD0AgAh_gEBAPQCACH_AUAA9QIAIYACQAD1AgAhgQJAAPUCACEOCQAA9wIAICUAAPoCACAmAAD6AgAgggIBAAAAAYMCAQAAAASEAgEAAAAEhQIBAAAAAYYCAQAAAAGHAgEAAAABiAIBAAAAAYkCAQD5AgAhigIBAAAAAYsCAQAAAAGMAgEAAAABCwkAAPcCACAlAAD4AgAgJgAA-AIAIIICQAAAAAGDAkAAAAAEhAJAAAAABIUCQAAAAAGGAkAAAAABhwJAAAAAAYgCQAAAAAGJAkAA9gIAIQsJAAD3AgAgJQAA-AIAICYAAPgCACCCAkAAAAABgwJAAAAABIQCQAAAAASFAkAAAAABhgJAAAAAAYcCQAAAAAGIAkAAAAABiQJAAPYCACEIggICAAAAAYMCAgAAAASEAgIAAAAEhQICAAAAAYYCAgAAAAGHAgIAAAABiAICAAAAAYkCAgD3AgAhCIICQAAAAAGDAkAAAAAEhAJAAAAABIUCQAAAAAGGAkAAAAABhwJAAAAAAYgCQAAAAAGJAkAA-AIAIQ4JAAD3AgAgJQAA-gIAICYAAPoCACCCAgEAAAABgwIBAAAABIQCAQAAAASFAgEAAAABhgIBAAAAAYcCAQAAAAGIAgEAAAABiQIBAPkCACGKAgEAAAABiwIBAAAAAYwCAQAAAAELggIBAAAAAYMCAQAAAASEAgEAAAAEhQIBAAAAAYYCAQAAAAGHAgEAAAABiAIBAAAAAYkCAQD6AgAhigIBAAAAAYsCAQAAAAGMAgEAAAABCfkBAAD7AgAw-gEAAN0CABD7AQAA-wIAMPwBAQD8AgAh_QEBAPwCACH-AQEA_AIAIf8BQAD9AgAhgAJAAP0CACGBAkAA_QIAIQuCAgEAAAABgwIBAAAABIQCAQAAAASFAgEAAAABhgIBAAAAAYcCAQAAAAGIAgEAAAABiQIBAPoCACGKAgEAAAABiwIBAAAAAYwCAQAAAAEIggJAAAAAAYMCQAAAAASEAkAAAAAEhQJAAAAAAYYCQAAAAAGHAkAAAAABiAJAAAAAAYkCQAD4AgAhEPkBAAD-AgAw-gEAANcCABD7AQAA_gIAMPwBAQD0AgAhgAJAAPUCACGBAkAA9QIAIY0CAQD0AgAhjgIBAPQCACGPAgEA9AIAIZACAQD_AgAhkQIBAP8CACGSAkAAgAMAIZMCQACAAwAhlAIBAP8CACGVAgEA_wIAIZYCAQD_AgAhDgkAAIIDACAlAACFAwAgJgAAhQMAIIICAQAAAAGDAgEAAAAFhAIBAAAABYUCAQAAAAGGAgEAAAABhwIBAAAAAYgCAQAAAAGJAgEAhAMAIYoCAQAAAAGLAgEAAAABjAIBAAAAAQsJAACCAwAgJQAAgwMAICYAAIMDACCCAkAAAAABgwJAAAAABYQCQAAAAAWFAkAAAAABhgJAAAAAAYcCQAAAAAGIAkAAAAABiQJAAIEDACELCQAAggMAICUAAIMDACAmAACDAwAgggJAAAAAAYMCQAAAAAWEAkAAAAAFhQJAAAAAAYYCQAAAAAGHAkAAAAABiAJAAAAAAYkCQACBAwAhCIICAgAAAAGDAgIAAAAFhAICAAAABYUCAgAAAAGGAgIAAAABhwICAAAAAYgCAgAAAAGJAgIAggMAIQiCAkAAAAABgwJAAAAABYQCQAAAAAWFAkAAAAABhgJAAAAAAYcCQAAAAAGIAkAAAAABiQJAAIMDACEOCQAAggMAICUAAIUDACAmAACFAwAgggIBAAAAAYMCAQAAAAWEAgEAAAAFhQIBAAAAAYYCAQAAAAGHAgEAAAABiAIBAAAAAYkCAQCEAwAhigIBAAAAAYsCAQAAAAGMAgEAAAABC4ICAQAAAAGDAgEAAAAFhAIBAAAABYUCAQAAAAGGAgEAAAABhwIBAAAAAYgCAQAAAAGJAgEAhQMAIYoCAQAAAAGLAgEAAAABjAIBAAAAAQv5AQAAhgMAMPoBAADBAgAQ-wEAAIYDADD8AQEA9AIAIf8BQAD1AgAhgAJAAPUCACGBAkAA9QIAIY0CAQD0AgAhlwIBAPQCACGYAgEA_wIAIZkCAQD_AgAhDPkBAACHAwAw-gEAAKsCABD7AQAAhwMAMPwBAQD0AgAhgAJAAPUCACGBAkAA9QIAIZoCAQCIAwAhmwIBAP8CACGcAgEA9AIAIZ0CIACJAwAhngIBAP8CACGfAgEA_wIAIQsJAACCAwAgJQAAhQMAICYAAIUDACCCAgEAAAABgwIBAAAABYQCAQAAAAWFAgEAAAABhgIBAAAAAYcCAQAAAAGIAgEAAAABiQIBAIwDACEFCQAA9wIAICUAAIsDACAmAACLAwAgggIgAAAAAYkCIACKAwAhBQkAAPcCACAlAACLAwAgJgAAiwMAIIICIAAAAAGJAiAAigMAIQKCAiAAAAABiQIgAIsDACELCQAAggMAICUAAIUDACAmAACFAwAgggIBAAAAAYMCAQAAAAWEAgEAAAAFhQIBAAAAAYYCAQAAAAGHAgEAAAABiAIBAAAAAYkCAQCMAwAhDwYAAJEDACAHAACSAwAgCAAAkwMAIPkBAACNAwAw-gEAAJgCABD7AQAAjQMAMPwBAQD8AgAhgAJAAP0CACGBAkAA_QIAIZoCAQCOAwAhmwIBAI8DACGcAgEA_AIAIZ0CIACQAwAhngIBAI8DACGfAgEAjwMAIQiCAgEAAAABgwIBAAAABYQCAQAAAAWFAgEAAAABhgIBAAAAAYcCAQAAAAGIAgEAAAABiQIBAJQDACELggIBAAAAAYMCAQAAAAWEAgEAAAAFhQIBAAAAAYYCAQAAAAGHAgEAAAABiAIBAAAAAYkCAQCFAwAhigIBAAAAAYsCAQAAAAGMAgEAAAABAoICIAAAAAGJAiAAiwMAIQOgAgAACwAgoQIAAAsAIKICAAALACADoAIAAA8AIKECAAAPACCiAgAADwAgA6ACAAAHACChAgAABwAgogIAAAcAIAiCAgEAAAABgwIBAAAABYQCAQAAAAWFAgEAAAABhgIBAAAAAYcCAQAAAAGIAgEAAAABiQIBAJQDACEN-QEAAJUDADD6AQAAkgIAEPsBAACVAwAw_AEBAJYDACGAAkAA9QIAIYECQAD1AgAhnAIBAPQCACGjAgEA9AIAIaQCQAD1AgAhpQICAJcDACGmAkAA9QIAIacCAgCXAwAhqAJAAIADACELCQAA9wIAICUAAPoCACAmAAD6AgAgggIBAAAAAYMCAQAAAASEAgEAAAAEhQIBAAAAAYYCAQAAAAGHAgEAAAABiAIBAAAAAYkCAQCaAwAhDQkAAPcCACAjAACZAwAgJAAA9wIAICUAAPcCACAmAAD3AgAgggICAAAAAYMCAgAAAASEAgIAAAAEhQICAAAAAYYCAgAAAAGHAgIAAAABiAICAAAAAYkCAgCYAwAhDQkAAPcCACAjAACZAwAgJAAA9wIAICUAAPcCACAmAAD3AgAgggICAAAAAYMCAgAAAASEAgIAAAAEhQICAAAAAYYCAgAAAAGHAgIAAAABiAICAAAAAYkCAgCYAwAhCIICCAAAAAGDAggAAAAEhAIIAAAABIUCCAAAAAGGAggAAAABhwIIAAAAAYgCCAAAAAGJAggAmQMAIQsJAAD3AgAgJQAA-gIAICYAAPoCACCCAgEAAAABgwIBAAAABIQCAQAAAASFAgEAAAABhgIBAAAAAYcCAQAAAAGIAgEAAAABiQIBAJoDACEN-QEAAJsDADD6AQAA_wEAEPsBAACbAwAw_AEBAJwDACGAAkAA_QIAIYECQAD9AgAhnAIBAPwCACGjAgEA_AIAIaQCQAD9AgAhpQICAJ0DACGmAkAA_QIAIacCAgCdAwAhqAJAAJ4DACEIggIBAAAAAYMCAQAAAASEAgEAAAAEhQIBAAAAAYYCAQAAAAGHAgEAAAABiAIBAAAAAYkCAQCfAwAhCIICAgAAAAGDAgIAAAAEhAICAAAABIUCAgAAAAGGAgIAAAABhwICAAAAAYgCAgAAAAGJAgIA9wIAIQiCAkAAAAABgwJAAAAABYQCQAAAAAWFAkAAAAABhgJAAAAAAYcCQAAAAAGIAkAAAAABiQJAAIMDACEIggIBAAAAAYMCAQAAAASEAgEAAAAEhQIBAAAAAYYCAQAAAAGHAgEAAAABiAIBAAAAAYkCAQCfAwAhD_kBAACgAwAw-gEAAPkBABD7AQAAoAMAMPwBAQCWAwAhgAJAAPUCACGBAkAA9QIAIZwCAQD0AgAhnwIBAPQCACGjAgEA9AIAIaQCQAD1AgAhpQICAJcDACGmAkAA9QIAIacCAgCXAwAhqQJAAIADACGqAkAAgAMAIQ_5AQAAoQMAMPoBAADmAQAQ-wEAAKEDADD8AQEAnAMAIYACQAD9AgAhgQJAAP0CACGcAgEA_AIAIZ8CAQD8AgAhowIBAPwCACGkAkAA_QIAIaUCAgCdAwAhpgJAAP0CACGnAgIAnQMAIakCQACeAwAhqgJAAJ4DACEO-QEAAKIDADD6AQAA4AEAEPsBAACiAwAw_AEBAJYDACGAAkAA9QIAIYECQAD1AgAhqwIBAPQCACGsAgEAlgMAIa0CQAD1AgAhrgIBAPQCACGvAgEA9AIAIbACAQD0AgAhsQIBAPQCACGzAgAAowOzAiIHCQAA9wIAICUAAKUDACAmAAClAwAgggIAAACzAgKDAgAAALMCCIQCAAAAswIIiQIAAKQDswIiBwkAAPcCACAlAAClAwAgJgAApQMAIIICAAAAswICgwIAAACzAgiEAgAAALMCCIkCAACkA7MCIgSCAgAAALMCAoMCAAAAswIIhAIAAACzAgiJAgAApQOzAiIM-QEAAKYDADD6AQAAygEAEPsBAACmAwAw_AEBAJYDACGAAkAA9QIAIYECQAD1AgAhrAIBAJYDACGuAgEA_wIAIa8CAQD_AgAhtQIAAKcDtQIjtgIQAKgDACG3AiAAiQMAIQcJAACCAwAgJQAArAMAICYAAKwDACCCAgAAALUCA4MCAAAAtQIJhAIAAAC1AgmJAgAAqwO1AiMNCQAA9wIAICMAAKoDACAkAACqAwAgJQAAqgMAICYAAKoDACCCAhAAAAABgwIQAAAABIQCEAAAAASFAhAAAAABhgIQAAAAAYcCEAAAAAGIAhAAAAABiQIQAKkDACENCQAA9wIAICMAAKoDACAkAACqAwAgJQAAqgMAICYAAKoDACCCAhAAAAABgwIQAAAABIQCEAAAAASFAhAAAAABhgIQAAAAAYcCEAAAAAGIAhAAAAABiQIQAKkDACEIggIQAAAAAYMCEAAAAASEAhAAAAAEhQIQAAAAAYYCEAAAAAGHAhAAAAABiAIQAAAAAYkCEACqAwAhBwkAAIIDACAlAACsAwAgJgAArAMAIIICAAAAtQIDgwIAAAC1AgmEAgAAALUCCYkCAACrA7UCIwSCAgAAALUCA4MCAAAAtQIJhAIAAAC1AgmJAgAArAO1AiMJ-QEAAK0DADD6AQAAtAEAEPsBAACtAwAw_AEBAJYDACGAAkAA9QIAIawCAQCWAwAhrgIBAPQCACGvAgEA9AIAIbUCAACuA7UCIgcJAAD3AgAgJQAAsAMAICYAALADACCCAgAAALUCAoMCAAAAtQIIhAIAAAC1AgiJAgAArwO1AiIHCQAA9wIAICUAALADACAmAACwAwAgggIAAAC1AgKDAgAAALUCCIQCAAAAtQIIiQIAAK8DtQIiBIICAAAAtQICgwIAAAC1AgiEAgAAALUCCIkCAACwA7UCIgv5AQAAsQMAMPoBAACeAQAQ-wEAALEDADD8AQEAlgMAIYACQAD1AgAhgQJAAPUCACGbAgEA9AIAIbgCAQCWAwAhuQIBAJYDACG6AgIAlwMAIbsCEACoAwAhCfkBAACyAwAw-gEAAIgBABD7AQAAsgMAMPwBAQCWAwAhgAJAAPUCACGBAkAA9QIAIZsCAQD0AgAhtwIgAIkDACG8AgEA9AIAIQoLAAC0AwAg-QEAALMDADD6AQAAdQAQ-wEAALMDADD8AQEAnAMAIYACQAD9AgAhgQJAAP0CACGbAgEA_AIAIbcCIACQAwAhvAIBAPwCACEDoAIAABcAIKECAAAXACCiAgAAFwAgCfkBAAC1AwAw-gEAAG8AEPsBAAC1AwAw_AEBAPQCACGAAkAA9QIAIYECQAD1AgAhjQIBAPQCACG4AgEAlgMAIb4CAAC2A74CIgcJAAD3AgAgJQAAuAMAICYAALgDACCCAgAAAL4CAoMCAAAAvgIIhAIAAAC-AgiJAgAAtwO-AiIHCQAA9wIAICUAALgDACAmAAC4AwAgggIAAAC-AgKDAgAAAL4CCIQCAAAAvgIIiQIAALcDvgIiBIICAAAAvgICgwIAAAC-AgiEAgAAAL4CCIkCAAC4A74CIg_5AQAAuQMAMPoBAABZABD7AQAAuQMAMPwBAQCWAwAhgAJAAPUCACGBAkAA9QIAIbcCIACJAwAhvwIBAPQCACHAAgEA9AIAIcECAQD0AgAhwgIBAP8CACHDAgEA_wIAIcQCAQD_AgAhxQIBAPQCACHGAgEA9AIAIQj5AQAAugMAMPoBAABDABD7AQAAugMAMJsCAQD0AgAhtgIQAKgDACHHAgEA9AIAIcgCAAC7AwAgyQJAAPUCACEPCQAA9wIAICUAALwDACAmAAC8AwAgggKAAAAAAYUCgAAAAAGGAoAAAAABhwKAAAAAAYgCgAAAAAGJAoAAAAABygIBAAAAAcsCAQAAAAHMAgEAAAABzQKAAAAAAc4CgAAAAAHPAoAAAAABDIICgAAAAAGFAoAAAAABhgKAAAAAAYcCgAAAAAGIAoAAAAABiQKAAAAAAcoCAQAAAAHLAgEAAAABzAIBAAAAAc0CgAAAAAHOAoAAAAABzwKAAAAAAQkIAADAAwAg-QEAAL0DADD6AQAAMAAQ-wEAAL0DADCbAgEA_AIAIbYCEAC-AwAhxwIBAPwCACHIAgAAvwMAIMkCQAD9AgAhCIICEAAAAAGDAhAAAAAEhAIQAAAABIUCEAAAAAGGAhAAAAABhwIQAAAAAYgCEAAAAAGJAhAAqgMAIQyCAoAAAAABhQKAAAAAAYYCgAAAAAGHAoAAAAABiAKAAAAAAYkCgAAAAAHKAgEAAAABywIBAAAAAcwCAQAAAAHNAoAAAAABzgKAAAAAAc8CgAAAAAEDoAIAAAMAIKECAAADACCiAgAAAwAgA6wCAQAAAAGtAkAAAAABrgIBAAAAAQ8NAADEAwAg-QEAAMIDADD6AQAAJQAQ-wEAAMIDADD8AQEAnAMAIYACQAD9AgAhgQJAAP0CACGrAgEA_AIAIawCAQCcAwAhrQJAAP0CACGuAgEA_AIAIa8CAQD8AgAhsAIBAPwCACGxAgEA_AIAIbMCAADDA7MCIgSCAgAAALMCAoMCAAAAswIIhAIAAACzAgiJAgAApQOzAiISBAAAygMAIAwAAMsDACAOAADMAwAgDwAAzQMAIBAAAM4DACD5AQAAyQMAMPoBAAAXABD7AQAAyQMAMPwBAQCcAwAhgAJAAP0CACGBAkAA_QIAIZsCAQD8AgAhuAIBAJwDACG5AgEAnAMAIboCAgCdAwAhuwIQAL4DACHSAgAAFwAg0wIAABcAIA0NAADEAwAg-QEAAMUDADD6AQAAIQAQ-wEAAMUDADD8AQEAnAMAIYACQAD9AgAhgQJAAP0CACGsAgEAnAMAIa4CAQCPAwAhrwIBAI8DACG1AgAAxgO1AiO2AhAAvgMAIbcCIACQAwAhBIICAAAAtQIDgwIAAAC1AgmEAgAAALUCCYkCAACsA7UCIwoNAADEAwAg-QEAAMcDADD6AQAAHQAQ-wEAAMcDADD8AQEAnAMAIYACQAD9AgAhrAIBAJwDACGuAgEA_AIAIa8CAQD8AgAhtQIAAMgDtQIiBIICAAAAtQICgwIAAAC1AgiEAgAAALUCCIkCAACwA7UCIhAEAADKAwAgDAAAywMAIA4AAMwDACAPAADNAwAgEAAAzgMAIPkBAADJAwAw-gEAABcAEPsBAADJAwAw_AEBAJwDACGAAkAA_QIAIYECQAD9AgAhmwIBAPwCACG4AgEAnAMAIbkCAQCcAwAhugICAJ0DACG7AhAAvgMAIRQDAADWAwAgCgAAkwMAIAsAALQDACD5AQAA1QMAMPoBAAADABD7AQAA1QMAMPwBAQCcAwAhgAJAAP0CACGBAkAA_QIAIbcCIACQAwAhvwIBAPwCACHAAgEA_AIAIcECAQD8AgAhwgIBAI8DACHDAgEAjwMAIcQCAQCPAwAhxQIBAPwCACHGAgEA_AIAIdICAAADACDTAgAAAwAgDAsAALQDACD5AQAAswMAMPoBAAB1ABD7AQAAswMAMPwBAQCcAwAhgAJAAP0CACGBAkAA_QIAIZsCAQD8AgAhtwIgAJADACG8AgEA_AIAIdICAAB1ACDTAgAAdQAgA6ACAAAdACChAgAAHQAgogIAAB0AIAOgAgAAIQAgoQIAACEAIKICAAAhACADoAIAACUAIKECAAAlACCiAgAAJQAgDAUAANADACD5AQAAzwMAMPoBAAAPABD7AQAAzwMAMPwBAQD8AgAh_wFAAP0CACGAAkAA_QIAIYECQAD9AgAhjQIBAPwCACGXAgEA_AIAIZgCAQCPAwAhmQIBAI8DACERBgAAkQMAIAcAAJIDACAIAACTAwAg-QEAAI0DADD6AQAAmAIAEPsBAACNAwAw_AEBAPwCACGAAkAA_QIAIYECQAD9AgAhmgIBAI4DACGbAgEAjwMAIZwCAQD8AgAhnQIgAJADACGeAgEAjwMAIZ8CAQCPAwAh0gIAAJgCACDTAgAAmAIAIBEFAADQAwAg-QEAANEDADD6AQAACwAQ-wEAANEDADD8AQEA_AIAIYACQAD9AgAhgQJAAP0CACGNAgEA_AIAIY4CAQD8AgAhjwIBAPwCACGQAgEAjwMAIZECAQCPAwAhkgJAAJ4DACGTAkAAngMAIZQCAQCPAwAhlQIBAI8DACGWAgEAjwMAIQKNAgEAAAABuAIBAAAAAQsEAADKAwAgBQAA0AMAIPkBAADTAwAw-gEAAAcAEPsBAADTAwAw_AEBAPwCACGAAkAA_QIAIYECQAD9AgAhjQIBAPwCACG4AgEAnAMAIb4CAADUA74CIgSCAgAAAL4CAoMCAAAAvgIIhAIAAAC-AgiJAgAAuAO-AiISAwAA1gMAIAoAAJMDACALAAC0AwAg-QEAANUDADD6AQAAAwAQ-wEAANUDADD8AQEAnAMAIYACQAD9AgAhgQJAAP0CACG3AiAAkAMAIb8CAQD8AgAhwAIBAPwCACHBAgEA_AIAIcICAQCPAwAhwwIBAI8DACHEAgEAjwMAIcUCAQD8AgAhxgIBAPwCACELCAAAwAMAIPkBAAC9AwAw-gEAADAAEPsBAAC9AwAwmwIBAPwCACG2AhAAvgMAIccCAQD8AgAhyAIAAL8DACDJAkAA_QIAIdICAAAwACDTAgAAMAAgAAAAAdcCAQAAAAEB1wJAAAAAAQAAAAAB1wIBAAAAAQHXAkAAAAABBR0AAPUFACAeAAD4BQAg1AIAAPYFACDVAgAA9wUAINoCAACVAgAgAx0AAPUFACDUAgAA9gUAINoCAACVAgAgAAAABR0AAPAFACAeAADzBQAg1AIAAPEFACDVAgAA8gUAINoCAACVAgAgAx0AAPAFACDUAgAA8QUAINoCAACVAgAgAAAAAdcCIAAAAAELHQAAiwQAMB4AAJAEADDUAgAAjAQAMNUCAACNBAAw1gIAAI4EACDXAgAAjwQAMNgCAACPBAAw2QIAAI8EADDaAgAAjwQAMNsCAACRBAAw3AIAAJIEADALHQAA_wMAMB4AAIQEADDUAgAAgAQAMNUCAACBBAAw1gIAAIIEACDXAgAAgwQAMNgCAACDBAAw2QIAAIMEADDaAgAAgwQAMNsCAACFBAAw3AIAAIYEADALHQAA8AMAMB4AAPUDADDUAgAA8QMAMNUCAADyAwAw1gIAAPMDACDXAgAA9AMAMNgCAAD0AwAw2QIAAPQDADDaAgAA9AMAMNsCAAD2AwAw3AIAAPcDADAGBAAA_gMAIPwBAQAAAAGAAkAAAAABgQJAAAAAAbgCAQAAAAG-AgAAAL4CAgIAAAAJACAdAAD9AwAgAwAAAAkAIB0AAP0DACAeAAD7AwAgARYAAO8FADAMBAAAygMAIAUAANADACD5AQAA0wMAMPoBAAAHABD7AQAA0wMAMPwBAQAAAAGAAkAA_QIAIYECQAD9AgAhjQIBAPwCACG4AgEAnAMAIb4CAADUA74CItECAADSAwAgAgAAAAkAIBYAAPsDACACAAAA-AMAIBYAAPkDACAJ-QEAAPcDADD6AQAA-AMAEPsBAAD3AwAw_AEBAPwCACGAAkAA_QIAIYECQAD9AgAhjQIBAPwCACG4AgEAnAMAIb4CAADUA74CIgn5AQAA9wMAMPoBAAD4AwAQ-wEAAPcDADD8AQEA_AIAIYACQAD9AgAhgQJAAP0CACGNAgEA_AIAIbgCAQCcAwAhvgIAANQDvgIiBfwBAQDaAwAhgAJAANsDACGBAkAA2wMAIbgCAQDaAwAhvgIAAPoDvgIiAdcCAAAAvgICBgQAAPwDACD8AQEA2gMAIYACQADbAwAhgQJAANsDACG4AgEA2gMAIb4CAAD6A74CIgUdAADqBQAgHgAA7QUAINQCAADrBQAg1QIAAOwFACDaAgAABQAgBgQAAP4DACD8AQEAAAABgAJAAAAAAYECQAAAAAG4AgEAAAABvgIAAAC-AgIDHQAA6gUAINQCAADrBQAg2gIAAAUAIAf8AQEAAAAB_wFAAAAAAYACQAAAAAGBAkAAAAABlwIBAAAAAZgCAQAAAAGZAgEAAAABAgAAABEAIB0AAIoEACADAAAAEQAgHQAAigQAIB4AAIkEACABFgAA6QUAMAwFAADQAwAg-QEAAM8DADD6AQAADwAQ-wEAAM8DADD8AQEAAAAB_wFAAP0CACGAAkAA_QIAIYECQAD9AgAhjQIBAPwCACGXAgEAAAABmAIBAI8DACGZAgEAjwMAIQIAAAARACAWAACJBAAgAgAAAIcEACAWAACIBAAgC_kBAACGBAAw-gEAAIcEABD7AQAAhgQAMPwBAQD8AgAh_wFAAP0CACGAAkAA_QIAIYECQAD9AgAhjQIBAPwCACGXAgEA_AIAIZgCAQCPAwAhmQIBAI8DACEL-QEAAIYEADD6AQAAhwQAEPsBAACGBAAw_AEBAPwCACH_AUAA_QIAIYACQAD9AgAhgQJAAP0CACGNAgEA_AIAIZcCAQD8AgAhmAIBAI8DACGZAgEAjwMAIQf8AQEA2gMAIf8BQADbAwAhgAJAANsDACGBAkAA2wMAIZcCAQDaAwAhmAIBAOADACGZAgEA4AMAIQf8AQEA2gMAIf8BQADbAwAhgAJAANsDACGBAkAA2wMAIZcCAQDaAwAhmAIBAOADACGZAgEA4AMAIQf8AQEAAAAB_wFAAAAAAYACQAAAAAGBAkAAAAABlwIBAAAAAZgCAQAAAAGZAgEAAAABDPwBAQAAAAGAAkAAAAABgQJAAAAAAY4CAQAAAAGPAgEAAAABkAIBAAAAAZECAQAAAAGSAkAAAAABkwJAAAAAAZQCAQAAAAGVAgEAAAABlgIBAAAAAQIAAAANACAdAACWBAAgAwAAAA0AIB0AAJYEACAeAACVBAAgARYAAOgFADARBQAA0AMAIPkBAADRAwAw-gEAAAsAEPsBAADRAwAw_AEBAAAAAYACQAD9AgAhgQJAAP0CACGNAgEA_AIAIY4CAQD8AgAhjwIBAPwCACGQAgEAjwMAIZECAQCPAwAhkgJAAJ4DACGTAkAAngMAIZQCAQCPAwAhlQIBAI8DACGWAgEAjwMAIQIAAAANACAWAACVBAAgAgAAAJMEACAWAACUBAAgEPkBAACSBAAw-gEAAJMEABD7AQAAkgQAMPwBAQD8AgAhgAJAAP0CACGBAkAA_QIAIY0CAQD8AgAhjgIBAPwCACGPAgEA_AIAIZACAQCPAwAhkQIBAI8DACGSAkAAngMAIZMCQACeAwAhlAIBAI8DACGVAgEAjwMAIZYCAQCPAwAhEPkBAACSBAAw-gEAAJMEABD7AQAAkgQAMPwBAQD8AgAhgAJAAP0CACGBAkAA_QIAIY0CAQD8AgAhjgIBAPwCACGPAgEA_AIAIZACAQCPAwAhkQIBAI8DACGSAkAAngMAIZMCQACeAwAhlAIBAI8DACGVAgEAjwMAIZYCAQCPAwAhDPwBAQDaAwAhgAJAANsDACGBAkAA2wMAIY4CAQDaAwAhjwIBANoDACGQAgEA4AMAIZECAQDgAwAhkgJAAOEDACGTAkAA4QMAIZQCAQDgAwAhlQIBAOADACGWAgEA4AMAIQz8AQEA2gMAIYACQADbAwAhgQJAANsDACGOAgEA2gMAIY8CAQDaAwAhkAIBAOADACGRAgEA4AMAIZICQADhAwAhkwJAAOEDACGUAgEA4AMAIZUCAQDgAwAhlgIBAOADACEM_AEBAAAAAYACQAAAAAGBAkAAAAABjgIBAAAAAY8CAQAAAAGQAgEAAAABkQIBAAAAAZICQAAAAAGTAkAAAAABlAIBAAAAAZUCAQAAAAGWAgEAAAABBB0AAIsEADDUAgAAjAQAMNYCAACOBAAg2gIAAI8EADAEHQAA_wMAMNQCAACABAAw1gIAAIIEACDaAgAAgwQAMAQdAADwAwAw1AIAAPEDADDWAgAA8wMAINoCAAD0AwAwAAAAAAAAAAAF1wICAAAAAd0CAgAAAAHeAgIAAAAB3wICAAAAAeACAgAAAAEAAAAAAAAAAAHXAgAAALMCAgUdAADjBQAgHgAA5gUAINQCAADkBQAg1QIAAOUFACDaAgAAGQAgAx0AAOMFACDUAgAA5AUAINoCAAAZACAAAAAAAAHXAgAAALUCAwXXAhAAAAAB3QIQAAAAAd4CEAAAAAHfAhAAAAAB4AIQAAAAAQUdAADeBQAgHgAA4QUAINQCAADfBQAg1QIAAOAFACDaAgAAGQAgAx0AAN4FACDUAgAA3wUAINoCAAAZACAAAAAB1wIAAAC1AgIFHQAA2QUAIB4AANwFACDUAgAA2gUAINUCAADbBQAg2gIAABkAIAMdAADZBQAg1AIAANoFACDaAgAAGQAgAAAAAAAFHQAAzgUAIB4AANcFACDUAgAAzwUAINUCAADWBQAg2gIAAAUAIAUdAADMBQAgHgAA1AUAINQCAADNBQAg1QIAANMFACDaAgAAcgAgCx0AAN8EADAeAADkBAAw1AIAAOAEADDVAgAA4QQAMNYCAADiBAAg1wIAAOMEADDYAgAA4wQAMNkCAADjBAAw2gIAAOMEADDbAgAA5QQAMNwCAADmBAAwCx0AANMEADAeAADYBAAw1AIAANQEADDVAgAA1QQAMNYCAADWBAAg1wIAANcEADDYAgAA1wQAMNkCAADXBAAw2gIAANcEADDbAgAA2QQAMNwCAADaBAAwCx0AAMcEADAeAADMBAAw1AIAAMgEADDVAgAAyQQAMNYCAADKBAAg1wIAAMsEADDYAgAAywQAMNkCAADLBAAw2gIAAMsEADDbAgAAzQQAMNwCAADOBAAwCvwBAQAAAAGAAkAAAAABgQJAAAAAAasCAQAAAAGtAkAAAAABrgIBAAAAAa8CAQAAAAGwAgEAAAABsQIBAAAAAbMCAAAAswICAgAAACcAIB0AANIEACADAAAAJwAgHQAA0gQAIB4AANEEACABFgAA0gUAMBANAADEAwAg-QEAAMIDADD6AQAAJQAQ-wEAAMIDADD8AQEAAAABgAJAAP0CACGBAkAA_QIAIasCAQAAAAGsAgEAnAMAIa0CQAD9AgAhrgIBAPwCACGvAgEA_AIAIbACAQD8AgAhsQIBAPwCACGzAgAAwwOzAiLQAgAAwQMAIAIAAAAnACAWAADRBAAgAgAAAM8EACAWAADQBAAgDvkBAADOBAAw-gEAAM8EABD7AQAAzgQAMPwBAQCcAwAhgAJAAP0CACGBAkAA_QIAIasCAQD8AgAhrAIBAJwDACGtAkAA_QIAIa4CAQD8AgAhrwIBAPwCACGwAgEA_AIAIbECAQD8AgAhswIAAMMDswIiDvkBAADOBAAw-gEAAM8EABD7AQAAzgQAMPwBAQCcAwAhgAJAAP0CACGBAkAA_QIAIasCAQD8AgAhrAIBAJwDACGtAkAA_QIAIa4CAQD8AgAhrwIBAPwCACGwAgEA_AIAIbECAQD8AgAhswIAAMMDswIiCvwBAQDaAwAhgAJAANsDACGBAkAA2wMAIasCAQDaAwAhrQJAANsDACGuAgEA2gMAIa8CAQDaAwAhsAIBANoDACGxAgEA2gMAIbMCAACrBLMCIgr8AQEA2gMAIYACQADbAwAhgQJAANsDACGrAgEA2gMAIa0CQADbAwAhrgIBANoDACGvAgEA2gMAIbACAQDaAwAhsQIBANoDACGzAgAAqwSzAiIK_AEBAAAAAYACQAAAAAGBAkAAAAABqwIBAAAAAa0CQAAAAAGuAgEAAAABrwIBAAAAAbACAQAAAAGxAgEAAAABswIAAACzAgII_AEBAAAAAYACQAAAAAGBAkAAAAABrgIBAAAAAa8CAQAAAAG1AgAAALUCA7YCEAAAAAG3AiAAAAABAgAAACMAIB0AAN4EACADAAAAIwAgHQAA3gQAIB4AAN0EACABFgAA0QUAMA0NAADEAwAg-QEAAMUDADD6AQAAIQAQ-wEAAMUDADD8AQEAAAABgAJAAP0CACGBAkAA_QIAIawCAQCcAwAhrgIBAI8DACGvAgEAjwMAIbUCAADGA7UCI7YCEAC-AwAhtwIgAJADACECAAAAIwAgFgAA3QQAIAIAAADbBAAgFgAA3AQAIAz5AQAA2gQAMPoBAADbBAAQ-wEAANoEADD8AQEAnAMAIYACQAD9AgAhgQJAAP0CACGsAgEAnAMAIa4CAQCPAwAhrwIBAI8DACG1AgAAxgO1AiO2AhAAvgMAIbcCIACQAwAhDPkBAADaBAAw-gEAANsEABD7AQAA2gQAMPwBAQCcAwAhgAJAAP0CACGBAkAA_QIAIawCAQCcAwAhrgIBAI8DACGvAgEAjwMAIbUCAADGA7UCI7YCEAC-AwAhtwIgAJADACEI_AEBANoDACGAAkAA2wMAIYECQADbAwAhrgIBAOADACGvAgEA4AMAIbUCAACzBLUCI7YCEAC0BAAhtwIgAOwDACEI_AEBANoDACGAAkAA2wMAIYECQADbAwAhrgIBAOADACGvAgEA4AMAIbUCAACzBLUCI7YCEAC0BAAhtwIgAOwDACEI_AEBAAAAAYACQAAAAAGBAkAAAAABrgIBAAAAAa8CAQAAAAG1AgAAALUCA7YCEAAAAAG3AiAAAAABBfwBAQAAAAGAAkAAAAABrgIBAAAAAa8CAQAAAAG1AgAAALUCAgIAAAAfACAdAADqBAAgAwAAAB8AIB0AAOoEACAeAADpBAAgARYAANAFADAKDQAAxAMAIPkBAADHAwAw-gEAAB0AEPsBAADHAwAw_AEBAAAAAYACQAD9AgAhrAIBAJwDACGuAgEA_AIAIa8CAQD8AgAhtQIAAMgDtQIiAgAAAB8AIBYAAOkEACACAAAA5wQAIBYAAOgEACAJ-QEAAOYEADD6AQAA5wQAEPsBAADmBAAw_AEBAJwDACGAAkAA_QIAIawCAQCcAwAhrgIBAPwCACGvAgEA_AIAIbUCAADIA7UCIgn5AQAA5gQAMPoBAADnBAAQ-wEAAOYEADD8AQEAnAMAIYACQAD9AgAhrAIBAJwDACGuAgEA_AIAIa8CAQD8AgAhtQIAAMgDtQIiBfwBAQDaAwAhgAJAANsDACGuAgEA2gMAIa8CAQDaAwAhtQIAALoEtQIiBfwBAQDaAwAhgAJAANsDACGuAgEA2gMAIa8CAQDaAwAhtQIAALoEtQIiBfwBAQAAAAGAAkAAAAABrgIBAAAAAa8CAQAAAAG1AgAAALUCAgMdAADOBQAg1AIAAM8FACDaAgAABQAgAx0AAMwFACDUAgAAzQUAINoCAAByACAEHQAA3wQAMNQCAADgBAAw1gIAAOIEACDaAgAA4wQAMAQdAADTBAAw1AIAANQEADDWAgAA1gQAINoCAADXBAAwBB0AAMcEADDUAgAAyAQAMNYCAADKBAAg2gIAAMsEADAAAAALHQAA9AQAMB4AAPkEADDUAgAA9QQAMNUCAAD2BAAw1gIAAPcEACDXAgAA-AQAMNgCAAD4BAAw2QIAAPgEADDaAgAA-AQAMNsCAAD6BAAw3AIAAPsEADALBAAA6wQAIA4AAO0EACAPAADuBAAgEAAA7wQAIPwBAQAAAAGAAkAAAAABgQJAAAAAAZsCAQAAAAG4AgEAAAABugICAAAAAbsCEAAAAAECAAAAGQAgHQAA_wQAIAMAAAAZACAdAAD_BAAgHgAA_gQAIAEWAADLBQAwEAQAAMoDACAMAADLAwAgDgAAzAMAIA8AAM0DACAQAADOAwAg-QEAAMkDADD6AQAAFwAQ-wEAAMkDADD8AQEAAAABgAJAAP0CACGBAkAA_QIAIZsCAQD8AgAhuAIBAJwDACG5AgEAnAMAIboCAgCdAwAhuwIQAL4DACECAAAAGQAgFgAA_gQAIAIAAAD8BAAgFgAA_QQAIAv5AQAA-wQAMPoBAAD8BAAQ-wEAAPsEADD8AQEAnAMAIYACQAD9AgAhgQJAAP0CACGbAgEA_AIAIbgCAQCcAwAhuQIBAJwDACG6AgIAnQMAIbsCEAC-AwAhC_kBAAD7BAAw-gEAAPwEABD7AQAA-wQAMPwBAQCcAwAhgAJAAP0CACGBAkAA_QIAIZsCAQD8AgAhuAIBAJwDACG5AgEAnAMAIboCAgCdAwAhuwIQAL4DACEH_AEBANoDACGAAkAA2wMAIYECQADbAwAhmwIBANoDACG4AgEA2gMAIboCAgCiBAAhuwIQALQEACELBAAAwgQAIA4AAMQEACAPAADFBAAgEAAAxgQAIPwBAQDaAwAhgAJAANsDACGBAkAA2wMAIZsCAQDaAwAhuAIBANoDACG6AgIAogQAIbsCEAC0BAAhCwQAAOsEACAOAADtBAAgDwAA7gQAIBAAAO8EACD8AQEAAAABgAJAAAAAAYECQAAAAAGbAgEAAAABuAIBAAAAAboCAgAAAAG7AhAAAAABBB0AAPQEADDUAgAA9QQAMNYCAAD3BAAg2gIAAPgEADAAAAAABR0AAMYFACAeAADJBQAg1AIAAMcFACDVAgAAyAUAINoCAACVAgAgAx0AAMYFACDUAgAAxwUAINoCAACVAgAgAAAABR0AAL8FACAeAADEBQAg1AIAAMAFACDVAgAAwwUAINoCAAABACALHQAAlgUAMB4AAJoFADDUAgAAlwUAMNUCAACYBQAw1gIAAJkFACDXAgAA9AMAMNgCAAD0AwAw2QIAAPQDADDaAgAA9AMAMNsCAACbBQAw3AIAAPcDADALHQAAjQUAMB4AAJEFADDUAgAAjgUAMNUCAACPBQAw1gIAAJAFACDXAgAA-AQAMNgCAAD4BAAw2QIAAPgEADDaAgAA-AQAMNsCAACSBQAw3AIAAPsEADALDAAA7AQAIA4AAO0EACAPAADuBAAgEAAA7wQAIPwBAQAAAAGAAkAAAAABgQJAAAAAAZsCAQAAAAG5AgEAAAABugICAAAAAbsCEAAAAAECAAAAGQAgHQAAlQUAIAMAAAAZACAdAACVBQAgHgAAlAUAIAEWAADCBQAwAgAAABkAIBYAAJQFACACAAAA_AQAIBYAAJMFACAH_AEBANoDACGAAkAA2wMAIYECQADbAwAhmwIBANoDACG5AgEA2gMAIboCAgCiBAAhuwIQALQEACELDAAAwwQAIA4AAMQEACAPAADFBAAgEAAAxgQAIPwBAQDaAwAhgAJAANsDACGBAkAA2wMAIZsCAQDaAwAhuQIBANoDACG6AgIAogQAIbsCEAC0BAAhCwwAAOwEACAOAADtBAAgDwAA7gQAIBAAAO8EACD8AQEAAAABgAJAAAAAAYECQAAAAAGbAgEAAAABuQIBAAAAAboCAgAAAAG7AhAAAAABBgUAAIYFACD8AQEAAAABgAJAAAAAAYECQAAAAAGNAgEAAAABvgIAAAC-AgICAAAACQAgHQAAngUAIAMAAAAJACAdAACeBQAgHgAAnQUAIAEWAADBBQAwAgAAAAkAIBYAAJ0FACACAAAA-AMAIBYAAJwFACAF_AEBANoDACGAAkAA2wMAIYECQADbAwAhjQIBANoDACG-AgAA-gO-AiIGBQAAhQUAIPwBAQDaAwAhgAJAANsDACGBAkAA2wMAIY0CAQDaAwAhvgIAAPoDvgIiBgUAAIYFACD8AQEAAAABgAJAAAAAAYECQAAAAAGNAgEAAAABvgIAAAC-AgIDHQAAvwUAINQCAADABQAg2gIAAAEAIAQdAACWBQAw1AIAAJcFADDWAgAAmQUAINoCAAD0AwAwBB0AAI0FADDUAgAAjgUAMNYCAACQBQAg2gIAAPgEADAAAAAAAAsdAACoBQAwHgAArQUAMNQCAACpBQAw1QIAAKoFADDWAgAAqwUAINcCAACsBQAw2AIAAKwFADDZAgAArAUAMNoCAACsBQAw2wIAAK4FADDcAgAArwUAMA0KAACgBQAgCwAAoQUAIPwBAQAAAAGAAkAAAAABgQJAAAAAAbcCIAAAAAG_AgEAAAABwAIBAAAAAcECAQAAAAHCAgEAAAABwwIBAAAAAcQCAQAAAAHFAgEAAAABAgAAAAUAIB0AALMFACADAAAABQAgHQAAswUAIB4AALIFACABFgAAvgUAMBIDAADWAwAgCgAAkwMAIAsAALQDACD5AQAA1QMAMPoBAAADABD7AQAA1QMAMPwBAQAAAAGAAkAA_QIAIYECQAD9AgAhtwIgAJADACG_AgEAAAABwAIBAPwCACHBAgEA_AIAIcICAQCPAwAhwwIBAI8DACHEAgEAjwMAIcUCAQD8AgAhxgIBAPwCACECAAAABQAgFgAAsgUAIAIAAACwBQAgFgAAsQUAIA_5AQAArwUAMPoBAACwBQAQ-wEAAK8FADD8AQEAnAMAIYACQAD9AgAhgQJAAP0CACG3AiAAkAMAIb8CAQD8AgAhwAIBAPwCACHBAgEA_AIAIcICAQCPAwAhwwIBAI8DACHEAgEAjwMAIcUCAQD8AgAhxgIBAPwCACEP-QEAAK8FADD6AQAAsAUAEPsBAACvBQAw_AEBAJwDACGAAkAA_QIAIYECQAD9AgAhtwIgAJADACG_AgEA_AIAIcACAQD8AgAhwQIBAPwCACHCAgEAjwMAIcMCAQCPAwAhxAIBAI8DACHFAgEA_AIAIcYCAQD8AgAhC_wBAQDaAwAhgAJAANsDACGBAkAA2wMAIbcCIADsAwAhvwIBANoDACHAAgEA2gMAIcECAQDaAwAhwgIBAOADACHDAgEA4AMAIcQCAQDgAwAhxQIBANoDACENCgAAiwUAIAsAAIwFACD8AQEA2gMAIYACQADbAwAhgQJAANsDACG3AiAA7AMAIb8CAQDaAwAhwAIBANoDACHBAgEA2gMAIcICAQDgAwAhwwIBAOADACHEAgEA4AMAIcUCAQDaAwAhDQoAAKAFACALAAChBQAg_AEBAAAAAYACQAAAAAGBAkAAAAABtwIgAAAAAb8CAQAAAAHAAgEAAAABwQIBAAAAAcICAQAAAAHDAgEAAAABxAIBAAAAAcUCAQAAAAEEHQAAqAUAMNQCAACpBQAw1gIAAKsFACDaAgAArAUAMAAFBAAAtwUAIAwAALgFACAOAAC5BQAgDwAAugUAIBAAALsFACAGAwAAvQUAIAoAAJwEACALAACBBQAgwgIAANwDACDDAgAA3AMAIMQCAADcAwAgAQsAAIEFACAAAAAHBgAAmgQAIAcAAJsEACAIAACcBAAgmgIAANwDACCbAgAA3AMAIJ4CAADcAwAgnwIAANwDACABCAAAtQUAIAv8AQEAAAABgAJAAAAAAYECQAAAAAG3AiAAAAABvwIBAAAAAcACAQAAAAHBAgEAAAABwgIBAAAAAcMCAQAAAAHEAgEAAAABxQIBAAAAAQWbAgEAAAABtgIQAAAAAccCAQAAAAHIAoAAAAAByQJAAAAAAQIAAAABACAdAAC_BQAgBfwBAQAAAAGAAkAAAAABgQJAAAAAAY0CAQAAAAG-AgAAAL4CAgf8AQEAAAABgAJAAAAAAYECQAAAAAGbAgEAAAABuQIBAAAAAboCAgAAAAG7AhAAAAABAwAAADAAIB0AAL8FACAeAADFBQAgBwAAADAAIBYAAMUFACCbAgEA2gMAIbYCEAC0BAAhxwIBANoDACHIAoAAAAAByQJAANsDACEFmwIBANoDACG2AhAAtAQAIccCAQDaAwAhyAKAAAAAAckCQADbAwAhCwYAAJcEACAHAACYBAAg_AEBAAAAAYACQAAAAAGBAkAAAAABmgIBAAAAAZsCAQAAAAGcAgEAAAABnQIgAAAAAZ4CAQAAAAGfAgEAAAABAgAAAJUCACAdAADGBQAgAwAAAJgCACAdAADGBQAgHgAAygUAIA0AAACYAgAgBgAA7QMAIAcAAO4DACAWAADKBQAg_AEBANoDACGAAkAA2wMAIYECQADbAwAhmgIBAOADACGbAgEA4AMAIZwCAQDaAwAhnQIgAOwDACGeAgEA4AMAIZ8CAQDgAwAhCwYAAO0DACAHAADuAwAg_AEBANoDACGAAkAA2wMAIYECQADbAwAhmgIBAOADACGbAgEA4AMAIZwCAQDaAwAhnQIgAOwDACGeAgEA4AMAIZ8CAQDgAwAhB_wBAQAAAAGAAkAAAAABgQJAAAAAAZsCAQAAAAG4AgEAAAABugICAAAAAbsCEAAAAAEG_AEBAAAAAYACQAAAAAGBAkAAAAABmwIBAAAAAbcCIAAAAAG8AgEAAAABAgAAAHIAIB0AAMwFACAOAwAAnwUAIAoAAKAFACD8AQEAAAABgAJAAAAAAYECQAAAAAG3AiAAAAABvwIBAAAAAcACAQAAAAHBAgEAAAABwgIBAAAAAcMCAQAAAAHEAgEAAAABxQIBAAAAAcYCAQAAAAECAAAABQAgHQAAzgUAIAX8AQEAAAABgAJAAAAAAa4CAQAAAAGvAgEAAAABtQIAAAC1AgII_AEBAAAAAYACQAAAAAGBAkAAAAABrgIBAAAAAa8CAQAAAAG1AgAAALUCA7YCEAAAAAG3AiAAAAABCvwBAQAAAAGAAkAAAAABgQJAAAAAAasCAQAAAAGtAkAAAAABrgIBAAAAAa8CAQAAAAGwAgEAAAABsQIBAAAAAbMCAAAAswICAwAAAHUAIB0AAMwFACAeAADVBQAgCAAAAHUAIBYAANUFACD8AQEA2gMAIYACQADbAwAhgQJAANsDACGbAgEA2gMAIbcCIADsAwAhvAIBANoDACEG_AEBANoDACGAAkAA2wMAIYECQADbAwAhmwIBANoDACG3AiAA7AMAIbwCAQDaAwAhAwAAAAMAIB0AAM4FACAeAADYBQAgEAAAAAMAIAMAAIoFACAKAACLBQAgFgAA2AUAIPwBAQDaAwAhgAJAANsDACGBAkAA2wMAIbcCIADsAwAhvwIBANoDACHAAgEA2gMAIcECAQDaAwAhwgIBAOADACHDAgEA4AMAIcQCAQDgAwAhxQIBANoDACHGAgEA2gMAIQ4DAACKBQAgCgAAiwUAIPwBAQDaAwAhgAJAANsDACGBAkAA2wMAIbcCIADsAwAhvwIBANoDACHAAgEA2gMAIcECAQDaAwAhwgIBAOADACHDAgEA4AMAIcQCAQDgAwAhxQIBANoDACHGAgEA2gMAIQwEAADrBAAgDAAA7AQAIA8AAO4EACAQAADvBAAg_AEBAAAAAYACQAAAAAGBAkAAAAABmwIBAAAAAbgCAQAAAAG5AgEAAAABugICAAAAAbsCEAAAAAECAAAAGQAgHQAA2QUAIAMAAAAXACAdAADZBQAgHgAA3QUAIA4AAAAXACAEAADCBAAgDAAAwwQAIA8AAMUEACAQAADGBAAgFgAA3QUAIPwBAQDaAwAhgAJAANsDACGBAkAA2wMAIZsCAQDaAwAhuAIBANoDACG5AgEA2gMAIboCAgCiBAAhuwIQALQEACEMBAAAwgQAIAwAAMMEACAPAADFBAAgEAAAxgQAIPwBAQDaAwAhgAJAANsDACGBAkAA2wMAIZsCAQDaAwAhuAIBANoDACG5AgEA2gMAIboCAgCiBAAhuwIQALQEACEMBAAA6wQAIAwAAOwEACAOAADtBAAgEAAA7wQAIPwBAQAAAAGAAkAAAAABgQJAAAAAAZsCAQAAAAG4AgEAAAABuQIBAAAAAboCAgAAAAG7AhAAAAABAgAAABkAIB0AAN4FACADAAAAFwAgHQAA3gUAIB4AAOIFACAOAAAAFwAgBAAAwgQAIAwAAMMEACAOAADEBAAgEAAAxgQAIBYAAOIFACD8AQEA2gMAIYACQADbAwAhgQJAANsDACGbAgEA2gMAIbgCAQDaAwAhuQIBANoDACG6AgIAogQAIbsCEAC0BAAhDAQAAMIEACAMAADDBAAgDgAAxAQAIBAAAMYEACD8AQEA2gMAIYACQADbAwAhgQJAANsDACGbAgEA2gMAIbgCAQDaAwAhuQIBANoDACG6AgIAogQAIbsCEAC0BAAhDAQAAOsEACAMAADsBAAgDgAA7QQAIA8AAO4EACD8AQEAAAABgAJAAAAAAYECQAAAAAGbAgEAAAABuAIBAAAAAbkCAQAAAAG6AgIAAAABuwIQAAAAAQIAAAAZACAdAADjBQAgAwAAABcAIB0AAOMFACAeAADnBQAgDgAAABcAIAQAAMIEACAMAADDBAAgDgAAxAQAIA8AAMUEACAWAADnBQAg_AEBANoDACGAAkAA2wMAIYECQADbAwAhmwIBANoDACG4AgEA2gMAIbkCAQDaAwAhugICAKIEACG7AhAAtAQAIQwEAADCBAAgDAAAwwQAIA4AAMQEACAPAADFBAAg_AEBANoDACGAAkAA2wMAIYECQADbAwAhmwIBANoDACG4AgEA2gMAIbkCAQDaAwAhugICAKIEACG7AhAAtAQAIQz8AQEAAAABgAJAAAAAAYECQAAAAAGOAgEAAAABjwIBAAAAAZACAQAAAAGRAgEAAAABkgJAAAAAAZMCQAAAAAGUAgEAAAABlQIBAAAAAZYCAQAAAAEH_AEBAAAAAf8BQAAAAAGAAkAAAAABgQJAAAAAAZcCAQAAAAGYAgEAAAABmQIBAAAAAQ4DAACfBQAgCwAAoQUAIPwBAQAAAAGAAkAAAAABgQJAAAAAAbcCIAAAAAG_AgEAAAABwAIBAAAAAcECAQAAAAHCAgEAAAABwwIBAAAAAcQCAQAAAAHFAgEAAAABxgIBAAAAAQIAAAAFACAdAADqBQAgAwAAAAMAIB0AAOoFACAeAADuBQAgEAAAAAMAIAMAAIoFACALAACMBQAgFgAA7gUAIPwBAQDaAwAhgAJAANsDACGBAkAA2wMAIbcCIADsAwAhvwIBANoDACHAAgEA2gMAIcECAQDaAwAhwgIBAOADACHDAgEA4AMAIcQCAQDgAwAhxQIBANoDACHGAgEA2gMAIQ4DAACKBQAgCwAAjAUAIPwBAQDaAwAhgAJAANsDACGBAkAA2wMAIbcCIADsAwAhvwIBANoDACHAAgEA2gMAIcECAQDaAwAhwgIBAOADACHDAgEA4AMAIcQCAQDgAwAhxQIBANoDACHGAgEA2gMAIQX8AQEAAAABgAJAAAAAAYECQAAAAAG4AgEAAAABvgIAAAC-AgILBgAAlwQAIAgAAJkEACD8AQEAAAABgAJAAAAAAYECQAAAAAGaAgEAAAABmwIBAAAAAZwCAQAAAAGdAiAAAAABngIBAAAAAZ8CAQAAAAECAAAAlQIAIB0AAPAFACADAAAAmAIAIB0AAPAFACAeAAD0BQAgDQAAAJgCACAGAADtAwAgCAAA7wMAIBYAAPQFACD8AQEA2gMAIYACQADbAwAhgQJAANsDACGaAgEA4AMAIZsCAQDgAwAhnAIBANoDACGdAiAA7AMAIZ4CAQDgAwAhnwIBAOADACELBgAA7QMAIAgAAO8DACD8AQEA2gMAIYACQADbAwAhgQJAANsDACGaAgEA4AMAIZsCAQDgAwAhnAIBANoDACGdAiAA7AMAIZ4CAQDgAwAhnwIBAOADACELBwAAmAQAIAgAAJkEACD8AQEAAAABgAJAAAAAAYECQAAAAAGaAgEAAAABmwIBAAAAAZwCAQAAAAGdAiAAAAABngIBAAAAAZ8CAQAAAAECAAAAlQIAIB0AAPUFACADAAAAmAIAIB0AAPUFACAeAAD5BQAgDQAAAJgCACAHAADuAwAgCAAA7wMAIBYAAPkFACD8AQEA2gMAIYACQADbAwAhgQJAANsDACGaAgEA4AMAIZsCAQDgAwAhnAIBANoDACGdAiAA7AMAIZ4CAQDgAwAhnwIBAOADACELBwAA7gMAIAgAAO8DACD8AQEA2gMAIYACQADbAwAhgQJAANsDACGaAgEA4AMAIZsCAQDgAwAhnAIBANoDACGdAiAA7AMAIZ4CAQDgAwAhnwIBAOADACECCAYCCQAQBAMAAQkADwoKAwsaCAIEAAIFAAQEBg4FBxIGCBMDCQAHAQUABAEFAAQDBhQABxUACBYABgQAAgkADgwACQ4gCw8kDBAoDQIJAAoLGwgBCxwAAQ0ACAENAAgBDQAIAw4pAA8qABArAAIKLAALLQABCC4AAAAABQkAFSMAFiQAFyUAGCYAGQAAAAAABQkAFSMAFiQAFyUAGCYAGQEDAAEBAwABAwkAHiUAHyYAIAAAAAMJAB4lAB8mACACBAACBQAEAgQAAgUABAMJACUlACYmACcAAAADCQAlJQAmJgAnAAADCQAsJQAtJgAuAAAAAwkALCUALSYALgIEAAIMAAkCBAACDAAJBQkAMyMANCQANSUANiYANwAAAAAABQkAMyMANCQANSUANiYANwENAAgBDQAIAwkAPCUAPSYAPgAAAAMJADwlAD0mAD4BDQAIAQ0ACAUJAEMjAEQkAEUlAEYmAEcAAAAAAAUJAEMjAEQkAEUlAEYmAEcBDQAIAQ0ACAMJAEwlAE0mAE4AAAADCQBMJQBNJgBOAAAABQkAVCMAVSQAViUAVyYAWAAAAAAABQkAVCMAVSQAViUAVyYAWAAAAAUJAF4jAF8kAGAlAGEmAGIAAAAAAAUJAF4jAF8kAGAlAGEmAGIAAAMJAGclAGgmAGkAAAADCQBnJQBoJgBpAQUABAEFAAQDCQBuJQBvJgBwAAAAAwkAbiUAbyYAcAEFAAQBBQAEAwkAdSUAdiYAdwAAAAMJAHUlAHYmAHcAAAADCQB9JQB-JgB_AAAAAwkAfSUAfiYAfxECARIvARMyARQzARU0ARc2ARg4ERk5Eho7ARs9ERw-Ex8_ASBAASFBESdEFChFGilGAipHAitIAixJAi1KAi5MAi9OETBPGzFRAjJTETNUHDRVAjVWAjZXETdaHThbITlcAzpdAzteAzxfAz1gAz5iAz9kEUBlIkFnA0JpEUNqI0RrA0VsA0ZtEUdwJEhxKElzCUp0CUt3CUx4CU15CU57CU99EVB-KVGAAQlSggERU4MBKlSEAQlVhQEJVoYBEVeJAStYigEvWYsBCFqMAQhbjQEIXI4BCF2PAQhekQEIX5MBEWCUATBhlgEIYpgBEWOZATFkmgEIZZsBCGacARFnnwEyaKABOGmhAQtqogELa6MBC2ykAQttpQELbqcBC2-pARFwqgE5cawBC3KuARFzrwE6dLABC3WxAQt2sgERd7UBO3i2AT95twEMergBDHu5AQx8ugEMfbsBDH69AQx_vwERgAHAAUCBAcIBDIIBxAERgwHFAUGEAcYBDIUBxwEMhgHIARGHAcsBQogBzAFIiQHNAQ2KAc4BDYsBzwENjAHQAQ2NAdEBDY4B0wENjwHVARGQAdYBSZEB2AENkgHaARGTAdsBSpQB3AENlQHdAQ2WAd4BEZcB4QFLmAHiAU-ZAeQBUJoB5QFQmwHoAVCcAekBUJ0B6gFQngHsAVCfAe4BEaAB7wFRoQHxAVCiAfMBEaMB9AFSpAH1AVClAfYBUKYB9wERpwH6AVOoAfsBWakB_QFaqgH-AVqrAYECWqwBggJarQGDAlquAYUCWq8BhwIRsAGIAluxAYoCWrIBjAIRswGNAly0AY4CWrUBjwJatgGQAhG3AZMCXbgBlAJjuQGWAgS6AZcCBLsBmgIEvAGbAgS9AZwCBL4BngIEvwGgAhHAAaECZMEBowIEwgGlAhHDAaYCZcQBpwIExQGoAgTGAakCEccBrAJmyAGtAmrJAa4CBsoBrwIGywGwAgbMAbECBs0BsgIGzgG0AgbPAbYCEdABtwJr0QG5AgbSAbsCEdMBvAJs1AG9AgbVAb4CBtYBvwIR1wHCAm3YAcMCcdkBxAIF2gHFAgXbAcYCBdwBxwIF3QHIAgXeAcoCBd8BzAIR4AHNAnLhAc8CBeIB0QIR4wHSAnPkAdMCBeUB1AIF5gHVAhHnAdgCdOgB2QJ46QHbAnnqAdwCeesB3wJ57AHgAnntAeECee4B4wJ57wHlAhHwAeYCevEB6AJ58gHqAhHzAesCe_QB7AJ59QHtAnn2Ae4CEfcB8QJ8-AHyAoAB" } async function decodeBase64AsWasm(wasmBase64: string): Promise { @@ -70,8 +70,8 @@ export interface PrismaClientConstructor { * const prisma = new PrismaClient({ * adapter: new PrismaPg({ connectionString: process.env.DATABASE_URL }) * }) - * // Fetch zero or more Complexes - * const complexes = await prisma.complex.findMany() + * // Fetch zero or more Plans + * const plans = await prisma.plan.findMany() * ``` * * Read more in our [docs](https://pris.ly/d/client). @@ -94,8 +94,8 @@ export interface PrismaClientConstructor { * const prisma = new PrismaClient({ * adapter: new PrismaPg({ connectionString: process.env.DATABASE_URL }) * }) - * // Fetch zero or more Complexes - * const complexes = await prisma.complex.findMany() + * // Fetch zero or more Plans + * const plans = await prisma.plan.findMany() * ``` * * Read more in our [docs](https://pris.ly/d/client). @@ -189,6 +189,16 @@ export interface PrismaClient< }>> /** + * `prisma.plan`: Exposes CRUD operations for the **Plan** model. + * Example usage: + * ```ts + * // Fetch zero or more Plans + * const plans = await prisma.plan.findMany() + * ``` + */ + get plan(): Prisma.PlanDelegate; + + /** * `prisma.complex`: Exposes CRUD operations for the **Complex** model. * Example usage: * ```ts @@ -278,16 +288,6 @@ export interface PrismaClient< */ get passwordResetRequest(): Prisma.PasswordResetRequestDelegate; - /** - * `prisma.plan`: Exposes CRUD operations for the **Plan** model. - * Example usage: - * ```ts - * // Fetch zero or more Plans - * const plans = await prisma.plan.findMany() - * ``` - */ - get plan(): Prisma.PlanDelegate; - /** * `prisma.user`: Exposes CRUD operations for the **User** model. * Example usage: @@ -297,6 +297,36 @@ export interface PrismaClient< * ``` */ get user(): Prisma.UserDelegate; + + /** + * `prisma.session`: Exposes CRUD operations for the **Session** model. + * Example usage: + * ```ts + * // Fetch zero or more Sessions + * const sessions = await prisma.session.findMany() + * ``` + */ + get session(): Prisma.SessionDelegate; + + /** + * `prisma.account`: Exposes CRUD operations for the **Account** model. + * Example usage: + * ```ts + * // Fetch zero or more Accounts + * const accounts = await prisma.account.findMany() + * ``` + */ + get account(): Prisma.AccountDelegate; + + /** + * `prisma.verification`: Exposes CRUD operations for the **Verification** model. + * Example usage: + * ```ts + * // Fetch zero or more Verifications + * const verifications = await prisma.verification.findMany() + * ``` + */ + get verification(): Prisma.VerificationDelegate; } export function getPrismaClientClass(): PrismaClientConstructor { diff --git a/apps/backend/src/generated/prisma/internal/prismaNamespace.ts b/apps/backend/src/generated/prisma/internal/prismaNamespace.ts index fe08cb5..b7aea95 100644 --- a/apps/backend/src/generated/prisma/internal/prismaNamespace.ts +++ b/apps/backend/src/generated/prisma/internal/prismaNamespace.ts @@ -384,6 +384,7 @@ type FieldRefInputType = Model extends never ? never : FieldRe export const ModelName = { + Plan: 'Plan', Complex: 'Complex', ComplexUser: 'ComplexUser', Sport: 'Sport', @@ -393,8 +394,10 @@ export const ModelName = { CourtBooking: 'CourtBooking', OnboardingRequest: 'OnboardingRequest', PasswordResetRequest: 'PasswordResetRequest', - Plan: 'Plan', - User: 'User' + User: 'User', + Session: 'Session', + Account: 'Account', + Verification: 'Verification' } as const export type ModelName = (typeof ModelName)[keyof typeof ModelName] @@ -410,10 +413,84 @@ export type TypeMap + fields: Prisma.PlanFieldRefs + operations: { + findUnique: { + args: Prisma.PlanFindUniqueArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.PlanFindUniqueOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findFirst: { + args: Prisma.PlanFindFirstArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.PlanFindFirstOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findMany: { + args: Prisma.PlanFindManyArgs + result: runtime.Types.Utils.PayloadToResult[] + } + create: { + args: Prisma.PlanCreateArgs + result: runtime.Types.Utils.PayloadToResult + } + createMany: { + args: Prisma.PlanCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.PlanCreateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + delete: { + args: Prisma.PlanDeleteArgs + result: runtime.Types.Utils.PayloadToResult + } + update: { + args: Prisma.PlanUpdateArgs + result: runtime.Types.Utils.PayloadToResult + } + deleteMany: { + args: Prisma.PlanDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.PlanUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.PlanUpdateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + upsert: { + args: Prisma.PlanUpsertArgs + result: runtime.Types.Utils.PayloadToResult + } + aggregate: { + args: Prisma.PlanAggregateArgs + result: runtime.Types.Utils.Optional + } + groupBy: { + args: Prisma.PlanGroupByArgs + result: runtime.Types.Utils.Optional[] + } + count: { + args: Prisma.PlanCountArgs + result: runtime.Types.Utils.Optional | number + } + } + } Complex: { payload: Prisma.$ComplexPayload fields: Prisma.ComplexFieldRefs @@ -1080,80 +1157,6 @@ export type TypeMap - fields: Prisma.PlanFieldRefs - operations: { - findUnique: { - args: Prisma.PlanFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.PlanFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.PlanFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.PlanFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.PlanFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.PlanCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.PlanCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.PlanCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.PlanDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.PlanUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.PlanDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.PlanUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.PlanUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.PlanUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.PlanAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.PlanGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.PlanCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } User: { payload: Prisma.$UserPayload fields: Prisma.UserFieldRefs @@ -1228,6 +1231,228 @@ export type TypeMap + fields: Prisma.SessionFieldRefs + operations: { + findUnique: { + args: Prisma.SessionFindUniqueArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.SessionFindUniqueOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findFirst: { + args: Prisma.SessionFindFirstArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.SessionFindFirstOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findMany: { + args: Prisma.SessionFindManyArgs + result: runtime.Types.Utils.PayloadToResult[] + } + create: { + args: Prisma.SessionCreateArgs + result: runtime.Types.Utils.PayloadToResult + } + createMany: { + args: Prisma.SessionCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.SessionCreateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + delete: { + args: Prisma.SessionDeleteArgs + result: runtime.Types.Utils.PayloadToResult + } + update: { + args: Prisma.SessionUpdateArgs + result: runtime.Types.Utils.PayloadToResult + } + deleteMany: { + args: Prisma.SessionDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.SessionUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.SessionUpdateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + upsert: { + args: Prisma.SessionUpsertArgs + result: runtime.Types.Utils.PayloadToResult + } + aggregate: { + args: Prisma.SessionAggregateArgs + result: runtime.Types.Utils.Optional + } + groupBy: { + args: Prisma.SessionGroupByArgs + result: runtime.Types.Utils.Optional[] + } + count: { + args: Prisma.SessionCountArgs + result: runtime.Types.Utils.Optional | number + } + } + } + Account: { + payload: Prisma.$AccountPayload + fields: Prisma.AccountFieldRefs + operations: { + findUnique: { + args: Prisma.AccountFindUniqueArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.AccountFindUniqueOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findFirst: { + args: Prisma.AccountFindFirstArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.AccountFindFirstOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findMany: { + args: Prisma.AccountFindManyArgs + result: runtime.Types.Utils.PayloadToResult[] + } + create: { + args: Prisma.AccountCreateArgs + result: runtime.Types.Utils.PayloadToResult + } + createMany: { + args: Prisma.AccountCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.AccountCreateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + delete: { + args: Prisma.AccountDeleteArgs + result: runtime.Types.Utils.PayloadToResult + } + update: { + args: Prisma.AccountUpdateArgs + result: runtime.Types.Utils.PayloadToResult + } + deleteMany: { + args: Prisma.AccountDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.AccountUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.AccountUpdateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + upsert: { + args: Prisma.AccountUpsertArgs + result: runtime.Types.Utils.PayloadToResult + } + aggregate: { + args: Prisma.AccountAggregateArgs + result: runtime.Types.Utils.Optional + } + groupBy: { + args: Prisma.AccountGroupByArgs + result: runtime.Types.Utils.Optional[] + } + count: { + args: Prisma.AccountCountArgs + result: runtime.Types.Utils.Optional | number + } + } + } + Verification: { + payload: Prisma.$VerificationPayload + fields: Prisma.VerificationFieldRefs + operations: { + findUnique: { + args: Prisma.VerificationFindUniqueArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.VerificationFindUniqueOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findFirst: { + args: Prisma.VerificationFindFirstArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.VerificationFindFirstOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findMany: { + args: Prisma.VerificationFindManyArgs + result: runtime.Types.Utils.PayloadToResult[] + } + create: { + args: Prisma.VerificationCreateArgs + result: runtime.Types.Utils.PayloadToResult + } + createMany: { + args: Prisma.VerificationCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.VerificationCreateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + delete: { + args: Prisma.VerificationDeleteArgs + result: runtime.Types.Utils.PayloadToResult + } + update: { + args: Prisma.VerificationUpdateArgs + result: runtime.Types.Utils.PayloadToResult + } + deleteMany: { + args: Prisma.VerificationDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.VerificationUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.VerificationUpdateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + upsert: { + args: Prisma.VerificationUpsertArgs + result: runtime.Types.Utils.PayloadToResult + } + aggregate: { + args: Prisma.VerificationAggregateArgs + result: runtime.Types.Utils.Optional + } + groupBy: { + args: Prisma.VerificationGroupByArgs + result: runtime.Types.Utils.Optional[] + } + count: { + args: Prisma.VerificationCountArgs + result: runtime.Types.Utils.Optional | number + } + } + } } } & { other: { @@ -1267,16 +1492,28 @@ export const TransactionIsolationLevel = runtime.makeStrictEnum({ export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel] +export const PlanScalarFieldEnum = { + code: 'code', + name: 'name', + price: 'price', + rules: 'rules', + lastUpdatedAt: 'lastUpdatedAt' +} as const + +export type PlanScalarFieldEnum = (typeof PlanScalarFieldEnum)[keyof typeof PlanScalarFieldEnum] + + export const ComplexScalarFieldEnum = { id: 'id', + complexSlug: 'complexSlug', complexName: 'complexName', physicalAddress: 'physicalAddress', city: 'city', state: 'state', country: 'country', - complexSlug: 'complexSlug', adminEmail: 'adminEmail', planCode: 'planCode', + isActive: 'isActive', createdAt: 'createdAt', updatedAt: 'updatedAt' } as const @@ -1285,10 +1522,12 @@ export type ComplexScalarFieldEnum = (typeof ComplexScalarFieldEnum)[keyof typeo export const ComplexUserScalarFieldEnum = { + id: 'id', complexId: 'complexId', userId: 'userId', role: 'role', - createdAt: 'createdAt' + createdAt: 'createdAt', + updatedAt: 'updatedAt' } as const export type ComplexUserScalarFieldEnum = (typeof ComplexUserScalarFieldEnum)[keyof typeof ComplexUserScalarFieldEnum] @@ -1398,21 +1637,13 @@ export const PasswordResetRequestScalarFieldEnum = { export type PasswordResetRequestScalarFieldEnum = (typeof PasswordResetRequestScalarFieldEnum)[keyof typeof PasswordResetRequestScalarFieldEnum] -export const PlanScalarFieldEnum = { - code: 'code', - name: 'name', - price: 'price', - rules: 'rules', - lastUpdatedAt: 'lastUpdatedAt' -} as const - -export type PlanScalarFieldEnum = (typeof PlanScalarFieldEnum)[keyof typeof PlanScalarFieldEnum] - - export const UserScalarFieldEnum = { id: 'id', supabaseUserId: 'supabaseUserId', + name: 'name', email: 'email', + emailVerified: 'emailVerified', + image: 'image', fullName: 'fullName', createdAt: 'createdAt', updatedAt: 'updatedAt' @@ -1421,6 +1652,51 @@ export const UserScalarFieldEnum = { export type UserScalarFieldEnum = (typeof UserScalarFieldEnum)[keyof typeof UserScalarFieldEnum] +export const SessionScalarFieldEnum = { + id: 'id', + userId: 'userId', + token: 'token', + expiresAt: 'expiresAt', + ipAddress: 'ipAddress', + userAgent: 'userAgent', + createdAt: 'createdAt', + updatedAt: 'updatedAt' +} as const + +export type SessionScalarFieldEnum = (typeof SessionScalarFieldEnum)[keyof typeof SessionScalarFieldEnum] + + +export const AccountScalarFieldEnum = { + id: 'id', + userId: 'userId', + accountId: 'accountId', + providerId: 'providerId', + accessToken: 'accessToken', + refreshToken: 'refreshToken', + accessTokenExpiresAt: 'accessTokenExpiresAt', + refreshTokenExpiresAt: 'refreshTokenExpiresAt', + scope: 'scope', + idToken: 'idToken', + password: 'password', + createdAt: 'createdAt', + updatedAt: 'updatedAt' +} as const + +export type AccountScalarFieldEnum = (typeof AccountScalarFieldEnum)[keyof typeof AccountScalarFieldEnum] + + +export const VerificationScalarFieldEnum = { + id: 'id', + identifier: 'identifier', + value: 'value', + expiresAt: 'expiresAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt' +} as const + +export type VerificationScalarFieldEnum = (typeof VerificationScalarFieldEnum)[keyof typeof VerificationScalarFieldEnum] + + export const SortOrder = { asc: 'asc', desc: 'desc' @@ -1444,14 +1720,6 @@ export const QueryMode = { export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode] -export const NullsOrder = { - first: 'first', - last: 'last' -} as const - -export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder] - - export const JsonNullValueFilter = { DbNull: DbNull, JsonNull: JsonNull, @@ -1461,6 +1729,14 @@ export const JsonNullValueFilter = { export type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter] +export const NullsOrder = { + first: 'first', + last: 'last' +} as const + +export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder] + + /** * Field references @@ -1481,6 +1757,34 @@ export type ListStringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaMod +/** + * Reference to a field of type 'Decimal' + */ +export type DecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal'> + + + +/** + * Reference to a field of type 'Decimal[]' + */ +export type ListDecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal[]'> + + + +/** + * Reference to a field of type 'Json' + */ +export type JsonFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Json'> + + + +/** + * Reference to a field of type 'QueryMode' + */ +export type EnumQueryModeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'QueryMode'> + + + /** * Reference to a field of type 'DateTime' */ @@ -1495,6 +1799,13 @@ export type ListDateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaM +/** + * Reference to a field of type 'Boolean' + */ +export type BooleanFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Boolean'> + + + /** * Reference to a field of type 'ComplexUserRole' */ @@ -1509,13 +1820,6 @@ export type ListEnumComplexUserRoleFieldRefInput<$PrismaModel> = FieldRefInputTy -/** - * Reference to a field of type 'Boolean' - */ -export type BooleanFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Boolean'> - - - /** * Reference to a field of type 'Int' */ @@ -1530,20 +1834,6 @@ export type ListIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, -/** - * Reference to a field of type 'Decimal' - */ -export type DecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal'> - - - -/** - * Reference to a field of type 'Decimal[]' - */ -export type ListDecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal[]'> - - - /** * Reference to a field of type 'DayOfWeek' */ @@ -1572,20 +1862,6 @@ export type ListEnumCourtBookingStatusFieldRefInput<$PrismaModel> = FieldRefInpu -/** - * Reference to a field of type 'Json' - */ -export type JsonFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Json'> - - - -/** - * Reference to a field of type 'QueryMode' - */ -export type EnumQueryModeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'QueryMode'> - - - /** * Reference to a field of type 'Float' */ @@ -1694,6 +1970,7 @@ export type PrismaClientOptions = ({ comments?: runtime.SqlCommenterPlugin[] } export type GlobalOmitConfig = { + plan?: Prisma.PlanOmit complex?: Prisma.ComplexOmit complexUser?: Prisma.ComplexUserOmit sport?: Prisma.SportOmit @@ -1703,8 +1980,10 @@ export type GlobalOmitConfig = { courtBooking?: Prisma.CourtBookingOmit onboardingRequest?: Prisma.OnboardingRequestOmit passwordResetRequest?: Prisma.PasswordResetRequestOmit - plan?: Prisma.PlanOmit user?: Prisma.UserOmit + session?: Prisma.SessionOmit + account?: Prisma.AccountOmit + verification?: Prisma.VerificationOmit } /* Types for Logging */ diff --git a/apps/backend/src/generated/prisma/internal/prismaNamespaceBrowser.ts b/apps/backend/src/generated/prisma/internal/prismaNamespaceBrowser.ts index 8e49200..b4c0f6d 100644 --- a/apps/backend/src/generated/prisma/internal/prismaNamespaceBrowser.ts +++ b/apps/backend/src/generated/prisma/internal/prismaNamespaceBrowser.ts @@ -51,6 +51,7 @@ export const AnyNull = runtime.AnyNull export const ModelName = { + Plan: 'Plan', Complex: 'Complex', ComplexUser: 'ComplexUser', Sport: 'Sport', @@ -60,8 +61,10 @@ export const ModelName = { CourtBooking: 'CourtBooking', OnboardingRequest: 'OnboardingRequest', PasswordResetRequest: 'PasswordResetRequest', - Plan: 'Plan', - User: 'User' + User: 'User', + Session: 'Session', + Account: 'Account', + Verification: 'Verification' } as const export type ModelName = (typeof ModelName)[keyof typeof ModelName] @@ -80,16 +83,28 @@ export const TransactionIsolationLevel = runtime.makeStrictEnum({ export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel] +export const PlanScalarFieldEnum = { + code: 'code', + name: 'name', + price: 'price', + rules: 'rules', + lastUpdatedAt: 'lastUpdatedAt' +} as const + +export type PlanScalarFieldEnum = (typeof PlanScalarFieldEnum)[keyof typeof PlanScalarFieldEnum] + + export const ComplexScalarFieldEnum = { id: 'id', + complexSlug: 'complexSlug', complexName: 'complexName', physicalAddress: 'physicalAddress', city: 'city', state: 'state', country: 'country', - complexSlug: 'complexSlug', adminEmail: 'adminEmail', planCode: 'planCode', + isActive: 'isActive', createdAt: 'createdAt', updatedAt: 'updatedAt' } as const @@ -98,10 +113,12 @@ export type ComplexScalarFieldEnum = (typeof ComplexScalarFieldEnum)[keyof typeo export const ComplexUserScalarFieldEnum = { + id: 'id', complexId: 'complexId', userId: 'userId', role: 'role', - createdAt: 'createdAt' + createdAt: 'createdAt', + updatedAt: 'updatedAt' } as const export type ComplexUserScalarFieldEnum = (typeof ComplexUserScalarFieldEnum)[keyof typeof ComplexUserScalarFieldEnum] @@ -211,21 +228,13 @@ export const PasswordResetRequestScalarFieldEnum = { export type PasswordResetRequestScalarFieldEnum = (typeof PasswordResetRequestScalarFieldEnum)[keyof typeof PasswordResetRequestScalarFieldEnum] -export const PlanScalarFieldEnum = { - code: 'code', - name: 'name', - price: 'price', - rules: 'rules', - lastUpdatedAt: 'lastUpdatedAt' -} as const - -export type PlanScalarFieldEnum = (typeof PlanScalarFieldEnum)[keyof typeof PlanScalarFieldEnum] - - export const UserScalarFieldEnum = { id: 'id', supabaseUserId: 'supabaseUserId', + name: 'name', email: 'email', + emailVerified: 'emailVerified', + image: 'image', fullName: 'fullName', createdAt: 'createdAt', updatedAt: 'updatedAt' @@ -234,6 +243,51 @@ export const UserScalarFieldEnum = { export type UserScalarFieldEnum = (typeof UserScalarFieldEnum)[keyof typeof UserScalarFieldEnum] +export const SessionScalarFieldEnum = { + id: 'id', + userId: 'userId', + token: 'token', + expiresAt: 'expiresAt', + ipAddress: 'ipAddress', + userAgent: 'userAgent', + createdAt: 'createdAt', + updatedAt: 'updatedAt' +} as const + +export type SessionScalarFieldEnum = (typeof SessionScalarFieldEnum)[keyof typeof SessionScalarFieldEnum] + + +export const AccountScalarFieldEnum = { + id: 'id', + userId: 'userId', + accountId: 'accountId', + providerId: 'providerId', + accessToken: 'accessToken', + refreshToken: 'refreshToken', + accessTokenExpiresAt: 'accessTokenExpiresAt', + refreshTokenExpiresAt: 'refreshTokenExpiresAt', + scope: 'scope', + idToken: 'idToken', + password: 'password', + createdAt: 'createdAt', + updatedAt: 'updatedAt' +} as const + +export type AccountScalarFieldEnum = (typeof AccountScalarFieldEnum)[keyof typeof AccountScalarFieldEnum] + + +export const VerificationScalarFieldEnum = { + id: 'id', + identifier: 'identifier', + value: 'value', + expiresAt: 'expiresAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt' +} as const + +export type VerificationScalarFieldEnum = (typeof VerificationScalarFieldEnum)[keyof typeof VerificationScalarFieldEnum] + + export const SortOrder = { asc: 'asc', desc: 'desc' @@ -257,14 +311,6 @@ export const QueryMode = { export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode] -export const NullsOrder = { - first: 'first', - last: 'last' -} as const - -export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder] - - export const JsonNullValueFilter = { DbNull: DbNull, JsonNull: JsonNull, @@ -273,3 +319,11 @@ export const JsonNullValueFilter = { export type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter] + +export const NullsOrder = { + first: 'first', + last: 'last' +} as const + +export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder] + diff --git a/apps/backend/src/generated/prisma/models.ts b/apps/backend/src/generated/prisma/models.ts index 2dd328d..213bf51 100644 --- a/apps/backend/src/generated/prisma/models.ts +++ b/apps/backend/src/generated/prisma/models.ts @@ -8,6 +8,7 @@ * * 🟢 You can import this file directly. */ +export type * from './models/Plan' export type * from './models/Complex' export type * from './models/ComplexUser' export type * from './models/Sport' @@ -17,6 +18,8 @@ export type * from './models/CourtPriceRule' export type * from './models/CourtBooking' export type * from './models/OnboardingRequest' export type * from './models/PasswordResetRequest' -export type * from './models/Plan' export type * from './models/User' +export type * from './models/Session' +export type * from './models/Account' +export type * from './models/Verification' export type * from './commonInputTypes' \ No newline at end of file diff --git a/apps/backend/src/generated/prisma/models/Complex.ts b/apps/backend/src/generated/prisma/models/Complex.ts index ce25488..ef8a467 100644 --- a/apps/backend/src/generated/prisma/models/Complex.ts +++ b/apps/backend/src/generated/prisma/models/Complex.ts @@ -26,42 +26,45 @@ export type AggregateComplex = { export type ComplexMinAggregateOutputType = { id: string | null + complexSlug: string | null complexName: string | null physicalAddress: string | null city: string | null state: string | null country: string | null - complexSlug: string | null adminEmail: string | null planCode: string | null + isActive: boolean | null createdAt: Date | null updatedAt: Date | null } export type ComplexMaxAggregateOutputType = { id: string | null + complexSlug: string | null complexName: string | null physicalAddress: string | null city: string | null state: string | null country: string | null - complexSlug: string | null adminEmail: string | null planCode: string | null + isActive: boolean | null createdAt: Date | null updatedAt: Date | null } export type ComplexCountAggregateOutputType = { id: number + complexSlug: number complexName: number physicalAddress: number city: number state: number country: number - complexSlug: number adminEmail: number planCode: number + isActive: number createdAt: number updatedAt: number _all: number @@ -70,42 +73,45 @@ export type ComplexCountAggregateOutputType = { export type ComplexMinAggregateInputType = { id?: true + complexSlug?: true complexName?: true physicalAddress?: true city?: true state?: true country?: true - complexSlug?: true adminEmail?: true planCode?: true + isActive?: true createdAt?: true updatedAt?: true } export type ComplexMaxAggregateInputType = { id?: true + complexSlug?: true complexName?: true physicalAddress?: true city?: true state?: true country?: true - complexSlug?: true adminEmail?: true planCode?: true + isActive?: true createdAt?: true updatedAt?: true } export type ComplexCountAggregateInputType = { id?: true + complexSlug?: true complexName?: true physicalAddress?: true city?: true state?: true country?: true - complexSlug?: true adminEmail?: true planCode?: true + isActive?: true createdAt?: true updatedAt?: true _all?: true @@ -185,14 +191,15 @@ export type ComplexGroupByArgs | string + complexSlug?: Prisma.StringFilter<"Complex"> | string complexName?: Prisma.StringFilter<"Complex"> | string - physicalAddress?: Prisma.StringNullableFilter<"Complex"> | string | null + physicalAddress?: Prisma.StringFilter<"Complex"> | string city?: Prisma.StringNullableFilter<"Complex"> | string | null state?: Prisma.StringNullableFilter<"Complex"> | string | null country?: Prisma.StringNullableFilter<"Complex"> | string | null - complexSlug?: Prisma.StringFilter<"Complex"> | string adminEmail?: Prisma.StringFilter<"Complex"> | string - planCode?: Prisma.StringNullableFilter<"Complex"> | string | null + planCode?: Prisma.StringFilter<"Complex"> | string + isActive?: Prisma.BoolFilter<"Complex"> | boolean createdAt?: Prisma.DateTimeFilter<"Complex"> | Date | string updatedAt?: Prisma.DateTimeFilter<"Complex"> | Date | string - plan?: Prisma.XOR | null + plan?: Prisma.XOR users?: Prisma.ComplexUserListRelationFilter courts?: Prisma.CourtListRelationFilter } export type ComplexOrderByWithRelationInput = { id?: Prisma.SortOrder + complexSlug?: Prisma.SortOrder complexName?: Prisma.SortOrder - physicalAddress?: Prisma.SortOrderInput | Prisma.SortOrder + physicalAddress?: Prisma.SortOrder city?: Prisma.SortOrderInput | Prisma.SortOrder state?: Prisma.SortOrderInput | Prisma.SortOrder country?: Prisma.SortOrderInput | Prisma.SortOrder - complexSlug?: Prisma.SortOrder adminEmail?: Prisma.SortOrder - planCode?: Prisma.SortOrderInput | Prisma.SortOrder + planCode?: Prisma.SortOrder + isActive?: Prisma.SortOrder createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder plan?: Prisma.PlanOrderByWithRelationInput @@ -259,29 +268,31 @@ export type ComplexWhereUniqueInput = Prisma.AtLeast<{ OR?: Prisma.ComplexWhereInput[] NOT?: Prisma.ComplexWhereInput | Prisma.ComplexWhereInput[] complexName?: Prisma.StringFilter<"Complex"> | string - physicalAddress?: Prisma.StringNullableFilter<"Complex"> | string | null + physicalAddress?: Prisma.StringFilter<"Complex"> | string city?: Prisma.StringNullableFilter<"Complex"> | string | null state?: Prisma.StringNullableFilter<"Complex"> | string | null country?: Prisma.StringNullableFilter<"Complex"> | string | null adminEmail?: Prisma.StringFilter<"Complex"> | string - planCode?: Prisma.StringNullableFilter<"Complex"> | string | null + planCode?: Prisma.StringFilter<"Complex"> | string + isActive?: Prisma.BoolFilter<"Complex"> | boolean createdAt?: Prisma.DateTimeFilter<"Complex"> | Date | string updatedAt?: Prisma.DateTimeFilter<"Complex"> | Date | string - plan?: Prisma.XOR | null + plan?: Prisma.XOR users?: Prisma.ComplexUserListRelationFilter courts?: Prisma.CourtListRelationFilter }, "id" | "complexSlug"> export type ComplexOrderByWithAggregationInput = { id?: Prisma.SortOrder + complexSlug?: Prisma.SortOrder complexName?: Prisma.SortOrder - physicalAddress?: Prisma.SortOrderInput | Prisma.SortOrder + physicalAddress?: Prisma.SortOrder city?: Prisma.SortOrderInput | Prisma.SortOrder state?: Prisma.SortOrderInput | Prisma.SortOrder country?: Prisma.SortOrderInput | Prisma.SortOrder - complexSlug?: Prisma.SortOrder adminEmail?: Prisma.SortOrder - planCode?: Prisma.SortOrderInput | Prisma.SortOrder + planCode?: Prisma.SortOrder + isActive?: Prisma.SortOrder createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder _count?: Prisma.ComplexCountOrderByAggregateInput @@ -294,44 +305,47 @@ export type ComplexScalarWhereWithAggregatesInput = { OR?: Prisma.ComplexScalarWhereWithAggregatesInput[] NOT?: Prisma.ComplexScalarWhereWithAggregatesInput | Prisma.ComplexScalarWhereWithAggregatesInput[] id?: Prisma.UuidWithAggregatesFilter<"Complex"> | string + complexSlug?: Prisma.StringWithAggregatesFilter<"Complex"> | string complexName?: Prisma.StringWithAggregatesFilter<"Complex"> | string - physicalAddress?: Prisma.StringNullableWithAggregatesFilter<"Complex"> | string | null + physicalAddress?: Prisma.StringWithAggregatesFilter<"Complex"> | string city?: Prisma.StringNullableWithAggregatesFilter<"Complex"> | string | null state?: Prisma.StringNullableWithAggregatesFilter<"Complex"> | string | null country?: Prisma.StringNullableWithAggregatesFilter<"Complex"> | string | null - complexSlug?: Prisma.StringWithAggregatesFilter<"Complex"> | string adminEmail?: Prisma.StringWithAggregatesFilter<"Complex"> | string - planCode?: Prisma.StringNullableWithAggregatesFilter<"Complex"> | string | null + planCode?: Prisma.StringWithAggregatesFilter<"Complex"> | string + isActive?: Prisma.BoolWithAggregatesFilter<"Complex"> | boolean createdAt?: Prisma.DateTimeWithAggregatesFilter<"Complex"> | Date | string updatedAt?: Prisma.DateTimeWithAggregatesFilter<"Complex"> | Date | string } export type ComplexCreateInput = { id: string + complexSlug: string complexName: string - physicalAddress?: string | null + physicalAddress: string city?: string | null state?: string | null country?: string | null - complexSlug: string adminEmail: string + isActive?: boolean createdAt?: Date | string updatedAt?: Date | string - plan?: Prisma.PlanCreateNestedOneWithoutComplexesInput + plan: Prisma.PlanCreateNestedOneWithoutComplexesInput users?: Prisma.ComplexUserCreateNestedManyWithoutComplexInput courts?: Prisma.CourtCreateNestedManyWithoutComplexInput } export type ComplexUncheckedCreateInput = { id: string + complexSlug: string complexName: string - physicalAddress?: string | null + physicalAddress: string city?: string | null state?: string | null country?: string | null - complexSlug: string adminEmail: string - planCode?: string | null + planCode: string + isActive?: boolean createdAt?: Date | string updatedAt?: Date | string users?: Prisma.ComplexUserUncheckedCreateNestedManyWithoutComplexInput @@ -340,30 +354,32 @@ export type ComplexUncheckedCreateInput = { export type ComplexUpdateInput = { id?: Prisma.StringFieldUpdateOperationsInput | string + complexSlug?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string - physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + physicalAddress?: Prisma.StringFieldUpdateOperationsInput | string city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string + isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - plan?: Prisma.PlanUpdateOneWithoutComplexesNestedInput + plan?: Prisma.PlanUpdateOneRequiredWithoutComplexesNestedInput users?: Prisma.ComplexUserUpdateManyWithoutComplexNestedInput courts?: Prisma.CourtUpdateManyWithoutComplexNestedInput } export type ComplexUncheckedUpdateInput = { id?: Prisma.StringFieldUpdateOperationsInput | string + complexSlug?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string - physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + physicalAddress?: Prisma.StringFieldUpdateOperationsInput | string city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string - planCode?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + planCode?: Prisma.StringFieldUpdateOperationsInput | string + isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string users?: Prisma.ComplexUserUncheckedUpdateManyWithoutComplexNestedInput @@ -372,92 +388,48 @@ export type ComplexUncheckedUpdateInput = { export type ComplexCreateManyInput = { id: string + complexSlug: string complexName: string - physicalAddress?: string | null + physicalAddress: string city?: string | null state?: string | null country?: string | null - complexSlug: string adminEmail: string - planCode?: string | null + planCode: string + isActive?: boolean createdAt?: Date | string updatedAt?: Date | string } export type ComplexUpdateManyMutationInput = { id?: Prisma.StringFieldUpdateOperationsInput | string + complexSlug?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string - physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + physicalAddress?: Prisma.StringFieldUpdateOperationsInput | string city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string + isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string } export type ComplexUncheckedUpdateManyInput = { id?: Prisma.StringFieldUpdateOperationsInput | string + complexSlug?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string - physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + physicalAddress?: Prisma.StringFieldUpdateOperationsInput | string city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string - planCode?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + planCode?: Prisma.StringFieldUpdateOperationsInput | string + isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string } -export type ComplexCountOrderByAggregateInput = { - id?: Prisma.SortOrder - complexName?: Prisma.SortOrder - physicalAddress?: Prisma.SortOrder - city?: Prisma.SortOrder - state?: Prisma.SortOrder - country?: Prisma.SortOrder - complexSlug?: Prisma.SortOrder - adminEmail?: Prisma.SortOrder - planCode?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ComplexMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - complexName?: Prisma.SortOrder - physicalAddress?: Prisma.SortOrder - city?: Prisma.SortOrder - state?: Prisma.SortOrder - country?: Prisma.SortOrder - complexSlug?: Prisma.SortOrder - adminEmail?: Prisma.SortOrder - planCode?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ComplexMinOrderByAggregateInput = { - id?: Prisma.SortOrder - complexName?: Prisma.SortOrder - physicalAddress?: Prisma.SortOrder - city?: Prisma.SortOrder - state?: Prisma.SortOrder - country?: Prisma.SortOrder - complexSlug?: Prisma.SortOrder - adminEmail?: Prisma.SortOrder - planCode?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ComplexScalarRelationFilter = { - is?: Prisma.ComplexWhereInput - isNot?: Prisma.ComplexWhereInput -} - export type ComplexListRelationFilter = { every?: Prisma.ComplexWhereInput some?: Prisma.ComplexWhereInput @@ -468,44 +440,54 @@ export type ComplexOrderByRelationAggregateInput = { _count?: Prisma.SortOrder } -export type StringFieldUpdateOperationsInput = { - set?: string +export type ComplexCountOrderByAggregateInput = { + id?: Prisma.SortOrder + complexSlug?: Prisma.SortOrder + complexName?: Prisma.SortOrder + physicalAddress?: Prisma.SortOrder + city?: Prisma.SortOrder + state?: Prisma.SortOrder + country?: Prisma.SortOrder + adminEmail?: Prisma.SortOrder + planCode?: Prisma.SortOrder + isActive?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder } -export type NullableStringFieldUpdateOperationsInput = { - set?: string | null +export type ComplexMaxOrderByAggregateInput = { + id?: Prisma.SortOrder + complexSlug?: Prisma.SortOrder + complexName?: Prisma.SortOrder + physicalAddress?: Prisma.SortOrder + city?: Prisma.SortOrder + state?: Prisma.SortOrder + country?: Prisma.SortOrder + adminEmail?: Prisma.SortOrder + planCode?: Prisma.SortOrder + isActive?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder } -export type DateTimeFieldUpdateOperationsInput = { - set?: Date | string +export type ComplexMinOrderByAggregateInput = { + id?: Prisma.SortOrder + complexSlug?: Prisma.SortOrder + complexName?: Prisma.SortOrder + physicalAddress?: Prisma.SortOrder + city?: Prisma.SortOrder + state?: Prisma.SortOrder + country?: Prisma.SortOrder + adminEmail?: Prisma.SortOrder + planCode?: Prisma.SortOrder + isActive?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder } -export type ComplexCreateNestedOneWithoutUsersInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ComplexCreateOrConnectWithoutUsersInput - connect?: Prisma.ComplexWhereUniqueInput -} - -export type ComplexUpdateOneRequiredWithoutUsersNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ComplexCreateOrConnectWithoutUsersInput - upsert?: Prisma.ComplexUpsertWithoutUsersInput - connect?: Prisma.ComplexWhereUniqueInput - update?: Prisma.XOR, Prisma.ComplexUncheckedUpdateWithoutUsersInput> -} - -export type ComplexCreateNestedOneWithoutCourtsInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ComplexCreateOrConnectWithoutCourtsInput - connect?: Prisma.ComplexWhereUniqueInput -} - -export type ComplexUpdateOneRequiredWithoutCourtsNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ComplexCreateOrConnectWithoutCourtsInput - upsert?: Prisma.ComplexUpsertWithoutCourtsInput - connect?: Prisma.ComplexWhereUniqueInput - update?: Prisma.XOR, Prisma.ComplexUncheckedUpdateWithoutCourtsInput> +export type ComplexScalarRelationFilter = { + is?: Prisma.ComplexWhereInput + isNot?: Prisma.ComplexWhereInput } export type ComplexCreateNestedManyWithoutPlanInput = { @@ -550,167 +532,52 @@ export type ComplexUncheckedUpdateManyWithoutPlanNestedInput = { deleteMany?: Prisma.ComplexScalarWhereInput | Prisma.ComplexScalarWhereInput[] } -export type ComplexCreateWithoutUsersInput = { - id: string - complexName: string - physicalAddress?: string | null - city?: string | null - state?: string | null - country?: string | null - complexSlug: string - adminEmail: string - createdAt?: Date | string - updatedAt?: Date | string - plan?: Prisma.PlanCreateNestedOneWithoutComplexesInput - courts?: Prisma.CourtCreateNestedManyWithoutComplexInput +export type NullableStringFieldUpdateOperationsInput = { + set?: string | null } -export type ComplexUncheckedCreateWithoutUsersInput = { - id: string - complexName: string - physicalAddress?: string | null - city?: string | null - state?: string | null - country?: string | null - complexSlug: string - adminEmail: string - planCode?: string | null - createdAt?: Date | string - updatedAt?: Date | string - courts?: Prisma.CourtUncheckedCreateNestedManyWithoutComplexInput +export type BoolFieldUpdateOperationsInput = { + set?: boolean } -export type ComplexCreateOrConnectWithoutUsersInput = { - where: Prisma.ComplexWhereUniqueInput - create: Prisma.XOR +export type ComplexCreateNestedOneWithoutUsersInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.ComplexCreateOrConnectWithoutUsersInput + connect?: Prisma.ComplexWhereUniqueInput } -export type ComplexUpsertWithoutUsersInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.ComplexWhereInput +export type ComplexUpdateOneRequiredWithoutUsersNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.ComplexCreateOrConnectWithoutUsersInput + upsert?: Prisma.ComplexUpsertWithoutUsersInput + connect?: Prisma.ComplexWhereUniqueInput + update?: Prisma.XOR, Prisma.ComplexUncheckedUpdateWithoutUsersInput> } -export type ComplexUpdateToOneWithWhereWithoutUsersInput = { - where?: Prisma.ComplexWhereInput - data: Prisma.XOR +export type ComplexCreateNestedOneWithoutCourtsInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.ComplexCreateOrConnectWithoutCourtsInput + connect?: Prisma.ComplexWhereUniqueInput } -export type ComplexUpdateWithoutUsersInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - complexName?: Prisma.StringFieldUpdateOperationsInput | string - physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - complexSlug?: Prisma.StringFieldUpdateOperationsInput | string - adminEmail?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - plan?: Prisma.PlanUpdateOneWithoutComplexesNestedInput - courts?: Prisma.CourtUpdateManyWithoutComplexNestedInput -} - -export type ComplexUncheckedUpdateWithoutUsersInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - complexName?: Prisma.StringFieldUpdateOperationsInput | string - physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - complexSlug?: Prisma.StringFieldUpdateOperationsInput | string - adminEmail?: Prisma.StringFieldUpdateOperationsInput | string - planCode?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - courts?: Prisma.CourtUncheckedUpdateManyWithoutComplexNestedInput -} - -export type ComplexCreateWithoutCourtsInput = { - id: string - complexName: string - physicalAddress?: string | null - city?: string | null - state?: string | null - country?: string | null - complexSlug: string - adminEmail: string - createdAt?: Date | string - updatedAt?: Date | string - plan?: Prisma.PlanCreateNestedOneWithoutComplexesInput - users?: Prisma.ComplexUserCreateNestedManyWithoutComplexInput -} - -export type ComplexUncheckedCreateWithoutCourtsInput = { - id: string - complexName: string - physicalAddress?: string | null - city?: string | null - state?: string | null - country?: string | null - complexSlug: string - adminEmail: string - planCode?: string | null - createdAt?: Date | string - updatedAt?: Date | string - users?: Prisma.ComplexUserUncheckedCreateNestedManyWithoutComplexInput -} - -export type ComplexCreateOrConnectWithoutCourtsInput = { - where: Prisma.ComplexWhereUniqueInput - create: Prisma.XOR -} - -export type ComplexUpsertWithoutCourtsInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.ComplexWhereInput -} - -export type ComplexUpdateToOneWithWhereWithoutCourtsInput = { - where?: Prisma.ComplexWhereInput - data: Prisma.XOR -} - -export type ComplexUpdateWithoutCourtsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - complexName?: Prisma.StringFieldUpdateOperationsInput | string - physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - complexSlug?: Prisma.StringFieldUpdateOperationsInput | string - adminEmail?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - plan?: Prisma.PlanUpdateOneWithoutComplexesNestedInput - users?: Prisma.ComplexUserUpdateManyWithoutComplexNestedInput -} - -export type ComplexUncheckedUpdateWithoutCourtsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - complexName?: Prisma.StringFieldUpdateOperationsInput | string - physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - complexSlug?: Prisma.StringFieldUpdateOperationsInput | string - adminEmail?: Prisma.StringFieldUpdateOperationsInput | string - planCode?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - users?: Prisma.ComplexUserUncheckedUpdateManyWithoutComplexNestedInput +export type ComplexUpdateOneRequiredWithoutCourtsNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.ComplexCreateOrConnectWithoutCourtsInput + upsert?: Prisma.ComplexUpsertWithoutCourtsInput + connect?: Prisma.ComplexWhereUniqueInput + update?: Prisma.XOR, Prisma.ComplexUncheckedUpdateWithoutCourtsInput> } export type ComplexCreateWithoutPlanInput = { id: string + complexSlug: string complexName: string - physicalAddress?: string | null + physicalAddress: string city?: string | null state?: string | null country?: string | null - complexSlug: string adminEmail: string + isActive?: boolean createdAt?: Date | string updatedAt?: Date | string users?: Prisma.ComplexUserCreateNestedManyWithoutComplexInput @@ -719,13 +586,14 @@ export type ComplexCreateWithoutPlanInput = { export type ComplexUncheckedCreateWithoutPlanInput = { id: string + complexSlug: string complexName: string - physicalAddress?: string | null + physicalAddress: string city?: string | null state?: string | null country?: string | null - complexSlug: string adminEmail: string + isActive?: boolean createdAt?: Date | string updatedAt?: Date | string users?: Prisma.ComplexUserUncheckedCreateNestedManyWithoutComplexInput @@ -763,40 +631,203 @@ export type ComplexScalarWhereInput = { OR?: Prisma.ComplexScalarWhereInput[] NOT?: Prisma.ComplexScalarWhereInput | Prisma.ComplexScalarWhereInput[] id?: Prisma.UuidFilter<"Complex"> | string + complexSlug?: Prisma.StringFilter<"Complex"> | string complexName?: Prisma.StringFilter<"Complex"> | string - physicalAddress?: Prisma.StringNullableFilter<"Complex"> | string | null + physicalAddress?: Prisma.StringFilter<"Complex"> | string city?: Prisma.StringNullableFilter<"Complex"> | string | null state?: Prisma.StringNullableFilter<"Complex"> | string | null country?: Prisma.StringNullableFilter<"Complex"> | string | null - complexSlug?: Prisma.StringFilter<"Complex"> | string adminEmail?: Prisma.StringFilter<"Complex"> | string - planCode?: Prisma.StringNullableFilter<"Complex"> | string | null + planCode?: Prisma.StringFilter<"Complex"> | string + isActive?: Prisma.BoolFilter<"Complex"> | boolean createdAt?: Prisma.DateTimeFilter<"Complex"> | Date | string updatedAt?: Prisma.DateTimeFilter<"Complex"> | Date | string } -export type ComplexCreateManyPlanInput = { +export type ComplexCreateWithoutUsersInput = { id: string + complexSlug: string complexName: string - physicalAddress?: string | null + physicalAddress: string city?: string | null state?: string | null country?: string | null - complexSlug: string adminEmail: string + isActive?: boolean + createdAt?: Date | string + updatedAt?: Date | string + plan: Prisma.PlanCreateNestedOneWithoutComplexesInput + courts?: Prisma.CourtCreateNestedManyWithoutComplexInput +} + +export type ComplexUncheckedCreateWithoutUsersInput = { + id: string + complexSlug: string + complexName: string + physicalAddress: string + city?: string | null + state?: string | null + country?: string | null + adminEmail: string + planCode: string + isActive?: boolean + createdAt?: Date | string + updatedAt?: Date | string + courts?: Prisma.CourtUncheckedCreateNestedManyWithoutComplexInput +} + +export type ComplexCreateOrConnectWithoutUsersInput = { + where: Prisma.ComplexWhereUniqueInput + create: Prisma.XOR +} + +export type ComplexUpsertWithoutUsersInput = { + update: Prisma.XOR + create: Prisma.XOR + where?: Prisma.ComplexWhereInput +} + +export type ComplexUpdateToOneWithWhereWithoutUsersInput = { + where?: Prisma.ComplexWhereInput + data: Prisma.XOR +} + +export type ComplexUpdateWithoutUsersInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + complexSlug?: Prisma.StringFieldUpdateOperationsInput | string + complexName?: Prisma.StringFieldUpdateOperationsInput | string + physicalAddress?: Prisma.StringFieldUpdateOperationsInput | string + city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + adminEmail?: Prisma.StringFieldUpdateOperationsInput | string + isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + plan?: Prisma.PlanUpdateOneRequiredWithoutComplexesNestedInput + courts?: Prisma.CourtUpdateManyWithoutComplexNestedInput +} + +export type ComplexUncheckedUpdateWithoutUsersInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + complexSlug?: Prisma.StringFieldUpdateOperationsInput | string + complexName?: Prisma.StringFieldUpdateOperationsInput | string + physicalAddress?: Prisma.StringFieldUpdateOperationsInput | string + city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + adminEmail?: Prisma.StringFieldUpdateOperationsInput | string + planCode?: Prisma.StringFieldUpdateOperationsInput | string + isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + courts?: Prisma.CourtUncheckedUpdateManyWithoutComplexNestedInput +} + +export type ComplexCreateWithoutCourtsInput = { + id: string + complexSlug: string + complexName: string + physicalAddress: string + city?: string | null + state?: string | null + country?: string | null + adminEmail: string + isActive?: boolean + createdAt?: Date | string + updatedAt?: Date | string + plan: Prisma.PlanCreateNestedOneWithoutComplexesInput + users?: Prisma.ComplexUserCreateNestedManyWithoutComplexInput +} + +export type ComplexUncheckedCreateWithoutCourtsInput = { + id: string + complexSlug: string + complexName: string + physicalAddress: string + city?: string | null + state?: string | null + country?: string | null + adminEmail: string + planCode: string + isActive?: boolean + createdAt?: Date | string + updatedAt?: Date | string + users?: Prisma.ComplexUserUncheckedCreateNestedManyWithoutComplexInput +} + +export type ComplexCreateOrConnectWithoutCourtsInput = { + where: Prisma.ComplexWhereUniqueInput + create: Prisma.XOR +} + +export type ComplexUpsertWithoutCourtsInput = { + update: Prisma.XOR + create: Prisma.XOR + where?: Prisma.ComplexWhereInput +} + +export type ComplexUpdateToOneWithWhereWithoutCourtsInput = { + where?: Prisma.ComplexWhereInput + data: Prisma.XOR +} + +export type ComplexUpdateWithoutCourtsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + complexSlug?: Prisma.StringFieldUpdateOperationsInput | string + complexName?: Prisma.StringFieldUpdateOperationsInput | string + physicalAddress?: Prisma.StringFieldUpdateOperationsInput | string + city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + adminEmail?: Prisma.StringFieldUpdateOperationsInput | string + isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + plan?: Prisma.PlanUpdateOneRequiredWithoutComplexesNestedInput + users?: Prisma.ComplexUserUpdateManyWithoutComplexNestedInput +} + +export type ComplexUncheckedUpdateWithoutCourtsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + complexSlug?: Prisma.StringFieldUpdateOperationsInput | string + complexName?: Prisma.StringFieldUpdateOperationsInput | string + physicalAddress?: Prisma.StringFieldUpdateOperationsInput | string + city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + adminEmail?: Prisma.StringFieldUpdateOperationsInput | string + planCode?: Prisma.StringFieldUpdateOperationsInput | string + isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + users?: Prisma.ComplexUserUncheckedUpdateManyWithoutComplexNestedInput +} + +export type ComplexCreateManyPlanInput = { + id: string + complexSlug: string + complexName: string + physicalAddress: string + city?: string | null + state?: string | null + country?: string | null + adminEmail: string + isActive?: boolean createdAt?: Date | string updatedAt?: Date | string } export type ComplexUpdateWithoutPlanInput = { id?: Prisma.StringFieldUpdateOperationsInput | string + complexSlug?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string - physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + physicalAddress?: Prisma.StringFieldUpdateOperationsInput | string city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string + isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string users?: Prisma.ComplexUserUpdateManyWithoutComplexNestedInput @@ -805,13 +836,14 @@ export type ComplexUpdateWithoutPlanInput = { export type ComplexUncheckedUpdateWithoutPlanInput = { id?: Prisma.StringFieldUpdateOperationsInput | string + complexSlug?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string - physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + physicalAddress?: Prisma.StringFieldUpdateOperationsInput | string city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string + isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string users?: Prisma.ComplexUserUncheckedUpdateManyWithoutComplexNestedInput @@ -820,13 +852,14 @@ export type ComplexUncheckedUpdateWithoutPlanInput = { export type ComplexUncheckedUpdateManyWithoutPlanInput = { id?: Prisma.StringFieldUpdateOperationsInput | string + complexSlug?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string - physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + physicalAddress?: Prisma.StringFieldUpdateOperationsInput | string city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string + isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string } @@ -873,17 +906,18 @@ export type ComplexCountOutputTypeCountCourtsArgs = runtime.Types.Extensions.GetSelect<{ id?: boolean + complexSlug?: boolean complexName?: boolean physicalAddress?: boolean city?: boolean state?: boolean country?: boolean - complexSlug?: boolean adminEmail?: boolean planCode?: boolean + isActive?: boolean createdAt?: boolean updatedAt?: boolean - plan?: boolean | Prisma.Complex$planArgs + plan?: boolean | Prisma.PlanDefaultArgs users?: boolean | Prisma.Complex$usersArgs courts?: boolean | Prisma.Complex$courtsArgs _count?: boolean | Prisma.ComplexCountOutputTypeDefaultArgs @@ -891,79 +925,83 @@ export type ComplexSelect = runtime.Types.Extensions.GetSelect<{ id?: boolean + complexSlug?: boolean complexName?: boolean physicalAddress?: boolean city?: boolean state?: boolean country?: boolean - complexSlug?: boolean adminEmail?: boolean planCode?: boolean + isActive?: boolean createdAt?: boolean updatedAt?: boolean - plan?: boolean | Prisma.Complex$planArgs + plan?: boolean | Prisma.PlanDefaultArgs }, ExtArgs["result"]["complex"]> export type ComplexSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ id?: boolean + complexSlug?: boolean complexName?: boolean physicalAddress?: boolean city?: boolean state?: boolean country?: boolean - complexSlug?: boolean adminEmail?: boolean planCode?: boolean + isActive?: boolean createdAt?: boolean updatedAt?: boolean - plan?: boolean | Prisma.Complex$planArgs + plan?: boolean | Prisma.PlanDefaultArgs }, ExtArgs["result"]["complex"]> export type ComplexSelectScalar = { id?: boolean + complexSlug?: boolean complexName?: boolean physicalAddress?: boolean city?: boolean state?: boolean country?: boolean - complexSlug?: boolean adminEmail?: boolean planCode?: boolean + isActive?: boolean createdAt?: boolean updatedAt?: boolean } -export type ComplexOmit = runtime.Types.Extensions.GetOmit<"id" | "complexName" | "physicalAddress" | "city" | "state" | "country" | "complexSlug" | "adminEmail" | "planCode" | "createdAt" | "updatedAt", ExtArgs["result"]["complex"]> +export type ComplexOmit = runtime.Types.Extensions.GetOmit<"id" | "complexSlug" | "complexName" | "physicalAddress" | "city" | "state" | "country" | "adminEmail" | "planCode" | "isActive" | "createdAt" | "updatedAt", ExtArgs["result"]["complex"]> export type ComplexInclude = { - plan?: boolean | Prisma.Complex$planArgs + plan?: boolean | Prisma.PlanDefaultArgs users?: boolean | Prisma.Complex$usersArgs courts?: boolean | Prisma.Complex$courtsArgs _count?: boolean | Prisma.ComplexCountOutputTypeDefaultArgs } export type ComplexIncludeCreateManyAndReturn = { - plan?: boolean | Prisma.Complex$planArgs + plan?: boolean | Prisma.PlanDefaultArgs } export type ComplexIncludeUpdateManyAndReturn = { - plan?: boolean | Prisma.Complex$planArgs + plan?: boolean | Prisma.PlanDefaultArgs } export type $ComplexPayload = { name: "Complex" objects: { - plan: Prisma.$PlanPayload | null + plan: Prisma.$PlanPayload users: Prisma.$ComplexUserPayload[] courts: Prisma.$CourtPayload[] } scalars: runtime.Types.Extensions.GetPayloadResult<{ id: string + complexSlug: string complexName: string - physicalAddress: string | null + physicalAddress: string city: string | null state: string | null country: string | null - complexSlug: string adminEmail: string - planCode: string | null + planCode: string + isActive: boolean createdAt: Date updatedAt: Date }, ExtArgs["result"]["complex"]> @@ -1360,7 +1398,7 @@ readonly fields: ComplexFieldRefs; */ export interface Prisma__ComplexClient extends Prisma.PrismaPromise { readonly [Symbol.toStringTag]: "PrismaPromise" - plan = {}>(args?: Prisma.Subset>): Prisma.Prisma__PlanClient, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + plan = {}>(args?: Prisma.Subset>): Prisma.Prisma__PlanClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> users = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> courts = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> /** @@ -1393,14 +1431,15 @@ export interface Prisma__ComplexClient + readonly complexSlug: Prisma.FieldRef<"Complex", 'String'> readonly complexName: Prisma.FieldRef<"Complex", 'String'> readonly physicalAddress: Prisma.FieldRef<"Complex", 'String'> readonly city: Prisma.FieldRef<"Complex", 'String'> readonly state: Prisma.FieldRef<"Complex", 'String'> readonly country: Prisma.FieldRef<"Complex", 'String'> - readonly complexSlug: Prisma.FieldRef<"Complex", 'String'> readonly adminEmail: Prisma.FieldRef<"Complex", 'String'> readonly planCode: Prisma.FieldRef<"Complex", 'String'> + readonly isActive: Prisma.FieldRef<"Complex", 'Boolean'> readonly createdAt: Prisma.FieldRef<"Complex", 'DateTime'> readonly updatedAt: Prisma.FieldRef<"Complex", 'DateTime'> } @@ -1803,25 +1842,6 @@ export type ComplexDeleteManyArgs = { - /** - * Select specific fields to fetch from the Plan - */ - select?: Prisma.PlanSelect | null - /** - * Omit specific fields from the Plan - */ - omit?: Prisma.PlanOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.PlanInclude | null - where?: Prisma.PlanWhereInput -} - /** * Complex.users */ diff --git a/apps/backend/src/generated/prisma/models/ComplexUser.ts b/apps/backend/src/generated/prisma/models/ComplexUser.ts index a7cf65d..cc276f0 100644 --- a/apps/backend/src/generated/prisma/models/ComplexUser.ts +++ b/apps/backend/src/generated/prisma/models/ComplexUser.ts @@ -25,47 +25,59 @@ export type AggregateComplexUser = { } export type ComplexUserMinAggregateOutputType = { + id: string | null complexId: string | null userId: string | null role: $Enums.ComplexUserRole | null createdAt: Date | null + updatedAt: Date | null } export type ComplexUserMaxAggregateOutputType = { + id: string | null complexId: string | null userId: string | null role: $Enums.ComplexUserRole | null createdAt: Date | null + updatedAt: Date | null } export type ComplexUserCountAggregateOutputType = { + id: number complexId: number userId: number role: number createdAt: number + updatedAt: number _all: number } export type ComplexUserMinAggregateInputType = { + id?: true complexId?: true userId?: true role?: true createdAt?: true + updatedAt?: true } export type ComplexUserMaxAggregateInputType = { + id?: true complexId?: true userId?: true role?: true createdAt?: true + updatedAt?: true } export type ComplexUserCountAggregateInputType = { + id?: true complexId?: true userId?: true role?: true createdAt?: true + updatedAt?: true _all?: true } @@ -142,10 +154,12 @@ export type ComplexUserGroupByArgs | string complexId?: Prisma.UuidFilter<"ComplexUser"> | string - userId?: Prisma.UuidFilter<"ComplexUser"> | string + userId?: Prisma.StringFilter<"ComplexUser"> | string role?: Prisma.EnumComplexUserRoleFilter<"ComplexUser"> | $Enums.ComplexUserRole createdAt?: Prisma.DateTimeFilter<"ComplexUser"> | Date | string + updatedAt?: Prisma.DateTimeFilter<"ComplexUser"> | Date | string complex?: Prisma.XOR user?: Prisma.XOR } export type ComplexUserOrderByWithRelationInput = { + id?: Prisma.SortOrder complexId?: Prisma.SortOrder userId?: Prisma.SortOrder role?: Prisma.SortOrder createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder complex?: Prisma.ComplexOrderByWithRelationInput user?: Prisma.UserOrderByWithRelationInput } export type ComplexUserWhereUniqueInput = Prisma.AtLeast<{ + id?: string complexId_userId?: Prisma.ComplexUserComplexIdUserIdCompoundUniqueInput AND?: Prisma.ComplexUserWhereInput | Prisma.ComplexUserWhereInput[] OR?: Prisma.ComplexUserWhereInput[] NOT?: Prisma.ComplexUserWhereInput | Prisma.ComplexUserWhereInput[] complexId?: Prisma.UuidFilter<"ComplexUser"> | string - userId?: Prisma.UuidFilter<"ComplexUser"> | string + userId?: Prisma.StringFilter<"ComplexUser"> | string role?: Prisma.EnumComplexUserRoleFilter<"ComplexUser"> | $Enums.ComplexUserRole createdAt?: Prisma.DateTimeFilter<"ComplexUser"> | Date | string + updatedAt?: Prisma.DateTimeFilter<"ComplexUser"> | Date | string complex?: Prisma.XOR user?: Prisma.XOR -}, "complexId_userId"> +}, "id" | "complexId_userId"> export type ComplexUserOrderByWithAggregationInput = { + id?: Prisma.SortOrder complexId?: Prisma.SortOrder userId?: Prisma.SortOrder role?: Prisma.SortOrder createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder _count?: Prisma.ComplexUserCountOrderByAggregateInput _max?: Prisma.ComplexUserMaxOrderByAggregateInput _min?: Prisma.ComplexUserMinOrderByAggregateInput @@ -214,57 +236,73 @@ export type ComplexUserScalarWhereWithAggregatesInput = { AND?: Prisma.ComplexUserScalarWhereWithAggregatesInput | Prisma.ComplexUserScalarWhereWithAggregatesInput[] OR?: Prisma.ComplexUserScalarWhereWithAggregatesInput[] NOT?: Prisma.ComplexUserScalarWhereWithAggregatesInput | Prisma.ComplexUserScalarWhereWithAggregatesInput[] + id?: Prisma.StringWithAggregatesFilter<"ComplexUser"> | string complexId?: Prisma.UuidWithAggregatesFilter<"ComplexUser"> | string - userId?: Prisma.UuidWithAggregatesFilter<"ComplexUser"> | string + userId?: Prisma.StringWithAggregatesFilter<"ComplexUser"> | string role?: Prisma.EnumComplexUserRoleWithAggregatesFilter<"ComplexUser"> | $Enums.ComplexUserRole createdAt?: Prisma.DateTimeWithAggregatesFilter<"ComplexUser"> | Date | string + updatedAt?: Prisma.DateTimeWithAggregatesFilter<"ComplexUser"> | Date | string } export type ComplexUserCreateInput = { - role?: $Enums.ComplexUserRole + id?: string + role: $Enums.ComplexUserRole createdAt?: Date | string + updatedAt?: Date | string complex: Prisma.ComplexCreateNestedOneWithoutUsersInput user: Prisma.UserCreateNestedOneWithoutComplexesInput } export type ComplexUserUncheckedCreateInput = { + id?: string complexId: string userId: string - role?: $Enums.ComplexUserRole + role: $Enums.ComplexUserRole createdAt?: Date | string + updatedAt?: Date | string } export type ComplexUserUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string role?: Prisma.EnumComplexUserRoleFieldUpdateOperationsInput | $Enums.ComplexUserRole createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string complex?: Prisma.ComplexUpdateOneRequiredWithoutUsersNestedInput user?: Prisma.UserUpdateOneRequiredWithoutComplexesNestedInput } export type ComplexUserUncheckedUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string complexId?: Prisma.StringFieldUpdateOperationsInput | string userId?: Prisma.StringFieldUpdateOperationsInput | string role?: Prisma.EnumComplexUserRoleFieldUpdateOperationsInput | $Enums.ComplexUserRole createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string } export type ComplexUserCreateManyInput = { + id?: string complexId: string userId: string - role?: $Enums.ComplexUserRole + role: $Enums.ComplexUserRole createdAt?: Date | string + updatedAt?: Date | string } export type ComplexUserUpdateManyMutationInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string role?: Prisma.EnumComplexUserRoleFieldUpdateOperationsInput | $Enums.ComplexUserRole createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string } export type ComplexUserUncheckedUpdateManyInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string complexId?: Prisma.StringFieldUpdateOperationsInput | string userId?: Prisma.StringFieldUpdateOperationsInput | string role?: Prisma.EnumComplexUserRoleFieldUpdateOperationsInput | $Enums.ComplexUserRole createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string } export type ComplexUserListRelationFilter = { @@ -283,24 +321,30 @@ export type ComplexUserComplexIdUserIdCompoundUniqueInput = { } export type ComplexUserCountOrderByAggregateInput = { + id?: Prisma.SortOrder complexId?: Prisma.SortOrder userId?: Prisma.SortOrder role?: Prisma.SortOrder createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder } export type ComplexUserMaxOrderByAggregateInput = { + id?: Prisma.SortOrder complexId?: Prisma.SortOrder userId?: Prisma.SortOrder role?: Prisma.SortOrder createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder } export type ComplexUserMinOrderByAggregateInput = { + id?: Prisma.SortOrder complexId?: Prisma.SortOrder userId?: Prisma.SortOrder role?: Prisma.SortOrder createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder } export type ComplexUserCreateNestedManyWithoutComplexInput = { @@ -392,15 +436,19 @@ export type ComplexUserUncheckedUpdateManyWithoutUserNestedInput = { } export type ComplexUserCreateWithoutComplexInput = { - role?: $Enums.ComplexUserRole + id?: string + role: $Enums.ComplexUserRole createdAt?: Date | string + updatedAt?: Date | string user: Prisma.UserCreateNestedOneWithoutComplexesInput } export type ComplexUserUncheckedCreateWithoutComplexInput = { + id?: string userId: string - role?: $Enums.ComplexUserRole + role: $Enums.ComplexUserRole createdAt?: Date | string + updatedAt?: Date | string } export type ComplexUserCreateOrConnectWithoutComplexInput = { @@ -433,22 +481,28 @@ export type ComplexUserScalarWhereInput = { AND?: Prisma.ComplexUserScalarWhereInput | Prisma.ComplexUserScalarWhereInput[] OR?: Prisma.ComplexUserScalarWhereInput[] NOT?: Prisma.ComplexUserScalarWhereInput | Prisma.ComplexUserScalarWhereInput[] + id?: Prisma.StringFilter<"ComplexUser"> | string complexId?: Prisma.UuidFilter<"ComplexUser"> | string - userId?: Prisma.UuidFilter<"ComplexUser"> | string + userId?: Prisma.StringFilter<"ComplexUser"> | string role?: Prisma.EnumComplexUserRoleFilter<"ComplexUser"> | $Enums.ComplexUserRole createdAt?: Prisma.DateTimeFilter<"ComplexUser"> | Date | string + updatedAt?: Prisma.DateTimeFilter<"ComplexUser"> | Date | string } export type ComplexUserCreateWithoutUserInput = { - role?: $Enums.ComplexUserRole + id?: string + role: $Enums.ComplexUserRole createdAt?: Date | string + updatedAt?: Date | string complex: Prisma.ComplexCreateNestedOneWithoutUsersInput } export type ComplexUserUncheckedCreateWithoutUserInput = { + id?: string complexId: string - role?: $Enums.ComplexUserRole + role: $Enums.ComplexUserRole createdAt?: Date | string + updatedAt?: Date | string } export type ComplexUserCreateOrConnectWithoutUserInput = { @@ -478,90 +532,114 @@ export type ComplexUserUpdateManyWithWhereWithoutUserInput = { } export type ComplexUserCreateManyComplexInput = { + id?: string userId: string - role?: $Enums.ComplexUserRole + role: $Enums.ComplexUserRole createdAt?: Date | string + updatedAt?: Date | string } export type ComplexUserUpdateWithoutComplexInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string role?: Prisma.EnumComplexUserRoleFieldUpdateOperationsInput | $Enums.ComplexUserRole createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string user?: Prisma.UserUpdateOneRequiredWithoutComplexesNestedInput } export type ComplexUserUncheckedUpdateWithoutComplexInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string userId?: Prisma.StringFieldUpdateOperationsInput | string role?: Prisma.EnumComplexUserRoleFieldUpdateOperationsInput | $Enums.ComplexUserRole createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string } export type ComplexUserUncheckedUpdateManyWithoutComplexInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string userId?: Prisma.StringFieldUpdateOperationsInput | string role?: Prisma.EnumComplexUserRoleFieldUpdateOperationsInput | $Enums.ComplexUserRole createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string } export type ComplexUserCreateManyUserInput = { + id?: string complexId: string - role?: $Enums.ComplexUserRole + role: $Enums.ComplexUserRole createdAt?: Date | string + updatedAt?: Date | string } export type ComplexUserUpdateWithoutUserInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string role?: Prisma.EnumComplexUserRoleFieldUpdateOperationsInput | $Enums.ComplexUserRole createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string complex?: Prisma.ComplexUpdateOneRequiredWithoutUsersNestedInput } export type ComplexUserUncheckedUpdateWithoutUserInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string complexId?: Prisma.StringFieldUpdateOperationsInput | string role?: Prisma.EnumComplexUserRoleFieldUpdateOperationsInput | $Enums.ComplexUserRole createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string } export type ComplexUserUncheckedUpdateManyWithoutUserInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string complexId?: Prisma.StringFieldUpdateOperationsInput | string role?: Prisma.EnumComplexUserRoleFieldUpdateOperationsInput | $Enums.ComplexUserRole createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string } export type ComplexUserSelect = runtime.Types.Extensions.GetSelect<{ + id?: boolean complexId?: boolean userId?: boolean role?: boolean createdAt?: boolean + updatedAt?: boolean complex?: boolean | Prisma.ComplexDefaultArgs user?: boolean | Prisma.UserDefaultArgs }, ExtArgs["result"]["complexUser"]> export type ComplexUserSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean complexId?: boolean userId?: boolean role?: boolean createdAt?: boolean + updatedAt?: boolean complex?: boolean | Prisma.ComplexDefaultArgs user?: boolean | Prisma.UserDefaultArgs }, ExtArgs["result"]["complexUser"]> export type ComplexUserSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean complexId?: boolean userId?: boolean role?: boolean createdAt?: boolean + updatedAt?: boolean complex?: boolean | Prisma.ComplexDefaultArgs user?: boolean | Prisma.UserDefaultArgs }, ExtArgs["result"]["complexUser"]> export type ComplexUserSelectScalar = { + id?: boolean complexId?: boolean userId?: boolean role?: boolean createdAt?: boolean + updatedAt?: boolean } -export type ComplexUserOmit = runtime.Types.Extensions.GetOmit<"complexId" | "userId" | "role" | "createdAt", ExtArgs["result"]["complexUser"]> +export type ComplexUserOmit = runtime.Types.Extensions.GetOmit<"id" | "complexId" | "userId" | "role" | "createdAt" | "updatedAt", ExtArgs["result"]["complexUser"]> export type ComplexUserInclude = { complex?: boolean | Prisma.ComplexDefaultArgs user?: boolean | Prisma.UserDefaultArgs @@ -582,10 +660,12 @@ export type $ComplexUserPayload } scalars: runtime.Types.Extensions.GetPayloadResult<{ + id: string complexId: string userId: string role: $Enums.ComplexUserRole createdAt: Date + updatedAt: Date }, ExtArgs["result"]["complexUser"]> composites: {} } @@ -669,8 +749,8 @@ export interface ComplexUserDelegate(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> @@ -714,9 +794,9 @@ export interface ComplexUserDelegate readonly complexId: Prisma.FieldRef<"ComplexUser", 'String'> readonly userId: Prisma.FieldRef<"ComplexUser", 'String'> readonly role: Prisma.FieldRef<"ComplexUser", 'ComplexUserRole'> readonly createdAt: Prisma.FieldRef<"ComplexUser", 'DateTime'> + readonly updatedAt: Prisma.FieldRef<"ComplexUser", 'DateTime'> } diff --git a/apps/backend/src/generated/prisma/models/Court.ts b/apps/backend/src/generated/prisma/models/Court.ts index fc388ba..4ddbbfc 100644 --- a/apps/backend/src/generated/prisma/models/Court.ts +++ b/apps/backend/src/generated/prisma/models/Court.ts @@ -553,14 +553,6 @@ export type IntFieldUpdateOperationsInput = { divide?: number } -export type DecimalFieldUpdateOperationsInput = { - set?: runtime.Decimal | runtime.DecimalJsLike | number | string - increment?: runtime.Decimal | runtime.DecimalJsLike | number | string - decrement?: runtime.Decimal | runtime.DecimalJsLike | number | string - multiply?: runtime.Decimal | runtime.DecimalJsLike | number | string - divide?: runtime.Decimal | runtime.DecimalJsLike | number | string -} - export type CourtCreateNestedOneWithoutAvailabilitiesInput = { create?: Prisma.XOR connectOrCreate?: Prisma.CourtCreateOrConnectWithoutAvailabilitiesInput diff --git a/apps/backend/src/generated/prisma/models/Plan.ts b/apps/backend/src/generated/prisma/models/Plan.ts index 5320a8c..1770a4e 100644 --- a/apps/backend/src/generated/prisma/models/Plan.ts +++ b/apps/backend/src/generated/prisma/models/Plan.ts @@ -320,11 +320,6 @@ export type PlanUncheckedUpdateManyInput = { lastUpdatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string } -export type PlanNullableScalarRelationFilter = { - is?: Prisma.PlanWhereInput | null - isNot?: Prisma.PlanWhereInput | null -} - export type PlanCountOrderByAggregateInput = { code?: Prisma.SortOrder name?: Prisma.SortOrder @@ -355,18 +350,37 @@ export type PlanSumOrderByAggregateInput = { price?: Prisma.SortOrder } +export type PlanScalarRelationFilter = { + is?: Prisma.PlanWhereInput + isNot?: Prisma.PlanWhereInput +} + +export type StringFieldUpdateOperationsInput = { + set?: string +} + +export type DecimalFieldUpdateOperationsInput = { + set?: runtime.Decimal | runtime.DecimalJsLike | number | string + increment?: runtime.Decimal | runtime.DecimalJsLike | number | string + decrement?: runtime.Decimal | runtime.DecimalJsLike | number | string + multiply?: runtime.Decimal | runtime.DecimalJsLike | number | string + divide?: runtime.Decimal | runtime.DecimalJsLike | number | string +} + +export type DateTimeFieldUpdateOperationsInput = { + set?: Date | string +} + export type PlanCreateNestedOneWithoutComplexesInput = { create?: Prisma.XOR connectOrCreate?: Prisma.PlanCreateOrConnectWithoutComplexesInput connect?: Prisma.PlanWhereUniqueInput } -export type PlanUpdateOneWithoutComplexesNestedInput = { +export type PlanUpdateOneRequiredWithoutComplexesNestedInput = { create?: Prisma.XOR connectOrCreate?: Prisma.PlanCreateOrConnectWithoutComplexesInput upsert?: Prisma.PlanUpsertWithoutComplexesInput - disconnect?: Prisma.PlanWhereInput | boolean - delete?: Prisma.PlanWhereInput | boolean connect?: Prisma.PlanWhereUniqueInput update?: Prisma.XOR, Prisma.PlanUncheckedUpdateWithoutComplexesInput> } diff --git a/apps/backend/src/generated/prisma/models/Sport.ts b/apps/backend/src/generated/prisma/models/Sport.ts index 7cf506b..26564bd 100644 --- a/apps/backend/src/generated/prisma/models/Sport.ts +++ b/apps/backend/src/generated/prisma/models/Sport.ts @@ -339,10 +339,6 @@ export type SportScalarRelationFilter = { isNot?: Prisma.SportWhereInput } -export type BoolFieldUpdateOperationsInput = { - set?: boolean -} - export type SportCreateNestedOneWithoutCourtsInput = { create?: Prisma.XOR connectOrCreate?: Prisma.SportCreateOrConnectWithoutCourtsInput diff --git a/apps/backend/src/generated/prisma/models/User.ts b/apps/backend/src/generated/prisma/models/User.ts index d1dc3b2..f9fd6e5 100644 --- a/apps/backend/src/generated/prisma/models/User.ts +++ b/apps/backend/src/generated/prisma/models/User.ts @@ -27,7 +27,10 @@ export type AggregateUser = { export type UserMinAggregateOutputType = { id: string | null supabaseUserId: string | null + name: string | null email: string | null + emailVerified: boolean | null + image: string | null fullName: string | null createdAt: Date | null updatedAt: Date | null @@ -36,7 +39,10 @@ export type UserMinAggregateOutputType = { export type UserMaxAggregateOutputType = { id: string | null supabaseUserId: string | null + name: string | null email: string | null + emailVerified: boolean | null + image: string | null fullName: string | null createdAt: Date | null updatedAt: Date | null @@ -45,7 +51,10 @@ export type UserMaxAggregateOutputType = { export type UserCountAggregateOutputType = { id: number supabaseUserId: number + name: number email: number + emailVerified: number + image: number fullName: number createdAt: number updatedAt: number @@ -56,7 +65,10 @@ export type UserCountAggregateOutputType = { export type UserMinAggregateInputType = { id?: true supabaseUserId?: true + name?: true email?: true + emailVerified?: true + image?: true fullName?: true createdAt?: true updatedAt?: true @@ -65,7 +77,10 @@ export type UserMinAggregateInputType = { export type UserMaxAggregateInputType = { id?: true supabaseUserId?: true + name?: true email?: true + emailVerified?: true + image?: true fullName?: true createdAt?: true updatedAt?: true @@ -74,7 +89,10 @@ export type UserMaxAggregateInputType = { export type UserCountAggregateInputType = { id?: true supabaseUserId?: true + name?: true email?: true + emailVerified?: true + image?: true fullName?: true createdAt?: true updatedAt?: true @@ -155,9 +173,12 @@ export type UserGroupByArgs | string - supabaseUserId?: Prisma.UuidFilter<"User"> | string + id?: Prisma.StringFilter<"User"> | string + supabaseUserId?: Prisma.UuidNullableFilter<"User"> | string | null + name?: Prisma.StringNullableFilter<"User"> | string | null email?: Prisma.StringFilter<"User"> | string - fullName?: Prisma.StringFilter<"User"> | string + emailVerified?: Prisma.BoolFilter<"User"> | boolean + image?: Prisma.StringNullableFilter<"User"> | string | null + fullName?: Prisma.StringNullableFilter<"User"> | string | null createdAt?: Prisma.DateTimeFilter<"User"> | Date | string updatedAt?: Prisma.DateTimeFilter<"User"> | Date | string + accounts?: Prisma.AccountListRelationFilter + sessions?: Prisma.SessionListRelationFilter complexes?: Prisma.ComplexUserListRelationFilter } export type UserOrderByWithRelationInput = { id?: Prisma.SortOrder - supabaseUserId?: Prisma.SortOrder + supabaseUserId?: Prisma.SortOrderInput | Prisma.SortOrder + name?: Prisma.SortOrderInput | Prisma.SortOrder email?: Prisma.SortOrder - fullName?: Prisma.SortOrder + emailVerified?: Prisma.SortOrder + image?: Prisma.SortOrderInput | Prisma.SortOrder + fullName?: Prisma.SortOrderInput | Prisma.SortOrder createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder + accounts?: Prisma.AccountOrderByRelationAggregateInput + sessions?: Prisma.SessionOrderByRelationAggregateInput complexes?: Prisma.ComplexUserOrderByRelationAggregateInput } @@ -210,17 +241,25 @@ export type UserWhereUniqueInput = Prisma.AtLeast<{ AND?: Prisma.UserWhereInput | Prisma.UserWhereInput[] OR?: Prisma.UserWhereInput[] NOT?: Prisma.UserWhereInput | Prisma.UserWhereInput[] - fullName?: Prisma.StringFilter<"User"> | string + name?: Prisma.StringNullableFilter<"User"> | string | null + emailVerified?: Prisma.BoolFilter<"User"> | boolean + image?: Prisma.StringNullableFilter<"User"> | string | null + fullName?: Prisma.StringNullableFilter<"User"> | string | null createdAt?: Prisma.DateTimeFilter<"User"> | Date | string updatedAt?: Prisma.DateTimeFilter<"User"> | Date | string + accounts?: Prisma.AccountListRelationFilter + sessions?: Prisma.SessionListRelationFilter complexes?: Prisma.ComplexUserListRelationFilter }, "id" | "supabaseUserId" | "email"> export type UserOrderByWithAggregationInput = { id?: Prisma.SortOrder - supabaseUserId?: Prisma.SortOrder + supabaseUserId?: Prisma.SortOrderInput | Prisma.SortOrder + name?: Prisma.SortOrderInput | Prisma.SortOrder email?: Prisma.SortOrder - fullName?: Prisma.SortOrder + emailVerified?: Prisma.SortOrder + image?: Prisma.SortOrderInput | Prisma.SortOrder + fullName?: Prisma.SortOrderInput | Prisma.SortOrder createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder _count?: Prisma.UserCountOrderByAggregateInput @@ -232,77 +271,109 @@ export type UserScalarWhereWithAggregatesInput = { AND?: Prisma.UserScalarWhereWithAggregatesInput | Prisma.UserScalarWhereWithAggregatesInput[] OR?: Prisma.UserScalarWhereWithAggregatesInput[] NOT?: Prisma.UserScalarWhereWithAggregatesInput | Prisma.UserScalarWhereWithAggregatesInput[] - id?: Prisma.UuidWithAggregatesFilter<"User"> | string - supabaseUserId?: Prisma.UuidWithAggregatesFilter<"User"> | string + id?: Prisma.StringWithAggregatesFilter<"User"> | string + supabaseUserId?: Prisma.UuidNullableWithAggregatesFilter<"User"> | string | null + name?: Prisma.StringNullableWithAggregatesFilter<"User"> | string | null email?: Prisma.StringWithAggregatesFilter<"User"> | string - fullName?: Prisma.StringWithAggregatesFilter<"User"> | string + emailVerified?: Prisma.BoolWithAggregatesFilter<"User"> | boolean + image?: Prisma.StringNullableWithAggregatesFilter<"User"> | string | null + fullName?: Prisma.StringNullableWithAggregatesFilter<"User"> | string | null createdAt?: Prisma.DateTimeWithAggregatesFilter<"User"> | Date | string updatedAt?: Prisma.DateTimeWithAggregatesFilter<"User"> | Date | string } export type UserCreateInput = { - id: string - supabaseUserId: string + id?: string + supabaseUserId?: string | null + name?: string | null email: string - fullName: string + emailVerified?: boolean + image?: string | null + fullName?: string | null createdAt?: Date | string updatedAt?: Date | string + accounts?: Prisma.AccountCreateNestedManyWithoutUserInput + sessions?: Prisma.SessionCreateNestedManyWithoutUserInput complexes?: Prisma.ComplexUserCreateNestedManyWithoutUserInput } export type UserUncheckedCreateInput = { - id: string - supabaseUserId: string + id?: string + supabaseUserId?: string | null + name?: string | null email: string - fullName: string + emailVerified?: boolean + image?: string | null + fullName?: string | null createdAt?: Date | string updatedAt?: Date | string + accounts?: Prisma.AccountUncheckedCreateNestedManyWithoutUserInput + sessions?: Prisma.SessionUncheckedCreateNestedManyWithoutUserInput complexes?: Prisma.ComplexUserUncheckedCreateNestedManyWithoutUserInput } export type UserUpdateInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - supabaseUserId?: Prisma.StringFieldUpdateOperationsInput | string + supabaseUserId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + name?: Prisma.NullableStringFieldUpdateOperationsInput | string | null email?: Prisma.StringFieldUpdateOperationsInput | string - fullName?: Prisma.StringFieldUpdateOperationsInput | string + emailVerified?: Prisma.BoolFieldUpdateOperationsInput | boolean + image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + fullName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + accounts?: Prisma.AccountUpdateManyWithoutUserNestedInput + sessions?: Prisma.SessionUpdateManyWithoutUserNestedInput complexes?: Prisma.ComplexUserUpdateManyWithoutUserNestedInput } export type UserUncheckedUpdateInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - supabaseUserId?: Prisma.StringFieldUpdateOperationsInput | string + supabaseUserId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + name?: Prisma.NullableStringFieldUpdateOperationsInput | string | null email?: Prisma.StringFieldUpdateOperationsInput | string - fullName?: Prisma.StringFieldUpdateOperationsInput | string + emailVerified?: Prisma.BoolFieldUpdateOperationsInput | boolean + image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + fullName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + accounts?: Prisma.AccountUncheckedUpdateManyWithoutUserNestedInput + sessions?: Prisma.SessionUncheckedUpdateManyWithoutUserNestedInput complexes?: Prisma.ComplexUserUncheckedUpdateManyWithoutUserNestedInput } export type UserCreateManyInput = { - id: string - supabaseUserId: string + id?: string + supabaseUserId?: string | null + name?: string | null email: string - fullName: string + emailVerified?: boolean + image?: string | null + fullName?: string | null createdAt?: Date | string updatedAt?: Date | string } export type UserUpdateManyMutationInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - supabaseUserId?: Prisma.StringFieldUpdateOperationsInput | string + supabaseUserId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + name?: Prisma.NullableStringFieldUpdateOperationsInput | string | null email?: Prisma.StringFieldUpdateOperationsInput | string - fullName?: Prisma.StringFieldUpdateOperationsInput | string + emailVerified?: Prisma.BoolFieldUpdateOperationsInput | boolean + image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + fullName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string } export type UserUncheckedUpdateManyInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - supabaseUserId?: Prisma.StringFieldUpdateOperationsInput | string + supabaseUserId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + name?: Prisma.NullableStringFieldUpdateOperationsInput | string | null email?: Prisma.StringFieldUpdateOperationsInput | string - fullName?: Prisma.StringFieldUpdateOperationsInput | string + emailVerified?: Prisma.BoolFieldUpdateOperationsInput | boolean + image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + fullName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string } @@ -315,7 +386,10 @@ export type UserScalarRelationFilter = { export type UserCountOrderByAggregateInput = { id?: Prisma.SortOrder supabaseUserId?: Prisma.SortOrder + name?: Prisma.SortOrder email?: Prisma.SortOrder + emailVerified?: Prisma.SortOrder + image?: Prisma.SortOrder fullName?: Prisma.SortOrder createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder @@ -324,7 +398,10 @@ export type UserCountOrderByAggregateInput = { export type UserMaxOrderByAggregateInput = { id?: Prisma.SortOrder supabaseUserId?: Prisma.SortOrder + name?: Prisma.SortOrder email?: Prisma.SortOrder + emailVerified?: Prisma.SortOrder + image?: Prisma.SortOrder fullName?: Prisma.SortOrder createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder @@ -333,7 +410,10 @@ export type UserMaxOrderByAggregateInput = { export type UserMinOrderByAggregateInput = { id?: Prisma.SortOrder supabaseUserId?: Prisma.SortOrder + name?: Prisma.SortOrder email?: Prisma.SortOrder + emailVerified?: Prisma.SortOrder + image?: Prisma.SortOrder fullName?: Prisma.SortOrder createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder @@ -353,22 +433,60 @@ export type UserUpdateOneRequiredWithoutComplexesNestedInput = { update?: Prisma.XOR, Prisma.UserUncheckedUpdateWithoutComplexesInput> } +export type UserCreateNestedOneWithoutSessionsInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserCreateOrConnectWithoutSessionsInput + connect?: Prisma.UserWhereUniqueInput +} + +export type UserUpdateOneRequiredWithoutSessionsNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserCreateOrConnectWithoutSessionsInput + upsert?: Prisma.UserUpsertWithoutSessionsInput + connect?: Prisma.UserWhereUniqueInput + update?: Prisma.XOR, Prisma.UserUncheckedUpdateWithoutSessionsInput> +} + +export type UserCreateNestedOneWithoutAccountsInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserCreateOrConnectWithoutAccountsInput + connect?: Prisma.UserWhereUniqueInput +} + +export type UserUpdateOneRequiredWithoutAccountsNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.UserCreateOrConnectWithoutAccountsInput + upsert?: Prisma.UserUpsertWithoutAccountsInput + connect?: Prisma.UserWhereUniqueInput + update?: Prisma.XOR, Prisma.UserUncheckedUpdateWithoutAccountsInput> +} + export type UserCreateWithoutComplexesInput = { - id: string - supabaseUserId: string + id?: string + supabaseUserId?: string | null + name?: string | null email: string - fullName: string + emailVerified?: boolean + image?: string | null + fullName?: string | null createdAt?: Date | string updatedAt?: Date | string + accounts?: Prisma.AccountCreateNestedManyWithoutUserInput + sessions?: Prisma.SessionCreateNestedManyWithoutUserInput } export type UserUncheckedCreateWithoutComplexesInput = { - id: string - supabaseUserId: string + id?: string + supabaseUserId?: string | null + name?: string | null email: string - fullName: string + emailVerified?: boolean + image?: string | null + fullName?: string | null createdAt?: Date | string updatedAt?: Date | string + accounts?: Prisma.AccountUncheckedCreateNestedManyWithoutUserInput + sessions?: Prisma.SessionUncheckedCreateNestedManyWithoutUserInput } export type UserCreateOrConnectWithoutComplexesInput = { @@ -389,20 +507,174 @@ export type UserUpdateToOneWithWhereWithoutComplexesInput = { export type UserUpdateWithoutComplexesInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - supabaseUserId?: Prisma.StringFieldUpdateOperationsInput | string + supabaseUserId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + name?: Prisma.NullableStringFieldUpdateOperationsInput | string | null email?: Prisma.StringFieldUpdateOperationsInput | string - fullName?: Prisma.StringFieldUpdateOperationsInput | string + emailVerified?: Prisma.BoolFieldUpdateOperationsInput | boolean + image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + fullName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + accounts?: Prisma.AccountUpdateManyWithoutUserNestedInput + sessions?: Prisma.SessionUpdateManyWithoutUserNestedInput } export type UserUncheckedUpdateWithoutComplexesInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - supabaseUserId?: Prisma.StringFieldUpdateOperationsInput | string + supabaseUserId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + name?: Prisma.NullableStringFieldUpdateOperationsInput | string | null email?: Prisma.StringFieldUpdateOperationsInput | string - fullName?: Prisma.StringFieldUpdateOperationsInput | string + emailVerified?: Prisma.BoolFieldUpdateOperationsInput | boolean + image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + fullName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + accounts?: Prisma.AccountUncheckedUpdateManyWithoutUserNestedInput + sessions?: Prisma.SessionUncheckedUpdateManyWithoutUserNestedInput +} + +export type UserCreateWithoutSessionsInput = { + id?: string + supabaseUserId?: string | null + name?: string | null + email: string + emailVerified?: boolean + image?: string | null + fullName?: string | null + createdAt?: Date | string + updatedAt?: Date | string + accounts?: Prisma.AccountCreateNestedManyWithoutUserInput + complexes?: Prisma.ComplexUserCreateNestedManyWithoutUserInput +} + +export type UserUncheckedCreateWithoutSessionsInput = { + id?: string + supabaseUserId?: string | null + name?: string | null + email: string + emailVerified?: boolean + image?: string | null + fullName?: string | null + createdAt?: Date | string + updatedAt?: Date | string + accounts?: Prisma.AccountUncheckedCreateNestedManyWithoutUserInput + complexes?: Prisma.ComplexUserUncheckedCreateNestedManyWithoutUserInput +} + +export type UserCreateOrConnectWithoutSessionsInput = { + where: Prisma.UserWhereUniqueInput + create: Prisma.XOR +} + +export type UserUpsertWithoutSessionsInput = { + update: Prisma.XOR + create: Prisma.XOR + where?: Prisma.UserWhereInput +} + +export type UserUpdateToOneWithWhereWithoutSessionsInput = { + where?: Prisma.UserWhereInput + data: Prisma.XOR +} + +export type UserUpdateWithoutSessionsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + supabaseUserId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + name?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + email?: Prisma.StringFieldUpdateOperationsInput | string + emailVerified?: Prisma.BoolFieldUpdateOperationsInput | boolean + image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + fullName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + accounts?: Prisma.AccountUpdateManyWithoutUserNestedInput + complexes?: Prisma.ComplexUserUpdateManyWithoutUserNestedInput +} + +export type UserUncheckedUpdateWithoutSessionsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + supabaseUserId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + name?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + email?: Prisma.StringFieldUpdateOperationsInput | string + emailVerified?: Prisma.BoolFieldUpdateOperationsInput | boolean + image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + fullName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + accounts?: Prisma.AccountUncheckedUpdateManyWithoutUserNestedInput + complexes?: Prisma.ComplexUserUncheckedUpdateManyWithoutUserNestedInput +} + +export type UserCreateWithoutAccountsInput = { + id?: string + supabaseUserId?: string | null + name?: string | null + email: string + emailVerified?: boolean + image?: string | null + fullName?: string | null + createdAt?: Date | string + updatedAt?: Date | string + sessions?: Prisma.SessionCreateNestedManyWithoutUserInput + complexes?: Prisma.ComplexUserCreateNestedManyWithoutUserInput +} + +export type UserUncheckedCreateWithoutAccountsInput = { + id?: string + supabaseUserId?: string | null + name?: string | null + email: string + emailVerified?: boolean + image?: string | null + fullName?: string | null + createdAt?: Date | string + updatedAt?: Date | string + sessions?: Prisma.SessionUncheckedCreateNestedManyWithoutUserInput + complexes?: Prisma.ComplexUserUncheckedCreateNestedManyWithoutUserInput +} + +export type UserCreateOrConnectWithoutAccountsInput = { + where: Prisma.UserWhereUniqueInput + create: Prisma.XOR +} + +export type UserUpsertWithoutAccountsInput = { + update: Prisma.XOR + create: Prisma.XOR + where?: Prisma.UserWhereInput +} + +export type UserUpdateToOneWithWhereWithoutAccountsInput = { + where?: Prisma.UserWhereInput + data: Prisma.XOR +} + +export type UserUpdateWithoutAccountsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + supabaseUserId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + name?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + email?: Prisma.StringFieldUpdateOperationsInput | string + emailVerified?: Prisma.BoolFieldUpdateOperationsInput | boolean + image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + fullName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + sessions?: Prisma.SessionUpdateManyWithoutUserNestedInput + complexes?: Prisma.ComplexUserUpdateManyWithoutUserNestedInput +} + +export type UserUncheckedUpdateWithoutAccountsInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + supabaseUserId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + name?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + email?: Prisma.StringFieldUpdateOperationsInput | string + emailVerified?: Prisma.BoolFieldUpdateOperationsInput | boolean + image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + fullName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + sessions?: Prisma.SessionUncheckedUpdateManyWithoutUserNestedInput + complexes?: Prisma.ComplexUserUncheckedUpdateManyWithoutUserNestedInput } @@ -411,10 +683,14 @@ export type UserUncheckedUpdateWithoutComplexesInput = { */ export type UserCountOutputType = { + accounts: number + sessions: number complexes: number } export type UserCountOutputTypeSelect = { + accounts?: boolean | UserCountOutputTypeCountAccountsArgs + sessions?: boolean | UserCountOutputTypeCountSessionsArgs complexes?: boolean | UserCountOutputTypeCountComplexesArgs } @@ -428,6 +704,20 @@ export type UserCountOutputTypeDefaultArgs | null } +/** + * UserCountOutputType without action + */ +export type UserCountOutputTypeCountAccountsArgs = { + where?: Prisma.AccountWhereInput +} + +/** + * UserCountOutputType without action + */ +export type UserCountOutputTypeCountSessionsArgs = { + where?: Prisma.SessionWhereInput +} + /** * UserCountOutputType without action */ @@ -439,10 +729,15 @@ export type UserCountOutputTypeCountComplexesArgs = runtime.Types.Extensions.GetSelect<{ id?: boolean supabaseUserId?: boolean + name?: boolean email?: boolean + emailVerified?: boolean + image?: boolean fullName?: boolean createdAt?: boolean updatedAt?: boolean + accounts?: boolean | Prisma.User$accountsArgs + sessions?: boolean | Prisma.User$sessionsArgs complexes?: boolean | Prisma.User$complexesArgs _count?: boolean | Prisma.UserCountOutputTypeDefaultArgs }, ExtArgs["result"]["user"]> @@ -450,7 +745,10 @@ export type UserSelect = runtime.Types.Extensions.GetSelect<{ id?: boolean supabaseUserId?: boolean + name?: boolean email?: boolean + emailVerified?: boolean + image?: boolean fullName?: boolean createdAt?: boolean updatedAt?: boolean @@ -459,7 +757,10 @@ export type UserSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ id?: boolean supabaseUserId?: boolean + name?: boolean email?: boolean + emailVerified?: boolean + image?: boolean fullName?: boolean createdAt?: boolean updatedAt?: boolean @@ -468,14 +769,19 @@ export type UserSelectUpdateManyAndReturn = runtime.Types.Extensions.GetOmit<"id" | "supabaseUserId" | "email" | "fullName" | "createdAt" | "updatedAt", ExtArgs["result"]["user"]> +export type UserOmit = runtime.Types.Extensions.GetOmit<"id" | "supabaseUserId" | "name" | "email" | "emailVerified" | "image" | "fullName" | "createdAt" | "updatedAt", ExtArgs["result"]["user"]> export type UserInclude = { + accounts?: boolean | Prisma.User$accountsArgs + sessions?: boolean | Prisma.User$sessionsArgs complexes?: boolean | Prisma.User$complexesArgs _count?: boolean | Prisma.UserCountOutputTypeDefaultArgs } @@ -485,13 +791,18 @@ export type UserIncludeUpdateManyAndReturn = { name: "User" objects: { + accounts: Prisma.$AccountPayload[] + sessions: Prisma.$SessionPayload[] complexes: Prisma.$ComplexUserPayload[] } scalars: runtime.Types.Extensions.GetPayloadResult<{ id: string - supabaseUserId: string + supabaseUserId: string | null + name: string | null email: string - fullName: string + emailVerified: boolean + image: string | null + fullName: string | null createdAt: Date updatedAt: Date }, ExtArgs["result"]["user"]> @@ -888,6 +1199,8 @@ readonly fields: UserFieldRefs; */ export interface Prisma__UserClient extends Prisma.PrismaPromise { readonly [Symbol.toStringTag]: "PrismaPromise" + accounts = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> + sessions = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> complexes = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> /** * Attaches callbacks for the resolution and/or rejection of the Promise. @@ -920,7 +1233,10 @@ export interface Prisma__UserClient readonly supabaseUserId: Prisma.FieldRef<"User", 'String'> + readonly name: Prisma.FieldRef<"User", 'String'> readonly email: Prisma.FieldRef<"User", 'String'> + readonly emailVerified: Prisma.FieldRef<"User", 'Boolean'> + readonly image: Prisma.FieldRef<"User", 'String'> readonly fullName: Prisma.FieldRef<"User", 'String'> readonly createdAt: Prisma.FieldRef<"User", 'DateTime'> readonly updatedAt: Prisma.FieldRef<"User", 'DateTime'> @@ -1316,6 +1632,54 @@ export type UserDeleteManyArgs = { + /** + * Select specific fields to fetch from the Account + */ + select?: Prisma.AccountSelect | null + /** + * Omit specific fields from the Account + */ + omit?: Prisma.AccountOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.AccountInclude | null + where?: Prisma.AccountWhereInput + orderBy?: Prisma.AccountOrderByWithRelationInput | Prisma.AccountOrderByWithRelationInput[] + cursor?: Prisma.AccountWhereUniqueInput + take?: number + skip?: number + distinct?: Prisma.AccountScalarFieldEnum | Prisma.AccountScalarFieldEnum[] +} + +/** + * User.sessions + */ +export type User$sessionsArgs = { + /** + * Select specific fields to fetch from the Session + */ + select?: Prisma.SessionSelect | null + /** + * Omit specific fields from the Session + */ + omit?: Prisma.SessionOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.SessionInclude | null + where?: Prisma.SessionWhereInput + orderBy?: Prisma.SessionOrderByWithRelationInput | Prisma.SessionOrderByWithRelationInput[] + cursor?: Prisma.SessionWhereUniqueInput + take?: number + skip?: number + distinct?: Prisma.SessionScalarFieldEnum | Prisma.SessionScalarFieldEnum[] +} + /** * User.complexes */ diff --git a/apps/backend/src/index.ts b/apps/backend/src/index.ts index f54a07b..3d96fbf 100644 --- a/apps/backend/src/index.ts +++ b/apps/backend/src/index.ts @@ -1,7 +1,9 @@ import { createApp } from '@/app'; +import { registerAuthRoutes } from '@/auth-routes'; import { registerRoutes } from '@/register-routes'; const app = createApp(); +registerAuthRoutes(app); registerRoutes(app); export type AppType = typeof app; diff --git a/apps/backend/src/lib/auth.ts b/apps/backend/src/lib/auth.ts new file mode 100644 index 0000000..47deee9 --- /dev/null +++ b/apps/backend/src/lib/auth.ts @@ -0,0 +1,56 @@ +import { sendMail } from '@/lib/mailer'; +import { db } from '@/lib/prisma'; +import bcrypt from 'bcrypt'; +import { betterAuth } from 'better-auth'; +import { prismaAdapter } from 'better-auth/adapters/prisma'; +import { emailOTP } from 'better-auth/plugins'; + +export const auth = betterAuth({ + database: prismaAdapter(db, { + provider: 'postgresql', + }), + emailAndPassword: { + enabled: true, + password: { + hash: async (password) => { + return bcrypt.hash(password, 10); + }, + verify: async (password, hash) => { + return bcrypt.compare(password, hash); + }, + }, + }, + plugins: [ + emailOTP({ + async sendVerificationOTP({ email, otp, type }) { + let subject = 'Tu código de verificación'; + let text = `Tu código OTP es ${otp}.`; + let html = `

Tu código OTP es ${otp}.

`; + + if (type === 'sign-in') { + subject = 'Código de inicio de sesión'; + text = `Tu código para iniciar sesión es ${otp}.`; + html = `

Tu código para iniciar sesión es ${otp}.

`; + } else if (type === 'forget-password') { + subject = 'Código para restablecer contraseña'; + text = `Tu código para restablecer tu contraseña es ${otp}.`; + html = `

Tu código para restablecer tu contraseña es ${otp}.

`; + } else if (type === 'email-verification') { + subject = 'Verifica tu correo electrónico'; + text = `Tu código de verificación es ${otp}.`; + html = `

Tu código de verificación es ${otp}.

`; + } + + await sendMail({ + to: email, + subject, + text, + html, + }); + }, + }), + ], +}); + +export type Session = typeof auth.$Infer.Session.session; +export type User = typeof auth.$Infer.Session.user; diff --git a/apps/backend/src/lib/supabase-admin.ts b/apps/backend/src/lib/supabase-admin.ts deleted file mode 100644 index f46eb4a..0000000 --- a/apps/backend/src/lib/supabase-admin.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { createClient } from '@supabase/supabase-js'; - -let cachedClient: ReturnType | null = null; - -export function getSupabaseAdminClient() { - if (cachedClient) return cachedClient; - - const supabaseUrl = Bun.env.SUPABASE_URL ?? Bun.env.VITE_SUPABASE_URL; - const supabaseServiceRoleKey = Bun.env.SUPABASE_SERVICE_ROLE_KEY; - - if (!supabaseUrl || !supabaseServiceRoleKey) { - throw new Error( - 'Missing Supabase admin env vars. Set SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY in backend environment.' - ); - } - - cachedClient = createClient(supabaseUrl, supabaseServiceRoleKey, { - auth: { - autoRefreshToken: false, - persistSession: false, - detectSessionInUrl: false, - }, - }); - - return cachedClient; -} diff --git a/apps/backend/src/lib/supabase.ts b/apps/backend/src/lib/supabase.ts deleted file mode 100644 index 7c8e13e..0000000 --- a/apps/backend/src/lib/supabase.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { createClient } from '@supabase/supabase-js'; - -const supabaseUrl = Bun.env.SUPABASE_URL ?? Bun.env.VITE_SUPABASE_URL; -const supabaseAnonKey = Bun.env.SUPABASE_ANON_KEY ?? Bun.env.VITE_SUPABASE_ANON_KEY; - -if (!supabaseUrl || !supabaseAnonKey) { - throw new Error( - 'Missing Supabase env vars. Set SUPABASE_URL/SUPABASE_ANON_KEY (or VITE_SUPABASE_URL/VITE_SUPABASE_ANON_KEY) in backend environment.' - ); -} - -export const supabase = createClient(supabaseUrl, supabaseAnonKey, { - auth: { - autoRefreshToken: false, - persistSession: false, - detectSessionInUrl: false, - }, -}); diff --git a/apps/backend/src/middlewares/require-auth.middleware.ts b/apps/backend/src/middlewares/require-auth.middleware.ts index 310d377..5fd79d5 100644 --- a/apps/backend/src/middlewares/require-auth.middleware.ts +++ b/apps/backend/src/middlewares/require-auth.middleware.ts @@ -1,70 +1,25 @@ +import { auth } from '@/lib/auth'; import { db } from '@/lib/prisma'; -import { supabase } from '@/lib/supabase'; import type { AppEnv } from '@/types/hono'; import type { MiddlewareHandler } from 'hono'; -import { createRemoteJWKSet, jwtVerify } from 'jose'; - -const JWKS_CACHE_TTL_MS = 5 * 60 * 1000; - -let jwks: ReturnType | null = null; -let jwksCacheTime = 0; - -async function getJWKS() { - const now = Date.now(); - if (!jwks || now - jwksCacheTime > JWKS_CACHE_TTL_MS) { - const supabaseUrl = process.env.SUPABASE_URL ?? process.env.VITE_SUPABASE_URL; - if (!supabaseUrl) { - throw new Error('SUPABASE_URL not configured'); - } - const jwksUrl = new URL('/auth/v1/.well-known/jwks.json', supabaseUrl).toString(); - jwks = createRemoteJWKSet(new URL(jwksUrl)); - jwksCacheTime = now; - } - return jwks; -} - -function getBearerToken(value: string | undefined): string | null { - if (!value) return null; - const [scheme, token] = value.split(' '); - if (scheme?.toLowerCase() !== 'bearer' || !token) return null; - return token; -} export const requireAuth: MiddlewareHandler = async (c, next) => { - const token = getBearerToken(c.req.header('authorization')); + const bearerToken = c.req.header('authorization')?.replace('Bearer ', ''); - if (!token) { + if (!bearerToken) { return c.json({ message: 'Missing bearer token.' }, 403); } - let supabaseUserId: string; - let email: string | undefined; + const { user, session } = await auth.api.getSession({ + headers: { authorization: `Bearer ${bearerToken}` }, + }); - try { - const jwksSet = await getJWKS(); - const { payload } = await jwtVerify(token, jwksSet, { - algorithms: ['ES256'], - }); - - supabaseUserId = payload.sub as string; - email = payload.email as string | undefined; - } catch { - const { data, error } = await supabase.auth.getUser(token); - - if (error || !data.user) { - return c.json({ message: 'Invalid or expired token.' }, 403); - } - - supabaseUserId = data.user.id; - email = data.user.email?.toLowerCase(); - } - - if (!email) { - return c.json({ message: 'Auth user does not contain email.' }, 403); + if (!user || !session) { + return c.json({ message: 'Invalid or expired token.' }, 403); } const appUser = await db.user.findUnique({ - where: { supabaseUserId }, + where: { email: user.email }, select: { id: true }, }); @@ -73,6 +28,7 @@ export const requireAuth: MiddlewareHandler = async (c, next) => { } c.set('appUserId', appUser.id); + c.set('session', session); await next(); }; diff --git a/apps/backend/src/modules/onboarding/services/onboarding.service.ts b/apps/backend/src/modules/onboarding/services/onboarding.service.ts index 773c3ed..fb0cc74 100644 --- a/apps/backend/src/modules/onboarding/services/onboarding.service.ts +++ b/apps/backend/src/modules/onboarding/services/onboarding.service.ts @@ -1,14 +1,13 @@ import { createHash, randomInt } from 'node:crypto'; +import { auth } from '@/lib/auth'; import { sendMail } from '@/lib/mailer'; import { db } from '@/lib/prisma'; -import { getSupabaseAdminClient } from '@/lib/supabase-admin'; import type { OnboardingCompleteInput, OnboardingResendOtpInput, OnboardingStartInput, OnboardingVerifyOtpInput, } from '@repo/api-contract'; -import type { User as SupabaseAuthUser } from '@supabase/supabase-js'; import { v7 as uuidv7 } from 'uuid'; const OTP_LENGTH = 6; @@ -125,77 +124,6 @@ async function sendOtpEmail(email: string, otpCode: string) { }); } -async function findSupabaseUserByEmail(email: string): Promise { - let page = 1; - const perPage = 100; - - while (page <= 10) { - const { data, error } = await getSupabaseAdminClient().auth.admin.listUsers({ - page, - perPage, - }); - - if (error) { - throw new Error(`No se pudo consultar usuarios en Supabase: ${error.message}`); - } - - const found = data.users.find((user) => user.email?.toLowerCase() === email.toLowerCase()); - - if (found) { - return found; - } - - if (data.users.length < perPage) { - return null; - } - - page += 1; - } - - return null; -} - -async function ensureSupabaseUser(params: { - email: string; - fullName: string; - password: string; -}): Promise { - const existingUser = await findSupabaseUserByEmail(params.email); - - if (existingUser) { - const { error } = await getSupabaseAdminClient().auth.admin.updateUserById(existingUser.id, { - password: params.password, - email_confirm: true, - user_metadata: { - full_name: params.fullName, - name: params.fullName, - }, - }); - - if (error) { - throw new Error(`No se pudo actualizar usuario existente en Supabase: ${error.message}`); - } - - return existingUser.id; - } - - const { data, error } = await getSupabaseAdminClient().auth.admin.createUser({ - email: params.email, - password: params.password, - email_confirm: true, - user_metadata: { - full_name: params.fullName, - name: params.fullName, - }, - }); - - if (error || !data.user) { - throw new Error(`No se pudo crear usuario en Supabase: ${error?.message ?? 'unknown error'}`); - } - - return data.user.id; -} - export async function startOnboarding(input: OnboardingStartInput): Promise { const email = normalizeEmail(input.email); const otpCode = createOtpCode(); @@ -428,26 +356,42 @@ export async function completeOnboarding(input: OnboardingCompleteInput) { throw new OnboardingError('El plan seleccionado no existe.', 400); } - const supabaseUserId = await ensureSupabaseUser({ - email: onboardingRequest.email, - fullName: onboardingRequest.fullName, - password: input.password, - }); - const complexSlug = await buildUniqueComplexSlug(input.complexName); const result = await db.$transaction(async (tx) => { + const existingUser = await tx.user.findUnique({ + where: { email: onboardingRequest.email }, + }); + + let userId: string; + + if (existingUser) { + userId = existingUser.id; + } else { + const newUser = await auth.api.signUpEmail({ + body: { + email: onboardingRequest.email, + password: input.password, + name: onboardingRequest.fullName, + }, + }); + + if (!newUser.user) { + throw new OnboardingError('No se pudo crear el usuario en Better Auth.', 400); + } + + userId = newUser.user.id; + } + const user = await tx.user.upsert({ where: { email: onboardingRequest.email }, update: { fullName: onboardingRequest.fullName, - supabaseUserId, }, create: { - id: uuidv7(), + id: userId, fullName: onboardingRequest.fullName, email: onboardingRequest.email, - supabaseUserId, }, }); @@ -467,6 +411,7 @@ export async function completeOnboarding(input: OnboardingCompleteInput) { await tx.complexUser.create({ data: { + id: uuidv7(), complexId: complex.id, userId: user.id, role: 'ADMIN', @@ -487,8 +432,5 @@ export async function completeOnboarding(input: OnboardingCompleteInput) { }; }); - return { - ...result, - supabaseUserId, - }; + return result; } diff --git a/apps/backend/src/modules/password-reset/services/password-reset.service.ts b/apps/backend/src/modules/password-reset/services/password-reset.service.ts index be62314..0bebb3a 100644 --- a/apps/backend/src/modules/password-reset/services/password-reset.service.ts +++ b/apps/backend/src/modules/password-reset/services/password-reset.service.ts @@ -1,7 +1,7 @@ import { createHash, randomInt } from 'node:crypto'; +import { auth } from '@/lib/auth'; import { sendMail } from '@/lib/mailer'; import { db } from '@/lib/prisma'; -import { getSupabaseAdminClient } from '@/lib/supabase-admin'; import type { PasswordResetResendInput, PasswordResetStartInput, @@ -189,42 +189,15 @@ async function sendPasswordChangedEmail( }); } -async function findSupabaseUserByEmail(email: string): Promise<{ id: string } | null> { - let page = 1; - const perPage = 100; - - while (page <= 10) { - const { data, error } = await getSupabaseAdminClient().auth.admin.listUsers({ - page, - perPage, - }); - - if (error) { - throw new Error(`No se pudo consultar usuarios en Supabase: ${error.message}`); - } - - const found = data.users.find((user) => user.email?.toLowerCase() === email.toLowerCase()); - - if (found) { - return { id: found.id }; - } - - if (data.users.length < perPage) { - return null; - } - - page += 1; - } - - return null; -} - export async function startPasswordReset( input: PasswordResetStartInput ): Promise { const email = normalizeEmail(input.email); - const existingUser = await findSupabaseUserByEmail(email); + const existingUser = await db.user.findUnique({ + where: { email }, + }); + if (!existingUser) { return { message: 'Si el email existe, recibirás un código de verificación.', @@ -369,12 +342,16 @@ export async function verifyOtpAndResetPassword( throw new PasswordResetError('Código incorrecto.', 400); } - const existingUser = await findSupabaseUserByEmail(request.email); + const existingUser = await db.user.findUnique({ + where: { email: request.email }, + }); + if (!existingUser) { throw new PasswordResetError('Usuario no encontrado.', 404); } - await getSupabaseAdminClient().auth.admin.updateUserById(existingUser.id, { + await auth.api.changePassword({ + userId: existingUser.id, password: newPassword, }); diff --git a/apps/backend/src/modules/user/services/user.service.ts b/apps/backend/src/modules/user/services/user.service.ts index df5923d..28f0b9f 100644 --- a/apps/backend/src/modules/user/services/user.service.ts +++ b/apps/backend/src/modules/user/services/user.service.ts @@ -1,23 +1,28 @@ -import type { AuthUser } from '@/types/auth-user'; +import { db } from '@/lib/prisma'; import type { UserProfile } from '@repo/api-contract'; -export function getUserProfile(user: AuthUser): UserProfile { - const fullName = - (typeof user.user_metadata?.full_name === 'string' && user.user_metadata.full_name) || - (typeof user.user_metadata?.name === 'string' && user.user_metadata.name) || - (user.email ?? 'Usuario'); +export async function getUserProfile(appUserId: string): Promise { + const user = await db.user.findUnique({ + where: { id: appUserId }, + select: { + id: true, + email: true, + fullName: true, + image: true, + createdAt: true, + }, + }); - const role = (typeof user.app_metadata?.role === 'string' && user.app_metadata.role) || 'member'; - - const avatarUrl = - (typeof user.user_metadata?.avatar_url === 'string' && user.user_metadata.avatar_url) || null; + if (!user) { + return null; + } return { id: user.id, - fullName, - email: user.email ?? null, - role, - avatarUrl, - createdAt: user.created_at, + fullName: user.fullName, + email: user.email, + role: 'member', + avatarUrl: user.image, + createdAt: user.createdAt, }; } diff --git a/apps/backend/src/types/auth-user.ts b/apps/backend/src/types/auth-user.ts index edd5e59..12a6d7b 100644 --- a/apps/backend/src/types/auth-user.ts +++ b/apps/backend/src/types/auth-user.ts @@ -1,3 +1,4 @@ -import type { User } from '@supabase/supabase-js'; +import type { Session, User } from 'better-auth/types'; export type AuthUser = User; +export type AuthSession = Session; diff --git a/apps/frontend/package.json b/apps/frontend/package.json index ddc5890..f450c99 100644 --- a/apps/frontend/package.json +++ b/apps/frontend/package.json @@ -24,6 +24,7 @@ "@tanstack/react-router": "^1.168.10", "@tanstack/router-devtools": "^1.166.11", "axios": "^1.14.0", + "better-auth": "^1.6.2", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "date-fns": "^4.1.0", diff --git a/apps/frontend/src/features/onboard/components/onboarding-complete-step.tsx b/apps/frontend/src/features/onboard/components/onboarding-complete-step.tsx index f9bd31a..3d0432d 100644 --- a/apps/frontend/src/features/onboard/components/onboarding-complete-step.tsx +++ b/apps/frontend/src/features/onboard/components/onboarding-complete-step.tsx @@ -62,13 +62,48 @@ export function OnboardingCompleteStep({ +
+ + Ciudad + + + + + Provincia + + + + + Pais + + +
+ Plan ; +}; + +function loadOnboardingState(): OnboardingStorageState | null { + if (typeof window === 'undefined') return null; + try { + const stored = localStorage.getItem(ONBOARDING_STORAGE_KEY); + return stored ? JSON.parse(stored) : null; + } catch { + return null; + } +} + +function saveOnboardingState(state: OnboardingStorageState) { + if (typeof window === 'undefined') return; + localStorage.setItem(ONBOARDING_STORAGE_KEY, JSON.stringify(state)); +} + +function clearOnboardingState() { + if (typeof window === 'undefined') return; + localStorage.removeItem(ONBOARDING_STORAGE_KEY); +} + export function OnboardPage() { const navigate = useNavigate(); const { signInWithPassword } = useAuth(); @@ -39,6 +78,71 @@ export function OnboardPage() { const [errorMessage, setErrorMessage] = useState(null); const [infoMessage, setInfoMessage] = useState(null); + // Load persisted state on mount + useEffect(() => { + const saved = loadOnboardingState(); + if (saved && saved.step !== 'start' && saved.requestId) { + setStep(saved.step); + setRequestId(saved.requestId); + setOnboardingEmail(saved.onboardingEmail); + setVerifiedEmail(saved.verifiedEmail); + + if (saved.startFormValues) { + startForm.reset(saved.startFormValues); + } + if (saved.completeFormValues) { + completeForm.reset(saved.completeFormValues); + } + } + }, []); + + // Save state to localStorage when it changes + useEffect(() => { + const state: OnboardingStorageState = { + step, + requestId, + onboardingEmail, + verifiedEmail, + startFormValues: startForm.getValues(), + completeFormValues: step === 'complete' ? completeForm.getValues() : undefined, + }; + + if (step !== 'start' && requestId) { + saveOnboardingState(state); + } + }, [step, requestId, onboardingEmail, verifiedEmail]); + + // Also save form values when they change + useEffect(() => { + if (step !== 'start' && requestId) { + const state = loadOnboardingState(); + if (state) { + saveOnboardingState({ + ...state, + startFormValues: startForm.getValues(), + completeFormValues: step === 'complete' ? completeForm.getValues() : undefined, + }); + } + } + }, [step, requestId]); + + useEffect(() => { + const interval = setInterval(() => { + if (step !== 'start' && requestId) { + const state = loadOnboardingState(); + if (state) { + saveOnboardingState({ + ...state, + startFormValues: startForm.getValues(), + completeFormValues: step === 'complete' ? completeForm.getValues() : undefined, + }); + } + } + }, 2000); + + return () => clearInterval(interval); + }, [step, requestId]); + const startForm = useForm({ resolver: zodResolver(onboardingStartSchema), mode: 'onChange', @@ -55,6 +159,9 @@ export function OnboardPage() { password: '', complexName: '', physicalAddress: '', + city: '', + state: '', + country: '', planCode: '', }, }); @@ -180,13 +287,27 @@ export function OnboardPage() { password: values.password, complexName: values.complexName, physicalAddress: values.physicalAddress, + city: values.city, + state: values.state, + country: values.country, planCode: values.planCode, }); setCurrentComplexSlug(result.complexSlug); + clearOnboardingState(); const emailForSignIn = verifiedEmail ?? onboardingEmail; if (emailForSignIn) { - await signInWithPassword({ email: emailForSignIn, password: values.password }); + try { + await signInWithPassword({ email: emailForSignIn, password: values.password }); + } catch { + await navigate({ + to: '/login', + search: { + redirect: `/complex/${result.complexSlug}/edit`, + }, + }); + return; + } } await navigate({ to: '/complex/$slug/edit', params: { slug: result.complexSlug } }); diff --git a/apps/frontend/src/lib/auth.tsx b/apps/frontend/src/lib/auth.tsx index e4a20c5..4cb66f8 100644 --- a/apps/frontend/src/lib/auth.tsx +++ b/apps/frontend/src/lib/auth.tsx @@ -1,14 +1,14 @@ import { setApiAccessToken } from '@/lib/api-client'; -import { supabase } from '@/lib/supabase'; -import type { Session, User } from '@supabase/supabase-js'; -import { - type PropsWithChildren, - createContext, - useContext, - useEffect, - useMemo, - useState, -} from 'react'; +import { createAuthClient } from 'better-auth/react'; +import { emailOTPClient } from 'better-auth/client/plugins'; +import type { User, Session } from 'better-auth/types'; +import type { PropsWithChildren } from 'react'; +import { createContext, useContext, useEffect, useMemo, useState } from 'react'; + +const authClient = createAuthClient({ + baseURL: import.meta.env.VITE_API_BASE_URL || 'http://localhost:3000', + plugins: [emailOTPClient()], +}); type SignInParams = { email: string; @@ -18,7 +18,7 @@ type SignInParams = { type SignUpParams = { email: string; password: string; - fullName: string; + name: string; }; type UpdateProfileParams = { @@ -29,16 +29,19 @@ type UpdatePasswordParams = { password: string; }; +type AuthUser = User | null; +type AuthSession = Session | null; + export type AuthContextValue = { - user: User | null; - session: Session | null; + user: AuthUser; + session: AuthSession; loading: boolean; isAuthenticated: boolean; displayName: string; initials: string; avatarUrl: string | null; signInWithPassword: (params: SignInParams) => Promise; - signUp: (params: SignUpParams) => Promise<{ requiresEmailConfirmation: boolean }>; + signUp: (params: SignUpParams) => Promise; updateProfile: (params: UpdateProfileParams) => Promise; updatePassword: (params: UpdatePasswordParams) => Promise; signOut: () => Promise; @@ -46,17 +49,11 @@ export type AuthContextValue = { const AuthContext = createContext(null); -function getDisplayName(user: User | null): string { +function getDisplayName(user: AuthUser): string { if (!user) return 'Usuario'; - const fromMetadata = - user.user_metadata?.name ?? user.user_metadata?.full_name ?? user.user_metadata?.user_name; - - if (typeof fromMetadata === 'string' && fromMetadata.trim().length > 0) { - return fromMetadata.trim(); - } - - return user.email ?? 'Usuario'; + const name = user.name ?? user.email ?? 'Usuario'; + return name; } function getInitials(name: string): string { @@ -65,48 +62,30 @@ function getInitials(name: string): string { return initials || 'U'; } -function getAvatarUrl(user: User | null): string | null { +function getAvatarUrl(user: AuthUser): string | null { if (!user) return null; - - const value = user.user_metadata?.avatar_url ?? user.user_metadata?.picture; - return typeof value === 'string' && value.length > 0 ? value : null; + return user.image ?? null; } export function AuthProvider({ children }: PropsWithChildren) { - const [session, setSession] = useState(null); - const [user, setUser] = useState(null); + const sessionStore = authClient.useSession(); const [loading, setLoading] = useState(true); useEffect(() => { - let mounted = true; + setLoading(sessionStore.isPending); + }, [sessionStore.isPending]); - const init = async () => { - const { data } = await supabase.auth.getSession(); + const user = sessionStore.data?.user ?? null; + const session = sessionStore.data?.session ?? null; + const isAuthenticated = !!session; - if (!mounted) return; - - setSession(data.session); - setUser(data.session?.user ?? null); - setApiAccessToken(data.session?.access_token ?? null); - setLoading(false); - }; - - void init(); - - const { - data: { subscription }, - } = supabase.auth.onAuthStateChange((_event, nextSession) => { - setSession(nextSession); - setUser(nextSession?.user ?? null); - setApiAccessToken(nextSession?.access_token ?? null); - setLoading(false); - }); - - return () => { - mounted = false; - subscription.unsubscribe(); - }; - }, []); + useEffect(() => { + if (sessionStore.data?.session?.token) { + setApiAccessToken(sessionStore.data.session.token); + } else { + setApiAccessToken(null); + } + }, [sessionStore.data?.session?.token]); const value = useMemo(() => { const displayName = getDisplayName(user); @@ -117,69 +96,58 @@ export function AuthProvider({ children }: PropsWithChildren) { user, session, loading, - isAuthenticated: Boolean(user), + isAuthenticated, displayName, initials, avatarUrl, signInWithPassword: async ({ email, password }) => { - const { error } = await supabase.auth.signInWithPassword({ + const result = await authClient.signIn.email({ email, password, }); - if (error) { - throw error; + if (result.error) { + throw new Error(result.error.message); } }, - signUp: async ({ email, password, fullName }) => { - const { data, error } = await supabase.auth.signUp({ + signUp: async ({ email, password, name }) => { + const result = await authClient.signUp.email({ email, password, - options: { - data: { - full_name: fullName, - name: fullName, - }, - }, + name, }); - if (error) { - throw error; + if (result.error) { + throw new Error(result.error.message); } - - return { - requiresEmailConfirmation: !data.session, - }; }, updateProfile: async ({ fullName }) => { - const { error } = await supabase.auth.updateUser({ - data: { - full_name: fullName, - name: fullName, - }, + const result = await (authClient as any).user.update({ + name: fullName, }); - if (error) { - throw error; + if (result?.error) { + throw new Error(result.error.message); } }, updatePassword: async ({ password }) => { - const { error } = await supabase.auth.updateUser({ + const result = await (authClient as any).user.update({ password, }); - if (error) { - throw error; + if (result?.error) { + throw new Error(result.error.message); } }, signOut: async () => { - const { error } = await supabase.auth.signOut(); - if (error) { - throw error; + const result = await authClient.signOut(); + + if (result.error) { + throw new Error(result.error.message); } }, }; - }, [loading, session, user]); + }, [loading, session, user, isAuthenticated, sessionStore]); return {children}; } @@ -193,3 +161,5 @@ export function useAuth() { return context; } + +export { authClient }; diff --git a/apps/frontend/src/lib/supabase.ts b/apps/frontend/src/lib/supabase.ts deleted file mode 100644 index 2e30267..0000000 --- a/apps/frontend/src/lib/supabase.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { createClient } from '@supabase/supabase-js'; - -const supabaseUrl = import.meta.env.VITE_SUPABASE_URL; -const supabaseAnonKey = import.meta.env.VITE_SUPABASE_ANON_KEY; - -if (!supabaseUrl || !supabaseAnonKey) { - throw new Error( - 'Missing Supabase environment variables. Define VITE_SUPABASE_URL and VITE_SUPABASE_ANON_KEY.' - ); -} - -export const supabase = createClient(supabaseUrl, supabaseAnonKey, { - auth: { - autoRefreshToken: true, - persistSession: true, - detectSessionInUrl: true, - }, -}); diff --git a/apps/frontend/src/routes/onboard.tsx b/apps/frontend/src/routes/onboard.tsx index 5897863..62139e8 100644 --- a/apps/frontend/src/routes/onboard.tsx +++ b/apps/frontend/src/routes/onboard.tsx @@ -3,4 +3,4 @@ import { createFileRoute } from '@tanstack/react-router'; export const Route = createFileRoute('/onboard')({ component: OnboardPage, -}); +}); \ No newline at end of file diff --git a/bun.lock b/bun.lock index 00c2f5f..5e9e620 100644 --- a/bun.lock +++ b/bun.lock @@ -17,11 +17,15 @@ "apps/backend": { "name": "backend", "dependencies": { + "@better-auth/prisma-adapter": "^1.6.2", "@hono/zod-validator": "^0.7.6", "@prisma/adapter-pg": "^7.6.0", "@prisma/client": "^7", "@repo/api-contract": "workspace:*", "@supabase/supabase-js": "2.101.1", + "@types/bcrypt": "^6.0.0", + "bcrypt": "^6.0.0", + "better-auth": "^1.6.2", "dotenv": "^17.4.1", "hono": "4.12.10", "nodemailer": "^8.0.5", @@ -53,6 +57,7 @@ "@tanstack/react-router": "^1.168.10", "@tanstack/router-devtools": "^1.166.11", "axios": "^1.14.0", + "better-auth": "^1.6.2", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "date-fns": "^4.1.0", @@ -146,6 +151,24 @@ "@babel/types": ["@babel/types@7.29.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A=="], + "@better-auth/core": ["@better-auth/core@1.6.2", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.39.0", "@standard-schema/spec": "^1.1.0", "zod": "^4.3.6" }, "peerDependencies": { "@better-auth/utils": "0.4.0", "@better-fetch/fetch": "1.1.21", "@cloudflare/workers-types": ">=4", "@opentelemetry/api": "^1.9.0", "better-call": "1.3.5", "jose": "^6.1.0", "kysely": "^0.28.5", "nanostores": "^1.0.1" }, "optionalPeers": ["@cloudflare/workers-types"] }, "sha512-nBftDp+eN1fwXor1O4KQorCXa0tJNDgpab7O1z4NcWUU+3faDpdzqLn5mbXZer2E8ZD4VhjqOfYZ041xnBF5NA=="], + + "@better-auth/drizzle-adapter": ["@better-auth/drizzle-adapter@1.6.2", "", { "peerDependencies": { "@better-auth/core": "^1.6.2", "@better-auth/utils": "0.4.0", "drizzle-orm": ">=0.41.0" }, "optionalPeers": ["drizzle-orm"] }, "sha512-KawrNNuhgmpcc5PgLs6HesMckxCscz5J+BQ99iRmU1cLzG/A87IcydrmYtep+K8WHPN0HmZ/i4z/nOBCtxE2qA=="], + + "@better-auth/kysely-adapter": ["@better-auth/kysely-adapter@1.6.2", "", { "peerDependencies": { "@better-auth/core": "^1.6.2", "@better-auth/utils": "0.4.0", "kysely": "^0.27.0 || ^0.28.0" }, "optionalPeers": ["kysely"] }, "sha512-YMMm75jek/MNCAFWTAaq/U3VPmFnrwZW4NhBjjAwruHQJEIrSZZaOaUEXuUpFRRBhWqg7OOltQcHMwU/45CkuA=="], + + "@better-auth/memory-adapter": ["@better-auth/memory-adapter@1.6.2", "", { "peerDependencies": { "@better-auth/core": "^1.6.2", "@better-auth/utils": "0.4.0" } }, "sha512-QvuK5m7NFgkzLPHyab+NORu3J683nj36Tix58qq6DPcniyY6KZk5gY2yyh4+z1wgSjrxwY5NFx/DC2qz8B8NJg=="], + + "@better-auth/mongo-adapter": ["@better-auth/mongo-adapter@1.6.2", "", { "peerDependencies": { "@better-auth/core": "^1.6.2", "@better-auth/utils": "0.4.0", "mongodb": "^6.0.0 || ^7.0.0" }, "optionalPeers": ["mongodb"] }, "sha512-IvR2Q+1pjzxA4JXI3ED76+6fsqervIpZ2K5MxoX/+miLQhLEmNcbqqcItg4O2kfkxN8h33/ev57sjTW8QH9Tuw=="], + + "@better-auth/prisma-adapter": ["@better-auth/prisma-adapter@1.6.2", "", { "peerDependencies": { "@better-auth/core": "^1.6.2", "@better-auth/utils": "0.4.0", "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0", "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@prisma/client", "prisma"] }, "sha512-bQkXYTo1zPau+xAiMpo1yCjEDSy7i7oeYlkYO+fSfRDCo52DE/9oPOOuI+EStmFkPUNSk9L2rhk8Fulifi8WCg=="], + + "@better-auth/telemetry": ["@better-auth/telemetry@1.6.2", "", { "peerDependencies": { "@better-auth/core": "^1.6.2", "@better-auth/utils": "0.4.0", "@better-fetch/fetch": "1.1.21" } }, "sha512-o4gHKXqizUxVUUYChZZTowLEzdsz3ViBE/fKFzfHqNFUnF+aVt8QsbLSfipq1WpTIXyJVT/SnH0hgSdWxdssbQ=="], + + "@better-auth/utils": ["@better-auth/utils@0.4.0", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-RpMtLUIQAEWMgdPLNVbIF5ON2mm+CH0U3rCdUCU1VyeAUui4m38DyK7/aXMLZov2YDjG684pS1D0MBllrmgjQA=="], + + "@better-fetch/fetch": ["@better-fetch/fetch@1.1.21", "", {}, "sha512-/ImESw0sskqlVR94jB+5+Pxjf+xBwDZF/N5+y2/q4EqD7IARUTSpPfIo8uf39SYpCxyOCtbyYpUrZ3F/k0zT4A=="], + "@biomejs/biome": ["@biomejs/biome@1.9.4", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "1.9.4", "@biomejs/cli-darwin-x64": "1.9.4", "@biomejs/cli-linux-arm64": "1.9.4", "@biomejs/cli-linux-arm64-musl": "1.9.4", "@biomejs/cli-linux-x64": "1.9.4", "@biomejs/cli-linux-x64-musl": "1.9.4", "@biomejs/cli-win32-arm64": "1.9.4", "@biomejs/cli-win32-x64": "1.9.4" }, "bin": { "biome": "bin/biome" } }, "sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog=="], "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@1.9.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw=="], @@ -280,11 +303,11 @@ "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.2", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw=="], - "@noble/ciphers": ["@noble/ciphers@1.3.0", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="], + "@noble/ciphers": ["@noble/ciphers@2.2.0", "", {}, "sha512-Z6pjIZ/8IJcCGzb2S/0Px5J81yij85xASuk1teLNeg75bfT07MV3a/O2Mtn1I2se43k3lkVEcFaR10N4cgQcZA=="], "@noble/curves": ["@noble/curves@1.9.7", "", { "dependencies": { "@noble/hashes": "1.8.0" } }, "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw=="], - "@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], + "@noble/hashes": ["@noble/hashes@2.2.0", "", {}, "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg=="], "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], @@ -298,6 +321,10 @@ "@open-draft/until": ["@open-draft/until@2.1.0", "", {}, "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg=="], + "@opentelemetry/api": ["@opentelemetry/api@1.9.1", "", {}, "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q=="], + + "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.40.0", "", {}, "sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw=="], + "@oxc-project/types": ["@oxc-project/types@0.122.0", "", {}, "sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA=="], "@pinojs/redact": ["@pinojs/redact@0.4.0", "", {}, "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg=="], @@ -572,6 +599,8 @@ "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], + "@types/bcrypt": ["@types/bcrypt@6.0.0", "", { "dependencies": { "@types/node": "*" } }, "sha512-/oJGukuH3D2+D+3H4JWLaAsJ/ji86dhRidzZ/Od7H/i8g+aCmvkeCc6Ni/f9uxGLSQVCRZkX2/lqEFG2BvWtlQ=="], + "@types/bun": ["@types/bun@1.3.12", "", { "dependencies": { "bun-types": "1.3.12" } }, "sha512-DBv81elK+/VSwXHDlnH3Qduw+KxkTIWi7TXkAeh24zpi5l0B2kUg9Ga3tb4nJaPcOFswflgi/yAvMVBPrxMB+A=="], "@types/node": ["@types/node@24.12.0", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ=="], @@ -632,6 +661,12 @@ "baseline-browser-mapping": ["baseline-browser-mapping@2.10.13", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw=="], + "bcrypt": ["bcrypt@6.0.0", "", { "dependencies": { "node-addon-api": "^8.3.0", "node-gyp-build": "^4.8.4" } }, "sha512-cU8v/EGSrnH+HnxV2z0J7/blxH8gq7Xh2JFT6Aroax7UohdmiJJlxApMxtKfuI7z68NvvVcmR78k2LbT6efhRg=="], + + "better-auth": ["better-auth@1.6.2", "", { "dependencies": { "@better-auth/core": "1.6.2", "@better-auth/drizzle-adapter": "1.6.2", "@better-auth/kysely-adapter": "1.6.2", "@better-auth/memory-adapter": "1.6.2", "@better-auth/mongo-adapter": "1.6.2", "@better-auth/prisma-adapter": "1.6.2", "@better-auth/telemetry": "1.6.2", "@better-auth/utils": "0.4.0", "@better-fetch/fetch": "1.1.21", "@noble/ciphers": "^2.1.1", "@noble/hashes": "^2.0.1", "better-call": "1.3.5", "defu": "^6.1.4", "jose": "^6.1.3", "kysely": "^0.28.14", "nanostores": "^1.1.1", "zod": "^4.3.6" }, "peerDependencies": { "@lynx-js/react": "*", "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0", "@sveltejs/kit": "^2.0.0", "@tanstack/react-start": "^1.0.0", "@tanstack/solid-start": "^1.0.0", "better-sqlite3": "^12.0.0", "drizzle-kit": ">=0.31.4", "drizzle-orm": ">=0.41.0", "mongodb": "^6.0.0 || ^7.0.0", "mysql2": "^3.0.0", "next": "^14.0.0 || ^15.0.0 || ^16.0.0", "pg": "^8.0.0", "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0", "solid-js": "^1.0.0", "svelte": "^4.0.0 || ^5.0.0", "vitest": "^2.0.0 || ^3.0.0 || ^4.0.0", "vue": "^3.0.0" }, "optionalPeers": ["@lynx-js/react", "@prisma/client", "@sveltejs/kit", "@tanstack/react-start", "@tanstack/solid-start", "better-sqlite3", "drizzle-kit", "drizzle-orm", "mongodb", "mysql2", "next", "pg", "prisma", "react", "react-dom", "solid-js", "svelte", "vitest", "vue"] }, "sha512-5nqDAIj5xexmnk+GjjdrBknJCabi1mlvsVWJbxs4usHreao4vNdxIxINWDzCyDF9iDR1ildRZdXWSiYPAvTHhA=="], + + "better-call": ["better-call@1.3.5", "", { "dependencies": { "@better-auth/utils": "^0.4.0", "@better-fetch/fetch": "^1.1.21", "rou3": "^0.7.12", "set-cookie-parser": "^3.0.1" }, "peerDependencies": { "zod": "^4.0.0" }, "optionalPeers": ["zod"] }, "sha512-kOFJkBP7utAQLEYrobZm3vkTH8mXq5GNgvjc5/XEST1ilVHaxXUXfeDeFlqoETMtyqS4+3/h4ONX2i++ebZrvA=="], + "better-result": ["better-result@2.7.0", "", { "dependencies": { "@clack/prompts": "^0.11.0" }, "bin": { "better-result": "bin/cli.mjs" } }, "sha512-7zrmXjAK8u8Z6SOe4R65XObOR5X+Y2I/VVku3t5cPOGQ8/WsBcfFmfnIPiEl5EBMDOzPHRwbiPbMtQBKYdw7RA=="], "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], @@ -1000,6 +1035,8 @@ "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="], + "kysely": ["kysely@0.28.16", "", {}, "sha512-3i5pmOiZvMDj00qhrIVbH0AnioVTx22DMP7Vn5At4yJO46iy+FM8Y/g61ltenLVSo3fiO8h8Q3QOFgf/gQ72ww=="], + "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], "lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], @@ -1074,14 +1111,20 @@ "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + "nanostores": ["nanostores@1.2.0", "", {}, "sha512-F0wCzbsH80G7XXo0Jd9/AVQC7ouWY6idUCTnMwW5t/Rv9W8qmO6endavDwg7TNp5GbugwSukFMVZqzPSrSMndg=="], + "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], + "node-addon-api": ["node-addon-api@8.7.0", "", {}, "sha512-9MdFxmkKaOYVTV+XVRG8ArDwwQ77XIgIPyKASB1k3JPq3M8fGQQQE3YpMOrKm6g//Ktx8ivZr8xo1Qmtqub+GA=="], + "node-domexception": ["node-domexception@1.0.0", "", {}, "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="], "node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], "node-fetch-native": ["node-fetch-native@1.6.7", "", {}, "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q=="], + "node-gyp-build": ["node-gyp-build@4.8.4", "", { "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", "node-gyp-build-test": "build-test.js" } }, "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ=="], + "node-releases": ["node-releases@2.0.36", "", {}, "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA=="], "nodemailer": ["nodemailer@8.0.5", "", {}, "sha512-0PF8Yb1yZuQfQbq+5/pZJrtF6WQcjTd5/S4JOHs9PGFxuTqoB/icwuB44pOdURHJbRKX1PPoJZtY7R4VUoCC8w=="], @@ -1254,6 +1297,8 @@ "rolldown": ["rolldown@1.0.0-rc.12", "", { "dependencies": { "@oxc-project/types": "=0.122.0", "@rolldown/pluginutils": "1.0.0-rc.12" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.12", "@rolldown/binding-darwin-arm64": "1.0.0-rc.12", "@rolldown/binding-darwin-x64": "1.0.0-rc.12", "@rolldown/binding-freebsd-x64": "1.0.0-rc.12", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.12", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.12", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.12", "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.12", "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.12", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.12", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.12", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.12", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.12", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.12", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.12" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A=="], + "rou3": ["rou3@0.7.12", "", {}, "sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg=="], + "router": ["router@2.2.0", "", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="], "run-applescript": ["run-applescript@7.1.0", "", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="], @@ -1282,6 +1327,8 @@ "serve-static": ["serve-static@2.2.1", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw=="], + "set-cookie-parser": ["set-cookie-parser@3.1.0", "", {}, "sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw=="], + "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], "shadcn": ["shadcn@4.1.2", "", { "dependencies": { "@babel/core": "^7.28.0", "@babel/parser": "^7.28.0", "@babel/plugin-transform-typescript": "^7.28.0", "@babel/preset-typescript": "^7.27.1", "@dotenvx/dotenvx": "^1.48.4", "@modelcontextprotocol/sdk": "^1.26.0", "@types/validate-npm-package-name": "^4.0.2", "browserslist": "^4.26.2", "commander": "^14.0.0", "cosmiconfig": "^9.0.0", "dedent": "^1.6.0", "deepmerge": "^4.3.1", "diff": "^8.0.2", "execa": "^9.6.0", "fast-glob": "^3.3.3", "fs-extra": "^11.3.1", "fuzzysort": "^3.1.0", "https-proxy-agent": "^7.0.6", "kleur": "^4.1.5", "msw": "^2.10.4", "node-fetch": "^3.3.2", "open": "^11.0.0", "ora": "^8.2.0", "postcss": "^8.5.6", "postcss-selector-parser": "^7.1.0", "prompts": "^2.4.2", "recast": "^0.23.11", "stringify-object": "^5.0.0", "tailwind-merge": "^3.0.1", "ts-morph": "^26.0.0", "tsconfig-paths": "^4.2.0", "validate-npm-package-name": "^7.0.1", "zod": "^3.24.1", "zod-to-json-schema": "^3.24.6" }, "bin": { "shadcn": "dist/index.js" } }, "sha512-qNQcCavkbYsgBj+X09tF2bTcwRd8abR880bsFkDU2kMqceMCLAm5c+cLg7kWDhfh1H9g08knpQ5ZEf6y/co16g=="], @@ -1456,12 +1503,16 @@ "@dotenvx/dotenvx/execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="], + "@ecies/ciphers/@noble/ciphers": ["@noble/ciphers@1.3.0", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="], + "@inquirer/core/wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="], "@modelcontextprotocol/sdk/@hono/node-server": ["@hono/node-server@1.19.12", "", { "peerDependencies": { "hono": "^4" } }, "sha512-txsUW4SQ1iilgE0l9/e9VQWmELXifEFvmdA1j6WFh/aFPj99hIntrSsq/if0UWyGVkmrRPKA1wCeP+UCr1B9Uw=="], "@modelcontextprotocol/sdk/hono": ["hono@4.12.9", "", {}, "sha512-wy3T8Zm2bsEvxKZM5w21VdHDDcwVS1yUFFY6i8UobSsKfFceT7TOwhbhfKsDyx7tYQlmRM5FLpIuYvNFyjctiA=="], + "@noble/curves/@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], + "@prisma/engines/@prisma/get-platform": ["@prisma/get-platform@7.6.0", "", { "dependencies": { "@prisma/debug": "7.6.0" } }, "sha512-ohZDwXvtmnbzOcutR2D13lDWpZP1wQjmPyztmt0AwXLzQI7q95EE7NYCvS+M6N6SivT+BM0NOqLmTH3wms4L3A=="], "@prisma/fetch-engine/@prisma/get-platform": ["@prisma/get-platform@7.6.0", "", { "dependencies": { "@prisma/debug": "7.6.0" } }, "sha512-ohZDwXvtmnbzOcutR2D13lDWpZP1wQjmPyztmt0AwXLzQI7q95EE7NYCvS+M6N6SivT+BM0NOqLmTH3wms4L3A=="], @@ -1592,6 +1643,10 @@ "cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + "eciesjs/@noble/ciphers": ["@noble/ciphers@1.3.0", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="], + + "eciesjs/@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], + "express/cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], "express/mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="],