diff --git a/.gitignore b/.gitignore index 5ef6a52..03f032b 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,12 @@ # testing /coverage +# local SQLite study data +/dev.db +/dev.db-journal +/dev.db-shm +/dev.db-wal + # next.js /.next/ /out/ diff --git a/dev.db b/dev.db deleted file mode 100644 index 3dc8b2c..0000000 Binary files a/dev.db and /dev/null differ diff --git a/prisma/migrations/20260712113000_add_study_activity/migration.sql b/prisma/migrations/20260712113000_add_study_activity/migration.sql new file mode 100644 index 0000000..817ba79 --- /dev/null +++ b/prisma/migrations/20260712113000_add_study_activity/migration.sql @@ -0,0 +1,9 @@ +-- CreateTable +CREATE TABLE "StudyActivity" ( + "id" TEXT NOT NULL PRIMARY KEY, + "type" TEXT NOT NULL, + "occurredAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +-- CreateIndex +CREATE INDEX "StudyActivity_occurredAt_idx" ON "StudyActivity"("occurredAt"); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index dc8a941..be359a1 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -141,6 +141,14 @@ model Setting { value String } +model StudyActivity { + id String @id @default(uuid()) + type String // "FLASHCARD" | "QUIZ_QUESTION" + occurredAt DateTime @default(now()) + + @@index([occurredAt]) +} + model MaterialGroup { id String @id @default(uuid()) classId String diff --git a/src/app/(protected)/[classSlug]/layout.tsx b/src/app/(protected)/[classSlug]/layout.tsx index 09c5c86..85d64bd 100644 --- a/src/app/(protected)/[classSlug]/layout.tsx +++ b/src/app/(protected)/[classSlug]/layout.tsx @@ -12,8 +12,8 @@ export default async function ClassLayout(props: LayoutProps<"/[classSlug]">) { return (
- {/* Dynamic Header & Tabs */} - + {/* Dynamic class header */} + {/* Page content */} {props.children} diff --git a/src/app/(protected)/page.tsx b/src/app/(protected)/page.tsx index 88ece8c..ba8de20 100644 --- a/src/app/(protected)/page.tsx +++ b/src/app/(protected)/page.tsx @@ -2,6 +2,7 @@ import { useEffect, useState } from "react"; import Link from "next/link"; +import { ActivityBanner } from "@/components/activity/ActivityBanner"; interface ClassItem { id: string; @@ -56,33 +57,9 @@ export default function HomePage() { } finally { setSavingEdit(false); } } - const deckTotal = classes.reduce((sum, item) => sum + item._count.decks, 0); - const quizTotal = classes.reduce((sum, item) => sum + item._count.quizSets, 0); - return (
-
-
-
-
-
-

Personal library

-

What are we learning today?

-

Pick up where you left off, sharpen a weak topic, or build something new.

-
- -
-
- {[[classes.length, "Classes"], [deckTotal, "Decks"], [quizTotal, "Quizzes"]].map(([value, label]) => ( -
-
{value}
-
{label}
-
- ))} -
-
+ setShowCreate(true)} /> {showCreate && (
diff --git a/src/app/api/activity/route.ts b/src/app/api/activity/route.ts new file mode 100644 index 0000000..570793f --- /dev/null +++ b/src/app/api/activity/route.ts @@ -0,0 +1,17 @@ +import { NextRequest, NextResponse } from "next/server"; +import { studyActivitySchema } from "@/lib/validation/activitySchemas"; +import * as activityService from "@/services/activityService"; + +export async function GET() { + return NextResponse.json(await activityService.getActivitySummary()); +} + +export async function POST(request: NextRequest) { + const parsed = studyActivitySchema.safeParse(await request.json().catch(() => null)); + if (!parsed.success) { + return NextResponse.json({ error: "Invalid activity type" }, { status: 400 }); + } + + await activityService.recordActivity(parsed.data.type); + return NextResponse.json({ success: true }, { status: 201 }); +} diff --git a/src/components/activity/ActivityBanner.tsx b/src/components/activity/ActivityBanner.tsx new file mode 100644 index 0000000..0bcaf0a --- /dev/null +++ b/src/components/activity/ActivityBanner.tsx @@ -0,0 +1,199 @@ +"use client"; + +import { useEffect, useMemo, useRef, useState } from "react"; + +interface DailyActivity { + date: string; + flashcards: number; + questions: number; + total: number; + level: 0 | 1 | 2 | 3 | 4; +} + +interface ActivitySummary { + days: DailyActivity[]; + today: string; + activeDays: number; + flashcards: number; + questions: number; + currentStreak: number; +} + +const levelClasses = [ + "bg-white/10", + "bg-primary/45", + "bg-primary", + "bg-accent", + "bg-[#fbbf24]", +] as const; + +export function ActivityBanner({ onNewClass }: { onNewClass: () => void }) { + const [summary, setSummary] = useState(null); + const [error, setError] = useState(false); + + useEffect(() => { + fetch("/api/activity") + .then((response) => { + if (!response.ok) throw new Error("Failed to load activity"); + return response.json(); + }) + .then(setSummary) + .catch(() => setError(true)); + }, []); + + return ( +
+
+
+
+
+

Personal library

+

Study activity

+
+ +
+ + {error && ( +
+ Study activity could not be loaded. Your library is still available below. +
+ )} + {!summary && !error &&
} + {summary && ( +
+
+ +
+ + + +
+
+ +
+ )} +
+ ); +} + +function ActivityHeatmap({ days, today }: { days: DailyActivity[]; today: string }) { + const scrollRef = useRef(null); + const [activeDay, setActiveDay] = useState(null); + const weeks = useMemo( + () => Array.from({ length: 53 }, (_, index) => days.slice(index * 7, index * 7 + 7)), + [days] + ); + + useEffect(() => { + const container = scrollRef.current; + if (container) container.scrollLeft = container.scrollWidth; + }, [days]); + + return ( +
+
+

Last 53 weeks · Arizona time

+
+ {activeDay && } +
+
+
+
+
+
+
Mon
+
+
Wed
+
+
Fri
+
+
+
+ {weeks.map((week, index) => ( +
+ {getMonthLabel(week, weeks[index - 1])} +
+ ))} +
+
+ {weeks.map((week, weekIndex) => ( +
+ {week.map((day) => day.date > today ? ( + + ) : ( +
+ ))} +
+
+
+
+
+ Less + {levelClasses.map((className, index) => )} + More +
+
+ ); +} + +function DayTooltip({ day }: { day: DailyActivity }) { + const formatted = new Date(`${day.date}T12:00:00Z`).toLocaleDateString("en-US", { + timeZone: "America/Phoenix", + month: "short", + day: "numeric", + year: "numeric", + }); + return ( +
+
{formatted} · {day.total} total
+
{day.flashcards} flashcards · {day.questions} questions
+
+ ); +} + +function StreakDisplay({ streak }: { streak: number }) { + const size = 24 + Math.min(streak, 30) * 0.6; + const color = streak === 0 ? "text-white/30" : streak < 7 ? "text-accent" : streak < 30 ? "text-[#ff7a36]" : "text-[#fbbf24]"; + return ( +
+ + + +
+
{streak}
+
day streak
+
20 activities per day
+
+
+ ); +} + +function SummaryStat({ value, label }: { value: number; label: string }) { + return
{value}
{label}
; +} + +function getMonthLabel(week: DailyActivity[], previousWeek?: DailyActivity[]) { + const firstOfMonth = week.find((day) => Number(day.date.slice(8, 10)) <= 7); + if (!firstOfMonth) return ""; + const month = firstOfMonth.date.slice(5, 7); + if (previousWeek?.some((day) => day.date.slice(5, 7) === month)) return ""; + return new Date(`${firstOfMonth.date}T12:00:00Z`).toLocaleDateString("en-US", { month: "short", timeZone: "America/Phoenix" }); +} + +function getDayAriaLabel(day: DailyActivity) { + return `${day.date}: ${day.flashcards} flashcards and ${day.questions} questions, ${day.total} total activities`; +} diff --git a/src/components/flashcards/FlashcardViewer.tsx b/src/components/flashcards/FlashcardViewer.tsx index b2f9625..ecb6f15 100644 --- a/src/components/flashcards/FlashcardViewer.tsx +++ b/src/components/flashcards/FlashcardViewer.tsx @@ -3,6 +3,7 @@ import { useState, useEffect, useCallback, useRef } from "react"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; +import { recordStudyActivity } from "@/lib/activityClient"; interface Card { id: string; @@ -55,6 +56,7 @@ export function FlashcardViewer({ cards, deckId, isShared = false, initialProgre ); const [swipeClass, setSwipeClass] = useState(""); const cardRef = useRef(null); + const gradingRef = useRef(false); // Touch/drag state const dragRef = useRef({ startX: 0, currentX: 0, isDragging: false }); @@ -120,7 +122,12 @@ export function FlashcardViewer({ cards, deckId, isShared = false, initialProgre // Grade the current card const gradeCard = useCallback( (grade: CardResult) => { - if (!currentCard || !hasFlippedOnce) return; + if (!currentCard || !hasFlippedOnce || gradingRef.current) return; + gradingRef.current = true; + + if (!isShared) { + recordStudyActivity("FLASHCARD").catch(() => {}); + } setToastMessage(null); const newResults = { ...results, [currentCard.id]: grade }; @@ -130,6 +137,7 @@ export function FlashcardViewer({ cards, deckId, isShared = false, initialProgre setSwipeClass(grade === "correct" ? "animate-swipe-right" : "animate-swipe-left"); setTimeout(() => { + gradingRef.current = false; setSwipeClass(""); setIsFlipped(false); setHasFlippedOnce(false); @@ -144,7 +152,7 @@ export function FlashcardViewer({ cards, deckId, isShared = false, initialProgre } }, 350); }, - [currentCard, hasFlippedOnce, results, currentIndex, order, isShuffled] + [currentCard, hasFlippedOnce, results, currentIndex, order, isShuffled, isShared] ); // Keyboard shortcuts @@ -236,6 +244,7 @@ export function FlashcardViewer({ cards, deckId, isShared = false, initialProgre // Restart handlers function restartFullSet() { + gradingRef.current = false; let newOrder: string[]; if (isShuffled) { newOrder = [...cards.map((c) => c.id)].sort(() => Math.random() - 0.5); diff --git a/src/components/quizzes/QuizViewer.tsx b/src/components/quizzes/QuizViewer.tsx index e14108f..ac2bd97 100644 --- a/src/components/quizzes/QuizViewer.tsx +++ b/src/components/quizzes/QuizViewer.tsx @@ -1,10 +1,11 @@ "use client"; -import { useState, useEffect } from "react"; +import { useState, useEffect, useRef } from "react"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; import { scoreQuestion } from "@/lib/scoring"; import { QuizResults } from "./QuizResults"; +import { recordStudyActivity } from "@/lib/activityClient"; interface Option { id: string; @@ -39,6 +40,7 @@ interface QuizViewerProps { } export function QuizViewer({ quiz, retakeIds, isShared = false, onFinished }: QuizViewerProps) { + const submittingQuestionRef = useRef(null); const [order, setOrder] = useState([]); const [currentIndex, setCurrentIndex] = useState(0); const [answers, setAnswers] = useState>({}); @@ -194,7 +196,11 @@ export function QuizViewer({ quiz, retakeIds, isShared = false, onFinished }: Qu } function handleSubmit() { - if (isSubmitted || !currentQId) return; + if (isSubmitted || !currentQId || submittingQuestionRef.current === currentQId) return; + submittingQuestionRef.current = currentQId; + if (!isShared) { + recordStudyActivity("QUIZ_QUESTION").catch(() => {}); + } const newSubmitted = [...submittedAnswers, currentQId]; setSubmittedAnswers(newSubmitted); saveProgress(currentIndex, answers); @@ -202,6 +208,7 @@ export function QuizViewer({ quiz, retakeIds, isShared = false, onFinished }: Qu function handleNext() { if (currentIndex + 1 < order.length) { + submittingQuestionRef.current = null; const nextIdx = currentIndex + 1; setCurrentIndex(nextIdx); saveProgress(nextIdx, answers); @@ -290,6 +297,7 @@ export function QuizViewer({ quiz, retakeIds, isShared = false, onFinished }: Qu setCurrentIndex(0); setAnswers({}); setSubmittedAnswers([]); + submittingQuestionRef.current = null; setResultsData(null); // Re-shuffle options for the new attempt diff --git a/src/components/ui/ClassHeader.tsx b/src/components/ui/ClassHeader.tsx index 2fe8f63..b07ed29 100644 --- a/src/components/ui/ClassHeader.tsx +++ b/src/components/ui/ClassHeader.tsx @@ -2,14 +2,12 @@ import Link from "next/link"; import { usePathname } from "next/navigation"; -import { ClassTabs } from "./ClassTabs"; interface ClassHeaderProps { - classSlug: string; className: string; } -export function ClassHeader({ classSlug, className }: ClassHeaderProps) { +export function ClassHeader({ className }: ClassHeaderProps) { const pathname = usePathname(); // If we are deeper than /[classSlug]/[tab], hide this header to save space @@ -23,8 +21,7 @@ export function ClassHeader({ classSlug, className }: ClassHeaderProps) { } return ( - <> -
+

Choose a mode, then settle in for a focused study session.

- - - ); } diff --git a/src/generated/prisma/browser.ts b/src/generated/prisma/browser.ts index bbd13c9..cffdc48 100644 --- a/src/generated/prisma/browser.ts +++ b/src/generated/prisma/browser.ts @@ -72,6 +72,11 @@ export type AuthSecurity = Prisma.AuthSecurityModel * */ export type Setting = Prisma.SettingModel +/** + * Model StudyActivity + * + */ +export type StudyActivity = Prisma.StudyActivityModel /** * Model MaterialGroup * diff --git a/src/generated/prisma/client.ts b/src/generated/prisma/client.ts index c502699..27a7cbd 100644 --- a/src/generated/prisma/client.ts +++ b/src/generated/prisma/client.ts @@ -96,6 +96,11 @@ export type AuthSecurity = Prisma.AuthSecurityModel * */ export type Setting = Prisma.SettingModel +/** + * Model StudyActivity + * + */ +export type StudyActivity = Prisma.StudyActivityModel /** * Model MaterialGroup * diff --git a/src/generated/prisma/internal/class.ts b/src/generated/prisma/internal/class.ts index 43381b9..de318cc 100644 --- a/src/generated/prisma/internal/class.ts +++ b/src/generated/prisma/internal/class.ts @@ -20,7 +20,7 @@ const config: runtime.GetPrismaClientConfig = { "clientVersion": "7.8.0", "engineVersion": "3c6e192761c0362d496ed980de936e2f3cebcd3a", "activeProvider": "sqlite", - "inlineSchema": "datasource db {\n provider = \"sqlite\"\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma\"\n}\n\nmodel Class {\n id String @id @default(uuid())\n slug String @unique\n name String\n sortOrder Int @default(0)\n createdAt DateTime @default(now())\n\n decks Deck[]\n quizSets QuizSet[]\n materialGroups MaterialGroup[]\n}\n\nmodel Deck {\n id String @id @default(uuid())\n classId String\n name String\n description String?\n sortOrder Int @default(0)\n createdAt DateTime @default(now())\n\n class Class @relation(fields: [classId], references: [id], onDelete: Cascade)\n groupId String?\n group MaterialGroup? @relation(fields: [groupId], references: [id], onDelete: SetNull)\n cards Flashcard[]\n shareLink ShareLink?\n progress StudyProgress[]\n}\n\nmodel Flashcard {\n id String @id @default(uuid())\n deckId String\n front String\n back String\n sortOrder Int @default(0)\n\n deck Deck @relation(fields: [deckId], references: [id], onDelete: Cascade)\n}\n\nmodel QuizSet {\n id String @id @default(uuid())\n classId String\n name String\n description String?\n sortOrder Int @default(0)\n createdAt DateTime @default(now())\n\n class Class @relation(fields: [classId], references: [id], onDelete: Cascade)\n groupId String?\n group MaterialGroup? @relation(fields: [groupId], references: [id], onDelete: SetNull)\n questions Question[]\n attempts QuizAttempt[]\n shareLink ShareLink?\n progress StudyProgress[]\n}\n\nmodel Question {\n id String @id @default(uuid())\n quizSetId String\n type String // \"MULTIPLE_CHOICE\" | \"SATA\"\n prompt String\n rationale String\n category String\n sortOrder Int @default(0)\n\n quizSet QuizSet @relation(fields: [quizSetId], references: [id], onDelete: Cascade)\n options AnswerOption[]\n}\n\nmodel AnswerOption {\n id String @id @default(uuid())\n questionId String\n text String\n isCorrect Boolean @default(false)\n sortOrder Int @default(0)\n\n question Question @relation(fields: [questionId], references: [id], onDelete: Cascade)\n}\n\nmodel StudyProgress {\n id String @id @default(uuid())\n contentType String // \"DECK\" | \"QUIZ\"\n deckId String?\n quizSetId String?\n mode String // \"SEQUENTIAL\" | \"SHUFFLED\"\n currentIndex Int @default(0)\n orderJson String // JSON array of card/question ids\n answersJson String? // in-progress quiz answers\n cardResultsJson String? // per-card grades for decks\n updatedAt DateTime @updatedAt\n\n deck Deck? @relation(fields: [deckId], references: [id], onDelete: Cascade)\n quizSet QuizSet? @relation(fields: [quizSetId], references: [id], onDelete: Cascade)\n\n @@unique([deckId, mode])\n @@unique([quizSetId, mode])\n}\n\nmodel QuizAttempt {\n id String @id @default(uuid())\n quizSetId String\n score Float\n maxScore Int\n answersJson String\n isPartialRetake Boolean @default(false)\n completedAt DateTime @default(now())\n\n quizSet QuizSet @relation(fields: [quizSetId], references: [id], onDelete: Cascade)\n}\n\nmodel ShareLink {\n id String @id @default(uuid())\n targetType String // \"DECK\" | \"QUIZ\" | \"GROUP\"\n deckId String? @unique\n quizSetId String? @unique\n groupId String? @unique\n createdAt DateTime @default(now())\n\n deck Deck? @relation(fields: [deckId], references: [id], onDelete: Cascade)\n quizSet QuizSet? @relation(fields: [quizSetId], references: [id], onDelete: Cascade)\n group MaterialGroup? @relation(fields: [groupId], references: [id], onDelete: Cascade)\n}\n\nmodel AuthSecurity {\n id Int @id @default(1)\n failedAttempts Int @default(0)\n lockedUntil DateTime?\n lastAttemptAt DateTime?\n}\n\nmodel Setting {\n key String @id\n value String\n}\n\nmodel MaterialGroup {\n id String @id @default(uuid())\n classId String\n name String\n type String // \"DECK\" | \"QUIZ\"\n sortOrder Int @default(0)\n createdAt DateTime @default(now())\n\n class Class @relation(fields: [classId], references: [id], onDelete: Cascade)\n decks Deck[]\n quizSets QuizSet[]\n shareLink ShareLink?\n}\n", + "inlineSchema": "datasource db {\n provider = \"sqlite\"\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma\"\n}\n\nmodel Class {\n id String @id @default(uuid())\n slug String @unique\n name String\n sortOrder Int @default(0)\n createdAt DateTime @default(now())\n\n decks Deck[]\n quizSets QuizSet[]\n materialGroups MaterialGroup[]\n}\n\nmodel Deck {\n id String @id @default(uuid())\n classId String\n name String\n description String?\n sortOrder Int @default(0)\n createdAt DateTime @default(now())\n\n class Class @relation(fields: [classId], references: [id], onDelete: Cascade)\n groupId String?\n group MaterialGroup? @relation(fields: [groupId], references: [id], onDelete: SetNull)\n cards Flashcard[]\n shareLink ShareLink?\n progress StudyProgress[]\n}\n\nmodel Flashcard {\n id String @id @default(uuid())\n deckId String\n front String\n back String\n sortOrder Int @default(0)\n\n deck Deck @relation(fields: [deckId], references: [id], onDelete: Cascade)\n}\n\nmodel QuizSet {\n id String @id @default(uuid())\n classId String\n name String\n description String?\n sortOrder Int @default(0)\n createdAt DateTime @default(now())\n\n class Class @relation(fields: [classId], references: [id], onDelete: Cascade)\n groupId String?\n group MaterialGroup? @relation(fields: [groupId], references: [id], onDelete: SetNull)\n questions Question[]\n attempts QuizAttempt[]\n shareLink ShareLink?\n progress StudyProgress[]\n}\n\nmodel Question {\n id String @id @default(uuid())\n quizSetId String\n type String // \"MULTIPLE_CHOICE\" | \"SATA\"\n prompt String\n rationale String\n category String\n sortOrder Int @default(0)\n\n quizSet QuizSet @relation(fields: [quizSetId], references: [id], onDelete: Cascade)\n options AnswerOption[]\n}\n\nmodel AnswerOption {\n id String @id @default(uuid())\n questionId String\n text String\n isCorrect Boolean @default(false)\n sortOrder Int @default(0)\n\n question Question @relation(fields: [questionId], references: [id], onDelete: Cascade)\n}\n\nmodel StudyProgress {\n id String @id @default(uuid())\n contentType String // \"DECK\" | \"QUIZ\"\n deckId String?\n quizSetId String?\n mode String // \"SEQUENTIAL\" | \"SHUFFLED\"\n currentIndex Int @default(0)\n orderJson String // JSON array of card/question ids\n answersJson String? // in-progress quiz answers\n cardResultsJson String? // per-card grades for decks\n updatedAt DateTime @updatedAt\n\n deck Deck? @relation(fields: [deckId], references: [id], onDelete: Cascade)\n quizSet QuizSet? @relation(fields: [quizSetId], references: [id], onDelete: Cascade)\n\n @@unique([deckId, mode])\n @@unique([quizSetId, mode])\n}\n\nmodel QuizAttempt {\n id String @id @default(uuid())\n quizSetId String\n score Float\n maxScore Int\n answersJson String\n isPartialRetake Boolean @default(false)\n completedAt DateTime @default(now())\n\n quizSet QuizSet @relation(fields: [quizSetId], references: [id], onDelete: Cascade)\n}\n\nmodel ShareLink {\n id String @id @default(uuid())\n targetType String // \"DECK\" | \"QUIZ\" | \"GROUP\"\n deckId String? @unique\n quizSetId String? @unique\n groupId String? @unique\n createdAt DateTime @default(now())\n\n deck Deck? @relation(fields: [deckId], references: [id], onDelete: Cascade)\n quizSet QuizSet? @relation(fields: [quizSetId], references: [id], onDelete: Cascade)\n group MaterialGroup? @relation(fields: [groupId], references: [id], onDelete: Cascade)\n}\n\nmodel AuthSecurity {\n id Int @id @default(1)\n failedAttempts Int @default(0)\n lockedUntil DateTime?\n lastAttemptAt DateTime?\n}\n\nmodel Setting {\n key String @id\n value String\n}\n\nmodel StudyActivity {\n id String @id @default(uuid())\n type String // \"FLASHCARD\" | \"QUIZ_QUESTION\"\n occurredAt DateTime @default(now())\n\n @@index([occurredAt])\n}\n\nmodel MaterialGroup {\n id String @id @default(uuid())\n classId String\n name String\n type String // \"DECK\" | \"QUIZ\"\n sortOrder Int @default(0)\n createdAt DateTime @default(now())\n\n class Class @relation(fields: [classId], references: [id], onDelete: Cascade)\n decks Deck[]\n quizSets QuizSet[]\n shareLink ShareLink?\n}\n", "runtimeDataModel": { "models": {}, "enums": {}, @@ -32,10 +32,10 @@ const config: runtime.GetPrismaClientConfig = { } } -config.runtimeDataModel = JSON.parse("{\"models\":{\"Class\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"decks\",\"kind\":\"object\",\"type\":\"Deck\",\"relationName\":\"ClassToDeck\"},{\"name\":\"quizSets\",\"kind\":\"object\",\"type\":\"QuizSet\",\"relationName\":\"ClassToQuizSet\"},{\"name\":\"materialGroups\",\"kind\":\"object\",\"type\":\"MaterialGroup\",\"relationName\":\"ClassToMaterialGroup\"}],\"dbName\":null},\"Deck\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"classId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"class\",\"kind\":\"object\",\"type\":\"Class\",\"relationName\":\"ClassToDeck\"},{\"name\":\"groupId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"group\",\"kind\":\"object\",\"type\":\"MaterialGroup\",\"relationName\":\"DeckToMaterialGroup\"},{\"name\":\"cards\",\"kind\":\"object\",\"type\":\"Flashcard\",\"relationName\":\"DeckToFlashcard\"},{\"name\":\"shareLink\",\"kind\":\"object\",\"type\":\"ShareLink\",\"relationName\":\"DeckToShareLink\"},{\"name\":\"progress\",\"kind\":\"object\",\"type\":\"StudyProgress\",\"relationName\":\"DeckToStudyProgress\"}],\"dbName\":null},\"Flashcard\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"deckId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"front\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"back\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"deck\",\"kind\":\"object\",\"type\":\"Deck\",\"relationName\":\"DeckToFlashcard\"}],\"dbName\":null},\"QuizSet\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"classId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"class\",\"kind\":\"object\",\"type\":\"Class\",\"relationName\":\"ClassToQuizSet\"},{\"name\":\"groupId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"group\",\"kind\":\"object\",\"type\":\"MaterialGroup\",\"relationName\":\"MaterialGroupToQuizSet\"},{\"name\":\"questions\",\"kind\":\"object\",\"type\":\"Question\",\"relationName\":\"QuestionToQuizSet\"},{\"name\":\"attempts\",\"kind\":\"object\",\"type\":\"QuizAttempt\",\"relationName\":\"QuizAttemptToQuizSet\"},{\"name\":\"shareLink\",\"kind\":\"object\",\"type\":\"ShareLink\",\"relationName\":\"QuizSetToShareLink\"},{\"name\":\"progress\",\"kind\":\"object\",\"type\":\"StudyProgress\",\"relationName\":\"QuizSetToStudyProgress\"}],\"dbName\":null},\"Question\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"quizSetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"prompt\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"rationale\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"quizSet\",\"kind\":\"object\",\"type\":\"QuizSet\",\"relationName\":\"QuestionToQuizSet\"},{\"name\":\"options\",\"kind\":\"object\",\"type\":\"AnswerOption\",\"relationName\":\"AnswerOptionToQuestion\"}],\"dbName\":null},\"AnswerOption\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"questionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"text\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isCorrect\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"question\",\"kind\":\"object\",\"type\":\"Question\",\"relationName\":\"AnswerOptionToQuestion\"}],\"dbName\":null},\"StudyProgress\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"contentType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"deckId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"quizSetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"currentIndex\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"orderJson\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"answersJson\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"cardResultsJson\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deck\",\"kind\":\"object\",\"type\":\"Deck\",\"relationName\":\"DeckToStudyProgress\"},{\"name\":\"quizSet\",\"kind\":\"object\",\"type\":\"QuizSet\",\"relationName\":\"QuizSetToStudyProgress\"}],\"dbName\":null},\"QuizAttempt\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"quizSetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"score\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"maxScore\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"answersJson\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isPartialRetake\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"quizSet\",\"kind\":\"object\",\"type\":\"QuizSet\",\"relationName\":\"QuizAttemptToQuizSet\"}],\"dbName\":null},\"ShareLink\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"deckId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"quizSetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"groupId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deck\",\"kind\":\"object\",\"type\":\"Deck\",\"relationName\":\"DeckToShareLink\"},{\"name\":\"quizSet\",\"kind\":\"object\",\"type\":\"QuizSet\",\"relationName\":\"QuizSetToShareLink\"},{\"name\":\"group\",\"kind\":\"object\",\"type\":\"MaterialGroup\",\"relationName\":\"MaterialGroupToShareLink\"}],\"dbName\":null},\"AuthSecurity\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"failedAttempts\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"lockedUntil\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"lastAttemptAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Setting\":{\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"MaterialGroup\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"classId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"class\",\"kind\":\"object\",\"type\":\"Class\",\"relationName\":\"ClassToMaterialGroup\"},{\"name\":\"decks\",\"kind\":\"object\",\"type\":\"Deck\",\"relationName\":\"DeckToMaterialGroup\"},{\"name\":\"quizSets\",\"kind\":\"object\",\"type\":\"QuizSet\",\"relationName\":\"MaterialGroupToQuizSet\"},{\"name\":\"shareLink\",\"kind\":\"object\",\"type\":\"ShareLink\",\"relationName\":\"MaterialGroupToShareLink\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"Class\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"decks\",\"kind\":\"object\",\"type\":\"Deck\",\"relationName\":\"ClassToDeck\"},{\"name\":\"quizSets\",\"kind\":\"object\",\"type\":\"QuizSet\",\"relationName\":\"ClassToQuizSet\"},{\"name\":\"materialGroups\",\"kind\":\"object\",\"type\":\"MaterialGroup\",\"relationName\":\"ClassToMaterialGroup\"}],\"dbName\":null},\"Deck\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"classId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"class\",\"kind\":\"object\",\"type\":\"Class\",\"relationName\":\"ClassToDeck\"},{\"name\":\"groupId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"group\",\"kind\":\"object\",\"type\":\"MaterialGroup\",\"relationName\":\"DeckToMaterialGroup\"},{\"name\":\"cards\",\"kind\":\"object\",\"type\":\"Flashcard\",\"relationName\":\"DeckToFlashcard\"},{\"name\":\"shareLink\",\"kind\":\"object\",\"type\":\"ShareLink\",\"relationName\":\"DeckToShareLink\"},{\"name\":\"progress\",\"kind\":\"object\",\"type\":\"StudyProgress\",\"relationName\":\"DeckToStudyProgress\"}],\"dbName\":null},\"Flashcard\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"deckId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"front\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"back\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"deck\",\"kind\":\"object\",\"type\":\"Deck\",\"relationName\":\"DeckToFlashcard\"}],\"dbName\":null},\"QuizSet\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"classId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"class\",\"kind\":\"object\",\"type\":\"Class\",\"relationName\":\"ClassToQuizSet\"},{\"name\":\"groupId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"group\",\"kind\":\"object\",\"type\":\"MaterialGroup\",\"relationName\":\"MaterialGroupToQuizSet\"},{\"name\":\"questions\",\"kind\":\"object\",\"type\":\"Question\",\"relationName\":\"QuestionToQuizSet\"},{\"name\":\"attempts\",\"kind\":\"object\",\"type\":\"QuizAttempt\",\"relationName\":\"QuizAttemptToQuizSet\"},{\"name\":\"shareLink\",\"kind\":\"object\",\"type\":\"ShareLink\",\"relationName\":\"QuizSetToShareLink\"},{\"name\":\"progress\",\"kind\":\"object\",\"type\":\"StudyProgress\",\"relationName\":\"QuizSetToStudyProgress\"}],\"dbName\":null},\"Question\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"quizSetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"prompt\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"rationale\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"quizSet\",\"kind\":\"object\",\"type\":\"QuizSet\",\"relationName\":\"QuestionToQuizSet\"},{\"name\":\"options\",\"kind\":\"object\",\"type\":\"AnswerOption\",\"relationName\":\"AnswerOptionToQuestion\"}],\"dbName\":null},\"AnswerOption\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"questionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"text\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isCorrect\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"question\",\"kind\":\"object\",\"type\":\"Question\",\"relationName\":\"AnswerOptionToQuestion\"}],\"dbName\":null},\"StudyProgress\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"contentType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"deckId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"quizSetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"currentIndex\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"orderJson\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"answersJson\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"cardResultsJson\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deck\",\"kind\":\"object\",\"type\":\"Deck\",\"relationName\":\"DeckToStudyProgress\"},{\"name\":\"quizSet\",\"kind\":\"object\",\"type\":\"QuizSet\",\"relationName\":\"QuizSetToStudyProgress\"}],\"dbName\":null},\"QuizAttempt\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"quizSetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"score\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"maxScore\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"answersJson\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isPartialRetake\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"quizSet\",\"kind\":\"object\",\"type\":\"QuizSet\",\"relationName\":\"QuizAttemptToQuizSet\"}],\"dbName\":null},\"ShareLink\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"deckId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"quizSetId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"groupId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deck\",\"kind\":\"object\",\"type\":\"Deck\",\"relationName\":\"DeckToShareLink\"},{\"name\":\"quizSet\",\"kind\":\"object\",\"type\":\"QuizSet\",\"relationName\":\"QuizSetToShareLink\"},{\"name\":\"group\",\"kind\":\"object\",\"type\":\"MaterialGroup\",\"relationName\":\"MaterialGroupToShareLink\"}],\"dbName\":null},\"AuthSecurity\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"failedAttempts\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"lockedUntil\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"lastAttemptAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Setting\":{\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"StudyActivity\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"occurredAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"MaterialGroup\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"classId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sortOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"class\",\"kind\":\"object\",\"type\":\"Class\",\"relationName\":\"ClassToMaterialGroup\"},{\"name\":\"decks\",\"kind\":\"object\",\"type\":\"Deck\",\"relationName\":\"DeckToMaterialGroup\"},{\"name\":\"quizSets\",\"kind\":\"object\",\"type\":\"QuizSet\",\"relationName\":\"MaterialGroupToQuizSet\"},{\"name\":\"shareLink\",\"kind\":\"object\",\"type\":\"ShareLink\",\"relationName\":\"MaterialGroupToShareLink\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") config.parameterizationSchema = { - strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"class\",\"decks\",\"group\",\"quizSet\",\"question\",\"options\",\"_count\",\"questions\",\"attempts\",\"deck\",\"shareLink\",\"progress\",\"quizSets\",\"cards\",\"materialGroups\",\"Class.findUnique\",\"Class.findUniqueOrThrow\",\"Class.findFirst\",\"Class.findFirstOrThrow\",\"Class.findMany\",\"data\",\"Class.createOne\",\"Class.createMany\",\"Class.createManyAndReturn\",\"Class.updateOne\",\"Class.updateMany\",\"Class.updateManyAndReturn\",\"create\",\"update\",\"Class.upsertOne\",\"Class.deleteOne\",\"Class.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"Class.groupBy\",\"Class.aggregate\",\"Deck.findUnique\",\"Deck.findUniqueOrThrow\",\"Deck.findFirst\",\"Deck.findFirstOrThrow\",\"Deck.findMany\",\"Deck.createOne\",\"Deck.createMany\",\"Deck.createManyAndReturn\",\"Deck.updateOne\",\"Deck.updateMany\",\"Deck.updateManyAndReturn\",\"Deck.upsertOne\",\"Deck.deleteOne\",\"Deck.deleteMany\",\"Deck.groupBy\",\"Deck.aggregate\",\"Flashcard.findUnique\",\"Flashcard.findUniqueOrThrow\",\"Flashcard.findFirst\",\"Flashcard.findFirstOrThrow\",\"Flashcard.findMany\",\"Flashcard.createOne\",\"Flashcard.createMany\",\"Flashcard.createManyAndReturn\",\"Flashcard.updateOne\",\"Flashcard.updateMany\",\"Flashcard.updateManyAndReturn\",\"Flashcard.upsertOne\",\"Flashcard.deleteOne\",\"Flashcard.deleteMany\",\"Flashcard.groupBy\",\"Flashcard.aggregate\",\"QuizSet.findUnique\",\"QuizSet.findUniqueOrThrow\",\"QuizSet.findFirst\",\"QuizSet.findFirstOrThrow\",\"QuizSet.findMany\",\"QuizSet.createOne\",\"QuizSet.createMany\",\"QuizSet.createManyAndReturn\",\"QuizSet.updateOne\",\"QuizSet.updateMany\",\"QuizSet.updateManyAndReturn\",\"QuizSet.upsertOne\",\"QuizSet.deleteOne\",\"QuizSet.deleteMany\",\"QuizSet.groupBy\",\"QuizSet.aggregate\",\"Question.findUnique\",\"Question.findUniqueOrThrow\",\"Question.findFirst\",\"Question.findFirstOrThrow\",\"Question.findMany\",\"Question.createOne\",\"Question.createMany\",\"Question.createManyAndReturn\",\"Question.updateOne\",\"Question.updateMany\",\"Question.updateManyAndReturn\",\"Question.upsertOne\",\"Question.deleteOne\",\"Question.deleteMany\",\"Question.groupBy\",\"Question.aggregate\",\"AnswerOption.findUnique\",\"AnswerOption.findUniqueOrThrow\",\"AnswerOption.findFirst\",\"AnswerOption.findFirstOrThrow\",\"AnswerOption.findMany\",\"AnswerOption.createOne\",\"AnswerOption.createMany\",\"AnswerOption.createManyAndReturn\",\"AnswerOption.updateOne\",\"AnswerOption.updateMany\",\"AnswerOption.updateManyAndReturn\",\"AnswerOption.upsertOne\",\"AnswerOption.deleteOne\",\"AnswerOption.deleteMany\",\"AnswerOption.groupBy\",\"AnswerOption.aggregate\",\"StudyProgress.findUnique\",\"StudyProgress.findUniqueOrThrow\",\"StudyProgress.findFirst\",\"StudyProgress.findFirstOrThrow\",\"StudyProgress.findMany\",\"StudyProgress.createOne\",\"StudyProgress.createMany\",\"StudyProgress.createManyAndReturn\",\"StudyProgress.updateOne\",\"StudyProgress.updateMany\",\"StudyProgress.updateManyAndReturn\",\"StudyProgress.upsertOne\",\"StudyProgress.deleteOne\",\"StudyProgress.deleteMany\",\"StudyProgress.groupBy\",\"StudyProgress.aggregate\",\"QuizAttempt.findUnique\",\"QuizAttempt.findUniqueOrThrow\",\"QuizAttempt.findFirst\",\"QuizAttempt.findFirstOrThrow\",\"QuizAttempt.findMany\",\"QuizAttempt.createOne\",\"QuizAttempt.createMany\",\"QuizAttempt.createManyAndReturn\",\"QuizAttempt.updateOne\",\"QuizAttempt.updateMany\",\"QuizAttempt.updateManyAndReturn\",\"QuizAttempt.upsertOne\",\"QuizAttempt.deleteOne\",\"QuizAttempt.deleteMany\",\"QuizAttempt.groupBy\",\"QuizAttempt.aggregate\",\"ShareLink.findUnique\",\"ShareLink.findUniqueOrThrow\",\"ShareLink.findFirst\",\"ShareLink.findFirstOrThrow\",\"ShareLink.findMany\",\"ShareLink.createOne\",\"ShareLink.createMany\",\"ShareLink.createManyAndReturn\",\"ShareLink.updateOne\",\"ShareLink.updateMany\",\"ShareLink.updateManyAndReturn\",\"ShareLink.upsertOne\",\"ShareLink.deleteOne\",\"ShareLink.deleteMany\",\"ShareLink.groupBy\",\"ShareLink.aggregate\",\"AuthSecurity.findUnique\",\"AuthSecurity.findUniqueOrThrow\",\"AuthSecurity.findFirst\",\"AuthSecurity.findFirstOrThrow\",\"AuthSecurity.findMany\",\"AuthSecurity.createOne\",\"AuthSecurity.createMany\",\"AuthSecurity.createManyAndReturn\",\"AuthSecurity.updateOne\",\"AuthSecurity.updateMany\",\"AuthSecurity.updateManyAndReturn\",\"AuthSecurity.upsertOne\",\"AuthSecurity.deleteOne\",\"AuthSecurity.deleteMany\",\"AuthSecurity.groupBy\",\"AuthSecurity.aggregate\",\"Setting.findUnique\",\"Setting.findUniqueOrThrow\",\"Setting.findFirst\",\"Setting.findFirstOrThrow\",\"Setting.findMany\",\"Setting.createOne\",\"Setting.createMany\",\"Setting.createManyAndReturn\",\"Setting.updateOne\",\"Setting.updateMany\",\"Setting.updateManyAndReturn\",\"Setting.upsertOne\",\"Setting.deleteOne\",\"Setting.deleteMany\",\"Setting.groupBy\",\"Setting.aggregate\",\"MaterialGroup.findUnique\",\"MaterialGroup.findUniqueOrThrow\",\"MaterialGroup.findFirst\",\"MaterialGroup.findFirstOrThrow\",\"MaterialGroup.findMany\",\"MaterialGroup.createOne\",\"MaterialGroup.createMany\",\"MaterialGroup.createManyAndReturn\",\"MaterialGroup.updateOne\",\"MaterialGroup.updateMany\",\"MaterialGroup.updateManyAndReturn\",\"MaterialGroup.upsertOne\",\"MaterialGroup.deleteOne\",\"MaterialGroup.deleteMany\",\"MaterialGroup.groupBy\",\"MaterialGroup.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"classId\",\"name\",\"type\",\"sortOrder\",\"createdAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"key\",\"value\",\"failedAttempts\",\"lockedUntil\",\"lastAttemptAt\",\"targetType\",\"deckId\",\"quizSetId\",\"groupId\",\"score\",\"maxScore\",\"answersJson\",\"isPartialRetake\",\"completedAt\",\"contentType\",\"mode\",\"currentIndex\",\"orderJson\",\"cardResultsJson\",\"updatedAt\",\"questionId\",\"text\",\"isCorrect\",\"prompt\",\"rationale\",\"category\",\"description\",\"front\",\"back\",\"slug\",\"every\",\"some\",\"none\",\"deckId_mode\",\"quizSetId_mode\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"disconnect\",\"delete\",\"connect\",\"createMany\",\"set\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "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_QEBAOgCACH-AQIA7wIAIf8BAQDoAgAhgAIBAJMDACGBAkAA9gIAIQYGAADNBAAgDAAAzAQAIPQBAADCBAAg9QEAAMIEACD5AQAAwgQAIIACAADCBAAgEQYAAPgCACAMAAD3AgAg2gEAAJIDADDbAQAAIQAQ3AEAAJIDADDdAQEAAAAB9AEBAJMDACH1AQEAkwMAIfkBAQCTAwAh_AEBAOgCACH9AQEA6AIAIf4BAgDvAgAh_wEBAOgCACGAAgEAkwMAIYECQAD2AgAhjwIAAJADACCQAgAAkQMAIAMAAAAhACABAAAiADACAAAjACABAAAAAwAgAQAAAAoAIAEAAAAPACABAAAAGAAgAQAAACEAIAEAAAAcACABAAAAAwAgAQAAAAoAIAkMAACPAwAg2gEAAI4DADDbAQAALQAQ3AEAAI4DADDdAQEA6AIAIeEBAgDvAgAh9AEBAOgCACGJAgEA6AIAIYoCAQDoAgAhAQwAAMwEACAJDAAAjwMAINoBAACOAwAw2wEAAC0AENwBAACOAwAw3QEBAAAAAeEBAgDvAgAh9AEBAOgCACGJAgEA6AIAIYoCAQDoAgAhAwAAAC0AIAEAAC4AMAIAAC8AIAEAAAAcACADAAAAIQAgAQAAIgAwAgAAIwAgAQAAAC0AIAEAAAAhACADAAAACgAgAQAACwAwAgAADAAgBAMAAKoFACAEAACnBQAgDQAAqwUAIA8AAKgFACANAwAAjAMAIAQAAIgDACANAACNAwAgDwAAiQMAINoBAACLAwAw2wEAAAcAENwBAACLAwAw3QEBAAAAAd4BAQDoAgAh3wEBAOgCACHgAQEA6AIAIeEBAgDvAgAh4gFAAPYCACEDAAAABwAgAQAANgAwAgAANwAgAQAAAAMAIAEAAAAKACABAAAABwAgAQAAAAEAIAsEAACIAwAgDwAAiQMAIBEAAIoDACDaAQAAhwMAMNsBAAA9ABDcAQAAhwMAMN0BAQDoAgAh3wEBAOgCACHhAQIA7wIAIeIBQAD2AgAhiwIBAOgCACEDBAAApwUAIA8AAKgFACARAACpBQAgAwAAAD0AIAEAAD4AMAIAAAEAIAMAAAA9ACABAAA-ADACAAABACADAAAAPQAgAQAAPgAwAgAAAQAgCAQAAKQFACAPAAClBQAgEQAApgUAIN0BAQAAAAHfAQEAAAAB4QECAAAAAeIBQAAAAAGLAgEAAAABARcAAEIAIAXdAQEAAAAB3wEBAAAAAeEBAgAAAAHiAUAAAAABiwIBAAAAAQEXAABEADABFwAARAAwCAQAAIMFACAPAACEBQAgEQAAhQUAIN0BAQCnAwAh3wEBAKcDACHhAQIAqAMAIeIBQACpAwAhiwIBAKcDACECAAAAAQAgFwAARwAgBd0BAQCnAwAh3wEBAKcDACHhAQIAqAMAIeIBQACpAwAhiwIBAKcDACECAAAAPQAgFwAASQAgAgAAAD0AIBcAAEkAIAMAAAABACAeAABCACAfAABHACABAAAAAQAgAQAAAD0AIAUJAAD-BAAgJAAA_wQAICUAAIIFACAmAACBBQAgJwAAgAUAIAjaAQAAhgMAMNsBAABQABDcAQAAhgMAMN0BAQDcAgAh3wEBANwCACHhAQIA3QIAIeIBQADeAgAhiwIBANwCACEDAAAAPQAgAQAATwAwIwAAUAAgAwAAAD0AIAEAAD4AMAIAAAEAIAEAAAAFACABAAAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACADAAAAAwAgAQAABAAwAgAABQAgDAMAALcEACAFAAD9BAAgDQAAuQQAIA4AALoEACAQAAC4BAAg3QEBAAAAAd4BAQAAAAHfAQEAAAAB4QECAAAAAeIBQAAAAAH2AQEAAAABiAIBAAAAAQEXAABYACAH3QEBAAAAAd4BAQAAAAHfAQEAAAAB4QECAAAAAeIBQAAAAAH2AQEAAAABiAIBAAAAAQEXAABaADABFwAAWgAwAQAAAAcAIAwDAACWBAAgBQAA_AQAIA0AAJgEACAOAACZBAAgEAAAlwQAIN0BAQCnAwAh3gEBAKcDACHfAQEApwMAIeEBAgCoAwAh4gFAAKkDACH2AQEAtQMAIYgCAQC1AwAhAgAAAAUAIBcAAF4AIAfdAQEApwMAId4BAQCnAwAh3wEBAKcDACHhAQIAqAMAIeIBQACpAwAh9gEBALUDACGIAgEAtQMAIQIAAAADACAXAABgACACAAAAAwAgFwAAYAAgAQAAAAcAIAMAAAAFACAeAABYACAfAABeACABAAAABQAgAQAAAAMAIAcJAAD3BAAgJAAA-AQAICUAAPsEACAmAAD6BAAgJwAA-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-QEBAAAAAfwBAQAAAAH9AQEAAAAB_gECAAAAAf8BAQAAAAGAAgEAAAABgQJAAAAAAQEXAADKAQAgCt0BAQAAAAH0AQEAAAAB9QEBAAAAAfkBAQAAAAH8AQEAAAAB_QEBAAAAAf4BAgAAAAH_AQEAAAABgAIBAAAAAYECQAAAAAEBFwAAzAEAMAEXAADMAQAwAQAAAAMAIAEAAAAKACAMBgAAogQAIAwAANMDACDdAQEApwMAIfQBAQC1AwAh9QEBALUDACH5AQEAtQMAIfwBAQCnAwAh_QEBAKcDACH-AQIAqAMAIf8BAQCnAwAhgAIBALUDACGBAkAAqQMAIQIAAAAjACAXAADRAQAgCt0BAQCnAwAh9AEBALUDACH1AQEAtQMAIfkBAQC1AwAh_AEBAKcDACH9AQEApwMAIf4BAgCoAwAh_wEBAKcDACGAAgEAtQMAIYECQACpAwAhAgAAACEAIBcAANMBACACAAAAIQAgFwAA0wEAIAEAAAADACABAAAACgAgAwAAACMAIB4AAMoBACAfAADRAQAgAQAAACMAIAEAAAAhACAJCQAA1gQAICQAANcEACAlAADaBAAgJgAA2QQAICcAANgEACD0AQAAwgQAIPUBAADCBAAg-QEAAMIEACCAAgAAwgQAIA3aAQAAgAMAMNsBAADcAQAQ3AEAAIADADDdAQEA3AIAIfQBAQDyAgAh9QEBAPICACH5AQEA8gIAIfwBAQDcAgAh_QEBANwCACH-AQIA3QIAIf8BAQDcAgAhgAIBAPICACGBAkAA3gIAIQMAAAAhACABAADbAQAwIwAA3AEAIAMAAAAhACABAAAiADACAAAjACABAAAAGgAgAQAAABoAIAMAAAAYACABAAAZADACAAAaACADAAAAGAAgAQAAGQAwAgAAGgAgAwAAABgAIAEAABkAMAIAABoAIAgGAADVBAAg3QEBAAAAAfUBAQAAAAH3AQgAAAAB-AECAAAAAfkBAQAAAAH6ASAAAAAB-wFAAAAAAQEXAADkAQAgB90BAQAAAAH1AQEAAAAB9wEIAAAAAfgBAgAAAAH5AQEAAAAB-gEgAAAAAfsBQAAAAAEBFwAA5gEAMAEXAADmAQAwCAYAANQEACDdAQEApwMAIfUBAQCnAwAh9wEIAOcDACH4AQIAqAMAIfkBAQCnAwAh-gEgAOgDACH7AUAAqQMAIQIAAAAaACAXAADpAQAgB90BAQCnAwAh9QEBAKcDACH3AQgA5wMAIfgBAgCoAwAh-QEBAKcDACH6ASAA6AMAIfsBQACpAwAhAgAAABgAIBcAAOsBACACAAAAGAAgFwAA6wEAIAMAAAAaACAeAADkAQAgHwAA6QEAIAEAAAAaACABAAAAGAAgBQkAAM8EACAkAADQBAAgJQAA0wQAICYAANIEACAnAADRBAAgCtoBAAD6AgAw2wEAAPIBABDcAQAA-gIAMN0BAQDcAgAh9QEBANwCACH3AQgA-wIAIfgBAgDdAgAh-QEBANwCACH6ASAA_AIAIfsBQADeAgAhAwAAABgAIAEAAPEBADAjAADyAQAgAwAAABgAIAEAABkAMAIAABoAIAwFAAD5AgAgBgAA-AIAIAwAAPcCACDaAQAA9QIAMNsBAAAcABDcAQAA9QIAMN0BAQAAAAHiAUAA9gIAIfMBAQDoAgAh9AEBAAAAAfUBAQAAAAH2AQEAAAABAQAAAPUBACABAAAA9QEAIAYFAADOBAAgBgAAzQQAIAwAAMwEACD0AQAAwgQAIPUBAADCBAAg9gEAAMIEACADAAAAHAAgAQAA-AEAMAIAAPUBACADAAAAHAAgAQAA-AEAMAIAAPUBACADAAAAHAAgAQAA-AEAMAIAAPUBACAJBQAA3AMAIAYAALcDACAMAAC2AwAg3QEBAAAAAeIBQAAAAAHzAQEAAAAB9AEBAAAAAfUBAQAAAAH2AQEAAAABARcAAPwBACAG3QEBAAAAAeIBQAAAAAHzAQEAAAAB9AEBAAAAAfUBAQAAAAH2AQEAAAABARcAAP4BADABFwAA_gEAMAEAAAADACABAAAACgAgAQAAAAcAIAkFAADbAwAgBgAAtAMAIAwAALMDACDdAQEApwMAIeIBQACpAwAh8wEBAKcDACH0AQEAtQMAIfUBAQC1AwAh9gEBALUDACECAAAA9QEAIBcAAIQCACAG3QEBAKcDACHiAUAAqQMAIfMBAQCnAwAh9AEBALUDACH1AQEAtQMAIfYBAQC1AwAhAgAAABwAIBcAAIYCACACAAAAHAAgFwAAhgIAIAEAAAADACABAAAACgAgAQAAAAcAIAMAAAD1AQAgHgAA_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-gIAMN0BAQDcAgAh9QEBANwCACH3AQgA-wIAIfgBAgDdAgAh-QEBANwCACH6ASAA_AIAIfsBQADeAgAhDQkAAOACACAkAADjAgAgJQAA4wIAICYAAOMCACAnAADjAgAg4wEIAAAAAeQBCAAAAATlAQgAAAAE5gEIAAAAAecBCAAAAAHoAQgAAAAB6QEIAAAAAeoBCAD_AgAhBQkAAOACACAmAAD-AgAgJwAA_gIAIOMBIAAAAAHqASAA_QIAIQUJAADgAgAgJgAA_gIAICcAAP4CACDjASAAAAAB6gEgAP0CACEC4wEgAAAAAeoBIAD-AgAhDQkAAOACACAkAADjAgAgJQAA4wIAICYAAOMCACAnAADjAgAg4wEIAAAAAeQBCAAAAATlAQgAAAAE5gEIAAAAAecBCAAAAAHoAQgAAAAB6QEIAAAAAeoBCAD_AgAhDdoBAACAAwAw2wEAANwBABDcAQAAgAMAMN0BAQDcAgAh9AEBAPICACH1AQEA8gIAIfkBAQDyAgAh_AEBANwCACH9AQEA3AIAIf4BAgDdAgAh_wEBANwCACGAAgEA8gIAIYECQADeAgAhCNoBAACBAwAw2wEAAMIBABDcAQAAgQMAMN0BAQDcAgAh4QECAN0CACGCAgEA3AIAIYMCAQDcAgAhhAIgAPwCACEK2gEAAIIDADDbAQAArAEAENwBAACCAwAw3QEBANwCACHgAQEA3AIAIeEBAgDdAgAh9QEBANwCACGFAgEA3AIAIYYCAQDcAgAhhwIBANwCACEK2gEAAIMDADDbAQAAlgEAENwBAACDAwAw3QEBANwCACHeAQEA3AIAId8BAQDcAgAh4QECAN0CACHiAUAA3gIAIfYBAQDyAgAhiAIBAPICACEI2gEAAIQDADDbAQAAfgAQ3AEAAIQDADDdAQEA3AIAIeEBAgDdAgAh9AEBANwCACGJAgEA3AIAIYoCAQDcAgAhCtoBAACFAwAw2wEAAGgAENwBAACFAwAw3QEBANwCACHeAQEA3AIAId8BAQDcAgAh4QECAN0CACHiAUAA3gIAIfYBAQDyAgAhiAIBAPICACEI2gEAAIYDADDbAQAAUAAQ3AEAAIYDADDdAQEA3AIAId8BAQDcAgAh4QECAN0CACHiAUAA3gIAIYsCAQDcAgAhCwQAAIgDACAPAACJAwAgEQAAigMAINoBAACHAwAw2wEAAD0AENwBAACHAwAw3QEBAOgCACHfAQEA6AIAIeEBAgDvAgAh4gFAAPYCACGLAgEA6AIAIQOMAgAAAwAgjQIAAAMAII4CAAADACADjAIAAAoAII0CAAAKACCOAgAACgAgA4wCAAAHACCNAgAABwAgjgIAAAcAIA0DAACMAwAgBAAAiAMAIA0AAI0DACAPAACJAwAg2gEAAIsDADDbAQAABwAQ3AEAAIsDADDdAQEA6AIAId4BAQDoAgAh3wEBAOgCACHgAQEA6AIAIeEBAgDvAgAh4gFAAPYCACENBAAAiAMAIA8AAIkDACARAACKAwAg2gEAAIcDADDbAQAAPQAQ3AEAAIcDADDdAQEA6AIAId8BAQDoAgAh4QECAO8CACHiAUAA9gIAIYsCAQDoAgAhkQIAAD0AIJICAAA9ACAOBQAA-QIAIAYAAPgCACAMAAD3AgAg2gEAAPUCADDbAQAAHAAQ3AEAAPUCADDdAQEA6AIAIeIBQAD2AgAh8wEBAOgCACH0AQEAkwMAIfUBAQCTAwAh9gEBAJMDACGRAgAAHAAgkgIAABwAIAkMAACPAwAg2gEAAI4DADDbAQAALQAQ3AEAAI4DADDdAQEA6AIAIeEBAgDvAgAh9AEBAOgCACGJAgEA6AIAIYoCAQDoAgAhEQMAAIwDACAFAAD5AgAgDQAAjQMAIA4AAJ8DACAQAAChAwAg2gEAAKADADDbAQAAAwAQ3AEAAKADADDdAQEA6AIAId4BAQDoAgAh3wEBAOgCACHhAQIA7wIAIeIBQAD2AgAh9gEBAJMDACGIAgEAkwMAIZECAAADACCSAgAAAwAgAvQBAQAAAAH9AQEAAAABAvUBAQAAAAH9AQEAAAABDwYAAPgCACAMAAD3AgAg2gEAAJIDADDbAQAAIQAQ3AEAAJIDADDdAQEA6AIAIfQBAQCTAwAh9QEBAJMDACH5AQEAkwMAIfwBAQDoAgAh_QEBAOgCACH-AQIA7wIAIf8BAQDoAgAhgAIBAJMDACGBAkAA9gIAIQvjAQEAAAAB5AEBAAAABeUBAQAAAAXmAQEAAAAB5wEBAAAAAegBAQAAAAHpAQEAAAAB6gEBAPQCACHrAQEAAAAB7AEBAAAAAe0BAQAAAAELBgAAlwMAINoBAACUAwAw2wEAABgAENwBAACUAwAw3QEBAOgCACH1AQEA6AIAIfcBCACVAwAh-AECAO8CACH5AQEA6AIAIfoBIACWAwAh-wFAAPYCACEI4wEIAAAAAeQBCAAAAATlAQgAAAAE5gEIAAAAAecBCAAAAAHoAQgAAAAB6QEIAAAAAeoBCADjAgAhAuMBIAAAAAHqASAA_gIAIRIDAACMAwAgBQAA-QIAIAoAAJ0DACALAACeAwAgDQAAjQMAIA4AAJ8DACDaAQAAnAMAMNsBAAAKABDcAQAAnAMAMN0BAQDoAgAh3gEBAOgCACHfAQEA6AIAIeEBAgDvAgAh4gFAAPYCACH2AQEAkwMAIYgCAQCTAwAhkQIAAAoAIJICAAAKACAJBwAAmQMAINoBAACYAwAw2wEAABMAENwBAACYAwAw3QEBAOgCACHhAQIA7wIAIYICAQDoAgAhgwIBAOgCACGEAiAAlgMAIQ4GAACXAwAgCAAAmwMAINoBAACaAwAw2wEAAA8AENwBAACaAwAw3QEBAOgCACHgAQEA6AIAIeEBAgDvAgAh9QEBAOgCACGFAgEA6AIAIYYCAQDoAgAhhwIBAOgCACGRAgAADwAgkgIAAA8AIAwGAACXAwAgCAAAmwMAINoBAACaAwAw2wEAAA8AENwBAACaAwAw3QEBAOgCACHgAQEA6AIAIeEBAgDvAgAh9QEBAOgCACGFAgEA6AIAIYYCAQDoAgAhhwIBAOgCACEDjAIAABMAII0CAAATACCOAgAAEwAgEAMAAIwDACAFAAD5AgAgCgAAnQMAIAsAAJ4DACANAACNAwAgDgAAnwMAINoBAACcAwAw2wEAAAoAENwBAACcAwAw3QEBAOgCACHeAQEA6AIAId8BAQDoAgAh4QECAO8CACHiAUAA9gIAIfYBAQCTAwAhiAIBAJMDACEDjAIAAA8AII0CAAAPACCOAgAADwAgA4wCAAAYACCNAgAAGAAgjgIAABgAIAOMAgAAIQAgjQIAACEAII4CAAAhACAPAwAAjAMAIAUAAPkCACANAACNAwAgDgAAnwMAIBAAAKEDACDaAQAAoAMAMNsBAAADABDcAQAAoAMAMN0BAQDoAgAh3gEBAOgCACHfAQEA6AIAIeEBAgDvAgAh4gFAAPYCACH2AQEAkwMAIYgCAQCTAwAhA4wCAAAtACCNAgAALQAgjgIAAC0AIAAAAAAAAZkCAQAAAAEFmQICAAAAAZwCAgAAAAGdAgIAAAABngICAAAAAZ8CAgAAAAEBmQJAAAAAAQUeAADTBQAgHwAAgQYAIJMCAADUBQAglAIAAIAGACCXAgAAAQAgCx4AAIsEADAfAACQBAAwkwIAAIwEADCUAgAAjQQAMJUCAACPBAAwlgIAAI8EADCXAgAAjwQAMJgCAACOBAAgmQIAAI8EADCaAgAAkQQAMJsCAACSBAAwCx4AALgDADAfAAC9AwAwkwIAALkDADCUAgAAugMAMJUCAAC8AwAwlgIAALwDADCXAgAAvAMAMJgCAAC7AwAgmQIAALwDADCaAgAAvgMAMJsCAAC_AwAwBx4AAK4DACAfAACxAwAgkwIAAK8DACCUAgAAsAMAIJUCAAAcACCWAgAAHAAglwIAAPUBACAHBgAAtwMAIAwAALYDACDdAQEAAAAB4gFAAAAAAfMBAQAAAAH0AQEAAAAB9QEBAAAAAQIAAAD1AQAgHgAArgMAIAMAAAAcACAeAACuAwAgHwAAsgMAIAkAAAAcACAGAAC0AwAgDAAAswMAIBcAALIDACDdAQEApwMAIeIBQACpAwAh8wEBAKcDACH0AQEAtQMAIfUBAQC1AwAhBwYAALQDACAMAACzAwAg3QEBAKcDACHiAUAAqQMAIfMBAQCnAwAh9AEBALUDACH1AQEAtQMAIQceAAD4BQAgHwAA_gUAIJMCAAD5BQAglAIAAP0FACCVAgAAAwAglgIAAAMAIJcCAAAFACAHHgAA9gUAIB8AAPsFACCTAgAA9wUAIJQCAAD6BQAglQIAAAoAIJYCAAAKACCXAgAADAAgAZkCAQAAAAEDHgAA-AUAIJMCAAD5BQAglwIAAAUAIAMeAAD2BQAgkwIAAPcFACCXAgAADAAgCwMAAIYEACAKAACHBAAgCwAAiAQAIA0AAIkEACAOAACKBAAg3QEBAAAAAd4BAQAAAAHfAQEAAAAB4QECAAAAAeIBQAAAAAGIAgEAAAABAgAAAAwAIB4AAIUEACADAAAADAAgHgAAhQQAIB8AAMIDACABFwAA9QUAMBADAACMAwAgBQAA-QIAIAoAAJ0DACALAACeAwAgDQAAjQMAIA4AAJ8DACDaAQAAnAMAMNsBAAAKABDcAQAAnAMAMN0BAQAAAAHeAQEA6AIAId8BAQDoAgAh4QECAO8CACHiAUAA9gIAIfYBAQCTAwAhiAIBAJMDACECAAAADAAgFwAAwgMAIAIAAADAAwAgFwAAwQMAIAraAQAAvwMAMNsBAADAAwAQ3AEAAL8DADDdAQEA6AIAId4BAQDoAgAh3wEBAOgCACHhAQIA7wIAIeIBQAD2AgAh9gEBAJMDACGIAgEAkwMAIQraAQAAvwMAMNsBAADAAwAQ3AEAAL8DADDdAQEA6AIAId4BAQDoAgAh3wEBAOgCACHhAQIA7wIAIeIBQAD2AgAh9gEBAJMDACGIAgEAkwMAIQbdAQEApwMAId4BAQCnAwAh3wEBAKcDACHhAQIAqAMAIeIBQACpAwAhiAIBALUDACELAwAAwwMAIAoAAMQDACALAADFAwAgDQAAxgMAIA4AAMcDACDdAQEApwMAId4BAQCnAwAh3wEBAKcDACHhAQIAqAMAIeIBQACpAwAhiAIBALUDACEFHgAA4gUAIB8AAPMFACCTAgAA4wUAIJQCAADyBQAglwIAAAEAIAseAADrAwAwHwAA8AMAMJMCAADsAwAwlAIAAO0DADCVAgAA7wMAMJYCAADvAwAwlwIAAO8DADCYAgAA7gMAIJkCAADvAwAwmgIAAPEDADCbAgAA8gMAMAseAADdAwAwHwAA4gMAMJMCAADeAwAwlAIAAN8DADCVAgAA4QMAMJYCAADhAwAwlwIAAOEDADCYAgAA4AMAIJkCAADhAwAwmgIAAOMDADCbAgAA5AMAMAceAADWAwAgHwAA2QMAIJMCAADXAwAglAIAANgDACCVAgAAHAAglgIAABwAIJcCAAD1AQAgCx4AAMgDADAfAADNAwAwkwIAAMkDADCUAgAAygMAMJUCAADMAwAwlgIAAMwDADCXAgAAzAMAMJgCAADLAwAgmQIAAMwDADCaAgAAzgMAMJsCAADPAwAwCgwAANUDACDdAQEAAAAB9AEBAAAAAfkBAQAAAAH8AQEAAAAB_QEBAAAAAf4BAgAAAAH_AQEAAAABgAIBAAAAAYECQAAAAAECAAAAIwAgHgAA1AMAIAMAAAAjACAeAADUAwAgHwAA0gMAIAEXAADxBQAwEQYAAPgCACAMAAD3AgAg2gEAAJIDADDbAQAAIQAQ3AEAAJIDADDdAQEAAAAB9AEBAJMDACH1AQEAkwMAIfkBAQCTAwAh_AEBAOgCACH9AQEA6AIAIf4BAgDvAgAh_wEBAOgCACGAAgEAkwMAIYECQAD2AgAhjwIAAJADACCQAgAAkQMAIAIAAAAjACAXAADSAwAgAgAAANADACAXAADRAwAgDdoBAADPAwAw2wEAANADABDcAQAAzwMAMN0BAQDoAgAh9AEBAJMDACH1AQEAkwMAIfkBAQCTAwAh_AEBAOgCACH9AQEA6AIAIf4BAgDvAgAh_wEBAOgCACGAAgEAkwMAIYECQAD2AgAhDdoBAADPAwAw2wEAANADABDcAQAAzwMAMN0BAQDoAgAh9AEBAJMDACH1AQEAkwMAIfkBAQCTAwAh_AEBAOgCACH9AQEA6AIAIf4BAgDvAgAh_wEBAOgCACGAAgEAkwMAIYECQAD2AgAhCd0BAQCnAwAh9AEBALUDACH5AQEAtQMAIfwBAQCnAwAh_QEBAKcDACH-AQIAqAMAIf8BAQCnAwAhgAIBALUDACGBAkAAqQMAIQoMAADTAwAg3QEBAKcDACH0AQEAtQMAIfkBAQC1AwAh_AEBAKcDACH9AQEApwMAIf4BAgCoAwAh_wEBAKcDACGAAgEAtQMAIYECQACpAwAhBx4AAOwFACAfAADvBQAgkwIAAO0FACCUAgAA7gUAIJUCAAADACCWAgAAAwAglwIAAAUAIAoMAADVAwAg3QEBAAAAAfQBAQAAAAH5AQEAAAAB_AEBAAAAAf0BAQAAAAH-AQIAAAAB_wEBAAAAAYACAQAAAAGBAkAAAAABAx4AAOwFACCTAgAA7QUAIJcCAAAFACAHBQAA3AMAIAwAALYDACDdAQEAAAAB4gFAAAAAAfMBAQAAAAH0AQEAAAAB9gEBAAAAAQIAAAD1AQAgHgAA1gMAIAMAAAAcACAeAADWAwAgHwAA2gMAIAkAAAAcACAFAADbAwAgDAAAswMAIBcAANoDACDdAQEApwMAIeIBQACpAwAh8wEBAKcDACH0AQEAtQMAIfYBAQC1AwAhBwUAANsDACAMAACzAwAg3QEBAKcDACHiAUAAqQMAIfMBAQCnAwAh9AEBALUDACH2AQEAtQMAIQceAADnBQAgHwAA6gUAIJMCAADoBQAglAIAAOkFACCVAgAABwAglgIAAAcAIJcCAAA3ACADHgAA5wUAIJMCAADoBQAglwIAADcAIAbdAQEAAAAB9wEIAAAAAfgBAgAAAAH5AQEAAAAB-gEgAAAAAfsBQAAAAAECAAAAGgAgHgAA6gMAIAMAAAAaACAeAADqAwAgHwAA6QMAIAEXAADmBQAwCwYAAJcDACDaAQAAlAMAMNsBAAAYABDcAQAAlAMAMN0BAQAAAAH1AQEA6AIAIfcBCACVAwAh-AECAO8CACH5AQEA6AIAIfoBIACWAwAh-wFAAPYCACECAAAAGgAgFwAA6QMAIAIAAADlAwAgFwAA5gMAIAraAQAA5AMAMNsBAADlAwAQ3AEAAOQDADDdAQEA6AIAIfUBAQDoAgAh9wEIAJUDACH4AQIA7wIAIfkBAQDoAgAh-gEgAJYDACH7AUAA9gIAIQraAQAA5AMAMNsBAADlAwAQ3AEAAOQDADDdAQEA6AIAIfUBAQDoAgAh9wEIAJUDACH4AQIA7wIAIfkBAQDoAgAh-gEgAJYDACH7AUAA9gIAIQbdAQEApwMAIfcBCADnAwAh-AECAKgDACH5AQEApwMAIfoBIADoAwAh-wFAAKkDACEFmQIIAAAAAZwCCAAAAAGdAggAAAABngIIAAAAAZ8CCAAAAAEBmQIgAAAAAQbdAQEApwMAIfcBCADnAwAh-AECAKgDACH5AQEApwMAIfoBIADoAwAh-wFAAKkDACEG3QEBAAAAAfcBCAAAAAH4AQIAAAAB-QEBAAAAAfoBIAAAAAH7AUAAAAABBwgAAIQEACDdAQEAAAAB4AEBAAAAAeEBAgAAAAGFAgEAAAABhgIBAAAAAYcCAQAAAAECAAAAEQAgHgAAgwQAIAMAAAARACAeAACDBAAgHwAA9QMAIAEXAADlBQAwDAYAAJcDACAIAACbAwAg2gEAAJoDADDbAQAADwAQ3AEAAJoDADDdAQEAAAAB4AEBAOgCACHhAQIA7wIAIfUBAQDoAgAhhQIBAOgCACGGAgEA6AIAIYcCAQDoAgAhAgAAABEAIBcAAPUDACACAAAA8wMAIBcAAPQDACAK2gEAAPIDADDbAQAA8wMAENwBAADyAwAw3QEBAOgCACHgAQEA6AIAIeEBAgDvAgAh9QEBAOgCACGFAgEA6AIAIYYCAQDoAgAhhwIBAOgCACEK2gEAAPIDADDbAQAA8wMAENwBAADyAwAw3QEBAOgCACHgAQEA6AIAIeEBAgDvAgAh9QEBAOgCACGFAgEA6AIAIYYCAQDoAgAhhwIBAOgCACEG3QEBAKcDACHgAQEApwMAIeEBAgCoAwAhhQIBAKcDACGGAgEApwMAIYcCAQCnAwAhBwgAAPYDACDdAQEApwMAIeABAQCnAwAh4QECAKgDACGFAgEApwMAIYYCAQCnAwAhhwIBAKcDACELHgAA9wMAMB8AAPwDADCTAgAA-AMAMJQCAAD5AwAwlQIAAPsDADCWAgAA-wMAMJcCAAD7AwAwmAIAAPoDACCZAgAA-wMAMJoCAAD9AwAwmwIAAP4DADAE3QEBAAAAAeEBAgAAAAGDAgEAAAABhAIgAAAAAQIAAAAVACAeAACCBAAgAwAAABUAIB4AAIIEACAfAACBBAAgARcAAOQFADAJBwAAmQMAINoBAACYAwAw2wEAABMAENwBAACYAwAw3QEBAAAAAeEBAgDvAgAhggIBAOgCACGDAgEA6AIAIYQCIACWAwAhAgAAABUAIBcAAIEEACACAAAA_wMAIBcAAIAEACAI2gEAAP4DADDbAQAA_wMAENwBAAD-AwAw3QEBAOgCACHhAQIA7wIAIYICAQDoAgAhgwIBAOgCACGEAiAAlgMAIQjaAQAA_gMAMNsBAAD_AwAQ3AEAAP4DADDdAQEA6AIAIeEBAgDvAgAhggIBAOgCACGDAgEA6AIAIYQCIACWAwAhBN0BAQCnAwAh4QECAKgDACGDAgEApwMAIYQCIADoAwAhBN0BAQCnAwAh4QECAKgDACGDAgEApwMAIYQCIADoAwAhBN0BAQAAAAHhAQIAAAABgwIBAAAAAYQCIAAAAAEHCAAAhAQAIN0BAQAAAAHgAQEAAAAB4QECAAAAAYUCAQAAAAGGAgEAAAABhwIBAAAAAQQeAAD3AwAwkwIAAPgDADCXAgAA-wMAMJgCAAD6AwAgCwMAAIYEACAKAACHBAAgCwAAiAQAIA0AAIkEACAOAACKBAAg3QEBAAAAAd4BAQAAAAHfAQEAAAAB4QECAAAAAeIBQAAAAAGIAgEAAAABAx4AAOIFACCTAgAA4wUAIJcCAAABACAEHgAA6wMAMJMCAADsAwAwlwIAAO8DADCYAgAA7gMAIAQeAADdAwAwkwIAAN4DADCXAgAA4QMAMJgCAADgAwAgAx4AANYDACCTAgAA1wMAIJcCAAD1AQAgBB4AAMgDADCTAgAAyQMAMJcCAADMAwAwmAIAAMsDACAKAwAAtwQAIA0AALkEACAOAAC6BAAgEAAAuAQAIN0BAQAAAAHeAQEAAAAB3wEBAAAAAeEBAgAAAAHiAUAAAAABiAIBAAAAAQIAAAAFACAeAAC2BAAgAwAAAAUAIB4AALYEACAfAACVBAAgARcAAOEFADAPAwAAjAMAIAUAAPkCACANAACNAwAgDgAAnwMAIBAAAKEDACDaAQAAoAMAMNsBAAADABDcAQAAoAMAMN0BAQAAAAHeAQEA6AIAId8BAQDoAgAh4QECAO8CACHiAUAA9gIAIfYBAQCTAwAhiAIBAJMDACECAAAABQAgFwAAlQQAIAIAAACTBAAgFwAAlAQAIAraAQAAkgQAMNsBAACTBAAQ3AEAAJIEADDdAQEA6AIAId4BAQDoAgAh3wEBAOgCACHhAQIA7wIAIeIBQAD2AgAh9gEBAJMDACGIAgEAkwMAIQraAQAAkgQAMNsBAACTBAAQ3AEAAJIEADDdAQEA6AIAId4BAQDoAgAh3wEBAOgCACHhAQIA7wIAIeIBQAD2AgAh9gEBAJMDACGIAgEAkwMAIQbdAQEApwMAId4BAQCnAwAh3wEBAKcDACHhAQIAqAMAIeIBQACpAwAhiAIBALUDACEKAwAAlgQAIA0AAJgEACAOAACZBAAgEAAAlwQAIN0BAQCnAwAh3gEBAKcDACHfAQEApwMAIeEBAgCoAwAh4gFAAKkDACGIAgEAtQMAIQUeAADVBQAgHwAA3wUAIJMCAADWBQAglAIAAN4FACCXAgAAAQAgCx4AAKoEADAfAACvBAAwkwIAAKsEADCUAgAArAQAMJUCAACuBAAwlgIAAK4EADCXAgAArgQAMJgCAACtBAAgmQIAAK4EADCaAgAAsAQAMJsCAACxBAAwBx4AAKUEACAfAACoBAAgkwIAAKYEACCUAgAApwQAIJUCAAAcACCWAgAAHAAglwIAAPUBACALHgAAmgQAMB8AAJ4EADCTAgAAmwQAMJQCAACcBAAwlQIAAMwDADCWAgAAzAMAMJcCAADMAwAwmAIAAJ0EACCZAgAAzAMAMJoCAACfBAAwmwIAAM8DADAKBgAApAQAIN0BAQAAAAH1AQEAAAAB-QEBAAAAAfwBAQAAAAH9AQEAAAAB_gECAAAAAf8BAQAAAAGAAgEAAAABgQJAAAAAAQIAAAAjACAeAACjBAAgAwAAACMAIB4AAKMEACAfAAChBAAgARcAAN0FADACAAAAIwAgFwAAoQQAIAIAAADQAwAgFwAAoAQAIAndAQEApwMAIfUBAQC1AwAh-QEBALUDACH8AQEApwMAIf0BAQCnAwAh_gECAKgDACH_AQEApwMAIYACAQC1AwAhgQJAAKkDACEKBgAAogQAIN0BAQCnAwAh9QEBALUDACH5AQEAtQMAIfwBAQCnAwAh_QEBAKcDACH-AQIAqAMAIf8BAQCnAwAhgAIBALUDACGBAkAAqQMAIQceAADYBQAgHwAA2wUAIJMCAADZBQAglAIAANoFACCVAgAACgAglgIAAAoAIJcCAAAMACAKBgAApAQAIN0BAQAAAAH1AQEAAAAB-QEBAAAAAfwBAQAAAAH9AQEAAAAB_gECAAAAAf8BAQAAAAGAAgEAAAABgQJAAAAAAQMeAADYBQAgkwIAANkFACCXAgAADAAgBwUAANwDACAGAAC3AwAg3QEBAAAAAeIBQAAAAAHzAQEAAAAB9QEBAAAAAfYBAQAAAAECAAAA9QEAIB4AAKUEACADAAAAHAAgHgAApQQAIB8AAKkEACAJAAAAHAAgBQAA2wMAIAYAALQDACAXAACpBAAg3QEBAKcDACHiAUAAqQMAIfMBAQCnAwAh9QEBALUDACH2AQEAtQMAIQcFAADbAwAgBgAAtAMAIN0BAQCnAwAh4gFAAKkDACHzAQEApwMAIfUBAQC1AwAh9gEBALUDACEE3QEBAAAAAeEBAgAAAAGJAgEAAAABigIBAAAAAQIAAAAvACAeAAC1BAAgAwAAAC8AIB4AALUEACAfAAC0BAAgARcAANcFADAJDAAAjwMAINoBAACOAwAw2wEAAC0AENwBAACOAwAw3QEBAAAAAeEBAgDvAgAh9AEBAOgCACGJAgEA6AIAIYoCAQDoAgAhAgAAAC8AIBcAALQEACACAAAAsgQAIBcAALMEACAI2gEAALEEADDbAQAAsgQAENwBAACxBAAw3QEBAOgCACHhAQIA7wIAIfQBAQDoAgAhiQIBAOgCACGKAgEA6AIAIQjaAQAAsQQAMNsBAACyBAAQ3AEAALEEADDdAQEA6AIAIeEBAgDvAgAh9AEBAOgCACGJAgEA6AIAIYoCAQDoAgAhBN0BAQCnAwAh4QECAKgDACGJAgEApwMAIYoCAQCnAwAhBN0BAQCnAwAh4QECAKgDACGJAgEApwMAIYoCAQCnAwAhBN0BAQAAAAHhAQIAAAABiQIBAAAAAYoCAQAAAAEKAwAAtwQAIA0AALkEACAOAAC6BAAgEAAAuAQAIN0BAQAAAAHeAQEAAAAB3wEBAAAAAeEBAgAAAAHiAUAAAAABiAIBAAAAAQMeAADVBQAgkwIAANYFACCXAgAAAQAgBB4AAKoEADCTAgAAqwQAMJcCAACuBAAwmAIAAK0EACADHgAApQQAIJMCAACmBAAglwIAAPUBACAEHgAAmgQAMJMCAACbBAAwlwIAAMwDADCYAgAAnQQAIAMeAADTBQAgkwIAANQFACCXAgAAAQAgBB4AAIsEADCTAgAAjAQAMJcCAACPBAAwmAIAAI4EACAEHgAAuAMAMJMCAAC5AwAwlwIAALwDADCYAgAAuwMAIAMeAACuAwAgkwIAAK8DACCXAgAA9QEAIAAAAAAAAAAAAAGZAkAAAAABAAAABwMAAKoFACAFAADOBAAgDQAAqwUAIA4AALAFACAQAACxBQAg9gEAAMIEACCIAgAAwgQAIAgDAACqBQAgBQAAzgQAIAoAAK4FACALAACvBQAgDQAAqwUAIA4AALAFACD2AQAAwgQAIIgCAADCBAAgBAMAAKoFACAEAACnBQAgDQAAqwUAIA8AAKgFACAAAAAAAAUeAADOBQAgHwAA0QUAIJMCAADPBQAglAIAANAFACCXAgAADAAgAx4AAM4FACCTAgAAzwUAIJcCAAAMACAAAAAAAAAAAAAABR4AAMkFACAfAADMBQAgkwIAAMoFACCUAgAAywUAIJcCAAARACADHgAAyQUAIJMCAADKBQAglwIAABEAIAAAAAAABR4AAMQFACAfAADHBQAgkwIAAMUFACCUAgAAxgUAIJcCAAAMACADHgAAxAUAIJMCAADFBQAglwIAAAwAIAAAAAAABx4AAL8FACAfAADCBQAgkwIAAMAFACCUAgAAwQUAIJUCAAAHACCWAgAABwAglwIAADcAIAMeAAC_BQAgkwIAAMAFACCXAgAANwAgAAAAAAAFHgAAugUAIB8AAL0FACCTAgAAuwUAIJQCAAC8BQAglwIAAAUAIAMeAAC6BQAgkwIAALsFACCXAgAABQAgAAAAAAAHHgAAtQUAIB8AALgFACCTAgAAtgUAIJQCAAC3BQAglQIAAAcAIJYCAAAHACCXAgAANwAgAx4AALUFACCTAgAAtgUAIJcCAAA3ACAAAAAAAAseAACbBQAwHwAAnwUAMJMCAACcBQAwlAIAAJ0FADCVAgAAjwQAMJYCAACPBAAwlwIAAI8EADCYAgAAngUAIJkCAACPBAAwmgIAAKAFADCbAgAAkgQAMAseAACSBQAwHwAAlgUAMJMCAACTBQAwlAIAAJQFADCVAgAAvAMAMJYCAAC8AwAwlwIAALwDADCYAgAAlQUAIJkCAAC8AwAwmgIAAJcFADCbAgAAvwMAMAseAACGBQAwHwAAiwUAMJMCAACHBQAwlAIAAIgFADCVAgAAigUAMJYCAACKBQAwlwIAAIoFADCYAgAAiQUAIJkCAACKBQAwmgIAAIwFADCbAgAAjQUAMAgEAAC8BAAgDQAAvgQAIA8AAL0EACDdAQEAAAAB3wEBAAAAAeABAQAAAAHhAQIAAAAB4gFAAAAAAQIAAAA3ACAeAACRBQAgAwAAADcAIB4AAJEFACAfAACQBQAgARcAALQFADANAwAAjAMAIAQAAIgDACANAACNAwAgDwAAiQMAINoBAACLAwAw2wEAAAcAENwBAACLAwAw3QEBAAAAAd4BAQDoAgAh3wEBAOgCACHgAQEA6AIAIeEBAgDvAgAh4gFAAPYCACECAAAANwAgFwAAkAUAIAIAAACOBQAgFwAAjwUAIAnaAQAAjQUAMNsBAACOBQAQ3AEAAI0FADDdAQEA6AIAId4BAQDoAgAh3wEBAOgCACHgAQEA6AIAIeEBAgDvAgAh4gFAAPYCACEJ2gEAAI0FADDbAQAAjgUAENwBAACNBQAw3QEBAOgCACHeAQEA6AIAId8BAQDoAgAh4AEBAOgCACHhAQIA7wIAIeIBQAD2AgAhBd0BAQCnAwAh3wEBAKcDACHgAQEApwMAIeEBAgCoAwAh4gFAAKkDACEIBAAAqwMAIA0AAK0DACAPAACsAwAg3QEBAKcDACHfAQEApwMAIeABAQCnAwAh4QECAKgDACHiAUAAqQMAIQgEAAC8BAAgDQAAvgQAIA8AAL0EACDdAQEAAAAB3wEBAAAAAeABAQAAAAHhAQIAAAAB4gFAAAAAAQsFAADvBAAgCgAAhwQAIAsAAIgEACANAACJBAAgDgAAigQAIN0BAQAAAAHfAQEAAAAB4QECAAAAAeIBQAAAAAH2AQEAAAABiAIBAAAAAQIAAAAMACAeAACaBQAgAwAAAAwAIB4AAJoFACAfAACZBQAgARcAALMFADACAAAADAAgFwAAmQUAIAIAAADAAwAgFwAAmAUAIAbdAQEApwMAId8BAQCnAwAh4QECAKgDACHiAUAAqQMAIfYBAQC1AwAhiAIBALUDACELBQAA7gQAIAoAAMQDACALAADFAwAgDQAAxgMAIA4AAMcDACDdAQEApwMAId8BAQCnAwAh4QECAKgDACHiAUAAqQMAIfYBAQC1AwAhiAIBALUDACELBQAA7wQAIAoAAIcEACALAACIBAAgDQAAiQQAIA4AAIoEACDdAQEAAAAB3wEBAAAAAeEBAgAAAAHiAUAAAAAB9gEBAAAAAYgCAQAAAAEKBQAA_QQAIA0AALkEACAOAAC6BAAgEAAAuAQAIN0BAQAAAAHfAQEAAAAB4QECAAAAAeIBQAAAAAH2AQEAAAABiAIBAAAAAQIAAAAFACAeAACjBQAgAwAAAAUAIB4AAKMFACAfAACiBQAgARcAALIFADACAAAABQAgFwAAogUAIAIAAACTBAAgFwAAoQUAIAbdAQEApwMAId8BAQCnAwAh4QECAKgDACHiAUAAqQMAIfYBAQC1AwAhiAIBALUDACEKBQAA_AQAIA0AAJgEACAOAACZBAAgEAAAlwQAIN0BAQCnAwAh3wEBAKcDACHhAQIAqAMAIeIBQACpAwAh9gEBALUDACGIAgEAtQMAIQoFAAD9BAAgDQAAuQQAIA4AALoEACAQAAC4BAAg3QEBAAAAAd8BAQAAAAHhAQIAAAAB4gFAAAAAAfYBAQAAAAGIAgEAAAABBB4AAJsFADCTAgAAnAUAMJcCAACPBAAwmAIAAJ4FACAEHgAAkgUAMJMCAACTBQAwlwIAALwDADCYAgAAlQUAIAQeAACGBQAwkwIAAIcFADCXAgAAigUAMJgCAACJBQAgAAAAAwQAAKcFACAPAACoBQAgEQAAqQUAIAYFAADOBAAgBgAAzQQAIAwAAMwEACD0AQAAwgQAIPUBAADCBAAg9gEAAMIEACACBgAAzQQAIAgAAK0FACAAAAAAAAbdAQEAAAAB3wEBAAAAAeEBAgAAAAHiAUAAAAAB9gEBAAAAAYgCAQAAAAEG3QEBAAAAAd8BAQAAAAHhAQIAAAAB4gFAAAAAAfYBAQAAAAGIAgEAAAABBd0BAQAAAAHfAQEAAAAB4AEBAAAAAeEBAgAAAAHiAUAAAAABCQMAALsEACANAAC-BAAgDwAAvQQAIN0BAQAAAAHeAQEAAAAB3wEBAAAAAeABAQAAAAHhAQIAAAAB4gFAAAAAAQIAAAA3ACAeAAC1BQAgAwAAAAcAIB4AALUFACAfAAC5BQAgCwAAAAcAIAMAAKoDACANAACtAwAgDwAArAMAIBcAALkFACDdAQEApwMAId4BAQCnAwAh3wEBAKcDACHgAQEApwMAIeEBAgCoAwAh4gFAAKkDACEJAwAAqgMAIA0AAK0DACAPAACsAwAg3QEBAKcDACHeAQEApwMAId8BAQCnAwAh4AEBAKcDACHhAQIAqAMAIeIBQACpAwAhCwMAALcEACAFAAD9BAAgDQAAuQQAIA4AALoEACDdAQEAAAAB3gEBAAAAAd8BAQAAAAHhAQIAAAAB4gFAAAAAAfYBAQAAAAGIAgEAAAABAgAAAAUAIB4AALoFACADAAAAAwAgHgAAugUAIB8AAL4FACANAAAAAwAgAwAAlgQAIAUAAPwEACANAACYBAAgDgAAmQQAIBcAAL4FACDdAQEApwMAId4BAQCnAwAh3wEBAKcDACHhAQIAqAMAIeIBQACpAwAh9gEBALUDACGIAgEAtQMAIQsDAACWBAAgBQAA_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_AEBAAAAAf0BAQAAAAH-AQIAAAAB_wEBAAAAAYACAQAAAAGBAkAAAAABAwAAAD0AIB4AANUFACAfAADgBQAgCQAAAD0AIA8AAIQFACARAACFBQAgFwAA4AUAIN0BAQCnAwAh3wEBAKcDACHhAQIAqAMAIeIBQACpAwAhiwIBAKcDACEHDwAAhAUAIBEAAIUFACDdAQEApwMAId8BAQCnAwAh4QECAKgDACHiAUAAqQMAIYsCAQCnAwAhBt0BAQAAAAHeAQEAAAAB3wEBAAAAAeEBAgAAAAHiAUAAAAABiAIBAAAAAQcEAACkBQAgEQAApgUAIN0BAQAAAAHfAQEAAAAB4QECAAAAAeIBQAAAAAGLAgEAAAABAgAAAAEAIB4AAOIFACAE3QEBAAAAAeEBAgAAAAGDAgEAAAABhAIgAAAAAQbdAQEAAAAB4AEBAAAAAeEBAgAAAAGFAgEAAAABhgIBAAAAAYcCAQAAAAEG3QEBAAAAAfcBCAAAAAH4AQIAAAAB-QEBAAAAAfoBIAAAAAH7AUAAAAABCQMAALsEACAEAAC8BAAgDwAAvQQAIN0BAQAAAAHeAQEAAAAB3wEBAAAAAeABAQAAAAHhAQIAAAAB4gFAAAAAAQIAAAA3ACAeAADnBQAgAwAAAAcAIB4AAOcFACAfAADrBQAgCwAAAAcAIAMAAKoDACAEAACrAwAgDwAArAMAIBcAAOsFACDdAQEApwMAId4BAQCnAwAh3wEBAKcDACHgAQEApwMAIeEBAgCoAwAh4gFAAKkDACEJAwAAqgMAIAQAAKsDACAPAACsAwAg3QEBAKcDACHeAQEApwMAId8BAQCnAwAh4AEBAKcDACHhAQIAqAMAIeIBQACpAwAhCwMAALcEACAFAAD9BAAgDQAAuQQAIBAAALgEACDdAQEAAAAB3gEBAAAAAd8BAQAAAAHhAQIAAAAB4gFAAAAAAfYBAQAAAAGIAgEAAAABAgAAAAUAIB4AAOwFACADAAAAAwAgHgAA7AUAIB8AAPAFACANAAAAAwAgAwAAlgQAIAUAAPwEACANAACYBAAgEAAAlwQAIBcAAPAFACDdAQEApwMAId4BAQCnAwAh3wEBAKcDACHhAQIAqAMAIeIBQACpAwAh9gEBALUDACGIAgEAtQMAIQsDAACWBAAgBQAA_AQAIA0AAJgEACAQAACXBAAg3QEBAKcDACHeAQEApwMAId8BAQCnAwAh4QECAKgDACHiAUAAqQMAIfYBAQC1AwAhiAIBALUDACEJ3QEBAAAAAfQBAQAAAAH5AQEAAAAB_AEBAAAAAf0BAQAAAAH-AQIAAAAB_wEBAAAAAYACAQAAAAGBAkAAAAABAwAAAD0AIB4AAOIFACAfAAD0BQAgCQAAAD0AIAQAAIMFACARAACFBQAgFwAA9AUAIN0BAQCnAwAh3wEBAKcDACHhAQIAqAMAIeIBQACpAwAhiwIBAKcDACEHBAAAgwUAIBEAAIUFACDdAQEApwMAId8BAQCnAwAh4QECAKgDACHiAUAAqQMAIYsCAQCnAwAhBt0BAQAAAAHeAQEAAAAB3wEBAAAAAeEBAgAAAAHiAUAAAAABiAIBAAAAAQwDAACGBAAgBQAA7wQAIAoAAIcEACALAACIBAAgDgAAigQAIN0BAQAAAAHeAQEAAAAB3wEBAAAAAeEBAgAAAAHiAUAAAAAB9gEBAAAAAYgCAQAAAAECAAAADAAgHgAA9gUAIAsDAAC3BAAgBQAA_QQAIA4AALoEACAQAAC4BAAg3QEBAAAAAd4BAQAAAAHfAQEAAAAB4QECAAAAAeIBQAAAAAH2AQEAAAABiAIBAAAAAQIAAAAFACAeAAD4BQAgAwAAAAoAIB4AAPYFACAfAAD8BQAgDgAAAAoAIAMAAMMDACAFAADuBAAgCgAAxAMAIAsAAMUDACAOAADHAwAgFwAA_AUAIN0BAQCnAwAh3gEBAKcDACHfAQEApwMAIeEBAgCoAwAh4gFAAKkDACH2AQEAtQMAIYgCAQC1AwAhDAMAAMMDACAFAADuBAAgCgAAxAMAIAsAAMUDACAOAADHAwAg3QEBAKcDACHeAQEApwMAId8BAQCnAwAh4QECAKgDACHiAUAAqQMAIfYBAQC1AwAhiAIBALUDACEDAAAAAwAgHgAA-AUAIB8AAP8FACANAAAAAwAgAwAAlgQAIAUAAPwEACAOAACZBAAgEAAAlwQAIBcAAP8FACDdAQEApwMAId4BAQCnAwAh3wEBAKcDACHhAQIAqAMAIeIBQACpAwAh9gEBALUDACGIAgEAtQMAIQsDAACWBAAgBQAA_AQAIA4AAJkEACAQAACXBAAg3QEBAKcDACHeAQEApwMAId8BAQCnAwAh4QECAKgDACHiAUAAqQMAIfYBAQC1AwAhiAIBALUDACEDAAAAPQAgHgAA0wUAIB8AAIIGACAJAAAAPQAgBAAAgwUAIA8AAIQFACAXAACCBgAg3QEBAKcDACHfAQEApwMAIeEBAgCoAwAh4gFAAKkDACGLAgEApwMAIQcEAACDBQAgDwAAhAUAIN0BAQCnAwAh3wEBAKcDACHhAQIAqAMAIeIBQACpAwAhiwIBAKcDACEEBAYCCQAPDzUEETgDBgMAAQUIAwkADg0xCQ4yChAwDQUDAAEECQIJAAwNKgkPDQQHAwABBQ4DCQALChIFCxsIDR0JDiQKAwYABAgWBgkABwEHAAUBCBcAAQYABAMFIAMGHwQMHgICBiYEDCUCAwonAAsoAA4pAAIEKwAPLAABDAACAg40ABAzAAMEOQAPOgAROwAAAAAFCQAUJAAVJQAWJgAXJwAYAAAAAAAFCQAUJAAVJQAWJgAXJwAYAgMAAQVdAwIDAAEFYwMFCQAdJAAeJQAfJgAgJwAhAAAAAAAFCQAdJAAeJQAfJgAgJwAhAQwAAgEMAAIFCQAmJAAnJQAoJgApJwAqAAAAAAAFCQAmJAAnJQAoJgApJwAqAgMAAQWLAQMCAwABBZEBAwUJAC8kADAlADEmADInADMAAAAAAAUJAC8kADAlADEmADInADMBBgAEAQYABAUJADgkADklADomADsnADwAAAAAAAUJADgkADklADomADsnADwBBwAFAQcABQUJAEEkAEIlAEMmAEQnAEUAAAAAAAUJAEEkAEIlAEMmAEQnAEUCBtABBAzPAQICBtcBBAzWAQIFCQBKJABLJQBMJgBNJwBOAAAAAAAFCQBKJABLJQBMJgBNJwBOAQYABAEGAAQFCQBTJABUJQBVJgBWJwBXAAAAAAAFCQBTJABUJQBVJgBWJwBXAwWDAgMGggIEDIECAgMFiwIDBooCBAyJAgIDCQBcJgBdJwBeAAAAAwkAXCYAXScAXgAAAAUJAGQkAGUlAGYmAGcnAGgAAAAAAAUJAGQkAGUlAGYmAGcnAGgAAAADCQBuJgBvJwBwAAAAAwkAbiYAbycAcAEDAAEBAwABBQkAdSQAdiUAdyYAeCcAeQAAAAAABQkAdSQAdiUAdyYAeCcAeRICARM8ARQ_ARVAARZBARhDARlFEBpGERtIARxKEB1LEiBMASFNASJOEChREylSGSpTAitUAixVAi1WAi5XAi9ZAjBbEDFcGjJfAjNhEDRiGzVkAjZlAjdmEDhpHDlqIjprDTtsDTxtDT1uDT5vDT9xDUBzEEF0I0J2DUN4EER5JEV6DUZ7DUd8EEh_JUmAAStKgQEES4IBBEyDAQRNhAEEToUBBE-HAQRQiQEQUYoBLFKNAQRTjwEQVJABLVWSAQRWkwEEV5QBEFiXAS5ZmAE0WpkBBVuaAQVcmwEFXZwBBV6dAQVfnwEFYKEBEGGiATVipAEFY6YBEGSnATZlqAEFZqkBBWeqARBorQE3aa4BPWqvAQZrsAEGbLEBBm2yAQZuswEGb7UBBnC3ARBxuAE-croBBnO8ARB0vQE_db4BBna_AQZ3wAEQeMMBQHnEAUZ6xQEKe8YBCnzHAQp9yAEKfskBCn_LAQqAAc0BEIEBzgFHggHSAQqDAdQBEIQB1QFIhQHYAQqGAdkBCocB2gEQiAHdAUmJAd4BT4oB3wEIiwHgAQiMAeEBCI0B4gEIjgHjAQiPAeUBCJAB5wEQkQHoAVCSAeoBCJMB7AEQlAHtAVGVAe4BCJYB7wEIlwHwARCYAfMBUpkB9AFYmgH2AQmbAfcBCZwB-QEJnQH6AQmeAfsBCZ8B_QEJoAH_ARChAYACWaIBhQIJowGHAhCkAYgCWqUBjAIJpgGNAgmnAY4CEKgBkQJbqQGSAl-qAZQCYKsBlQJgrAGYAmCtAZkCYK4BmgJgrwGcAmCwAZ4CELEBnwJhsgGhAmCzAaMCELQBpAJitQGlAmC2AaYCYLcBpwIQuAGqAmO5AasCaboBrQJquwGuAmq8AbECar0BsgJqvgGzAmq_AbUCasABtwIQwQG4AmvCAboCasMBvAIQxAG9AmzFAb4CasYBvwJqxwHAAhDIAcMCbckBxAJxygHFAgPLAcYCA8wBxwIDzQHIAgPOAckCA88BywID0AHNAhDRAc4CctIB0AID0wHSAhDUAdMCc9UB1AID1gHVAgPXAdYCENgB2QJ02QHaAno" + strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"class\",\"decks\",\"group\",\"quizSet\",\"question\",\"options\",\"_count\",\"questions\",\"attempts\",\"deck\",\"shareLink\",\"progress\",\"quizSets\",\"cards\",\"materialGroups\",\"Class.findUnique\",\"Class.findUniqueOrThrow\",\"Class.findFirst\",\"Class.findFirstOrThrow\",\"Class.findMany\",\"data\",\"Class.createOne\",\"Class.createMany\",\"Class.createManyAndReturn\",\"Class.updateOne\",\"Class.updateMany\",\"Class.updateManyAndReturn\",\"create\",\"update\",\"Class.upsertOne\",\"Class.deleteOne\",\"Class.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"Class.groupBy\",\"Class.aggregate\",\"Deck.findUnique\",\"Deck.findUniqueOrThrow\",\"Deck.findFirst\",\"Deck.findFirstOrThrow\",\"Deck.findMany\",\"Deck.createOne\",\"Deck.createMany\",\"Deck.createManyAndReturn\",\"Deck.updateOne\",\"Deck.updateMany\",\"Deck.updateManyAndReturn\",\"Deck.upsertOne\",\"Deck.deleteOne\",\"Deck.deleteMany\",\"Deck.groupBy\",\"Deck.aggregate\",\"Flashcard.findUnique\",\"Flashcard.findUniqueOrThrow\",\"Flashcard.findFirst\",\"Flashcard.findFirstOrThrow\",\"Flashcard.findMany\",\"Flashcard.createOne\",\"Flashcard.createMany\",\"Flashcard.createManyAndReturn\",\"Flashcard.updateOne\",\"Flashcard.updateMany\",\"Flashcard.updateManyAndReturn\",\"Flashcard.upsertOne\",\"Flashcard.deleteOne\",\"Flashcard.deleteMany\",\"Flashcard.groupBy\",\"Flashcard.aggregate\",\"QuizSet.findUnique\",\"QuizSet.findUniqueOrThrow\",\"QuizSet.findFirst\",\"QuizSet.findFirstOrThrow\",\"QuizSet.findMany\",\"QuizSet.createOne\",\"QuizSet.createMany\",\"QuizSet.createManyAndReturn\",\"QuizSet.updateOne\",\"QuizSet.updateMany\",\"QuizSet.updateManyAndReturn\",\"QuizSet.upsertOne\",\"QuizSet.deleteOne\",\"QuizSet.deleteMany\",\"QuizSet.groupBy\",\"QuizSet.aggregate\",\"Question.findUnique\",\"Question.findUniqueOrThrow\",\"Question.findFirst\",\"Question.findFirstOrThrow\",\"Question.findMany\",\"Question.createOne\",\"Question.createMany\",\"Question.createManyAndReturn\",\"Question.updateOne\",\"Question.updateMany\",\"Question.updateManyAndReturn\",\"Question.upsertOne\",\"Question.deleteOne\",\"Question.deleteMany\",\"Question.groupBy\",\"Question.aggregate\",\"AnswerOption.findUnique\",\"AnswerOption.findUniqueOrThrow\",\"AnswerOption.findFirst\",\"AnswerOption.findFirstOrThrow\",\"AnswerOption.findMany\",\"AnswerOption.createOne\",\"AnswerOption.createMany\",\"AnswerOption.createManyAndReturn\",\"AnswerOption.updateOne\",\"AnswerOption.updateMany\",\"AnswerOption.updateManyAndReturn\",\"AnswerOption.upsertOne\",\"AnswerOption.deleteOne\",\"AnswerOption.deleteMany\",\"AnswerOption.groupBy\",\"AnswerOption.aggregate\",\"StudyProgress.findUnique\",\"StudyProgress.findUniqueOrThrow\",\"StudyProgress.findFirst\",\"StudyProgress.findFirstOrThrow\",\"StudyProgress.findMany\",\"StudyProgress.createOne\",\"StudyProgress.createMany\",\"StudyProgress.createManyAndReturn\",\"StudyProgress.updateOne\",\"StudyProgress.updateMany\",\"StudyProgress.updateManyAndReturn\",\"StudyProgress.upsertOne\",\"StudyProgress.deleteOne\",\"StudyProgress.deleteMany\",\"StudyProgress.groupBy\",\"StudyProgress.aggregate\",\"QuizAttempt.findUnique\",\"QuizAttempt.findUniqueOrThrow\",\"QuizAttempt.findFirst\",\"QuizAttempt.findFirstOrThrow\",\"QuizAttempt.findMany\",\"QuizAttempt.createOne\",\"QuizAttempt.createMany\",\"QuizAttempt.createManyAndReturn\",\"QuizAttempt.updateOne\",\"QuizAttempt.updateMany\",\"QuizAttempt.updateManyAndReturn\",\"QuizAttempt.upsertOne\",\"QuizAttempt.deleteOne\",\"QuizAttempt.deleteMany\",\"QuizAttempt.groupBy\",\"QuizAttempt.aggregate\",\"ShareLink.findUnique\",\"ShareLink.findUniqueOrThrow\",\"ShareLink.findFirst\",\"ShareLink.findFirstOrThrow\",\"ShareLink.findMany\",\"ShareLink.createOne\",\"ShareLink.createMany\",\"ShareLink.createManyAndReturn\",\"ShareLink.updateOne\",\"ShareLink.updateMany\",\"ShareLink.updateManyAndReturn\",\"ShareLink.upsertOne\",\"ShareLink.deleteOne\",\"ShareLink.deleteMany\",\"ShareLink.groupBy\",\"ShareLink.aggregate\",\"AuthSecurity.findUnique\",\"AuthSecurity.findUniqueOrThrow\",\"AuthSecurity.findFirst\",\"AuthSecurity.findFirstOrThrow\",\"AuthSecurity.findMany\",\"AuthSecurity.createOne\",\"AuthSecurity.createMany\",\"AuthSecurity.createManyAndReturn\",\"AuthSecurity.updateOne\",\"AuthSecurity.updateMany\",\"AuthSecurity.updateManyAndReturn\",\"AuthSecurity.upsertOne\",\"AuthSecurity.deleteOne\",\"AuthSecurity.deleteMany\",\"AuthSecurity.groupBy\",\"AuthSecurity.aggregate\",\"Setting.findUnique\",\"Setting.findUniqueOrThrow\",\"Setting.findFirst\",\"Setting.findFirstOrThrow\",\"Setting.findMany\",\"Setting.createOne\",\"Setting.createMany\",\"Setting.createManyAndReturn\",\"Setting.updateOne\",\"Setting.updateMany\",\"Setting.updateManyAndReturn\",\"Setting.upsertOne\",\"Setting.deleteOne\",\"Setting.deleteMany\",\"Setting.groupBy\",\"Setting.aggregate\",\"StudyActivity.findUnique\",\"StudyActivity.findUniqueOrThrow\",\"StudyActivity.findFirst\",\"StudyActivity.findFirstOrThrow\",\"StudyActivity.findMany\",\"StudyActivity.createOne\",\"StudyActivity.createMany\",\"StudyActivity.createManyAndReturn\",\"StudyActivity.updateOne\",\"StudyActivity.updateMany\",\"StudyActivity.updateManyAndReturn\",\"StudyActivity.upsertOne\",\"StudyActivity.deleteOne\",\"StudyActivity.deleteMany\",\"StudyActivity.groupBy\",\"StudyActivity.aggregate\",\"MaterialGroup.findUnique\",\"MaterialGroup.findUniqueOrThrow\",\"MaterialGroup.findFirst\",\"MaterialGroup.findFirstOrThrow\",\"MaterialGroup.findMany\",\"MaterialGroup.createOne\",\"MaterialGroup.createMany\",\"MaterialGroup.createManyAndReturn\",\"MaterialGroup.updateOne\",\"MaterialGroup.updateMany\",\"MaterialGroup.updateManyAndReturn\",\"MaterialGroup.upsertOne\",\"MaterialGroup.deleteOne\",\"MaterialGroup.deleteMany\",\"MaterialGroup.groupBy\",\"MaterialGroup.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"classId\",\"name\",\"type\",\"sortOrder\",\"createdAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"occurredAt\",\"key\",\"value\",\"failedAttempts\",\"lockedUntil\",\"lastAttemptAt\",\"targetType\",\"deckId\",\"quizSetId\",\"groupId\",\"score\",\"maxScore\",\"answersJson\",\"isPartialRetake\",\"completedAt\",\"contentType\",\"mode\",\"currentIndex\",\"orderJson\",\"cardResultsJson\",\"updatedAt\",\"questionId\",\"text\",\"isCorrect\",\"prompt\",\"rationale\",\"category\",\"description\",\"front\",\"back\",\"slug\",\"every\",\"some\",\"none\",\"deckId_mode\",\"quizSetId_mode\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"disconnect\",\"delete\",\"connect\",\"createMany\",\"set\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), + graph: "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-QQAICQAAPoEACAlAAD9BAAgJgAA_AQAICcAAPsEACAI6gEAAJwDADDrAQAAwgEAEOwBAACcAwAw7QEBAPUCACHxAQIA9gIAIZMCAQD1AgAhlAIBAPUCACGVAiAAlwMAIQMAAAATACABAADBAQAwIwAAwgEAIAMAAAATACABAAAUADACAAAVACABAAAAIwAgAQAAACMAIAMAAAAhACABAAAiADACAAAjACADAAAAIQAgAQAAIgAwAgAAIwAgAwAAACEAIAEAACIAMAIAACMAIAwGAAC_BAAgDAAA8AMAIO0BAQAAAAGFAgEAAAABhgIBAAAAAYoCAQAAAAGNAgEAAAABjgIBAAAAAY8CAgAAAAGQAgEAAAABkQIBAAAAAZICQAAAAAEBFwAAygEAIArtAQEAAAABhQIBAAAAAYYCAQAAAAGKAgEAAAABjQIBAAAAAY4CAQAAAAGPAgIAAAABkAIBAAAAAZECAQAAAAGSAkAAAAABARcAAMwBADABFwAAzAEAMAEAAAADACABAAAACgAgDAYAAL0EACAMAADuAwAg7QEBAMIDACGFAgEA0AMAIYYCAQDQAwAhigIBANADACGNAgEAwgMAIY4CAQDCAwAhjwICAMMDACGQAgEAwgMAIZECAQDQAwAhkgJAAMQDACECAAAAIwAgFwAA0QEAIArtAQEAwgMAIYUCAQDQAwAhhgIBANADACGKAgEA0AMAIY0CAQDCAwAhjgIBAMIDACGPAgIAwwMAIZACAQDCAwAhkQIBANADACGSAkAAxAMAIQIAAAAhACAXAADTAQAgAgAAACEAIBcAANMBACABAAAAAwAgAQAAAAoAIAMAAAAjACAeAADKAQAgHwAA0QEAIAEAAAAjACABAAAAIQAgCQkAAPQEACAkAAD1BAAgJQAA-AQAICYAAPcEACAnAAD2BAAghQIAAOAEACCGAgAA4AQAIIoCAADgBAAgkQIAAOAEACAN6gEAAJsDADDrAQAA3AEAEOwBAACbAwAw7QEBAPUCACGFAgEAjgMAIYYCAQCOAwAhigIBAI4DACGNAgEA9QIAIY4CAQD1AgAhjwICAPYCACGQAgEA9QIAIZECAQCOAwAhkgJAAPcCACEDAAAAIQAgAQAA2wEAMCMAANwBACADAAAAIQAgAQAAIgAwAgAAIwAgAQAAABoAIAEAAAAaACADAAAAGAAgAQAAGQAwAgAAGgAgAwAAABgAIAEAABkAMAIAABoAIAMAAAAYACABAAAZADACAAAaACAIBgAA8wQAIO0BAQAAAAGGAgEAAAABiAIIAAAAAYkCAgAAAAGKAgEAAAABiwIgAAAAAYwCQAAAAAEBFwAA5AEAIAftAQEAAAABhgIBAAAAAYgCCAAAAAGJAgIAAAABigIBAAAAAYsCIAAAAAGMAkAAAAABARcAAOYBADABFwAA5gEAMAgGAADyBAAg7QEBAMIDACGGAgEAwgMAIYgCCACCBAAhiQICAMMDACGKAgEAwgMAIYsCIACDBAAhjAJAAMQDACECAAAAGgAgFwAA6QEAIAftAQEAwgMAIYYCAQDCAwAhiAIIAIIEACGJAgIAwwMAIYoCAQDCAwAhiwIgAIMEACGMAkAAxAMAIQIAAAAYACAXAADrAQAgAgAAABgAIBcAAOsBACADAAAAGgAgHgAA5AEAIB8AAOkBACABAAAAGgAgAQAAABgAIAUJAADtBAAgJAAA7gQAICUAAPEEACAmAADwBAAgJwAA7wQAIArqAQAAlQMAMOsBAADyAQAQ7AEAAJUDADDtAQEA9QIAIYYCAQD1AgAhiAIIAJYDACGJAgIA9gIAIYoCAQD1AgAhiwIgAJcDACGMAkAA9wIAIQMAAAAYACABAADxAQAwIwAA8gEAIAMAAAAYACABAAAZADACAAAaACAMBQAAlAMAIAYAAJMDACAMAACSAwAg6gEAAJEDADDrAQAAHAAQ7AEAAJEDADDtAQEAAAAB8gFAAIIDACGEAgEAgQMAIYUCAQAAAAGGAgEAAAABhwIBAAAAAQEAAAD1AQAgAQAAAPUBACAGBQAA7AQAIAYAAOsEACAMAADqBAAghQIAAOAEACCGAgAA4AQAIIcCAADgBAAgAwAAABwAIAEAAPgBADACAAD1AQAgAwAAABwAIAEAAPgBADACAAD1AQAgAwAAABwAIAEAAPgBADACAAD1AQAgCQUAAPcDACAGAADSAwAgDAAA0QMAIO0BAQAAAAHyAUAAAAABhAIBAAAAAYUCAQAAAAGGAgEAAAABhwIBAAAAAQEXAAD8AQAgBu0BAQAAAAHyAUAAAAABhAIBAAAAAYUCAQAAAAGGAgEAAAABhwIBAAAAAQEXAAD-AQAwARcAAP4BADABAAAAAwAgAQAAAAoAIAEAAAAHACAJBQAA9gMAIAYAAM8DACAMAADOAwAg7QEBAMIDACHyAUAAxAMAIYQCAQDCAwAhhQIBANADACGGAgEA0AMAIYcCAQDQAwAhAgAAAPUBACAXAACEAgAgBu0BAQDCAwAh8gFAAMQDACGEAgEAwgMAIYUCAQDQAwAhhgIBANADACGHAgEA0AMAIQIAAAAcACAXAACGAgAgAgAAABwAIBcAAIYCACABAAAAAwAgAQAAAAoAIAEAAAAHACADAAAA9QEAIB4AAPwBACAfAACEAgAgAQAAAPUBACABAAAAHAAgBgkAAOcEACAmAADpBAAgJwAA6AQAIIUCAADgBAAghgIAAOAEACCHAgAA4AQAIAnqAQAAjQMAMOsBAACQAgAQ7AEAAI0DADDtAQEA9QIAIfIBQAD3AgAhhAIBAPUCACGFAgEAjgMAIYYCAQCOAwAhhwIBAI4DACEDAAAAHAAgAQAAjwIAMCMAAJACACADAAAAHAAgAQAA-AEAMAIAAPUBACAH6gEAAIoDADDrAQAAlgIAEOwBAACKAwAw7QECAAAAAYECAgCLAwAhggJAAIwDACGDAkAAjAMAIQEAAACTAgAgAQAAAJMCACAH6gEAAIoDADDrAQAAlgIAEOwBAACKAwAw7QECAIsDACGBAgIAiwMAIYICQACMAwAhgwJAAIwDACECggIAAOAEACCDAgAA4AQAIAMAAACWAgAgAQAAlwIAMAIAAJMCACADAAAAlgIAIAEAAJcCADACAACTAgAgAwAAAJYCACABAACXAgAwAgAAkwIAIATtAQIAAAABgQICAAAAAYICQAAAAAGDAkAAAAABARcAAJsCACAE7QECAAAAAYECAgAAAAGCAkAAAAABgwJAAAAAAQEXAACdAgAwARcAAJ0CADAE7QECAMMDACGBAgIAwwMAIYICQADmBAAhgwJAAOYEACECAAAAkwIAIBcAAKACACAE7QECAMMDACGBAgIAwwMAIYICQADmBAAhgwJAAOYEACECAAAAlgIAIBcAAKICACACAAAAlgIAIBcAAKICACADAAAAkwIAIB4AAJsCACAfAACgAgAgAQAAAJMCACABAAAAlgIAIAcJAADhBAAgJAAA4gQAICUAAOUEACAmAADkBAAgJwAA4wQAIIICAADgBAAggwIAAOAEACAH6gEAAIUDADDrAQAAqQIAEOwBAACFAwAw7QECAPYCACGBAgIA9gIAIYICQACGAwAhgwJAAIYDACEDAAAAlgIAIAEAAKgCADAjAACpAgAgAwAAAJYCACABAACXAgAwAgAAkwIAIAXqAQAAhAMAMOsBAACvAgAQ7AEAAIQDADD_AQEAAAABgAIBAIEDACEBAAAArAIAIAEAAACsAgAgBeoBAACEAwAw6wEAAK8CABDsAQAAhAMAMP8BAQCBAwAhgAIBAIEDACEAAwAAAK8CACABAACwAgAwAgAArAIAIAMAAACvAgAgAQAAsAIAMAIAAKwCACADAAAArwIAIAEAALACADACAACsAgAgAv8BAQAAAAGAAgEAAAABARcAALQCACAC_wEBAAAAAYACAQAAAAEBFwAAtgIAMAEXAAC2AgAwAv8BAQDCAwAhgAIBAMIDACECAAAArAIAIBcAALkCACAC_wEBAMIDACGAAgEAwgMAIQIAAACvAgAgFwAAuwIAIAIAAACvAgAgFwAAuwIAIAMAAACsAgAgHgAAtAIAIB8AALkCACABAAAArAIAIAEAAACvAgAgAwkAAN0EACAmAADfBAAgJwAA3gQAIAXqAQAAgwMAMOsBAADCAgAQ7AEAAIMDADD_AQEA9QIAIYACAQD1AgAhAwAAAK8CACABAADBAgAwIwAAwgIAIAMAAACvAgAgAQAAsAIAMAIAAKwCACAG6gEAAIADADDrAQAAyAIAEOwBAACAAwAw7QEBAAAAAfABAQCBAwAh_gFAAIIDACEBAAAAxQIAIAEAAADFAgAgBuoBAACAAwAw6wEAAMgCABDsAQAAgAMAMO0BAQCBAwAh8AEBAIEDACH-AUAAggMAIQADAAAAyAIAIAEAAMkCADACAADFAgAgAwAAAMgCACABAADJAgAwAgAAxQIAIAMAAADIAgAgAQAAyQIAMAIAAMUCACAD7QEBAAAAAfABAQAAAAH-AUAAAAABARcAAM0CACAD7QEBAAAAAfABAQAAAAH-AUAAAAABARcAAM8CADABFwAAzwIAMAPtAQEAwgMAIfABAQDCAwAh_gFAAMQDACECAAAAxQIAIBcAANICACAD7QEBAMIDACHwAQEAwgMAIf4BQADEAwAhAgAAAMgCACAXAADUAgAgAgAAAMgCACAXAADUAgAgAwAAAMUCACAeAADNAgAgHwAA0gIAIAEAAADFAgAgAQAAAMgCACADCQAA2gQAICYAANwEACAnAADbBAAgBuoBAAD_AgAw6wEAANsCABDsAQAA_wIAMO0BAQD1AgAh8AEBAPUCACH-AUAA9wIAIQMAAADIAgAgAQAA2gIAMCMAANsCACADAAAAyAIAIAEAAMkCADACAADFAgAgAQAAADcAIAEAAAA3ACADAAAABwAgAQAANgAwAgAANwAgAwAAAAcAIAEAADYAMAIAADcAIAMAAAAHACABAAA2ADACAAA3ACAKAwAA1gQAIAQAANcEACANAADZBAAgDwAA2AQAIO0BAQAAAAHuAQEAAAAB7wEBAAAAAfABAQAAAAHxAQIAAAAB8gFAAAAAAQEXAADjAgAgBu0BAQAAAAHuAQEAAAAB7wEBAAAAAfABAQAAAAHxAQIAAAAB8gFAAAAAAQEXAADlAgAwARcAAOUCADAKAwAAxQMAIAQAAMYDACANAADIAwAgDwAAxwMAIO0BAQDCAwAh7gEBAMIDACHvAQEAwgMAIfABAQDCAwAh8QECAMMDACHyAUAAxAMAIQIAAAA3ACAXAADoAgAgBu0BAQDCAwAh7gEBAMIDACHvAQEAwgMAIfABAQDCAwAh8QECAMMDACHyAUAAxAMAIQIAAAAHACAXAADqAgAgAgAAAAcAIBcAAOoCACADAAAANwAgHgAA4wIAIB8AAOgCACABAAAANwAgAQAAAAcAIAUJAAC9AwAgJAAAvgMAICUAAMEDACAmAADAAwAgJwAAvwMAIAnqAQAA9AIAMOsBAADxAgAQ7AEAAPQCADDtAQEA9QIAIe4BAQD1AgAh7wEBAPUCACHwAQEA9QIAIfEBAgD2AgAh8gFAAPcCACEDAAAABwAgAQAA8AIAMCMAAPECACADAAAABwAgAQAANgAwAgAANwAgCeoBAAD0AgAw6wEAAPECABDsAQAA9AIAMO0BAQD1AgAh7gEBAPUCACHvAQEA9QIAIfABAQD1AgAh8QECAPYCACHyAUAA9wIAIQ4JAAD5AgAgJgAA_gIAICcAAP4CACDzAQEAAAAB9AEBAAAABPUBAQAAAAT2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAP0CACH7AQEAAAAB_AEBAAAAAf0BAQAAAAENCQAA-QIAICQAAPwCACAlAAD5AgAgJgAA-QIAICcAAPkCACDzAQIAAAAB9AECAAAABPUBAgAAAAT2AQIAAAAB9wECAAAAAfgBAgAAAAH5AQIAAAAB-gECAPsCACELCQAA-QIAICYAAPoCACAnAAD6AgAg8wFAAAAAAfQBQAAAAAT1AUAAAAAE9gFAAAAAAfcBQAAAAAH4AUAAAAAB-QFAAAAAAfoBQAD4AgAhCwkAAPkCACAmAAD6AgAgJwAA-gIAIPMBQAAAAAH0AUAAAAAE9QFAAAAABPYBQAAAAAH3AUAAAAAB-AFAAAAAAfkBQAAAAAH6AUAA-AIAIQjzAQIAAAAB9AECAAAABPUBAgAAAAT2AQIAAAAB9wECAAAAAfgBAgAAAAH5AQIAAAAB-gECAPkCACEI8wFAAAAAAfQBQAAAAAT1AUAAAAAE9gFAAAAAAfcBQAAAAAH4AUAAAAAB-QFAAAAAAfoBQAD6AgAhDQkAAPkCACAkAAD8AgAgJQAA-QIAICYAAPkCACAnAAD5AgAg8wECAAAAAfQBAgAAAAT1AQIAAAAE9gECAAAAAfcBAgAAAAH4AQIAAAAB-QECAAAAAfoBAgD7AgAhCPMBCAAAAAH0AQgAAAAE9QEIAAAABPYBCAAAAAH3AQgAAAAB-AEIAAAAAfkBCAAAAAH6AQgA_AIAIQ4JAAD5AgAgJgAA_gIAICcAAP4CACDzAQEAAAAB9AEBAAAABPUBAQAAAAT2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAP0CACH7AQEAAAAB_AEBAAAAAf0BAQAAAAEL8wEBAAAAAfQBAQAAAAT1AQEAAAAE9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQD-AgAh-wEBAAAAAfwBAQAAAAH9AQEAAAABBuoBAAD_AgAw6wEAANsCABDsAQAA_wIAMO0BAQD1AgAh8AEBAPUCACH-AUAA9wIAIQbqAQAAgAMAMOsBAADIAgAQ7AEAAIADADDtAQEAgQMAIfABAQCBAwAh_gFAAIIDACEL8wEBAAAAAfQBAQAAAAT1AQEAAAAE9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQD-AgAh-wEBAAAAAfwBAQAAAAH9AQEAAAABCPMBQAAAAAH0AUAAAAAE9QFAAAAABPYBQAAAAAH3AUAAAAAB-AFAAAAAAfkBQAAAAAH6AUAA-gIAIQXqAQAAgwMAMOsBAADCAgAQ7AEAAIMDADD_AQEA9QIAIYACAQD1AgAhBeoBAACEAwAw6wEAAK8CABDsAQAAhAMAMP8BAQCBAwAhgAIBAIEDACEH6gEAAIUDADDrAQAAqQIAEOwBAACFAwAw7QECAPYCACGBAgIA9gIAIYICQACGAwAhgwJAAIYDACELCQAAiAMAICYAAIkDACAnAACJAwAg8wFAAAAAAfQBQAAAAAX1AUAAAAAF9gFAAAAAAfcBQAAAAAH4AUAAAAAB-QFAAAAAAfoBQACHAwAhCwkAAIgDACAmAACJAwAgJwAAiQMAIPMBQAAAAAH0AUAAAAAF9QFAAAAABfYBQAAAAAH3AUAAAAAB-AFAAAAAAfkBQAAAAAH6AUAAhwMAIQjzAQIAAAAB9AECAAAABfUBAgAAAAX2AQIAAAAB9wECAAAAAfgBAgAAAAH5AQIAAAAB-gECAIgDACEI8wFAAAAAAfQBQAAAAAX1AUAAAAAF9gFAAAAAAfcBQAAAAAH4AUAAAAAB-QFAAAAAAfoBQACJAwAhB-oBAACKAwAw6wEAAJYCABDsAQAAigMAMO0BAgCLAwAhgQICAIsDACGCAkAAjAMAIYMCQACMAwAhCPMBAgAAAAH0AQIAAAAE9QECAAAABPYBAgAAAAH3AQIAAAAB-AECAAAAAfkBAgAAAAH6AQIA-QIAIQjzAUAAAAAB9AFAAAAABfUBQAAAAAX2AUAAAAAB9wFAAAAAAfgBQAAAAAH5AUAAAAAB-gFAAIkDACEJ6gEAAI0DADDrAQAAkAIAEOwBAACNAwAw7QEBAPUCACHyAUAA9wIAIYQCAQD1AgAhhQIBAI4DACGGAgEAjgMAIYcCAQCOAwAhDgkAAIgDACAmAACQAwAgJwAAkAMAIPMBAQAAAAH0AQEAAAAF9QEBAAAABfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAjwMAIfsBAQAAAAH8AQEAAAAB_QEBAAAAAQ4JAACIAwAgJgAAkAMAICcAAJADACDzAQEAAAAB9AEBAAAABfUBAQAAAAX2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAI8DACH7AQEAAAAB_AEBAAAAAf0BAQAAAAEL8wEBAAAAAfQBAQAAAAX1AQEAAAAF9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQCQAwAh-wEBAAAAAfwBAQAAAAH9AQEAAAABDAUAAJQDACAGAACTAwAgDAAAkgMAIOoBAACRAwAw6wEAABwAEOwBAACRAwAw7QEBAIEDACHyAUAAggMAIYQCAQCBAwAhhQIBAK4DACGGAgEArgMAIYcCAQCuAwAhEQMAAKcDACAFAACUAwAgDQAAqAMAIA4AALoDACAQAAC8AwAg6gEAALsDADDrAQAAAwAQ7AEAALsDADDtAQEAgQMAIe4BAQCBAwAh7wEBAIEDACHxAQIAiwMAIfIBQACCAwAhhwIBAK4DACGZAgEArgMAIaICAAADACCjAgAAAwAgEgMAAKcDACAFAACUAwAgCgAAuAMAIAsAALkDACANAACoAwAgDgAAugMAIOoBAAC3AwAw6wEAAAoAEOwBAAC3AwAw7QEBAIEDACHuAQEAgQMAIe8BAQCBAwAh8QECAIsDACHyAUAAggMAIYcCAQCuAwAhmQIBAK4DACGiAgAACgAgowIAAAoAIA8DAACnAwAgBAAAowMAIA0AAKgDACAPAACkAwAg6gEAAKYDADDrAQAABwAQ7AEAAKYDADDtAQEAgQMAIe4BAQCBAwAh7wEBAIEDACHwAQEAgQMAIfEBAgCLAwAh8gFAAIIDACGiAgAABwAgowIAAAcAIArqAQAAlQMAMOsBAADyAQAQ7AEAAJUDADDtAQEA9QIAIYYCAQD1AgAhiAIIAJYDACGJAgIA9gIAIYoCAQD1AgAhiwIgAJcDACGMAkAA9wIAIQ0JAAD5AgAgJAAA_AIAICUAAPwCACAmAAD8AgAgJwAA_AIAIPMBCAAAAAH0AQgAAAAE9QEIAAAABPYBCAAAAAH3AQgAAAAB-AEIAAAAAfkBCAAAAAH6AQgAmgMAIQUJAAD5AgAgJgAAmQMAICcAAJkDACDzASAAAAAB-gEgAJgDACEFCQAA-QIAICYAAJkDACAnAACZAwAg8wEgAAAAAfoBIACYAwAhAvMBIAAAAAH6ASAAmQMAIQ0JAAD5AgAgJAAA_AIAICUAAPwCACAmAAD8AgAgJwAA_AIAIPMBCAAAAAH0AQgAAAAE9QEIAAAABPYBCAAAAAH3AQgAAAAB-AEIAAAAAfkBCAAAAAH6AQgAmgMAIQ3qAQAAmwMAMOsBAADcAQAQ7AEAAJsDADDtAQEA9QIAIYUCAQCOAwAhhgIBAI4DACGKAgEAjgMAIY0CAQD1AgAhjgIBAPUCACGPAgIA9gIAIZACAQD1AgAhkQIBAI4DACGSAkAA9wIAIQjqAQAAnAMAMOsBAADCAQAQ7AEAAJwDADDtAQEA9QIAIfEBAgD2AgAhkwIBAPUCACGUAgEA9QIAIZUCIACXAwAhCuoBAACdAwAw6wEAAKwBABDsAQAAnQMAMO0BAQD1AgAh8AEBAPUCACHxAQIA9gIAIYYCAQD1AgAhlgIBAPUCACGXAgEA9QIAIZgCAQD1AgAhCuoBAACeAwAw6wEAAJYBABDsAQAAngMAMO0BAQD1AgAh7gEBAPUCACHvAQEA9QIAIfEBAgD2AgAh8gFAAPcCACGHAgEAjgMAIZkCAQCOAwAhCOoBAACfAwAw6wEAAH4AEOwBAACfAwAw7QEBAPUCACHxAQIA9gIAIYUCAQD1AgAhmgIBAPUCACGbAgEA9QIAIQrqAQAAoAMAMOsBAABoABDsAQAAoAMAMO0BAQD1AgAh7gEBAPUCACHvAQEA9QIAIfEBAgD2AgAh8gFAAPcCACGHAgEAjgMAIZkCAQCOAwAhCOoBAAChAwAw6wEAAFAAEOwBAAChAwAw7QEBAPUCACHvAQEA9QIAIfEBAgD2AgAh8gFAAPcCACGcAgEA9QIAIQsEAACjAwAgDwAApAMAIBEAAKUDACDqAQAAogMAMOsBAAA9ABDsAQAAogMAMO0BAQCBAwAh7wEBAIEDACHxAQIAiwMAIfIBQACCAwAhnAIBAIEDACEDnQIAAAMAIJ4CAAADACCfAgAAAwAgA50CAAAKACCeAgAACgAgnwIAAAoAIAOdAgAABwAgngIAAAcAIJ8CAAAHACANAwAApwMAIAQAAKMDACANAACoAwAgDwAApAMAIOoBAACmAwAw6wEAAAcAEOwBAACmAwAw7QEBAIEDACHuAQEAgQMAIe8BAQCBAwAh8AEBAIEDACHxAQIAiwMAIfIBQACCAwAhDQQAAKMDACAPAACkAwAgEQAApQMAIOoBAACiAwAw6wEAAD0AEOwBAACiAwAw7QEBAIEDACHvAQEAgQMAIfEBAgCLAwAh8gFAAIIDACGcAgEAgQMAIaICAAA9ACCjAgAAPQAgDgUAAJQDACAGAACTAwAgDAAAkgMAIOoBAACRAwAw6wEAABwAEOwBAACRAwAw7QEBAIEDACHyAUAAggMAIYQCAQCBAwAhhQIBAK4DACGGAgEArgMAIYcCAQCuAwAhogIAABwAIKMCAAAcACAJDAAAqgMAIOoBAACpAwAw6wEAAC0AEOwBAACpAwAw7QEBAIEDACHxAQIAiwMAIYUCAQCBAwAhmgIBAIEDACGbAgEAgQMAIREDAACnAwAgBQAAlAMAIA0AAKgDACAOAAC6AwAgEAAAvAMAIOoBAAC7AwAw6wEAAAMAEOwBAAC7AwAw7QEBAIEDACHuAQEAgQMAIe8BAQCBAwAh8QECAIsDACHyAUAAggMAIYcCAQCuAwAhmQIBAK4DACGiAgAAAwAgowIAAAMAIAKFAgEAAAABjgIBAAAAAQKGAgEAAAABjgIBAAAAAQ8GAACTAwAgDAAAkgMAIOoBAACtAwAw6wEAACEAEOwBAACtAwAw7QEBAIEDACGFAgEArgMAIYYCAQCuAwAhigIBAK4DACGNAgEAgQMAIY4CAQCBAwAhjwICAIsDACGQAgEAgQMAIZECAQCuAwAhkgJAAIIDACEL8wEBAAAAAfQBAQAAAAX1AQEAAAAF9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQCQAwAh-wEBAAAAAfwBAQAAAAH9AQEAAAABCwYAALIDACDqAQAArwMAMOsBAAAYABDsAQAArwMAMO0BAQCBAwAhhgIBAIEDACGIAggAsAMAIYkCAgCLAwAhigIBAIEDACGLAiAAsQMAIYwCQACCAwAhCPMBCAAAAAH0AQgAAAAE9QEIAAAABPYBCAAAAAH3AQgAAAAB-AEIAAAAAfkBCAAAAAH6AQgA_AIAIQLzASAAAAAB-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-AMAMB8AAP0DADCkAgAA-QMAMKUCAAD6AwAwpgIAAPwDADCnAgAA_AMAMKgCAAD8AwAwqQIAAPsDACCqAgAA_AMAMKsCAAD-AwAwrAIAAP8DADAHHgAA8QMAIB8AAPQDACCkAgAA8gMAIKUCAADzAwAgpgIAABwAIKcCAAAcACCoAgAA9QEAIAseAADjAwAwHwAA6AMAMKQCAADkAwAwpQIAAOUDADCmAgAA5wMAMKcCAADnAwAwqAIAAOcDADCpAgAA5gMAIKoCAADnAwAwqwIAAOkDADCsAgAA6gMAMAoMAADwAwAg7QEBAAAAAYUCAQAAAAGKAgEAAAABjQIBAAAAAY4CAQAAAAGPAgIAAAABkAIBAAAAAZECAQAAAAGSAkAAAAABAgAAACMAIB4AAO8DACADAAAAIwAgHgAA7wMAIB8AAO0DACABFwAAjwYAMBEGAACTAwAgDAAAkgMAIOoBAACtAwAw6wEAACEAEOwBAACtAwAw7QEBAAAAAYUCAQCuAwAhhgIBAK4DACGKAgEArgMAIY0CAQCBAwAhjgIBAIEDACGPAgIAiwMAIZACAQCBAwAhkQIBAK4DACGSAkAAggMAIaACAACrAwAgoQIAAKwDACACAAAAIwAgFwAA7QMAIAIAAADrAwAgFwAA7AMAIA3qAQAA6gMAMOsBAADrAwAQ7AEAAOoDADDtAQEAgQMAIYUCAQCuAwAhhgIBAK4DACGKAgEArgMAIY0CAQCBAwAhjgIBAIEDACGPAgIAiwMAIZACAQCBAwAhkQIBAK4DACGSAkAAggMAIQ3qAQAA6gMAMOsBAADrAwAQ7AEAAOoDADDtAQEAgQMAIYUCAQCuAwAhhgIBAK4DACGKAgEArgMAIY0CAQCBAwAhjgIBAIEDACGPAgIAiwMAIZACAQCBAwAhkQIBAK4DACGSAkAAggMAIQntAQEAwgMAIYUCAQDQAwAhigIBANADACGNAgEAwgMAIY4CAQDCAwAhjwICAMMDACGQAgEAwgMAIZECAQDQAwAhkgJAAMQDACEKDAAA7gMAIO0BAQDCAwAhhQIBANADACGKAgEA0AMAIY0CAQDCAwAhjgIBAMIDACGPAgIAwwMAIZACAQDCAwAhkQIBANADACGSAkAAxAMAIQceAACKBgAgHwAAjQYAIKQCAACLBgAgpQIAAIwGACCmAgAAAwAgpwIAAAMAIKgCAAAFACAKDAAA8AMAIO0BAQAAAAGFAgEAAAABigIBAAAAAY0CAQAAAAGOAgEAAAABjwICAAAAAZACAQAAAAGRAgEAAAABkgJAAAAAAQMeAACKBgAgpAIAAIsGACCoAgAABQAgBwUAAPcDACAMAADRAwAg7QEBAAAAAfIBQAAAAAGEAgEAAAABhQIBAAAAAYcCAQAAAAECAAAA9QEAIB4AAPEDACADAAAAHAAgHgAA8QMAIB8AAPUDACAJAAAAHAAgBQAA9gMAIAwAAM4DACAXAAD1AwAg7QEBAMIDACHyAUAAxAMAIYQCAQDCAwAhhQIBANADACGHAgEA0AMAIQcFAAD2AwAgDAAAzgMAIO0BAQDCAwAh8gFAAMQDACGEAgEAwgMAIYUCAQDQAwAhhwIBANADACEHHgAAhQYAIB8AAIgGACCkAgAAhgYAIKUCAACHBgAgpgIAAAcAIKcCAAAHACCoAgAANwAgAx4AAIUGACCkAgAAhgYAIKgCAAA3ACAG7QEBAAAAAYgCCAAAAAGJAgIAAAABigIBAAAAAYsCIAAAAAGMAkAAAAABAgAAABoAIB4AAIUEACADAAAAGgAgHgAAhQQAIB8AAIQEACABFwAAhAYAMAsGAACyAwAg6gEAAK8DADDrAQAAGAAQ7AEAAK8DADDtAQEAAAABhgIBAIEDACGIAggAsAMAIYkCAgCLAwAhigIBAIEDACGLAiAAsQMAIYwCQACCAwAhAgAAABoAIBcAAIQEACACAAAAgAQAIBcAAIEEACAK6gEAAP8DADDrAQAAgAQAEOwBAAD_AwAw7QEBAIEDACGGAgEAgQMAIYgCCACwAwAhiQICAIsDACGKAgEAgQMAIYsCIACxAwAhjAJAAIIDACEK6gEAAP8DADDrAQAAgAQAEOwBAAD_AwAw7QEBAIEDACGGAgEAgQMAIYgCCACwAwAhiQICAIsDACGKAgEAgQMAIYsCIACxAwAhjAJAAIIDACEG7QEBAMIDACGIAggAggQAIYkCAgDDAwAhigIBAMIDACGLAiAAgwQAIYwCQADEAwAhBaoCCAAAAAGtAggAAAABrgIIAAAAAa8CCAAAAAGwAggAAAABAaoCIAAAAAEG7QEBAMIDACGIAggAggQAIYkCAgDDAwAhigIBAMIDACGLAiAAgwQAIYwCQADEAwAhBu0BAQAAAAGIAggAAAABiQICAAAAAYoCAQAAAAGLAiAAAAABjAJAAAAAAQcIAACfBAAg7QEBAAAAAfABAQAAAAHxAQIAAAABlgIBAAAAAZcCAQAAAAGYAgEAAAABAgAAABEAIB4AAJ4EACADAAAAEQAgHgAAngQAIB8AAJAEACABFwAAgwYAMAwGAACyAwAgCAAAtgMAIOoBAAC1AwAw6wEAAA8AEOwBAAC1AwAw7QEBAAAAAfABAQCBAwAh8QECAIsDACGGAgEAgQMAIZYCAQCBAwAhlwIBAIEDACGYAgEAgQMAIQIAAAARACAXAACQBAAgAgAAAI4EACAXAACPBAAgCuoBAACNBAAw6wEAAI4EABDsAQAAjQQAMO0BAQCBAwAh8AEBAIEDACHxAQIAiwMAIYYCAQCBAwAhlgIBAIEDACGXAgEAgQMAIZgCAQCBAwAhCuoBAACNBAAw6wEAAI4EABDsAQAAjQQAMO0BAQCBAwAh8AEBAIEDACHxAQIAiwMAIYYCAQCBAwAhlgIBAIEDACGXAgEAgQMAIZgCAQCBAwAhBu0BAQDCAwAh8AEBAMIDACHxAQIAwwMAIZYCAQDCAwAhlwIBAMIDACGYAgEAwgMAIQcIAACRBAAg7QEBAMIDACHwAQEAwgMAIfEBAgDDAwAhlgIBAMIDACGXAgEAwgMAIZgCAQDCAwAhCx4AAJIEADAfAACXBAAwpAIAAJMEADClAgAAlAQAMKYCAACWBAAwpwIAAJYEADCoAgAAlgQAMKkCAACVBAAgqgIAAJYEADCrAgAAmAQAMKwCAACZBAAwBO0BAQAAAAHxAQIAAAABlAIBAAAAAZUCIAAAAAECAAAAFQAgHgAAnQQAIAMAAAAVACAeAACdBAAgHwAAnAQAIAEXAACCBgAwCQcAALQDACDqAQAAswMAMOsBAAATABDsAQAAswMAMO0BAQAAAAHxAQIAiwMAIZMCAQCBAwAhlAIBAIEDACGVAiAAsQMAIQIAAAAVACAXAACcBAAgAgAAAJoEACAXAACbBAAgCOoBAACZBAAw6wEAAJoEABDsAQAAmQQAMO0BAQCBAwAh8QECAIsDACGTAgEAgQMAIZQCAQCBAwAhlQIgALEDACEI6gEAAJkEADDrAQAAmgQAEOwBAACZBAAw7QEBAIEDACHxAQIAiwMAIZMCAQCBAwAhlAIBAIEDACGVAiAAsQMAIQTtAQEAwgMAIfEBAgDDAwAhlAIBAMIDACGVAiAAgwQAIQTtAQEAwgMAIfEBAgDDAwAhlAIBAMIDACGVAiAAgwQAIQTtAQEAAAAB8QECAAAAAZQCAQAAAAGVAiAAAAABBwgAAJ8EACDtAQEAAAAB8AEBAAAAAfEBAgAAAAGWAgEAAAABlwIBAAAAAZgCAQAAAAEEHgAAkgQAMKQCAACTBAAwqAIAAJYEADCpAgAAlQQAIAsDAAChBAAgCgAAogQAIAsAAKMEACANAACkBAAgDgAApQQAIO0BAQAAAAHuAQEAAAAB7wEBAAAAAfEBAgAAAAHyAUAAAAABmQIBAAAAAQMeAACABgAgpAIAAIEGACCoAgAAAQAgBB4AAIYEADCkAgAAhwQAMKgCAACKBAAwqQIAAIkEACAEHgAA-AMAMKQCAAD5AwAwqAIAAPwDADCpAgAA-wMAIAMeAADxAwAgpAIAAPIDACCoAgAA9QEAIAQeAADjAwAwpAIAAOQDADCoAgAA5wMAMKkCAADmAwAgCgMAANIEACANAADUBAAgDgAA1QQAIBAAANMEACDtAQEAAAAB7gEBAAAAAe8BAQAAAAHxAQIAAAAB8gFAAAAAAZkCAQAAAAECAAAABQAgHgAA0QQAIAMAAAAFACAeAADRBAAgHwAAsAQAIAEXAAD_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_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-JQB_JgCAAScAgQESAgETPAEUPwEVQAEWQQEYQwEZRRAaRhEbSAEcShAdSxIgTAEhTQEiThAoURMpUhkqUwIrVAIsVQItVgIuVwIvWQIwWxAxXBoyXwIzYRA0Yhs1ZAI2ZQI3ZhA4aRw5aiI6aw07bA08bQ09bg0-bw0_cQ1AcxBBdCNCdg1DeBBEeSRFeg1Gew1HfBBIfyVJgAErSoEBBEuCAQRMgwEETYQBBE6FAQRPhwEEUIkBEFGKASxSjQEEU48BEFSQAS1VkgEEVpMBBFeUARBYlwEuWZgBNFqZAQVbmgEFXJsBBV2cAQVenQEFX58BBWChARBhogE1YqQBBWOmARBkpwE2ZagBBWapAQVnqgEQaK0BN2muAT1qrwEGa7ABBmyxAQZtsgEGbrMBBm-1AQZwtwEQcbgBPnK6AQZzvAEQdL0BP3W-AQZ2vwEGd8ABEHjDAUB5xAFGesUBCnvGAQp8xwEKfcgBCn7JAQp_ywEKgAHNARCBAc4BR4IB0gEKgwHUARCEAdUBSIUB2AEKhgHZAQqHAdoBEIgB3QFJiQHeAU-KAd8BCIsB4AEIjAHhAQiNAeIBCI4B4wEIjwHlAQiQAecBEJEB6AFQkgHqAQiTAewBEJQB7QFRlQHuAQiWAe8BCJcB8AEQmAHzAVKZAfQBWJoB9gEJmwH3AQmcAfkBCZ0B-gEJngH7AQmfAf0BCaAB_wEQoQGAAlmiAYUCCaMBhwIQpAGIAlqlAYwCCaYBjQIJpwGOAhCoAZECW6kBkgJfqgGUAmCrAZUCYKwBmAJgrQGZAmCuAZoCYK8BnAJgsAGeAhCxAZ8CYbIBoQJgswGjAhC0AaQCYrUBpQJgtgGmAmC3AacCELgBqgJjuQGrAmm6Aa0CarsBrgJqvAGxAmq9AbICar4BswJqvwG1AmrAAbcCEMEBuAJrwgG6AmrDAbwCEMQBvQJsxQG-AmrGAb8CascBwAIQyAHDAm3JAcQCccoBxgJyywHHAnLMAcoCcs0BywJyzgHMAnLPAc4CctAB0AIQ0QHRAnPSAdMCctMB1QIQ1AHWAnTVAdcCctYB2AJy1wHZAhDYAdwCddkB3QJ52gHeAgPbAd8CA9wB4AID3QHhAgPeAeICA98B5AID4AHmAhDhAecCeuIB6QID4wHrAhDkAewCe-UB7QID5gHuAgPnAe8CEOgB8gJ86QHzAoIB" } async function decodeBase64AsWasm(wasmBase64: string): Promise { @@ -298,6 +298,16 @@ export interface PrismaClient< */ get setting(): Prisma.SettingDelegate; + /** + * `prisma.studyActivity`: Exposes CRUD operations for the **StudyActivity** model. + * Example usage: + * ```ts + * // Fetch zero or more StudyActivities + * const studyActivities = await prisma.studyActivity.findMany() + * ``` + */ + get studyActivity(): Prisma.StudyActivityDelegate; + /** * `prisma.materialGroup`: Exposes CRUD operations for the **MaterialGroup** model. * Example usage: diff --git a/src/generated/prisma/internal/prismaNamespace.ts b/src/generated/prisma/internal/prismaNamespace.ts index e12ee22..7f2be5f 100644 --- a/src/generated/prisma/internal/prismaNamespace.ts +++ b/src/generated/prisma/internal/prismaNamespace.ts @@ -395,6 +395,7 @@ export const ModelName = { ShareLink: 'ShareLink', AuthSecurity: 'AuthSecurity', Setting: 'Setting', + StudyActivity: 'StudyActivity', MaterialGroup: 'MaterialGroup' } as const @@ -411,7 +412,7 @@ export type TypeMap + fields: Prisma.StudyActivityFieldRefs + operations: { + findUnique: { + args: Prisma.StudyActivityFindUniqueArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.StudyActivityFindUniqueOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findFirst: { + args: Prisma.StudyActivityFindFirstArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.StudyActivityFindFirstOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findMany: { + args: Prisma.StudyActivityFindManyArgs + result: runtime.Types.Utils.PayloadToResult[] + } + create: { + args: Prisma.StudyActivityCreateArgs + result: runtime.Types.Utils.PayloadToResult + } + createMany: { + args: Prisma.StudyActivityCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.StudyActivityCreateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + delete: { + args: Prisma.StudyActivityDeleteArgs + result: runtime.Types.Utils.PayloadToResult + } + update: { + args: Prisma.StudyActivityUpdateArgs + result: runtime.Types.Utils.PayloadToResult + } + deleteMany: { + args: Prisma.StudyActivityDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.StudyActivityUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.StudyActivityUpdateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + upsert: { + args: Prisma.StudyActivityUpsertArgs + result: runtime.Types.Utils.PayloadToResult + } + aggregate: { + args: Prisma.StudyActivityAggregateArgs + result: runtime.Types.Utils.Optional + } + groupBy: { + args: Prisma.StudyActivityGroupByArgs + result: runtime.Types.Utils.Optional[] + } + count: { + args: Prisma.StudyActivityCountArgs + result: runtime.Types.Utils.Optional | number + } + } + } MaterialGroup: { payload: Prisma.$MaterialGroupPayload fields: Prisma.MaterialGroupFieldRefs @@ -1470,6 +1545,15 @@ export const SettingScalarFieldEnum = { export type SettingScalarFieldEnum = (typeof SettingScalarFieldEnum)[keyof typeof SettingScalarFieldEnum] +export const StudyActivityScalarFieldEnum = { + id: 'id', + type: 'type', + occurredAt: 'occurredAt' +} as const + +export type StudyActivityScalarFieldEnum = (typeof StudyActivityScalarFieldEnum)[keyof typeof StudyActivityScalarFieldEnum] + + export const MaterialGroupScalarFieldEnum = { id: 'id', classId: 'classId', @@ -1659,6 +1743,7 @@ export type GlobalOmitConfig = { shareLink?: Prisma.ShareLinkOmit authSecurity?: Prisma.AuthSecurityOmit setting?: Prisma.SettingOmit + studyActivity?: Prisma.StudyActivityOmit materialGroup?: Prisma.MaterialGroupOmit } diff --git a/src/generated/prisma/internal/prismaNamespaceBrowser.ts b/src/generated/prisma/internal/prismaNamespaceBrowser.ts index 90ca7f0..7b45804 100644 --- a/src/generated/prisma/internal/prismaNamespaceBrowser.ts +++ b/src/generated/prisma/internal/prismaNamespaceBrowser.ts @@ -62,6 +62,7 @@ export const ModelName = { ShareLink: 'ShareLink', AuthSecurity: 'AuthSecurity', Setting: 'Setting', + StudyActivity: 'StudyActivity', MaterialGroup: 'MaterialGroup' } as const @@ -209,6 +210,15 @@ export const SettingScalarFieldEnum = { export type SettingScalarFieldEnum = (typeof SettingScalarFieldEnum)[keyof typeof SettingScalarFieldEnum] +export const StudyActivityScalarFieldEnum = { + id: 'id', + type: 'type', + occurredAt: 'occurredAt' +} as const + +export type StudyActivityScalarFieldEnum = (typeof StudyActivityScalarFieldEnum)[keyof typeof StudyActivityScalarFieldEnum] + + export const MaterialGroupScalarFieldEnum = { id: 'id', classId: 'classId', diff --git a/src/generated/prisma/models.ts b/src/generated/prisma/models.ts index 145eb9e..b7bcb19 100644 --- a/src/generated/prisma/models.ts +++ b/src/generated/prisma/models.ts @@ -19,5 +19,6 @@ export type * from './models/QuizAttempt' export type * from './models/ShareLink' export type * from './models/AuthSecurity' export type * from './models/Setting' +export type * from './models/StudyActivity' export type * from './models/MaterialGroup' export type * from './commonInputTypes' \ No newline at end of file diff --git a/src/generated/prisma/models/StudyActivity.ts b/src/generated/prisma/models/StudyActivity.ts new file mode 100644 index 0000000..316fa78 --- /dev/null +++ b/src/generated/prisma/models/StudyActivity.ts @@ -0,0 +1,1091 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file exports the `StudyActivity` model and its related types. + * + * 🟢 You can import this file directly. + */ +import type * as runtime from "@prisma/client/runtime/client" +import type * as $Enums from "../enums" +import type * as Prisma from "../internal/prismaNamespace" + +/** + * Model StudyActivity + * + */ +export type StudyActivityModel = runtime.Types.Result.DefaultSelection + +export type AggregateStudyActivity = { + _count: StudyActivityCountAggregateOutputType | null + _min: StudyActivityMinAggregateOutputType | null + _max: StudyActivityMaxAggregateOutputType | null +} + +export type StudyActivityMinAggregateOutputType = { + id: string | null + type: string | null + occurredAt: Date | null +} + +export type StudyActivityMaxAggregateOutputType = { + id: string | null + type: string | null + occurredAt: Date | null +} + +export type StudyActivityCountAggregateOutputType = { + id: number + type: number + occurredAt: number + _all: number +} + + +export type StudyActivityMinAggregateInputType = { + id?: true + type?: true + occurredAt?: true +} + +export type StudyActivityMaxAggregateInputType = { + id?: true + type?: true + occurredAt?: true +} + +export type StudyActivityCountAggregateInputType = { + id?: true + type?: true + occurredAt?: true + _all?: true +} + +export type StudyActivityAggregateArgs = { + /** + * Filter which StudyActivity to aggregate. + */ + where?: Prisma.StudyActivityWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of StudyActivities to fetch. + */ + orderBy?: Prisma.StudyActivityOrderByWithRelationInput | Prisma.StudyActivityOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: Prisma.StudyActivityWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` StudyActivities from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` StudyActivities. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned StudyActivities + **/ + _count?: true | StudyActivityCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: StudyActivityMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: StudyActivityMaxAggregateInputType +} + +export type GetStudyActivityAggregateType = { + [P in keyof T & keyof AggregateStudyActivity]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType +} + + + + +export type StudyActivityGroupByArgs = { + where?: Prisma.StudyActivityWhereInput + orderBy?: Prisma.StudyActivityOrderByWithAggregationInput | Prisma.StudyActivityOrderByWithAggregationInput[] + by: Prisma.StudyActivityScalarFieldEnum[] | Prisma.StudyActivityScalarFieldEnum + having?: Prisma.StudyActivityScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: StudyActivityCountAggregateInputType | true + _min?: StudyActivityMinAggregateInputType + _max?: StudyActivityMaxAggregateInputType +} + +export type StudyActivityGroupByOutputType = { + id: string + type: string + occurredAt: Date + _count: StudyActivityCountAggregateOutputType | null + _min: StudyActivityMinAggregateOutputType | null + _max: StudyActivityMaxAggregateOutputType | null +} + +export type GetStudyActivityGroupByPayload = Prisma.PrismaPromise< + Array< + Prisma.PickEnumerable & + { + [P in ((keyof T) & (keyof StudyActivityGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType + } + > + > + + + +export type StudyActivityWhereInput = { + AND?: Prisma.StudyActivityWhereInput | Prisma.StudyActivityWhereInput[] + OR?: Prisma.StudyActivityWhereInput[] + NOT?: Prisma.StudyActivityWhereInput | Prisma.StudyActivityWhereInput[] + id?: Prisma.StringFilter<"StudyActivity"> | string + type?: Prisma.StringFilter<"StudyActivity"> | string + occurredAt?: Prisma.DateTimeFilter<"StudyActivity"> | Date | string +} + +export type StudyActivityOrderByWithRelationInput = { + id?: Prisma.SortOrder + type?: Prisma.SortOrder + occurredAt?: Prisma.SortOrder +} + +export type StudyActivityWhereUniqueInput = Prisma.AtLeast<{ + id?: string + AND?: Prisma.StudyActivityWhereInput | Prisma.StudyActivityWhereInput[] + OR?: Prisma.StudyActivityWhereInput[] + NOT?: Prisma.StudyActivityWhereInput | Prisma.StudyActivityWhereInput[] + type?: Prisma.StringFilter<"StudyActivity"> | string + occurredAt?: Prisma.DateTimeFilter<"StudyActivity"> | Date | string +}, "id"> + +export type StudyActivityOrderByWithAggregationInput = { + id?: Prisma.SortOrder + type?: Prisma.SortOrder + occurredAt?: Prisma.SortOrder + _count?: Prisma.StudyActivityCountOrderByAggregateInput + _max?: Prisma.StudyActivityMaxOrderByAggregateInput + _min?: Prisma.StudyActivityMinOrderByAggregateInput +} + +export type StudyActivityScalarWhereWithAggregatesInput = { + AND?: Prisma.StudyActivityScalarWhereWithAggregatesInput | Prisma.StudyActivityScalarWhereWithAggregatesInput[] + OR?: Prisma.StudyActivityScalarWhereWithAggregatesInput[] + NOT?: Prisma.StudyActivityScalarWhereWithAggregatesInput | Prisma.StudyActivityScalarWhereWithAggregatesInput[] + id?: Prisma.StringWithAggregatesFilter<"StudyActivity"> | string + type?: Prisma.StringWithAggregatesFilter<"StudyActivity"> | string + occurredAt?: Prisma.DateTimeWithAggregatesFilter<"StudyActivity"> | Date | string +} + +export type StudyActivityCreateInput = { + id?: string + type: string + occurredAt?: Date | string +} + +export type StudyActivityUncheckedCreateInput = { + id?: string + type: string + occurredAt?: Date | string +} + +export type StudyActivityUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + type?: Prisma.StringFieldUpdateOperationsInput | string + occurredAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type StudyActivityUncheckedUpdateInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + type?: Prisma.StringFieldUpdateOperationsInput | string + occurredAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type StudyActivityCreateManyInput = { + id?: string + type: string + occurredAt?: Date | string +} + +export type StudyActivityUpdateManyMutationInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + type?: Prisma.StringFieldUpdateOperationsInput | string + occurredAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type StudyActivityUncheckedUpdateManyInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + type?: Prisma.StringFieldUpdateOperationsInput | string + occurredAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type StudyActivityCountOrderByAggregateInput = { + id?: Prisma.SortOrder + type?: Prisma.SortOrder + occurredAt?: Prisma.SortOrder +} + +export type StudyActivityMaxOrderByAggregateInput = { + id?: Prisma.SortOrder + type?: Prisma.SortOrder + occurredAt?: Prisma.SortOrder +} + +export type StudyActivityMinOrderByAggregateInput = { + id?: Prisma.SortOrder + type?: Prisma.SortOrder + occurredAt?: Prisma.SortOrder +} + + + +export type StudyActivitySelect = runtime.Types.Extensions.GetSelect<{ + id?: boolean + type?: boolean + occurredAt?: boolean +}, ExtArgs["result"]["studyActivity"]> + +export type StudyActivitySelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + type?: boolean + occurredAt?: boolean +}, ExtArgs["result"]["studyActivity"]> + +export type StudyActivitySelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + type?: boolean + occurredAt?: boolean +}, ExtArgs["result"]["studyActivity"]> + +export type StudyActivitySelectScalar = { + id?: boolean + type?: boolean + occurredAt?: boolean +} + +export type StudyActivityOmit = runtime.Types.Extensions.GetOmit<"id" | "type" | "occurredAt", ExtArgs["result"]["studyActivity"]> + +export type $StudyActivityPayload = { + name: "StudyActivity" + objects: {} + scalars: runtime.Types.Extensions.GetPayloadResult<{ + id: string + type: string + occurredAt: Date + }, ExtArgs["result"]["studyActivity"]> + composites: {} +} + +export type StudyActivityGetPayload = runtime.Types.Result.GetResult + +export type StudyActivityCountArgs = + Omit & { + select?: StudyActivityCountAggregateInputType | true + } + +export interface StudyActivityDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['StudyActivity'], meta: { name: 'StudyActivity' } } + /** + * Find zero or one StudyActivity that matches the filter. + * @param {StudyActivityFindUniqueArgs} args - Arguments to find a StudyActivity + * @example + * // Get one StudyActivity + * const studyActivity = await prisma.studyActivity.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__StudyActivityClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one StudyActivity that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {StudyActivityFindUniqueOrThrowArgs} args - Arguments to find a StudyActivity + * @example + * // Get one StudyActivity + * const studyActivity = await prisma.studyActivity.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__StudyActivityClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first StudyActivity that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {StudyActivityFindFirstArgs} args - Arguments to find a StudyActivity + * @example + * // Get one StudyActivity + * const studyActivity = await prisma.studyActivity.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__StudyActivityClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first StudyActivity that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {StudyActivityFindFirstOrThrowArgs} args - Arguments to find a StudyActivity + * @example + * // Get one StudyActivity + * const studyActivity = await prisma.studyActivity.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__StudyActivityClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more StudyActivities that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {StudyActivityFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all StudyActivities + * const studyActivities = await prisma.studyActivity.findMany() + * + * // Get first 10 StudyActivities + * const studyActivities = await prisma.studyActivity.findMany({ take: 10 }) + * + * // Only select the `id` + * const studyActivityWithIdOnly = await prisma.studyActivity.findMany({ select: { id: true } }) + * + */ + findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> + + /** + * Create a StudyActivity. + * @param {StudyActivityCreateArgs} args - Arguments to create a StudyActivity. + * @example + * // Create one StudyActivity + * const StudyActivity = await prisma.studyActivity.create({ + * data: { + * // ... data to create a StudyActivity + * } + * }) + * + */ + create(args: Prisma.SelectSubset>): Prisma.Prisma__StudyActivityClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many StudyActivities. + * @param {StudyActivityCreateManyArgs} args - Arguments to create many StudyActivities. + * @example + * // Create many StudyActivities + * const studyActivity = await prisma.studyActivity.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Create many StudyActivities and returns the data saved in the database. + * @param {StudyActivityCreateManyAndReturnArgs} args - Arguments to create many StudyActivities. + * @example + * // Create many StudyActivities + * const studyActivity = await prisma.studyActivity.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many StudyActivities and only return the `id` + * const studyActivityWithIdOnly = await prisma.studyActivity.createManyAndReturn({ + * select: { id: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> + + /** + * Delete a StudyActivity. + * @param {StudyActivityDeleteArgs} args - Arguments to delete one StudyActivity. + * @example + * // Delete one StudyActivity + * const StudyActivity = await prisma.studyActivity.delete({ + * where: { + * // ... filter to delete one StudyActivity + * } + * }) + * + */ + delete(args: Prisma.SelectSubset>): Prisma.Prisma__StudyActivityClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one StudyActivity. + * @param {StudyActivityUpdateArgs} args - Arguments to update one StudyActivity. + * @example + * // Update one StudyActivity + * const studyActivity = await prisma.studyActivity.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: Prisma.SelectSubset>): Prisma.Prisma__StudyActivityClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more StudyActivities. + * @param {StudyActivityDeleteManyArgs} args - Arguments to filter StudyActivities to delete. + * @example + * // Delete a few StudyActivities + * const { count } = await prisma.studyActivity.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more StudyActivities. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {StudyActivityUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many StudyActivities + * const studyActivity = await prisma.studyActivity.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more StudyActivities and returns the data updated in the database. + * @param {StudyActivityUpdateManyAndReturnArgs} args - Arguments to update many StudyActivities. + * @example + * // Update many StudyActivities + * const studyActivity = await prisma.studyActivity.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more StudyActivities and only return the `id` + * const studyActivityWithIdOnly = await prisma.studyActivity.updateManyAndReturn({ + * select: { id: true }, + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> + + /** + * Create or update one StudyActivity. + * @param {StudyActivityUpsertArgs} args - Arguments to update or create a StudyActivity. + * @example + * // Update or create a StudyActivity + * const studyActivity = await prisma.studyActivity.upsert({ + * create: { + * // ... data to create a StudyActivity + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the StudyActivity we want to update + * } + * }) + */ + upsert(args: Prisma.SelectSubset>): Prisma.Prisma__StudyActivityClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of StudyActivities. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {StudyActivityCountArgs} args - Arguments to filter StudyActivities to count. + * @example + * // Count the number of StudyActivities + * const count = await prisma.studyActivity.count({ + * where: { + * // ... the filter for the StudyActivities we want to count + * } + * }) + **/ + count( + args?: Prisma.Subset, + ): Prisma.PrismaPromise< + T extends runtime.Types.Utils.Record<'select', any> + ? T['select'] extends true + ? number + : Prisma.GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a StudyActivity. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {StudyActivityAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Prisma.Subset): Prisma.PrismaPromise> + + /** + * Group by StudyActivity. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {StudyActivityGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends StudyActivityGroupByArgs, + HasSelectOrTake extends Prisma.Or< + Prisma.Extends<'skip', Prisma.Keys>, + Prisma.Extends<'take', Prisma.Keys> + >, + OrderByArg extends Prisma.True extends HasSelectOrTake + ? { orderBy: StudyActivityGroupByArgs['orderBy'] } + : { orderBy?: StudyActivityGroupByArgs['orderBy'] }, + OrderFields extends Prisma.ExcludeUnderscoreKeys>>, + ByFields extends Prisma.MaybeTupleToUnion, + ByValid extends Prisma.Has, + HavingFields extends Prisma.GetHavingFields, + HavingValid extends Prisma.Has, + ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, + InputErrors extends ByEmpty extends Prisma.True + ? `Error: "by" must not be empty.` + : HavingValid extends Prisma.False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetStudyActivityGroupByPayload : Prisma.PrismaPromise +/** + * Fields of the StudyActivity model + */ +readonly fields: StudyActivityFieldRefs; +} + +/** + * The delegate class that acts as a "Promise-like" for StudyActivity. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ +export interface Prisma__StudyActivityClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise +} + + + + +/** + * Fields of the StudyActivity model + */ +export interface StudyActivityFieldRefs { + readonly id: Prisma.FieldRef<"StudyActivity", 'String'> + readonly type: Prisma.FieldRef<"StudyActivity", 'String'> + readonly occurredAt: Prisma.FieldRef<"StudyActivity", 'DateTime'> +} + + +// Custom InputTypes +/** + * StudyActivity findUnique + */ +export type StudyActivityFindUniqueArgs = { + /** + * Select specific fields to fetch from the StudyActivity + */ + select?: Prisma.StudyActivitySelect | null + /** + * Omit specific fields from the StudyActivity + */ + omit?: Prisma.StudyActivityOmit | null + /** + * Filter, which StudyActivity to fetch. + */ + where: Prisma.StudyActivityWhereUniqueInput +} + +/** + * StudyActivity findUniqueOrThrow + */ +export type StudyActivityFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the StudyActivity + */ + select?: Prisma.StudyActivitySelect | null + /** + * Omit specific fields from the StudyActivity + */ + omit?: Prisma.StudyActivityOmit | null + /** + * Filter, which StudyActivity to fetch. + */ + where: Prisma.StudyActivityWhereUniqueInput +} + +/** + * StudyActivity findFirst + */ +export type StudyActivityFindFirstArgs = { + /** + * Select specific fields to fetch from the StudyActivity + */ + select?: Prisma.StudyActivitySelect | null + /** + * Omit specific fields from the StudyActivity + */ + omit?: Prisma.StudyActivityOmit | null + /** + * Filter, which StudyActivity to fetch. + */ + where?: Prisma.StudyActivityWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of StudyActivities to fetch. + */ + orderBy?: Prisma.StudyActivityOrderByWithRelationInput | Prisma.StudyActivityOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for StudyActivities. + */ + cursor?: Prisma.StudyActivityWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` StudyActivities from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` StudyActivities. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of StudyActivities. + */ + distinct?: Prisma.StudyActivityScalarFieldEnum | Prisma.StudyActivityScalarFieldEnum[] +} + +/** + * StudyActivity findFirstOrThrow + */ +export type StudyActivityFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the StudyActivity + */ + select?: Prisma.StudyActivitySelect | null + /** + * Omit specific fields from the StudyActivity + */ + omit?: Prisma.StudyActivityOmit | null + /** + * Filter, which StudyActivity to fetch. + */ + where?: Prisma.StudyActivityWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of StudyActivities to fetch. + */ + orderBy?: Prisma.StudyActivityOrderByWithRelationInput | Prisma.StudyActivityOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for StudyActivities. + */ + cursor?: Prisma.StudyActivityWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` StudyActivities from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` StudyActivities. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of StudyActivities. + */ + distinct?: Prisma.StudyActivityScalarFieldEnum | Prisma.StudyActivityScalarFieldEnum[] +} + +/** + * StudyActivity findMany + */ +export type StudyActivityFindManyArgs = { + /** + * Select specific fields to fetch from the StudyActivity + */ + select?: Prisma.StudyActivitySelect | null + /** + * Omit specific fields from the StudyActivity + */ + omit?: Prisma.StudyActivityOmit | null + /** + * Filter, which StudyActivities to fetch. + */ + where?: Prisma.StudyActivityWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of StudyActivities to fetch. + */ + orderBy?: Prisma.StudyActivityOrderByWithRelationInput | Prisma.StudyActivityOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing StudyActivities. + */ + cursor?: Prisma.StudyActivityWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` StudyActivities from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` StudyActivities. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of StudyActivities. + */ + distinct?: Prisma.StudyActivityScalarFieldEnum | Prisma.StudyActivityScalarFieldEnum[] +} + +/** + * StudyActivity create + */ +export type StudyActivityCreateArgs = { + /** + * Select specific fields to fetch from the StudyActivity + */ + select?: Prisma.StudyActivitySelect | null + /** + * Omit specific fields from the StudyActivity + */ + omit?: Prisma.StudyActivityOmit | null + /** + * The data needed to create a StudyActivity. + */ + data: Prisma.XOR +} + +/** + * StudyActivity createMany + */ +export type StudyActivityCreateManyArgs = { + /** + * The data used to create many StudyActivities. + */ + data: Prisma.StudyActivityCreateManyInput | Prisma.StudyActivityCreateManyInput[] +} + +/** + * StudyActivity createManyAndReturn + */ +export type StudyActivityCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the StudyActivity + */ + select?: Prisma.StudyActivitySelectCreateManyAndReturn | null + /** + * Omit specific fields from the StudyActivity + */ + omit?: Prisma.StudyActivityOmit | null + /** + * The data used to create many StudyActivities. + */ + data: Prisma.StudyActivityCreateManyInput | Prisma.StudyActivityCreateManyInput[] +} + +/** + * StudyActivity update + */ +export type StudyActivityUpdateArgs = { + /** + * Select specific fields to fetch from the StudyActivity + */ + select?: Prisma.StudyActivitySelect | null + /** + * Omit specific fields from the StudyActivity + */ + omit?: Prisma.StudyActivityOmit | null + /** + * The data needed to update a StudyActivity. + */ + data: Prisma.XOR + /** + * Choose, which StudyActivity to update. + */ + where: Prisma.StudyActivityWhereUniqueInput +} + +/** + * StudyActivity updateMany + */ +export type StudyActivityUpdateManyArgs = { + /** + * The data used to update StudyActivities. + */ + data: Prisma.XOR + /** + * Filter which StudyActivities to update + */ + where?: Prisma.StudyActivityWhereInput + /** + * Limit how many StudyActivities to update. + */ + limit?: number +} + +/** + * StudyActivity updateManyAndReturn + */ +export type StudyActivityUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the StudyActivity + */ + select?: Prisma.StudyActivitySelectUpdateManyAndReturn | null + /** + * Omit specific fields from the StudyActivity + */ + omit?: Prisma.StudyActivityOmit | null + /** + * The data used to update StudyActivities. + */ + data: Prisma.XOR + /** + * Filter which StudyActivities to update + */ + where?: Prisma.StudyActivityWhereInput + /** + * Limit how many StudyActivities to update. + */ + limit?: number +} + +/** + * StudyActivity upsert + */ +export type StudyActivityUpsertArgs = { + /** + * Select specific fields to fetch from the StudyActivity + */ + select?: Prisma.StudyActivitySelect | null + /** + * Omit specific fields from the StudyActivity + */ + omit?: Prisma.StudyActivityOmit | null + /** + * The filter to search for the StudyActivity to update in case it exists. + */ + where: Prisma.StudyActivityWhereUniqueInput + /** + * In case the StudyActivity found by the `where` argument doesn't exist, create a new StudyActivity with this data. + */ + create: Prisma.XOR + /** + * In case the StudyActivity was found with the provided `where` argument, update it with this data. + */ + update: Prisma.XOR +} + +/** + * StudyActivity delete + */ +export type StudyActivityDeleteArgs = { + /** + * Select specific fields to fetch from the StudyActivity + */ + select?: Prisma.StudyActivitySelect | null + /** + * Omit specific fields from the StudyActivity + */ + omit?: Prisma.StudyActivityOmit | null + /** + * Filter which StudyActivity to delete. + */ + where: Prisma.StudyActivityWhereUniqueInput +} + +/** + * StudyActivity deleteMany + */ +export type StudyActivityDeleteManyArgs = { + /** + * Filter which StudyActivities to delete + */ + where?: Prisma.StudyActivityWhereInput + /** + * Limit how many StudyActivities to delete. + */ + limit?: number +} + +/** + * StudyActivity without action + */ +export type StudyActivityDefaultArgs = { + /** + * Select specific fields to fetch from the StudyActivity + */ + select?: Prisma.StudyActivitySelect | null + /** + * Omit specific fields from the StudyActivity + */ + omit?: Prisma.StudyActivityOmit | null +} diff --git a/src/lib/activityClient.ts b/src/lib/activityClient.ts new file mode 100644 index 0000000..6eaaafd --- /dev/null +++ b/src/lib/activityClient.ts @@ -0,0 +1,9 @@ +import type { StudyActivityType } from "@/lib/validation/activitySchemas"; + +export function recordStudyActivity(type: StudyActivityType) { + return fetch("/api/activity", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ type }), + }); +} diff --git a/src/lib/validation/activitySchemas.ts b/src/lib/validation/activitySchemas.ts new file mode 100644 index 0000000..a71c764 --- /dev/null +++ b/src/lib/validation/activitySchemas.ts @@ -0,0 +1,7 @@ +import { z } from "zod"; + +export const studyActivitySchema = z.object({ + type: z.enum(["FLASHCARD", "QUIZ_QUESTION"]), +}); + +export type StudyActivityType = z.infer["type"]; diff --git a/src/services/activityService.ts b/src/services/activityService.ts new file mode 100644 index 0000000..dea1574 --- /dev/null +++ b/src/services/activityService.ts @@ -0,0 +1,104 @@ +import { prisma } from "@/lib/db"; +import type { StudyActivityType } from "@/lib/validation/activitySchemas"; + +const ARIZONA_OFFSET_MS = 7 * 60 * 60 * 1000; +const WEEKS_TO_DISPLAY = 53; +const DAYS_TO_DISPLAY = WEEKS_TO_DISPLAY * 7; +const STREAK_THRESHOLD = 20; + +export interface DailyActivity { + date: string; + flashcards: number; + questions: number; + total: number; + level: 0 | 1 | 2 | 3 | 4; +} + +export interface ActivitySummary { + days: DailyActivity[]; + today: string; + activeDays: number; + flashcards: number; + questions: number; + currentStreak: number; +} + +function toArizonaDateKey(date: Date): string { + return new Date(date.getTime() - ARIZONA_OFFSET_MS).toISOString().slice(0, 10); +} + +function dateKeyToUtcDate(dateKey: string): Date { + return new Date(`${dateKey}T00:00:00.000Z`); +} + +function addDays(dateKey: string, days: number): string { + const date = dateKeyToUtcDate(dateKey); + date.setUTCDate(date.getUTCDate() + days); + return date.toISOString().slice(0, 10); +} + +function getLevel(total: number): 0 | 1 | 2 | 3 | 4 { + if (total === 0) return 0; + if (total < 20) return 1; + if (total < 50) return 2; + if (total < 100) return 3; + return 4; +} + +function emptyDay(date: string): DailyActivity { + return { date, flashcards: 0, questions: 0, total: 0, level: 0 }; +} + +export async function recordActivity(type: StudyActivityType) { + return prisma.studyActivity.create({ data: { type } }); +} + +export async function getActivitySummary(now = new Date()): Promise { + const today = toArizonaDateKey(now); + const todayDate = dateKeyToUtcDate(today); + const dayOfWeek = todayDate.getUTCDay(); + const startDate = addDays(today, -(dayOfWeek + (WEEKS_TO_DISPLAY - 1) * 7)); + const endDate = addDays(startDate, DAYS_TO_DISPLAY - 1); + + const activities = await prisma.studyActivity.findMany({ + select: { type: true, occurredAt: true }, + orderBy: { occurredAt: "asc" }, + }); + const totals = new Map(); + + for (const activity of activities) { + const date = toArizonaDateKey(activity.occurredAt); + const day = totals.get(date) ?? emptyDay(date); + if (activity.type === "FLASHCARD") day.flashcards += 1; + if (activity.type === "QUIZ_QUESTION") day.questions += 1; + day.total += 1; + day.level = getLevel(day.total); + totals.set(date, day); + } + + const days = Array.from({ length: DAYS_TO_DISPLAY }, (_, index) => { + const date = addDays(startDate, index); + return totals.get(date) ?? emptyDay(date); + }); + const visibleDays = days.filter((day) => day.date <= today && day.date <= endDate); + const flashcards = visibleDays.reduce((sum, day) => sum + day.flashcards, 0); + const questions = visibleDays.reduce((sum, day) => sum + day.questions, 0); + + let streakDate = (totals.get(today)?.total ?? 0) >= STREAK_THRESHOLD + ? today + : addDays(today, -1); + let currentStreak = 0; + while ((totals.get(streakDate)?.total ?? 0) >= STREAK_THRESHOLD) { + currentStreak += 1; + streakDate = addDays(streakDate, -1); + } + + return { + days, + today, + activeDays: visibleDays.filter((day) => day.total > 0).length, + flashcards, + questions, + currentStreak, + }; +}