diff --git a/internal/api/notes_handlers.go b/internal/api/notes_handlers.go new file mode 100644 index 00000000..0b4c05d3 --- /dev/null +++ b/internal/api/notes_handlers.go @@ -0,0 +1,168 @@ +package api + +import ( + "net/http" + "time" + + "github.com/gin-gonic/gin" + "github.com/google/uuid" + "gorm.io/gorm" + + "scriberr/internal/database" + "scriberr/internal/models" +) + +// NoteCreateRequest is the payload for creating a note +type NoteCreateRequest struct { + StartWordIndex int `json:"start_word_index" binding:"required,min=0"` + EndWordIndex int `json:"end_word_index" binding:"required,min=0"` + StartTime float64 `json:"start_time" binding:"required"` + EndTime float64 `json:"end_time" binding:"required"` + Quote string `json:"quote" binding:"required,min=1"` + Content string `json:"content" binding:"required,min=1"` +} + +// NoteUpdateRequest updates content of a note +type NoteUpdateRequest struct { + Content string `json:"content" binding:"required,min=1"` +} + +// ListNotes returns all notes for a transcription +func (h *Handler) ListNotes(c *gin.Context) { + transcriptionID := c.Param("id") + if transcriptionID == "" { + c.JSON(http.StatusBadRequest, gin.H{"error": "Transcription ID is required"}) + return + } + + // Ensure transcription exists + var job models.TranscriptionJob + if err := database.DB.Where("id = ?", transcriptionID).First(&job).Error; err != nil { + if err == gorm.ErrRecordNotFound { + c.JSON(http.StatusNotFound, gin.H{"error": "Transcription not found"}) + return + } + c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to fetch transcription"}) + return + } + + var notes []models.Note + if err := database.DB.Where("transcription_id = ?", transcriptionID). + Order("start_time ASC, created_at ASC").Find(¬es).Error; err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to fetch notes"}) + return + } + + c.JSON(http.StatusOK, notes) +} + +// CreateNote stores a new note for a transcription +func (h *Handler) CreateNote(c *gin.Context) { + transcriptionID := c.Param("id") + if transcriptionID == "" { + c.JSON(http.StatusBadRequest, gin.H{"error": "Transcription ID is required"}) + return + } + + var req NoteCreateRequest + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) + return + } + + if req.EndWordIndex < req.StartWordIndex { + c.JSON(http.StatusBadRequest, gin.H{"error": "end_word_index must be >= start_word_index"}) + return + } + if req.EndTime < req.StartTime { + c.JSON(http.StatusBadRequest, gin.H{"error": "end_time must be >= start_time"}) + return + } + + // Ensure transcription exists + var job models.TranscriptionJob + if err := database.DB.Where("id = ?", transcriptionID).First(&job).Error; err != nil { + if err == gorm.ErrRecordNotFound { + c.JSON(http.StatusNotFound, gin.H{"error": "Transcription not found"}) + return + } + c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to fetch transcription"}) + return + } + + n := models.Note{ + ID: uuid.New().String(), + TranscriptionID: transcriptionID, + StartWordIndex: req.StartWordIndex, + EndWordIndex: req.EndWordIndex, + StartTime: req.StartTime, + EndTime: req.EndTime, + Quote: req.Quote, + Content: req.Content, + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + } + + if err := database.DB.Create(&n).Error; err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to create note"}) + return + } + + c.JSON(http.StatusCreated, n) +} + +// GetNote returns a note by ID +func (h *Handler) GetNote(c *gin.Context) { + noteID := c.Param("note_id") + var n models.Note + if err := database.DB.Where("id = ?", noteID).First(&n).Error; err != nil { + if err == gorm.ErrRecordNotFound { + c.JSON(http.StatusNotFound, gin.H{"error": "Note not found"}) + return + } + c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to fetch note"}) + return + } + c.JSON(http.StatusOK, n) +} + +// UpdateNote updates the content of an existing note +func (h *Handler) UpdateNote(c *gin.Context) { + noteID := c.Param("note_id") + var req NoteUpdateRequest + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) + return + } + + var n models.Note + if err := database.DB.Where("id = ?", noteID).First(&n).Error; err != nil { + if err == gorm.ErrRecordNotFound { + c.JSON(http.StatusNotFound, gin.H{"error": "Note not found"}) + return + } + c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to fetch note"}) + return + } + + n.Content = req.Content + n.UpdatedAt = time.Now() + + if err := database.DB.Save(&n).Error; err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to update note"}) + return + } + + c.JSON(http.StatusOK, n) +} + +// DeleteNote removes a note by ID +func (h *Handler) DeleteNote(c *gin.Context) { + noteID := c.Param("note_id") + if err := database.DB.Delete(&models.Note{}, "id = ?", noteID).Error; err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to delete note"}) + return + } + c.Status(http.StatusNoContent) +} + diff --git a/internal/api/router.go b/internal/api/router.go index d62d9bd0..cf470a5c 100644 --- a/internal/api/router.go +++ b/internal/api/router.go @@ -79,6 +79,9 @@ func SetupRoutes(handler *Handler, authService *auth.AuthService) *gin.Engine { transcription.DELETE("/:id", handler.DeleteJob) transcription.GET("/list", handler.ListJobs) transcription.GET("/models", handler.GetSupportedModels) + // Notes for a transcription + transcription.GET("/:id/notes", handler.ListNotes) + transcription.POST("/:id/notes", handler.CreateNote) // Quick transcription endpoints transcription.POST("/quick", handler.SubmitQuickTranscription) @@ -128,6 +131,15 @@ func SetupRoutes(handler *Handler, authService *auth.AuthService) *gin.Engine { chat.POST("/sessions/:session_id/title/auto", handler.AutoGenerateChatTitle) chat.DELETE("/sessions/:session_id", handler.DeleteChatSession) } + + // Notes routes (require authentication) + notes := v1.Group("/notes") + notes.Use(middleware.AuthMiddleware(authService)) + { + notes.GET("/:note_id", handler.GetNote) + notes.PUT("/:note_id", handler.UpdateNote) + notes.DELETE("/:note_id", handler.DeleteNote) + } } // Set up static file serving for React app diff --git a/internal/database/database.go b/internal/database/database.go index 21127854..f6f7c6ca 100644 --- a/internal/database/database.go +++ b/internal/database/database.go @@ -40,6 +40,7 @@ func Initialize(dbPath string) error { &models.LLMConfig{}, &models.ChatSession{}, &models.ChatMessage{}, + &models.Note{}, ); err != nil { return fmt.Errorf("failed to auto migrate: %v", err) } @@ -88,4 +89,4 @@ func Close() error { return err } return sqlDB.Close() -} \ No newline at end of file +} diff --git a/internal/models/note.go b/internal/models/note.go new file mode 100644 index 00000000..299c16ce --- /dev/null +++ b/internal/models/note.go @@ -0,0 +1,29 @@ +package models + +import ( + "time" +) + +// Note represents an annotation attached to a transcription +type Note struct { + ID string `json:"id" gorm:"primaryKey;type:varchar(36)"` + TranscriptionID string `json:"transcription_id" gorm:"type:varchar(36);not null;index"` + + // Indexed selection into transcript by word positions + StartWordIndex int `json:"start_word_index" gorm:"type:int;not null"` + EndWordIndex int `json:"end_word_index" gorm:"type:int;not null"` + + // Time bounds for the selection (in seconds) + StartTime float64 `json:"start_time" gorm:"type:real;not null"` + EndTime float64 `json:"end_time" gorm:"type:real;not null"` + + // The exact quoted text chosen by the user + Quote string `json:"quote" gorm:"type:text;not null"` + + // The user's note content (markdown/plain) + Content string `json:"content" gorm:"type:text;not null"` + + CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"` + UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"` +} + diff --git a/internal/web/dist/assets/index-Ccgo9Msa.css b/internal/web/dist/assets/index-Ccgo9Msa.css new file mode 100644 index 00000000..0a998a37 --- /dev/null +++ b/internal/web/dist/assets/index-Ccgo9Msa.css @@ -0,0 +1,9 @@ +/*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-orange-700:oklch(55.3% .195 38.402);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-800:oklch(47.3% .137 46.201);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-yellow-900:oklch(42.1% .095 57.708);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-900:oklch(37.8% .077 168.94);--color-blue-50:oklch(97% .016 259);--color-blue-100:oklch(91% .044 258);--color-blue-200:oklch(82% .088 257);--color-blue-300:oklch(75% .128 258);--color-blue-400:oklch(68% .172 257);--color-blue-500:oklch(58% .232 260);--color-blue-600:oklch(50% .224 262);--color-blue-700:oklch(41% .204 263);--color-blue-800:oklch(30% .168 265);--color-blue-900:oklch(22% .112 266);--color-purple-100:oklch(91% .052 303);--color-purple-300:oklch(76% .148 303);--color-purple-400:oklch(70% .188 302);--color-purple-700:oklch(41% .184 297);--color-purple-900:oklch(23% .08 300);--color-gray-50:oklch(96.72% 0 0);--color-gray-100:oklch(90.67% 0 0);--color-gray-200:oklch(82.66% 0 0);--color-gray-300:oklch(73.16% 0 0);--color-gray-400:oklch(64.34% 0 0);--color-gray-500:oklch(54.17% 0 0);--color-gray-600:oklch(43.86% 0 0);--color-gray-700:oklch(26.86% 0 0);--color-gray-800:oklch(20.02% 0 0);--color-gray-900:oklch(0% 0 0);--color-gray-950:oklch(21% .008 286);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-4xl:56rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-magenta-400:oklch(68% .188 359)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}body{background-color:var(--color-gray-50);color:var(--color-gray-900)}body:is(.dark *){background-color:var(--color-gray-900);color:var(--color-gray-50)}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-4{top:calc(var(--spacing)*4)}.top-8{top:calc(var(--spacing)*8)}.top-\[50\%\]{top:50%}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.right-8{right:calc(var(--spacing)*8)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-4{bottom:calc(var(--spacing)*4)}.left-0{left:calc(var(--spacing)*0)}.left-2{left:calc(var(--spacing)*2)}.left-3{left:calc(var(--spacing)*3)}.left-\[50\%\]{left:50%}.z-10{z-index:10}.z-30{z-index:30}.z-50{z-index:50}.z-\[60\]{z-index:60}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.my-4{margin-block:calc(var(--spacing)*4)}.my-6{margin-block:calc(var(--spacing)*6)}.my-8{margin-block:calc(var(--spacing)*8)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.size-2{width:calc(var(--spacing)*2);height:calc(var(--spacing)*2)}.size-2\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-24{height:calc(var(--spacing)*24)}.h-32{height:calc(var(--spacing)*32)}.h-\[1\.15rem\]{height:1.15rem}.h-\[100dvh\]{height:100dvh}.h-\[520px\]{height:520px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-32{max-height:calc(var(--spacing)*32)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-96{max-height:calc(var(--spacing)*96)}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[300px\]{max-height:300px}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-16{min-height:calc(var(--spacing)*16)}.min-h-\[120px\]{min-height:120px}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-1\/3{width:33.3333%}.w-1\/4{width:25%}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-32{width:calc(var(--spacing)*32)}.w-40{width:calc(var(--spacing)*40)}.w-44{width:calc(var(--spacing)*44)}.w-48{width:calc(var(--spacing)*48)}.w-64{width:calc(var(--spacing)*64)}.w-72{width:calc(var(--spacing)*72)}.w-80{width:calc(var(--spacing)*80)}.w-\[36px\]{width:36px}.w-\[calc\(100vw-1rem\)\]{width:calc(100vw - 1rem)}.w-\[min\(90vw\,520px\)\]{width:min(90vw,520px)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-4xl{max-width:var(--container-4xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[50vw\]{max-width:50vw}.max-w-\[70\%\]{max-width:70%}.max-w-\[360px\]{max-width:360px}.max-w-\[1400px\]{max-width:1400px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[120px\]{min-width:120px}.min-w-\[220px\]{min-width:220px}.min-w-\[400px\]{min-width:400px}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-hover-card-content-transform-origin\){transform-origin:var(--radix-hover-card-content-transform-origin)}.origin-\(--radix-popover-content-transform-origin\){transform-origin:var(--radix-popover-content-transform-origin)}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-4{--tw-translate-y:calc(var(--spacing)*-4);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-4{--tw-translate-y:calc(var(--spacing)*4);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.scroll-my-1{scroll-margin-block:calc(var(--spacing)*1)}.scroll-py-1{scroll-padding-block:calc(var(--spacing)*1)}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-blue-500{border-color:var(--color-blue-500)}.border-blue-600{border-color:var(--color-blue-600)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-700{border-color:var(--color-gray-700)}.border-green-200{border-color:var(--color-green-200)}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-transparent{border-color:#0000}.border-yellow-200{border-color:var(--color-yellow-200)}.bg-amber-100\/70{background-color:#fef3c6b3}@supports (color:color-mix(in lab,red,red)){.bg-amber-100\/70{background-color:color-mix(in oklab,var(--color-amber-100)70%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black)60%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-orange-600{background-color:var(--color-orange-600)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.bg-white\/20{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-300{background-color:var(--color-yellow-300)}.fill-current{fill:currentColor}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-12{padding:calc(var(--spacing)*12)}.p-\[3px\]{padding:3px}.px-0\.5{padding-inline:calc(var(--spacing)*.5)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.py-16{padding-block:calc(var(--spacing)*16)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-6{padding-top:calc(var(--spacing)*6)}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-8{padding-right:calc(var(--spacing)*8)}.pr-10{padding-right:calc(var(--spacing)*10)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-28{padding-bottom:calc(var(--spacing)*28)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-10{padding-left:calc(var(--spacing)*10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-emerald-700{color:var(--color-emerald-700)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-green-900{color:var(--color-green-900)}.text-magenta-400{color:var(--color-magenta-400)}.text-orange-500{color:var(--color-orange-500)}.text-purple-400{color:var(--color-purple-400)}.text-purple-700{color:var(--color-purple-700)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-red-900{color:var(--color-red-900)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-600{color:var(--color-yellow-600)}.text-yellow-700{color:var(--color-yellow-700)}.text-yellow-800{color:var(--color-yellow-800)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-100{opacity:1}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-black\/10{--tw-ring-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.ring-black\/10{--tw-ring-color:color-mix(in oklab,var(--color-black)10%,transparent)}}.ring-blue-500\/50{--tw-ring-color:#096eff80}@supports (color:color-mix(in lab,red,red)){.ring-blue-500\/50{--tw-ring-color:color-mix(in oklab,var(--color-blue-500)50%,transparent)}}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.zoom-in-95{--tw-enter-scale:.95}.running{animation-play-state:running}@media (hover:hover){.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.placeholder\:text-gray-500::placeholder{color:var(--color-gray-500)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:border-blue-400:hover{border-color:var(--color-blue-400)}.hover\:bg-black\/70:hover{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/70:hover{background-color:color-mix(in oklab,var(--color-black)70%,transparent)}}.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-gray-300:hover{background-color:var(--color-gray-300)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-orange-700:hover{background-color:var(--color-orange-700)}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:text-blue-600:hover{color:var(--color-blue-600)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-gray-900:hover{color:var(--color-gray-900)}.hover\:text-orange-600:hover{color:var(--color-orange-600)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-red-700:hover{color:var(--color-red-700)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:ring-4:hover{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:bg-gray-100:focus{background-color:var(--color-gray-100)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-blue-500:focus-visible{border-color:var(--color-blue-500)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-4:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-blue-500\/50:focus-visible{--tw-ring-color:#096eff80}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-blue-500\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--color-blue-500)50%,transparent)}}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[inset\]\:pl-8[data-inset]{padding-left:calc(var(--spacing)*8)}.data-\[orientation\=horizontal\]\:h-1\.5[data-orientation=horizontal]{height:calc(var(--spacing)*1.5)}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:min-h-44[data-orientation=vertical]{min-height:calc(var(--spacing)*44)}.data-\[orientation\=vertical\]\:w-1\.5[data-orientation=vertical]{width:calc(var(--spacing)*1.5)}.data-\[orientation\=vertical\]\:w-auto[data-orientation=vertical]{width:auto}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical]{flex-direction:column}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing)*9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing)*8)}:is(.\*\*\:data-\[slot\=command-input-wrapper\]\:h-12 *)[data-slot=command-input-wrapper]{height:calc(var(--spacing)*12)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing)*2)}.data-\[state\=active\]\:bg-white[data-state=active]{background-color:var(--color-white)}.data-\[state\=active\]\:text-gray-900[data-state=active]{color:var(--color-gray-900)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=checked\]\:bg-blue-500[data-state=checked]{background-color:var(--color-blue-500)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-gray-300[data-state=unchecked]{background-color:var(--color-gray-300)}@media (min-width:40rem){.sm\:my-6{margin-block:calc(var(--spacing)*6)}.sm\:my-8{margin-block:calc(var(--spacing)*8)}.sm\:mt-6{margin-top:calc(var(--spacing)*6)}.sm\:mt-8{margin-top:calc(var(--spacing)*8)}.sm\:mb-6{margin-bottom:calc(var(--spacing)*6)}.sm\:mb-8{margin-bottom:calc(var(--spacing)*8)}.sm\:inline{display:inline}.sm\:table-cell{display:table-cell}.sm\:table-header-group{display:table-header-group}.sm\:h-6{height:calc(var(--spacing)*6)}.sm\:h-9{height:calc(var(--spacing)*9)}.sm\:h-10{height:calc(var(--spacing)*10)}.sm\:h-16{height:calc(var(--spacing)*16)}.sm\:w-6{width:calc(var(--spacing)*6)}.sm\:w-9{width:calc(var(--spacing)*9)}.sm\:w-10{width:calc(var(--spacing)*10)}.sm\:w-16{width:calc(var(--spacing)*16)}.sm\:w-72{width:calc(var(--spacing)*72)}.sm\:w-auto{width:auto}.sm\:max-w-4xl{max-width:var(--container-4xl)}.sm\:max-w-\[425px\]{max-width:425px}.sm\:max-w-\[600px\]{max-width:600px}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:gap-0{gap:calc(var(--spacing)*0)}.sm\:gap-3{gap:calc(var(--spacing)*3)}.sm\:gap-6{gap:calc(var(--spacing)*6)}.sm\:gap-8{gap:calc(var(--spacing)*8)}:where(.sm\:space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}.sm\:p-2{padding:calc(var(--spacing)*2)}.sm\:p-4{padding:calc(var(--spacing)*4)}.sm\:p-6{padding:calc(var(--spacing)*6)}.sm\:p-8{padding:calc(var(--spacing)*8)}.sm\:px-4{padding-inline:calc(var(--spacing)*4)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:py-3{padding-block:calc(var(--spacing)*3)}.sm\:py-6{padding-block:calc(var(--spacing)*6)}.sm\:pt-6{padding-top:calc(var(--spacing)*6)}.sm\:pr-2{padding-right:calc(var(--spacing)*2)}.sm\:text-left{text-align:left}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-\[1fr_360px\]{grid-template-columns:1fr 360px}.md\:p-4{padding:calc(var(--spacing)*4)}.md\:px-8{padding-inline:calc(var(--spacing)*8)}.md\:pb-32{padding-bottom:calc(var(--spacing)*32)}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.dark\:border-gray-600:is(.dark *){border-color:var(--color-gray-600)}.dark\:border-gray-700:is(.dark *){border-color:var(--color-gray-700)}.dark\:border-gray-900:is(.dark *){border-color:var(--color-gray-900)}.dark\:border-green-800:is(.dark *){border-color:var(--color-green-800)}.dark\:border-red-600:is(.dark *){border-color:var(--color-red-600)}.dark\:border-red-800:is(.dark *){border-color:var(--color-red-800)}.dark\:border-yellow-800:is(.dark *){border-color:var(--color-yellow-800)}.dark\:bg-amber-800\/40:is(.dark *){background-color:#953d0066}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-800\/40:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-800)40%,transparent)}}.dark\:bg-blue-700:is(.dark *){background-color:var(--color-blue-700)}.dark\:bg-blue-900:is(.dark *){background-color:var(--color-blue-900)}.dark\:bg-blue-900\/20:is(.dark *){background-color:#04104d33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-900)20%,transparent)}}.dark\:bg-blue-900\/30:is(.dark *){background-color:#04104d4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-900)30%,transparent)}}.dark\:bg-emerald-900\/30:is(.dark *){background-color:#004e3b4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-emerald-900)30%,transparent)}}.dark\:bg-gray-600:is(.dark *){background-color:var(--color-gray-600)}.dark\:bg-gray-600\/50:is(.dark *){background-color:#52525280}@supports (color:color-mix(in lab,red,red)){.dark\:bg-gray-600\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-gray-600)50%,transparent)}}.dark\:bg-gray-700:is(.dark *){background-color:var(--color-gray-700)}.dark\:bg-gray-700\/50:is(.dark *){background-color:#26262680}@supports (color:color-mix(in lab,red,red)){.dark\:bg-gray-700\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-gray-700)50%,transparent)}}.dark\:bg-gray-800:is(.dark *){background-color:var(--color-gray-800)}.dark\:bg-gray-800\/20:is(.dark *){background-color:#16161633}@supports (color:color-mix(in lab,red,red)){.dark\:bg-gray-800\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-gray-800)20%,transparent)}}.dark\:bg-gray-800\/50:is(.dark *){background-color:#16161680}@supports (color:color-mix(in lab,red,red)){.dark\:bg-gray-800\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-gray-800)50%,transparent)}}.dark\:bg-gray-900:is(.dark *){background-color:var(--color-gray-900)}.dark\:bg-gray-950:is(.dark *){background-color:var(--color-gray-950)}.dark\:bg-green-700:is(.dark *){background-color:var(--color-green-700)}.dark\:bg-green-900\/20:is(.dark *){background-color:#0d542b33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-green-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-green-900)20%,transparent)}}.dark\:bg-green-900\/30:is(.dark *){background-color:#0d542b4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-green-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-green-900)30%,transparent)}}.dark\:bg-purple-900\/40:is(.dark *){background-color:#23113c66}@supports (color:color-mix(in lab,red,red)){.dark\:bg-purple-900\/40:is(.dark *){background-color:color-mix(in oklab,var(--color-purple-900)40%,transparent)}}.dark\:bg-red-900\/20:is(.dark *){background-color:#82181a33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-red-900)20%,transparent)}}.dark\:bg-white\/10:is(.dark *){background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-white\/10:is(.dark *){background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.dark\:bg-yellow-500:is(.dark *){background-color:var(--color-yellow-500)}.dark\:bg-yellow-900\/20:is(.dark *){background-color:#733e0a33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-yellow-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-yellow-900)20%,transparent)}}.dark\:text-black:is(.dark *){color:var(--color-black)}.dark\:text-blue-200:is(.dark *){color:var(--color-blue-200)}.dark\:text-blue-300:is(.dark *){color:var(--color-blue-300)}.dark\:text-blue-400:is(.dark *){color:var(--color-blue-400)}.dark\:text-emerald-300:is(.dark *){color:var(--color-emerald-300)}.dark\:text-gray-50:is(.dark *){color:var(--color-gray-50)}.dark\:text-gray-100:is(.dark *){color:var(--color-gray-100)}.dark\:text-gray-200:is(.dark *){color:var(--color-gray-200)}.dark\:text-gray-300:is(.dark *){color:var(--color-gray-300)}.dark\:text-gray-400:is(.dark *){color:var(--color-gray-400)}.dark\:text-gray-500:is(.dark *){color:var(--color-gray-500)}.dark\:text-green-100:is(.dark *){color:var(--color-green-100)}.dark\:text-green-200:is(.dark *){color:var(--color-green-200)}.dark\:text-green-300:is(.dark *){color:var(--color-green-300)}.dark\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\:text-orange-400:is(.dark *){color:var(--color-orange-400)}.dark\:text-purple-300:is(.dark *){color:var(--color-purple-300)}.dark\:text-red-100:is(.dark *){color:var(--color-red-100)}.dark\:text-red-200:is(.dark *){color:var(--color-red-200)}.dark\:text-red-300:is(.dark *){color:var(--color-red-300)}.dark\:text-red-400:is(.dark *){color:var(--color-red-400)}.dark\:text-yellow-200:is(.dark *){color:var(--color-yellow-200)}.dark\:text-yellow-300:is(.dark *){color:var(--color-yellow-300)}.dark\:text-yellow-400:is(.dark *){color:var(--color-yellow-400)}.dark\:placeholder\:text-gray-400:is(.dark *)::placeholder{color:var(--color-gray-400)}@media (hover:hover){.dark\:hover\:border-blue-500:is(.dark *):hover{border-color:var(--color-blue-500)}.dark\:hover\:bg-blue-800:is(.dark *):hover{background-color:var(--color-blue-800)}.dark\:hover\:bg-gray-600:is(.dark *):hover{background-color:var(--color-gray-600)}.dark\:hover\:bg-gray-700:is(.dark *):hover{background-color:var(--color-gray-700)}.dark\:hover\:bg-gray-800\/50:is(.dark *):hover{background-color:#16161680}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-gray-800\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-gray-800)50%,transparent)}}.dark\:hover\:bg-red-900\/20:is(.dark *):hover{background-color:#82181a33}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-red-900\/20:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-red-900)20%,transparent)}}.dark\:hover\:bg-white\/20:is(.dark *):hover{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-white\/20:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.dark\:hover\:text-blue-400:is(.dark *):hover{color:var(--color-blue-400)}.dark\:hover\:text-gray-200:is(.dark *):hover{color:var(--color-gray-200)}.dark\:hover\:text-gray-300:is(.dark *):hover{color:var(--color-gray-300)}.dark\:hover\:text-orange-300:is(.dark *):hover{color:var(--color-orange-300)}.dark\:hover\:text-red-300:is(.dark *):hover{color:var(--color-red-300)}}.dark\:focus\:bg-gray-700:is(.dark *):focus{background-color:var(--color-gray-700)}.dark\:focus\:ring-blue-400:is(.dark *):focus{--tw-ring-color:var(--color-blue-400)}.dark\:data-\[state\=active\]\:bg-gray-700:is(.dark *)[data-state=active],.data-\[state\=active\]\:dark\:bg-gray-700[data-state=active]:is(.dark *){background-color:var(--color-gray-700)}.dark\:data-\[state\=active\]\:text-gray-100:is(.dark *)[data-state=active]{color:var(--color-gray-100)}.dark\:data-\[state\=checked\]\:bg-white:is(.dark *)[data-state=checked]{background-color:var(--color-white)}.dark\:data-\[state\=unchecked\]\:bg-gray-200:is(.dark *)[data-state=unchecked]{background-color:var(--color-gray-200)}.dark\:data-\[state\=unchecked\]\:bg-gray-600:is(.dark *)[data-state=unchecked]{background-color:var(--color-gray-600)}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing)*1.5)}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:calc(var(--spacing)*0)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:calc(var(--spacing)*5)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:calc(var(--spacing)*5)}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:calc(var(--spacing)*12)}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-block:calc(var(--spacing)*3)}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:calc(var(--spacing)*5)}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:calc(var(--spacing)*5)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing)*0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing)*2)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.625rem;--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:oklch(20.5% 0 0);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted:oklch(97% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(70.8% 0 0);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:oklch(20.5% 0 0);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0);--scroll-track:var(--color-gray-100);--scroll-thumb:var(--color-gray-400);--scroll-thumb-hover:var(--color-gray-500)}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92.2% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.6% 0 0);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.6% 0 0);--scroll-track:var(--color-gray-900);--scroll-thumb:var(--color-gray-700);--scroll-thumb-hover:var(--color-gray-600)}.chat-shell{font-family:Noto Sans,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Apple Color Emoji,Segoe UI Emoji;font-size:16px;line-height:1.6}.chat-shell code,.chat-shell pre,.chat-shell kbd,.chat-shell samp{font-family:Fira Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.chat-sidebar{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:14px}.chat-scroll{scrollbar-width:thin;scrollbar-color:var(--scroll-thumb)var(--scroll-track)}.chat-scroll::-webkit-scrollbar{width:8px;height:8px}.chat-scroll::-webkit-scrollbar-track{background:var(--scroll-track);border-radius:9999px}.chat-scroll::-webkit-scrollbar-thumb{background-color:var(--scroll-thumb);border:2px solid var(--scroll-track);border-radius:9999px}.chat-scroll:hover::-webkit-scrollbar-thumb{background-color:var(--scroll-thumb-hover)}.chat-scroll::-webkit-scrollbar-corner{background:var(--scroll-track)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmfttwI4mBo1EG15fxJhUiCLbiiyCf/ZA6MFAhg3pGIZGdGIVjtPn6UcMk9A/UUr9PhoNsCENw1APAq0gpH73e+M+0ueyHbabc3vkbcdtzcf/fiy+NxQEjf9ud/ELBHAXJ0nk4z+MXH2Ev/kWyV4k7SkvpPc9Qr38F6RPWnM9cN6DJ0AdD1BhtgABtmoRoFCvPsBAumNm6soZG2Gk5GyVTo2sJncSyp0jQTYoR6WDvTwaaEcHsxHfvuWhHA3a6bN7twRKtcGok6NsCi7jYRrM2jExsUFMxMQYuJbMhuWNOumEJy9hi29Dmg5zMp/A5+hhPG19j1vBrq8JTLr8ki5VLPmG/PynJHVul440bxg5xuymHUFPBshC+nA9I1FmwbRBTNHAcik3Oae0cxKoI3MOriM42UrPe51nsaGxJ+WfXubAsP84aabUlQSJ1IiE0iPETLUU4CATgfXSCSpuRFRmCGbO+wSpAnzaeaCYW1VNEysRtuXCEL1kUFUbbtMv3Tilt/1c11jt3Q5bbMa84cpWipp8Elw3MZhOHsOlwwVUQM3lAR35JiFQbaYCRnMF2lxAWoOg2gyoIV4PouX8HytNIfLhqpJtXB4vjiViUI8IJ7bkC4ikkQvKksnOTKICwnqWSZ9YS5f0WCxmpgjbIq7EJcM4aI2nmhLNY2JIUgOjXZFWBHb+x5oh6cwb0Tv1ackHdKi0I9OO2wE9aogIOn540CCCziyhN+IaejtgAONKznHlHyutPrHGwCx9S6B8kfS4Mfi4Eyv7OU730bT1SCBjt834cXsf43zVjPUqqJjgrjeGnBxSG4aYAKFuVbeCfkDIjAqMb6yLNIbCuvXhMH2/+k2vkNpkORhR59N1CkzoOENvneIosjYmuTxlhUzaGEJQ/iWqx4dmwpmKjrwTiTGTCVozNAYqk/zXOndWxuWSmJkQpJw3pK5KX6QrLt5LATMqpmPAQhkhK6PUjzHUn7E0gHE0kPE0iKkolgkUx9SZmVAdDgpffdyJKg3k7VmzYGCwVXGz/tXmkOIp+vcWs+EMuhhvN0h9uhfzWJziBQmCREGSIFmQIkgVpAnSBRmC//6hkLZwaVhwxlrJSOdqlFtOYxlau9F2QN5Y98xmIAsiM1HVp2VFX+DHHGg6Ecjh3vmqtidX3qHI2qycTk/iwxSt5UzTmEP92ZBnEWTk4Mx8Mpl78ZDokxg/KWb+Q0QkvdKVmq3TMW+RXEgrsziSAfNXFMhDc60N5N9jQzjfO0kBKpUZl0ZmwJ41j/B9Hz6wmRaJB84niNmQrzp9eSlQCDDzazGDdVi3P36VZQ+Jy4f9UBNp+3zTjqI4abaFAm+GShVaXlsGdF3FYzZcDI6cori4kMxUECl9IjJZpzkvitAoxKue+90pDMvcKRxLl53TmOKCmV/xRolNKSqqUxc6LStOETmFOiLZZptlZepcKiAzteG8PEdpnQpbOMNcMsR4RR2Bs0cKFEvSmIjAFcnarqwUL4lDhHmnVkwu1IwshbiCcgvOheZuYyOteufZZwlcTlLgnZ3o/WcYdzZHW/WGaqaVfmTZ1aWCceJjkbZqsfbkOtcFlUZM/jy+hXHDbaUobWqqXaeWobbLO99yG5N3U4wxco0rQGGcOLASFMXeJoham8M+/x6O2WywK2l4HGbq1CoUyC/IZikQhdq3SiuNrvAEj0AVu9x2x3lp/xWzahaxidezFVtdcb5uEnzyl0ZmYiuKI0exvCd4Xc9CV1KB0db00z92wDPde0kukbvZIWN6jUWFTmPIC/Y4UPCm8UfDTFZpZNon1qLFTkBhxzB+FjQRA2Q/YRJT8pQigslMaUpFyAG8TMlXigiqmAZX4xgijKjRlGpLE0GdplRfCaJo0JQaSxNBk6ZmMzcya0FmrcisDdn0Q3HI2sWSppYigmlM1XT/kLQZSNpMJG0WkjYbSZuDpM1F0uYhFc1HxU4m1QJjDK6iL0S5uSj5rgXc3RejEigtcRBtqYPQsiTskmO5vosV+q4VGIKbOkDg0jtRrq+Em1YloaTFar3EGr1EUC8R0kus1Uus00usL97ABr2BjXoDm/QGNhuWtMVBKOwg/i78lT7hBsAvDmwHc/ao3vmUbBmhjeYySZNWvGkfZAgISDSaDo1SVpzGDsAEkF8B+gEapViUoZgUWXcRIGFZNm6gWbAKk0bp0k1MHG9fLYtV4iS2SmLEQFARzRcnf9PUS0LVn05/J9MiRRBU3v2IrvW974v4N00L7ZMk0wXP1409CHo/an8zTRHD3eSJ6m8D4YMkZNl3M79sqeuAsr/m3f+8/yl7A50aiAEJgeBeMWzu7ui9UfUBCe2TIqZIoOd/3/udRBOQidQZUERzb2/VwZN1H/Sju82ew2H2Wfr6qvfVf3hqwDvAIpkQVFy4B9Pe9e4/XvPeceu7h3dvO56iJPf0+A6cqA2ip18ER+iFgggiuOkvj24bby0N9j2UHIkgqIt+sVgfodC4YghLSMjSZbH0VR/6dMDrYJeKHilKTemt6v6kvzvn3/RrdWtr0GoN/xL+Sex/cPYLUpepx9cz/D46UPU5KXgAQa+NDps1v6J3xP1i2HtaDB0M9aX2deA7SYff//+gUCovMmIK/qfsFcOk+4Y5ZN97XlG6zebqtMbKgeRFi51vnxTQYBUik2rS/Cn6PC8ADR8FGxsRPB82dzfND90gIcshOcYUkfjherBz53odpm6TP8txlwOZ71xmfHHOvq053qFF/MRlS3jP0ELudrf2OeN8DHvp6ZceLe8qKYvWz/7yp0u4dKPfli3CYq0O13Ih71mylJ80tOi10On8wi+F4+LWgDPeJ30msSQt9/vkmHq9/Lvo2b461mP801v3W4xTcs6CbvF9UDdrSt+A8OUbpSh55qAUFXWznBBfdeJ8a4d7ugT5tvxUza3h9m4H7ptTqiG4z0g5dc0X29OcGlhpGFMpQo9ytTS+NViZpNdvU4kWx+LKxNY10kQ1yqGXrhe4/1nvP7E+nd5A92TtaRplbHSqoIdOqtRWti+fkB5/n1+/VvCmz12pG1kpQWsfi1ftlBobm0bpngs16CHkbIwdLnParxtTV3QYRlfJ0KFskH7pdN/YDn+yRuSd7sNH3aO0DYPggk6uWuXrfOc+fa3VTxFVvKaNxHsiHmsXyCLIE5yuOeN3/Jdf8HBL/5M6shjyhxHx9BjB1O0+4NLOnjLLSxwO7ukN4jMbOIcD879KLSi6Pk61Oqm2377n8079PXEEQ7cy7OKEC9nbpet118fxweTafpt69x/Bt8UqGzNQt7aelpc44dn5cqhwf71+qKp/Zf/+a0zcizOUWpl/iBcSXip0pplkatCchoH5c5aUM8I7/dWxAej8WicPL1URFZ9BDJelUwEwTkGqUhgSlydVes95YdXvhh9Gfz/aeFWvgVb4tuLbcv4+wLdutVZv/cUonwBD/6eDlE0aSiKK/uoH3+J1wDE/jMVqY2ysGufN84oIXB0sPzy8ollX/LegY74DgJXJR57sn+VGza0x3DnuIgABFM15LmajjjsNlYj+JEZGbuRYcAMOWxFkPN2w6Wd46xo4gVWQR/X4lyI/R6K/YK0110GzudPRW7Y+UOBGTfNNzHeYT0fiH0taunBpq9HEW8OKSaBGj21L0MqenEmNRWBAWDWAk4CpNoEZJ2tTaPFgbQYj8HxtFilErs3BTRwT8uO1NXQaWfIotchmPkAF5mMBAliEmZiOGVgCG9LgRzpscMAOOwowlT3JhusdazXGSC/hxR3UlmWVwWHpOIKheqONvjyhSiTHIkVUco5bnji8m//zL7PKaT1Vl5I6UE609f+gkr6MZKVyKc7zJRmCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.22"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: GitHub Dark Dimmed + Description: Dark dimmed theme as seen on github.com + Author: github.com + Maintainer: @Hirse + Updated: 2021-05-15 + + Colors taken from GitHub's CSS +*/.hljs{color:#adbac7;background:#22272e}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#f47067}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#dcbdfb}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#6cb6ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#96d0ff}.hljs-built_in,.hljs-symbol{color:#f69d50}.hljs-comment,.hljs-code,.hljs-formula{color:#768390}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#8ddb8c}.hljs-subst{color:#adbac7}.hljs-section{color:#316dca;font-weight:700}.hljs-bullet{color:#eac55f}.hljs-emphasis{color:#adbac7;font-style:italic}.hljs-strong{color:#adbac7;font-weight:700}.hljs-addition{color:#b4f1b4;background-color:#1b4721}.hljs-deletion{color:#ffd8d3;background-color:#78191b} diff --git a/internal/web/dist/assets/index-Byxm2fDd.js b/internal/web/dist/assets/index-DbDjjFKg.js similarity index 60% rename from internal/web/dist/assets/index-Byxm2fDd.js rename to internal/web/dist/assets/index-DbDjjFKg.js index 2d82f425..f6585298 100644 --- a/internal/web/dist/assets/index-Byxm2fDd.js +++ b/internal/web/dist/assets/index-DbDjjFKg.js @@ -1,4 +1,4 @@ -function I9(e,t){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&r(l)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();function Jc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Vp={exports:{}},fc={};/** +function L9(e,t){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&r(l)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();function t0(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Kp={exports:{}},gc={};/** * @license React * react-jsx-runtime.production.js * @@ -6,7 +6,7 @@ function I9(e,t){for(var n=0;n>>1,k=U[be];if(0>>1;bei(P,V))Aei(Ke,P)?(U[be]=Ke,U[Ae]=V,be=Ae):(U[be]=P,U[xe]=V,be=xe);else if(Aei(Ke,V))U[be]=Ke,U[Ae]=V,be=Ae;else break e}}return te}function i(U,te){var V=U.sortIndex-te.sortIndex;return V!==0?V:U.id-te.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var l=Date,d=l.now();e.unstable_now=function(){return l.now()-d}}var f=[],m=[],p=1,b=null,v=3,y=!1,w=!1,S=!1,_=!1,A=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,D=typeof setImmediate<"u"?setImmediate:null;function z(U){for(var te=n(m);te!==null;){if(te.callback===null)r(m);else if(te.startTime<=U)r(m),te.sortIndex=te.expirationTime,t(f,te);else break;te=n(m)}}function B(U){if(S=!1,z(U),!w)if(n(f)!==null)w=!0,j||(j=!0,Z());else{var te=n(m);te!==null&&he(B,te.startTime-U)}}var j=!1,W=-1,$=5,Q=-1;function ie(){return _?!0:!(e.unstable_now()-Q<$)}function ne(){if(_=!1,j){var U=e.unstable_now();Q=U;var te=!0;try{e:{w=!1,S&&(S=!1,M(W),W=-1),y=!0;var V=v;try{t:{for(z(U),b=n(f);b!==null&&!(b.expirationTime>U&&ie());){var be=b.callback;if(typeof be=="function"){b.callback=null,v=b.priorityLevel;var k=be(b.expirationTime<=U);if(U=e.unstable_now(),typeof k=="function"){b.callback=k,z(U),te=!0;break t}b===n(f)&&r(f),z(U)}else r(f);b=n(f)}if(b!==null)te=!0;else{var oe=n(m);oe!==null&&he(B,oe.startTime-U),te=!1}}break e}finally{b=null,v=V,y=!1}te=void 0}}finally{te?Z():j=!1}}}var Z;if(typeof D=="function")Z=function(){D(ne)};else if(typeof MessageChannel<"u"){var se=new MessageChannel,re=se.port2;se.port1.onmessage=ne,Z=function(){re.postMessage(null)}}else Z=function(){A(ne,0)};function he(U,te){W=A(function(){U(e.unstable_now())},te)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(U){U.callback=null},e.unstable_forceFrameRate=function(U){0>U||125be?(U.sortIndex=V,t(m,U),n(f)===null&&U===n(m)&&(S?(M(W),W=-1):S=!0,he(B,V-be))):(U.sortIndex=k,t(f,U),w||y||(w=!0,j||(j=!0,Z()))),U},e.unstable_shouldYield=ie,e.unstable_wrapCallback=function(U){var te=v;return function(){var V=v;v=te;try{return U.apply(this,arguments)}finally{v=V}}}})(Xp)),Xp}var hx;function z9(){return hx||(hx=1,Wp.exports=j9()),Wp.exports}var Qp={exports:{}},cr={};/** + */var fx;function z9(){return fx||(fx=1,(function(e){function t(U,ee){var V=U.length;U.push(ee);e:for(;0>>1,k=U[pe];if(0>>1;pei(P,V))Cei(Ke,P)?(U[pe]=Ke,U[Ce]=V,pe=Ce):(U[pe]=P,U[be]=V,pe=be);else if(Cei(Ke,V))U[pe]=Ke,U[Ce]=V,pe=Ce;else break e}}return ee}function i(U,ee){var V=U.sortIndex-ee.sortIndex;return V!==0?V:U.id-ee.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var l=Date,d=l.now();e.unstable_now=function(){return l.now()-d}}var f=[],m=[],p=1,b=null,v=3,y=!1,w=!1,S=!1,_=!1,A=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,D=typeof setImmediate<"u"?setImmediate:null;function z(U){for(var ee=n(m);ee!==null;){if(ee.callback===null)r(m);else if(ee.startTime<=U)r(m),ee.sortIndex=ee.expirationTime,t(f,ee);else break;ee=n(m)}}function B(U){if(S=!1,z(U),!w)if(n(f)!==null)w=!0,j||(j=!0,Z());else{var ee=n(m);ee!==null&&fe(B,ee.startTime-U)}}var j=!1,W=-1,q=5,Q=-1;function ie(){return _?!0:!(e.unstable_now()-QU&&ie());){var pe=b.callback;if(typeof pe=="function"){b.callback=null,v=b.priorityLevel;var k=pe(b.expirationTime<=U);if(U=e.unstable_now(),typeof k=="function"){b.callback=k,z(U),ee=!0;break t}b===n(f)&&r(f),z(U)}else r(f);b=n(f)}if(b!==null)ee=!0;else{var se=n(m);se!==null&&fe(B,se.startTime-U),ee=!1}}break e}finally{b=null,v=V,y=!1}ee=void 0}}finally{ee?Z():j=!1}}}var Z;if(typeof D=="function")Z=function(){D(ne)};else if(typeof MessageChannel<"u"){var oe=new MessageChannel,re=oe.port2;oe.port1.onmessage=ne,Z=function(){re.postMessage(null)}}else Z=function(){A(ne,0)};function fe(U,ee){W=A(function(){U(e.unstable_now())},ee)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(U){U.callback=null},e.unstable_forceFrameRate=function(U){0>U||125pe?(U.sortIndex=V,t(m,U),n(f)===null&&U===n(m)&&(S?(M(W),W=-1):S=!0,fe(B,V-pe))):(U.sortIndex=k,t(f,U),w||y||(w=!0,j||(j=!0,Z()))),U},e.unstable_shouldYield=ie,e.unstable_wrapCallback=function(U){var ee=v;return function(){var V=v;v=ee;try{return U.apply(this,arguments)}finally{v=V}}}})(Zp)),Zp}var hx;function F9(){return hx||(hx=1,Qp.exports=z9()),Qp.exports}var Jp={exports:{}},br={};/** * @license React * react-dom.production.js * @@ -30,7 +30,7 @@ function I9(e,t){for(var n=0;n"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),Qp.exports=F9(),Qp.exports}/** + */var mx;function U9(){if(mx)return br;mx=1;var e=hb();function t(f){var m="https://react.dev/errors/"+f;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),Jp.exports=U9(),Jp.exports}/** * @license React * react-dom-client.production.js * @@ -38,20 +38,20 @@ function I9(e,t){for(var n=0;nk||(a.current=be[k],be[k]=null,k--)}function P(a,s){k++,be[k]=a.current,a.current=s}var Ae=oe(null),Ke=oe(null),De=oe(null),Te=oe(null);function Ge(a,s){switch(P(De,s),P(Ke,a),P(Ae,null),s.nodeType){case 9:case 11:a=(a=s.documentElement)&&(a=a.namespaceURI)?Pv(a):0;break;default:if(a=s.tagName,s=s.namespaceURI)s=Pv(s),a=Bv(s,a);else switch(a){case"svg":a=1;break;case"math":a=2;break;default:a=0}}xe(Ae),P(Ae,a)}function dt(){xe(Ae),xe(Ke),xe(De)}function ye(a){a.memoizedState!==null&&P(Te,a);var s=Ae.current,u=Bv(s,a.type);s!==u&&(P(Ke,a),P(Ae,u))}function ke(a){Ke.current===a&&(xe(Ae),xe(Ke)),Te.current===a&&(xe(Te),oc._currentValue=V)}var He=Object.prototype.hasOwnProperty,_t=e.unstable_scheduleCallback,we=e.unstable_cancelCallback,pe=e.unstable_shouldYield,de=e.unstable_requestPaint,Pe=e.unstable_now,mt=e.unstable_getCurrentPriorityLevel,At=e.unstable_ImmediatePriority,Sn=e.unstable_UserBlockingPriority,kn=e.unstable_NormalPriority,es=e.unstable_LowPriority,$a=e.unstable_IdlePriority,Bn=e.log,qo=e.unstable_setDisableYieldValue,Ee=null,Oe=null;function lt(a){if(typeof Bn=="function"&&qo(a),Oe&&typeof Oe.setStrictMode=="function")try{Oe.setStrictMode(Ee,a)}catch{}}var pt=Math.clz32?Math.clz32:wa,Gt=Math.log,pr=Math.LN2;function wa(a){return a>>>=0,a===0?32:31-(Gt(a)/pr|0)|0}var or=256,Fr=4194304;function gr(a){var s=a&42;if(s!==0)return s;switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return a&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return a}}function jn(a,s,u){var h=a.pendingLanes;if(h===0)return 0;var g=0,x=a.suspendedLanes,R=a.pingedLanes;a=a.warmLanes;var I=h&134217727;return I!==0?(h=I&~x,h!==0?g=gr(h):(R&=I,R!==0?g=gr(R):u||(u=I&~a,u!==0&&(g=gr(u))))):(I=h&~x,I!==0?g=gr(I):R!==0?g=gr(R):u||(u=h&~a,u!==0&&(g=gr(u)))),g===0?0:s!==0&&s!==g&&(s&x)===0&&(x=g&-g,u=s&-s,x>=u||x===32&&(u&4194048)!==0)?s:g}function Cr(a,s){return(a.pendingLanes&~(a.suspendedLanes&~a.pingedLanes)&s)===0}function br(a,s){switch(a){case 1:case 2:case 4:case 8:case 64:return s+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return s+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function hu(){var a=or;return or<<=1,(or&4194048)===0&&(or=256),a}function mu(){var a=Fr;return Fr<<=1,(Fr&62914560)===0&&(Fr=4194304),a}function pu(a){for(var s=[],u=0;31>u;u++)s.push(a);return s}function ts(a,s){a.pendingLanes|=s,s!==268435456&&(a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0)}function ns(a,s,u,h,g,x){var R=a.pendingLanes;a.pendingLanes=u,a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0,a.expiredLanes&=u,a.entangledLanes&=u,a.errorRecoveryDisabledLanes&=u,a.shellSuspendCounter=0;var I=a.entanglements,K=a.expirationTimes,ce=a.hiddenUpdates;for(u=R&~u;0k||(a.current=pe[k],pe[k]=null,k--)}function P(a,s){k++,pe[k]=a.current,a.current=s}var Ce=se(null),Ke=se(null),De=se(null),xe=se(null);function Ue(a,s){switch(P(De,s),P(Ke,a),P(Ce,null),s.nodeType){case 9:case 11:a=(a=s.documentElement)&&(a=a.namespaceURI)?P4(a):0;break;default:if(a=s.tagName,s=s.namespaceURI)s=P4(s),a=B4(s,a);else switch(a){case"svg":a=1;break;case"math":a=2;break;default:a=0}}be(Ce),P(Ce,a)}function yt(){be(Ce),be(Ke),be(De)}function ge(a){a.memoizedState!==null&&P(xe,a);var s=Ce.current,u=B4(s,a.type);s!==u&&(P(Ke,a),P(Ce,u))}function Ae(a){Ke.current===a&&(be(Ce),be(Ke)),xe.current===a&&(be(xe),dc._currentValue=V)}var $e=Object.prototype.hasOwnProperty,Ct=e.unstable_scheduleCallback,At=e.unstable_cancelCallback,Oe=e.unstable_shouldYield,Se=e.unstable_requestPaint,Je=e.unstable_now,jt=e.unstable_getCurrentPriorityLevel,Qt=e.unstable_ImmediatePriority,Fn=e.unstable_UserBlockingPriority,lr=e.unstable_NormalPriority,ua=e.unstable_LowPriority,ca=e.unstable_IdlePriority,In=e.log,ss=e.unstable_setDisableYieldValue,ve=null,Me=null;function ot(a){if(typeof In=="function"&&ss(a),Me&&typeof Me.setStrictMode=="function")try{Me.setStrictMode(ve,a)}catch{}}var ft=Math.clz32?Math.clz32:Ne,Gt=Math.log,ur=Math.LN2;function Ne(a){return a>>>=0,a===0?32:31-(Gt(a)/ur|0)|0}var He=256,et=4194304;function ut(a){var s=a&42;if(s!==0)return s;switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return a&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return a}}function kt(a,s,u){var h=a.pendingLanes;if(h===0)return 0;var g=0,x=a.suspendedLanes,R=a.pingedLanes;a=a.warmLanes;var I=h&134217727;return I!==0?(h=I&~x,h!==0?g=ut(h):(R&=I,R!==0?g=ut(R):u||(u=I&~a,u!==0&&(g=ut(u))))):(I=h&~x,I!==0?g=ut(I):R!==0?g=ut(R):u||(u=h&~a,u!==0&&(g=ut(u)))),g===0?0:s!==0&&s!==g&&(s&x)===0&&(x=g&-g,u=s&-s,x>=u||x===32&&(u&4194048)!==0)?s:g}function Kt(a,s){return(a.pendingLanes&~(a.suspendedLanes&~a.pingedLanes)&s)===0}function Ln(a,s){switch(a){case 1:case 2:case 4:case 8:case 64:return s+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return s+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Pn(){var a=He;return He<<=1,(He&4194048)===0&&(He=256),a}function Ti(){var a=et;return et<<=1,(et&62914560)===0&&(et=4194304),a}function Ka(a){for(var s=[],u=0;31>u;u++)s.push(a);return s}function qr(a,s){a.pendingLanes|=s,s!==268435456&&(a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0)}function ka(a,s,u,h,g,x){var R=a.pendingLanes;a.pendingLanes=u,a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0,a.expiredLanes&=u,a.entangledLanes&=u,a.errorRecoveryDisabledLanes&=u,a.shellSuspendCounter=0;var I=a.entanglements,K=a.expirationTimes,ce=a.hiddenUpdates;for(u=R&~u;0)":-1g||K[h]!==ce[g]){var Se=` -`+K[h].replace(" at new "," at ");return a.displayName&&Se.includes("")&&(Se=Se.replace("",a.displayName)),Se}while(1<=h&&0<=g);break}}}finally{Zt=!1,Error.prepareStackTrace=u}return(u=a?a.displayName||a.name:"")?kt(u):""}function Ur(a){switch(a.tag){case 26:case 27:case 5:return kt(a.type);case 16:return kt("Lazy");case 13:return kt("Suspense");case 19:return kt("SuspenseList");case 0:case 15:return _n(a.type,!1);case 11:return _n(a.type.render,!1);case 1:return _n(a.type,!0);case 31:return kt("Activity");default:return""}}function Na(a){try{var s="";do s+=Ur(a),a=a.return;while(a);return s}catch(u){return` +`);for(g=h=0;hg||K[h]!==ce[g]){var Ee=` +`+K[h].replace(" at new "," at ");return a.displayName&&Ee.includes("")&&(Ee=Ee.replace("",a.displayName)),Ee}while(1<=h&&0<=g);break}}}finally{an=!1,Error.prepareStackTrace=u}return(u=a?a.displayName||a.name:"")?Ot(u):""}function $r(a){switch(a.tag){case 26:case 27:case 5:return Ot(a.type);case 16:return Ot("Lazy");case 13:return Ot("Suspense");case 19:return Ot("SuspenseList");case 0:case 15:return Rn(a.type,!1);case 11:return Rn(a.type.render,!1);case 1:return Rn(a.type,!0);case 31:return Ot("Activity");default:return""}}function Ma(a){try{var s="";do s+=$r(a),a=a.return;while(a);return s}catch(u){return` Error generating stack: `+u.message+` -`+u.stack}}function nr(a){switch(typeof a){case"bigint":case"boolean":case"number":case"string":case"undefined":return a;case"object":return a;default:return""}}function lr(a){var s=a.type;return(a=a.nodeName)&&a.toLowerCase()==="input"&&(s==="checkbox"||s==="radio")}function sa(a){var s=lr(a)?"checked":"value",u=Object.getOwnPropertyDescriptor(a.constructor.prototype,s),h=""+a[s];if(!a.hasOwnProperty(s)&&typeof u<"u"&&typeof u.get=="function"&&typeof u.set=="function"){var g=u.get,x=u.set;return Object.defineProperty(a,s,{configurable:!0,get:function(){return g.call(this)},set:function(R){h=""+R,x.call(this,R)}}),Object.defineProperty(a,s,{enumerable:u.enumerable}),{getValue:function(){return h},setValue:function(R){h=""+R},stopTracking:function(){a._valueTracker=null,delete a[s]}}}}function io(a){a._valueTracker||(a._valueTracker=sa(a))}function yu(a){if(!a)return!1;var s=a._valueTracker;if(!s)return!0;var u=s.getValue(),h="";return a&&(h=lr(a)?a.checked?"true":"false":a.value),a=h,a!==u?(s.setValue(a),!0):!1}function so(a){if(a=a||(typeof document<"u"?document:void 0),typeof a>"u")return null;try{return a.activeElement||a.body}catch{return a.body}}var Kh=/[\n"\\]/g;function Ar(a){return a.replace(Kh,function(s){return"\\"+s.charCodeAt(0).toString(16)+" "})}function vu(a,s,u,h,g,x,R,I){a.name="",R!=null&&typeof R!="function"&&typeof R!="symbol"&&typeof R!="boolean"?a.type=R:a.removeAttribute("type"),s!=null?R==="number"?(s===0&&a.value===""||a.value!=s)&&(a.value=""+nr(s)):a.value!==""+nr(s)&&(a.value=""+nr(s)):R!=="submit"&&R!=="reset"||a.removeAttribute("value"),s!=null?is(a,R,nr(s)):u!=null?is(a,R,nr(u)):h!=null&&a.removeAttribute("value"),g==null&&x!=null&&(a.defaultChecked=!!x),g!=null&&(a.checked=g&&typeof g!="function"&&typeof g!="symbol"),I!=null&&typeof I!="function"&&typeof I!="symbol"&&typeof I!="boolean"?a.name=""+nr(I):a.removeAttribute("name")}function R0(a,s,u,h,g,x,R,I){if(x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"&&(a.type=x),s!=null||u!=null){if(!(x!=="submit"&&x!=="reset"||s!=null))return;u=u!=null?""+nr(u):"",s=s!=null?""+nr(s):u,I||s===a.value||(a.value=s),a.defaultValue=s}h=h??g,h=typeof h!="function"&&typeof h!="symbol"&&!!h,a.checked=I?a.checked:!!h,a.defaultChecked=!!h,R!=null&&typeof R!="function"&&typeof R!="symbol"&&typeof R!="boolean"&&(a.name=R)}function is(a,s,u){s==="number"&&so(a.ownerDocument)===a||a.defaultValue===""+u||(a.defaultValue=""+u)}function Ei(a,s,u,h){if(a=a.options,s){s={};for(var g=0;g"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Wh=!1;if(Ca)try{var Eu={};Object.defineProperty(Eu,"passive",{get:function(){Wh=!0}}),window.addEventListener("test",Eu,Eu),window.removeEventListener("test",Eu,Eu)}catch{Wh=!1}var os=null,Xh=null,O0=null;function F2(){if(O0)return O0;var a,s=Xh,u=s.length,h,g="value"in os?os.value:os.textContent,x=g.length;for(a=0;a=wu),V2=" ",Y2=!1;function K2(a,s){switch(a){case"keyup":return aN.indexOf(s.keyCode)!==-1;case"keydown":return s.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function W2(a){return a=a.detail,typeof a=="object"&&"data"in a?a.data:null}var Ko=!1;function sN(a,s){switch(a){case"compositionend":return W2(s);case"keypress":return s.which!==32?null:(Y2=!0,V2);case"textInput":return a=s.data,a===V2&&Y2?null:a;default:return null}}function oN(a,s){if(Ko)return a==="compositionend"||!tm&&K2(a,s)?(a=F2(),O0=Xh=os=null,Ko=!1,a):null;switch(a){case"paste":return null;case"keypress":if(!(s.ctrlKey||s.altKey||s.metaKey)||s.ctrlKey&&s.altKey){if(s.char&&1=s)return{node:u,offset:s-a};a=h}e:{for(;u;){if(u.nextSibling){u=u.nextSibling;break e}u=u.parentNode}u=void 0}u=ry(u)}}function iy(a,s){return a&&s?a===s?!0:a&&a.nodeType===3?!1:s&&s.nodeType===3?iy(a,s.parentNode):"contains"in a?a.contains(s):a.compareDocumentPosition?!!(a.compareDocumentPosition(s)&16):!1:!1}function sy(a){a=a!=null&&a.ownerDocument!=null&&a.ownerDocument.defaultView!=null?a.ownerDocument.defaultView:window;for(var s=so(a.document);s instanceof a.HTMLIFrameElement;){try{var u=typeof s.contentWindow.location.href=="string"}catch{u=!1}if(u)a=s.contentWindow;else break;s=so(a.document)}return s}function am(a){var s=a&&a.nodeName&&a.nodeName.toLowerCase();return s&&(s==="input"&&(a.type==="text"||a.type==="search"||a.type==="tel"||a.type==="url"||a.type==="password")||s==="textarea"||a.contentEditable==="true")}var pN=Ca&&"documentMode"in document&&11>=document.documentMode,Wo=null,im=null,Au=null,sm=!1;function oy(a,s,u){var h=u.window===u?u.document:u.nodeType===9?u:u.ownerDocument;sm||Wo==null||Wo!==so(h)||(h=Wo,"selectionStart"in h&&am(h)?h={start:h.selectionStart,end:h.selectionEnd}:(h=(h.ownerDocument&&h.ownerDocument.defaultView||window).getSelection(),h={anchorNode:h.anchorNode,anchorOffset:h.anchorOffset,focusNode:h.focusNode,focusOffset:h.focusOffset}),Au&&Cu(Au,h)||(Au=h,h=Sd(im,"onSelect"),0>=R,g-=R,wi=1<<32-pt(s)+g|u<x?x:8;var R=U.T,I={};U.T=I,Gm(a,!1,s,u);try{var K=g(),ce=U.S;if(ce!==null&&ce(I,K),K!==null&&typeof K=="object"&&typeof K.then=="function"){var Se=wN(K,h);$u(a,s,Se,Kr(a))}else $u(a,s,h,Kr(a))}catch(Ce){$u(a,s,{then:function(){},status:"rejected",reason:Ce},Kr())}finally{te.p=x,U.T=R}}function kN(){}function $m(a,s,u,h){if(a.tag!==5)throw Error(r(476));var g=l4(a).queue;o4(a,g,s,V,u===null?kN:function(){return u4(a),u(h)})}function l4(a){var s=a.memoizedState;if(s!==null)return s;s={memoizedState:V,baseState:V,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ai,lastRenderedState:V},next:null};var u={};return s.next={memoizedState:u,baseState:u,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ai,lastRenderedState:u},next:null},a.memoizedState=s,a=a.alternate,a!==null&&(a.memoizedState=s),s}function u4(a){var s=l4(a).next.queue;$u(a,s,{},Kr())}function qm(){return ur(oc)}function c4(){return Hn().memoizedState}function d4(){return Hn().memoizedState}function RN(a){for(var s=a.return;s!==null;){switch(s.tag){case 24:case 3:var u=Kr();a=cs(u);var h=ds(s,a,u);h!==null&&(Wr(h,s,u),Bu(h,s,u)),s={cache:xm()},a.payload=s;return}s=s.return}}function MN(a,s,u){var h=Kr();u={lane:h,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null},nd(a)?h4(s,u):(u=cm(a,s,u,h),u!==null&&(Wr(u,a,h),m4(u,s,h)))}function f4(a,s,u){var h=Kr();$u(a,s,u,h)}function $u(a,s,u,h){var g={lane:h,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null};if(nd(a))h4(s,g);else{var x=a.alternate;if(a.lanes===0&&(x===null||x.lanes===0)&&(x=s.lastRenderedReducer,x!==null))try{var R=s.lastRenderedState,I=x(R,u);if(g.hasEagerState=!0,g.eagerState=I,$r(I,R))return z0(a,s,g,0),dn===null&&j0(),!1}catch{}finally{}if(u=cm(a,s,g,h),u!==null)return Wr(u,a,h),m4(u,s,h),!0}return!1}function Gm(a,s,u,h){if(h={lane:2,revertLane:Tp(),action:h,hasEagerState:!1,eagerState:null,next:null},nd(a)){if(s)throw Error(r(479))}else s=cm(a,u,h,2),s!==null&&Wr(s,a,2)}function nd(a){var s=a.alternate;return a===Lt||s!==null&&s===Lt}function h4(a,s){il=X0=!0;var u=a.pending;u===null?s.next=s:(s.next=u.next,u.next=s),a.pending=s}function m4(a,s,u){if((u&4194048)!==0){var h=s.lanes;h&=a.pendingLanes,u|=h,s.lanes=u,_e(a,u)}}var rd={readContext:ur,use:Z0,useCallback:Dn,useContext:Dn,useEffect:Dn,useImperativeHandle:Dn,useLayoutEffect:Dn,useInsertionEffect:Dn,useMemo:Dn,useReducer:Dn,useRef:Dn,useState:Dn,useDebugValue:Dn,useDeferredValue:Dn,useTransition:Dn,useSyncExternalStore:Dn,useId:Dn,useHostTransitionStatus:Dn,useFormState:Dn,useActionState:Dn,useOptimistic:Dn,useMemoCache:Dn,useCacheRefresh:Dn},p4={readContext:ur,use:Z0,useCallback:function(a,s){return Rr().memoizedState=[a,s===void 0?null:s],a},useContext:ur,useEffect:Zy,useImperativeHandle:function(a,s,u){u=u!=null?u.concat([a]):null,td(4194308,4,n4.bind(null,s,a),u)},useLayoutEffect:function(a,s){return td(4194308,4,a,s)},useInsertionEffect:function(a,s){td(4,2,a,s)},useMemo:function(a,s){var u=Rr();s=s===void 0?null:s;var h=a();if(Eo){lt(!0);try{a()}finally{lt(!1)}}return u.memoizedState=[h,s],h},useReducer:function(a,s,u){var h=Rr();if(u!==void 0){var g=u(s);if(Eo){lt(!0);try{u(s)}finally{lt(!1)}}}else g=s;return h.memoizedState=h.baseState=g,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:g},h.queue=a,a=a.dispatch=MN.bind(null,Lt,a),[h.memoizedState,a]},useRef:function(a){var s=Rr();return a={current:a},s.memoizedState=a},useState:function(a){a=zm(a);var s=a.queue,u=f4.bind(null,Lt,s);return s.dispatch=u,[a.memoizedState,u]},useDebugValue:Um,useDeferredValue:function(a,s){var u=Rr();return Hm(u,a,s)},useTransition:function(){var a=zm(!1);return a=o4.bind(null,Lt,a.queue,!0,!1),Rr().memoizedState=a,[!1,a]},useSyncExternalStore:function(a,s,u){var h=Lt,g=Rr();if(Vt){if(u===void 0)throw Error(r(407));u=u()}else{if(u=s(),dn===null)throw Error(r(349));(Ut&124)!==0||Py(h,s,u)}g.memoizedState=u;var x={value:u,getSnapshot:s};return g.queue=x,Zy(jy.bind(null,h,x,a),[a]),h.flags|=2048,ol(9,ed(),By.bind(null,h,x,u,s),null),u},useId:function(){var a=Rr(),s=dn.identifierPrefix;if(Vt){var u=_i,h=wi;u=(h&~(1<<32-pt(h)-1)).toString(32)+u,s="«"+s+"R"+u,u=Q0++,0yt?(Jn=st,st=null):Jn=st.sibling;var qt=me(ae,st,le[yt],Ne);if(qt===null){st===null&&(st=Jn);break}a&&st&&qt.alternate===null&&s(ae,st),J=x(qt,J,yt),Bt===null?et=qt:Bt.sibling=qt,Bt=qt,st=Jn}if(yt===le.length)return u(ae,st),Vt&&po(ae,yt),et;if(st===null){for(;ytyt?(Jn=st,st=null):Jn=st.sibling;var As=me(ae,st,qt.value,Ne);if(As===null){st===null&&(st=Jn);break}a&&st&&As.alternate===null&&s(ae,st),J=x(As,J,yt),Bt===null?et=As:Bt.sibling=As,Bt=As,st=Jn}if(qt.done)return u(ae,st),Vt&&po(ae,yt),et;if(st===null){for(;!qt.done;yt++,qt=le.next())qt=Ce(ae,qt.value,Ne),qt!==null&&(J=x(qt,J,yt),Bt===null?et=qt:Bt.sibling=qt,Bt=qt);return Vt&&po(ae,yt),et}for(st=h(st);!qt.done;yt++,qt=le.next())qt=ge(st,ae,yt,qt.value,Ne),qt!==null&&(a&&qt.alternate!==null&&st.delete(qt.key===null?yt:qt.key),J=x(qt,J,yt),Bt===null?et=qt:Bt.sibling=qt,Bt=qt);return a&&st.forEach(function(D9){return s(ae,D9)}),Vt&&po(ae,yt),et}function on(ae,J,le,Ne){if(typeof le=="object"&&le!==null&&le.type===w&&le.key===null&&(le=le.props.children),typeof le=="object"&&le!==null){switch(le.$$typeof){case v:e:{for(var et=le.key;J!==null;){if(J.key===et){if(et=le.type,et===w){if(J.tag===7){u(ae,J.sibling),Ne=g(J,le.props.children),Ne.return=ae,ae=Ne;break e}}else if(J.elementType===et||typeof et=="object"&&et!==null&&et.$$typeof===$&&b4(et)===J.type){u(ae,J.sibling),Ne=g(J,le.props),Gu(Ne,le),Ne.return=ae,ae=Ne;break e}u(ae,J);break}else s(ae,J);J=J.sibling}le.type===w?(Ne=ho(le.props.children,ae.mode,Ne,le.key),Ne.return=ae,ae=Ne):(Ne=U0(le.type,le.key,le.props,null,ae.mode,Ne),Gu(Ne,le),Ne.return=ae,ae=Ne)}return R(ae);case y:e:{for(et=le.key;J!==null;){if(J.key===et)if(J.tag===4&&J.stateNode.containerInfo===le.containerInfo&&J.stateNode.implementation===le.implementation){u(ae,J.sibling),Ne=g(J,le.children||[]),Ne.return=ae,ae=Ne;break e}else{u(ae,J);break}else s(ae,J);J=J.sibling}Ne=hm(le,ae.mode,Ne),Ne.return=ae,ae=Ne}return R(ae);case $:return et=le._init,le=et(le._payload),on(ae,J,le,Ne)}if(he(le))return Et(ae,J,le,Ne);if(Z(le)){if(et=Z(le),typeof et!="function")throw Error(r(150));return le=et.call(le),gt(ae,J,le,Ne)}if(typeof le.then=="function")return on(ae,J,ad(le),Ne);if(le.$$typeof===D)return on(ae,J,G0(ae,le),Ne);id(ae,le)}return typeof le=="string"&&le!==""||typeof le=="number"||typeof le=="bigint"?(le=""+le,J!==null&&J.tag===6?(u(ae,J.sibling),Ne=g(J,le),Ne.return=ae,ae=Ne):(u(ae,J),Ne=fm(le,ae.mode,Ne),Ne.return=ae,ae=Ne),R(ae)):u(ae,J)}return function(ae,J,le,Ne){try{qu=0;var et=on(ae,J,le,Ne);return ll=null,et}catch(st){if(st===Lu||st===Y0)throw st;var Bt=qr(29,st,null,ae.mode);return Bt.lanes=Ne,Bt.return=ae,Bt}finally{}}}var ul=y4(!0),v4=y4(!1),fa=oe(null),Va=null;function hs(a){var s=a.alternate;P(Yn,Yn.current&1),P(fa,a),Va===null&&(s===null||al.current!==null||s.memoizedState!==null)&&(Va=a)}function x4(a){if(a.tag===22){if(P(Yn,Yn.current),P(fa,a),Va===null){var s=a.alternate;s!==null&&s.memoizedState!==null&&(Va=a)}}else ms()}function ms(){P(Yn,Yn.current),P(fa,fa.current)}function ki(a){xe(fa),Va===a&&(Va=null),xe(Yn)}var Yn=oe(0);function sd(a){for(var s=a;s!==null;){if(s.tag===13){var u=s.memoizedState;if(u!==null&&(u=u.dehydrated,u===null||u.data==="$?"||Lp(u)))return s}else if(s.tag===19&&s.memoizedProps.revealOrder!==void 0){if((s.flags&128)!==0)return s}else if(s.child!==null){s.child.return=s,s=s.child;continue}if(s===a)break;for(;s.sibling===null;){if(s.return===null||s.return===a)return null;s=s.return}s.sibling.return=s.return,s=s.sibling}return null}function Vm(a,s,u,h){s=a.memoizedState,u=u(h,s),u=u==null?s:p({},s,u),a.memoizedState=u,a.lanes===0&&(a.updateQueue.baseState=u)}var Ym={enqueueSetState:function(a,s,u){a=a._reactInternals;var h=Kr(),g=cs(h);g.payload=s,u!=null&&(g.callback=u),s=ds(a,g,h),s!==null&&(Wr(s,a,h),Bu(s,a,h))},enqueueReplaceState:function(a,s,u){a=a._reactInternals;var h=Kr(),g=cs(h);g.tag=1,g.payload=s,u!=null&&(g.callback=u),s=ds(a,g,h),s!==null&&(Wr(s,a,h),Bu(s,a,h))},enqueueForceUpdate:function(a,s){a=a._reactInternals;var u=Kr(),h=cs(u);h.tag=2,s!=null&&(h.callback=s),s=ds(a,h,u),s!==null&&(Wr(s,a,u),Bu(s,a,u))}};function E4(a,s,u,h,g,x,R){return a=a.stateNode,typeof a.shouldComponentUpdate=="function"?a.shouldComponentUpdate(h,x,R):s.prototype&&s.prototype.isPureReactComponent?!Cu(u,h)||!Cu(g,x):!0}function S4(a,s,u,h){a=s.state,typeof s.componentWillReceiveProps=="function"&&s.componentWillReceiveProps(u,h),typeof s.UNSAFE_componentWillReceiveProps=="function"&&s.UNSAFE_componentWillReceiveProps(u,h),s.state!==a&&Ym.enqueueReplaceState(s,s.state,null)}function So(a,s){var u=s;if("ref"in s){u={};for(var h in s)h!=="ref"&&(u[h]=s[h])}if(a=a.defaultProps){u===s&&(u=p({},u));for(var g in a)u[g]===void 0&&(u[g]=a[g])}return u}var od=typeof reportError=="function"?reportError:function(a){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var s=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof a=="object"&&a!==null&&typeof a.message=="string"?String(a.message):String(a),error:a});if(!window.dispatchEvent(s))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",a);return}console.error(a)};function T4(a){od(a)}function w4(a){console.error(a)}function _4(a){od(a)}function ld(a,s){try{var u=a.onUncaughtError;u(s.value,{componentStack:s.stack})}catch(h){setTimeout(function(){throw h})}}function N4(a,s,u){try{var h=a.onCaughtError;h(u.value,{componentStack:u.stack,errorBoundary:s.tag===1?s.stateNode:null})}catch(g){setTimeout(function(){throw g})}}function Km(a,s,u){return u=cs(u),u.tag=3,u.payload={element:null},u.callback=function(){ld(a,s)},u}function C4(a){return a=cs(a),a.tag=3,a}function A4(a,s,u,h){var g=u.type.getDerivedStateFromError;if(typeof g=="function"){var x=h.value;a.payload=function(){return g(x)},a.callback=function(){N4(s,u,h)}}var R=u.stateNode;R!==null&&typeof R.componentDidCatch=="function"&&(a.callback=function(){N4(s,u,h),typeof g!="function"&&(xs===null?xs=new Set([this]):xs.add(this));var I=h.stack;this.componentDidCatch(h.value,{componentStack:I!==null?I:""})})}function DN(a,s,u,h,g){if(u.flags|=32768,h!==null&&typeof h=="object"&&typeof h.then=="function"){if(s=u.alternate,s!==null&&Ou(s,u,g,!0),u=fa.current,u!==null){switch(u.tag){case 13:return Va===null?yp():u.alternate===null&&Mn===0&&(Mn=3),u.flags&=-257,u.flags|=65536,u.lanes=g,h===Tm?u.flags|=16384:(s=u.updateQueue,s===null?u.updateQueue=new Set([h]):s.add(h),xp(a,h,g)),!1;case 22:return u.flags|=65536,h===Tm?u.flags|=16384:(s=u.updateQueue,s===null?(s={transitions:null,markerInstances:null,retryQueue:new Set([h])},u.updateQueue=s):(u=s.retryQueue,u===null?s.retryQueue=new Set([h]):u.add(h)),xp(a,h,g)),!1}throw Error(r(435,u.tag))}return xp(a,h,g),yp(),!1}if(Vt)return s=fa.current,s!==null?((s.flags&65536)===0&&(s.flags|=256),s.flags|=65536,s.lanes=g,h!==gm&&(a=Error(r(422),{cause:h}),Mu(la(a,u)))):(h!==gm&&(s=Error(r(423),{cause:h}),Mu(la(s,u))),a=a.current.alternate,a.flags|=65536,g&=-g,a.lanes|=g,h=la(h,u),g=Km(a.stateNode,h,g),Nm(a,g),Mn!==4&&(Mn=2)),!1;var x=Error(r(520),{cause:h});if(x=la(x,u),Zu===null?Zu=[x]:Zu.push(x),Mn!==4&&(Mn=2),s===null)return!0;h=la(h,u),u=s;do{switch(u.tag){case 3:return u.flags|=65536,a=g&-g,u.lanes|=a,a=Km(u.stateNode,h,a),Nm(u,a),!1;case 1:if(s=u.type,x=u.stateNode,(u.flags&128)===0&&(typeof s.getDerivedStateFromError=="function"||x!==null&&typeof x.componentDidCatch=="function"&&(xs===null||!xs.has(x))))return u.flags|=65536,g&=-g,u.lanes|=g,g=C4(g),A4(g,a,u,h),Nm(u,g),!1}u=u.return}while(u!==null);return!1}var k4=Error(r(461)),Qn=!1;function rr(a,s,u,h){s.child=a===null?v4(s,null,u,h):ul(s,a.child,u,h)}function R4(a,s,u,h,g){u=u.render;var x=s.ref;if("ref"in h){var R={};for(var I in h)I!=="ref"&&(R[I]=h[I])}else R=h;return vo(s),h=Mm(a,s,u,R,x,g),I=Om(),a!==null&&!Qn?(Dm(a,s,g),Ri(a,s,g)):(Vt&&I&&mm(s),s.flags|=1,rr(a,s,h,g),s.child)}function M4(a,s,u,h,g){if(a===null){var x=u.type;return typeof x=="function"&&!dm(x)&&x.defaultProps===void 0&&u.compare===null?(s.tag=15,s.type=x,O4(a,s,x,h,g)):(a=U0(u.type,null,h,s,s.mode,g),a.ref=s.ref,a.return=s,s.child=a)}if(x=a.child,!np(a,g)){var R=x.memoizedProps;if(u=u.compare,u=u!==null?u:Cu,u(R,h)&&a.ref===s.ref)return Ri(a,s,g)}return s.flags|=1,a=Ti(x,h),a.ref=s.ref,a.return=s,s.child=a}function O4(a,s,u,h,g){if(a!==null){var x=a.memoizedProps;if(Cu(x,h)&&a.ref===s.ref)if(Qn=!1,s.pendingProps=h=x,np(a,g))(a.flags&131072)!==0&&(Qn=!0);else return s.lanes=a.lanes,Ri(a,s,g)}return Wm(a,s,u,h,g)}function D4(a,s,u){var h=s.pendingProps,g=h.children,x=a!==null?a.memoizedState:null;if(h.mode==="hidden"){if((s.flags&128)!==0){if(h=x!==null?x.baseLanes|u:u,a!==null){for(g=s.child=a.child,x=0;g!==null;)x=x|g.lanes|g.childLanes,g=g.sibling;s.childLanes=x&~h}else s.childLanes=0,s.child=null;return I4(a,s,h,u)}if((u&536870912)!==0)s.memoizedState={baseLanes:0,cachePool:null},a!==null&&V0(s,x!==null?x.cachePool:null),x!==null?Oy(s,x):Am(),x4(s);else return s.lanes=s.childLanes=536870912,I4(a,s,x!==null?x.baseLanes|u:u,u)}else x!==null?(V0(s,x.cachePool),Oy(s,x),ms(),s.memoizedState=null):(a!==null&&V0(s,null),Am(),ms());return rr(a,s,g,u),s.child}function I4(a,s,u,h){var g=Sm();return g=g===null?null:{parent:Vn._currentValue,pool:g},s.memoizedState={baseLanes:u,cachePool:g},a!==null&&V0(s,null),Am(),x4(s),a!==null&&Ou(a,s,h,!0),null}function ud(a,s){var u=s.ref;if(u===null)a!==null&&a.ref!==null&&(s.flags|=4194816);else{if(typeof u!="function"&&typeof u!="object")throw Error(r(284));(a===null||a.ref!==u)&&(s.flags|=4194816)}}function Wm(a,s,u,h,g){return vo(s),u=Mm(a,s,u,h,void 0,g),h=Om(),a!==null&&!Qn?(Dm(a,s,g),Ri(a,s,g)):(Vt&&h&&mm(s),s.flags|=1,rr(a,s,u,g),s.child)}function L4(a,s,u,h,g,x){return vo(s),s.updateQueue=null,u=Iy(s,h,u,g),Dy(a),h=Om(),a!==null&&!Qn?(Dm(a,s,x),Ri(a,s,x)):(Vt&&h&&mm(s),s.flags|=1,rr(a,s,u,x),s.child)}function P4(a,s,u,h,g){if(vo(s),s.stateNode===null){var x=Jo,R=u.contextType;typeof R=="object"&&R!==null&&(x=ur(R)),x=new u(h,x),s.memoizedState=x.state!==null&&x.state!==void 0?x.state:null,x.updater=Ym,s.stateNode=x,x._reactInternals=s,x=s.stateNode,x.props=h,x.state=s.memoizedState,x.refs={},wm(s),R=u.contextType,x.context=typeof R=="object"&&R!==null?ur(R):Jo,x.state=s.memoizedState,R=u.getDerivedStateFromProps,typeof R=="function"&&(Vm(s,u,R,h),x.state=s.memoizedState),typeof u.getDerivedStateFromProps=="function"||typeof x.getSnapshotBeforeUpdate=="function"||typeof x.UNSAFE_componentWillMount!="function"&&typeof x.componentWillMount!="function"||(R=x.state,typeof x.componentWillMount=="function"&&x.componentWillMount(),typeof x.UNSAFE_componentWillMount=="function"&&x.UNSAFE_componentWillMount(),R!==x.state&&Ym.enqueueReplaceState(x,x.state,null),zu(s,h,x,g),ju(),x.state=s.memoizedState),typeof x.componentDidMount=="function"&&(s.flags|=4194308),h=!0}else if(a===null){x=s.stateNode;var I=s.memoizedProps,K=So(u,I);x.props=K;var ce=x.context,Se=u.contextType;R=Jo,typeof Se=="object"&&Se!==null&&(R=ur(Se));var Ce=u.getDerivedStateFromProps;Se=typeof Ce=="function"||typeof x.getSnapshotBeforeUpdate=="function",I=s.pendingProps!==I,Se||typeof x.UNSAFE_componentWillReceiveProps!="function"&&typeof x.componentWillReceiveProps!="function"||(I||ce!==R)&&S4(s,x,h,R),us=!1;var me=s.memoizedState;x.state=me,zu(s,h,x,g),ju(),ce=s.memoizedState,I||me!==ce||us?(typeof Ce=="function"&&(Vm(s,u,Ce,h),ce=s.memoizedState),(K=us||E4(s,u,K,h,me,ce,R))?(Se||typeof x.UNSAFE_componentWillMount!="function"&&typeof x.componentWillMount!="function"||(typeof x.componentWillMount=="function"&&x.componentWillMount(),typeof x.UNSAFE_componentWillMount=="function"&&x.UNSAFE_componentWillMount()),typeof x.componentDidMount=="function"&&(s.flags|=4194308)):(typeof x.componentDidMount=="function"&&(s.flags|=4194308),s.memoizedProps=h,s.memoizedState=ce),x.props=h,x.state=ce,x.context=R,h=K):(typeof x.componentDidMount=="function"&&(s.flags|=4194308),h=!1)}else{x=s.stateNode,_m(a,s),R=s.memoizedProps,Se=So(u,R),x.props=Se,Ce=s.pendingProps,me=x.context,ce=u.contextType,K=Jo,typeof ce=="object"&&ce!==null&&(K=ur(ce)),I=u.getDerivedStateFromProps,(ce=typeof I=="function"||typeof x.getSnapshotBeforeUpdate=="function")||typeof x.UNSAFE_componentWillReceiveProps!="function"&&typeof x.componentWillReceiveProps!="function"||(R!==Ce||me!==K)&&S4(s,x,h,K),us=!1,me=s.memoizedState,x.state=me,zu(s,h,x,g),ju();var ge=s.memoizedState;R!==Ce||me!==ge||us||a!==null&&a.dependencies!==null&&q0(a.dependencies)?(typeof I=="function"&&(Vm(s,u,I,h),ge=s.memoizedState),(Se=us||E4(s,u,Se,h,me,ge,K)||a!==null&&a.dependencies!==null&&q0(a.dependencies))?(ce||typeof x.UNSAFE_componentWillUpdate!="function"&&typeof x.componentWillUpdate!="function"||(typeof x.componentWillUpdate=="function"&&x.componentWillUpdate(h,ge,K),typeof x.UNSAFE_componentWillUpdate=="function"&&x.UNSAFE_componentWillUpdate(h,ge,K)),typeof x.componentDidUpdate=="function"&&(s.flags|=4),typeof x.getSnapshotBeforeUpdate=="function"&&(s.flags|=1024)):(typeof x.componentDidUpdate!="function"||R===a.memoizedProps&&me===a.memoizedState||(s.flags|=4),typeof x.getSnapshotBeforeUpdate!="function"||R===a.memoizedProps&&me===a.memoizedState||(s.flags|=1024),s.memoizedProps=h,s.memoizedState=ge),x.props=h,x.state=ge,x.context=K,h=Se):(typeof x.componentDidUpdate!="function"||R===a.memoizedProps&&me===a.memoizedState||(s.flags|=4),typeof x.getSnapshotBeforeUpdate!="function"||R===a.memoizedProps&&me===a.memoizedState||(s.flags|=1024),h=!1)}return x=h,ud(a,s),h=(s.flags&128)!==0,x||h?(x=s.stateNode,u=h&&typeof u.getDerivedStateFromError!="function"?null:x.render(),s.flags|=1,a!==null&&h?(s.child=ul(s,a.child,null,g),s.child=ul(s,null,u,g)):rr(a,s,u,g),s.memoizedState=x.state,a=s.child):a=Ri(a,s,g),a}function B4(a,s,u,h){return Ru(),s.flags|=256,rr(a,s,u,h),s.child}var Xm={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Qm(a){return{baseLanes:a,cachePool:wy()}}function Zm(a,s,u){return a=a!==null?a.childLanes&~u:0,s&&(a|=ha),a}function j4(a,s,u){var h=s.pendingProps,g=!1,x=(s.flags&128)!==0,R;if((R=x)||(R=a!==null&&a.memoizedState===null?!1:(Yn.current&2)!==0),R&&(g=!0,s.flags&=-129),R=(s.flags&32)!==0,s.flags&=-33,a===null){if(Vt){if(g?hs(s):ms(),Vt){var I=Rn,K;if(K=I){e:{for(K=I,I=Ga;K.nodeType!==8;){if(!I){I=null;break e}if(K=Ra(K.nextSibling),K===null){I=null;break e}}I=K}I!==null?(s.memoizedState={dehydrated:I,treeContext:mo!==null?{id:wi,overflow:_i}:null,retryLane:536870912,hydrationErrors:null},K=qr(18,null,null,0),K.stateNode=I,K.return=s,s.child=K,vr=s,Rn=null,K=!0):K=!1}K||bo(s)}if(I=s.memoizedState,I!==null&&(I=I.dehydrated,I!==null))return Lp(I)?s.lanes=32:s.lanes=536870912,null;ki(s)}return I=h.children,h=h.fallback,g?(ms(),g=s.mode,I=cd({mode:"hidden",children:I},g),h=ho(h,g,u,null),I.return=s,h.return=s,I.sibling=h,s.child=I,g=s.child,g.memoizedState=Qm(u),g.childLanes=Zm(a,R,u),s.memoizedState=Xm,h):(hs(s),Jm(s,I))}if(K=a.memoizedState,K!==null&&(I=K.dehydrated,I!==null)){if(x)s.flags&256?(hs(s),s.flags&=-257,s=ep(a,s,u)):s.memoizedState!==null?(ms(),s.child=a.child,s.flags|=128,s=null):(ms(),g=h.fallback,I=s.mode,h=cd({mode:"visible",children:h.children},I),g=ho(g,I,u,null),g.flags|=2,h.return=s,g.return=s,h.sibling=g,s.child=h,ul(s,a.child,null,u),h=s.child,h.memoizedState=Qm(u),h.childLanes=Zm(a,R,u),s.memoizedState=Xm,s=g);else if(hs(s),Lp(I)){if(R=I.nextSibling&&I.nextSibling.dataset,R)var ce=R.dgst;R=ce,h=Error(r(419)),h.stack="",h.digest=R,Mu({value:h,source:null,stack:null}),s=ep(a,s,u)}else if(Qn||Ou(a,s,u,!1),R=(u&a.childLanes)!==0,Qn||R){if(R=dn,R!==null&&(h=u&-u,h=(h&42)!==0?1:Ve(h),h=(h&(R.suspendedLanes|u))!==0?0:h,h!==0&&h!==K.retryLane))throw K.retryLane=h,Zo(a,h),Wr(R,a,h),k4;I.data==="$?"||yp(),s=ep(a,s,u)}else I.data==="$?"?(s.flags|=192,s.child=a.child,s=null):(a=K.treeContext,Rn=Ra(I.nextSibling),vr=s,Vt=!0,go=null,Ga=!1,a!==null&&(ca[da++]=wi,ca[da++]=_i,ca[da++]=mo,wi=a.id,_i=a.overflow,mo=s),s=Jm(s,h.children),s.flags|=4096);return s}return g?(ms(),g=h.fallback,I=s.mode,K=a.child,ce=K.sibling,h=Ti(K,{mode:"hidden",children:h.children}),h.subtreeFlags=K.subtreeFlags&65011712,ce!==null?g=Ti(ce,g):(g=ho(g,I,u,null),g.flags|=2),g.return=s,h.return=s,h.sibling=g,s.child=h,h=g,g=s.child,I=a.child.memoizedState,I===null?I=Qm(u):(K=I.cachePool,K!==null?(ce=Vn._currentValue,K=K.parent!==ce?{parent:ce,pool:ce}:K):K=wy(),I={baseLanes:I.baseLanes|u,cachePool:K}),g.memoizedState=I,g.childLanes=Zm(a,R,u),s.memoizedState=Xm,h):(hs(s),u=a.child,a=u.sibling,u=Ti(u,{mode:"visible",children:h.children}),u.return=s,u.sibling=null,a!==null&&(R=s.deletions,R===null?(s.deletions=[a],s.flags|=16):R.push(a)),s.child=u,s.memoizedState=null,u)}function Jm(a,s){return s=cd({mode:"visible",children:s},a.mode),s.return=a,a.child=s}function cd(a,s){return a=qr(22,a,null,s),a.lanes=0,a.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},a}function ep(a,s,u){return ul(s,a.child,null,u),a=Jm(s,s.pendingProps.children),a.flags|=2,s.memoizedState=null,a}function z4(a,s,u){a.lanes|=s;var h=a.alternate;h!==null&&(h.lanes|=s),ym(a.return,s,u)}function tp(a,s,u,h,g){var x=a.memoizedState;x===null?a.memoizedState={isBackwards:s,rendering:null,renderingStartTime:0,last:h,tail:u,tailMode:g}:(x.isBackwards=s,x.rendering=null,x.renderingStartTime=0,x.last=h,x.tail=u,x.tailMode=g)}function F4(a,s,u){var h=s.pendingProps,g=h.revealOrder,x=h.tail;if(rr(a,s,h.children,u),h=Yn.current,(h&2)!==0)h=h&1|2,s.flags|=128;else{if(a!==null&&(a.flags&128)!==0)e:for(a=s.child;a!==null;){if(a.tag===13)a.memoizedState!==null&&z4(a,u,s);else if(a.tag===19)z4(a,u,s);else if(a.child!==null){a.child.return=a,a=a.child;continue}if(a===s)break e;for(;a.sibling===null;){if(a.return===null||a.return===s)break e;a=a.return}a.sibling.return=a.return,a=a.sibling}h&=1}switch(P(Yn,h),g){case"forwards":for(u=s.child,g=null;u!==null;)a=u.alternate,a!==null&&sd(a)===null&&(g=u),u=u.sibling;u=g,u===null?(g=s.child,s.child=null):(g=u.sibling,u.sibling=null),tp(s,!1,g,u,x);break;case"backwards":for(u=null,g=s.child,s.child=null;g!==null;){if(a=g.alternate,a!==null&&sd(a)===null){s.child=g;break}a=g.sibling,g.sibling=u,u=g,g=a}tp(s,!0,u,null,x);break;case"together":tp(s,!1,null,null,void 0);break;default:s.memoizedState=null}return s.child}function Ri(a,s,u){if(a!==null&&(s.dependencies=a.dependencies),vs|=s.lanes,(u&s.childLanes)===0)if(a!==null){if(Ou(a,s,u,!1),(u&s.childLanes)===0)return null}else return null;if(a!==null&&s.child!==a.child)throw Error(r(153));if(s.child!==null){for(a=s.child,u=Ti(a,a.pendingProps),s.child=u,u.return=s;a.sibling!==null;)a=a.sibling,u=u.sibling=Ti(a,a.pendingProps),u.return=s;u.sibling=null}return s.child}function np(a,s){return(a.lanes&s)!==0?!0:(a=a.dependencies,!!(a!==null&&q0(a)))}function IN(a,s,u){switch(s.tag){case 3:Ge(s,s.stateNode.containerInfo),ls(s,Vn,a.memoizedState.cache),Ru();break;case 27:case 5:ye(s);break;case 4:Ge(s,s.stateNode.containerInfo);break;case 10:ls(s,s.type,s.memoizedProps.value);break;case 13:var h=s.memoizedState;if(h!==null)return h.dehydrated!==null?(hs(s),s.flags|=128,null):(u&s.child.childLanes)!==0?j4(a,s,u):(hs(s),a=Ri(a,s,u),a!==null?a.sibling:null);hs(s);break;case 19:var g=(a.flags&128)!==0;if(h=(u&s.childLanes)!==0,h||(Ou(a,s,u,!1),h=(u&s.childLanes)!==0),g){if(h)return F4(a,s,u);s.flags|=128}if(g=s.memoizedState,g!==null&&(g.rendering=null,g.tail=null,g.lastEffect=null),P(Yn,Yn.current),h)break;return null;case 22:case 23:return s.lanes=0,D4(a,s,u);case 24:ls(s,Vn,a.memoizedState.cache)}return Ri(a,s,u)}function U4(a,s,u){if(a!==null)if(a.memoizedProps!==s.pendingProps)Qn=!0;else{if(!np(a,u)&&(s.flags&128)===0)return Qn=!1,IN(a,s,u);Qn=(a.flags&131072)!==0}else Qn=!1,Vt&&(s.flags&1048576)!==0&&by(s,$0,s.index);switch(s.lanes=0,s.tag){case 16:e:{a=s.pendingProps;var h=s.elementType,g=h._init;if(h=g(h._payload),s.type=h,typeof h=="function")dm(h)?(a=So(h,a),s.tag=1,s=P4(null,s,h,a,u)):(s.tag=0,s=Wm(null,s,h,a,u));else{if(h!=null){if(g=h.$$typeof,g===z){s.tag=11,s=R4(null,s,h,a,u);break e}else if(g===W){s.tag=14,s=M4(null,s,h,a,u);break e}}throw s=re(h)||h,Error(r(306,s,""))}}return s;case 0:return Wm(a,s,s.type,s.pendingProps,u);case 1:return h=s.type,g=So(h,s.pendingProps),P4(a,s,h,g,u);case 3:e:{if(Ge(s,s.stateNode.containerInfo),a===null)throw Error(r(387));h=s.pendingProps;var x=s.memoizedState;g=x.element,_m(a,s),zu(s,h,null,u);var R=s.memoizedState;if(h=R.cache,ls(s,Vn,h),h!==x.cache&&vm(s,[Vn],u,!0),ju(),h=R.element,x.isDehydrated)if(x={element:h,isDehydrated:!1,cache:R.cache},s.updateQueue.baseState=x,s.memoizedState=x,s.flags&256){s=B4(a,s,h,u);break e}else if(h!==g){g=la(Error(r(424)),s),Mu(g),s=B4(a,s,h,u);break e}else{switch(a=s.stateNode.containerInfo,a.nodeType){case 9:a=a.body;break;default:a=a.nodeName==="HTML"?a.ownerDocument.body:a}for(Rn=Ra(a.firstChild),vr=s,Vt=!0,go=null,Ga=!0,u=v4(s,null,h,u),s.child=u;u;)u.flags=u.flags&-3|4096,u=u.sibling}else{if(Ru(),h===g){s=Ri(a,s,u);break e}rr(a,s,h,u)}s=s.child}return s;case 26:return ud(a,s),a===null?(u=Gv(s.type,null,s.pendingProps,null))?s.memoizedState=u:Vt||(u=s.type,a=s.pendingProps,h=wd(De.current).createElement(u),h[qe]=s,h[rt]=a,ir(h,u,a),wn(h),s.stateNode=h):s.memoizedState=Gv(s.type,a.memoizedProps,s.pendingProps,a.memoizedState),null;case 27:return ye(s),a===null&&Vt&&(h=s.stateNode=Hv(s.type,s.pendingProps,De.current),vr=s,Ga=!0,g=Rn,Ts(s.type)?(Pp=g,Rn=Ra(h.firstChild)):Rn=g),rr(a,s,s.pendingProps.children,u),ud(a,s),a===null&&(s.flags|=4194304),s.child;case 5:return a===null&&Vt&&((g=h=Rn)&&(h=l9(h,s.type,s.pendingProps,Ga),h!==null?(s.stateNode=h,vr=s,Rn=Ra(h.firstChild),Ga=!1,g=!0):g=!1),g||bo(s)),ye(s),g=s.type,x=s.pendingProps,R=a!==null?a.memoizedProps:null,h=x.children,Op(g,x)?h=null:R!==null&&Op(g,R)&&(s.flags|=32),s.memoizedState!==null&&(g=Mm(a,s,NN,null,null,u),oc._currentValue=g),ud(a,s),rr(a,s,h,u),s.child;case 6:return a===null&&Vt&&((a=u=Rn)&&(u=u9(u,s.pendingProps,Ga),u!==null?(s.stateNode=u,vr=s,Rn=null,a=!0):a=!1),a||bo(s)),null;case 13:return j4(a,s,u);case 4:return Ge(s,s.stateNode.containerInfo),h=s.pendingProps,a===null?s.child=ul(s,null,h,u):rr(a,s,h,u),s.child;case 11:return R4(a,s,s.type,s.pendingProps,u);case 7:return rr(a,s,s.pendingProps,u),s.child;case 8:return rr(a,s,s.pendingProps.children,u),s.child;case 12:return rr(a,s,s.pendingProps.children,u),s.child;case 10:return h=s.pendingProps,ls(s,s.type,h.value),rr(a,s,h.children,u),s.child;case 9:return g=s.type._context,h=s.pendingProps.children,vo(s),g=ur(g),h=h(g),s.flags|=1,rr(a,s,h,u),s.child;case 14:return M4(a,s,s.type,s.pendingProps,u);case 15:return O4(a,s,s.type,s.pendingProps,u);case 19:return F4(a,s,u);case 31:return h=s.pendingProps,u=s.mode,h={mode:h.mode,children:h.children},a===null?(u=cd(h,u),u.ref=s.ref,s.child=u,u.return=s,s=u):(u=Ti(a.child,h),u.ref=s.ref,s.child=u,u.return=s,s=u),s;case 22:return D4(a,s,u);case 24:return vo(s),h=ur(Vn),a===null?(g=Sm(),g===null&&(g=dn,x=xm(),g.pooledCache=x,x.refCount++,x!==null&&(g.pooledCacheLanes|=u),g=x),s.memoizedState={parent:h,cache:g},wm(s),ls(s,Vn,g)):((a.lanes&u)!==0&&(_m(a,s),zu(s,null,null,u),ju()),g=a.memoizedState,x=s.memoizedState,g.parent!==h?(g={parent:h,cache:h},s.memoizedState=g,s.lanes===0&&(s.memoizedState=s.updateQueue.baseState=g),ls(s,Vn,h)):(h=x.cache,ls(s,Vn,h),h!==g.cache&&vm(s,[Vn],u,!0))),rr(a,s,s.pendingProps.children,u),s.child;case 29:throw s.pendingProps}throw Error(r(156,s.tag))}function Mi(a){a.flags|=4}function H4(a,s){if(s.type!=="stylesheet"||(s.state.loading&4)!==0)a.flags&=-16777217;else if(a.flags|=16777216,!Xv(s)){if(s=fa.current,s!==null&&((Ut&4194048)===Ut?Va!==null:(Ut&62914560)!==Ut&&(Ut&536870912)===0||s!==Va))throw Pu=Tm,_y;a.flags|=8192}}function dd(a,s){s!==null&&(a.flags|=4),a.flags&16384&&(s=a.tag!==22?mu():536870912,a.lanes|=s,hl|=s)}function Vu(a,s){if(!Vt)switch(a.tailMode){case"hidden":s=a.tail;for(var u=null;s!==null;)s.alternate!==null&&(u=s),s=s.sibling;u===null?a.tail=null:u.sibling=null;break;case"collapsed":u=a.tail;for(var h=null;u!==null;)u.alternate!==null&&(h=u),u=u.sibling;h===null?s||a.tail===null?a.tail=null:a.tail.sibling=null:h.sibling=null}}function Nn(a){var s=a.alternate!==null&&a.alternate.child===a.child,u=0,h=0;if(s)for(var g=a.child;g!==null;)u|=g.lanes|g.childLanes,h|=g.subtreeFlags&65011712,h|=g.flags&65011712,g.return=a,g=g.sibling;else for(g=a.child;g!==null;)u|=g.lanes|g.childLanes,h|=g.subtreeFlags,h|=g.flags,g.return=a,g=g.sibling;return a.subtreeFlags|=h,a.childLanes=u,s}function LN(a,s,u){var h=s.pendingProps;switch(pm(s),s.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Nn(s),null;case 1:return Nn(s),null;case 3:return u=s.stateNode,h=null,a!==null&&(h=a.memoizedState.cache),s.memoizedState.cache!==h&&(s.flags|=2048),Ci(Vn),dt(),u.pendingContext&&(u.context=u.pendingContext,u.pendingContext=null),(a===null||a.child===null)&&(ku(s)?Mi(s):a===null||a.memoizedState.isDehydrated&&(s.flags&256)===0||(s.flags|=1024,xy())),Nn(s),null;case 26:return u=s.memoizedState,a===null?(Mi(s),u!==null?(Nn(s),H4(s,u)):(Nn(s),s.flags&=-16777217)):u?u!==a.memoizedState?(Mi(s),Nn(s),H4(s,u)):(Nn(s),s.flags&=-16777217):(a.memoizedProps!==h&&Mi(s),Nn(s),s.flags&=-16777217),null;case 27:ke(s),u=De.current;var g=s.type;if(a!==null&&s.stateNode!=null)a.memoizedProps!==h&&Mi(s);else{if(!h){if(s.stateNode===null)throw Error(r(166));return Nn(s),null}a=Ae.current,ku(s)?yy(s):(a=Hv(g,h,u),s.stateNode=a,Mi(s))}return Nn(s),null;case 5:if(ke(s),u=s.type,a!==null&&s.stateNode!=null)a.memoizedProps!==h&&Mi(s);else{if(!h){if(s.stateNode===null)throw Error(r(166));return Nn(s),null}if(a=Ae.current,ku(s))yy(s);else{switch(g=wd(De.current),a){case 1:a=g.createElementNS("http://www.w3.org/2000/svg",u);break;case 2:a=g.createElementNS("http://www.w3.org/1998/Math/MathML",u);break;default:switch(u){case"svg":a=g.createElementNS("http://www.w3.org/2000/svg",u);break;case"math":a=g.createElementNS("http://www.w3.org/1998/Math/MathML",u);break;case"script":a=g.createElement("div"),a.innerHTML=" - + +
diff --git a/web/frontend/src/components/AudioDetailView.tsx b/web/frontend/src/components/AudioDetailView.tsx index cba8a77f..439c945d 100644 --- a/web/frontend/src/components/AudioDetailView.tsx +++ b/web/frontend/src/components/AudioDetailView.tsx @@ -1,5 +1,6 @@ import { useState, useEffect, useRef } from "react"; -import { ArrowLeft, Play, Pause, List, AlignLeft, MessageCircle, Download, FileText, FileJson, FileImage, Check } from "lucide-react"; +import { createPortal } from "react-dom"; +import { ArrowLeft, Play, Pause, List, AlignLeft, MessageCircle, Download, FileText, FileJson, FileImage, Check, StickyNote, Plus } from "lucide-react"; import WaveSurfer from "wavesurfer.js"; import { Button } from "./ui/button"; import { @@ -23,6 +24,8 @@ import { useTheme } from "../contexts/ThemeContext"; import { ThemeSwitcher } from "./ThemeSwitcher"; import { useAuth } from "../contexts/AuthContext"; import { ChatInterface } from "./ChatInterface"; +import type { Note } from "../types/note"; +import { NotesSidebar } from "./NotesSidebar"; interface AudioFile { id: string; @@ -78,10 +81,20 @@ export function AudioDetailView({ audioId }: AudioDetailViewProps) { const transcriptRef = useRef(null); const highlightedWordRef = useRef(null); - useEffect(() => { - console.log("AudioDetailView mounted, audioId:", audioId); - fetchAudioDetails(); - }, [audioId]); + // Notes state + const [notes, setNotes] = useState([]); + const [notesOpen, setNotesOpen] = useState(false); + const [showSelectionMenu, setShowSelectionMenu] = useState(false); + const [pendingSelection, setPendingSelection] = useState<{startIdx:number; endIdx:number; startTime:number; endTime:number; quote:string} | null>(null); + const [newNoteContent, setNewNoteContent] = useState(""); + const [showEditor, setShowEditor] = useState(false); + const [selectionViewportPos, setSelectionViewportPos] = useState<{x:number,y:number}>({x:0,y:0}); + +useEffect(() => { + console.log("AudioDetailView mounted, audioId:", audioId); + fetchAudioDetails(); + fetchNotes(); +}, [audioId]); // Initialize WaveSurfer when audioFile is available - with proper DOM timing useEffect(() => { @@ -250,6 +263,16 @@ export function AudioDetailView({ audioId }: AudioDetailViewProps) { } }; + const fetchNotes = async () => { + try { + const res = await fetch(`/api/v1/transcription/${audioId}/notes`, { headers: { ...getAuthHeaders() }}); + if (res.ok) { + const data = await res.json(); + setNotes(data); + } + } catch (e) { console.error("Failed to fetch notes", e); } + }; + const initializeWaveSurfer = async () => { if (!waveformRef.current || !audioFile) return; @@ -336,26 +359,96 @@ export function AudioDetailView({ audioId }: AudioDetailViewProps) { } }; - const togglePlayPause = () => { - if (wavesurferRef.current) { - wavesurferRef.current.playPause(); - } - }; + const togglePlayPause = () => { + if (wavesurferRef.current) { + wavesurferRef.current.playPause(); + } + }; - const handleBack = () => { - navigate({ path: "home" }); - }; + const handleBack = () => { + navigate({ path: "home" }); + }; - // Handle word click to seek to that time - const handleWordClick = (word: WordSegment) => { - if (wavesurferRef.current) { - const duration = wavesurferRef.current.getDuration(); - const progress = word.start / duration; - wavesurferRef.current.seekTo(progress); - // Manually update current time to ensure highlighting syncs immediately - setCurrentTime(word.start); - } - }; + // Selection handling for annotation + useEffect(() => { + const el = transcriptRef.current; + if (!el) return; + + const onMouseUp = () => { + const sel = window.getSelection(); + if (!sel || sel.isCollapsed) { setShowSelectionMenu(false); setShowEditor(false); return; } + const anchor = sel.anchorNode as HTMLElement | null; + const focus = sel.focusNode as HTMLElement | null; + if (!anchor || !focus) return; + const aSpan = (anchor.nodeType === 3 ? anchor.parentElement : anchor) as HTMLElement; + const fSpan = (focus.nodeType === 3 ? focus.parentElement : focus) as HTMLElement; + if (!aSpan || !fSpan) return; + const aIdx = aSpan.closest('span[data-word-index]') as HTMLElement | null; + const fIdx = fSpan.closest('span[data-word-index]') as HTMLElement | null; + if (!aIdx || !fIdx) { setShowSelectionMenu(false); return; } + const startIdx = Math.min(Number(aIdx.dataset.wordIndex), Number(fIdx.dataset.wordIndex)); + const endIdx = Math.max(Number(aIdx.dataset.wordIndex), Number(fIdx.dataset.wordIndex)); + if (!transcript?.word_segments || endIdx < startIdx) { setShowSelectionMenu(false); return; } + const startTime = transcript.word_segments[startIdx]?.start ?? 0; + const endTime = transcript.word_segments[endIdx]?.end ?? startTime; + const quote = transcript.word_segments.slice(startIdx, endIdx + 1).map(w => w.word).join(" "); + + const range = sel.getRangeAt(0); + const rect = range.getBoundingClientRect(); + // Use viewport coords for portal positioning + setSelectionViewportPos({ x: rect.left + rect.width / 2, y: rect.top - 10 }); + setPendingSelection({ startIdx, endIdx, startTime, endTime, quote }); + setShowSelectionMenu(true); + }; + + el.addEventListener('mouseup', onMouseUp); + return () => el.removeEventListener('mouseup', onMouseUp); + }, [transcript, transcriptMode]); + + const openEditorForSelection = () => { + setShowEditor(true); + setShowSelectionMenu(false); + setNewNoteContent(""); + }; + + const saveNewNote = async () => { + if (!pendingSelection) return; + try { + const res = await fetch(`/api/v1/transcription/${audioId}/notes`, { + method: 'POST', + headers: { 'Content-Type': 'application/json', ...getAuthHeaders() }, + body: JSON.stringify({ + start_word_index: pendingSelection.startIdx, + end_word_index: pendingSelection.endIdx, + start_time: pendingSelection.startTime, + end_time: pendingSelection.endTime, + quote: pendingSelection.quote, + content: newNoteContent.trim() || pendingSelection.quote, + }), + }); + if (res.ok) { + const created = await res.json(); + setNotes(prev => [...prev, created]); + setShowEditor(false); + setPendingSelection(null); + const sel = window.getSelection(); sel?.removeAllRanges(); + } + } catch (e) { console.error('Failed to create note', e); } + }; + + const updateNote = async (id: string, newContent: string) => { + await fetch(`/api/v1/notes/${id}`, { + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...getAuthHeaders() }, + body: JSON.stringify({ content: newContent }), + }); + setNotes(prev => prev.map(n => n.id === id ? { ...n, content: newContent } : n)); + }; + + const deleteNote = async (id: string) => { + await fetch(`/api/v1/notes/${id}`, { method: 'DELETE', headers: { ...getAuthHeaders() }}); + setNotes(prev => prev.filter(n => n.id !== id)); + }; // Render transcript with word-level highlighting const renderHighlightedTranscript = () => { @@ -365,23 +458,26 @@ export function AudioDetailView({ audioId }: AudioDetailViewProps) { return transcript.word_segments.map((word, index) => { const isHighlighted = index === currentWordIndex; - return ( - handleWordClick(word)} - className={`cursor-pointer transition-colors duration-150 hover:bg-blue-100 dark:hover:bg-blue-800 inline-block ${ - isHighlighted - ? 'bg-yellow-300 dark:bg-yellow-500 dark:text-black px-1 rounded' - : 'px-0.5' - }`} - title={`${formatTimestamp(word.start)} - Click to seek`} - > - {word.word} - - ); - }); - }; + const isAnnotated = notes.some(n => index >= n.start_word_index && index <= n.end_word_index); + return ( + + {word.word}{" "} + + ); + }); + }; // Render segment with word-level highlighting for expanded view const renderSegmentWithHighlighting = (segment: any) => { @@ -401,23 +497,26 @@ export function AudioDetailView({ audioId }: AudioDetailViewProps) { return segmentWords.map((word, index) => { const globalIndex = transcript.word_segments?.findIndex(w => w === word) ?? -1; const isHighlighted = globalIndex === currentWordIndex; - return ( - handleWordClick(word)} - className={`cursor-pointer transition-colors duration-150 hover:bg-blue-100 dark:hover:bg-blue-800 inline-block ${ - isHighlighted - ? 'bg-yellow-300 dark:bg-yellow-500 dark:text-black px-1 rounded' - : 'px-0.5' - }`} - title={`${formatTimestamp(word.start)} - Click to seek`} - > - {word.word} - - ); - }); - }; + const isAnnotated = notes.some(n => globalIndex >= n.start_word_index && globalIndex <= n.end_word_index); + return ( + + {word.word}{" "} + + ); + }); + }; const getFileName = (audioPath: string) => { const parts = audioPath.split("/"); @@ -597,7 +696,8 @@ export function AudioDetailView({ audioId }: AudioDetailViewProps) { className="h-4 bg-gray-200 dark:bg-gray-600 rounded" > ))} - + {/* Selection bubble and editor moved to portal */} + @@ -673,7 +773,6 @@ export function AudioDetailView({ audioId }: AudioDetailViewProps) { - {/* Transcript Section */} {audioFile.status === "completed" && transcript && (
@@ -748,6 +847,19 @@ export function AudioDetailView({ audioId }: AudioDetailViewProps) {
)} + + {/* Notes toggle */} +
@@ -755,36 +867,38 @@ export function AudioDetailView({ audioId }: AudioDetailViewProps) { {viewMode === "transcript" ? (
{transcriptMode === "compact" && ( -
-

- {renderHighlightedTranscript()} -

+
+

+ {renderHighlightedTranscript()} +

+ + {/* Selection bubble and editor moved to portal */}
)}
{transcriptMode === "expanded" && transcript.segments && ( -
+
{transcript.segments.map((segment, index) => (
)}
-
-

- {renderSegmentWithHighlighting(segment)} -

-
+
+

+ {renderSegmentWithHighlighting(segment)} +

+
))}
@@ -819,6 +933,22 @@ export function AudioDetailView({ audioId }: AudioDetailViewProps) { />
)} +
+ + )} + + {notesOpen && ( +
+
+
+

Notes

+ { if (wavesurferRef.current) { const dur = wavesurferRef.current.getDuration(); wavesurferRef.current.seekTo(Math.min(0.999, Math.max(0, t / dur))); setCurrentTime(t); }}} + /> +
)} @@ -921,6 +1051,39 @@ export function AudioDetailView({ audioId }: AudioDetailViewProps) { + + {/* Portal: add-note bubble + editor */} + {((showSelectionMenu || showEditor) && pendingSelection) ? ( + createPortal( +
+ {showSelectionMenu && ( +
+
+ +
+
+ )} + {showEditor && ( +
+
+
+ {pendingSelection.quote} +
+