From 0aa9619d26bb4c398115c2b7f221a712bfbb9d73 Mon Sep 17 00:00:00 2001 From: Nick Pratley Date: Tue, 30 Jun 2026 10:56:50 +1000 Subject: [PATCH 1/2] Multi-model fit: shared-GPU co-tenancy planner + shareable URLs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a multi-model planning mode on top of the single-model planner. Users build a working set of models, point them at one shared GPU inventory, and see how they all fit — including how they share GPUs. Backend (POST /v1/fit): - FitRequest{models[], shared workload/constraints, inventory} with per-model overrides (workload/constraints), a `dedicated` flag, and `replicas`. - solver/fit.go: per-model pick the smallest-footprint memory-feasible config (SLO dropped so fitment is the gate, ranked fewest-GPUs-first), then a best-fit-decreasing bin-packer (ledger.go) places replicas with spatial co-tenancy — multiple models on one GPU when memory fits; dedicated models lock their GPUs. Returns per-model placement + a cluster occupancy view (per-GPU tenants, used/free). - Verified live against HF: two Qwen models co-tenant a single L40S. Frontend: - Multi-model working set (add/remove HF ids), simple defaults with an Advanced toggle that reveals SLOs, constraints, per-model dedicated/replicas. - Cluster placement map: per-GPU stacked occupancy bars (one color per model) grouped by node; per-model cards (fitment first) with perf/memory/vLLM command under Advanced. - Full state (models + GPUs + settings, minus the HF token) encoded into the URL hash; a Share button copies a link that reproduces the setup. State also persists to localStorage; a shared link wins on load. Fitment and placement come first; SLO/throughput are advisory. Go build/vet/test and the web tsc/vite build are green. --- README.md | 13 +- internal/api/request.go | 63 +++ internal/api/response.go | 67 +++ internal/server/fit_test.go | 163 ++++++ internal/server/handler.go | 17 + internal/solver/fit.go | 242 +++++++++ internal/solver/ledger.go | 190 +++++++ internal/webui/dist/assets/index-B_jf50bD.css | 1 + internal/webui/dist/assets/index-BiJS6m-o.css | 1 - internal/webui/dist/assets/index-CUm5LUen.js | 50 ++ internal/webui/dist/assets/index-sMyt4aUY.js | 50 -- internal/webui/dist/index.html | 4 +- web/src/App.tsx | 500 ++++++++---------- web/src/FitResults.tsx | 203 +++++++ web/src/Results.tsx | 400 -------------- web/src/api.ts | 17 +- web/src/components/cluster-view.tsx | 96 ++++ web/src/components/models-editor.tsx | 98 ++++ web/src/lib/colors.ts | 29 + web/src/lib/urlState.ts | 64 +++ web/src/lib/verdict.ts | 4 + web/src/types.ts | 87 +++ 22 files changed, 1639 insertions(+), 720 deletions(-) create mode 100644 internal/server/fit_test.go create mode 100644 internal/solver/fit.go create mode 100644 internal/solver/ledger.go create mode 100644 internal/webui/dist/assets/index-B_jf50bD.css delete mode 100644 internal/webui/dist/assets/index-BiJS6m-o.css create mode 100644 internal/webui/dist/assets/index-CUm5LUen.js delete mode 100644 internal/webui/dist/assets/index-sMyt4aUY.js create mode 100644 web/src/FitResults.tsx delete mode 100644 web/src/Results.tsx create mode 100644 web/src/components/cluster-view.tsx create mode 100644 web/src/components/models-editor.tsx create mode 100644 web/src/lib/colors.ts create mode 100644 web/src/lib/urlState.ts diff --git a/README.md b/README.md index 6ab5591..496d9a9 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,18 @@ See [`.env.example`](./.env.example) for the complete list. | GET | `/api/v1/readyz` | Readiness (constants + HF reachable). | | GET | `/api/v1/gpus` | Built-in GPU SKU catalog. | | GET | `/api/v1/models/{owner}/{repo}/profile` | Model introspection (no planning). | -| POST | `/api/v1/plan` | Main endpoint. Returns ranked configs. | +| POST | `/api/v1/plan` | Single model → ranked configs. | +| POST | `/api/v1/fit` | **Multiple models on a shared GPU pool** → per-model placement + cluster occupancy, with spatial co-tenancy (models packed onto the same GPU when memory fits). Fitment first; SLO/throughput advisory. | + +### Multi-model fit + +`/api/v1/fit` takes a working set of models and one shared inventory and returns +how they all fit together: for each model the smallest-footprint memory-feasible +config and its assigned GPUs, plus a `cluster` view of every GPU's tenants and +remaining capacity. Models may **co-tenant** a GPU (the GreenThread sharing +model) or be pinned `dedicated`. The web UI builds this request, shows the +cluster placement map, and encodes the entire setup (models + GPUs + settings) +into the URL hash so a **Share** button copies a link that reproduces it. Request/response schemas are documented in [SPEC.md §2](./SPEC.md). diff --git a/internal/api/request.go b/internal/api/request.go index 056bc12..711844b 100644 --- a/internal/api/request.go +++ b/internal/api/request.go @@ -1,5 +1,11 @@ package api +import ( + "errors" + "fmt" + "strings" +) + // PlanRequest is the body for POST /v1/plan. type PlanRequest struct { Model Model `json:"model"` @@ -14,6 +20,63 @@ type Model struct { HFToken string `json:"hf_token,omitempty"` } +// FitRequest is the body for POST /v1/fit — several models sharing one GPU +// inventory. The Workload/Constraints at the top level are the defaults applied +// to every model; a model may override them (advanced). +type FitRequest struct { + Models []FitModel `json:"models"` + Workload Workload `json:"workload"` + Constraints Constraints `json:"constraints"` + Inventory Inventory `json:"inventory"` +} + +// FitModel is one model in a fit plan. +type FitModel struct { + HFID string `json:"hf_id"` + Revision string `json:"revision,omitempty"` + HFToken string `json:"hf_token,omitempty"` + Label string `json:"label,omitempty"` // display name; defaults to hf_id + Dedicated bool `json:"dedicated,omitempty"` // refuse co-tenants on its GPUs + Replicas int `json:"replicas,omitempty"` // independent copies to place (default 1) + // Per-model overrides (advanced). When nil the request-level defaults apply. + Workload *Workload `json:"workload,omitempty"` + Constraints *Constraints `json:"constraints,omitempty"` +} + +// Validate checks a fit request. +func (r *FitRequest) Validate() error { + if len(r.Models) == 0 { + return errors.New("models must be non-empty") + } + for i, m := range r.Models { + if strings.TrimSpace(m.HFID) == "" { + return fmt.Errorf("models[%d].hf_id is required", i) + } + if m.Replicas < 0 { + return fmt.Errorf("models[%d].replicas must be >= 0", i) + } + } + // Reuse the single-model invariants for workload + inventory. + probe := PlanRequest{Model: Model{HFID: r.Models[0].HFID}, Workload: r.Workload, Inventory: r.Inventory} + return probe.Validate() +} + +// ApplyDefaults fills request-level defaults and normalizes per-model fields. +func (r *FitRequest) ApplyDefaults() { + base := PlanRequest{Workload: r.Workload, Constraints: r.Constraints} + base.ApplyDefaults() + r.Workload = base.Workload + r.Constraints = base.Constraints + for i := range r.Models { + if r.Models[i].Replicas == 0 { + r.Models[i].Replicas = 1 + } + if r.Models[i].Label == "" { + r.Models[i].Label = r.Models[i].HFID + } + } +} + type Workload struct { MaxConcurrentRequests int `json:"max_concurrent_requests"` MaxContextLength int `json:"max_context_length"` diff --git a/internal/api/response.go b/internal/api/response.go index 5f74832..44d20fe 100644 --- a/internal/api/response.go +++ b/internal/api/response.go @@ -17,6 +17,73 @@ type Error struct { Message string `json:"message"` } +// FitResponse is the body for POST /v1/fit — multiple models packed onto one +// shared GPU inventory with spatial co-tenancy. +type FitResponse struct { + Verdict string `json:"verdict"` + Models []FitModelResult `json:"models"` + Cluster ClusterView `json:"cluster"` + Warnings []string `json:"warnings,omitempty"` + Diagnostics *Diagnostics `json:"diagnostics,omitempty"` + Error *Error `json:"error,omitempty"` +} + +// Fit verdicts. +const ( + VerdictAllFit = "all_fit" // every model placed + VerdictPartialFit = "partial_fit" // some models placed + VerdictNoneFit = "none_fit" // no model placed + VerdictFitNoModels = "no_models" // request had no models +) + +// FitModelResult is the per-model outcome within a fit plan. +type FitModelResult struct { + Label string `json:"label"` + HFID string `json:"hf_id"` + Fitted bool `json:"fitted"` + Reason string `json:"reason,omitempty"` // why it did not fit + Dedicated bool `json:"dedicated,omitempty"` + Replicas int `json:"replicas,omitempty"` + ModelProfile *ModelProfile `json:"model_profile,omitempty"` + // Chosen is the placed configuration (quant, topology, per-GPU memory, + // performance, vLLM command). It is the smallest-footprint memory-feasible + // config; SLO is advisory, not a filter. + Chosen *Configuration `json:"chosen,omitempty"` + Alternatives []Configuration `json:"alternatives,omitempty"` // other feasible configs (advanced) + GPUIDs []string `json:"gpu_ids,omitempty"` // assigned GPU ids (all replicas) +} + +// ClusterView is the cluster-wide placement picture: which models occupy each +// GPU and how full each GPU is. +type ClusterView struct { + GPUs []GPUOccupancy `json:"gpus"` + TotalGPUs int `json:"total_gpus"` + UsedGPUs int `json:"used_gpus"` // GPUs hosting ≥1 model + TotalMemGB float64 `json:"total_mem_gb"` + UsedMemGB float64 `json:"used_mem_gb"` + FreeMemGB float64 `json:"free_mem_gb"` +} + +// GPUOccupancy describes one GPU's tenants and remaining capacity. +type GPUOccupancy struct { + ID string `json:"id"` + Node string `json:"node"` + SKU string `json:"sku"` + CapacityGB float64 `json:"capacity_gb"` // memory_free_gb the user reported + UsableGB float64 `json:"usable_gb"` // capacity × gpu_memory_utilization + Tenants []GPUTenant `json:"tenants,omitempty"` + UsedGB float64 `json:"used_gb"` + FreeGB float64 `json:"free_gb"` // usable − used + Dedicated bool `json:"dedicated,omitempty"` // locked to a single model +} + +// GPUTenant is one model's footprint on a shared GPU. +type GPUTenant struct { + Label string `json:"label"` + HFID string `json:"hf_id"` + UsedGB float64 `json:"used_gb"` // this model's per-GPU memory footprint +} + const ( VerdictFeasible = "feasible" VerdictInfeasibleOOM = "infeasible_oom" diff --git a/internal/server/fit_test.go b/internal/server/fit_test.go new file mode 100644 index 0000000..cb4d300 --- /dev/null +++ b/internal/server/fit_test.go @@ -0,0 +1,163 @@ +package server + +import ( + "bytes" + "encoding/json" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/greenthread-ai/fit/internal/api" + "github.com/greenthread-ai/fit/internal/estimator" + "github.com/greenthread-ai/fit/internal/gpu" + "github.com/greenthread-ai/fit/internal/hf" + "github.com/greenthread-ai/fit/internal/solver" +) + +// fakeHub serves a config.json + safetensors index per repo id. cfgByRepo maps +// a substring of the repo path to (configJSON, totalSizeBytes). +func fakeHub(t *testing.T, cfgByRepo map[string]struct { + cfg string + size string +}) *httptest.Server { + t.Helper() + mux := http.NewServeMux() + mux.HandleFunc("/api/models/", func(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"sha":"sha","gated":false,"private":false,"siblings":[]}`)) + }) + mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + for key, v := range cfgByRepo { + if strings.Contains(r.URL.Path, key) { + switch { + case strings.HasSuffix(r.URL.Path, "/config.json"): + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(v.cfg)) + return + case strings.HasSuffix(r.URL.Path, "/model.safetensors.index.json"): + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"metadata":{"total_size":` + v.size + `},"weight_map":{}}`)) + return + } + } + } + http.NotFound(w, r) + }) + return httptest.NewServer(mux) +} + +func TestPostFit_SpatialCoTenancy(t *testing.T) { + small7B := `{"architectures":["Qwen3ForCausalLM"],"hidden_size":4096,"intermediate_size":12288, + "num_hidden_layers":32,"num_attention_heads":32,"num_key_value_heads":8,"head_dim":128, + "vocab_size":151936,"max_position_embeddings":32768,"torch_dtype":"bfloat16"}` + small3B := `{"architectures":["LlamaForCausalLM"],"hidden_size":2048,"intermediate_size":8192, + "num_hidden_layers":36,"num_attention_heads":16,"num_key_value_heads":2,"head_dim":128, + "vocab_size":151936,"max_position_embeddings":32768,"torch_dtype":"bfloat16"}` + hub := fakeHub(t, map[string]struct{ cfg, size string }{ + "model-a": {small7B, "15000000000"}, + "model-b": {small3B, "6000000000"}, + }) + defer hub.Close() + + consts := estimator.Default() + client := hf.New(hub.URL, "", hf.NewMemoryCache(100)) + cat := gpu.New() + sv := solver.New(client, cat, consts) + h := &Handler{Solver: sv, Catalog: cat, HF: client, Const: consts} + ts := httptest.NewServer(NewRouter(h, RequestID)) + defer ts.Close() + + // One H100 — both small models must share it (spatial co-tenancy). + body := api.FitRequest{ + Models: []api.FitModel{ + {HFID: "org/model-a", Label: "A"}, + {HFID: "org/model-b", Label: "B"}, + }, + Workload: api.Workload{MaxConcurrentRequests: 8, MaxContextLength: 4096}, + Inventory: api.Inventory{Nodes: []api.Node{{ + Name: "n1", Interconnect: "nvlink", + GPUs: []api.GPU{{ID: "g0", Model: "H100-SXM5", MemoryTotalGB: 80, MemoryFreeGB: 80}}, + }}}, + } + buf, _ := json.Marshal(body) + resp, err := http.Post(ts.URL+"/v1/fit", "application/json", bytes.NewReader(buf)) + if err != nil { + t.Fatalf("post: %v", err) + } + defer resp.Body.Close() + if resp.StatusCode != 200 { + t.Fatalf("status %d", resp.StatusCode) + } + var out api.FitResponse + if err := json.NewDecoder(resp.Body).Decode(&out); err != nil { + t.Fatalf("decode: %v", err) + } + if out.Verdict != api.VerdictAllFit { + t.Fatalf("verdict=%s models=%+v", out.Verdict, out.Models) + } + if len(out.Cluster.GPUs) != 1 { + t.Fatalf("expected 1 GPU in cluster view, got %d", len(out.Cluster.GPUs)) + } + g := out.Cluster.GPUs[0] + if len(g.Tenants) != 2 { + t.Fatalf("expected 2 co-tenants on g0, got %d (%+v)", len(g.Tenants), g.Tenants) + } + if g.UsedGB <= 0 || g.FreeGB <= 0 || g.UsedGB > g.UsableGB { + t.Fatalf("bad occupancy math: used=%.1f free=%.1f usable=%.1f", g.UsedGB, g.FreeGB, g.UsableGB) + } + for _, m := range out.Models { + if !m.Fitted || m.Chosen == nil { + t.Fatalf("model %s did not fit: %s", m.Label, m.Reason) + } + } +} + +func TestPostFit_DedicatedAndOverflow(t *testing.T) { + big := `{"architectures":["LlamaForCausalLM"],"hidden_size":8192,"intermediate_size":28672, + "num_hidden_layers":80,"num_attention_heads":64,"num_key_value_heads":8,"head_dim":128, + "vocab_size":128256,"max_position_embeddings":131072,"torch_dtype":"bfloat16"}` + hub := fakeHub(t, map[string]struct{ cfg, size string }{ + "big": {big, "141000000000"}, // ~131 GiB weights → needs multi-GPU + }) + defer hub.Close() + + consts := estimator.Default() + client := hf.New(hub.URL, "", hf.NewMemoryCache(100)) + cat := gpu.New() + sv := solver.New(client, cat, consts) + h := &Handler{Solver: sv, Catalog: cat, HF: client, Const: consts} + ts := httptest.NewServer(NewRouter(h, RequestID)) + defer ts.Close() + + body := api.FitRequest{ + Models: []api.FitModel{ + {HFID: "org/big", Label: "big-fp8", Constraints: &api.Constraints{AllowedQuantizations: []string{"fp8"}}}, + }, + Workload: api.Workload{MaxConcurrentRequests: 16, MaxContextLength: 8192}, + Inventory: api.Inventory{Nodes: []api.Node{{ + Name: "n1", Interconnect: "nvlink", + GPUs: []api.GPU{ + {ID: "g0", Model: "H100-SXM5", MemoryTotalGB: 80, MemoryFreeGB: 80}, + {ID: "g1", Model: "H100-SXM5", MemoryTotalGB: 80, MemoryFreeGB: 80}, + }, + }}}, + } + buf, _ := json.Marshal(body) + resp, err := http.Post(ts.URL+"/v1/fit", "application/json", bytes.NewReader(buf)) + if err != nil { + t.Fatalf("post: %v", err) + } + defer resp.Body.Close() + var out api.FitResponse + if err := json.NewDecoder(resp.Body).Decode(&out); err != nil { + t.Fatalf("decode: %v", err) + } + // 131 GiB fp8 ≈ 70 GiB weights → fits across 2×H100 with TP=2. + if out.Verdict != api.VerdictAllFit { + t.Fatalf("expected all_fit across 2 GPUs, got %s: %+v", out.Verdict, out.Models) + } + if got := len(out.Models[0].GPUIDs); got != 2 { + t.Fatalf("expected big model spread across 2 GPUs, got %d", got) + } +} diff --git a/internal/server/handler.go b/internal/server/handler.go index ddb355b..fd0d8df 100644 --- a/internal/server/handler.go +++ b/internal/server/handler.go @@ -36,6 +36,7 @@ func NewRouter(h *Handler, mws ...func(http.Handler) http.Handler) http.Handler r.Get("/v1/gpus", h.GetGPUs) r.Get("/v1/models/{owner}/{repo}/profile", h.GetProfile) r.Post("/v1/plan", h.PostPlan) + r.Post("/v1/fit", h.PostFit) return r } @@ -115,6 +116,22 @@ func (h *Handler) PostPlan(w http.ResponseWriter, r *http.Request) { writeJSON(w, http.StatusOK, resp) } +func (h *Handler) PostFit(w http.ResponseWriter, r *http.Request) { + var req api.FitRequest + dec := json.NewDecoder(r.Body) + dec.DisallowUnknownFields() + if err := dec.Decode(&req); err != nil { + writeError(w, httpError{Code: http.StatusBadRequest, Body: api.Error{Code: "INVALID_JSON", Message: err.Error()}}) + return + } + if err := req.Validate(); err != nil { + writeError(w, httpError{Code: http.StatusBadRequest, Body: api.Error{Code: "VALIDATION_FAILED", Message: err.Error()}}) + return + } + resp := h.Solver.Fit(r.Context(), req) + writeJSON(w, http.StatusOK, resp) +} + // httpError carries an HTTP status + JSON-serializable body. type httpError struct { Code int diff --git a/internal/solver/fit.go b/internal/solver/fit.go new file mode 100644 index 0000000..9f09e4a --- /dev/null +++ b/internal/solver/fit.go @@ -0,0 +1,242 @@ +package solver + +import ( + "context" + "sort" + "time" + + "github.com/greenthread-ai/fit/internal/api" +) + +// Fit plans several models onto one shared GPU inventory with spatial +// co-tenancy: multiple models may occupy the same GPU when their per-GPU +// memory footprints fit together. Fitment and placement come first — SLO and +// throughput are computed for display but never exclude a placement here. +// +// Algorithm: +// 1. For each model, run the single-model planner (with SLO targets dropped, +// ranked fewest-GPUs-first) and pick the smallest-footprint memory-feasible +// configuration. +// 2. Best-fit-decreasing bin-pack: place larger footprints first, packing each +// model's replicas onto same-SKU GPUs that still have room (best-fit, to +// consolidate co-tenants). Dedicated models take empty GPUs and lock them. +func (s *Solver) Fit(ctx context.Context, req api.FitRequest) api.FitResponse { + start := time.Now() + resp := api.FitResponse{ + Diagnostics: &api.Diagnostics{ + EstimatorVersion: s.Constants.Version, + CalibrationDataSource: s.Constants.CalibrationDataSource, + }, + } + req.ApplyDefaults() + + if len(req.Models) == 0 { + resp.Verdict = api.VerdictFitNoModels + return resp + } + + resolved, gpuWarnings := s.Catalog.Resolve(req.Inventory) + resp.Warnings = append(resp.Warnings, gpuWarnings...) + led := newLedger(resolved, req.Constraints.MaxGPUMemoryUtilization) + + // 1. Per-model config search. + plans := make([]*modelPlan, len(req.Models)) + for i, m := range req.Models { + plans[i] = s.searchModel(ctx, req, m) + } + + // 2. Best-fit decreasing: pack the heaviest total footprint first. + order := make([]*modelPlan, len(plans)) + copy(order, plans) + sort.SliceStable(order, func(i, j int) bool { + return order[i].totalFootprint() > order[j].totalFootprint() + }) + for _, p := range order { + if p.cfg == nil { + continue // config search already failed; leave reason as-is + } + ids, ok := led.placeReplicas(p) + if !ok { + p.reason = "no GPUs with enough free memory after co-tenant packing" + continue + } + p.assigned = ids + } + + // 3. Assemble response in original model order. + allFit, anyFit := true, false + for _, p := range plans { + r := api.FitModelResult{ + Label: p.model.Label, + HFID: p.model.HFID, + Dedicated: p.model.Dedicated, + Replicas: p.model.Replicas, + ModelProfile: p.prof, + } + if len(p.assigned) > 0 { + anyFit = true + r.Fitted = true + r.Chosen = p.cfg + r.GPUIDs = p.assigned + r.Alternatives = trimAlternatives(p.alts, p.cfg) + } else { + allFit = false + r.Reason = p.reason + } + resp.Models = append(resp.Models, r) + } + + resp.Cluster = led.view() + switch { + case allFit: + resp.Verdict = api.VerdictAllFit + case anyFit: + resp.Verdict = api.VerdictPartialFit + default: + resp.Verdict = api.VerdictNoneFit + } + resp.Diagnostics.ElapsedMs = time.Since(start).Milliseconds() + return resp +} + +// modelPlan is the working state for one model during a fit. +type modelPlan struct { + model api.FitModel + prof *api.ModelProfile + cfg *api.Configuration // chosen footprint + alts []api.Configuration + sku string + gpuCount int // GPUs per replica + perGPU float64 // per-GPU memory footprint (GB) + assigned []string + reason string +} + +func (p *modelPlan) totalFootprint() float64 { + return p.perGPU * float64(p.gpuCount) * float64(maxInt(p.model.Replicas, 1)) +} + +// searchModel runs the single-model planner for one model and picks the +// smallest-footprint memory-feasible configuration. SLO targets are dropped so +// memory fit is the only gate (fitment-first); ranking favors fewest GPUs. +func (s *Solver) searchModel(ctx context.Context, req api.FitRequest, m api.FitModel) *modelPlan { + p := &modelPlan{model: m} + + wl := req.Workload + if m.Workload != nil { + wl = *m.Workload + } + wl.SLO = api.SLO{} // fitment-first: don't let SLO reject a placement + cons := req.Constraints + if m.Constraints != nil { + cons = *m.Constraints + } + cons.RankingWeights = &api.RankingWeights{FewestGPUs: 0.7, MostHeadroom: 0.3} + + pr := api.PlanRequest{ + Model: api.Model{HFID: m.HFID, Revision: m.Revision, HFToken: m.HFToken}, + Workload: wl, + Constraints: cons, + Inventory: req.Inventory, + } + res := s.Plan(ctx, pr) + p.prof = res.ModelProfile + if res.Error != nil { + p.reason = res.Error.Code + ": " + res.Error.Message + return p + } + if len(res.Configurations) == 0 { + p.reason = fitInfeasibleReason(res.Verdict) + return p + } + + best := pickFitmentBest(res.Configurations) + p.cfg = best + p.alts = res.Configurations + p.perGPU = best.MemoryPerGPU.TotalUsed + p.gpuCount = len(best.Placement.GPUIDs) + if p.gpuCount == 0 { + p.gpuCount = best.Placement.TensorParallel * maxInt(best.Placement.PipelineParallel, 1) + } + p.sku = skuOfPlacement(req.Inventory, best.Placement.GPUIDs) + return p +} + +// pickFitmentBest re-ranks configs fitment-first: fewest GPUs, then smallest +// per-GPU footprint, then most headroom. +func pickFitmentBest(cfgs []api.Configuration) *api.Configuration { + best := &cfgs[0] + for i := 1; i < len(cfgs); i++ { + c := &cfgs[i] + bn, cn := len(best.Placement.GPUIDs), len(c.Placement.GPUIDs) + switch { + case cn != bn: + if cn < bn { + best = c + } + case c.MemoryPerGPU.TotalUsed != best.MemoryPerGPU.TotalUsed: + if c.MemoryPerGPU.TotalUsed < best.MemoryPerGPU.TotalUsed { + best = c + } + case c.MemoryPerGPU.Headroom > best.MemoryPerGPU.Headroom: + best = c + } + } + return best +} + +// trimAlternatives returns the feasible configs excluding the chosen one (so +// the UI can offer alternates under "advanced"). +func trimAlternatives(all []api.Configuration, chosen *api.Configuration) []api.Configuration { + if chosen == nil { + return nil + } + out := make([]api.Configuration, 0, len(all)) + for i := range all { + if &all[i] == chosen { + continue + } + out = append(out, all[i]) + } + if len(out) == 0 { + return nil + } + return out +} + +func skuOfPlacement(inv api.Inventory, gpuIDs []string) string { + if len(gpuIDs) == 0 { + return "" + } + want := gpuIDs[0] + for _, n := range inv.Nodes { + for _, g := range n.GPUs { + if g.ID == want { + return g.Model + } + } + } + return "" +} + +func fitInfeasibleReason(verdict string) string { + switch verdict { + case api.VerdictInfeasibleOOM: + return "does not fit on any GPU group in the inventory" + case api.VerdictInfeasibleTopology: + return "no valid parallelism topology for the inventory" + case api.VerdictModelUnsupported: + return "model architecture not supported" + case api.VerdictModelUnreachable: + return "model could not be fetched from HuggingFace" + default: + return "no feasible configuration found" + } +} + +func maxInt(a, b int) int { + if a > b { + return a + } + return b +} diff --git a/internal/solver/ledger.go b/internal/solver/ledger.go new file mode 100644 index 0000000..f20b346 --- /dev/null +++ b/internal/solver/ledger.go @@ -0,0 +1,190 @@ +package solver + +import ( + "sort" + + "github.com/greenthread-ai/fit/internal/api" + "github.com/greenthread-ai/fit/internal/gpu" +) + +// ledger tracks per-GPU remaining usable memory as models are packed onto the +// shared inventory. It is the spatial co-tenancy bin-packer's state. +type ledger struct { + gpus []*gpuSlot + order []string // gpu ids in inventory order, for stable views +} + +type gpuSlot struct { + id string + node string + sku string + capacity float64 // memory_free_gb the user reported + usable float64 // capacity × util + used float64 + dedicated bool // locked to a single model + usable0 bool // had a usable budget at all (known SKU, util applied) + tenants []api.GPUTenant +} + +func (g *gpuSlot) remaining() float64 { return g.usable - g.used } + +// newLedger builds the per-GPU budget. Usable = reported free memory × the +// GPU-memory-utilization ceiling; unknown-SKU GPUs get a zero budget so nothing +// packs onto them. +func newLedger(resolved []gpu.ResolvedGPU, util float64) *ledger { + if util <= 0 || util > 1 { + util = 0.95 + } + l := &ledger{} + for _, r := range resolved { + capGB := r.MemoryFreeGB + usable := 0.0 + if !r.UnknownSKU { + usable = capGB * util + } + l.gpus = append(l.gpus, &gpuSlot{ + id: r.ID, + node: r.NodeName, + sku: r.Model, + capacity: capGB, + usable: usable, + usable0: usable > 0, + }) + l.order = append(l.order, r.ID) + } + return l +} + +// placeReplicas places all replicas of a model. Each replica is gpuCount +// same-SKU GPUs; returns the flat list of assigned GPU ids, or false if any +// replica cannot be placed (all-or-nothing per model). +func (l *ledger) placeReplicas(p *modelPlan) ([]string, bool) { + replicas := p.model.Replicas + if replicas < 1 { + replicas = 1 + } + var all []string + // Snapshot for rollback if a later replica fails. + type undo struct { + slot *gpuSlot + ti int // tenant index added + } + var undos []undo + rollback := func() { + for i := len(undos) - 1; i >= 0; i-- { + s := undos[i].slot + s.used -= s.tenants[undos[i].ti].UsedGB + s.tenants = s.tenants[:undos[i].ti] + if s.dedicated && len(s.tenants) == 0 { + s.dedicated = false + } + } + } + + for rep := 0; rep < replicas; rep++ { + slots := l.findGroup(p.sku, p.gpuCount, p.perGPU, p.model.Dedicated) + if slots == nil { + rollback() + return nil, false + } + for _, s := range slots { + s.used += p.perGPU + s.tenants = append(s.tenants, api.GPUTenant{Label: p.model.Label, HFID: p.model.HFID, UsedGB: p.perGPU}) + if p.model.Dedicated { + s.dedicated = true + } + undos = append(undos, undo{slot: s, ti: len(s.tenants) - 1}) + all = append(all, s.id) + } + } + return all, true +} + +// findGroup picks gpuCount same-SKU GPUs (preferring same node, best-fit to +// consolidate co-tenants) that can each hold perGPU more bytes. Dedicated +// placements require empty, non-dedicated GPUs. +func (l *ledger) findGroup(sku string, gpuCount int, perGPU float64, dedicated bool) []*gpuSlot { + if gpuCount <= 0 { + return nil + } + // Eligible candidates. + var cand []*gpuSlot + for _, g := range l.gpus { + if g.sku != sku || !g.usable0 { + continue + } + if g.dedicated { + continue + } + if dedicated && len(g.tenants) > 0 { + continue // dedicated model needs an empty GPU + } + if g.remaining()+1e-9 < perGPU { + continue + } + cand = append(cand, g) + } + if len(cand) < gpuCount { + return nil + } + + // Group by node; prefer a node that can satisfy the whole group (keeps TP + // on one node). Within a node, best-fit: least remaining first, so models + // consolidate onto already-loaded GPUs rather than spreading. + byNode := map[string][]*gpuSlot{} + var nodeOrder []string + for _, g := range cand { + if _, ok := byNode[g.node]; !ok { + nodeOrder = append(nodeOrder, g.node) + } + byNode[g.node] = append(byNode[g.node], g) + } + sort.Strings(nodeOrder) + for _, n := range nodeOrder { + gs := byNode[n] + if len(gs) < gpuCount { + continue + } + sort.SliceStable(gs, func(i, j int) bool { return gs[i].remaining() < gs[j].remaining() }) + return gs[:gpuCount] + } + + // No single node holds the whole group — fall back to cross-node best-fit. + sort.SliceStable(cand, func(i, j int) bool { return cand[i].remaining() < cand[j].remaining() }) + return cand[:gpuCount] +} + +// view renders the cluster-wide occupancy picture. +func (l *ledger) view() api.ClusterView { + cv := api.ClusterView{TotalGPUs: len(l.gpus)} + byID := map[string]*gpuSlot{} + for _, g := range l.gpus { + byID[g.id] = g + } + for _, id := range l.order { + g := byID[id] + occ := api.GPUOccupancy{ + ID: g.id, + Node: g.node, + SKU: g.sku, + CapacityGB: round1(g.capacity), + UsableGB: round1(g.usable), + UsedGB: round1(g.used), + FreeGB: round1(g.remaining()), + Tenants: g.tenants, + Dedicated: g.dedicated, + } + cv.GPUs = append(cv.GPUs, occ) + cv.TotalMemGB += g.capacity + cv.UsedMemGB += g.used + if len(g.tenants) > 0 { + cv.UsedGPUs++ + } + } + cv.TotalMemGB = round1(cv.TotalMemGB) + cv.UsedMemGB = round1(cv.UsedMemGB) + cv.FreeMemGB = round1(cv.TotalMemGB - cv.UsedMemGB) + return cv +} + +func round1(v float64) float64 { return float64(int(v*10+0.5)) / 10 } diff --git a/internal/webui/dist/assets/index-B_jf50bD.css b/internal/webui/dist/assets/index-B_jf50bD.css new file mode 100644 index 0000000..a94dd30 --- /dev/null +++ b/internal/webui/dist/assets/index-B_jf50bD.css @@ -0,0 +1 @@ +*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}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-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;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}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background:50 33% 97%;--foreground:30 10% 12%;--card:48 30% 98%;--card-foreground:30 10% 12%;--popover:48 30% 98%;--popover-foreground:30 10% 12%;--primary:30 12% 16%;--primary-foreground:50 33% 97%;--secondary:45 20% 92%;--secondary-foreground:30 10% 18%;--muted:45 18% 92%;--muted-foreground:30 8% 40%;--accent:45 22% 90%;--accent-foreground:30 10% 14%;--destructive:0 70% 45%;--destructive-foreground:50 33% 97%;--border:40 15% 86%;--input:40 15% 86%;--ring:30 10% 30%;--radius:.625rem;--brand-green:141 100% 31%;--brand-green-soft:141 60% 92%;--warn:32 90% 42%;--warn-soft:40 95% 92%}.dark{--background:30 8% 8%;--foreground:40 15% 92%;--card:30 8% 10%;--card-foreground:40 15% 92%;--popover:30 8% 10%;--popover-foreground:40 15% 92%;--primary:40 15% 92%;--primary-foreground:30 10% 12%;--secondary:30 6% 16%;--secondary-foreground:40 15% 92%;--muted:30 6% 16%;--muted-foreground:35 8% 62%;--accent:30 6% 18%;--accent-foreground:40 15% 92%;--destructive:0 60% 45%;--destructive-foreground:40 15% 92%;--border:30 6% 18%;--input:30 6% 18%;--ring:35 8% 70%;--brand-green:141 70% 50%;--brand-green-soft:141 30% 18%;--warn:38 90% 60%;--warn-soft:36 30% 18%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.absolute{position:absolute}.relative{position:relative}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-2{right:.5rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.ml-1{margin-left:.25rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-72{max-height:18rem}.max-h-96{max-height:24rem}.min-h-\[40vh\]{min-height:40vh}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-40{width:10rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[130px\]{width:130px}.w-\[440px\]{width:440px}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;user-select:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-all{word-break:break-all}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-border{border-color:hsl(var(--border))}.border-destructive\/40{border-color:hsl(var(--destructive) / .4)}.border-foreground{border-color:hsl(var(--foreground))}.border-foreground\/30{border-color:hsl(var(--foreground) / .3)}.border-input{border-color:hsl(var(--input))}.border-transparent{border-color:#0000}.border-warn\/30{border-color:hsl(var(--warn) / .3)}.bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.bg-background{background-color:hsl(var(--background))}.bg-border{background-color:hsl(var(--border))}.bg-brand-soft{background-color:hsl(var(--brand-green-soft))}.bg-card{background-color:hsl(var(--card))}.bg-card\/40{background-color:hsl(var(--card) / .4)}.bg-card\/50{background-color:hsl(var(--card) / .5)}.bg-cyan-500{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity,1))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/80{background-color:hsl(var(--destructive) / .8)}.bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity,1))}.bg-foreground{background-color:hsl(var(--foreground))}.bg-foreground\/40{background-color:hsl(var(--foreground) / .4)}.bg-fuchsia-500{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity,1))}.bg-indigo-500{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity,1))}.bg-lime-600{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity,1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/50{background-color:hsl(var(--muted-foreground) / .5)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/40{background-color:hsl(var(--muted) / .4)}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity,1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity,1))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.bg-violet-500{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity,1))}.bg-warn{background-color:hsl(var(--warn))}.bg-warn-soft{background-color:hsl(var(--warn-soft))}.bg-warn-soft\/40{background-color:hsl(var(--warn-soft) / .4)}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-5{padding:1.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-2{padding-left:.5rem}.pl-6{padding-left:1.5rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-normal{letter-spacing:0}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.text-background{color:hsl(var(--background))}.text-brand{color:hsl(var(--brand-green))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/70{color:hsl(var(--foreground) / .7)}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-warn{color:hsl(var(--warn))}.underline-offset-4{text-underline-offset:4px}.accent-foreground{accent-color:hsl(var(--foreground))}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.outline-none{outline-offset:2px;outline:2px solid #0000}.outline{outline-style:solid}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}@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))}}@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))}}.animate-in{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.fade-in-0{--tw-enter-opacity:0}.zoom-in-95{--tw-enter-scale:.95}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-foreground\/40:hover{border-color:hsl(var(--foreground) / .4)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:underline:hover{text-decoration-line:underline}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus-visible\:outline-none:focus-visible{outline-offset:2px;outline:2px solid #0000}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group.toaster .group-\[\.toaster\]\:border-border{border-color:hsl(var(--border))}.group.toast .group-\[\.toast\]\:bg-muted{background-color:hsl(var(--muted))}.group.toast .group-\[\.toast\]\:bg-primary{background-color:hsl(var(--primary))}.group.toaster .group-\[\.toaster\]\:bg-background{background-color:hsl(var(--background))}.group.toast .group-\[\.toast\]\:text-muted-foreground{color:hsl(var(--muted-foreground))}.group.toast .group-\[\.toast\]\:text-primary-foreground{color:hsl(var(--primary-foreground))}.group.toaster .group-\[\.toaster\]\:text-foreground{color:hsl(var(--foreground))}.group.toaster .group-\[\.toaster\]\:shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:-.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:-.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.data-\[state\=open\]\:animate-in[data-state=open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-\[state\=closed\]\:animate-out[data-state=closed]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.dark\:hue-rotate-180:is(.dark *){--tw-hue-rotate:hue-rotate(180deg);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.dark\:invert:is(.dark *){--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (width>=640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=768px){.md\:inline-block{display:inline-block}}@media (width>=1024px){.lg\:p-8{padding:2rem}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media (width>=1280px){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0} diff --git a/internal/webui/dist/assets/index-BiJS6m-o.css b/internal/webui/dist/assets/index-BiJS6m-o.css deleted file mode 100644 index 66269ba..0000000 --- a/internal/webui/dist/assets/index-BiJS6m-o.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}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-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;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}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background:50 33% 97%;--foreground:30 10% 12%;--card:48 30% 98%;--card-foreground:30 10% 12%;--popover:48 30% 98%;--popover-foreground:30 10% 12%;--primary:30 12% 16%;--primary-foreground:50 33% 97%;--secondary:45 20% 92%;--secondary-foreground:30 10% 18%;--muted:45 18% 92%;--muted-foreground:30 8% 40%;--accent:45 22% 90%;--accent-foreground:30 10% 14%;--destructive:0 70% 45%;--destructive-foreground:50 33% 97%;--border:40 15% 86%;--input:40 15% 86%;--ring:30 10% 30%;--radius:.625rem;--brand-green:141 100% 31%;--brand-green-soft:141 60% 92%;--warn:32 90% 42%;--warn-soft:40 95% 92%}.dark{--background:30 8% 8%;--foreground:40 15% 92%;--card:30 8% 10%;--card-foreground:40 15% 92%;--popover:30 8% 10%;--popover-foreground:40 15% 92%;--primary:40 15% 92%;--primary-foreground:30 10% 12%;--secondary:30 6% 16%;--secondary-foreground:40 15% 92%;--muted:30 6% 16%;--muted-foreground:35 8% 62%;--accent:30 6% 18%;--accent-foreground:40 15% 92%;--destructive:0 60% 45%;--destructive-foreground:40 15% 92%;--border:30 6% 18%;--input:30 6% 18%;--ring:35 8% 70%;--brand-green:141 70% 50%;--brand-green-soft:141 30% 18%;--warn:38 90% 60%;--warn-soft:36 30% 18%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.absolute{position:absolute}.relative{position:relative}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-2{right:.5rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-1\.5{margin-left:.375rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-72{max-height:18rem}.max-h-96{max-height:24rem}.min-h-\[420px\]{min-height:420px}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[130px\]{width:130px}.w-\[440px\]{width:440px}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;user-select:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[24px_80px_1fr_auto\]{grid-template-columns:24px 80px 1fr auto}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-6{gap:1.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-border{border-color:hsl(var(--border))}.border-destructive\/30{border-color:hsl(var(--destructive) / .3)}.border-foreground{border-color:hsl(var(--foreground))}.border-foreground\/30{border-color:hsl(var(--foreground) / .3)}.border-input{border-color:hsl(var(--input))}.border-muted-foreground\/40{border-color:hsl(var(--muted-foreground) / .4)}.border-transparent{border-color:#0000}.border-warn\/30{border-color:hsl(var(--warn) / .3)}.bg-accent\/40{background-color:hsl(var(--accent) / .4)}.bg-background{background-color:hsl(var(--background))}.bg-background\/60{background-color:hsl(var(--background) / .6)}.bg-border{background-color:hsl(var(--border))}.bg-brand-soft{background-color:hsl(var(--brand-green-soft))}.bg-card{background-color:hsl(var(--card))}.bg-card\/40{background-color:hsl(var(--card) / .4)}.bg-card\/50{background-color:hsl(var(--card) / .5)}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/5{background-color:hsl(var(--destructive) / .05)}.bg-destructive\/80{background-color:hsl(var(--destructive) / .8)}.bg-foreground{background-color:hsl(var(--foreground))}.bg-foreground\/40{background-color:hsl(var(--foreground) / .4)}.bg-foreground\/60{background-color:hsl(var(--foreground) / .6)}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/50{background-color:hsl(var(--muted-foreground) / .5)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/40{background-color:hsl(var(--muted) / .4)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-warn{background-color:hsl(var(--warn))}.bg-warn-soft{background-color:hsl(var(--warn-soft))}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-5{padding:1.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-3{padding-bottom:.75rem}.pl-2{padding-left:.5rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-3{padding-top:.75rem}.pt-5{padding-top:1.25rem}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-normal{letter-spacing:0}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.text-background{color:hsl(var(--background))}.text-brand{color:hsl(var(--brand-green))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-warn{color:hsl(var(--warn))}.underline-offset-4{text-underline-offset:4px}.accent-foreground{accent-color:hsl(var(--foreground))}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.shadow{--tw-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.outline-none{outline-offset:2px;outline:2px solid #0000}.outline{outline-style:solid}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.ring-foreground\/15{--tw-ring-color:hsl(var(--foreground) / .15)}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}@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))}}@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))}}.animate-in{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.fade-in-0{--tw-enter-opacity:0}.zoom-in-95{--tw-enter-scale:.95}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-foreground\/40:hover{border-color:hsl(var(--foreground) / .4)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:underline:hover{text-decoration-line:underline}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus-visible\:outline-none:focus-visible{outline-offset:2px;outline:2px solid #0000}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group.toaster .group-\[\.toaster\]\:border-border{border-color:hsl(var(--border))}.group.toast .group-\[\.toast\]\:bg-muted{background-color:hsl(var(--muted))}.group.toast .group-\[\.toast\]\:bg-primary{background-color:hsl(var(--primary))}.group.toaster .group-\[\.toaster\]\:bg-background{background-color:hsl(var(--background))}.group.toast .group-\[\.toast\]\:text-muted-foreground{color:hsl(var(--muted-foreground))}.group.toast .group-\[\.toast\]\:text-primary-foreground{color:hsl(var(--primary-foreground))}.group.toaster .group-\[\.toaster\]\:text-foreground{color:hsl(var(--foreground))}.group.toaster .group-\[\.toaster\]\:shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:-.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:-.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.data-\[state\=open\]\:animate-in[data-state=open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-\[state\=closed\]\:animate-out[data-state=closed]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.dark\:hue-rotate-180:is(.dark *){--tw-hue-rotate:hue-rotate(180deg);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.dark\:invert:is(.dark *){--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (width>=768px){.md\:inline{display:inline}}@media (width>=1024px){.lg\:p-8{padding:2rem}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0} diff --git a/internal/webui/dist/assets/index-CUm5LUen.js b/internal/webui/dist/assets/index-CUm5LUen.js new file mode 100644 index 0000000..d5dfbf6 --- /dev/null +++ b/internal/webui/dist/assets/index-CUm5LUen.js @@ -0,0 +1,50 @@ +var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var l=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function ee(e,t){return E(e.type,t,e.props)}function D(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function O(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var k=/\/+/g;function A(e,t){return typeof e==`object`&&e&&e.key!=null?O(``+e.key):t.toString(36)}function j(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function M(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,M(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+A(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(k,`$&/`)+`/`),M(o,r,i,``,function(e){return e})):o!=null&&(D(o)&&(o=ee(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(k,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u{t.exports=l()})),d=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,D());else{var t=n(l);t!==null&&A(x,t.startTime-e)}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-Tt&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&A(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?D():S=!1}}}var D;if(typeof y==`function`)D=function(){y(ee)};else if(typeof MessageChannel<`u`){var O=new MessageChannel,k=O.port2;O.port1.onmessage=ee,D=function(){k.postMessage(null)}}else D=function(){_(ee,0)};function A(t,n){C=_(function(){t(e.unstable_now())},n)}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(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,A(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,D()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),f=o(((e,t)=>{t.exports=d()})),p=o((e=>{var t=u();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=p()})),h=o((e=>{var t=f(),n=u(),r=m();function i(e){var t=`https://react.dev/errors/`+e;if(1re||(e.current=ne[re],ne[re]=null,re--)}function L(e,t){re++,ne[re]=e.current,e.current=t}var oe=ie(null),se=ie(null),ce=ie(null),le=ie(null);function ue(e,t){switch(L(ce,t),L(se,e),L(oe,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}ae(oe),L(oe,e)}function de(){ae(oe),ae(se),ae(ce)}function fe(e){e.memoizedState!==null&&L(le,e);var t=oe.current,n=Hd(t,e.type);t!==n&&(L(se,e),L(oe,n))}function pe(e){se.current===e&&(ae(oe),ae(se)),le.current===e&&(ae(le),Qf._currentValue=te)}var me,he;function ge(e){if(me===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);me=t&&t[1]||``,he=-1)`:-1i||c[r]!==l[i]){var u=` +`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{_e=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?ge(n):``}function ye(e,t){switch(e.tag){case 26:case 27:case 5:return ge(e.type);case 16:return ge(`Lazy`);case 13:return e.child!==t&&t!==null?ge(`Suspense Fallback`):ge(`Suspense`);case 19:return ge(`SuspenseList`);case 0:case 15:return ve(e.type,!1);case 11:return ve(e.type.render,!1);case 1:return ve(e.type,!0);case 31:return ge(`Activity`);default:return``}}function be(e){try{var t=``,n=null;do t+=ye(e,n),n=e,e=e.return;while(e);return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}var xe=Object.prototype.hasOwnProperty,Se=t.unstable_scheduleCallback,Ce=t.unstable_cancelCallback,we=t.unstable_shouldYield,Te=t.unstable_requestPaint,Ee=t.unstable_now,De=t.unstable_getCurrentPriorityLevel,Oe=t.unstable_ImmediatePriority,ke=t.unstable_UserBlockingPriority,Ae=t.unstable_NormalPriority,je=t.unstable_LowPriority,Me=t.unstable_IdlePriority,Ne=t.log,Pe=t.unstable_setDisableYieldValue,Fe=null,Ie=null;function Le(e){if(typeof Ne==`function`&&Pe(e),Ie&&typeof Ie.setStrictMode==`function`)try{Ie.setStrictMode(Fe,e)}catch{}}var Re=Math.clz32?Math.clz32:R,ze=Math.log,Be=Math.LN2;function R(e){return e>>>=0,e===0?32:31-(ze(e)/Be|0)|0}var Ve=256,He=262144,Ue=4194304;function We(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ge(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=We(n))):i=We(o):i=We(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=We(n))):i=We(o)):i=We(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function Ke(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function qe(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Je(){var e=Ue;return Ue<<=1,!(Ue&62914560)&&(Ue=4194304),e}function Ye(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Xe(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Ze(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),on=!1;if(an)try{var sn={};Object.defineProperty(sn,`passive`,{get:function(){on=!0}}),window.addEventListener(`test`,sn,sn),window.removeEventListener(`test`,sn,sn)}catch{on=!1}var cn=null,ln=null,un=null;function dn(){if(un)return un;var e,t=ln,n=t.length,r,i=`value`in cn?cn.value:cn.textContent,a=i.length;for(e=0;e=Un),Kn=` `,qn=!1;function Jn(e,t){switch(e){case`keyup`:return Vn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function Yn(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var Xn=!1;function Zn(e,t){switch(e){case`compositionend`:return Yn(t);case`keypress`:return t.which===32?(qn=!0,Kn):null;case`textInput`:return e=t.data,e===Kn&&qn?null:e;default:return null}}function Qn(e,t){if(Xn)return e===`compositionend`||!Hn&&Jn(e,t)?(e=dn(),un=ln=cn=null,Xn=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=br(n)}}function Sr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Sr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Cr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Ft(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ft(e.document)}return t}function wr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Tr=an&&`documentMode`in document&&11>=document.documentMode,Er=null,Dr=null,Or=null,kr=!1;function Ar(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;kr||Er==null||Er!==Ft(r)||(r=Er,`selectionStart`in r&&wr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Or&&yr(Or,r)||(Or=r,r=Ed(Dr,`onSelect`),0>=o,i-=o,Si=1<<32-Re(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),U&&wi(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),U&&wi(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return U&&wi(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),U&&wi(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===D&&wa(l)===r.type){n(e,r.sibling),c=a(r,o.props),ja(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===y?(c=li(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=ci(o.type,o.key,o.props,null,e.mode,c),ja(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=fi(o,e.mode,c),c.return=e,e=c}return s(e);case D:return o=wa(o),b(e,r,o,c)}if(P(o))return h(e,r,o,c);if(j(o)){if(l=j(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,Aa(o),c);if(o.$$typeof===C)return b(e,r,Qi(e,o),c);Ma(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=ui(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{ka=0;var i=b(e,t,n,r);return Oa=null,i}catch(t){if(t===va||t===ba)throw t;var a=ii(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Pa=Na(!0),Fa=Na(!1),Ia=!1;function La(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ra(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function za(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Ba(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,K&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=ti(e),ei(e,null,n),t}return Zr(e,r,t,n),ti(e)}function Va(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,$e(e,n)}}function Ha(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Ua=!1;function Wa(){if(Ua){var e=la;if(e!==null)throw e}}function Ga(e,t,n,r){Ua=!1;var i=e.updateQueue;Ia=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Y&f)===f:(r&f)===f){f!==0&&f===ca&&(Ua=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(m=g.payload,typeof m==`function`){d=m.call(_,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=g.payload,f=typeof m==`function`?m.call(_,d,f):m,f==null)break a;d=h({},d,f);break a;case 2:Ia=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Gl|=o,e.lanes=o,e.memoizedState=d}}function Ka(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function qa(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=F.T,s={};F.T=s,Ms(e,!1,t,n);try{var c=i(),l=F.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?js(e,t,fa(c,r),pu(e)):js(e,t,r,pu(e))}catch(n){js(e,t,{then:function(){},status:`rejected`,reason:n},pu())}finally{I.p=a,o!==null&&s.types!==null&&(o.types=s.types),F.T=o}}function xs(){}function Ss(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=Cs(e).queue;bs(e,a,t,te,n===null?xs:function(){return ws(e),n(r)})}function Cs(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:te,baseState:te,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:No,lastRenderedState:te},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:No,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function ws(e){var t=Cs(e);t.next===null&&(t=e.alternate.memoizedState),js(e,t.next.queue,{},pu())}function Ts(){return Zi(Qf)}function Es(){return Oo().memoizedState}function Ds(){return Oo().memoizedState}function Os(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=pu();e=za(n);var r=Ba(t,e,n);r!==null&&(hu(r,t,n),Va(r,t,n)),t={cache:ia()},e.payload=t;return}t=t.return}}function ks(e,t,n){var r=pu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Ns(e)?Ps(t,n):(n=Qr(e,t,n,r),n!==null&&(hu(n,e,r),Fs(n,t,r)))}function As(e,t,n){js(e,t,n,pu())}function js(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ns(e))Ps(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,vr(s,o))return Zr(e,t,i,0),q===null&&Xr(),!1}catch{}if(n=Qr(e,t,i,r),n!==null)return hu(n,e,r),Fs(n,t,r),!0}return!1}function Ms(e,t,n,r){if(r={lane:2,revertLane:dd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Ns(e)){if(t)throw Error(i(479))}else t=Qr(e,n,r,2),t!==null&&hu(t,e,2)}function Ns(e){var t=e.alternate;return e===W||t!==null&&t===W}function Ps(e,t){fo=uo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Fs(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,$e(e,n)}}var Is={readContext:Zi,use:jo,useCallback:vo,useContext:vo,useEffect:vo,useImperativeHandle:vo,useLayoutEffect:vo,useInsertionEffect:vo,useMemo:vo,useReducer:vo,useRef:vo,useState:vo,useDebugValue:vo,useDeferredValue:vo,useTransition:vo,useSyncExternalStore:vo,useId:vo,useHostTransitionStatus:vo,useFormState:vo,useActionState:vo,useOptimistic:vo,useMemoCache:vo,useCacheRefresh:vo};Is.useEffectEvent=vo;var Ls={readContext:Zi,use:jo,useCallback:function(e,t){return Do().memoizedState=[e,t===void 0?null:t],e},useContext:Zi,useEffect:ss,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),as(4194308,4,ps.bind(null,t,e),n)},useLayoutEffect:function(e,t){return as(4194308,4,e,t)},useInsertionEffect:function(e,t){as(4,2,e,t)},useMemo:function(e,t){var n=Do();t=t===void 0?null:t;var r=e();if(po){Le(!0);try{e()}finally{Le(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Do();if(n!==void 0){var i=n(t);if(po){Le(!0);try{n(t)}finally{Le(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=ks.bind(null,W,e),[r.memoizedState,e]},useRef:function(e){var t=Do();return e={current:e},t.memoizedState=e},useState:function(e){e=Uo(e);var t=e.queue,n=As.bind(null,W,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:hs,useDeferredValue:function(e,t){return vs(Do(),e,t)},useTransition:function(){var e=Uo(!1);return e=bs.bind(null,W,e.queue,!0,!1),Do().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=W,a=Do();if(U){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),q===null)throw Error(i(349));Y&127||Ro(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,ss(Bo.bind(null,r,o,e),[e]),r.flags|=2048,rs(9,{destroy:void 0},zo.bind(null,r,o,n,t),null),n},useId:function(){var e=Do(),t=q.identifierPrefix;if(U){var n=Ci,r=Si;n=(r&~(1<<32-Re(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=mo++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[ot]=t,o[st]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Pd(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&jc(t)}}return Ic(t),Mc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&jc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=ce.current,Li(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=ki,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[ot]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Md(e.nodeValue,n)),e||Pi(t,!0)}else e=Bd(e).createTextNode(r),e[ot]=t,t.stateNode=e}return Ic(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Li(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[ot]=t}else Ri(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Ic(t),e=!1}else n=zi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(ao(t),t):(ao(t),null);if(t.flags&128)throw Error(i(558))}return Ic(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=Li(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[ot]=t}else Ri(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Ic(t),a=!1}else a=zi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(ao(t),t):(ao(t),null)}return ao(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Pc(t,t.updateQueue),Ic(t),null);case 4:return de(),e===null&&Sd(t.stateNode.containerInfo),Ic(t),null;case 10:return Gi(t.type),Ic(t),null;case 19:if(ae(oo),r=t.memoizedState,r===null)return Ic(t),null;if(a=(t.flags&128)!=0,o=r.rendering,o===null)if(a)Fc(r,!1);else{if(Wl!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=so(e),o!==null){for(t.flags|=128,Fc(r,!1),e=o.updateQueue,t.updateQueue=e,Pc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)si(n,e),n=n.sibling;return L(oo,oo.current&1|2),U&&wi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Ee()>tu&&(t.flags|=128,a=!0,Fc(r,!1),t.lanes=4194304)}else{if(!a)if(e=so(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Pc(t,e),Fc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!U)return Ic(t),null}else 2*Ee()-r.renderingStartTime>tu&&n!==536870912&&(t.flags|=128,a=!0,Fc(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(Ic(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Ee(),e.sibling=null,n=oo.current,L(oo,a?n&1|2:n&1),U&&wi(t,r.treeForkCount),e);case 22:case 23:return ao(t),Qa(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(Ic(t),t.subtreeFlags&6&&(t.flags|=8192)):Ic(t),n=t.updateQueue,n!==null&&Pc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&ae(ma),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Gi(ra),Ic(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function Rc(e,t){switch(Di(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Gi(ra),de(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return pe(t),null;case 31:if(t.memoizedState!==null){if(ao(t),t.alternate===null)throw Error(i(340));Ri()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(ao(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Ri()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ae(oo),null;case 4:return de(),null;case 10:return Gi(t.type),null;case 22:case 23:return ao(t),Qa(),e!==null&&ae(ma),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Gi(ra),null;case 25:return null;default:return null}}function zc(e,t){switch(Di(t),t.tag){case 3:Gi(ra),de();break;case 26:case 27:case 5:pe(t);break;case 4:de();break;case 31:t.memoizedState!==null&&ao(t);break;case 13:ao(t);break;case 19:ae(oo);break;case 10:Gi(t.type);break;case 22:case 23:ao(t),Qa(),e!==null&&ae(ma);break;case 24:Gi(ra)}}function Bc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Vc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Hc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{qa(t,n)}catch(t){Z(e,e.return,t)}}}function Uc(e,t,n){n.props=Ws(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Wc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Gc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}function Kc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Z(e,e.return,t)}}function qc(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[st]=t}catch(t){Z(e,e.return,t)}}function Jc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function Yc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Jc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Xc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=V));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Xc(e,t,n),e=e.sibling;e!==null;)Xc(e,t,n),e=e.sibling}function Zc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Zc(e,t,n),e=e.sibling;e!==null;)Zc(e,t,n),e=e.sibling}function Qc(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[ot]=e,t[st]=n}catch(t){Z(e,e.return,t)}}var $c=!1,el=!1,tl=!1,nl=typeof WeakSet==`function`?WeakSet:Set,rl=null;function il(e,t){if(e=e.containerInfo,Rd=sp,e=Cr(e),wr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(zd={focusedElem:e,selectionRange:n},sp=!1,rl=t;rl!==null;)if(t=rl,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,rl=e;else for(;rl!==null;){switch(t=rl,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Pd(o,r,n),o[ot]=e,yt(o),r=o;break a;case`link`:var s=Vf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=xr(s,h),v=xr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,F.T=null,n=lu,lu=null;var o=au,s=su;if(iu=0,ou=au=null,su=0,K&6)throw Error(i(331));var c=K;if(K|=4,Pl(o.current),El(o,o.current,s,n),K=c,id(0,!1),Ie&&typeof Ie.onPostCommitFiberRoot==`function`)try{Ie.onPostCommitFiberRoot(Fe,o)}catch{}return!0}finally{I.p=a,F.T=r,Vu(e,t)}}function Wu(e,t,n){t=mi(n,t),t=Xs(e.stateNode,t,2),e=Ba(e,t,2),e!==null&&(Xe(e,2),rd(e))}function Z(e,t,n){if(e.tag===3)Wu(e,e,n);else for(;t!==null;){if(t.tag===3){Wu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(ru===null||!ru.has(r))){e=mi(n,e),n=Zs(2),r=Ba(t,n,2),r!==null&&(Qs(n,r,t,e),Xe(r,2),rd(r));break}}t=t.return}}function Gu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Rl;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Hl=!0,i.add(n),e=Ku.bind(null,e,t,n),t.then(e,e))}function Ku(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,q===e&&(Y&n)===n&&(Wl===4||Wl===3&&(Y&62914560)===Y&&300>Ee()-$l?!(K&2)&&Su(e,0):ql|=n,Yl===Y&&(Yl=0)),rd(e)}function qu(e,t){t===0&&(t=Je()),e=$r(e,t),e!==null&&(Xe(e,t),rd(e))}function Ju(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),qu(e,n)}function Yu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),qu(e,n)}function Xu(e,t){return Se(e,t)}var Zu=null,Qu=null,$u=!1,ed=!1,td=!1,nd=0;function rd(e){e!==Qu&&e.next===null&&(Qu===null?Zu=Qu=e:Qu=Qu.next=e),ed=!0,$u||($u=!0,ud())}function id(e,t){if(!td&&ed){td=!0;do for(var n=!1,r=Zu;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-Re(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,ld(r,a))}else a=Y,a=Ge(r,r===q?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||Ke(r,a)||(n=!0,ld(r,a));r=r.next}while(n);td=!1}}function ad(){od()}function od(){ed=$u=!1;var e=0;nd!==0&&Gd()&&(e=nd);for(var t=Ee(),n=null,r=Zu;r!==null;){var i=r.next,a=sd(r,t);a===0?(r.next=null,n===null?Zu=i:n.next=i,i===null&&(Qu=n)):(n=r,(e!==0||a&3)&&(ed=!0)),r=i}iu!==0&&iu!==5||id(e,!1),nd!==0&&(nd=0)}function sd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&Id(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=B(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),yt(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+B(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+B(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+B(n.imageSizes)+`"]`)):i+=`[href="`+B(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=h({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),yt(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+B(r)+`"][href="`+B(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=h({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),yt(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=vt(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=h({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);yt(c),Pd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=vt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),yt(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=vt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),yt(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var a=(a=ce.current)?gf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=vt(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var o=vt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(jf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),o||Nf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=vt(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Af(e){return`href="`+B(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return h({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Pd(t,`link`,n),yt(t),e.head.appendChild(t))}function Pf(e){return`[src="`+B(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+B(n.href)+`"]`);if(r)return t.instance=r,yt(r),r;var a=h({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),yt(r),Pd(r,`style`,a),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Af(n.href);var o=e.querySelector(jf(a));if(o)return t.state.loading|=4,t.instance=o,yt(o),o;r=Mf(n),(a=mf.get(a))&&Rf(r,a),o=(e.ownerDocument||e).createElement(`link`),yt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Pd(o,`link`,r),t.state.loading|=4,Lf(o,n.precedence,e),t.instance=o;case`script`:return o=Pf(n.src),(a=e.querySelector(Ff(o)))?(t.instance=a,yt(a),a):(r=n,(a=mf.get(o))&&(r=h({},n),zf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),yt(a),Pd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,yt(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),yt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()})),_=c(u(),1),v=g(),y=c(m(),1),b=e=>{switch(e){case`success`:return C;case`info`:return T;case`warning`:return w;case`error`:return E;default:return null}},x=Array(12).fill(0),S=({visible:e,className:t})=>_.createElement(`div`,{className:[`sonner-loading-wrapper`,t].filter(Boolean).join(` `),"data-visible":e},_.createElement(`div`,{className:`sonner-spinner`},x.map((e,t)=>_.createElement(`div`,{className:`sonner-loading-bar`,key:`spinner-bar-${t}`})))),C=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},_.createElement(`path`,{fillRule:`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z`,clipRule:`evenodd`})),w=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,height:`20`,width:`20`},_.createElement(`path`,{fillRule:`evenodd`,d:`M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z`,clipRule:`evenodd`})),T=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},_.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z`,clipRule:`evenodd`})),E=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},_.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z`,clipRule:`evenodd`})),ee=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`},_.createElement(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),_.createElement(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})),D=()=>{let[e,t]=_.useState(document.hidden);return _.useEffect(()=>{let e=()=>{t(document.hidden)};return document.addEventListener(`visibilitychange`,e),()=>window.removeEventListener(`visibilitychange`,e)},[]),e},O=1,k=new class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)}),this.publish=e=>{this.subscribers.forEach(t=>t(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{let{message:t,...n}=e,r=typeof e?.id==`number`||e.id?.length>0?e.id:O++,i=this.toasts.find(e=>e.id===r),a=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),i?this.toasts=this.toasts.map(n=>n.id===r?(this.publish({...n,...e,id:r,title:t}),{...n,...e,id:r,dismissible:a,title:t}):n):this.addToast({title:t,...n,dismissible:a,id:r}),r},this.dismiss=e=>(this.dismissedToasts.add(e),e||this.toasts.forEach(e=>{this.subscribers.forEach(t=>t({id:e.id,dismiss:!0}))}),this.subscribers.forEach(t=>t({id:e,dismiss:!0})),e),this.message=(e,t)=>this.create({...t,message:e}),this.error=(e,t)=>this.create({...t,message:e,type:`error`}),this.success=(e,t)=>this.create({...t,type:`success`,message:e}),this.info=(e,t)=>this.create({...t,type:`info`,message:e}),this.warning=(e,t)=>this.create({...t,type:`warning`,message:e}),this.loading=(e,t)=>this.create({...t,type:`loading`,message:e}),this.promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:`loading`,message:t.loading,description:typeof t.description==`function`?void 0:t.description}));let r=e instanceof Promise?e:e(),i=n!==void 0,a,o=r.then(async e=>{if(a=[`resolve`,e],_.isValidElement(e))i=!1,this.create({id:n,type:`default`,message:e});else if(j(e)&&!e.ok){i=!1;let r=typeof t.error==`function`?await t.error(`HTTP error! status: ${e.status}`):t.error,a=typeof t.description==`function`?await t.description(`HTTP error! status: ${e.status}`):t.description;this.create({id:n,type:`error`,message:r,description:a})}else if(t.success!==void 0){i=!1;let r=typeof t.success==`function`?await t.success(e):t.success,a=typeof t.description==`function`?await t.description(e):t.description;this.create({id:n,type:`success`,message:r,description:a})}}).catch(async e=>{if(a=[`reject`,e],t.error!==void 0){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description;this.create({id:n,type:`error`,message:r,description:a})}}).finally(()=>{var e;i&&(this.dismiss(n),n=void 0),(e=t.finally)==null||e.call(t)}),s=()=>new Promise((e,t)=>o.then(()=>a[0]===`reject`?t(a[1]):e(a[1])).catch(t));return typeof n!=`string`&&typeof n!=`number`?{unwrap:s}:Object.assign(n,{unwrap:s})},this.custom=(e,t)=>{let n=t?.id||O++;return this.create({jsx:e(n),id:n,...t}),n},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},A=(e,t)=>{let n=t?.id||O++;return k.addToast({title:e,...t,id:n}),n},j=e=>e&&typeof e==`object`&&`ok`in e&&typeof e.ok==`boolean`&&`status`in e&&typeof e.status==`number`,M=Object.assign(A,{success:k.success,info:k.info,warning:k.warning,error:k.error,custom:k.custom,message:k.message,promise:k.promise,dismiss:k.dismiss,loading:k.loading},{getHistory:()=>k.toasts,getToasts:()=>k.getActiveToasts()});function N(e,{insertAt:t}={}){if(!e||typeof document>`u`)return;let n=document.head||document.getElementsByTagName(`head`)[0],r=document.createElement(`style`);r.type=`text/css`,t===`top`&&n.firstChild?n.insertBefore(r,n.firstChild):n.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}N(`:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)} +`);function P(e){return e.label!==void 0}var F=3,I=`32px`,te=`16px`,ne=4e3,re=356,ie=14,ae=20,L=200;function oe(...e){return e.filter(Boolean).join(` `)}function se(e){let[t,n]=e.split(`-`),r=[];return t&&r.push(t),n&&r.push(n),r}var ce=e=>{let{invert:t,toast:n,unstyled:r,interacting:i,setHeights:a,visibleToasts:o,heights:s,index:c,toasts:l,expanded:u,removeToast:d,defaultRichColors:f,closeButton:p,style:m,cancelButtonStyle:h,actionButtonStyle:g,className:v=``,descriptionClassName:y=``,duration:x,position:C,gap:w,loadingIcon:T,expandByDefault:E,classNames:O,icons:k,closeButtonAriaLabel:A=`Close toast`,pauseWhenPageIsHidden:j}=e,[M,N]=_.useState(null),[F,I]=_.useState(null),[te,re]=_.useState(!1),[ie,ce]=_.useState(!1),[le,ue]=_.useState(!1),[de,fe]=_.useState(!1),[pe,me]=_.useState(!1),[he,ge]=_.useState(0),[_e,ve]=_.useState(0),ye=_.useRef(n.duration||x||ne),be=_.useRef(null),xe=_.useRef(null),Se=c===0,Ce=c+1<=o,we=n.type,Te=n.dismissible!==!1,Ee=n.className||``,De=n.descriptionClassName||``,Oe=_.useMemo(()=>s.findIndex(e=>e.toastId===n.id)||0,[s,n.id]),ke=_.useMemo(()=>n.closeButton??p,[n.closeButton,p]),Ae=_.useMemo(()=>n.duration||x||ne,[n.duration,x]),je=_.useRef(0),Me=_.useRef(0),Ne=_.useRef(0),Pe=_.useRef(null),[Fe,Ie]=C.split(`-`),Le=_.useMemo(()=>s.reduce((e,t,n)=>n>=Oe?e:e+t.height,0),[s,Oe]),Re=D(),ze=n.invert||t,Be=we===`loading`;Me.current=_.useMemo(()=>Oe*w+Le,[Oe,Le]),_.useEffect(()=>{ye.current=Ae},[Ae]),_.useEffect(()=>{re(!0)},[]),_.useEffect(()=>{let e=xe.current;if(e){let t=e.getBoundingClientRect().height;return ve(t),a(e=>[{toastId:n.id,height:t,position:n.position},...e]),()=>a(e=>e.filter(e=>e.toastId!==n.id))}},[a,n.id]),_.useLayoutEffect(()=>{if(!te)return;let e=xe.current,t=e.style.height;e.style.height=`auto`;let r=e.getBoundingClientRect().height;e.style.height=t,ve(r),a(e=>e.find(e=>e.toastId===n.id)?e.map(e=>e.toastId===n.id?{...e,height:r}:e):[{toastId:n.id,height:r,position:n.position},...e])},[te,n.title,n.description,a,n.id]);let R=_.useCallback(()=>{ce(!0),ge(Me.current),a(e=>e.filter(e=>e.toastId!==n.id)),setTimeout(()=>{d(n)},L)},[n,d,a,Me]);_.useEffect(()=>{if(n.promise&&we===`loading`||n.duration===1/0||n.type===`loading`)return;let e;return u||i||j&&Re?(()=>{if(Ne.current{var e;(e=n.onAutoClose)==null||e.call(n,n),R()},ye.current)),()=>clearTimeout(e)},[u,i,n,we,j,Re,R]),_.useEffect(()=>{n.delete&&R()},[R,n.delete]);function Ve(){return k!=null&&k.loading?_.createElement(`div`,{className:oe(O?.loader,n?.classNames?.loader,`sonner-loader`),"data-visible":we===`loading`},k.loading):T?_.createElement(`div`,{className:oe(O?.loader,n?.classNames?.loader,`sonner-loader`),"data-visible":we===`loading`},T):_.createElement(S,{className:oe(O?.loader,n?.classNames?.loader),visible:we===`loading`})}return _.createElement(`li`,{tabIndex:0,ref:xe,className:oe(v,Ee,O?.toast,n?.classNames?.toast,O?.default,O?.[we],n?.classNames?.[we]),"data-sonner-toast":``,"data-rich-colors":n.richColors??f,"data-styled":!(n.jsx||n.unstyled||r),"data-mounted":te,"data-promise":!!n.promise,"data-swiped":pe,"data-removed":ie,"data-visible":Ce,"data-y-position":Fe,"data-x-position":Ie,"data-index":c,"data-front":Se,"data-swiping":le,"data-dismissible":Te,"data-type":we,"data-invert":ze,"data-swipe-out":de,"data-swipe-direction":F,"data-expanded":!!(u||E&&te),style:{"--index":c,"--toasts-before":c,"--z-index":l.length-c,"--offset":`${ie?he:Me.current}px`,"--initial-height":E?`auto`:`${_e}px`,...m,...n.style},onDragEnd:()=>{ue(!1),N(null),Pe.current=null},onPointerDown:e=>{Be||!Te||(be.current=new Date,ge(Me.current),e.target.setPointerCapture(e.pointerId),e.target.tagName!==`BUTTON`&&(ue(!0),Pe.current={x:e.clientX,y:e.clientY}))},onPointerUp:()=>{var e;if(de||!Te)return;Pe.current=null;let t=Number(xe.current?.style.getPropertyValue(`--swipe-amount-x`).replace(`px`,``)||0),r=Number(xe.current?.style.getPropertyValue(`--swipe-amount-y`).replace(`px`,``)||0),i=new Date().getTime()-be.current?.getTime(),a=M===`x`?t:r,o=Math.abs(a)/i;if(Math.abs(a)>=ae||o>.11){ge(Me.current),(e=n.onDismiss)==null||e.call(n,n),I(M===`x`?t>0?`right`:`left`:r>0?`down`:`up`),R(),fe(!0),me(!1);return}ue(!1),N(null)},onPointerMove:t=>{var n,r;if(!Pe.current||!Te||window.getSelection()?.toString().length>0)return;let i=t.clientY-Pe.current.y,a=t.clientX-Pe.current.x,o=e.swipeDirections??se(C);!M&&(Math.abs(a)>1||Math.abs(i)>1)&&N(Math.abs(a)>Math.abs(i)?`x`:`y`);let s={x:0,y:0};M===`y`?(o.includes(`top`)||o.includes(`bottom`))&&(o.includes(`top`)&&i<0||o.includes(`bottom`)&&i>0)&&(s.y=i):M===`x`&&(o.includes(`left`)||o.includes(`right`))&&(o.includes(`left`)&&a<0||o.includes(`right`)&&a>0)&&(s.x=a),(Math.abs(s.x)>0||Math.abs(s.y)>0)&&me(!0),(n=xe.current)==null||n.style.setProperty(`--swipe-amount-x`,`${s.x}px`),(r=xe.current)==null||r.style.setProperty(`--swipe-amount-y`,`${s.y}px`)}},ke&&!n.jsx?_.createElement(`button`,{"aria-label":A,"data-disabled":Be,"data-close-button":!0,onClick:Be||!Te?()=>{}:()=>{var e;R(),(e=n.onDismiss)==null||e.call(n,n)},className:oe(O?.closeButton,n?.classNames?.closeButton)},k?.close??ee):null,n.jsx||(0,_.isValidElement)(n.title)?n.jsx?n.jsx:typeof n.title==`function`?n.title():n.title:_.createElement(_.Fragment,null,we||n.icon||n.promise?_.createElement(`div`,{"data-icon":``,className:oe(O?.icon,n?.classNames?.icon)},n.promise||n.type===`loading`&&!n.icon?n.icon||Ve():null,n.type===`loading`?null:n.icon||k?.[we]||b(we)):null,_.createElement(`div`,{"data-content":``,className:oe(O?.content,n?.classNames?.content)},_.createElement(`div`,{"data-title":``,className:oe(O?.title,n?.classNames?.title)},typeof n.title==`function`?n.title():n.title),n.description?_.createElement(`div`,{"data-description":``,className:oe(y,De,O?.description,n?.classNames?.description)},typeof n.description==`function`?n.description():n.description):null),(0,_.isValidElement)(n.cancel)?n.cancel:n.cancel&&P(n.cancel)?_.createElement(`button`,{"data-button":!0,"data-cancel":!0,style:n.cancelButtonStyle||h,onClick:e=>{var t,r;P(n.cancel)&&Te&&((r=(t=n.cancel).onClick)==null||r.call(t,e),R())},className:oe(O?.cancelButton,n?.classNames?.cancelButton)},n.cancel.label):null,(0,_.isValidElement)(n.action)?n.action:n.action&&P(n.action)?_.createElement(`button`,{"data-button":!0,"data-action":!0,style:n.actionButtonStyle||g,onClick:e=>{var t,r;P(n.action)&&((r=(t=n.action).onClick)==null||r.call(t,e),!e.defaultPrevented&&R())},className:oe(O?.actionButton,n?.classNames?.actionButton)},n.action.label):null))};function le(){if(typeof window>`u`||typeof document>`u`)return`ltr`;let e=document.documentElement.getAttribute(`dir`);return e===`auto`||!e?window.getComputedStyle(document.documentElement).direction:e}function ue(e,t){let n={};return[e,t].forEach((e,t)=>{let r=t===1,i=r?`--mobile-offset`:`--offset`,a=r?te:I;function o(e){[`top`,`right`,`bottom`,`left`].forEach(t=>{n[`${i}-${t}`]=typeof e==`number`?`${e}px`:e})}typeof e==`number`||typeof e==`string`?o(e):typeof e==`object`?[`top`,`right`,`bottom`,`left`].forEach(t=>{e[t]===void 0?n[`${i}-${t}`]=a:n[`${i}-${t}`]=typeof e[t]==`number`?`${e[t]}px`:e[t]}):o(a)}),n}var de=(0,_.forwardRef)(function(e,t){let{invert:n,position:r=`bottom-right`,hotkey:i=[`altKey`,`KeyT`],expand:a,closeButton:o,className:s,offset:c,mobileOffset:l,theme:u=`light`,richColors:d,duration:f,style:p,visibleToasts:m=F,toastOptions:h,dir:g=le(),gap:v=ie,loadingIcon:b,icons:x,containerAriaLabel:S=`Notifications`,pauseWhenPageIsHidden:C}=e,[w,T]=_.useState([]),E=_.useMemo(()=>Array.from(new Set([r].concat(w.filter(e=>e.position).map(e=>e.position)))),[w,r]),[ee,D]=_.useState([]),[O,A]=_.useState(!1),[j,M]=_.useState(!1),[N,P]=_.useState(u===`system`?typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`:u),I=_.useRef(null),te=i.join(`+`).replace(/Key/g,``).replace(/Digit/g,``),ne=_.useRef(null),ae=_.useRef(!1),L=_.useCallback(e=>{T(t=>{var n;return(n=t.find(t=>t.id===e.id))!=null&&n.delete||k.dismiss(e.id),t.filter(({id:t})=>t!==e.id)})},[]);return _.useEffect(()=>k.subscribe(e=>{if(e.dismiss){T(t=>t.map(t=>t.id===e.id?{...t,delete:!0}:t));return}setTimeout(()=>{y.flushSync(()=>{T(t=>{let n=t.findIndex(t=>t.id===e.id);return n===-1?[e,...t]:[...t.slice(0,n),{...t[n],...e},...t.slice(n+1)]})})})}),[]),_.useEffect(()=>{if(u!==`system`){P(u);return}if(u===`system`&&(window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?P(`dark`):P(`light`)),typeof window>`u`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`);try{e.addEventListener(`change`,({matches:e})=>{P(e?`dark`:`light`)})}catch{e.addListener(({matches:e})=>{try{P(e?`dark`:`light`)}catch(e){console.error(e)}})}},[u]),_.useEffect(()=>{w.length<=1&&A(!1)},[w]),_.useEffect(()=>{let e=e=>{var t,n;i.every(t=>e[t]||e.code===t)&&(A(!0),(t=I.current)==null||t.focus()),e.code===`Escape`&&(document.activeElement===I.current||(n=I.current)!=null&&n.contains(document.activeElement))&&A(!1)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[i]),_.useEffect(()=>{if(I.current)return()=>{ne.current&&(ne.current.focus({preventScroll:!0}),ne.current=null,ae.current=!1)}},[I.current]),_.createElement(`section`,{ref:t,"aria-label":`${S} ${te}`,tabIndex:-1,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-atomic":`false`,suppressHydrationWarning:!0},E.map((t,r)=>{let[i,u]=t.split(`-`);return w.length?_.createElement(`ol`,{key:t,dir:g===`auto`?le():g,tabIndex:-1,ref:I,className:s,"data-sonner-toaster":!0,"data-theme":N,"data-y-position":i,"data-lifted":O&&w.length>1&&!a,"data-x-position":u,style:{"--front-toast-height":`${ee[0]?.height||0}px`,"--width":`${re}px`,"--gap":`${v}px`,...p,...ue(c,l)},onBlur:e=>{ae.current&&!e.currentTarget.contains(e.relatedTarget)&&(ae.current=!1,ne.current&&=(ne.current.focus({preventScroll:!0}),null))},onFocus:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||ae.current||(ae.current=!0,ne.current=e.relatedTarget)},onMouseEnter:()=>A(!0),onMouseMove:()=>A(!0),onMouseLeave:()=>{j||A(!1)},onDragEnd:()=>A(!1),onPointerDown:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||M(!0)},onPointerUp:()=>M(!1)},w.filter(e=>!e.position&&r===0||e.position===t).map((r,i)=>_.createElement(ce,{key:r.id,icons:x,index:i,toast:r,defaultRichColors:d,duration:h?.duration??f,className:h?.className,descriptionClassName:h?.descriptionClassName,invert:n,visibleToasts:m,closeButton:h?.closeButton??o,interacting:j,position:t,style:h?.style,unstyled:h?.unstyled,classNames:h?.classNames,cancelButtonStyle:h?.cancelButtonStyle,actionButtonStyle:h?.actionButtonStyle,removeToast:L,toasts:w.filter(e=>e.position==r.position),heights:ee.filter(e=>e.position==r.position),setHeights:D,expandByDefault:a,gap:v,loadingIcon:b,expanded:O,pauseWhenPageIsHidden:C,swipeDirections:e.swipeDirections}))):null}))}),fe=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),pe=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),me={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},he=(0,_.forwardRef)(({color:e=`currentColor`,size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>(0,_.createElement)(`svg`,{ref:c,...me,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:pe(`lucide`,i),...s},[...o.map(([e,t])=>(0,_.createElement)(e,t)),...Array.isArray(a)?a:[a]])),ge=(e,t)=>{let n=(0,_.forwardRef)(({className:n,...r},i)=>(0,_.createElement)(he,{ref:i,iconNode:t,className:pe(`lucide-${fe(e)}`,n),...r}));return n.displayName=`${e}`,n},_e=ge(`Check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),ve=ge(`ChevronDown`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),ye=ge(`ChevronUp`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),be=ge(`Copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),xe=ge(`EyeOff`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),Se=ge(`Eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Ce=ge(`Info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),we=ge(`Moon`,[[`path`,{d:`M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z`,key:`a7tn18`}]]),Te=ge(`Plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),Ee=ge(`RotateCcw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),De=ge(`Settings2`,[[`path`,{d:`M20 7h-9`,key:`3s1dr2`}],[`path`,{d:`M14 17H5`,key:`gfn3mx`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}],[`circle`,{cx:`7`,cy:`7`,r:`3`,key:`dfmy0x`}]]),Oe=ge(`Share2`,[[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}],[`circle`,{cx:`6`,cy:`12`,r:`3`,key:`w7nqdw`}],[`circle`,{cx:`18`,cy:`19`,r:`3`,key:`1xt0gg`}],[`line`,{x1:`8.59`,x2:`15.42`,y1:`13.51`,y2:`17.49`,key:`47mynk`}],[`line`,{x1:`15.41`,x2:`8.59`,y1:`6.51`,y2:`10.49`,key:`1n3mei`}]]),ke=ge(`Sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),Ae=ge(`Trash2`,[[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6`,key:`4alrt4`}],[`path`,{d:`M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2`,key:`v07s0e`}],[`line`,{x1:`10`,x2:`10`,y1:`11`,y2:`17`,key:`1uufr5`}],[`line`,{x1:`14`,x2:`14`,y1:`11`,y2:`17`,key:`xtxkd`}]]),je=ge(`X`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);async function Me(e,t){let n=await fetch(`/api/v1/fit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),signal:t}),r=await n.json();if(!n.ok){let e=r.error?`${r.error.code}: ${r.error.message}`:`HTTP ${n.status}`;throw Error(e)}return r}async function Ne(){return(await(await fetch(`/api/v1/gpus`)).json()).gpus}var Pe=`fit:`;function Fe(e,t){try{let n=localStorage.getItem(Pe+e);return n?JSON.parse(n):t}catch{return t}}function Ie(e,t){try{localStorage.setItem(Pe+e,JSON.stringify(t))}catch{}}function Le(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function Re(...e){return t=>{let n=!1,r=e.map(e=>{let r=Le(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;t{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),R=o(((e,t)=>{t.exports=Be()}))(),Ve=Symbol.for(`react.lazy`),He=_.use;function Ue(e){return typeof e==`object`&&!!e&&`then`in e}function We(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===Ve&&`_payload`in e&&Ue(e._payload)}function Ge(e){let t=qe(e),n=_.forwardRef((e,n)=>{let{children:r,...i}=e;We(r)&&typeof He==`function`&&(r=He(r._payload));let a=_.Children.toArray(r),o=a.find(Ye);if(o){let e=o.props.children,r=a.map(t=>t===o?_.Children.count(e)>1?_.Children.only(null):_.isValidElement(e)?e.props.children:null:t);return(0,R.jsx)(t,{...i,ref:n,children:_.isValidElement(e)?_.cloneElement(e,void 0,r):null})}return(0,R.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}var Ke=Ge(`Slot`);function qe(e){let t=_.forwardRef((e,t)=>{let{children:n,...r}=e;if(We(n)&&typeof He==`function`&&(n=He(n._payload)),_.isValidElement(n)){let e=Ze(n),i=Xe(r,n.props);return n.type!==_.Fragment&&(i.ref=t?Re(t,e):e),_.cloneElement(n,i)}return _.Children.count(n)>1?_.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Je=Symbol(`radix.slottable`);function Ye(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===Je}function Xe(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function Ze(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function Qe(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e==`boolean`?`${e}`:e===0?`0`:e,tt=$e,nt=(e,t)=>n=>{if(t?.variants==null)return tt(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=et(t)||et(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return tt(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},rt=`-`,it=e=>{let t=ct(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{let n=e.split(rt);return n[0]===``&&n.length!==1&&n.shift(),at(n,t)||st(e)},getConflictingClassGroupIds:(e,t)=>{let i=n[e]||[];return t&&r[e]?[...i,...r[e]]:i}}},at=(e,t)=>{if(e.length===0)return t.classGroupId;let n=e[0],r=t.nextPart.get(n),i=r?at(e.slice(1),r):void 0;if(i)return i;if(t.validators.length===0)return;let a=e.join(rt);return t.validators.find(({validator:e})=>e(a))?.classGroupId},ot=/^\[(.+)\]$/,st=e=>{if(ot.test(e)){let t=ot.exec(e)[1],n=t?.substring(0,t.indexOf(`:`));if(n)return`arbitrary..`+n}},ct=e=>{let{theme:t,prefix:n}=e,r={nextPart:new Map,validators:[]};return ft(Object.entries(e.classGroups),n).forEach(([e,n])=>{lt(n,r,e,t)}),r},lt=(e,t,n,r)=>{e.forEach(e=>{if(typeof e==`string`){let r=e===``?t:ut(t,e);r.classGroupId=n;return}if(typeof e==`function`){if(dt(e)){lt(e(r),t,n,r);return}t.validators.push({validator:e,classGroupId:n});return}Object.entries(e).forEach(([e,i])=>{lt(i,ut(t,e),n,r)})})},ut=(e,t)=>{let n=e;return t.split(rt).forEach(e=>{n.nextPart.has(e)||n.nextPart.set(e,{nextPart:new Map,validators:[]}),n=n.nextPart.get(e)}),n},dt=e=>e.isThemeGetter,ft=(e,t)=>t?e.map(([e,n])=>[e,n.map(e=>typeof e==`string`?t+e:typeof e==`object`?Object.fromEntries(Object.entries(e).map(([e,n])=>[t+e,n])):e)]):e,pt=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=new Map,r=new Map,i=(i,a)=>{n.set(i,a),t++,t>e&&(t=0,r=n,n=new Map)};return{get(e){let t=n.get(e);if(t!==void 0)return t;if((t=r.get(e))!==void 0)return i(e,t),t},set(e,t){n.has(e)?n.set(e,t):i(e,t)}}},mt=`!`,ht=e=>{let{separator:t,experimentalParseClassName:n}=e,r=t.length===1,i=t[0],a=t.length,o=e=>{let n=[],o=0,s=0,c;for(let l=0;ls?c-s:void 0}};return n?e=>n({className:e,parseClassName:o}):o},gt=e=>{if(e.length<=1)return e;let t=[],n=[];return e.forEach(e=>{e[0]===`[`?(t.push(...n.sort(),e),n=[]):n.push(e)}),t.push(...n.sort()),t},_t=e=>({cache:pt(e.cacheSize),parseClassName:ht(e),...it(e)}),vt=/\s+/,yt=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i}=t,a=[],o=e.trim().split(vt),s=``;for(let e=o.length-1;e>=0;--e){let t=o[e],{modifiers:c,hasImportantModifier:l,baseClassName:u,maybePostfixModifierPosition:d}=n(t),f=!!d,p=r(f?u.substring(0,d):u);if(!p){if(!f){s=t+(s.length>0?` `+s:s);continue}if(p=r(u),!p){s=t+(s.length>0?` `+s:s);continue}f=!1}let m=gt(c).join(`:`),h=l?m+mt:m,g=h+p;if(a.includes(g))continue;a.push(g);let _=i(p,f);for(let e=0;e<_.length;++e){let t=_[e];a.push(h+t)}s=t+(s.length>0?` `+s:s)}return s};function bt(){let e=0,t,n,r=``;for(;e{if(typeof e==`string`)return e;let t,n=``;for(let r=0;rt(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)}function s(e){let t=r(e);if(t)return t;let a=yt(e,n);return i(e,a),a}return function(){return a(bt.apply(null,arguments))}}var z=e=>{let t=t=>t[e]||[];return t.isThemeGetter=!0,t},Ct=/^\[(?:([a-z-]+):)?(.+)\]$/i,wt=/^\d+\/\d+$/,Tt=new Set([`px`,`full`,`screen`]),Et=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Dt=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ot=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,kt=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,At=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,jt=e=>Nt(e)||Tt.has(e)||wt.test(e),Mt=e=>Gt(e,`length`,Kt),Nt=e=>!!e&&!Number.isNaN(Number(e)),Pt=e=>Gt(e,`number`,Nt),Ft=e=>!!e&&Number.isInteger(Number(e)),It=e=>e.endsWith(`%`)&&Nt(e.slice(0,-1)),B=e=>Ct.test(e),Lt=e=>Et.test(e),Rt=new Set([`length`,`size`,`percentage`]),zt=e=>Gt(e,Rt,qt),Bt=e=>Gt(e,`position`,qt),Vt=new Set([`image`,`url`]),Ht=e=>Gt(e,Vt,Yt),Ut=e=>Gt(e,``,Jt),Wt=()=>!0,Gt=(e,t,n)=>{let r=Ct.exec(e);return r?r[1]?typeof t==`string`?r[1]===t:t.has(r[1]):n(r[2]):!1},Kt=e=>Dt.test(e)&&!Ot.test(e),qt=()=>!1,Jt=e=>kt.test(e),Yt=e=>At.test(e),Xt=St(()=>{let e=z(`colors`),t=z(`spacing`),n=z(`blur`),r=z(`brightness`),i=z(`borderColor`),a=z(`borderRadius`),o=z(`borderSpacing`),s=z(`borderWidth`),c=z(`contrast`),l=z(`grayscale`),u=z(`hueRotate`),d=z(`invert`),f=z(`gap`),p=z(`gradientColorStops`),m=z(`gradientColorStopPositions`),h=z(`inset`),g=z(`margin`),_=z(`opacity`),v=z(`padding`),y=z(`saturate`),b=z(`scale`),x=z(`sepia`),S=z(`skew`),C=z(`space`),w=z(`translate`),T=()=>[`auto`,`contain`,`none`],E=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],ee=()=>[`auto`,B,t],D=()=>[B,t],O=()=>[``,jt,Mt],k=()=>[`auto`,Nt,B],A=()=>[`bottom`,`center`,`left`,`left-bottom`,`left-top`,`right`,`right-bottom`,`right-top`,`top`],j=()=>[`solid`,`dashed`,`dotted`,`double`,`none`],M=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],N=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`],P=()=>[``,`0`,B],F=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],I=()=>[Nt,B];return{cacheSize:500,separator:`:`,theme:{colors:[Wt],spacing:[jt,Mt],blur:[`none`,``,Lt,B],brightness:I(),borderColor:[e],borderRadius:[`none`,``,`full`,Lt,B],borderSpacing:D(),borderWidth:O(),contrast:I(),grayscale:P(),hueRotate:I(),invert:P(),gap:D(),gradientColorStops:[e],gradientColorStopPositions:[It,Mt],inset:ee(),margin:ee(),opacity:I(),padding:D(),saturate:I(),scale:I(),sepia:P(),skew:I(),space:D(),translate:D()},classGroups:{aspect:[{aspect:[`auto`,`square`,`video`,B]}],container:[`container`],columns:[{columns:[Lt]}],"break-after":[{"break-after":F()}],"break-before":[{"break-before":F()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:[...A(),B]}],overflow:[{overflow:E()}],"overflow-x":[{"overflow-x":E()}],"overflow-y":[{"overflow-y":E()}],overscroll:[{overscroll:T()}],"overscroll-x":[{"overscroll-x":T()}],"overscroll-y":[{"overscroll-y":T()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:[h]}],"inset-x":[{"inset-x":[h]}],"inset-y":[{"inset-y":[h]}],start:[{start:[h]}],end:[{end:[h]}],top:[{top:[h]}],right:[{right:[h]}],bottom:[{bottom:[h]}],left:[{left:[h]}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[`auto`,Ft,B]}],basis:[{basis:ee()}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`wrap`,`wrap-reverse`,`nowrap`]}],flex:[{flex:[`1`,`auto`,`initial`,`none`,B]}],grow:[{grow:P()}],shrink:[{shrink:P()}],order:[{order:[`first`,`last`,`none`,Ft,B]}],"grid-cols":[{"grid-cols":[Wt]}],"col-start-end":[{col:[`auto`,{span:[`full`,Ft,B]},B]}],"col-start":[{"col-start":k()}],"col-end":[{"col-end":k()}],"grid-rows":[{"grid-rows":[Wt]}],"row-start-end":[{row:[`auto`,{span:[Ft,B]},B]}],"row-start":[{"row-start":k()}],"row-end":[{"row-end":k()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":[`auto`,`min`,`max`,`fr`,B]}],"auto-rows":[{"auto-rows":[`auto`,`min`,`max`,`fr`,B]}],gap:[{gap:[f]}],"gap-x":[{"gap-x":[f]}],"gap-y":[{"gap-y":[f]}],"justify-content":[{justify:[`normal`,...N()]}],"justify-items":[{"justify-items":[`start`,`end`,`center`,`stretch`]}],"justify-self":[{"justify-self":[`auto`,`start`,`end`,`center`,`stretch`]}],"align-content":[{content:[`normal`,...N(),`baseline`]}],"align-items":[{items:[`start`,`end`,`center`,`baseline`,`stretch`]}],"align-self":[{self:[`auto`,`start`,`end`,`center`,`stretch`,`baseline`]}],"place-content":[{"place-content":[...N(),`baseline`]}],"place-items":[{"place-items":[`start`,`end`,`center`,`baseline`,`stretch`]}],"place-self":[{"place-self":[`auto`,`start`,`end`,`center`,`stretch`]}],p:[{p:[v]}],px:[{px:[v]}],py:[{py:[v]}],ps:[{ps:[v]}],pe:[{pe:[v]}],pt:[{pt:[v]}],pr:[{pr:[v]}],pb:[{pb:[v]}],pl:[{pl:[v]}],m:[{m:[g]}],mx:[{mx:[g]}],my:[{my:[g]}],ms:[{ms:[g]}],me:[{me:[g]}],mt:[{mt:[g]}],mr:[{mr:[g]}],mb:[{mb:[g]}],ml:[{ml:[g]}],"space-x":[{"space-x":[C]}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":[C]}],"space-y-reverse":[`space-y-reverse`],w:[{w:[`auto`,`min`,`max`,`fit`,`svw`,`lvw`,`dvw`,B,t]}],"min-w":[{"min-w":[B,t,`min`,`max`,`fit`]}],"max-w":[{"max-w":[B,t,`none`,`full`,`min`,`max`,`fit`,`prose`,{screen:[Lt]},Lt]}],h:[{h:[B,t,`auto`,`min`,`max`,`fit`,`svh`,`lvh`,`dvh`]}],"min-h":[{"min-h":[B,t,`min`,`max`,`fit`,`svh`,`lvh`,`dvh`]}],"max-h":[{"max-h":[B,t,`min`,`max`,`fit`,`svh`,`lvh`,`dvh`]}],size:[{size:[B,t,`auto`,`min`,`max`,`fit`]}],"font-size":[{text:[`base`,Lt,Mt]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`,Pt]}],"font-family":[{font:[Wt]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`,B]}],"line-clamp":[{"line-clamp":[`none`,Nt,Pt]}],leading:[{leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`,jt,B]}],"list-image":[{"list-image":[`none`,B]}],"list-style-type":[{list:[`none`,`disc`,`decimal`,B]}],"list-style-position":[{list:[`inside`,`outside`]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[_]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[_]}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...j(),`wavy`]}],"text-decoration-thickness":[{decoration:[`auto`,`from-font`,jt,Mt]}],"underline-offset":[{"underline-offset":[`auto`,jt,B]}],"text-decoration-color":[{decoration:[e]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:D()}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,B]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,B]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-opacity":[{"bg-opacity":[_]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:[...A(),Bt]}],"bg-repeat":[{bg:[`no-repeat`,{repeat:[``,`x`,`y`,`round`,`space`]}]}],"bg-size":[{bg:[`auto`,`cover`,`contain`,zt]}],"bg-image":[{bg:[`none`,{"gradient-to":[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},Ht]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[m]}],"gradient-via-pos":[{via:[m]}],"gradient-to-pos":[{to:[m]}],"gradient-from":[{from:[p]}],"gradient-via":[{via:[p]}],"gradient-to":[{to:[p]}],rounded:[{rounded:[a]}],"rounded-s":[{"rounded-s":[a]}],"rounded-e":[{"rounded-e":[a]}],"rounded-t":[{"rounded-t":[a]}],"rounded-r":[{"rounded-r":[a]}],"rounded-b":[{"rounded-b":[a]}],"rounded-l":[{"rounded-l":[a]}],"rounded-ss":[{"rounded-ss":[a]}],"rounded-se":[{"rounded-se":[a]}],"rounded-ee":[{"rounded-ee":[a]}],"rounded-es":[{"rounded-es":[a]}],"rounded-tl":[{"rounded-tl":[a]}],"rounded-tr":[{"rounded-tr":[a]}],"rounded-br":[{"rounded-br":[a]}],"rounded-bl":[{"rounded-bl":[a]}],"border-w":[{border:[s]}],"border-w-x":[{"border-x":[s]}],"border-w-y":[{"border-y":[s]}],"border-w-s":[{"border-s":[s]}],"border-w-e":[{"border-e":[s]}],"border-w-t":[{"border-t":[s]}],"border-w-r":[{"border-r":[s]}],"border-w-b":[{"border-b":[s]}],"border-w-l":[{"border-l":[s]}],"border-opacity":[{"border-opacity":[_]}],"border-style":[{border:[...j(),`hidden`]}],"divide-x":[{"divide-x":[s]}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":[s]}],"divide-y-reverse":[`divide-y-reverse`],"divide-opacity":[{"divide-opacity":[_]}],"divide-style":[{divide:j()}],"border-color":[{border:[i]}],"border-color-x":[{"border-x":[i]}],"border-color-y":[{"border-y":[i]}],"border-color-s":[{"border-s":[i]}],"border-color-e":[{"border-e":[i]}],"border-color-t":[{"border-t":[i]}],"border-color-r":[{"border-r":[i]}],"border-color-b":[{"border-b":[i]}],"border-color-l":[{"border-l":[i]}],"divide-color":[{divide:[i]}],"outline-style":[{outline:[``,...j()]}],"outline-offset":[{"outline-offset":[jt,B]}],"outline-w":[{outline:[jt,Mt]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:O()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[_]}],"ring-offset-w":[{"ring-offset":[jt,Mt]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:[``,`inner`,`none`,Lt,Ut]}],"shadow-color":[{shadow:[Wt]}],opacity:[{opacity:[_]}],"mix-blend":[{"mix-blend":[...M(),`plus-lighter`,`plus-darker`]}],"bg-blend":[{"bg-blend":M()}],filter:[{filter:[``,`none`]}],blur:[{blur:[n]}],brightness:[{brightness:[r]}],contrast:[{contrast:[c]}],"drop-shadow":[{"drop-shadow":[``,`none`,Lt,B]}],grayscale:[{grayscale:[l]}],"hue-rotate":[{"hue-rotate":[u]}],invert:[{invert:[d]}],saturate:[{saturate:[y]}],sepia:[{sepia:[x]}],"backdrop-filter":[{"backdrop-filter":[``,`none`]}],"backdrop-blur":[{"backdrop-blur":[n]}],"backdrop-brightness":[{"backdrop-brightness":[r]}],"backdrop-contrast":[{"backdrop-contrast":[c]}],"backdrop-grayscale":[{"backdrop-grayscale":[l]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[u]}],"backdrop-invert":[{"backdrop-invert":[d]}],"backdrop-opacity":[{"backdrop-opacity":[_]}],"backdrop-saturate":[{"backdrop-saturate":[y]}],"backdrop-sepia":[{"backdrop-sepia":[x]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":[o]}],"border-spacing-x":[{"border-spacing-x":[o]}],"border-spacing-y":[{"border-spacing-y":[o]}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[`none`,`all`,``,`colors`,`opacity`,`shadow`,`transform`,B]}],duration:[{duration:I()}],ease:[{ease:[`linear`,`in`,`out`,`in-out`,B]}],delay:[{delay:I()}],animate:[{animate:[`none`,`spin`,`ping`,`pulse`,`bounce`,B]}],transform:[{transform:[``,`gpu`,`none`]}],scale:[{scale:[b]}],"scale-x":[{"scale-x":[b]}],"scale-y":[{"scale-y":[b]}],rotate:[{rotate:[Ft,B]}],"translate-x":[{"translate-x":[w]}],"translate-y":[{"translate-y":[w]}],"skew-x":[{"skew-x":[S]}],"skew-y":[{"skew-y":[S]}],"transform-origin":[{origin:[`center`,`top`,`top-right`,`right`,`bottom-right`,`bottom`,`bottom-left`,`left`,`top-left`,B]}],accent:[{accent:[`auto`,e]}],appearance:[{appearance:[`none`,`auto`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,B]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":[`none`,`auto`]}],resize:[{resize:[`none`,`y`,`x`,``]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scroll-m":[{"scroll-m":D()}],"scroll-mx":[{"scroll-mx":D()}],"scroll-my":[{"scroll-my":D()}],"scroll-ms":[{"scroll-ms":D()}],"scroll-me":[{"scroll-me":D()}],"scroll-mt":[{"scroll-mt":D()}],"scroll-mr":[{"scroll-mr":D()}],"scroll-mb":[{"scroll-mb":D()}],"scroll-ml":[{"scroll-ml":D()}],"scroll-p":[{"scroll-p":D()}],"scroll-px":[{"scroll-px":D()}],"scroll-py":[{"scroll-py":D()}],"scroll-ps":[{"scroll-ps":D()}],"scroll-pe":[{"scroll-pe":D()}],"scroll-pt":[{"scroll-pt":D()}],"scroll-pr":[{"scroll-pr":D()}],"scroll-pb":[{"scroll-pb":D()}],"scroll-pl":[{"scroll-pl":D()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,B]}],fill:[{fill:[e,`none`]}],"stroke-w":[{stroke:[jt,Mt,Pt]}],stroke:[{stroke:[e,`none`]}],sr:[`sr-only`,`not-sr-only`],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-s`,`border-w-e`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-s`,`border-color-e`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]}}});function V(...e){return Xt($e(e))}var Zt=nt(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0`,{variants:{variant:{default:`bg-primary text-primary-foreground shadow hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90`,outline:`border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2`,sm:`h-8 rounded-md px-3 text-xs`,lg:`h-10 rounded-md px-8`,icon:`h-9 w-9`}},defaultVariants:{variant:`default`,size:`default`}}),Qt=_.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},a)=>(0,R.jsx)(r?Ke:`button`,{className:V(Zt({variant:t,size:n,className:e})),ref:a,...i}));Qt.displayName=`Button`;var $t=_.forwardRef(({className:e,type:t,...n},r)=>(0,R.jsx)(`input`,{type:t,className:V(`flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`,e),ref:r,...n}));$t.displayName=`Input`;function en(e,[t,n]){return Math.min(n,Math.max(t,e))}typeof window<`u`&&window.document&&window.document.createElement;function H(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}function tn(e,t=[]){let n=[];function r(t,r){let i=_.createContext(r),a=n.length;n=[...n,r];let o=t=>{let{scope:n,children:r,...o}=t,s=n?.[e]?.[a]||i,c=_.useMemo(()=>o,Object.values(o));return(0,R.jsx)(s.Provider,{value:c,children:r})};o.displayName=t+`Provider`;function s(n,o){let s=o?.[e]?.[a]||i,c=_.useContext(s);if(c)return c;if(r!==void 0)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}return[o,s]}let i=()=>{let t=n.map(e=>_.createContext(e));return function(n){let r=n?.[e]||t;return _.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return i.scopeName=e,[r,nn(i,...t)]}function nn(...e){let t=e[0];if(e.length===1)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return _.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}function rn(e){let t=an(e),n=_.forwardRef((e,n)=>{let{children:r,...i}=e,a=_.Children.toArray(r),o=a.find(sn);if(o){let e=o.props.children,r=a.map(t=>t===o?_.Children.count(e)>1?_.Children.only(null):_.isValidElement(e)?e.props.children:null:t);return(0,R.jsx)(t,{...i,ref:n,children:_.isValidElement(e)?_.cloneElement(e,void 0,r):null})}return(0,R.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function an(e){let t=_.forwardRef((e,t)=>{let{children:n,...r}=e;if(_.isValidElement(n)){let e=ln(n),i=cn(r,n.props);return n.type!==_.Fragment&&(i.ref=t?Re(t,e):e),_.cloneElement(n,i)}return _.Children.count(n)>1?_.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var on=Symbol(`radix.slottable`);function sn(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===on}function cn(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function ln(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function un(e){let t=e+`CollectionProvider`,[n,r]=tn(t),[i,a]=n(t,{collectionRef:{current:null},itemMap:new Map}),o=e=>{let{scope:t,children:n}=e,r=_.useRef(null),a=_.useRef(new Map).current;return(0,R.jsx)(i,{scope:t,itemMap:a,collectionRef:r,children:n})};o.displayName=t;let s=e+`CollectionSlot`,c=rn(s),l=_.forwardRef((e,t)=>{let{scope:n,children:r}=e;return(0,R.jsx)(c,{ref:ze(t,a(s,n).collectionRef),children:r})});l.displayName=s;let u=e+`CollectionItemSlot`,d=`data-radix-collection-item`,f=rn(u),p=_.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=_.useRef(null),s=ze(t,o),c=a(u,n);return _.useEffect(()=>(c.itemMap.set(o,{ref:o,...i}),()=>void c.itemMap.delete(o))),(0,R.jsx)(f,{[d]:``,ref:s,children:r})});p.displayName=u;function m(t){let n=a(e+`CollectionConsumer`,t);return _.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${d}]`));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])}return[{Provider:o,Slot:l,ItemSlot:p},m,r]}var dn=_.createContext(void 0);function fn(e){let t=_.useContext(dn);return e||t||`ltr`}function pn(e){let t=mn(e),n=_.forwardRef((e,n)=>{let{children:r,...i}=e,a=_.Children.toArray(r),o=a.find(gn);if(o){let e=o.props.children,r=a.map(t=>t===o?_.Children.count(e)>1?_.Children.only(null):_.isValidElement(e)?e.props.children:null:t);return(0,R.jsx)(t,{...i,ref:n,children:_.isValidElement(e)?_.cloneElement(e,void 0,r):null})}return(0,R.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function mn(e){let t=_.forwardRef((e,t)=>{let{children:n,...r}=e;if(_.isValidElement(n)){let e=vn(n),i=_n(r,n.props);return n.type!==_.Fragment&&(i.ref=t?Re(t,e):e),_.cloneElement(n,i)}return _.Children.count(n)>1?_.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var hn=Symbol(`radix.slottable`);function gn(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===hn}function _n(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function vn(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var yn=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=pn(`Primitive.${t}`),r=_.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,R.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function bn(e,t){e&&y.flushSync(()=>e.dispatchEvent(t))}function xn(e){let t=_.useRef(e);return _.useEffect(()=>{t.current=e}),_.useMemo(()=>(...e)=>t.current?.(...e),[])}function Sn(e,t=globalThis?.document){let n=xn(e);_.useEffect(()=>{let e=e=>{e.key===`Escape`&&n(e)};return t.addEventListener(`keydown`,e,{capture:!0}),()=>t.removeEventListener(`keydown`,e,{capture:!0})},[n,t])}var Cn=`DismissableLayer`,wn=`dismissableLayer.update`,Tn=`dismissableLayer.pointerDownOutside`,En=`dismissableLayer.focusOutside`,Dn,On=_.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),kn=_.forwardRef((e,t)=>{let{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:o,onDismiss:s,...c}=e,l=_.useContext(On),[u,d]=_.useState(null),f=u?.ownerDocument??globalThis?.document,[,p]=_.useState({}),m=ze(t,e=>d(e)),h=Array.from(l.layers),[g]=[...l.layersWithOutsidePointerEventsDisabled].slice(-1),v=h.indexOf(g),y=u?h.indexOf(u):-1,b=l.layersWithOutsidePointerEventsDisabled.size>0,x=y>=v,S=Mn(e=>{let t=e.target,n=[...l.branches].some(e=>e.contains(t));!x||n||(i?.(e),o?.(e),e.defaultPrevented||s?.())},f),C=Nn(e=>{let t=e.target;[...l.branches].some(e=>e.contains(t))||(a?.(e),o?.(e),e.defaultPrevented||s?.())},f);return Sn(e=>{y===l.layers.size-1&&(r?.(e),!e.defaultPrevented&&s&&(e.preventDefault(),s()))},f),_.useEffect(()=>{if(u)return n&&(l.layersWithOutsidePointerEventsDisabled.size===0&&(Dn=f.body.style.pointerEvents,f.body.style.pointerEvents=`none`),l.layersWithOutsidePointerEventsDisabled.add(u)),l.layers.add(u),Pn(),()=>{n&&l.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=Dn)}},[u,f,n,l]),_.useEffect(()=>()=>{u&&(l.layers.delete(u),l.layersWithOutsidePointerEventsDisabled.delete(u),Pn())},[u,l]),_.useEffect(()=>{let e=()=>p({});return document.addEventListener(wn,e),()=>document.removeEventListener(wn,e)},[]),(0,R.jsx)(yn.div,{...c,ref:m,style:{pointerEvents:b?x?`auto`:`none`:void 0,...e.style},onFocusCapture:H(e.onFocusCapture,C.onFocusCapture),onBlurCapture:H(e.onBlurCapture,C.onBlurCapture),onPointerDownCapture:H(e.onPointerDownCapture,S.onPointerDownCapture)})});kn.displayName=Cn;var An=`DismissableLayerBranch`,jn=_.forwardRef((e,t)=>{let n=_.useContext(On),r=_.useRef(null),i=ze(t,r);return _.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,R.jsx)(yn.div,{...e,ref:i})});jn.displayName=An;function Mn(e,t=globalThis?.document){let n=xn(e),r=_.useRef(!1),i=_.useRef(()=>{});return _.useEffect(()=>{let e=e=>{if(e.target&&!r.current){let r=function(){Fn(Tn,n,a,{discrete:!0})},a={originalEvent:e};e.pointerType===`touch`?(t.removeEventListener(`click`,i.current),i.current=r,t.addEventListener(`click`,i.current,{once:!0})):r()}else t.removeEventListener(`click`,i.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener(`pointerdown`,e)},0);return()=>{window.clearTimeout(a),t.removeEventListener(`pointerdown`,e),t.removeEventListener(`click`,i.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function Nn(e,t=globalThis?.document){let n=xn(e),r=_.useRef(!1);return _.useEffect(()=>{let e=e=>{e.target&&!r.current&&Fn(En,n,{originalEvent:e},{discrete:!1})};return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function Pn(){let e=new CustomEvent(wn);document.dispatchEvent(e)}function Fn(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?bn(i,a):i.dispatchEvent(a)}var In=0;function Ln(){_.useEffect(()=>{let e=document.querySelectorAll(`[data-radix-focus-guard]`);return document.body.insertAdjacentElement(`afterbegin`,e[0]??Rn()),document.body.insertAdjacentElement(`beforeend`,e[1]??Rn()),In++,()=>{In===1&&document.querySelectorAll(`[data-radix-focus-guard]`).forEach(e=>e.remove()),In--}},[])}function Rn(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}var zn=`focusScope.autoFocusOnMount`,Bn=`focusScope.autoFocusOnUnmount`,Vn={bubbles:!1,cancelable:!0},Hn=`FocusScope`,Un=_.forwardRef((e,t)=>{let{loop:n=!1,trapped:r=!1,onMountAutoFocus:i,onUnmountAutoFocus:a,...o}=e,[s,c]=_.useState(null),l=xn(i),u=xn(a),d=_.useRef(null),f=ze(t,e=>c(e)),p=_.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;_.useEffect(()=>{if(r){let e=function(e){if(p.paused||!s)return;let t=e.target;s.contains(t)?d.current=t:Xn(d.current,{select:!0})},t=function(e){if(p.paused||!s)return;let t=e.relatedTarget;t!==null&&(s.contains(t)||Xn(d.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&Xn(s)};document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return s&&r.observe(s,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,s,p.paused]),_.useEffect(()=>{if(s){Zn.add(p);let e=document.activeElement;if(!s.contains(e)){let t=new CustomEvent(zn,Vn);s.addEventListener(zn,l),s.dispatchEvent(t),t.defaultPrevented||(Wn(er(Kn(s)),{select:!0}),document.activeElement===e&&Xn(s))}return()=>{s.removeEventListener(zn,l),setTimeout(()=>{let t=new CustomEvent(Bn,Vn);s.addEventListener(Bn,u),s.dispatchEvent(t),t.defaultPrevented||Xn(e??document.body,{select:!0}),s.removeEventListener(Bn,u),Zn.remove(p)},0)}}},[s,l,u,p]);let m=_.useCallback(e=>{if(!n&&!r||p.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=Gn(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&Xn(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&Xn(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,p.paused]);return(0,R.jsx)(yn.div,{tabIndex:-1,...o,ref:f,onKeyDown:m})});Un.displayName=Hn;function Wn(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(Xn(r,{select:t}),document.activeElement!==n)return}function Gn(e){let t=Kn(e);return[qn(t,e),qn(t.reverse(),e)]}function Kn(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function qn(e,t){for(let n of e)if(!Jn(n,{upTo:t}))return n}function Jn(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function Yn(e){return e instanceof HTMLInputElement&&`select`in e}function Xn(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&Yn(e)&&t&&e.select()}}var Zn=Qn();function Qn(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=$n(e,t),e.unshift(t)},remove(t){e=$n(e,t),e[0]?.resume()}}}function $n(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function er(e){return e.filter(e=>e.tagName!==`A`)}var tr=globalThis?.document?_.useLayoutEffect:()=>{},nr=_.useId||(()=>void 0),rr=0;function ir(e){let[t,n]=_.useState(nr());return tr(()=>{e||n(e=>e??String(rr++))},[e]),e||(t?`radix-${t}`:``)}var ar=[`top`,`right`,`bottom`,`left`],or=Math.min,sr=Math.max,cr=Math.round,lr=Math.floor,ur=e=>({x:e,y:e}),dr={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function fr(e,t,n){return sr(e,or(t,n))}function pr(e,t){return typeof e==`function`?e(t):e}function mr(e){return e.split(`-`)[0]}function hr(e){return e.split(`-`)[1]}function gr(e){return e===`x`?`y`:`x`}function _r(e){return e===`y`?`height`:`width`}function vr(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function yr(e){return gr(vr(e))}function br(e,t,n){n===void 0&&(n=!1);let r=hr(e),i=yr(e),a=_r(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=kr(o)),[o,kr(o)]}function xr(e){let t=kr(e);return[Sr(e),t,Sr(t)]}function Sr(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var Cr=[`left`,`right`],wr=[`right`,`left`],Tr=[`top`,`bottom`],Er=[`bottom`,`top`];function Dr(e,t,n){switch(e){case`top`:case`bottom`:return n?t?wr:Cr:t?Cr:wr;case`left`:case`right`:return t?Tr:Er;default:return[]}}function Or(e,t,n,r){let i=hr(e),a=Dr(mr(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(Sr)))),a}function kr(e){let t=mr(e);return dr[t]+e.slice(t.length)}function Ar(e){return{top:0,right:0,bottom:0,left:0,...e}}function jr(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:Ar(e)}function Mr(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function Nr(e,t,n){let{reference:r,floating:i}=e,a=vr(t),o=yr(t),s=_r(o),c=mr(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(hr(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}async function Pr(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=pr(t,e),p=jr(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=Mr(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=Mr(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var Fr=50,Ir=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:Pr},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=Nr(l,r,c),f=r,p=0,m={};for(let n=0;n({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=pr(e,t)||{};if(l==null)return{};let d=jr(u),f={x:n,y:r},p=yr(i),m=_r(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=or(d[_],T),ee=or(d[v],T),D=E,O=C-h[m]-ee,k=C/2-h[m]/2+w,A=fr(D,k,O),j=!c.arrow&&hr(i)!=null&&k!==A&&a.reference[m]/2-(ke<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==vr(t))||T.every(e=>vr(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=vr(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function zr(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Br(e){return ar.some(t=>e[t]>=0)}var Vr=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=pr(e,t);switch(i){case`referenceHidden`:{let e=zr(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:Br(e)}}}case`escaped`:{let e=zr(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:Br(e)}}}default:return{}}}}},Hr=new Set([`left`,`top`]);async function Ur(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=mr(n),s=hr(n),c=vr(n)===`y`,l=Hr.has(o)?-1:1,u=a&&c?-1:1,d=pr(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var Wr=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await Ur(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},Gr=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=pr(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=vr(mr(i)),p=gr(f),m=u[p],h=u[f];if(o){let e=p===`y`?`top`:`left`,t=p===`y`?`bottom`:`right`,n=m+d[e],r=m-d[t];m=fr(n,m,r)}if(s){let e=f===`y`?`top`:`left`,t=f===`y`?`bottom`:`right`,n=h+d[e],r=h-d[t];h=fr(n,h,r)}let g=c.fn({...t,[p]:m,[f]:h});return{...g,data:{x:g.x-n,y:g.y-r,enabled:{[p]:o,[f]:s}}}}}},Kr=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=pr(e,t),u={x:n,y:r},d=vr(i),f=gr(d),p=u[f],m=u[d],h=pr(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=Hr.has(mr(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);mr&&(m=r)}return{[f]:p,[d]:m}}}},qr=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){var n,r;let{placement:i,rects:a,platform:o,elements:s}=t,{apply:c=()=>{},...l}=pr(e,t),u=await o.detectOverflow(t,l),d=mr(i),f=hr(i),p=vr(i)===`y`,{width:m,height:h}=a.floating,g,_;d===`top`||d===`bottom`?(g=d,_=f===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?`start`:`end`)?`left`:`right`):(_=d,g=f===`end`?`top`:`bottom`);let v=h-u.top-u.bottom,y=m-u.left-u.right,b=or(h-u[g],v),x=or(m-u[_],y),S=!t.middlewareData.shift,C=b,w=x;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(w=y),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(C=v),S&&!f){let e=sr(u.left,0),t=sr(u.right,0),n=sr(u.top,0),r=sr(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:sr(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:sr(u.top,u.bottom))}await c({...t,availableWidth:w,availableHeight:C});let T=await o.getDimensions(s.floating);return m!==T.width||h!==T.height?{reset:{rects:!0}}:{}}}};function Jr(){return typeof window<`u`}function Yr(e){return Qr(e)?(e.nodeName||``).toLowerCase():`#document`}function Xr(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Zr(e){return((Qr(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Qr(e){return Jr()?e instanceof Node||e instanceof Xr(e).Node:!1}function $r(e){return Jr()?e instanceof Element||e instanceof Xr(e).Element:!1}function ei(e){return Jr()?e instanceof HTMLElement||e instanceof Xr(e).HTMLElement:!1}function ti(e){return!Jr()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof Xr(e).ShadowRoot}function ni(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=pi(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function ri(e){return/^(table|td|th)$/.test(Yr(e))}function ii(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var ai=/transform|translate|scale|rotate|perspective|filter/,oi=/paint|layout|strict|content/,si=e=>!!e&&e!==`none`,ci;function li(e){let t=$r(e)?pi(e):e;return si(t.transform)||si(t.translate)||si(t.scale)||si(t.rotate)||si(t.perspective)||!di()&&(si(t.backdropFilter)||si(t.filter))||ai.test(t.willChange||``)||oi.test(t.contain||``)}function ui(e){let t=hi(e);for(;ei(t)&&!fi(t);){if(li(t))return t;if(ii(t))return null;t=hi(t)}return null}function di(){return ci??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),ci}function fi(e){return/^(html|body|#document)$/.test(Yr(e))}function pi(e){return Xr(e).getComputedStyle(e)}function mi(e){return $r(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function hi(e){if(Yr(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||ti(e)&&e.host||Zr(e);return ti(t)?t.host:t}function gi(e){let t=hi(e);return fi(t)?e.ownerDocument?e.ownerDocument.body:e.body:ei(t)&&ni(t)?t:gi(t)}function _i(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=gi(e),i=r===e.ownerDocument?.body,a=Xr(r);if(i){let e=vi(a);return t.concat(a,a.visualViewport||[],ni(r)?r:[],e&&n?_i(e):[])}else return t.concat(r,_i(r,[],n))}function vi(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function yi(e){let t=pi(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=ei(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=cr(n)!==a||cr(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function bi(e){return $r(e)?e:e.contextElement}function xi(e){let t=bi(e);if(!ei(t))return ur(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=yi(t),o=(a?cr(n.width):n.width)/r,s=(a?cr(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var Si=ur(0);function Ci(e){let t=Xr(e);return!di()||!t.visualViewport?Si:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function wi(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==Xr(e)?!1:t}function Ti(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=bi(e),o=ur(1);t&&(r?$r(r)&&(o=xi(r)):o=xi(e));let s=wi(a,n,r)?Ci(a):ur(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=Xr(a),t=r&&$r(r)?Xr(r):r,n=e,i=vi(n);for(;i&&r&&t!==n;){let e=xi(i),t=i.getBoundingClientRect(),r=pi(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=Xr(i),i=vi(n)}}return Mr({width:u,height:d,x:c,y:l})}function Ei(e,t){let n=mi(e).scrollLeft;return t?t.left+n:Ti(Zr(e)).left+n}function Di(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-Ei(e,n),y:n.top+t.scrollTop}}function Oi(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=Zr(r),s=t?ii(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=ur(1),u=ur(0),d=ei(r);if((d||!d&&!a)&&((Yr(r)!==`body`||ni(o))&&(c=mi(r)),d)){let e=Ti(r);l=xi(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?Di(o,c):ur(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function ki(e){return Array.from(e.getClientRects())}function Ai(e){let t=Zr(e),n=mi(e),r=e.ownerDocument.body,i=sr(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=sr(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+Ei(e),s=-n.scrollTop;return pi(r).direction===`rtl`&&(o+=sr(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var U=25;function ji(e,t){let n=Xr(e),r=Zr(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=di();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=Ei(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=U&&(a-=o)}else l<=U&&(a+=l);return{width:a,height:o,x:s,y:c}}function Mi(e,t){let n=Ti(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=ei(e)?xi(e):ur(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function Ni(e,t,n){let r;if(t===`viewport`)r=ji(e,n);else if(t===`document`)r=Ai(Zr(e));else if($r(t))r=Mi(t,n);else{let n=Ci(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return Mr(r)}function Pi(e,t){let n=hi(e);return n===t||!$r(n)||fi(n)?!1:pi(n).position===`fixed`||Pi(n,t)}function Fi(e,t){let n=t.get(e);if(n)return n;let r=_i(e,[],!1).filter(e=>$r(e)&&Yr(e)!==`body`),i=null,a=pi(e).position===`fixed`,o=a?hi(e):e;for(;$r(o)&&!fi(o);){let t=pi(o),n=li(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&(i.position===`absolute`||i.position===`fixed`)||ni(o)&&!n&&Pi(e,o))?r=r.filter(e=>e!==o):i=t,o=hi(o)}return t.set(e,r),r}function Ii(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?ii(t)?[]:Fi(t,this._c):[].concat(n),r],o=Ni(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e{o(!1,1e-7)},1e3)}n===1&&!Gi(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(b,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(b,v)}n.observe(e)}return o(!0),a}function qi(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=bi(e),u=i||a?[...l?_i(l):[],...t?_i(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?Ki(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?Ti(e):null;c&&g();function g(){let t=Ti(e);h&&!Gi(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var Ji=Wr,Yi=Gr,Xi=Rr,Zi=qr,Qi=Vr,$i=Lr,ea=Kr,ta=(e,t,n)=>{let r=new Map,i={platform:Wi,...n},a={...i.platform,_c:r};return Ir(e,t,{...i,platform:a})},na=typeof document<`u`?_.useLayoutEffect:function(){};function ra(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`function`&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e==`object`){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!ra(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){let n=i[r];if(!(n===`_owner`&&e.$$typeof)&&!ra(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function ia(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function aa(e,t){let n=ia(e);return Math.round(t*n)/n}function oa(e){let t=_.useRef(e);return na(()=>{t.current=e}),t}function sa(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:s=!0,whileElementsMounted:c,open:l}=e,[u,d]=_.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,p]=_.useState(r);ra(f,r)||p(r);let[m,h]=_.useState(null),[g,v]=_.useState(null),b=_.useCallback(e=>{e!==w.current&&(w.current=e,h(e))},[]),x=_.useCallback(e=>{e!==T.current&&(T.current=e,v(e))},[]),S=a||m,C=o||g,w=_.useRef(null),T=_.useRef(null),E=_.useRef(u),ee=c!=null,D=oa(c),O=oa(i),k=oa(l),A=_.useCallback(()=>{if(!w.current||!T.current)return;let e={placement:t,strategy:n,middleware:f};O.current&&(e.platform=O.current),ta(w.current,T.current,e).then(e=>{let t={...e,isPositioned:k.current!==!1};j.current&&!ra(E.current,t)&&(E.current=t,y.flushSync(()=>{d(t)}))})},[f,t,n,O,k]);na(()=>{l===!1&&E.current.isPositioned&&(E.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[l]);let j=_.useRef(!1);na(()=>(j.current=!0,()=>{j.current=!1}),[]),na(()=>{if(S&&(w.current=S),C&&(T.current=C),S&&C){if(D.current)return D.current(S,C,A);A()}},[S,C,A,D,ee]);let M=_.useMemo(()=>({reference:w,floating:T,setReference:b,setFloating:x}),[b,x]),N=_.useMemo(()=>({reference:S,floating:C}),[S,C]),P=_.useMemo(()=>{let e={position:n,left:0,top:0};if(!N.floating)return e;let t=aa(N.floating,u.x),r=aa(N.floating,u.y);return s?{...e,transform:`translate(`+t+`px, `+r+`px)`,...ia(N.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,s,N.floating,u.x,u.y]);return _.useMemo(()=>({...u,update:A,refs:M,elements:N,floatingStyles:P}),[u,A,M,N,P])}var ca=e=>{function t(e){return{}.hasOwnProperty.call(e,`current`)}return{name:`arrow`,options:e,fn(n){let{element:r,padding:i}=typeof e==`function`?e(n):e;return r&&t(r)?r.current==null?{}:$i({element:r.current,padding:i}).fn(n):r?$i({element:r,padding:i}).fn(n):{}}}},la=(e,t)=>{let n=Ji(e);return{name:n.name,fn:n.fn,options:[e,t]}},ua=(e,t)=>{let n=Yi(e);return{name:n.name,fn:n.fn,options:[e,t]}},da=(e,t)=>({fn:ea(e).fn,options:[e,t]}),fa=(e,t)=>{let n=Xi(e);return{name:n.name,fn:n.fn,options:[e,t]}},pa=(e,t)=>{let n=Zi(e);return{name:n.name,fn:n.fn,options:[e,t]}},ma=(e,t)=>{let n=Qi(e);return{name:n.name,fn:n.fn,options:[e,t]}},ha=(e,t)=>{let n=ca(e);return{name:n.name,fn:n.fn,options:[e,t]}},ga=`Arrow`,_a=_.forwardRef((e,t)=>{let{children:n,width:r=10,height:i=5,...a}=e;return(0,R.jsx)(yn.svg,{...a,ref:t,width:r,height:i,viewBox:`0 0 30 10`,preserveAspectRatio:`none`,children:e.asChild?n:(0,R.jsx)(`polygon`,{points:`0,0 30,0 15,10`})})});_a.displayName=ga;var va=_a;function ya(e){let[t,n]=_.useState(void 0);return tr(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=e.offsetWidth,a=e.offsetHeight;n({width:i,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}else n(void 0)},[e]),t}var ba=`Popper`,[xa,Sa]=tn(ba),[Ca,wa]=xa(ba),Ta=e=>{let{__scopePopper:t,children:n}=e,[r,i]=_.useState(null);return(0,R.jsx)(Ca,{scope:t,anchor:r,onAnchorChange:i,children:n})};Ta.displayName=ba;var Ea=`PopperAnchor`,Da=_.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:r,...i}=e,a=wa(Ea,n),o=_.useRef(null),s=ze(t,o),c=_.useRef(null);return _.useEffect(()=>{let e=c.current;c.current=r?.current||o.current,e!==c.current&&a.onAnchorChange(c.current)}),r?null:(0,R.jsx)(yn.div,{...i,ref:s})});Da.displayName=Ea;var Oa=`PopperContent`,[ka,Aa]=xa(Oa),ja=_.forwardRef((e,t)=>{let{__scopePopper:n,side:r=`bottom`,sideOffset:i=0,align:a=`center`,alignOffset:o=0,arrowPadding:s=0,avoidCollisions:c=!0,collisionBoundary:l=[],collisionPadding:u=0,sticky:d=`partial`,hideWhenDetached:f=!1,updatePositionStrategy:p=`optimized`,onPlaced:m,...h}=e,g=wa(Oa,n),[v,y]=_.useState(null),b=ze(t,e=>y(e)),[x,S]=_.useState(null),C=ya(x),w=C?.width??0,T=C?.height??0,E=r+(a===`center`?``:`-`+a),ee=typeof u==`number`?u:{top:0,right:0,bottom:0,left:0,...u},D=Array.isArray(l)?l:[l],O=D.length>0,k={padding:ee,boundary:D.filter(Fa),altBoundary:O},{refs:A,floatingStyles:j,placement:M,isPositioned:N,middlewareData:P}=sa({strategy:`fixed`,placement:E,whileElementsMounted:(...e)=>qi(...e,{animationFrame:p===`always`}),elements:{reference:g.anchor},middleware:[la({mainAxis:i+T,alignmentAxis:o}),c&&ua({mainAxis:!0,crossAxis:!1,limiter:d===`partial`?da():void 0,...k}),c&&fa({...k}),pa({...k,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--radix-popper-available-width`,`${n}px`),o.setProperty(`--radix-popper-available-height`,`${r}px`),o.setProperty(`--radix-popper-anchor-width`,`${i}px`),o.setProperty(`--radix-popper-anchor-height`,`${a}px`)}}),x&&ha({element:x,padding:s}),Ia({arrowWidth:w,arrowHeight:T}),f&&ma({strategy:`referenceHidden`,...k})]}),[F,I]=La(M),te=xn(m);tr(()=>{N&&te?.()},[N,te]);let ne=P.arrow?.x,re=P.arrow?.y,ie=P.arrow?.centerOffset!==0,[ae,L]=_.useState();return tr(()=>{v&&L(window.getComputedStyle(v).zIndex)},[v]),(0,R.jsx)(`div`,{ref:A.setFloating,"data-radix-popper-content-wrapper":``,style:{...j,transform:N?j.transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:ae,"--radix-popper-transform-origin":[P.transformOrigin?.x,P.transformOrigin?.y].join(` `),...P.hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}},dir:e.dir,children:(0,R.jsx)(ka,{scope:n,placedSide:F,onArrowChange:S,arrowX:ne,arrowY:re,shouldHideArrow:ie,children:(0,R.jsx)(yn.div,{"data-side":F,"data-align":I,...h,ref:b,style:{...h.style,animation:N?void 0:`none`}})})})});ja.displayName=Oa;var Ma=`PopperArrow`,Na={top:`bottom`,right:`left`,bottom:`top`,left:`right`},Pa=_.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,i=Aa(Ma,n),a=Na[i.placedSide];return(0,R.jsx)(`span`,{ref:i.onArrowChange,style:{position:`absolute`,left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[i.placedSide],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[i.placedSide],visibility:i.shouldHideArrow?`hidden`:void 0},children:(0,R.jsx)(va,{...r,ref:t,style:{...r.style,display:`block`}})})});Pa.displayName=Ma;function Fa(e){return e!==null}var Ia=e=>({name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=La(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}});function La(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var Ra=Ta,za=Da,Ba=ja,Va=Pa,Ha=`Portal`,Ua=_.forwardRef((e,t)=>{let{container:n,...r}=e,[i,a]=_.useState(!1);tr(()=>a(!0),[]);let o=n||i&&globalThis?.document?.body;return o?y.createPortal((0,R.jsx)(yn.div,{...r,ref:t}),o):null});Ua.displayName=Ha;function Wa(e){let t=Ga(e),n=_.forwardRef((e,n)=>{let{children:r,...i}=e,a=_.Children.toArray(r),o=a.find(qa);if(o){let e=o.props.children,r=a.map(t=>t===o?_.Children.count(e)>1?_.Children.only(null):_.isValidElement(e)?e.props.children:null:t);return(0,R.jsx)(t,{...i,ref:n,children:_.isValidElement(e)?_.cloneElement(e,void 0,r):null})}return(0,R.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function Ga(e){let t=_.forwardRef((e,t)=>{let{children:n,...r}=e;if(_.isValidElement(n)){let e=Ya(n),i=Ja(r,n.props);return n.type!==_.Fragment&&(i.ref=t?Re(t,e):e),_.cloneElement(n,i)}return _.Children.count(n)>1?_.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Ka=Symbol(`radix.slottable`);function qa(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===Ka}function Ja(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function Ya(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Xa=_.useInsertionEffect||tr;function Za({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){let[i,a,o]=Qa({defaultProp:t,onChange:n}),s=e!==void 0,c=s?e:i;{let t=_.useRef(e!==void 0);_.useEffect(()=>{let e=t.current;e!==s&&console.warn(`${r} is changing from ${e?`controlled`:`uncontrolled`} to ${s?`controlled`:`uncontrolled`}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),t.current=s},[s,r])}return[c,_.useCallback(t=>{if(s){let n=$a(t)?t(e):t;n!==e&&o.current?.(n)}else a(t)},[s,e,a,o])]}function Qa({defaultProp:e,onChange:t}){let[n,r]=_.useState(e),i=_.useRef(n),a=_.useRef(t);return Xa(()=>{a.current=t},[t]),_.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}function $a(e){return typeof e==`function`}function eo(e){let t=_.useRef({value:e,previous:e});return _.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var to=Object.freeze({position:`absolute`,border:0,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,wordWrap:`normal`}),no=`VisuallyHidden`,ro=_.forwardRef((e,t)=>(0,R.jsx)(yn.span,{...e,ref:t,style:{...to,...e.style}}));ro.displayName=no;var io=ro,ao=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},oo=new WeakMap,so=new WeakMap,co={},W=0,G=function(e){return e&&(e.host||G(e.parentNode))},lo=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=G(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},uo=function(e,t,n,r){var i=lo(t,Array.isArray(e)?e:[e]);co[n]||(co[n]=new WeakMap);var a=co[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(oo.get(e)||0)+1,l=(a.get(e)||0)+1;oo.set(e,c),a.set(e,l),o.push(e),c===1&&i&&so.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),W++,function(){o.forEach(function(e){var t=oo.get(e)-1,i=a.get(e)-1;oo.set(e,t),a.set(e,i),t||(so.has(e)||e.removeAttribute(r),so.delete(e)),i||e.removeAttribute(n)}),W--,W||(oo=new WeakMap,oo=new WeakMap,so=new WeakMap,co={})}},fo=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||ao(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),uo(r,i,n,`aria-hidden`)):function(){return null}},po=function(){return po=Object.assign||function(e){for(var t,n=1,r=arguments.length;n`u`)return Vo;var t=Uo(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},Go=Bo(),Ko=`data-scroll-locked`,qo=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),` + .${vo} { + overflow: hidden ${r}; + padding-right: ${s}px ${r}; + } + body[${Ko}] { + overflow: hidden ${r}; + overscroll-behavior: contain; + ${[t&&`position: relative ${r};`,n===`margin`&&` + padding-left: ${i}px; + padding-top: ${a}px; + padding-right: ${o}px; + margin-left:0; + margin-top:0; + margin-right: ${s}px ${r}; + `,n===`padding`&&`padding-right: ${s}px ${r};`].filter(Boolean).join(``)} + } + + .${go} { + right: ${s}px ${r}; + } + + .${_o} { + margin-right: ${s}px ${r}; + } + + .${go} .${go} { + right: 0 ${r}; + } + + .${_o} .${_o} { + margin-right: 0 ${r}; + } + + body[${Ko}] { + ${yo}: ${s}px; + } +`},Jo=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},Yo=function(){_.useEffect(function(){return document.body.setAttribute(Ko,(Jo()+1).toString()),function(){var e=Jo()-1;e<=0?document.body.removeAttribute(Ko):document.body.setAttribute(Ko,e.toString())}},[])},Xo=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;Yo();var a=_.useMemo(function(){return Wo(i)},[i]);return _.createElement(Go,{styles:qo(a,!t,i,n?``:`!important`)})},Zo=!1;if(typeof window<`u`)try{var Qo=Object.defineProperty({},`passive`,{get:function(){return Zo=!0,!0}});window.addEventListener(`test`,Qo,Qo),window.removeEventListener(`test`,Qo,Qo)}catch{Zo=!1}var $o=Zo?{passive:!1}:!1,es=function(e){return e.tagName===`TEXTAREA`},ts=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!es(e)&&n[t]===`visible`)},ns=function(e){return ts(e,`overflowY`)},rs=function(e){return ts(e,`overflowX`)},is=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),ss(e,r)){var i=cs(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},as=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},os=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},ss=function(e,t){return e===`v`?ns(t):rs(t)},cs=function(e,t){return e===`v`?as(t):os(t)},ls=function(e,t){return e===`h`&&t===`rtl`?-1:1},us=function(e,t,n,r,i){var a=ls(e,window.getComputedStyle(t).direction),o=a*r,s=n.target,c=t.contains(s),l=!1,u=o>0,d=0,f=0;do{if(!s)break;var p=cs(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&ss(e,s)&&(d+=h,f+=m);var g=s.parentNode;s=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&s!==document.body||c&&(t.contains(s)||t===s));return(u&&(i&&Math.abs(d)<1||!i&&o>d)||!u&&(i&&Math.abs(f)<1||!i&&-o>f))&&(l=!0),l},ds=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},fs=function(e){return[e.deltaX,e.deltaY]},ps=function(e){return e&&`current`in e?e.current:e},ms=function(e,t){return e[0]===t[0]&&e[1]===t[1]},hs=function(e){return` + .block-interactivity-${e} {pointer-events: none;} + .allow-interactivity-${e} {pointer-events: all;} +`},gs=0,_s=[];function vs(e){var t=_.useRef([]),n=_.useRef([0,0]),r=_.useRef(),i=_.useState(gs++)[0],a=_.useState(Bo)[0],o=_.useRef(e);_.useEffect(function(){o.current=e},[e]),_.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=ho([e.lockRef.current],(e.shards||[]).map(ps),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var s=_.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=ds(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=is(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=is(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return us(h,t,e,h===`h`?s:c,!0)},[]),c=_.useCallback(function(e){var n=e;if(!(!_s.length||_s[_s.length-1]!==a)){var r=`deltaY`in n?fs(n):ds(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&ms(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var c=(o.current.shards||[]).map(ps).filter(Boolean).filter(function(e){return e.contains(n.target)});(c.length>0?s(n,c[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),l=_.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:ys(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),u=_.useCallback(function(e){n.current=ds(e),r.current=void 0},[]),d=_.useCallback(function(t){l(t.type,fs(t),t.target,s(t,e.lockRef.current))},[]),f=_.useCallback(function(t){l(t.type,ds(t),t.target,s(t,e.lockRef.current))},[]);_.useEffect(function(){return _s.push(a),e.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:f}),document.addEventListener(`wheel`,c,$o),document.addEventListener(`touchmove`,c,$o),document.addEventListener(`touchstart`,u,$o),function(){_s=_s.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,c,$o),document.removeEventListener(`touchmove`,c,$o),document.removeEventListener(`touchstart`,u,$o)}},[]);var p=e.removeScrollBar,m=e.inert;return _.createElement(_.Fragment,null,m?_.createElement(a,{styles:hs(i)}):null,p?_.createElement(Xo,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function ys(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var bs=ko(Ao,vs),xs=_.forwardRef(function(e,t){return _.createElement(Mo,po({},e,{ref:t,sideCar:bs}))});xs.classNames=Mo.classNames;var Ss=[` `,`Enter`,`ArrowUp`,`ArrowDown`],Cs=[` `,`Enter`],ws=`Select`,[Ts,Es,Ds]=un(ws),[Os,ks]=tn(ws,[Ds,Sa]),As=Sa(),[js,Ms]=Os(ws),[Ns,Ps]=Os(ws),Fs=e=>{let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:s,onValueChange:c,dir:l,name:u,autoComplete:d,disabled:f,required:p,form:m}=e,h=As(t),[g,v]=_.useState(null),[y,b]=_.useState(null),[x,S]=_.useState(!1),C=fn(l),[w,T]=Za({prop:r,defaultProp:i??!1,onChange:a,caller:ws}),[E,ee]=Za({prop:o,defaultProp:s,onChange:c,caller:ws}),D=_.useRef(null),O=g?m||!!g.closest(`form`):!0,[k,A]=_.useState(new Set),j=Array.from(k).map(e=>e.props.value).join(`;`);return(0,R.jsx)(Ra,{...h,children:(0,R.jsxs)(js,{required:p,scope:t,trigger:g,onTriggerChange:v,valueNode:y,onValueNodeChange:b,valueNodeHasChildren:x,onValueNodeHasChildrenChange:S,contentId:ir(),value:E,onValueChange:ee,open:w,onOpenChange:T,dir:C,triggerPointerDownPosRef:D,disabled:f,children:[(0,R.jsx)(Ts.Provider,{scope:t,children:(0,R.jsx)(Ns,{scope:e.__scopeSelect,onNativeOptionAdd:_.useCallback(e=>{A(t=>new Set(t).add(e))},[]),onNativeOptionRemove:_.useCallback(e=>{A(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),O?(0,R.jsxs)(Ac,{"aria-hidden":!0,required:p,tabIndex:-1,name:u,autoComplete:d,value:E,onChange:e=>ee(e.target.value),disabled:f,form:m,children:[E===void 0?(0,R.jsx)(`option`,{value:``}):null,Array.from(k)]},j):null]})})};Fs.displayName=ws;var Is=`SelectTrigger`,Ls=_.forwardRef((e,t)=>{let{__scopeSelect:n,disabled:r=!1,...i}=e,a=As(n),o=Ms(Is,n),s=o.disabled||r,c=ze(t,o.onTriggerChange),l=Es(n),u=_.useRef(`touch`),[d,f,p]=Mc(e=>{let t=l().filter(e=>!e.disabled),n=Nc(t,e,t.find(e=>e.value===o.value));n!==void 0&&o.onValueChange(n.value)}),m=e=>{s||(o.onOpenChange(!0),p()),e&&(o.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,R.jsx)(za,{asChild:!0,...a,children:(0,R.jsx)(yn.button,{type:`button`,role:`combobox`,"aria-controls":o.contentId,"aria-expanded":o.open,"aria-required":o.required,"aria-autocomplete":`none`,dir:o.dir,"data-state":o.open?`open`:`closed`,disabled:s,"data-disabled":s?``:void 0,"data-placeholder":jc(o.value)?``:void 0,...i,ref:c,onClick:H(i.onClick,e=>{e.currentTarget.focus(),u.current!==`mouse`&&m(e)}),onPointerDown:H(i.onPointerDown,e=>{u.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(m(e),e.preventDefault())}),onKeyDown:H(i.onKeyDown,e=>{let t=d.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&f(e.key),!(t&&e.key===` `)&&Ss.includes(e.key)&&(m(),e.preventDefault())})})})});Ls.displayName=Is;var Rs=`SelectValue`,zs=_.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...s}=e,c=Ms(Rs,n),{onValueNodeHasChildrenChange:l}=c,u=a!==void 0,d=ze(t,c.onValueNodeChange);return tr(()=>{l(u)},[l,u]),(0,R.jsx)(yn.span,{...s,ref:d,style:{pointerEvents:`none`},children:jc(c.value)?(0,R.jsx)(R.Fragment,{children:o}):a})});zs.displayName=Rs;var Bs=`SelectIcon`,Vs=_.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...i}=e;return(0,R.jsx)(yn.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})});Vs.displayName=Bs;var Hs=`SelectPortal`,Us=e=>(0,R.jsx)(Ua,{asChild:!0,...e});Us.displayName=Hs;var Ws=`SelectContent`,Gs=_.forwardRef((e,t)=>{let n=Ms(Ws,e.__scopeSelect),[r,i]=_.useState();if(tr(()=>{i(new DocumentFragment)},[]),!n.open){let t=r;return t?y.createPortal((0,R.jsx)(qs,{scope:e.__scopeSelect,children:(0,R.jsx)(Ts.Slot,{scope:e.__scopeSelect,children:(0,R.jsx)(`div`,{children:e.children})})}),t):null}return(0,R.jsx)(Zs,{...e,ref:t})});Gs.displayName=Ws;var Ks=10,[qs,Js]=Os(Ws),Ys=`SelectContentImpl`,Xs=Wa(`SelectContent.RemoveScroll`),Zs=_.forwardRef((e,t)=>{let{__scopeSelect:n,position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:o,side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:g,...v}=e,y=Ms(Ws,n),[b,x]=_.useState(null),[S,C]=_.useState(null),w=ze(t,e=>x(e)),[T,E]=_.useState(null),[ee,D]=_.useState(null),O=Es(n),[k,A]=_.useState(!1),j=_.useRef(!1);_.useEffect(()=>{if(b)return fo(b)},[b]),Ln();let M=_.useCallback(e=>{let[t,...n]=O().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&S&&(S.scrollTop=0),n===r&&S&&(S.scrollTop=S.scrollHeight),n?.focus(),document.activeElement!==i))return},[O,S]),N=_.useCallback(()=>M([T,b]),[M,T,b]);_.useEffect(()=>{k&&N()},[k,N]);let{onOpenChange:P,triggerPointerDownPosRef:F}=y;_.useEffect(()=>{if(b){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(F.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(F.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():b.contains(n.target)||P(!1),document.removeEventListener(`pointermove`,t),F.current=null};return F.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[b,P,F]),_.useEffect(()=>{let e=()=>P(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[P]);let[I,te]=Mc(e=>{let t=O().filter(e=>!e.disabled),n=Nc(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current.focus())}),ne=_.useCallback((e,t,n)=>{let r=!j.current&&!n;(y.value!==void 0&&y.value===t||r)&&(E(e),r&&(j.current=!0))},[y.value]),re=_.useCallback(()=>b?.focus(),[b]),ie=_.useCallback((e,t,n)=>{let r=!j.current&&!n;(y.value!==void 0&&y.value===t||r)&&D(e)},[y.value]),ae=r===`popper`?tc:$s,L=ae===tc?{side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:g}:{};return(0,R.jsx)(qs,{scope:n,content:b,viewport:S,onViewportChange:C,itemRefCallback:ne,selectedItem:T,onItemLeave:re,itemTextRefCallback:ie,focusSelectedItem:N,selectedItemText:ee,position:r,isPositioned:k,searchRef:I,children:(0,R.jsx)(xs,{as:Xs,allowPinchZoom:!0,children:(0,R.jsx)(Un,{asChild:!0,trapped:y.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:H(i,e=>{y.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,R.jsx)(kn,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>y.onOpenChange(!1),children:(0,R.jsx)(ae,{role:`listbox`,id:y.contentId,"data-state":y.open?`open`:`closed`,dir:y.dir,onContextMenu:e=>e.preventDefault(),...v,...L,onPlaced:()=>A(!0),ref:w,style:{display:`flex`,flexDirection:`column`,outline:`none`,...v.style},onKeyDown:H(v.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&te(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=O().filter(e=>!e.disabled).map(e=>e.ref.current);if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>M(t)),e.preventDefault()}})})})})})})});Zs.displayName=Ys;var Qs=`SelectItemAlignedPosition`,$s=_.forwardRef((e,t)=>{let{__scopeSelect:n,onPlaced:r,...i}=e,a=Ms(Ws,n),o=Js(Ws,n),[s,c]=_.useState(null),[l,u]=_.useState(null),d=ze(t,e=>u(e)),f=Es(n),p=_.useRef(!1),m=_.useRef(!0),{viewport:h,selectedItem:g,selectedItemText:v,focusSelectedItem:y}=o,b=_.useCallback(()=>{if(a.trigger&&a.valueNode&&s&&l&&h&&g&&v){let e=a.trigger.getBoundingClientRect(),t=l.getBoundingClientRect(),n=a.valueNode.getBoundingClientRect(),i=v.getBoundingClientRect();if(a.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,o=e.left-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-Ks,d=en(a,[Ks,Math.max(Ks,u-l)]);s.style.minWidth=c+`px`,s.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-Ks,d=en(a,[Ks,Math.max(Ks,u-l)]);s.style.minWidth=c+`px`,s.style.right=d+`px`}let o=f(),c=window.innerHeight-Ks*2,u=h.scrollHeight,d=window.getComputedStyle(l),m=parseInt(d.borderTopWidth,10),_=parseInt(d.paddingTop,10),y=parseInt(d.borderBottomWidth,10),b=parseInt(d.paddingBottom,10),x=m+_+u+b+y,S=Math.min(g.offsetHeight*5,x),C=window.getComputedStyle(h),w=parseInt(C.paddingTop,10),T=parseInt(C.paddingBottom,10),E=e.top+e.height/2-Ks,ee=c-E,D=g.offsetHeight/2,O=g.offsetTop+D,k=m+_+O,A=x-k;if(k<=E){let e=o.length>0&&g===o[o.length-1].ref.current;s.style.bottom=`0px`;let t=l.clientHeight-h.offsetTop-h.offsetHeight,n=k+Math.max(ee,D+(e?T:0)+t+y);s.style.height=n+`px`}else{let e=o.length>0&&g===o[0].ref.current;s.style.top=`0px`;let t=Math.max(E,m+h.offsetTop+(e?w:0)+D)+A;s.style.height=t+`px`,h.scrollTop=k-E+h.offsetTop}s.style.margin=`${Ks}px 0`,s.style.minHeight=S+`px`,s.style.maxHeight=c+`px`,r?.(),requestAnimationFrame(()=>p.current=!0)}},[f,a.trigger,a.valueNode,s,l,h,g,v,a.dir,r]);tr(()=>b(),[b]);let[x,S]=_.useState();return tr(()=>{l&&S(window.getComputedStyle(l).zIndex)},[l]),(0,R.jsx)(nc,{scope:n,contentWrapper:s,shouldExpandOnScrollRef:p,onScrollButtonChange:_.useCallback(e=>{e&&m.current===!0&&(b(),y?.(),m.current=!1)},[b,y]),children:(0,R.jsx)(`div`,{ref:c,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:x},children:(0,R.jsx)(yn.div,{...i,ref:d,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})});$s.displayName=Qs;var ec=`SelectPopperPosition`,tc=_.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=Ks,...a}=e,o=As(n);return(0,R.jsx)(Ba,{...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})});tc.displayName=ec;var[nc,rc]=Os(Ws,{}),ic=`SelectViewport`,ac=_.forwardRef((e,t)=>{let{__scopeSelect:n,nonce:r,...i}=e,a=Js(ic,n),o=rc(ic,n),s=ze(t,a.onViewportChange),c=_.useRef(0);return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`},nonce:r}),(0,R.jsx)(Ts.Slot,{scope:n,children:(0,R.jsx)(yn.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:s,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:H(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=o;if(r?.current&&n){let e=Math.abs(c.current-t.scrollTop);if(e>0){let r=window.innerHeight-Ks*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o0?s:0,n.style.justifyContent=`flex-end`)}}}c.current=t.scrollTop})})})]})});ac.displayName=ic;var oc=`SelectGroup`,[sc,cc]=Os(oc),lc=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=ir();return(0,R.jsx)(sc,{scope:n,id:i,children:(0,R.jsx)(yn.div,{role:`group`,"aria-labelledby":i,...r,ref:t})})});lc.displayName=oc;var uc=`SelectLabel`,dc=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=cc(uc,n);return(0,R.jsx)(yn.div,{id:i.id,...r,ref:t})});dc.displayName=uc;var fc=`SelectItem`,[pc,mc]=Os(fc),hc=_.forwardRef((e,t)=>{let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...o}=e,s=Ms(fc,n),c=Js(fc,n),l=s.value===r,[u,d]=_.useState(a??``),[f,p]=_.useState(!1),m=ze(t,e=>c.itemRefCallback?.(e,r,i)),h=ir(),g=_.useRef(`touch`),v=()=>{i||(s.onValueChange(r),s.onOpenChange(!1))};if(r===``)throw Error(`A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return(0,R.jsx)(pc,{scope:n,value:r,disabled:i,textId:h,isSelected:l,onItemTextChange:_.useCallback(e=>{d(t=>t||(e?.textContent??``).trim())},[]),children:(0,R.jsx)(Ts.ItemSlot,{scope:n,value:r,disabled:i,textValue:u,children:(0,R.jsx)(yn.div,{role:`option`,"aria-labelledby":h,"data-highlighted":f?``:void 0,"aria-selected":l&&f,"data-state":l?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...o,ref:m,onFocus:H(o.onFocus,()=>p(!0)),onBlur:H(o.onBlur,()=>p(!1)),onClick:H(o.onClick,()=>{g.current!==`mouse`&&v()}),onPointerUp:H(o.onPointerUp,()=>{g.current===`mouse`&&v()}),onPointerDown:H(o.onPointerDown,e=>{g.current=e.pointerType}),onPointerMove:H(o.onPointerMove,e=>{g.current=e.pointerType,i?c.onItemLeave?.():g.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:H(o.onPointerLeave,e=>{e.currentTarget===document.activeElement&&c.onItemLeave?.()}),onKeyDown:H(o.onKeyDown,e=>{c.searchRef?.current!==``&&e.key===` `||(Cs.includes(e.key)&&v(),e.key===` `&&e.preventDefault())})})})})});hc.displayName=fc;var gc=`SelectItemText`,_c=_.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,...a}=e,o=Ms(gc,n),s=Js(gc,n),c=mc(gc,n),l=Ps(gc,n),[u,d]=_.useState(null),f=ze(t,e=>d(e),c.onItemTextChange,e=>s.itemTextRefCallback?.(e,c.value,c.disabled)),p=u?.textContent,m=_.useMemo(()=>(0,R.jsx)(`option`,{value:c.value,disabled:c.disabled,children:p},c.value),[c.disabled,c.value,p]),{onNativeOptionAdd:h,onNativeOptionRemove:g}=l;return tr(()=>(h(m),()=>g(m)),[h,g,m]),(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(yn.span,{id:c.textId,...a,ref:f}),c.isSelected&&o.valueNode&&!o.valueNodeHasChildren?y.createPortal(a.children,o.valueNode):null]})});_c.displayName=gc;var vc=`SelectItemIndicator`,yc=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return mc(vc,n).isSelected?(0,R.jsx)(yn.span,{"aria-hidden":!0,...r,ref:t}):null});yc.displayName=vc;var bc=`SelectScrollUpButton`,xc=_.forwardRef((e,t)=>{let n=Js(bc,e.__scopeSelect),r=rc(bc,e.__scopeSelect),[i,a]=_.useState(!1),o=ze(t,r.onScrollButtonChange);return tr(()=>{if(n.viewport&&n.isPositioned){let e=function(){a(t.scrollTop>0)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,R.jsx)(wc,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null});xc.displayName=bc;var Sc=`SelectScrollDownButton`,Cc=_.forwardRef((e,t)=>{let n=Js(Sc,e.__scopeSelect),r=rc(Sc,e.__scopeSelect),[i,a]=_.useState(!1),o=ze(t,r.onScrollButtonChange);return tr(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;a(Math.ceil(t.scrollTop)t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,R.jsx)(wc,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});Cc.displayName=Sc;var wc=_.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=Js(`SelectScrollButton`,n),o=_.useRef(null),s=Es(n),c=_.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return _.useEffect(()=>()=>c(),[c]),tr(()=>{s().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[s]),(0,R.jsx)(yn.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:H(i.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:H(i.onPointerMove,()=>{a.onItemLeave?.(),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:H(i.onPointerLeave,()=>{c()})})}),Tc=`SelectSeparator`,Ec=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return(0,R.jsx)(yn.div,{"aria-hidden":!0,...r,ref:t})});Ec.displayName=Tc;var Dc=`SelectArrow`,Oc=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=As(n),a=Ms(Dc,n),o=Js(Dc,n);return a.open&&o.position===`popper`?(0,R.jsx)(Va,{...i,...r,ref:t}):null});Oc.displayName=Dc;var kc=`SelectBubbleInput`,Ac=_.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{let i=_.useRef(null),a=ze(r,i),o=eo(t);return _.useEffect(()=>{let e=i.current;if(!e)return;let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(o!==t&&r){let n=new Event(`change`,{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[o,t]),(0,R.jsx)(yn.select,{...n,style:{...to,...n.style},ref:a,defaultValue:t})});Ac.displayName=kc;function jc(e){return e===``||e===void 0}function Mc(e){let t=xn(e),n=_.useRef(``),r=_.useRef(0),i=_.useCallback(e=>{let i=n.current+e;t(i),(function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))})(i)},[t]),a=_.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return _.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}function Nc(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=Pc(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.textValue.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function Pc(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var Fc=Fs,Ic=Ls,Lc=zs,Rc=Vs,zc=Us,Bc=Gs,Vc=ac,Hc=lc,Uc=dc,Wc=hc,Gc=_c,Kc=yc,qc=xc,Jc=Cc,Yc=Ec,Xc=Fc,Zc=Hc,Qc=Lc,$c=_.forwardRef(({className:e,children:t,...n},r)=>(0,R.jsxs)(Ic,{ref:r,className:V(`flex h-9 w-full items-center justify-between gap-2 rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1`,e),...n,children:[t,(0,R.jsx)(Rc,{asChild:!0,children:(0,R.jsx)(ve,{className:`h-4 w-4 opacity-50`})})]}));$c.displayName=Ic.displayName;var el=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(qc,{ref:n,className:V(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,R.jsx)(ye,{className:`h-4 w-4`})}));el.displayName=qc.displayName;var tl=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(Jc,{ref:n,className:V(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,R.jsx)(ve,{className:`h-4 w-4`})}));tl.displayName=Jc.displayName;var nl=_.forwardRef(({className:e,children:t,position:n=`popper`,...r},i)=>(0,R.jsx)(zc,{children:(0,R.jsxs)(Bc,{ref:i,className:V(`relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,...r,children:[(0,R.jsx)(el,{}),(0,R.jsx)(Vc,{className:V(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]`),children:t}),(0,R.jsx)(tl,{})]})}));nl.displayName=Bc.displayName;var rl=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(Uc,{ref:n,className:V(`px-2 py-1.5 text-[10.5px] font-semibold uppercase tracking-wider text-muted-foreground`,e),...t}));rl.displayName=Uc.displayName;var il=_.forwardRef(({className:e,children:t,...n},r)=>(0,R.jsxs)(Wc,{ref:r,className:V(`relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,e),...n,children:[(0,R.jsx)(`span`,{className:`absolute right-2 flex h-3.5 w-3.5 items-center justify-center`,children:(0,R.jsx)(Kc,{children:(0,R.jsx)(_e,{className:`h-4 w-4`})})}),(0,R.jsx)(Gc,{children:t})]}));il.displayName=Wc.displayName;var al=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(Yc,{ref:n,className:V(`-mx-1 my-1 h-px bg-muted`,e),...t}));al.displayName=Yc.displayName;function ol(e,t){return _.useReducer((e,n)=>t[e][n]??e,e)}var sl=e=>{let{present:t,children:n}=e,r=cl(t),i=typeof n==`function`?n({present:r.isPresent}):_.Children.only(n),a=ze(r.ref,ul(i));return typeof n==`function`||r.isPresent?_.cloneElement(i,{ref:a}):null};sl.displayName=`Presence`;function cl(e){let[t,n]=_.useState(),r=_.useRef(null),i=_.useRef(e),a=_.useRef(`none`),[o,s]=ol(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return _.useEffect(()=>{let e=ll(r.current);a.current=o===`mounted`?e:`none`},[o]),tr(()=>{let t=r.current,n=i.current;if(n!==e){let r=a.current,o=ll(t);e?s(`MOUNT`):o===`none`||t?.display===`none`?s(`UNMOUNT`):s(n&&r!==o?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,s]),tr(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,o=a=>{let o=ll(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(s(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},c=e=>{e.target===t&&(a.current=ll(r.current))};return t.addEventListener(`animationstart`,c),t.addEventListener(`animationcancel`,o),t.addEventListener(`animationend`,o),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,c),t.removeEventListener(`animationcancel`,o),t.removeEventListener(`animationend`,o)}}else s(`ANIMATION_END`)},[t,s]),{isPresent:[`mounted`,`unmountSuspended`].includes(o),ref:_.useCallback(e=>{r.current=e?getComputedStyle(e):null,n(e)},[])}}function ll(e){return e?.animationName||`none`}function ul(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var dl=Symbol(`radix.slottable`);function fl(e){let t=({children:e})=>(0,R.jsx)(R.Fragment,{children:e});return t.displayName=`${e}.Slottable`,t.__radixId=dl,t}var[pl,ml]=tn(`Tooltip`,[Sa]),hl=Sa(),gl=`TooltipProvider`,_l=700,vl=`tooltip.open`,[yl,bl]=pl(gl),xl=e=>{let{__scopeTooltip:t,delayDuration:n=_l,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=_.useRef(!0),s=_.useRef(!1),c=_.useRef(0);return _.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,R.jsx)(yl,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:_.useCallback(()=>{window.clearTimeout(c.current),o.current=!1},[]),onClose:_.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r)},[r]),isPointerInTransitRef:s,onPointerInTransitChange:_.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})};xl.displayName=gl;var Sl=`Tooltip`,[Cl,wl]=pl(Sl),Tl=e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,c=bl(Sl,e.__scopeTooltip),l=hl(t),[u,d]=_.useState(null),f=ir(),p=_.useRef(0),m=o??c.disableHoverableContent,h=s??c.delayDuration,g=_.useRef(!1),[v,y]=Za({prop:r,defaultProp:i??!1,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(vl))):c.onClose(),a?.(e)},caller:Sl}),b=_.useMemo(()=>v?g.current?`delayed-open`:`instant-open`:`closed`,[v]),x=_.useCallback(()=>{window.clearTimeout(p.current),p.current=0,g.current=!1,y(!0)},[y]),S=_.useCallback(()=>{window.clearTimeout(p.current),p.current=0,y(!1)},[y]),C=_.useCallback(()=>{window.clearTimeout(p.current),p.current=window.setTimeout(()=>{g.current=!0,y(!0),p.current=0},h)},[h,y]);return _.useEffect(()=>()=>{p.current&&=(window.clearTimeout(p.current),0)},[]),(0,R.jsx)(Ra,{...l,children:(0,R.jsx)(Cl,{scope:t,contentId:f,open:v,stateAttribute:b,trigger:u,onTriggerChange:d,onTriggerEnter:_.useCallback(()=>{c.isOpenDelayedRef.current?C():x()},[c.isOpenDelayedRef,C,x]),onTriggerLeave:_.useCallback(()=>{m?S():(window.clearTimeout(p.current),p.current=0)},[S,m]),onOpen:x,onClose:S,disableHoverableContent:m,children:n})})};Tl.displayName=Sl;var El=`TooltipTrigger`,Dl=_.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=wl(El,n),a=bl(El,n),o=hl(n),s=ze(t,_.useRef(null),i.onTriggerChange),c=_.useRef(!1),l=_.useRef(!1),u=_.useCallback(()=>c.current=!1,[]);return _.useEffect(()=>()=>document.removeEventListener(`pointerup`,u),[u]),(0,R.jsx)(za,{asChild:!0,...o,children:(0,R.jsx)(yn.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:s,onPointerMove:H(e.onPointerMove,e=>{e.pointerType!==`touch`&&!l.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),l.current=!0)}),onPointerLeave:H(e.onPointerLeave,()=>{i.onTriggerLeave(),l.current=!1}),onPointerDown:H(e.onPointerDown,()=>{i.open&&i.onClose(),c.current=!0,document.addEventListener(`pointerup`,u,{once:!0})}),onFocus:H(e.onFocus,()=>{c.current||i.onOpen()}),onBlur:H(e.onBlur,i.onClose),onClick:H(e.onClick,i.onClose)})})});Dl.displayName=El;var Ol=`TooltipPortal`,[kl,Al]=pl(Ol,{forceMount:void 0}),jl=e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=wl(Ol,t);return(0,R.jsx)(kl,{scope:t,forceMount:n,children:(0,R.jsx)(sl,{present:n||a.open,children:(0,R.jsx)(Ua,{asChild:!0,container:i,children:r})})})};jl.displayName=Ol;var Ml=`TooltipContent`,Nl=_.forwardRef((e,t)=>{let n=Al(Ml,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=wl(Ml,e.__scopeTooltip);return(0,R.jsx)(sl,{present:r||o.open,children:o.disableHoverableContent?(0,R.jsx)(Rl,{side:i,...a,ref:t}):(0,R.jsx)(Pl,{side:i,...a,ref:t})})}),Pl=_.forwardRef((e,t)=>{let n=wl(Ml,e.__scopeTooltip),r=bl(Ml,e.__scopeTooltip),i=_.useRef(null),a=ze(t,i),[o,s]=_.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=_.useCallback(()=>{s(null),d(!1)},[d]),p=_.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=Y(r,J(r,n.getBoundingClientRect())),a=X(t.getBoundingClientRect());s(Bl([...i,...a])),d(!0)},[d]);return _.useEffect(()=>()=>f(),[f]),_.useEffect(()=>{if(c&&u){let e=e=>p(e,u),t=e=>p(e,c);return c.addEventListener(`pointerleave`,e),u.addEventListener(`pointerleave`,t),()=>{c.removeEventListener(`pointerleave`,e),u.removeEventListener(`pointerleave`,t)}}},[c,u,p,f]),_.useEffect(()=>{if(o){let e=e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||u?.contains(t),i=!zl(n,o);r?f():i&&(f(),l())};return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,u,o,l,f]),(0,R.jsx)(Rl,{...e,ref:a})}),[Fl,Il]=pl(Sl,{isInside:!1}),Ll=fl(`TooltipContent`),Rl=_.forwardRef((e,t)=>{let{__scopeTooltip:n,children:r,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:o,...s}=e,c=wl(Ml,n),l=hl(n),{onClose:u}=c;return _.useEffect(()=>(document.addEventListener(vl,u),()=>document.removeEventListener(vl,u)),[u]),_.useEffect(()=>{if(c.trigger){let e=e=>{e.target?.contains(c.trigger)&&u()};return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[c.trigger,u]),(0,R.jsx)(kn,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:u,children:(0,R.jsxs)(Ba,{"data-state":c.stateAttribute,...l,...s,ref:t,style:{...s.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,R.jsx)(Ll,{children:r}),(0,R.jsx)(Fl,{scope:n,isInside:!0,children:(0,R.jsx)(io,{id:c.contentId,role:`tooltip`,children:i||r})})]})})});Nl.displayName=Ml;var K=`TooltipArrow`,q=_.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=hl(n);return Il(K,n).isInside?null:(0,R.jsx)(Va,{...i,...r,ref:t})});q.displayName=K;function J(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function Y(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function X(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function zl(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function Bl(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y)),Vl(t)}function Vl(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var Hl=xl,Ul=Tl,Wl=Dl,Gl=jl,Kl=Nl,ql=Hl,Jl=Ul,Yl=Wl,Xl=_.forwardRef(({className:e,sideOffset:t=6,...n},r)=>(0,R.jsx)(Gl,{children:(0,R.jsx)(Kl,{ref:r,sideOffset:t,className:V(`z-50 max-w-xs overflow-hidden rounded-md bg-foreground px-2 py-1 text-xs text-background shadow-sm animate-in fade-in-0 zoom-in-95`,e),...n})}));Xl.displayName=Kl.displayName;var Zl=[`nvlink`,`nvswitch`,`pcie`,`infiniband`,`ethernet`];function Ql({nodes:e,setNodes:t,skus:n}){let r=$l(n,e=>e.vendor||`other`),i=()=>{let n=e.length;t(e=>[...e,{name:`node-${String(n+1).padStart(2,`0`)}`,interconnect:`nvlink`,intra_node_bandwidth_gbps:900,inter_node_bandwidth_gbps:25,gpus:[]}])},a=e=>t(t=>t.filter((t,n)=>n!==e)),o=(e,n)=>t(t=>t.map((t,r)=>r===e?{...t,...n}:t)),s=e=>{t(t=>t.map((t,r)=>{if(r!==e)return t;let i=n[0],a=`${t.name}-gpu-${t.gpus.length}`,o=i?.memory_gb??80;return{...t,gpus:[...t.gpus,{id:a,model:i?.id??`H100-SXM5`,memory_total_gb:o,memory_free_gb:o,in_use:!1}]}}))},c=(e,n)=>t(t=>t.map((t,r)=>r===e?{...t,gpus:t.gpus.filter((e,t)=>t!==n)}:t)),l=(e,r,i)=>t(t=>t.map((t,a)=>a===e?{...t,gpus:t.gpus.map((e,t)=>{if(t!==r)return e;let a={...e,...i};if(i.model&&i.model!==e.model){let e=n.find(e=>e.id===i.model);e&&(a.memory_total_gb=e.memory_gb,a.memory_free_gb=e.memory_gb)}return a})}:t)),u=(e,n)=>t(t=>t.map((t,r)=>{if(r!==e)return t;let i={...t.gpus[n],id:`${t.name}-gpu-${t.gpus.length}`};return{...t,gpus:[...t.gpus,i]}}));return(0,R.jsxs)(`div`,{className:`space-y-3`,children:[e.map((e,t)=>{let i=e.gpus.reduce((e,t)=>e+t.memory_free_gb,0);return(0,R.jsxs)(`div`,{className:`rounded-lg border bg-background p-3`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)($t,{value:e.name,onChange:e=>o(t,{name:e.target.value}),placeholder:`node name`,"aria-label":`Node name`,className:`h-8 flex-1 text-sm`}),(0,R.jsxs)(Xc,{value:e.interconnect??`nvlink`,onValueChange:e=>o(t,{interconnect:e}),children:[(0,R.jsx)($c,{className:`h-8 w-[130px] text-xs`,"aria-label":`Interconnect`,children:(0,R.jsx)(Qc,{})}),(0,R.jsx)(nl,{children:Zl.map(e=>(0,R.jsx)(il,{value:e,children:e},e))})]}),(0,R.jsxs)(Jl,{children:[(0,R.jsx)(Yl,{asChild:!0,children:(0,R.jsx)(Qt,{variant:`ghost`,size:`icon`,className:`h-8 w-8 text-muted-foreground hover:text-destructive`,onClick:()=>a(t),"aria-label":`Remove ${e.name}`,children:(0,R.jsx)(Ae,{className:`h-3.5 w-3.5`})})}),(0,R.jsx)(Xl,{children:`Remove node`})]})]}),(0,R.jsxs)(`p`,{className:`mt-1.5 text-[11px] text-muted-foreground`,children:[e.gpus.length,` GPU`,e.gpus.length===1?``:`s`,` ·`,` `,i.toFixed(0),` GB free`]}),(0,R.jsx)(`div`,{className:`mt-2 space-y-1.5`,children:e.gpus.map((e,n)=>(0,R.jsxs)(`div`,{className:`space-y-1.5 rounded-md border bg-card/50 p-2`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)($t,{value:e.id,onChange:e=>l(t,n,{id:e.target.value}),"aria-label":`GPU id`,className:`h-7 flex-1 font-mono text-[11px]`}),(0,R.jsxs)(Jl,{children:[(0,R.jsx)(Yl,{asChild:!0,children:(0,R.jsx)(Qt,{variant:`ghost`,size:`icon`,className:`h-7 w-7 text-muted-foreground`,onClick:()=>u(t,n),"aria-label":`Clone GPU`,children:(0,R.jsx)(be,{className:`h-3 w-3`})})}),(0,R.jsx)(Xl,{children:`Clone GPU`})]}),(0,R.jsxs)(Jl,{children:[(0,R.jsx)(Yl,{asChild:!0,children:(0,R.jsx)(Qt,{variant:`ghost`,size:`icon`,className:`h-7 w-7 text-muted-foreground hover:text-destructive`,onClick:()=>c(t,n),"aria-label":`Remove GPU`,children:(0,R.jsx)(Ae,{className:`h-3 w-3`})})}),(0,R.jsx)(Xl,{children:`Remove GPU`})]})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsxs)(Xc,{value:e.model,onValueChange:e=>l(t,n,{model:e}),children:[(0,R.jsx)($c,{className:`h-7 flex-1 text-xs`,"aria-label":`GPU model`,children:(0,R.jsx)(Qc,{})}),(0,R.jsx)(nl,{children:Object.entries(r).map(([e,t])=>(0,R.jsxs)(Zc,{children:[(0,R.jsx)(rl,{children:e}),t.map(e=>(0,R.jsxs)(il,{value:e.id,children:[e.id,` `,(0,R.jsxs)(`span`,{className:`text-muted-foreground`,children:[`(`,e.memory_gb,` GB)`]})]},e.id))]},e))})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,R.jsx)(`span`,{className:`text-[10.5px] text-muted-foreground`,children:`total`}),(0,R.jsx)($t,{type:`number`,value:e.memory_total_gb,onChange:e=>l(t,n,{memory_total_gb:Number(e.target.value)}),className:`h-7 w-16 text-right text-xs`,"aria-label":`Total memory (GB)`})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,R.jsx)(`span`,{className:`text-[10.5px] text-muted-foreground`,children:`free`}),(0,R.jsx)($t,{type:`number`,value:e.memory_free_gb,onChange:e=>l(t,n,{memory_free_gb:Number(e.target.value)}),className:`h-7 w-16 text-right text-xs`,"aria-label":`Free memory (GB)`})]})]})]},n))}),(0,R.jsxs)(Qt,{variant:`outline`,size:`sm`,onClick:()=>s(t),className:`mt-2 h-7 w-full text-xs`,disabled:n.length===0,children:[(0,R.jsx)(Te,{className:`h-3 w-3`}),`Add GPU`]})]},t)}),(0,R.jsxs)(Qt,{variant:`outline`,size:`sm`,onClick:i,className:`w-full`,children:[(0,R.jsx)(Te,{className:`h-3.5 w-3.5`}),`Add node`]})]})}function $l(e,t){let n={};for(let r of e){let e=t(r);n[e]||(n[e]=[]),n[e].push(r)}return n}function eu({cluster:e,colors:t}){if(!e.gpus.length)return null;let n=nu(e.gpus);return(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground`,children:[(0,R.jsxs)(`span`,{children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:e.used_gpus}),`/`,e.total_gpus,` GPUs in use`]}),(0,R.jsxs)(`span`,{children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:e.used_mem_gb.toFixed(0)}),` GB used ·`,` `,e.free_mem_gb.toFixed(0),` GB free of `,e.total_mem_gb.toFixed(0),` GB`]})]}),n.map(([e,n])=>(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground`,children:e}),(0,R.jsx)(`div`,{className:`grid grid-cols-1 gap-2 sm:grid-cols-2 xl:grid-cols-3`,children:n.map(e=>(0,R.jsx)(tu,{g:e,colors:t},e.id))})]},e))]})}function tu({g:e,colors:t}){let n=e.usable_gb||e.capacity_gb||1,r=Math.min(100,e.used_gb/n*100);return(0,R.jsxs)(`div`,{className:V(`rounded-md border bg-background p-2.5`,e.dedicated&&`border-foreground/30`,e.tenants?.length?``:`opacity-70`),children:[(0,R.jsxs)(`div`,{className:`mb-1.5 flex items-baseline justify-between gap-2`,children:[(0,R.jsx)(`span`,{className:`truncate font-mono text-[11px] font-medium`,children:e.id}),(0,R.jsx)(`span`,{className:`shrink-0 text-[10px] text-muted-foreground`,children:e.sku})]}),(0,R.jsx)(`div`,{className:`flex h-2.5 w-full overflow-hidden rounded-full bg-muted`,role:`img`,"aria-label":`${e.id} usage`,children:(e.tenants??[]).map((e,r)=>{let i=Math.max(0,e.used_gb)/n*100;return i<=0?null:(0,R.jsxs)(Jl,{children:[(0,R.jsx)(Yl,{asChild:!0,children:(0,R.jsx)(`div`,{style:{width:`${i}%`},className:V(`h-full`,t[e.label]??`bg-foreground`)})}),(0,R.jsxs)(Xl,{children:[e.label,`: `,e.used_gb.toFixed(1),` GB`]})]},`${e.label}-${r}`)})}),(0,R.jsxs)(`div`,{className:`mt-1 flex items-center justify-between text-[10px] text-muted-foreground`,children:[(0,R.jsxs)(`span`,{children:[e.used_gb.toFixed(0),` / `,e.usable_gb.toFixed(0),` GB (`,r.toFixed(0),`%)`]}),e.dedicated&&(0,R.jsx)(`span`,{className:`text-foreground/70`,children:`dedicated`})]})]})}function nu(e){let t=new Map;for(let n of e){let e=t.get(n.node)??[];e.push(n),t.set(n.node,e)}return[...t.entries()]}function ru({code:e,label:t,className:n}){let[r,i]=(0,_.useState)(!1);async function a(){try{await navigator.clipboard.writeText(e),i(!0),M.success(t?`${t} copied`:`Copied to clipboard`),setTimeout(()=>i(!1),1500)}catch{M.error(`Failed to copy`)}}return(0,R.jsxs)(`div`,{className:V(`group relative overflow-hidden rounded-lg border bg-muted/40`,n),children:[(0,R.jsx)(`pre`,{className:`overflow-x-auto whitespace-pre-wrap break-all p-3 pr-12 font-mono text-[11.5px] leading-relaxed text-foreground`,children:e}),(0,R.jsx)(Qt,{type:`button`,variant:`ghost`,size:`icon`,onClick:a,"aria-label":`Copy`,className:`absolute right-1.5 top-1.5 h-7 w-7`,children:r?(0,R.jsx)(_e,{className:`h-3.5 w-3.5`}):(0,R.jsx)(be,{className:`h-3.5 w-3.5`})})]})}function iu({capacity:e,segments:t,className:n}){let r=e||1,i=t.filter(e=>e.key!==`headroom`).reduce((e,t)=>e+Math.max(0,t.gb),0);return(0,R.jsxs)(`div`,{className:V(`space-y-2`,n),children:[(0,R.jsx)(`div`,{className:`flex h-2.5 w-full overflow-hidden rounded-full bg-muted`,role:`img`,"aria-label":`Memory: ${i.toFixed(1)} of ${e.toFixed(0)} GB used`,children:t.map(e=>{let t=Math.max(0,e.gb)/r*100;return t<=0?null:(0,R.jsxs)(Jl,{children:[(0,R.jsx)(Yl,{asChild:!0,children:(0,R.jsx)(`div`,{style:{width:`${t}%`},className:V(`h-full transition-all`,e.className)})}),(0,R.jsxs)(Xl,{children:[e.label,`: `,e.gb.toFixed(1),` GB (`,t.toFixed(1),`%)`]})]},e.key)})}),(0,R.jsx)(`div`,{className:`flex flex-wrap gap-x-3 gap-y-1 text-[11px] text-muted-foreground`,children:t.map(e=>(0,R.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,R.jsx)(`span`,{className:V(`h-2 w-2 rounded-sm`,e.className),"aria-hidden":!0}),e.label,` `,e.gb.toFixed(1),` GB`]},e.key))})]})}var au=nt(`inline-flex items-center rounded-md border px-2 py-0.5 text-xs font-medium transition-colors`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground`,secondary:`border-transparent bg-secondary text-secondary-foreground`,destructive:`border-transparent bg-destructive text-destructive-foreground`,outline:`text-foreground`,success:`border-transparent bg-brand-soft text-brand`,warn:`border-transparent bg-warn-soft text-warn`}},defaultVariants:{variant:`default`}});function ou({className:e,variant:t,...n}){return(0,R.jsx)(`div`,{className:V(au({variant:t}),e),...n})}var su=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(`div`,{ref:n,className:V(`rounded-xl border bg-card text-card-foreground shadow-sm`,e),...t}));su.displayName=`Card`;var cu=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(`div`,{ref:n,className:V(`flex flex-col space-y-1.5 p-5`,e),...t}));cu.displayName=`CardHeader`;var lu=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(`div`,{ref:n,className:V(`font-semibold leading-none tracking-tight`,e),...t}));lu.displayName=`CardTitle`;var uu=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(`div`,{ref:n,className:V(`text-sm text-muted-foreground`,e),...t}));uu.displayName=`CardDescription`;var du=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(`div`,{ref:n,className:V(`p-5 pt-0`,e),...t}));du.displayName=`CardContent`;var fu=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(`div`,{ref:n,className:V(`flex items-center p-5 pt-0`,e),...t}));fu.displayName=`CardFooter`;function pu({className:e,...t}){return(0,R.jsx)(`div`,{className:V(`animate-pulse rounded-md bg-muted`,e),...t})}var mu=[`bg-emerald-500`,`bg-sky-500`,`bg-violet-500`,`bg-amber-500`,`bg-rose-500`,`bg-cyan-500`,`bg-fuchsia-500`,`bg-lime-600`,`bg-orange-500`,`bg-indigo-500`];function hu(e){let t={},n=0;for(let r of e)r in t||(t[r]=mu[n%mu.length],n++);return t}var gu={feasible:{label:`Feasible`,tone:`success`,description:`At least one configuration fits and meets the SLOs.`},fit_ok:{label:`Fits`,tone:`success`},all_fit:{label:`All models fit`,tone:`success`,description:`Every model was placed on the shared GPU inventory.`},partial_fit:{label:`Partial fit`,tone:`warn`,description:`Some models fit; others could not be placed.`},none_fit:{label:`Nothing fits`,tone:`destructive`,description:`No model could be placed on the inventory.`},no_models:{label:`No models`,tone:`muted`,description:`Add a model to plan.`},infeasible_oom:{label:`Out of memory`,tone:`destructive`,description:`No configuration fits within the available GPU memory.`},infeasible_slo:{label:`SLO miss`,tone:`destructive`,description:`Configurations fit but none meet the requested latency targets.`},infeasible_topology:{label:`Topology infeasible`,tone:`destructive`,description:`No legal placement exists for the requested parallelism.`},model_unsupported:{label:`Model unsupported`,tone:`destructive`,description:`The model architecture is not recognized by the planner.`},model_unreachable:{label:`Model unreachable`,tone:`destructive`,description:`Could not fetch the model metadata from Hugging Face.`}};function _u(e){return gu[e]??{label:e.replace(/_/g,` `),tone:`muted`}}function vu({loading:e,error:t,resp:n,advanced:r}){if(t)return(0,R.jsxs)(su,{className:`border-destructive/40`,children:[(0,R.jsx)(cu,{className:`pb-2`,children:(0,R.jsx)(lu,{className:`text-sm text-destructive`,children:`Error`})}),(0,R.jsx)(du,{className:`text-sm text-muted-foreground`,children:t})]});if(e&&!n)return(0,R.jsxs)(`div`,{className:`space-y-3`,children:[(0,R.jsx)(pu,{className:`h-7 w-40`}),(0,R.jsx)(pu,{className:`h-32 w-full`}),(0,R.jsx)(pu,{className:`h-24 w-full`})]});if(!n)return(0,R.jsx)(`div`,{className:`flex h-full min-h-[40vh] items-center justify-center text-center`,children:(0,R.jsxs)(`div`,{className:`max-w-sm space-y-1`,children:[(0,R.jsx)(`p`,{className:`text-sm font-medium`,children:`Add models and GPUs to see how they fit.`}),(0,R.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Fitment and placement update live as you edit.`})]})});let i=_u(n.verdict),a=hu(n.models.map(e=>e.label)),o=n.models.filter(e=>e.fitted).length;return(0,R.jsxs)(`div`,{className:`space-y-5`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,R.jsx)(ou,{variant:Cu(i.tone),children:i.label}),(0,R.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[o,`/`,n.models.length,` models placed`,n.diagnostics?.elapsed_ms!=null&&` · ${n.diagnostics.elapsed_ms} ms`]})]}),n.warnings?.map((e,t)=>(0,R.jsx)(`p`,{className:`rounded-md border border-warn/30 bg-warn-soft/40 px-3 py-2 text-xs text-warn`,children:e},t)),(0,R.jsxs)(su,{children:[(0,R.jsx)(cu,{className:`pb-3`,children:(0,R.jsx)(lu,{className:`text-sm`,children:`Cluster placement`})}),(0,R.jsx)(du,{children:(0,R.jsx)(eu,{cluster:n.cluster,colors:a})})]}),(0,R.jsx)(`div`,{className:`space-y-3`,children:n.models.map(e=>(0,R.jsx)(yu,{m:e,color:a[e.label],advanced:r},`${e.label}-${e.hf_id}`))})]})}function yu({m:e,color:t,advanced:n}){let r=e.chosen;return(0,R.jsxs)(su,{className:V(!e.fitted&&`border-destructive/40`),children:[(0,R.jsxs)(cu,{className:`flex flex-row items-center justify-between space-y-0 pb-2`,children:[(0,R.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,R.jsx)(`span`,{className:V(`h-3 w-3 shrink-0 rounded-sm`,t),"aria-hidden":!0}),(0,R.jsxs)(`div`,{className:`min-w-0`,children:[(0,R.jsx)(`div`,{className:`truncate text-sm font-medium`,children:e.label}),e.label!==e.hf_id&&(0,R.jsx)(`div`,{className:`truncate font-mono text-[11px] text-muted-foreground`,children:e.hf_id})]})]}),e.fitted?(0,R.jsx)(ou,{variant:`success`,className:`shrink-0`,children:`placed`}):(0,R.jsx)(ou,{variant:`destructive`,className:`shrink-0`,children:`no fit`})]}),(0,R.jsxs)(du,{className:`space-y-3`,children:[!e.fitted&&(0,R.jsx)(`p`,{className:`text-xs text-destructive`,children:e.reason}),r&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-1 text-xs`,children:[(0,R.jsx)(Su,{label:`quant`,value:`${r.engine_config.quantization} · kv=${r.engine_config.kv_cache_dtype}`}),(0,R.jsx)(Su,{label:`topology`,value:xu(r)}),(0,R.jsx)(Su,{label:`GPUs`,value:`${e.gpu_ids?.length??r.placement.gpu_ids.length}`}),(0,R.jsx)(Su,{label:`per-GPU`,value:`${r.memory_per_gpu_gb.total_used.toFixed(1)} GB`}),e.dedicated&&(0,R.jsx)(`span`,{className:`text-muted-foreground`,children:`dedicated`}),(e.replicas??1)>1&&(0,R.jsxs)(`span`,{className:`text-muted-foreground`,children:[`×`,e.replicas,` replicas`]})]}),e.gpu_ids&&e.gpu_ids.length>0&&(0,R.jsx)(`div`,{className:`font-mono text-[10.5px] text-muted-foreground`,children:e.gpu_ids.join(` `)}),n&&(0,R.jsx)(bu,{cfg:r,altCount:e.alternatives?.length??0})]})]})]})}function bu({cfg:e,altCount:t}){let n=e.memory_per_gpu_gb,r=e.performance_estimate;return(0,R.jsxs)(`details`,{className:`group rounded-md border bg-muted/20 p-2.5 text-xs`,children:[(0,R.jsxs)(`summary`,{className:`flex cursor-pointer items-center gap-1 font-medium text-muted-foreground hover:text-foreground`,children:[(0,R.jsx)(ve,{className:`h-3.5 w-3.5 transition-transform group-open:rotate-180`}),`Performance, memory & command`,t>0&&(0,R.jsxs)(`span`,{className:`ml-1 font-normal`,children:[`· `,t,` alternative config(s)`]})]}),(0,R.jsxs)(`div`,{className:`mt-3 space-y-3`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1`,children:[(0,R.jsx)(Su,{label:`TTFT p95`,value:`${r.ttft_ms_p95.toFixed(0)} ms`}),(0,R.jsx)(Su,{label:`TPOT p95`,value:`${r.tpot_ms_p95.toFixed(0)} ms`}),(0,R.jsx)(Su,{label:`decode/user`,value:`${r.decode_tokens_per_sec_per_user.toFixed(0)} tok/s`}),(0,R.jsx)(Su,{label:`aggregate`,value:`${r.decode_tokens_per_sec_aggregate.toFixed(0)} tok/s`}),(0,R.jsx)(Su,{label:`bottleneck`,value:`${r.bottleneck} (${r.confidence})`})]}),(0,R.jsx)(iu,{capacity:n.total_capacity||n.total_used,segments:[{key:`weights`,label:`weights`,gb:n.weights,className:`bg-foreground`},{key:`kv`,label:`KV cache`,gb:n.kv_cache_reserved,className:`bg-warn`},{key:`activations`,label:`activations`,gb:n.activations_peak,className:`bg-destructive/80`},{key:`overhead`,label:`overhead`,gb:n.framework_overhead,className:`bg-muted-foreground/50`},{key:`headroom`,label:`headroom`,gb:n.headroom,className:`bg-muted`}]}),(0,R.jsx)(ru,{code:e.vllm_command,label:`vLLM command`})]})]})}function xu(e){let t=e.placement,n=[`TP=${t.tensor_parallel}`];return t.pipeline_parallel>1&&n.push(`PP=${t.pipeline_parallel}`),t.expert_parallel>1&&n.push(`EP=${t.expert_parallel}`),t.data_parallel>1&&n.push(`DP=${t.data_parallel}`),n.join(` `)}function Su({label:e,value:t}){return(0,R.jsxs)(`span`,{className:`inline-flex items-baseline gap-1`,children:[(0,R.jsx)(`span`,{className:`text-muted-foreground`,children:e}),(0,R.jsx)(`span`,{className:`font-medium tabular-nums`,children:t})]})}function Cu(e){switch(e){case`success`:return`success`;case`destructive`:return`destructive`;case`warn`:return`warn`;default:return`secondary`}}function wu(e=``){return{uid:crypto.randomUUID(),hf_id:e}}function Tu({models:e,setModels:t,advanced:n}){let r=(n,r)=>t(e.map(e=>e.uid===n?{...e,...r}:e)),i=n=>t(e.filter(e=>e.uid!==n));return(0,R.jsxs)(`div`,{className:`space-y-2.5`,children:[e.map((t,a)=>(0,R.jsxs)(`div`,{className:`rounded-md border bg-background p-2.5`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(`span`,{className:`w-4 shrink-0 text-center text-xs tabular-nums text-muted-foreground`,children:a+1}),(0,R.jsx)($t,{value:t.hf_id,onChange:e=>r(t.uid,{hf_id:e.target.value}),placeholder:`org/Model-Name`,className:`h-8 flex-1 font-mono text-xs`,"aria-label":`Model ${a+1} Hugging Face ID`}),(0,R.jsx)(Qt,{type:`button`,variant:`ghost`,size:`icon`,className:`h-7 w-7 shrink-0`,onClick:()=>i(t.uid),"aria-label":`Remove model ${a+1}`,disabled:e.length<=1,children:(0,R.jsx)(je,{className:`h-3.5 w-3.5`})})]}),n&&(0,R.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-3 pl-6 text-xs`,children:[(0,R.jsx)($t,{value:t.revision??``,onChange:e=>r(t.uid,{revision:e.target.value||void 0}),placeholder:`revision`,className:`h-7 w-28 font-mono text-[11px]`,"aria-label":`revision`}),(0,R.jsxs)(`label`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[`replicas`,(0,R.jsx)($t,{type:`number`,min:1,value:t.replicas??1,onChange:e=>r(t.uid,{replicas:Math.max(1,Number(e.target.value)||1)}),className:`h-7 w-14 text-[11px]`,"aria-label":`replicas`})]}),(0,R.jsxs)(`label`,{className:V(`flex cursor-pointer items-center gap-1.5 text-muted-foreground`,t.dedicated&&`text-foreground`),children:[(0,R.jsx)(`input`,{type:`checkbox`,checked:!!t.dedicated,onChange:e=>r(t.uid,{dedicated:e.target.checked||void 0}),className:`h-3.5 w-3.5 accent-foreground`}),`dedicated GPUs`]})]})]},t.uid)),(0,R.jsxs)(Qt,{type:`button`,variant:`outline`,size:`sm`,className:`w-full`,onClick:()=>t([...e,wu()]),children:[(0,R.jsx)(Te,{className:`h-3.5 w-3.5`}),`Add model`]})]})}var Eu=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=Ge(`Primitive.${t}`),r=_.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,R.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),Du=`Separator`,Ou=`horizontal`,ku=[`horizontal`,`vertical`],Au=_.forwardRef((e,t)=>{let{decorative:n,orientation:r=Ou,...i}=e,a=ju(r)?r:Ou,o=n?{role:`none`}:{"aria-orientation":a===`vertical`?a:void 0,role:`separator`};return(0,R.jsx)(Eu.div,{"data-orientation":a,...o,...i,ref:t})});Au.displayName=Du;function ju(e){return ku.includes(e)}var Mu=Au,Nu=_.forwardRef(({className:e,orientation:t=`horizontal`,decorative:n=!0,...r},i)=>(0,R.jsx)(Mu,{ref:i,decorative:n,orientation:t,className:V(`shrink-0 bg-border`,t===`horizontal`?`h-px w-full`:`h-full w-px`,e),...r}));Nu.displayName=Mu.displayName;var Pu=(0,_.createContext)(void 0);function Fu({children:e,defaultTheme:t=`light`,storageKey:n=`gt-theme`}){let[r,i]=(0,_.useState)(()=>typeof window>`u`?t:window.localStorage.getItem(n)??t);(0,_.useEffect)(()=>{let e=document.documentElement;e.classList.remove(`light`,`dark`),e.classList.add(r)},[r]);let a=e=>{window.localStorage.setItem(n,e),i(e)},o=(0,_.useMemo)(()=>({theme:r,setTheme:a,toggle:()=>a(r===`dark`?`light`:`dark`)}),[r]);return(0,R.jsx)(Pu.Provider,{value:o,children:e})}function Iu(){let e=(0,_.useContext)(Pu);if(!e)throw Error(`useTheme must be used within ThemeProvider`);return e}function Lu({title:e,lede:t,actions:n,children:r}){let{theme:i,toggle:a}=Iu();return(0,R.jsxs)(`div`,{className:`flex h-screen flex-col overflow-hidden bg-background`,children:[(0,R.jsxs)(`header`,{className:`flex h-14 shrink-0 items-center gap-3 border-b bg-card px-4 lg:px-6`,children:[(0,R.jsx)(`img`,{src:`/logo.png`,alt:`GreenThread`,className:`h-7 w-auto dark:invert dark:hue-rotate-180`}),(0,R.jsx)(Nu,{orientation:`vertical`,className:`h-6`}),(0,R.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,R.jsx)(`span`,{className:`truncate text-sm font-semibold leading-tight`,children:e}),t&&(0,R.jsx)(`span`,{className:`truncate text-[11px] text-muted-foreground`,children:t})]}),(0,R.jsxs)(`div`,{className:`ml-auto flex items-center gap-2`,children:[n,(0,R.jsx)(Qt,{variant:`ghost`,size:`icon`,onClick:a,"aria-label":i===`dark`?`Switch to light theme`:`Switch to dark theme`,children:i===`dark`?(0,R.jsx)(ke,{className:`h-4 w-4`}):(0,R.jsx)(we,{className:`h-4 w-4`})})]})]}),(0,R.jsx)(`div`,{className:`flex flex-1 overflow-hidden`,children:r})]})}var Ru=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(`label`,{ref:n,className:V(`text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70`,e),...t}));Ru.displayName=`Label`;function zu({label:e,htmlFor:t,hint:n,className:r,children:i}){return(0,R.jsxs)(`div`,{className:V(`space-y-1.5`,r),children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)(Ru,{htmlFor:t,className:`text-xs text-muted-foreground`,children:e}),n&&(0,R.jsxs)(Jl,{children:[(0,R.jsx)(Yl,{asChild:!0,children:(0,R.jsx)(`button`,{type:`button`,"aria-label":`${e}: more info`,className:`text-muted-foreground/60 hover:text-foreground`,children:(0,R.jsx)(Ce,{className:`h-3 w-3`})})}),(0,R.jsx)(Xl,{side:`top`,children:n})]})]}),i]})}var Bu=`s`;function Vu(e){let t=``;for(let n=0;n({id:`node-01-gpu-${t}`,model:`H100-SXM5`,memory_total_gb:80,memory_free_gb:80,in_use:!1}))}],Ju={max_concurrent_requests:32,max_context_length:8192,avg_input_tokens:1e3,avg_output_tokens:500,slo:{target_ttft_p95_ms:0,target_tpot_p95_ms:0,target_decode_tps_per_user:0}},Yu={allowed_quantizations:[`bf16`,`fp8`,`awq`,`gptq`],allowed_kv_cache_dtypes:[`auto`,`fp8`],max_tensor_parallel:8,max_pipeline_parallel:1,max_data_parallel:1,allow_cross_node_parallelism:!1,allow_kv_head_replication:!1,min_gpu_memory_utilization:.85,max_gpu_memory_utilization:.92,framework_overhead_gb:2,max_results:10},Xu=[wu(`Qwen/Qwen3-8B`),wu(`deepseek-ai/DeepSeek-V3.2-Exp`)],Zu=[`bf16`,`fp16`,`fp8`,`int8`,`awq`,`gptq`,`compressed-tensors`],Qu=[`auto`,`fp8`,`int8`];function $u(){let e=(0,_.useMemo)(()=>Z(),[]),[t,n]=(0,_.useState)(()=>e?.models??Fe(`models`,Xu)),[r,i]=(0,_.useState)(()=>e?.workload??Fe(`workload`,Ju)),[a,o]=(0,_.useState)(()=>e?.constraints??Fe(`constraints`,Yu)),[s,c]=(0,_.useState)(()=>e?.nodes??Fe(`nodes`,qu)),[l,u]=(0,_.useState)(()=>e?.advanced??Fe(`advanced`,!1)),[d,f]=(0,_.useState)(``),[p,m]=(0,_.useState)(!1),[h,g]=(0,_.useState)([]),[v,y]=(0,_.useState)(null),[b,x]=(0,_.useState)(!1),[S,C]=(0,_.useState)(null),w=(0,_.useMemo)(()=>({v:1,models:t,workload:r,constraints:a,nodes:s,advanced:l}),[t,r,a,s,l]);(0,_.useEffect)(()=>{Ie(`models`,t),Ie(`workload`,r),Ie(`constraints`,a),Ie(`nodes`,s),Ie(`advanced`,l),Gu(w)},[w,t,r,a,s,l]),(0,_.useEffect)(()=>{localStorage.removeItem(`fit:hf_token`),Ne().then(g).catch(e=>C(`gpu catalog: ${e?.message??e}`))},[]);let T=(0,_.useMemo)(()=>({models:t.filter(e=>e.hf_id.trim()).map(e=>({hf_id:e.hf_id.trim(),...e.revision?{revision:e.revision}:{},...d?{hf_token:d}:{},...e.dedicated?{dedicated:!0}:{},...e.replicas&&e.replicas>1?{replicas:e.replicas}:{}})),workload:r,constraints:a,inventory:{nodes:s}}),[t,d,r,a,s]),E=(0,_.useRef)(null);(0,_.useEffect)(()=>{if(T.models.length===0){y(null);return}if(s.every(e=>e.gpus.length===0)||r.max_concurrent_requests<=0||r.max_context_length<=0)return;let e=setTimeout(()=>{E.current?.abort();let e=new AbortController;E.current=e,x(!0),C(null),Me(T,e.signal).then(y).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||C(e instanceof Error?e.message:String(e))}).finally(()=>x(!1))},350);return()=>clearTimeout(e)},[T,s,r.max_concurrent_requests,r.max_context_length]);let ee=e=>o(t=>{let n=t.allowed_quantizations??[];return{...t,allowed_quantizations:n.includes(e)?n.filter(t=>t!==e):[...n,e]}}),D=e=>o(t=>{let n=t.allowed_kv_cache_dtypes??[];return{...t,allowed_kv_cache_dtypes:n.includes(e)?n.filter(t=>t!==e):[...n,e]}});return(0,R.jsxs)(Lu,{title:`Fit`,lede:`multi-model GPU placement planner`,actions:(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[b&&(0,R.jsx)(`span`,{className:`mr-1 hidden h-2 w-2 animate-pulse rounded-full bg-foreground/40 md:inline-block`}),(0,R.jsxs)(Qt,{variant:l?`secondary`:`ghost`,size:`sm`,onClick:()=>u(e=>!e),"aria-pressed":l,children:[(0,R.jsx)(De,{className:`h-3.5 w-3.5`}),`Advanced`]}),(0,R.jsxs)(Qt,{variant:`default`,size:`sm`,onClick:async()=>{let e=Ku(w);try{await navigator.clipboard.writeText(e),M.success(`Share link copied`,{description:`GPUs, models and settings are encoded in the URL.`})}catch{window.prompt(`Copy this share link:`,e)}},children:[(0,R.jsx)(Oe,{className:`h-3.5 w-3.5`}),`Share`]})]}),children:[(0,R.jsx)(`aside`,{className:`w-[440px] shrink-0 overflow-y-auto border-r bg-card/40 p-5`,children:(0,R.jsxs)(`div`,{className:`space-y-5`,children:[(0,R.jsxs)(su,{children:[(0,R.jsx)(cu,{className:`pb-3`,children:(0,R.jsx)(lu,{className:`text-sm`,children:`Models`})}),(0,R.jsxs)(du,{className:`space-y-3`,children:[(0,R.jsx)(Tu,{models:t,setModels:n,advanced:l}),(0,R.jsx)(zu,{label:`HF token`,htmlFor:`hf-token`,hint:`Required only for gated models. Never persisted or shared; falls back to the server's HF_TOKEN env.`,children:(0,R.jsxs)(`div`,{className:`relative`,children:[(0,R.jsx)($t,{id:`hf-token`,type:p?`text`:`password`,value:d,onChange:e=>f(e.target.value),placeholder:`hf_…`,className:`pr-10`,autoComplete:`off`}),(0,R.jsx)(Qt,{type:`button`,variant:`ghost`,size:`icon`,onClick:()=>m(e=>!e),"aria-label":p?`Hide token`:`Show token`,className:`absolute right-1 top-1/2 h-7 w-7 -translate-y-1/2`,children:p?(0,R.jsx)(xe,{className:`h-3.5 w-3.5`}):(0,R.jsx)(Se,{className:`h-3.5 w-3.5`})})]})})]})]}),(0,R.jsxs)(su,{children:[(0,R.jsx)(cu,{className:`pb-3`,children:(0,R.jsx)(lu,{className:`text-sm`,children:`Workload`})}),(0,R.jsxs)(du,{className:`space-y-3`,children:[(0,R.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,R.jsx)(zu,{label:`Max concurrent`,htmlFor:`wl-conc`,hint:`Maximum in-flight requests per model.`,children:(0,R.jsx)($t,{id:`wl-conc`,type:`number`,value:r.max_concurrent_requests,onChange:e=>i({...r,max_concurrent_requests:Number(e.target.value)})})}),(0,R.jsx)(zu,{label:`Max context`,htmlFor:`wl-ctx`,hint:`Maximum context length (tokens) the engine must support.`,children:(0,R.jsx)($t,{id:`wl-ctx`,type:`number`,value:r.max_context_length,onChange:e=>i({...r,max_context_length:Number(e.target.value)})})}),l&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(zu,{label:`Avg input tokens`,htmlFor:`wl-in`,hint:`Typical prompt length; sizes KV cache reservations.`,children:(0,R.jsx)($t,{id:`wl-in`,type:`number`,value:r.avg_input_tokens??0,onChange:e=>i({...r,avg_input_tokens:Number(e.target.value)})})}),(0,R.jsx)(zu,{label:`Avg output tokens`,htmlFor:`wl-out`,hint:`Typical generation length; sizes KV cache + throughput.`,children:(0,R.jsx)($t,{id:`wl-out`,type:`number`,value:r.avg_output_tokens??0,onChange:e=>i({...r,avg_output_tokens:Number(e.target.value)})})})]})]}),l&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(Nu,{}),(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(`p`,{className:`mb-2 text-[10.5px] font-semibold uppercase tracking-wider text-muted-foreground`,children:[`SLOs `,(0,R.jsx)(`span`,{className:`font-normal normal-case tracking-normal`,children:`(0 = unconstrained · advisory in fit)`})]}),(0,R.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,R.jsx)(zu,{label:`TTFT p95 (ms)`,htmlFor:`slo-ttft`,hint:`Time To First Token, 95th percentile.`,children:(0,R.jsx)($t,{id:`slo-ttft`,type:`number`,value:r.slo.target_ttft_p95_ms??0,onChange:e=>i({...r,slo:{...r.slo,target_ttft_p95_ms:Number(e.target.value)}})})}),(0,R.jsx)(zu,{label:`TPOT p95 (ms)`,htmlFor:`slo-tpot`,hint:`Time Per Output Token, 95th percentile.`,children:(0,R.jsx)($t,{id:`slo-tpot`,type:`number`,value:r.slo.target_tpot_p95_ms??0,onChange:e=>i({...r,slo:{...r.slo,target_tpot_p95_ms:Number(e.target.value)}})})}),(0,R.jsx)(zu,{label:`Decode tok/s per user`,htmlFor:`slo-decode`,hint:`Sustained per-user output throughput.`,className:`col-span-2`,children:(0,R.jsx)($t,{id:`slo-decode`,type:`number`,value:r.slo.target_decode_tps_per_user??0,onChange:e=>i({...r,slo:{...r.slo,target_decode_tps_per_user:Number(e.target.value)}})})})]})]})]})]})]}),l&&(0,R.jsxs)(su,{children:[(0,R.jsx)(cu,{className:`pb-3`,children:(0,R.jsx)(lu,{className:`text-sm`,children:`Constraints`})}),(0,R.jsxs)(du,{className:`space-y-4`,children:[(0,R.jsx)(zu,{label:`Allowed quantizations`,hint:`Only configurations using one of these weight quantizations are considered.`,children:(0,R.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Zu.map(e=>(0,R.jsx)(ed,{on:!!a.allowed_quantizations?.includes(e),onClick:()=>ee(e),children:e},e))})}),(0,R.jsx)(zu,{label:`KV cache dtype`,hint:`Allowed key/value cache dtypes. fp8 halves cache footprint.`,children:(0,R.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Qu.map(e=>(0,R.jsx)(ed,{on:!!a.allowed_kv_cache_dtypes?.includes(e),onClick:()=>D(e),children:e},e))})}),(0,R.jsxs)(`div`,{className:`grid grid-cols-3 gap-3`,children:[(0,R.jsx)(zu,{label:`Max TP`,htmlFor:`c-tp`,hint:`Tensor Parallel: shard each layer across this many GPUs.`,children:(0,R.jsx)($t,{id:`c-tp`,type:`number`,value:a.max_tensor_parallel??1,onChange:e=>o({...a,max_tensor_parallel:Number(e.target.value)})})}),(0,R.jsx)(zu,{label:`Max PP`,htmlFor:`c-pp`,hint:`Pipeline Parallel: sequential stages across GPUs.`,children:(0,R.jsx)($t,{id:`c-pp`,type:`number`,value:a.max_pipeline_parallel??1,onChange:e=>o({...a,max_pipeline_parallel:Number(e.target.value)})})}),(0,R.jsx)(zu,{label:`Max DP`,htmlFor:`c-dp`,hint:`Data Parallel: independent replicas for throughput.`,children:(0,R.jsx)($t,{id:`c-dp`,type:`number`,value:a.max_data_parallel??1,onChange:e=>o({...a,max_data_parallel:Number(e.target.value)})})})]}),(0,R.jsx)(zu,{label:`GPU memory utilization (max)`,htmlFor:`c-mem`,hint:`Upper bound on per-GPU memory the engine may use. The fit packer treats this × free memory as each GPU's budget.`,children:(0,R.jsx)($t,{id:`c-mem`,type:`number`,step:`0.01`,min:`0`,max:`1`,value:a.max_gpu_memory_utilization??.92,onChange:e=>o({...a,max_gpu_memory_utilization:Number(e.target.value)})})}),(0,R.jsxs)(`label`,{className:`flex items-center gap-2 text-sm`,children:[(0,R.jsx)(`input`,{type:`checkbox`,checked:!!a.allow_cross_node_parallelism,onChange:e=>o({...a,allow_cross_node_parallelism:e.target.checked}),className:`h-4 w-4 accent-foreground`}),(0,R.jsx)(`span`,{className:`text-muted-foreground`,children:`Allow cross-node parallelism`})]})]})]}),(0,R.jsxs)(su,{children:[(0,R.jsxs)(cu,{className:`flex flex-row items-center justify-between space-y-0 pb-3`,children:[(0,R.jsx)(lu,{className:`text-sm`,children:`Inventory`}),(0,R.jsxs)(Qt,{variant:`ghost`,size:`sm`,onClick:()=>{confirm(`Reset inventory to defaults?`)&&c(qu)},children:[(0,R.jsx)(Ee,{className:`h-3 w-3`}),`Reset`]})]}),(0,R.jsx)(du,{children:(0,R.jsx)(Ql,{nodes:s,setNodes:c,skus:h})})]}),l&&(0,R.jsxs)(`details`,{className:`text-xs`,children:[(0,R.jsx)(`summary`,{className:`cursor-pointer text-muted-foreground hover:text-foreground`,children:`Request preview`}),(0,R.jsx)(`pre`,{className:`mt-2 max-h-72 overflow-auto rounded-md border bg-muted/40 p-3 font-mono text-[11px]`,children:JSON.stringify(T,null,2)})]}),(0,R.jsxs)(`p`,{className:`text-[11px] text-muted-foreground`,children:[`Proxied via `,(0,R.jsx)(Ru,{className:`font-mono`,children:`/api`})]})]})}),(0,R.jsx)(`main`,{className:`flex-1 overflow-y-auto p-5 lg:p-8`,children:(0,R.jsx)(vu,{loading:b,error:S,resp:v,advanced:l})})]})}function ed({on:e,onClick:t,children:n}){return(0,R.jsx)(`button`,{type:`button`,onClick:t,className:V(`rounded-full border px-2.5 py-0.5 text-xs font-medium transition-colors`,e?`border-foreground bg-foreground text-background`:`border-border bg-background text-muted-foreground hover:border-foreground/40 hover:text-foreground`),children:n})}(0,v.createRoot)(document.getElementById(`root`)).render((0,R.jsx)(_.StrictMode,{children:(0,R.jsx)(Fu,{defaultTheme:`light`,storageKey:`fit:theme`,children:(0,R.jsxs)(ql,{delayDuration:150,children:[(0,R.jsx)($u,{}),(0,R.jsx)(({...e})=>{let{theme:t}=Iu();return(0,R.jsx)(de,{theme:t,className:`toaster group`,toastOptions:{classNames:{toast:`group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg`,description:`group-[.toast]:text-muted-foreground`,actionButton:`group-[.toast]:bg-primary group-[.toast]:text-primary-foreground`,cancelButton:`group-[.toast]:bg-muted group-[.toast]:text-muted-foreground`}},...e})},{position:`bottom-right`,richColors:!0,closeButton:!0})]})})})); \ No newline at end of file diff --git a/internal/webui/dist/assets/index-sMyt4aUY.js b/internal/webui/dist/assets/index-sMyt4aUY.js deleted file mode 100644 index 9a1e58f..0000000 --- a/internal/webui/dist/assets/index-sMyt4aUY.js +++ /dev/null @@ -1,50 +0,0 @@ -var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var l=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function ee(e,t){return E(e.type,t,e.props)}function D(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function O(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var k=/\/+/g;function te(e,t){return typeof e==`object`&&e&&e.key!=null?O(``+e.key):t.toString(36)}function ne(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function A(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,A(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+te(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(k,`$&/`)+`/`),A(o,r,i,``,function(e){return e})):o!=null&&(D(o)&&(o=ee(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(k,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u{t.exports=l()})),d=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,D());else{var t=n(l);t!==null&&te(x,t.startTime-e)}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-Tt&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&te(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?D():S=!1}}}var D;if(typeof y==`function`)D=function(){y(ee)};else if(typeof MessageChannel<`u`){var O=new MessageChannel,k=O.port2;O.port1.onmessage=ee,D=function(){k.postMessage(null)}}else D=function(){_(ee,0)};function te(t,n){C=_(function(){t(e.unstable_now())},n)}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(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,te(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,D()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),f=o(((e,t)=>{t.exports=d()})),p=o((e=>{var t=u();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=p()})),h=o((e=>{var t=f(),n=u(),r=m();function i(e){var t=`https://react.dev/errors/`+e;if(1oe||(e.current=ae[oe],ae[oe]=null,oe--)}function P(e,t){oe++,ae[oe]=e.current,e.current=t}var le=se(null),ue=se(null),F=se(null),de=se(null);function I(e,t){switch(P(F,t),P(ue,e),P(le,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}ce(le),P(le,e)}function fe(){ce(le),ce(ue),ce(F)}function pe(e){e.memoizedState!==null&&P(de,e);var t=le.current,n=Hd(t,e.type);t!==n&&(P(ue,e),P(le,n))}function me(e){ue.current===e&&(ce(le),ce(ue)),de.current===e&&(ce(de),Qf._currentValue=ie)}var he,ge;function _e(e){if(he===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);he=t&&t[1]||``,ge=-1)`:-1i||c[r]!==l[i]){var u=` -`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{ve=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?_e(n):``}function be(e,t){switch(e.tag){case 26:case 27:case 5:return _e(e.type);case 16:return _e(`Lazy`);case 13:return e.child!==t&&t!==null?_e(`Suspense Fallback`):_e(`Suspense`);case 19:return _e(`SuspenseList`);case 0:case 15:return ye(e.type,!1);case 11:return ye(e.type.render,!1);case 1:return ye(e.type,!0);case 31:return _e(`Activity`);default:return``}}function xe(e){try{var t=``,n=null;do t+=be(e,n),n=e,e=e.return;while(e);return t}catch(e){return` -Error generating stack: `+e.message+` -`+e.stack}}var Se=Object.prototype.hasOwnProperty,Ce=t.unstable_scheduleCallback,we=t.unstable_cancelCallback,Te=t.unstable_shouldYield,Ee=t.unstable_requestPaint,De=t.unstable_now,Oe=t.unstable_getCurrentPriorityLevel,ke=t.unstable_ImmediatePriority,Ae=t.unstable_UserBlockingPriority,je=t.unstable_NormalPriority,Me=t.unstable_LowPriority,Ne=t.unstable_IdlePriority,Pe=t.log,Fe=t.unstable_setDisableYieldValue,Ie=null,Le=null;function Re(e){if(typeof Pe==`function`&&Fe(e),Le&&typeof Le.setStrictMode==`function`)try{Le.setStrictMode(Ie,e)}catch{}}var ze=Math.clz32?Math.clz32:He,Be=Math.log,Ve=Math.LN2;function He(e){return e>>>=0,e===0?32:31-(Be(e)/Ve|0)|0}var Ue=256,We=262144,Ge=4194304;function Ke(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function qe(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=Ke(n))):i=Ke(o):i=Ke(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=Ke(n))):i=Ke(o)):i=Ke(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function L(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Je(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ye(){var e=Ge;return Ge<<=1,!(Ge&62914560)&&(Ge=4194304),e}function Xe(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Ze(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Qe(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),sn=!1;if(on)try{var cn={};Object.defineProperty(cn,`passive`,{get:function(){sn=!0}}),window.addEventListener(`test`,cn,cn),window.removeEventListener(`test`,cn,cn)}catch{sn=!1}var ln=null,un=null,dn=null;function fn(){if(dn)return dn;var e,t=un,n=t.length,r,i=`value`in ln?ln.value:ln.textContent,a=i.length;for(e=0;e=Wn),qn=` `,Jn=!1;function Yn(e,t){switch(e){case`keyup`:return Hn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function Xn(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var Zn=!1;function Qn(e,t){switch(e){case`compositionend`:return Xn(t);case`keypress`:return t.which===32?(Jn=!0,qn):null;case`textInput`:return e=t.data,e===qn&&Jn?null:e;default:return null}}function $n(e,t){if(Zn)return e===`compositionend`||!Un&&Yn(e,t)?(e=fn(),dn=un=ln=null,Zn=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=xr(n)}}function Cr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Cr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function wr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Pt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Pt(e.document)}return t}function Tr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Er=on&&`documentMode`in document&&11>=document.documentMode,Dr=null,Or=null,kr=null,Ar=!1;function jr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Ar||Dr==null||Dr!==Pt(r)||(r=Dr,`selectionStart`in r&&Tr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),kr&&br(kr,r)||(kr=r,r=Ed(Or,`onSelect`),0>=o,i-=o,Ci=1<<32-ze(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),U&&Ti(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),U&&Ti(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return U&&Ti(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),U&&Ti(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===D&&wa(l)===r.type){n(e,r.sibling),c=a(r,o.props),ja(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===y?(c=ui(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=li(o.type,o.key,o.props,null,e.mode,c),ja(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=pi(o,e.mode,c),c.return=e,e=c}return s(e);case D:return o=wa(o),b(e,r,o,c)}if(re(o))return h(e,r,o,c);if(ne(o)){if(l=ne(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,Aa(o),c);if(o.$$typeof===C)return b(e,r,Qi(e,o),c);Ma(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=di(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{ka=0;var i=b(e,t,n,r);return Oa=null,i}catch(t){if(t===va||t===ba)throw t;var a=ai(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Pa=Na(!0),Fa=Na(!1),Ia=!1;function La(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ra(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function za(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Ba(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,K&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=ni(e),ti(e,null,n),t}return Qr(e,r,t,n),ni(e)}function Va(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,et(e,n)}}function Ha(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Ua=!1;function Wa(){if(Ua){var e=la;if(e!==null)throw e}}function Ga(e,t,n,r){Ua=!1;var i=e.updateQueue;Ia=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Y&f)===f:(r&f)===f){f!==0&&f===ca&&(Ua=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(m=g.payload,typeof m==`function`){d=m.call(_,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=g.payload,f=typeof m==`function`?m.call(_,d,f):m,f==null)break a;d=h({},d,f);break a;case 2:Ia=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Gl|=o,e.lanes=o,e.memoizedState=d}}function Ka(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function qa(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=M.T,s={};M.T=s,Ms(e,!1,t,n);try{var c=i(),l=M.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?js(e,t,fa(c,r),pu(e)):js(e,t,r,pu(e))}catch(n){js(e,t,{then:function(){},status:`rejected`,reason:n},pu())}finally{N.p=a,o!==null&&s.types!==null&&(o.types=s.types),M.T=o}}function xs(){}function Ss(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=Cs(e).queue;bs(e,a,t,ie,n===null?xs:function(){return ws(e),n(r)})}function Cs(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ie,baseState:ie,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:No,lastRenderedState:ie},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:No,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function ws(e){var t=Cs(e);t.next===null&&(t=e.alternate.memoizedState),js(e,t.next.queue,{},pu())}function Ts(){return Zi(Qf)}function Es(){return Oo().memoizedState}function Ds(){return Oo().memoizedState}function Os(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=pu();e=za(n);var r=Ba(t,e,n);r!==null&&(hu(r,t,n),Va(r,t,n)),t={cache:ia()},e.payload=t;return}t=t.return}}function ks(e,t,n){var r=pu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Ns(e)?Ps(t,n):(n=$r(e,t,n,r),n!==null&&(hu(n,e,r),Fs(n,t,r)))}function As(e,t,n){js(e,t,n,pu())}function js(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ns(e))Ps(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,yr(s,o))return Qr(e,t,i,0),q===null&&Zr(),!1}catch{}if(n=$r(e,t,i,r),n!==null)return hu(n,e,r),Fs(n,t,r),!0}return!1}function Ms(e,t,n,r){if(r={lane:2,revertLane:dd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Ns(e)){if(t)throw Error(i(479))}else t=$r(e,n,r,2),t!==null&&hu(t,e,2)}function Ns(e){var t=e.alternate;return e===W||t!==null&&t===W}function Ps(e,t){fo=uo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Fs(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,et(e,n)}}var Is={readContext:Zi,use:jo,useCallback:vo,useContext:vo,useEffect:vo,useImperativeHandle:vo,useLayoutEffect:vo,useInsertionEffect:vo,useMemo:vo,useReducer:vo,useRef:vo,useState:vo,useDebugValue:vo,useDeferredValue:vo,useTransition:vo,useSyncExternalStore:vo,useId:vo,useHostTransitionStatus:vo,useFormState:vo,useActionState:vo,useOptimistic:vo,useMemoCache:vo,useCacheRefresh:vo};Is.useEffectEvent=vo;var Ls={readContext:Zi,use:jo,useCallback:function(e,t){return Do().memoizedState=[e,t===void 0?null:t],e},useContext:Zi,useEffect:ss,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),as(4194308,4,ps.bind(null,t,e),n)},useLayoutEffect:function(e,t){return as(4194308,4,e,t)},useInsertionEffect:function(e,t){as(4,2,e,t)},useMemo:function(e,t){var n=Do();t=t===void 0?null:t;var r=e();if(po){Re(!0);try{e()}finally{Re(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Do();if(n!==void 0){var i=n(t);if(po){Re(!0);try{n(t)}finally{Re(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=ks.bind(null,W,e),[r.memoizedState,e]},useRef:function(e){var t=Do();return e={current:e},t.memoizedState=e},useState:function(e){e=Uo(e);var t=e.queue,n=As.bind(null,W,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:hs,useDeferredValue:function(e,t){return vs(Do(),e,t)},useTransition:function(){var e=Uo(!1);return e=bs.bind(null,W,e.queue,!0,!1),Do().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=W,a=Do();if(U){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),q===null)throw Error(i(349));Y&127||Ro(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,ss(Bo.bind(null,r,o,e),[e]),r.flags|=2048,rs(9,{destroy:void 0},zo.bind(null,r,o,n,t),null),n},useId:function(){var e=Do(),t=q.identifierPrefix;if(U){var n=wi,r=Ci;n=(r&~(1<<32-ze(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=mo++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[st]=t,o[R]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Pd(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&jc(t)}}return Ic(t),Mc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&jc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=F.current,Li(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=Ai,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[st]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Md(e.nodeValue,n)),e||Pi(t,!0)}else e=Bd(e).createTextNode(r),e[st]=t,t.stateNode=e}return Ic(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Li(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[st]=t}else Ri(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Ic(t),e=!1}else n=zi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(ao(t),t):(ao(t),null);if(t.flags&128)throw Error(i(558))}return Ic(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=Li(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[st]=t}else Ri(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Ic(t),a=!1}else a=zi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(ao(t),t):(ao(t),null)}return ao(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Pc(t,t.updateQueue),Ic(t),null);case 4:return fe(),e===null&&Sd(t.stateNode.containerInfo),Ic(t),null;case 10:return Gi(t.type),Ic(t),null;case 19:if(ce(oo),r=t.memoizedState,r===null)return Ic(t),null;if(a=(t.flags&128)!=0,o=r.rendering,o===null)if(a)Fc(r,!1);else{if(Wl!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=so(e),o!==null){for(t.flags|=128,Fc(r,!1),e=o.updateQueue,t.updateQueue=e,Pc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)ci(n,e),n=n.sibling;return P(oo,oo.current&1|2),U&&Ti(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&De()>tu&&(t.flags|=128,a=!0,Fc(r,!1),t.lanes=4194304)}else{if(!a)if(e=so(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Pc(t,e),Fc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!U)return Ic(t),null}else 2*De()-r.renderingStartTime>tu&&n!==536870912&&(t.flags|=128,a=!0,Fc(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(Ic(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=De(),e.sibling=null,n=oo.current,P(oo,a?n&1|2:n&1),U&&Ti(t,r.treeForkCount),e);case 22:case 23:return ao(t),Qa(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(Ic(t),t.subtreeFlags&6&&(t.flags|=8192)):Ic(t),n=t.updateQueue,n!==null&&Pc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&ce(ma),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Gi(ra),Ic(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function Rc(e,t){switch(Oi(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Gi(ra),fe(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return me(t),null;case 31:if(t.memoizedState!==null){if(ao(t),t.alternate===null)throw Error(i(340));Ri()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(ao(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Ri()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ce(oo),null;case 4:return fe(),null;case 10:return Gi(t.type),null;case 22:case 23:return ao(t),Qa(),e!==null&&ce(ma),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Gi(ra),null;case 25:return null;default:return null}}function zc(e,t){switch(Oi(t),t.tag){case 3:Gi(ra),fe();break;case 26:case 27:case 5:me(t);break;case 4:fe();break;case 31:t.memoizedState!==null&&ao(t);break;case 13:ao(t);break;case 19:ce(oo);break;case 10:Gi(t.type);break;case 22:case 23:ao(t),Qa(),e!==null&&ce(ma);break;case 24:Gi(ra)}}function Bc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Vc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Hc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{qa(t,n)}catch(t){Z(e,e.return,t)}}}function Uc(e,t,n){n.props=Ws(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Wc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Gc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}function Kc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Z(e,e.return,t)}}function qc(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[R]=t}catch(t){Z(e,e.return,t)}}function Jc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function Yc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Jc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Xc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Xt));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Xc(e,t,n),e=e.sibling;e!==null;)Xc(e,t,n),e=e.sibling}function Zc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Zc(e,t,n),e=e.sibling;e!==null;)Zc(e,t,n),e=e.sibling}function Qc(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[st]=e,t[R]=n}catch(t){Z(e,e.return,t)}}var $c=!1,el=!1,tl=!1,nl=typeof WeakSet==`function`?WeakSet:Set,rl=null;function il(e,t){if(e=e.containerInfo,Rd=sp,e=wr(e),Tr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(zd={focusedElem:e,selectionRange:n},sp=!1,rl=t;rl!==null;)if(t=rl,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,rl=e;else for(;rl!==null;){switch(t=rl,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Pd(o,r,n),o[st]=e,yt(o),r=o;break a;case`link`:var s=Vf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=Sr(s,h),v=Sr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,M.T=null,n=lu,lu=null;var o=au,s=su;if(iu=0,ou=au=null,su=0,K&6)throw Error(i(331));var c=K;if(K|=4,Pl(o.current),El(o,o.current,s,n),K=c,id(0,!1),Le&&typeof Le.onPostCommitFiberRoot==`function`)try{Le.onPostCommitFiberRoot(Ie,o)}catch{}return!0}finally{N.p=a,M.T=r,Vu(e,t)}}function Wu(e,t,n){t=hi(n,t),t=Xs(e.stateNode,t,2),e=Ba(e,t,2),e!==null&&(Ze(e,2),rd(e))}function Z(e,t,n){if(e.tag===3)Wu(e,e,n);else for(;t!==null;){if(t.tag===3){Wu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(ru===null||!ru.has(r))){e=hi(n,e),n=Zs(2),r=Ba(t,n,2),r!==null&&(Qs(n,r,t,e),Ze(r,2),rd(r));break}}t=t.return}}function Gu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Rl;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Hl=!0,i.add(n),e=Ku.bind(null,e,t,n),t.then(e,e))}function Ku(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,q===e&&(Y&n)===n&&(Wl===4||Wl===3&&(Y&62914560)===Y&&300>De()-$l?!(K&2)&&Su(e,0):ql|=n,Yl===Y&&(Yl=0)),rd(e)}function qu(e,t){t===0&&(t=Ye()),e=ei(e,t),e!==null&&(Ze(e,t),rd(e))}function Ju(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),qu(e,n)}function Yu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),qu(e,n)}function Xu(e,t){return Ce(e,t)}var Zu=null,Qu=null,$u=!1,ed=!1,td=!1,nd=0;function rd(e){e!==Qu&&e.next===null&&(Qu===null?Zu=Qu=e:Qu=Qu.next=e),ed=!0,$u||($u=!0,ud())}function id(e,t){if(!td&&ed){td=!0;do for(var n=!1,r=Zu;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-ze(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,ld(r,a))}else a=Y,a=qe(r,r===q?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||L(r,a)||(n=!0,ld(r,a));r=r.next}while(n);td=!1}}function ad(){od()}function od(){ed=$u=!1;var e=0;nd!==0&&Gd()&&(e=nd);for(var t=De(),n=null,r=Zu;r!==null;){var i=r.next,a=sd(r,t);a===0?(r.next=null,n===null?Zu=i:n.next=i,i===null&&(Qu=n)):(n=r,(e!==0||a&3)&&(ed=!0)),r=i}iu!==0&&iu!==5||id(e,!1),nd!==0&&(nd=0)}function sd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&Id(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=It(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),yt(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+It(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+It(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+It(n.imageSizes)+`"]`)):i+=`[href="`+It(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=h({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),yt(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+It(r)+`"][href="`+It(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=h({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),yt(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=vt(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=h({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);yt(c),Pd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=vt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),yt(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=vt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),yt(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var a=(a=F.current)?gf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=vt(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var o=vt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(jf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),o||Nf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=vt(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Af(e){return`href="`+It(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return h({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Pd(t,`link`,n),yt(t),e.head.appendChild(t))}function Pf(e){return`[src="`+It(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+It(n.href)+`"]`);if(r)return t.instance=r,yt(r),r;var a=h({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),yt(r),Pd(r,`style`,a),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Af(n.href);var o=e.querySelector(jf(a));if(o)return t.state.loading|=4,t.instance=o,yt(o),o;r=Mf(n),(a=mf.get(a))&&Rf(r,a),o=(e.ownerDocument||e).createElement(`link`),yt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Pd(o,`link`,r),t.state.loading|=4,Lf(o,n.precedence,e),t.instance=o;case`script`:return o=Pf(n.src),(a=e.querySelector(Ff(o)))?(t.instance=a,yt(a),a):(r=n,(a=mf.get(o))&&(r=h({},n),zf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),yt(a),Pd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,yt(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),yt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()})),_=c(u()),v=g(),y=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),b=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),x={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},S=(0,_.forwardRef)(({color:e=`currentColor`,size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>(0,_.createElement)(`svg`,{ref:c,...x,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:b(`lucide`,i),...s},[...o.map(([e,t])=>(0,_.createElement)(e,t)),...Array.isArray(a)?a:[a]])),C=(e,t)=>{let n=(0,_.forwardRef)(({className:n,...r},i)=>(0,_.createElement)(S,{ref:i,iconNode:t,className:b(`lucide-${y(e)}`,n),...r}));return n.displayName=`${e}`,n},w=C(`Check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),T=C(`ChevronDown`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),E=C(`ChevronUp`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),ee=C(`Copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),D=C(`EyeOff`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),O=C(`Eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),k=C(`Info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),te=C(`Moon`,[[`path`,{d:`M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z`,key:`a7tn18`}]]),ne=C(`Plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),A=C(`RotateCcw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),j=C(`Sparkles`,[[`path`,{d:`M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z`,key:`4pj2yx`}],[`path`,{d:`M20 3v4`,key:`1olli1`}],[`path`,{d:`M22 5h-4`,key:`1gvqau`}],[`path`,{d:`M4 17v2`,key:`vumght`}],[`path`,{d:`M5 18H3`,key:`zchphs`}]]),re=C(`Sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),M=C(`Trash2`,[[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6`,key:`4alrt4`}],[`path`,{d:`M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2`,key:`v07s0e`}],[`line`,{x1:`10`,x2:`10`,y1:`11`,y2:`17`,key:`1uufr5`}],[`line`,{x1:`14`,x2:`14`,y1:`11`,y2:`17`,key:`xtxkd`}]]),N=C(`TriangleAlert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]);async function ie(e,t){let n=await fetch(`/api/v1/plan`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),signal:t}),r=await n.json();if(!n.ok){let e=r.error?`${r.error.code}: ${r.error.message}`:`HTTP ${n.status}`;throw Error(e)}return r}async function ae(){return(await(await fetch(`/api/v1/gpus`)).json()).gpus}var oe=`fit:`;function se(e,t){try{let n=localStorage.getItem(oe+e);return n?JSON.parse(n):t}catch{return t}}function ce(e,t){try{localStorage.setItem(oe+e,JSON.stringify(t))}catch{}}function P(e,t){let[n,r]=(0,_.useState)(()=>se(e,t));return(0,_.useEffect)(()=>{ce(e,n)},[e,n]),[n,r]}function le(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function ue(...e){return t=>{let n=!1,r=e.map(e=>{let r=le(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;t{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),I=o(((e,t)=>{t.exports=de()}))(),fe=Symbol.for(`react.lazy`),pe=_.use;function me(e){return typeof e==`object`&&!!e&&`then`in e}function he(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===fe&&`_payload`in e&&me(e._payload)}function ge(e){let t=ve(e),n=_.forwardRef((e,n)=>{let{children:r,...i}=e;he(r)&&typeof pe==`function`&&(r=pe(r._payload));let a=_.Children.toArray(r),o=a.find(be);if(o){let e=o.props.children,r=a.map(t=>t===o?_.Children.count(e)>1?_.Children.only(null):_.isValidElement(e)?e.props.children:null:t);return(0,I.jsx)(t,{...i,ref:n,children:_.isValidElement(e)?_.cloneElement(e,void 0,r):null})}return(0,I.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}var _e=ge(`Slot`);function ve(e){let t=_.forwardRef((e,t)=>{let{children:n,...r}=e;if(he(n)&&typeof pe==`function`&&(n=pe(n._payload)),_.isValidElement(n)){let e=Se(n),i=xe(r,n.props);return n.type!==_.Fragment&&(i.ref=t?ue(t,e):e),_.cloneElement(n,i)}return _.Children.count(n)>1?_.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var ye=Symbol(`radix.slottable`);function be(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===ye}function xe(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function Se(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function Ce(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e==`boolean`?`${e}`:e===0?`0`:e,Ee=we,De=(e,t)=>n=>{if(t?.variants==null)return Ee(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=Te(t)||Te(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return Ee(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},Oe=`-`,ke=e=>{let t=Ne(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{let n=e.split(Oe);return n[0]===``&&n.length!==1&&n.shift(),Ae(n,t)||Me(e)},getConflictingClassGroupIds:(e,t)=>{let i=n[e]||[];return t&&r[e]?[...i,...r[e]]:i}}},Ae=(e,t)=>{if(e.length===0)return t.classGroupId;let n=e[0],r=t.nextPart.get(n),i=r?Ae(e.slice(1),r):void 0;if(i)return i;if(t.validators.length===0)return;let a=e.join(Oe);return t.validators.find(({validator:e})=>e(a))?.classGroupId},je=/^\[(.+)\]$/,Me=e=>{if(je.test(e)){let t=je.exec(e)[1],n=t?.substring(0,t.indexOf(`:`));if(n)return`arbitrary..`+n}},Ne=e=>{let{theme:t,prefix:n}=e,r={nextPart:new Map,validators:[]};return Le(Object.entries(e.classGroups),n).forEach(([e,n])=>{Pe(n,r,e,t)}),r},Pe=(e,t,n,r)=>{e.forEach(e=>{if(typeof e==`string`){let r=e===``?t:Fe(t,e);r.classGroupId=n;return}if(typeof e==`function`){if(Ie(e)){Pe(e(r),t,n,r);return}t.validators.push({validator:e,classGroupId:n});return}Object.entries(e).forEach(([e,i])=>{Pe(i,Fe(t,e),n,r)})})},Fe=(e,t)=>{let n=e;return t.split(Oe).forEach(e=>{n.nextPart.has(e)||n.nextPart.set(e,{nextPart:new Map,validators:[]}),n=n.nextPart.get(e)}),n},Ie=e=>e.isThemeGetter,Le=(e,t)=>t?e.map(([e,n])=>[e,n.map(e=>typeof e==`string`?t+e:typeof e==`object`?Object.fromEntries(Object.entries(e).map(([e,n])=>[t+e,n])):e)]):e,Re=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=new Map,r=new Map,i=(i,a)=>{n.set(i,a),t++,t>e&&(t=0,r=n,n=new Map)};return{get(e){let t=n.get(e);if(t!==void 0)return t;if((t=r.get(e))!==void 0)return i(e,t),t},set(e,t){n.has(e)?n.set(e,t):i(e,t)}}},ze=`!`,Be=e=>{let{separator:t,experimentalParseClassName:n}=e,r=t.length===1,i=t[0],a=t.length,o=e=>{let n=[],o=0,s=0,c;for(let l=0;ls?c-s:void 0}};return n?e=>n({className:e,parseClassName:o}):o},Ve=e=>{if(e.length<=1)return e;let t=[],n=[];return e.forEach(e=>{e[0]===`[`?(t.push(...n.sort(),e),n=[]):n.push(e)}),t.push(...n.sort()),t},He=e=>({cache:Re(e.cacheSize),parseClassName:Be(e),...ke(e)}),Ue=/\s+/,We=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i}=t,a=[],o=e.trim().split(Ue),s=``;for(let e=o.length-1;e>=0;--e){let t=o[e],{modifiers:c,hasImportantModifier:l,baseClassName:u,maybePostfixModifierPosition:d}=n(t),f=!!d,p=r(f?u.substring(0,d):u);if(!p){if(!f){s=t+(s.length>0?` `+s:s);continue}if(p=r(u),!p){s=t+(s.length>0?` `+s:s);continue}f=!1}let m=Ve(c).join(`:`),h=l?m+ze:m,g=h+p;if(a.includes(g))continue;a.push(g);let _=i(p,f);for(let e=0;e<_.length;++e){let t=_[e];a.push(h+t)}s=t+(s.length>0?` `+s:s)}return s};function Ge(){let e=0,t,n,r=``;for(;e{if(typeof e==`string`)return e;let t,n=``;for(let r=0;rt(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)}function s(e){let t=r(e);if(t)return t;let a=We(e,n);return i(e,a),a}return function(){return a(Ge.apply(null,arguments))}}var L=e=>{let t=t=>t[e]||[];return t.isThemeGetter=!0,t},Je=/^\[(?:([a-z-]+):)?(.+)\]$/i,Ye=/^\d+\/\d+$/,Xe=new Set([`px`,`full`,`screen`]),Ze=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Qe=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,$e=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,et=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,tt=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,nt=e=>it(e)||Xe.has(e)||Ye.test(e),rt=e=>gt(e,`length`,_t),it=e=>!!e&&!Number.isNaN(Number(e)),at=e=>gt(e,`number`,it),ot=e=>!!e&&Number.isInteger(Number(e)),st=e=>e.endsWith(`%`)&&it(e.slice(0,-1)),R=e=>Je.test(e),ct=e=>Ze.test(e),lt=new Set([`length`,`size`,`percentage`]),ut=e=>gt(e,lt,vt),dt=e=>gt(e,`position`,vt),ft=new Set([`image`,`url`]),pt=e=>gt(e,ft,bt),mt=e=>gt(e,``,yt),ht=()=>!0,gt=(e,t,n)=>{let r=Je.exec(e);return r?r[1]?typeof t==`string`?r[1]===t:t.has(r[1]):n(r[2]):!1},_t=e=>Qe.test(e)&&!$e.test(e),vt=()=>!1,yt=e=>et.test(e),bt=e=>tt.test(e),xt=qe(()=>{let e=L(`colors`),t=L(`spacing`),n=L(`blur`),r=L(`brightness`),i=L(`borderColor`),a=L(`borderRadius`),o=L(`borderSpacing`),s=L(`borderWidth`),c=L(`contrast`),l=L(`grayscale`),u=L(`hueRotate`),d=L(`invert`),f=L(`gap`),p=L(`gradientColorStops`),m=L(`gradientColorStopPositions`),h=L(`inset`),g=L(`margin`),_=L(`opacity`),v=L(`padding`),y=L(`saturate`),b=L(`scale`),x=L(`sepia`),S=L(`skew`),C=L(`space`),w=L(`translate`),T=()=>[`auto`,`contain`,`none`],E=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],ee=()=>[`auto`,R,t],D=()=>[R,t],O=()=>[``,nt,rt],k=()=>[`auto`,it,R],te=()=>[`bottom`,`center`,`left`,`left-bottom`,`left-top`,`right`,`right-bottom`,`right-top`,`top`],ne=()=>[`solid`,`dashed`,`dotted`,`double`,`none`],A=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],j=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`],re=()=>[``,`0`,R],M=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],N=()=>[it,R];return{cacheSize:500,separator:`:`,theme:{colors:[ht],spacing:[nt,rt],blur:[`none`,``,ct,R],brightness:N(),borderColor:[e],borderRadius:[`none`,``,`full`,ct,R],borderSpacing:D(),borderWidth:O(),contrast:N(),grayscale:re(),hueRotate:N(),invert:re(),gap:D(),gradientColorStops:[e],gradientColorStopPositions:[st,rt],inset:ee(),margin:ee(),opacity:N(),padding:D(),saturate:N(),scale:N(),sepia:re(),skew:N(),space:D(),translate:D()},classGroups:{aspect:[{aspect:[`auto`,`square`,`video`,R]}],container:[`container`],columns:[{columns:[ct]}],"break-after":[{"break-after":M()}],"break-before":[{"break-before":M()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:[...te(),R]}],overflow:[{overflow:E()}],"overflow-x":[{"overflow-x":E()}],"overflow-y":[{"overflow-y":E()}],overscroll:[{overscroll:T()}],"overscroll-x":[{"overscroll-x":T()}],"overscroll-y":[{"overscroll-y":T()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:[h]}],"inset-x":[{"inset-x":[h]}],"inset-y":[{"inset-y":[h]}],start:[{start:[h]}],end:[{end:[h]}],top:[{top:[h]}],right:[{right:[h]}],bottom:[{bottom:[h]}],left:[{left:[h]}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[`auto`,ot,R]}],basis:[{basis:ee()}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`wrap`,`wrap-reverse`,`nowrap`]}],flex:[{flex:[`1`,`auto`,`initial`,`none`,R]}],grow:[{grow:re()}],shrink:[{shrink:re()}],order:[{order:[`first`,`last`,`none`,ot,R]}],"grid-cols":[{"grid-cols":[ht]}],"col-start-end":[{col:[`auto`,{span:[`full`,ot,R]},R]}],"col-start":[{"col-start":k()}],"col-end":[{"col-end":k()}],"grid-rows":[{"grid-rows":[ht]}],"row-start-end":[{row:[`auto`,{span:[ot,R]},R]}],"row-start":[{"row-start":k()}],"row-end":[{"row-end":k()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":[`auto`,`min`,`max`,`fr`,R]}],"auto-rows":[{"auto-rows":[`auto`,`min`,`max`,`fr`,R]}],gap:[{gap:[f]}],"gap-x":[{"gap-x":[f]}],"gap-y":[{"gap-y":[f]}],"justify-content":[{justify:[`normal`,...j()]}],"justify-items":[{"justify-items":[`start`,`end`,`center`,`stretch`]}],"justify-self":[{"justify-self":[`auto`,`start`,`end`,`center`,`stretch`]}],"align-content":[{content:[`normal`,...j(),`baseline`]}],"align-items":[{items:[`start`,`end`,`center`,`baseline`,`stretch`]}],"align-self":[{self:[`auto`,`start`,`end`,`center`,`stretch`,`baseline`]}],"place-content":[{"place-content":[...j(),`baseline`]}],"place-items":[{"place-items":[`start`,`end`,`center`,`baseline`,`stretch`]}],"place-self":[{"place-self":[`auto`,`start`,`end`,`center`,`stretch`]}],p:[{p:[v]}],px:[{px:[v]}],py:[{py:[v]}],ps:[{ps:[v]}],pe:[{pe:[v]}],pt:[{pt:[v]}],pr:[{pr:[v]}],pb:[{pb:[v]}],pl:[{pl:[v]}],m:[{m:[g]}],mx:[{mx:[g]}],my:[{my:[g]}],ms:[{ms:[g]}],me:[{me:[g]}],mt:[{mt:[g]}],mr:[{mr:[g]}],mb:[{mb:[g]}],ml:[{ml:[g]}],"space-x":[{"space-x":[C]}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":[C]}],"space-y-reverse":[`space-y-reverse`],w:[{w:[`auto`,`min`,`max`,`fit`,`svw`,`lvw`,`dvw`,R,t]}],"min-w":[{"min-w":[R,t,`min`,`max`,`fit`]}],"max-w":[{"max-w":[R,t,`none`,`full`,`min`,`max`,`fit`,`prose`,{screen:[ct]},ct]}],h:[{h:[R,t,`auto`,`min`,`max`,`fit`,`svh`,`lvh`,`dvh`]}],"min-h":[{"min-h":[R,t,`min`,`max`,`fit`,`svh`,`lvh`,`dvh`]}],"max-h":[{"max-h":[R,t,`min`,`max`,`fit`,`svh`,`lvh`,`dvh`]}],size:[{size:[R,t,`auto`,`min`,`max`,`fit`]}],"font-size":[{text:[`base`,ct,rt]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`,at]}],"font-family":[{font:[ht]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`,R]}],"line-clamp":[{"line-clamp":[`none`,it,at]}],leading:[{leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`,nt,R]}],"list-image":[{"list-image":[`none`,R]}],"list-style-type":[{list:[`none`,`disc`,`decimal`,R]}],"list-style-position":[{list:[`inside`,`outside`]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[_]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[_]}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...ne(),`wavy`]}],"text-decoration-thickness":[{decoration:[`auto`,`from-font`,nt,rt]}],"underline-offset":[{"underline-offset":[`auto`,nt,R]}],"text-decoration-color":[{decoration:[e]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:D()}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,R]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,R]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-opacity":[{"bg-opacity":[_]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:[...te(),dt]}],"bg-repeat":[{bg:[`no-repeat`,{repeat:[``,`x`,`y`,`round`,`space`]}]}],"bg-size":[{bg:[`auto`,`cover`,`contain`,ut]}],"bg-image":[{bg:[`none`,{"gradient-to":[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},pt]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[m]}],"gradient-via-pos":[{via:[m]}],"gradient-to-pos":[{to:[m]}],"gradient-from":[{from:[p]}],"gradient-via":[{via:[p]}],"gradient-to":[{to:[p]}],rounded:[{rounded:[a]}],"rounded-s":[{"rounded-s":[a]}],"rounded-e":[{"rounded-e":[a]}],"rounded-t":[{"rounded-t":[a]}],"rounded-r":[{"rounded-r":[a]}],"rounded-b":[{"rounded-b":[a]}],"rounded-l":[{"rounded-l":[a]}],"rounded-ss":[{"rounded-ss":[a]}],"rounded-se":[{"rounded-se":[a]}],"rounded-ee":[{"rounded-ee":[a]}],"rounded-es":[{"rounded-es":[a]}],"rounded-tl":[{"rounded-tl":[a]}],"rounded-tr":[{"rounded-tr":[a]}],"rounded-br":[{"rounded-br":[a]}],"rounded-bl":[{"rounded-bl":[a]}],"border-w":[{border:[s]}],"border-w-x":[{"border-x":[s]}],"border-w-y":[{"border-y":[s]}],"border-w-s":[{"border-s":[s]}],"border-w-e":[{"border-e":[s]}],"border-w-t":[{"border-t":[s]}],"border-w-r":[{"border-r":[s]}],"border-w-b":[{"border-b":[s]}],"border-w-l":[{"border-l":[s]}],"border-opacity":[{"border-opacity":[_]}],"border-style":[{border:[...ne(),`hidden`]}],"divide-x":[{"divide-x":[s]}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":[s]}],"divide-y-reverse":[`divide-y-reverse`],"divide-opacity":[{"divide-opacity":[_]}],"divide-style":[{divide:ne()}],"border-color":[{border:[i]}],"border-color-x":[{"border-x":[i]}],"border-color-y":[{"border-y":[i]}],"border-color-s":[{"border-s":[i]}],"border-color-e":[{"border-e":[i]}],"border-color-t":[{"border-t":[i]}],"border-color-r":[{"border-r":[i]}],"border-color-b":[{"border-b":[i]}],"border-color-l":[{"border-l":[i]}],"divide-color":[{divide:[i]}],"outline-style":[{outline:[``,...ne()]}],"outline-offset":[{"outline-offset":[nt,R]}],"outline-w":[{outline:[nt,rt]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:O()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[_]}],"ring-offset-w":[{"ring-offset":[nt,rt]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:[``,`inner`,`none`,ct,mt]}],"shadow-color":[{shadow:[ht]}],opacity:[{opacity:[_]}],"mix-blend":[{"mix-blend":[...A(),`plus-lighter`,`plus-darker`]}],"bg-blend":[{"bg-blend":A()}],filter:[{filter:[``,`none`]}],blur:[{blur:[n]}],brightness:[{brightness:[r]}],contrast:[{contrast:[c]}],"drop-shadow":[{"drop-shadow":[``,`none`,ct,R]}],grayscale:[{grayscale:[l]}],"hue-rotate":[{"hue-rotate":[u]}],invert:[{invert:[d]}],saturate:[{saturate:[y]}],sepia:[{sepia:[x]}],"backdrop-filter":[{"backdrop-filter":[``,`none`]}],"backdrop-blur":[{"backdrop-blur":[n]}],"backdrop-brightness":[{"backdrop-brightness":[r]}],"backdrop-contrast":[{"backdrop-contrast":[c]}],"backdrop-grayscale":[{"backdrop-grayscale":[l]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[u]}],"backdrop-invert":[{"backdrop-invert":[d]}],"backdrop-opacity":[{"backdrop-opacity":[_]}],"backdrop-saturate":[{"backdrop-saturate":[y]}],"backdrop-sepia":[{"backdrop-sepia":[x]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":[o]}],"border-spacing-x":[{"border-spacing-x":[o]}],"border-spacing-y":[{"border-spacing-y":[o]}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[`none`,`all`,``,`colors`,`opacity`,`shadow`,`transform`,R]}],duration:[{duration:N()}],ease:[{ease:[`linear`,`in`,`out`,`in-out`,R]}],delay:[{delay:N()}],animate:[{animate:[`none`,`spin`,`ping`,`pulse`,`bounce`,R]}],transform:[{transform:[``,`gpu`,`none`]}],scale:[{scale:[b]}],"scale-x":[{"scale-x":[b]}],"scale-y":[{"scale-y":[b]}],rotate:[{rotate:[ot,R]}],"translate-x":[{"translate-x":[w]}],"translate-y":[{"translate-y":[w]}],"skew-x":[{"skew-x":[S]}],"skew-y":[{"skew-y":[S]}],"transform-origin":[{origin:[`center`,`top`,`top-right`,`right`,`bottom-right`,`bottom`,`bottom-left`,`left`,`top-left`,R]}],accent:[{accent:[`auto`,e]}],appearance:[{appearance:[`none`,`auto`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,R]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":[`none`,`auto`]}],resize:[{resize:[`none`,`y`,`x`,``]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scroll-m":[{"scroll-m":D()}],"scroll-mx":[{"scroll-mx":D()}],"scroll-my":[{"scroll-my":D()}],"scroll-ms":[{"scroll-ms":D()}],"scroll-me":[{"scroll-me":D()}],"scroll-mt":[{"scroll-mt":D()}],"scroll-mr":[{"scroll-mr":D()}],"scroll-mb":[{"scroll-mb":D()}],"scroll-ml":[{"scroll-ml":D()}],"scroll-p":[{"scroll-p":D()}],"scroll-px":[{"scroll-px":D()}],"scroll-py":[{"scroll-py":D()}],"scroll-ps":[{"scroll-ps":D()}],"scroll-pe":[{"scroll-pe":D()}],"scroll-pt":[{"scroll-pt":D()}],"scroll-pr":[{"scroll-pr":D()}],"scroll-pb":[{"scroll-pb":D()}],"scroll-pl":[{"scroll-pl":D()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,R]}],fill:[{fill:[e,`none`]}],"stroke-w":[{stroke:[nt,rt,at]}],stroke:[{stroke:[e,`none`]}],sr:[`sr-only`,`not-sr-only`],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-s`,`border-w-e`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-s`,`border-color-e`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]}}});function z(...e){return xt(we(e))}var St=De(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0`,{variants:{variant:{default:`bg-primary text-primary-foreground shadow hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90`,outline:`border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2`,sm:`h-8 rounded-md px-3 text-xs`,lg:`h-10 rounded-md px-8`,icon:`h-9 w-9`}},defaultVariants:{variant:`default`,size:`default`}}),Ct=_.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},a)=>(0,I.jsx)(r?_e:`button`,{className:z(St({variant:t,size:n,className:e})),ref:a,...i}));Ct.displayName=`Button`;var wt=_.forwardRef(({className:e,type:t,...n},r)=>(0,I.jsx)(`input`,{type:t,className:z(`flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`,e),ref:r,...n}));wt.displayName=`Input`;var Tt=c(m(),1);function Et(e,[t,n]){return Math.min(n,Math.max(t,e))}typeof window<`u`&&window.document&&window.document.createElement;function B(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}function Dt(e,t=[]){let n=[];function r(t,r){let i=_.createContext(r),a=n.length;n=[...n,r];let o=t=>{let{scope:n,children:r,...o}=t,s=n?.[e]?.[a]||i,c=_.useMemo(()=>o,Object.values(o));return(0,I.jsx)(s.Provider,{value:c,children:r})};o.displayName=t+`Provider`;function s(n,o){let s=o?.[e]?.[a]||i,c=_.useContext(s);if(c)return c;if(r!==void 0)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}return[o,s]}let i=()=>{let t=n.map(e=>_.createContext(e));return function(n){let r=n?.[e]||t;return _.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return i.scopeName=e,[r,Ot(i,...t)]}function Ot(...e){let t=e[0];if(e.length===1)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return _.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}function kt(e){let t=At(e),n=_.forwardRef((e,n)=>{let{children:r,...i}=e,a=_.Children.toArray(r),o=a.find(Mt);if(o){let e=o.props.children,r=a.map(t=>t===o?_.Children.count(e)>1?_.Children.only(null):_.isValidElement(e)?e.props.children:null:t);return(0,I.jsx)(t,{...i,ref:n,children:_.isValidElement(e)?_.cloneElement(e,void 0,r):null})}return(0,I.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function At(e){let t=_.forwardRef((e,t)=>{let{children:n,...r}=e;if(_.isValidElement(n)){let e=Pt(n),i=Nt(r,n.props);return n.type!==_.Fragment&&(i.ref=t?ue(t,e):e),_.cloneElement(n,i)}return _.Children.count(n)>1?_.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var jt=Symbol(`radix.slottable`);function Mt(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===jt}function Nt(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function Pt(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function Ft(e){let t=e+`CollectionProvider`,[n,r]=Dt(t),[i,a]=n(t,{collectionRef:{current:null},itemMap:new Map}),o=e=>{let{scope:t,children:n}=e,r=_.useRef(null),a=_.useRef(new Map).current;return(0,I.jsx)(i,{scope:t,itemMap:a,collectionRef:r,children:n})};o.displayName=t;let s=e+`CollectionSlot`,c=kt(s),l=_.forwardRef((e,t)=>{let{scope:n,children:r}=e;return(0,I.jsx)(c,{ref:F(t,a(s,n).collectionRef),children:r})});l.displayName=s;let u=e+`CollectionItemSlot`,d=`data-radix-collection-item`,f=kt(u),p=_.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=_.useRef(null),s=F(t,o),c=a(u,n);return _.useEffect(()=>(c.itemMap.set(o,{ref:o,...i}),()=>void c.itemMap.delete(o))),(0,I.jsx)(f,{[d]:``,ref:s,children:r})});p.displayName=u;function m(t){let n=a(e+`CollectionConsumer`,t);return _.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${d}]`));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])}return[{Provider:o,Slot:l,ItemSlot:p},m,r]}var It=_.createContext(void 0);function Lt(e){let t=_.useContext(It);return e||t||`ltr`}function Rt(e){let t=zt(e),n=_.forwardRef((e,n)=>{let{children:r,...i}=e,a=_.Children.toArray(r),o=a.find(Vt);if(o){let e=o.props.children,r=a.map(t=>t===o?_.Children.count(e)>1?_.Children.only(null):_.isValidElement(e)?e.props.children:null:t);return(0,I.jsx)(t,{...i,ref:n,children:_.isValidElement(e)?_.cloneElement(e,void 0,r):null})}return(0,I.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function zt(e){let t=_.forwardRef((e,t)=>{let{children:n,...r}=e;if(_.isValidElement(n)){let e=Ut(n),i=Ht(r,n.props);return n.type!==_.Fragment&&(i.ref=t?ue(t,e):e),_.cloneElement(n,i)}return _.Children.count(n)>1?_.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Bt=Symbol(`radix.slottable`);function Vt(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===Bt}function Ht(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function Ut(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var V=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=Rt(`Primitive.${t}`),r=_.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,I.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function Wt(e,t){e&&Tt.flushSync(()=>e.dispatchEvent(t))}function Gt(e){let t=_.useRef(e);return _.useEffect(()=>{t.current=e}),_.useMemo(()=>(...e)=>t.current?.(...e),[])}function Kt(e,t=globalThis?.document){let n=Gt(e);_.useEffect(()=>{let e=e=>{e.key===`Escape`&&n(e)};return t.addEventListener(`keydown`,e,{capture:!0}),()=>t.removeEventListener(`keydown`,e,{capture:!0})},[n,t])}var qt=`DismissableLayer`,Jt=`dismissableLayer.update`,Yt=`dismissableLayer.pointerDownOutside`,Xt=`dismissableLayer.focusOutside`,Zt,Qt=_.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),$t=_.forwardRef((e,t)=>{let{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:o,onDismiss:s,...c}=e,l=_.useContext(Qt),[u,d]=_.useState(null),f=u?.ownerDocument??globalThis?.document,[,p]=_.useState({}),m=F(t,e=>d(e)),h=Array.from(l.layers),[g]=[...l.layersWithOutsidePointerEventsDisabled].slice(-1),v=h.indexOf(g),y=u?h.indexOf(u):-1,b=l.layersWithOutsidePointerEventsDisabled.size>0,x=y>=v,S=nn(e=>{let t=e.target,n=[...l.branches].some(e=>e.contains(t));!x||n||(i?.(e),o?.(e),e.defaultPrevented||s?.())},f),C=rn(e=>{let t=e.target;[...l.branches].some(e=>e.contains(t))||(a?.(e),o?.(e),e.defaultPrevented||s?.())},f);return Kt(e=>{y===l.layers.size-1&&(r?.(e),!e.defaultPrevented&&s&&(e.preventDefault(),s()))},f),_.useEffect(()=>{if(u)return n&&(l.layersWithOutsidePointerEventsDisabled.size===0&&(Zt=f.body.style.pointerEvents,f.body.style.pointerEvents=`none`),l.layersWithOutsidePointerEventsDisabled.add(u)),l.layers.add(u),an(),()=>{n&&l.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=Zt)}},[u,f,n,l]),_.useEffect(()=>()=>{u&&(l.layers.delete(u),l.layersWithOutsidePointerEventsDisabled.delete(u),an())},[u,l]),_.useEffect(()=>{let e=()=>p({});return document.addEventListener(Jt,e),()=>document.removeEventListener(Jt,e)},[]),(0,I.jsx)(V.div,{...c,ref:m,style:{pointerEvents:b?x?`auto`:`none`:void 0,...e.style},onFocusCapture:B(e.onFocusCapture,C.onFocusCapture),onBlurCapture:B(e.onBlurCapture,C.onBlurCapture),onPointerDownCapture:B(e.onPointerDownCapture,S.onPointerDownCapture)})});$t.displayName=qt;var en=`DismissableLayerBranch`,tn=_.forwardRef((e,t)=>{let n=_.useContext(Qt),r=_.useRef(null),i=F(t,r);return _.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,I.jsx)(V.div,{...e,ref:i})});tn.displayName=en;function nn(e,t=globalThis?.document){let n=Gt(e),r=_.useRef(!1),i=_.useRef(()=>{});return _.useEffect(()=>{let e=e=>{if(e.target&&!r.current){let r=function(){on(Yt,n,a,{discrete:!0})},a={originalEvent:e};e.pointerType===`touch`?(t.removeEventListener(`click`,i.current),i.current=r,t.addEventListener(`click`,i.current,{once:!0})):r()}else t.removeEventListener(`click`,i.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener(`pointerdown`,e)},0);return()=>{window.clearTimeout(a),t.removeEventListener(`pointerdown`,e),t.removeEventListener(`click`,i.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function rn(e,t=globalThis?.document){let n=Gt(e),r=_.useRef(!1);return _.useEffect(()=>{let e=e=>{e.target&&!r.current&&on(Xt,n,{originalEvent:e},{discrete:!1})};return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function an(){let e=new CustomEvent(Jt);document.dispatchEvent(e)}function on(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?Wt(i,a):i.dispatchEvent(a)}var sn=0;function cn(){_.useEffect(()=>{let e=document.querySelectorAll(`[data-radix-focus-guard]`);return document.body.insertAdjacentElement(`afterbegin`,e[0]??ln()),document.body.insertAdjacentElement(`beforeend`,e[1]??ln()),sn++,()=>{sn===1&&document.querySelectorAll(`[data-radix-focus-guard]`).forEach(e=>e.remove()),sn--}},[])}function ln(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}var un=`focusScope.autoFocusOnMount`,dn=`focusScope.autoFocusOnUnmount`,fn={bubbles:!1,cancelable:!0},pn=`FocusScope`,mn=_.forwardRef((e,t)=>{let{loop:n=!1,trapped:r=!1,onMountAutoFocus:i,onUnmountAutoFocus:a,...o}=e,[s,c]=_.useState(null),l=Gt(i),u=Gt(a),d=_.useRef(null),f=F(t,e=>c(e)),p=_.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;_.useEffect(()=>{if(r){let e=function(e){if(p.paused||!s)return;let t=e.target;s.contains(t)?d.current=t:xn(d.current,{select:!0})},t=function(e){if(p.paused||!s)return;let t=e.relatedTarget;t!==null&&(s.contains(t)||xn(d.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&xn(s)};document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return s&&r.observe(s,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,s,p.paused]),_.useEffect(()=>{if(s){Sn.add(p);let e=document.activeElement;if(!s.contains(e)){let t=new CustomEvent(un,fn);s.addEventListener(un,l),s.dispatchEvent(t),t.defaultPrevented||(hn(Tn(_n(s)),{select:!0}),document.activeElement===e&&xn(s))}return()=>{s.removeEventListener(un,l),setTimeout(()=>{let t=new CustomEvent(dn,fn);s.addEventListener(dn,u),s.dispatchEvent(t),t.defaultPrevented||xn(e??document.body,{select:!0}),s.removeEventListener(dn,u),Sn.remove(p)},0)}}},[s,l,u,p]);let m=_.useCallback(e=>{if(!n&&!r||p.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=gn(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&xn(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&xn(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,p.paused]);return(0,I.jsx)(V.div,{tabIndex:-1,...o,ref:f,onKeyDown:m})});mn.displayName=pn;function hn(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(xn(r,{select:t}),document.activeElement!==n)return}function gn(e){let t=_n(e);return[vn(t,e),vn(t.reverse(),e)]}function _n(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function vn(e,t){for(let n of e)if(!yn(n,{upTo:t}))return n}function yn(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function bn(e){return e instanceof HTMLInputElement&&`select`in e}function xn(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&bn(e)&&t&&e.select()}}var Sn=Cn();function Cn(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=wn(e,t),e.unshift(t)},remove(t){e=wn(e,t),e[0]?.resume()}}}function wn(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function Tn(e){return e.filter(e=>e.tagName!==`A`)}var En=globalThis?.document?_.useLayoutEffect:()=>{},Dn=_.useId||(()=>void 0),On=0;function kn(e){let[t,n]=_.useState(Dn());return En(()=>{e||n(e=>e??String(On++))},[e]),e||(t?`radix-${t}`:``)}var An=[`top`,`right`,`bottom`,`left`],jn=Math.min,Mn=Math.max,Nn=Math.round,Pn=Math.floor,Fn=e=>({x:e,y:e}),In={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function Ln(e,t,n){return Mn(e,jn(t,n))}function Rn(e,t){return typeof e==`function`?e(t):e}function zn(e){return e.split(`-`)[0]}function Bn(e){return e.split(`-`)[1]}function Vn(e){return e===`x`?`y`:`x`}function Hn(e){return e===`y`?`height`:`width`}function Un(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function Wn(e){return Vn(Un(e))}function Gn(e,t,n){n===void 0&&(n=!1);let r=Bn(e),i=Wn(e),a=Hn(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=er(o)),[o,er(o)]}function Kn(e){let t=er(e);return[qn(e),t,qn(t)]}function qn(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var Jn=[`left`,`right`],Yn=[`right`,`left`],Xn=[`top`,`bottom`],Zn=[`bottom`,`top`];function Qn(e,t,n){switch(e){case`top`:case`bottom`:return n?t?Yn:Jn:t?Jn:Yn;case`left`:case`right`:return t?Xn:Zn;default:return[]}}function $n(e,t,n,r){let i=Bn(e),a=Qn(zn(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(qn)))),a}function er(e){let t=zn(e);return In[t]+e.slice(t.length)}function tr(e){return{top:0,right:0,bottom:0,left:0,...e}}function nr(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:tr(e)}function rr(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function ir(e,t,n){let{reference:r,floating:i}=e,a=Un(t),o=Wn(t),s=Hn(o),c=zn(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(Bn(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}async function ar(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=Rn(t,e),p=nr(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=rr(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=rr(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var or=50,sr=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:ar},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=ir(l,r,c),f=r,p=0,m={};for(let n=0;n({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=Rn(e,t)||{};if(l==null)return{};let d=nr(u),f={x:n,y:r},p=Wn(i),m=Hn(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=jn(d[_],T),ee=jn(d[v],T),D=E,O=C-h[m]-ee,k=C/2-h[m]/2+w,te=Ln(D,k,O),ne=!c.arrow&&Bn(i)!=null&&k!==te&&a.reference[m]/2-(ke<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==Un(t))||T.every(e=>Un(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=Un(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function ur(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function dr(e){return An.some(t=>e[t]>=0)}var fr=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=Rn(e,t);switch(i){case`referenceHidden`:{let e=ur(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:dr(e)}}}case`escaped`:{let e=ur(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:dr(e)}}}default:return{}}}}},pr=new Set([`left`,`top`]);async function mr(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=zn(n),s=Bn(n),c=Un(n)===`y`,l=pr.has(o)?-1:1,u=a&&c?-1:1,d=Rn(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var hr=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await mr(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},gr=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=Rn(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=Un(zn(i)),p=Vn(f),m=u[p],h=u[f];if(o){let e=p===`y`?`top`:`left`,t=p===`y`?`bottom`:`right`,n=m+d[e],r=m-d[t];m=Ln(n,m,r)}if(s){let e=f===`y`?`top`:`left`,t=f===`y`?`bottom`:`right`,n=h+d[e],r=h-d[t];h=Ln(n,h,r)}let g=c.fn({...t,[p]:m,[f]:h});return{...g,data:{x:g.x-n,y:g.y-r,enabled:{[p]:o,[f]:s}}}}}},_r=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=Rn(e,t),u={x:n,y:r},d=Un(i),f=Vn(d),p=u[f],m=u[d],h=Rn(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=pr.has(zn(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);mr&&(m=r)}return{[f]:p,[d]:m}}}},vr=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){var n,r;let{placement:i,rects:a,platform:o,elements:s}=t,{apply:c=()=>{},...l}=Rn(e,t),u=await o.detectOverflow(t,l),d=zn(i),f=Bn(i),p=Un(i)===`y`,{width:m,height:h}=a.floating,g,_;d===`top`||d===`bottom`?(g=d,_=f===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?`start`:`end`)?`left`:`right`):(_=d,g=f===`end`?`top`:`bottom`);let v=h-u.top-u.bottom,y=m-u.left-u.right,b=jn(h-u[g],v),x=jn(m-u[_],y),S=!t.middlewareData.shift,C=b,w=x;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(w=y),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(C=v),S&&!f){let e=Mn(u.left,0),t=Mn(u.right,0),n=Mn(u.top,0),r=Mn(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:Mn(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:Mn(u.top,u.bottom))}await c({...t,availableWidth:w,availableHeight:C});let T=await o.getDimensions(s.floating);return m!==T.width||h!==T.height?{reset:{rects:!0}}:{}}}};function yr(){return typeof window<`u`}function br(e){return Cr(e)?(e.nodeName||``).toLowerCase():`#document`}function xr(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Sr(e){return((Cr(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Cr(e){return yr()?e instanceof Node||e instanceof xr(e).Node:!1}function wr(e){return yr()?e instanceof Element||e instanceof xr(e).Element:!1}function Tr(e){return yr()?e instanceof HTMLElement||e instanceof xr(e).HTMLElement:!1}function Er(e){return!yr()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof xr(e).ShadowRoot}function Dr(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=Rr(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function Or(e){return/^(table|td|th)$/.test(br(e))}function kr(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var Ar=/transform|translate|scale|rotate|perspective|filter/,jr=/paint|layout|strict|content/,Mr=e=>!!e&&e!==`none`,Nr;function Pr(e){let t=wr(e)?Rr(e):e;return Mr(t.transform)||Mr(t.translate)||Mr(t.scale)||Mr(t.rotate)||Mr(t.perspective)||!Ir()&&(Mr(t.backdropFilter)||Mr(t.filter))||Ar.test(t.willChange||``)||jr.test(t.contain||``)}function Fr(e){let t=Br(e);for(;Tr(t)&&!Lr(t);){if(Pr(t))return t;if(kr(t))return null;t=Br(t)}return null}function Ir(){return Nr??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Nr}function Lr(e){return/^(html|body|#document)$/.test(br(e))}function Rr(e){return xr(e).getComputedStyle(e)}function zr(e){return wr(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Br(e){if(br(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Er(e)&&e.host||Sr(e);return Er(t)?t.host:t}function Vr(e){let t=Br(e);return Lr(t)?e.ownerDocument?e.ownerDocument.body:e.body:Tr(t)&&Dr(t)?t:Vr(t)}function Hr(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=Vr(e),i=r===e.ownerDocument?.body,a=xr(r);if(i){let e=Ur(a);return t.concat(a,a.visualViewport||[],Dr(r)?r:[],e&&n?Hr(e):[])}else return t.concat(r,Hr(r,[],n))}function Ur(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Wr(e){let t=Rr(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=Tr(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=Nn(n)!==a||Nn(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function Gr(e){return wr(e)?e:e.contextElement}function Kr(e){let t=Gr(e);if(!Tr(t))return Fn(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=Wr(t),o=(a?Nn(n.width):n.width)/r,s=(a?Nn(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var qr=Fn(0);function Jr(e){let t=xr(e);return!Ir()||!t.visualViewport?qr:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Yr(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==xr(e)?!1:t}function Xr(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=Gr(e),o=Fn(1);t&&(r?wr(r)&&(o=Kr(r)):o=Kr(e));let s=Yr(a,n,r)?Jr(a):Fn(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=xr(a),t=r&&wr(r)?xr(r):r,n=e,i=Ur(n);for(;i&&r&&t!==n;){let e=Kr(i),t=i.getBoundingClientRect(),r=Rr(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=xr(i),i=Ur(n)}}return rr({width:u,height:d,x:c,y:l})}function Zr(e,t){let n=zr(e).scrollLeft;return t?t.left+n:Xr(Sr(e)).left+n}function Qr(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-Zr(e,n),y:n.top+t.scrollTop}}function $r(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=Sr(r),s=t?kr(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=Fn(1),u=Fn(0),d=Tr(r);if((d||!d&&!a)&&((br(r)!==`body`||Dr(o))&&(c=zr(r)),d)){let e=Xr(r);l=Kr(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?Qr(o,c):Fn(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function ei(e){return Array.from(e.getClientRects())}function ti(e){let t=Sr(e),n=zr(e),r=e.ownerDocument.body,i=Mn(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=Mn(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+Zr(e),s=-n.scrollTop;return Rr(r).direction===`rtl`&&(o+=Mn(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var ni=25;function ri(e,t){let n=xr(e),r=Sr(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=Ir();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=Zr(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=ni&&(a-=o)}else l<=ni&&(a+=l);return{width:a,height:o,x:s,y:c}}function ii(e,t){let n=Xr(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=Tr(e)?Kr(e):Fn(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function ai(e,t,n){let r;if(t===`viewport`)r=ri(e,n);else if(t===`document`)r=ti(Sr(e));else if(wr(t))r=ii(t,n);else{let n=Jr(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return rr(r)}function oi(e,t){let n=Br(e);return n===t||!wr(n)||Lr(n)?!1:Rr(n).position===`fixed`||oi(n,t)}function si(e,t){let n=t.get(e);if(n)return n;let r=Hr(e,[],!1).filter(e=>wr(e)&&br(e)!==`body`),i=null,a=Rr(e).position===`fixed`,o=a?Br(e):e;for(;wr(o)&&!Lr(o);){let t=Rr(o),n=Pr(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&(i.position===`absolute`||i.position===`fixed`)||Dr(o)&&!n&&oi(e,o))?r=r.filter(e=>e!==o):i=t,o=Br(o)}return t.set(e,r),r}function ci(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?kr(t)?[]:si(t,this._c):[].concat(n),r],o=ai(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e{o(!1,1e-7)},1e3)}n===1&&!_i(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(b,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(b,v)}n.observe(e)}return o(!0),a}function yi(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=Gr(e),u=i||a?[...l?Hr(l):[],...t?Hr(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?vi(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?Xr(e):null;c&&g();function g(){let t=Xr(e);h&&!_i(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var bi=hr,xi=gr,Si=lr,Ci=vr,wi=fr,Ti=cr,Ei=_r,Di=(e,t,n)=>{let r=new Map,i={platform:gi,...n},a={...i.platform,_c:r};return sr(e,t,{...i,platform:a})},Oi=typeof document<`u`?_.useLayoutEffect:function(){};function ki(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`function`&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e==`object`){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!ki(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){let n=i[r];if(!(n===`_owner`&&e.$$typeof)&&!ki(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function Ai(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function H(e,t){let n=Ai(e);return Math.round(t*n)/n}function U(e){let t=_.useRef(e);return Oi(()=>{t.current=e}),t}function ji(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:s=!0,whileElementsMounted:c,open:l}=e,[u,d]=_.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,p]=_.useState(r);ki(f,r)||p(r);let[m,h]=_.useState(null),[g,v]=_.useState(null),y=_.useCallback(e=>{e!==C.current&&(C.current=e,h(e))},[]),b=_.useCallback(e=>{e!==w.current&&(w.current=e,v(e))},[]),x=a||m,S=o||g,C=_.useRef(null),w=_.useRef(null),T=_.useRef(u),E=c!=null,ee=U(c),D=U(i),O=U(l),k=_.useCallback(()=>{if(!C.current||!w.current)return;let e={placement:t,strategy:n,middleware:f};D.current&&(e.platform=D.current),Di(C.current,w.current,e).then(e=>{let t={...e,isPositioned:O.current!==!1};te.current&&!ki(T.current,t)&&(T.current=t,Tt.flushSync(()=>{d(t)}))})},[f,t,n,D,O]);Oi(()=>{l===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[l]);let te=_.useRef(!1);Oi(()=>(te.current=!0,()=>{te.current=!1}),[]),Oi(()=>{if(x&&(C.current=x),S&&(w.current=S),x&&S){if(ee.current)return ee.current(x,S,k);k()}},[x,S,k,ee,E]);let ne=_.useMemo(()=>({reference:C,floating:w,setReference:y,setFloating:b}),[y,b]),A=_.useMemo(()=>({reference:x,floating:S}),[x,S]),j=_.useMemo(()=>{let e={position:n,left:0,top:0};if(!A.floating)return e;let t=H(A.floating,u.x),r=H(A.floating,u.y);return s?{...e,transform:`translate(`+t+`px, `+r+`px)`,...Ai(A.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,s,A.floating,u.x,u.y]);return _.useMemo(()=>({...u,update:k,refs:ne,elements:A,floatingStyles:j}),[u,k,ne,A,j])}var Mi=e=>{function t(e){return{}.hasOwnProperty.call(e,`current`)}return{name:`arrow`,options:e,fn(n){let{element:r,padding:i}=typeof e==`function`?e(n):e;return r&&t(r)?r.current==null?{}:Ti({element:r.current,padding:i}).fn(n):r?Ti({element:r,padding:i}).fn(n):{}}}},Ni=(e,t)=>{let n=bi(e);return{name:n.name,fn:n.fn,options:[e,t]}},Pi=(e,t)=>{let n=xi(e);return{name:n.name,fn:n.fn,options:[e,t]}},Fi=(e,t)=>({fn:Ei(e).fn,options:[e,t]}),Ii=(e,t)=>{let n=Si(e);return{name:n.name,fn:n.fn,options:[e,t]}},Li=(e,t)=>{let n=Ci(e);return{name:n.name,fn:n.fn,options:[e,t]}},Ri=(e,t)=>{let n=wi(e);return{name:n.name,fn:n.fn,options:[e,t]}},zi=(e,t)=>{let n=Mi(e);return{name:n.name,fn:n.fn,options:[e,t]}},Bi=`Arrow`,Vi=_.forwardRef((e,t)=>{let{children:n,width:r=10,height:i=5,...a}=e;return(0,I.jsx)(V.svg,{...a,ref:t,width:r,height:i,viewBox:`0 0 30 10`,preserveAspectRatio:`none`,children:e.asChild?n:(0,I.jsx)(`polygon`,{points:`0,0 30,0 15,10`})})});Vi.displayName=Bi;var Hi=Vi;function Ui(e){let[t,n]=_.useState(void 0);return En(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=e.offsetWidth,a=e.offsetHeight;n({width:i,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}else n(void 0)},[e]),t}var Wi=`Popper`,[Gi,Ki]=Dt(Wi),[qi,Ji]=Gi(Wi),Yi=e=>{let{__scopePopper:t,children:n}=e,[r,i]=_.useState(null);return(0,I.jsx)(qi,{scope:t,anchor:r,onAnchorChange:i,children:n})};Yi.displayName=Wi;var Xi=`PopperAnchor`,Zi=_.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:r,...i}=e,a=Ji(Xi,n),o=_.useRef(null),s=F(t,o),c=_.useRef(null);return _.useEffect(()=>{let e=c.current;c.current=r?.current||o.current,e!==c.current&&a.onAnchorChange(c.current)}),r?null:(0,I.jsx)(V.div,{...i,ref:s})});Zi.displayName=Xi;var Qi=`PopperContent`,[$i,ea]=Gi(Qi),ta=_.forwardRef((e,t)=>{let{__scopePopper:n,side:r=`bottom`,sideOffset:i=0,align:a=`center`,alignOffset:o=0,arrowPadding:s=0,avoidCollisions:c=!0,collisionBoundary:l=[],collisionPadding:u=0,sticky:d=`partial`,hideWhenDetached:f=!1,updatePositionStrategy:p=`optimized`,onPlaced:m,...h}=e,g=Ji(Qi,n),[v,y]=_.useState(null),b=F(t,e=>y(e)),[x,S]=_.useState(null),C=Ui(x),w=C?.width??0,T=C?.height??0,E=r+(a===`center`?``:`-`+a),ee=typeof u==`number`?u:{top:0,right:0,bottom:0,left:0,...u},D=Array.isArray(l)?l:[l],O=D.length>0,k={padding:ee,boundary:D.filter(aa),altBoundary:O},{refs:te,floatingStyles:ne,placement:A,isPositioned:j,middlewareData:re}=ji({strategy:`fixed`,placement:E,whileElementsMounted:(...e)=>yi(...e,{animationFrame:p===`always`}),elements:{reference:g.anchor},middleware:[Ni({mainAxis:i+T,alignmentAxis:o}),c&&Pi({mainAxis:!0,crossAxis:!1,limiter:d===`partial`?Fi():void 0,...k}),c&&Ii({...k}),Li({...k,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--radix-popper-available-width`,`${n}px`),o.setProperty(`--radix-popper-available-height`,`${r}px`),o.setProperty(`--radix-popper-anchor-width`,`${i}px`),o.setProperty(`--radix-popper-anchor-height`,`${a}px`)}}),x&&zi({element:x,padding:s}),oa({arrowWidth:w,arrowHeight:T}),f&&Ri({strategy:`referenceHidden`,...k})]}),[M,N]=sa(A),ie=Gt(m);En(()=>{j&&ie?.()},[j,ie]);let ae=re.arrow?.x,oe=re.arrow?.y,se=re.arrow?.centerOffset!==0,[ce,P]=_.useState();return En(()=>{v&&P(window.getComputedStyle(v).zIndex)},[v]),(0,I.jsx)(`div`,{ref:te.setFloating,"data-radix-popper-content-wrapper":``,style:{...ne,transform:j?ne.transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:ce,"--radix-popper-transform-origin":[re.transformOrigin?.x,re.transformOrigin?.y].join(` `),...re.hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}},dir:e.dir,children:(0,I.jsx)($i,{scope:n,placedSide:M,onArrowChange:S,arrowX:ae,arrowY:oe,shouldHideArrow:se,children:(0,I.jsx)(V.div,{"data-side":M,"data-align":N,...h,ref:b,style:{...h.style,animation:j?void 0:`none`}})})})});ta.displayName=Qi;var na=`PopperArrow`,ra={top:`bottom`,right:`left`,bottom:`top`,left:`right`},ia=_.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,i=ea(na,n),a=ra[i.placedSide];return(0,I.jsx)(`span`,{ref:i.onArrowChange,style:{position:`absolute`,left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[i.placedSide],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[i.placedSide],visibility:i.shouldHideArrow?`hidden`:void 0},children:(0,I.jsx)(Hi,{...r,ref:t,style:{...r.style,display:`block`}})})});ia.displayName=na;function aa(e){return e!==null}var oa=e=>({name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=sa(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}});function sa(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var ca=Yi,la=Zi,ua=ta,da=ia,fa=`Portal`,pa=_.forwardRef((e,t)=>{let{container:n,...r}=e,[i,a]=_.useState(!1);En(()=>a(!0),[]);let o=n||i&&globalThis?.document?.body;return o?Tt.createPortal((0,I.jsx)(V.div,{...r,ref:t}),o):null});pa.displayName=fa;function ma(e){let t=ha(e),n=_.forwardRef((e,n)=>{let{children:r,...i}=e,a=_.Children.toArray(r),o=a.find(_a);if(o){let e=o.props.children,r=a.map(t=>t===o?_.Children.count(e)>1?_.Children.only(null):_.isValidElement(e)?e.props.children:null:t);return(0,I.jsx)(t,{...i,ref:n,children:_.isValidElement(e)?_.cloneElement(e,void 0,r):null})}return(0,I.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function ha(e){let t=_.forwardRef((e,t)=>{let{children:n,...r}=e;if(_.isValidElement(n)){let e=ya(n),i=va(r,n.props);return n.type!==_.Fragment&&(i.ref=t?ue(t,e):e),_.cloneElement(n,i)}return _.Children.count(n)>1?_.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var ga=Symbol(`radix.slottable`);function _a(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===ga}function va(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function ya(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var ba=_.useInsertionEffect||En;function xa({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){let[i,a,o]=Sa({defaultProp:t,onChange:n}),s=e!==void 0,c=s?e:i;{let t=_.useRef(e!==void 0);_.useEffect(()=>{let e=t.current;e!==s&&console.warn(`${r} is changing from ${e?`controlled`:`uncontrolled`} to ${s?`controlled`:`uncontrolled`}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),t.current=s},[s,r])}return[c,_.useCallback(t=>{if(s){let n=Ca(t)?t(e):t;n!==e&&o.current?.(n)}else a(t)},[s,e,a,o])]}function Sa({defaultProp:e,onChange:t}){let[n,r]=_.useState(e),i=_.useRef(n),a=_.useRef(t);return ba(()=>{a.current=t},[t]),_.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}function Ca(e){return typeof e==`function`}function wa(e){let t=_.useRef({value:e,previous:e});return _.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var Ta=Object.freeze({position:`absolute`,border:0,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,wordWrap:`normal`}),Ea=`VisuallyHidden`,Da=_.forwardRef((e,t)=>(0,I.jsx)(V.span,{...e,ref:t,style:{...Ta,...e.style}}));Da.displayName=Ea;var Oa=Da,ka=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},Aa=new WeakMap,ja=new WeakMap,Ma={},Na=0,Pa=function(e){return e&&(e.host||Pa(e.parentNode))},Fa=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=Pa(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},Ia=function(e,t,n,r){var i=Fa(t,Array.isArray(e)?e:[e]);Ma[n]||(Ma[n]=new WeakMap);var a=Ma[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(Aa.get(e)||0)+1,l=(a.get(e)||0)+1;Aa.set(e,c),a.set(e,l),o.push(e),c===1&&i&&ja.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),Na++,function(){o.forEach(function(e){var t=Aa.get(e)-1,i=a.get(e)-1;Aa.set(e,t),a.set(e,i),t||(ja.has(e)||e.removeAttribute(r),ja.delete(e)),i||e.removeAttribute(n)}),Na--,Na||(Aa=new WeakMap,Aa=new WeakMap,ja=new WeakMap,Ma={})}},La=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||ka(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),Ia(r,i,n,`aria-hidden`)):function(){return null}},Ra=function(){return Ra=Object.assign||function(e){for(var t,n=1,r=arguments.length;n`u`)return uo;var t=po(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},ho=lo(),go=`data-scroll-locked`,_o=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),` - .${Ua} { - overflow: hidden ${r}; - padding-right: ${s}px ${r}; - } - body[${go}] { - overflow: hidden ${r}; - overscroll-behavior: contain; - ${[t&&`position: relative ${r};`,n===`margin`&&` - padding-left: ${i}px; - padding-top: ${a}px; - padding-right: ${o}px; - margin-left:0; - margin-top:0; - margin-right: ${s}px ${r}; - `,n===`padding`&&`padding-right: ${s}px ${r};`].filter(Boolean).join(``)} - } - - .${Va} { - right: ${s}px ${r}; - } - - .${Ha} { - margin-right: ${s}px ${r}; - } - - .${Va} .${Va} { - right: 0 ${r}; - } - - .${Ha} .${Ha} { - margin-right: 0 ${r}; - } - - body[${go}] { - ${Wa}: ${s}px; - } -`},vo=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},yo=function(){_.useEffect(function(){return document.body.setAttribute(go,(vo()+1).toString()),function(){var e=vo()-1;e<=0?document.body.removeAttribute(go):document.body.setAttribute(go,e.toString())}},[])},bo=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;yo();var a=_.useMemo(function(){return mo(i)},[i]);return _.createElement(ho,{styles:_o(a,!t,i,n?``:`!important`)})},xo=!1;if(typeof window<`u`)try{var So=Object.defineProperty({},`passive`,{get:function(){return xo=!0,!0}});window.addEventListener(`test`,So,So),window.removeEventListener(`test`,So,So)}catch{xo=!1}var Co=xo?{passive:!1}:!1,wo=function(e){return e.tagName===`TEXTAREA`},To=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!wo(e)&&n[t]===`visible`)},Eo=function(e){return To(e,`overflowY`)},Do=function(e){return To(e,`overflowX`)},Oo=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),jo(e,r)){var i=Mo(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},ko=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},Ao=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},jo=function(e,t){return e===`v`?Eo(t):Do(t)},Mo=function(e,t){return e===`v`?ko(t):Ao(t)},No=function(e,t){return e===`h`&&t===`rtl`?-1:1},Po=function(e,t,n,r,i){var a=No(e,window.getComputedStyle(t).direction),o=a*r,s=n.target,c=t.contains(s),l=!1,u=o>0,d=0,f=0;do{if(!s)break;var p=Mo(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&jo(e,s)&&(d+=h,f+=m);var g=s.parentNode;s=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&s!==document.body||c&&(t.contains(s)||t===s));return(u&&(i&&Math.abs(d)<1||!i&&o>d)||!u&&(i&&Math.abs(f)<1||!i&&-o>f))&&(l=!0),l},Fo=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Io=function(e){return[e.deltaX,e.deltaY]},Lo=function(e){return e&&`current`in e?e.current:e},Ro=function(e,t){return e[0]===t[0]&&e[1]===t[1]},zo=function(e){return` - .block-interactivity-${e} {pointer-events: none;} - .allow-interactivity-${e} {pointer-events: all;} -`},Bo=0,Vo=[];function Ho(e){var t=_.useRef([]),n=_.useRef([0,0]),r=_.useRef(),i=_.useState(Bo++)[0],a=_.useState(lo)[0],o=_.useRef(e);_.useEffect(function(){o.current=e},[e]),_.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=Ba([e.lockRef.current],(e.shards||[]).map(Lo),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var s=_.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=Fo(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=Oo(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=Oo(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return Po(h,t,e,h===`h`?s:c,!0)},[]),c=_.useCallback(function(e){var n=e;if(!(!Vo.length||Vo[Vo.length-1]!==a)){var r=`deltaY`in n?Io(n):Fo(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&Ro(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var c=(o.current.shards||[]).map(Lo).filter(Boolean).filter(function(e){return e.contains(n.target)});(c.length>0?s(n,c[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),l=_.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:Uo(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),u=_.useCallback(function(e){n.current=Fo(e),r.current=void 0},[]),d=_.useCallback(function(t){l(t.type,Io(t),t.target,s(t,e.lockRef.current))},[]),f=_.useCallback(function(t){l(t.type,Fo(t),t.target,s(t,e.lockRef.current))},[]);_.useEffect(function(){return Vo.push(a),e.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:f}),document.addEventListener(`wheel`,c,Co),document.addEventListener(`touchmove`,c,Co),document.addEventListener(`touchstart`,u,Co),function(){Vo=Vo.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,c,Co),document.removeEventListener(`touchmove`,c,Co),document.removeEventListener(`touchstart`,u,Co)}},[]);var p=e.removeScrollBar,m=e.inert;return _.createElement(_.Fragment,null,m?_.createElement(a,{styles:zo(i)}):null,p?_.createElement(bo,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Uo(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var Wo=eo(to,Ho),Go=_.forwardRef(function(e,t){return _.createElement(ro,Ra({},e,{ref:t,sideCar:Wo}))});Go.classNames=ro.classNames;var Ko=[` `,`Enter`,`ArrowUp`,`ArrowDown`],qo=[` `,`Enter`],Jo=`Select`,[Yo,Xo,Zo]=Ft(Jo),[Qo,$o]=Dt(Jo,[Zo,Ki]),es=Ki(),[ts,ns]=Qo(Jo),[rs,is]=Qo(Jo),as=e=>{let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:s,onValueChange:c,dir:l,name:u,autoComplete:d,disabled:f,required:p,form:m}=e,h=es(t),[g,v]=_.useState(null),[y,b]=_.useState(null),[x,S]=_.useState(!1),C=Lt(l),[w,T]=xa({prop:r,defaultProp:i??!1,onChange:a,caller:Jo}),[E,ee]=xa({prop:o,defaultProp:s,onChange:c,caller:Jo}),D=_.useRef(null),O=g?m||!!g.closest(`form`):!0,[k,te]=_.useState(new Set),ne=Array.from(k).map(e=>e.props.value).join(`;`);return(0,I.jsx)(ca,{...h,children:(0,I.jsxs)(ts,{required:p,scope:t,trigger:g,onTriggerChange:v,valueNode:y,onValueNodeChange:b,valueNodeHasChildren:x,onValueNodeHasChildrenChange:S,contentId:kn(),value:E,onValueChange:ee,open:w,onOpenChange:T,dir:C,triggerPointerDownPosRef:D,disabled:f,children:[(0,I.jsx)(Yo.Provider,{scope:t,children:(0,I.jsx)(rs,{scope:e.__scopeSelect,onNativeOptionAdd:_.useCallback(e=>{te(t=>new Set(t).add(e))},[]),onNativeOptionRemove:_.useCallback(e=>{te(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),O?(0,I.jsxs)(ec,{"aria-hidden":!0,required:p,tabIndex:-1,name:u,autoComplete:d,value:E,onChange:e=>ee(e.target.value),disabled:f,form:m,children:[E===void 0?(0,I.jsx)(`option`,{value:``}):null,Array.from(k)]},ne):null]})})};as.displayName=Jo;var os=`SelectTrigger`,ss=_.forwardRef((e,t)=>{let{__scopeSelect:n,disabled:r=!1,...i}=e,a=es(n),o=ns(os,n),s=o.disabled||r,c=F(t,o.onTriggerChange),l=Xo(n),u=_.useRef(`touch`),[d,f,p]=nc(e=>{let t=l().filter(e=>!e.disabled),n=rc(t,e,t.find(e=>e.value===o.value));n!==void 0&&o.onValueChange(n.value)}),m=e=>{s||(o.onOpenChange(!0),p()),e&&(o.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,I.jsx)(la,{asChild:!0,...a,children:(0,I.jsx)(V.button,{type:`button`,role:`combobox`,"aria-controls":o.contentId,"aria-expanded":o.open,"aria-required":o.required,"aria-autocomplete":`none`,dir:o.dir,"data-state":o.open?`open`:`closed`,disabled:s,"data-disabled":s?``:void 0,"data-placeholder":tc(o.value)?``:void 0,...i,ref:c,onClick:B(i.onClick,e=>{e.currentTarget.focus(),u.current!==`mouse`&&m(e)}),onPointerDown:B(i.onPointerDown,e=>{u.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(m(e),e.preventDefault())}),onKeyDown:B(i.onKeyDown,e=>{let t=d.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&f(e.key),!(t&&e.key===` `)&&Ko.includes(e.key)&&(m(),e.preventDefault())})})})});ss.displayName=os;var cs=`SelectValue`,ls=_.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...s}=e,c=ns(cs,n),{onValueNodeHasChildrenChange:l}=c,u=a!==void 0,d=F(t,c.onValueNodeChange);return En(()=>{l(u)},[l,u]),(0,I.jsx)(V.span,{...s,ref:d,style:{pointerEvents:`none`},children:tc(c.value)?(0,I.jsx)(I.Fragment,{children:o}):a})});ls.displayName=cs;var us=`SelectIcon`,ds=_.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...i}=e;return(0,I.jsx)(V.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})});ds.displayName=us;var fs=`SelectPortal`,ps=e=>(0,I.jsx)(pa,{asChild:!0,...e});ps.displayName=fs;var ms=`SelectContent`,hs=_.forwardRef((e,t)=>{let n=ns(ms,e.__scopeSelect),[r,i]=_.useState();if(En(()=>{i(new DocumentFragment)},[]),!n.open){let t=r;return t?Tt.createPortal((0,I.jsx)(_s,{scope:e.__scopeSelect,children:(0,I.jsx)(Yo.Slot,{scope:e.__scopeSelect,children:(0,I.jsx)(`div`,{children:e.children})})}),t):null}return(0,I.jsx)(xs,{...e,ref:t})});hs.displayName=ms;var gs=10,[_s,vs]=Qo(ms),ys=`SelectContentImpl`,bs=ma(`SelectContent.RemoveScroll`),xs=_.forwardRef((e,t)=>{let{__scopeSelect:n,position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:o,side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:g,...v}=e,y=ns(ms,n),[b,x]=_.useState(null),[S,C]=_.useState(null),w=F(t,e=>x(e)),[T,E]=_.useState(null),[ee,D]=_.useState(null),O=Xo(n),[k,te]=_.useState(!1),ne=_.useRef(!1);_.useEffect(()=>{if(b)return La(b)},[b]),cn();let A=_.useCallback(e=>{let[t,...n]=O().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&S&&(S.scrollTop=0),n===r&&S&&(S.scrollTop=S.scrollHeight),n?.focus(),document.activeElement!==i))return},[O,S]),j=_.useCallback(()=>A([T,b]),[A,T,b]);_.useEffect(()=>{k&&j()},[k,j]);let{onOpenChange:re,triggerPointerDownPosRef:M}=y;_.useEffect(()=>{if(b){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(M.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(M.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():b.contains(n.target)||re(!1),document.removeEventListener(`pointermove`,t),M.current=null};return M.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[b,re,M]),_.useEffect(()=>{let e=()=>re(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[re]);let[N,ie]=nc(e=>{let t=O().filter(e=>!e.disabled),n=rc(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current.focus())}),ae=_.useCallback((e,t,n)=>{let r=!ne.current&&!n;(y.value!==void 0&&y.value===t||r)&&(E(e),r&&(ne.current=!0))},[y.value]),oe=_.useCallback(()=>b?.focus(),[b]),se=_.useCallback((e,t,n)=>{let r=!ne.current&&!n;(y.value!==void 0&&y.value===t||r)&&D(e)},[y.value]),ce=r===`popper`?Ts:Cs,P=ce===Ts?{side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:g}:{};return(0,I.jsx)(_s,{scope:n,content:b,viewport:S,onViewportChange:C,itemRefCallback:ae,selectedItem:T,onItemLeave:oe,itemTextRefCallback:se,focusSelectedItem:j,selectedItemText:ee,position:r,isPositioned:k,searchRef:N,children:(0,I.jsx)(Go,{as:bs,allowPinchZoom:!0,children:(0,I.jsx)(mn,{asChild:!0,trapped:y.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:B(i,e=>{y.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,I.jsx)($t,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>y.onOpenChange(!1),children:(0,I.jsx)(ce,{role:`listbox`,id:y.contentId,"data-state":y.open?`open`:`closed`,dir:y.dir,onContextMenu:e=>e.preventDefault(),...v,...P,onPlaced:()=>te(!0),ref:w,style:{display:`flex`,flexDirection:`column`,outline:`none`,...v.style},onKeyDown:B(v.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&ie(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=O().filter(e=>!e.disabled).map(e=>e.ref.current);if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>A(t)),e.preventDefault()}})})})})})})});xs.displayName=ys;var Ss=`SelectItemAlignedPosition`,Cs=_.forwardRef((e,t)=>{let{__scopeSelect:n,onPlaced:r,...i}=e,a=ns(ms,n),o=vs(ms,n),[s,c]=_.useState(null),[l,u]=_.useState(null),d=F(t,e=>u(e)),f=Xo(n),p=_.useRef(!1),m=_.useRef(!0),{viewport:h,selectedItem:g,selectedItemText:v,focusSelectedItem:y}=o,b=_.useCallback(()=>{if(a.trigger&&a.valueNode&&s&&l&&h&&g&&v){let e=a.trigger.getBoundingClientRect(),t=l.getBoundingClientRect(),n=a.valueNode.getBoundingClientRect(),i=v.getBoundingClientRect();if(a.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,o=e.left-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-gs,d=Et(a,[gs,Math.max(gs,u-l)]);s.style.minWidth=c+`px`,s.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-gs,d=Et(a,[gs,Math.max(gs,u-l)]);s.style.minWidth=c+`px`,s.style.right=d+`px`}let o=f(),c=window.innerHeight-gs*2,u=h.scrollHeight,d=window.getComputedStyle(l),m=parseInt(d.borderTopWidth,10),_=parseInt(d.paddingTop,10),y=parseInt(d.borderBottomWidth,10),b=parseInt(d.paddingBottom,10),x=m+_+u+b+y,S=Math.min(g.offsetHeight*5,x),C=window.getComputedStyle(h),w=parseInt(C.paddingTop,10),T=parseInt(C.paddingBottom,10),E=e.top+e.height/2-gs,ee=c-E,D=g.offsetHeight/2,O=g.offsetTop+D,k=m+_+O,te=x-k;if(k<=E){let e=o.length>0&&g===o[o.length-1].ref.current;s.style.bottom=`0px`;let t=l.clientHeight-h.offsetTop-h.offsetHeight,n=k+Math.max(ee,D+(e?T:0)+t+y);s.style.height=n+`px`}else{let e=o.length>0&&g===o[0].ref.current;s.style.top=`0px`;let t=Math.max(E,m+h.offsetTop+(e?w:0)+D)+te;s.style.height=t+`px`,h.scrollTop=k-E+h.offsetTop}s.style.margin=`${gs}px 0`,s.style.minHeight=S+`px`,s.style.maxHeight=c+`px`,r?.(),requestAnimationFrame(()=>p.current=!0)}},[f,a.trigger,a.valueNode,s,l,h,g,v,a.dir,r]);En(()=>b(),[b]);let[x,S]=_.useState();return En(()=>{l&&S(window.getComputedStyle(l).zIndex)},[l]),(0,I.jsx)(Es,{scope:n,contentWrapper:s,shouldExpandOnScrollRef:p,onScrollButtonChange:_.useCallback(e=>{e&&m.current===!0&&(b(),y?.(),m.current=!1)},[b,y]),children:(0,I.jsx)(`div`,{ref:c,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:x},children:(0,I.jsx)(V.div,{...i,ref:d,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})});Cs.displayName=Ss;var ws=`SelectPopperPosition`,Ts=_.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=gs,...a}=e,o=es(n);return(0,I.jsx)(ua,{...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})});Ts.displayName=ws;var[Es,Ds]=Qo(ms,{}),Os=`SelectViewport`,ks=_.forwardRef((e,t)=>{let{__scopeSelect:n,nonce:r,...i}=e,a=vs(Os,n),o=Ds(Os,n),s=F(t,a.onViewportChange),c=_.useRef(0);return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`},nonce:r}),(0,I.jsx)(Yo.Slot,{scope:n,children:(0,I.jsx)(V.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:s,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:B(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=o;if(r?.current&&n){let e=Math.abs(c.current-t.scrollTop);if(e>0){let r=window.innerHeight-gs*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o0?s:0,n.style.justifyContent=`flex-end`)}}}c.current=t.scrollTop})})})]})});ks.displayName=Os;var As=`SelectGroup`,[js,Ms]=Qo(As),Ns=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=kn();return(0,I.jsx)(js,{scope:n,id:i,children:(0,I.jsx)(V.div,{role:`group`,"aria-labelledby":i,...r,ref:t})})});Ns.displayName=As;var Ps=`SelectLabel`,Fs=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=Ms(Ps,n);return(0,I.jsx)(V.div,{id:i.id,...r,ref:t})});Fs.displayName=Ps;var Is=`SelectItem`,[Ls,Rs]=Qo(Is),zs=_.forwardRef((e,t)=>{let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...o}=e,s=ns(Is,n),c=vs(Is,n),l=s.value===r,[u,d]=_.useState(a??``),[f,p]=_.useState(!1),m=F(t,e=>c.itemRefCallback?.(e,r,i)),h=kn(),g=_.useRef(`touch`),v=()=>{i||(s.onValueChange(r),s.onOpenChange(!1))};if(r===``)throw Error(`A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return(0,I.jsx)(Ls,{scope:n,value:r,disabled:i,textId:h,isSelected:l,onItemTextChange:_.useCallback(e=>{d(t=>t||(e?.textContent??``).trim())},[]),children:(0,I.jsx)(Yo.ItemSlot,{scope:n,value:r,disabled:i,textValue:u,children:(0,I.jsx)(V.div,{role:`option`,"aria-labelledby":h,"data-highlighted":f?``:void 0,"aria-selected":l&&f,"data-state":l?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...o,ref:m,onFocus:B(o.onFocus,()=>p(!0)),onBlur:B(o.onBlur,()=>p(!1)),onClick:B(o.onClick,()=>{g.current!==`mouse`&&v()}),onPointerUp:B(o.onPointerUp,()=>{g.current===`mouse`&&v()}),onPointerDown:B(o.onPointerDown,e=>{g.current=e.pointerType}),onPointerMove:B(o.onPointerMove,e=>{g.current=e.pointerType,i?c.onItemLeave?.():g.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:B(o.onPointerLeave,e=>{e.currentTarget===document.activeElement&&c.onItemLeave?.()}),onKeyDown:B(o.onKeyDown,e=>{c.searchRef?.current!==``&&e.key===` `||(qo.includes(e.key)&&v(),e.key===` `&&e.preventDefault())})})})})});zs.displayName=Is;var Bs=`SelectItemText`,Vs=_.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,...a}=e,o=ns(Bs,n),s=vs(Bs,n),c=Rs(Bs,n),l=is(Bs,n),[u,d]=_.useState(null),f=F(t,e=>d(e),c.onItemTextChange,e=>s.itemTextRefCallback?.(e,c.value,c.disabled)),p=u?.textContent,m=_.useMemo(()=>(0,I.jsx)(`option`,{value:c.value,disabled:c.disabled,children:p},c.value),[c.disabled,c.value,p]),{onNativeOptionAdd:h,onNativeOptionRemove:g}=l;return En(()=>(h(m),()=>g(m)),[h,g,m]),(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(V.span,{id:c.textId,...a,ref:f}),c.isSelected&&o.valueNode&&!o.valueNodeHasChildren?Tt.createPortal(a.children,o.valueNode):null]})});Vs.displayName=Bs;var Hs=`SelectItemIndicator`,Us=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return Rs(Hs,n).isSelected?(0,I.jsx)(V.span,{"aria-hidden":!0,...r,ref:t}):null});Us.displayName=Hs;var Ws=`SelectScrollUpButton`,Gs=_.forwardRef((e,t)=>{let n=vs(Ws,e.__scopeSelect),r=Ds(Ws,e.__scopeSelect),[i,a]=_.useState(!1),o=F(t,r.onScrollButtonChange);return En(()=>{if(n.viewport&&n.isPositioned){let e=function(){a(t.scrollTop>0)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,I.jsx)(Js,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null});Gs.displayName=Ws;var Ks=`SelectScrollDownButton`,qs=_.forwardRef((e,t)=>{let n=vs(Ks,e.__scopeSelect),r=Ds(Ks,e.__scopeSelect),[i,a]=_.useState(!1),o=F(t,r.onScrollButtonChange);return En(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;a(Math.ceil(t.scrollTop)t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,I.jsx)(Js,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});qs.displayName=Ks;var Js=_.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=vs(`SelectScrollButton`,n),o=_.useRef(null),s=Xo(n),c=_.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return _.useEffect(()=>()=>c(),[c]),En(()=>{s().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[s]),(0,I.jsx)(V.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:B(i.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:B(i.onPointerMove,()=>{a.onItemLeave?.(),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:B(i.onPointerLeave,()=>{c()})})}),Ys=`SelectSeparator`,Xs=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return(0,I.jsx)(V.div,{"aria-hidden":!0,...r,ref:t})});Xs.displayName=Ys;var Zs=`SelectArrow`,Qs=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=es(n),a=ns(Zs,n),o=vs(Zs,n);return a.open&&o.position===`popper`?(0,I.jsx)(da,{...i,...r,ref:t}):null});Qs.displayName=Zs;var $s=`SelectBubbleInput`,ec=_.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{let i=_.useRef(null),a=F(r,i),o=wa(t);return _.useEffect(()=>{let e=i.current;if(!e)return;let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(o!==t&&r){let n=new Event(`change`,{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[o,t]),(0,I.jsx)(V.select,{...n,style:{...Ta,...n.style},ref:a,defaultValue:t})});ec.displayName=$s;function tc(e){return e===``||e===void 0}function nc(e){let t=Gt(e),n=_.useRef(``),r=_.useRef(0),i=_.useCallback(e=>{let i=n.current+e;t(i),(function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))})(i)},[t]),a=_.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return _.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}function rc(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=ic(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.textValue.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function ic(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var ac=as,oc=ss,sc=ls,cc=ds,lc=ps,uc=hs,dc=ks,fc=Ns,pc=Fs,mc=zs,hc=Vs,gc=Us,_c=Gs,vc=qs,yc=Xs,bc=ac,xc=fc,Sc=sc,Cc=_.forwardRef(({className:e,children:t,...n},r)=>(0,I.jsxs)(oc,{ref:r,className:z(`flex h-9 w-full items-center justify-between gap-2 rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1`,e),...n,children:[t,(0,I.jsx)(cc,{asChild:!0,children:(0,I.jsx)(T,{className:`h-4 w-4 opacity-50`})})]}));Cc.displayName=oc.displayName;var wc=_.forwardRef(({className:e,...t},n)=>(0,I.jsx)(_c,{ref:n,className:z(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,I.jsx)(E,{className:`h-4 w-4`})}));wc.displayName=_c.displayName;var Tc=_.forwardRef(({className:e,...t},n)=>(0,I.jsx)(vc,{ref:n,className:z(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,I.jsx)(T,{className:`h-4 w-4`})}));Tc.displayName=vc.displayName;var Ec=_.forwardRef(({className:e,children:t,position:n=`popper`,...r},i)=>(0,I.jsx)(lc,{children:(0,I.jsxs)(uc,{ref:i,className:z(`relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,...r,children:[(0,I.jsx)(wc,{}),(0,I.jsx)(dc,{className:z(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]`),children:t}),(0,I.jsx)(Tc,{})]})}));Ec.displayName=uc.displayName;var Dc=_.forwardRef(({className:e,...t},n)=>(0,I.jsx)(pc,{ref:n,className:z(`px-2 py-1.5 text-[10.5px] font-semibold uppercase tracking-wider text-muted-foreground`,e),...t}));Dc.displayName=pc.displayName;var Oc=_.forwardRef(({className:e,children:t,...n},r)=>(0,I.jsxs)(mc,{ref:r,className:z(`relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,e),...n,children:[(0,I.jsx)(`span`,{className:`absolute right-2 flex h-3.5 w-3.5 items-center justify-center`,children:(0,I.jsx)(gc,{children:(0,I.jsx)(w,{className:`h-4 w-4`})})}),(0,I.jsx)(hc,{children:t})]}));Oc.displayName=mc.displayName;var kc=_.forwardRef(({className:e,...t},n)=>(0,I.jsx)(yc,{ref:n,className:z(`-mx-1 my-1 h-px bg-muted`,e),...t}));kc.displayName=yc.displayName;function Ac(e,t){return _.useReducer((e,n)=>t[e][n]??e,e)}var jc=e=>{let{present:t,children:n}=e,r=Mc(t),i=typeof n==`function`?n({present:r.isPresent}):_.Children.only(n),a=F(r.ref,Pc(i));return typeof n==`function`||r.isPresent?_.cloneElement(i,{ref:a}):null};jc.displayName=`Presence`;function Mc(e){let[t,n]=_.useState(),r=_.useRef(null),i=_.useRef(e),a=_.useRef(`none`),[o,s]=Ac(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return _.useEffect(()=>{let e=Nc(r.current);a.current=o===`mounted`?e:`none`},[o]),En(()=>{let t=r.current,n=i.current;if(n!==e){let r=a.current,o=Nc(t);e?s(`MOUNT`):o===`none`||t?.display===`none`?s(`UNMOUNT`):s(n&&r!==o?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,s]),En(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,o=a=>{let o=Nc(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(s(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},c=e=>{e.target===t&&(a.current=Nc(r.current))};return t.addEventListener(`animationstart`,c),t.addEventListener(`animationcancel`,o),t.addEventListener(`animationend`,o),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,c),t.removeEventListener(`animationcancel`,o),t.removeEventListener(`animationend`,o)}}else s(`ANIMATION_END`)},[t,s]),{isPresent:[`mounted`,`unmountSuspended`].includes(o),ref:_.useCallback(e=>{r.current=e?getComputedStyle(e):null,n(e)},[])}}function Nc(e){return e?.animationName||`none`}function Pc(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Fc=Symbol(`radix.slottable`);function Ic(e){let t=({children:e})=>(0,I.jsx)(I.Fragment,{children:e});return t.displayName=`${e}.Slottable`,t.__radixId=Fc,t}var[Lc,Rc]=Dt(`Tooltip`,[Ki]),zc=Ki(),Bc=`TooltipProvider`,Vc=700,Hc=`tooltip.open`,[Uc,Wc]=Lc(Bc),Gc=e=>{let{__scopeTooltip:t,delayDuration:n=Vc,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=_.useRef(!0),s=_.useRef(!1),c=_.useRef(0);return _.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,I.jsx)(Uc,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:_.useCallback(()=>{window.clearTimeout(c.current),o.current=!1},[]),onClose:_.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r)},[r]),isPointerInTransitRef:s,onPointerInTransitChange:_.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})};Gc.displayName=Bc;var Kc=`Tooltip`,[qc,Jc]=Lc(Kc),Yc=e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,c=Wc(Kc,e.__scopeTooltip),l=zc(t),[u,d]=_.useState(null),f=kn(),p=_.useRef(0),m=o??c.disableHoverableContent,h=s??c.delayDuration,g=_.useRef(!1),[v,y]=xa({prop:r,defaultProp:i??!1,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(Hc))):c.onClose(),a?.(e)},caller:Kc}),b=_.useMemo(()=>v?g.current?`delayed-open`:`instant-open`:`closed`,[v]),x=_.useCallback(()=>{window.clearTimeout(p.current),p.current=0,g.current=!1,y(!0)},[y]),S=_.useCallback(()=>{window.clearTimeout(p.current),p.current=0,y(!1)},[y]),C=_.useCallback(()=>{window.clearTimeout(p.current),p.current=window.setTimeout(()=>{g.current=!0,y(!0),p.current=0},h)},[h,y]);return _.useEffect(()=>()=>{p.current&&=(window.clearTimeout(p.current),0)},[]),(0,I.jsx)(ca,{...l,children:(0,I.jsx)(qc,{scope:t,contentId:f,open:v,stateAttribute:b,trigger:u,onTriggerChange:d,onTriggerEnter:_.useCallback(()=>{c.isOpenDelayedRef.current?C():x()},[c.isOpenDelayedRef,C,x]),onTriggerLeave:_.useCallback(()=>{m?S():(window.clearTimeout(p.current),p.current=0)},[S,m]),onOpen:x,onClose:S,disableHoverableContent:m,children:n})})};Yc.displayName=Kc;var Xc=`TooltipTrigger`,Zc=_.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=Jc(Xc,n),a=Wc(Xc,n),o=zc(n),s=F(t,_.useRef(null),i.onTriggerChange),c=_.useRef(!1),l=_.useRef(!1),u=_.useCallback(()=>c.current=!1,[]);return _.useEffect(()=>()=>document.removeEventListener(`pointerup`,u),[u]),(0,I.jsx)(la,{asChild:!0,...o,children:(0,I.jsx)(V.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:s,onPointerMove:B(e.onPointerMove,e=>{e.pointerType!==`touch`&&!l.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),l.current=!0)}),onPointerLeave:B(e.onPointerLeave,()=>{i.onTriggerLeave(),l.current=!1}),onPointerDown:B(e.onPointerDown,()=>{i.open&&i.onClose(),c.current=!0,document.addEventListener(`pointerup`,u,{once:!0})}),onFocus:B(e.onFocus,()=>{c.current||i.onOpen()}),onBlur:B(e.onBlur,i.onClose),onClick:B(e.onClick,i.onClose)})})});Zc.displayName=Xc;var Qc=`TooltipPortal`,[$c,el]=Lc(Qc,{forceMount:void 0}),tl=e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=Jc(Qc,t);return(0,I.jsx)($c,{scope:t,forceMount:n,children:(0,I.jsx)(jc,{present:n||a.open,children:(0,I.jsx)(pa,{asChild:!0,container:i,children:r})})})};tl.displayName=Qc;var nl=`TooltipContent`,rl=_.forwardRef((e,t)=>{let n=el(nl,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=Jc(nl,e.__scopeTooltip);return(0,I.jsx)(jc,{present:r||o.open,children:o.disableHoverableContent?(0,I.jsx)(cl,{side:i,...a,ref:t}):(0,I.jsx)(il,{side:i,...a,ref:t})})}),il=_.forwardRef((e,t)=>{let n=Jc(nl,e.__scopeTooltip),r=Wc(nl,e.__scopeTooltip),i=_.useRef(null),a=F(t,i),[o,s]=_.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=_.useCallback(()=>{s(null),d(!1)},[d]),p=_.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=fl(r,dl(r,n.getBoundingClientRect())),a=pl(t.getBoundingClientRect());s(hl([...i,...a])),d(!0)},[d]);return _.useEffect(()=>()=>f(),[f]),_.useEffect(()=>{if(c&&u){let e=e=>p(e,u),t=e=>p(e,c);return c.addEventListener(`pointerleave`,e),u.addEventListener(`pointerleave`,t),()=>{c.removeEventListener(`pointerleave`,e),u.removeEventListener(`pointerleave`,t)}}},[c,u,p,f]),_.useEffect(()=>{if(o){let e=e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||u?.contains(t),i=!ml(n,o);r?f():i&&(f(),l())};return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,u,o,l,f]),(0,I.jsx)(cl,{...e,ref:a})}),[al,ol]=Lc(Kc,{isInside:!1}),sl=Ic(`TooltipContent`),cl=_.forwardRef((e,t)=>{let{__scopeTooltip:n,children:r,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:o,...s}=e,c=Jc(nl,n),l=zc(n),{onClose:u}=c;return _.useEffect(()=>(document.addEventListener(Hc,u),()=>document.removeEventListener(Hc,u)),[u]),_.useEffect(()=>{if(c.trigger){let e=e=>{e.target?.contains(c.trigger)&&u()};return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[c.trigger,u]),(0,I.jsx)($t,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:u,children:(0,I.jsxs)(ua,{"data-state":c.stateAttribute,...l,...s,ref:t,style:{...s.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,I.jsx)(sl,{children:r}),(0,I.jsx)(al,{scope:n,isInside:!0,children:(0,I.jsx)(Oa,{id:c.contentId,role:`tooltip`,children:i||r})})]})})});rl.displayName=nl;var ll=`TooltipArrow`,ul=_.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=zc(n);return ol(ll,n).isInside?null:(0,I.jsx)(da,{...i,...r,ref:t})});ul.displayName=ll;function dl(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function fl(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function pl(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function ml(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function hl(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y)),gl(t)}function gl(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var _l=Gc,vl=Yc,yl=Zc,bl=tl,xl=rl,Sl=_l,Cl=vl,wl=yl,Tl=_.forwardRef(({className:e,sideOffset:t=6,...n},r)=>(0,I.jsx)(bl,{children:(0,I.jsx)(xl,{ref:r,sideOffset:t,className:z(`z-50 max-w-xs overflow-hidden rounded-md bg-foreground px-2 py-1 text-xs text-background shadow-sm animate-in fade-in-0 zoom-in-95`,e),...n})}));Tl.displayName=xl.displayName;var El=[`nvlink`,`nvswitch`,`pcie`,`infiniband`,`ethernet`];function Dl({nodes:e,setNodes:t,skus:n}){let r=Ol(n,e=>e.vendor||`other`),i=()=>{let n=e.length;t(e=>[...e,{name:`node-${String(n+1).padStart(2,`0`)}`,interconnect:`nvlink`,intra_node_bandwidth_gbps:900,inter_node_bandwidth_gbps:25,gpus:[]}])},a=e=>t(t=>t.filter((t,n)=>n!==e)),o=(e,n)=>t(t=>t.map((t,r)=>r===e?{...t,...n}:t)),s=e=>{t(t=>t.map((t,r)=>{if(r!==e)return t;let i=n[0],a=`${t.name}-gpu-${t.gpus.length}`,o=i?.memory_gb??80;return{...t,gpus:[...t.gpus,{id:a,model:i?.id??`H100-SXM5`,memory_total_gb:o,memory_free_gb:o,in_use:!1}]}}))},c=(e,n)=>t(t=>t.map((t,r)=>r===e?{...t,gpus:t.gpus.filter((e,t)=>t!==n)}:t)),l=(e,r,i)=>t(t=>t.map((t,a)=>a===e?{...t,gpus:t.gpus.map((e,t)=>{if(t!==r)return e;let a={...e,...i};if(i.model&&i.model!==e.model){let e=n.find(e=>e.id===i.model);e&&(a.memory_total_gb=e.memory_gb,a.memory_free_gb=e.memory_gb)}return a})}:t)),u=(e,n)=>t(t=>t.map((t,r)=>{if(r!==e)return t;let i={...t.gpus[n],id:`${t.name}-gpu-${t.gpus.length}`};return{...t,gpus:[...t.gpus,i]}}));return(0,I.jsxs)(`div`,{className:`space-y-3`,children:[e.map((e,t)=>{let i=e.gpus.reduce((e,t)=>e+t.memory_free_gb,0);return(0,I.jsxs)(`div`,{className:`rounded-lg border bg-background p-3`,children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,I.jsx)(wt,{value:e.name,onChange:e=>o(t,{name:e.target.value}),placeholder:`node name`,"aria-label":`Node name`,className:`h-8 flex-1 text-sm`}),(0,I.jsxs)(bc,{value:e.interconnect??`nvlink`,onValueChange:e=>o(t,{interconnect:e}),children:[(0,I.jsx)(Cc,{className:`h-8 w-[130px] text-xs`,"aria-label":`Interconnect`,children:(0,I.jsx)(Sc,{})}),(0,I.jsx)(Ec,{children:El.map(e=>(0,I.jsx)(Oc,{value:e,children:e},e))})]}),(0,I.jsxs)(Cl,{children:[(0,I.jsx)(wl,{asChild:!0,children:(0,I.jsx)(Ct,{variant:`ghost`,size:`icon`,className:`h-8 w-8 text-muted-foreground hover:text-destructive`,onClick:()=>a(t),"aria-label":`Remove ${e.name}`,children:(0,I.jsx)(M,{className:`h-3.5 w-3.5`})})}),(0,I.jsx)(Tl,{children:`Remove node`})]})]}),(0,I.jsxs)(`p`,{className:`mt-1.5 text-[11px] text-muted-foreground`,children:[e.gpus.length,` GPU`,e.gpus.length===1?``:`s`,` ·`,` `,i.toFixed(0),` GB free`]}),(0,I.jsx)(`div`,{className:`mt-2 space-y-1.5`,children:e.gpus.map((e,n)=>(0,I.jsxs)(`div`,{className:`space-y-1.5 rounded-md border bg-card/50 p-2`,children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,I.jsx)(wt,{value:e.id,onChange:e=>l(t,n,{id:e.target.value}),"aria-label":`GPU id`,className:`h-7 flex-1 font-mono text-[11px]`}),(0,I.jsxs)(Cl,{children:[(0,I.jsx)(wl,{asChild:!0,children:(0,I.jsx)(Ct,{variant:`ghost`,size:`icon`,className:`h-7 w-7 text-muted-foreground`,onClick:()=>u(t,n),"aria-label":`Clone GPU`,children:(0,I.jsx)(ee,{className:`h-3 w-3`})})}),(0,I.jsx)(Tl,{children:`Clone GPU`})]}),(0,I.jsxs)(Cl,{children:[(0,I.jsx)(wl,{asChild:!0,children:(0,I.jsx)(Ct,{variant:`ghost`,size:`icon`,className:`h-7 w-7 text-muted-foreground hover:text-destructive`,onClick:()=>c(t,n),"aria-label":`Remove GPU`,children:(0,I.jsx)(M,{className:`h-3 w-3`})})}),(0,I.jsx)(Tl,{children:`Remove GPU`})]})]}),(0,I.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,I.jsxs)(bc,{value:e.model,onValueChange:e=>l(t,n,{model:e}),children:[(0,I.jsx)(Cc,{className:`h-7 flex-1 text-xs`,"aria-label":`GPU model`,children:(0,I.jsx)(Sc,{})}),(0,I.jsx)(Ec,{children:Object.entries(r).map(([e,t])=>(0,I.jsxs)(xc,{children:[(0,I.jsx)(Dc,{children:e}),t.map(e=>(0,I.jsxs)(Oc,{value:e.id,children:[e.id,` `,(0,I.jsxs)(`span`,{className:`text-muted-foreground`,children:[`(`,e.memory_gb,` GB)`]})]},e.id))]},e))})]}),(0,I.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,I.jsx)(`span`,{className:`text-[10.5px] text-muted-foreground`,children:`total`}),(0,I.jsx)(wt,{type:`number`,value:e.memory_total_gb,onChange:e=>l(t,n,{memory_total_gb:Number(e.target.value)}),className:`h-7 w-16 text-right text-xs`,"aria-label":`Total memory (GB)`})]}),(0,I.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,I.jsx)(`span`,{className:`text-[10.5px] text-muted-foreground`,children:`free`}),(0,I.jsx)(wt,{type:`number`,value:e.memory_free_gb,onChange:e=>l(t,n,{memory_free_gb:Number(e.target.value)}),className:`h-7 w-16 text-right text-xs`,"aria-label":`Free memory (GB)`})]})]})]},n))}),(0,I.jsxs)(Ct,{variant:`outline`,size:`sm`,onClick:()=>s(t),className:`mt-2 h-7 w-full text-xs`,disabled:n.length===0,children:[(0,I.jsx)(ne,{className:`h-3 w-3`}),`Add GPU`]})]},t)}),(0,I.jsxs)(Ct,{variant:`outline`,size:`sm`,onClick:i,className:`w-full`,children:[(0,I.jsx)(ne,{className:`h-3.5 w-3.5`}),`Add node`]})]})}function Ol(e,t){let n={};for(let r of e){let e=t(r);n[e]||(n[e]=[]),n[e].push(r)}return n}var kl=De(`inline-flex items-center rounded-md border px-2 py-0.5 text-xs font-medium transition-colors`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground`,secondary:`border-transparent bg-secondary text-secondary-foreground`,destructive:`border-transparent bg-destructive text-destructive-foreground`,outline:`text-foreground`,success:`border-transparent bg-brand-soft text-brand`,warn:`border-transparent bg-warn-soft text-warn`}},defaultVariants:{variant:`default`}});function Al({className:e,variant:t,...n}){return(0,I.jsx)(`div`,{className:z(kl({variant:t}),e),...n})}var jl=_.forwardRef(({className:e,...t},n)=>(0,I.jsx)(`div`,{ref:n,className:z(`rounded-xl border bg-card text-card-foreground shadow-sm`,e),...t}));jl.displayName=`Card`;var Ml=_.forwardRef(({className:e,...t},n)=>(0,I.jsx)(`div`,{ref:n,className:z(`flex flex-col space-y-1.5 p-5`,e),...t}));Ml.displayName=`CardHeader`;var Nl=_.forwardRef(({className:e,...t},n)=>(0,I.jsx)(`div`,{ref:n,className:z(`font-semibold leading-none tracking-tight`,e),...t}));Nl.displayName=`CardTitle`;var Pl=_.forwardRef(({className:e,...t},n)=>(0,I.jsx)(`div`,{ref:n,className:z(`text-sm text-muted-foreground`,e),...t}));Pl.displayName=`CardDescription`;var Fl=_.forwardRef(({className:e,...t},n)=>(0,I.jsx)(`div`,{ref:n,className:z(`p-5 pt-0`,e),...t}));Fl.displayName=`CardContent`;var Il=_.forwardRef(({className:e,...t},n)=>(0,I.jsx)(`div`,{ref:n,className:z(`flex items-center p-5 pt-0`,e),...t}));Il.displayName=`CardFooter`;function Ll({className:e,...t}){return(0,I.jsx)(`div`,{className:z(`animate-pulse rounded-md bg-muted`,e),...t})}var Rl=`rovingFocusGroup.onEntryFocus`,K={bubbles:!1,cancelable:!0},q=`RovingFocusGroup`,[J,Y,X]=Ft(q),[zl,Bl]=Dt(q,[X]),[Vl,Hl]=zl(q),Ul=_.forwardRef((e,t)=>(0,I.jsx)(J.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,I.jsx)(J.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,I.jsx)(Wl,{...e,ref:t})})}));Ul.displayName=q;var Wl=_.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,orientation:r,loop:i=!1,dir:a,currentTabStopId:o,defaultCurrentTabStopId:s,onCurrentTabStopIdChange:c,onEntryFocus:l,preventScrollOnEntryFocus:u=!1,...d}=e,f=_.useRef(null),p=F(t,f),m=Lt(a),[h,g]=xa({prop:o,defaultProp:s??null,onChange:c,caller:q}),[v,y]=_.useState(!1),b=Gt(l),x=Y(n),S=_.useRef(!1),[C,w]=_.useState(0);return _.useEffect(()=>{let e=f.current;if(e)return e.addEventListener(Rl,b),()=>e.removeEventListener(Rl,b)},[b]),(0,I.jsx)(Vl,{scope:n,orientation:r,dir:m,loop:i,currentTabStopId:h,onItemFocus:_.useCallback(e=>g(e),[g]),onItemShiftTab:_.useCallback(()=>y(!0),[]),onFocusableItemAdd:_.useCallback(()=>w(e=>e+1),[]),onFocusableItemRemove:_.useCallback(()=>w(e=>e-1),[]),children:(0,I.jsx)(V.div,{tabIndex:v||C===0?-1:0,"data-orientation":r,...d,ref:p,style:{outline:`none`,...e.style},onMouseDown:B(e.onMouseDown,()=>{S.current=!0}),onFocus:B(e.onFocus,e=>{let t=!S.current;if(e.target===e.currentTarget&&t&&!v){let t=new CustomEvent(Rl,K);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=x().filter(e=>e.focusable);Xl([e.find(e=>e.active),e.find(e=>e.id===h),...e].filter(Boolean).map(e=>e.ref.current),u)}}S.current=!1}),onBlur:B(e.onBlur,()=>y(!1))})})}),Gl=`RovingFocusGroupItem`,Kl=_.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:a,children:o,...s}=e,c=kn(),l=a||c,u=Hl(Gl,n),d=u.currentTabStopId===l,f=Y(n),{onFocusableItemAdd:p,onFocusableItemRemove:m,currentTabStopId:h}=u;return _.useEffect(()=>{if(r)return p(),()=>m()},[r,p,m]),(0,I.jsx)(J.ItemSlot,{scope:n,id:l,focusable:r,active:i,children:(0,I.jsx)(V.span,{tabIndex:d?0:-1,"data-orientation":u.orientation,...s,ref:t,onMouseDown:B(e.onMouseDown,e=>{r?u.onItemFocus(l):e.preventDefault()}),onFocus:B(e.onFocus,()=>u.onItemFocus(l)),onKeyDown:B(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){u.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=Yl(e,u.orientation,u.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=f().filter(e=>e.focusable).map(e=>e.ref.current);if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=u.loop?Zl(n,r+1):n.slice(r+1)}setTimeout(()=>Xl(n))}}),children:typeof o==`function`?o({isCurrentTabStop:d,hasTabStop:h!=null}):o})})});Kl.displayName=Gl;var ql={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function Jl(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function Yl(e,t,n){let r=Jl(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return ql[r]}function Xl(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function Zl(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var Ql=Ul,$l=Kl,eu=`Tabs`,[tu,nu]=Dt(eu,[Bl]),ru=Bl(),[iu,au]=tu(eu),ou=_.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,onValueChange:i,defaultValue:a,orientation:o=`horizontal`,dir:s,activationMode:c=`automatic`,...l}=e,u=Lt(s),[d,f]=xa({prop:r,onChange:i,defaultProp:a??``,caller:eu});return(0,I.jsx)(iu,{scope:n,baseId:kn(),value:d,onValueChange:f,orientation:o,dir:u,activationMode:c,children:(0,I.jsx)(V.div,{dir:u,"data-orientation":o,...l,ref:t})})});ou.displayName=eu;var su=`TabsList`,cu=_.forwardRef((e,t)=>{let{__scopeTabs:n,loop:r=!0,...i}=e,a=au(su,n),o=ru(n);return(0,I.jsx)(Ql,{asChild:!0,...o,orientation:a.orientation,dir:a.dir,loop:r,children:(0,I.jsx)(V.div,{role:`tablist`,"aria-orientation":a.orientation,...i,ref:t})})});cu.displayName=su;var lu=`TabsTrigger`,uu=_.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,disabled:i=!1,...a}=e,o=au(lu,n),s=ru(n),c=pu(o.baseId,r),l=mu(o.baseId,r),u=r===o.value;return(0,I.jsx)($l,{asChild:!0,...s,focusable:!i,active:u,children:(0,I.jsx)(V.button,{type:`button`,role:`tab`,"aria-selected":u,"aria-controls":l,"data-state":u?`active`:`inactive`,"data-disabled":i?``:void 0,disabled:i,id:c,...a,ref:t,onMouseDown:B(e.onMouseDown,e=>{!i&&e.button===0&&e.ctrlKey===!1?o.onValueChange(r):e.preventDefault()}),onKeyDown:B(e.onKeyDown,e=>{[` `,`Enter`].includes(e.key)&&o.onValueChange(r)}),onFocus:B(e.onFocus,()=>{let e=o.activationMode!==`manual`;!u&&!i&&e&&o.onValueChange(r)})})})});uu.displayName=lu;var du=`TabsContent`,fu=_.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,forceMount:i,children:a,...o}=e,s=au(du,n),c=pu(s.baseId,r),l=mu(s.baseId,r),u=r===s.value,d=_.useRef(u);return _.useEffect(()=>{let e=requestAnimationFrame(()=>d.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,I.jsx)(jc,{present:i||u,children:({present:n})=>(0,I.jsx)(V.div,{"data-state":u?`active`:`inactive`,"data-orientation":s.orientation,role:`tabpanel`,"aria-labelledby":c,hidden:!n,id:l,tabIndex:0,...o,ref:t,style:{...e.style,animationDuration:d.current?`0s`:void 0},children:n&&a})})});fu.displayName=du;function pu(e,t){return`${e}-trigger-${t}`}function mu(e,t){return`${e}-content-${t}`}var hu=ou,gu=cu,_u=uu,vu=fu,yu=hu,bu=_.forwardRef(({className:e,...t},n)=>(0,I.jsx)(gu,{ref:n,className:z(`inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground`,e),...t}));bu.displayName=gu.displayName;var xu=_.forwardRef(({className:e,...t},n)=>(0,I.jsx)(_u,{ref:n,className:z(`inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow`,e),...t}));xu.displayName=_u.displayName;var Su=_.forwardRef(({className:e,...t},n)=>(0,I.jsx)(vu,{ref:n,className:z(`mt-3 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`,e),...t}));Su.displayName=vu.displayName;var Cu=e=>{switch(e){case`success`:return Eu;case`info`:return Ou;case`warning`:return Du;case`error`:return ku;default:return null}},wu=Array(12).fill(0),Tu=({visible:e,className:t})=>_.createElement(`div`,{className:[`sonner-loading-wrapper`,t].filter(Boolean).join(` `),"data-visible":e},_.createElement(`div`,{className:`sonner-spinner`},wu.map((e,t)=>_.createElement(`div`,{className:`sonner-loading-bar`,key:`spinner-bar-${t}`})))),Eu=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},_.createElement(`path`,{fillRule:`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z`,clipRule:`evenodd`})),Du=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,height:`20`,width:`20`},_.createElement(`path`,{fillRule:`evenodd`,d:`M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z`,clipRule:`evenodd`})),Ou=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},_.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z`,clipRule:`evenodd`})),ku=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},_.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z`,clipRule:`evenodd`})),Au=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`},_.createElement(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),_.createElement(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})),ju=()=>{let[e,t]=_.useState(document.hidden);return _.useEffect(()=>{let e=()=>{t(document.hidden)};return document.addEventListener(`visibilitychange`,e),()=>window.removeEventListener(`visibilitychange`,e)},[]),e},Mu=1,Nu=new class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)}),this.publish=e=>{this.subscribers.forEach(t=>t(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{let{message:t,...n}=e,r=typeof e?.id==`number`||e.id?.length>0?e.id:Mu++,i=this.toasts.find(e=>e.id===r),a=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),i?this.toasts=this.toasts.map(n=>n.id===r?(this.publish({...n,...e,id:r,title:t}),{...n,...e,id:r,dismissible:a,title:t}):n):this.addToast({title:t,...n,dismissible:a,id:r}),r},this.dismiss=e=>(this.dismissedToasts.add(e),e||this.toasts.forEach(e=>{this.subscribers.forEach(t=>t({id:e.id,dismiss:!0}))}),this.subscribers.forEach(t=>t({id:e,dismiss:!0})),e),this.message=(e,t)=>this.create({...t,message:e}),this.error=(e,t)=>this.create({...t,message:e,type:`error`}),this.success=(e,t)=>this.create({...t,type:`success`,message:e}),this.info=(e,t)=>this.create({...t,type:`info`,message:e}),this.warning=(e,t)=>this.create({...t,type:`warning`,message:e}),this.loading=(e,t)=>this.create({...t,type:`loading`,message:e}),this.promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:`loading`,message:t.loading,description:typeof t.description==`function`?void 0:t.description}));let r=e instanceof Promise?e:e(),i=n!==void 0,a,o=r.then(async e=>{if(a=[`resolve`,e],_.isValidElement(e))i=!1,this.create({id:n,type:`default`,message:e});else if(Fu(e)&&!e.ok){i=!1;let r=typeof t.error==`function`?await t.error(`HTTP error! status: ${e.status}`):t.error,a=typeof t.description==`function`?await t.description(`HTTP error! status: ${e.status}`):t.description;this.create({id:n,type:`error`,message:r,description:a})}else if(t.success!==void 0){i=!1;let r=typeof t.success==`function`?await t.success(e):t.success,a=typeof t.description==`function`?await t.description(e):t.description;this.create({id:n,type:`success`,message:r,description:a})}}).catch(async e=>{if(a=[`reject`,e],t.error!==void 0){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description;this.create({id:n,type:`error`,message:r,description:a})}}).finally(()=>{var e;i&&(this.dismiss(n),n=void 0),(e=t.finally)==null||e.call(t)}),s=()=>new Promise((e,t)=>o.then(()=>a[0]===`reject`?t(a[1]):e(a[1])).catch(t));return typeof n!=`string`&&typeof n!=`number`?{unwrap:s}:Object.assign(n,{unwrap:s})},this.custom=(e,t)=>{let n=t?.id||Mu++;return this.create({jsx:e(n),id:n,...t}),n},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},Pu=(e,t)=>{let n=t?.id||Mu++;return Nu.addToast({title:e,...t,id:n}),n},Fu=e=>e&&typeof e==`object`&&`ok`in e&&typeof e.ok==`boolean`&&`status`in e&&typeof e.status==`number`,Iu=Object.assign(Pu,{success:Nu.success,info:Nu.info,warning:Nu.warning,error:Nu.error,custom:Nu.custom,message:Nu.message,promise:Nu.promise,dismiss:Nu.dismiss,loading:Nu.loading},{getHistory:()=>Nu.toasts,getToasts:()=>Nu.getActiveToasts()});function Lu(e,{insertAt:t}={}){if(!e||typeof document>`u`)return;let n=document.head||document.getElementsByTagName(`head`)[0],r=document.createElement(`style`);r.type=`text/css`,t===`top`&&n.firstChild?n.insertBefore(r,n.firstChild):n.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}Lu(`:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)} -`);function Ru(e){return e.label!==void 0}var zu=3,Bu=`32px`,Vu=`16px`,Hu=4e3,Uu=356,Wu=14,Z=20,Gu=200;function Ku(...e){return e.filter(Boolean).join(` `)}function qu(e){let[t,n]=e.split(`-`),r=[];return t&&r.push(t),n&&r.push(n),r}var Ju=e=>{let{invert:t,toast:n,unstyled:r,interacting:i,setHeights:a,visibleToasts:o,heights:s,index:c,toasts:l,expanded:u,removeToast:d,defaultRichColors:f,closeButton:p,style:m,cancelButtonStyle:h,actionButtonStyle:g,className:v=``,descriptionClassName:y=``,duration:b,position:x,gap:S,loadingIcon:C,expandByDefault:w,classNames:T,icons:E,closeButtonAriaLabel:ee=`Close toast`,pauseWhenPageIsHidden:D}=e,[O,k]=_.useState(null),[te,ne]=_.useState(null),[A,j]=_.useState(!1),[re,M]=_.useState(!1),[N,ie]=_.useState(!1),[ae,oe]=_.useState(!1),[se,ce]=_.useState(!1),[P,le]=_.useState(0),[ue,F]=_.useState(0),de=_.useRef(n.duration||b||Hu),I=_.useRef(null),fe=_.useRef(null),pe=c===0,me=c+1<=o,he=n.type,ge=n.dismissible!==!1,_e=n.className||``,ve=n.descriptionClassName||``,ye=_.useMemo(()=>s.findIndex(e=>e.toastId===n.id)||0,[s,n.id]),be=_.useMemo(()=>n.closeButton??p,[n.closeButton,p]),xe=_.useMemo(()=>n.duration||b||Hu,[n.duration,b]),Se=_.useRef(0),Ce=_.useRef(0),we=_.useRef(0),Te=_.useRef(null),[Ee,De]=x.split(`-`),Oe=_.useMemo(()=>s.reduce((e,t,n)=>n>=ye?e:e+t.height,0),[s,ye]),ke=ju(),Ae=n.invert||t,je=he===`loading`;Ce.current=_.useMemo(()=>ye*S+Oe,[ye,Oe]),_.useEffect(()=>{de.current=xe},[xe]),_.useEffect(()=>{j(!0)},[]),_.useEffect(()=>{let e=fe.current;if(e){let t=e.getBoundingClientRect().height;return F(t),a(e=>[{toastId:n.id,height:t,position:n.position},...e]),()=>a(e=>e.filter(e=>e.toastId!==n.id))}},[a,n.id]),_.useLayoutEffect(()=>{if(!A)return;let e=fe.current,t=e.style.height;e.style.height=`auto`;let r=e.getBoundingClientRect().height;e.style.height=t,F(r),a(e=>e.find(e=>e.toastId===n.id)?e.map(e=>e.toastId===n.id?{...e,height:r}:e):[{toastId:n.id,height:r,position:n.position},...e])},[A,n.title,n.description,a,n.id]);let Me=_.useCallback(()=>{M(!0),le(Ce.current),a(e=>e.filter(e=>e.toastId!==n.id)),setTimeout(()=>{d(n)},Gu)},[n,d,a,Ce]);_.useEffect(()=>{if(n.promise&&he===`loading`||n.duration===1/0||n.type===`loading`)return;let e;return u||i||D&&ke?(()=>{if(we.current{var e;(e=n.onAutoClose)==null||e.call(n,n),Me()},de.current)),()=>clearTimeout(e)},[u,i,n,he,D,ke,Me]),_.useEffect(()=>{n.delete&&Me()},[Me,n.delete]);function Ne(){return E!=null&&E.loading?_.createElement(`div`,{className:Ku(T?.loader,n?.classNames?.loader,`sonner-loader`),"data-visible":he===`loading`},E.loading):C?_.createElement(`div`,{className:Ku(T?.loader,n?.classNames?.loader,`sonner-loader`),"data-visible":he===`loading`},C):_.createElement(Tu,{className:Ku(T?.loader,n?.classNames?.loader),visible:he===`loading`})}return _.createElement(`li`,{tabIndex:0,ref:fe,className:Ku(v,_e,T?.toast,n?.classNames?.toast,T?.default,T?.[he],n?.classNames?.[he]),"data-sonner-toast":``,"data-rich-colors":n.richColors??f,"data-styled":!(n.jsx||n.unstyled||r),"data-mounted":A,"data-promise":!!n.promise,"data-swiped":se,"data-removed":re,"data-visible":me,"data-y-position":Ee,"data-x-position":De,"data-index":c,"data-front":pe,"data-swiping":N,"data-dismissible":ge,"data-type":he,"data-invert":Ae,"data-swipe-out":ae,"data-swipe-direction":te,"data-expanded":!!(u||w&&A),style:{"--index":c,"--toasts-before":c,"--z-index":l.length-c,"--offset":`${re?P:Ce.current}px`,"--initial-height":w?`auto`:`${ue}px`,...m,...n.style},onDragEnd:()=>{ie(!1),k(null),Te.current=null},onPointerDown:e=>{je||!ge||(I.current=new Date,le(Ce.current),e.target.setPointerCapture(e.pointerId),e.target.tagName!==`BUTTON`&&(ie(!0),Te.current={x:e.clientX,y:e.clientY}))},onPointerUp:()=>{var e;if(ae||!ge)return;Te.current=null;let t=Number(fe.current?.style.getPropertyValue(`--swipe-amount-x`).replace(`px`,``)||0),r=Number(fe.current?.style.getPropertyValue(`--swipe-amount-y`).replace(`px`,``)||0),i=new Date().getTime()-I.current?.getTime(),a=O===`x`?t:r,o=Math.abs(a)/i;if(Math.abs(a)>=Z||o>.11){le(Ce.current),(e=n.onDismiss)==null||e.call(n,n),ne(O===`x`?t>0?`right`:`left`:r>0?`down`:`up`),Me(),oe(!0),ce(!1);return}ie(!1),k(null)},onPointerMove:t=>{var n,r;if(!Te.current||!ge||window.getSelection()?.toString().length>0)return;let i=t.clientY-Te.current.y,a=t.clientX-Te.current.x,o=e.swipeDirections??qu(x);!O&&(Math.abs(a)>1||Math.abs(i)>1)&&k(Math.abs(a)>Math.abs(i)?`x`:`y`);let s={x:0,y:0};O===`y`?(o.includes(`top`)||o.includes(`bottom`))&&(o.includes(`top`)&&i<0||o.includes(`bottom`)&&i>0)&&(s.y=i):O===`x`&&(o.includes(`left`)||o.includes(`right`))&&(o.includes(`left`)&&a<0||o.includes(`right`)&&a>0)&&(s.x=a),(Math.abs(s.x)>0||Math.abs(s.y)>0)&&ce(!0),(n=fe.current)==null||n.style.setProperty(`--swipe-amount-x`,`${s.x}px`),(r=fe.current)==null||r.style.setProperty(`--swipe-amount-y`,`${s.y}px`)}},be&&!n.jsx?_.createElement(`button`,{"aria-label":ee,"data-disabled":je,"data-close-button":!0,onClick:je||!ge?()=>{}:()=>{var e;Me(),(e=n.onDismiss)==null||e.call(n,n)},className:Ku(T?.closeButton,n?.classNames?.closeButton)},E?.close??Au):null,n.jsx||(0,_.isValidElement)(n.title)?n.jsx?n.jsx:typeof n.title==`function`?n.title():n.title:_.createElement(_.Fragment,null,he||n.icon||n.promise?_.createElement(`div`,{"data-icon":``,className:Ku(T?.icon,n?.classNames?.icon)},n.promise||n.type===`loading`&&!n.icon?n.icon||Ne():null,n.type===`loading`?null:n.icon||E?.[he]||Cu(he)):null,_.createElement(`div`,{"data-content":``,className:Ku(T?.content,n?.classNames?.content)},_.createElement(`div`,{"data-title":``,className:Ku(T?.title,n?.classNames?.title)},typeof n.title==`function`?n.title():n.title),n.description?_.createElement(`div`,{"data-description":``,className:Ku(y,ve,T?.description,n?.classNames?.description)},typeof n.description==`function`?n.description():n.description):null),(0,_.isValidElement)(n.cancel)?n.cancel:n.cancel&&Ru(n.cancel)?_.createElement(`button`,{"data-button":!0,"data-cancel":!0,style:n.cancelButtonStyle||h,onClick:e=>{var t,r;Ru(n.cancel)&&ge&&((r=(t=n.cancel).onClick)==null||r.call(t,e),Me())},className:Ku(T?.cancelButton,n?.classNames?.cancelButton)},n.cancel.label):null,(0,_.isValidElement)(n.action)?n.action:n.action&&Ru(n.action)?_.createElement(`button`,{"data-button":!0,"data-action":!0,style:n.actionButtonStyle||g,onClick:e=>{var t,r;Ru(n.action)&&((r=(t=n.action).onClick)==null||r.call(t,e),!e.defaultPrevented&&Me())},className:Ku(T?.actionButton,n?.classNames?.actionButton)},n.action.label):null))};function Yu(){if(typeof window>`u`||typeof document>`u`)return`ltr`;let e=document.documentElement.getAttribute(`dir`);return e===`auto`||!e?window.getComputedStyle(document.documentElement).direction:e}function Xu(e,t){let n={};return[e,t].forEach((e,t)=>{let r=t===1,i=r?`--mobile-offset`:`--offset`,a=r?Vu:Bu;function o(e){[`top`,`right`,`bottom`,`left`].forEach(t=>{n[`${i}-${t}`]=typeof e==`number`?`${e}px`:e})}typeof e==`number`||typeof e==`string`?o(e):typeof e==`object`?[`top`,`right`,`bottom`,`left`].forEach(t=>{e[t]===void 0?n[`${i}-${t}`]=a:n[`${i}-${t}`]=typeof e[t]==`number`?`${e[t]}px`:e[t]}):o(a)}),n}var Zu=(0,_.forwardRef)(function(e,t){let{invert:n,position:r=`bottom-right`,hotkey:i=[`altKey`,`KeyT`],expand:a,closeButton:o,className:s,offset:c,mobileOffset:l,theme:u=`light`,richColors:d,duration:f,style:p,visibleToasts:m=zu,toastOptions:h,dir:g=Yu(),gap:v=Wu,loadingIcon:y,icons:b,containerAriaLabel:x=`Notifications`,pauseWhenPageIsHidden:S}=e,[C,w]=_.useState([]),T=_.useMemo(()=>Array.from(new Set([r].concat(C.filter(e=>e.position).map(e=>e.position)))),[C,r]),[E,ee]=_.useState([]),[D,O]=_.useState(!1),[k,te]=_.useState(!1),[ne,A]=_.useState(u===`system`?typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`:u),j=_.useRef(null),re=i.join(`+`).replace(/Key/g,``).replace(/Digit/g,``),M=_.useRef(null),N=_.useRef(!1),ie=_.useCallback(e=>{w(t=>{var n;return(n=t.find(t=>t.id===e.id))!=null&&n.delete||Nu.dismiss(e.id),t.filter(({id:t})=>t!==e.id)})},[]);return _.useEffect(()=>Nu.subscribe(e=>{if(e.dismiss){w(t=>t.map(t=>t.id===e.id?{...t,delete:!0}:t));return}setTimeout(()=>{Tt.flushSync(()=>{w(t=>{let n=t.findIndex(t=>t.id===e.id);return n===-1?[e,...t]:[...t.slice(0,n),{...t[n],...e},...t.slice(n+1)]})})})}),[]),_.useEffect(()=>{if(u!==`system`){A(u);return}if(u===`system`&&(window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?A(`dark`):A(`light`)),typeof window>`u`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`);try{e.addEventListener(`change`,({matches:e})=>{A(e?`dark`:`light`)})}catch{e.addListener(({matches:e})=>{try{A(e?`dark`:`light`)}catch(e){console.error(e)}})}},[u]),_.useEffect(()=>{C.length<=1&&O(!1)},[C]),_.useEffect(()=>{let e=e=>{var t,n;i.every(t=>e[t]||e.code===t)&&(O(!0),(t=j.current)==null||t.focus()),e.code===`Escape`&&(document.activeElement===j.current||(n=j.current)!=null&&n.contains(document.activeElement))&&O(!1)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[i]),_.useEffect(()=>{if(j.current)return()=>{M.current&&(M.current.focus({preventScroll:!0}),M.current=null,N.current=!1)}},[j.current]),_.createElement(`section`,{ref:t,"aria-label":`${x} ${re}`,tabIndex:-1,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-atomic":`false`,suppressHydrationWarning:!0},T.map((t,r)=>{let[i,u]=t.split(`-`);return C.length?_.createElement(`ol`,{key:t,dir:g===`auto`?Yu():g,tabIndex:-1,ref:j,className:s,"data-sonner-toaster":!0,"data-theme":ne,"data-y-position":i,"data-lifted":D&&C.length>1&&!a,"data-x-position":u,style:{"--front-toast-height":`${E[0]?.height||0}px`,"--width":`${Uu}px`,"--gap":`${v}px`,...p,...Xu(c,l)},onBlur:e=>{N.current&&!e.currentTarget.contains(e.relatedTarget)&&(N.current=!1,M.current&&=(M.current.focus({preventScroll:!0}),null))},onFocus:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||N.current||(N.current=!0,M.current=e.relatedTarget)},onMouseEnter:()=>O(!0),onMouseMove:()=>O(!0),onMouseLeave:()=>{k||O(!1)},onDragEnd:()=>O(!1),onPointerDown:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||te(!0)},onPointerUp:()=>te(!1)},C.filter(e=>!e.position&&r===0||e.position===t).map((r,i)=>_.createElement(Ju,{key:r.id,icons:b,index:i,toast:r,defaultRichColors:d,duration:h?.duration??f,className:h?.className,descriptionClassName:h?.descriptionClassName,invert:n,visibleToasts:m,closeButton:h?.closeButton??o,interacting:k,position:t,style:h?.style,unstyled:h?.unstyled,classNames:h?.classNames,cancelButtonStyle:h?.cancelButtonStyle,actionButtonStyle:h?.actionButtonStyle,removeToast:ie,toasts:C.filter(e=>e.position==r.position),heights:E.filter(e=>e.position==r.position),setHeights:ee,expandByDefault:a,gap:v,loadingIcon:y,expanded:D,pauseWhenPageIsHidden:S,swipeDirections:e.swipeDirections}))):null}))});function Qu({code:e,label:t,className:n}){let[r,i]=(0,_.useState)(!1);async function a(){try{await navigator.clipboard.writeText(e),i(!0),Iu.success(t?`${t} copied`:`Copied to clipboard`),setTimeout(()=>i(!1),1500)}catch{Iu.error(`Failed to copy`)}}return(0,I.jsxs)(`div`,{className:z(`group relative overflow-hidden rounded-lg border bg-muted/40`,n),children:[(0,I.jsx)(`pre`,{className:`overflow-x-auto whitespace-pre-wrap break-all p-3 pr-12 font-mono text-[11.5px] leading-relaxed text-foreground`,children:e}),(0,I.jsx)(Ct,{type:`button`,variant:`ghost`,size:`icon`,onClick:a,"aria-label":`Copy`,className:`absolute right-1.5 top-1.5 h-7 w-7`,children:r?(0,I.jsx)(w,{className:`h-3.5 w-3.5`}):(0,I.jsx)(ee,{className:`h-3.5 w-3.5`})})]})}function $u({capacity:e,segments:t,className:n}){let r=e||1,i=t.filter(e=>e.key!==`headroom`).reduce((e,t)=>e+Math.max(0,t.gb),0);return(0,I.jsxs)(`div`,{className:z(`space-y-2`,n),children:[(0,I.jsx)(`div`,{className:`flex h-2.5 w-full overflow-hidden rounded-full bg-muted`,role:`img`,"aria-label":`Memory: ${i.toFixed(1)} of ${e.toFixed(0)} GB used`,children:t.map(e=>{let t=Math.max(0,e.gb)/r*100;return t<=0?null:(0,I.jsxs)(Cl,{children:[(0,I.jsx)(wl,{asChild:!0,children:(0,I.jsx)(`div`,{style:{width:`${t}%`},className:z(`h-full transition-all`,e.className)})}),(0,I.jsxs)(Tl,{children:[e.label,`: `,e.gb.toFixed(1),` GB (`,t.toFixed(1),`%)`]})]},e.key)})}),(0,I.jsx)(`div`,{className:`flex flex-wrap gap-x-3 gap-y-1 text-[11px] text-muted-foreground`,children:t.map(e=>(0,I.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,I.jsx)(`span`,{className:z(`h-2 w-2 rounded-sm`,e.className),"aria-hidden":!0}),e.label,` `,e.gb.toFixed(1),` GB`]},e.key))})]})}var ed={feasible:{label:`Feasible`,tone:`success`,description:`At least one configuration fits and meets the SLOs.`},fit_ok:{label:`Fits`,tone:`success`},infeasible_oom:{label:`Out of memory`,tone:`destructive`,description:`No configuration fits within the available GPU memory.`},infeasible_slo:{label:`SLO miss`,tone:`destructive`,description:`Configurations fit but none meet the requested latency targets.`},infeasible_topology:{label:`Topology infeasible`,tone:`destructive`,description:`No legal placement exists for the requested parallelism.`},model_unsupported:{label:`Model unsupported`,tone:`destructive`,description:`The model architecture is not recognized by the planner.`},model_unreachable:{label:`Model unreachable`,tone:`destructive`,description:`Could not fetch the model metadata from Hugging Face.`}};function td(e){return ed[e]??{label:e.replace(/_/g,` `),tone:`muted`}}function nd({loading:e,error:t,resp:n}){if(t)return(0,I.jsxs)(jl,{className:`border-destructive/30 bg-destructive/5`,children:[(0,I.jsxs)(Ml,{className:`flex flex-row items-center gap-3 space-y-0`,children:[(0,I.jsx)(N,{className:`h-5 w-5 text-destructive`}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(Nl,{className:`text-base text-destructive`,children:`Planning failed`}),(0,I.jsx)(Pl,{children:`The planner could not produce a result for this request.`})]})]}),(0,I.jsx)(Fl,{children:(0,I.jsx)(`pre`,{className:`overflow-auto rounded-md border bg-background p-3 font-mono text-xs`,children:t})})]});if(!n&&e)return(0,I.jsx)(sd,{});if(!n)return(0,I.jsx)(`div`,{className:`flex h-full min-h-[420px] items-center justify-center`,children:(0,I.jsxs)(`div`,{className:`max-w-sm text-center`,children:[(0,I.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full border bg-card text-muted-foreground`,children:(0,I.jsx)(j,{className:`h-5 w-5`})}),(0,I.jsx)(`h2`,{className:`text-sm font-medium`,children:`Ready when you are`}),(0,I.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Edit the model, workload, or inventory to see ranked deployment configurations.`})]})});let r=td(n.verdict??`unknown`),i=n.configurations??[],a=n.rejected_configurations??[];return(0,I.jsxs)(`div`,{className:`space-y-5`,children:[(0,I.jsxs)(jl,{children:[(0,I.jsxs)(Fl,{className:`flex items-start justify-between gap-6 pt-5`,children:[(0,I.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,I.jsx)(Al,{variant:ld(r.tone),children:r.label}),r.description&&(0,I.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:r.description}),n.model_profile&&(0,I.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[n.model_profile.architecture,` · `,n.model_profile.family,` ·`,` `,ud(n.model_profile.params_total),` params`]}),n.error&&(0,I.jsxs)(`p`,{className:`font-mono text-xs text-destructive`,children:[n.error.code,`: `,n.error.message]})]}),n.diagnostics&&(0,I.jsxs)(`div`,{className:`shrink-0 text-right font-mono text-[10.5px] text-muted-foreground`,children:[(0,I.jsxs)(`div`,{children:[n.diagnostics.elapsed_ms,` ms`]}),(0,I.jsxs)(`div`,{children:[n.diagnostics.search_space_meets_slo,`/`,n.diagnostics.search_space_fit_memory,`/`,n.diagnostics.search_space_total,` `,(0,I.jsx)(`span`,{className:`opacity-60`,children:`slo/fit/total`})]}),(0,I.jsxs)(`div`,{className:`opacity-60`,children:[`v`,n.diagnostics.estimator_version]})]})]}),n.warnings&&n.warnings.length>0&&(0,I.jsx)(Fl,{className:`border-t border-warn/30 bg-warn-soft pt-3 text-warn`,children:(0,I.jsx)(`div`,{className:`space-y-1 text-xs`,children:n.warnings.map((e,t)=>(0,I.jsxs)(`div`,{className:`flex items-start gap-1.5`,children:[(0,I.jsx)(N,{className:`mt-0.5 h-3 w-3 shrink-0`}),(0,I.jsx)(`span`,{children:e})]},t))})})]}),n.model_profile?.pipeline&&(0,I.jsx)(ad,{pipeline:n.model_profile.pipeline}),(0,I.jsxs)(yu,{defaultValue:`configurations`,children:[(0,I.jsxs)(bu,{children:[(0,I.jsxs)(xu,{value:`configurations`,children:[`Configurations`,i.length>0&&(0,I.jsx)(`span`,{className:`ml-1.5 rounded bg-background/60 px-1.5 text-[10px] tabular-nums`,children:i.length})]}),(0,I.jsxs)(xu,{value:`rejected`,children:[`Rejected`,a.length>0&&(0,I.jsx)(`span`,{className:`ml-1.5 rounded bg-background/60 px-1.5 text-[10px] tabular-nums`,children:a.length})]}),(0,I.jsx)(xu,{value:`raw`,children:`Raw response`})]}),(0,I.jsx)(Su,{value:`configurations`,className:`space-y-3`,children:i.length===0?(0,I.jsx)(cd,{message:`No viable configurations for these constraints.`}):i.map(e=>(0,I.jsx)(rd,{cfg:e},e.rank))}),(0,I.jsx)(Su,{value:`rejected`,className:`space-y-1.5`,children:a.length===0?(0,I.jsx)(cd,{message:`No rejected configurations.`}):a.map((e,t)=>(0,I.jsxs)(`div`,{className:`flex items-start gap-3 rounded-md border bg-card px-3 py-2 font-mono text-[11.5px]`,children:[(0,I.jsx)(`span`,{className:`shrink-0 font-semibold text-warn`,children:e.reason_code}),(0,I.jsx)(`span`,{className:`text-foreground`,children:e.summary}),(0,I.jsxs)(`span`,{className:`text-muted-foreground`,children:[`— `,e.reason]})]},t))}),(0,I.jsx)(Su,{value:`raw`,children:(0,I.jsx)(Qu,{code:JSON.stringify(n,null,2),label:`Raw response`})})]})]})}function rd({cfg:e}){let t=e.memory_per_gpu_gb;return(0,I.jsxs)(jl,{className:z(e.rank===1&&`ring-2 ring-foreground/15`),children:[(0,I.jsxs)(Ml,{className:`flex flex-row items-center justify-between space-y-0 pb-3`,children:[(0,I.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,I.jsxs)(`span`,{className:`text-base font-semibold tabular-nums`,children:[`#`,e.rank]}),(0,I.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[e.placement.gpu_ids.length,`× `,e.placement.nodes.join(`, `)]})]}),(0,I.jsxs)(Al,{variant:`outline`,className:`font-mono`,children:[`score `,e.score.toFixed(2)]})]}),(0,I.jsxs)(Fl,{className:`space-y-4`,children:[(0,I.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-6 gap-y-1.5 text-sm`,children:[(0,I.jsx)(id,{label:`topology`,hint:`Tensor / Pipeline / Expert / Data parallel degrees`,value:(0,I.jsxs)(I.Fragment,{children:[`TP=`,e.placement.tensor_parallel,` PP=`,e.placement.pipeline_parallel,` EP=`,e.placement.expert_parallel,` DP=`,e.placement.data_parallel]})}),(0,I.jsx)(id,{label:`quant`,value:`${e.engine_config.quantization} · kv=${e.engine_config.kv_cache_dtype}`}),(0,I.jsx)(id,{label:`TTFT p95`,hint:`Time To First Token, 95th percentile`,value:`${e.performance_estimate.ttft_ms_p95.toFixed(0)} ms`}),(0,I.jsx)(id,{label:`TPOT p95`,hint:`Time Per Output Token, 95th percentile`,value:`${e.performance_estimate.tpot_ms_p95.toFixed(0)} ms`}),(0,I.jsx)(id,{label:`decode/user`,value:`${e.performance_estimate.decode_tokens_per_sec_per_user.toFixed(0)} tok/s`}),(0,I.jsx)(id,{label:`aggregate`,value:`${e.performance_estimate.decode_tokens_per_sec_aggregate.toFixed(0)} tok/s`}),(0,I.jsx)(id,{label:`bottleneck`,value:`${e.performance_estimate.bottleneck} (${e.performance_estimate.confidence})`}),(0,I.jsx)(id,{label:`utilization`,value:`${t.utilization_pct.toFixed(1)}% of ${t.total_capacity.toFixed(0)} GB`})]}),(0,I.jsx)($u,{capacity:t.total_capacity,segments:[{key:`weights`,label:`weights`,gb:t.weights,className:`bg-foreground`},...t.vision_weights?[{key:`vision`,label:`vision`,gb:t.vision_weights,className:`bg-foreground/60`}]:[],{key:`kv`,label:`KV cache`,gb:t.kv_cache_reserved,className:`bg-warn`},{key:`activations`,label:`activations`,gb:t.activations_peak,className:`bg-destructive/80`},{key:`overhead`,label:`overhead`,gb:t.framework_overhead,className:`bg-muted-foreground/50`},{key:`headroom`,label:`headroom`,gb:t.headroom,className:`bg-muted`}]}),(0,I.jsx)(Qu,{code:e.vllm_command,label:`vLLM command`})]})]})}function id({label:e,hint:t,value:n}){return(0,I.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3 min-w-0`,children:[t?(0,I.jsxs)(Cl,{children:[(0,I.jsx)(wl,{asChild:!0,children:(0,I.jsx)(`span`,{className:`cursor-help border-b border-dotted border-muted-foreground/40 text-xs text-muted-foreground`,children:e})}),(0,I.jsx)(Tl,{children:t})]}):(0,I.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e}),(0,I.jsx)(`span`,{className:`overflow-hidden text-ellipsis whitespace-nowrap font-mono text-xs`,children:n})]})}function ad({pipeline:e}){return(0,I.jsxs)(jl,{children:[(0,I.jsx)(Ml,{className:`pb-3`,children:(0,I.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsxs)(Nl,{className:`text-sm`,children:[e.framework,` pipeline`]}),(0,I.jsxs)(Pl,{children:[e.stages.length,` stages ·`,` `,ud(e.total_pipeline_params),` total params`]})]}),(0,I.jsxs)(Al,{variant:`outline`,className:`font-mono`,children:[`primary: stage #`,e.primary_stage_id]})]})}),(0,I.jsxs)(Fl,{className:`space-y-1.5`,children:[e.note&&(0,I.jsx)(`p`,{className:`mb-2 text-xs text-muted-foreground`,children:e.note}),e.stages.map(t=>(0,I.jsx)(od,{stage:t,primary:t.id===e.primary_stage_id},t.id))]})]})}function od({stage:e,primary:t}){let n=(e.bytes_bf16/(1<<30)).toFixed(2);return(0,I.jsxs)(`div`,{className:z(`grid grid-cols-[24px_80px_1fr_auto] items-center gap-2 rounded-md border px-2.5 py-1.5 text-xs`,t?`border-foreground/30 bg-accent/40`:`border-transparent bg-muted/40`),children:[(0,I.jsxs)(`span`,{className:`font-mono text-muted-foreground`,children:[`#`,e.id]}),(0,I.jsx)(`strong`,{className:`font-medium`,children:e.role}),(0,I.jsxs)(`span`,{className:`overflow-hidden text-ellipsis whitespace-nowrap font-mono text-muted-foreground`,children:[e.family,` · `,ud(e.params),e.params_active_per_token?` (${ud(e.params_active_per_token)} active/tok)`:``,e.num_layers?` · ${e.num_layers}L · h=${e.hidden_size}`:``,e.modalities?.length?` · ${e.modalities.join(`+`)}`:``,e.final_output?` → ${e.final_output}`:``]}),(0,I.jsxs)(`span`,{className:`font-mono tabular-nums`,children:[n,` GB`]})]})}function sd(){return(0,I.jsxs)(`div`,{className:`space-y-5`,children:[(0,I.jsx)(Ll,{className:`h-24 w-full`}),(0,I.jsx)(Ll,{className:`h-9 w-72`}),(0,I.jsx)(Ll,{className:`h-72 w-full`}),(0,I.jsx)(Ll,{className:`h-72 w-full`})]})}function cd({message:e}){return(0,I.jsx)(`div`,{className:`rounded-md border border-dashed bg-muted/30 py-6 text-center text-xs text-muted-foreground`,children:e})}function ld(e){switch(e){case`success`:return`success`;case`destructive`:return`destructive`;case`warn`:return`warn`;default:return`secondary`}}function ud(e){return e>=0xe8d4a51000?(e/0xe8d4a51000).toFixed(1)+`T`:e>=1e9?(e/1e9).toFixed(1)+`B`:e>=1e6?(e/1e6).toFixed(0)+`M`:e.toString()}var dd=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=ge(`Primitive.${t}`),r=_.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,I.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),fd=`Separator`,pd=`horizontal`,md=[`horizontal`,`vertical`],hd=_.forwardRef((e,t)=>{let{decorative:n,orientation:r=pd,...i}=e,a=gd(r)?r:pd,o=n?{role:`none`}:{"aria-orientation":a===`vertical`?a:void 0,role:`separator`};return(0,I.jsx)(dd.div,{"data-orientation":a,...o,...i,ref:t})});hd.displayName=fd;function gd(e){return md.includes(e)}var _d=hd,vd=_.forwardRef(({className:e,orientation:t=`horizontal`,decorative:n=!0,...r},i)=>(0,I.jsx)(_d,{ref:i,decorative:n,orientation:t,className:z(`shrink-0 bg-border`,t===`horizontal`?`h-px w-full`:`h-full w-px`,e),...r}));vd.displayName=_d.displayName;var yd=(0,_.createContext)(void 0);function Q({children:e,defaultTheme:t=`light`,storageKey:n=`gt-theme`}){let[r,i]=(0,_.useState)(()=>typeof window>`u`?t:window.localStorage.getItem(n)??t);(0,_.useEffect)(()=>{let e=document.documentElement;e.classList.remove(`light`,`dark`),e.classList.add(r)},[r]);let a=e=>{window.localStorage.setItem(n,e),i(e)},o=(0,_.useMemo)(()=>({theme:r,setTheme:a,toggle:()=>a(r===`dark`?`light`:`dark`)}),[r]);return(0,I.jsx)(yd.Provider,{value:o,children:e})}function bd(){let e=(0,_.useContext)(yd);if(!e)throw Error(`useTheme must be used within ThemeProvider`);return e}function xd({title:e,lede:t,actions:n,children:r}){let{theme:i,toggle:a}=bd();return(0,I.jsxs)(`div`,{className:`flex h-screen flex-col overflow-hidden bg-background`,children:[(0,I.jsxs)(`header`,{className:`flex h-14 shrink-0 items-center gap-3 border-b bg-card px-4 lg:px-6`,children:[(0,I.jsx)(`img`,{src:`/logo.png`,alt:`GreenThread`,className:`h-7 w-auto dark:invert dark:hue-rotate-180`}),(0,I.jsx)(vd,{orientation:`vertical`,className:`h-6`}),(0,I.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,I.jsx)(`span`,{className:`truncate text-sm font-semibold leading-tight`,children:e}),t&&(0,I.jsx)(`span`,{className:`truncate text-[11px] text-muted-foreground`,children:t})]}),(0,I.jsxs)(`div`,{className:`ml-auto flex items-center gap-2`,children:[n,(0,I.jsx)(Ct,{variant:`ghost`,size:`icon`,onClick:a,"aria-label":i===`dark`?`Switch to light theme`:`Switch to dark theme`,children:i===`dark`?(0,I.jsx)(re,{className:`h-4 w-4`}):(0,I.jsx)(te,{className:`h-4 w-4`})})]})]}),(0,I.jsx)(`div`,{className:`flex flex-1 overflow-hidden`,children:r})]})}var Sd=_.forwardRef(({className:e,...t},n)=>(0,I.jsx)(`label`,{ref:n,className:z(`text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70`,e),...t}));Sd.displayName=`Label`;function Cd({label:e,htmlFor:t,hint:n,className:r,children:i}){return(0,I.jsxs)(`div`,{className:z(`space-y-1.5`,r),children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,I.jsx)(Sd,{htmlFor:t,className:`text-xs text-muted-foreground`,children:e}),n&&(0,I.jsxs)(Cl,{children:[(0,I.jsx)(wl,{asChild:!0,children:(0,I.jsx)(`button`,{type:`button`,"aria-label":`${e}: more info`,className:`text-muted-foreground/60 hover:text-foreground`,children:(0,I.jsx)(k,{className:`h-3 w-3`})})}),(0,I.jsx)(Tl,{side:`top`,children:n})]})]}),i]})}var wd=[{name:`node-01`,interconnect:`nvlink`,intra_node_bandwidth_gbps:900,inter_node_bandwidth_gbps:25,gpus:Array.from({length:4}).map((e,t)=>({id:`node-01-gpu-${t}`,model:`H100-SXM5`,memory_total_gb:80,memory_free_gb:80,in_use:!1}))}],Td={max_concurrent_requests:32,max_context_length:8192,avg_input_tokens:1e3,avg_output_tokens:500,slo:{target_ttft_p95_ms:1e3,target_tpot_p95_ms:60,target_decode_tps_per_user:30}},Ed={allowed_quantizations:[`bf16`,`fp8`,`awq`,`gptq`],allowed_kv_cache_dtypes:[`auto`,`fp8`],max_tensor_parallel:8,max_pipeline_parallel:1,max_data_parallel:1,allow_cross_node_parallelism:!1,allow_kv_head_replication:!1,min_gpu_memory_utilization:.85,max_gpu_memory_utilization:.92,framework_overhead_gb:2,max_results:10},Dd=[`bf16`,`fp16`,`fp8`,`int8`,`awq`,`gptq`,`compressed-tensors`],Od=[`auto`,`fp8`,`int8`];function kd(){let[e,t]=P(`hf_id`,`meta-llama/Llama-3.3-70B-Instruct`),[n,r]=P(`revision`,``),[i,a]=(0,_.useState)(``),[o,s]=(0,_.useState)(!1),[c,l]=P(`workload`,Td),[u,d]=P(`constraints`,Ed),[f,p]=P(`nodes`,wd),[m,h]=(0,_.useState)([]),[g,v]=(0,_.useState)(null),[y,b]=(0,_.useState)(!1),[x,S]=(0,_.useState)(null);(0,_.useEffect)(()=>{try{localStorage.removeItem(`vllm-planner:hf_token`),localStorage.removeItem(`fit:hf_token`)}catch{}},[]),(0,_.useEffect)(()=>{ae().then(h).catch(e=>S(`gpu catalog: ${e?.message??e}`))},[]);let C=(0,_.useMemo)(()=>({model:{hf_id:e,...n?{revision:n}:{},...i?{hf_token:i}:{}},workload:c,constraints:u,inventory:{nodes:f}}),[e,n,i,c,u,f]),w=(0,_.useRef)(null);(0,_.useEffect)(()=>{if(!e||f.every(e=>e.gpus.length===0)||c.max_concurrent_requests<=0||c.max_context_length<=0)return;let t=setTimeout(()=>{w.current?.abort();let e=new AbortController;w.current=e,b(!0),S(null),ie(C,e.signal).then(e=>v(e)).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||S(e instanceof Error?e.message:String(e))}).finally(()=>b(!1))},350);return()=>clearTimeout(t)},[C,e,f,c.max_concurrent_requests,c.max_context_length]);let T=e=>{d(t=>{let n=t.allowed_quantizations??[],r=n.includes(e)?n.filter(t=>t!==e):[...n,e];return{...t,allowed_quantizations:r}})},E=e=>{d(t=>{let n=t.allowed_kv_cache_dtypes??[],r=n.includes(e)?n.filter(t=>t!==e):[...n,e];return{...t,allowed_kv_cache_dtypes:r}})};return(0,I.jsxs)(xd,{title:`Fit`,lede:`vLLM deployment planner`,actions:(0,I.jsxs)(`span`,{className:`hidden text-xs text-muted-foreground md:inline`,children:[y&&(0,I.jsx)(`span`,{className:`mr-2 inline-block h-2 w-2 animate-pulse rounded-full bg-foreground/40`}),y?`Planning…`:`Auto-replans on edit`]}),children:[(0,I.jsx)(`aside`,{className:`w-[440px] shrink-0 overflow-y-auto border-r bg-card/40 p-5`,children:(0,I.jsxs)(`div`,{className:`space-y-5`,children:[(0,I.jsxs)(jl,{children:[(0,I.jsx)(Ml,{className:`pb-3`,children:(0,I.jsx)(Nl,{className:`text-sm`,children:`Model`})}),(0,I.jsxs)(Fl,{className:`space-y-3`,children:[(0,I.jsx)(Cd,{label:`Hugging Face model ID`,htmlFor:`hf-id`,hint:`Repository on huggingface.co, e.g. meta-llama/Llama-3.3-70B-Instruct.`,children:(0,I.jsx)(wt,{id:`hf-id`,value:e,onChange:e=>t(e.target.value),placeholder:`meta-llama/Llama-3.3-70B-Instruct`})}),(0,I.jsx)(Cd,{label:`Revision`,htmlFor:`hf-revision`,hint:`Git commit, tag, or branch. Defaults to main.`,children:(0,I.jsx)(wt,{id:`hf-revision`,value:n,onChange:e=>r(e.target.value),placeholder:`main`})}),(0,I.jsx)(Cd,{label:`HF token`,htmlFor:`hf-token`,hint:`Required only for gated models. Never persisted to localStorage; falls back to the server's HF_TOKEN env.`,children:(0,I.jsxs)(`div`,{className:`relative`,children:[(0,I.jsx)(wt,{id:`hf-token`,type:o?`text`:`password`,value:i,onChange:e=>a(e.target.value),placeholder:`hf_…`,className:`pr-10`,autoComplete:`off`}),(0,I.jsx)(Ct,{type:`button`,variant:`ghost`,size:`icon`,onClick:()=>s(e=>!e),"aria-label":o?`Hide token`:`Show token`,className:`absolute right-1 top-1/2 h-7 w-7 -translate-y-1/2`,children:o?(0,I.jsx)(D,{className:`h-3.5 w-3.5`}):(0,I.jsx)(O,{className:`h-3.5 w-3.5`})})]})})]})]}),(0,I.jsxs)(jl,{children:[(0,I.jsx)(Ml,{className:`pb-3`,children:(0,I.jsx)(Nl,{className:`text-sm`,children:`Workload`})}),(0,I.jsxs)(Fl,{className:`space-y-3`,children:[(0,I.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,I.jsx)(Cd,{label:`Max concurrent`,htmlFor:`wl-conc`,hint:`Maximum in-flight requests the server should sustain.`,children:(0,I.jsx)(wt,{id:`wl-conc`,type:`number`,value:c.max_concurrent_requests,onChange:e=>l({...c,max_concurrent_requests:Number(e.target.value)})})}),(0,I.jsx)(Cd,{label:`Max context`,htmlFor:`wl-ctx`,hint:`Maximum context length (tokens) the engine must support.`,children:(0,I.jsx)(wt,{id:`wl-ctx`,type:`number`,value:c.max_context_length,onChange:e=>l({...c,max_context_length:Number(e.target.value)})})}),(0,I.jsx)(Cd,{label:`Avg input tokens`,htmlFor:`wl-in`,hint:`Typical prompt length used to size KV cache reservations.`,children:(0,I.jsx)(wt,{id:`wl-in`,type:`number`,value:c.avg_input_tokens??0,onChange:e=>l({...c,avg_input_tokens:Number(e.target.value)})})}),(0,I.jsx)(Cd,{label:`Avg output tokens`,htmlFor:`wl-out`,hint:`Typical generation length used to size KV cache and throughput.`,children:(0,I.jsx)(wt,{id:`wl-out`,type:`number`,value:c.avg_output_tokens??0,onChange:e=>l({...c,avg_output_tokens:Number(e.target.value)})})})]}),(0,I.jsx)(vd,{}),(0,I.jsxs)(`div`,{children:[(0,I.jsxs)(`p`,{className:`mb-2 text-[10.5px] font-semibold uppercase tracking-wider text-muted-foreground`,children:[`SLOs `,(0,I.jsx)(`span`,{className:`font-normal normal-case tracking-normal`,children:`(0 = unconstrained)`})]}),(0,I.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,I.jsx)(Cd,{label:`TTFT p95 (ms)`,htmlFor:`slo-ttft`,hint:`Time To First Token, 95th percentile. Time from request arrival to first response token.`,children:(0,I.jsx)(wt,{id:`slo-ttft`,type:`number`,value:c.slo.target_ttft_p95_ms??0,onChange:e=>l({...c,slo:{...c.slo,target_ttft_p95_ms:Number(e.target.value)}})})}),(0,I.jsx)(Cd,{label:`TPOT p95 (ms)`,htmlFor:`slo-tpot`,hint:`Time Per Output Token, 95th percentile. Inter-token latency during decode.`,children:(0,I.jsx)(wt,{id:`slo-tpot`,type:`number`,value:c.slo.target_tpot_p95_ms??0,onChange:e=>l({...c,slo:{...c.slo,target_tpot_p95_ms:Number(e.target.value)}})})}),(0,I.jsx)(Cd,{label:`Decode tok/s per user`,htmlFor:`slo-decode`,hint:`Sustained output throughput requirement per concurrent user.`,className:`col-span-2`,children:(0,I.jsx)(wt,{id:`slo-decode`,type:`number`,value:c.slo.target_decode_tps_per_user??0,onChange:e=>l({...c,slo:{...c.slo,target_decode_tps_per_user:Number(e.target.value)}})})})]})]})]})]}),(0,I.jsxs)(jl,{children:[(0,I.jsx)(Ml,{className:`pb-3`,children:(0,I.jsx)(Nl,{className:`text-sm`,children:`Constraints`})}),(0,I.jsxs)(Fl,{className:`space-y-4`,children:[(0,I.jsx)(Cd,{label:`Allowed quantizations`,hint:`Engine will only consider configurations that use one of these weight quantizations.`,children:(0,I.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Dd.map(e=>{let t=u.allowed_quantizations?.includes(e);return(0,I.jsx)(`button`,{type:`button`,onClick:()=>T(e),className:z(`rounded-full border px-2.5 py-0.5 text-xs font-medium transition-colors`,t?`border-foreground bg-foreground text-background`:`border-border bg-background text-muted-foreground hover:border-foreground/40 hover:text-foreground`),children:e},e)})})}),(0,I.jsx)(Cd,{label:`KV cache dtype`,hint:`Allowed key/value cache dtypes. fp8 halves cache footprint at minor accuracy cost.`,children:(0,I.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Od.map(e=>{let t=u.allowed_kv_cache_dtypes?.includes(e);return(0,I.jsx)(`button`,{type:`button`,onClick:()=>E(e),className:z(`rounded-full border px-2.5 py-0.5 text-xs font-medium transition-colors`,t?`border-foreground bg-foreground text-background`:`border-border bg-background text-muted-foreground hover:border-foreground/40 hover:text-foreground`),children:e},e)})})}),(0,I.jsxs)(`div`,{className:`grid grid-cols-3 gap-3`,children:[(0,I.jsx)(Cd,{label:`Max TP`,htmlFor:`c-tp`,hint:`Tensor Parallel: shard each layer's tensors across this many GPUs.`,children:(0,I.jsx)(wt,{id:`c-tp`,type:`number`,value:u.max_tensor_parallel??1,onChange:e=>d({...u,max_tensor_parallel:Number(e.target.value)})})}),(0,I.jsx)(Cd,{label:`Max PP`,htmlFor:`c-pp`,hint:`Pipeline Parallel: split the model into sequential stages across GPUs.`,children:(0,I.jsx)(wt,{id:`c-pp`,type:`number`,value:u.max_pipeline_parallel??1,onChange:e=>d({...u,max_pipeline_parallel:Number(e.target.value)})})}),(0,I.jsx)(Cd,{label:`Max DP`,htmlFor:`c-dp`,hint:`Data Parallel: run independent replicas of the model for throughput.`,children:(0,I.jsx)(wt,{id:`c-dp`,type:`number`,value:u.max_data_parallel??1,onChange:e=>d({...u,max_data_parallel:Number(e.target.value)})})})]}),(0,I.jsx)(Cd,{label:`GPU memory utilization (max)`,htmlFor:`c-mem`,hint:`Upper bound on the fraction of each GPU's memory the engine may use. Lower values leave more headroom for KV cache growth.`,children:(0,I.jsx)(wt,{id:`c-mem`,type:`number`,step:`0.01`,min:`0`,max:`1`,value:u.max_gpu_memory_utilization??.92,onChange:e=>d({...u,max_gpu_memory_utilization:Number(e.target.value)})})}),(0,I.jsxs)(`div`,{className:`space-y-2`,children:[(0,I.jsxs)(`label`,{className:`flex items-center gap-2 text-sm`,children:[(0,I.jsx)(`input`,{type:`checkbox`,checked:!!u.allow_cross_node_parallelism,onChange:e=>d({...u,allow_cross_node_parallelism:e.target.checked}),className:`h-4 w-4 accent-foreground`}),(0,I.jsx)(`span`,{className:`text-muted-foreground`,children:`Allow cross-node parallelism`})]}),(0,I.jsxs)(`label`,{className:`flex items-center gap-2 text-sm`,children:[(0,I.jsx)(`input`,{type:`checkbox`,checked:!!u.allow_kv_head_replication,onChange:e=>d({...u,allow_kv_head_replication:e.target.checked}),className:`h-4 w-4 accent-foreground`}),(0,I.jsx)(`span`,{className:`text-muted-foreground`,children:`Allow KV head replication`})]})]})]})]}),(0,I.jsxs)(jl,{children:[(0,I.jsxs)(Ml,{className:`flex flex-row items-center justify-between space-y-0 pb-3`,children:[(0,I.jsx)(Nl,{className:`text-sm`,children:`Inventory`}),(0,I.jsxs)(Ct,{variant:`ghost`,size:`sm`,onClick:()=>{confirm(`Reset inventory to defaults?`)&&p(wd)},children:[(0,I.jsx)(A,{className:`h-3 w-3`}),`Reset`]})]}),(0,I.jsx)(Fl,{children:(0,I.jsx)(Dl,{nodes:f,setNodes:p,skus:m})})]}),(0,I.jsxs)(`details`,{className:`text-xs`,children:[(0,I.jsx)(`summary`,{className:`cursor-pointer text-muted-foreground hover:text-foreground`,children:`Request preview`}),(0,I.jsx)(`pre`,{className:`mt-2 max-h-72 overflow-auto rounded-md border bg-muted/40 p-3 font-mono text-[11px]`,children:JSON.stringify(C,null,2)})]}),(0,I.jsxs)(`p`,{className:`text-[11px] text-muted-foreground`,children:[`Proxied via `,(0,I.jsx)(Sd,{className:`font-mono`,children:`/api`})]})]})}),(0,I.jsx)(`main`,{className:`flex-1 overflow-y-auto p-5 lg:p-8`,children:(0,I.jsx)(nd,{loading:y,error:x,resp:g})})]})}(0,v.createRoot)(document.getElementById(`root`)).render((0,I.jsx)(_.StrictMode,{children:(0,I.jsx)(Q,{defaultTheme:`light`,storageKey:`fit:theme`,children:(0,I.jsxs)(Sl,{delayDuration:150,children:[(0,I.jsx)(kd,{}),(0,I.jsx)(({...e})=>{let{theme:t}=bd();return(0,I.jsx)(Zu,{theme:t,className:`toaster group`,toastOptions:{classNames:{toast:`group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg`,description:`group-[.toast]:text-muted-foreground`,actionButton:`group-[.toast]:bg-primary group-[.toast]:text-primary-foreground`,cancelButton:`group-[.toast]:bg-muted group-[.toast]:text-muted-foreground`}},...e})},{position:`bottom-right`,richColors:!0,closeButton:!0})]})})})); \ No newline at end of file diff --git a/internal/webui/dist/index.html b/internal/webui/dist/index.html index 6767899..b4a7889 100644 --- a/internal/webui/dist/index.html +++ b/internal/webui/dist/index.html @@ -5,8 +5,8 @@ Fit — GreenThread - - + +
diff --git a/web/src/App.tsx b/web/src/App.tsx index 0770fff..0fd9564 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -1,28 +1,28 @@ import { useEffect, useMemo, useRef, useState } from 'react' -import { Eye, EyeOff, RotateCcw } from 'lucide-react' -import { fetchGPUs, postPlan } from './api' -import { useStoredState } from './storage' +import { toast } from 'sonner' +import { Eye, EyeOff, RotateCcw, Settings2, Share2 } from 'lucide-react' +import { fetchGPUs, postFit } from './api' +import { loadJSON, saveJSON } from './storage' import { InventoryEditor } from './InventoryEditor' -import { Results } from './Results' +import { FitResults } from './FitResults' +import { ModelsEditor, newModel } from '@/components/models-editor' import { AppShell } from '@/components/app-shell' import { Field } from '@/components/field' import { Button } from '@/components/ui/button' -import { - Card, - CardContent, - CardHeader, - CardTitle, -} from '@/components/ui/card' +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Separator } from '@/components/ui/separator' import { cn } from '@/lib/utils' +import { readShareState, shareURL, writeShareState } from '@/lib/urlState' import type { Constraints, + FitRequest, + FitResponse, + ModelEntry, Node, - PlanRequest, - PlanResponse, Quant, + ShareState, SkuRow, Workload, } from './types' @@ -48,7 +48,7 @@ const DEFAULT_WORKLOAD: Workload = { max_context_length: 8192, avg_input_tokens: 1000, avg_output_tokens: 500, - slo: { target_ttft_p95_ms: 1000, target_tpot_p95_ms: 60, target_decode_tps_per_user: 30 }, + slo: { target_ttft_p95_ms: 0, target_tpot_p95_ms: 0, target_decode_tps_per_user: 0 }, } const DEFAULT_CONSTRAINTS: Constraints = { @@ -65,56 +65,85 @@ const DEFAULT_CONSTRAINTS: Constraints = { max_results: 10, } +const DEFAULT_MODELS: ModelEntry[] = [ + newModel('Qwen/Qwen3-8B'), + newModel('deepseek-ai/DeepSeek-V3.2-Exp'), +] + const ALL_QUANTS: Quant[] = ['bf16', 'fp16', 'fp8', 'int8', 'awq', 'gptq', 'compressed-tensors'] const ALL_KVDT = ['auto', 'fp8', 'int8'] export default function App() { - const [hfID, setHfID] = useStoredState('hf_id', 'meta-llama/Llama-3.3-70B-Instruct') - const [revision, setRevision] = useStoredState('revision', '') - // Token is intentionally NOT persisted. Server reads HF_TOKEN env as fallback. + // Seed once: a shared URL (#s=…) wins over localStorage which wins over defaults. + const seed = useMemo(() => readShareState(), []) + + const [models, setModels] = useState( + () => seed?.models ?? loadJSON('models', DEFAULT_MODELS), + ) + const [workload, setWorkload] = useState( + () => seed?.workload ?? loadJSON('workload', DEFAULT_WORKLOAD), + ) + const [constraints, setConstraints] = useState( + () => seed?.constraints ?? loadJSON('constraints', DEFAULT_CONSTRAINTS), + ) + const [nodes, setNodes] = useState(() => seed?.nodes ?? loadJSON('nodes', DEFAULT_NODES)) + const [advanced, setAdvanced] = useState(() => seed?.advanced ?? loadJSON('advanced', false)) + + // Token is intentionally NOT persisted or shared. Server reads HF_TOKEN env as fallback. const [hfToken, setHfToken] = useState('') const [showToken, setShowToken] = useState(false) - const [workload, setWorkload] = useStoredState('workload', DEFAULT_WORKLOAD) - const [constraints, setConstraints] = useStoredState('constraints', DEFAULT_CONSTRAINTS) - const [nodes, setNodes] = useStoredState('nodes', DEFAULT_NODES) - const [skus, setSkus] = useState([]) - const [resp, setResp] = useState(null) + const [resp, setResp] = useState(null) const [loading, setLoading] = useState(false) const [error, setError] = useState(null) - // One-time scrub of any token persisted by an earlier build of this SPA. + const shareState: ShareState = useMemo( + () => ({ v: 1, models, workload, constraints, nodes, advanced }), + [models, workload, constraints, nodes, advanced], + ) + + // Persist to localStorage + mirror into the URL hash on every change. useEffect(() => { - try { - localStorage.removeItem('vllm-planner:hf_token') - localStorage.removeItem('fit:hf_token') - } catch { - // ignore - } - }, []) + saveJSON('models', models) + saveJSON('workload', workload) + saveJSON('constraints', constraints) + saveJSON('nodes', nodes) + saveJSON('advanced', advanced) + writeShareState(shareState) + }, [shareState, models, workload, constraints, nodes, advanced]) useEffect(() => { + localStorage.removeItem('fit:hf_token') fetchGPUs() .then(setSkus) .catch((e) => setError(`gpu catalog: ${e?.message ?? e}`)) }, []) - const request = useMemo( + const request = useMemo( () => ({ - model: { hf_id: hfID, ...(revision ? { revision } : {}), ...(hfToken ? { hf_token: hfToken } : {}) }, + models: models + .filter((m) => m.hf_id.trim()) + .map((m) => ({ + hf_id: m.hf_id.trim(), + ...(m.revision ? { revision: m.revision } : {}), + ...(hfToken ? { hf_token: hfToken } : {}), + ...(m.dedicated ? { dedicated: true } : {}), + ...(m.replicas && m.replicas > 1 ? { replicas: m.replicas } : {}), + })), workload, constraints, inventory: { nodes }, }), - [hfID, revision, hfToken, workload, constraints, nodes], + [models, hfToken, workload, constraints, nodes], ) const abortRef = useRef(null) useEffect(() => { - // Skip auto-fetch when the request would obviously be invalid; the server - // would 400 and we'd flash an error on every keystroke. - if (!hfID) return + if (request.models.length === 0) { + setResp(null) + return + } if (nodes.every((n) => n.gpus.length === 0)) return if (workload.max_concurrent_requests <= 0 || workload.max_context_length <= 0) return const t = setTimeout(() => { @@ -123,8 +152,8 @@ export default function App() { abortRef.current = ac setLoading(true) setError(null) - postPlan(request, ac.signal) - .then((r) => setResp(r)) + postFit(request, ac.signal) + .then(setResp) .catch((e: unknown) => { if (e instanceof DOMException && e.name === 'AbortError') return setError(e instanceof Error ? e.message : String(e)) @@ -132,68 +161,66 @@ export default function App() { .finally(() => setLoading(false)) }, 350) return () => clearTimeout(t) - }, [request, hfID, nodes, workload.max_concurrent_requests, workload.max_context_length]) + }, [request, nodes, workload.max_concurrent_requests, workload.max_context_length]) - const toggleQuant = (q: Quant) => { + const toggleQuant = (q: Quant) => setConstraints((prev) => { const have = prev.allowed_quantizations ?? [] - const next = have.includes(q) ? have.filter((x) => x !== q) : [...have, q] - return { ...prev, allowed_quantizations: next } + return { ...prev, allowed_quantizations: have.includes(q) ? have.filter((x) => x !== q) : [...have, q] } }) - } - - const toggleKV = (k: string) => { + const toggleKV = (k: string) => setConstraints((prev) => { const have = prev.allowed_kv_cache_dtypes ?? [] - const next = have.includes(k) ? have.filter((x) => x !== k) : [...have, k] - return { ...prev, allowed_kv_cache_dtypes: next } + return { ...prev, allowed_kv_cache_dtypes: have.includes(k) ? have.filter((x) => x !== k) : [...have, k] } }) - } - const statusText = loading - ? 'Planning…' - : 'Auto-replans on edit' + const onShare = async () => { + const url = shareURL(shareState) + try { + await navigator.clipboard.writeText(url) + toast.success('Share link copied', { description: 'GPUs, models and settings are encoded in the URL.' }) + } catch { + window.prompt('Copy this share link:', url) + } + } return ( +
{loading && ( - + )} - {statusText} - + + +
} >
- +
) } + +function Chip({ on, onClick, children }: { on: boolean; onClick: () => void; children: React.ReactNode }) { + return ( + + ) +} diff --git a/web/src/FitResults.tsx b/web/src/FitResults.tsx new file mode 100644 index 0000000..f3102af --- /dev/null +++ b/web/src/FitResults.tsx @@ -0,0 +1,203 @@ +import { ChevronDown } from 'lucide-react' +import { ClusterMap } from '@/components/cluster-view' +import { CodeBlock } from '@/components/code-block' +import { MemoryBar } from '@/components/memory-bar' +import { Badge } from '@/components/ui/badge' +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' +import { Skeleton } from '@/components/ui/skeleton' +import { buildColorMap } from '@/lib/colors' +import { cn } from '@/lib/utils' +import { verdictMeta, type VerdictTone } from '@/lib/verdict' +import type { Configuration, FitModelResult, FitResponse } from '@/types' + +interface FitResultsProps { + loading: boolean + error: string | null + resp: FitResponse | null + advanced: boolean +} + +export function FitResults({ loading, error, resp, advanced }: FitResultsProps) { + if (error) { + return ( + + + Error + + {error} + + ) + } + if (loading && !resp) { + return ( +
+ + + +
+ ) + } + if (!resp) { + return ( +
+
+

Add models and GPUs to see how they fit.

+

+ Fitment and placement update live as you edit. +

+
+
+ ) + } + + const meta = verdictMeta(resp.verdict) + const colors = buildColorMap(resp.models.map((m) => m.label)) + const fittedCount = resp.models.filter((m) => m.fitted).length + + return ( +
+
+ {meta.label} + + {fittedCount}/{resp.models.length} models placed + {resp.diagnostics?.elapsed_ms != null && ` · ${resp.diagnostics.elapsed_ms} ms`} + +
+ + {resp.warnings?.map((w, i) => ( +

+ {w} +

+ ))} + + + + Cluster placement + + + + + + +
+ {resp.models.map((m) => ( + + ))} +
+
+ ) +} + +function ModelCard({ m, color, advanced }: { m: FitModelResult; color: string; advanced: boolean }) { + const cfg = m.chosen + return ( + + +
+ +
+
{m.label}
+ {m.label !== m.hf_id && ( +
{m.hf_id}
+ )} +
+
+ {m.fitted ? ( + + placed + + ) : ( + + no fit + + )} +
+ + {!m.fitted &&

{m.reason}

} + + {cfg && ( + <> +
+ + + + + {m.dedicated && dedicated} + {(m.replicas ?? 1) > 1 && ×{m.replicas} replicas} +
+ {m.gpu_ids && m.gpu_ids.length > 0 && ( +
{m.gpu_ids.join(' ')}
+ )} + + {advanced && } + + )} +
+
+ ) +} + +function AdvancedDetail({ cfg, altCount }: { cfg: Configuration; altCount: number }) { + const m = cfg.memory_per_gpu_gb + const p = cfg.performance_estimate + return ( +
+ + + Performance, memory & command + {altCount > 0 && · {altCount} alternative config(s)} + +
+
+ + + + + +
+ + +
+
+ ) +} + +function topoStr(cfg: Configuration) { + const p = cfg.placement + const parts = [`TP=${p.tensor_parallel}`] + if (p.pipeline_parallel > 1) parts.push(`PP=${p.pipeline_parallel}`) + if (p.expert_parallel > 1) parts.push(`EP=${p.expert_parallel}`) + if (p.data_parallel > 1) parts.push(`DP=${p.data_parallel}`) + return parts.join(' ') +} + +function Stat({ label, value }: { label: string; value: string }) { + return ( + + {label} + {value} + + ) +} + +function toneToBadgeVariant(tone: VerdictTone) { + switch (tone) { + case 'success': + return 'success' as const + case 'destructive': + return 'destructive' as const + case 'warn': + return 'warn' as const + default: + return 'secondary' as const + } +} diff --git a/web/src/Results.tsx b/web/src/Results.tsx deleted file mode 100644 index f3cafbf..0000000 --- a/web/src/Results.tsx +++ /dev/null @@ -1,400 +0,0 @@ -import type { ReactNode } from 'react' -import { AlertTriangle, Sparkles } from 'lucide-react' -import { Badge } from '@/components/ui/badge' -import { - Card, - CardContent, - CardDescription, - CardHeader, - CardTitle, -} from '@/components/ui/card' -import { Skeleton } from '@/components/ui/skeleton' -import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs' -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from '@/components/ui/tooltip' -import { CodeBlock } from '@/components/code-block' -import { MemoryBar } from '@/components/memory-bar' -import { verdictMeta, type VerdictTone } from '@/lib/verdict' -import { cn } from '@/lib/utils' -import type { - Configuration, - PipelineProfile, - PlanResponse, - StageProfile, -} from './types' - -interface Props { - loading: boolean - error: string | null - resp: PlanResponse | null -} - -export function Results({ loading, error, resp }: Props) { - if (error) { - return ( - - - -
- Planning failed - The planner could not produce a result for this request. -
-
- -
-            {error}
-          
-
-
- ) - } - - if (!resp && loading) { - return - } - - if (!resp) { - return ( -
-
-
- -
-

Ready when you are

-

- Edit the model, workload, or inventory to see ranked deployment configurations. -

-
-
- ) - } - - const verdict = resp.verdict ?? 'unknown' - const meta = verdictMeta(verdict) - const configs = resp.configurations ?? [] - const rejected = resp.rejected_configurations ?? [] - - return ( -
- - -
- {meta.label} - {meta.description && ( -

{meta.description}

- )} - {resp.model_profile && ( -

- {resp.model_profile.architecture} · {resp.model_profile.family} ·{' '} - {fmtParams(resp.model_profile.params_total)} params -

- )} - {resp.error && ( -

- {resp.error.code}: {resp.error.message} -

- )} -
- {resp.diagnostics && ( -
-
{resp.diagnostics.elapsed_ms} ms
-
- {resp.diagnostics.search_space_meets_slo}/{resp.diagnostics.search_space_fit_memory}/ - {resp.diagnostics.search_space_total}{' '} - slo/fit/total -
-
v{resp.diagnostics.estimator_version}
-
- )} -
- {resp.warnings && resp.warnings.length > 0 && ( - -
- {resp.warnings.map((w, i) => ( -
- - {w} -
- ))} -
-
- )} -
- - {resp.model_profile?.pipeline && ( - - )} - - - - - Configurations - {configs.length > 0 && ( - - {configs.length} - - )} - - - Rejected - {rejected.length > 0 && ( - - {rejected.length} - - )} - - Raw response - - - - {configs.length === 0 ? ( - - ) : ( - configs.map((c) => ) - )} - - - - {rejected.length === 0 ? ( - - ) : ( - rejected.map((r, i) => ( -
- {r.reason_code} - {r.summary} - — {r.reason} -
- )) - )} -
- - - - -
-
- ) -} - -function ConfigCard({ cfg }: { cfg: Configuration }) { - const m = cfg.memory_per_gpu_gb - const isBest = cfg.rank === 1 - - return ( - - -
- #{cfg.rank} - - {cfg.placement.gpu_ids.length}× {cfg.placement.nodes.join(', ')} - -
- - score {cfg.score.toFixed(2)} - -
- -
- - TP={cfg.placement.tensor_parallel} PP={cfg.placement.pipeline_parallel} EP= - {cfg.placement.expert_parallel} DP={cfg.placement.data_parallel} - - } - /> - - - - - - - -
- - - - -
-
- ) -} - -function KV({ - label, - hint, - value, -}: { - label: string - hint?: string - value: ReactNode -}) { - return ( -
- {hint ? ( - - - - {label} - - - {hint} - - ) : ( - {label} - )} - - {value} - -
- ) -} - -function PipelineCard({ pipeline }: { pipeline: PipelineProfile }) { - return ( - - -
-
- - {pipeline.framework} pipeline - - - {pipeline.stages.length} stages ·{' '} - {fmtParams(pipeline.total_pipeline_params)} total params - -
- - primary: stage #{pipeline.primary_stage_id} - -
-
- - {pipeline.note && ( -

{pipeline.note}

- )} - {pipeline.stages.map((s) => ( - - ))} -
-
- ) -} - -function StageRow({ stage, primary }: { stage: StageProfile; primary: boolean }) { - const gb = (stage.bytes_bf16 / (1 << 30)).toFixed(2) - return ( -
- #{stage.id} - {stage.role} - - {stage.family} · {fmtParams(stage.params)} - {stage.params_active_per_token - ? ` (${fmtParams(stage.params_active_per_token)} active/tok)` - : ''} - {stage.num_layers ? ` · ${stage.num_layers}L · h=${stage.hidden_size}` : ''} - {stage.modalities?.length ? ` · ${stage.modalities.join('+')}` : ''} - {stage.final_output ? ` → ${stage.final_output}` : ''} - - {gb} GB -
- ) -} - -function ResultsSkeleton() { - return ( -
- - - - -
- ) -} - -function EmptyTabState({ message }: { message: string }) { - return ( -
- {message} -
- ) -} - -function toneToBadgeVariant(tone: VerdictTone) { - switch (tone) { - case 'success': - return 'success' as const - case 'destructive': - return 'destructive' as const - case 'warn': - return 'warn' as const - default: - return 'secondary' as const - } -} - -function fmtParams(n: number) { - if (n >= 1e12) return (n / 1e12).toFixed(1) + 'T' - if (n >= 1e9) return (n / 1e9).toFixed(1) + 'B' - if (n >= 1e6) return (n / 1e6).toFixed(0) + 'M' - return n.toString() -} diff --git a/web/src/api.ts b/web/src/api.ts index 802cc7b..fc1d6e3 100644 --- a/web/src/api.ts +++ b/web/src/api.ts @@ -1,4 +1,19 @@ -import type { PlanRequest, PlanResponse, SkuRow } from './types' +import type { FitRequest, FitResponse, PlanRequest, PlanResponse, SkuRow } from './types' + +export async function postFit(req: FitRequest, signal?: AbortSignal): Promise { + const r = await fetch('/api/v1/fit', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(req), + signal, + }) + const body = (await r.json()) as FitResponse + if (!r.ok) { + const msg = body.error ? `${body.error.code}: ${body.error.message}` : `HTTP ${r.status}` + throw new Error(msg) + } + return body +} export async function postPlan(req: PlanRequest, signal?: AbortSignal): Promise { const r = await fetch('/api/v1/plan', { diff --git a/web/src/components/cluster-view.tsx b/web/src/components/cluster-view.tsx new file mode 100644 index 0000000..304c038 --- /dev/null +++ b/web/src/components/cluster-view.tsx @@ -0,0 +1,96 @@ +import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip' +import { cn } from '@/lib/utils' +import type { ColorMap } from '@/lib/colors' +import type { ClusterView, GPUOccupancy } from '@/types' + +interface ClusterViewProps { + cluster: ClusterView + colors: ColorMap +} + +// ClusterMap renders one stacked bar per GPU (tenants + free), grouped by node, +// so you can see how models share GPUs at a glance. +export function ClusterMap({ cluster, colors }: ClusterViewProps) { + if (!cluster.gpus.length) return null + const nodes = groupByNode(cluster.gpus) + + return ( +
+
+ + {cluster.used_gpus}/{cluster.total_gpus} GPUs in use + + + {cluster.used_mem_gb.toFixed(0)} GB used ·{' '} + {cluster.free_mem_gb.toFixed(0)} GB free of {cluster.total_mem_gb.toFixed(0)} GB + +
+ + {nodes.map(([node, gpus]) => ( +
+
+ {node} +
+
+ {gpus.map((g) => ( + + ))} +
+
+ ))} +
+ ) +} + +function GpuCell({ g, colors }: { g: GPUOccupancy; colors: ColorMap }) { + const cap = g.usable_gb || g.capacity_gb || 1 + const pctUsed = Math.min(100, (g.used_gb / cap) * 100) + return ( +
+
+ {g.id} + {g.sku} +
+ +
+ {(g.tenants ?? []).map((t, i) => { + const pct = (Math.max(0, t.used_gb) / cap) * 100 + if (pct <= 0) return null + return ( + + +
+ + + {t.label}: {t.used_gb.toFixed(1)} GB + + + ) + })} +
+ +
+ + {g.used_gb.toFixed(0)} / {g.usable_gb.toFixed(0)} GB ({pctUsed.toFixed(0)}%) + + {g.dedicated && dedicated} +
+
+ ) +} + +function groupByNode(gpus: GPUOccupancy[]): [string, GPUOccupancy[]][] { + const map = new Map() + for (const g of gpus) { + const arr = map.get(g.node) ?? [] + arr.push(g) + map.set(g.node, arr) + } + return [...map.entries()] +} diff --git a/web/src/components/models-editor.tsx b/web/src/components/models-editor.tsx new file mode 100644 index 0000000..7ebe705 --- /dev/null +++ b/web/src/components/models-editor.tsx @@ -0,0 +1,98 @@ +import { Plus, X } from 'lucide-react' +import { Button } from '@/components/ui/button' +import { Input } from '@/components/ui/input' +import { cn } from '@/lib/utils' +import type { ModelEntry } from '@/types' + +export function newModel(hf_id = ''): ModelEntry { + return { uid: crypto.randomUUID(), hf_id } +} + +interface ModelsEditorProps { + models: ModelEntry[] + setModels: (next: ModelEntry[]) => void + advanced: boolean +} + +export function ModelsEditor({ models, setModels, advanced }: ModelsEditorProps) { + const update = (uid: string, patch: Partial) => + setModels(models.map((m) => (m.uid === uid ? { ...m, ...patch } : m))) + const remove = (uid: string) => setModels(models.filter((m) => m.uid !== uid)) + const add = () => setModels([...models, newModel()]) + + return ( +
+ {models.map((m, i) => ( +
+
+ + {i + 1} + + update(m.uid, { hf_id: e.target.value })} + placeholder="org/Model-Name" + className="h-8 flex-1 font-mono text-xs" + aria-label={`Model ${i + 1} Hugging Face ID`} + /> + +
+ + {advanced && ( +
+ update(m.uid, { revision: e.target.value || undefined })} + placeholder="revision" + className="h-7 w-28 font-mono text-[11px]" + aria-label="revision" + /> + + +
+ )} +
+ ))} + + +
+ ) +} diff --git a/web/src/lib/colors.ts b/web/src/lib/colors.ts new file mode 100644 index 0000000..ffdfea8 --- /dev/null +++ b/web/src/lib/colors.ts @@ -0,0 +1,29 @@ +// Stable per-model colors shared between the cluster view and the model list. +// Class strings are literal so Tailwind's JIT keeps them in the build. + +const PALETTE = [ + 'bg-emerald-500', + 'bg-sky-500', + 'bg-violet-500', + 'bg-amber-500', + 'bg-rose-500', + 'bg-cyan-500', + 'bg-fuchsia-500', + 'bg-lime-600', + 'bg-orange-500', + 'bg-indigo-500', +] + +export type ColorMap = Record + +export function buildColorMap(labels: string[]): ColorMap { + const map: ColorMap = {} + let i = 0 + for (const l of labels) { + if (!(l in map)) { + map[l] = PALETTE[i % PALETTE.length] + i++ + } + } + return map +} diff --git a/web/src/lib/urlState.ts b/web/src/lib/urlState.ts new file mode 100644 index 0000000..9855517 --- /dev/null +++ b/web/src/lib/urlState.ts @@ -0,0 +1,64 @@ +// Shareable URL state. The full UI state (models, inventory, workload, +// constraints) is encoded into the URL hash fragment (#s=…) so links can be +// copied and shared. The hash is never sent to the server (not in access logs), +// and the HF token is deliberately excluded from the shared state. + +import type { ShareState } from '@/types' + +const HASH_KEY = 's' + +// --- Unicode-safe base64url --- + +function bytesToBase64Url(bytes: Uint8Array): string { + let bin = '' + for (let i = 0; i < bytes.length; i++) bin += String.fromCharCode(bytes[i]) + return btoa(bin).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '') +} + +function base64UrlToBytes(s: string): Uint8Array { + const b64 = s.replace(/-/g, '+').replace(/_/g, '/') + '==='.slice((s.length + 3) % 4) + const bin = atob(b64) + const out = new Uint8Array(bin.length) + for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i) + return out +} + +export function encodeState(state: ShareState): string { + const json = JSON.stringify(state) + return bytesToBase64Url(new TextEncoder().encode(json)) +} + +export function decodeState(encoded: string): ShareState | null { + try { + const json = new TextDecoder().decode(base64UrlToBytes(encoded)) + const obj = JSON.parse(json) as ShareState + if (!obj || obj.v !== 1 || !Array.isArray(obj.models) || !Array.isArray(obj.nodes)) return null + return obj + } catch { + return null + } +} + +// readShareState parses the current location hash, returning the decoded state +// or null when there is no (valid) shared state. +export function readShareState(): ShareState | null { + const hash = window.location.hash.replace(/^#/, '') + if (!hash) return null + const params = new URLSearchParams(hash) + const enc = params.get(HASH_KEY) + return enc ? decodeState(enc) : null +} + +// writeShareState replaces the hash without pushing a history entry, so typing +// in the form doesn't spam the back button. +export function writeShareState(state: ShareState): void { + const enc = encodeState(state) + const url = `${window.location.pathname}${window.location.search}#${HASH_KEY}=${enc}` + window.history.replaceState(null, '', url) +} + +// shareURL returns the absolute URL embedding the given state. +export function shareURL(state: ShareState): string { + const enc = encodeState(state) + return `${window.location.origin}${window.location.pathname}${window.location.search}#${HASH_KEY}=${enc}` +} diff --git a/web/src/lib/verdict.ts b/web/src/lib/verdict.ts index d87fad7..ec7c08e 100644 --- a/web/src/lib/verdict.ts +++ b/web/src/lib/verdict.ts @@ -9,6 +9,10 @@ interface VerdictMeta { const VERDICTS: Record = { feasible: { label: 'Feasible', tone: 'success', description: 'At least one configuration fits and meets the SLOs.' }, fit_ok: { label: 'Fits', tone: 'success' }, + all_fit: { label: 'All models fit', tone: 'success', description: 'Every model was placed on the shared GPU inventory.' }, + partial_fit: { label: 'Partial fit', tone: 'warn', description: 'Some models fit; others could not be placed.' }, + none_fit: { label: 'Nothing fits', tone: 'destructive', description: 'No model could be placed on the inventory.' }, + no_models: { label: 'No models', tone: 'muted', description: 'Add a model to plan.' }, infeasible_oom: { label: 'Out of memory', tone: 'destructive', diff --git a/web/src/types.ts b/web/src/types.ts index f735a68..0af5ff3 100644 --- a/web/src/types.ts +++ b/web/src/types.ts @@ -190,3 +190,90 @@ export interface SkuRow { vendor: string memory_gb: number } + +// ---- Multi-model fit (POST /v1/fit) ---- + +// ModelEntry is one row in the editable working set of models. `uid` is a +// client-only key for React lists and is not sent to the server. +export interface ModelEntry { + uid: string + hf_id: string + revision?: string + dedicated?: boolean + replicas?: number +} + +export interface FitModel { + hf_id: string + revision?: string + hf_token?: string + label?: string + dedicated?: boolean + replicas?: number +} + +export interface FitRequest { + models: FitModel[] + workload: Workload + constraints: Constraints + inventory: { nodes: Node[] } +} + +export interface FitResponse { + verdict: string + models: FitModelResult[] + cluster: ClusterView + warnings?: string[] + diagnostics?: Diagnostics + error?: { code: string; message: string } +} + +export interface FitModelResult { + label: string + hf_id: string + fitted: boolean + reason?: string + dedicated?: boolean + replicas?: number + model_profile?: ModelProfile + chosen?: Configuration + alternatives?: Configuration[] + gpu_ids?: string[] +} + +export interface ClusterView { + gpus: GPUOccupancy[] + total_gpus: number + used_gpus: number + total_mem_gb: number + used_mem_gb: number + free_mem_gb: number +} + +export interface GPUOccupancy { + id: string + node: string + sku: string + capacity_gb: number + usable_gb: number + tenants?: GPUTenant[] + used_gb: number + free_gb: number + dedicated?: boolean +} + +export interface GPUTenant { + label: string + hf_id: string + used_gb: number +} + +// ShareState is the full UI state encoded into the URL hash for sharing. +export interface ShareState { + v: 1 + models: ModelEntry[] + workload: Workload + constraints: Constraints + nodes: Node[] + advanced?: boolean +} From 9095d602f90396eec981aa8e63b542e855f68b5e Mon Sep 17 00:00:00 2001 From: Nick Pratley Date: Tue, 30 Jun 2026 11:06:57 +1000 Subject: [PATCH 2/2] Simplify inventory to homogeneous nodes; per-model SLO targets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Inventory editor: each node is one GPU type × a count (+ free GB/GPU), instead of per-GPU rows. Expands to the GPU array under the hood, so the wire format and share-links are unchanged. Assumes a node holds one SKU. - SLO targets move from a single global block to per-model (advanced): each model carries its own TTFT/TPOT/decode targets, sent as a per-model workload override and encoded in the share URL. Fit stays fitment-first — SLO never blocks placement, but a placed config that misses a model's targets shows an "SLO missed" badge (backend sets chosen.meets_slo via sloMet). - Remove the "Proxied via /api" footer line. go build/vet/test and the web build are green. --- internal/solver/fit.go | 20 ++ internal/webui/dist/assets/index-B43Awbem.js | 50 +++ internal/webui/dist/assets/index-B_jf50bD.css | 1 - internal/webui/dist/assets/index-CUm5LUen.js | 50 --- internal/webui/dist/assets/index-Ctq9uoR4.css | 1 + internal/webui/dist/index.html | 4 +- web/src/App.tsx | 52 +-- web/src/FitResults.tsx | 13 +- web/src/InventoryEditor.tsx | 313 ++++++------------ web/src/components/models-editor.tsx | 124 +++++-- web/src/types.ts | 6 + 11 files changed, 290 insertions(+), 344 deletions(-) create mode 100644 internal/webui/dist/assets/index-B43Awbem.js delete mode 100644 internal/webui/dist/assets/index-B_jf50bD.css delete mode 100644 internal/webui/dist/assets/index-CUm5LUen.js create mode 100644 internal/webui/dist/assets/index-Ctq9uoR4.css diff --git a/internal/solver/fit.go b/internal/solver/fit.go index 9f09e4a..07408f7 100644 --- a/internal/solver/fit.go +++ b/internal/solver/fit.go @@ -126,6 +126,7 @@ func (s *Solver) searchModel(ctx context.Context, req api.FitRequest, m api.FitM if m.Workload != nil { wl = *m.Workload } + slo := wl.SLO // per-model targets, kept for an advisory meets-SLO signal wl.SLO = api.SLO{} // fitment-first: don't let SLO reject a placement cons := req.Constraints if m.Constraints != nil { @@ -151,6 +152,9 @@ func (s *Solver) searchModel(ctx context.Context, req api.FitRequest, m api.FitM } best := pickFitmentBest(res.Configurations) + // SLO is advisory in fit: the config is placed regardless, but flag whether + // it meets the model's targets so the UI can surface a miss. + best.MeetsSLO = sloMet(slo, best.PerformanceEstimate) p.cfg = best p.alts = res.Configurations p.perGPU = best.MemoryPerGPU.TotalUsed @@ -234,6 +238,22 @@ func fitInfeasibleReason(verdict string) string { } } +// sloMet reports whether a performance estimate meets the (advisory) SLO +// targets. Zero targets are unconstrained. Mirrors the single-model SLO gate +// minus the concurrency check (the fit packer owns concurrency). +func sloMet(slo api.SLO, p api.PerfEstimate) bool { + if slo.TargetTTFTP95Ms > 0 && p.TTFTMsP95 > float64(slo.TargetTTFTP95Ms) { + return false + } + if slo.TargetTPOTP95Ms > 0 && p.TPOTMsP95 > float64(slo.TargetTPOTP95Ms) { + return false + } + if slo.TargetDecodeTPSPerUser > 0 && p.DecodeTokensPerSecPerUser < float64(slo.TargetDecodeTPSPerUser) { + return false + } + return true +} + func maxInt(a, b int) int { if a > b { return a diff --git a/internal/webui/dist/assets/index-B43Awbem.js b/internal/webui/dist/assets/index-B43Awbem.js new file mode 100644 index 0000000..73e52b1 --- /dev/null +++ b/internal/webui/dist/assets/index-B43Awbem.js @@ -0,0 +1,50 @@ +var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var l=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function ee(e,t){return E(e.type,t,e.props)}function D(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function O(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var k=/\/+/g;function A(e,t){return typeof e==`object`&&e&&e.key!=null?O(``+e.key):t.toString(36)}function te(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function j(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,j(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+A(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(k,`$&/`)+`/`),j(o,r,i,``,function(e){return e})):o!=null&&(D(o)&&(o=ee(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(k,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u{t.exports=l()})),d=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,D());else{var t=n(l);t!==null&&A(x,t.startTime-e)}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-Tt&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&A(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?D():S=!1}}}var D;if(typeof y==`function`)D=function(){y(ee)};else if(typeof MessageChannel<`u`){var O=new MessageChannel,k=O.port2;O.port1.onmessage=ee,D=function(){k.postMessage(null)}}else D=function(){_(ee,0)};function A(t,n){C=_(function(){t(e.unstable_now())},n)}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(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,A(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,D()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),f=o(((e,t)=>{t.exports=d()})),p=o((e=>{var t=u();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=p()})),h=o((e=>{var t=f(),n=u(),r=m();function i(e){var t=`https://react.dev/errors/`+e;if(1ie||(e.current=re[ie],re[ie]=null,ie--)}function I(e,t){ie++,re[ie]=e.current,e.current=t}var se=ae(null),ce=ae(null),le=ae(null),ue=ae(null);function de(e,t){switch(I(le,t),I(ce,e),I(se,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}oe(se),I(se,e)}function fe(){oe(se),oe(ce),oe(le)}function pe(e){e.memoizedState!==null&&I(ue,e);var t=se.current,n=Hd(t,e.type);t!==n&&(I(ce,e),I(se,n))}function me(e){ce.current===e&&(oe(se),oe(ce)),ue.current===e&&(oe(ue),Qf._currentValue=ne)}var he,ge;function _e(e){if(he===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);he=t&&t[1]||``,ge=-1)`:-1i||c[r]!==l[i]){var u=` +`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{ve=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?_e(n):``}function be(e,t){switch(e.tag){case 26:case 27:case 5:return _e(e.type);case 16:return _e(`Lazy`);case 13:return e.child!==t&&t!==null?_e(`Suspense Fallback`):_e(`Suspense`);case 19:return _e(`SuspenseList`);case 0:case 15:return ye(e.type,!1);case 11:return ye(e.type.render,!1);case 1:return ye(e.type,!0);case 31:return _e(`Activity`);default:return``}}function xe(e){try{var t=``,n=null;do t+=be(e,n),n=e,e=e.return;while(e);return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}var Se=Object.prototype.hasOwnProperty,Ce=t.unstable_scheduleCallback,we=t.unstable_cancelCallback,Te=t.unstable_shouldYield,Ee=t.unstable_requestPaint,De=t.unstable_now,Oe=t.unstable_getCurrentPriorityLevel,ke=t.unstable_ImmediatePriority,Ae=t.unstable_UserBlockingPriority,je=t.unstable_NormalPriority,Me=t.unstable_LowPriority,Ne=t.unstable_IdlePriority,Pe=t.log,Fe=t.unstable_setDisableYieldValue,Ie=null,Le=null;function Re(e){if(typeof Pe==`function`&&Fe(e),Le&&typeof Le.setStrictMode==`function`)try{Le.setStrictMode(Ie,e)}catch{}}var ze=Math.clz32?Math.clz32:L,Be=Math.log,Ve=Math.LN2;function L(e){return e>>>=0,e===0?32:31-(Be(e)/Ve|0)|0}var He=256,Ue=262144,We=4194304;function Ge(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ke(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=Ge(n))):i=Ge(o):i=Ge(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=Ge(n))):i=Ge(o)):i=Ge(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function qe(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Je(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ye(){var e=We;return We<<=1,!(We&62914560)&&(We=4194304),e}function Xe(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Ze(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Qe(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),sn=!1;if(on)try{var cn={};Object.defineProperty(cn,`passive`,{get:function(){sn=!0}}),window.addEventListener(`test`,cn,cn),window.removeEventListener(`test`,cn,cn)}catch{sn=!1}var ln=null,un=null,dn=null;function fn(){if(dn)return dn;var e,t=un,n=t.length,r,i=`value`in ln?ln.value:ln.textContent,a=i.length;for(e=0;e=Wn),qn=` `,Jn=!1;function Yn(e,t){switch(e){case`keyup`:return Hn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function Xn(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var Zn=!1;function Qn(e,t){switch(e){case`compositionend`:return Xn(t);case`keypress`:return t.which===32?(Jn=!0,qn):null;case`textInput`:return e=t.data,e===qn&&Jn?null:e;default:return null}}function $n(e,t){if(Zn)return e===`compositionend`||!Un&&Yn(e,t)?(e=fn(),dn=un=ln=null,Zn=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=xr(n)}}function Cr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Cr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function wr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=It(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=It(e.document)}return t}function Tr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Er=on&&`documentMode`in document&&11>=document.documentMode,Dr=null,Or=null,kr=null,Ar=!1;function jr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Ar||Dr==null||Dr!==It(r)||(r=Dr,`selectionStart`in r&&Tr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),kr&&br(kr,r)||(kr=r,r=Ed(Or,`onSelect`),0>=o,i-=o,Ci=1<<32-ze(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),H&&Ti(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),H&&Ti(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return H&&Ti(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),H&&Ti(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===D&&Ta(l)===r.type){n(e,r.sibling),c=a(r,o.props),Ma(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===y?(c=ui(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=li(o.type,o.key,o.props,null,e.mode,c),Ma(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=pi(o,e.mode,c),c.return=e,e=c}return s(e);case D:return o=Ta(o),b(e,r,o,c)}if(N(o))return h(e,r,o,c);if(te(o)){if(l=te(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,ja(o),c);if(o.$$typeof===C)return b(e,r,$i(e,o),c);Na(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=di(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{Aa=0;var i=b(e,t,n,r);return ka=null,i}catch(t){if(t===ya||t===xa)throw t;var a=ai(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Fa=Pa(!0),Ia=Pa(!1),La=!1;function Ra(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function za(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Ba(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Va(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,K&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=ni(e),ti(e,null,n),t}return Qr(e,r,t,n),ni(e)}function Ha(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,et(e,n)}}function Ua(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Wa=!1;function Ga(){if(Wa){var e=ua;if(e!==null)throw e}}function Ka(e,t,n,r){Wa=!1;var i=e.updateQueue;La=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Y&f)===f:(r&f)===f){f!==0&&f===la&&(Wa=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(m=g.payload,typeof m==`function`){d=m.call(_,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=g.payload,f=typeof m==`function`?m.call(_,d,f):m,f==null)break a;d=h({},d,f);break a;case 2:La=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Gl|=o,e.lanes=o,e.memoizedState=d}}function qa(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function Ja(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=P.T,s={};P.T=s,Ms(e,!1,t,n);try{var c=i(),l=P.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?js(e,t,pa(c,r),pu(e)):js(e,t,r,pu(e))}catch(n){js(e,t,{then:function(){},status:`rejected`,reason:n},pu())}finally{F.p=a,o!==null&&s.types!==null&&(o.types=s.types),P.T=o}}function xs(){}function Ss(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=Cs(e).queue;bs(e,a,t,ne,n===null?xs:function(){return ws(e),n(r)})}function Cs(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ne,baseState:ne,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:No,lastRenderedState:ne},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:No,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function ws(e){var t=Cs(e);t.next===null&&(t=e.alternate.memoizedState),js(e,t.next.queue,{},pu())}function Ts(){return Qi(Qf)}function Es(){return Oo().memoizedState}function Ds(){return Oo().memoizedState}function Os(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=pu();e=Ba(n);var r=Va(t,e,n);r!==null&&(hu(r,t,n),Ha(r,t,n)),t={cache:aa()},e.payload=t;return}t=t.return}}function ks(e,t,n){var r=pu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Ns(e)?Ps(t,n):(n=$r(e,t,n,r),n!==null&&(hu(n,e,r),Fs(n,t,r)))}function As(e,t,n){js(e,t,n,pu())}function js(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ns(e))Ps(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,yr(s,o))return Qr(e,t,i,0),q===null&&Zr(),!1}catch{}if(n=$r(e,t,i,r),n!==null)return hu(n,e,r),Fs(n,t,r),!0}return!1}function Ms(e,t,n,r){if(r={lane:2,revertLane:dd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Ns(e)){if(t)throw Error(i(479))}else t=$r(e,n,r,2),t!==null&&hu(t,e,2)}function Ns(e){var t=e.alternate;return e===W||t!==null&&t===W}function Ps(e,t){fo=uo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Fs(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,et(e,n)}}var Is={readContext:Qi,use:jo,useCallback:vo,useContext:vo,useEffect:vo,useImperativeHandle:vo,useLayoutEffect:vo,useInsertionEffect:vo,useMemo:vo,useReducer:vo,useRef:vo,useState:vo,useDebugValue:vo,useDeferredValue:vo,useTransition:vo,useSyncExternalStore:vo,useId:vo,useHostTransitionStatus:vo,useFormState:vo,useActionState:vo,useOptimistic:vo,useMemoCache:vo,useCacheRefresh:vo};Is.useEffectEvent=vo;var Ls={readContext:Qi,use:jo,useCallback:function(e,t){return Do().memoizedState=[e,t===void 0?null:t],e},useContext:Qi,useEffect:ss,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),as(4194308,4,ps.bind(null,t,e),n)},useLayoutEffect:function(e,t){return as(4194308,4,e,t)},useInsertionEffect:function(e,t){as(4,2,e,t)},useMemo:function(e,t){var n=Do();t=t===void 0?null:t;var r=e();if(po){Re(!0);try{e()}finally{Re(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Do();if(n!==void 0){var i=n(t);if(po){Re(!0);try{n(t)}finally{Re(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=ks.bind(null,W,e),[r.memoizedState,e]},useRef:function(e){var t=Do();return e={current:e},t.memoizedState=e},useState:function(e){e=Uo(e);var t=e.queue,n=As.bind(null,W,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:hs,useDeferredValue:function(e,t){return vs(Do(),e,t)},useTransition:function(){var e=Uo(!1);return e=bs.bind(null,W,e.queue,!0,!1),Do().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=W,a=Do();if(H){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),q===null)throw Error(i(349));Y&127||Ro(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,ss(Bo.bind(null,r,o,e),[e]),r.flags|=2048,rs(9,{destroy:void 0},zo.bind(null,r,o,n,t),null),n},useId:function(){var e=Do(),t=q.identifierPrefix;if(H){var n=wi,r=Ci;n=(r&~(1<<32-ze(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=mo++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[st]=t,o[ct]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Pd(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&jc(t)}}return Ic(t),Mc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&jc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=le.current,Ri(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=Ai,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[st]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Md(e.nodeValue,n)),e||Fi(t,!0)}else e=Bd(e).createTextNode(r),e[st]=t,t.stateNode=e}return Ic(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Ri(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[st]=t}else zi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Ic(t),e=!1}else n=Bi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(oo(t),t):(oo(t),null);if(t.flags&128)throw Error(i(558))}return Ic(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=Ri(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[st]=t}else zi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Ic(t),a=!1}else a=Bi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(oo(t),t):(oo(t),null)}return oo(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Pc(t,t.updateQueue),Ic(t),null);case 4:return fe(),e===null&&Sd(t.stateNode.containerInfo),Ic(t),null;case 10:return Ki(t.type),Ic(t),null;case 19:if(oe(U),r=t.memoizedState,r===null)return Ic(t),null;if(a=(t.flags&128)!=0,o=r.rendering,o===null)if(a)Fc(r,!1);else{if(Wl!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=so(e),o!==null){for(t.flags|=128,Fc(r,!1),e=o.updateQueue,t.updateQueue=e,Pc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)ci(n,e),n=n.sibling;return I(U,U.current&1|2),H&&Ti(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&De()>tu&&(t.flags|=128,a=!0,Fc(r,!1),t.lanes=4194304)}else{if(!a)if(e=so(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Pc(t,e),Fc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!H)return Ic(t),null}else 2*De()-r.renderingStartTime>tu&&n!==536870912&&(t.flags|=128,a=!0,Fc(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(Ic(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=De(),e.sibling=null,n=U.current,I(U,a?n&1|2:n&1),H&&Ti(t,r.treeForkCount),e);case 22:case 23:return oo(t),$a(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(Ic(t),t.subtreeFlags&6&&(t.flags|=8192)):Ic(t),n=t.updateQueue,n!==null&&Pc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&oe(ha),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Ki(ia),Ic(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function Rc(e,t){switch(Oi(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ki(ia),fe(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return me(t),null;case 31:if(t.memoizedState!==null){if(oo(t),t.alternate===null)throw Error(i(340));zi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(oo(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));zi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return oe(U),null;case 4:return fe(),null;case 10:return Ki(t.type),null;case 22:case 23:return oo(t),$a(),e!==null&&oe(ha),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Ki(ia),null;case 25:return null;default:return null}}function zc(e,t){switch(Oi(t),t.tag){case 3:Ki(ia),fe();break;case 26:case 27:case 5:me(t);break;case 4:fe();break;case 31:t.memoizedState!==null&&oo(t);break;case 13:oo(t);break;case 19:oe(U);break;case 10:Ki(t.type);break;case 22:case 23:oo(t),$a(),e!==null&&oe(ha);break;case 24:Ki(ia)}}function Bc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Vc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Hc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Ja(t,n)}catch(t){Z(e,e.return,t)}}}function Uc(e,t,n){n.props=Ws(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Wc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Gc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}function Kc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Z(e,e.return,t)}}function qc(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[ct]=t}catch(t){Z(e,e.return,t)}}function Jc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function Yc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Jc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Xc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=B));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Xc(e,t,n),e=e.sibling;e!==null;)Xc(e,t,n),e=e.sibling}function Zc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Zc(e,t,n),e=e.sibling;e!==null;)Zc(e,t,n),e=e.sibling}function Qc(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[st]=e,t[ct]=n}catch(t){Z(e,e.return,t)}}var $c=!1,el=!1,tl=!1,nl=typeof WeakSet==`function`?WeakSet:Set,rl=null;function il(e,t){if(e=e.containerInfo,Rd=sp,e=wr(e),Tr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(zd={focusedElem:e,selectionRange:n},sp=!1,rl=t;rl!==null;)if(t=rl,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,rl=e;else for(;rl!==null;){switch(t=rl,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Pd(o,r,n),o[st]=e,bt(o),r=o;break a;case`link`:var s=Vf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=Sr(s,h),v=Sr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,P.T=null,n=lu,lu=null;var o=au,s=su;if(iu=0,ou=au=null,su=0,K&6)throw Error(i(331));var c=K;if(K|=4,Pl(o.current),El(o,o.current,s,n),K=c,id(0,!1),Le&&typeof Le.onPostCommitFiberRoot==`function`)try{Le.onPostCommitFiberRoot(Ie,o)}catch{}return!0}finally{F.p=a,P.T=r,Vu(e,t)}}function Wu(e,t,n){t=hi(n,t),t=Xs(e.stateNode,t,2),e=Va(e,t,2),e!==null&&(Ze(e,2),rd(e))}function Z(e,t,n){if(e.tag===3)Wu(e,e,n);else for(;t!==null;){if(t.tag===3){Wu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(ru===null||!ru.has(r))){e=hi(n,e),n=Zs(2),r=Va(t,n,2),r!==null&&(Qs(n,r,t,e),Ze(r,2),rd(r));break}}t=t.return}}function Gu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Rl;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Hl=!0,i.add(n),e=Ku.bind(null,e,t,n),t.then(e,e))}function Ku(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,q===e&&(Y&n)===n&&(Wl===4||Wl===3&&(Y&62914560)===Y&&300>De()-$l?!(K&2)&&Su(e,0):ql|=n,Yl===Y&&(Yl=0)),rd(e)}function qu(e,t){t===0&&(t=Ye()),e=ei(e,t),e!==null&&(Ze(e,t),rd(e))}function Ju(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),qu(e,n)}function Yu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),qu(e,n)}function Xu(e,t){return Ce(e,t)}var Zu=null,Qu=null,$u=!1,ed=!1,td=!1,nd=0;function rd(e){e!==Qu&&e.next===null&&(Qu===null?Zu=Qu=e:Qu=Qu.next=e),ed=!0,$u||($u=!0,ud())}function id(e,t){if(!td&&ed){td=!0;do for(var n=!1,r=Zu;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-ze(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,ld(r,a))}else a=Y,a=Ke(r,r===q?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||qe(r,a)||(n=!0,ld(r,a));r=r.next}while(n);td=!1}}function ad(){od()}function od(){ed=$u=!1;var e=0;nd!==0&&Gd()&&(e=nd);for(var t=De(),n=null,r=Zu;r!==null;){var i=r.next,a=sd(r,t);a===0?(r.next=null,n===null?Zu=i:n.next=i,i===null&&(Qu=n)):(n=r,(e!==0||a&3)&&(ed=!0)),r=i}iu!==0&&iu!==5||id(e,!1),nd!==0&&(nd=0)}function sd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&Id(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=z(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),bt(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+z(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+z(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+z(n.imageSizes)+`"]`)):i+=`[href="`+z(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=h({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),bt(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+z(r)+`"][href="`+z(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=h({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),bt(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=yt(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=h({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);bt(c),Pd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=yt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),bt(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=yt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),bt(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var a=(a=le.current)?gf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=yt(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var o=yt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(jf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),o||Nf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=yt(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Af(e){return`href="`+z(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return h({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Pd(t,`link`,n),bt(t),e.head.appendChild(t))}function Pf(e){return`[src="`+z(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+z(n.href)+`"]`);if(r)return t.instance=r,bt(r),r;var a=h({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),bt(r),Pd(r,`style`,a),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Af(n.href);var o=e.querySelector(jf(a));if(o)return t.state.loading|=4,t.instance=o,bt(o),o;r=Mf(n),(a=mf.get(a))&&Rf(r,a),o=(e.ownerDocument||e).createElement(`link`),bt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Pd(o,`link`,r),t.state.loading|=4,Lf(o,n.precedence,e),t.instance=o;case`script`:return o=Pf(n.src),(a=e.querySelector(Ff(o)))?(t.instance=a,bt(a),a):(r=n,(a=mf.get(o))&&(r=h({},n),zf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),bt(a),Pd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,bt(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),bt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()})),_=c(u(),1),v=g(),y=c(m(),1),b=e=>{switch(e){case`success`:return C;case`info`:return T;case`warning`:return w;case`error`:return E;default:return null}},x=Array(12).fill(0),S=({visible:e,className:t})=>_.createElement(`div`,{className:[`sonner-loading-wrapper`,t].filter(Boolean).join(` `),"data-visible":e},_.createElement(`div`,{className:`sonner-spinner`},x.map((e,t)=>_.createElement(`div`,{className:`sonner-loading-bar`,key:`spinner-bar-${t}`})))),C=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},_.createElement(`path`,{fillRule:`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z`,clipRule:`evenodd`})),w=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,height:`20`,width:`20`},_.createElement(`path`,{fillRule:`evenodd`,d:`M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z`,clipRule:`evenodd`})),T=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},_.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z`,clipRule:`evenodd`})),E=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},_.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z`,clipRule:`evenodd`})),ee=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`},_.createElement(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),_.createElement(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})),D=()=>{let[e,t]=_.useState(document.hidden);return _.useEffect(()=>{let e=()=>{t(document.hidden)};return document.addEventListener(`visibilitychange`,e),()=>window.removeEventListener(`visibilitychange`,e)},[]),e},O=1,k=new class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)}),this.publish=e=>{this.subscribers.forEach(t=>t(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{let{message:t,...n}=e,r=typeof e?.id==`number`||e.id?.length>0?e.id:O++,i=this.toasts.find(e=>e.id===r),a=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),i?this.toasts=this.toasts.map(n=>n.id===r?(this.publish({...n,...e,id:r,title:t}),{...n,...e,id:r,dismissible:a,title:t}):n):this.addToast({title:t,...n,dismissible:a,id:r}),r},this.dismiss=e=>(this.dismissedToasts.add(e),e||this.toasts.forEach(e=>{this.subscribers.forEach(t=>t({id:e.id,dismiss:!0}))}),this.subscribers.forEach(t=>t({id:e,dismiss:!0})),e),this.message=(e,t)=>this.create({...t,message:e}),this.error=(e,t)=>this.create({...t,message:e,type:`error`}),this.success=(e,t)=>this.create({...t,type:`success`,message:e}),this.info=(e,t)=>this.create({...t,type:`info`,message:e}),this.warning=(e,t)=>this.create({...t,type:`warning`,message:e}),this.loading=(e,t)=>this.create({...t,type:`loading`,message:e}),this.promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:`loading`,message:t.loading,description:typeof t.description==`function`?void 0:t.description}));let r=e instanceof Promise?e:e(),i=n!==void 0,a,o=r.then(async e=>{if(a=[`resolve`,e],_.isValidElement(e))i=!1,this.create({id:n,type:`default`,message:e});else if(te(e)&&!e.ok){i=!1;let r=typeof t.error==`function`?await t.error(`HTTP error! status: ${e.status}`):t.error,a=typeof t.description==`function`?await t.description(`HTTP error! status: ${e.status}`):t.description;this.create({id:n,type:`error`,message:r,description:a})}else if(t.success!==void 0){i=!1;let r=typeof t.success==`function`?await t.success(e):t.success,a=typeof t.description==`function`?await t.description(e):t.description;this.create({id:n,type:`success`,message:r,description:a})}}).catch(async e=>{if(a=[`reject`,e],t.error!==void 0){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description;this.create({id:n,type:`error`,message:r,description:a})}}).finally(()=>{var e;i&&(this.dismiss(n),n=void 0),(e=t.finally)==null||e.call(t)}),s=()=>new Promise((e,t)=>o.then(()=>a[0]===`reject`?t(a[1]):e(a[1])).catch(t));return typeof n!=`string`&&typeof n!=`number`?{unwrap:s}:Object.assign(n,{unwrap:s})},this.custom=(e,t)=>{let n=t?.id||O++;return this.create({jsx:e(n),id:n,...t}),n},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},A=(e,t)=>{let n=t?.id||O++;return k.addToast({title:e,...t,id:n}),n},te=e=>e&&typeof e==`object`&&`ok`in e&&typeof e.ok==`boolean`&&`status`in e&&typeof e.status==`number`,j=Object.assign(A,{success:k.success,info:k.info,warning:k.warning,error:k.error,custom:k.custom,message:k.message,promise:k.promise,dismiss:k.dismiss,loading:k.loading},{getHistory:()=>k.toasts,getToasts:()=>k.getActiveToasts()});function M(e,{insertAt:t}={}){if(!e||typeof document>`u`)return;let n=document.head||document.getElementsByTagName(`head`)[0],r=document.createElement(`style`);r.type=`text/css`,t===`top`&&n.firstChild?n.insertBefore(r,n.firstChild):n.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}M(`:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)} +`);function N(e){return e.label!==void 0}var P=3,F=`32px`,ne=`16px`,re=4e3,ie=356,ae=14,oe=20,I=200;function se(...e){return e.filter(Boolean).join(` `)}function ce(e){let[t,n]=e.split(`-`),r=[];return t&&r.push(t),n&&r.push(n),r}var le=e=>{let{invert:t,toast:n,unstyled:r,interacting:i,setHeights:a,visibleToasts:o,heights:s,index:c,toasts:l,expanded:u,removeToast:d,defaultRichColors:f,closeButton:p,style:m,cancelButtonStyle:h,actionButtonStyle:g,className:v=``,descriptionClassName:y=``,duration:x,position:C,gap:w,loadingIcon:T,expandByDefault:E,classNames:O,icons:k,closeButtonAriaLabel:A=`Close toast`,pauseWhenPageIsHidden:te}=e,[j,M]=_.useState(null),[P,F]=_.useState(null),[ne,ie]=_.useState(!1),[ae,le]=_.useState(!1),[ue,de]=_.useState(!1),[fe,pe]=_.useState(!1),[me,he]=_.useState(!1),[ge,_e]=_.useState(0),[ve,ye]=_.useState(0),be=_.useRef(n.duration||x||re),xe=_.useRef(null),Se=_.useRef(null),Ce=c===0,we=c+1<=o,Te=n.type,Ee=n.dismissible!==!1,De=n.className||``,Oe=n.descriptionClassName||``,ke=_.useMemo(()=>s.findIndex(e=>e.toastId===n.id)||0,[s,n.id]),Ae=_.useMemo(()=>n.closeButton??p,[n.closeButton,p]),je=_.useMemo(()=>n.duration||x||re,[n.duration,x]),Me=_.useRef(0),Ne=_.useRef(0),Pe=_.useRef(0),Fe=_.useRef(null),[Ie,Le]=C.split(`-`),Re=_.useMemo(()=>s.reduce((e,t,n)=>n>=ke?e:e+t.height,0),[s,ke]),ze=D(),Be=n.invert||t,Ve=Te===`loading`;Ne.current=_.useMemo(()=>ke*w+Re,[ke,Re]),_.useEffect(()=>{be.current=je},[je]),_.useEffect(()=>{ie(!0)},[]),_.useEffect(()=>{let e=Se.current;if(e){let t=e.getBoundingClientRect().height;return ye(t),a(e=>[{toastId:n.id,height:t,position:n.position},...e]),()=>a(e=>e.filter(e=>e.toastId!==n.id))}},[a,n.id]),_.useLayoutEffect(()=>{if(!ne)return;let e=Se.current,t=e.style.height;e.style.height=`auto`;let r=e.getBoundingClientRect().height;e.style.height=t,ye(r),a(e=>e.find(e=>e.toastId===n.id)?e.map(e=>e.toastId===n.id?{...e,height:r}:e):[{toastId:n.id,height:r,position:n.position},...e])},[ne,n.title,n.description,a,n.id]);let L=_.useCallback(()=>{le(!0),_e(Ne.current),a(e=>e.filter(e=>e.toastId!==n.id)),setTimeout(()=>{d(n)},I)},[n,d,a,Ne]);_.useEffect(()=>{if(n.promise&&Te===`loading`||n.duration===1/0||n.type===`loading`)return;let e;return u||i||te&&ze?(()=>{if(Pe.current{var e;(e=n.onAutoClose)==null||e.call(n,n),L()},be.current)),()=>clearTimeout(e)},[u,i,n,Te,te,ze,L]),_.useEffect(()=>{n.delete&&L()},[L,n.delete]);function He(){return k!=null&&k.loading?_.createElement(`div`,{className:se(O?.loader,n?.classNames?.loader,`sonner-loader`),"data-visible":Te===`loading`},k.loading):T?_.createElement(`div`,{className:se(O?.loader,n?.classNames?.loader,`sonner-loader`),"data-visible":Te===`loading`},T):_.createElement(S,{className:se(O?.loader,n?.classNames?.loader),visible:Te===`loading`})}return _.createElement(`li`,{tabIndex:0,ref:Se,className:se(v,De,O?.toast,n?.classNames?.toast,O?.default,O?.[Te],n?.classNames?.[Te]),"data-sonner-toast":``,"data-rich-colors":n.richColors??f,"data-styled":!(n.jsx||n.unstyled||r),"data-mounted":ne,"data-promise":!!n.promise,"data-swiped":me,"data-removed":ae,"data-visible":we,"data-y-position":Ie,"data-x-position":Le,"data-index":c,"data-front":Ce,"data-swiping":ue,"data-dismissible":Ee,"data-type":Te,"data-invert":Be,"data-swipe-out":fe,"data-swipe-direction":P,"data-expanded":!!(u||E&&ne),style:{"--index":c,"--toasts-before":c,"--z-index":l.length-c,"--offset":`${ae?ge:Ne.current}px`,"--initial-height":E?`auto`:`${ve}px`,...m,...n.style},onDragEnd:()=>{de(!1),M(null),Fe.current=null},onPointerDown:e=>{Ve||!Ee||(xe.current=new Date,_e(Ne.current),e.target.setPointerCapture(e.pointerId),e.target.tagName!==`BUTTON`&&(de(!0),Fe.current={x:e.clientX,y:e.clientY}))},onPointerUp:()=>{var e;if(fe||!Ee)return;Fe.current=null;let t=Number(Se.current?.style.getPropertyValue(`--swipe-amount-x`).replace(`px`,``)||0),r=Number(Se.current?.style.getPropertyValue(`--swipe-amount-y`).replace(`px`,``)||0),i=new Date().getTime()-xe.current?.getTime(),a=j===`x`?t:r,o=Math.abs(a)/i;if(Math.abs(a)>=oe||o>.11){_e(Ne.current),(e=n.onDismiss)==null||e.call(n,n),F(j===`x`?t>0?`right`:`left`:r>0?`down`:`up`),L(),pe(!0),he(!1);return}de(!1),M(null)},onPointerMove:t=>{var n,r;if(!Fe.current||!Ee||window.getSelection()?.toString().length>0)return;let i=t.clientY-Fe.current.y,a=t.clientX-Fe.current.x,o=e.swipeDirections??ce(C);!j&&(Math.abs(a)>1||Math.abs(i)>1)&&M(Math.abs(a)>Math.abs(i)?`x`:`y`);let s={x:0,y:0};j===`y`?(o.includes(`top`)||o.includes(`bottom`))&&(o.includes(`top`)&&i<0||o.includes(`bottom`)&&i>0)&&(s.y=i):j===`x`&&(o.includes(`left`)||o.includes(`right`))&&(o.includes(`left`)&&a<0||o.includes(`right`)&&a>0)&&(s.x=a),(Math.abs(s.x)>0||Math.abs(s.y)>0)&&he(!0),(n=Se.current)==null||n.style.setProperty(`--swipe-amount-x`,`${s.x}px`),(r=Se.current)==null||r.style.setProperty(`--swipe-amount-y`,`${s.y}px`)}},Ae&&!n.jsx?_.createElement(`button`,{"aria-label":A,"data-disabled":Ve,"data-close-button":!0,onClick:Ve||!Ee?()=>{}:()=>{var e;L(),(e=n.onDismiss)==null||e.call(n,n)},className:se(O?.closeButton,n?.classNames?.closeButton)},k?.close??ee):null,n.jsx||(0,_.isValidElement)(n.title)?n.jsx?n.jsx:typeof n.title==`function`?n.title():n.title:_.createElement(_.Fragment,null,Te||n.icon||n.promise?_.createElement(`div`,{"data-icon":``,className:se(O?.icon,n?.classNames?.icon)},n.promise||n.type===`loading`&&!n.icon?n.icon||He():null,n.type===`loading`?null:n.icon||k?.[Te]||b(Te)):null,_.createElement(`div`,{"data-content":``,className:se(O?.content,n?.classNames?.content)},_.createElement(`div`,{"data-title":``,className:se(O?.title,n?.classNames?.title)},typeof n.title==`function`?n.title():n.title),n.description?_.createElement(`div`,{"data-description":``,className:se(y,Oe,O?.description,n?.classNames?.description)},typeof n.description==`function`?n.description():n.description):null),(0,_.isValidElement)(n.cancel)?n.cancel:n.cancel&&N(n.cancel)?_.createElement(`button`,{"data-button":!0,"data-cancel":!0,style:n.cancelButtonStyle||h,onClick:e=>{var t,r;N(n.cancel)&&Ee&&((r=(t=n.cancel).onClick)==null||r.call(t,e),L())},className:se(O?.cancelButton,n?.classNames?.cancelButton)},n.cancel.label):null,(0,_.isValidElement)(n.action)?n.action:n.action&&N(n.action)?_.createElement(`button`,{"data-button":!0,"data-action":!0,style:n.actionButtonStyle||g,onClick:e=>{var t,r;N(n.action)&&((r=(t=n.action).onClick)==null||r.call(t,e),!e.defaultPrevented&&L())},className:se(O?.actionButton,n?.classNames?.actionButton)},n.action.label):null))};function ue(){if(typeof window>`u`||typeof document>`u`)return`ltr`;let e=document.documentElement.getAttribute(`dir`);return e===`auto`||!e?window.getComputedStyle(document.documentElement).direction:e}function de(e,t){let n={};return[e,t].forEach((e,t)=>{let r=t===1,i=r?`--mobile-offset`:`--offset`,a=r?ne:F;function o(e){[`top`,`right`,`bottom`,`left`].forEach(t=>{n[`${i}-${t}`]=typeof e==`number`?`${e}px`:e})}typeof e==`number`||typeof e==`string`?o(e):typeof e==`object`?[`top`,`right`,`bottom`,`left`].forEach(t=>{e[t]===void 0?n[`${i}-${t}`]=a:n[`${i}-${t}`]=typeof e[t]==`number`?`${e[t]}px`:e[t]}):o(a)}),n}var fe=(0,_.forwardRef)(function(e,t){let{invert:n,position:r=`bottom-right`,hotkey:i=[`altKey`,`KeyT`],expand:a,closeButton:o,className:s,offset:c,mobileOffset:l,theme:u=`light`,richColors:d,duration:f,style:p,visibleToasts:m=P,toastOptions:h,dir:g=ue(),gap:v=ae,loadingIcon:b,icons:x,containerAriaLabel:S=`Notifications`,pauseWhenPageIsHidden:C}=e,[w,T]=_.useState([]),E=_.useMemo(()=>Array.from(new Set([r].concat(w.filter(e=>e.position).map(e=>e.position)))),[w,r]),[ee,D]=_.useState([]),[O,A]=_.useState(!1),[te,j]=_.useState(!1),[M,N]=_.useState(u===`system`?typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`:u),F=_.useRef(null),ne=i.join(`+`).replace(/Key/g,``).replace(/Digit/g,``),re=_.useRef(null),oe=_.useRef(!1),I=_.useCallback(e=>{T(t=>{var n;return(n=t.find(t=>t.id===e.id))!=null&&n.delete||k.dismiss(e.id),t.filter(({id:t})=>t!==e.id)})},[]);return _.useEffect(()=>k.subscribe(e=>{if(e.dismiss){T(t=>t.map(t=>t.id===e.id?{...t,delete:!0}:t));return}setTimeout(()=>{y.flushSync(()=>{T(t=>{let n=t.findIndex(t=>t.id===e.id);return n===-1?[e,...t]:[...t.slice(0,n),{...t[n],...e},...t.slice(n+1)]})})})}),[]),_.useEffect(()=>{if(u!==`system`){N(u);return}if(u===`system`&&(window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?N(`dark`):N(`light`)),typeof window>`u`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`);try{e.addEventListener(`change`,({matches:e})=>{N(e?`dark`:`light`)})}catch{e.addListener(({matches:e})=>{try{N(e?`dark`:`light`)}catch(e){console.error(e)}})}},[u]),_.useEffect(()=>{w.length<=1&&A(!1)},[w]),_.useEffect(()=>{let e=e=>{var t,n;i.every(t=>e[t]||e.code===t)&&(A(!0),(t=F.current)==null||t.focus()),e.code===`Escape`&&(document.activeElement===F.current||(n=F.current)!=null&&n.contains(document.activeElement))&&A(!1)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[i]),_.useEffect(()=>{if(F.current)return()=>{re.current&&(re.current.focus({preventScroll:!0}),re.current=null,oe.current=!1)}},[F.current]),_.createElement(`section`,{ref:t,"aria-label":`${S} ${ne}`,tabIndex:-1,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-atomic":`false`,suppressHydrationWarning:!0},E.map((t,r)=>{let[i,u]=t.split(`-`);return w.length?_.createElement(`ol`,{key:t,dir:g===`auto`?ue():g,tabIndex:-1,ref:F,className:s,"data-sonner-toaster":!0,"data-theme":M,"data-y-position":i,"data-lifted":O&&w.length>1&&!a,"data-x-position":u,style:{"--front-toast-height":`${ee[0]?.height||0}px`,"--width":`${ie}px`,"--gap":`${v}px`,...p,...de(c,l)},onBlur:e=>{oe.current&&!e.currentTarget.contains(e.relatedTarget)&&(oe.current=!1,re.current&&=(re.current.focus({preventScroll:!0}),null))},onFocus:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||oe.current||(oe.current=!0,re.current=e.relatedTarget)},onMouseEnter:()=>A(!0),onMouseMove:()=>A(!0),onMouseLeave:()=>{te||A(!1)},onDragEnd:()=>A(!1),onPointerDown:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||j(!0)},onPointerUp:()=>j(!1)},w.filter(e=>!e.position&&r===0||e.position===t).map((r,i)=>_.createElement(le,{key:r.id,icons:x,index:i,toast:r,defaultRichColors:d,duration:h?.duration??f,className:h?.className,descriptionClassName:h?.descriptionClassName,invert:n,visibleToasts:m,closeButton:h?.closeButton??o,interacting:te,position:t,style:h?.style,unstyled:h?.unstyled,classNames:h?.classNames,cancelButtonStyle:h?.cancelButtonStyle,actionButtonStyle:h?.actionButtonStyle,removeToast:I,toasts:w.filter(e=>e.position==r.position),heights:ee.filter(e=>e.position==r.position),setHeights:D,expandByDefault:a,gap:v,loadingIcon:b,expanded:O,pauseWhenPageIsHidden:C,swipeDirections:e.swipeDirections}))):null}))}),pe=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),me=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),he={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},ge=(0,_.forwardRef)(({color:e=`currentColor`,size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>(0,_.createElement)(`svg`,{ref:c,...he,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:me(`lucide`,i),...s},[...o.map(([e,t])=>(0,_.createElement)(e,t)),...Array.isArray(a)?a:[a]])),_e=(e,t)=>{let n=(0,_.forwardRef)(({className:n,...r},i)=>(0,_.createElement)(ge,{ref:i,iconNode:t,className:me(`lucide-${pe(e)}`,n),...r}));return n.displayName=`${e}`,n},ve=_e(`Check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),ye=_e(`ChevronDown`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),be=_e(`ChevronUp`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),xe=_e(`Copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),Se=_e(`EyeOff`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),Ce=_e(`Eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),we=_e(`Info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),Te=_e(`Moon`,[[`path`,{d:`M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z`,key:`a7tn18`}]]),Ee=_e(`Plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),De=_e(`RotateCcw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),Oe=_e(`Settings2`,[[`path`,{d:`M20 7h-9`,key:`3s1dr2`}],[`path`,{d:`M14 17H5`,key:`gfn3mx`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}],[`circle`,{cx:`7`,cy:`7`,r:`3`,key:`dfmy0x`}]]),ke=_e(`Share2`,[[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}],[`circle`,{cx:`6`,cy:`12`,r:`3`,key:`w7nqdw`}],[`circle`,{cx:`18`,cy:`19`,r:`3`,key:`1xt0gg`}],[`line`,{x1:`8.59`,x2:`15.42`,y1:`13.51`,y2:`17.49`,key:`47mynk`}],[`line`,{x1:`15.41`,x2:`8.59`,y1:`6.51`,y2:`10.49`,key:`1n3mei`}]]),Ae=_e(`Sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),je=_e(`Trash2`,[[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6`,key:`4alrt4`}],[`path`,{d:`M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2`,key:`v07s0e`}],[`line`,{x1:`10`,x2:`10`,y1:`11`,y2:`17`,key:`1uufr5`}],[`line`,{x1:`14`,x2:`14`,y1:`11`,y2:`17`,key:`xtxkd`}]]),Me=_e(`X`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);async function Ne(e,t){let n=await fetch(`/api/v1/fit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),signal:t}),r=await n.json();if(!n.ok){let e=r.error?`${r.error.code}: ${r.error.message}`:`HTTP ${n.status}`;throw Error(e)}return r}async function Pe(){return(await(await fetch(`/api/v1/gpus`)).json()).gpus}var Fe=`fit:`;function Ie(e,t){try{let n=localStorage.getItem(Fe+e);return n?JSON.parse(n):t}catch{return t}}function Le(e,t){try{localStorage.setItem(Fe+e,JSON.stringify(t))}catch{}}function Re(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function ze(...e){return t=>{let n=!1,r=e.map(e=>{let r=Re(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;t{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),L=o(((e,t)=>{t.exports=Ve()}))(),He=Symbol.for(`react.lazy`),Ue=_.use;function We(e){return typeof e==`object`&&!!e&&`then`in e}function Ge(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===He&&`_payload`in e&&We(e._payload)}function Ke(e){let t=Je(e),n=_.forwardRef((e,n)=>{let{children:r,...i}=e;Ge(r)&&typeof Ue==`function`&&(r=Ue(r._payload));let a=_.Children.toArray(r),o=a.find(Xe);if(o){let e=o.props.children,r=a.map(t=>t===o?_.Children.count(e)>1?_.Children.only(null):_.isValidElement(e)?e.props.children:null:t);return(0,L.jsx)(t,{...i,ref:n,children:_.isValidElement(e)?_.cloneElement(e,void 0,r):null})}return(0,L.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}var qe=Ke(`Slot`);function Je(e){let t=_.forwardRef((e,t)=>{let{children:n,...r}=e;if(Ge(n)&&typeof Ue==`function`&&(n=Ue(n._payload)),_.isValidElement(n)){let e=Qe(n),i=Ze(r,n.props);return n.type!==_.Fragment&&(i.ref=t?ze(t,e):e),_.cloneElement(n,i)}return _.Children.count(n)>1?_.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Ye=Symbol(`radix.slottable`);function Xe(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===Ye}function Ze(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function Qe(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function $e(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e==`boolean`?`${e}`:e===0?`0`:e,nt=et,rt=(e,t)=>n=>{if(t?.variants==null)return nt(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=tt(t)||tt(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return nt(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},it=`-`,at=e=>{let t=lt(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{let n=e.split(it);return n[0]===``&&n.length!==1&&n.shift(),ot(n,t)||ct(e)},getConflictingClassGroupIds:(e,t)=>{let i=n[e]||[];return t&&r[e]?[...i,...r[e]]:i}}},ot=(e,t)=>{if(e.length===0)return t.classGroupId;let n=e[0],r=t.nextPart.get(n),i=r?ot(e.slice(1),r):void 0;if(i)return i;if(t.validators.length===0)return;let a=e.join(it);return t.validators.find(({validator:e})=>e(a))?.classGroupId},st=/^\[(.+)\]$/,ct=e=>{if(st.test(e)){let t=st.exec(e)[1],n=t?.substring(0,t.indexOf(`:`));if(n)return`arbitrary..`+n}},lt=e=>{let{theme:t,prefix:n}=e,r={nextPart:new Map,validators:[]};return pt(Object.entries(e.classGroups),n).forEach(([e,n])=>{ut(n,r,e,t)}),r},ut=(e,t,n,r)=>{e.forEach(e=>{if(typeof e==`string`){let r=e===``?t:dt(t,e);r.classGroupId=n;return}if(typeof e==`function`){if(ft(e)){ut(e(r),t,n,r);return}t.validators.push({validator:e,classGroupId:n});return}Object.entries(e).forEach(([e,i])=>{ut(i,dt(t,e),n,r)})})},dt=(e,t)=>{let n=e;return t.split(it).forEach(e=>{n.nextPart.has(e)||n.nextPart.set(e,{nextPart:new Map,validators:[]}),n=n.nextPart.get(e)}),n},ft=e=>e.isThemeGetter,pt=(e,t)=>t?e.map(([e,n])=>[e,n.map(e=>typeof e==`string`?t+e:typeof e==`object`?Object.fromEntries(Object.entries(e).map(([e,n])=>[t+e,n])):e)]):e,mt=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=new Map,r=new Map,i=(i,a)=>{n.set(i,a),t++,t>e&&(t=0,r=n,n=new Map)};return{get(e){let t=n.get(e);if(t!==void 0)return t;if((t=r.get(e))!==void 0)return i(e,t),t},set(e,t){n.has(e)?n.set(e,t):i(e,t)}}},ht=`!`,gt=e=>{let{separator:t,experimentalParseClassName:n}=e,r=t.length===1,i=t[0],a=t.length,o=e=>{let n=[],o=0,s=0,c;for(let l=0;ls?c-s:void 0}};return n?e=>n({className:e,parseClassName:o}):o},_t=e=>{if(e.length<=1)return e;let t=[],n=[];return e.forEach(e=>{e[0]===`[`?(t.push(...n.sort(),e),n=[]):n.push(e)}),t.push(...n.sort()),t},vt=e=>({cache:mt(e.cacheSize),parseClassName:gt(e),...at(e)}),yt=/\s+/,bt=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i}=t,a=[],o=e.trim().split(yt),s=``;for(let e=o.length-1;e>=0;--e){let t=o[e],{modifiers:c,hasImportantModifier:l,baseClassName:u,maybePostfixModifierPosition:d}=n(t),f=!!d,p=r(f?u.substring(0,d):u);if(!p){if(!f){s=t+(s.length>0?` `+s:s);continue}if(p=r(u),!p){s=t+(s.length>0?` `+s:s);continue}f=!1}let m=_t(c).join(`:`),h=l?m+ht:m,g=h+p;if(a.includes(g))continue;a.push(g);let _=i(p,f);for(let e=0;e<_.length;++e){let t=_[e];a.push(h+t)}s=t+(s.length>0?` `+s:s)}return s};function xt(){let e=0,t,n,r=``;for(;e{if(typeof e==`string`)return e;let t,n=``;for(let r=0;rt(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)}function s(e){let t=r(e);if(t)return t;let a=bt(e,n);return i(e,a),a}return function(){return a(xt.apply(null,arguments))}}var R=e=>{let t=t=>t[e]||[];return t.isThemeGetter=!0,t},wt=/^\[(?:([a-z-]+):)?(.+)\]$/i,Tt=/^\d+\/\d+$/,Et=new Set([`px`,`full`,`screen`]),Dt=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Ot=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,kt=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,At=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,jt=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Mt=e=>Pt(e)||Et.has(e)||Tt.test(e),Nt=e=>Kt(e,`length`,qt),Pt=e=>!!e&&!Number.isNaN(Number(e)),Ft=e=>Kt(e,`number`,Pt),It=e=>!!e&&Number.isInteger(Number(e)),Lt=e=>e.endsWith(`%`)&&Pt(e.slice(0,-1)),z=e=>wt.test(e),Rt=e=>Dt.test(e),zt=new Set([`length`,`size`,`percentage`]),Bt=e=>Kt(e,zt,Jt),Vt=e=>Kt(e,`position`,Jt),Ht=new Set([`image`,`url`]),Ut=e=>Kt(e,Ht,Xt),Wt=e=>Kt(e,``,Yt),Gt=()=>!0,Kt=(e,t,n)=>{let r=wt.exec(e);return r?r[1]?typeof t==`string`?r[1]===t:t.has(r[1]):n(r[2]):!1},qt=e=>Ot.test(e)&&!kt.test(e),Jt=()=>!1,Yt=e=>At.test(e),Xt=e=>jt.test(e),Zt=Ct(()=>{let e=R(`colors`),t=R(`spacing`),n=R(`blur`),r=R(`brightness`),i=R(`borderColor`),a=R(`borderRadius`),o=R(`borderSpacing`),s=R(`borderWidth`),c=R(`contrast`),l=R(`grayscale`),u=R(`hueRotate`),d=R(`invert`),f=R(`gap`),p=R(`gradientColorStops`),m=R(`gradientColorStopPositions`),h=R(`inset`),g=R(`margin`),_=R(`opacity`),v=R(`padding`),y=R(`saturate`),b=R(`scale`),x=R(`sepia`),S=R(`skew`),C=R(`space`),w=R(`translate`),T=()=>[`auto`,`contain`,`none`],E=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],ee=()=>[`auto`,z,t],D=()=>[z,t],O=()=>[``,Mt,Nt],k=()=>[`auto`,Pt,z],A=()=>[`bottom`,`center`,`left`,`left-bottom`,`left-top`,`right`,`right-bottom`,`right-top`,`top`],te=()=>[`solid`,`dashed`,`dotted`,`double`,`none`],j=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],M=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`],N=()=>[``,`0`,z],P=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],F=()=>[Pt,z];return{cacheSize:500,separator:`:`,theme:{colors:[Gt],spacing:[Mt,Nt],blur:[`none`,``,Rt,z],brightness:F(),borderColor:[e],borderRadius:[`none`,``,`full`,Rt,z],borderSpacing:D(),borderWidth:O(),contrast:F(),grayscale:N(),hueRotate:F(),invert:N(),gap:D(),gradientColorStops:[e],gradientColorStopPositions:[Lt,Nt],inset:ee(),margin:ee(),opacity:F(),padding:D(),saturate:F(),scale:F(),sepia:N(),skew:F(),space:D(),translate:D()},classGroups:{aspect:[{aspect:[`auto`,`square`,`video`,z]}],container:[`container`],columns:[{columns:[Rt]}],"break-after":[{"break-after":P()}],"break-before":[{"break-before":P()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:[...A(),z]}],overflow:[{overflow:E()}],"overflow-x":[{"overflow-x":E()}],"overflow-y":[{"overflow-y":E()}],overscroll:[{overscroll:T()}],"overscroll-x":[{"overscroll-x":T()}],"overscroll-y":[{"overscroll-y":T()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:[h]}],"inset-x":[{"inset-x":[h]}],"inset-y":[{"inset-y":[h]}],start:[{start:[h]}],end:[{end:[h]}],top:[{top:[h]}],right:[{right:[h]}],bottom:[{bottom:[h]}],left:[{left:[h]}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[`auto`,It,z]}],basis:[{basis:ee()}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`wrap`,`wrap-reverse`,`nowrap`]}],flex:[{flex:[`1`,`auto`,`initial`,`none`,z]}],grow:[{grow:N()}],shrink:[{shrink:N()}],order:[{order:[`first`,`last`,`none`,It,z]}],"grid-cols":[{"grid-cols":[Gt]}],"col-start-end":[{col:[`auto`,{span:[`full`,It,z]},z]}],"col-start":[{"col-start":k()}],"col-end":[{"col-end":k()}],"grid-rows":[{"grid-rows":[Gt]}],"row-start-end":[{row:[`auto`,{span:[It,z]},z]}],"row-start":[{"row-start":k()}],"row-end":[{"row-end":k()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":[`auto`,`min`,`max`,`fr`,z]}],"auto-rows":[{"auto-rows":[`auto`,`min`,`max`,`fr`,z]}],gap:[{gap:[f]}],"gap-x":[{"gap-x":[f]}],"gap-y":[{"gap-y":[f]}],"justify-content":[{justify:[`normal`,...M()]}],"justify-items":[{"justify-items":[`start`,`end`,`center`,`stretch`]}],"justify-self":[{"justify-self":[`auto`,`start`,`end`,`center`,`stretch`]}],"align-content":[{content:[`normal`,...M(),`baseline`]}],"align-items":[{items:[`start`,`end`,`center`,`baseline`,`stretch`]}],"align-self":[{self:[`auto`,`start`,`end`,`center`,`stretch`,`baseline`]}],"place-content":[{"place-content":[...M(),`baseline`]}],"place-items":[{"place-items":[`start`,`end`,`center`,`baseline`,`stretch`]}],"place-self":[{"place-self":[`auto`,`start`,`end`,`center`,`stretch`]}],p:[{p:[v]}],px:[{px:[v]}],py:[{py:[v]}],ps:[{ps:[v]}],pe:[{pe:[v]}],pt:[{pt:[v]}],pr:[{pr:[v]}],pb:[{pb:[v]}],pl:[{pl:[v]}],m:[{m:[g]}],mx:[{mx:[g]}],my:[{my:[g]}],ms:[{ms:[g]}],me:[{me:[g]}],mt:[{mt:[g]}],mr:[{mr:[g]}],mb:[{mb:[g]}],ml:[{ml:[g]}],"space-x":[{"space-x":[C]}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":[C]}],"space-y-reverse":[`space-y-reverse`],w:[{w:[`auto`,`min`,`max`,`fit`,`svw`,`lvw`,`dvw`,z,t]}],"min-w":[{"min-w":[z,t,`min`,`max`,`fit`]}],"max-w":[{"max-w":[z,t,`none`,`full`,`min`,`max`,`fit`,`prose`,{screen:[Rt]},Rt]}],h:[{h:[z,t,`auto`,`min`,`max`,`fit`,`svh`,`lvh`,`dvh`]}],"min-h":[{"min-h":[z,t,`min`,`max`,`fit`,`svh`,`lvh`,`dvh`]}],"max-h":[{"max-h":[z,t,`min`,`max`,`fit`,`svh`,`lvh`,`dvh`]}],size:[{size:[z,t,`auto`,`min`,`max`,`fit`]}],"font-size":[{text:[`base`,Rt,Nt]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`,Ft]}],"font-family":[{font:[Gt]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`,z]}],"line-clamp":[{"line-clamp":[`none`,Pt,Ft]}],leading:[{leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`,Mt,z]}],"list-image":[{"list-image":[`none`,z]}],"list-style-type":[{list:[`none`,`disc`,`decimal`,z]}],"list-style-position":[{list:[`inside`,`outside`]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[_]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[_]}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...te(),`wavy`]}],"text-decoration-thickness":[{decoration:[`auto`,`from-font`,Mt,Nt]}],"underline-offset":[{"underline-offset":[`auto`,Mt,z]}],"text-decoration-color":[{decoration:[e]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:D()}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,z]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,z]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-opacity":[{"bg-opacity":[_]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:[...A(),Vt]}],"bg-repeat":[{bg:[`no-repeat`,{repeat:[``,`x`,`y`,`round`,`space`]}]}],"bg-size":[{bg:[`auto`,`cover`,`contain`,Bt]}],"bg-image":[{bg:[`none`,{"gradient-to":[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},Ut]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[m]}],"gradient-via-pos":[{via:[m]}],"gradient-to-pos":[{to:[m]}],"gradient-from":[{from:[p]}],"gradient-via":[{via:[p]}],"gradient-to":[{to:[p]}],rounded:[{rounded:[a]}],"rounded-s":[{"rounded-s":[a]}],"rounded-e":[{"rounded-e":[a]}],"rounded-t":[{"rounded-t":[a]}],"rounded-r":[{"rounded-r":[a]}],"rounded-b":[{"rounded-b":[a]}],"rounded-l":[{"rounded-l":[a]}],"rounded-ss":[{"rounded-ss":[a]}],"rounded-se":[{"rounded-se":[a]}],"rounded-ee":[{"rounded-ee":[a]}],"rounded-es":[{"rounded-es":[a]}],"rounded-tl":[{"rounded-tl":[a]}],"rounded-tr":[{"rounded-tr":[a]}],"rounded-br":[{"rounded-br":[a]}],"rounded-bl":[{"rounded-bl":[a]}],"border-w":[{border:[s]}],"border-w-x":[{"border-x":[s]}],"border-w-y":[{"border-y":[s]}],"border-w-s":[{"border-s":[s]}],"border-w-e":[{"border-e":[s]}],"border-w-t":[{"border-t":[s]}],"border-w-r":[{"border-r":[s]}],"border-w-b":[{"border-b":[s]}],"border-w-l":[{"border-l":[s]}],"border-opacity":[{"border-opacity":[_]}],"border-style":[{border:[...te(),`hidden`]}],"divide-x":[{"divide-x":[s]}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":[s]}],"divide-y-reverse":[`divide-y-reverse`],"divide-opacity":[{"divide-opacity":[_]}],"divide-style":[{divide:te()}],"border-color":[{border:[i]}],"border-color-x":[{"border-x":[i]}],"border-color-y":[{"border-y":[i]}],"border-color-s":[{"border-s":[i]}],"border-color-e":[{"border-e":[i]}],"border-color-t":[{"border-t":[i]}],"border-color-r":[{"border-r":[i]}],"border-color-b":[{"border-b":[i]}],"border-color-l":[{"border-l":[i]}],"divide-color":[{divide:[i]}],"outline-style":[{outline:[``,...te()]}],"outline-offset":[{"outline-offset":[Mt,z]}],"outline-w":[{outline:[Mt,Nt]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:O()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[_]}],"ring-offset-w":[{"ring-offset":[Mt,Nt]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:[``,`inner`,`none`,Rt,Wt]}],"shadow-color":[{shadow:[Gt]}],opacity:[{opacity:[_]}],"mix-blend":[{"mix-blend":[...j(),`plus-lighter`,`plus-darker`]}],"bg-blend":[{"bg-blend":j()}],filter:[{filter:[``,`none`]}],blur:[{blur:[n]}],brightness:[{brightness:[r]}],contrast:[{contrast:[c]}],"drop-shadow":[{"drop-shadow":[``,`none`,Rt,z]}],grayscale:[{grayscale:[l]}],"hue-rotate":[{"hue-rotate":[u]}],invert:[{invert:[d]}],saturate:[{saturate:[y]}],sepia:[{sepia:[x]}],"backdrop-filter":[{"backdrop-filter":[``,`none`]}],"backdrop-blur":[{"backdrop-blur":[n]}],"backdrop-brightness":[{"backdrop-brightness":[r]}],"backdrop-contrast":[{"backdrop-contrast":[c]}],"backdrop-grayscale":[{"backdrop-grayscale":[l]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[u]}],"backdrop-invert":[{"backdrop-invert":[d]}],"backdrop-opacity":[{"backdrop-opacity":[_]}],"backdrop-saturate":[{"backdrop-saturate":[y]}],"backdrop-sepia":[{"backdrop-sepia":[x]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":[o]}],"border-spacing-x":[{"border-spacing-x":[o]}],"border-spacing-y":[{"border-spacing-y":[o]}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[`none`,`all`,``,`colors`,`opacity`,`shadow`,`transform`,z]}],duration:[{duration:F()}],ease:[{ease:[`linear`,`in`,`out`,`in-out`,z]}],delay:[{delay:F()}],animate:[{animate:[`none`,`spin`,`ping`,`pulse`,`bounce`,z]}],transform:[{transform:[``,`gpu`,`none`]}],scale:[{scale:[b]}],"scale-x":[{"scale-x":[b]}],"scale-y":[{"scale-y":[b]}],rotate:[{rotate:[It,z]}],"translate-x":[{"translate-x":[w]}],"translate-y":[{"translate-y":[w]}],"skew-x":[{"skew-x":[S]}],"skew-y":[{"skew-y":[S]}],"transform-origin":[{origin:[`center`,`top`,`top-right`,`right`,`bottom-right`,`bottom`,`bottom-left`,`left`,`top-left`,z]}],accent:[{accent:[`auto`,e]}],appearance:[{appearance:[`none`,`auto`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,z]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":[`none`,`auto`]}],resize:[{resize:[`none`,`y`,`x`,``]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scroll-m":[{"scroll-m":D()}],"scroll-mx":[{"scroll-mx":D()}],"scroll-my":[{"scroll-my":D()}],"scroll-ms":[{"scroll-ms":D()}],"scroll-me":[{"scroll-me":D()}],"scroll-mt":[{"scroll-mt":D()}],"scroll-mr":[{"scroll-mr":D()}],"scroll-mb":[{"scroll-mb":D()}],"scroll-ml":[{"scroll-ml":D()}],"scroll-p":[{"scroll-p":D()}],"scroll-px":[{"scroll-px":D()}],"scroll-py":[{"scroll-py":D()}],"scroll-ps":[{"scroll-ps":D()}],"scroll-pe":[{"scroll-pe":D()}],"scroll-pt":[{"scroll-pt":D()}],"scroll-pr":[{"scroll-pr":D()}],"scroll-pb":[{"scroll-pb":D()}],"scroll-pl":[{"scroll-pl":D()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,z]}],fill:[{fill:[e,`none`]}],"stroke-w":[{stroke:[Mt,Nt,Ft]}],stroke:[{stroke:[e,`none`]}],sr:[`sr-only`,`not-sr-only`],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-s`,`border-w-e`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-s`,`border-color-e`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]}}});function B(...e){return Zt(et(e))}var Qt=rt(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0`,{variants:{variant:{default:`bg-primary text-primary-foreground shadow hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90`,outline:`border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2`,sm:`h-8 rounded-md px-3 text-xs`,lg:`h-10 rounded-md px-8`,icon:`h-9 w-9`}},defaultVariants:{variant:`default`,size:`default`}}),$t=_.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},a)=>(0,L.jsx)(r?qe:`button`,{className:B(Qt({variant:t,size:n,className:e})),ref:a,...i}));$t.displayName=`Button`;var en=_.forwardRef(({className:e,type:t,...n},r)=>(0,L.jsx)(`input`,{type:t,className:B(`flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`,e),ref:r,...n}));en.displayName=`Input`;function tn(e,[t,n]){return Math.min(n,Math.max(t,e))}typeof window<`u`&&window.document&&window.document.createElement;function V(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}function nn(e,t=[]){let n=[];function r(t,r){let i=_.createContext(r),a=n.length;n=[...n,r];let o=t=>{let{scope:n,children:r,...o}=t,s=n?.[e]?.[a]||i,c=_.useMemo(()=>o,Object.values(o));return(0,L.jsx)(s.Provider,{value:c,children:r})};o.displayName=t+`Provider`;function s(n,o){let s=o?.[e]?.[a]||i,c=_.useContext(s);if(c)return c;if(r!==void 0)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}return[o,s]}let i=()=>{let t=n.map(e=>_.createContext(e));return function(n){let r=n?.[e]||t;return _.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return i.scopeName=e,[r,rn(i,...t)]}function rn(...e){let t=e[0];if(e.length===1)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return _.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}function an(e){let t=on(e),n=_.forwardRef((e,n)=>{let{children:r,...i}=e,a=_.Children.toArray(r),o=a.find(cn);if(o){let e=o.props.children,r=a.map(t=>t===o?_.Children.count(e)>1?_.Children.only(null):_.isValidElement(e)?e.props.children:null:t);return(0,L.jsx)(t,{...i,ref:n,children:_.isValidElement(e)?_.cloneElement(e,void 0,r):null})}return(0,L.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function on(e){let t=_.forwardRef((e,t)=>{let{children:n,...r}=e;if(_.isValidElement(n)){let e=un(n),i=ln(r,n.props);return n.type!==_.Fragment&&(i.ref=t?ze(t,e):e),_.cloneElement(n,i)}return _.Children.count(n)>1?_.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var sn=Symbol(`radix.slottable`);function cn(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===sn}function ln(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function un(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function dn(e){let t=e+`CollectionProvider`,[n,r]=nn(t),[i,a]=n(t,{collectionRef:{current:null},itemMap:new Map}),o=e=>{let{scope:t,children:n}=e,r=_.useRef(null),a=_.useRef(new Map).current;return(0,L.jsx)(i,{scope:t,itemMap:a,collectionRef:r,children:n})};o.displayName=t;let s=e+`CollectionSlot`,c=an(s),l=_.forwardRef((e,t)=>{let{scope:n,children:r}=e;return(0,L.jsx)(c,{ref:Be(t,a(s,n).collectionRef),children:r})});l.displayName=s;let u=e+`CollectionItemSlot`,d=`data-radix-collection-item`,f=an(u),p=_.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=_.useRef(null),s=Be(t,o),c=a(u,n);return _.useEffect(()=>(c.itemMap.set(o,{ref:o,...i}),()=>void c.itemMap.delete(o))),(0,L.jsx)(f,{[d]:``,ref:s,children:r})});p.displayName=u;function m(t){let n=a(e+`CollectionConsumer`,t);return _.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${d}]`));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])}return[{Provider:o,Slot:l,ItemSlot:p},m,r]}var fn=_.createContext(void 0);function pn(e){let t=_.useContext(fn);return e||t||`ltr`}function mn(e){let t=hn(e),n=_.forwardRef((e,n)=>{let{children:r,...i}=e,a=_.Children.toArray(r),o=a.find(_n);if(o){let e=o.props.children,r=a.map(t=>t===o?_.Children.count(e)>1?_.Children.only(null):_.isValidElement(e)?e.props.children:null:t);return(0,L.jsx)(t,{...i,ref:n,children:_.isValidElement(e)?_.cloneElement(e,void 0,r):null})}return(0,L.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function hn(e){let t=_.forwardRef((e,t)=>{let{children:n,...r}=e;if(_.isValidElement(n)){let e=yn(n),i=vn(r,n.props);return n.type!==_.Fragment&&(i.ref=t?ze(t,e):e),_.cloneElement(n,i)}return _.Children.count(n)>1?_.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var gn=Symbol(`radix.slottable`);function _n(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===gn}function vn(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function yn(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var bn=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=mn(`Primitive.${t}`),r=_.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,L.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function xn(e,t){e&&y.flushSync(()=>e.dispatchEvent(t))}function Sn(e){let t=_.useRef(e);return _.useEffect(()=>{t.current=e}),_.useMemo(()=>(...e)=>t.current?.(...e),[])}function Cn(e,t=globalThis?.document){let n=Sn(e);_.useEffect(()=>{let e=e=>{e.key===`Escape`&&n(e)};return t.addEventListener(`keydown`,e,{capture:!0}),()=>t.removeEventListener(`keydown`,e,{capture:!0})},[n,t])}var wn=`DismissableLayer`,Tn=`dismissableLayer.update`,En=`dismissableLayer.pointerDownOutside`,Dn=`dismissableLayer.focusOutside`,On,kn=_.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),An=_.forwardRef((e,t)=>{let{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:o,onDismiss:s,...c}=e,l=_.useContext(kn),[u,d]=_.useState(null),f=u?.ownerDocument??globalThis?.document,[,p]=_.useState({}),m=Be(t,e=>d(e)),h=Array.from(l.layers),[g]=[...l.layersWithOutsidePointerEventsDisabled].slice(-1),v=h.indexOf(g),y=u?h.indexOf(u):-1,b=l.layersWithOutsidePointerEventsDisabled.size>0,x=y>=v,S=Nn(e=>{let t=e.target,n=[...l.branches].some(e=>e.contains(t));!x||n||(i?.(e),o?.(e),e.defaultPrevented||s?.())},f),C=Pn(e=>{let t=e.target;[...l.branches].some(e=>e.contains(t))||(a?.(e),o?.(e),e.defaultPrevented||s?.())},f);return Cn(e=>{y===l.layers.size-1&&(r?.(e),!e.defaultPrevented&&s&&(e.preventDefault(),s()))},f),_.useEffect(()=>{if(u)return n&&(l.layersWithOutsidePointerEventsDisabled.size===0&&(On=f.body.style.pointerEvents,f.body.style.pointerEvents=`none`),l.layersWithOutsidePointerEventsDisabled.add(u)),l.layers.add(u),Fn(),()=>{n&&l.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=On)}},[u,f,n,l]),_.useEffect(()=>()=>{u&&(l.layers.delete(u),l.layersWithOutsidePointerEventsDisabled.delete(u),Fn())},[u,l]),_.useEffect(()=>{let e=()=>p({});return document.addEventListener(Tn,e),()=>document.removeEventListener(Tn,e)},[]),(0,L.jsx)(bn.div,{...c,ref:m,style:{pointerEvents:b?x?`auto`:`none`:void 0,...e.style},onFocusCapture:V(e.onFocusCapture,C.onFocusCapture),onBlurCapture:V(e.onBlurCapture,C.onBlurCapture),onPointerDownCapture:V(e.onPointerDownCapture,S.onPointerDownCapture)})});An.displayName=wn;var jn=`DismissableLayerBranch`,Mn=_.forwardRef((e,t)=>{let n=_.useContext(kn),r=_.useRef(null),i=Be(t,r);return _.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,L.jsx)(bn.div,{...e,ref:i})});Mn.displayName=jn;function Nn(e,t=globalThis?.document){let n=Sn(e),r=_.useRef(!1),i=_.useRef(()=>{});return _.useEffect(()=>{let e=e=>{if(e.target&&!r.current){let r=function(){In(En,n,a,{discrete:!0})},a={originalEvent:e};e.pointerType===`touch`?(t.removeEventListener(`click`,i.current),i.current=r,t.addEventListener(`click`,i.current,{once:!0})):r()}else t.removeEventListener(`click`,i.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener(`pointerdown`,e)},0);return()=>{window.clearTimeout(a),t.removeEventListener(`pointerdown`,e),t.removeEventListener(`click`,i.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function Pn(e,t=globalThis?.document){let n=Sn(e),r=_.useRef(!1);return _.useEffect(()=>{let e=e=>{e.target&&!r.current&&In(Dn,n,{originalEvent:e},{discrete:!1})};return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function Fn(){let e=new CustomEvent(Tn);document.dispatchEvent(e)}function In(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?xn(i,a):i.dispatchEvent(a)}var Ln=0;function Rn(){_.useEffect(()=>{let e=document.querySelectorAll(`[data-radix-focus-guard]`);return document.body.insertAdjacentElement(`afterbegin`,e[0]??zn()),document.body.insertAdjacentElement(`beforeend`,e[1]??zn()),Ln++,()=>{Ln===1&&document.querySelectorAll(`[data-radix-focus-guard]`).forEach(e=>e.remove()),Ln--}},[])}function zn(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}var Bn=`focusScope.autoFocusOnMount`,Vn=`focusScope.autoFocusOnUnmount`,Hn={bubbles:!1,cancelable:!0},Un=`FocusScope`,Wn=_.forwardRef((e,t)=>{let{loop:n=!1,trapped:r=!1,onMountAutoFocus:i,onUnmountAutoFocus:a,...o}=e,[s,c]=_.useState(null),l=Sn(i),u=Sn(a),d=_.useRef(null),f=Be(t,e=>c(e)),p=_.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;_.useEffect(()=>{if(r){let e=function(e){if(p.paused||!s)return;let t=e.target;s.contains(t)?d.current=t:Zn(d.current,{select:!0})},t=function(e){if(p.paused||!s)return;let t=e.relatedTarget;t!==null&&(s.contains(t)||Zn(d.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&Zn(s)};document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return s&&r.observe(s,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,s,p.paused]),_.useEffect(()=>{if(s){Qn.add(p);let e=document.activeElement;if(!s.contains(e)){let t=new CustomEvent(Bn,Hn);s.addEventListener(Bn,l),s.dispatchEvent(t),t.defaultPrevented||(Gn(tr(qn(s)),{select:!0}),document.activeElement===e&&Zn(s))}return()=>{s.removeEventListener(Bn,l),setTimeout(()=>{let t=new CustomEvent(Vn,Hn);s.addEventListener(Vn,u),s.dispatchEvent(t),t.defaultPrevented||Zn(e??document.body,{select:!0}),s.removeEventListener(Vn,u),Qn.remove(p)},0)}}},[s,l,u,p]);let m=_.useCallback(e=>{if(!n&&!r||p.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=Kn(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&Zn(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&Zn(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,p.paused]);return(0,L.jsx)(bn.div,{tabIndex:-1,...o,ref:f,onKeyDown:m})});Wn.displayName=Un;function Gn(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(Zn(r,{select:t}),document.activeElement!==n)return}function Kn(e){let t=qn(e);return[Jn(t,e),Jn(t.reverse(),e)]}function qn(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Jn(e,t){for(let n of e)if(!Yn(n,{upTo:t}))return n}function Yn(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function Xn(e){return e instanceof HTMLInputElement&&`select`in e}function Zn(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&Xn(e)&&t&&e.select()}}var Qn=$n();function $n(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=er(e,t),e.unshift(t)},remove(t){e=er(e,t),e[0]?.resume()}}}function er(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function tr(e){return e.filter(e=>e.tagName!==`A`)}var nr=globalThis?.document?_.useLayoutEffect:()=>{},rr=_.useId||(()=>void 0),ir=0;function ar(e){let[t,n]=_.useState(rr());return nr(()=>{e||n(e=>e??String(ir++))},[e]),e||(t?`radix-${t}`:``)}var or=[`top`,`right`,`bottom`,`left`],sr=Math.min,cr=Math.max,lr=Math.round,ur=Math.floor,dr=e=>({x:e,y:e}),fr={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function pr(e,t,n){return cr(e,sr(t,n))}function mr(e,t){return typeof e==`function`?e(t):e}function hr(e){return e.split(`-`)[0]}function gr(e){return e.split(`-`)[1]}function _r(e){return e===`x`?`y`:`x`}function vr(e){return e===`y`?`height`:`width`}function yr(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function br(e){return _r(yr(e))}function xr(e,t,n){n===void 0&&(n=!1);let r=gr(e),i=br(e),a=vr(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=Ar(o)),[o,Ar(o)]}function Sr(e){let t=Ar(e);return[Cr(e),t,Cr(t)]}function Cr(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var wr=[`left`,`right`],Tr=[`right`,`left`],Er=[`top`,`bottom`],Dr=[`bottom`,`top`];function Or(e,t,n){switch(e){case`top`:case`bottom`:return n?t?Tr:wr:t?wr:Tr;case`left`:case`right`:return t?Er:Dr;default:return[]}}function kr(e,t,n,r){let i=gr(e),a=Or(hr(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(Cr)))),a}function Ar(e){let t=hr(e);return fr[t]+e.slice(t.length)}function jr(e){return{top:0,right:0,bottom:0,left:0,...e}}function Mr(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:jr(e)}function Nr(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function Pr(e,t,n){let{reference:r,floating:i}=e,a=yr(t),o=br(t),s=vr(o),c=hr(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(gr(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}async function Fr(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=mr(t,e),p=Mr(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=Nr(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=Nr(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var Ir=50,Lr=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:Fr},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=Pr(l,r,c),f=r,p=0,m={};for(let n=0;n({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=mr(e,t)||{};if(l==null)return{};let d=Mr(u),f={x:n,y:r},p=br(i),m=vr(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=sr(d[_],T),ee=sr(d[v],T),D=E,O=C-h[m]-ee,k=C/2-h[m]/2+w,A=pr(D,k,O),te=!c.arrow&&gr(i)!=null&&k!==A&&a.reference[m]/2-(ke<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==yr(t))||T.every(e=>yr(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=yr(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function Br(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Vr(e){return or.some(t=>e[t]>=0)}var Hr=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=mr(e,t);switch(i){case`referenceHidden`:{let e=Br(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:Vr(e)}}}case`escaped`:{let e=Br(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:Vr(e)}}}default:return{}}}}},Ur=new Set([`left`,`top`]);async function Wr(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=hr(n),s=gr(n),c=yr(n)===`y`,l=Ur.has(o)?-1:1,u=a&&c?-1:1,d=mr(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var Gr=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await Wr(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},Kr=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=mr(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=yr(hr(i)),p=_r(f),m=u[p],h=u[f];if(o){let e=p===`y`?`top`:`left`,t=p===`y`?`bottom`:`right`,n=m+d[e],r=m-d[t];m=pr(n,m,r)}if(s){let e=f===`y`?`top`:`left`,t=f===`y`?`bottom`:`right`,n=h+d[e],r=h-d[t];h=pr(n,h,r)}let g=c.fn({...t,[p]:m,[f]:h});return{...g,data:{x:g.x-n,y:g.y-r,enabled:{[p]:o,[f]:s}}}}}},qr=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=mr(e,t),u={x:n,y:r},d=yr(i),f=_r(d),p=u[f],m=u[d],h=mr(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=Ur.has(hr(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);mr&&(m=r)}return{[f]:p,[d]:m}}}},Jr=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){var n,r;let{placement:i,rects:a,platform:o,elements:s}=t,{apply:c=()=>{},...l}=mr(e,t),u=await o.detectOverflow(t,l),d=hr(i),f=gr(i),p=yr(i)===`y`,{width:m,height:h}=a.floating,g,_;d===`top`||d===`bottom`?(g=d,_=f===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?`start`:`end`)?`left`:`right`):(_=d,g=f===`end`?`top`:`bottom`);let v=h-u.top-u.bottom,y=m-u.left-u.right,b=sr(h-u[g],v),x=sr(m-u[_],y),S=!t.middlewareData.shift,C=b,w=x;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(w=y),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(C=v),S&&!f){let e=cr(u.left,0),t=cr(u.right,0),n=cr(u.top,0),r=cr(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:cr(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:cr(u.top,u.bottom))}await c({...t,availableWidth:w,availableHeight:C});let T=await o.getDimensions(s.floating);return m!==T.width||h!==T.height?{reset:{rects:!0}}:{}}}};function Yr(){return typeof window<`u`}function Xr(e){return $r(e)?(e.nodeName||``).toLowerCase():`#document`}function Zr(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Qr(e){return(($r(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function $r(e){return Yr()?e instanceof Node||e instanceof Zr(e).Node:!1}function ei(e){return Yr()?e instanceof Element||e instanceof Zr(e).Element:!1}function ti(e){return Yr()?e instanceof HTMLElement||e instanceof Zr(e).HTMLElement:!1}function ni(e){return!Yr()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof Zr(e).ShadowRoot}function ri(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=mi(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function ii(e){return/^(table|td|th)$/.test(Xr(e))}function ai(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var oi=/transform|translate|scale|rotate|perspective|filter/,si=/paint|layout|strict|content/,ci=e=>!!e&&e!==`none`,li;function ui(e){let t=ei(e)?mi(e):e;return ci(t.transform)||ci(t.translate)||ci(t.scale)||ci(t.rotate)||ci(t.perspective)||!fi()&&(ci(t.backdropFilter)||ci(t.filter))||oi.test(t.willChange||``)||si.test(t.contain||``)}function di(e){let t=gi(e);for(;ti(t)&&!pi(t);){if(ui(t))return t;if(ai(t))return null;t=gi(t)}return null}function fi(){return li??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),li}function pi(e){return/^(html|body|#document)$/.test(Xr(e))}function mi(e){return Zr(e).getComputedStyle(e)}function hi(e){return ei(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function gi(e){if(Xr(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||ni(e)&&e.host||Qr(e);return ni(t)?t.host:t}function _i(e){let t=gi(e);return pi(t)?e.ownerDocument?e.ownerDocument.body:e.body:ti(t)&&ri(t)?t:_i(t)}function vi(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=_i(e),i=r===e.ownerDocument?.body,a=Zr(r);if(i){let e=yi(a);return t.concat(a,a.visualViewport||[],ri(r)?r:[],e&&n?vi(e):[])}else return t.concat(r,vi(r,[],n))}function yi(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function bi(e){let t=mi(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=ti(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=lr(n)!==a||lr(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function xi(e){return ei(e)?e:e.contextElement}function Si(e){let t=xi(e);if(!ti(t))return dr(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=bi(t),o=(a?lr(n.width):n.width)/r,s=(a?lr(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var Ci=dr(0);function wi(e){let t=Zr(e);return!fi()||!t.visualViewport?Ci:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Ti(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==Zr(e)?!1:t}function Ei(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=xi(e),o=dr(1);t&&(r?ei(r)&&(o=Si(r)):o=Si(e));let s=Ti(a,n,r)?wi(a):dr(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=Zr(a),t=r&&ei(r)?Zr(r):r,n=e,i=yi(n);for(;i&&r&&t!==n;){let e=Si(i),t=i.getBoundingClientRect(),r=mi(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=Zr(i),i=yi(n)}}return Nr({width:u,height:d,x:c,y:l})}function Di(e,t){let n=hi(e).scrollLeft;return t?t.left+n:Ei(Qr(e)).left+n}function Oi(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-Di(e,n),y:n.top+t.scrollTop}}function ki(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=Qr(r),s=t?ai(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=dr(1),u=dr(0),d=ti(r);if((d||!d&&!a)&&((Xr(r)!==`body`||ri(o))&&(c=hi(r)),d)){let e=Ei(r);l=Si(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?Oi(o,c):dr(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function Ai(e){return Array.from(e.getClientRects())}function ji(e){let t=Qr(e),n=hi(e),r=e.ownerDocument.body,i=cr(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=cr(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+Di(e),s=-n.scrollTop;return mi(r).direction===`rtl`&&(o+=cr(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var H=25;function Mi(e,t){let n=Zr(e),r=Qr(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=fi();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=Di(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=H&&(a-=o)}else l<=H&&(a+=l);return{width:a,height:o,x:s,y:c}}function Ni(e,t){let n=Ei(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=ti(e)?Si(e):dr(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function Pi(e,t,n){let r;if(t===`viewport`)r=Mi(e,n);else if(t===`document`)r=ji(Qr(e));else if(ei(t))r=Ni(t,n);else{let n=wi(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return Nr(r)}function Fi(e,t){let n=gi(e);return n===t||!ei(n)||pi(n)?!1:mi(n).position===`fixed`||Fi(n,t)}function Ii(e,t){let n=t.get(e);if(n)return n;let r=vi(e,[],!1).filter(e=>ei(e)&&Xr(e)!==`body`),i=null,a=mi(e).position===`fixed`,o=a?gi(e):e;for(;ei(o)&&!pi(o);){let t=mi(o),n=ui(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&(i.position===`absolute`||i.position===`fixed`)||ri(o)&&!n&&Fi(e,o))?r=r.filter(e=>e!==o):i=t,o=gi(o)}return t.set(e,r),r}function Li(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?ai(t)?[]:Ii(t,this._c):[].concat(n),r],o=Pi(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e{o(!1,1e-7)},1e3)}n===1&&!Ki(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(b,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(b,v)}n.observe(e)}return o(!0),a}function Ji(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=xi(e),u=i||a?[...l?vi(l):[],...t?vi(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?qi(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?Ei(e):null;c&&g();function g(){let t=Ei(e);h&&!Ki(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var Yi=Gr,Xi=Kr,Zi=zr,Qi=Jr,$i=Hr,ea=Rr,ta=qr,na=(e,t,n)=>{let r=new Map,i={platform:Gi,...n},a={...i.platform,_c:r};return Lr(e,t,{...i,platform:a})},ra=typeof document<`u`?_.useLayoutEffect:function(){};function ia(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`function`&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e==`object`){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!ia(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){let n=i[r];if(!(n===`_owner`&&e.$$typeof)&&!ia(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function aa(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function oa(e,t){let n=aa(e);return Math.round(t*n)/n}function sa(e){let t=_.useRef(e);return ra(()=>{t.current=e}),t}function ca(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:s=!0,whileElementsMounted:c,open:l}=e,[u,d]=_.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,p]=_.useState(r);ia(f,r)||p(r);let[m,h]=_.useState(null),[g,v]=_.useState(null),b=_.useCallback(e=>{e!==w.current&&(w.current=e,h(e))},[]),x=_.useCallback(e=>{e!==T.current&&(T.current=e,v(e))},[]),S=a||m,C=o||g,w=_.useRef(null),T=_.useRef(null),E=_.useRef(u),ee=c!=null,D=sa(c),O=sa(i),k=sa(l),A=_.useCallback(()=>{if(!w.current||!T.current)return;let e={placement:t,strategy:n,middleware:f};O.current&&(e.platform=O.current),na(w.current,T.current,e).then(e=>{let t={...e,isPositioned:k.current!==!1};te.current&&!ia(E.current,t)&&(E.current=t,y.flushSync(()=>{d(t)}))})},[f,t,n,O,k]);ra(()=>{l===!1&&E.current.isPositioned&&(E.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[l]);let te=_.useRef(!1);ra(()=>(te.current=!0,()=>{te.current=!1}),[]),ra(()=>{if(S&&(w.current=S),C&&(T.current=C),S&&C){if(D.current)return D.current(S,C,A);A()}},[S,C,A,D,ee]);let j=_.useMemo(()=>({reference:w,floating:T,setReference:b,setFloating:x}),[b,x]),M=_.useMemo(()=>({reference:S,floating:C}),[S,C]),N=_.useMemo(()=>{let e={position:n,left:0,top:0};if(!M.floating)return e;let t=oa(M.floating,u.x),r=oa(M.floating,u.y);return s?{...e,transform:`translate(`+t+`px, `+r+`px)`,...aa(M.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,s,M.floating,u.x,u.y]);return _.useMemo(()=>({...u,update:A,refs:j,elements:M,floatingStyles:N}),[u,A,j,M,N])}var la=e=>{function t(e){return{}.hasOwnProperty.call(e,`current`)}return{name:`arrow`,options:e,fn(n){let{element:r,padding:i}=typeof e==`function`?e(n):e;return r&&t(r)?r.current==null?{}:ea({element:r.current,padding:i}).fn(n):r?ea({element:r,padding:i}).fn(n):{}}}},ua=(e,t)=>{let n=Yi(e);return{name:n.name,fn:n.fn,options:[e,t]}},da=(e,t)=>{let n=Xi(e);return{name:n.name,fn:n.fn,options:[e,t]}},fa=(e,t)=>({fn:ta(e).fn,options:[e,t]}),pa=(e,t)=>{let n=Zi(e);return{name:n.name,fn:n.fn,options:[e,t]}},ma=(e,t)=>{let n=Qi(e);return{name:n.name,fn:n.fn,options:[e,t]}},ha=(e,t)=>{let n=$i(e);return{name:n.name,fn:n.fn,options:[e,t]}},ga=(e,t)=>{let n=la(e);return{name:n.name,fn:n.fn,options:[e,t]}},_a=`Arrow`,va=_.forwardRef((e,t)=>{let{children:n,width:r=10,height:i=5,...a}=e;return(0,L.jsx)(bn.svg,{...a,ref:t,width:r,height:i,viewBox:`0 0 30 10`,preserveAspectRatio:`none`,children:e.asChild?n:(0,L.jsx)(`polygon`,{points:`0,0 30,0 15,10`})})});va.displayName=_a;var ya=va;function ba(e){let[t,n]=_.useState(void 0);return nr(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=e.offsetWidth,a=e.offsetHeight;n({width:i,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}else n(void 0)},[e]),t}var xa=`Popper`,[Sa,Ca]=nn(xa),[wa,Ta]=Sa(xa),Ea=e=>{let{__scopePopper:t,children:n}=e,[r,i]=_.useState(null);return(0,L.jsx)(wa,{scope:t,anchor:r,onAnchorChange:i,children:n})};Ea.displayName=xa;var Da=`PopperAnchor`,Oa=_.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:r,...i}=e,a=Ta(Da,n),o=_.useRef(null),s=Be(t,o),c=_.useRef(null);return _.useEffect(()=>{let e=c.current;c.current=r?.current||o.current,e!==c.current&&a.onAnchorChange(c.current)}),r?null:(0,L.jsx)(bn.div,{...i,ref:s})});Oa.displayName=Da;var ka=`PopperContent`,[Aa,ja]=Sa(ka),Ma=_.forwardRef((e,t)=>{let{__scopePopper:n,side:r=`bottom`,sideOffset:i=0,align:a=`center`,alignOffset:o=0,arrowPadding:s=0,avoidCollisions:c=!0,collisionBoundary:l=[],collisionPadding:u=0,sticky:d=`partial`,hideWhenDetached:f=!1,updatePositionStrategy:p=`optimized`,onPlaced:m,...h}=e,g=Ta(ka,n),[v,y]=_.useState(null),b=Be(t,e=>y(e)),[x,S]=_.useState(null),C=ba(x),w=C?.width??0,T=C?.height??0,E=r+(a===`center`?``:`-`+a),ee=typeof u==`number`?u:{top:0,right:0,bottom:0,left:0,...u},D=Array.isArray(l)?l:[l],O=D.length>0,k={padding:ee,boundary:D.filter(Ia),altBoundary:O},{refs:A,floatingStyles:te,placement:j,isPositioned:M,middlewareData:N}=ca({strategy:`fixed`,placement:E,whileElementsMounted:(...e)=>Ji(...e,{animationFrame:p===`always`}),elements:{reference:g.anchor},middleware:[ua({mainAxis:i+T,alignmentAxis:o}),c&&da({mainAxis:!0,crossAxis:!1,limiter:d===`partial`?fa():void 0,...k}),c&&pa({...k}),ma({...k,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--radix-popper-available-width`,`${n}px`),o.setProperty(`--radix-popper-available-height`,`${r}px`),o.setProperty(`--radix-popper-anchor-width`,`${i}px`),o.setProperty(`--radix-popper-anchor-height`,`${a}px`)}}),x&&ga({element:x,padding:s}),La({arrowWidth:w,arrowHeight:T}),f&&ha({strategy:`referenceHidden`,...k})]}),[P,F]=Ra(j),ne=Sn(m);nr(()=>{M&&ne?.()},[M,ne]);let re=N.arrow?.x,ie=N.arrow?.y,ae=N.arrow?.centerOffset!==0,[oe,I]=_.useState();return nr(()=>{v&&I(window.getComputedStyle(v).zIndex)},[v]),(0,L.jsx)(`div`,{ref:A.setFloating,"data-radix-popper-content-wrapper":``,style:{...te,transform:M?te.transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:oe,"--radix-popper-transform-origin":[N.transformOrigin?.x,N.transformOrigin?.y].join(` `),...N.hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}},dir:e.dir,children:(0,L.jsx)(Aa,{scope:n,placedSide:P,onArrowChange:S,arrowX:re,arrowY:ie,shouldHideArrow:ae,children:(0,L.jsx)(bn.div,{"data-side":P,"data-align":F,...h,ref:b,style:{...h.style,animation:M?void 0:`none`}})})})});Ma.displayName=ka;var Na=`PopperArrow`,Pa={top:`bottom`,right:`left`,bottom:`top`,left:`right`},Fa=_.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,i=ja(Na,n),a=Pa[i.placedSide];return(0,L.jsx)(`span`,{ref:i.onArrowChange,style:{position:`absolute`,left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[i.placedSide],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[i.placedSide],visibility:i.shouldHideArrow?`hidden`:void 0},children:(0,L.jsx)(ya,{...r,ref:t,style:{...r.style,display:`block`}})})});Fa.displayName=Na;function Ia(e){return e!==null}var La=e=>({name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=Ra(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}});function Ra(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var za=Ea,Ba=Oa,Va=Ma,Ha=Fa,Ua=`Portal`,Wa=_.forwardRef((e,t)=>{let{container:n,...r}=e,[i,a]=_.useState(!1);nr(()=>a(!0),[]);let o=n||i&&globalThis?.document?.body;return o?y.createPortal((0,L.jsx)(bn.div,{...r,ref:t}),o):null});Wa.displayName=Ua;function Ga(e){let t=Ka(e),n=_.forwardRef((e,n)=>{let{children:r,...i}=e,a=_.Children.toArray(r),o=a.find(Ja);if(o){let e=o.props.children,r=a.map(t=>t===o?_.Children.count(e)>1?_.Children.only(null):_.isValidElement(e)?e.props.children:null:t);return(0,L.jsx)(t,{...i,ref:n,children:_.isValidElement(e)?_.cloneElement(e,void 0,r):null})}return(0,L.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function Ka(e){let t=_.forwardRef((e,t)=>{let{children:n,...r}=e;if(_.isValidElement(n)){let e=Xa(n),i=Ya(r,n.props);return n.type!==_.Fragment&&(i.ref=t?ze(t,e):e),_.cloneElement(n,i)}return _.Children.count(n)>1?_.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var qa=Symbol(`radix.slottable`);function Ja(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===qa}function Ya(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function Xa(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Za=_.useInsertionEffect||nr;function Qa({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){let[i,a,o]=$a({defaultProp:t,onChange:n}),s=e!==void 0,c=s?e:i;{let t=_.useRef(e!==void 0);_.useEffect(()=>{let e=t.current;e!==s&&console.warn(`${r} is changing from ${e?`controlled`:`uncontrolled`} to ${s?`controlled`:`uncontrolled`}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),t.current=s},[s,r])}return[c,_.useCallback(t=>{if(s){let n=eo(t)?t(e):t;n!==e&&o.current?.(n)}else a(t)},[s,e,a,o])]}function $a({defaultProp:e,onChange:t}){let[n,r]=_.useState(e),i=_.useRef(n),a=_.useRef(t);return Za(()=>{a.current=t},[t]),_.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}function eo(e){return typeof e==`function`}function to(e){let t=_.useRef({value:e,previous:e});return _.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var no=Object.freeze({position:`absolute`,border:0,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,wordWrap:`normal`}),ro=`VisuallyHidden`,io=_.forwardRef((e,t)=>(0,L.jsx)(bn.span,{...e,ref:t,style:{...no,...e.style}}));io.displayName=ro;var ao=io,oo=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},U=new WeakMap,so=new WeakMap,co={},W=0,G=function(e){return e&&(e.host||G(e.parentNode))},lo=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=G(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},uo=function(e,t,n,r){var i=lo(t,Array.isArray(e)?e:[e]);co[n]||(co[n]=new WeakMap);var a=co[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(U.get(e)||0)+1,l=(a.get(e)||0)+1;U.set(e,c),a.set(e,l),o.push(e),c===1&&i&&so.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),W++,function(){o.forEach(function(e){var t=U.get(e)-1,i=a.get(e)-1;U.set(e,t),a.set(e,i),t||(so.has(e)||e.removeAttribute(r),so.delete(e)),i||e.removeAttribute(n)}),W--,W||(U=new WeakMap,U=new WeakMap,so=new WeakMap,co={})}},fo=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||oo(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),uo(r,i,n,`aria-hidden`)):function(){return null}},po=function(){return po=Object.assign||function(e){for(var t,n=1,r=arguments.length;n`u`)return Vo;var t=Uo(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},Go=Bo(),Ko=`data-scroll-locked`,qo=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),` + .${vo} { + overflow: hidden ${r}; + padding-right: ${s}px ${r}; + } + body[${Ko}] { + overflow: hidden ${r}; + overscroll-behavior: contain; + ${[t&&`position: relative ${r};`,n===`margin`&&` + padding-left: ${i}px; + padding-top: ${a}px; + padding-right: ${o}px; + margin-left:0; + margin-top:0; + margin-right: ${s}px ${r}; + `,n===`padding`&&`padding-right: ${s}px ${r};`].filter(Boolean).join(``)} + } + + .${go} { + right: ${s}px ${r}; + } + + .${_o} { + margin-right: ${s}px ${r}; + } + + .${go} .${go} { + right: 0 ${r}; + } + + .${_o} .${_o} { + margin-right: 0 ${r}; + } + + body[${Ko}] { + ${yo}: ${s}px; + } +`},Jo=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},Yo=function(){_.useEffect(function(){return document.body.setAttribute(Ko,(Jo()+1).toString()),function(){var e=Jo()-1;e<=0?document.body.removeAttribute(Ko):document.body.setAttribute(Ko,e.toString())}},[])},Xo=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;Yo();var a=_.useMemo(function(){return Wo(i)},[i]);return _.createElement(Go,{styles:qo(a,!t,i,n?``:`!important`)})},Zo=!1;if(typeof window<`u`)try{var Qo=Object.defineProperty({},`passive`,{get:function(){return Zo=!0,!0}});window.addEventListener(`test`,Qo,Qo),window.removeEventListener(`test`,Qo,Qo)}catch{Zo=!1}var $o=Zo?{passive:!1}:!1,es=function(e){return e.tagName===`TEXTAREA`},ts=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!es(e)&&n[t]===`visible`)},ns=function(e){return ts(e,`overflowY`)},rs=function(e){return ts(e,`overflowX`)},is=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),ss(e,r)){var i=cs(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},as=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},os=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},ss=function(e,t){return e===`v`?ns(t):rs(t)},cs=function(e,t){return e===`v`?as(t):os(t)},ls=function(e,t){return e===`h`&&t===`rtl`?-1:1},us=function(e,t,n,r,i){var a=ls(e,window.getComputedStyle(t).direction),o=a*r,s=n.target,c=t.contains(s),l=!1,u=o>0,d=0,f=0;do{if(!s)break;var p=cs(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&ss(e,s)&&(d+=h,f+=m);var g=s.parentNode;s=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&s!==document.body||c&&(t.contains(s)||t===s));return(u&&(i&&Math.abs(d)<1||!i&&o>d)||!u&&(i&&Math.abs(f)<1||!i&&-o>f))&&(l=!0),l},ds=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},fs=function(e){return[e.deltaX,e.deltaY]},ps=function(e){return e&&`current`in e?e.current:e},ms=function(e,t){return e[0]===t[0]&&e[1]===t[1]},hs=function(e){return` + .block-interactivity-${e} {pointer-events: none;} + .allow-interactivity-${e} {pointer-events: all;} +`},gs=0,_s=[];function vs(e){var t=_.useRef([]),n=_.useRef([0,0]),r=_.useRef(),i=_.useState(gs++)[0],a=_.useState(Bo)[0],o=_.useRef(e);_.useEffect(function(){o.current=e},[e]),_.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=ho([e.lockRef.current],(e.shards||[]).map(ps),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var s=_.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=ds(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=is(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=is(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return us(h,t,e,h===`h`?s:c,!0)},[]),c=_.useCallback(function(e){var n=e;if(!(!_s.length||_s[_s.length-1]!==a)){var r=`deltaY`in n?fs(n):ds(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&ms(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var c=(o.current.shards||[]).map(ps).filter(Boolean).filter(function(e){return e.contains(n.target)});(c.length>0?s(n,c[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),l=_.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:ys(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),u=_.useCallback(function(e){n.current=ds(e),r.current=void 0},[]),d=_.useCallback(function(t){l(t.type,fs(t),t.target,s(t,e.lockRef.current))},[]),f=_.useCallback(function(t){l(t.type,ds(t),t.target,s(t,e.lockRef.current))},[]);_.useEffect(function(){return _s.push(a),e.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:f}),document.addEventListener(`wheel`,c,$o),document.addEventListener(`touchmove`,c,$o),document.addEventListener(`touchstart`,u,$o),function(){_s=_s.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,c,$o),document.removeEventListener(`touchmove`,c,$o),document.removeEventListener(`touchstart`,u,$o)}},[]);var p=e.removeScrollBar,m=e.inert;return _.createElement(_.Fragment,null,m?_.createElement(a,{styles:hs(i)}):null,p?_.createElement(Xo,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function ys(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var bs=ko(Ao,vs),xs=_.forwardRef(function(e,t){return _.createElement(Mo,po({},e,{ref:t,sideCar:bs}))});xs.classNames=Mo.classNames;var Ss=[` `,`Enter`,`ArrowUp`,`ArrowDown`],Cs=[` `,`Enter`],ws=`Select`,[Ts,Es,Ds]=dn(ws),[Os,ks]=nn(ws,[Ds,Ca]),As=Ca(),[js,Ms]=Os(ws),[Ns,Ps]=Os(ws),Fs=e=>{let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:s,onValueChange:c,dir:l,name:u,autoComplete:d,disabled:f,required:p,form:m}=e,h=As(t),[g,v]=_.useState(null),[y,b]=_.useState(null),[x,S]=_.useState(!1),C=pn(l),[w,T]=Qa({prop:r,defaultProp:i??!1,onChange:a,caller:ws}),[E,ee]=Qa({prop:o,defaultProp:s,onChange:c,caller:ws}),D=_.useRef(null),O=g?m||!!g.closest(`form`):!0,[k,A]=_.useState(new Set),te=Array.from(k).map(e=>e.props.value).join(`;`);return(0,L.jsx)(za,{...h,children:(0,L.jsxs)(js,{required:p,scope:t,trigger:g,onTriggerChange:v,valueNode:y,onValueNodeChange:b,valueNodeHasChildren:x,onValueNodeHasChildrenChange:S,contentId:ar(),value:E,onValueChange:ee,open:w,onOpenChange:T,dir:C,triggerPointerDownPosRef:D,disabled:f,children:[(0,L.jsx)(Ts.Provider,{scope:t,children:(0,L.jsx)(Ns,{scope:e.__scopeSelect,onNativeOptionAdd:_.useCallback(e=>{A(t=>new Set(t).add(e))},[]),onNativeOptionRemove:_.useCallback(e=>{A(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),O?(0,L.jsxs)(Ac,{"aria-hidden":!0,required:p,tabIndex:-1,name:u,autoComplete:d,value:E,onChange:e=>ee(e.target.value),disabled:f,form:m,children:[E===void 0?(0,L.jsx)(`option`,{value:``}):null,Array.from(k)]},te):null]})})};Fs.displayName=ws;var Is=`SelectTrigger`,Ls=_.forwardRef((e,t)=>{let{__scopeSelect:n,disabled:r=!1,...i}=e,a=As(n),o=Ms(Is,n),s=o.disabled||r,c=Be(t,o.onTriggerChange),l=Es(n),u=_.useRef(`touch`),[d,f,p]=Mc(e=>{let t=l().filter(e=>!e.disabled),n=Nc(t,e,t.find(e=>e.value===o.value));n!==void 0&&o.onValueChange(n.value)}),m=e=>{s||(o.onOpenChange(!0),p()),e&&(o.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,L.jsx)(Ba,{asChild:!0,...a,children:(0,L.jsx)(bn.button,{type:`button`,role:`combobox`,"aria-controls":o.contentId,"aria-expanded":o.open,"aria-required":o.required,"aria-autocomplete":`none`,dir:o.dir,"data-state":o.open?`open`:`closed`,disabled:s,"data-disabled":s?``:void 0,"data-placeholder":jc(o.value)?``:void 0,...i,ref:c,onClick:V(i.onClick,e=>{e.currentTarget.focus(),u.current!==`mouse`&&m(e)}),onPointerDown:V(i.onPointerDown,e=>{u.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(m(e),e.preventDefault())}),onKeyDown:V(i.onKeyDown,e=>{let t=d.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&f(e.key),!(t&&e.key===` `)&&Ss.includes(e.key)&&(m(),e.preventDefault())})})})});Ls.displayName=Is;var Rs=`SelectValue`,zs=_.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...s}=e,c=Ms(Rs,n),{onValueNodeHasChildrenChange:l}=c,u=a!==void 0,d=Be(t,c.onValueNodeChange);return nr(()=>{l(u)},[l,u]),(0,L.jsx)(bn.span,{...s,ref:d,style:{pointerEvents:`none`},children:jc(c.value)?(0,L.jsx)(L.Fragment,{children:o}):a})});zs.displayName=Rs;var Bs=`SelectIcon`,Vs=_.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...i}=e;return(0,L.jsx)(bn.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})});Vs.displayName=Bs;var Hs=`SelectPortal`,Us=e=>(0,L.jsx)(Wa,{asChild:!0,...e});Us.displayName=Hs;var Ws=`SelectContent`,Gs=_.forwardRef((e,t)=>{let n=Ms(Ws,e.__scopeSelect),[r,i]=_.useState();if(nr(()=>{i(new DocumentFragment)},[]),!n.open){let t=r;return t?y.createPortal((0,L.jsx)(qs,{scope:e.__scopeSelect,children:(0,L.jsx)(Ts.Slot,{scope:e.__scopeSelect,children:(0,L.jsx)(`div`,{children:e.children})})}),t):null}return(0,L.jsx)(Zs,{...e,ref:t})});Gs.displayName=Ws;var Ks=10,[qs,Js]=Os(Ws),Ys=`SelectContentImpl`,Xs=Ga(`SelectContent.RemoveScroll`),Zs=_.forwardRef((e,t)=>{let{__scopeSelect:n,position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:o,side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:g,...v}=e,y=Ms(Ws,n),[b,x]=_.useState(null),[S,C]=_.useState(null),w=Be(t,e=>x(e)),[T,E]=_.useState(null),[ee,D]=_.useState(null),O=Es(n),[k,A]=_.useState(!1),te=_.useRef(!1);_.useEffect(()=>{if(b)return fo(b)},[b]),Rn();let j=_.useCallback(e=>{let[t,...n]=O().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&S&&(S.scrollTop=0),n===r&&S&&(S.scrollTop=S.scrollHeight),n?.focus(),document.activeElement!==i))return},[O,S]),M=_.useCallback(()=>j([T,b]),[j,T,b]);_.useEffect(()=>{k&&M()},[k,M]);let{onOpenChange:N,triggerPointerDownPosRef:P}=y;_.useEffect(()=>{if(b){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(P.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(P.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():b.contains(n.target)||N(!1),document.removeEventListener(`pointermove`,t),P.current=null};return P.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[b,N,P]),_.useEffect(()=>{let e=()=>N(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[N]);let[F,ne]=Mc(e=>{let t=O().filter(e=>!e.disabled),n=Nc(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current.focus())}),re=_.useCallback((e,t,n)=>{let r=!te.current&&!n;(y.value!==void 0&&y.value===t||r)&&(E(e),r&&(te.current=!0))},[y.value]),ie=_.useCallback(()=>b?.focus(),[b]),ae=_.useCallback((e,t,n)=>{let r=!te.current&&!n;(y.value!==void 0&&y.value===t||r)&&D(e)},[y.value]),oe=r===`popper`?tc:$s,I=oe===tc?{side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:g}:{};return(0,L.jsx)(qs,{scope:n,content:b,viewport:S,onViewportChange:C,itemRefCallback:re,selectedItem:T,onItemLeave:ie,itemTextRefCallback:ae,focusSelectedItem:M,selectedItemText:ee,position:r,isPositioned:k,searchRef:F,children:(0,L.jsx)(xs,{as:Xs,allowPinchZoom:!0,children:(0,L.jsx)(Wn,{asChild:!0,trapped:y.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:V(i,e=>{y.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,L.jsx)(An,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>y.onOpenChange(!1),children:(0,L.jsx)(oe,{role:`listbox`,id:y.contentId,"data-state":y.open?`open`:`closed`,dir:y.dir,onContextMenu:e=>e.preventDefault(),...v,...I,onPlaced:()=>A(!0),ref:w,style:{display:`flex`,flexDirection:`column`,outline:`none`,...v.style},onKeyDown:V(v.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&ne(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=O().filter(e=>!e.disabled).map(e=>e.ref.current);if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>j(t)),e.preventDefault()}})})})})})})});Zs.displayName=Ys;var Qs=`SelectItemAlignedPosition`,$s=_.forwardRef((e,t)=>{let{__scopeSelect:n,onPlaced:r,...i}=e,a=Ms(Ws,n),o=Js(Ws,n),[s,c]=_.useState(null),[l,u]=_.useState(null),d=Be(t,e=>u(e)),f=Es(n),p=_.useRef(!1),m=_.useRef(!0),{viewport:h,selectedItem:g,selectedItemText:v,focusSelectedItem:y}=o,b=_.useCallback(()=>{if(a.trigger&&a.valueNode&&s&&l&&h&&g&&v){let e=a.trigger.getBoundingClientRect(),t=l.getBoundingClientRect(),n=a.valueNode.getBoundingClientRect(),i=v.getBoundingClientRect();if(a.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,o=e.left-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-Ks,d=tn(a,[Ks,Math.max(Ks,u-l)]);s.style.minWidth=c+`px`,s.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-Ks,d=tn(a,[Ks,Math.max(Ks,u-l)]);s.style.minWidth=c+`px`,s.style.right=d+`px`}let o=f(),c=window.innerHeight-Ks*2,u=h.scrollHeight,d=window.getComputedStyle(l),m=parseInt(d.borderTopWidth,10),_=parseInt(d.paddingTop,10),y=parseInt(d.borderBottomWidth,10),b=parseInt(d.paddingBottom,10),x=m+_+u+b+y,S=Math.min(g.offsetHeight*5,x),C=window.getComputedStyle(h),w=parseInt(C.paddingTop,10),T=parseInt(C.paddingBottom,10),E=e.top+e.height/2-Ks,ee=c-E,D=g.offsetHeight/2,O=g.offsetTop+D,k=m+_+O,A=x-k;if(k<=E){let e=o.length>0&&g===o[o.length-1].ref.current;s.style.bottom=`0px`;let t=l.clientHeight-h.offsetTop-h.offsetHeight,n=k+Math.max(ee,D+(e?T:0)+t+y);s.style.height=n+`px`}else{let e=o.length>0&&g===o[0].ref.current;s.style.top=`0px`;let t=Math.max(E,m+h.offsetTop+(e?w:0)+D)+A;s.style.height=t+`px`,h.scrollTop=k-E+h.offsetTop}s.style.margin=`${Ks}px 0`,s.style.minHeight=S+`px`,s.style.maxHeight=c+`px`,r?.(),requestAnimationFrame(()=>p.current=!0)}},[f,a.trigger,a.valueNode,s,l,h,g,v,a.dir,r]);nr(()=>b(),[b]);let[x,S]=_.useState();return nr(()=>{l&&S(window.getComputedStyle(l).zIndex)},[l]),(0,L.jsx)(nc,{scope:n,contentWrapper:s,shouldExpandOnScrollRef:p,onScrollButtonChange:_.useCallback(e=>{e&&m.current===!0&&(b(),y?.(),m.current=!1)},[b,y]),children:(0,L.jsx)(`div`,{ref:c,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:x},children:(0,L.jsx)(bn.div,{...i,ref:d,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})});$s.displayName=Qs;var ec=`SelectPopperPosition`,tc=_.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=Ks,...a}=e,o=As(n);return(0,L.jsx)(Va,{...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})});tc.displayName=ec;var[nc,rc]=Os(Ws,{}),ic=`SelectViewport`,ac=_.forwardRef((e,t)=>{let{__scopeSelect:n,nonce:r,...i}=e,a=Js(ic,n),o=rc(ic,n),s=Be(t,a.onViewportChange),c=_.useRef(0);return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`},nonce:r}),(0,L.jsx)(Ts.Slot,{scope:n,children:(0,L.jsx)(bn.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:s,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:V(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=o;if(r?.current&&n){let e=Math.abs(c.current-t.scrollTop);if(e>0){let r=window.innerHeight-Ks*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o0?s:0,n.style.justifyContent=`flex-end`)}}}c.current=t.scrollTop})})})]})});ac.displayName=ic;var oc=`SelectGroup`,[sc,cc]=Os(oc),lc=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=ar();return(0,L.jsx)(sc,{scope:n,id:i,children:(0,L.jsx)(bn.div,{role:`group`,"aria-labelledby":i,...r,ref:t})})});lc.displayName=oc;var uc=`SelectLabel`,dc=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=cc(uc,n);return(0,L.jsx)(bn.div,{id:i.id,...r,ref:t})});dc.displayName=uc;var fc=`SelectItem`,[pc,mc]=Os(fc),hc=_.forwardRef((e,t)=>{let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...o}=e,s=Ms(fc,n),c=Js(fc,n),l=s.value===r,[u,d]=_.useState(a??``),[f,p]=_.useState(!1),m=Be(t,e=>c.itemRefCallback?.(e,r,i)),h=ar(),g=_.useRef(`touch`),v=()=>{i||(s.onValueChange(r),s.onOpenChange(!1))};if(r===``)throw Error(`A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return(0,L.jsx)(pc,{scope:n,value:r,disabled:i,textId:h,isSelected:l,onItemTextChange:_.useCallback(e=>{d(t=>t||(e?.textContent??``).trim())},[]),children:(0,L.jsx)(Ts.ItemSlot,{scope:n,value:r,disabled:i,textValue:u,children:(0,L.jsx)(bn.div,{role:`option`,"aria-labelledby":h,"data-highlighted":f?``:void 0,"aria-selected":l&&f,"data-state":l?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...o,ref:m,onFocus:V(o.onFocus,()=>p(!0)),onBlur:V(o.onBlur,()=>p(!1)),onClick:V(o.onClick,()=>{g.current!==`mouse`&&v()}),onPointerUp:V(o.onPointerUp,()=>{g.current===`mouse`&&v()}),onPointerDown:V(o.onPointerDown,e=>{g.current=e.pointerType}),onPointerMove:V(o.onPointerMove,e=>{g.current=e.pointerType,i?c.onItemLeave?.():g.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:V(o.onPointerLeave,e=>{e.currentTarget===document.activeElement&&c.onItemLeave?.()}),onKeyDown:V(o.onKeyDown,e=>{c.searchRef?.current!==``&&e.key===` `||(Cs.includes(e.key)&&v(),e.key===` `&&e.preventDefault())})})})})});hc.displayName=fc;var gc=`SelectItemText`,_c=_.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,...a}=e,o=Ms(gc,n),s=Js(gc,n),c=mc(gc,n),l=Ps(gc,n),[u,d]=_.useState(null),f=Be(t,e=>d(e),c.onItemTextChange,e=>s.itemTextRefCallback?.(e,c.value,c.disabled)),p=u?.textContent,m=_.useMemo(()=>(0,L.jsx)(`option`,{value:c.value,disabled:c.disabled,children:p},c.value),[c.disabled,c.value,p]),{onNativeOptionAdd:h,onNativeOptionRemove:g}=l;return nr(()=>(h(m),()=>g(m)),[h,g,m]),(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(bn.span,{id:c.textId,...a,ref:f}),c.isSelected&&o.valueNode&&!o.valueNodeHasChildren?y.createPortal(a.children,o.valueNode):null]})});_c.displayName=gc;var vc=`SelectItemIndicator`,yc=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return mc(vc,n).isSelected?(0,L.jsx)(bn.span,{"aria-hidden":!0,...r,ref:t}):null});yc.displayName=vc;var bc=`SelectScrollUpButton`,xc=_.forwardRef((e,t)=>{let n=Js(bc,e.__scopeSelect),r=rc(bc,e.__scopeSelect),[i,a]=_.useState(!1),o=Be(t,r.onScrollButtonChange);return nr(()=>{if(n.viewport&&n.isPositioned){let e=function(){a(t.scrollTop>0)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,L.jsx)(wc,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null});xc.displayName=bc;var Sc=`SelectScrollDownButton`,Cc=_.forwardRef((e,t)=>{let n=Js(Sc,e.__scopeSelect),r=rc(Sc,e.__scopeSelect),[i,a]=_.useState(!1),o=Be(t,r.onScrollButtonChange);return nr(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;a(Math.ceil(t.scrollTop)t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,L.jsx)(wc,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});Cc.displayName=Sc;var wc=_.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=Js(`SelectScrollButton`,n),o=_.useRef(null),s=Es(n),c=_.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return _.useEffect(()=>()=>c(),[c]),nr(()=>{s().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[s]),(0,L.jsx)(bn.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:V(i.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:V(i.onPointerMove,()=>{a.onItemLeave?.(),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:V(i.onPointerLeave,()=>{c()})})}),Tc=`SelectSeparator`,Ec=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return(0,L.jsx)(bn.div,{"aria-hidden":!0,...r,ref:t})});Ec.displayName=Tc;var Dc=`SelectArrow`,Oc=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=As(n),a=Ms(Dc,n),o=Js(Dc,n);return a.open&&o.position===`popper`?(0,L.jsx)(Ha,{...i,...r,ref:t}):null});Oc.displayName=Dc;var kc=`SelectBubbleInput`,Ac=_.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{let i=_.useRef(null),a=Be(r,i),o=to(t);return _.useEffect(()=>{let e=i.current;if(!e)return;let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(o!==t&&r){let n=new Event(`change`,{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[o,t]),(0,L.jsx)(bn.select,{...n,style:{...no,...n.style},ref:a,defaultValue:t})});Ac.displayName=kc;function jc(e){return e===``||e===void 0}function Mc(e){let t=Sn(e),n=_.useRef(``),r=_.useRef(0),i=_.useCallback(e=>{let i=n.current+e;t(i),(function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))})(i)},[t]),a=_.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return _.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}function Nc(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=Pc(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.textValue.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function Pc(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var Fc=Fs,Ic=Ls,Lc=zs,Rc=Vs,zc=Us,Bc=Gs,Vc=ac,Hc=lc,Uc=dc,Wc=hc,Gc=_c,Kc=yc,qc=xc,Jc=Cc,Yc=Ec,Xc=Fc,Zc=Hc,Qc=Lc,$c=_.forwardRef(({className:e,children:t,...n},r)=>(0,L.jsxs)(Ic,{ref:r,className:B(`flex h-9 w-full items-center justify-between gap-2 rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1`,e),...n,children:[t,(0,L.jsx)(Rc,{asChild:!0,children:(0,L.jsx)(ye,{className:`h-4 w-4 opacity-50`})})]}));$c.displayName=Ic.displayName;var el=_.forwardRef(({className:e,...t},n)=>(0,L.jsx)(qc,{ref:n,className:B(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,L.jsx)(be,{className:`h-4 w-4`})}));el.displayName=qc.displayName;var tl=_.forwardRef(({className:e,...t},n)=>(0,L.jsx)(Jc,{ref:n,className:B(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,L.jsx)(ye,{className:`h-4 w-4`})}));tl.displayName=Jc.displayName;var nl=_.forwardRef(({className:e,children:t,position:n=`popper`,...r},i)=>(0,L.jsx)(zc,{children:(0,L.jsxs)(Bc,{ref:i,className:B(`relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,...r,children:[(0,L.jsx)(el,{}),(0,L.jsx)(Vc,{className:B(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]`),children:t}),(0,L.jsx)(tl,{})]})}));nl.displayName=Bc.displayName;var rl=_.forwardRef(({className:e,...t},n)=>(0,L.jsx)(Uc,{ref:n,className:B(`px-2 py-1.5 text-[10.5px] font-semibold uppercase tracking-wider text-muted-foreground`,e),...t}));rl.displayName=Uc.displayName;var il=_.forwardRef(({className:e,children:t,...n},r)=>(0,L.jsxs)(Wc,{ref:r,className:B(`relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,e),...n,children:[(0,L.jsx)(`span`,{className:`absolute right-2 flex h-3.5 w-3.5 items-center justify-center`,children:(0,L.jsx)(Kc,{children:(0,L.jsx)(ve,{className:`h-4 w-4`})})}),(0,L.jsx)(Gc,{children:t})]}));il.displayName=Wc.displayName;var al=_.forwardRef(({className:e,...t},n)=>(0,L.jsx)(Yc,{ref:n,className:B(`-mx-1 my-1 h-px bg-muted`,e),...t}));al.displayName=Yc.displayName;function ol(e,t){return _.useReducer((e,n)=>t[e][n]??e,e)}var sl=e=>{let{present:t,children:n}=e,r=cl(t),i=typeof n==`function`?n({present:r.isPresent}):_.Children.only(n),a=Be(r.ref,ul(i));return typeof n==`function`||r.isPresent?_.cloneElement(i,{ref:a}):null};sl.displayName=`Presence`;function cl(e){let[t,n]=_.useState(),r=_.useRef(null),i=_.useRef(e),a=_.useRef(`none`),[o,s]=ol(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return _.useEffect(()=>{let e=ll(r.current);a.current=o===`mounted`?e:`none`},[o]),nr(()=>{let t=r.current,n=i.current;if(n!==e){let r=a.current,o=ll(t);e?s(`MOUNT`):o===`none`||t?.display===`none`?s(`UNMOUNT`):s(n&&r!==o?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,s]),nr(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,o=a=>{let o=ll(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(s(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},c=e=>{e.target===t&&(a.current=ll(r.current))};return t.addEventListener(`animationstart`,c),t.addEventListener(`animationcancel`,o),t.addEventListener(`animationend`,o),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,c),t.removeEventListener(`animationcancel`,o),t.removeEventListener(`animationend`,o)}}else s(`ANIMATION_END`)},[t,s]),{isPresent:[`mounted`,`unmountSuspended`].includes(o),ref:_.useCallback(e=>{r.current=e?getComputedStyle(e):null,n(e)},[])}}function ll(e){return e?.animationName||`none`}function ul(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var dl=Symbol(`radix.slottable`);function fl(e){let t=({children:e})=>(0,L.jsx)(L.Fragment,{children:e});return t.displayName=`${e}.Slottable`,t.__radixId=dl,t}var[pl,ml]=nn(`Tooltip`,[Ca]),hl=Ca(),gl=`TooltipProvider`,_l=700,vl=`tooltip.open`,[yl,bl]=pl(gl),xl=e=>{let{__scopeTooltip:t,delayDuration:n=_l,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=_.useRef(!0),s=_.useRef(!1),c=_.useRef(0);return _.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,L.jsx)(yl,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:_.useCallback(()=>{window.clearTimeout(c.current),o.current=!1},[]),onClose:_.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r)},[r]),isPointerInTransitRef:s,onPointerInTransitChange:_.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})};xl.displayName=gl;var Sl=`Tooltip`,[Cl,wl]=pl(Sl),Tl=e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,c=bl(Sl,e.__scopeTooltip),l=hl(t),[u,d]=_.useState(null),f=ar(),p=_.useRef(0),m=o??c.disableHoverableContent,h=s??c.delayDuration,g=_.useRef(!1),[v,y]=Qa({prop:r,defaultProp:i??!1,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(vl))):c.onClose(),a?.(e)},caller:Sl}),b=_.useMemo(()=>v?g.current?`delayed-open`:`instant-open`:`closed`,[v]),x=_.useCallback(()=>{window.clearTimeout(p.current),p.current=0,g.current=!1,y(!0)},[y]),S=_.useCallback(()=>{window.clearTimeout(p.current),p.current=0,y(!1)},[y]),C=_.useCallback(()=>{window.clearTimeout(p.current),p.current=window.setTimeout(()=>{g.current=!0,y(!0),p.current=0},h)},[h,y]);return _.useEffect(()=>()=>{p.current&&=(window.clearTimeout(p.current),0)},[]),(0,L.jsx)(za,{...l,children:(0,L.jsx)(Cl,{scope:t,contentId:f,open:v,stateAttribute:b,trigger:u,onTriggerChange:d,onTriggerEnter:_.useCallback(()=>{c.isOpenDelayedRef.current?C():x()},[c.isOpenDelayedRef,C,x]),onTriggerLeave:_.useCallback(()=>{m?S():(window.clearTimeout(p.current),p.current=0)},[S,m]),onOpen:x,onClose:S,disableHoverableContent:m,children:n})})};Tl.displayName=Sl;var El=`TooltipTrigger`,Dl=_.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=wl(El,n),a=bl(El,n),o=hl(n),s=Be(t,_.useRef(null),i.onTriggerChange),c=_.useRef(!1),l=_.useRef(!1),u=_.useCallback(()=>c.current=!1,[]);return _.useEffect(()=>()=>document.removeEventListener(`pointerup`,u),[u]),(0,L.jsx)(Ba,{asChild:!0,...o,children:(0,L.jsx)(bn.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:s,onPointerMove:V(e.onPointerMove,e=>{e.pointerType!==`touch`&&!l.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),l.current=!0)}),onPointerLeave:V(e.onPointerLeave,()=>{i.onTriggerLeave(),l.current=!1}),onPointerDown:V(e.onPointerDown,()=>{i.open&&i.onClose(),c.current=!0,document.addEventListener(`pointerup`,u,{once:!0})}),onFocus:V(e.onFocus,()=>{c.current||i.onOpen()}),onBlur:V(e.onBlur,i.onClose),onClick:V(e.onClick,i.onClose)})})});Dl.displayName=El;var Ol=`TooltipPortal`,[kl,Al]=pl(Ol,{forceMount:void 0}),jl=e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=wl(Ol,t);return(0,L.jsx)(kl,{scope:t,forceMount:n,children:(0,L.jsx)(sl,{present:n||a.open,children:(0,L.jsx)(Wa,{asChild:!0,container:i,children:r})})})};jl.displayName=Ol;var Ml=`TooltipContent`,Nl=_.forwardRef((e,t)=>{let n=Al(Ml,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=wl(Ml,e.__scopeTooltip);return(0,L.jsx)(sl,{present:r||o.open,children:o.disableHoverableContent?(0,L.jsx)(Rl,{side:i,...a,ref:t}):(0,L.jsx)(Pl,{side:i,...a,ref:t})})}),Pl=_.forwardRef((e,t)=>{let n=wl(Ml,e.__scopeTooltip),r=bl(Ml,e.__scopeTooltip),i=_.useRef(null),a=Be(t,i),[o,s]=_.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=_.useCallback(()=>{s(null),d(!1)},[d]),p=_.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=Y(r,J(r,n.getBoundingClientRect())),a=X(t.getBoundingClientRect());s(Bl([...i,...a])),d(!0)},[d]);return _.useEffect(()=>()=>f(),[f]),_.useEffect(()=>{if(c&&u){let e=e=>p(e,u),t=e=>p(e,c);return c.addEventListener(`pointerleave`,e),u.addEventListener(`pointerleave`,t),()=>{c.removeEventListener(`pointerleave`,e),u.removeEventListener(`pointerleave`,t)}}},[c,u,p,f]),_.useEffect(()=>{if(o){let e=e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||u?.contains(t),i=!zl(n,o);r?f():i&&(f(),l())};return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,u,o,l,f]),(0,L.jsx)(Rl,{...e,ref:a})}),[Fl,Il]=pl(Sl,{isInside:!1}),Ll=fl(`TooltipContent`),Rl=_.forwardRef((e,t)=>{let{__scopeTooltip:n,children:r,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:o,...s}=e,c=wl(Ml,n),l=hl(n),{onClose:u}=c;return _.useEffect(()=>(document.addEventListener(vl,u),()=>document.removeEventListener(vl,u)),[u]),_.useEffect(()=>{if(c.trigger){let e=e=>{e.target?.contains(c.trigger)&&u()};return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[c.trigger,u]),(0,L.jsx)(An,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:u,children:(0,L.jsxs)(Va,{"data-state":c.stateAttribute,...l,...s,ref:t,style:{...s.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,L.jsx)(Ll,{children:r}),(0,L.jsx)(Fl,{scope:n,isInside:!0,children:(0,L.jsx)(ao,{id:c.contentId,role:`tooltip`,children:i||r})})]})})});Nl.displayName=Ml;var K=`TooltipArrow`,q=_.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=hl(n);return Il(K,n).isInside?null:(0,L.jsx)(Ha,{...i,...r,ref:t})});q.displayName=K;function J(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function Y(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function X(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function zl(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function Bl(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y)),Vl(t)}function Vl(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var Hl=xl,Ul=Tl,Wl=Dl,Gl=jl,Kl=Nl,ql=Hl,Jl=Ul,Yl=Wl,Xl=_.forwardRef(({className:e,sideOffset:t=6,...n},r)=>(0,L.jsx)(Gl,{children:(0,L.jsx)(Kl,{ref:r,sideOffset:t,className:B(`z-50 max-w-xs overflow-hidden rounded-md bg-foreground px-2 py-1 text-xs text-background shadow-sm animate-in fade-in-0 zoom-in-95`,e),...n})}));Xl.displayName=Kl.displayName;var Zl=[`nvlink`,`nvswitch`,`pcie`,`infiniband`,`ethernet`],Ql=`H100-SXM5`,$l=80;function eu(e){let t=e.gpus[0];return{model:t?.model??Ql,count:e.gpus.length||1,total:t?.memory_total_gb??$l,free:t?.memory_free_gb??$l}}function tu(e,t){return Array.from({length:Math.max(1,t.count)},(n,r)=>({id:`${e}-gpu-${r}`,model:t.model,memory_total_gb:t.total,memory_free_gb:t.free,in_use:!1}))}function nu({nodes:e,setNodes:t,skus:n}){let r=ru(n,e=>e.vendor||`other`),i=()=>{let r=e.length,i=`node-${String(r+1).padStart(2,`0`)}`,a=n[0],o=a?.memory_gb??$l,s={model:a?.id??Ql,count:1,total:o,free:o};t(e=>[...e,{name:i,interconnect:`nvlink`,intra_node_bandwidth_gbps:900,inter_node_bandwidth_gbps:25,gpus:tu(i,s)}])},a=e=>t(t=>t.filter((t,n)=>n!==e)),o=(e,n)=>t(t=>t.map((t,r)=>r===e?{...t,interconnect:n}:t)),s=(e,r)=>t(t=>t.map((t,i)=>{if(i!==e)return t;let a=r.name??t.name,o={...eu(t),...r};if(r.model&&r.model!==eu(t).model){let e=n.find(e=>e.id===r.model);e&&(o.total=e.memory_gb,o.free=e.memory_gb)}return{...t,name:a,gpus:tu(a,o)}}));return(0,L.jsxs)(`div`,{className:`space-y-2.5`,children:[e.map((t,n)=>{let i=eu(t),c=i.count*i.free;return(0,L.jsxs)(`div`,{className:`rounded-lg border bg-background p-2.5`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,L.jsx)(en,{value:t.name,onChange:e=>s(n,{name:e.target.value}),placeholder:`node name`,"aria-label":`Node name`,className:`h-8 flex-1 text-sm`}),(0,L.jsxs)(Xc,{value:t.interconnect??`nvlink`,onValueChange:e=>o(n,e),children:[(0,L.jsx)($c,{className:`h-8 w-[120px] text-xs`,"aria-label":`Interconnect`,children:(0,L.jsx)(Qc,{})}),(0,L.jsx)(nl,{children:Zl.map(e=>(0,L.jsx)(il,{value:e,children:e},e))})]}),(0,L.jsxs)(Jl,{children:[(0,L.jsx)(Yl,{asChild:!0,children:(0,L.jsx)($t,{variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0 text-muted-foreground hover:text-destructive`,onClick:()=>a(n),"aria-label":`Remove ${t.name}`,disabled:e.length<=1,children:(0,L.jsx)(je,{className:`h-3.5 w-3.5`})})}),(0,L.jsx)(Xl,{children:`Remove node`})]})]}),(0,L.jsxs)(`div`,{className:`mt-2 flex items-end gap-2`,children:[(0,L.jsxs)(`label`,{className:`flex-1 space-y-1`,children:[(0,L.jsx)(`span`,{className:`text-[10.5px] text-muted-foreground`,children:`GPU type`}),(0,L.jsxs)(Xc,{value:i.model,onValueChange:e=>s(n,{model:e}),children:[(0,L.jsx)($c,{className:`h-8 text-xs`,"aria-label":`GPU type`,children:(0,L.jsx)(Qc,{})}),(0,L.jsx)(nl,{children:Object.entries(r).map(([e,t])=>(0,L.jsxs)(Zc,{children:[(0,L.jsx)(rl,{children:e}),t.map(e=>(0,L.jsxs)(il,{value:e.id,children:[e.id,` `,(0,L.jsxs)(`span`,{className:`text-muted-foreground`,children:[`(`,e.memory_gb,` GB)`]})]},e.id))]},e))})]})]}),(0,L.jsxs)(`label`,{className:`w-16 space-y-1`,children:[(0,L.jsx)(`span`,{className:`text-[10.5px] text-muted-foreground`,children:`count`}),(0,L.jsx)(en,{type:`number`,min:1,value:i.count,onChange:e=>s(n,{count:Math.max(1,Number(e.target.value)||1)}),className:`h-8 text-center text-xs`,"aria-label":`GPU count`})]}),(0,L.jsxs)(`label`,{className:`w-20 space-y-1`,children:[(0,L.jsx)(`span`,{className:`text-[10.5px] text-muted-foreground`,children:`free GB`}),(0,L.jsx)(en,{type:`number`,value:i.free,onChange:e=>s(n,{free:Number(e.target.value)}),className:`h-8 text-right text-xs`,"aria-label":`Free memory per GPU (GB)`})]})]}),(0,L.jsxs)(`p`,{className:`mt-1.5 text-[11px] text-muted-foreground`,children:[i.count,`× `,i.model,` · `,c.toFixed(0),` GB free`]})]},n)}),(0,L.jsx)($t,{variant:`outline`,size:`sm`,onClick:i,className:`w-full`,children:`+ Add node`})]})}function ru(e,t){let n={};for(let r of e){let e=t(r);n[e]||(n[e]=[]),n[e].push(r)}return n}function iu({cluster:e,colors:t}){if(!e.gpus.length)return null;let n=ou(e.gpus);return(0,L.jsxs)(`div`,{className:`space-y-4`,children:[(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground`,children:[(0,L.jsxs)(`span`,{children:[(0,L.jsx)(`span`,{className:`font-semibold text-foreground`,children:e.used_gpus}),`/`,e.total_gpus,` GPUs in use`]}),(0,L.jsxs)(`span`,{children:[(0,L.jsx)(`span`,{className:`font-semibold text-foreground`,children:e.used_mem_gb.toFixed(0)}),` GB used ·`,` `,e.free_mem_gb.toFixed(0),` GB free of `,e.total_mem_gb.toFixed(0),` GB`]})]}),n.map(([e,n])=>(0,L.jsxs)(`div`,{className:`space-y-2`,children:[(0,L.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground`,children:e}),(0,L.jsx)(`div`,{className:`grid grid-cols-1 gap-2 sm:grid-cols-2 xl:grid-cols-3`,children:n.map(e=>(0,L.jsx)(au,{g:e,colors:t},e.id))})]},e))]})}function au({g:e,colors:t}){let n=e.usable_gb||e.capacity_gb||1,r=Math.min(100,e.used_gb/n*100);return(0,L.jsxs)(`div`,{className:B(`rounded-md border bg-background p-2.5`,e.dedicated&&`border-foreground/30`,e.tenants?.length?``:`opacity-70`),children:[(0,L.jsxs)(`div`,{className:`mb-1.5 flex items-baseline justify-between gap-2`,children:[(0,L.jsx)(`span`,{className:`truncate font-mono text-[11px] font-medium`,children:e.id}),(0,L.jsx)(`span`,{className:`shrink-0 text-[10px] text-muted-foreground`,children:e.sku})]}),(0,L.jsx)(`div`,{className:`flex h-2.5 w-full overflow-hidden rounded-full bg-muted`,role:`img`,"aria-label":`${e.id} usage`,children:(e.tenants??[]).map((e,r)=>{let i=Math.max(0,e.used_gb)/n*100;return i<=0?null:(0,L.jsxs)(Jl,{children:[(0,L.jsx)(Yl,{asChild:!0,children:(0,L.jsx)(`div`,{style:{width:`${i}%`},className:B(`h-full`,t[e.label]??`bg-foreground`)})}),(0,L.jsxs)(Xl,{children:[e.label,`: `,e.used_gb.toFixed(1),` GB`]})]},`${e.label}-${r}`)})}),(0,L.jsxs)(`div`,{className:`mt-1 flex items-center justify-between text-[10px] text-muted-foreground`,children:[(0,L.jsxs)(`span`,{children:[e.used_gb.toFixed(0),` / `,e.usable_gb.toFixed(0),` GB (`,r.toFixed(0),`%)`]}),e.dedicated&&(0,L.jsx)(`span`,{className:`text-foreground/70`,children:`dedicated`})]})]})}function ou(e){let t=new Map;for(let n of e){let e=t.get(n.node)??[];e.push(n),t.set(n.node,e)}return[...t.entries()]}function su({code:e,label:t,className:n}){let[r,i]=(0,_.useState)(!1);async function a(){try{await navigator.clipboard.writeText(e),i(!0),j.success(t?`${t} copied`:`Copied to clipboard`),setTimeout(()=>i(!1),1500)}catch{j.error(`Failed to copy`)}}return(0,L.jsxs)(`div`,{className:B(`group relative overflow-hidden rounded-lg border bg-muted/40`,n),children:[(0,L.jsx)(`pre`,{className:`overflow-x-auto whitespace-pre-wrap break-all p-3 pr-12 font-mono text-[11.5px] leading-relaxed text-foreground`,children:e}),(0,L.jsx)($t,{type:`button`,variant:`ghost`,size:`icon`,onClick:a,"aria-label":`Copy`,className:`absolute right-1.5 top-1.5 h-7 w-7`,children:r?(0,L.jsx)(ve,{className:`h-3.5 w-3.5`}):(0,L.jsx)(xe,{className:`h-3.5 w-3.5`})})]})}function cu({capacity:e,segments:t,className:n}){let r=e||1,i=t.filter(e=>e.key!==`headroom`).reduce((e,t)=>e+Math.max(0,t.gb),0);return(0,L.jsxs)(`div`,{className:B(`space-y-2`,n),children:[(0,L.jsx)(`div`,{className:`flex h-2.5 w-full overflow-hidden rounded-full bg-muted`,role:`img`,"aria-label":`Memory: ${i.toFixed(1)} of ${e.toFixed(0)} GB used`,children:t.map(e=>{let t=Math.max(0,e.gb)/r*100;return t<=0?null:(0,L.jsxs)(Jl,{children:[(0,L.jsx)(Yl,{asChild:!0,children:(0,L.jsx)(`div`,{style:{width:`${t}%`},className:B(`h-full transition-all`,e.className)})}),(0,L.jsxs)(Xl,{children:[e.label,`: `,e.gb.toFixed(1),` GB (`,t.toFixed(1),`%)`]})]},e.key)})}),(0,L.jsx)(`div`,{className:`flex flex-wrap gap-x-3 gap-y-1 text-[11px] text-muted-foreground`,children:t.map(e=>(0,L.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,L.jsx)(`span`,{className:B(`h-2 w-2 rounded-sm`,e.className),"aria-hidden":!0}),e.label,` `,e.gb.toFixed(1),` GB`]},e.key))})]})}var lu=rt(`inline-flex items-center rounded-md border px-2 py-0.5 text-xs font-medium transition-colors`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground`,secondary:`border-transparent bg-secondary text-secondary-foreground`,destructive:`border-transparent bg-destructive text-destructive-foreground`,outline:`text-foreground`,success:`border-transparent bg-brand-soft text-brand`,warn:`border-transparent bg-warn-soft text-warn`}},defaultVariants:{variant:`default`}});function uu({className:e,variant:t,...n}){return(0,L.jsx)(`div`,{className:B(lu({variant:t}),e),...n})}var du=_.forwardRef(({className:e,...t},n)=>(0,L.jsx)(`div`,{ref:n,className:B(`rounded-xl border bg-card text-card-foreground shadow-sm`,e),...t}));du.displayName=`Card`;var fu=_.forwardRef(({className:e,...t},n)=>(0,L.jsx)(`div`,{ref:n,className:B(`flex flex-col space-y-1.5 p-5`,e),...t}));fu.displayName=`CardHeader`;var pu=_.forwardRef(({className:e,...t},n)=>(0,L.jsx)(`div`,{ref:n,className:B(`font-semibold leading-none tracking-tight`,e),...t}));pu.displayName=`CardTitle`;var mu=_.forwardRef(({className:e,...t},n)=>(0,L.jsx)(`div`,{ref:n,className:B(`text-sm text-muted-foreground`,e),...t}));mu.displayName=`CardDescription`;var hu=_.forwardRef(({className:e,...t},n)=>(0,L.jsx)(`div`,{ref:n,className:B(`p-5 pt-0`,e),...t}));hu.displayName=`CardContent`;var gu=_.forwardRef(({className:e,...t},n)=>(0,L.jsx)(`div`,{ref:n,className:B(`flex items-center p-5 pt-0`,e),...t}));gu.displayName=`CardFooter`;function _u({className:e,...t}){return(0,L.jsx)(`div`,{className:B(`animate-pulse rounded-md bg-muted`,e),...t})}var vu=[`bg-emerald-500`,`bg-sky-500`,`bg-violet-500`,`bg-amber-500`,`bg-rose-500`,`bg-cyan-500`,`bg-fuchsia-500`,`bg-lime-600`,`bg-orange-500`,`bg-indigo-500`];function yu(e){let t={},n=0;for(let r of e)r in t||(t[r]=vu[n%vu.length],n++);return t}var bu={feasible:{label:`Feasible`,tone:`success`,description:`At least one configuration fits and meets the SLOs.`},fit_ok:{label:`Fits`,tone:`success`},all_fit:{label:`All models fit`,tone:`success`,description:`Every model was placed on the shared GPU inventory.`},partial_fit:{label:`Partial fit`,tone:`warn`,description:`Some models fit; others could not be placed.`},none_fit:{label:`Nothing fits`,tone:`destructive`,description:`No model could be placed on the inventory.`},no_models:{label:`No models`,tone:`muted`,description:`Add a model to plan.`},infeasible_oom:{label:`Out of memory`,tone:`destructive`,description:`No configuration fits within the available GPU memory.`},infeasible_slo:{label:`SLO miss`,tone:`destructive`,description:`Configurations fit but none meet the requested latency targets.`},infeasible_topology:{label:`Topology infeasible`,tone:`destructive`,description:`No legal placement exists for the requested parallelism.`},model_unsupported:{label:`Model unsupported`,tone:`destructive`,description:`The model architecture is not recognized by the planner.`},model_unreachable:{label:`Model unreachable`,tone:`destructive`,description:`Could not fetch the model metadata from Hugging Face.`}};function xu(e){return bu[e]??{label:e.replace(/_/g,` `),tone:`muted`}}function Su({loading:e,error:t,resp:n,advanced:r}){if(t)return(0,L.jsxs)(du,{className:`border-destructive/40`,children:[(0,L.jsx)(fu,{className:`pb-2`,children:(0,L.jsx)(pu,{className:`text-sm text-destructive`,children:`Error`})}),(0,L.jsx)(hu,{className:`text-sm text-muted-foreground`,children:t})]});if(e&&!n)return(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(_u,{className:`h-7 w-40`}),(0,L.jsx)(_u,{className:`h-32 w-full`}),(0,L.jsx)(_u,{className:`h-24 w-full`})]});if(!n)return(0,L.jsx)(`div`,{className:`flex h-full min-h-[40vh] items-center justify-center text-center`,children:(0,L.jsxs)(`div`,{className:`max-w-sm space-y-1`,children:[(0,L.jsx)(`p`,{className:`text-sm font-medium`,children:`Add models and GPUs to see how they fit.`}),(0,L.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Fitment and placement update live as you edit.`})]})});let i=xu(n.verdict),a=yu(n.models.map(e=>e.label)),o=n.models.filter(e=>e.fitted).length;return(0,L.jsxs)(`div`,{className:`space-y-5`,children:[(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,L.jsx)(uu,{variant:Du(i.tone),children:i.label}),(0,L.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[o,`/`,n.models.length,` models placed`,n.diagnostics?.elapsed_ms!=null&&` · ${n.diagnostics.elapsed_ms} ms`]})]}),n.warnings?.map((e,t)=>(0,L.jsx)(`p`,{className:`rounded-md border border-warn/30 bg-warn-soft/40 px-3 py-2 text-xs text-warn`,children:e},t)),(0,L.jsxs)(du,{children:[(0,L.jsx)(fu,{className:`pb-3`,children:(0,L.jsx)(pu,{className:`text-sm`,children:`Cluster placement`})}),(0,L.jsx)(hu,{children:(0,L.jsx)(iu,{cluster:n.cluster,colors:a})})]}),(0,L.jsx)(`div`,{className:`space-y-3`,children:n.models.map(e=>(0,L.jsx)(Cu,{m:e,color:a[e.label],advanced:r},`${e.label}-${e.hf_id}`))})]})}function Cu({m:e,color:t,advanced:n}){let r=e.chosen;return(0,L.jsxs)(du,{className:B(!e.fitted&&`border-destructive/40`),children:[(0,L.jsxs)(fu,{className:`flex flex-row items-center justify-between space-y-0 pb-2`,children:[(0,L.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,L.jsx)(`span`,{className:B(`h-3 w-3 shrink-0 rounded-sm`,t),"aria-hidden":!0}),(0,L.jsxs)(`div`,{className:`min-w-0`,children:[(0,L.jsx)(`div`,{className:`truncate text-sm font-medium`,children:e.label}),e.label!==e.hf_id&&(0,L.jsx)(`div`,{className:`truncate font-mono text-[11px] text-muted-foreground`,children:e.hf_id})]})]}),(0,L.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[e.fitted&&r&&!r.meets_slo&&(0,L.jsx)(uu,{variant:`warn`,children:`SLO missed`}),e.fitted?(0,L.jsx)(uu,{variant:`success`,children:`placed`}):(0,L.jsx)(uu,{variant:`destructive`,children:`no fit`})]})]}),(0,L.jsxs)(hu,{className:`space-y-3`,children:[!e.fitted&&(0,L.jsx)(`p`,{className:`text-xs text-destructive`,children:e.reason}),r&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-1 text-xs`,children:[(0,L.jsx)(Eu,{label:`quant`,value:`${r.engine_config.quantization} · kv=${r.engine_config.kv_cache_dtype}`}),(0,L.jsx)(Eu,{label:`topology`,value:Tu(r)}),(0,L.jsx)(Eu,{label:`GPUs`,value:`${e.gpu_ids?.length??r.placement.gpu_ids.length}`}),(0,L.jsx)(Eu,{label:`per-GPU`,value:`${r.memory_per_gpu_gb.total_used.toFixed(1)} GB`}),e.dedicated&&(0,L.jsx)(`span`,{className:`text-muted-foreground`,children:`dedicated`}),(e.replicas??1)>1&&(0,L.jsxs)(`span`,{className:`text-muted-foreground`,children:[`×`,e.replicas,` replicas`]})]}),e.gpu_ids&&e.gpu_ids.length>0&&(0,L.jsx)(`div`,{className:`font-mono text-[10.5px] text-muted-foreground`,children:e.gpu_ids.join(` `)}),n&&(0,L.jsx)(wu,{cfg:r,altCount:e.alternatives?.length??0})]})]})]})}function wu({cfg:e,altCount:t}){let n=e.memory_per_gpu_gb,r=e.performance_estimate;return(0,L.jsxs)(`details`,{className:`group rounded-md border bg-muted/20 p-2.5 text-xs`,children:[(0,L.jsxs)(`summary`,{className:`flex cursor-pointer items-center gap-1 font-medium text-muted-foreground hover:text-foreground`,children:[(0,L.jsx)(ye,{className:`h-3.5 w-3.5 transition-transform group-open:rotate-180`}),`Performance, memory & command`,t>0&&(0,L.jsxs)(`span`,{className:`ml-1 font-normal`,children:[`· `,t,` alternative config(s)`]})]}),(0,L.jsxs)(`div`,{className:`mt-3 space-y-3`,children:[(0,L.jsxs)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1`,children:[(0,L.jsx)(Eu,{label:`TTFT p95`,value:`${r.ttft_ms_p95.toFixed(0)} ms`}),(0,L.jsx)(Eu,{label:`TPOT p95`,value:`${r.tpot_ms_p95.toFixed(0)} ms`}),(0,L.jsx)(Eu,{label:`decode/user`,value:`${r.decode_tokens_per_sec_per_user.toFixed(0)} tok/s`}),(0,L.jsx)(Eu,{label:`aggregate`,value:`${r.decode_tokens_per_sec_aggregate.toFixed(0)} tok/s`}),(0,L.jsx)(Eu,{label:`bottleneck`,value:`${r.bottleneck} (${r.confidence})`})]}),(0,L.jsx)(cu,{capacity:n.total_capacity||n.total_used,segments:[{key:`weights`,label:`weights`,gb:n.weights,className:`bg-foreground`},{key:`kv`,label:`KV cache`,gb:n.kv_cache_reserved,className:`bg-warn`},{key:`activations`,label:`activations`,gb:n.activations_peak,className:`bg-destructive/80`},{key:`overhead`,label:`overhead`,gb:n.framework_overhead,className:`bg-muted-foreground/50`},{key:`headroom`,label:`headroom`,gb:n.headroom,className:`bg-muted`}]}),(0,L.jsx)(su,{code:e.vllm_command,label:`vLLM command`})]})]})}function Tu(e){let t=e.placement,n=[`TP=${t.tensor_parallel}`];return t.pipeline_parallel>1&&n.push(`PP=${t.pipeline_parallel}`),t.expert_parallel>1&&n.push(`EP=${t.expert_parallel}`),t.data_parallel>1&&n.push(`DP=${t.data_parallel}`),n.join(` `)}function Eu({label:e,value:t}){return(0,L.jsxs)(`span`,{className:`inline-flex items-baseline gap-1`,children:[(0,L.jsx)(`span`,{className:`text-muted-foreground`,children:e}),(0,L.jsx)(`span`,{className:`font-medium tabular-nums`,children:t})]})}function Du(e){switch(e){case`success`:return`success`;case`destructive`:return`destructive`;case`warn`:return`warn`;default:return`secondary`}}function Ou(e=``){return{uid:crypto.randomUUID(),hf_id:e}}function ku({models:e,setModels:t,advanced:n}){let r=(n,r)=>t(e.map(e=>e.uid===n?{...e,...r}:e)),i=n=>t(e.filter(e=>e.uid!==n));return(0,L.jsxs)(`div`,{className:`space-y-2.5`,children:[e.map((t,a)=>(0,L.jsxs)(`div`,{className:`rounded-md border bg-background p-2.5`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,L.jsx)(`span`,{className:`w-4 shrink-0 text-center text-xs tabular-nums text-muted-foreground`,children:a+1}),(0,L.jsx)(en,{value:t.hf_id,onChange:e=>r(t.uid,{hf_id:e.target.value}),placeholder:`org/Model-Name`,className:`h-8 flex-1 font-mono text-xs`,"aria-label":`Model ${a+1} Hugging Face ID`}),(0,L.jsx)($t,{type:`button`,variant:`ghost`,size:`icon`,className:`h-7 w-7 shrink-0`,onClick:()=>i(t.uid),"aria-label":`Remove model ${a+1}`,disabled:e.length<=1,children:(0,L.jsx)(Me,{className:`h-3.5 w-3.5`})})]}),n&&(0,L.jsxs)(`div`,{className:`mt-2 space-y-2 pl-6 text-xs`,children:[(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,L.jsx)(en,{value:t.revision??``,onChange:e=>r(t.uid,{revision:e.target.value||void 0}),placeholder:`revision`,className:`h-7 w-28 font-mono text-[11px]`,"aria-label":`revision`}),(0,L.jsxs)(`label`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[`replicas`,(0,L.jsx)(en,{type:`number`,min:1,value:t.replicas??1,onChange:e=>r(t.uid,{replicas:Math.max(1,Number(e.target.value)||1)}),className:`h-7 w-14 text-[11px]`,"aria-label":`replicas`})]}),(0,L.jsxs)(`label`,{className:B(`flex cursor-pointer items-center gap-1.5 text-muted-foreground`,t.dedicated&&`text-foreground`),children:[(0,L.jsx)(`input`,{type:`checkbox`,checked:!!t.dedicated,onChange:e=>r(t.uid,{dedicated:e.target.checked||void 0}),className:`h-3.5 w-3.5 accent-foreground`}),`dedicated GPUs`]})]}),(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-muted-foreground`,children:[(0,L.jsx)(`span`,{className:`text-[10.5px] uppercase tracking-wider`,children:`SLO`}),(0,L.jsx)(Au,{label:`TTFT`,unit:`ms`,value:t.slo?.target_ttft_p95_ms,onChange:e=>r(t.uid,{slo:ju({...t.slo,target_ttft_p95_ms:e})})}),(0,L.jsx)(Au,{label:`TPOT`,unit:`ms`,value:t.slo?.target_tpot_p95_ms,onChange:e=>r(t.uid,{slo:ju({...t.slo,target_tpot_p95_ms:e})})}),(0,L.jsx)(Au,{label:`decode`,unit:`tok/s`,value:t.slo?.target_decode_tps_per_user,onChange:e=>r(t.uid,{slo:ju({...t.slo,target_decode_tps_per_user:e})})})]})]})]},t.uid)),(0,L.jsxs)($t,{type:`button`,variant:`outline`,size:`sm`,className:`w-full`,onClick:()=>t([...e,Ou()]),children:[(0,L.jsx)(Ee,{className:`h-3.5 w-3.5`}),`Add model`]})]})}function Au({label:e,unit:t,value:n,onChange:r}){return(0,L.jsxs)(`label`,{className:`flex items-center gap-1`,children:[(0,L.jsx)(`span`,{children:e}),(0,L.jsx)(en,{type:`number`,min:0,value:n??0,onChange:e=>r(Math.max(0,Number(e.target.value)||0)),className:`h-7 w-16 text-[11px]`,"aria-label":`${e} target (${t})`}),(0,L.jsx)(`span`,{className:`text-[10px]`,children:t})]})}function ju(e){if(e)return(e.target_ttft_p95_ms??0)>0||(e.target_tpot_p95_ms??0)>0||(e.target_decode_tps_per_user??0)>0?e:void 0}var Mu=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=Ke(`Primitive.${t}`),r=_.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,L.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),Nu=`Separator`,Pu=`horizontal`,Fu=[`horizontal`,`vertical`],Iu=_.forwardRef((e,t)=>{let{decorative:n,orientation:r=Pu,...i}=e,a=Lu(r)?r:Pu,o=n?{role:`none`}:{"aria-orientation":a===`vertical`?a:void 0,role:`separator`};return(0,L.jsx)(Mu.div,{"data-orientation":a,...o,...i,ref:t})});Iu.displayName=Nu;function Lu(e){return Fu.includes(e)}var Ru=Iu,zu=_.forwardRef(({className:e,orientation:t=`horizontal`,decorative:n=!0,...r},i)=>(0,L.jsx)(Ru,{ref:i,decorative:n,orientation:t,className:B(`shrink-0 bg-border`,t===`horizontal`?`h-px w-full`:`h-full w-px`,e),...r}));zu.displayName=Ru.displayName;var Bu=(0,_.createContext)(void 0);function Vu({children:e,defaultTheme:t=`light`,storageKey:n=`gt-theme`}){let[r,i]=(0,_.useState)(()=>typeof window>`u`?t:window.localStorage.getItem(n)??t);(0,_.useEffect)(()=>{let e=document.documentElement;e.classList.remove(`light`,`dark`),e.classList.add(r)},[r]);let a=e=>{window.localStorage.setItem(n,e),i(e)},o=(0,_.useMemo)(()=>({theme:r,setTheme:a,toggle:()=>a(r===`dark`?`light`:`dark`)}),[r]);return(0,L.jsx)(Bu.Provider,{value:o,children:e})}function Hu(){let e=(0,_.useContext)(Bu);if(!e)throw Error(`useTheme must be used within ThemeProvider`);return e}function Uu({title:e,lede:t,actions:n,children:r}){let{theme:i,toggle:a}=Hu();return(0,L.jsxs)(`div`,{className:`flex h-screen flex-col overflow-hidden bg-background`,children:[(0,L.jsxs)(`header`,{className:`flex h-14 shrink-0 items-center gap-3 border-b bg-card px-4 lg:px-6`,children:[(0,L.jsx)(`img`,{src:`/logo.png`,alt:`GreenThread`,className:`h-7 w-auto dark:invert dark:hue-rotate-180`}),(0,L.jsx)(zu,{orientation:`vertical`,className:`h-6`}),(0,L.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,L.jsx)(`span`,{className:`truncate text-sm font-semibold leading-tight`,children:e}),t&&(0,L.jsx)(`span`,{className:`truncate text-[11px] text-muted-foreground`,children:t})]}),(0,L.jsxs)(`div`,{className:`ml-auto flex items-center gap-2`,children:[n,(0,L.jsx)($t,{variant:`ghost`,size:`icon`,onClick:a,"aria-label":i===`dark`?`Switch to light theme`:`Switch to dark theme`,children:i===`dark`?(0,L.jsx)(Ae,{className:`h-4 w-4`}):(0,L.jsx)(Te,{className:`h-4 w-4`})})]})]}),(0,L.jsx)(`div`,{className:`flex flex-1 overflow-hidden`,children:r})]})}var Wu=_.forwardRef(({className:e,...t},n)=>(0,L.jsx)(`label`,{ref:n,className:B(`text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70`,e),...t}));Wu.displayName=`Label`;function Z({label:e,htmlFor:t,hint:n,className:r,children:i}){return(0,L.jsxs)(`div`,{className:B(`space-y-1.5`,r),children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,L.jsx)(Wu,{htmlFor:t,className:`text-xs text-muted-foreground`,children:e}),n&&(0,L.jsxs)(Jl,{children:[(0,L.jsx)(Yl,{asChild:!0,children:(0,L.jsx)(`button`,{type:`button`,"aria-label":`${e}: more info`,className:`text-muted-foreground/60 hover:text-foreground`,children:(0,L.jsx)(we,{className:`h-3 w-3`})})}),(0,L.jsx)(Xl,{side:`top`,children:n})]})]}),i]})}var Gu=`s`;function Ku(e){let t=``;for(let n=0;n({id:`node-01-gpu-${t}`,model:`H100-SXM5`,memory_total_gb:80,memory_free_gb:80,in_use:!1}))}],ed={max_concurrent_requests:32,max_context_length:8192,avg_input_tokens:1e3,avg_output_tokens:500,slo:{target_ttft_p95_ms:0,target_tpot_p95_ms:0,target_decode_tps_per_user:0}},td={allowed_quantizations:[`bf16`,`fp8`,`awq`,`gptq`],allowed_kv_cache_dtypes:[`auto`,`fp8`],max_tensor_parallel:8,max_pipeline_parallel:1,max_data_parallel:1,allow_cross_node_parallelism:!1,allow_kv_head_replication:!1,min_gpu_memory_utilization:.85,max_gpu_memory_utilization:.92,framework_overhead_gb:2,max_results:10},nd=[Ou(`Qwen/Qwen3-8B`),Ou(`deepseek-ai/DeepSeek-V3.2-Exp`)],rd=[`bf16`,`fp16`,`fp8`,`int8`,`awq`,`gptq`,`compressed-tensors`],id=[`auto`,`fp8`,`int8`];function ad(){let e=(0,_.useMemo)(()=>Xu(),[]),[t,n]=(0,_.useState)(()=>e?.models??Ie(`models`,nd)),[r,i]=(0,_.useState)(()=>e?.workload??Ie(`workload`,ed)),[a,o]=(0,_.useState)(()=>e?.constraints??Ie(`constraints`,td)),[s,c]=(0,_.useState)(()=>e?.nodes??Ie(`nodes`,$u)),[l,u]=(0,_.useState)(()=>e?.advanced??Ie(`advanced`,!1)),[d,f]=(0,_.useState)(``),[p,m]=(0,_.useState)(!1),[h,g]=(0,_.useState)([]),[v,y]=(0,_.useState)(null),[b,x]=(0,_.useState)(!1),[S,C]=(0,_.useState)(null),w=(0,_.useMemo)(()=>({v:1,models:t,workload:r,constraints:a,nodes:s,advanced:l}),[t,r,a,s,l]);(0,_.useEffect)(()=>{Le(`models`,t),Le(`workload`,r),Le(`constraints`,a),Le(`nodes`,s),Le(`advanced`,l),Zu(w)},[w,t,r,a,s,l]),(0,_.useEffect)(()=>{localStorage.removeItem(`fit:hf_token`),Pe().then(g).catch(e=>C(`gpu catalog: ${e?.message??e}`))},[]);let T=(0,_.useMemo)(()=>({models:t.filter(e=>e.hf_id.trim()).map(e=>({hf_id:e.hf_id.trim(),...e.revision?{revision:e.revision}:{},...d?{hf_token:d}:{},...e.dedicated?{dedicated:!0}:{},...e.replicas&&e.replicas>1?{replicas:e.replicas}:{},...e.slo?{workload:{...r,slo:e.slo}}:{}})),workload:r,constraints:a,inventory:{nodes:s}}),[t,d,r,a,s]),E=(0,_.useRef)(null);(0,_.useEffect)(()=>{if(T.models.length===0){y(null);return}if(s.every(e=>e.gpus.length===0)||r.max_concurrent_requests<=0||r.max_context_length<=0)return;let e=setTimeout(()=>{E.current?.abort();let e=new AbortController;E.current=e,x(!0),C(null),Ne(T,e.signal).then(y).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||C(e instanceof Error?e.message:String(e))}).finally(()=>x(!1))},350);return()=>clearTimeout(e)},[T,s,r.max_concurrent_requests,r.max_context_length]);let ee=e=>o(t=>{let n=t.allowed_quantizations??[];return{...t,allowed_quantizations:n.includes(e)?n.filter(t=>t!==e):[...n,e]}}),D=e=>o(t=>{let n=t.allowed_kv_cache_dtypes??[];return{...t,allowed_kv_cache_dtypes:n.includes(e)?n.filter(t=>t!==e):[...n,e]}});return(0,L.jsxs)(Uu,{title:`Fit`,lede:`multi-model GPU placement planner`,actions:(0,L.jsxs)(`div`,{className:`flex items-center gap-2`,children:[b&&(0,L.jsx)(`span`,{className:`mr-1 hidden h-2 w-2 animate-pulse rounded-full bg-foreground/40 md:inline-block`}),(0,L.jsxs)($t,{variant:l?`secondary`:`ghost`,size:`sm`,onClick:()=>u(e=>!e),"aria-pressed":l,children:[(0,L.jsx)(Oe,{className:`h-3.5 w-3.5`}),`Advanced`]}),(0,L.jsxs)($t,{variant:`default`,size:`sm`,onClick:async()=>{let e=Qu(w);try{await navigator.clipboard.writeText(e),j.success(`Share link copied`,{description:`GPUs, models and settings are encoded in the URL.`})}catch{window.prompt(`Copy this share link:`,e)}},children:[(0,L.jsx)(ke,{className:`h-3.5 w-3.5`}),`Share`]})]}),children:[(0,L.jsx)(`aside`,{className:`w-[440px] shrink-0 overflow-y-auto border-r bg-card/40 p-5`,children:(0,L.jsxs)(`div`,{className:`space-y-5`,children:[(0,L.jsxs)(du,{children:[(0,L.jsx)(fu,{className:`pb-3`,children:(0,L.jsx)(pu,{className:`text-sm`,children:`Models`})}),(0,L.jsxs)(hu,{className:`space-y-3`,children:[(0,L.jsx)(ku,{models:t,setModels:n,advanced:l}),(0,L.jsx)(Z,{label:`HF token`,htmlFor:`hf-token`,hint:`Required only for gated models. Never persisted or shared; falls back to the server's HF_TOKEN env.`,children:(0,L.jsxs)(`div`,{className:`relative`,children:[(0,L.jsx)(en,{id:`hf-token`,type:p?`text`:`password`,value:d,onChange:e=>f(e.target.value),placeholder:`hf_…`,className:`pr-10`,autoComplete:`off`}),(0,L.jsx)($t,{type:`button`,variant:`ghost`,size:`icon`,onClick:()=>m(e=>!e),"aria-label":p?`Hide token`:`Show token`,className:`absolute right-1 top-1/2 h-7 w-7 -translate-y-1/2`,children:p?(0,L.jsx)(Se,{className:`h-3.5 w-3.5`}):(0,L.jsx)(Ce,{className:`h-3.5 w-3.5`})})]})})]})]}),(0,L.jsxs)(du,{children:[(0,L.jsx)(fu,{className:`pb-3`,children:(0,L.jsx)(pu,{className:`text-sm`,children:`Workload`})}),(0,L.jsxs)(hu,{className:`space-y-3`,children:[(0,L.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,L.jsx)(Z,{label:`Max concurrent`,htmlFor:`wl-conc`,hint:`Maximum in-flight requests per model.`,children:(0,L.jsx)(en,{id:`wl-conc`,type:`number`,value:r.max_concurrent_requests,onChange:e=>i({...r,max_concurrent_requests:Number(e.target.value)})})}),(0,L.jsx)(Z,{label:`Max context`,htmlFor:`wl-ctx`,hint:`Maximum context length (tokens) the engine must support.`,children:(0,L.jsx)(en,{id:`wl-ctx`,type:`number`,value:r.max_context_length,onChange:e=>i({...r,max_context_length:Number(e.target.value)})})}),l&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(Z,{label:`Avg input tokens`,htmlFor:`wl-in`,hint:`Typical prompt length; sizes KV cache reservations.`,children:(0,L.jsx)(en,{id:`wl-in`,type:`number`,value:r.avg_input_tokens??0,onChange:e=>i({...r,avg_input_tokens:Number(e.target.value)})})}),(0,L.jsx)(Z,{label:`Avg output tokens`,htmlFor:`wl-out`,hint:`Typical generation length; sizes KV cache + throughput.`,children:(0,L.jsx)(en,{id:`wl-out`,type:`number`,value:r.avg_output_tokens??0,onChange:e=>i({...r,avg_output_tokens:Number(e.target.value)})})})]})]}),l&&(0,L.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`SLO targets are set per model in the Models panel above.`})]})]}),l&&(0,L.jsxs)(du,{children:[(0,L.jsx)(fu,{className:`pb-3`,children:(0,L.jsx)(pu,{className:`text-sm`,children:`Constraints`})}),(0,L.jsxs)(hu,{className:`space-y-4`,children:[(0,L.jsx)(Z,{label:`Allowed quantizations`,hint:`Only configurations using one of these weight quantizations are considered.`,children:(0,L.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:rd.map(e=>(0,L.jsx)(od,{on:!!a.allowed_quantizations?.includes(e),onClick:()=>ee(e),children:e},e))})}),(0,L.jsx)(Z,{label:`KV cache dtype`,hint:`Allowed key/value cache dtypes. fp8 halves cache footprint.`,children:(0,L.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:id.map(e=>(0,L.jsx)(od,{on:!!a.allowed_kv_cache_dtypes?.includes(e),onClick:()=>D(e),children:e},e))})}),(0,L.jsxs)(`div`,{className:`grid grid-cols-3 gap-3`,children:[(0,L.jsx)(Z,{label:`Max TP`,htmlFor:`c-tp`,hint:`Tensor Parallel: shard each layer across this many GPUs.`,children:(0,L.jsx)(en,{id:`c-tp`,type:`number`,value:a.max_tensor_parallel??1,onChange:e=>o({...a,max_tensor_parallel:Number(e.target.value)})})}),(0,L.jsx)(Z,{label:`Max PP`,htmlFor:`c-pp`,hint:`Pipeline Parallel: sequential stages across GPUs.`,children:(0,L.jsx)(en,{id:`c-pp`,type:`number`,value:a.max_pipeline_parallel??1,onChange:e=>o({...a,max_pipeline_parallel:Number(e.target.value)})})}),(0,L.jsx)(Z,{label:`Max DP`,htmlFor:`c-dp`,hint:`Data Parallel: independent replicas for throughput.`,children:(0,L.jsx)(en,{id:`c-dp`,type:`number`,value:a.max_data_parallel??1,onChange:e=>o({...a,max_data_parallel:Number(e.target.value)})})})]}),(0,L.jsx)(Z,{label:`GPU memory utilization (max)`,htmlFor:`c-mem`,hint:`Upper bound on per-GPU memory the engine may use. The fit packer treats this × free memory as each GPU's budget.`,children:(0,L.jsx)(en,{id:`c-mem`,type:`number`,step:`0.01`,min:`0`,max:`1`,value:a.max_gpu_memory_utilization??.92,onChange:e=>o({...a,max_gpu_memory_utilization:Number(e.target.value)})})}),(0,L.jsxs)(`label`,{className:`flex items-center gap-2 text-sm`,children:[(0,L.jsx)(`input`,{type:`checkbox`,checked:!!a.allow_cross_node_parallelism,onChange:e=>o({...a,allow_cross_node_parallelism:e.target.checked}),className:`h-4 w-4 accent-foreground`}),(0,L.jsx)(`span`,{className:`text-muted-foreground`,children:`Allow cross-node parallelism`})]})]})]}),(0,L.jsxs)(du,{children:[(0,L.jsxs)(fu,{className:`flex flex-row items-center justify-between space-y-0 pb-3`,children:[(0,L.jsx)(pu,{className:`text-sm`,children:`Inventory`}),(0,L.jsxs)($t,{variant:`ghost`,size:`sm`,onClick:()=>{confirm(`Reset inventory to defaults?`)&&c($u)},children:[(0,L.jsx)(De,{className:`h-3 w-3`}),`Reset`]})]}),(0,L.jsx)(hu,{children:(0,L.jsx)(nu,{nodes:s,setNodes:c,skus:h})})]}),l&&(0,L.jsxs)(`details`,{className:`text-xs`,children:[(0,L.jsx)(`summary`,{className:`cursor-pointer text-muted-foreground hover:text-foreground`,children:`Request preview`}),(0,L.jsx)(`pre`,{className:`mt-2 max-h-72 overflow-auto rounded-md border bg-muted/40 p-3 font-mono text-[11px]`,children:JSON.stringify(T,null,2)})]})]})}),(0,L.jsx)(`main`,{className:`flex-1 overflow-y-auto p-5 lg:p-8`,children:(0,L.jsx)(Su,{loading:b,error:S,resp:v,advanced:l})})]})}function od({on:e,onClick:t,children:n}){return(0,L.jsx)(`button`,{type:`button`,onClick:t,className:B(`rounded-full border px-2.5 py-0.5 text-xs font-medium transition-colors`,e?`border-foreground bg-foreground text-background`:`border-border bg-background text-muted-foreground hover:border-foreground/40 hover:text-foreground`),children:n})}(0,v.createRoot)(document.getElementById(`root`)).render((0,L.jsx)(_.StrictMode,{children:(0,L.jsx)(Vu,{defaultTheme:`light`,storageKey:`fit:theme`,children:(0,L.jsxs)(ql,{delayDuration:150,children:[(0,L.jsx)(ad,{}),(0,L.jsx)(({...e})=>{let{theme:t}=Hu();return(0,L.jsx)(fe,{theme:t,className:`toaster group`,toastOptions:{classNames:{toast:`group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg`,description:`group-[.toast]:text-muted-foreground`,actionButton:`group-[.toast]:bg-primary group-[.toast]:text-primary-foreground`,cancelButton:`group-[.toast]:bg-muted group-[.toast]:text-muted-foreground`}},...e})},{position:`bottom-right`,richColors:!0,closeButton:!0})]})})})); \ No newline at end of file diff --git a/internal/webui/dist/assets/index-B_jf50bD.css b/internal/webui/dist/assets/index-B_jf50bD.css deleted file mode 100644 index a94dd30..0000000 --- a/internal/webui/dist/assets/index-B_jf50bD.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}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-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;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}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background:50 33% 97%;--foreground:30 10% 12%;--card:48 30% 98%;--card-foreground:30 10% 12%;--popover:48 30% 98%;--popover-foreground:30 10% 12%;--primary:30 12% 16%;--primary-foreground:50 33% 97%;--secondary:45 20% 92%;--secondary-foreground:30 10% 18%;--muted:45 18% 92%;--muted-foreground:30 8% 40%;--accent:45 22% 90%;--accent-foreground:30 10% 14%;--destructive:0 70% 45%;--destructive-foreground:50 33% 97%;--border:40 15% 86%;--input:40 15% 86%;--ring:30 10% 30%;--radius:.625rem;--brand-green:141 100% 31%;--brand-green-soft:141 60% 92%;--warn:32 90% 42%;--warn-soft:40 95% 92%}.dark{--background:30 8% 8%;--foreground:40 15% 92%;--card:30 8% 10%;--card-foreground:40 15% 92%;--popover:30 8% 10%;--popover-foreground:40 15% 92%;--primary:40 15% 92%;--primary-foreground:30 10% 12%;--secondary:30 6% 16%;--secondary-foreground:40 15% 92%;--muted:30 6% 16%;--muted-foreground:35 8% 62%;--accent:30 6% 18%;--accent-foreground:40 15% 92%;--destructive:0 60% 45%;--destructive-foreground:40 15% 92%;--border:30 6% 18%;--input:30 6% 18%;--ring:35 8% 70%;--brand-green:141 70% 50%;--brand-green-soft:141 30% 18%;--warn:38 90% 60%;--warn-soft:36 30% 18%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.absolute{position:absolute}.relative{position:relative}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-2{right:.5rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.ml-1{margin-left:.25rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-72{max-height:18rem}.max-h-96{max-height:24rem}.min-h-\[40vh\]{min-height:40vh}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-40{width:10rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[130px\]{width:130px}.w-\[440px\]{width:440px}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;user-select:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-all{word-break:break-all}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-border{border-color:hsl(var(--border))}.border-destructive\/40{border-color:hsl(var(--destructive) / .4)}.border-foreground{border-color:hsl(var(--foreground))}.border-foreground\/30{border-color:hsl(var(--foreground) / .3)}.border-input{border-color:hsl(var(--input))}.border-transparent{border-color:#0000}.border-warn\/30{border-color:hsl(var(--warn) / .3)}.bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.bg-background{background-color:hsl(var(--background))}.bg-border{background-color:hsl(var(--border))}.bg-brand-soft{background-color:hsl(var(--brand-green-soft))}.bg-card{background-color:hsl(var(--card))}.bg-card\/40{background-color:hsl(var(--card) / .4)}.bg-card\/50{background-color:hsl(var(--card) / .5)}.bg-cyan-500{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity,1))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/80{background-color:hsl(var(--destructive) / .8)}.bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity,1))}.bg-foreground{background-color:hsl(var(--foreground))}.bg-foreground\/40{background-color:hsl(var(--foreground) / .4)}.bg-fuchsia-500{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity,1))}.bg-indigo-500{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity,1))}.bg-lime-600{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity,1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/50{background-color:hsl(var(--muted-foreground) / .5)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/40{background-color:hsl(var(--muted) / .4)}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity,1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity,1))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.bg-violet-500{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity,1))}.bg-warn{background-color:hsl(var(--warn))}.bg-warn-soft{background-color:hsl(var(--warn-soft))}.bg-warn-soft\/40{background-color:hsl(var(--warn-soft) / .4)}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-5{padding:1.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-2{padding-left:.5rem}.pl-6{padding-left:1.5rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-normal{letter-spacing:0}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.text-background{color:hsl(var(--background))}.text-brand{color:hsl(var(--brand-green))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/70{color:hsl(var(--foreground) / .7)}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-warn{color:hsl(var(--warn))}.underline-offset-4{text-underline-offset:4px}.accent-foreground{accent-color:hsl(var(--foreground))}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.outline-none{outline-offset:2px;outline:2px solid #0000}.outline{outline-style:solid}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}@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))}}@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))}}.animate-in{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.fade-in-0{--tw-enter-opacity:0}.zoom-in-95{--tw-enter-scale:.95}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-foreground\/40:hover{border-color:hsl(var(--foreground) / .4)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:underline:hover{text-decoration-line:underline}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus-visible\:outline-none:focus-visible{outline-offset:2px;outline:2px solid #0000}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group.toaster .group-\[\.toaster\]\:border-border{border-color:hsl(var(--border))}.group.toast .group-\[\.toast\]\:bg-muted{background-color:hsl(var(--muted))}.group.toast .group-\[\.toast\]\:bg-primary{background-color:hsl(var(--primary))}.group.toaster .group-\[\.toaster\]\:bg-background{background-color:hsl(var(--background))}.group.toast .group-\[\.toast\]\:text-muted-foreground{color:hsl(var(--muted-foreground))}.group.toast .group-\[\.toast\]\:text-primary-foreground{color:hsl(var(--primary-foreground))}.group.toaster .group-\[\.toaster\]\:text-foreground{color:hsl(var(--foreground))}.group.toaster .group-\[\.toaster\]\:shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:-.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:-.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.data-\[state\=open\]\:animate-in[data-state=open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-\[state\=closed\]\:animate-out[data-state=closed]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.dark\:hue-rotate-180:is(.dark *){--tw-hue-rotate:hue-rotate(180deg);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.dark\:invert:is(.dark *){--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (width>=640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=768px){.md\:inline-block{display:inline-block}}@media (width>=1024px){.lg\:p-8{padding:2rem}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media (width>=1280px){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0} diff --git a/internal/webui/dist/assets/index-CUm5LUen.js b/internal/webui/dist/assets/index-CUm5LUen.js deleted file mode 100644 index d5dfbf6..0000000 --- a/internal/webui/dist/assets/index-CUm5LUen.js +++ /dev/null @@ -1,50 +0,0 @@ -var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var l=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function ee(e,t){return E(e.type,t,e.props)}function D(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function O(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var k=/\/+/g;function A(e,t){return typeof e==`object`&&e&&e.key!=null?O(``+e.key):t.toString(36)}function j(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function M(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,M(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+A(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(k,`$&/`)+`/`),M(o,r,i,``,function(e){return e})):o!=null&&(D(o)&&(o=ee(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(k,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u{t.exports=l()})),d=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,D());else{var t=n(l);t!==null&&A(x,t.startTime-e)}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-Tt&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&A(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?D():S=!1}}}var D;if(typeof y==`function`)D=function(){y(ee)};else if(typeof MessageChannel<`u`){var O=new MessageChannel,k=O.port2;O.port1.onmessage=ee,D=function(){k.postMessage(null)}}else D=function(){_(ee,0)};function A(t,n){C=_(function(){t(e.unstable_now())},n)}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(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,A(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,D()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),f=o(((e,t)=>{t.exports=d()})),p=o((e=>{var t=u();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=p()})),h=o((e=>{var t=f(),n=u(),r=m();function i(e){var t=`https://react.dev/errors/`+e;if(1re||(e.current=ne[re],ne[re]=null,re--)}function L(e,t){re++,ne[re]=e.current,e.current=t}var oe=ie(null),se=ie(null),ce=ie(null),le=ie(null);function ue(e,t){switch(L(ce,t),L(se,e),L(oe,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}ae(oe),L(oe,e)}function de(){ae(oe),ae(se),ae(ce)}function fe(e){e.memoizedState!==null&&L(le,e);var t=oe.current,n=Hd(t,e.type);t!==n&&(L(se,e),L(oe,n))}function pe(e){se.current===e&&(ae(oe),ae(se)),le.current===e&&(ae(le),Qf._currentValue=te)}var me,he;function ge(e){if(me===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);me=t&&t[1]||``,he=-1)`:-1i||c[r]!==l[i]){var u=` -`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{_e=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?ge(n):``}function ye(e,t){switch(e.tag){case 26:case 27:case 5:return ge(e.type);case 16:return ge(`Lazy`);case 13:return e.child!==t&&t!==null?ge(`Suspense Fallback`):ge(`Suspense`);case 19:return ge(`SuspenseList`);case 0:case 15:return ve(e.type,!1);case 11:return ve(e.type.render,!1);case 1:return ve(e.type,!0);case 31:return ge(`Activity`);default:return``}}function be(e){try{var t=``,n=null;do t+=ye(e,n),n=e,e=e.return;while(e);return t}catch(e){return` -Error generating stack: `+e.message+` -`+e.stack}}var xe=Object.prototype.hasOwnProperty,Se=t.unstable_scheduleCallback,Ce=t.unstable_cancelCallback,we=t.unstable_shouldYield,Te=t.unstable_requestPaint,Ee=t.unstable_now,De=t.unstable_getCurrentPriorityLevel,Oe=t.unstable_ImmediatePriority,ke=t.unstable_UserBlockingPriority,Ae=t.unstable_NormalPriority,je=t.unstable_LowPriority,Me=t.unstable_IdlePriority,Ne=t.log,Pe=t.unstable_setDisableYieldValue,Fe=null,Ie=null;function Le(e){if(typeof Ne==`function`&&Pe(e),Ie&&typeof Ie.setStrictMode==`function`)try{Ie.setStrictMode(Fe,e)}catch{}}var Re=Math.clz32?Math.clz32:R,ze=Math.log,Be=Math.LN2;function R(e){return e>>>=0,e===0?32:31-(ze(e)/Be|0)|0}var Ve=256,He=262144,Ue=4194304;function We(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ge(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=We(n))):i=We(o):i=We(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=We(n))):i=We(o)):i=We(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function Ke(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function qe(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Je(){var e=Ue;return Ue<<=1,!(Ue&62914560)&&(Ue=4194304),e}function Ye(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Xe(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Ze(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),on=!1;if(an)try{var sn={};Object.defineProperty(sn,`passive`,{get:function(){on=!0}}),window.addEventListener(`test`,sn,sn),window.removeEventListener(`test`,sn,sn)}catch{on=!1}var cn=null,ln=null,un=null;function dn(){if(un)return un;var e,t=ln,n=t.length,r,i=`value`in cn?cn.value:cn.textContent,a=i.length;for(e=0;e=Un),Kn=` `,qn=!1;function Jn(e,t){switch(e){case`keyup`:return Vn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function Yn(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var Xn=!1;function Zn(e,t){switch(e){case`compositionend`:return Yn(t);case`keypress`:return t.which===32?(qn=!0,Kn):null;case`textInput`:return e=t.data,e===Kn&&qn?null:e;default:return null}}function Qn(e,t){if(Xn)return e===`compositionend`||!Hn&&Jn(e,t)?(e=dn(),un=ln=cn=null,Xn=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=br(n)}}function Sr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Sr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Cr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Ft(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ft(e.document)}return t}function wr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Tr=an&&`documentMode`in document&&11>=document.documentMode,Er=null,Dr=null,Or=null,kr=!1;function Ar(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;kr||Er==null||Er!==Ft(r)||(r=Er,`selectionStart`in r&&wr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Or&&yr(Or,r)||(Or=r,r=Ed(Dr,`onSelect`),0>=o,i-=o,Si=1<<32-Re(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),U&&wi(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),U&&wi(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return U&&wi(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),U&&wi(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===D&&wa(l)===r.type){n(e,r.sibling),c=a(r,o.props),ja(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===y?(c=li(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=ci(o.type,o.key,o.props,null,e.mode,c),ja(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=fi(o,e.mode,c),c.return=e,e=c}return s(e);case D:return o=wa(o),b(e,r,o,c)}if(P(o))return h(e,r,o,c);if(j(o)){if(l=j(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,Aa(o),c);if(o.$$typeof===C)return b(e,r,Qi(e,o),c);Ma(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=ui(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{ka=0;var i=b(e,t,n,r);return Oa=null,i}catch(t){if(t===va||t===ba)throw t;var a=ii(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Pa=Na(!0),Fa=Na(!1),Ia=!1;function La(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ra(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function za(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Ba(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,K&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=ti(e),ei(e,null,n),t}return Zr(e,r,t,n),ti(e)}function Va(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,$e(e,n)}}function Ha(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Ua=!1;function Wa(){if(Ua){var e=la;if(e!==null)throw e}}function Ga(e,t,n,r){Ua=!1;var i=e.updateQueue;Ia=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Y&f)===f:(r&f)===f){f!==0&&f===ca&&(Ua=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(m=g.payload,typeof m==`function`){d=m.call(_,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=g.payload,f=typeof m==`function`?m.call(_,d,f):m,f==null)break a;d=h({},d,f);break a;case 2:Ia=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Gl|=o,e.lanes=o,e.memoizedState=d}}function Ka(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function qa(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=F.T,s={};F.T=s,Ms(e,!1,t,n);try{var c=i(),l=F.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?js(e,t,fa(c,r),pu(e)):js(e,t,r,pu(e))}catch(n){js(e,t,{then:function(){},status:`rejected`,reason:n},pu())}finally{I.p=a,o!==null&&s.types!==null&&(o.types=s.types),F.T=o}}function xs(){}function Ss(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=Cs(e).queue;bs(e,a,t,te,n===null?xs:function(){return ws(e),n(r)})}function Cs(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:te,baseState:te,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:No,lastRenderedState:te},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:No,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function ws(e){var t=Cs(e);t.next===null&&(t=e.alternate.memoizedState),js(e,t.next.queue,{},pu())}function Ts(){return Zi(Qf)}function Es(){return Oo().memoizedState}function Ds(){return Oo().memoizedState}function Os(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=pu();e=za(n);var r=Ba(t,e,n);r!==null&&(hu(r,t,n),Va(r,t,n)),t={cache:ia()},e.payload=t;return}t=t.return}}function ks(e,t,n){var r=pu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Ns(e)?Ps(t,n):(n=Qr(e,t,n,r),n!==null&&(hu(n,e,r),Fs(n,t,r)))}function As(e,t,n){js(e,t,n,pu())}function js(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ns(e))Ps(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,vr(s,o))return Zr(e,t,i,0),q===null&&Xr(),!1}catch{}if(n=Qr(e,t,i,r),n!==null)return hu(n,e,r),Fs(n,t,r),!0}return!1}function Ms(e,t,n,r){if(r={lane:2,revertLane:dd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Ns(e)){if(t)throw Error(i(479))}else t=Qr(e,n,r,2),t!==null&&hu(t,e,2)}function Ns(e){var t=e.alternate;return e===W||t!==null&&t===W}function Ps(e,t){fo=uo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Fs(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,$e(e,n)}}var Is={readContext:Zi,use:jo,useCallback:vo,useContext:vo,useEffect:vo,useImperativeHandle:vo,useLayoutEffect:vo,useInsertionEffect:vo,useMemo:vo,useReducer:vo,useRef:vo,useState:vo,useDebugValue:vo,useDeferredValue:vo,useTransition:vo,useSyncExternalStore:vo,useId:vo,useHostTransitionStatus:vo,useFormState:vo,useActionState:vo,useOptimistic:vo,useMemoCache:vo,useCacheRefresh:vo};Is.useEffectEvent=vo;var Ls={readContext:Zi,use:jo,useCallback:function(e,t){return Do().memoizedState=[e,t===void 0?null:t],e},useContext:Zi,useEffect:ss,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),as(4194308,4,ps.bind(null,t,e),n)},useLayoutEffect:function(e,t){return as(4194308,4,e,t)},useInsertionEffect:function(e,t){as(4,2,e,t)},useMemo:function(e,t){var n=Do();t=t===void 0?null:t;var r=e();if(po){Le(!0);try{e()}finally{Le(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Do();if(n!==void 0){var i=n(t);if(po){Le(!0);try{n(t)}finally{Le(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=ks.bind(null,W,e),[r.memoizedState,e]},useRef:function(e){var t=Do();return e={current:e},t.memoizedState=e},useState:function(e){e=Uo(e);var t=e.queue,n=As.bind(null,W,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:hs,useDeferredValue:function(e,t){return vs(Do(),e,t)},useTransition:function(){var e=Uo(!1);return e=bs.bind(null,W,e.queue,!0,!1),Do().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=W,a=Do();if(U){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),q===null)throw Error(i(349));Y&127||Ro(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,ss(Bo.bind(null,r,o,e),[e]),r.flags|=2048,rs(9,{destroy:void 0},zo.bind(null,r,o,n,t),null),n},useId:function(){var e=Do(),t=q.identifierPrefix;if(U){var n=Ci,r=Si;n=(r&~(1<<32-Re(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=mo++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[ot]=t,o[st]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Pd(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&jc(t)}}return Ic(t),Mc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&jc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=ce.current,Li(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=ki,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[ot]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Md(e.nodeValue,n)),e||Pi(t,!0)}else e=Bd(e).createTextNode(r),e[ot]=t,t.stateNode=e}return Ic(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Li(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[ot]=t}else Ri(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Ic(t),e=!1}else n=zi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(ao(t),t):(ao(t),null);if(t.flags&128)throw Error(i(558))}return Ic(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=Li(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[ot]=t}else Ri(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Ic(t),a=!1}else a=zi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(ao(t),t):(ao(t),null)}return ao(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Pc(t,t.updateQueue),Ic(t),null);case 4:return de(),e===null&&Sd(t.stateNode.containerInfo),Ic(t),null;case 10:return Gi(t.type),Ic(t),null;case 19:if(ae(oo),r=t.memoizedState,r===null)return Ic(t),null;if(a=(t.flags&128)!=0,o=r.rendering,o===null)if(a)Fc(r,!1);else{if(Wl!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=so(e),o!==null){for(t.flags|=128,Fc(r,!1),e=o.updateQueue,t.updateQueue=e,Pc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)si(n,e),n=n.sibling;return L(oo,oo.current&1|2),U&&wi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Ee()>tu&&(t.flags|=128,a=!0,Fc(r,!1),t.lanes=4194304)}else{if(!a)if(e=so(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Pc(t,e),Fc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!U)return Ic(t),null}else 2*Ee()-r.renderingStartTime>tu&&n!==536870912&&(t.flags|=128,a=!0,Fc(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(Ic(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Ee(),e.sibling=null,n=oo.current,L(oo,a?n&1|2:n&1),U&&wi(t,r.treeForkCount),e);case 22:case 23:return ao(t),Qa(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(Ic(t),t.subtreeFlags&6&&(t.flags|=8192)):Ic(t),n=t.updateQueue,n!==null&&Pc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&ae(ma),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Gi(ra),Ic(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function Rc(e,t){switch(Di(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Gi(ra),de(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return pe(t),null;case 31:if(t.memoizedState!==null){if(ao(t),t.alternate===null)throw Error(i(340));Ri()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(ao(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Ri()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ae(oo),null;case 4:return de(),null;case 10:return Gi(t.type),null;case 22:case 23:return ao(t),Qa(),e!==null&&ae(ma),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Gi(ra),null;case 25:return null;default:return null}}function zc(e,t){switch(Di(t),t.tag){case 3:Gi(ra),de();break;case 26:case 27:case 5:pe(t);break;case 4:de();break;case 31:t.memoizedState!==null&&ao(t);break;case 13:ao(t);break;case 19:ae(oo);break;case 10:Gi(t.type);break;case 22:case 23:ao(t),Qa(),e!==null&&ae(ma);break;case 24:Gi(ra)}}function Bc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Vc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Hc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{qa(t,n)}catch(t){Z(e,e.return,t)}}}function Uc(e,t,n){n.props=Ws(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Wc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Gc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}function Kc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Z(e,e.return,t)}}function qc(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[st]=t}catch(t){Z(e,e.return,t)}}function Jc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function Yc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Jc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Xc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=V));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Xc(e,t,n),e=e.sibling;e!==null;)Xc(e,t,n),e=e.sibling}function Zc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Zc(e,t,n),e=e.sibling;e!==null;)Zc(e,t,n),e=e.sibling}function Qc(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[ot]=e,t[st]=n}catch(t){Z(e,e.return,t)}}var $c=!1,el=!1,tl=!1,nl=typeof WeakSet==`function`?WeakSet:Set,rl=null;function il(e,t){if(e=e.containerInfo,Rd=sp,e=Cr(e),wr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(zd={focusedElem:e,selectionRange:n},sp=!1,rl=t;rl!==null;)if(t=rl,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,rl=e;else for(;rl!==null;){switch(t=rl,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Pd(o,r,n),o[ot]=e,yt(o),r=o;break a;case`link`:var s=Vf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=xr(s,h),v=xr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,F.T=null,n=lu,lu=null;var o=au,s=su;if(iu=0,ou=au=null,su=0,K&6)throw Error(i(331));var c=K;if(K|=4,Pl(o.current),El(o,o.current,s,n),K=c,id(0,!1),Ie&&typeof Ie.onPostCommitFiberRoot==`function`)try{Ie.onPostCommitFiberRoot(Fe,o)}catch{}return!0}finally{I.p=a,F.T=r,Vu(e,t)}}function Wu(e,t,n){t=mi(n,t),t=Xs(e.stateNode,t,2),e=Ba(e,t,2),e!==null&&(Xe(e,2),rd(e))}function Z(e,t,n){if(e.tag===3)Wu(e,e,n);else for(;t!==null;){if(t.tag===3){Wu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(ru===null||!ru.has(r))){e=mi(n,e),n=Zs(2),r=Ba(t,n,2),r!==null&&(Qs(n,r,t,e),Xe(r,2),rd(r));break}}t=t.return}}function Gu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Rl;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Hl=!0,i.add(n),e=Ku.bind(null,e,t,n),t.then(e,e))}function Ku(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,q===e&&(Y&n)===n&&(Wl===4||Wl===3&&(Y&62914560)===Y&&300>Ee()-$l?!(K&2)&&Su(e,0):ql|=n,Yl===Y&&(Yl=0)),rd(e)}function qu(e,t){t===0&&(t=Je()),e=$r(e,t),e!==null&&(Xe(e,t),rd(e))}function Ju(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),qu(e,n)}function Yu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),qu(e,n)}function Xu(e,t){return Se(e,t)}var Zu=null,Qu=null,$u=!1,ed=!1,td=!1,nd=0;function rd(e){e!==Qu&&e.next===null&&(Qu===null?Zu=Qu=e:Qu=Qu.next=e),ed=!0,$u||($u=!0,ud())}function id(e,t){if(!td&&ed){td=!0;do for(var n=!1,r=Zu;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-Re(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,ld(r,a))}else a=Y,a=Ge(r,r===q?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||Ke(r,a)||(n=!0,ld(r,a));r=r.next}while(n);td=!1}}function ad(){od()}function od(){ed=$u=!1;var e=0;nd!==0&&Gd()&&(e=nd);for(var t=Ee(),n=null,r=Zu;r!==null;){var i=r.next,a=sd(r,t);a===0?(r.next=null,n===null?Zu=i:n.next=i,i===null&&(Qu=n)):(n=r,(e!==0||a&3)&&(ed=!0)),r=i}iu!==0&&iu!==5||id(e,!1),nd!==0&&(nd=0)}function sd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&Id(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=B(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),yt(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+B(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+B(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+B(n.imageSizes)+`"]`)):i+=`[href="`+B(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=h({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),yt(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+B(r)+`"][href="`+B(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=h({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),yt(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=vt(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=h({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);yt(c),Pd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=vt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),yt(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=vt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),yt(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var a=(a=ce.current)?gf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=vt(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var o=vt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(jf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),o||Nf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=vt(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Af(e){return`href="`+B(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return h({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Pd(t,`link`,n),yt(t),e.head.appendChild(t))}function Pf(e){return`[src="`+B(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+B(n.href)+`"]`);if(r)return t.instance=r,yt(r),r;var a=h({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),yt(r),Pd(r,`style`,a),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Af(n.href);var o=e.querySelector(jf(a));if(o)return t.state.loading|=4,t.instance=o,yt(o),o;r=Mf(n),(a=mf.get(a))&&Rf(r,a),o=(e.ownerDocument||e).createElement(`link`),yt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Pd(o,`link`,r),t.state.loading|=4,Lf(o,n.precedence,e),t.instance=o;case`script`:return o=Pf(n.src),(a=e.querySelector(Ff(o)))?(t.instance=a,yt(a),a):(r=n,(a=mf.get(o))&&(r=h({},n),zf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),yt(a),Pd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,yt(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),yt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()})),_=c(u(),1),v=g(),y=c(m(),1),b=e=>{switch(e){case`success`:return C;case`info`:return T;case`warning`:return w;case`error`:return E;default:return null}},x=Array(12).fill(0),S=({visible:e,className:t})=>_.createElement(`div`,{className:[`sonner-loading-wrapper`,t].filter(Boolean).join(` `),"data-visible":e},_.createElement(`div`,{className:`sonner-spinner`},x.map((e,t)=>_.createElement(`div`,{className:`sonner-loading-bar`,key:`spinner-bar-${t}`})))),C=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},_.createElement(`path`,{fillRule:`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z`,clipRule:`evenodd`})),w=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,height:`20`,width:`20`},_.createElement(`path`,{fillRule:`evenodd`,d:`M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z`,clipRule:`evenodd`})),T=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},_.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z`,clipRule:`evenodd`})),E=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},_.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z`,clipRule:`evenodd`})),ee=_.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`},_.createElement(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),_.createElement(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})),D=()=>{let[e,t]=_.useState(document.hidden);return _.useEffect(()=>{let e=()=>{t(document.hidden)};return document.addEventListener(`visibilitychange`,e),()=>window.removeEventListener(`visibilitychange`,e)},[]),e},O=1,k=new class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)}),this.publish=e=>{this.subscribers.forEach(t=>t(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{let{message:t,...n}=e,r=typeof e?.id==`number`||e.id?.length>0?e.id:O++,i=this.toasts.find(e=>e.id===r),a=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),i?this.toasts=this.toasts.map(n=>n.id===r?(this.publish({...n,...e,id:r,title:t}),{...n,...e,id:r,dismissible:a,title:t}):n):this.addToast({title:t,...n,dismissible:a,id:r}),r},this.dismiss=e=>(this.dismissedToasts.add(e),e||this.toasts.forEach(e=>{this.subscribers.forEach(t=>t({id:e.id,dismiss:!0}))}),this.subscribers.forEach(t=>t({id:e,dismiss:!0})),e),this.message=(e,t)=>this.create({...t,message:e}),this.error=(e,t)=>this.create({...t,message:e,type:`error`}),this.success=(e,t)=>this.create({...t,type:`success`,message:e}),this.info=(e,t)=>this.create({...t,type:`info`,message:e}),this.warning=(e,t)=>this.create({...t,type:`warning`,message:e}),this.loading=(e,t)=>this.create({...t,type:`loading`,message:e}),this.promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:`loading`,message:t.loading,description:typeof t.description==`function`?void 0:t.description}));let r=e instanceof Promise?e:e(),i=n!==void 0,a,o=r.then(async e=>{if(a=[`resolve`,e],_.isValidElement(e))i=!1,this.create({id:n,type:`default`,message:e});else if(j(e)&&!e.ok){i=!1;let r=typeof t.error==`function`?await t.error(`HTTP error! status: ${e.status}`):t.error,a=typeof t.description==`function`?await t.description(`HTTP error! status: ${e.status}`):t.description;this.create({id:n,type:`error`,message:r,description:a})}else if(t.success!==void 0){i=!1;let r=typeof t.success==`function`?await t.success(e):t.success,a=typeof t.description==`function`?await t.description(e):t.description;this.create({id:n,type:`success`,message:r,description:a})}}).catch(async e=>{if(a=[`reject`,e],t.error!==void 0){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description;this.create({id:n,type:`error`,message:r,description:a})}}).finally(()=>{var e;i&&(this.dismiss(n),n=void 0),(e=t.finally)==null||e.call(t)}),s=()=>new Promise((e,t)=>o.then(()=>a[0]===`reject`?t(a[1]):e(a[1])).catch(t));return typeof n!=`string`&&typeof n!=`number`?{unwrap:s}:Object.assign(n,{unwrap:s})},this.custom=(e,t)=>{let n=t?.id||O++;return this.create({jsx:e(n),id:n,...t}),n},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},A=(e,t)=>{let n=t?.id||O++;return k.addToast({title:e,...t,id:n}),n},j=e=>e&&typeof e==`object`&&`ok`in e&&typeof e.ok==`boolean`&&`status`in e&&typeof e.status==`number`,M=Object.assign(A,{success:k.success,info:k.info,warning:k.warning,error:k.error,custom:k.custom,message:k.message,promise:k.promise,dismiss:k.dismiss,loading:k.loading},{getHistory:()=>k.toasts,getToasts:()=>k.getActiveToasts()});function N(e,{insertAt:t}={}){if(!e||typeof document>`u`)return;let n=document.head||document.getElementsByTagName(`head`)[0],r=document.createElement(`style`);r.type=`text/css`,t===`top`&&n.firstChild?n.insertBefore(r,n.firstChild):n.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}N(`:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)} -`);function P(e){return e.label!==void 0}var F=3,I=`32px`,te=`16px`,ne=4e3,re=356,ie=14,ae=20,L=200;function oe(...e){return e.filter(Boolean).join(` `)}function se(e){let[t,n]=e.split(`-`),r=[];return t&&r.push(t),n&&r.push(n),r}var ce=e=>{let{invert:t,toast:n,unstyled:r,interacting:i,setHeights:a,visibleToasts:o,heights:s,index:c,toasts:l,expanded:u,removeToast:d,defaultRichColors:f,closeButton:p,style:m,cancelButtonStyle:h,actionButtonStyle:g,className:v=``,descriptionClassName:y=``,duration:x,position:C,gap:w,loadingIcon:T,expandByDefault:E,classNames:O,icons:k,closeButtonAriaLabel:A=`Close toast`,pauseWhenPageIsHidden:j}=e,[M,N]=_.useState(null),[F,I]=_.useState(null),[te,re]=_.useState(!1),[ie,ce]=_.useState(!1),[le,ue]=_.useState(!1),[de,fe]=_.useState(!1),[pe,me]=_.useState(!1),[he,ge]=_.useState(0),[_e,ve]=_.useState(0),ye=_.useRef(n.duration||x||ne),be=_.useRef(null),xe=_.useRef(null),Se=c===0,Ce=c+1<=o,we=n.type,Te=n.dismissible!==!1,Ee=n.className||``,De=n.descriptionClassName||``,Oe=_.useMemo(()=>s.findIndex(e=>e.toastId===n.id)||0,[s,n.id]),ke=_.useMemo(()=>n.closeButton??p,[n.closeButton,p]),Ae=_.useMemo(()=>n.duration||x||ne,[n.duration,x]),je=_.useRef(0),Me=_.useRef(0),Ne=_.useRef(0),Pe=_.useRef(null),[Fe,Ie]=C.split(`-`),Le=_.useMemo(()=>s.reduce((e,t,n)=>n>=Oe?e:e+t.height,0),[s,Oe]),Re=D(),ze=n.invert||t,Be=we===`loading`;Me.current=_.useMemo(()=>Oe*w+Le,[Oe,Le]),_.useEffect(()=>{ye.current=Ae},[Ae]),_.useEffect(()=>{re(!0)},[]),_.useEffect(()=>{let e=xe.current;if(e){let t=e.getBoundingClientRect().height;return ve(t),a(e=>[{toastId:n.id,height:t,position:n.position},...e]),()=>a(e=>e.filter(e=>e.toastId!==n.id))}},[a,n.id]),_.useLayoutEffect(()=>{if(!te)return;let e=xe.current,t=e.style.height;e.style.height=`auto`;let r=e.getBoundingClientRect().height;e.style.height=t,ve(r),a(e=>e.find(e=>e.toastId===n.id)?e.map(e=>e.toastId===n.id?{...e,height:r}:e):[{toastId:n.id,height:r,position:n.position},...e])},[te,n.title,n.description,a,n.id]);let R=_.useCallback(()=>{ce(!0),ge(Me.current),a(e=>e.filter(e=>e.toastId!==n.id)),setTimeout(()=>{d(n)},L)},[n,d,a,Me]);_.useEffect(()=>{if(n.promise&&we===`loading`||n.duration===1/0||n.type===`loading`)return;let e;return u||i||j&&Re?(()=>{if(Ne.current{var e;(e=n.onAutoClose)==null||e.call(n,n),R()},ye.current)),()=>clearTimeout(e)},[u,i,n,we,j,Re,R]),_.useEffect(()=>{n.delete&&R()},[R,n.delete]);function Ve(){return k!=null&&k.loading?_.createElement(`div`,{className:oe(O?.loader,n?.classNames?.loader,`sonner-loader`),"data-visible":we===`loading`},k.loading):T?_.createElement(`div`,{className:oe(O?.loader,n?.classNames?.loader,`sonner-loader`),"data-visible":we===`loading`},T):_.createElement(S,{className:oe(O?.loader,n?.classNames?.loader),visible:we===`loading`})}return _.createElement(`li`,{tabIndex:0,ref:xe,className:oe(v,Ee,O?.toast,n?.classNames?.toast,O?.default,O?.[we],n?.classNames?.[we]),"data-sonner-toast":``,"data-rich-colors":n.richColors??f,"data-styled":!(n.jsx||n.unstyled||r),"data-mounted":te,"data-promise":!!n.promise,"data-swiped":pe,"data-removed":ie,"data-visible":Ce,"data-y-position":Fe,"data-x-position":Ie,"data-index":c,"data-front":Se,"data-swiping":le,"data-dismissible":Te,"data-type":we,"data-invert":ze,"data-swipe-out":de,"data-swipe-direction":F,"data-expanded":!!(u||E&&te),style:{"--index":c,"--toasts-before":c,"--z-index":l.length-c,"--offset":`${ie?he:Me.current}px`,"--initial-height":E?`auto`:`${_e}px`,...m,...n.style},onDragEnd:()=>{ue(!1),N(null),Pe.current=null},onPointerDown:e=>{Be||!Te||(be.current=new Date,ge(Me.current),e.target.setPointerCapture(e.pointerId),e.target.tagName!==`BUTTON`&&(ue(!0),Pe.current={x:e.clientX,y:e.clientY}))},onPointerUp:()=>{var e;if(de||!Te)return;Pe.current=null;let t=Number(xe.current?.style.getPropertyValue(`--swipe-amount-x`).replace(`px`,``)||0),r=Number(xe.current?.style.getPropertyValue(`--swipe-amount-y`).replace(`px`,``)||0),i=new Date().getTime()-be.current?.getTime(),a=M===`x`?t:r,o=Math.abs(a)/i;if(Math.abs(a)>=ae||o>.11){ge(Me.current),(e=n.onDismiss)==null||e.call(n,n),I(M===`x`?t>0?`right`:`left`:r>0?`down`:`up`),R(),fe(!0),me(!1);return}ue(!1),N(null)},onPointerMove:t=>{var n,r;if(!Pe.current||!Te||window.getSelection()?.toString().length>0)return;let i=t.clientY-Pe.current.y,a=t.clientX-Pe.current.x,o=e.swipeDirections??se(C);!M&&(Math.abs(a)>1||Math.abs(i)>1)&&N(Math.abs(a)>Math.abs(i)?`x`:`y`);let s={x:0,y:0};M===`y`?(o.includes(`top`)||o.includes(`bottom`))&&(o.includes(`top`)&&i<0||o.includes(`bottom`)&&i>0)&&(s.y=i):M===`x`&&(o.includes(`left`)||o.includes(`right`))&&(o.includes(`left`)&&a<0||o.includes(`right`)&&a>0)&&(s.x=a),(Math.abs(s.x)>0||Math.abs(s.y)>0)&&me(!0),(n=xe.current)==null||n.style.setProperty(`--swipe-amount-x`,`${s.x}px`),(r=xe.current)==null||r.style.setProperty(`--swipe-amount-y`,`${s.y}px`)}},ke&&!n.jsx?_.createElement(`button`,{"aria-label":A,"data-disabled":Be,"data-close-button":!0,onClick:Be||!Te?()=>{}:()=>{var e;R(),(e=n.onDismiss)==null||e.call(n,n)},className:oe(O?.closeButton,n?.classNames?.closeButton)},k?.close??ee):null,n.jsx||(0,_.isValidElement)(n.title)?n.jsx?n.jsx:typeof n.title==`function`?n.title():n.title:_.createElement(_.Fragment,null,we||n.icon||n.promise?_.createElement(`div`,{"data-icon":``,className:oe(O?.icon,n?.classNames?.icon)},n.promise||n.type===`loading`&&!n.icon?n.icon||Ve():null,n.type===`loading`?null:n.icon||k?.[we]||b(we)):null,_.createElement(`div`,{"data-content":``,className:oe(O?.content,n?.classNames?.content)},_.createElement(`div`,{"data-title":``,className:oe(O?.title,n?.classNames?.title)},typeof n.title==`function`?n.title():n.title),n.description?_.createElement(`div`,{"data-description":``,className:oe(y,De,O?.description,n?.classNames?.description)},typeof n.description==`function`?n.description():n.description):null),(0,_.isValidElement)(n.cancel)?n.cancel:n.cancel&&P(n.cancel)?_.createElement(`button`,{"data-button":!0,"data-cancel":!0,style:n.cancelButtonStyle||h,onClick:e=>{var t,r;P(n.cancel)&&Te&&((r=(t=n.cancel).onClick)==null||r.call(t,e),R())},className:oe(O?.cancelButton,n?.classNames?.cancelButton)},n.cancel.label):null,(0,_.isValidElement)(n.action)?n.action:n.action&&P(n.action)?_.createElement(`button`,{"data-button":!0,"data-action":!0,style:n.actionButtonStyle||g,onClick:e=>{var t,r;P(n.action)&&((r=(t=n.action).onClick)==null||r.call(t,e),!e.defaultPrevented&&R())},className:oe(O?.actionButton,n?.classNames?.actionButton)},n.action.label):null))};function le(){if(typeof window>`u`||typeof document>`u`)return`ltr`;let e=document.documentElement.getAttribute(`dir`);return e===`auto`||!e?window.getComputedStyle(document.documentElement).direction:e}function ue(e,t){let n={};return[e,t].forEach((e,t)=>{let r=t===1,i=r?`--mobile-offset`:`--offset`,a=r?te:I;function o(e){[`top`,`right`,`bottom`,`left`].forEach(t=>{n[`${i}-${t}`]=typeof e==`number`?`${e}px`:e})}typeof e==`number`||typeof e==`string`?o(e):typeof e==`object`?[`top`,`right`,`bottom`,`left`].forEach(t=>{e[t]===void 0?n[`${i}-${t}`]=a:n[`${i}-${t}`]=typeof e[t]==`number`?`${e[t]}px`:e[t]}):o(a)}),n}var de=(0,_.forwardRef)(function(e,t){let{invert:n,position:r=`bottom-right`,hotkey:i=[`altKey`,`KeyT`],expand:a,closeButton:o,className:s,offset:c,mobileOffset:l,theme:u=`light`,richColors:d,duration:f,style:p,visibleToasts:m=F,toastOptions:h,dir:g=le(),gap:v=ie,loadingIcon:b,icons:x,containerAriaLabel:S=`Notifications`,pauseWhenPageIsHidden:C}=e,[w,T]=_.useState([]),E=_.useMemo(()=>Array.from(new Set([r].concat(w.filter(e=>e.position).map(e=>e.position)))),[w,r]),[ee,D]=_.useState([]),[O,A]=_.useState(!1),[j,M]=_.useState(!1),[N,P]=_.useState(u===`system`?typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`:u),I=_.useRef(null),te=i.join(`+`).replace(/Key/g,``).replace(/Digit/g,``),ne=_.useRef(null),ae=_.useRef(!1),L=_.useCallback(e=>{T(t=>{var n;return(n=t.find(t=>t.id===e.id))!=null&&n.delete||k.dismiss(e.id),t.filter(({id:t})=>t!==e.id)})},[]);return _.useEffect(()=>k.subscribe(e=>{if(e.dismiss){T(t=>t.map(t=>t.id===e.id?{...t,delete:!0}:t));return}setTimeout(()=>{y.flushSync(()=>{T(t=>{let n=t.findIndex(t=>t.id===e.id);return n===-1?[e,...t]:[...t.slice(0,n),{...t[n],...e},...t.slice(n+1)]})})})}),[]),_.useEffect(()=>{if(u!==`system`){P(u);return}if(u===`system`&&(window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?P(`dark`):P(`light`)),typeof window>`u`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`);try{e.addEventListener(`change`,({matches:e})=>{P(e?`dark`:`light`)})}catch{e.addListener(({matches:e})=>{try{P(e?`dark`:`light`)}catch(e){console.error(e)}})}},[u]),_.useEffect(()=>{w.length<=1&&A(!1)},[w]),_.useEffect(()=>{let e=e=>{var t,n;i.every(t=>e[t]||e.code===t)&&(A(!0),(t=I.current)==null||t.focus()),e.code===`Escape`&&(document.activeElement===I.current||(n=I.current)!=null&&n.contains(document.activeElement))&&A(!1)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[i]),_.useEffect(()=>{if(I.current)return()=>{ne.current&&(ne.current.focus({preventScroll:!0}),ne.current=null,ae.current=!1)}},[I.current]),_.createElement(`section`,{ref:t,"aria-label":`${S} ${te}`,tabIndex:-1,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-atomic":`false`,suppressHydrationWarning:!0},E.map((t,r)=>{let[i,u]=t.split(`-`);return w.length?_.createElement(`ol`,{key:t,dir:g===`auto`?le():g,tabIndex:-1,ref:I,className:s,"data-sonner-toaster":!0,"data-theme":N,"data-y-position":i,"data-lifted":O&&w.length>1&&!a,"data-x-position":u,style:{"--front-toast-height":`${ee[0]?.height||0}px`,"--width":`${re}px`,"--gap":`${v}px`,...p,...ue(c,l)},onBlur:e=>{ae.current&&!e.currentTarget.contains(e.relatedTarget)&&(ae.current=!1,ne.current&&=(ne.current.focus({preventScroll:!0}),null))},onFocus:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||ae.current||(ae.current=!0,ne.current=e.relatedTarget)},onMouseEnter:()=>A(!0),onMouseMove:()=>A(!0),onMouseLeave:()=>{j||A(!1)},onDragEnd:()=>A(!1),onPointerDown:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||M(!0)},onPointerUp:()=>M(!1)},w.filter(e=>!e.position&&r===0||e.position===t).map((r,i)=>_.createElement(ce,{key:r.id,icons:x,index:i,toast:r,defaultRichColors:d,duration:h?.duration??f,className:h?.className,descriptionClassName:h?.descriptionClassName,invert:n,visibleToasts:m,closeButton:h?.closeButton??o,interacting:j,position:t,style:h?.style,unstyled:h?.unstyled,classNames:h?.classNames,cancelButtonStyle:h?.cancelButtonStyle,actionButtonStyle:h?.actionButtonStyle,removeToast:L,toasts:w.filter(e=>e.position==r.position),heights:ee.filter(e=>e.position==r.position),setHeights:D,expandByDefault:a,gap:v,loadingIcon:b,expanded:O,pauseWhenPageIsHidden:C,swipeDirections:e.swipeDirections}))):null}))}),fe=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),pe=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),me={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},he=(0,_.forwardRef)(({color:e=`currentColor`,size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>(0,_.createElement)(`svg`,{ref:c,...me,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:pe(`lucide`,i),...s},[...o.map(([e,t])=>(0,_.createElement)(e,t)),...Array.isArray(a)?a:[a]])),ge=(e,t)=>{let n=(0,_.forwardRef)(({className:n,...r},i)=>(0,_.createElement)(he,{ref:i,iconNode:t,className:pe(`lucide-${fe(e)}`,n),...r}));return n.displayName=`${e}`,n},_e=ge(`Check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),ve=ge(`ChevronDown`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),ye=ge(`ChevronUp`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),be=ge(`Copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),xe=ge(`EyeOff`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),Se=ge(`Eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Ce=ge(`Info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),we=ge(`Moon`,[[`path`,{d:`M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z`,key:`a7tn18`}]]),Te=ge(`Plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),Ee=ge(`RotateCcw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),De=ge(`Settings2`,[[`path`,{d:`M20 7h-9`,key:`3s1dr2`}],[`path`,{d:`M14 17H5`,key:`gfn3mx`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}],[`circle`,{cx:`7`,cy:`7`,r:`3`,key:`dfmy0x`}]]),Oe=ge(`Share2`,[[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}],[`circle`,{cx:`6`,cy:`12`,r:`3`,key:`w7nqdw`}],[`circle`,{cx:`18`,cy:`19`,r:`3`,key:`1xt0gg`}],[`line`,{x1:`8.59`,x2:`15.42`,y1:`13.51`,y2:`17.49`,key:`47mynk`}],[`line`,{x1:`15.41`,x2:`8.59`,y1:`6.51`,y2:`10.49`,key:`1n3mei`}]]),ke=ge(`Sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),Ae=ge(`Trash2`,[[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6`,key:`4alrt4`}],[`path`,{d:`M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2`,key:`v07s0e`}],[`line`,{x1:`10`,x2:`10`,y1:`11`,y2:`17`,key:`1uufr5`}],[`line`,{x1:`14`,x2:`14`,y1:`11`,y2:`17`,key:`xtxkd`}]]),je=ge(`X`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);async function Me(e,t){let n=await fetch(`/api/v1/fit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),signal:t}),r=await n.json();if(!n.ok){let e=r.error?`${r.error.code}: ${r.error.message}`:`HTTP ${n.status}`;throw Error(e)}return r}async function Ne(){return(await(await fetch(`/api/v1/gpus`)).json()).gpus}var Pe=`fit:`;function Fe(e,t){try{let n=localStorage.getItem(Pe+e);return n?JSON.parse(n):t}catch{return t}}function Ie(e,t){try{localStorage.setItem(Pe+e,JSON.stringify(t))}catch{}}function Le(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function Re(...e){return t=>{let n=!1,r=e.map(e=>{let r=Le(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;t{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),R=o(((e,t)=>{t.exports=Be()}))(),Ve=Symbol.for(`react.lazy`),He=_.use;function Ue(e){return typeof e==`object`&&!!e&&`then`in e}function We(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===Ve&&`_payload`in e&&Ue(e._payload)}function Ge(e){let t=qe(e),n=_.forwardRef((e,n)=>{let{children:r,...i}=e;We(r)&&typeof He==`function`&&(r=He(r._payload));let a=_.Children.toArray(r),o=a.find(Ye);if(o){let e=o.props.children,r=a.map(t=>t===o?_.Children.count(e)>1?_.Children.only(null):_.isValidElement(e)?e.props.children:null:t);return(0,R.jsx)(t,{...i,ref:n,children:_.isValidElement(e)?_.cloneElement(e,void 0,r):null})}return(0,R.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}var Ke=Ge(`Slot`);function qe(e){let t=_.forwardRef((e,t)=>{let{children:n,...r}=e;if(We(n)&&typeof He==`function`&&(n=He(n._payload)),_.isValidElement(n)){let e=Ze(n),i=Xe(r,n.props);return n.type!==_.Fragment&&(i.ref=t?Re(t,e):e),_.cloneElement(n,i)}return _.Children.count(n)>1?_.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Je=Symbol(`radix.slottable`);function Ye(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===Je}function Xe(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function Ze(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function Qe(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e==`boolean`?`${e}`:e===0?`0`:e,tt=$e,nt=(e,t)=>n=>{if(t?.variants==null)return tt(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=et(t)||et(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return tt(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},rt=`-`,it=e=>{let t=ct(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{let n=e.split(rt);return n[0]===``&&n.length!==1&&n.shift(),at(n,t)||st(e)},getConflictingClassGroupIds:(e,t)=>{let i=n[e]||[];return t&&r[e]?[...i,...r[e]]:i}}},at=(e,t)=>{if(e.length===0)return t.classGroupId;let n=e[0],r=t.nextPart.get(n),i=r?at(e.slice(1),r):void 0;if(i)return i;if(t.validators.length===0)return;let a=e.join(rt);return t.validators.find(({validator:e})=>e(a))?.classGroupId},ot=/^\[(.+)\]$/,st=e=>{if(ot.test(e)){let t=ot.exec(e)[1],n=t?.substring(0,t.indexOf(`:`));if(n)return`arbitrary..`+n}},ct=e=>{let{theme:t,prefix:n}=e,r={nextPart:new Map,validators:[]};return ft(Object.entries(e.classGroups),n).forEach(([e,n])=>{lt(n,r,e,t)}),r},lt=(e,t,n,r)=>{e.forEach(e=>{if(typeof e==`string`){let r=e===``?t:ut(t,e);r.classGroupId=n;return}if(typeof e==`function`){if(dt(e)){lt(e(r),t,n,r);return}t.validators.push({validator:e,classGroupId:n});return}Object.entries(e).forEach(([e,i])=>{lt(i,ut(t,e),n,r)})})},ut=(e,t)=>{let n=e;return t.split(rt).forEach(e=>{n.nextPart.has(e)||n.nextPart.set(e,{nextPart:new Map,validators:[]}),n=n.nextPart.get(e)}),n},dt=e=>e.isThemeGetter,ft=(e,t)=>t?e.map(([e,n])=>[e,n.map(e=>typeof e==`string`?t+e:typeof e==`object`?Object.fromEntries(Object.entries(e).map(([e,n])=>[t+e,n])):e)]):e,pt=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=new Map,r=new Map,i=(i,a)=>{n.set(i,a),t++,t>e&&(t=0,r=n,n=new Map)};return{get(e){let t=n.get(e);if(t!==void 0)return t;if((t=r.get(e))!==void 0)return i(e,t),t},set(e,t){n.has(e)?n.set(e,t):i(e,t)}}},mt=`!`,ht=e=>{let{separator:t,experimentalParseClassName:n}=e,r=t.length===1,i=t[0],a=t.length,o=e=>{let n=[],o=0,s=0,c;for(let l=0;ls?c-s:void 0}};return n?e=>n({className:e,parseClassName:o}):o},gt=e=>{if(e.length<=1)return e;let t=[],n=[];return e.forEach(e=>{e[0]===`[`?(t.push(...n.sort(),e),n=[]):n.push(e)}),t.push(...n.sort()),t},_t=e=>({cache:pt(e.cacheSize),parseClassName:ht(e),...it(e)}),vt=/\s+/,yt=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i}=t,a=[],o=e.trim().split(vt),s=``;for(let e=o.length-1;e>=0;--e){let t=o[e],{modifiers:c,hasImportantModifier:l,baseClassName:u,maybePostfixModifierPosition:d}=n(t),f=!!d,p=r(f?u.substring(0,d):u);if(!p){if(!f){s=t+(s.length>0?` `+s:s);continue}if(p=r(u),!p){s=t+(s.length>0?` `+s:s);continue}f=!1}let m=gt(c).join(`:`),h=l?m+mt:m,g=h+p;if(a.includes(g))continue;a.push(g);let _=i(p,f);for(let e=0;e<_.length;++e){let t=_[e];a.push(h+t)}s=t+(s.length>0?` `+s:s)}return s};function bt(){let e=0,t,n,r=``;for(;e{if(typeof e==`string`)return e;let t,n=``;for(let r=0;rt(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)}function s(e){let t=r(e);if(t)return t;let a=yt(e,n);return i(e,a),a}return function(){return a(bt.apply(null,arguments))}}var z=e=>{let t=t=>t[e]||[];return t.isThemeGetter=!0,t},Ct=/^\[(?:([a-z-]+):)?(.+)\]$/i,wt=/^\d+\/\d+$/,Tt=new Set([`px`,`full`,`screen`]),Et=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Dt=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ot=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,kt=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,At=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,jt=e=>Nt(e)||Tt.has(e)||wt.test(e),Mt=e=>Gt(e,`length`,Kt),Nt=e=>!!e&&!Number.isNaN(Number(e)),Pt=e=>Gt(e,`number`,Nt),Ft=e=>!!e&&Number.isInteger(Number(e)),It=e=>e.endsWith(`%`)&&Nt(e.slice(0,-1)),B=e=>Ct.test(e),Lt=e=>Et.test(e),Rt=new Set([`length`,`size`,`percentage`]),zt=e=>Gt(e,Rt,qt),Bt=e=>Gt(e,`position`,qt),Vt=new Set([`image`,`url`]),Ht=e=>Gt(e,Vt,Yt),Ut=e=>Gt(e,``,Jt),Wt=()=>!0,Gt=(e,t,n)=>{let r=Ct.exec(e);return r?r[1]?typeof t==`string`?r[1]===t:t.has(r[1]):n(r[2]):!1},Kt=e=>Dt.test(e)&&!Ot.test(e),qt=()=>!1,Jt=e=>kt.test(e),Yt=e=>At.test(e),Xt=St(()=>{let e=z(`colors`),t=z(`spacing`),n=z(`blur`),r=z(`brightness`),i=z(`borderColor`),a=z(`borderRadius`),o=z(`borderSpacing`),s=z(`borderWidth`),c=z(`contrast`),l=z(`grayscale`),u=z(`hueRotate`),d=z(`invert`),f=z(`gap`),p=z(`gradientColorStops`),m=z(`gradientColorStopPositions`),h=z(`inset`),g=z(`margin`),_=z(`opacity`),v=z(`padding`),y=z(`saturate`),b=z(`scale`),x=z(`sepia`),S=z(`skew`),C=z(`space`),w=z(`translate`),T=()=>[`auto`,`contain`,`none`],E=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],ee=()=>[`auto`,B,t],D=()=>[B,t],O=()=>[``,jt,Mt],k=()=>[`auto`,Nt,B],A=()=>[`bottom`,`center`,`left`,`left-bottom`,`left-top`,`right`,`right-bottom`,`right-top`,`top`],j=()=>[`solid`,`dashed`,`dotted`,`double`,`none`],M=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],N=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`],P=()=>[``,`0`,B],F=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],I=()=>[Nt,B];return{cacheSize:500,separator:`:`,theme:{colors:[Wt],spacing:[jt,Mt],blur:[`none`,``,Lt,B],brightness:I(),borderColor:[e],borderRadius:[`none`,``,`full`,Lt,B],borderSpacing:D(),borderWidth:O(),contrast:I(),grayscale:P(),hueRotate:I(),invert:P(),gap:D(),gradientColorStops:[e],gradientColorStopPositions:[It,Mt],inset:ee(),margin:ee(),opacity:I(),padding:D(),saturate:I(),scale:I(),sepia:P(),skew:I(),space:D(),translate:D()},classGroups:{aspect:[{aspect:[`auto`,`square`,`video`,B]}],container:[`container`],columns:[{columns:[Lt]}],"break-after":[{"break-after":F()}],"break-before":[{"break-before":F()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:[...A(),B]}],overflow:[{overflow:E()}],"overflow-x":[{"overflow-x":E()}],"overflow-y":[{"overflow-y":E()}],overscroll:[{overscroll:T()}],"overscroll-x":[{"overscroll-x":T()}],"overscroll-y":[{"overscroll-y":T()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:[h]}],"inset-x":[{"inset-x":[h]}],"inset-y":[{"inset-y":[h]}],start:[{start:[h]}],end:[{end:[h]}],top:[{top:[h]}],right:[{right:[h]}],bottom:[{bottom:[h]}],left:[{left:[h]}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[`auto`,Ft,B]}],basis:[{basis:ee()}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`wrap`,`wrap-reverse`,`nowrap`]}],flex:[{flex:[`1`,`auto`,`initial`,`none`,B]}],grow:[{grow:P()}],shrink:[{shrink:P()}],order:[{order:[`first`,`last`,`none`,Ft,B]}],"grid-cols":[{"grid-cols":[Wt]}],"col-start-end":[{col:[`auto`,{span:[`full`,Ft,B]},B]}],"col-start":[{"col-start":k()}],"col-end":[{"col-end":k()}],"grid-rows":[{"grid-rows":[Wt]}],"row-start-end":[{row:[`auto`,{span:[Ft,B]},B]}],"row-start":[{"row-start":k()}],"row-end":[{"row-end":k()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":[`auto`,`min`,`max`,`fr`,B]}],"auto-rows":[{"auto-rows":[`auto`,`min`,`max`,`fr`,B]}],gap:[{gap:[f]}],"gap-x":[{"gap-x":[f]}],"gap-y":[{"gap-y":[f]}],"justify-content":[{justify:[`normal`,...N()]}],"justify-items":[{"justify-items":[`start`,`end`,`center`,`stretch`]}],"justify-self":[{"justify-self":[`auto`,`start`,`end`,`center`,`stretch`]}],"align-content":[{content:[`normal`,...N(),`baseline`]}],"align-items":[{items:[`start`,`end`,`center`,`baseline`,`stretch`]}],"align-self":[{self:[`auto`,`start`,`end`,`center`,`stretch`,`baseline`]}],"place-content":[{"place-content":[...N(),`baseline`]}],"place-items":[{"place-items":[`start`,`end`,`center`,`baseline`,`stretch`]}],"place-self":[{"place-self":[`auto`,`start`,`end`,`center`,`stretch`]}],p:[{p:[v]}],px:[{px:[v]}],py:[{py:[v]}],ps:[{ps:[v]}],pe:[{pe:[v]}],pt:[{pt:[v]}],pr:[{pr:[v]}],pb:[{pb:[v]}],pl:[{pl:[v]}],m:[{m:[g]}],mx:[{mx:[g]}],my:[{my:[g]}],ms:[{ms:[g]}],me:[{me:[g]}],mt:[{mt:[g]}],mr:[{mr:[g]}],mb:[{mb:[g]}],ml:[{ml:[g]}],"space-x":[{"space-x":[C]}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":[C]}],"space-y-reverse":[`space-y-reverse`],w:[{w:[`auto`,`min`,`max`,`fit`,`svw`,`lvw`,`dvw`,B,t]}],"min-w":[{"min-w":[B,t,`min`,`max`,`fit`]}],"max-w":[{"max-w":[B,t,`none`,`full`,`min`,`max`,`fit`,`prose`,{screen:[Lt]},Lt]}],h:[{h:[B,t,`auto`,`min`,`max`,`fit`,`svh`,`lvh`,`dvh`]}],"min-h":[{"min-h":[B,t,`min`,`max`,`fit`,`svh`,`lvh`,`dvh`]}],"max-h":[{"max-h":[B,t,`min`,`max`,`fit`,`svh`,`lvh`,`dvh`]}],size:[{size:[B,t,`auto`,`min`,`max`,`fit`]}],"font-size":[{text:[`base`,Lt,Mt]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`,Pt]}],"font-family":[{font:[Wt]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`,B]}],"line-clamp":[{"line-clamp":[`none`,Nt,Pt]}],leading:[{leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`,jt,B]}],"list-image":[{"list-image":[`none`,B]}],"list-style-type":[{list:[`none`,`disc`,`decimal`,B]}],"list-style-position":[{list:[`inside`,`outside`]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[_]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[_]}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...j(),`wavy`]}],"text-decoration-thickness":[{decoration:[`auto`,`from-font`,jt,Mt]}],"underline-offset":[{"underline-offset":[`auto`,jt,B]}],"text-decoration-color":[{decoration:[e]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:D()}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,B]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,B]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-opacity":[{"bg-opacity":[_]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:[...A(),Bt]}],"bg-repeat":[{bg:[`no-repeat`,{repeat:[``,`x`,`y`,`round`,`space`]}]}],"bg-size":[{bg:[`auto`,`cover`,`contain`,zt]}],"bg-image":[{bg:[`none`,{"gradient-to":[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},Ht]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[m]}],"gradient-via-pos":[{via:[m]}],"gradient-to-pos":[{to:[m]}],"gradient-from":[{from:[p]}],"gradient-via":[{via:[p]}],"gradient-to":[{to:[p]}],rounded:[{rounded:[a]}],"rounded-s":[{"rounded-s":[a]}],"rounded-e":[{"rounded-e":[a]}],"rounded-t":[{"rounded-t":[a]}],"rounded-r":[{"rounded-r":[a]}],"rounded-b":[{"rounded-b":[a]}],"rounded-l":[{"rounded-l":[a]}],"rounded-ss":[{"rounded-ss":[a]}],"rounded-se":[{"rounded-se":[a]}],"rounded-ee":[{"rounded-ee":[a]}],"rounded-es":[{"rounded-es":[a]}],"rounded-tl":[{"rounded-tl":[a]}],"rounded-tr":[{"rounded-tr":[a]}],"rounded-br":[{"rounded-br":[a]}],"rounded-bl":[{"rounded-bl":[a]}],"border-w":[{border:[s]}],"border-w-x":[{"border-x":[s]}],"border-w-y":[{"border-y":[s]}],"border-w-s":[{"border-s":[s]}],"border-w-e":[{"border-e":[s]}],"border-w-t":[{"border-t":[s]}],"border-w-r":[{"border-r":[s]}],"border-w-b":[{"border-b":[s]}],"border-w-l":[{"border-l":[s]}],"border-opacity":[{"border-opacity":[_]}],"border-style":[{border:[...j(),`hidden`]}],"divide-x":[{"divide-x":[s]}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":[s]}],"divide-y-reverse":[`divide-y-reverse`],"divide-opacity":[{"divide-opacity":[_]}],"divide-style":[{divide:j()}],"border-color":[{border:[i]}],"border-color-x":[{"border-x":[i]}],"border-color-y":[{"border-y":[i]}],"border-color-s":[{"border-s":[i]}],"border-color-e":[{"border-e":[i]}],"border-color-t":[{"border-t":[i]}],"border-color-r":[{"border-r":[i]}],"border-color-b":[{"border-b":[i]}],"border-color-l":[{"border-l":[i]}],"divide-color":[{divide:[i]}],"outline-style":[{outline:[``,...j()]}],"outline-offset":[{"outline-offset":[jt,B]}],"outline-w":[{outline:[jt,Mt]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:O()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[_]}],"ring-offset-w":[{"ring-offset":[jt,Mt]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:[``,`inner`,`none`,Lt,Ut]}],"shadow-color":[{shadow:[Wt]}],opacity:[{opacity:[_]}],"mix-blend":[{"mix-blend":[...M(),`plus-lighter`,`plus-darker`]}],"bg-blend":[{"bg-blend":M()}],filter:[{filter:[``,`none`]}],blur:[{blur:[n]}],brightness:[{brightness:[r]}],contrast:[{contrast:[c]}],"drop-shadow":[{"drop-shadow":[``,`none`,Lt,B]}],grayscale:[{grayscale:[l]}],"hue-rotate":[{"hue-rotate":[u]}],invert:[{invert:[d]}],saturate:[{saturate:[y]}],sepia:[{sepia:[x]}],"backdrop-filter":[{"backdrop-filter":[``,`none`]}],"backdrop-blur":[{"backdrop-blur":[n]}],"backdrop-brightness":[{"backdrop-brightness":[r]}],"backdrop-contrast":[{"backdrop-contrast":[c]}],"backdrop-grayscale":[{"backdrop-grayscale":[l]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[u]}],"backdrop-invert":[{"backdrop-invert":[d]}],"backdrop-opacity":[{"backdrop-opacity":[_]}],"backdrop-saturate":[{"backdrop-saturate":[y]}],"backdrop-sepia":[{"backdrop-sepia":[x]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":[o]}],"border-spacing-x":[{"border-spacing-x":[o]}],"border-spacing-y":[{"border-spacing-y":[o]}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[`none`,`all`,``,`colors`,`opacity`,`shadow`,`transform`,B]}],duration:[{duration:I()}],ease:[{ease:[`linear`,`in`,`out`,`in-out`,B]}],delay:[{delay:I()}],animate:[{animate:[`none`,`spin`,`ping`,`pulse`,`bounce`,B]}],transform:[{transform:[``,`gpu`,`none`]}],scale:[{scale:[b]}],"scale-x":[{"scale-x":[b]}],"scale-y":[{"scale-y":[b]}],rotate:[{rotate:[Ft,B]}],"translate-x":[{"translate-x":[w]}],"translate-y":[{"translate-y":[w]}],"skew-x":[{"skew-x":[S]}],"skew-y":[{"skew-y":[S]}],"transform-origin":[{origin:[`center`,`top`,`top-right`,`right`,`bottom-right`,`bottom`,`bottom-left`,`left`,`top-left`,B]}],accent:[{accent:[`auto`,e]}],appearance:[{appearance:[`none`,`auto`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,B]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":[`none`,`auto`]}],resize:[{resize:[`none`,`y`,`x`,``]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scroll-m":[{"scroll-m":D()}],"scroll-mx":[{"scroll-mx":D()}],"scroll-my":[{"scroll-my":D()}],"scroll-ms":[{"scroll-ms":D()}],"scroll-me":[{"scroll-me":D()}],"scroll-mt":[{"scroll-mt":D()}],"scroll-mr":[{"scroll-mr":D()}],"scroll-mb":[{"scroll-mb":D()}],"scroll-ml":[{"scroll-ml":D()}],"scroll-p":[{"scroll-p":D()}],"scroll-px":[{"scroll-px":D()}],"scroll-py":[{"scroll-py":D()}],"scroll-ps":[{"scroll-ps":D()}],"scroll-pe":[{"scroll-pe":D()}],"scroll-pt":[{"scroll-pt":D()}],"scroll-pr":[{"scroll-pr":D()}],"scroll-pb":[{"scroll-pb":D()}],"scroll-pl":[{"scroll-pl":D()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,B]}],fill:[{fill:[e,`none`]}],"stroke-w":[{stroke:[jt,Mt,Pt]}],stroke:[{stroke:[e,`none`]}],sr:[`sr-only`,`not-sr-only`],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-s`,`border-w-e`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-s`,`border-color-e`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]}}});function V(...e){return Xt($e(e))}var Zt=nt(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0`,{variants:{variant:{default:`bg-primary text-primary-foreground shadow hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90`,outline:`border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2`,sm:`h-8 rounded-md px-3 text-xs`,lg:`h-10 rounded-md px-8`,icon:`h-9 w-9`}},defaultVariants:{variant:`default`,size:`default`}}),Qt=_.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},a)=>(0,R.jsx)(r?Ke:`button`,{className:V(Zt({variant:t,size:n,className:e})),ref:a,...i}));Qt.displayName=`Button`;var $t=_.forwardRef(({className:e,type:t,...n},r)=>(0,R.jsx)(`input`,{type:t,className:V(`flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`,e),ref:r,...n}));$t.displayName=`Input`;function en(e,[t,n]){return Math.min(n,Math.max(t,e))}typeof window<`u`&&window.document&&window.document.createElement;function H(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}function tn(e,t=[]){let n=[];function r(t,r){let i=_.createContext(r),a=n.length;n=[...n,r];let o=t=>{let{scope:n,children:r,...o}=t,s=n?.[e]?.[a]||i,c=_.useMemo(()=>o,Object.values(o));return(0,R.jsx)(s.Provider,{value:c,children:r})};o.displayName=t+`Provider`;function s(n,o){let s=o?.[e]?.[a]||i,c=_.useContext(s);if(c)return c;if(r!==void 0)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}return[o,s]}let i=()=>{let t=n.map(e=>_.createContext(e));return function(n){let r=n?.[e]||t;return _.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return i.scopeName=e,[r,nn(i,...t)]}function nn(...e){let t=e[0];if(e.length===1)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return _.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}function rn(e){let t=an(e),n=_.forwardRef((e,n)=>{let{children:r,...i}=e,a=_.Children.toArray(r),o=a.find(sn);if(o){let e=o.props.children,r=a.map(t=>t===o?_.Children.count(e)>1?_.Children.only(null):_.isValidElement(e)?e.props.children:null:t);return(0,R.jsx)(t,{...i,ref:n,children:_.isValidElement(e)?_.cloneElement(e,void 0,r):null})}return(0,R.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function an(e){let t=_.forwardRef((e,t)=>{let{children:n,...r}=e;if(_.isValidElement(n)){let e=ln(n),i=cn(r,n.props);return n.type!==_.Fragment&&(i.ref=t?Re(t,e):e),_.cloneElement(n,i)}return _.Children.count(n)>1?_.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var on=Symbol(`radix.slottable`);function sn(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===on}function cn(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function ln(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function un(e){let t=e+`CollectionProvider`,[n,r]=tn(t),[i,a]=n(t,{collectionRef:{current:null},itemMap:new Map}),o=e=>{let{scope:t,children:n}=e,r=_.useRef(null),a=_.useRef(new Map).current;return(0,R.jsx)(i,{scope:t,itemMap:a,collectionRef:r,children:n})};o.displayName=t;let s=e+`CollectionSlot`,c=rn(s),l=_.forwardRef((e,t)=>{let{scope:n,children:r}=e;return(0,R.jsx)(c,{ref:ze(t,a(s,n).collectionRef),children:r})});l.displayName=s;let u=e+`CollectionItemSlot`,d=`data-radix-collection-item`,f=rn(u),p=_.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=_.useRef(null),s=ze(t,o),c=a(u,n);return _.useEffect(()=>(c.itemMap.set(o,{ref:o,...i}),()=>void c.itemMap.delete(o))),(0,R.jsx)(f,{[d]:``,ref:s,children:r})});p.displayName=u;function m(t){let n=a(e+`CollectionConsumer`,t);return _.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${d}]`));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])}return[{Provider:o,Slot:l,ItemSlot:p},m,r]}var dn=_.createContext(void 0);function fn(e){let t=_.useContext(dn);return e||t||`ltr`}function pn(e){let t=mn(e),n=_.forwardRef((e,n)=>{let{children:r,...i}=e,a=_.Children.toArray(r),o=a.find(gn);if(o){let e=o.props.children,r=a.map(t=>t===o?_.Children.count(e)>1?_.Children.only(null):_.isValidElement(e)?e.props.children:null:t);return(0,R.jsx)(t,{...i,ref:n,children:_.isValidElement(e)?_.cloneElement(e,void 0,r):null})}return(0,R.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function mn(e){let t=_.forwardRef((e,t)=>{let{children:n,...r}=e;if(_.isValidElement(n)){let e=vn(n),i=_n(r,n.props);return n.type!==_.Fragment&&(i.ref=t?Re(t,e):e),_.cloneElement(n,i)}return _.Children.count(n)>1?_.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var hn=Symbol(`radix.slottable`);function gn(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===hn}function _n(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function vn(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var yn=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=pn(`Primitive.${t}`),r=_.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,R.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function bn(e,t){e&&y.flushSync(()=>e.dispatchEvent(t))}function xn(e){let t=_.useRef(e);return _.useEffect(()=>{t.current=e}),_.useMemo(()=>(...e)=>t.current?.(...e),[])}function Sn(e,t=globalThis?.document){let n=xn(e);_.useEffect(()=>{let e=e=>{e.key===`Escape`&&n(e)};return t.addEventListener(`keydown`,e,{capture:!0}),()=>t.removeEventListener(`keydown`,e,{capture:!0})},[n,t])}var Cn=`DismissableLayer`,wn=`dismissableLayer.update`,Tn=`dismissableLayer.pointerDownOutside`,En=`dismissableLayer.focusOutside`,Dn,On=_.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),kn=_.forwardRef((e,t)=>{let{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:o,onDismiss:s,...c}=e,l=_.useContext(On),[u,d]=_.useState(null),f=u?.ownerDocument??globalThis?.document,[,p]=_.useState({}),m=ze(t,e=>d(e)),h=Array.from(l.layers),[g]=[...l.layersWithOutsidePointerEventsDisabled].slice(-1),v=h.indexOf(g),y=u?h.indexOf(u):-1,b=l.layersWithOutsidePointerEventsDisabled.size>0,x=y>=v,S=Mn(e=>{let t=e.target,n=[...l.branches].some(e=>e.contains(t));!x||n||(i?.(e),o?.(e),e.defaultPrevented||s?.())},f),C=Nn(e=>{let t=e.target;[...l.branches].some(e=>e.contains(t))||(a?.(e),o?.(e),e.defaultPrevented||s?.())},f);return Sn(e=>{y===l.layers.size-1&&(r?.(e),!e.defaultPrevented&&s&&(e.preventDefault(),s()))},f),_.useEffect(()=>{if(u)return n&&(l.layersWithOutsidePointerEventsDisabled.size===0&&(Dn=f.body.style.pointerEvents,f.body.style.pointerEvents=`none`),l.layersWithOutsidePointerEventsDisabled.add(u)),l.layers.add(u),Pn(),()=>{n&&l.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=Dn)}},[u,f,n,l]),_.useEffect(()=>()=>{u&&(l.layers.delete(u),l.layersWithOutsidePointerEventsDisabled.delete(u),Pn())},[u,l]),_.useEffect(()=>{let e=()=>p({});return document.addEventListener(wn,e),()=>document.removeEventListener(wn,e)},[]),(0,R.jsx)(yn.div,{...c,ref:m,style:{pointerEvents:b?x?`auto`:`none`:void 0,...e.style},onFocusCapture:H(e.onFocusCapture,C.onFocusCapture),onBlurCapture:H(e.onBlurCapture,C.onBlurCapture),onPointerDownCapture:H(e.onPointerDownCapture,S.onPointerDownCapture)})});kn.displayName=Cn;var An=`DismissableLayerBranch`,jn=_.forwardRef((e,t)=>{let n=_.useContext(On),r=_.useRef(null),i=ze(t,r);return _.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,R.jsx)(yn.div,{...e,ref:i})});jn.displayName=An;function Mn(e,t=globalThis?.document){let n=xn(e),r=_.useRef(!1),i=_.useRef(()=>{});return _.useEffect(()=>{let e=e=>{if(e.target&&!r.current){let r=function(){Fn(Tn,n,a,{discrete:!0})},a={originalEvent:e};e.pointerType===`touch`?(t.removeEventListener(`click`,i.current),i.current=r,t.addEventListener(`click`,i.current,{once:!0})):r()}else t.removeEventListener(`click`,i.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener(`pointerdown`,e)},0);return()=>{window.clearTimeout(a),t.removeEventListener(`pointerdown`,e),t.removeEventListener(`click`,i.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function Nn(e,t=globalThis?.document){let n=xn(e),r=_.useRef(!1);return _.useEffect(()=>{let e=e=>{e.target&&!r.current&&Fn(En,n,{originalEvent:e},{discrete:!1})};return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function Pn(){let e=new CustomEvent(wn);document.dispatchEvent(e)}function Fn(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?bn(i,a):i.dispatchEvent(a)}var In=0;function Ln(){_.useEffect(()=>{let e=document.querySelectorAll(`[data-radix-focus-guard]`);return document.body.insertAdjacentElement(`afterbegin`,e[0]??Rn()),document.body.insertAdjacentElement(`beforeend`,e[1]??Rn()),In++,()=>{In===1&&document.querySelectorAll(`[data-radix-focus-guard]`).forEach(e=>e.remove()),In--}},[])}function Rn(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}var zn=`focusScope.autoFocusOnMount`,Bn=`focusScope.autoFocusOnUnmount`,Vn={bubbles:!1,cancelable:!0},Hn=`FocusScope`,Un=_.forwardRef((e,t)=>{let{loop:n=!1,trapped:r=!1,onMountAutoFocus:i,onUnmountAutoFocus:a,...o}=e,[s,c]=_.useState(null),l=xn(i),u=xn(a),d=_.useRef(null),f=ze(t,e=>c(e)),p=_.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;_.useEffect(()=>{if(r){let e=function(e){if(p.paused||!s)return;let t=e.target;s.contains(t)?d.current=t:Xn(d.current,{select:!0})},t=function(e){if(p.paused||!s)return;let t=e.relatedTarget;t!==null&&(s.contains(t)||Xn(d.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&Xn(s)};document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return s&&r.observe(s,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,s,p.paused]),_.useEffect(()=>{if(s){Zn.add(p);let e=document.activeElement;if(!s.contains(e)){let t=new CustomEvent(zn,Vn);s.addEventListener(zn,l),s.dispatchEvent(t),t.defaultPrevented||(Wn(er(Kn(s)),{select:!0}),document.activeElement===e&&Xn(s))}return()=>{s.removeEventListener(zn,l),setTimeout(()=>{let t=new CustomEvent(Bn,Vn);s.addEventListener(Bn,u),s.dispatchEvent(t),t.defaultPrevented||Xn(e??document.body,{select:!0}),s.removeEventListener(Bn,u),Zn.remove(p)},0)}}},[s,l,u,p]);let m=_.useCallback(e=>{if(!n&&!r||p.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=Gn(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&Xn(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&Xn(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,p.paused]);return(0,R.jsx)(yn.div,{tabIndex:-1,...o,ref:f,onKeyDown:m})});Un.displayName=Hn;function Wn(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(Xn(r,{select:t}),document.activeElement!==n)return}function Gn(e){let t=Kn(e);return[qn(t,e),qn(t.reverse(),e)]}function Kn(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function qn(e,t){for(let n of e)if(!Jn(n,{upTo:t}))return n}function Jn(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function Yn(e){return e instanceof HTMLInputElement&&`select`in e}function Xn(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&Yn(e)&&t&&e.select()}}var Zn=Qn();function Qn(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=$n(e,t),e.unshift(t)},remove(t){e=$n(e,t),e[0]?.resume()}}}function $n(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function er(e){return e.filter(e=>e.tagName!==`A`)}var tr=globalThis?.document?_.useLayoutEffect:()=>{},nr=_.useId||(()=>void 0),rr=0;function ir(e){let[t,n]=_.useState(nr());return tr(()=>{e||n(e=>e??String(rr++))},[e]),e||(t?`radix-${t}`:``)}var ar=[`top`,`right`,`bottom`,`left`],or=Math.min,sr=Math.max,cr=Math.round,lr=Math.floor,ur=e=>({x:e,y:e}),dr={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function fr(e,t,n){return sr(e,or(t,n))}function pr(e,t){return typeof e==`function`?e(t):e}function mr(e){return e.split(`-`)[0]}function hr(e){return e.split(`-`)[1]}function gr(e){return e===`x`?`y`:`x`}function _r(e){return e===`y`?`height`:`width`}function vr(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function yr(e){return gr(vr(e))}function br(e,t,n){n===void 0&&(n=!1);let r=hr(e),i=yr(e),a=_r(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=kr(o)),[o,kr(o)]}function xr(e){let t=kr(e);return[Sr(e),t,Sr(t)]}function Sr(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var Cr=[`left`,`right`],wr=[`right`,`left`],Tr=[`top`,`bottom`],Er=[`bottom`,`top`];function Dr(e,t,n){switch(e){case`top`:case`bottom`:return n?t?wr:Cr:t?Cr:wr;case`left`:case`right`:return t?Tr:Er;default:return[]}}function Or(e,t,n,r){let i=hr(e),a=Dr(mr(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(Sr)))),a}function kr(e){let t=mr(e);return dr[t]+e.slice(t.length)}function Ar(e){return{top:0,right:0,bottom:0,left:0,...e}}function jr(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:Ar(e)}function Mr(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function Nr(e,t,n){let{reference:r,floating:i}=e,a=vr(t),o=yr(t),s=_r(o),c=mr(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(hr(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}async function Pr(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=pr(t,e),p=jr(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=Mr(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=Mr(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var Fr=50,Ir=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:Pr},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=Nr(l,r,c),f=r,p=0,m={};for(let n=0;n({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=pr(e,t)||{};if(l==null)return{};let d=jr(u),f={x:n,y:r},p=yr(i),m=_r(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=or(d[_],T),ee=or(d[v],T),D=E,O=C-h[m]-ee,k=C/2-h[m]/2+w,A=fr(D,k,O),j=!c.arrow&&hr(i)!=null&&k!==A&&a.reference[m]/2-(ke<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==vr(t))||T.every(e=>vr(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=vr(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function zr(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Br(e){return ar.some(t=>e[t]>=0)}var Vr=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=pr(e,t);switch(i){case`referenceHidden`:{let e=zr(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:Br(e)}}}case`escaped`:{let e=zr(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:Br(e)}}}default:return{}}}}},Hr=new Set([`left`,`top`]);async function Ur(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=mr(n),s=hr(n),c=vr(n)===`y`,l=Hr.has(o)?-1:1,u=a&&c?-1:1,d=pr(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var Wr=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await Ur(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},Gr=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=pr(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=vr(mr(i)),p=gr(f),m=u[p],h=u[f];if(o){let e=p===`y`?`top`:`left`,t=p===`y`?`bottom`:`right`,n=m+d[e],r=m-d[t];m=fr(n,m,r)}if(s){let e=f===`y`?`top`:`left`,t=f===`y`?`bottom`:`right`,n=h+d[e],r=h-d[t];h=fr(n,h,r)}let g=c.fn({...t,[p]:m,[f]:h});return{...g,data:{x:g.x-n,y:g.y-r,enabled:{[p]:o,[f]:s}}}}}},Kr=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=pr(e,t),u={x:n,y:r},d=vr(i),f=gr(d),p=u[f],m=u[d],h=pr(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=Hr.has(mr(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);mr&&(m=r)}return{[f]:p,[d]:m}}}},qr=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){var n,r;let{placement:i,rects:a,platform:o,elements:s}=t,{apply:c=()=>{},...l}=pr(e,t),u=await o.detectOverflow(t,l),d=mr(i),f=hr(i),p=vr(i)===`y`,{width:m,height:h}=a.floating,g,_;d===`top`||d===`bottom`?(g=d,_=f===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?`start`:`end`)?`left`:`right`):(_=d,g=f===`end`?`top`:`bottom`);let v=h-u.top-u.bottom,y=m-u.left-u.right,b=or(h-u[g],v),x=or(m-u[_],y),S=!t.middlewareData.shift,C=b,w=x;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(w=y),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(C=v),S&&!f){let e=sr(u.left,0),t=sr(u.right,0),n=sr(u.top,0),r=sr(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:sr(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:sr(u.top,u.bottom))}await c({...t,availableWidth:w,availableHeight:C});let T=await o.getDimensions(s.floating);return m!==T.width||h!==T.height?{reset:{rects:!0}}:{}}}};function Jr(){return typeof window<`u`}function Yr(e){return Qr(e)?(e.nodeName||``).toLowerCase():`#document`}function Xr(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Zr(e){return((Qr(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Qr(e){return Jr()?e instanceof Node||e instanceof Xr(e).Node:!1}function $r(e){return Jr()?e instanceof Element||e instanceof Xr(e).Element:!1}function ei(e){return Jr()?e instanceof HTMLElement||e instanceof Xr(e).HTMLElement:!1}function ti(e){return!Jr()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof Xr(e).ShadowRoot}function ni(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=pi(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function ri(e){return/^(table|td|th)$/.test(Yr(e))}function ii(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var ai=/transform|translate|scale|rotate|perspective|filter/,oi=/paint|layout|strict|content/,si=e=>!!e&&e!==`none`,ci;function li(e){let t=$r(e)?pi(e):e;return si(t.transform)||si(t.translate)||si(t.scale)||si(t.rotate)||si(t.perspective)||!di()&&(si(t.backdropFilter)||si(t.filter))||ai.test(t.willChange||``)||oi.test(t.contain||``)}function ui(e){let t=hi(e);for(;ei(t)&&!fi(t);){if(li(t))return t;if(ii(t))return null;t=hi(t)}return null}function di(){return ci??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),ci}function fi(e){return/^(html|body|#document)$/.test(Yr(e))}function pi(e){return Xr(e).getComputedStyle(e)}function mi(e){return $r(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function hi(e){if(Yr(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||ti(e)&&e.host||Zr(e);return ti(t)?t.host:t}function gi(e){let t=hi(e);return fi(t)?e.ownerDocument?e.ownerDocument.body:e.body:ei(t)&&ni(t)?t:gi(t)}function _i(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=gi(e),i=r===e.ownerDocument?.body,a=Xr(r);if(i){let e=vi(a);return t.concat(a,a.visualViewport||[],ni(r)?r:[],e&&n?_i(e):[])}else return t.concat(r,_i(r,[],n))}function vi(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function yi(e){let t=pi(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=ei(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=cr(n)!==a||cr(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function bi(e){return $r(e)?e:e.contextElement}function xi(e){let t=bi(e);if(!ei(t))return ur(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=yi(t),o=(a?cr(n.width):n.width)/r,s=(a?cr(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var Si=ur(0);function Ci(e){let t=Xr(e);return!di()||!t.visualViewport?Si:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function wi(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==Xr(e)?!1:t}function Ti(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=bi(e),o=ur(1);t&&(r?$r(r)&&(o=xi(r)):o=xi(e));let s=wi(a,n,r)?Ci(a):ur(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=Xr(a),t=r&&$r(r)?Xr(r):r,n=e,i=vi(n);for(;i&&r&&t!==n;){let e=xi(i),t=i.getBoundingClientRect(),r=pi(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=Xr(i),i=vi(n)}}return Mr({width:u,height:d,x:c,y:l})}function Ei(e,t){let n=mi(e).scrollLeft;return t?t.left+n:Ti(Zr(e)).left+n}function Di(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-Ei(e,n),y:n.top+t.scrollTop}}function Oi(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=Zr(r),s=t?ii(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=ur(1),u=ur(0),d=ei(r);if((d||!d&&!a)&&((Yr(r)!==`body`||ni(o))&&(c=mi(r)),d)){let e=Ti(r);l=xi(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?Di(o,c):ur(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function ki(e){return Array.from(e.getClientRects())}function Ai(e){let t=Zr(e),n=mi(e),r=e.ownerDocument.body,i=sr(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=sr(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+Ei(e),s=-n.scrollTop;return pi(r).direction===`rtl`&&(o+=sr(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var U=25;function ji(e,t){let n=Xr(e),r=Zr(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=di();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=Ei(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=U&&(a-=o)}else l<=U&&(a+=l);return{width:a,height:o,x:s,y:c}}function Mi(e,t){let n=Ti(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=ei(e)?xi(e):ur(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function Ni(e,t,n){let r;if(t===`viewport`)r=ji(e,n);else if(t===`document`)r=Ai(Zr(e));else if($r(t))r=Mi(t,n);else{let n=Ci(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return Mr(r)}function Pi(e,t){let n=hi(e);return n===t||!$r(n)||fi(n)?!1:pi(n).position===`fixed`||Pi(n,t)}function Fi(e,t){let n=t.get(e);if(n)return n;let r=_i(e,[],!1).filter(e=>$r(e)&&Yr(e)!==`body`),i=null,a=pi(e).position===`fixed`,o=a?hi(e):e;for(;$r(o)&&!fi(o);){let t=pi(o),n=li(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&(i.position===`absolute`||i.position===`fixed`)||ni(o)&&!n&&Pi(e,o))?r=r.filter(e=>e!==o):i=t,o=hi(o)}return t.set(e,r),r}function Ii(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?ii(t)?[]:Fi(t,this._c):[].concat(n),r],o=Ni(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e{o(!1,1e-7)},1e3)}n===1&&!Gi(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(b,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(b,v)}n.observe(e)}return o(!0),a}function qi(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=bi(e),u=i||a?[...l?_i(l):[],...t?_i(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?Ki(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?Ti(e):null;c&&g();function g(){let t=Ti(e);h&&!Gi(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var Ji=Wr,Yi=Gr,Xi=Rr,Zi=qr,Qi=Vr,$i=Lr,ea=Kr,ta=(e,t,n)=>{let r=new Map,i={platform:Wi,...n},a={...i.platform,_c:r};return Ir(e,t,{...i,platform:a})},na=typeof document<`u`?_.useLayoutEffect:function(){};function ra(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`function`&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e==`object`){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!ra(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){let n=i[r];if(!(n===`_owner`&&e.$$typeof)&&!ra(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function ia(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function aa(e,t){let n=ia(e);return Math.round(t*n)/n}function oa(e){let t=_.useRef(e);return na(()=>{t.current=e}),t}function sa(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:s=!0,whileElementsMounted:c,open:l}=e,[u,d]=_.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,p]=_.useState(r);ra(f,r)||p(r);let[m,h]=_.useState(null),[g,v]=_.useState(null),b=_.useCallback(e=>{e!==w.current&&(w.current=e,h(e))},[]),x=_.useCallback(e=>{e!==T.current&&(T.current=e,v(e))},[]),S=a||m,C=o||g,w=_.useRef(null),T=_.useRef(null),E=_.useRef(u),ee=c!=null,D=oa(c),O=oa(i),k=oa(l),A=_.useCallback(()=>{if(!w.current||!T.current)return;let e={placement:t,strategy:n,middleware:f};O.current&&(e.platform=O.current),ta(w.current,T.current,e).then(e=>{let t={...e,isPositioned:k.current!==!1};j.current&&!ra(E.current,t)&&(E.current=t,y.flushSync(()=>{d(t)}))})},[f,t,n,O,k]);na(()=>{l===!1&&E.current.isPositioned&&(E.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[l]);let j=_.useRef(!1);na(()=>(j.current=!0,()=>{j.current=!1}),[]),na(()=>{if(S&&(w.current=S),C&&(T.current=C),S&&C){if(D.current)return D.current(S,C,A);A()}},[S,C,A,D,ee]);let M=_.useMemo(()=>({reference:w,floating:T,setReference:b,setFloating:x}),[b,x]),N=_.useMemo(()=>({reference:S,floating:C}),[S,C]),P=_.useMemo(()=>{let e={position:n,left:0,top:0};if(!N.floating)return e;let t=aa(N.floating,u.x),r=aa(N.floating,u.y);return s?{...e,transform:`translate(`+t+`px, `+r+`px)`,...ia(N.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,s,N.floating,u.x,u.y]);return _.useMemo(()=>({...u,update:A,refs:M,elements:N,floatingStyles:P}),[u,A,M,N,P])}var ca=e=>{function t(e){return{}.hasOwnProperty.call(e,`current`)}return{name:`arrow`,options:e,fn(n){let{element:r,padding:i}=typeof e==`function`?e(n):e;return r&&t(r)?r.current==null?{}:$i({element:r.current,padding:i}).fn(n):r?$i({element:r,padding:i}).fn(n):{}}}},la=(e,t)=>{let n=Ji(e);return{name:n.name,fn:n.fn,options:[e,t]}},ua=(e,t)=>{let n=Yi(e);return{name:n.name,fn:n.fn,options:[e,t]}},da=(e,t)=>({fn:ea(e).fn,options:[e,t]}),fa=(e,t)=>{let n=Xi(e);return{name:n.name,fn:n.fn,options:[e,t]}},pa=(e,t)=>{let n=Zi(e);return{name:n.name,fn:n.fn,options:[e,t]}},ma=(e,t)=>{let n=Qi(e);return{name:n.name,fn:n.fn,options:[e,t]}},ha=(e,t)=>{let n=ca(e);return{name:n.name,fn:n.fn,options:[e,t]}},ga=`Arrow`,_a=_.forwardRef((e,t)=>{let{children:n,width:r=10,height:i=5,...a}=e;return(0,R.jsx)(yn.svg,{...a,ref:t,width:r,height:i,viewBox:`0 0 30 10`,preserveAspectRatio:`none`,children:e.asChild?n:(0,R.jsx)(`polygon`,{points:`0,0 30,0 15,10`})})});_a.displayName=ga;var va=_a;function ya(e){let[t,n]=_.useState(void 0);return tr(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=e.offsetWidth,a=e.offsetHeight;n({width:i,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}else n(void 0)},[e]),t}var ba=`Popper`,[xa,Sa]=tn(ba),[Ca,wa]=xa(ba),Ta=e=>{let{__scopePopper:t,children:n}=e,[r,i]=_.useState(null);return(0,R.jsx)(Ca,{scope:t,anchor:r,onAnchorChange:i,children:n})};Ta.displayName=ba;var Ea=`PopperAnchor`,Da=_.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:r,...i}=e,a=wa(Ea,n),o=_.useRef(null),s=ze(t,o),c=_.useRef(null);return _.useEffect(()=>{let e=c.current;c.current=r?.current||o.current,e!==c.current&&a.onAnchorChange(c.current)}),r?null:(0,R.jsx)(yn.div,{...i,ref:s})});Da.displayName=Ea;var Oa=`PopperContent`,[ka,Aa]=xa(Oa),ja=_.forwardRef((e,t)=>{let{__scopePopper:n,side:r=`bottom`,sideOffset:i=0,align:a=`center`,alignOffset:o=0,arrowPadding:s=0,avoidCollisions:c=!0,collisionBoundary:l=[],collisionPadding:u=0,sticky:d=`partial`,hideWhenDetached:f=!1,updatePositionStrategy:p=`optimized`,onPlaced:m,...h}=e,g=wa(Oa,n),[v,y]=_.useState(null),b=ze(t,e=>y(e)),[x,S]=_.useState(null),C=ya(x),w=C?.width??0,T=C?.height??0,E=r+(a===`center`?``:`-`+a),ee=typeof u==`number`?u:{top:0,right:0,bottom:0,left:0,...u},D=Array.isArray(l)?l:[l],O=D.length>0,k={padding:ee,boundary:D.filter(Fa),altBoundary:O},{refs:A,floatingStyles:j,placement:M,isPositioned:N,middlewareData:P}=sa({strategy:`fixed`,placement:E,whileElementsMounted:(...e)=>qi(...e,{animationFrame:p===`always`}),elements:{reference:g.anchor},middleware:[la({mainAxis:i+T,alignmentAxis:o}),c&&ua({mainAxis:!0,crossAxis:!1,limiter:d===`partial`?da():void 0,...k}),c&&fa({...k}),pa({...k,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--radix-popper-available-width`,`${n}px`),o.setProperty(`--radix-popper-available-height`,`${r}px`),o.setProperty(`--radix-popper-anchor-width`,`${i}px`),o.setProperty(`--radix-popper-anchor-height`,`${a}px`)}}),x&&ha({element:x,padding:s}),Ia({arrowWidth:w,arrowHeight:T}),f&&ma({strategy:`referenceHidden`,...k})]}),[F,I]=La(M),te=xn(m);tr(()=>{N&&te?.()},[N,te]);let ne=P.arrow?.x,re=P.arrow?.y,ie=P.arrow?.centerOffset!==0,[ae,L]=_.useState();return tr(()=>{v&&L(window.getComputedStyle(v).zIndex)},[v]),(0,R.jsx)(`div`,{ref:A.setFloating,"data-radix-popper-content-wrapper":``,style:{...j,transform:N?j.transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:ae,"--radix-popper-transform-origin":[P.transformOrigin?.x,P.transformOrigin?.y].join(` `),...P.hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}},dir:e.dir,children:(0,R.jsx)(ka,{scope:n,placedSide:F,onArrowChange:S,arrowX:ne,arrowY:re,shouldHideArrow:ie,children:(0,R.jsx)(yn.div,{"data-side":F,"data-align":I,...h,ref:b,style:{...h.style,animation:N?void 0:`none`}})})})});ja.displayName=Oa;var Ma=`PopperArrow`,Na={top:`bottom`,right:`left`,bottom:`top`,left:`right`},Pa=_.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,i=Aa(Ma,n),a=Na[i.placedSide];return(0,R.jsx)(`span`,{ref:i.onArrowChange,style:{position:`absolute`,left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[i.placedSide],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[i.placedSide],visibility:i.shouldHideArrow?`hidden`:void 0},children:(0,R.jsx)(va,{...r,ref:t,style:{...r.style,display:`block`}})})});Pa.displayName=Ma;function Fa(e){return e!==null}var Ia=e=>({name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=La(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}});function La(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var Ra=Ta,za=Da,Ba=ja,Va=Pa,Ha=`Portal`,Ua=_.forwardRef((e,t)=>{let{container:n,...r}=e,[i,a]=_.useState(!1);tr(()=>a(!0),[]);let o=n||i&&globalThis?.document?.body;return o?y.createPortal((0,R.jsx)(yn.div,{...r,ref:t}),o):null});Ua.displayName=Ha;function Wa(e){let t=Ga(e),n=_.forwardRef((e,n)=>{let{children:r,...i}=e,a=_.Children.toArray(r),o=a.find(qa);if(o){let e=o.props.children,r=a.map(t=>t===o?_.Children.count(e)>1?_.Children.only(null):_.isValidElement(e)?e.props.children:null:t);return(0,R.jsx)(t,{...i,ref:n,children:_.isValidElement(e)?_.cloneElement(e,void 0,r):null})}return(0,R.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function Ga(e){let t=_.forwardRef((e,t)=>{let{children:n,...r}=e;if(_.isValidElement(n)){let e=Ya(n),i=Ja(r,n.props);return n.type!==_.Fragment&&(i.ref=t?Re(t,e):e),_.cloneElement(n,i)}return _.Children.count(n)>1?_.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Ka=Symbol(`radix.slottable`);function qa(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===Ka}function Ja(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function Ya(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Xa=_.useInsertionEffect||tr;function Za({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){let[i,a,o]=Qa({defaultProp:t,onChange:n}),s=e!==void 0,c=s?e:i;{let t=_.useRef(e!==void 0);_.useEffect(()=>{let e=t.current;e!==s&&console.warn(`${r} is changing from ${e?`controlled`:`uncontrolled`} to ${s?`controlled`:`uncontrolled`}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),t.current=s},[s,r])}return[c,_.useCallback(t=>{if(s){let n=$a(t)?t(e):t;n!==e&&o.current?.(n)}else a(t)},[s,e,a,o])]}function Qa({defaultProp:e,onChange:t}){let[n,r]=_.useState(e),i=_.useRef(n),a=_.useRef(t);return Xa(()=>{a.current=t},[t]),_.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}function $a(e){return typeof e==`function`}function eo(e){let t=_.useRef({value:e,previous:e});return _.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var to=Object.freeze({position:`absolute`,border:0,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,wordWrap:`normal`}),no=`VisuallyHidden`,ro=_.forwardRef((e,t)=>(0,R.jsx)(yn.span,{...e,ref:t,style:{...to,...e.style}}));ro.displayName=no;var io=ro,ao=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},oo=new WeakMap,so=new WeakMap,co={},W=0,G=function(e){return e&&(e.host||G(e.parentNode))},lo=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=G(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},uo=function(e,t,n,r){var i=lo(t,Array.isArray(e)?e:[e]);co[n]||(co[n]=new WeakMap);var a=co[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(oo.get(e)||0)+1,l=(a.get(e)||0)+1;oo.set(e,c),a.set(e,l),o.push(e),c===1&&i&&so.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),W++,function(){o.forEach(function(e){var t=oo.get(e)-1,i=a.get(e)-1;oo.set(e,t),a.set(e,i),t||(so.has(e)||e.removeAttribute(r),so.delete(e)),i||e.removeAttribute(n)}),W--,W||(oo=new WeakMap,oo=new WeakMap,so=new WeakMap,co={})}},fo=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||ao(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),uo(r,i,n,`aria-hidden`)):function(){return null}},po=function(){return po=Object.assign||function(e){for(var t,n=1,r=arguments.length;n`u`)return Vo;var t=Uo(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},Go=Bo(),Ko=`data-scroll-locked`,qo=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),` - .${vo} { - overflow: hidden ${r}; - padding-right: ${s}px ${r}; - } - body[${Ko}] { - overflow: hidden ${r}; - overscroll-behavior: contain; - ${[t&&`position: relative ${r};`,n===`margin`&&` - padding-left: ${i}px; - padding-top: ${a}px; - padding-right: ${o}px; - margin-left:0; - margin-top:0; - margin-right: ${s}px ${r}; - `,n===`padding`&&`padding-right: ${s}px ${r};`].filter(Boolean).join(``)} - } - - .${go} { - right: ${s}px ${r}; - } - - .${_o} { - margin-right: ${s}px ${r}; - } - - .${go} .${go} { - right: 0 ${r}; - } - - .${_o} .${_o} { - margin-right: 0 ${r}; - } - - body[${Ko}] { - ${yo}: ${s}px; - } -`},Jo=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},Yo=function(){_.useEffect(function(){return document.body.setAttribute(Ko,(Jo()+1).toString()),function(){var e=Jo()-1;e<=0?document.body.removeAttribute(Ko):document.body.setAttribute(Ko,e.toString())}},[])},Xo=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;Yo();var a=_.useMemo(function(){return Wo(i)},[i]);return _.createElement(Go,{styles:qo(a,!t,i,n?``:`!important`)})},Zo=!1;if(typeof window<`u`)try{var Qo=Object.defineProperty({},`passive`,{get:function(){return Zo=!0,!0}});window.addEventListener(`test`,Qo,Qo),window.removeEventListener(`test`,Qo,Qo)}catch{Zo=!1}var $o=Zo?{passive:!1}:!1,es=function(e){return e.tagName===`TEXTAREA`},ts=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!es(e)&&n[t]===`visible`)},ns=function(e){return ts(e,`overflowY`)},rs=function(e){return ts(e,`overflowX`)},is=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),ss(e,r)){var i=cs(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},as=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},os=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},ss=function(e,t){return e===`v`?ns(t):rs(t)},cs=function(e,t){return e===`v`?as(t):os(t)},ls=function(e,t){return e===`h`&&t===`rtl`?-1:1},us=function(e,t,n,r,i){var a=ls(e,window.getComputedStyle(t).direction),o=a*r,s=n.target,c=t.contains(s),l=!1,u=o>0,d=0,f=0;do{if(!s)break;var p=cs(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&ss(e,s)&&(d+=h,f+=m);var g=s.parentNode;s=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&s!==document.body||c&&(t.contains(s)||t===s));return(u&&(i&&Math.abs(d)<1||!i&&o>d)||!u&&(i&&Math.abs(f)<1||!i&&-o>f))&&(l=!0),l},ds=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},fs=function(e){return[e.deltaX,e.deltaY]},ps=function(e){return e&&`current`in e?e.current:e},ms=function(e,t){return e[0]===t[0]&&e[1]===t[1]},hs=function(e){return` - .block-interactivity-${e} {pointer-events: none;} - .allow-interactivity-${e} {pointer-events: all;} -`},gs=0,_s=[];function vs(e){var t=_.useRef([]),n=_.useRef([0,0]),r=_.useRef(),i=_.useState(gs++)[0],a=_.useState(Bo)[0],o=_.useRef(e);_.useEffect(function(){o.current=e},[e]),_.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=ho([e.lockRef.current],(e.shards||[]).map(ps),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var s=_.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=ds(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=is(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=is(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return us(h,t,e,h===`h`?s:c,!0)},[]),c=_.useCallback(function(e){var n=e;if(!(!_s.length||_s[_s.length-1]!==a)){var r=`deltaY`in n?fs(n):ds(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&ms(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var c=(o.current.shards||[]).map(ps).filter(Boolean).filter(function(e){return e.contains(n.target)});(c.length>0?s(n,c[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),l=_.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:ys(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),u=_.useCallback(function(e){n.current=ds(e),r.current=void 0},[]),d=_.useCallback(function(t){l(t.type,fs(t),t.target,s(t,e.lockRef.current))},[]),f=_.useCallback(function(t){l(t.type,ds(t),t.target,s(t,e.lockRef.current))},[]);_.useEffect(function(){return _s.push(a),e.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:f}),document.addEventListener(`wheel`,c,$o),document.addEventListener(`touchmove`,c,$o),document.addEventListener(`touchstart`,u,$o),function(){_s=_s.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,c,$o),document.removeEventListener(`touchmove`,c,$o),document.removeEventListener(`touchstart`,u,$o)}},[]);var p=e.removeScrollBar,m=e.inert;return _.createElement(_.Fragment,null,m?_.createElement(a,{styles:hs(i)}):null,p?_.createElement(Xo,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function ys(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var bs=ko(Ao,vs),xs=_.forwardRef(function(e,t){return _.createElement(Mo,po({},e,{ref:t,sideCar:bs}))});xs.classNames=Mo.classNames;var Ss=[` `,`Enter`,`ArrowUp`,`ArrowDown`],Cs=[` `,`Enter`],ws=`Select`,[Ts,Es,Ds]=un(ws),[Os,ks]=tn(ws,[Ds,Sa]),As=Sa(),[js,Ms]=Os(ws),[Ns,Ps]=Os(ws),Fs=e=>{let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:s,onValueChange:c,dir:l,name:u,autoComplete:d,disabled:f,required:p,form:m}=e,h=As(t),[g,v]=_.useState(null),[y,b]=_.useState(null),[x,S]=_.useState(!1),C=fn(l),[w,T]=Za({prop:r,defaultProp:i??!1,onChange:a,caller:ws}),[E,ee]=Za({prop:o,defaultProp:s,onChange:c,caller:ws}),D=_.useRef(null),O=g?m||!!g.closest(`form`):!0,[k,A]=_.useState(new Set),j=Array.from(k).map(e=>e.props.value).join(`;`);return(0,R.jsx)(Ra,{...h,children:(0,R.jsxs)(js,{required:p,scope:t,trigger:g,onTriggerChange:v,valueNode:y,onValueNodeChange:b,valueNodeHasChildren:x,onValueNodeHasChildrenChange:S,contentId:ir(),value:E,onValueChange:ee,open:w,onOpenChange:T,dir:C,triggerPointerDownPosRef:D,disabled:f,children:[(0,R.jsx)(Ts.Provider,{scope:t,children:(0,R.jsx)(Ns,{scope:e.__scopeSelect,onNativeOptionAdd:_.useCallback(e=>{A(t=>new Set(t).add(e))},[]),onNativeOptionRemove:_.useCallback(e=>{A(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),O?(0,R.jsxs)(Ac,{"aria-hidden":!0,required:p,tabIndex:-1,name:u,autoComplete:d,value:E,onChange:e=>ee(e.target.value),disabled:f,form:m,children:[E===void 0?(0,R.jsx)(`option`,{value:``}):null,Array.from(k)]},j):null]})})};Fs.displayName=ws;var Is=`SelectTrigger`,Ls=_.forwardRef((e,t)=>{let{__scopeSelect:n,disabled:r=!1,...i}=e,a=As(n),o=Ms(Is,n),s=o.disabled||r,c=ze(t,o.onTriggerChange),l=Es(n),u=_.useRef(`touch`),[d,f,p]=Mc(e=>{let t=l().filter(e=>!e.disabled),n=Nc(t,e,t.find(e=>e.value===o.value));n!==void 0&&o.onValueChange(n.value)}),m=e=>{s||(o.onOpenChange(!0),p()),e&&(o.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,R.jsx)(za,{asChild:!0,...a,children:(0,R.jsx)(yn.button,{type:`button`,role:`combobox`,"aria-controls":o.contentId,"aria-expanded":o.open,"aria-required":o.required,"aria-autocomplete":`none`,dir:o.dir,"data-state":o.open?`open`:`closed`,disabled:s,"data-disabled":s?``:void 0,"data-placeholder":jc(o.value)?``:void 0,...i,ref:c,onClick:H(i.onClick,e=>{e.currentTarget.focus(),u.current!==`mouse`&&m(e)}),onPointerDown:H(i.onPointerDown,e=>{u.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(m(e),e.preventDefault())}),onKeyDown:H(i.onKeyDown,e=>{let t=d.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&f(e.key),!(t&&e.key===` `)&&Ss.includes(e.key)&&(m(),e.preventDefault())})})})});Ls.displayName=Is;var Rs=`SelectValue`,zs=_.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...s}=e,c=Ms(Rs,n),{onValueNodeHasChildrenChange:l}=c,u=a!==void 0,d=ze(t,c.onValueNodeChange);return tr(()=>{l(u)},[l,u]),(0,R.jsx)(yn.span,{...s,ref:d,style:{pointerEvents:`none`},children:jc(c.value)?(0,R.jsx)(R.Fragment,{children:o}):a})});zs.displayName=Rs;var Bs=`SelectIcon`,Vs=_.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...i}=e;return(0,R.jsx)(yn.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})});Vs.displayName=Bs;var Hs=`SelectPortal`,Us=e=>(0,R.jsx)(Ua,{asChild:!0,...e});Us.displayName=Hs;var Ws=`SelectContent`,Gs=_.forwardRef((e,t)=>{let n=Ms(Ws,e.__scopeSelect),[r,i]=_.useState();if(tr(()=>{i(new DocumentFragment)},[]),!n.open){let t=r;return t?y.createPortal((0,R.jsx)(qs,{scope:e.__scopeSelect,children:(0,R.jsx)(Ts.Slot,{scope:e.__scopeSelect,children:(0,R.jsx)(`div`,{children:e.children})})}),t):null}return(0,R.jsx)(Zs,{...e,ref:t})});Gs.displayName=Ws;var Ks=10,[qs,Js]=Os(Ws),Ys=`SelectContentImpl`,Xs=Wa(`SelectContent.RemoveScroll`),Zs=_.forwardRef((e,t)=>{let{__scopeSelect:n,position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:o,side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:g,...v}=e,y=Ms(Ws,n),[b,x]=_.useState(null),[S,C]=_.useState(null),w=ze(t,e=>x(e)),[T,E]=_.useState(null),[ee,D]=_.useState(null),O=Es(n),[k,A]=_.useState(!1),j=_.useRef(!1);_.useEffect(()=>{if(b)return fo(b)},[b]),Ln();let M=_.useCallback(e=>{let[t,...n]=O().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&S&&(S.scrollTop=0),n===r&&S&&(S.scrollTop=S.scrollHeight),n?.focus(),document.activeElement!==i))return},[O,S]),N=_.useCallback(()=>M([T,b]),[M,T,b]);_.useEffect(()=>{k&&N()},[k,N]);let{onOpenChange:P,triggerPointerDownPosRef:F}=y;_.useEffect(()=>{if(b){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(F.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(F.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():b.contains(n.target)||P(!1),document.removeEventListener(`pointermove`,t),F.current=null};return F.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[b,P,F]),_.useEffect(()=>{let e=()=>P(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[P]);let[I,te]=Mc(e=>{let t=O().filter(e=>!e.disabled),n=Nc(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current.focus())}),ne=_.useCallback((e,t,n)=>{let r=!j.current&&!n;(y.value!==void 0&&y.value===t||r)&&(E(e),r&&(j.current=!0))},[y.value]),re=_.useCallback(()=>b?.focus(),[b]),ie=_.useCallback((e,t,n)=>{let r=!j.current&&!n;(y.value!==void 0&&y.value===t||r)&&D(e)},[y.value]),ae=r===`popper`?tc:$s,L=ae===tc?{side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:g}:{};return(0,R.jsx)(qs,{scope:n,content:b,viewport:S,onViewportChange:C,itemRefCallback:ne,selectedItem:T,onItemLeave:re,itemTextRefCallback:ie,focusSelectedItem:N,selectedItemText:ee,position:r,isPositioned:k,searchRef:I,children:(0,R.jsx)(xs,{as:Xs,allowPinchZoom:!0,children:(0,R.jsx)(Un,{asChild:!0,trapped:y.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:H(i,e=>{y.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,R.jsx)(kn,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>y.onOpenChange(!1),children:(0,R.jsx)(ae,{role:`listbox`,id:y.contentId,"data-state":y.open?`open`:`closed`,dir:y.dir,onContextMenu:e=>e.preventDefault(),...v,...L,onPlaced:()=>A(!0),ref:w,style:{display:`flex`,flexDirection:`column`,outline:`none`,...v.style},onKeyDown:H(v.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&te(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=O().filter(e=>!e.disabled).map(e=>e.ref.current);if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>M(t)),e.preventDefault()}})})})})})})});Zs.displayName=Ys;var Qs=`SelectItemAlignedPosition`,$s=_.forwardRef((e,t)=>{let{__scopeSelect:n,onPlaced:r,...i}=e,a=Ms(Ws,n),o=Js(Ws,n),[s,c]=_.useState(null),[l,u]=_.useState(null),d=ze(t,e=>u(e)),f=Es(n),p=_.useRef(!1),m=_.useRef(!0),{viewport:h,selectedItem:g,selectedItemText:v,focusSelectedItem:y}=o,b=_.useCallback(()=>{if(a.trigger&&a.valueNode&&s&&l&&h&&g&&v){let e=a.trigger.getBoundingClientRect(),t=l.getBoundingClientRect(),n=a.valueNode.getBoundingClientRect(),i=v.getBoundingClientRect();if(a.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,o=e.left-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-Ks,d=en(a,[Ks,Math.max(Ks,u-l)]);s.style.minWidth=c+`px`,s.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-Ks,d=en(a,[Ks,Math.max(Ks,u-l)]);s.style.minWidth=c+`px`,s.style.right=d+`px`}let o=f(),c=window.innerHeight-Ks*2,u=h.scrollHeight,d=window.getComputedStyle(l),m=parseInt(d.borderTopWidth,10),_=parseInt(d.paddingTop,10),y=parseInt(d.borderBottomWidth,10),b=parseInt(d.paddingBottom,10),x=m+_+u+b+y,S=Math.min(g.offsetHeight*5,x),C=window.getComputedStyle(h),w=parseInt(C.paddingTop,10),T=parseInt(C.paddingBottom,10),E=e.top+e.height/2-Ks,ee=c-E,D=g.offsetHeight/2,O=g.offsetTop+D,k=m+_+O,A=x-k;if(k<=E){let e=o.length>0&&g===o[o.length-1].ref.current;s.style.bottom=`0px`;let t=l.clientHeight-h.offsetTop-h.offsetHeight,n=k+Math.max(ee,D+(e?T:0)+t+y);s.style.height=n+`px`}else{let e=o.length>0&&g===o[0].ref.current;s.style.top=`0px`;let t=Math.max(E,m+h.offsetTop+(e?w:0)+D)+A;s.style.height=t+`px`,h.scrollTop=k-E+h.offsetTop}s.style.margin=`${Ks}px 0`,s.style.minHeight=S+`px`,s.style.maxHeight=c+`px`,r?.(),requestAnimationFrame(()=>p.current=!0)}},[f,a.trigger,a.valueNode,s,l,h,g,v,a.dir,r]);tr(()=>b(),[b]);let[x,S]=_.useState();return tr(()=>{l&&S(window.getComputedStyle(l).zIndex)},[l]),(0,R.jsx)(nc,{scope:n,contentWrapper:s,shouldExpandOnScrollRef:p,onScrollButtonChange:_.useCallback(e=>{e&&m.current===!0&&(b(),y?.(),m.current=!1)},[b,y]),children:(0,R.jsx)(`div`,{ref:c,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:x},children:(0,R.jsx)(yn.div,{...i,ref:d,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})});$s.displayName=Qs;var ec=`SelectPopperPosition`,tc=_.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=Ks,...a}=e,o=As(n);return(0,R.jsx)(Ba,{...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})});tc.displayName=ec;var[nc,rc]=Os(Ws,{}),ic=`SelectViewport`,ac=_.forwardRef((e,t)=>{let{__scopeSelect:n,nonce:r,...i}=e,a=Js(ic,n),o=rc(ic,n),s=ze(t,a.onViewportChange),c=_.useRef(0);return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`},nonce:r}),(0,R.jsx)(Ts.Slot,{scope:n,children:(0,R.jsx)(yn.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:s,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:H(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=o;if(r?.current&&n){let e=Math.abs(c.current-t.scrollTop);if(e>0){let r=window.innerHeight-Ks*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o0?s:0,n.style.justifyContent=`flex-end`)}}}c.current=t.scrollTop})})})]})});ac.displayName=ic;var oc=`SelectGroup`,[sc,cc]=Os(oc),lc=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=ir();return(0,R.jsx)(sc,{scope:n,id:i,children:(0,R.jsx)(yn.div,{role:`group`,"aria-labelledby":i,...r,ref:t})})});lc.displayName=oc;var uc=`SelectLabel`,dc=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=cc(uc,n);return(0,R.jsx)(yn.div,{id:i.id,...r,ref:t})});dc.displayName=uc;var fc=`SelectItem`,[pc,mc]=Os(fc),hc=_.forwardRef((e,t)=>{let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...o}=e,s=Ms(fc,n),c=Js(fc,n),l=s.value===r,[u,d]=_.useState(a??``),[f,p]=_.useState(!1),m=ze(t,e=>c.itemRefCallback?.(e,r,i)),h=ir(),g=_.useRef(`touch`),v=()=>{i||(s.onValueChange(r),s.onOpenChange(!1))};if(r===``)throw Error(`A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return(0,R.jsx)(pc,{scope:n,value:r,disabled:i,textId:h,isSelected:l,onItemTextChange:_.useCallback(e=>{d(t=>t||(e?.textContent??``).trim())},[]),children:(0,R.jsx)(Ts.ItemSlot,{scope:n,value:r,disabled:i,textValue:u,children:(0,R.jsx)(yn.div,{role:`option`,"aria-labelledby":h,"data-highlighted":f?``:void 0,"aria-selected":l&&f,"data-state":l?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...o,ref:m,onFocus:H(o.onFocus,()=>p(!0)),onBlur:H(o.onBlur,()=>p(!1)),onClick:H(o.onClick,()=>{g.current!==`mouse`&&v()}),onPointerUp:H(o.onPointerUp,()=>{g.current===`mouse`&&v()}),onPointerDown:H(o.onPointerDown,e=>{g.current=e.pointerType}),onPointerMove:H(o.onPointerMove,e=>{g.current=e.pointerType,i?c.onItemLeave?.():g.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:H(o.onPointerLeave,e=>{e.currentTarget===document.activeElement&&c.onItemLeave?.()}),onKeyDown:H(o.onKeyDown,e=>{c.searchRef?.current!==``&&e.key===` `||(Cs.includes(e.key)&&v(),e.key===` `&&e.preventDefault())})})})})});hc.displayName=fc;var gc=`SelectItemText`,_c=_.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,...a}=e,o=Ms(gc,n),s=Js(gc,n),c=mc(gc,n),l=Ps(gc,n),[u,d]=_.useState(null),f=ze(t,e=>d(e),c.onItemTextChange,e=>s.itemTextRefCallback?.(e,c.value,c.disabled)),p=u?.textContent,m=_.useMemo(()=>(0,R.jsx)(`option`,{value:c.value,disabled:c.disabled,children:p},c.value),[c.disabled,c.value,p]),{onNativeOptionAdd:h,onNativeOptionRemove:g}=l;return tr(()=>(h(m),()=>g(m)),[h,g,m]),(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(yn.span,{id:c.textId,...a,ref:f}),c.isSelected&&o.valueNode&&!o.valueNodeHasChildren?y.createPortal(a.children,o.valueNode):null]})});_c.displayName=gc;var vc=`SelectItemIndicator`,yc=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return mc(vc,n).isSelected?(0,R.jsx)(yn.span,{"aria-hidden":!0,...r,ref:t}):null});yc.displayName=vc;var bc=`SelectScrollUpButton`,xc=_.forwardRef((e,t)=>{let n=Js(bc,e.__scopeSelect),r=rc(bc,e.__scopeSelect),[i,a]=_.useState(!1),o=ze(t,r.onScrollButtonChange);return tr(()=>{if(n.viewport&&n.isPositioned){let e=function(){a(t.scrollTop>0)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,R.jsx)(wc,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null});xc.displayName=bc;var Sc=`SelectScrollDownButton`,Cc=_.forwardRef((e,t)=>{let n=Js(Sc,e.__scopeSelect),r=rc(Sc,e.__scopeSelect),[i,a]=_.useState(!1),o=ze(t,r.onScrollButtonChange);return tr(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;a(Math.ceil(t.scrollTop)t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,R.jsx)(wc,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});Cc.displayName=Sc;var wc=_.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=Js(`SelectScrollButton`,n),o=_.useRef(null),s=Es(n),c=_.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return _.useEffect(()=>()=>c(),[c]),tr(()=>{s().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[s]),(0,R.jsx)(yn.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:H(i.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:H(i.onPointerMove,()=>{a.onItemLeave?.(),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:H(i.onPointerLeave,()=>{c()})})}),Tc=`SelectSeparator`,Ec=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return(0,R.jsx)(yn.div,{"aria-hidden":!0,...r,ref:t})});Ec.displayName=Tc;var Dc=`SelectArrow`,Oc=_.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=As(n),a=Ms(Dc,n),o=Js(Dc,n);return a.open&&o.position===`popper`?(0,R.jsx)(Va,{...i,...r,ref:t}):null});Oc.displayName=Dc;var kc=`SelectBubbleInput`,Ac=_.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{let i=_.useRef(null),a=ze(r,i),o=eo(t);return _.useEffect(()=>{let e=i.current;if(!e)return;let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(o!==t&&r){let n=new Event(`change`,{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[o,t]),(0,R.jsx)(yn.select,{...n,style:{...to,...n.style},ref:a,defaultValue:t})});Ac.displayName=kc;function jc(e){return e===``||e===void 0}function Mc(e){let t=xn(e),n=_.useRef(``),r=_.useRef(0),i=_.useCallback(e=>{let i=n.current+e;t(i),(function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))})(i)},[t]),a=_.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return _.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}function Nc(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=Pc(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.textValue.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function Pc(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var Fc=Fs,Ic=Ls,Lc=zs,Rc=Vs,zc=Us,Bc=Gs,Vc=ac,Hc=lc,Uc=dc,Wc=hc,Gc=_c,Kc=yc,qc=xc,Jc=Cc,Yc=Ec,Xc=Fc,Zc=Hc,Qc=Lc,$c=_.forwardRef(({className:e,children:t,...n},r)=>(0,R.jsxs)(Ic,{ref:r,className:V(`flex h-9 w-full items-center justify-between gap-2 rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1`,e),...n,children:[t,(0,R.jsx)(Rc,{asChild:!0,children:(0,R.jsx)(ve,{className:`h-4 w-4 opacity-50`})})]}));$c.displayName=Ic.displayName;var el=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(qc,{ref:n,className:V(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,R.jsx)(ye,{className:`h-4 w-4`})}));el.displayName=qc.displayName;var tl=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(Jc,{ref:n,className:V(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,R.jsx)(ve,{className:`h-4 w-4`})}));tl.displayName=Jc.displayName;var nl=_.forwardRef(({className:e,children:t,position:n=`popper`,...r},i)=>(0,R.jsx)(zc,{children:(0,R.jsxs)(Bc,{ref:i,className:V(`relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,...r,children:[(0,R.jsx)(el,{}),(0,R.jsx)(Vc,{className:V(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]`),children:t}),(0,R.jsx)(tl,{})]})}));nl.displayName=Bc.displayName;var rl=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(Uc,{ref:n,className:V(`px-2 py-1.5 text-[10.5px] font-semibold uppercase tracking-wider text-muted-foreground`,e),...t}));rl.displayName=Uc.displayName;var il=_.forwardRef(({className:e,children:t,...n},r)=>(0,R.jsxs)(Wc,{ref:r,className:V(`relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,e),...n,children:[(0,R.jsx)(`span`,{className:`absolute right-2 flex h-3.5 w-3.5 items-center justify-center`,children:(0,R.jsx)(Kc,{children:(0,R.jsx)(_e,{className:`h-4 w-4`})})}),(0,R.jsx)(Gc,{children:t})]}));il.displayName=Wc.displayName;var al=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(Yc,{ref:n,className:V(`-mx-1 my-1 h-px bg-muted`,e),...t}));al.displayName=Yc.displayName;function ol(e,t){return _.useReducer((e,n)=>t[e][n]??e,e)}var sl=e=>{let{present:t,children:n}=e,r=cl(t),i=typeof n==`function`?n({present:r.isPresent}):_.Children.only(n),a=ze(r.ref,ul(i));return typeof n==`function`||r.isPresent?_.cloneElement(i,{ref:a}):null};sl.displayName=`Presence`;function cl(e){let[t,n]=_.useState(),r=_.useRef(null),i=_.useRef(e),a=_.useRef(`none`),[o,s]=ol(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return _.useEffect(()=>{let e=ll(r.current);a.current=o===`mounted`?e:`none`},[o]),tr(()=>{let t=r.current,n=i.current;if(n!==e){let r=a.current,o=ll(t);e?s(`MOUNT`):o===`none`||t?.display===`none`?s(`UNMOUNT`):s(n&&r!==o?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,s]),tr(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,o=a=>{let o=ll(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(s(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},c=e=>{e.target===t&&(a.current=ll(r.current))};return t.addEventListener(`animationstart`,c),t.addEventListener(`animationcancel`,o),t.addEventListener(`animationend`,o),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,c),t.removeEventListener(`animationcancel`,o),t.removeEventListener(`animationend`,o)}}else s(`ANIMATION_END`)},[t,s]),{isPresent:[`mounted`,`unmountSuspended`].includes(o),ref:_.useCallback(e=>{r.current=e?getComputedStyle(e):null,n(e)},[])}}function ll(e){return e?.animationName||`none`}function ul(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var dl=Symbol(`radix.slottable`);function fl(e){let t=({children:e})=>(0,R.jsx)(R.Fragment,{children:e});return t.displayName=`${e}.Slottable`,t.__radixId=dl,t}var[pl,ml]=tn(`Tooltip`,[Sa]),hl=Sa(),gl=`TooltipProvider`,_l=700,vl=`tooltip.open`,[yl,bl]=pl(gl),xl=e=>{let{__scopeTooltip:t,delayDuration:n=_l,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=_.useRef(!0),s=_.useRef(!1),c=_.useRef(0);return _.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,R.jsx)(yl,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:_.useCallback(()=>{window.clearTimeout(c.current),o.current=!1},[]),onClose:_.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r)},[r]),isPointerInTransitRef:s,onPointerInTransitChange:_.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})};xl.displayName=gl;var Sl=`Tooltip`,[Cl,wl]=pl(Sl),Tl=e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,c=bl(Sl,e.__scopeTooltip),l=hl(t),[u,d]=_.useState(null),f=ir(),p=_.useRef(0),m=o??c.disableHoverableContent,h=s??c.delayDuration,g=_.useRef(!1),[v,y]=Za({prop:r,defaultProp:i??!1,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(vl))):c.onClose(),a?.(e)},caller:Sl}),b=_.useMemo(()=>v?g.current?`delayed-open`:`instant-open`:`closed`,[v]),x=_.useCallback(()=>{window.clearTimeout(p.current),p.current=0,g.current=!1,y(!0)},[y]),S=_.useCallback(()=>{window.clearTimeout(p.current),p.current=0,y(!1)},[y]),C=_.useCallback(()=>{window.clearTimeout(p.current),p.current=window.setTimeout(()=>{g.current=!0,y(!0),p.current=0},h)},[h,y]);return _.useEffect(()=>()=>{p.current&&=(window.clearTimeout(p.current),0)},[]),(0,R.jsx)(Ra,{...l,children:(0,R.jsx)(Cl,{scope:t,contentId:f,open:v,stateAttribute:b,trigger:u,onTriggerChange:d,onTriggerEnter:_.useCallback(()=>{c.isOpenDelayedRef.current?C():x()},[c.isOpenDelayedRef,C,x]),onTriggerLeave:_.useCallback(()=>{m?S():(window.clearTimeout(p.current),p.current=0)},[S,m]),onOpen:x,onClose:S,disableHoverableContent:m,children:n})})};Tl.displayName=Sl;var El=`TooltipTrigger`,Dl=_.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=wl(El,n),a=bl(El,n),o=hl(n),s=ze(t,_.useRef(null),i.onTriggerChange),c=_.useRef(!1),l=_.useRef(!1),u=_.useCallback(()=>c.current=!1,[]);return _.useEffect(()=>()=>document.removeEventListener(`pointerup`,u),[u]),(0,R.jsx)(za,{asChild:!0,...o,children:(0,R.jsx)(yn.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:s,onPointerMove:H(e.onPointerMove,e=>{e.pointerType!==`touch`&&!l.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),l.current=!0)}),onPointerLeave:H(e.onPointerLeave,()=>{i.onTriggerLeave(),l.current=!1}),onPointerDown:H(e.onPointerDown,()=>{i.open&&i.onClose(),c.current=!0,document.addEventListener(`pointerup`,u,{once:!0})}),onFocus:H(e.onFocus,()=>{c.current||i.onOpen()}),onBlur:H(e.onBlur,i.onClose),onClick:H(e.onClick,i.onClose)})})});Dl.displayName=El;var Ol=`TooltipPortal`,[kl,Al]=pl(Ol,{forceMount:void 0}),jl=e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=wl(Ol,t);return(0,R.jsx)(kl,{scope:t,forceMount:n,children:(0,R.jsx)(sl,{present:n||a.open,children:(0,R.jsx)(Ua,{asChild:!0,container:i,children:r})})})};jl.displayName=Ol;var Ml=`TooltipContent`,Nl=_.forwardRef((e,t)=>{let n=Al(Ml,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=wl(Ml,e.__scopeTooltip);return(0,R.jsx)(sl,{present:r||o.open,children:o.disableHoverableContent?(0,R.jsx)(Rl,{side:i,...a,ref:t}):(0,R.jsx)(Pl,{side:i,...a,ref:t})})}),Pl=_.forwardRef((e,t)=>{let n=wl(Ml,e.__scopeTooltip),r=bl(Ml,e.__scopeTooltip),i=_.useRef(null),a=ze(t,i),[o,s]=_.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=_.useCallback(()=>{s(null),d(!1)},[d]),p=_.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=Y(r,J(r,n.getBoundingClientRect())),a=X(t.getBoundingClientRect());s(Bl([...i,...a])),d(!0)},[d]);return _.useEffect(()=>()=>f(),[f]),_.useEffect(()=>{if(c&&u){let e=e=>p(e,u),t=e=>p(e,c);return c.addEventListener(`pointerleave`,e),u.addEventListener(`pointerleave`,t),()=>{c.removeEventListener(`pointerleave`,e),u.removeEventListener(`pointerleave`,t)}}},[c,u,p,f]),_.useEffect(()=>{if(o){let e=e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||u?.contains(t),i=!zl(n,o);r?f():i&&(f(),l())};return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,u,o,l,f]),(0,R.jsx)(Rl,{...e,ref:a})}),[Fl,Il]=pl(Sl,{isInside:!1}),Ll=fl(`TooltipContent`),Rl=_.forwardRef((e,t)=>{let{__scopeTooltip:n,children:r,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:o,...s}=e,c=wl(Ml,n),l=hl(n),{onClose:u}=c;return _.useEffect(()=>(document.addEventListener(vl,u),()=>document.removeEventListener(vl,u)),[u]),_.useEffect(()=>{if(c.trigger){let e=e=>{e.target?.contains(c.trigger)&&u()};return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[c.trigger,u]),(0,R.jsx)(kn,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:u,children:(0,R.jsxs)(Ba,{"data-state":c.stateAttribute,...l,...s,ref:t,style:{...s.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,R.jsx)(Ll,{children:r}),(0,R.jsx)(Fl,{scope:n,isInside:!0,children:(0,R.jsx)(io,{id:c.contentId,role:`tooltip`,children:i||r})})]})})});Nl.displayName=Ml;var K=`TooltipArrow`,q=_.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=hl(n);return Il(K,n).isInside?null:(0,R.jsx)(Va,{...i,...r,ref:t})});q.displayName=K;function J(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function Y(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function X(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function zl(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function Bl(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y)),Vl(t)}function Vl(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var Hl=xl,Ul=Tl,Wl=Dl,Gl=jl,Kl=Nl,ql=Hl,Jl=Ul,Yl=Wl,Xl=_.forwardRef(({className:e,sideOffset:t=6,...n},r)=>(0,R.jsx)(Gl,{children:(0,R.jsx)(Kl,{ref:r,sideOffset:t,className:V(`z-50 max-w-xs overflow-hidden rounded-md bg-foreground px-2 py-1 text-xs text-background shadow-sm animate-in fade-in-0 zoom-in-95`,e),...n})}));Xl.displayName=Kl.displayName;var Zl=[`nvlink`,`nvswitch`,`pcie`,`infiniband`,`ethernet`];function Ql({nodes:e,setNodes:t,skus:n}){let r=$l(n,e=>e.vendor||`other`),i=()=>{let n=e.length;t(e=>[...e,{name:`node-${String(n+1).padStart(2,`0`)}`,interconnect:`nvlink`,intra_node_bandwidth_gbps:900,inter_node_bandwidth_gbps:25,gpus:[]}])},a=e=>t(t=>t.filter((t,n)=>n!==e)),o=(e,n)=>t(t=>t.map((t,r)=>r===e?{...t,...n}:t)),s=e=>{t(t=>t.map((t,r)=>{if(r!==e)return t;let i=n[0],a=`${t.name}-gpu-${t.gpus.length}`,o=i?.memory_gb??80;return{...t,gpus:[...t.gpus,{id:a,model:i?.id??`H100-SXM5`,memory_total_gb:o,memory_free_gb:o,in_use:!1}]}}))},c=(e,n)=>t(t=>t.map((t,r)=>r===e?{...t,gpus:t.gpus.filter((e,t)=>t!==n)}:t)),l=(e,r,i)=>t(t=>t.map((t,a)=>a===e?{...t,gpus:t.gpus.map((e,t)=>{if(t!==r)return e;let a={...e,...i};if(i.model&&i.model!==e.model){let e=n.find(e=>e.id===i.model);e&&(a.memory_total_gb=e.memory_gb,a.memory_free_gb=e.memory_gb)}return a})}:t)),u=(e,n)=>t(t=>t.map((t,r)=>{if(r!==e)return t;let i={...t.gpus[n],id:`${t.name}-gpu-${t.gpus.length}`};return{...t,gpus:[...t.gpus,i]}}));return(0,R.jsxs)(`div`,{className:`space-y-3`,children:[e.map((e,t)=>{let i=e.gpus.reduce((e,t)=>e+t.memory_free_gb,0);return(0,R.jsxs)(`div`,{className:`rounded-lg border bg-background p-3`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)($t,{value:e.name,onChange:e=>o(t,{name:e.target.value}),placeholder:`node name`,"aria-label":`Node name`,className:`h-8 flex-1 text-sm`}),(0,R.jsxs)(Xc,{value:e.interconnect??`nvlink`,onValueChange:e=>o(t,{interconnect:e}),children:[(0,R.jsx)($c,{className:`h-8 w-[130px] text-xs`,"aria-label":`Interconnect`,children:(0,R.jsx)(Qc,{})}),(0,R.jsx)(nl,{children:Zl.map(e=>(0,R.jsx)(il,{value:e,children:e},e))})]}),(0,R.jsxs)(Jl,{children:[(0,R.jsx)(Yl,{asChild:!0,children:(0,R.jsx)(Qt,{variant:`ghost`,size:`icon`,className:`h-8 w-8 text-muted-foreground hover:text-destructive`,onClick:()=>a(t),"aria-label":`Remove ${e.name}`,children:(0,R.jsx)(Ae,{className:`h-3.5 w-3.5`})})}),(0,R.jsx)(Xl,{children:`Remove node`})]})]}),(0,R.jsxs)(`p`,{className:`mt-1.5 text-[11px] text-muted-foreground`,children:[e.gpus.length,` GPU`,e.gpus.length===1?``:`s`,` ·`,` `,i.toFixed(0),` GB free`]}),(0,R.jsx)(`div`,{className:`mt-2 space-y-1.5`,children:e.gpus.map((e,n)=>(0,R.jsxs)(`div`,{className:`space-y-1.5 rounded-md border bg-card/50 p-2`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)($t,{value:e.id,onChange:e=>l(t,n,{id:e.target.value}),"aria-label":`GPU id`,className:`h-7 flex-1 font-mono text-[11px]`}),(0,R.jsxs)(Jl,{children:[(0,R.jsx)(Yl,{asChild:!0,children:(0,R.jsx)(Qt,{variant:`ghost`,size:`icon`,className:`h-7 w-7 text-muted-foreground`,onClick:()=>u(t,n),"aria-label":`Clone GPU`,children:(0,R.jsx)(be,{className:`h-3 w-3`})})}),(0,R.jsx)(Xl,{children:`Clone GPU`})]}),(0,R.jsxs)(Jl,{children:[(0,R.jsx)(Yl,{asChild:!0,children:(0,R.jsx)(Qt,{variant:`ghost`,size:`icon`,className:`h-7 w-7 text-muted-foreground hover:text-destructive`,onClick:()=>c(t,n),"aria-label":`Remove GPU`,children:(0,R.jsx)(Ae,{className:`h-3 w-3`})})}),(0,R.jsx)(Xl,{children:`Remove GPU`})]})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsxs)(Xc,{value:e.model,onValueChange:e=>l(t,n,{model:e}),children:[(0,R.jsx)($c,{className:`h-7 flex-1 text-xs`,"aria-label":`GPU model`,children:(0,R.jsx)(Qc,{})}),(0,R.jsx)(nl,{children:Object.entries(r).map(([e,t])=>(0,R.jsxs)(Zc,{children:[(0,R.jsx)(rl,{children:e}),t.map(e=>(0,R.jsxs)(il,{value:e.id,children:[e.id,` `,(0,R.jsxs)(`span`,{className:`text-muted-foreground`,children:[`(`,e.memory_gb,` GB)`]})]},e.id))]},e))})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,R.jsx)(`span`,{className:`text-[10.5px] text-muted-foreground`,children:`total`}),(0,R.jsx)($t,{type:`number`,value:e.memory_total_gb,onChange:e=>l(t,n,{memory_total_gb:Number(e.target.value)}),className:`h-7 w-16 text-right text-xs`,"aria-label":`Total memory (GB)`})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,R.jsx)(`span`,{className:`text-[10.5px] text-muted-foreground`,children:`free`}),(0,R.jsx)($t,{type:`number`,value:e.memory_free_gb,onChange:e=>l(t,n,{memory_free_gb:Number(e.target.value)}),className:`h-7 w-16 text-right text-xs`,"aria-label":`Free memory (GB)`})]})]})]},n))}),(0,R.jsxs)(Qt,{variant:`outline`,size:`sm`,onClick:()=>s(t),className:`mt-2 h-7 w-full text-xs`,disabled:n.length===0,children:[(0,R.jsx)(Te,{className:`h-3 w-3`}),`Add GPU`]})]},t)}),(0,R.jsxs)(Qt,{variant:`outline`,size:`sm`,onClick:i,className:`w-full`,children:[(0,R.jsx)(Te,{className:`h-3.5 w-3.5`}),`Add node`]})]})}function $l(e,t){let n={};for(let r of e){let e=t(r);n[e]||(n[e]=[]),n[e].push(r)}return n}function eu({cluster:e,colors:t}){if(!e.gpus.length)return null;let n=nu(e.gpus);return(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground`,children:[(0,R.jsxs)(`span`,{children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:e.used_gpus}),`/`,e.total_gpus,` GPUs in use`]}),(0,R.jsxs)(`span`,{children:[(0,R.jsx)(`span`,{className:`font-semibold text-foreground`,children:e.used_mem_gb.toFixed(0)}),` GB used ·`,` `,e.free_mem_gb.toFixed(0),` GB free of `,e.total_mem_gb.toFixed(0),` GB`]})]}),n.map(([e,n])=>(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-wider text-muted-foreground`,children:e}),(0,R.jsx)(`div`,{className:`grid grid-cols-1 gap-2 sm:grid-cols-2 xl:grid-cols-3`,children:n.map(e=>(0,R.jsx)(tu,{g:e,colors:t},e.id))})]},e))]})}function tu({g:e,colors:t}){let n=e.usable_gb||e.capacity_gb||1,r=Math.min(100,e.used_gb/n*100);return(0,R.jsxs)(`div`,{className:V(`rounded-md border bg-background p-2.5`,e.dedicated&&`border-foreground/30`,e.tenants?.length?``:`opacity-70`),children:[(0,R.jsxs)(`div`,{className:`mb-1.5 flex items-baseline justify-between gap-2`,children:[(0,R.jsx)(`span`,{className:`truncate font-mono text-[11px] font-medium`,children:e.id}),(0,R.jsx)(`span`,{className:`shrink-0 text-[10px] text-muted-foreground`,children:e.sku})]}),(0,R.jsx)(`div`,{className:`flex h-2.5 w-full overflow-hidden rounded-full bg-muted`,role:`img`,"aria-label":`${e.id} usage`,children:(e.tenants??[]).map((e,r)=>{let i=Math.max(0,e.used_gb)/n*100;return i<=0?null:(0,R.jsxs)(Jl,{children:[(0,R.jsx)(Yl,{asChild:!0,children:(0,R.jsx)(`div`,{style:{width:`${i}%`},className:V(`h-full`,t[e.label]??`bg-foreground`)})}),(0,R.jsxs)(Xl,{children:[e.label,`: `,e.used_gb.toFixed(1),` GB`]})]},`${e.label}-${r}`)})}),(0,R.jsxs)(`div`,{className:`mt-1 flex items-center justify-between text-[10px] text-muted-foreground`,children:[(0,R.jsxs)(`span`,{children:[e.used_gb.toFixed(0),` / `,e.usable_gb.toFixed(0),` GB (`,r.toFixed(0),`%)`]}),e.dedicated&&(0,R.jsx)(`span`,{className:`text-foreground/70`,children:`dedicated`})]})]})}function nu(e){let t=new Map;for(let n of e){let e=t.get(n.node)??[];e.push(n),t.set(n.node,e)}return[...t.entries()]}function ru({code:e,label:t,className:n}){let[r,i]=(0,_.useState)(!1);async function a(){try{await navigator.clipboard.writeText(e),i(!0),M.success(t?`${t} copied`:`Copied to clipboard`),setTimeout(()=>i(!1),1500)}catch{M.error(`Failed to copy`)}}return(0,R.jsxs)(`div`,{className:V(`group relative overflow-hidden rounded-lg border bg-muted/40`,n),children:[(0,R.jsx)(`pre`,{className:`overflow-x-auto whitespace-pre-wrap break-all p-3 pr-12 font-mono text-[11.5px] leading-relaxed text-foreground`,children:e}),(0,R.jsx)(Qt,{type:`button`,variant:`ghost`,size:`icon`,onClick:a,"aria-label":`Copy`,className:`absolute right-1.5 top-1.5 h-7 w-7`,children:r?(0,R.jsx)(_e,{className:`h-3.5 w-3.5`}):(0,R.jsx)(be,{className:`h-3.5 w-3.5`})})]})}function iu({capacity:e,segments:t,className:n}){let r=e||1,i=t.filter(e=>e.key!==`headroom`).reduce((e,t)=>e+Math.max(0,t.gb),0);return(0,R.jsxs)(`div`,{className:V(`space-y-2`,n),children:[(0,R.jsx)(`div`,{className:`flex h-2.5 w-full overflow-hidden rounded-full bg-muted`,role:`img`,"aria-label":`Memory: ${i.toFixed(1)} of ${e.toFixed(0)} GB used`,children:t.map(e=>{let t=Math.max(0,e.gb)/r*100;return t<=0?null:(0,R.jsxs)(Jl,{children:[(0,R.jsx)(Yl,{asChild:!0,children:(0,R.jsx)(`div`,{style:{width:`${t}%`},className:V(`h-full transition-all`,e.className)})}),(0,R.jsxs)(Xl,{children:[e.label,`: `,e.gb.toFixed(1),` GB (`,t.toFixed(1),`%)`]})]},e.key)})}),(0,R.jsx)(`div`,{className:`flex flex-wrap gap-x-3 gap-y-1 text-[11px] text-muted-foreground`,children:t.map(e=>(0,R.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,R.jsx)(`span`,{className:V(`h-2 w-2 rounded-sm`,e.className),"aria-hidden":!0}),e.label,` `,e.gb.toFixed(1),` GB`]},e.key))})]})}var au=nt(`inline-flex items-center rounded-md border px-2 py-0.5 text-xs font-medium transition-colors`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground`,secondary:`border-transparent bg-secondary text-secondary-foreground`,destructive:`border-transparent bg-destructive text-destructive-foreground`,outline:`text-foreground`,success:`border-transparent bg-brand-soft text-brand`,warn:`border-transparent bg-warn-soft text-warn`}},defaultVariants:{variant:`default`}});function ou({className:e,variant:t,...n}){return(0,R.jsx)(`div`,{className:V(au({variant:t}),e),...n})}var su=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(`div`,{ref:n,className:V(`rounded-xl border bg-card text-card-foreground shadow-sm`,e),...t}));su.displayName=`Card`;var cu=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(`div`,{ref:n,className:V(`flex flex-col space-y-1.5 p-5`,e),...t}));cu.displayName=`CardHeader`;var lu=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(`div`,{ref:n,className:V(`font-semibold leading-none tracking-tight`,e),...t}));lu.displayName=`CardTitle`;var uu=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(`div`,{ref:n,className:V(`text-sm text-muted-foreground`,e),...t}));uu.displayName=`CardDescription`;var du=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(`div`,{ref:n,className:V(`p-5 pt-0`,e),...t}));du.displayName=`CardContent`;var fu=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(`div`,{ref:n,className:V(`flex items-center p-5 pt-0`,e),...t}));fu.displayName=`CardFooter`;function pu({className:e,...t}){return(0,R.jsx)(`div`,{className:V(`animate-pulse rounded-md bg-muted`,e),...t})}var mu=[`bg-emerald-500`,`bg-sky-500`,`bg-violet-500`,`bg-amber-500`,`bg-rose-500`,`bg-cyan-500`,`bg-fuchsia-500`,`bg-lime-600`,`bg-orange-500`,`bg-indigo-500`];function hu(e){let t={},n=0;for(let r of e)r in t||(t[r]=mu[n%mu.length],n++);return t}var gu={feasible:{label:`Feasible`,tone:`success`,description:`At least one configuration fits and meets the SLOs.`},fit_ok:{label:`Fits`,tone:`success`},all_fit:{label:`All models fit`,tone:`success`,description:`Every model was placed on the shared GPU inventory.`},partial_fit:{label:`Partial fit`,tone:`warn`,description:`Some models fit; others could not be placed.`},none_fit:{label:`Nothing fits`,tone:`destructive`,description:`No model could be placed on the inventory.`},no_models:{label:`No models`,tone:`muted`,description:`Add a model to plan.`},infeasible_oom:{label:`Out of memory`,tone:`destructive`,description:`No configuration fits within the available GPU memory.`},infeasible_slo:{label:`SLO miss`,tone:`destructive`,description:`Configurations fit but none meet the requested latency targets.`},infeasible_topology:{label:`Topology infeasible`,tone:`destructive`,description:`No legal placement exists for the requested parallelism.`},model_unsupported:{label:`Model unsupported`,tone:`destructive`,description:`The model architecture is not recognized by the planner.`},model_unreachable:{label:`Model unreachable`,tone:`destructive`,description:`Could not fetch the model metadata from Hugging Face.`}};function _u(e){return gu[e]??{label:e.replace(/_/g,` `),tone:`muted`}}function vu({loading:e,error:t,resp:n,advanced:r}){if(t)return(0,R.jsxs)(su,{className:`border-destructive/40`,children:[(0,R.jsx)(cu,{className:`pb-2`,children:(0,R.jsx)(lu,{className:`text-sm text-destructive`,children:`Error`})}),(0,R.jsx)(du,{className:`text-sm text-muted-foreground`,children:t})]});if(e&&!n)return(0,R.jsxs)(`div`,{className:`space-y-3`,children:[(0,R.jsx)(pu,{className:`h-7 w-40`}),(0,R.jsx)(pu,{className:`h-32 w-full`}),(0,R.jsx)(pu,{className:`h-24 w-full`})]});if(!n)return(0,R.jsx)(`div`,{className:`flex h-full min-h-[40vh] items-center justify-center text-center`,children:(0,R.jsxs)(`div`,{className:`max-w-sm space-y-1`,children:[(0,R.jsx)(`p`,{className:`text-sm font-medium`,children:`Add models and GPUs to see how they fit.`}),(0,R.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Fitment and placement update live as you edit.`})]})});let i=_u(n.verdict),a=hu(n.models.map(e=>e.label)),o=n.models.filter(e=>e.fitted).length;return(0,R.jsxs)(`div`,{className:`space-y-5`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,R.jsx)(ou,{variant:Cu(i.tone),children:i.label}),(0,R.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[o,`/`,n.models.length,` models placed`,n.diagnostics?.elapsed_ms!=null&&` · ${n.diagnostics.elapsed_ms} ms`]})]}),n.warnings?.map((e,t)=>(0,R.jsx)(`p`,{className:`rounded-md border border-warn/30 bg-warn-soft/40 px-3 py-2 text-xs text-warn`,children:e},t)),(0,R.jsxs)(su,{children:[(0,R.jsx)(cu,{className:`pb-3`,children:(0,R.jsx)(lu,{className:`text-sm`,children:`Cluster placement`})}),(0,R.jsx)(du,{children:(0,R.jsx)(eu,{cluster:n.cluster,colors:a})})]}),(0,R.jsx)(`div`,{className:`space-y-3`,children:n.models.map(e=>(0,R.jsx)(yu,{m:e,color:a[e.label],advanced:r},`${e.label}-${e.hf_id}`))})]})}function yu({m:e,color:t,advanced:n}){let r=e.chosen;return(0,R.jsxs)(su,{className:V(!e.fitted&&`border-destructive/40`),children:[(0,R.jsxs)(cu,{className:`flex flex-row items-center justify-between space-y-0 pb-2`,children:[(0,R.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,R.jsx)(`span`,{className:V(`h-3 w-3 shrink-0 rounded-sm`,t),"aria-hidden":!0}),(0,R.jsxs)(`div`,{className:`min-w-0`,children:[(0,R.jsx)(`div`,{className:`truncate text-sm font-medium`,children:e.label}),e.label!==e.hf_id&&(0,R.jsx)(`div`,{className:`truncate font-mono text-[11px] text-muted-foreground`,children:e.hf_id})]})]}),e.fitted?(0,R.jsx)(ou,{variant:`success`,className:`shrink-0`,children:`placed`}):(0,R.jsx)(ou,{variant:`destructive`,className:`shrink-0`,children:`no fit`})]}),(0,R.jsxs)(du,{className:`space-y-3`,children:[!e.fitted&&(0,R.jsx)(`p`,{className:`text-xs text-destructive`,children:e.reason}),r&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-1 text-xs`,children:[(0,R.jsx)(Su,{label:`quant`,value:`${r.engine_config.quantization} · kv=${r.engine_config.kv_cache_dtype}`}),(0,R.jsx)(Su,{label:`topology`,value:xu(r)}),(0,R.jsx)(Su,{label:`GPUs`,value:`${e.gpu_ids?.length??r.placement.gpu_ids.length}`}),(0,R.jsx)(Su,{label:`per-GPU`,value:`${r.memory_per_gpu_gb.total_used.toFixed(1)} GB`}),e.dedicated&&(0,R.jsx)(`span`,{className:`text-muted-foreground`,children:`dedicated`}),(e.replicas??1)>1&&(0,R.jsxs)(`span`,{className:`text-muted-foreground`,children:[`×`,e.replicas,` replicas`]})]}),e.gpu_ids&&e.gpu_ids.length>0&&(0,R.jsx)(`div`,{className:`font-mono text-[10.5px] text-muted-foreground`,children:e.gpu_ids.join(` `)}),n&&(0,R.jsx)(bu,{cfg:r,altCount:e.alternatives?.length??0})]})]})]})}function bu({cfg:e,altCount:t}){let n=e.memory_per_gpu_gb,r=e.performance_estimate;return(0,R.jsxs)(`details`,{className:`group rounded-md border bg-muted/20 p-2.5 text-xs`,children:[(0,R.jsxs)(`summary`,{className:`flex cursor-pointer items-center gap-1 font-medium text-muted-foreground hover:text-foreground`,children:[(0,R.jsx)(ve,{className:`h-3.5 w-3.5 transition-transform group-open:rotate-180`}),`Performance, memory & command`,t>0&&(0,R.jsxs)(`span`,{className:`ml-1 font-normal`,children:[`· `,t,` alternative config(s)`]})]}),(0,R.jsxs)(`div`,{className:`mt-3 space-y-3`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1`,children:[(0,R.jsx)(Su,{label:`TTFT p95`,value:`${r.ttft_ms_p95.toFixed(0)} ms`}),(0,R.jsx)(Su,{label:`TPOT p95`,value:`${r.tpot_ms_p95.toFixed(0)} ms`}),(0,R.jsx)(Su,{label:`decode/user`,value:`${r.decode_tokens_per_sec_per_user.toFixed(0)} tok/s`}),(0,R.jsx)(Su,{label:`aggregate`,value:`${r.decode_tokens_per_sec_aggregate.toFixed(0)} tok/s`}),(0,R.jsx)(Su,{label:`bottleneck`,value:`${r.bottleneck} (${r.confidence})`})]}),(0,R.jsx)(iu,{capacity:n.total_capacity||n.total_used,segments:[{key:`weights`,label:`weights`,gb:n.weights,className:`bg-foreground`},{key:`kv`,label:`KV cache`,gb:n.kv_cache_reserved,className:`bg-warn`},{key:`activations`,label:`activations`,gb:n.activations_peak,className:`bg-destructive/80`},{key:`overhead`,label:`overhead`,gb:n.framework_overhead,className:`bg-muted-foreground/50`},{key:`headroom`,label:`headroom`,gb:n.headroom,className:`bg-muted`}]}),(0,R.jsx)(ru,{code:e.vllm_command,label:`vLLM command`})]})]})}function xu(e){let t=e.placement,n=[`TP=${t.tensor_parallel}`];return t.pipeline_parallel>1&&n.push(`PP=${t.pipeline_parallel}`),t.expert_parallel>1&&n.push(`EP=${t.expert_parallel}`),t.data_parallel>1&&n.push(`DP=${t.data_parallel}`),n.join(` `)}function Su({label:e,value:t}){return(0,R.jsxs)(`span`,{className:`inline-flex items-baseline gap-1`,children:[(0,R.jsx)(`span`,{className:`text-muted-foreground`,children:e}),(0,R.jsx)(`span`,{className:`font-medium tabular-nums`,children:t})]})}function Cu(e){switch(e){case`success`:return`success`;case`destructive`:return`destructive`;case`warn`:return`warn`;default:return`secondary`}}function wu(e=``){return{uid:crypto.randomUUID(),hf_id:e}}function Tu({models:e,setModels:t,advanced:n}){let r=(n,r)=>t(e.map(e=>e.uid===n?{...e,...r}:e)),i=n=>t(e.filter(e=>e.uid!==n));return(0,R.jsxs)(`div`,{className:`space-y-2.5`,children:[e.map((t,a)=>(0,R.jsxs)(`div`,{className:`rounded-md border bg-background p-2.5`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(`span`,{className:`w-4 shrink-0 text-center text-xs tabular-nums text-muted-foreground`,children:a+1}),(0,R.jsx)($t,{value:t.hf_id,onChange:e=>r(t.uid,{hf_id:e.target.value}),placeholder:`org/Model-Name`,className:`h-8 flex-1 font-mono text-xs`,"aria-label":`Model ${a+1} Hugging Face ID`}),(0,R.jsx)(Qt,{type:`button`,variant:`ghost`,size:`icon`,className:`h-7 w-7 shrink-0`,onClick:()=>i(t.uid),"aria-label":`Remove model ${a+1}`,disabled:e.length<=1,children:(0,R.jsx)(je,{className:`h-3.5 w-3.5`})})]}),n&&(0,R.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-3 pl-6 text-xs`,children:[(0,R.jsx)($t,{value:t.revision??``,onChange:e=>r(t.uid,{revision:e.target.value||void 0}),placeholder:`revision`,className:`h-7 w-28 font-mono text-[11px]`,"aria-label":`revision`}),(0,R.jsxs)(`label`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[`replicas`,(0,R.jsx)($t,{type:`number`,min:1,value:t.replicas??1,onChange:e=>r(t.uid,{replicas:Math.max(1,Number(e.target.value)||1)}),className:`h-7 w-14 text-[11px]`,"aria-label":`replicas`})]}),(0,R.jsxs)(`label`,{className:V(`flex cursor-pointer items-center gap-1.5 text-muted-foreground`,t.dedicated&&`text-foreground`),children:[(0,R.jsx)(`input`,{type:`checkbox`,checked:!!t.dedicated,onChange:e=>r(t.uid,{dedicated:e.target.checked||void 0}),className:`h-3.5 w-3.5 accent-foreground`}),`dedicated GPUs`]})]})]},t.uid)),(0,R.jsxs)(Qt,{type:`button`,variant:`outline`,size:`sm`,className:`w-full`,onClick:()=>t([...e,wu()]),children:[(0,R.jsx)(Te,{className:`h-3.5 w-3.5`}),`Add model`]})]})}var Eu=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=Ge(`Primitive.${t}`),r=_.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,R.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),Du=`Separator`,Ou=`horizontal`,ku=[`horizontal`,`vertical`],Au=_.forwardRef((e,t)=>{let{decorative:n,orientation:r=Ou,...i}=e,a=ju(r)?r:Ou,o=n?{role:`none`}:{"aria-orientation":a===`vertical`?a:void 0,role:`separator`};return(0,R.jsx)(Eu.div,{"data-orientation":a,...o,...i,ref:t})});Au.displayName=Du;function ju(e){return ku.includes(e)}var Mu=Au,Nu=_.forwardRef(({className:e,orientation:t=`horizontal`,decorative:n=!0,...r},i)=>(0,R.jsx)(Mu,{ref:i,decorative:n,orientation:t,className:V(`shrink-0 bg-border`,t===`horizontal`?`h-px w-full`:`h-full w-px`,e),...r}));Nu.displayName=Mu.displayName;var Pu=(0,_.createContext)(void 0);function Fu({children:e,defaultTheme:t=`light`,storageKey:n=`gt-theme`}){let[r,i]=(0,_.useState)(()=>typeof window>`u`?t:window.localStorage.getItem(n)??t);(0,_.useEffect)(()=>{let e=document.documentElement;e.classList.remove(`light`,`dark`),e.classList.add(r)},[r]);let a=e=>{window.localStorage.setItem(n,e),i(e)},o=(0,_.useMemo)(()=>({theme:r,setTheme:a,toggle:()=>a(r===`dark`?`light`:`dark`)}),[r]);return(0,R.jsx)(Pu.Provider,{value:o,children:e})}function Iu(){let e=(0,_.useContext)(Pu);if(!e)throw Error(`useTheme must be used within ThemeProvider`);return e}function Lu({title:e,lede:t,actions:n,children:r}){let{theme:i,toggle:a}=Iu();return(0,R.jsxs)(`div`,{className:`flex h-screen flex-col overflow-hidden bg-background`,children:[(0,R.jsxs)(`header`,{className:`flex h-14 shrink-0 items-center gap-3 border-b bg-card px-4 lg:px-6`,children:[(0,R.jsx)(`img`,{src:`/logo.png`,alt:`GreenThread`,className:`h-7 w-auto dark:invert dark:hue-rotate-180`}),(0,R.jsx)(Nu,{orientation:`vertical`,className:`h-6`}),(0,R.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,R.jsx)(`span`,{className:`truncate text-sm font-semibold leading-tight`,children:e}),t&&(0,R.jsx)(`span`,{className:`truncate text-[11px] text-muted-foreground`,children:t})]}),(0,R.jsxs)(`div`,{className:`ml-auto flex items-center gap-2`,children:[n,(0,R.jsx)(Qt,{variant:`ghost`,size:`icon`,onClick:a,"aria-label":i===`dark`?`Switch to light theme`:`Switch to dark theme`,children:i===`dark`?(0,R.jsx)(ke,{className:`h-4 w-4`}):(0,R.jsx)(we,{className:`h-4 w-4`})})]})]}),(0,R.jsx)(`div`,{className:`flex flex-1 overflow-hidden`,children:r})]})}var Ru=_.forwardRef(({className:e,...t},n)=>(0,R.jsx)(`label`,{ref:n,className:V(`text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70`,e),...t}));Ru.displayName=`Label`;function zu({label:e,htmlFor:t,hint:n,className:r,children:i}){return(0,R.jsxs)(`div`,{className:V(`space-y-1.5`,r),children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)(Ru,{htmlFor:t,className:`text-xs text-muted-foreground`,children:e}),n&&(0,R.jsxs)(Jl,{children:[(0,R.jsx)(Yl,{asChild:!0,children:(0,R.jsx)(`button`,{type:`button`,"aria-label":`${e}: more info`,className:`text-muted-foreground/60 hover:text-foreground`,children:(0,R.jsx)(Ce,{className:`h-3 w-3`})})}),(0,R.jsx)(Xl,{side:`top`,children:n})]})]}),i]})}var Bu=`s`;function Vu(e){let t=``;for(let n=0;n({id:`node-01-gpu-${t}`,model:`H100-SXM5`,memory_total_gb:80,memory_free_gb:80,in_use:!1}))}],Ju={max_concurrent_requests:32,max_context_length:8192,avg_input_tokens:1e3,avg_output_tokens:500,slo:{target_ttft_p95_ms:0,target_tpot_p95_ms:0,target_decode_tps_per_user:0}},Yu={allowed_quantizations:[`bf16`,`fp8`,`awq`,`gptq`],allowed_kv_cache_dtypes:[`auto`,`fp8`],max_tensor_parallel:8,max_pipeline_parallel:1,max_data_parallel:1,allow_cross_node_parallelism:!1,allow_kv_head_replication:!1,min_gpu_memory_utilization:.85,max_gpu_memory_utilization:.92,framework_overhead_gb:2,max_results:10},Xu=[wu(`Qwen/Qwen3-8B`),wu(`deepseek-ai/DeepSeek-V3.2-Exp`)],Zu=[`bf16`,`fp16`,`fp8`,`int8`,`awq`,`gptq`,`compressed-tensors`],Qu=[`auto`,`fp8`,`int8`];function $u(){let e=(0,_.useMemo)(()=>Z(),[]),[t,n]=(0,_.useState)(()=>e?.models??Fe(`models`,Xu)),[r,i]=(0,_.useState)(()=>e?.workload??Fe(`workload`,Ju)),[a,o]=(0,_.useState)(()=>e?.constraints??Fe(`constraints`,Yu)),[s,c]=(0,_.useState)(()=>e?.nodes??Fe(`nodes`,qu)),[l,u]=(0,_.useState)(()=>e?.advanced??Fe(`advanced`,!1)),[d,f]=(0,_.useState)(``),[p,m]=(0,_.useState)(!1),[h,g]=(0,_.useState)([]),[v,y]=(0,_.useState)(null),[b,x]=(0,_.useState)(!1),[S,C]=(0,_.useState)(null),w=(0,_.useMemo)(()=>({v:1,models:t,workload:r,constraints:a,nodes:s,advanced:l}),[t,r,a,s,l]);(0,_.useEffect)(()=>{Ie(`models`,t),Ie(`workload`,r),Ie(`constraints`,a),Ie(`nodes`,s),Ie(`advanced`,l),Gu(w)},[w,t,r,a,s,l]),(0,_.useEffect)(()=>{localStorage.removeItem(`fit:hf_token`),Ne().then(g).catch(e=>C(`gpu catalog: ${e?.message??e}`))},[]);let T=(0,_.useMemo)(()=>({models:t.filter(e=>e.hf_id.trim()).map(e=>({hf_id:e.hf_id.trim(),...e.revision?{revision:e.revision}:{},...d?{hf_token:d}:{},...e.dedicated?{dedicated:!0}:{},...e.replicas&&e.replicas>1?{replicas:e.replicas}:{}})),workload:r,constraints:a,inventory:{nodes:s}}),[t,d,r,a,s]),E=(0,_.useRef)(null);(0,_.useEffect)(()=>{if(T.models.length===0){y(null);return}if(s.every(e=>e.gpus.length===0)||r.max_concurrent_requests<=0||r.max_context_length<=0)return;let e=setTimeout(()=>{E.current?.abort();let e=new AbortController;E.current=e,x(!0),C(null),Me(T,e.signal).then(y).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||C(e instanceof Error?e.message:String(e))}).finally(()=>x(!1))},350);return()=>clearTimeout(e)},[T,s,r.max_concurrent_requests,r.max_context_length]);let ee=e=>o(t=>{let n=t.allowed_quantizations??[];return{...t,allowed_quantizations:n.includes(e)?n.filter(t=>t!==e):[...n,e]}}),D=e=>o(t=>{let n=t.allowed_kv_cache_dtypes??[];return{...t,allowed_kv_cache_dtypes:n.includes(e)?n.filter(t=>t!==e):[...n,e]}});return(0,R.jsxs)(Lu,{title:`Fit`,lede:`multi-model GPU placement planner`,actions:(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[b&&(0,R.jsx)(`span`,{className:`mr-1 hidden h-2 w-2 animate-pulse rounded-full bg-foreground/40 md:inline-block`}),(0,R.jsxs)(Qt,{variant:l?`secondary`:`ghost`,size:`sm`,onClick:()=>u(e=>!e),"aria-pressed":l,children:[(0,R.jsx)(De,{className:`h-3.5 w-3.5`}),`Advanced`]}),(0,R.jsxs)(Qt,{variant:`default`,size:`sm`,onClick:async()=>{let e=Ku(w);try{await navigator.clipboard.writeText(e),M.success(`Share link copied`,{description:`GPUs, models and settings are encoded in the URL.`})}catch{window.prompt(`Copy this share link:`,e)}},children:[(0,R.jsx)(Oe,{className:`h-3.5 w-3.5`}),`Share`]})]}),children:[(0,R.jsx)(`aside`,{className:`w-[440px] shrink-0 overflow-y-auto border-r bg-card/40 p-5`,children:(0,R.jsxs)(`div`,{className:`space-y-5`,children:[(0,R.jsxs)(su,{children:[(0,R.jsx)(cu,{className:`pb-3`,children:(0,R.jsx)(lu,{className:`text-sm`,children:`Models`})}),(0,R.jsxs)(du,{className:`space-y-3`,children:[(0,R.jsx)(Tu,{models:t,setModels:n,advanced:l}),(0,R.jsx)(zu,{label:`HF token`,htmlFor:`hf-token`,hint:`Required only for gated models. Never persisted or shared; falls back to the server's HF_TOKEN env.`,children:(0,R.jsxs)(`div`,{className:`relative`,children:[(0,R.jsx)($t,{id:`hf-token`,type:p?`text`:`password`,value:d,onChange:e=>f(e.target.value),placeholder:`hf_…`,className:`pr-10`,autoComplete:`off`}),(0,R.jsx)(Qt,{type:`button`,variant:`ghost`,size:`icon`,onClick:()=>m(e=>!e),"aria-label":p?`Hide token`:`Show token`,className:`absolute right-1 top-1/2 h-7 w-7 -translate-y-1/2`,children:p?(0,R.jsx)(xe,{className:`h-3.5 w-3.5`}):(0,R.jsx)(Se,{className:`h-3.5 w-3.5`})})]})})]})]}),(0,R.jsxs)(su,{children:[(0,R.jsx)(cu,{className:`pb-3`,children:(0,R.jsx)(lu,{className:`text-sm`,children:`Workload`})}),(0,R.jsxs)(du,{className:`space-y-3`,children:[(0,R.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,R.jsx)(zu,{label:`Max concurrent`,htmlFor:`wl-conc`,hint:`Maximum in-flight requests per model.`,children:(0,R.jsx)($t,{id:`wl-conc`,type:`number`,value:r.max_concurrent_requests,onChange:e=>i({...r,max_concurrent_requests:Number(e.target.value)})})}),(0,R.jsx)(zu,{label:`Max context`,htmlFor:`wl-ctx`,hint:`Maximum context length (tokens) the engine must support.`,children:(0,R.jsx)($t,{id:`wl-ctx`,type:`number`,value:r.max_context_length,onChange:e=>i({...r,max_context_length:Number(e.target.value)})})}),l&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(zu,{label:`Avg input tokens`,htmlFor:`wl-in`,hint:`Typical prompt length; sizes KV cache reservations.`,children:(0,R.jsx)($t,{id:`wl-in`,type:`number`,value:r.avg_input_tokens??0,onChange:e=>i({...r,avg_input_tokens:Number(e.target.value)})})}),(0,R.jsx)(zu,{label:`Avg output tokens`,htmlFor:`wl-out`,hint:`Typical generation length; sizes KV cache + throughput.`,children:(0,R.jsx)($t,{id:`wl-out`,type:`number`,value:r.avg_output_tokens??0,onChange:e=>i({...r,avg_output_tokens:Number(e.target.value)})})})]})]}),l&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(Nu,{}),(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(`p`,{className:`mb-2 text-[10.5px] font-semibold uppercase tracking-wider text-muted-foreground`,children:[`SLOs `,(0,R.jsx)(`span`,{className:`font-normal normal-case tracking-normal`,children:`(0 = unconstrained · advisory in fit)`})]}),(0,R.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,R.jsx)(zu,{label:`TTFT p95 (ms)`,htmlFor:`slo-ttft`,hint:`Time To First Token, 95th percentile.`,children:(0,R.jsx)($t,{id:`slo-ttft`,type:`number`,value:r.slo.target_ttft_p95_ms??0,onChange:e=>i({...r,slo:{...r.slo,target_ttft_p95_ms:Number(e.target.value)}})})}),(0,R.jsx)(zu,{label:`TPOT p95 (ms)`,htmlFor:`slo-tpot`,hint:`Time Per Output Token, 95th percentile.`,children:(0,R.jsx)($t,{id:`slo-tpot`,type:`number`,value:r.slo.target_tpot_p95_ms??0,onChange:e=>i({...r,slo:{...r.slo,target_tpot_p95_ms:Number(e.target.value)}})})}),(0,R.jsx)(zu,{label:`Decode tok/s per user`,htmlFor:`slo-decode`,hint:`Sustained per-user output throughput.`,className:`col-span-2`,children:(0,R.jsx)($t,{id:`slo-decode`,type:`number`,value:r.slo.target_decode_tps_per_user??0,onChange:e=>i({...r,slo:{...r.slo,target_decode_tps_per_user:Number(e.target.value)}})})})]})]})]})]})]}),l&&(0,R.jsxs)(su,{children:[(0,R.jsx)(cu,{className:`pb-3`,children:(0,R.jsx)(lu,{className:`text-sm`,children:`Constraints`})}),(0,R.jsxs)(du,{className:`space-y-4`,children:[(0,R.jsx)(zu,{label:`Allowed quantizations`,hint:`Only configurations using one of these weight quantizations are considered.`,children:(0,R.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Zu.map(e=>(0,R.jsx)(ed,{on:!!a.allowed_quantizations?.includes(e),onClick:()=>ee(e),children:e},e))})}),(0,R.jsx)(zu,{label:`KV cache dtype`,hint:`Allowed key/value cache dtypes. fp8 halves cache footprint.`,children:(0,R.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Qu.map(e=>(0,R.jsx)(ed,{on:!!a.allowed_kv_cache_dtypes?.includes(e),onClick:()=>D(e),children:e},e))})}),(0,R.jsxs)(`div`,{className:`grid grid-cols-3 gap-3`,children:[(0,R.jsx)(zu,{label:`Max TP`,htmlFor:`c-tp`,hint:`Tensor Parallel: shard each layer across this many GPUs.`,children:(0,R.jsx)($t,{id:`c-tp`,type:`number`,value:a.max_tensor_parallel??1,onChange:e=>o({...a,max_tensor_parallel:Number(e.target.value)})})}),(0,R.jsx)(zu,{label:`Max PP`,htmlFor:`c-pp`,hint:`Pipeline Parallel: sequential stages across GPUs.`,children:(0,R.jsx)($t,{id:`c-pp`,type:`number`,value:a.max_pipeline_parallel??1,onChange:e=>o({...a,max_pipeline_parallel:Number(e.target.value)})})}),(0,R.jsx)(zu,{label:`Max DP`,htmlFor:`c-dp`,hint:`Data Parallel: independent replicas for throughput.`,children:(0,R.jsx)($t,{id:`c-dp`,type:`number`,value:a.max_data_parallel??1,onChange:e=>o({...a,max_data_parallel:Number(e.target.value)})})})]}),(0,R.jsx)(zu,{label:`GPU memory utilization (max)`,htmlFor:`c-mem`,hint:`Upper bound on per-GPU memory the engine may use. The fit packer treats this × free memory as each GPU's budget.`,children:(0,R.jsx)($t,{id:`c-mem`,type:`number`,step:`0.01`,min:`0`,max:`1`,value:a.max_gpu_memory_utilization??.92,onChange:e=>o({...a,max_gpu_memory_utilization:Number(e.target.value)})})}),(0,R.jsxs)(`label`,{className:`flex items-center gap-2 text-sm`,children:[(0,R.jsx)(`input`,{type:`checkbox`,checked:!!a.allow_cross_node_parallelism,onChange:e=>o({...a,allow_cross_node_parallelism:e.target.checked}),className:`h-4 w-4 accent-foreground`}),(0,R.jsx)(`span`,{className:`text-muted-foreground`,children:`Allow cross-node parallelism`})]})]})]}),(0,R.jsxs)(su,{children:[(0,R.jsxs)(cu,{className:`flex flex-row items-center justify-between space-y-0 pb-3`,children:[(0,R.jsx)(lu,{className:`text-sm`,children:`Inventory`}),(0,R.jsxs)(Qt,{variant:`ghost`,size:`sm`,onClick:()=>{confirm(`Reset inventory to defaults?`)&&c(qu)},children:[(0,R.jsx)(Ee,{className:`h-3 w-3`}),`Reset`]})]}),(0,R.jsx)(du,{children:(0,R.jsx)(Ql,{nodes:s,setNodes:c,skus:h})})]}),l&&(0,R.jsxs)(`details`,{className:`text-xs`,children:[(0,R.jsx)(`summary`,{className:`cursor-pointer text-muted-foreground hover:text-foreground`,children:`Request preview`}),(0,R.jsx)(`pre`,{className:`mt-2 max-h-72 overflow-auto rounded-md border bg-muted/40 p-3 font-mono text-[11px]`,children:JSON.stringify(T,null,2)})]}),(0,R.jsxs)(`p`,{className:`text-[11px] text-muted-foreground`,children:[`Proxied via `,(0,R.jsx)(Ru,{className:`font-mono`,children:`/api`})]})]})}),(0,R.jsx)(`main`,{className:`flex-1 overflow-y-auto p-5 lg:p-8`,children:(0,R.jsx)(vu,{loading:b,error:S,resp:v,advanced:l})})]})}function ed({on:e,onClick:t,children:n}){return(0,R.jsx)(`button`,{type:`button`,onClick:t,className:V(`rounded-full border px-2.5 py-0.5 text-xs font-medium transition-colors`,e?`border-foreground bg-foreground text-background`:`border-border bg-background text-muted-foreground hover:border-foreground/40 hover:text-foreground`),children:n})}(0,v.createRoot)(document.getElementById(`root`)).render((0,R.jsx)(_.StrictMode,{children:(0,R.jsx)(Fu,{defaultTheme:`light`,storageKey:`fit:theme`,children:(0,R.jsxs)(ql,{delayDuration:150,children:[(0,R.jsx)($u,{}),(0,R.jsx)(({...e})=>{let{theme:t}=Iu();return(0,R.jsx)(de,{theme:t,className:`toaster group`,toastOptions:{classNames:{toast:`group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg`,description:`group-[.toast]:text-muted-foreground`,actionButton:`group-[.toast]:bg-primary group-[.toast]:text-primary-foreground`,cancelButton:`group-[.toast]:bg-muted group-[.toast]:text-muted-foreground`}},...e})},{position:`bottom-right`,richColors:!0,closeButton:!0})]})})})); \ No newline at end of file diff --git a/internal/webui/dist/assets/index-Ctq9uoR4.css b/internal/webui/dist/assets/index-Ctq9uoR4.css new file mode 100644 index 0000000..44b361a --- /dev/null +++ b/internal/webui/dist/assets/index-Ctq9uoR4.css @@ -0,0 +1 @@ +*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}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-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;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}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background:50 33% 97%;--foreground:30 10% 12%;--card:48 30% 98%;--card-foreground:30 10% 12%;--popover:48 30% 98%;--popover-foreground:30 10% 12%;--primary:30 12% 16%;--primary-foreground:50 33% 97%;--secondary:45 20% 92%;--secondary-foreground:30 10% 18%;--muted:45 18% 92%;--muted-foreground:30 8% 40%;--accent:45 22% 90%;--accent-foreground:30 10% 14%;--destructive:0 70% 45%;--destructive-foreground:50 33% 97%;--border:40 15% 86%;--input:40 15% 86%;--ring:30 10% 30%;--radius:.625rem;--brand-green:141 100% 31%;--brand-green-soft:141 60% 92%;--warn:32 90% 42%;--warn-soft:40 95% 92%}.dark{--background:30 8% 8%;--foreground:40 15% 92%;--card:30 8% 10%;--card-foreground:40 15% 92%;--popover:30 8% 10%;--popover-foreground:40 15% 92%;--primary:40 15% 92%;--primary-foreground:30 10% 12%;--secondary:30 6% 16%;--secondary-foreground:40 15% 92%;--muted:30 6% 16%;--muted-foreground:35 8% 62%;--accent:30 6% 18%;--accent-foreground:40 15% 92%;--destructive:0 60% 45%;--destructive-foreground:40 15% 92%;--border:30 6% 18%;--input:30 6% 18%;--ring:35 8% 70%;--brand-green:141 70% 50%;--brand-green-soft:141 30% 18%;--warn:38 90% 60%;--warn-soft:36 30% 18%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.absolute{position:absolute}.relative{position:relative}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-2{right:.5rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.z-50{z-index:50}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.ml-1{margin-left:.25rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-72{max-height:18rem}.max-h-96{max-height:24rem}.min-h-\[40vh\]{min-height:40vh}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-20{width:5rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-40{width:10rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[120px\]{width:120px}.w-\[440px\]{width:440px}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;user-select:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-all{word-break:break-all}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-border{border-color:hsl(var(--border))}.border-destructive\/40{border-color:hsl(var(--destructive) / .4)}.border-foreground{border-color:hsl(var(--foreground))}.border-foreground\/30{border-color:hsl(var(--foreground) / .3)}.border-input{border-color:hsl(var(--input))}.border-transparent{border-color:#0000}.border-warn\/30{border-color:hsl(var(--warn) / .3)}.bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.bg-background{background-color:hsl(var(--background))}.bg-border{background-color:hsl(var(--border))}.bg-brand-soft{background-color:hsl(var(--brand-green-soft))}.bg-card{background-color:hsl(var(--card))}.bg-card\/40{background-color:hsl(var(--card) / .4)}.bg-cyan-500{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity,1))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/80{background-color:hsl(var(--destructive) / .8)}.bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity,1))}.bg-foreground{background-color:hsl(var(--foreground))}.bg-foreground\/40{background-color:hsl(var(--foreground) / .4)}.bg-fuchsia-500{--tw-bg-opacity:1;background-color:rgb(217 70 239/var(--tw-bg-opacity,1))}.bg-indigo-500{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity,1))}.bg-lime-600{--tw-bg-opacity:1;background-color:rgb(101 163 13/var(--tw-bg-opacity,1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/50{background-color:hsl(var(--muted-foreground) / .5)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/40{background-color:hsl(var(--muted) / .4)}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity,1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity,1))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.bg-violet-500{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity,1))}.bg-warn{background-color:hsl(var(--warn))}.bg-warn-soft{background-color:hsl(var(--warn-soft))}.bg-warn-soft\/40{background-color:hsl(var(--warn-soft) / .4)}.p-1{padding:.25rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-5{padding:1.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-2{padding-left:.5rem}.pl-6{padding-left:1.5rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.text-background{color:hsl(var(--background))}.text-brand{color:hsl(var(--brand-green))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/70{color:hsl(var(--foreground) / .7)}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-warn{color:hsl(var(--warn))}.underline-offset-4{text-underline-offset:4px}.accent-foreground{accent-color:hsl(var(--foreground))}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.outline-none{outline-offset:2px;outline:2px solid #0000}.outline{outline-style:solid}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}@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))}}@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))}}.animate-in{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.fade-in-0{--tw-enter-opacity:0}.zoom-in-95{--tw-enter-scale:.95}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-foreground\/40:hover{border-color:hsl(var(--foreground) / .4)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:underline:hover{text-decoration-line:underline}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus-visible\:outline-none:focus-visible{outline-offset:2px;outline:2px solid #0000}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group.toaster .group-\[\.toaster\]\:border-border{border-color:hsl(var(--border))}.group.toast .group-\[\.toast\]\:bg-muted{background-color:hsl(var(--muted))}.group.toast .group-\[\.toast\]\:bg-primary{background-color:hsl(var(--primary))}.group.toaster .group-\[\.toaster\]\:bg-background{background-color:hsl(var(--background))}.group.toast .group-\[\.toast\]\:text-muted-foreground{color:hsl(var(--muted-foreground))}.group.toast .group-\[\.toast\]\:text-primary-foreground{color:hsl(var(--primary-foreground))}.group.toaster .group-\[\.toaster\]\:text-foreground{color:hsl(var(--foreground))}.group.toaster .group-\[\.toaster\]\:shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:-.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:-.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.data-\[state\=open\]\:animate-in[data-state=open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-\[state\=closed\]\:animate-out[data-state=closed]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.dark\:hue-rotate-180:is(.dark *){--tw-hue-rotate:hue-rotate(180deg);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.dark\:invert:is(.dark *){--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (width>=640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=768px){.md\:inline-block{display:inline-block}}@media (width>=1024px){.lg\:p-8{padding:2rem}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media (width>=1280px){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0} diff --git a/internal/webui/dist/index.html b/internal/webui/dist/index.html index b4a7889..ad7212d 100644 --- a/internal/webui/dist/index.html +++ b/internal/webui/dist/index.html @@ -5,8 +5,8 @@ Fit — GreenThread - - + +
diff --git a/web/src/App.tsx b/web/src/App.tsx index 0fd9564..6584e99 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -11,8 +11,6 @@ import { Field } from '@/components/field' import { Button } from '@/components/ui/button' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Input } from '@/components/ui/input' -import { Label } from '@/components/ui/label' -import { Separator } from '@/components/ui/separator' import { cn } from '@/lib/utils' import { readShareState, shareURL, writeShareState } from '@/lib/urlState' import type { @@ -130,6 +128,8 @@ export default function App() { ...(hfToken ? { hf_token: hfToken } : {}), ...(m.dedicated ? { dedicated: true } : {}), ...(m.replicas && m.replicas > 1 ? { replicas: m.replicas } : {}), + // Per-model SLO inherits the shared workload but overrides its targets. + ...(m.slo ? { workload: { ...workload, slo: m.slo } } : {}), })), workload, constraints, @@ -290,48 +290,10 @@ export default function App() { )}
- {advanced && ( - <> - -
-

- SLOs (0 = unconstrained · advisory in fit) -

-
- - - setWorkload({ ...workload, slo: { ...workload.slo, target_ttft_p95_ms: Number(e.target.value) } }) - } - /> - - - - setWorkload({ ...workload, slo: { ...workload.slo, target_tpot_p95_ms: Number(e.target.value) } }) - } - /> - - - - setWorkload({ ...workload, slo: { ...workload.slo, target_decode_tps_per_user: Number(e.target.value) } }) - } - /> - -
-
- +

+ SLO targets are set per model in the Models panel above. +

)} @@ -410,10 +372,6 @@ export default function App() { )} - -

- Proxied via -

diff --git a/web/src/FitResults.tsx b/web/src/FitResults.tsx index f3102af..1494c9a 100644 --- a/web/src/FitResults.tsx +++ b/web/src/FitResults.tsx @@ -102,15 +102,10 @@ function ModelCard({ m, color, advanced }: { m: FitModelResult; color: string; a )} - {m.fitted ? ( - - placed - - ) : ( - - no fit - - )} +
+ {m.fitted && cfg && !cfg.meets_slo && SLO missed} + {m.fitted ? placed : no fit} +
{!m.fitted &&

{m.reason}

} diff --git a/web/src/InventoryEditor.tsx b/web/src/InventoryEditor.tsx index 45be0af..248c14b 100644 --- a/web/src/InventoryEditor.tsx +++ b/web/src/InventoryEditor.tsx @@ -1,4 +1,4 @@ -import { Copy, Plus, Trash2 } from 'lucide-react' +import { Trash2 } from 'lucide-react' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { @@ -10,11 +10,7 @@ import { SelectTrigger, SelectValue, } from '@/components/ui/select' -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from '@/components/ui/tooltip' +import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip' import type { GPU, Interconnect, Node, SkuRow } from './types' interface Props { @@ -23,123 +19,96 @@ interface Props { skus: SkuRow[] } -const INTERCONNECTS: Interconnect[] = [ - 'nvlink', - 'nvswitch', - 'pcie', - 'infiniband', - 'ethernet', -] +const INTERCONNECTS: Interconnect[] = ['nvlink', 'nvswitch', 'pcie', 'infiniband', 'ethernet'] +const FALLBACK_SKU = 'H100-SXM5' +const FALLBACK_MEM = 80 + +// A node is homogeneous: one GPU type × a count. NodeShape is the editable view; +// the GPU array (wire format) is regenerated from it on every change. +interface NodeShape { + model: string + count: number + total: number + free: number +} + +function shapeOf(n: Node): NodeShape { + const g = n.gpus[0] + return { + model: g?.model ?? FALLBACK_SKU, + count: n.gpus.length || 1, + total: g?.memory_total_gb ?? FALLBACK_MEM, + free: g?.memory_free_gb ?? FALLBACK_MEM, + } +} + +function buildGPUs(name: string, s: NodeShape): GPU[] { + return Array.from({ length: Math.max(1, s.count) }, (_, i) => ({ + id: `${name}-gpu-${i}`, + model: s.model, + memory_total_gb: s.total, + memory_free_gb: s.free, + in_use: false, + })) +} export function InventoryEditor({ nodes, setNodes, skus }: Props) { const skusByVendor = groupBy(skus, (s) => s.vendor || 'other') const addNode = () => { const idx = nodes.length + const name = `node-${String(idx + 1).padStart(2, '0')}` + const sku = skus[0] + const mem = sku?.memory_gb ?? FALLBACK_MEM + const shape: NodeShape = { model: sku?.id ?? FALLBACK_SKU, count: 1, total: mem, free: mem } setNodes((prev) => [ ...prev, - { - name: `node-${String(idx + 1).padStart(2, '0')}`, - interconnect: 'nvlink', - intra_node_bandwidth_gbps: 900, - inter_node_bandwidth_gbps: 25, - gpus: [], - }, + { name, interconnect: 'nvlink', intra_node_bandwidth_gbps: 900, inter_node_bandwidth_gbps: 25, gpus: buildGPUs(name, shape) }, ]) } - const removeNode = (i: number) => - setNodes((prev) => prev.filter((_, idx) => idx !== i)) + const removeNode = (i: number) => setNodes((prev) => prev.filter((_, idx) => idx !== i)) - const updateNode = (i: number, patch: Partial) => - setNodes((prev) => prev.map((n, idx) => (idx === i ? { ...n, ...patch } : n))) + // patchInterconnect leaves the GPU array untouched. + const setInterconnect = (i: number, ic: Interconnect) => + setNodes((prev) => prev.map((n, idx) => (idx === i ? { ...n, interconnect: ic } : n))) - const addGPU = (ni: number) => { + // setShape regenerates the GPU array from the homogeneous shape (+ name). + const setShape = (i: number, patch: Partial & { name?: string }) => setNodes((prev) => prev.map((n, idx) => { - if (idx !== ni) return n - const sku = skus[0] - const id = `${n.name}-gpu-${n.gpus.length}` - const mem = sku?.memory_gb ?? 80 - return { - ...n, - gpus: [ - ...n.gpus, - { - id, - model: sku?.id ?? 'H100-SXM5', - memory_total_gb: mem, - memory_free_gb: mem, - in_use: false, - }, - ], + if (idx !== i) return n + const name = patch.name ?? n.name + const shape = { ...shapeOf(n), ...patch } + // Changing the GPU type snaps memory to the catalog default. + if (patch.model && patch.model !== shapeOf(n).model) { + const sku = skus.find((s) => s.id === patch.model) + if (sku) { + shape.total = sku.memory_gb + shape.free = sku.memory_gb + } } - }), - ) - } - - const removeGPU = (ni: number, gi: number) => - setNodes((prev) => - prev.map((n, idx) => - idx === ni ? { ...n, gpus: n.gpus.filter((_, j) => j !== gi) } : n, - ), - ) - - const updateGPU = (ni: number, gi: number, patch: Partial) => - setNodes((prev) => - prev.map((n, idx) => { - if (idx !== ni) return n - return { - ...n, - gpus: n.gpus.map((g, j) => { - if (j !== gi) return g - const next = { ...g, ...patch } - // When SKU changes, snap memory to the catalog default unless user overrode it. - if (patch.model && patch.model !== g.model) { - const sku = skus.find((s) => s.id === patch.model) - if (sku) { - next.memory_total_gb = sku.memory_gb - next.memory_free_gb = sku.memory_gb - } - } - return next - }), - } - }), - ) - - const cloneGPU = (ni: number, gi: number) => - setNodes((prev) => - prev.map((n, idx) => { - if (idx !== ni) return n - const src = n.gpus[gi] - const newGPU: GPU = { ...src, id: `${n.name}-gpu-${n.gpus.length}` } - return { ...n, gpus: [...n.gpus, newGPU] } + return { ...n, name, gpus: buildGPUs(name, shape) } }), ) return ( -
+
{nodes.map((node, ni) => { - const totalMem = node.gpus.reduce((a, g) => a + g.memory_free_gb, 0) + const s = shapeOf(node) + const totalFree = s.count * s.free return ( -
+
updateNode(ni, { name: e.target.value })} + onChange={(e) => setShape(ni, { name: e.target.value })} placeholder="node name" aria-label="Node name" className="h-8 flex-1 text-sm" /> - setInterconnect(ni, v as Interconnect)}> + @@ -155,9 +124,10 @@ export function InventoryEditor({ nodes, setNodes, skus }: Props) { @@ -165,123 +135,60 @@ export function InventoryEditor({ nodes, setNodes, skus }: Props) { Remove node
-

- {node.gpus.length} GPU{node.gpus.length === 1 ? '' : 's'} ·{' '} - {totalMem.toFixed(0)} GB free -

-
- {node.gpus.map((g, gi) => ( -
-
- updateGPU(ni, gi, { id: e.target.value })} - aria-label="GPU id" - className="h-7 flex-1 font-mono text-[11px]" - /> - - - - - Clone GPU - - - - - - Remove GPU - -
-
- setShape(ni, { model: v })}> + + + + + {Object.entries(skusByVendor).map(([vendor, list]) => ( + + {vendor} + {list.map((sku) => ( + + {sku.id} ({sku.memory_gb} GB) + ))} - - -
- total - - updateGPU(ni, gi, { memory_total_gb: Number(e.target.value) }) - } - className="h-7 w-16 text-right text-xs" - aria-label="Total memory (GB)" - /> -
-
- free - - updateGPU(ni, gi, { memory_free_gb: Number(e.target.value) }) - } - className="h-7 w-16 text-right text-xs" - aria-label="Free memory (GB)" - /> -
-
-
- ))} + + ))} + + + + +
- +

+ {s.count}× {s.model} · {totalFree.toFixed(0)} GB free +

) })}
) diff --git a/web/src/components/models-editor.tsx b/web/src/components/models-editor.tsx index 7ebe705..add8551 100644 --- a/web/src/components/models-editor.tsx +++ b/web/src/components/models-editor.tsx @@ -49,41 +49,63 @@ export function ModelsEditor({ models, setModels, advanced }: ModelsEditorProps)
{advanced && ( -
- update(m.uid, { revision: e.target.value || undefined })} - placeholder="revision" - className="h-7 w-28 font-mono text-[11px]" - aria-label="revision" - /> -
@@ -96,3 +118,41 @@ export function ModelsEditor({ models, setModels, advanced }: ModelsEditorProps)
) } + +function SloInput({ + label, + unit, + value, + onChange, +}: { + label: string + unit: string + value?: number + onChange: (v: number) => void +}) { + return ( + + ) +} + +// cleanSlo drops a SLO object that has no positive targets so it isn't sent or +// persisted as noise. +function cleanSlo(slo: ModelEntry['slo']): ModelEntry['slo'] { + if (!slo) return undefined + const any = + (slo.target_ttft_p95_ms ?? 0) > 0 || + (slo.target_tpot_p95_ms ?? 0) > 0 || + (slo.target_decode_tps_per_user ?? 0) > 0 + return any ? slo : undefined +} diff --git a/web/src/types.ts b/web/src/types.ts index 0af5ff3..9dff0cc 100644 --- a/web/src/types.ts +++ b/web/src/types.ts @@ -201,6 +201,12 @@ export interface ModelEntry { revision?: string dedicated?: boolean replicas?: number + // Per-model SLO targets (advanced). 0 / undefined = unconstrained. + slo?: { + target_ttft_p95_ms?: number + target_tpot_p95_ms?: number + target_decode_tps_per_user?: number + } } export interface FitModel {