From 1e442f058b8aa28d05bb3fd77918fa0d5443cbb2 Mon Sep 17 00:00:00 2001 From: Nick Catalano Date: Sat, 30 May 2026 15:37:26 -0400 Subject: [PATCH] Build the nickcatalano.com site on Next.js 16 Replaces the static one-pager with a full Next.js 16 (App Router, React 19, TypeScript, Tailwind v4) application. The original photo, biography, and links are preserved; all content has a single source of truth in lib/bio.ts. Site - Server-rendered homepage with the original content, refreshed typography (Fraunces) and a warm editorial palette. - SEO/social metadata (Open Graph, Twitter, canonical, robots) and JSON-LD Person structured data. Google Analytics preserved (production only). - PostHog web analytics, gated on POSTHOG_TOKEN and lazy-loaded out of the initial bundle. AI bio-rewriter - A "rewrite my bio in a funny voice" button: Server Actions generate five funny concepts via OpenAI Structured Outputs (GPT-5 Nano, minimal reasoning), each HMAC-signed; picking one rewrites the bio inline as markdown. The signed payload is authoritative -- the browser is never trusted to supply a prompt. - $ai_generation LLM observability via PostHog. Infrastructure - Swappable Redis behind lib/cache + lib/rate-limit factories: local ioredis in dev, Upstash over REST in prod (Vercel's KV_REST_API_* vars). Caching fails open; rate limiting fails closed in production. Daily per-IP limits (client IP from the non-forgeable x-real-ip header); rewrites cached 30 days. - Env validation (lenient in dev, fail-fast in prod). Tooling and docs - Jest signing tests, ESLint (flat config), GitHub Actions CI, Docker Compose for local Redis, .env.example, README, AGENTS.md, CLAUDE.md. Co-Authored-By: Claude Opus 4.8 (1M context) --- .env.example | 40 + .github/workflows/ci.yml | 30 + .gitignore | 1 + .nvmrc | 1 + AGENTS.md | 90 + CLAUDE.md | 17 + README.md | 162 +- app/actions.ts | 170 + app/globals.css | 81 +- app/layout.tsx | 101 +- app/page.tsx | 58 +- components/BioRewriter.tsx | 182 + components/markdown.tsx | 9 + components/posthog-pageview.tsx | 30 + components/posthog-provider.tsx | 43 + docker-compose.yml | 17 + eslint.config.mjs | 10 + jest.config.mjs | 11 + lib/bio.ts | 42 + lib/cache/index.ts | 35 + lib/cache/local.ts | 37 + lib/cache/types.ts | 5 + lib/cache/upstash.ts | 27 + lib/dto.ts | 13 + lib/env.ts | 106 + lib/openai.ts | 247 + lib/posthog.ts | 64 + lib/rate-limit/index.ts | 62 + lib/rate-limit/local.ts | 25 + lib/rate-limit/types.ts | 10 + lib/rate-limit/upstash.ts | 36 + lib/schemas.ts | 26 + lib/signing.test.ts | 59 + lib/signing.ts | 66 + next.config.ts | 21 +- package-lock.json | 12472 +++++++++++++++++++++++++++--- package.json | 24 +- public/ntr600.jpg | Bin 0 -> 98781 bytes tsconfig.json | 30 +- 39 files changed, 13143 insertions(+), 1317 deletions(-) create mode 100644 .env.example create mode 100644 .github/workflows/ci.yml create mode 100644 .nvmrc create mode 100644 AGENTS.md create mode 100644 CLAUDE.md create mode 100644 app/actions.ts create mode 100644 components/BioRewriter.tsx create mode 100644 components/markdown.tsx create mode 100644 components/posthog-pageview.tsx create mode 100644 components/posthog-provider.tsx create mode 100644 docker-compose.yml create mode 100644 eslint.config.mjs create mode 100644 jest.config.mjs create mode 100644 lib/bio.ts create mode 100644 lib/cache/index.ts create mode 100644 lib/cache/local.ts create mode 100644 lib/cache/types.ts create mode 100644 lib/cache/upstash.ts create mode 100644 lib/dto.ts create mode 100644 lib/env.ts create mode 100644 lib/openai.ts create mode 100644 lib/posthog.ts create mode 100644 lib/rate-limit/index.ts create mode 100644 lib/rate-limit/local.ts create mode 100644 lib/rate-limit/types.ts create mode 100644 lib/rate-limit/upstash.ts create mode 100644 lib/schemas.ts create mode 100644 lib/signing.test.ts create mode 100644 lib/signing.ts create mode 100644 public/ntr600.jpg diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..e608b90 --- /dev/null +++ b/.env.example @@ -0,0 +1,40 @@ +# Copy this file to .env.local and fill in the values: +# +# cp .env.example .env.local +# +# .env.local is gitignored — never commit real secrets. + +# ── OpenAI ──────────────────────────────────────────────────────────────── +# Required. Used for the "Generate Fun Versions" feature (GPT-5 Nano). +OPENAI_API_KEY= + +# Optional. Override the model id. Defaults to gpt-5-nano. +# OPENAI_MODEL=gpt-5-nano + +# ── Signing secret ──────────────────────────────────────────────────────── +# Signs the suggestion tokens (HMAC-SHA256) so the browser can never submit an +# arbitrary rewrite prompt. +# - Development: optional. An insecure built-in fallback is used if unset. +# - Production: REQUIRED. Startup fails without it. +# Generate one with: openssl rand -hex 32 +BIO_SIGNING_SECRET= + +# ── Redis (rate limiting + response cache) ──────────────────────────────── +# Local development: run `docker compose up -d` and use these two lines. +USE_LOCAL_REDIS=true +REDIS_URL=redis://localhost:6379 + +# Production (Vercel): leave USE_LOCAL_REDIS unset (or false). Add a Redis store +# in the Vercel dashboard and it injects these automatically — no extra config. +# KV_REST_API_URL= +# KV_REST_API_TOKEN= + +# ── PostHog (analytics + LLM observability) ─────────────────────────────── +# Optional. Without it, analytics are a complete no-op (great for local dev). +# Deliberately NOT prefixed with NEXT_PUBLIC_ so it stays server-controlled — +# set it only in your deploy environment and nothing fires locally. +# This is the PostHog *project* token (write-only, safe to expose in the browser). +# POSTHOG_TOKEN= + +# Optional. PostHog API host for server-side events. Defaults to US cloud. +# POSTHOG_HOST=https://us.i.posthog.com diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b968979 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,30 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + verify: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Lint + run: npm run lint + + - name: Typecheck + run: npm run typecheck + + - name: Test + run: npm test diff --git a/.gitignore b/.gitignore index 76bd729..18fc8e9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ docs/superpowers +.swc # Created by https://www.toptal.com/developers/gitignore/api/nextjs,macos # Edit at https://www.toptal.com/developers/gitignore?templates=nextjs,macos diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..209e3ef --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +20 diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..786cee0 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,90 @@ +# AGENTS.md + +Conventions for working in this repo — for humans and AI assistants alike. This +is the canonical guide; `CLAUDE.md` points here. + +## What this is + +A personal portfolio site (Next.js 16, App Router, TypeScript, Tailwind v4) with +one feature: an AI that rewrites the biography in funny voices. It is **not** a +SaaS product, chatbot, or AI playground. Keep it small, cheap, and tasteful. +When in doubt, do less. + +## Commands + +```bash +npm run dev # dev server +npm run build # production build +npm run lint # ESLint +npm run typecheck # tsc --noEmit +npm test # Jest +docker compose up -d # local Redis on :6379 +``` + +Before opening a PR, make sure `lint`, `typecheck`, and `test` pass — CI runs all +three on `main` and on PRs. + +## Hard rules + +1. **`lib/bio.ts` is the single source of truth for content.** The biography, + profile, links, and analytics ID live there. Never hard-code that copy + anywhere else, and never duplicate the bio text — the homepage and the AI + feature both read from this module. + +2. **Never trust client input for prompts.** The browser may display a rewrite + prompt but must never be able to submit an arbitrary one. Every prompt is + signed (HMAC-SHA256, `lib/signing.ts`) when generated and re-verified before + any rewrite runs. The signed payload — not the request body — is + authoritative. Don't add a code path that rewrites from an unsigned prompt. + +3. **Structured Outputs only.** AI responses come back through OpenAI Structured + Outputs with Zod schemas (`zodTextFormat`, see `lib/schemas.ts` and + `lib/openai.ts`). Do not hand-parse model JSON. + +4. **Don't scatter Redis code.** All cache access goes through `getCache()` + (`lib/cache/`) and all rate limiting through `enforceRateLimit()` + (`lib/rate-limit/`). No `ioredis` or `@upstash/*` imports outside those two + folders. The environment picks the implementation. + +5. **No extra AI infrastructure.** Use the OpenAI SDK directly. Do **not** add + the Vercel AI SDK, LangChain, other orchestration frameworks, or additional + model providers. (This is also why LLM analytics use `posthog-node` directly + rather than `@posthog/ai`, which hard-depends on LangChain et al.) + +6. **Env: lenient in dev, strict in prod.** `lib/env.ts` allows a fallback + signing secret and optional Redis in development; in production it throws on + missing required config. Add new required variables to both `lib/env.ts` and + `.env.example`. + +7. **Analytics are optional and gated on `POSTHOG_TOKEN`.** Both web analytics + and the server-side `$ai_generation` capture must stay a complete no-op when + the token is unset (local dev). Browser events go through the first-party + `/ingest` proxy; server events flush via `next/server`'s `after()` so they + never add request latency. PostHog access lives in `lib/posthog.ts` and the + `components/posthog-*` files — keep it there. + +## Failure behavior (don't regress this) + +- **Caching fails open** — a Redis error is treated as a cache miss. Caching is + an optimization, never a guarantee. +- **Rate limiting fails closed in production** — if the limiter errors, deny + (`reason: "unavailable"`, surfaced as a friendly "overloaded" message). It + must never silently disable protection. In development it degrades to "allow + with a warning." +- **Server actions never leak internals** — they catch everything and return a + typed `{ ok: false, error }` with a friendly message. No stack traces to the + client. + +## Style + +- Match the existing visual tone; this is a faithful port of the original static + site, not a redesign. Don't add marketing copy. +- Keep modules small and single-purpose. Within `lib/`, prefer relative imports; + in `app/` and `components/`, use the `@/` alias. +- Family-friendly, non-offensive AI output is a product requirement — the + suggestion system prompt enforces it. Keep those guardrails intact. + +## Local planning docs + +`docs/superpowers/` holds local design/planning notes and is gitignored — it is +not part of the published project. diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..7fda60f --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,17 @@ +# CLAUDE.md + +This project's conventions live in **[AGENTS.md](AGENTS.md)** — read it first. +It's the single source of truth for commands, architecture, and the hard rules +(content lives in `lib/bio.ts`; never trust client prompts; Structured Outputs +only; all Redis access goes through `lib/cache/` and `lib/rate-limit/`; no extra +AI frameworks). + +A few Claude-specific notes: + +- `docs/superpowers/` contains local planning/spec docs and is gitignored. Don't + rely on it being present, and don't commit it. +- Before claiming work is done, actually run `npm run lint`, `npm run typecheck`, + and `npm test` and confirm they pass. +- This is a deliberately small personal site. Resist scope creep — a change that + adds a framework, a provider, or a new "platform" feature is almost certainly + wrong here. diff --git a/README.md b/README.md index 0915337..b6e5ce4 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,161 @@ # nickcatalano.com -My personal site. A [Next.js](https://nextjs.org) app deployed on [Vercel](https://vercel.com). +**🔗 [www.nickcatalano.com](https://www.nickcatalano.com)** -> **Status:** scaffolding. This is currently a minimal Next.js shell so the Vercel -> deployment pipeline is wired up. The real site (and a fun little AI feature) is -> on the way — this README will grow with it. +My personal site. It's a quiet little page — a photo, a short bio, a few links — +with one playful trick up its sleeve. -## Develop +## The fun part + +Below the biography there's a button: **Generate Fun Versions**. Click it and a +small AI (GPT-5 Nano) dreams up five tongue-in-cheek concepts for retelling the +bio — _Fantasy Wizard CTO_, _Suspicious Pigeon Expert_, _Medieval Town Crier_, +that kind of thing. Pick one and it rewrites the bio in that voice, right below +the original. The real bio never goes away; the rewrite is just an alternate +telling. + +The concepts change every time, the facts stay the same (the model is told to +keep jobs, places, and people intact and only play with tone), and the whole +thing is built to stay cheap and safe to run. + +## Stack + +- **Next.js 16** (App Router) + **React 19**, mostly Server Components +- **TypeScript** + **Tailwind CSS v4** +- **Server Actions** for the two AI calls — no API routes, no client-side keys +- **OpenAI SDK** with **Structured Outputs** (Zod schemas, no hand-parsed JSON) +- **Redis** for rate limiting and a response cache, behind a small abstraction + so it's **local Redis** in dev and **Upstash** in production +- **PostHog** for web analytics + LLM observability (lightweight `posthog-node` + capture — no LangChain, no extra AI SDK) +- Deployed on **Vercel** + +## Quickstart ```bash npm install +docker compose up -d # local Redis on :6379 +cp .env.example .env.local # then add your OPENAI_API_KEY npm run dev ``` -Then open [http://localhost:3000](http://localhost:3000). +Open . -## Build +You only strictly need an `OPENAI_API_KEY` to try the feature. Redis is optional +in development — if it's not running, rate limiting simply turns off with a +warning and everything else works. -```bash -npm run build -npm run start -``` +### Environment variables -## Stack +| Variable | Required | What it's for | +| -------------------------- | ----------------- | -------------------------------------------------------------------- | +| `OPENAI_API_KEY` | yes (prod) | Calls GPT-5 Nano for suggestions and rewrites. | +| `OPENAI_MODEL` | no | Override the model id. Defaults to `gpt-5-nano`. | +| `BIO_SIGNING_SECRET` | yes (prod) | HMAC secret for signing rewrite prompts. Dev uses a fallback. | +| `USE_LOCAL_REDIS` | dev | Set `true` to use a local Redis via `REDIS_URL`. | +| `REDIS_URL` | dev | e.g. `redis://localhost:6379`. | +| `KV_REST_API_URL` | prod | Upstash REST URL (rate limiting + cache). Vercel's Redis integration injects it. | +| `KV_REST_API_TOKEN` | prod | Upstash REST token (injected alongside the URL). | +| `POSTHOG_TOKEN` | no | PostHog project token. Unset → analytics are a no-op (e.g. locally). | +| `POSTHOG_HOST` | no | Server-side PostHog host. Defaults to `https://us.i.posthog.com`. | + +In **development** the app is lenient: a fallback signing secret is allowed and +Redis is optional. In **production** it fails fast — if a required variable is +missing, it throws rather than running without protection. + +## Scripts + +| Command | Does | +| ------------------- | ------------------------------------- | +| `npm run dev` | Start the dev server. | +| `npm run build` | Production build. | +| `npm run start` | Serve the production build. | +| `npm run lint` | ESLint (Next core-web-vitals). | +| `npm run typecheck` | `tsc --noEmit`. | +| `npm test` | Jest (signing/security tests). | + +CI runs lint + typecheck + test on every push and PR to `main` +(`.github/workflows/ci.yml`). None of it needs secrets. + +## How it works + +1. **The page** is a Server Component. It renders the image, bio, and links from + [`lib/bio.ts`](lib/bio.ts) — the single source of truth for all content. No + AI calls happen on load. +2. **Generate Fun Versions** calls the `generateSuggestions` Server Action. It + rate-limits the caller, asks GPT-5 Nano (via Structured Outputs) for five + `{ title, prompt }` concepts, and **signs each prompt** with HMAC-SHA256 + before sending it to the browser. +3. **Picking a concept** calls `rewriteBio` with the prompt and its signed + token. The server re-verifies the signature and expiry, confirms the prompt + matches the signed payload, rate-limits, checks the cache, and only then asks + the model to rewrite the bio. + +### Security model + +The browser may _show_ a prompt but is never _trusted_ to supply one. Every +prompt is signed when generated and re-verified before any rewrite runs — the +signed payload, not the request body, is authoritative. Tokens expire after 15 +minutes. See [`lib/signing.ts`](lib/signing.ts) (and its tests). + +### Cost control + +- Suggestions are generated fresh each click (cheap — five short items from a + nano model) so the ideas always feel new. +- Rewrites are cached in Redis for 30 days, keyed by the biography + the exact + prompt, so a repeated concept is served from cache instead of the model. +- Daily per-IP limits: **5** suggestion generations and **25** rewrites. + +### Swappable Redis + +Nothing outside [`lib/cache/`](lib/cache/) and [`lib/rate-limit/`](lib/rate-limit/) +knows whether it's talking to a local Redis or Upstash. The factory picks the +implementation from the environment. Caching fails open (a backend hiccup is +just a cache miss); rate limiting fails **closed in production** (it never +silently disables protection) and degrades to "allow with a warning" in +development. + +### Analytics + +PostHog handles both web analytics and LLM observability, and it's entirely +gated on `POSTHOG_TOKEN` — unset (e.g. local dev), nothing fires. + +- **Web**: `posthog-js` via a small provider ([components/posthog-provider.tsx](components/posthog-provider.tsx)), + with manual `$pageview` capture for App Router navigations. Browser events go + through a first-party `/ingest` reverse proxy (rewrites in + [next.config.ts](next.config.ts)) so ad-blockers don't eat them. +- **LLM**: each OpenAI call emits a `$ai_generation` event from the server + ([lib/posthog.ts](lib/posthog.ts)) with model, token counts, and latency — + using `posthog-node` directly, so PostHog's LLM dashboards light up without + pulling in any AI framework. Events flush via `next/server`'s `after()`, so + analytics never add latency to a response. + +(Google Analytics from the original site is preserved alongside PostHog.) + +## Deploying to Vercel + +1. Import the repo into Vercel. It auto-detects Next.js — no build config needed. +2. Add a Redis store from the project's **Storage** tab (Vercel's Upstash/KV + integration). It injects `KV_REST_API_URL` and `KV_REST_API_TOKEN` + automatically — the app reads those directly, so there's nothing to copy. +3. Set the remaining environment variables in **Project Settings → Environment + Variables**: + - `OPENAI_API_KEY` + - `BIO_SIGNING_SECRET` (`openssl rand -hex 32`) + - `POSTHOG_TOKEN` (optional — enables analytics + LLM observability) + - Redis: the `KV_REST_API_*` pair from step 2 is injected automatically. + Leave `USE_LOCAL_REDIS` unset. +4. Deploy. `main` is production; pull requests get preview deployments. + +## Project layout + +``` +app/ layout (+ analytics), homepage, server actions +components/ BioRewriter + PostHog provider/pageview +lib/ bio (content), env, signing, schemas, openai, posthog + cache/ cache interface + local (ioredis) and Upstash impls + rate-limit/ limiter interface + local and Upstash impls +public/ ntr600.jpg +``` -- Next.js 15 (App Router) + React 19 -- TypeScript -- Tailwind CSS v4 +See [AGENTS.md](AGENTS.md) for conventions if you're contributing (human or AI). diff --git a/app/actions.ts b/app/actions.ts new file mode 100644 index 0000000..5efca21 --- /dev/null +++ b/app/actions.ts @@ -0,0 +1,170 @@ +"use server"; + +import { createHash, randomUUID } from "crypto"; +import { headers } from "next/headers"; +import { after } from "next/server"; +import { BIOGRAPHY_TEXT } from "@/lib/bio"; +import { getCache } from "@/lib/cache"; +import { + generateSuggestions as generateSuggestionsAI, + rewriteBio as rewriteBioAI, + type AiCallContext, +} from "@/lib/openai"; +import { getPostHogServer } from "@/lib/posthog"; +import { enforceRateLimit } from "@/lib/rate-limit"; +import { + DistinctIdSchema, + RewriteRequestSchema, + type RewriteRequest, +} from "@/lib/schemas"; +import { signPrompt, verifyToken } from "@/lib/signing"; +import type { + GenerateSuggestionsResult, + RewriteResult, + SuggestionDTO, +} from "@/lib/dto"; + +const REWRITE_CACHE_TTL_SECONDS = 60 * 60 * 24 * 30; // 30 days + +const SUGGEST_LIMIT = 5; +const REWRITE_LIMIT = 25; +const DAY_SECONDS = 60 * 60 * 24; + +const MESSAGES = { + rateLimited: "Looks like you've had enough fun for today. Try again tomorrow.", + busy: "We're a bit overloaded right now. Please try again in a moment.", + generic: "Something went sideways on our end. Please try again in a moment.", + badToken: + "We couldn't verify that suggestion. Generate fresh ideas and try again.", + expired: + "That suggestion expired. Generate fresh ideas and pick one within 15 minutes.", +} as const; + +function analyticsContext(distinctId?: string): AiCallContext { + const parsed = DistinctIdSchema.safeParse(distinctId); + const id = parsed.success ? parsed.data : undefined; + return { distinctId: id || randomUUID(), traceId: randomUUID() }; +} + +function flushAnalytics(): void { + const posthog = getPostHogServer(); + if (!posthog) return; + after(async () => { + try { + await posthog.flush(); + } catch { + // best-effort + } + }); +} + +async function getClientIp(): Promise { + // x-real-ip is set by Vercel's proxy and not client-forgeable, so the rate limit can't be dodged by rotating it. + return (await headers()).get("x-real-ip") ?? "127.0.0.1"; +} + +function rewriteCacheKey(biography: string, prompt: string): string { + const digest = createHash("sha256") + .update(biography) + .update("\u0000") + .update(prompt) + .digest("hex"); + return `rewrite:v1:${digest}`; +} + +export async function generateSuggestions( + distinctId?: string, +): Promise { + try { + const ip = await getClientIp(); + const outcome = await enforceRateLimit({ + namespace: "suggest", + identifier: ip, + limit: SUGGEST_LIMIT, + windowSeconds: DAY_SECONDS, + }); + if (!outcome.allowed) { + return { + ok: false, + error: + outcome.reason === "unavailable" + ? MESSAGES.busy + : MESSAGES.rateLimited, + }; + } + + const suggestions = await generateSuggestionsAI(analyticsContext(distinctId)); + const dto: SuggestionDTO[] = suggestions.map((s) => ({ + title: s.title, + prompt: s.prompt, + token: signPrompt(s.prompt), + })); + return { ok: true, suggestions: dto }; + } catch (err) { + console.error("generateSuggestions failed:", err); + return { ok: false, error: MESSAGES.generic }; + } finally { + flushAnalytics(); + } +} + +export async function rewriteBio(input: RewriteRequest): Promise { + try { + const parsed = RewriteRequestSchema.safeParse(input); + if (!parsed.success) { + return { ok: false, error: MESSAGES.badToken }; + } + const { prompt, token, distinctId } = parsed.data; + + // Verify signature, expiry, and that the prompt matches the signed payload. + const verified = verifyToken(token); + if (!verified.ok) { + return { + ok: false, + error: + verified.reason === "expired" ? MESSAGES.expired : MESSAGES.badToken, + }; + } + if (verified.prompt !== prompt) { + return { ok: false, error: MESSAGES.badToken }; + } + const verifiedPrompt = verified.prompt; + + const ip = await getClientIp(); + const outcome = await enforceRateLimit({ + namespace: "rewrite", + identifier: ip, + limit: REWRITE_LIMIT, + windowSeconds: DAY_SECONDS, + }); + if (!outcome.allowed) { + return { + ok: false, + error: + outcome.reason === "unavailable" + ? MESSAGES.busy + : MESSAGES.rateLimited, + }; + } + + const cache = getCache(); + const key = rewriteCacheKey(BIOGRAPHY_TEXT, verifiedPrompt); + const cached = await cache.get(key); + if (cached) { + return { ok: true, rewrittenBio: cached }; + } + + const rewrittenBio = await rewriteBioAI( + verifiedPrompt, + BIOGRAPHY_TEXT, + analyticsContext(distinctId), + ); + await cache.set(key, rewrittenBio, REWRITE_CACHE_TTL_SECONDS); + return { ok: true, rewrittenBio }; + } catch (err) { + console.error("rewriteBio failed:", err); + return { ok: false, error: MESSAGES.generic }; + } finally { + flushAnalytics(); + } +} diff --git a/app/globals.css b/app/globals.css index 3423eec..dbc58cf 100644 --- a/app/globals.css +++ b/app/globals.css @@ -1,8 +1,13 @@ @import "tailwindcss"; :root { - --background: #ffffff; - --foreground: #333333; + --background: #f6f2e9; + --foreground: #3a352c; + --heading: #26221b; + --link: #2f7280; + --link-hover: #21525c; + --accent: #a9802d; + --accent-soft: #faf4e4; } html { @@ -12,6 +17,78 @@ html { body { background: var(--background); color: var(--foreground); + line-height: 1.6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; } + +/* Editorial serif (loaded in app/layout.tsx) for the name + section headings. */ +.font-display { + font-family: var(--font-display), Georgia, "Times New Roman", serif; +} + +/* Restores element styling that Tailwind's preflight strips, scoped to the rewritten-bio container. */ +.rewritten-bio > :last-child { + margin-bottom: 0; +} +.rewritten-bio p { + margin-bottom: 1.2em; +} +.rewritten-bio strong { + font-weight: 600; + color: var(--heading); +} +.rewritten-bio em { + font-style: italic; +} +.rewritten-bio a { + color: var(--link); + text-decoration: underline; +} +.rewritten-bio a:hover { + color: var(--link-hover); +} +.rewritten-bio ul, +.rewritten-bio ol { + margin-bottom: 1.2em; + padding-left: 1.5rem; +} +.rewritten-bio ul { + list-style: disc; +} +.rewritten-bio ol { + list-style: decimal; +} +.rewritten-bio li { + margin-bottom: 0.25em; +} +.rewritten-bio h1, +.rewritten-bio h2, +.rewritten-bio h3 { + margin: 1em 0 0.4em; + font-weight: 700; + line-height: 1.3; + color: var(--heading); +} +.rewritten-bio h1 { + font-size: 1.4em; +} +.rewritten-bio h2 { + font-size: 1.2em; +} +.rewritten-bio h3 { + font-size: 1.05em; +} +.rewritten-bio blockquote { + margin-bottom: 1.2em; + border-left: 2px solid #d8ccb2; + padding-left: 1rem; + font-style: italic; + color: #6b6253; +} +.rewritten-bio code { + border-radius: 4px; + background: #efe7d3; + padding: 0.1em 0.3em; + font-size: 0.9em; +} diff --git a/app/layout.tsx b/app/layout.tsx index f3c1ad0..0f46f4b 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,10 +1,68 @@ -import type { Metadata } from "next"; +import type { Metadata, Viewport } from "next"; +import { Fraunces } from "next/font/google"; +import Script from "next/script"; +import { PostHogProvider } from "@/components/posthog-provider"; +import { GA_MEASUREMENT_ID, LINKS, PROFILE } from "@/lib/bio"; import "./globals.css"; +const SITE_URL = "https://www.nickcatalano.com"; + +const display = Fraunces({ + subsets: ["latin"], + weight: ["500", "600", "700"], + variable: "--font-display", + display: "swap", +}); + +const SITE_DESCRIPTION = `${PROFILE.name} - ${PROFILE.description}`; + export const metadata: Metadata = { - title: "Nick Catalano", - description: - "Nick Catalano - Engineering Leader, Product Builder, Problem Solver", + metadataBase: new URL(SITE_URL), + title: { + default: PROFILE.name, + template: `%s · ${PROFILE.name}`, + }, + description: SITE_DESCRIPTION, + applicationName: PROFILE.name, + authors: [{ name: PROFILE.name, url: SITE_URL }], + creator: PROFILE.name, + keywords: [ + "Nick Catalano", + "engineering leader", + "CTO", + "product builder", + "software engineering", + "New York City", + ], + alternates: { canonical: "/" }, + robots: { index: true, follow: true }, + openGraph: { + type: "website", + url: SITE_URL, + siteName: PROFILE.name, + title: PROFILE.name, + description: SITE_DESCRIPTION, + locale: "en_US", + }, + twitter: { + card: "summary", + title: PROFILE.name, + description: SITE_DESCRIPTION, + }, +}; + +export const viewport: Viewport = { + themeColor: "#f6f2e9", +}; + +const personJsonLd = { + "@context": "https://schema.org", + "@type": "Person", + name: PROFILE.name, + description: PROFILE.description, + url: SITE_URL, + image: `${SITE_URL}${PROFILE.image.src}`, + sameAs: LINKS.filter((link) => link.external).map((link) => link.href), }; export default function RootLayout({ @@ -12,9 +70,40 @@ export default function RootLayout({ }: { children: React.ReactNode; }) { + // Server-only (no NEXT_PUBLIC_), so analytics only fire where the token is set. + const posthogKey = process.env.POSTHOG_TOKEN ?? ""; + return ( - - {children} + + + + + )} + ); } diff --git a/app/page.tsx b/app/page.tsx index 744ed55..8015ea2 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,8 +1,60 @@ +import Image from "next/image"; +import { BioRewriter } from "@/components/BioRewriter"; +import { BIOGRAPHY, LINKS, PROFILE } from "@/lib/bio"; + export default function Home() { return ( -
-

Nick Catalano

-

Something new is coming soon.

+
+ {PROFILE.image.alt} + +

+ {PROFILE.name} +

+ +
+ {BIOGRAPHY.map((paragraph, i) => ( +

+ {paragraph} +

+ ))} +
+ + + +
+

+ Connect +

+ +
); } diff --git a/components/BioRewriter.tsx b/components/BioRewriter.tsx new file mode 100644 index 0000000..6ecbd61 --- /dev/null +++ b/components/BioRewriter.tsx @@ -0,0 +1,182 @@ +"use client"; + +import { useId, useState } from "react"; +import dynamic from "next/dynamic"; +import { usePostHog } from "posthog-js/react/slim"; +import { generateSuggestions, rewriteBio } from "@/app/actions"; +import type { SuggestionDTO } from "@/lib/dto"; + +const Markdown = dynamic(() => import("@/components/markdown"), { ssr: false }); + +interface RewrittenResult { + title: string; + bio: string; +} + +export function BioRewriter() { + const [suggestions, setSuggestions] = useState(null); + const [loadingSuggestions, setLoadingSuggestions] = useState(false); + const [rewritingPrompt, setRewritingPrompt] = useState(null); + const [result, setResult] = useState(null); + const [error, setError] = useState(null); + + const posthog = usePostHog(); + const headingId = useId(); + const statusId = useId(); + const resultId = useId(); + + const busy = loadingSuggestions || rewritingPrompt !== null; + + async function handleGenerate() { + setLoadingSuggestions(true); + setError(null); + posthog?.capture("bio_fun_versions_requested"); + try { + const res = await generateSuggestions(posthog?.get_distinct_id?.()); + if (res.ok) { + setSuggestions(res.suggestions); + } else { + setError(res.error); + } + } catch { + setError("Something went wrong. Please try again."); + } finally { + setLoadingSuggestions(false); + } + } + + async function handlePick(suggestion: SuggestionDTO) { + setRewritingPrompt(suggestion.prompt); + setError(null); + posthog?.capture("bio_rewrite_selected", { title: suggestion.title }); + try { + const res = await rewriteBio({ + prompt: suggestion.prompt, + token: suggestion.token, + distinctId: posthog?.get_distinct_id?.(), + }); + if (res.ok) { + setResult({ title: suggestion.title, bio: res.rewrittenBio }); + } else { + setError(res.error); + } + } catch { + setError("Something went wrong. Please try again."); + } finally { + setRewritingPrompt(null); + } + } + + const statusMessage = loadingSuggestions + ? "Dreaming up some fun versions…" + : rewritingPrompt !== null + ? "Rewriting the bio…" + : ""; + + return ( +
+

+ Reimagine this biography +

+ +
+ + + Same facts, a sillier voice — the original stays put. + +
+ +

+ {statusMessage} +

+ + {error && ( +

+ {error} +

+ )} + + {suggestions && suggestions.length > 0 && ( +
+

+ Pick a vibe +

+
    + {suggestions.map((suggestion) => { + const isRewriting = rewritingPrompt === suggestion.prompt; + return ( +
  • + +
  • + ); + })} +
+
+ )} + + {result && ( +
+

+ An alternate telling · {result.title} +

+
+ {result.bio} +
+
+ )} +
+ ); +} + +function Spinner() { + return ( + + ); +} diff --git a/components/markdown.tsx b/components/markdown.tsx new file mode 100644 index 0000000..b0a0db2 --- /dev/null +++ b/components/markdown.tsx @@ -0,0 +1,9 @@ +"use client"; + +import ReactMarkdown from "react-markdown"; +import remarkGfm from "remark-gfm"; + +// Safe by default: react-markdown does not render raw HTML, so model output can't inject scripts. +export default function Markdown({ children }: { children: string }) { + return {children}; +} diff --git a/components/posthog-pageview.tsx b/components/posthog-pageview.tsx new file mode 100644 index 0000000..c8ab585 --- /dev/null +++ b/components/posthog-pageview.tsx @@ -0,0 +1,30 @@ +"use client"; + +import { Suspense, useEffect } from "react"; +import { usePathname, useSearchParams } from "next/navigation"; +import { usePostHog } from "posthog-js/react/slim"; + +// Pageviews are captured manually because auto-capture doesn't follow App Router client-side transitions. +function PageView(): null { + const pathname = usePathname(); + const searchParams = useSearchParams(); + const posthog = usePostHog(); + + useEffect(() => { + if (!pathname || !posthog) return; + let url = window.origin + pathname; + const query = searchParams.toString(); + if (query) url += `?${query}`; + posthog.capture("$pageview", { $current_url: url }); + }, [pathname, searchParams, posthog]); + + return null; +} + +export function PostHogPageView() { + return ( + + + + ); +} diff --git a/components/posthog-provider.tsx b/components/posthog-provider.tsx new file mode 100644 index 0000000..41cb2ce --- /dev/null +++ b/components/posthog-provider.tsx @@ -0,0 +1,43 @@ +"use client"; + +import { useEffect, useState } from "react"; +import type { PostHog } from "posthog-js"; +import { PostHogProvider as PHProvider } from "posthog-js/react/slim"; +import { PostHogPageView } from "@/components/posthog-pageview"; + +// The ~190KB posthog-js core is dynamically imported (kept out of the initial bundle); no key = render children only (no-op). +export function PostHogProvider({ + children, + posthogKey, +}: { + children: React.ReactNode; + posthogKey: string; +}) { + const [client, setClient] = useState(null); + + useEffect(() => { + if (!posthogKey || client) return; + let cancelled = false; + void import("posthog-js").then(({ default: posthog }) => { + if (cancelled) return; + posthog.init(posthogKey, { + api_host: "/ingest", + ui_host: "https://us.posthog.com", + capture_pageview: false, + }); + setClient(posthog); + }); + return () => { + cancelled = true; + }; + }, [posthogKey, client]); + + if (!posthogKey || !client) return <>{children}; + + return ( + + + {children} + + ); +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..f41e9d8 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,17 @@ +# Local Redis for development — backs rate limiting and the response cache. +# +# docker compose up -d +# +# Pair with USE_LOCAL_REDIS=true and REDIS_URL=redis://localhost:6379 in +# .env.local (see .env.example). +services: + redis: + image: redis:7 + ports: + - "6379:6379" + restart: unless-stopped + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 3s + retries: 5 diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..8ba7315 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,10 @@ +import next from "eslint-config-next"; + +const eslintConfig = [ + ...next, + { + ignores: [".next/**", "node_modules/**", "next-env.d.ts"], + }, +]; + +export default eslintConfig; diff --git a/jest.config.mjs b/jest.config.mjs new file mode 100644 index 0000000..d18a291 --- /dev/null +++ b/jest.config.mjs @@ -0,0 +1,11 @@ +import nextJest from "next/jest.js"; + +const createJestConfig = nextJest({ dir: "./" }); + +/** @type {import('jest').Config} */ +const config = { + testEnvironment: "node", + testMatch: ["**/*.test.ts", "**/*.test.tsx"], +}; + +export default createJestConfig(config); diff --git a/lib/bio.ts b/lib/bio.ts new file mode 100644 index 0000000..b9e458c --- /dev/null +++ b/lib/bio.ts @@ -0,0 +1,42 @@ +// Single source of truth for site content. +export const PROFILE = { + name: "Nick Catalano", + description: "Engineering Leader, Product Builder, Problem Solver", + image: { + src: "/ntr600.jpg", + alt: "Nick, Taylor, and Ruthie", + width: 600, + height: 555, + }, +} as const; + +export const BIOGRAPHY: readonly string[] = [ + "For the past 15 years, I've been building things that last: teams, systems, and products. My work has taken me from scrappy startups and national campaigns to enterprise healthcare, usually dropping me right in the middle of a big, messy, high-stakes challenge. The common thread is that I like solving hard problems with good people and leaving behind tech that still works after the spotlight moves on.", + "My projects have reached millions of people—powering voter drives, modernizing healthcare, and shipping tools that keep fast-growing companies on track. I've led global engineering teams, launched major platforms, and helped nudge organizations toward the future with AI. My title has changed over the years, from engineer to CTO, but the job has always been the same: take ambitious ideas and make them real.", + "I'm based in New York City with my wife, Taylor, and our dog, Ruthie. When I'm not consulting for nonprofits and startups, you'll probably find me at a Broadway show, wandering the Met, or trying to snag a reservation at the newest restaurant that's impossible to get into.", +]; + +export const BIOGRAPHY_TEXT = BIOGRAPHY.join("\n\n"); + +export interface SiteLink { + label: string; + href: string; + external: boolean; +} + +export const LINKS: readonly SiteLink[] = [ + { + label: "LinkedIn", + href: "https://www.linkedin.com/in/nickcatalano/", + external: true, + }, + { label: "GitHub", href: "https://github.com/nickcatal", external: true }, + { + label: "Instagram", + href: "https://www.instagram.com/nickcatal/", + external: true, + }, + { label: "Email", href: "mailto:nick@nickcatalano.com", external: false }, +]; + +export const GA_MEASUREMENT_ID = "G-Q9SXK5VP18"; diff --git a/lib/cache/index.ts b/lib/cache/index.ts new file mode 100644 index 0000000..3d6558f --- /dev/null +++ b/lib/cache/index.ts @@ -0,0 +1,35 @@ +import { getEnv } from "../env"; +import type { CacheStore } from "./types"; +import { createLocalCache } from "./local"; +import { createUpstashCache } from "./upstash"; + +export type { CacheStore } from "./types"; + +function createNoopCache(): CacheStore { + return { + async get() { + return null; + }, + async set() {}, + }; +} + +let store: CacheStore | null = null; + +export function getCache(): CacheStore { + if (store) return store; + + const { redis } = getEnv(); + switch (redis.kind) { + case "local": + store = createLocalCache(redis.url); + break; + case "upstash": + store = createUpstashCache(redis.url, redis.token); + break; + case "none": + store = createNoopCache(); + break; + } + return store; +} diff --git a/lib/cache/local.ts b/lib/cache/local.ts new file mode 100644 index 0000000..47f2d09 --- /dev/null +++ b/lib/cache/local.ts @@ -0,0 +1,37 @@ +import Redis from "ioredis"; +import type { CacheStore } from "./types"; + +export function createLocalCache(url: string): CacheStore { + const redis = new Redis(url, { + maxRetriesPerRequest: 1, + lazyConnect: true, + enableOfflineQueue: false, + }); + + let warned = false; + redis.on("error", (err: unknown) => { + if (!warned) { + warned = true; + console.warn( + `WARNING: cache Redis error (caching disabled until it recovers): ${ + (err as Error).message + }`, + ); + } + }); + + return { + async get(key) { + try { + return await redis.get(key); + } catch { + return null; + } + }, + async set(key, value, ttlSeconds) { + try { + await redis.set(key, value, "EX", ttlSeconds); + } catch {} + }, + }; +} diff --git a/lib/cache/types.ts b/lib/cache/types.ts new file mode 100644 index 0000000..a73bccb --- /dev/null +++ b/lib/cache/types.ts @@ -0,0 +1,5 @@ +// Fails open: on any backend error, get() returns null (a miss) and set() is a no-op. +export interface CacheStore { + get(key: string): Promise; + set(key: string, value: string, ttlSeconds: number): Promise; +} diff --git a/lib/cache/upstash.ts b/lib/cache/upstash.ts new file mode 100644 index 0000000..a6d1793 --- /dev/null +++ b/lib/cache/upstash.ts @@ -0,0 +1,27 @@ +import { Redis } from "@upstash/redis"; +import type { CacheStore } from "./types"; + +export function createUpstashCache(url: string, token: string): CacheStore { + const redis = new Redis({ url, token }); + + return { + async get(key) { + try { + const value = await redis.get(key); + return value ?? null; + } catch (err) { + console.warn( + `WARNING: cache read failed (treating as miss): ${ + (err as Error).message + }`, + ); + return null; + } + }, + async set(key, value, ttlSeconds) { + try { + await redis.set(key, value, { ex: ttlSeconds }); + } catch {} + }, + }; +} diff --git a/lib/dto.ts b/lib/dto.ts new file mode 100644 index 0000000..6128a7e --- /dev/null +++ b/lib/dto.ts @@ -0,0 +1,13 @@ +export interface SuggestionDTO { + title: string; + prompt: string; + token: string; +} + +export type GenerateSuggestionsResult = + | { ok: true; suggestions: SuggestionDTO[] } + | { ok: false; error: string }; + +export type RewriteResult = + | { ok: true; rewrittenBio: string } + | { ok: false; error: string }; diff --git a/lib/env.ts b/lib/env.ts new file mode 100644 index 0000000..c154449 --- /dev/null +++ b/lib/env.ts @@ -0,0 +1,106 @@ +// Lenient in dev (fallback signing secret, optional Redis); strict in prod (fails fast on missing config). +import { z } from "zod"; + +const DEV_FALLBACK_SIGNING_SECRET = + "dev-only-insecure-bio-signing-secret-change-me"; + +const rawSchema = z.object({ + NODE_ENV: z.string().optional(), + OPENAI_API_KEY: z.string().optional(), + BIO_SIGNING_SECRET: z.string().optional(), + USE_LOCAL_REDIS: z.string().optional(), + REDIS_URL: z.string().optional(), + KV_REST_API_URL: z.string().optional(), + KV_REST_API_TOKEN: z.string().optional(), +}); + +export type RedisConfig = + | { kind: "local"; url: string } + | { kind: "upstash"; url: string; token: string } + | { kind: "none" }; + +export interface AppEnv { + isProduction: boolean; + openaiApiKey: string; + signingSecret: string; + redis: RedisConfig; +} + +let cached: AppEnv | null = null; + +function truthy(value: string | undefined): boolean { + return value === "true" || value === "1"; +} + +function resolveRedis( + env: z.infer, + isProduction: boolean, + errors: string[], +): RedisConfig { + if (truthy(env.USE_LOCAL_REDIS)) { + return { kind: "local", url: env.REDIS_URL || "redis://localhost:6379" }; + } + if (env.KV_REST_API_URL && env.KV_REST_API_TOKEN) { + return { + kind: "upstash", + url: env.KV_REST_API_URL, + token: env.KV_REST_API_TOKEN, + }; + } + if (isProduction) { + errors.push( + "Redis is not configured. Set KV_REST_API_URL and KV_REST_API_TOKEN " + + "(or USE_LOCAL_REDIS=true with REDIS_URL).", + ); + } + return { kind: "none" }; +} + +export function getEnv(): AppEnv { + if (cached) return cached; + + const parsed = rawSchema.safeParse(process.env); + if (!parsed.success) { + throw new Error(`Invalid environment: ${parsed.error.message}`); + } + const env = parsed.data; + const isProduction = env.NODE_ENV === "production"; + const errors: string[] = []; + + const openaiApiKey = env.OPENAI_API_KEY ?? ""; + if (!openaiApiKey && isProduction) { + errors.push("OPENAI_API_KEY is required."); + } + + let signingSecret = env.BIO_SIGNING_SECRET ?? ""; + if (!signingSecret) { + if (isProduction) { + errors.push("BIO_SIGNING_SECRET is required."); + } else { + signingSecret = DEV_FALLBACK_SIGNING_SECRET; + if (env.NODE_ENV !== "test") { + console.warn( + "WARNING: BIO_SIGNING_SECRET is not set. Using an insecure " + + "development fallback. Do not use this in production.", + ); + } + } + } + + const redis = resolveRedis(env, isProduction, errors); + + if (errors.length > 0) { + throw new Error( + `Invalid production environment configuration:\n - ${errors.join( + "\n - ", + )}`, + ); + } + + cached = { isProduction, openaiApiKey, signingSecret, redis }; + return cached; +} + +export function __resetEnvForTests(): void { + cached = null; +} diff --git a/lib/openai.ts b/lib/openai.ts new file mode 100644 index 0000000..95e32a2 --- /dev/null +++ b/lib/openai.ts @@ -0,0 +1,247 @@ +import OpenAI from "openai"; +import { zodTextFormat } from "openai/helpers/zod"; +import { getEnv } from "./env"; +import { captureAiGeneration } from "./posthog"; +import { + RewriteResponseSchema, + SuggestionResponseSchema, + type Suggestion, +} from "./schemas"; + +export interface AiCallContext { + distinctId: string; + traceId: string; +} + +function reportGeneration(params: { + ctx: AiCallContext; + modelId: string; + input: unknown; + outputContent: string; + usage?: { input_tokens?: number; output_tokens?: number } | null; + startedAt: number; + feature: string; + isError?: boolean; +}): void { + captureAiGeneration({ + distinctId: params.ctx.distinctId, + traceId: params.ctx.traceId, + model: params.modelId, + input: params.input, + outputChoices: [{ role: "assistant", content: params.outputContent }], + inputTokens: params.usage?.input_tokens, + outputTokens: params.usage?.output_tokens, + latencySeconds: (Date.now() - params.startedAt) / 1000, + feature: params.feature, + isError: params.isError, + }); +} + +let client: OpenAI | null = null; + +function getClient(): OpenAI { + if (!client) { + client = new OpenAI({ apiKey: getEnv().openaiApiKey }); + } + return client; +} + +function model(): string { + return process.env.OPENAI_MODEL?.trim() || "gpt-5-nano"; +} + +// Creative tasks, not reasoning problems — pin "minimal" effort to avoid ~12s think time. +const REASONING_EFFORT = "minimal" as const; + +const SUGGESTIONS_MAX_TOKENS = 1500; +const REWRITE_MAX_TOKENS = 2000; + +const SUGGESTION_SYSTEM_PROMPT = `You are generating funny biography rewrite concepts for a personal portfolio website. + +Generate exactly five concepts. + +Each concept should contain: + +title: A short, clickable label. +prompt: An instruction describing how the biography should be rewritten. + +Requirements: +- funny +- whimsical +- surprising +- creative +- family friendly +- non-offensive +- highly clickable + +Avoid: +- politics +- religion +- sexual content +- celebrities +- copyrighted characters +- current events +- offensive stereotypes + +Examples: +title: Fantasy Wizard CTO +prompt: Rewrite this biography as a fantasy wizard describing their career achievements. + +title: Suspicious Pigeon Expert +prompt: Rewrite this biography as someone who has devoted their life to investigating pigeons. + +Return exactly five unique concepts. Make them fresh and varied — surprise me with new ideas each time.`; + +const REWRITE_SYSTEM_PROMPT = `You are a wildly inventive writer reimagining a professional biography as a short, playful piece of character writing. + +Go big. You have full creative license over voice, tone, structure, format, vocabulary, metaphor, pacing, and imagery — transform the biography as dramatically as the requested concept demands. Reinvent it from the ground up, rearrange it, and lean all the way into the bit. A light "now in a funny accent" rewrite is a failure; the result should feel boldly, delightfully different from the original. + +The one hard rule: keep the real biographical thread alive and recognizable underneath the costume. The major beats of the original — the arc of the career, the kinds of work and the places, the through-line from one role to the next, and the personal details (relationships, pets, city, interests) — must still be discernible, just translated into the new persona. Take each real beat and exaggerate, embellish, and re-costume it freely. + +Do NOT quietly drop the real beats, and do NOT swap in a different person's life or invent contradictory hard facts (fake famous employers, real-sounding awards, a different city or family) presented as literally true. Dressing up the real facts in the persona's language is encouraged; replacing them is not. + +Keep it tasteful and family-friendly. Punchy is good — roughly the length of the original or a touch shorter. + +Return only the rewritten biography.`; + +export async function generateSuggestions( + ctx: AiCallContext, +): Promise { + const modelId = model(); + const input = [ + { role: "system" as const, content: SUGGESTION_SYSTEM_PROMPT }, + { + role: "user" as const, + content: + "Generate five fresh, original concepts now. Make them different from the examples and from each other.", + }, + ]; + const startedAt = Date.now(); + + let response; + try { + response = await getClient().responses.parse({ + model: modelId, + input, + reasoning: { effort: REASONING_EFFORT }, + max_output_tokens: SUGGESTIONS_MAX_TOKENS, + text: { format: zodTextFormat(SuggestionResponseSchema, "suggestions") }, + }); + } catch (err) { + reportGeneration({ + ctx, + modelId, + input, + outputContent: (err as Error).message, + startedAt, + feature: "bio-suggestions", + isError: true, + }); + throw err; + } + + const parsed = response.output_parsed; + if (!parsed) { + reportGeneration({ + ctx, + modelId, + input, + outputContent: "", + usage: response.usage, + startedAt, + feature: "bio-suggestions", + isError: true, + }); + throw new Error("Suggestion generation returned no structured output."); + } + + // Schema doesn't constrain array length, so cap to five in code. + const suggestions = parsed.suggestions.slice(0, 5); + if (suggestions.length === 0) { + reportGeneration({ + ctx, + modelId, + input, + outputContent: "", + usage: response.usage, + startedAt, + feature: "bio-suggestions", + isError: true, + }); + throw new Error("Suggestion generation returned no suggestions."); + } + reportGeneration({ + ctx, + modelId, + input, + outputContent: JSON.stringify(suggestions), + usage: response.usage, + startedAt, + feature: "bio-suggestions", + }); + return suggestions; +} + +export async function rewriteBio( + verifiedPrompt: string, + biography: string, + ctx: AiCallContext, +): Promise { + const modelId = model(); + const input = [ + { role: "system" as const, content: REWRITE_SYSTEM_PROMPT }, + { + role: "user" as const, + content: `Transformation:\n\n${verifiedPrompt}\n\nBiography:\n\n${biography}`, + }, + ]; + const startedAt = Date.now(); + + let response; + try { + response = await getClient().responses.parse({ + model: modelId, + input, + reasoning: { effort: REASONING_EFFORT }, + max_output_tokens: REWRITE_MAX_TOKENS, + text: { format: zodTextFormat(RewriteResponseSchema, "rewrite") }, + }); + } catch (err) { + reportGeneration({ + ctx, + modelId, + input, + outputContent: (err as Error).message, + startedAt, + feature: "bio-rewrite", + isError: true, + }); + throw err; + } + + const parsed = response.output_parsed; + if (!parsed) { + reportGeneration({ + ctx, + modelId, + input, + outputContent: "", + usage: response.usage, + startedAt, + feature: "bio-rewrite", + isError: true, + }); + throw new Error("Rewrite generation returned no structured output."); + } + + reportGeneration({ + ctx, + modelId, + input, + outputContent: parsed.rewrittenBio, + usage: response.usage, + startedAt, + feature: "bio-rewrite", + }); + return parsed.rewrittenBio; +} diff --git a/lib/posthog.ts b/lib/posthog.ts new file mode 100644 index 0000000..75e9d1c --- /dev/null +++ b/lib/posthog.ts @@ -0,0 +1,64 @@ +import { PostHog } from "posthog-node"; + +let client: PostHog | null = null; +let resolved = false; + +export function getPostHogServer(): PostHog | null { + if (resolved) return client; + resolved = true; + + const key = process.env.POSTHOG_TOKEN; + if (!key) return null; + + client = new PostHog(key, { + host: process.env.POSTHOG_HOST || "https://us.i.posthog.com", + flushAt: 1, + flushInterval: 0, + }); + return client; +} + +export interface AiGenerationEvent { + distinctId: string; + traceId: string; + model: string; + input: unknown; + outputChoices: unknown; + inputTokens?: number; + outputTokens?: number; + latencySeconds: number; + feature: string; + isError?: boolean; + httpStatus?: number; +} + +export function captureAiGeneration(event: AiGenerationEvent): void { + const posthog = getPostHogServer(); + if (!posthog) return; + + try { + posthog.capture({ + distinctId: event.distinctId, + event: "$ai_generation", + properties: { + $ai_trace_id: event.traceId, + $ai_model: event.model, + $ai_provider: "openai", + $ai_input: event.input, + $ai_output_choices: event.outputChoices, + $ai_input_tokens: event.inputTokens ?? 0, + $ai_output_tokens: event.outputTokens ?? 0, + $ai_latency: event.latencySeconds, + // Derive from isError so failures don't falsely report a 200. + $ai_http_status: event.httpStatus ?? (event.isError ? 500 : 200), + $ai_base_url: "https://api.openai.com/v1", + $ai_is_error: event.isError ?? false, + feature: event.feature, + }, + }); + } catch (err) { + console.warn( + `PostHog $ai_generation capture failed: ${(err as Error).message}`, + ); + } +} diff --git a/lib/rate-limit/index.ts b/lib/rate-limit/index.ts new file mode 100644 index 0000000..6a856d7 --- /dev/null +++ b/lib/rate-limit/index.ts @@ -0,0 +1,62 @@ +// Failure policy: fails CLOSED in production (deny on backend error); degrades to allow-with-warning in development. +import { getEnv } from "../env"; +import type { RawRateLimiter, RateLimitParams } from "./types"; +import { createLocalRateLimiter } from "./local"; +import { createUpstashRateLimiter } from "./upstash"; + +export type { RateLimitParams } from "./types"; + +export interface RateLimitOutcome { + allowed: boolean; + /** Set when `allowed` is false. */ + reason?: "rate_limited" | "unavailable"; +} + +let limiter: RawRateLimiter | null = null; +let resolved = false; +let warnedDisabled = false; + +function getLimiter(): RawRateLimiter | null { + if (resolved) return limiter; + resolved = true; + + const { redis } = getEnv(); + if (redis.kind === "local") { + limiter = createLocalRateLimiter(redis.url); + } else if (redis.kind === "upstash") { + limiter = createUpstashRateLimiter(redis.url, redis.token); + } else { + limiter = null; + } + return limiter; +} + +function warnDisabledOnce(): void { + if (!warnedDisabled) { + warnedDisabled = true; + console.warn("WARNING: Redis unavailable. Rate limiting disabled."); + } +} + +export async function enforceRateLimit( + params: RateLimitParams, +): Promise { + const active = getLimiter(); + + if (!active) { + warnDisabledOnce(); + return { allowed: true }; + } + + try { + const { success } = await active.check(params); + return success ? { allowed: true } : { allowed: false, reason: "rate_limited" }; + } catch (err) { + if (getEnv().isProduction) { + console.error("Rate limiter error (failing closed):", err); + return { allowed: false, reason: "unavailable" }; + } + warnDisabledOnce(); + return { allowed: true }; + } +} diff --git a/lib/rate-limit/local.ts b/lib/rate-limit/local.ts new file mode 100644 index 0000000..4cb5c85 --- /dev/null +++ b/lib/rate-limit/local.ts @@ -0,0 +1,25 @@ +import Redis from "ioredis"; +import type { RawRateLimiter } from "./types"; + +export function createLocalRateLimiter(url: string): RawRateLimiter { + const redis = new Redis(url, { + maxRetriesPerRequest: 1, + lazyConnect: true, + enableOfflineQueue: false, + }); + // Prevent unhandled 'error' events from crashing the process; the thrown + // error from a command is what drives the failure policy. + redis.on("error", () => {}); + + return { + async check({ namespace, identifier, limit, windowSeconds }) { + const bucket = Math.floor(Date.now() / (windowSeconds * 1000)); + const key = `rl:${namespace}:${identifier}:${bucket}`; + const count = await redis.incr(key); + if (count === 1) { + await redis.expire(key, windowSeconds); + } + return { success: count <= limit }; + }, + }; +} diff --git a/lib/rate-limit/types.ts b/lib/rate-limit/types.ts new file mode 100644 index 0000000..f363379 --- /dev/null +++ b/lib/rate-limit/types.ts @@ -0,0 +1,10 @@ +export interface RateLimitParams { + namespace: string; + identifier: string; + limit: number; + windowSeconds: number; +} + +export interface RawRateLimiter { + check(params: RateLimitParams): Promise<{ success: boolean }>; +} diff --git a/lib/rate-limit/upstash.ts b/lib/rate-limit/upstash.ts new file mode 100644 index 0000000..f569982 --- /dev/null +++ b/lib/rate-limit/upstash.ts @@ -0,0 +1,36 @@ +import { Ratelimit } from "@upstash/ratelimit"; +import { Redis } from "@upstash/redis"; +import type { RawRateLimiter, RateLimitParams } from "./types"; + +export function createUpstashRateLimiter( + url: string, + token: string, +): RawRateLimiter { + const redis = new Redis({ url, token }); + const limiters = new Map(); + + function limiterFor(params: RateLimitParams): Ratelimit { + const cacheKey = `${params.namespace}:${params.limit}:${params.windowSeconds}`; + let limiter = limiters.get(cacheKey); + if (!limiter) { + limiter = new Ratelimit({ + redis, + prefix: `rl:${params.namespace}`, + // fixedWindow expects a `${number} s` literal, not plain `string`. + limiter: Ratelimit.fixedWindow( + params.limit, + `${params.windowSeconds} s` as `${number} s`, + ), + }); + limiters.set(cacheKey, limiter); + } + return limiter; + } + + return { + async check(params) { + const { success } = await limiterFor(params).limit(params.identifier); + return { success }; + }, + }; +} diff --git a/lib/schemas.ts b/lib/schemas.ts new file mode 100644 index 0000000..b88f373 --- /dev/null +++ b/lib/schemas.ts @@ -0,0 +1,26 @@ +import { z } from "zod"; + +export const SuggestionResponseSchema = z.object({ + suggestions: z.array( + z.object({ + title: z.string(), + prompt: z.string(), + }), + ), +}); +type SuggestionResponse = z.infer; +export type Suggestion = SuggestionResponse["suggestions"][number]; + +export const RewriteResponseSchema = z.object({ + rewrittenBio: z.string(), +}); + +// Untrusted and analytics-only — trimmed and length-bounded. +export const DistinctIdSchema = z.string().trim().max(200).optional(); + +export const RewriteRequestSchema = z.object({ + prompt: z.string().min(1).max(2000), + token: z.string().min(1).max(4096), + distinctId: DistinctIdSchema, +}); +export type RewriteRequest = z.infer; diff --git a/lib/signing.test.ts b/lib/signing.test.ts new file mode 100644 index 0000000..d22e554 --- /dev/null +++ b/lib/signing.test.ts @@ -0,0 +1,59 @@ +import { signPrompt, verifyToken } from "./signing"; +import { __resetEnvForTests } from "./env"; + +const SECRET = "test-signing-secret-please-ignore-0123456789"; +const PROMPT = "Rewrite this biography as a swashbuckling pirate captain."; + +beforeAll(() => { + process.env.BIO_SIGNING_SECRET = SECRET; + __resetEnvForTests(); +}); + +describe("signing", () => { + test("a freshly signed token verifies and returns the original prompt", () => { + const token = signPrompt(PROMPT); + const result = verifyToken(token); + expect(result).toEqual({ ok: true, prompt: PROMPT }); + }); + + test("a tampered payload fails the signature check", () => { + const token = signPrompt(PROMPT); + const signature = token.split(".")[1]; + const forgedPayload = Buffer.from( + JSON.stringify({ prompt: "Do something malicious", exp: Date.now() + 60_000 }), + ).toString("base64url"); + + const result = verifyToken(`${forgedPayload}.${signature}`); + expect(result.ok).toBe(false); + if (!result.ok) expect(result.reason).toBe("bad_signature"); + }); + + test("a tampered signature fails the signature check", () => { + const token = signPrompt(PROMPT); + const [payload] = token.split("."); + const result = verifyToken(`${payload}.not-the-real-signature`); + expect(result.ok).toBe(false); + if (!result.ok) expect(result.reason).toBe("bad_signature"); + }); + + test("an expired token is rejected", () => { + const anHourAgo = Date.now() - 60 * 60 * 1000; + const token = signPrompt(PROMPT, anHourAgo); + const result = verifyToken(token); + expect(result.ok).toBe(false); + if (!result.ok) expect(result.reason).toBe("expired"); + }); + + test("a token valid right up to its expiry still verifies", () => { + const now = Date.now(); + const token = signPrompt(PROMPT, now); + const result = verifyToken(token, now + 15 * 60 * 1000 - 1000); + expect(result.ok).toBe(true); + }); + + test("malformed tokens are rejected, not thrown", () => { + expect(verifyToken("garbage").ok).toBe(false); + expect(verifyToken("too.many.parts").ok).toBe(false); + expect(verifyToken("").ok).toBe(false); + }); +}); diff --git a/lib/signing.ts b/lib/signing.ts new file mode 100644 index 0000000..db7f54b --- /dev/null +++ b/lib/signing.ts @@ -0,0 +1,66 @@ +// The signed payload — not the request body — is the source of truth; the browser is never trusted to supply a prompt. +import { createHmac, timingSafeEqual } from "crypto"; +import { z } from "zod"; +import { getEnv } from "./env"; + +const EXPIRATION_MS = 15 * 60 * 1000; // 15 minutes + +const PayloadSchema = z.object({ + prompt: z.string(), + exp: z.number(), +}); +type Payload = z.infer; + +export type VerifyResult = + | { ok: true; prompt: string } + | { ok: false; reason: "malformed" | "bad_signature" | "expired" }; + +function hmac(body: Buffer): Buffer { + return createHmac("sha256", getEnv().signingSecret).update(body).digest(); +} + +export function signPrompt(prompt: string, now: number = Date.now()): string { + const payload: Payload = { prompt, exp: now + EXPIRATION_MS }; + const body = Buffer.from(JSON.stringify(payload), "utf8"); + const signature = hmac(body); + return `${body.toString("base64url")}.${signature.toString("base64url")}`; +} + +export function verifyToken(token: string, now: number = Date.now()): VerifyResult { + if (typeof token !== "string") return { ok: false, reason: "malformed" }; + + const parts = token.split("."); + if (parts.length !== 2) return { ok: false, reason: "malformed" }; + + const [bodyPart, signaturePart] = parts; + let body: Buffer; + let provided: Buffer; + try { + body = Buffer.from(bodyPart, "base64url"); + provided = Buffer.from(signaturePart, "base64url"); + } catch { + return { ok: false, reason: "malformed" }; + } + + const expected = hmac(body); + // Compare lengths first; timingSafeEqual throws on length mismatch. + if ( + provided.length !== expected.length || + !timingSafeEqual(provided, expected) + ) { + return { ok: false, reason: "bad_signature" }; + } + + let json: unknown; + try { + json = JSON.parse(body.toString("utf8")); + } catch { + return { ok: false, reason: "malformed" }; + } + const payload = PayloadSchema.safeParse(json); + if (!payload.success) return { ok: false, reason: "malformed" }; + + if (now > payload.data.exp) return { ok: false, reason: "expired" }; + + return { ok: true, prompt: payload.data.prompt }; +} diff --git a/next.config.ts b/next.config.ts index cb651cd..4d8149a 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,5 +1,24 @@ import type { NextConfig } from "next"; -const nextConfig: NextConfig = {}; +const nextConfig: NextConfig = { + // posthog-node is Node-only; exclude it from the bundle so Node's resolver loads it directly. + serverExternalPackages: ["posthog-node"], + + // First-party reverse proxy so ad/tracking blockers don't block PostHog analytics. + async rewrites() { + return [ + { + source: "/ingest/static/:path*", + destination: "https://us-assets.i.posthog.com/static/:path*", + }, + { + source: "/ingest/:path*", + destination: "https://us.i.posthog.com/:path*", + }, + ]; + }, + + skipTrailingSlashRedirect: true, +}; export default nextConfig; diff --git a/package-lock.json b/package-lock.json index fa19f33..cf9186f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,15 +8,28 @@ "name": "nickcatalano", "version": "0.1.0", "dependencies": { - "next": "^15.1.0", + "@upstash/ratelimit": "^2.0.5", + "@upstash/redis": "^1.34.3", + "ioredis": "^5.4.2", + "next": "^16.2.6", + "openai": "^6.39.1", + "posthog-js": "^1.372.10", + "posthog-node": "^5.0.0", "react": "^19.0.0", - "react-dom": "^19.0.0" + "react-dom": "^19.0.0", + "react-markdown": "^9.1.0", + "remark-gfm": "^4.0.1", + "zod": "^3.23.8" }, "devDependencies": { "@tailwindcss/postcss": "^4", + "@types/jest": "^29.5.14", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "^16.2.6", + "jest": "^29.7.0", "tailwindcss": "^4", "typescript": "^5" } @@ -34,233 +47,982 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@emnapi/runtime": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", - "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "tslib": "^2.4.0" + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@img/colour": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", - "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, "license": "MIT", - "optional": true, "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", - "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=6.9.0" }, "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.2.4" + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", - "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", + "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.2.4" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", - "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", - "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", - "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", - "cpu": [ - "arm" - ], - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", - "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", - "cpu": [ - "arm64" - ], - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", - "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", - "cpu": [ - "ppc64" - ], - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@img/sharp-libvips-linux-riscv64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", - "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", - "cpu": [ - "riscv64" - ], - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", - "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", - "cpu": [ - "s390x" - ], - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", - "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", - "cpu": [ - "x64" - ], - "libc": [ - "glibc" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", - "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", - "cpu": [ - "arm64" - ], - "libc": [ - "musl" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz", + "integrity": "sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz", + "integrity": "sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz", + "integrity": "sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", + "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/types": "^0.15.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { @@ -270,208 +1032,9256 @@ "cpu": [ "x64" ], - "libc": [ - "musl" + "libc": [ + "musl" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@ioredis/commands": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.10.0.tgz", + "integrity": "sha512-UmeW7z4LfctwoQ5wkhVzgq8tXkreED2xZGpX+Bg+zA+WJFZCT6c062AfCK/Dfk81xZnnwdhJCUMkitihRaoC2Q==", + "license": "MIT" + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", + "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", + "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@next/env": { + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.6.tgz", + "integrity": "sha512-gd8HoHN4ufj73WmR3JmVolrpJR47ILK6LouP5xElPglaVxir6e1a7VzvTvDWkOoPXT9rkkTzyCxBu4yeZfZwcw==", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.2.6.tgz", + "integrity": "sha512-Z8l6o4JWKUl755x4R+wogD86KPeU+Ckw4K+SYG4kHeOJtRenDeK+OSbGcqZpDtbwn9DsJVdir2UxmwXuinUbUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "3.3.1" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.6.tgz", + "integrity": "sha512-ZJGkkcNfYgrrMkqOdZ7zoLa1TOy0qpcMfk/z4Mh/FKUz40gVO+HNQWqmLxf67Z5WB64DRp0dhEbyHfel+6sJUg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.6.tgz", + "integrity": "sha512-v/YLBHIY132Ced3puBJ7YJKw1lqsCrgcNo2aRJlCEyQrrCeRJlvGlnmxhPxNQI3KE3N1DN5r9TPNPvka3nq5RQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.6.tgz", + "integrity": "sha512-RPOvqlYBbcQjkz9VQQDZ2T2bARIjXZV1KFlt+V2Mr6SW/e4I9fcKsaA0hdyf2FHoTlsV2xnBd5Y912rP/1Ce6w==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.6.tgz", + "integrity": "sha512-URUTu1+dMkxJsPFgm+OeEvq9wf5sujw0EvgYy80TDGHTSLTnIHeqb0Eu8A3sC95IRgjejQL+kC4mw+4yPxiAXA==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.6.tgz", + "integrity": "sha512-DOj182mPV8G3UkrayLoREM5YEYI+Dk5wv7Ox9xl1fFibAELEsFD0lDPfHIeILlutMMfdyhlzYPELG3peuKaurw==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.6.tgz", + "integrity": "sha512-HKQ5SP/V/ub73UvF7n/zeJlxk2kLmtL7Wzrg4WfmkjmNos5onJ2tKu7yZOPdL18A6Svfn3max29ym+ry7NkK4g==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.6.tgz", + "integrity": "sha512-LZXpTlPyS5v7HhSmnvsLGP3iIYgYOBnc8r8ArlT55sGHV89bR2HlDdBjWQ+PY6SJMmk8TuVGFuxalnP3k/0Dwg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.6.tgz", + "integrity": "sha512-F0+4i0h9J6C4eE3EAPWsoCk7UW/dbzOjyzxY0qnDUOYFu6FFmdZ6l97/XdV3/Nz3VYyO7UWjyEJUXkGqcoXfMA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz", + "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-logs": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.208.0.tgz", + "integrity": "sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", + "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.208.0.tgz", + "integrity": "sha512-jOv40Bs9jy9bZVLo/i8FwUiuCvbjWDI+ZW13wimJm4LjnlwJxGgB+N/VWOZUTpM+ah/awXeQqKdNlpLf2EjvYg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.208.0", + "@opentelemetry/core": "2.2.0", + "@opentelemetry/otlp-exporter-base": "0.208.0", + "@opentelemetry/otlp-transformer": "0.208.0", + "@opentelemetry/sdk-logs": "0.208.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.208.0.tgz", + "integrity": "sha512-gMd39gIfVb2OgxldxUtOwGJYSH8P1kVFFlJLuut32L6KgUC4gl1dMhn+YC2mGn0bDOiQYSk/uHOdSjuKp58vvA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/otlp-transformer": "0.208.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.208.0.tgz", + "integrity": "sha512-DCFPY8C6lAQHUNkzcNT9R+qYExvsk6C5Bto2pbNxgicpcSWbe2WHShLxkOxIdNcBiYPdVHv/e7vH7K6TI+C+fQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.208.0", + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0", + "@opentelemetry/sdk-logs": "0.208.0", + "@opentelemetry/sdk-metrics": "2.2.0", + "@opentelemetry/sdk-trace-base": "2.2.0", + "protobufjs": "^7.3.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.7.1.tgz", + "integrity": "sha512-DeT6KKolmC4e/dRQvMQ/RwlnzhaqeiFOXY5ngoOPJ07GgVVKxZOg9EcrNZb5aTzUn+iCrJldAgOfQm1O/QfPAQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.7.1", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.7.1.tgz", + "integrity": "sha512-QAqIj32AtK6+pEVNG7EOVxHdE06RP+FM5qpiEJ4RtDcFIqKUZHYhl7/7UY5efhwmwNAg7j8QbJVBLxMerc0+gw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.208.0.tgz", + "integrity": "sha512-QlAyL1jRpOeaqx7/leG1vJMp84g0xKP6gJmfELBpnI4O/9xPX+Hu5m1POk9Kl+veNkyth5t19hRlN6tNY1sjbA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.208.0", + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-metrics": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.2.0.tgz", + "integrity": "sha512-G5KYP6+VJMZzpGipQw7Giif48h6SGQ2PFKEYCybeXJsOCB4fp8azqMAAzE5lnnHK3ZVwYQrgmFbsUJO/zOnwGw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.9.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz", + "integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.41.1.tgz", + "integrity": "sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@posthog/core": { + "version": "1.29.13", + "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.29.13.tgz", + "integrity": "sha512-7Me5zaeAue/wmA364Go8ChYbsVAfNAHbtDxXopWu3D6hq9PVScUcauRgjD1njgvP8NzN91SrIllE+pri3XvJVw==", + "license": "MIT", + "dependencies": { + "@posthog/types": "1.376.4" + } + }, + "node_modules/@posthog/types": { + "version": "1.376.4", + "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.376.4.tgz", + "integrity": "sha512-EoDEvA925lf6yxPpbP4wozlXgu4b9WEqxZlFBUDd4k2akP5R/RWyHpvQT8aYyfY6BtSLn8TnVwxPQOM4b90isA==", + "license": "MIT" + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", + "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", + "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz", + "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.2.tgz", + "integrity": "sha512-pa0vFRuws4wkvaXKK1uXZMAwAX4/t8ANaJo45iw/oQHNQ9q5xUzwgFmVJGXiga2BeN+zpX7Vf9vmsiIa2J+MUw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.1.tgz", + "integrity": "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==", + "license": "BSD-3-Clause" + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.0.tgz", + "integrity": "sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.21.0", + "jiti": "^2.6.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.3.0" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.0.tgz", + "integrity": "sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.3.0", + "@tailwindcss/oxide-darwin-arm64": "4.3.0", + "@tailwindcss/oxide-darwin-x64": "4.3.0", + "@tailwindcss/oxide-freebsd-x64": "4.3.0", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.0", + "@tailwindcss/oxide-linux-arm64-gnu": "4.3.0", + "@tailwindcss/oxide-linux-arm64-musl": "4.3.0", + "@tailwindcss/oxide-linux-x64-gnu": "4.3.0", + "@tailwindcss/oxide-linux-x64-musl": "4.3.0", + "@tailwindcss/oxide-wasm32-wasi": "4.3.0", + "@tailwindcss/oxide-win32-arm64-msvc": "4.3.0", + "@tailwindcss/oxide-win32-x64-msvc": "4.3.0" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.0.tgz", + "integrity": "sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.0.tgz", + "integrity": "sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.0.tgz", + "integrity": "sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.0.tgz", + "integrity": "sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.0.tgz", + "integrity": "sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.0.tgz", + "integrity": "sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.0.tgz", + "integrity": "sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.0.tgz", + "integrity": "sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.0.tgz", + "integrity": "sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.0.tgz", + "integrity": "sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.10.0", + "@emnapi/runtime": "^1.10.0", + "@emnapi/wasi-threads": "^1.2.1", + "@napi-rs/wasm-runtime": "^1.1.4", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.0.tgz", + "integrity": "sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.0.tgz", + "integrity": "sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.3.0.tgz", + "integrity": "sha512-Jm05Tjx+9yCLGv5qw1c+84Psds8MnyrEQYCB+FFk2lgGiUjlRqdxke4mVTuYrj2xnVZqKim2Apr5ySuQRYAw/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.3.0", + "@tailwindcss/oxide": "4.3.0", + "postcss": "^8.5.10", + "tailwindcss": "4.3.0" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", + "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/debug": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.19.41", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.41.tgz", + "integrity": "sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.15", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.15.tgz", + "integrity": "sha512-eRwcGNHve+E8qtEQSSRl6urh+rFop4v8gm6O8rGv25CodbvFdLjA1vVQ1KkiFE0w0UPOnb8tDiFKL5lp0rtY5Q==", + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.60.0.tgz", + "integrity": "sha512-QYb/sa74/s7OKMbACMjrYnGspj9Hs5YI5aaffSL65UfeBUzVzBJfVo3oWSpbzPurvm7yaCCo2Lk7lVj610HqKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.60.0", + "@typescript-eslint/type-utils": "8.60.0", + "@typescript-eslint/utils": "8.60.0", + "@typescript-eslint/visitor-keys": "8.60.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.60.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.60.0.tgz", + "integrity": "sha512-fcqpj/MyK4sxDPcbe7STNPbpQL4RLZOPWuaTmwZYuc+hJKzRf58yRxfhqGpc6PIq9ZyfSBpfHgmUHmHs0KwHwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.60.0", + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/typescript-estree": "8.60.0", + "@typescript-eslint/visitor-keys": "8.60.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.60.0.tgz", + "integrity": "sha512-aZu74NNKJeUWqCjDddzdiKaS82dgYgV/vmf+Ui3ZdZejmgfXR/q+pRumgobnQ2cCJTgGTWp4ypiwsuofFubavg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.60.0", + "@typescript-eslint/types": "^8.60.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.60.0.tgz", + "integrity": "sha512-pFzqhllJMs+jghLQWzV00ds39xLzuyqPSev5pd8f4Ir0rtKR3ZLUB4/4dhjOFighWb9larvtfJvqL+4yKDI3Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/visitor-keys": "8.60.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.60.0.tgz", + "integrity": "sha512-BZPR3RGYlAXnly6ymAxfkVn5rCbZzQNou0rxv3GfWZ8cTQp+hhVd73khbGLAd8k1TlAPLISH337M+tAgAnaJDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.60.0.tgz", + "integrity": "sha512-SX46wEUtitCpq7AN38HkUU/+zvUpdKf7ephtWAFgckH8O7PQIyL5gvrhQgBLuEYgLfuKWOVvWVskMbuFHAz5xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/typescript-estree": "8.60.0", + "@typescript-eslint/utils": "8.60.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.60.0.tgz", + "integrity": "sha512-AsE7x2XaAK+CVbeih0Fvbn+r1qHxtpLDJ3XUuFcIinT318T90yHMJC+Zgv+jUuDjQQd06HKwxnDu6sz1IcTilA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.60.0.tgz", + "integrity": "sha512-3AcZNBGMClm6CXDyo8kYvVGT/sx29sS0oBsIb9oZI2gunA4Vm2M3YHzRLPvsUBBsl+yB5FPtltq7gGH0iTlp9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.60.0", + "@typescript-eslint/tsconfig-utils": "8.60.0", + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/visitor-keys": "8.60.0", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.60.0.tgz", + "integrity": "sha512-HtXuPfrHTyBDkameWpl+vJb1Uevu2tznAyahM1Oc4AENidCLTPiZDWIo4GfcxNdC/RcfGcadzzkqbRG87dUrQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.60.0", + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/typescript-estree": "8.60.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.60.0.tgz", + "integrity": "sha512-9WI52t8ZGLVGrPMBet25yAftqY/n95+zmoUUtJBBQTKDSKUu7OsPTroT2op7U9JatkoRccL0YkWDNMFfC4Sjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.60.0", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz", + "integrity": "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==", + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.12.2.tgz", + "integrity": "sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.12.2.tgz", + "integrity": "sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.12.2.tgz", + "integrity": "sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.12.2.tgz", + "integrity": "sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.12.2.tgz", + "integrity": "sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.12.2.tgz", + "integrity": "sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.12.2.tgz", + "integrity": "sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.12.2.tgz", + "integrity": "sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.12.2.tgz", + "integrity": "sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-loong64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-gnu/-/resolver-binding-linux-loong64-gnu-1.12.2.tgz", + "integrity": "sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-loong64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-musl/-/resolver-binding-linux-loong64-musl-1.12.2.tgz", + "integrity": "sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.12.2.tgz", + "integrity": "sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.12.2.tgz", + "integrity": "sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.12.2.tgz", + "integrity": "sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.12.2.tgz", + "integrity": "sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.12.2.tgz", + "integrity": "sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.12.2.tgz", + "integrity": "sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-openharmony-arm64": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-openharmony-arm64/-/resolver-binding-openharmony-arm64-1.12.2.tgz", + "integrity": "sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.12.2.tgz", + "integrity": "sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.12.2.tgz", + "integrity": "sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.12.2.tgz", + "integrity": "sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.12.2.tgz", + "integrity": "sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@upstash/core-analytics": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/@upstash/core-analytics/-/core-analytics-0.0.10.tgz", + "integrity": "sha512-7qJHGxpQgQr9/vmeS1PktEwvNAF7TI4iJDi8Pu2CFZ9YUGHZH4fOP5TfYlZ4aVxfopnELiE4BS4FBjyK7V1/xQ==", + "license": "MIT", + "dependencies": { + "@upstash/redis": "^1.28.3" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@upstash/ratelimit": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@upstash/ratelimit/-/ratelimit-2.0.8.tgz", + "integrity": "sha512-YSTMBJ1YIxsoPkUMX/P4DDks/xV5YYCswWMamU8ZIfK9ly6ppjRnVOyBhMDXBmzjODm4UQKcxsJPvaeFAijp5w==", + "license": "MIT", + "dependencies": { + "@upstash/core-analytics": "^0.0.10" + }, + "peerDependencies": { + "@upstash/redis": "^1.34.3" + } + }, + "node_modules/@upstash/redis": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/@upstash/redis/-/redis-1.38.0.tgz", + "integrity": "sha512-wu+dZBptlLy0+MCUEoHmzrY/TnmgDey3+c7EbIGwrLqAvkP8yi5MWZHYGIFtAygmL4Bkz2TdFu+eU0vFPncIcg==", + "license": "MIT", + "dependencies": { + "uncrypto": "^0.1.3" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.11.4", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.4.tgz", + "integrity": "sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.33", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.33.tgz", + "integrity": "sha512-bA6+tcSLpz2tIEdDXZPpPTIuxBcC4+w6SieaYyfigIa4h8GlFxbA17v22Vx3JUtuZQj9SgOsnbK+aTBzyDyEuw==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001793", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", + "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cluster-key-slot": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.1.tgz", + "integrity": "sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-js": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz", + "integrity": "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-jest/node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dedent": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "devOptional": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dompurify": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.7.tgz", + "integrity": "sha512-2jBxDJY4RR06tQNy4w5FlFH7kfxsQZlufd0sbv+chfHCxeJwrFw2baUDsSwvBISD4K4RDbd0PTfy3uNXsR6siA==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.364", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.364.tgz", + "integrity": "sha512-G/dYE3+AYhyHwzTwg8UbnXf7zqMERYh7l2jJ3QujhFsH8agSYwtnGAR2aZ7f0AakIKJXd5En/Hre4igIUrdlYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.22.1.tgz", + "integrity": "sha512-6QEuw3zoX1SJQc7b87aBXke/no+mG2bTBgw29gWMQonLmpEkWoCAVkl+M49e48AZlWzxiDzDZzYdp6kobcyLww==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", + "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.2.tgz", + "integrity": "sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.2", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.1.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.3.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.5", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-next": { + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-16.2.6.tgz", + "integrity": "sha512-z2ELYSkyrrJ6cuunTU8vhsT/RpouPkjaSah06nVW6Rg2Hpg0Vs8s497/e5s8G8qtdp4ccsiovz5P1rv+5VSW2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@next/eslint-plugin-next": "16.2.6", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-react": "^7.37.0", + "eslint-plugin-react-hooks": "^7.0.0", + "globals": "16.4.0", + "typescript-eslint": "^8.46.0" + }, + "peerDependencies": { + "eslint": ">=9.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-next/node_modules/globals": { + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", + "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.10.tgz", + "integrity": "sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.16.1", + "resolve": "^2.0.0-next.6" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", + "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.13", + "unrs-resolver": "^1.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.13.0.tgz", + "integrity": "sha512-bLohSkT6469rRs8czj0tLTD8vaeIS/whvPRJVjDr7IuoTT1k5DYDERlNycjDj/HkOlvQdYurmfZ/g3fG5bgeLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz", + "integrity": "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fflate": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", + "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==", + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", + "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-url-attributes": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz", + "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "license": "MIT" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ioredis": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.11.0.tgz", + "integrity": "sha512-EZBErytyVovD8f6pDfG3Kb37N6Y3lmDA9NNj+4+IP13CzzHGeX+OyeRM2Um13khRzoBSzzL+5lVnCX8V2RLeMg==", + "license": "MIT", + "dependencies": { + "@ioredis/commands": "1.10.0", + "cluster-key-slot": "1.1.1", + "debug": "4.4.3", + "denque": "2.1.0", + "redis-errors": "1.2.0", + "redis-parser": "3.0.0", + "standard-as-callback": "2.1.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ioredis" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/resolve": { + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", + "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/next": { + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/next/-/next-16.2.6.tgz", + "integrity": "sha512-qOVgKJg1+At15NpeUP+eJgCHvTCgXsogweq87Ri/Ix7PkqQHg4sdaXmSFqKlgaIXE4kW0g25LE68W87UANlHtw==", + "license": "MIT", + "dependencies": { + "@next/env": "16.2.6", + "@swc/helpers": "0.5.15", + "baseline-browser-mapping": "^2.9.19", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=20.9.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "16.2.6", + "@next/swc-darwin-x64": "16.2.6", + "@next/swc-linux-arm64-gnu": "16.2.6", + "@next/swc-linux-arm64-musl": "16.2.6", + "@next/swc-linux-x64-gnu": "16.2.6", + "@next/swc-linux-x64-musl": "16.2.6", + "@next/swc-win32-arm64-msvc": "16.2.6", + "@next/swc-win32-x64-msvc": "16.2.6", + "sharp": "^0.34.5" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.51.1", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/node-exports-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz", + "integrity": "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.flatmap": "^1.3.3", + "es-errors": "^1.3.0", + "object.entries": "^1.1.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/node-exports-info/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.46", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.46.tgz", + "integrity": "sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/openai": { + "version": "6.39.1", + "resolved": "https://registry.npmjs.org/openai/-/openai-6.39.1.tgz", + "integrity": "sha512-z3dO9fEWOXBzlXynVb/xZ/tujzUjFWQWn3C0n0mw6Vo0zJTbEkaN4b2cLWjhJ6haJQx8LlREoafHRl+Gu/Hl+A==", + "license": "Apache-2.0", + "bin": { + "openai": "bin/cli" + }, + "peerDependencies": { + "ws": "^8.18.0", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "ws": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", + "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.12", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/posthog-js": { + "version": "1.376.4", + "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.376.4.tgz", + "integrity": "sha512-SGhZWMBpd9GyV1+Klhx/vRwyy/reRRpJGYc1n1rYG9+LAML/YUEIrfl3Y2CLvuwmhKbPVY5W98Z7pAVQ88Qf1A==", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/api-logs": "^0.208.0", + "@opentelemetry/exporter-logs-otlp-http": "^0.208.0", + "@opentelemetry/resources": "^2.2.0", + "@opentelemetry/sdk-logs": "^0.208.0", + "@posthog/core": "1.29.13", + "@posthog/types": "1.376.4", + "core-js": "^3.38.1", + "dompurify": "^3.3.2", + "fflate": "^0.4.8", + "preact": "^10.28.2", + "query-selector-shadow-dom": "^1.0.1", + "web-vitals": "^5.1.0" + } + }, + "node_modules/posthog-node": { + "version": "5.35.6", + "resolved": "https://registry.npmjs.org/posthog-node/-/posthog-node-5.35.6.tgz", + "integrity": "sha512-LwoXnR89A0l75jvFrXjtsAs0BbpyCjnwY8YIUkZT91rt1YnIUfBYiLj7qoUYApdNgesgWQQHqLXxLYX59a6ZYw==", + "license": "MIT", + "dependencies": { + "@posthog/core": "1.29.13" + }, + "engines": { + "node": "^20.20.0 || >=22.22.0" + }, + "peerDependencies": { + "rxjs": "^7.0.0" + }, + "peerDependenciesMeta": { + "rxjs": { + "optional": true + } + } + }, + "node_modules/preact": { + "version": "10.29.2", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.29.2.tgz", + "integrity": "sha512-7tNmwg/7mzzAoB/8kSg6Hl37JraAZw3Z3A0JSY7VXlZwo82Xn0G7wKbNNs2qoF4ZEEsQGTwDAroNdqKs1ofJxQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/protobufjs": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.1.tgz", + "integrity": "sha512-4K0myLaWL5EteuSAro91EGFgcfVgxb64Jx+7oDAY6GOkXD4M69yuSEljNcInGVCA5sOPxmZ/EqDLj2x0Q0+Ygg==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.5", + "@protobufjs/eventemitter": "^1.1.1", + "@protobufjs/fetch": "^1.1.1", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.2", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.1", + "@types/node": ">=13.7.0", + "long": "^5.3.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" + "license": "MIT" + }, + "node_modules/query-selector-shadow-dom": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz", + "integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==", + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } ], + "license": "MIT" + }, + "node_modules/react": { + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", + "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.6.tgz", + "integrity": "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.6" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-markdown": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.1.0.tgz", + "integrity": "sha512-xaijuJB0kzGiUdG7nc2MOMDUDBWPyGAjZtUrow9XxUeua8IqeP+VlIfAZ3bphpcLTnSZXz6z9jcVC/TCwbfgdw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "html-url-attributes": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=18", + "react": ">=18" + } + }, + "node_modules/redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "license": "MIT", + "dependencies": { + "redis-errors": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, "funding": { - "url": "https://opencollective.com/libvips" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", - "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", - "cpu": [ - "arm" - ], - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.2.4" + "node": ">=0.10.0" } }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", - "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", - "cpu": [ - "arm64" - ], - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "node_modules/resolve": { + "version": "2.0.0-next.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.7.tgz", + "integrity": "sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.2", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.2.4" + "engines": { + "node": ">=8" } }, - "node_modules/@img/sharp-linux-ppc64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", - "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", - "cpu": [ - "ppc64" - ], - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.2.4" + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/@img/sharp-linux-riscv64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", - "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", - "cpu": [ - "riscv64" - ], - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" + "node_modules/resolve.exports": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz", + "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=0.4" }, "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-riscv64": "1.2.4" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", - "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", - "cpu": [ - "s390x" - ], - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.2.4" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", - "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", - "cpu": [ - "x64" - ], - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", + "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", + "devOptional": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.2.4" + "engines": { + "node": ">=10" } }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", - "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", - "cpu": [ - "arm64" - ], - "libc": [ - "musl" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" }, - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + "engines": { + "node": ">= 0.4" } }, - "node_modules/@img/sharp-linuxmusl-x64": { + "node_modules/sharp": { "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", - "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", - "cpu": [ - "x64" - ], - "libc": [ - "musl" - ], + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "hasInstallScript": true, "license": "Apache-2.0", "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, @@ -479,1042 +10289,1028 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" } }, - "node_modules/@img/sharp-wasm32": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", - "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", - "cpu": [ - "wasm32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", "dependencies": { - "@emnapi/runtime": "^1.7.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" + "node": ">=8" } }, - "node_modules/@img/sharp-win32-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", - "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" + "node": ">=8" } }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", - "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", - "cpu": [ - "ia32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", - "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/libvips" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } + "license": "ISC" }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true, "license": "MIT" }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "engines": { + "node": ">=8" } }, - "node_modules/@next/env": { - "version": "15.5.18", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.18.tgz", - "integrity": "sha512-hAV85Ckd9QR6RvH04MEKwsfLTksvFpO47j9xwtoIuvuPnlwecpSi+uZTtm8HirVbtlI2Fnz//xpcSTjFdyJk+g==", - "license": "MIT" - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "15.5.18", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.18.tgz", - "integrity": "sha512-w0WvQf1n+txiwns/9pwIQteCJpZTbxzO2SE0FLcwuD4v0WEh1JPOjdyxWL21XwJsdpx8cFRjyzxzCS/siP7HcQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">= 10" + "node": ">=0.10.0" } }, - "node_modules/@next/swc-darwin-x64": { - "version": "15.5.18", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.18.tgz", - "integrity": "sha512-znn71QmDuxm+BOaglihMZfvyySMnNljkVIY5Z2TCssBmm+WqL6c19VhtH5ktFkHa8EZ2bnTUpcNcmNSQsg67og==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "engines": { - "node": ">= 10" + "node": ">=0.10.0" } }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.5.18", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.18.tgz", - "integrity": "sha512-yPPe5MNL+igZUa+OsqQJisqSfh6oarIuA1Q0BDxljGJhRQyZeP+WRHh7rs/jZUGMh5aY0YdIjXZG0VohkKkUdw==", - "cpu": [ - "arm64" - ], - "libc": [ - "glibc" - ], + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.5.18", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.18.tgz", - "integrity": "sha512-glaCczEWIrHsokFZ3pP08U4BpKxwIdnT+txdOM32OBgpL9Yw4aqx8NejmgtZQZOdstQ5f0L3CasIZudzCuD+nw==", - "cpu": [ - "arm64" - ], - "libc": [ - "musl" - ], + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.5.18", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.18.tgz", - "integrity": "sha512-oUfg2EgJmU3R0OCOWiokGFUTvZiPfXtriXiuF3YNxRoROCdgvTedHIzYoeKH34gsZxS/V7mHbfq2hpAHwhH1/A==", - "cpu": [ - "x64" - ], - "libc": [ - "glibc" - ], + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, "engines": { - "node": ">= 10" + "node": ">=10" } }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "15.5.18", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.18.tgz", - "integrity": "sha512-JLxSP3KTd9iu/bvUMQxH7RJo9xKSHf55/6RPE4a6FTSZygGn7uvZbCej0AHXydwkggQGSD9UddSjwv6Xz5ESfA==", - "cpu": [ - "x64" - ], - "libc": [ - "musl" - ], + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.5.18", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.18.tgz", - "integrity": "sha512-ir1v7enP52K2HNz3tQQvwF+x7VNxBk1ciiZ18WBPvxf4C59IqdfmHPJYK3vH7rSxpuCVw/8C712wTXNAtEp+NA==", - "cpu": [ - "arm64" - ], + "node_modules/standard-as-callback": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==", + "license": "MIT" + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, "engines": { - "node": ">= 10" + "node": ">= 0.4" } }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.5.18", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.18.tgz", - "integrity": "sha512-LIu5me6QTANCd25E7I5uIEfvgQ06RK7tvHAbYo3zCb3VpxQEPvMcSpd87NwUABDT6MbGPdEGR5VRiK4PPTJhQg==", - "cpu": [ - "x64" - ], + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">= 10" + "node": ">=10" } }, - "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", - "license": "Apache-2.0", + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.8.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@tailwindcss/node": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.0.tgz", - "integrity": "sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==", + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/remapping": "^2.3.5", - "enhanced-resolve": "^5.21.0", - "jiti": "^2.6.1", - "lightningcss": "1.32.0", - "magic-string": "^0.30.21", - "source-map-js": "^1.2.1", - "tailwindcss": "4.3.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/@tailwindcss/oxide": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.0.tgz", - "integrity": "sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==", + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", "dev": true, "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, "engines": { - "node": ">= 20" + "node": ">= 0.4" }, - "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.3.0", - "@tailwindcss/oxide-darwin-arm64": "4.3.0", - "@tailwindcss/oxide-darwin-x64": "4.3.0", - "@tailwindcss/oxide-freebsd-x64": "4.3.0", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.0", - "@tailwindcss/oxide-linux-arm64-gnu": "4.3.0", - "@tailwindcss/oxide-linux-arm64-musl": "4.3.0", - "@tailwindcss/oxide-linux-x64-gnu": "4.3.0", - "@tailwindcss/oxide-linux-x64-musl": "4.3.0", - "@tailwindcss/oxide-wasm32-wasi": "4.3.0", - "@tailwindcss/oxide-win32-arm64-msvc": "4.3.0", - "@tailwindcss/oxide-win32-x64-msvc": "4.3.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.0.tgz", - "integrity": "sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng==", - "cpu": [ - "arm64" - ], + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 20" + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" } }, - "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.0.tgz", - "integrity": "sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ==", - "cpu": [ - "arm64" - ], + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, "engines": { - "node": ">= 20" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.0.tgz", - "integrity": "sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA==", - "cpu": [ - "x64" - ], + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, "engines": { - "node": ">= 20" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.0.tgz", - "integrity": "sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ==", - "cpu": [ - "x64" - ], + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, "engines": { - "node": ">= 20" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.0.tgz", - "integrity": "sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA==", - "cpu": [ - "arm" - ], + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">= 20" + "node": ">=8" } }, - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.0.tgz", - "integrity": "sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==", - "cpu": [ - "arm64" - ], + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">= 20" + "node": ">=8" } }, - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.0.tgz", - "integrity": "sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==", - "cpu": [ - "arm64" - ], + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "libc": [ - "musl" - ], "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">= 20" + "node": ">=6" } }, - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.0.tgz", - "integrity": "sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==", - "cpu": [ - "x64" - ], + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">= 20" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.0.tgz", - "integrity": "sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" - ], + "node_modules/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, "engines": { - "node": ">= 20" + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.0.tgz", - "integrity": "sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==", - "bundleDependencies": [ - "@napi-rs/wasm-runtime", - "@emnapi/core", - "@emnapi/runtime", - "@tybys/wasm-util", - "@emnapi/wasi-threads", - "tslib" - ], - "cpu": [ - "wasm32" - ], + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@emnapi/core": "^1.10.0", - "@emnapi/runtime": "^1.10.0", - "@emnapi/wasi-threads": "^1.2.1", - "@napi-rs/wasm-runtime": "^1.1.4", - "@tybys/wasm-util": "^0.10.1", - "tslib": "^2.8.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=8" } }, - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.0.tgz", - "integrity": "sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ==", - "cpu": [ - "arm64" - ], + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">= 20" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "node_modules/tailwindcss": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.0.tgz", - "integrity": "sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA==", - "cpu": [ - "x64" - ], + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.0.tgz", + "integrity": "sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 20" - } + "license": "MIT" }, - "node_modules/@tailwindcss/postcss": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.3.0.tgz", - "integrity": "sha512-Jm05Tjx+9yCLGv5qw1c+84Psds8MnyrEQYCB+FFk2lgGiUjlRqdxke4mVTuYrj2xnVZqKim2Apr5ySuQRYAw/w==", + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", "dev": true, "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "@tailwindcss/node": "4.3.0", - "@tailwindcss/oxide": "4.3.0", - "postcss": "^8.5.10", - "tailwindcss": "4.3.0" + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/@types/node": { - "version": "20.19.41", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.41.tgz", - "integrity": "sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==", + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "undici-types": "~6.21.0" + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/react": { - "version": "19.2.15", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.15.tgz", - "integrity": "sha512-eRwcGNHve+E8qtEQSSRl6urh+rFop4v8gm6O8rGv25CodbvFdLjA1vVQ1KkiFE0w0UPOnb8tDiFKL5lp0rtY5Q==", + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", "dev": true, "license": "MIT", "dependencies": { - "csstype": "^3.2.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/@types/react-dom": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", - "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, "peerDependencies": { - "@types/react": "^19.2.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001793", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", - "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true } - ], - "license": "CC-BY-4.0" - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT" + } }, - "node_modules/csstype": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, - "license": "MIT" - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "devOptional": true, - "license": "Apache-2.0", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/enhanced-resolve": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.22.1.tgz", - "integrity": "sha512-6QEuw3zoX1SJQc7b87aBXke/no+mG2bTBgw29gWMQonLmpEkWoCAVkl+M49e48AZlWzxiDzDZzYdp6kobcyLww==", + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.3.3" + "is-number": "^7.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=8.0" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dev": true, - "license": "ISC" + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } }, - "node_modules/jiti": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", - "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "license": "MPL-2.0", + "license": "MIT", "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "minimist": "^1.2.0" }, - "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", - "cpu": [ - "arm64" - ], + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "android" - ], + "license": "MIT", "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=4" } }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", - "cpu": [ - "arm64" - ], + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", - "cpu": [ - "x64" - ], + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=4" } }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", - "cpu": [ - "x64" - ], + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">= 12.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", - "cpu": [ - "arm" - ], + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">= 0.4" } }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", - "cpu": [ - "arm64" - ], + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, - "libc": [ - "glibc" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, "engines": { - "node": ">= 12.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", - "cpu": [ - "arm64" - ], + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, - "libc": [ - "musl" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, "engines": { - "node": ">= 12.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", - "cpu": [ - "x64" - ], + "node_modules/typed-array-length": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.8.tgz", + "integrity": "sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==", "dev": true, - "libc": [ - "glibc" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "for-each": "^0.3.5", + "gopd": "^1.2.0", + "is-typed-array": "^1.1.15", + "possible-typed-array-names": "^1.1.0", + "reflect.getprototypeof": "^1.0.10" + }, "engines": { - "node": ">= 12.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", - "cpu": [ - "x64" - ], + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, - "libc": [ - "musl" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=14.17" } }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", - "cpu": [ - "arm64" - ], + "node_modules/typescript-eslint": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.60.0.tgz", + "integrity": "sha512-9f65qWLZdAW9m1JaxBDUHcqRUfL8bkxxXL7XxEfI+F09q56PkBvIfCjLF3yInsDM/BBmwkqmCQdCZe/RYlIWEw==", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.60.0", + "@typescript-eslint/parser": "8.60.0", + "@typescript-eslint/typescript-estree": "8.60.0", + "@typescript-eslint/utils": "8.60.0" + }, "engines": { - "node": ">= 12.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", - "cpu": [ - "x64" - ], + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, "engines": { - "node": ">= 12.0.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, + "node_modules/uncrypto": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nanoid": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", - "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" + "dependencies": { + "@types/unist": "^3.0.0" }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/next": { - "version": "15.5.18", - "resolved": "https://registry.npmjs.org/next/-/next-15.5.18.tgz", - "integrity": "sha512-eKL8zUJkX9Y5lE+RX/2YJoItVdGlIscyVyboeD9wSpp0PaGqjoA4tTpT2qPqz9ax+5IzGESyLSeZ/RCwbSZ2uQ==", + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "license": "MIT", "dependencies": { - "@next/env": "15.5.18", - "@swc/helpers": "0.5.15", - "caniuse-lite": "^1.0.30001579", - "postcss": "8.4.31", - "styled-jsx": "5.1.6" - }, - "bin": { - "next": "dist/bin/next" + "@types/unist": "^3.0.0" }, - "engines": { - "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "15.5.18", - "@next/swc-darwin-x64": "15.5.18", - "@next/swc-linux-arm64-gnu": "15.5.18", - "@next/swc-linux-arm64-musl": "15.5.18", - "@next/swc-linux-x64-gnu": "15.5.18", - "@next/swc-linux-x64-musl": "15.5.18", - "@next/swc-win32-arm64-msvc": "15.5.18", - "@next/swc-win32-x64-msvc": "15.5.18", - "sharp": "^0.34.3" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.51.1", - "babel-plugin-react-compiler": "*", - "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "sass": "^1.3.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@playwright/test": { - "optional": true - }, - "babel-plugin-react-compiler": { - "optional": true - }, - "sass": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unrs-resolver": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.12.2.tgz", + "integrity": "sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.4" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.12.2", + "@unrs/resolver-binding-android-arm64": "1.12.2", + "@unrs/resolver-binding-darwin-arm64": "1.12.2", + "@unrs/resolver-binding-darwin-x64": "1.12.2", + "@unrs/resolver-binding-freebsd-x64": "1.12.2", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.12.2", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.12.2", + "@unrs/resolver-binding-linux-arm64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-arm64-musl": "1.12.2", + "@unrs/resolver-binding-linux-loong64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-loong64-musl": "1.12.2", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-riscv64-musl": "1.12.2", + "@unrs/resolver-binding-linux-s390x-gnu": "1.12.2", + "@unrs/resolver-binding-linux-x64-gnu": "1.12.2", + "@unrs/resolver-binding-linux-x64-musl": "1.12.2", + "@unrs/resolver-binding-openharmony-arm64": "1.12.2", + "@unrs/resolver-binding-wasm32-wasi": "1.12.2", + "@unrs/resolver-binding-win32-arm64-msvc": "1.12.2", + "@unrs/resolver-binding-win32-ia32-msvc": "1.12.2", + "@unrs/resolver-binding-win32-x64-msvc": "1.12.2" } }, - "node_modules/next/node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, "funding": [ { "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" + "url": "https://tidelift.com/funding/github/npm/browserslist" }, { "type": "github", @@ -1523,213 +11319,329 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, - "engines": { - "node": "^10 || ^12 || >=14" + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } }, - "node_modules/postcss": { - "version": "8.5.15", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", - "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", + "license": "ISC", "dependencies": { - "nanoid": "^3.3.12", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=10.12.0" } }, - "node_modules/react": { - "version": "19.2.6", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", - "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==", + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/react-dom": { - "version": "19.2.6", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.6.tgz", - "integrity": "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==", + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", "license": "MIT", "dependencies": { - "scheduler": "^0.27.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, - "peerDependencies": { - "react": "^19.2.6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/scheduler": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", - "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", - "license": "MIT" + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } }, - "node_modules/semver": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", - "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", + "node_modules/web-vitals": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-5.3.0.tgz", + "integrity": "sha512-q6LWsLatGYZp5VGBIOvbTj6JBV2nOmC8KvWztXBmwJcfFAzhwKwbOxhUH306XY3CcaZDUlSmSuNPBsCn0bFu+g==", + "license": "Apache-2.0" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "license": "ISC", - "optional": true, + "dependencies": { + "isexe": "^2.0.0" + }, "bin": { - "semver": "bin/semver.js" + "node-which": "bin/node-which" }, "engines": { - "node": ">=10" + "node": ">= 8" } }, - "node_modules/sharp": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", - "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", - "hasInstallScript": true, - "license": "Apache-2.0", - "optional": true, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", "dependencies": { - "@img/colour": "^1.0.0", - "detect-libc": "^2.1.2", - "semver": "^7.7.3" + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.5", - "@img/sharp-darwin-x64": "0.34.5", - "@img/sharp-libvips-darwin-arm64": "1.2.4", - "@img/sharp-libvips-darwin-x64": "1.2.4", - "@img/sharp-libvips-linux-arm": "1.2.4", - "@img/sharp-libvips-linux-arm64": "1.2.4", - "@img/sharp-libvips-linux-ppc64": "1.2.4", - "@img/sharp-libvips-linux-riscv64": "1.2.4", - "@img/sharp-libvips-linux-s390x": "1.2.4", - "@img/sharp-libvips-linux-x64": "1.2.4", - "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", - "@img/sharp-libvips-linuxmusl-x64": "1.2.4", - "@img/sharp-linux-arm": "0.34.5", - "@img/sharp-linux-arm64": "0.34.5", - "@img/sharp-linux-ppc64": "0.34.5", - "@img/sharp-linux-riscv64": "0.34.5", - "@img/sharp-linux-s390x": "0.34.5", - "@img/sharp-linux-x64": "0.34.5", - "@img/sharp-linuxmusl-arm64": "0.34.5", - "@img/sharp-linuxmusl-x64": "0.34.5", - "@img/sharp-wasm32": "0.34.5", - "@img/sharp-win32-arm64": "0.34.5", - "@img/sharp-win32-ia32": "0.34.5", - "@img/sharp-win32-x64": "0.34.5" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/source-map-js": { + "node_modules/which-builtin-type": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/styled-jsx": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", - "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, "license": "MIT", "dependencies": { - "client-only": "0.0.1" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 0.4" }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.21.tgz", + "integrity": "sha512-zbRA8cVm6io/d5W8uIe2hblzN76/Wm3v/yiythQvr+dpBWeqhPSWIDNj4zOyHi4zKbMK6DN34Xsr9jPHJERAEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tailwindcss": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.0.tgz", - "integrity": "sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==", + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/tapable": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", - "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" }, "engines": { - "node": ">=14.17" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, - "license": "MIT" + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } } } diff --git a/package.json b/package.json index fd8328b..92a8c8c 100644 --- a/package.json +++ b/package.json @@ -5,18 +5,34 @@ "scripts": { "dev": "next dev", "build": "next build", - "start": "next start" + "start": "next start", + "lint": "eslint .", + "typecheck": "tsc --noEmit", + "test": "jest" }, "dependencies": { - "next": "^15.1.0", + "@upstash/ratelimit": "^2.0.5", + "@upstash/redis": "^1.34.3", + "ioredis": "^5.4.2", + "next": "^16.2.6", + "openai": "^6.39.1", + "posthog-js": "^1.372.10", + "posthog-node": "^5.0.0", "react": "^19.0.0", - "react-dom": "^19.0.0" + "react-dom": "^19.0.0", + "react-markdown": "^9.1.0", + "remark-gfm": "^4.0.1", + "zod": "^3.23.8" }, "devDependencies": { + "@tailwindcss/postcss": "^4", + "@types/jest": "^29.5.14", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", - "@tailwindcss/postcss": "^4", + "eslint": "^9", + "eslint-config-next": "^16.2.6", + "jest": "^29.7.0", "tailwindcss": "^4", "typescript": "^5" } diff --git a/public/ntr600.jpg b/public/ntr600.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f36b8304de2b69b11391a87d0d768e6ebd157036 GIT binary patch literal 98781 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±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 literal 0 HcmV?d00001 diff --git a/tsconfig.json b/tsconfig.json index eea7ea5..e7ff3a2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,11 @@ { "compilerOptions": { "target": "ES2017", - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -11,13 +15,27 @@ "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, - "jsx": "preserve", + "jsx": "react-jsx", "incremental": true, - "plugins": [{ "name": "next" }], + "plugins": [ + { + "name": "next" + } + ], "paths": { - "@/*": ["./*"] + "@/*": [ + "./*" + ] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] }