diff --git a/.claude/skills/issue-discover/SKILL.md b/.claude/skills/issue-discover/SKILL.md new file mode 100644 index 00000000..9fef611f --- /dev/null +++ b/.claude/skills/issue-discover/SKILL.md @@ -0,0 +1,281 @@ +--- +name: issue-discover +description: Unified issue discovery and creation. Create issues from GitHub/text, discover issues via multi-perspective analysis, or prompt-driven iterative exploration. Triggers on "issue:new", "issue:discover", "issue:discover-by-prompt", "create issue", "discover issues", "find issues". +allowed-tools: Task, AskUserQuestion, TodoWrite, Read, Write, Edit, Bash, Glob, Grep, Skill, mcp__ace-tool__search_context, mcp__exa__search +--- + +# Issue Discover + +Unified issue discovery and creation skill covering three entry points: manual issue creation, perspective-based discovery, and prompt-driven exploration. + +## Architecture Overview + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ Issue Discover Orchestrator (SKILL.md) │ +│ → Action selection → Route to phase → Execute → Summary │ +└───────────────┬─────────────────────────────────────────────────┘ + │ + ├─ AskUserQuestion: Select action + │ + ┌───────────┼───────────┬───────────┐ + ↓ ↓ ↓ │ +┌─────────┐ ┌─────────┐ ┌─────────┐ │ +│ Phase 1 │ │ Phase 2 │ │ Phase 3 │ │ +│ Create │ │Discover │ │Discover │ │ +│ New │ │ Multi │ │by Prompt│ │ +└─────────┘ └─────────┘ └─────────┘ │ + ↓ ↓ ↓ │ + Issue Discoveries Discoveries │ +(registered) (export) (export) │ + │ │ │ │ + └───────────┴───────────┘ │ + ↓ │ + issue-resolve (plan/queue) │ + ↓ │ + /issue:execute │ +``` + +## Key Design Principles + +1. **Action-Driven Routing**: AskUserQuestion selects action, then load single phase +2. **Progressive Phase Loading**: Only read the selected phase document +3. **CLI-First Data Access**: All issue CRUD via `ccw issue` CLI commands +4. **Auto Mode Support**: `-y` flag skips action selection with auto-detection + +## Auto Mode + +When `--yes` or `-y`: Skip action selection, auto-detect action from input type. + +## Usage + +``` +Skill(skill="issue-discover", args="") +Skill(skill="issue-discover", args="[FLAGS] \"\"") + +# Flags +-y, --yes Skip all confirmations (auto mode) +--action Pre-select action: new|discover|discover-by-prompt + +# Phase-specific flags +--priority <1-5> Issue priority (new mode) +--perspectives Comma-separated perspectives (discover mode) +--external Enable Exa research (discover mode) +--scope File scope (discover/discover-by-prompt mode) +--depth standard|deep (discover-by-prompt mode) +--max-iterations Max exploration iterations (discover-by-prompt mode) + +# Examples +Skill(skill="issue-discover", args="https://github.com/org/repo/issues/42") # Create from GitHub +Skill(skill="issue-discover", args="\"Login fails with special chars\"") # Create from text +Skill(skill="issue-discover", args="--action discover src/auth/**") # Multi-perspective discovery +Skill(skill="issue-discover", args="--action discover src/api/** --perspectives=security,bug") # Focused discovery +Skill(skill="issue-discover", args="--action discover-by-prompt \"Check API contracts\"") # Prompt-driven discovery +Skill(skill="issue-discover", args="-y \"auth broken\"") # Auto mode create +``` + +## Execution Flow + +``` +Input Parsing: + └─ Parse flags (--action, -y, --perspectives, etc.) and positional args + +Action Selection: + ├─ --action flag provided → Route directly + ├─ Auto-detect from input: + │ ├─ GitHub URL or #number → Create New (Phase 1) + │ ├─ Path pattern (src/**, *.ts) → Discover (Phase 2) + │ ├─ Short text (< 80 chars) → Create New (Phase 1) + │ └─ Long descriptive text (≥ 80 chars) → Discover by Prompt (Phase 3) + └─ Otherwise → AskUserQuestion to select action + +Phase Execution (load one phase): + ├─ Phase 1: Create New → phases/01-issue-new.md + ├─ Phase 2: Discover → phases/02-discover.md + └─ Phase 3: Discover by Prompt → phases/03-discover-by-prompt.md + +Post-Phase: + └─ Summary + Next steps recommendation +``` + +### Phase Reference Documents + +| Phase | Document | Load When | Purpose | +|-------|----------|-----------|---------| +| Phase 1 | [phases/01-issue-new.md](phases/01-issue-new.md) | Action = Create New | Create issue from GitHub URL or text description | +| Phase 2 | [phases/02-discover.md](phases/02-discover.md) | Action = Discover | Multi-perspective issue discovery (bug, security, test, etc.) | +| Phase 3 | [phases/03-discover-by-prompt.md](phases/03-discover-by-prompt.md) | Action = Discover by Prompt | Prompt-driven iterative exploration with Gemini planning | + +## Core Rules + +1. **Action Selection First**: Always determine action before loading any phase +2. **Single Phase Load**: Only read the selected phase document, never load all phases +3. **CLI Data Access**: Use `ccw issue` CLI for all issue operations, NEVER read files directly +4. **Content Preservation**: Each phase contains complete execution logic from original commands +5. **Auto-Detect Input**: Smart input parsing reduces need for explicit --action flag + +## Input Processing + +### Auto-Detection Logic + +```javascript +function detectAction(input, flags) { + // 1. Explicit --action flag + if (flags.action) return flags.action; + + const trimmed = input.trim(); + + // 2. GitHub URL → new + if (trimmed.match(/github\.com\/[\w-]+\/[\w-]+\/issues\/\d+/) || trimmed.match(/^#\d+$/)) { + return 'new'; + } + + // 3. Path pattern (contains **, /, or --perspectives) → discover + if (trimmed.match(/\*\*/) || trimmed.match(/^src\//) || flags.perspectives) { + return 'discover'; + } + + // 4. Short text (< 80 chars, no special patterns) → new + if (trimmed.length > 0 && trimmed.length < 80 && !trimmed.includes('--')) { + return 'new'; + } + + // 5. Long descriptive text → discover-by-prompt + if (trimmed.length >= 80) { + return 'discover-by-prompt'; + } + + // Cannot auto-detect → ask user + return null; +} +``` + +### Action Selection (AskUserQuestion) + +```javascript +// When action cannot be auto-detected +const answer = AskUserQuestion({ + questions: [{ + question: "What would you like to do?", + header: "Action", + multiSelect: false, + options: [ + { + label: "Create New Issue (Recommended)", + description: "Create issue from GitHub URL, text description, or structured input" + }, + { + label: "Discover Issues", + description: "Multi-perspective discovery: bug, security, test, quality, performance, etc." + }, + { + label: "Discover by Prompt", + description: "Describe what to find — Gemini plans the exploration strategy iteratively" + } + ] + }] +}); + +// Route based on selection +const actionMap = { + "Create New Issue": "new", + "Discover Issues": "discover", + "Discover by Prompt": "discover-by-prompt" +}; +``` + +## Data Flow + +``` +User Input (URL / text / path pattern / descriptive prompt) + ↓ +[Parse Flags + Auto-Detect Action] + ↓ +[Action Selection] ← AskUserQuestion (if needed) + ↓ +[Read Selected Phase Document] + ↓ +[Execute Phase Logic] + ↓ +[Summary + Next Steps] + ├─ After Create → Suggest issue-resolve (plan solution) + └─ After Discover → Suggest export to issues, then issue-resolve +``` + +## TodoWrite Pattern + +```json +[ + {"content": "Select action", "status": "completed"}, + {"content": "Execute: [selected phase name]", "status": "in_progress"}, + {"content": "Summary & next steps", "status": "pending"} +] +``` + +Phase-specific sub-tasks are attached when the phase executes (see individual phase docs for details). + +## Core Guidelines + +**Data Access Principle**: Issues files can grow very large. To avoid context overflow: + +| Operation | Correct | Incorrect | +|-----------|---------|-----------| +| List issues (brief) | `ccw issue list --status pending --brief` | `Read('issues.jsonl')` | +| Read issue details | `ccw issue status --json` | `Read('issues.jsonl')` | +| Create issue | `echo '...' \| ccw issue create` | Direct file write | +| Update status | `ccw issue update --status ...` | Direct file edit | + +**ALWAYS** use CLI commands for CRUD operations. **NEVER** read entire `issues.jsonl` directly. + +## Error Handling + +| Error | Resolution | +|-------|------------| +| No action detected | Show AskUserQuestion with all 3 options | +| Invalid action type | Show available actions, re-prompt | +| Phase execution fails | Report error, suggest manual intervention | +| No files matched (discover) | Check target pattern, verify path exists | +| Gemini planning failed (discover-by-prompt) | Retry with qwen fallback | + +## Post-Phase Next Steps + +After successful phase execution, recommend next action: + +```javascript +// After Create New (issue created) +AskUserQuestion({ + questions: [{ + question: "Issue created. What next?", + header: "Next", + multiSelect: false, + options: [ + { label: "Plan Solution", description: "Generate solution via issue-resolve" }, + { label: "Create Another", description: "Create more issues" }, + { label: "View Issues", description: "Review all issues" }, + { label: "Done", description: "Exit workflow" } + ] + }] +}); + +// After Discover / Discover by Prompt (discoveries generated) +AskUserQuestion({ + questions: [{ + question: "Discovery complete. What next?", + header: "Next", + multiSelect: false, + options: [ + { label: "Export to Issues", description: "Convert discoveries to issues" }, + { label: "Plan Solutions", description: "Plan solutions for exported issues via issue-resolve" }, + { label: "Done", description: "Exit workflow" } + ] + }] +}); +``` + +## Related Skills & Commands + +- `issue-resolve` - Plan solutions, convert artifacts, form queues, from brainstorm +- `issue-manage` - Interactive issue CRUD operations +- `/issue:execute` - Execute queue with DAG-based parallel orchestration +- `ccw issue list` - List all issues +- `ccw issue status ` - View issue details diff --git a/.claude/skills/issue-discover/phases/01-issue-new.md b/.claude/skills/issue-discover/phases/01-issue-new.md new file mode 100644 index 00000000..287f283c --- /dev/null +++ b/.claude/skills/issue-discover/phases/01-issue-new.md @@ -0,0 +1,348 @@ +# Phase 1: Create New Issue + +> 来源: `commands/issue/new.md` + +## Overview + +Create structured issue from GitHub URL or text description with clarity-based flow control. + +**Core workflow**: Input Analysis → Clarity Detection → Data Extraction → Optional Clarification → GitHub Publishing → Create Issue + +**Input sources**: +- **GitHub URL** - `https://github.com/owner/repo/issues/123` or `#123` +- **Structured text** - Text with expected/actual/affects keywords +- **Vague text** - Short description that needs clarification + +**Output**: +- **Issue** (GH-xxx or ISS-YYYYMMDD-HHMMSS) - Registered issue ready for planning + +## Prerequisites + +- `gh` CLI available (for GitHub URLs) +- `ccw issue` CLI available + +## Auto Mode + +When `--yes` or `-y`: Skip clarification questions, create issue with inferred details. + +## Arguments + +| Argument | Required | Type | Default | Description | +|----------|----------|------|---------|-------------| +| input | Yes | String | - | GitHub URL, `#number`, or text description | +| --priority | No | Integer | auto | Priority 1-5 (auto-inferred if omitted) | +| -y, --yes | No | Flag | false | Skip all confirmations | + +## Issue Structure + +```typescript +interface Issue { + id: string; // GH-123 or ISS-YYYYMMDD-HHMMSS + title: string; + status: 'registered' | 'planned' | 'queued' | 'in_progress' | 'completed' | 'failed'; + priority: number; // 1 (critical) to 5 (low) + context: string; // Problem description (single source of truth) + source: 'github' | 'text' | 'discovery'; + source_url?: string; + labels?: string[]; + + // GitHub binding (for non-GitHub sources that publish to GitHub) + github_url?: string; + github_number?: number; + + // Optional structured fields + expected_behavior?: string; + actual_behavior?: string; + affected_components?: string[]; + + // Feedback history + feedback?: { + type: 'failure' | 'clarification' | 'rejection'; + stage: string; + content: string; + created_at: string; + }[]; + + bound_solution_id: string | null; + created_at: string; + updated_at: string; +} +``` + +## Execution Steps + +### Step 1.1: Input Analysis & Clarity Detection + +```javascript +const input = userInput.trim(); +const flags = parseFlags(userInput); + +// Detect input type and clarity +const isGitHubUrl = input.match(/github\.com\/[\w-]+\/[\w-]+\/issues\/\d+/); +const isGitHubShort = input.match(/^#(\d+)$/); +const hasStructure = input.match(/(expected|actual|affects|steps):/i); + +// Clarity score: 0-3 +let clarityScore = 0; +if (isGitHubUrl || isGitHubShort) clarityScore = 3; // GitHub = fully clear +else if (hasStructure) clarityScore = 2; // Structured text = clear +else if (input.length > 50) clarityScore = 1; // Long text = somewhat clear +else clarityScore = 0; // Vague + +let issueData = {}; +``` + +### Step 1.2: Data Extraction (GitHub or Text) + +```javascript +if (isGitHubUrl || isGitHubShort) { + // GitHub - fetch via gh CLI + const result = Bash(`gh issue view ${extractIssueRef(input)} --json number,title,body,labels,url`); + const gh = JSON.parse(result); + issueData = { + id: `GH-${gh.number}`, + title: gh.title, + source: 'github', + source_url: gh.url, + labels: gh.labels.map(l => l.name), + context: gh.body?.substring(0, 500) || gh.title, + ...parseMarkdownBody(gh.body) + }; +} else { + // Text description + issueData = { + id: `ISS-${new Date().toISOString().replace(/[-:T]/g, '').slice(0, 14)}`, + source: 'text', + ...parseTextDescription(input) + }; +} +``` + +### Step 1.3: Lightweight Context Hint (Conditional) + +```javascript +// ACE search ONLY for medium clarity (1-2) AND missing components +// Skip for: GitHub (has context), vague (needs clarification first) +if (clarityScore >= 1 && clarityScore <= 2 && !issueData.affected_components?.length) { + const keywords = extractKeywords(issueData.context); + + if (keywords.length >= 2) { + try { + const aceResult = mcp__ace-tool__search_context({ + project_root_path: process.cwd(), + query: keywords.slice(0, 3).join(' ') + }); + issueData.affected_components = aceResult.files?.slice(0, 3) || []; + } catch { + // ACE failure is non-blocking + } + } +} +``` + +### Step 1.4: Conditional Clarification (Only if Unclear) + +```javascript +// ONLY ask questions if clarity is low +if (clarityScore < 2 && (!issueData.context || issueData.context.length < 20)) { + const answer = AskUserQuestion({ + questions: [{ + question: 'Please describe the issue in more detail:', + header: 'Clarify', + multiSelect: false, + options: [ + { label: 'Provide details', description: 'Describe what, where, and expected behavior' } + ] + }] + }); + + if (answer.customText) { + issueData.context = answer.customText; + issueData.title = answer.customText.split(/[.\n]/)[0].substring(0, 60); + issueData.feedback = [{ + type: 'clarification', + stage: 'new', + content: answer.customText, + created_at: new Date().toISOString() + }]; + } +} +``` + +### Step 1.5: GitHub Publishing Decision (Non-GitHub Sources) + +```javascript +// For non-GitHub sources, ask if user wants to publish to GitHub +let publishToGitHub = false; + +if (issueData.source !== 'github') { + const publishAnswer = AskUserQuestion({ + questions: [{ + question: 'Would you like to publish this issue to GitHub?', + header: 'Publish', + multiSelect: false, + options: [ + { label: 'Yes, publish to GitHub', description: 'Create issue on GitHub and link it' }, + { label: 'No, keep local only', description: 'Store as local issue without GitHub sync' } + ] + }] + }); + + publishToGitHub = publishAnswer.answers?.['Publish']?.includes('Yes'); +} +``` + +### Step 1.6: Create Issue + +**Issue Creation** (via CLI endpoint): +```bash +# Option 1: Pipe input (recommended for complex JSON) +echo '{"title":"...", "context":"...", "priority":3}' | ccw issue create + +# Option 2: Heredoc (for multi-line JSON) +ccw issue create << 'EOF' +{"title":"...", "context":"含\"引号\"的内容", "priority":3} +EOF +``` + +**GitHub Publishing** (if user opted in): +```javascript +// Step 1: Create local issue FIRST +const localIssue = createLocalIssue(issueData); // ccw issue create + +// Step 2: Publish to GitHub if requested +if (publishToGitHub) { + const ghResult = Bash(`gh issue create --title "${issueData.title}" --body "${issueData.context}"`); + const ghUrl = ghResult.match(/https:\/\/github\.com\/[\w-]+\/[\w-]+\/issues\/\d+/)?.[0]; + const ghNumber = parseInt(ghUrl?.match(/\/issues\/(\d+)/)?.[1]); + + if (ghNumber) { + Bash(`ccw issue update ${localIssue.id} --github-url "${ghUrl}" --github-number ${ghNumber}`); + } +} +``` + +**Workflow:** +``` +1. Create local issue (ISS-YYYYMMDD-NNN) → stored in .workflow/issues.jsonl +2. If publishToGitHub: + a. gh issue create → returns GitHub URL + b. Update local issue with github_url + github_number binding +3. Both local and GitHub issues exist, linked together +``` + +## Execution Flow + +``` +Phase 1: Input Analysis + └─ Detect clarity score (GitHub URL? Structured text? Keywords?) + +Phase 2: Data Extraction (branched by clarity) + ┌────────────┬─────────────────┬──────────────┐ + │ Score 3 │ Score 1-2 │ Score 0 │ + │ GitHub │ Text + ACE │ Vague │ + ├────────────┼─────────────────┼──────────────┤ + │ gh CLI │ Parse struct │ AskQuestion │ + │ → parse │ + quick hint │ (1 question) │ + │ │ (3 files max) │ → feedback │ + └────────────┴─────────────────┴──────────────┘ + +Phase 3: GitHub Publishing Decision (non-GitHub only) + ├─ Source = github: Skip (already from GitHub) + └─ Source ≠ github: AskUserQuestion + ├─ Yes → publishToGitHub = true + └─ No → publishToGitHub = false + +Phase 4: Create Issue + ├─ Score ≥ 2: Direct creation + └─ Score < 2: Confirm first → Create + └─ If publishToGitHub: gh issue create → link URL + +Note: Deep exploration & lifecycle deferred to /issue:plan +``` + +## Helper Functions + +```javascript +function extractKeywords(text) { + const stopWords = new Set(['the', 'a', 'an', 'is', 'are', 'was', 'were', 'not', 'with']); + return text + .toLowerCase() + .split(/\W+/) + .filter(w => w.length > 3 && !stopWords.has(w)) + .slice(0, 5); +} + +function parseTextDescription(text) { + const result = { title: '', context: '' }; + const sentences = text.split(/\.(?=\s|$)/); + + result.title = sentences[0]?.trim().substring(0, 60) || 'Untitled'; + result.context = text.substring(0, 500); + + const expected = text.match(/expected:?\s*([^.]+)/i); + const actual = text.match(/actual:?\s*([^.]+)/i); + const affects = text.match(/affects?:?\s*([^.]+)/i); + + if (expected) result.expected_behavior = expected[1].trim(); + if (actual) result.actual_behavior = actual[1].trim(); + if (affects) { + result.affected_components = affects[1].split(/[,\s]+/).filter(c => c.includes('/') || c.includes('.')); + } + + return result; +} + +function parseMarkdownBody(body) { + if (!body) return {}; + const result = {}; + + const problem = body.match(/##?\s*(problem|description)[:\s]*([\s\S]*?)(?=##|$)/i); + const expected = body.match(/##?\s*expected[:\s]*([\s\S]*?)(?=##|$)/i); + const actual = body.match(/##?\s*actual[:\s]*([\s\S]*?)(?=##|$)/i); + + if (problem) result.context = problem[2].trim().substring(0, 500); + if (expected) result.expected_behavior = expected[2].trim(); + if (actual) result.actual_behavior = actual[2].trim(); + + return result; +} +``` + +## Error Handling + +| Error | Message | Resolution | +|-------|---------|------------| +| GitHub fetch failed | gh CLI error | Check gh auth, verify URL | +| Clarity too low | Input unclear | Ask clarification question | +| Issue creation failed | CLI error | Verify ccw issue endpoint | +| GitHub publish failed | gh issue create error | Create local-only, skip GitHub | + +## Examples + +### Clear Input (No Questions) + +```bash +Skill(skill="issue-lifecycle", args="https://github.com/org/repo/issues/42") +# → Fetches, parses, creates immediately + +Skill(skill="issue-lifecycle", args="\"Login fails with special chars. Expected: success. Actual: 500\"") +# → Parses structure, creates immediately +``` + +### Vague Input (1 Question) + +```bash +Skill(skill="issue-lifecycle", args="\"auth broken\"") +# → Asks: "Please describe the issue in more detail" +# → User provides details → saved to feedback[] +# → Creates issue +``` + +## Post-Phase Update + +After issue creation: +- Issue created with `status: registered` +- Report: issue ID, title, source, affected components +- Show GitHub URL (if published) +- Recommend next step: `/issue:plan ` or `Skill(skill="issue-resolve", args="")` diff --git a/.claude/skills/issue-discover/phases/02-discover.md b/.claude/skills/issue-discover/phases/02-discover.md new file mode 100644 index 00000000..84ffb0b0 --- /dev/null +++ b/.claude/skills/issue-discover/phases/02-discover.md @@ -0,0 +1,337 @@ +# Phase 2: Discover Issues (Multi-Perspective) + +> 来源: `commands/issue/discover.md` + +## Overview + +Multi-perspective issue discovery orchestrator that explores code from different angles to identify potential bugs, UX improvements, test gaps, and other actionable items. + +**Core workflow**: Initialize → Select Perspectives → Parallel Analysis → Aggregate → Generate Issues → User Action + +**Discovery Scope**: Specified modules/files only +**Output Directory**: `.workflow/issues/discoveries/{discovery-id}/` +**Available Perspectives**: bug, ux, test, quality, security, performance, maintainability, best-practices +**Exa Integration**: Auto-enabled for security and best-practices perspectives +**CLI Tools**: Gemini → Qwen → Codex (fallback chain) + +## Prerequisites + +- Target file/module pattern (e.g., `src/auth/**`) +- `ccw issue` CLI available + +## Auto Mode + +When `--yes` or `-y`: Auto-select all perspectives, skip confirmations. + +## Arguments + +| Argument | Required | Type | Default | Description | +|----------|----------|------|---------|-------------| +| target | Yes | String | - | File/module glob pattern (e.g., `src/auth/**`) | +| --perspectives | No | String | interactive | Comma-separated: bug,ux,test,quality,security,performance,maintainability,best-practices | +| --external | No | Flag | false | Enable Exa research for all perspectives | +| -y, --yes | No | Flag | false | Skip all confirmations | + +## Perspectives + +| Perspective | Focus | Categories | Exa | +|-------------|-------|------------|-----| +| **bug** | Potential Bugs | edge-case, null-check, resource-leak, race-condition, boundary, exception-handling | - | +| **ux** | User Experience | error-message, loading-state, feedback, accessibility, interaction, consistency | - | +| **test** | Test Coverage | missing-test, edge-case-test, integration-gap, coverage-hole, assertion-quality | - | +| **quality** | Code Quality | complexity, duplication, naming, documentation, code-smell, readability | - | +| **security** | Security Issues | injection, auth, encryption, input-validation, data-exposure, access-control | ✓ | +| **performance** | Performance | n-plus-one, memory-usage, caching, algorithm, blocking-operation, resource | - | +| **maintainability** | Maintainability | coupling, cohesion, tech-debt, extensibility, module-boundary, interface-design | - | +| **best-practices** | Best Practices | convention, pattern, framework-usage, anti-pattern, industry-standard | ✓ | + +## Execution Steps + +### Step 2.1: Discovery & Initialization + +```javascript +// Parse target pattern and resolve files +const resolvedFiles = await expandGlobPattern(targetPattern); +if (resolvedFiles.length === 0) { + throw new Error(`No files matched pattern: ${targetPattern}`); +} + +// Generate discovery ID +const discoveryId = `DSC-${formatDate(new Date(), 'YYYYMMDD-HHmmss')}`; + +// Create output directory +const outputDir = `.workflow/issues/discoveries/${discoveryId}`; +await mkdir(outputDir, { recursive: true }); +await mkdir(`${outputDir}/perspectives`, { recursive: true }); + +// Initialize unified discovery state +await writeJson(`${outputDir}/discovery-state.json`, { + discovery_id: discoveryId, + target_pattern: targetPattern, + phase: "initialization", + created_at: new Date().toISOString(), + updated_at: new Date().toISOString(), + target: { files_count: { total: resolvedFiles.length }, project: {} }, + perspectives: [], + external_research: { enabled: false, completed: false }, + results: { total_findings: 0, issues_generated: 0, priority_distribution: {} } +}); +``` + +### Step 2.2: Interactive Perspective Selection + +```javascript +let selectedPerspectives = []; + +if (args.perspectives) { + selectedPerspectives = args.perspectives.split(',').map(p => p.trim()); +} else { + // Interactive selection via AskUserQuestion + const response = AskUserQuestion({ + questions: [{ + question: "Select primary discovery focus:", + header: "Focus", + multiSelect: false, + options: [ + { label: "Bug + Test + Quality", description: "Quick scan: potential bugs, test gaps, code quality (Recommended)" }, + { label: "Security + Performance", description: "System audit: security issues, performance bottlenecks" }, + { label: "Maintainability + Best-practices", description: "Long-term health: coupling, tech debt, conventions" }, + { label: "Full analysis", description: "All 8 perspectives (comprehensive, takes longer)" } + ] + }] + }); + selectedPerspectives = parseSelectedPerspectives(response); +} +``` + +### Step 2.3: Parallel Perspective Analysis + +Launch N agents in parallel (one per selected perspective): + +```javascript +const agentPromises = selectedPerspectives.map(perspective => + Task({ + subagent_type: "cli-explore-agent", + run_in_background: false, + description: `Discover ${perspective} issues`, + prompt: buildPerspectivePrompt(perspective, discoveryId, resolvedFiles, outputDir) + }) +); + +const results = await Promise.all(agentPromises); +``` + +### Step 2.4: Aggregation & Prioritization + +```javascript +// Load all perspective JSON files written by agents +const allFindings = []; +for (const perspective of selectedPerspectives) { + const jsonPath = `${outputDir}/perspectives/${perspective}.json`; + if (await fileExists(jsonPath)) { + const data = await readJson(jsonPath); + allFindings.push(...data.findings.map(f => ({ ...f, perspective }))); + } +} + +// Deduplicate and prioritize +const prioritizedFindings = deduplicateAndPrioritize(allFindings); +``` + +### Step 2.5: Issue Generation & Summary + +```javascript +// Convert high-priority findings to issues +const issueWorthy = prioritizedFindings.filter(f => + f.priority === 'critical' || f.priority === 'high' || f.priority_score >= 0.7 +); + +// Write discovery-issues.jsonl +await writeJsonl(`${outputDir}/discovery-issues.jsonl`, issues); + +// Generate summary from agent returns +await writeSummaryFromAgentReturns(outputDir, results, prioritizedFindings, issues); + +// Update final state +await updateDiscoveryState(outputDir, { + phase: 'complete', + updated_at: new Date().toISOString(), + 'results.issues_generated': issues.length +}); +``` + +### Step 2.6: User Action Prompt + +```javascript +const hasHighPriority = issues.some(i => i.priority === 'critical' || i.priority === 'high'); + +await AskUserQuestion({ + questions: [{ + question: `Discovery complete: ${issues.length} issues generated, ${prioritizedFindings.length} total findings. What next?`, + header: "Next Step", + multiSelect: false, + options: hasHighPriority ? [ + { label: "Export to Issues (Recommended)", description: `${issues.length} high-priority issues found - export to tracker` }, + { label: "Open Dashboard", description: "Review findings in ccw view before exporting" }, + { label: "Skip", description: "Complete discovery without exporting" } + ] : [ + { label: "Open Dashboard (Recommended)", description: "Review findings in ccw view to decide which to export" }, + { label: "Export to Issues", description: `Export ${issues.length} issues to tracker` }, + { label: "Skip", description: "Complete discovery without exporting" } + ] + }] +}); + +if (response === "Export to Issues") { + await appendJsonl('.workflow/issues/issues.jsonl', issues); +} +``` + +## Agent Invocation Template + +### Perspective Analysis Agent + +```javascript +Task({ + subagent_type: "cli-explore-agent", + run_in_background: false, + description: `Discover ${perspective} issues`, + prompt: ` + ## Task Objective + Discover potential ${perspective} issues in specified module files. + + ## Discovery Context + - Discovery ID: ${discoveryId} + - Perspective: ${perspective} + - Target Pattern: ${targetPattern} + - Resolved Files: ${resolvedFiles.length} files + - Output Directory: ${outputDir} + + ## MANDATORY FIRST STEPS + 1. Read discovery state: ${outputDir}/discovery-state.json + 2. Read schema: ~/.claude/workflows/cli-templates/schemas/discovery-finding-schema.json + 3. Analyze target files for ${perspective} concerns + + ## Output Requirements + + **1. Write JSON file**: ${outputDir}/perspectives/${perspective}.json + - Follow discovery-finding-schema.json exactly + - Each finding: id, title, priority, category, description, file, line, snippet, suggested_issue, confidence + + **2. Return summary** (DO NOT write report file): + - Total findings, priority breakdown, key issues + + ## Perspective-Specific Guidance + ${getPerspectiveGuidance(perspective)} + + ## Success Criteria + - [ ] JSON written to ${outputDir}/perspectives/${perspective}.json + - [ ] Summary returned with findings count and key issues + - [ ] Each finding includes actionable suggested_issue + - [ ] Priority uses lowercase enum: critical/high/medium/low + ` +}) +``` + +### Exa Research Agent (for security and best-practices) + +```javascript +Task({ + subagent_type: "cli-explore-agent", + run_in_background: false, + description: `External research for ${perspective} via Exa`, + prompt: ` + ## Task Objective + Research industry best practices for ${perspective} using Exa search + + ## Research Steps + 1. Read project tech stack: .workflow/project-tech.json + 2. Use Exa to search for best practices + 3. Synthesize findings relevant to this project + + ## Output Requirements + **1. Write JSON file**: ${outputDir}/external-research.json + **2. Return summary** (DO NOT write report file) + + ## Success Criteria + - [ ] JSON written to ${outputDir}/external-research.json + - [ ] Findings are relevant to project's tech stack + ` +}) +``` + +## Perspective Guidance Reference + +```javascript +function getPerspectiveGuidance(perspective) { + const guidance = { + bug: `Focus: Null checks, edge cases, resource leaks, race conditions, boundary conditions, exception handling + Priority: Critical=data corruption/crash, High=malfunction, Medium=edge case issues, Low=minor`, + ux: `Focus: Error messages, loading states, feedback, accessibility, interaction patterns, form validation + Priority: Critical=inaccessible, High=confusing, Medium=inconsistent, Low=cosmetic`, + test: `Focus: Missing unit tests, edge case coverage, integration gaps, assertion quality, test isolation + Priority: Critical=no security tests, High=no core logic tests, Medium=weak coverage, Low=minor gaps`, + quality: `Focus: Complexity, duplication, naming, documentation, code smells, readability + Priority: Critical=unmaintainable, High=significant issues, Medium=naming/docs, Low=minor refactoring`, + security: `Focus: Input validation, auth/authz, injection, XSS/CSRF, data exposure, access control + Priority: Critical=auth bypass/injection, High=missing authz, Medium=weak validation, Low=headers`, + performance: `Focus: N+1 queries, memory leaks, caching, algorithm efficiency, blocking operations + Priority: Critical=memory leaks, High=N+1/inefficient, Medium=missing cache, Low=minor optimization`, + maintainability: `Focus: Coupling, interface design, tech debt, extensibility, module boundaries, configuration + Priority: Critical=unrelated code changes, High=unclear boundaries, Medium=coupling, Low=refactoring`, + 'best-practices': `Focus: Framework conventions, language patterns, anti-patterns, deprecated APIs, coding standards + Priority: Critical=anti-patterns causing bugs, High=convention violations, Medium=style, Low=cosmetic` + }; + return guidance[perspective] || 'General code discovery analysis'; +} +``` + +## Output File Structure + +``` +.workflow/issues/discoveries/ +├── index.json # Discovery session index +└── {discovery-id}/ + ├── discovery-state.json # Unified state + ├── perspectives/ + │ └── {perspective}.json # Per-perspective findings + ├── external-research.json # Exa research results (if enabled) + ├── discovery-issues.jsonl # Generated candidate issues + └── summary.md # Summary from agent returns +``` + +## Schema References + +| Schema | Path | Purpose | +|--------|------|---------| +| **Discovery State** | `~/.claude/workflows/cli-templates/schemas/discovery-state-schema.json` | Session state machine | +| **Discovery Finding** | `~/.claude/workflows/cli-templates/schemas/discovery-finding-schema.json` | Perspective analysis results | + +## Error Handling + +| Error | Message | Resolution | +|-------|---------|------------| +| No files matched | Pattern empty | Check target pattern, verify path exists | +| Agent failure | Perspective analysis error | Retry failed perspective, check agent logs | +| No findings | All perspectives clean | Report clean status, no issues to generate | + +## Examples + +```bash +# Quick scan with default perspectives +Skill(skill="issue-lifecycle", args="--action discover src/auth/**") + +# Security-focused audit +Skill(skill="issue-lifecycle", args="--action discover src/payment/** --perspectives=security,bug") + +# Full analysis with external research +Skill(skill="issue-lifecycle", args="--action discover src/api/** --external") +``` + +## Post-Phase Update + +After discovery: +- Findings aggregated with priority distribution +- Issue candidates written to discovery-issues.jsonl +- Report: total findings, issues generated, priority breakdown +- Recommend next step: Export to issues → `/issue:plan` or `issue-resolve` diff --git a/.claude/skills/issue-discover/phases/03-discover-by-prompt.md b/.claude/skills/issue-discover/phases/03-discover-by-prompt.md new file mode 100644 index 00000000..e5c17f57 --- /dev/null +++ b/.claude/skills/issue-discover/phases/03-discover-by-prompt.md @@ -0,0 +1,509 @@ +# Phase 3: Discover by Prompt + +> 来源: `commands/issue/discover-by-prompt.md` + +## Overview + +Prompt-driven issue discovery with intelligent planning. Instead of fixed perspectives, this command analyzes user intent via Gemini, plans exploration strategy dynamically, and executes iterative multi-agent exploration with ACE semantic search. + +**Core workflow**: Prompt Analysis → ACE Context → Gemini Planning → Iterative Exploration → Cross-Analysis → Issue Generation + +**Core Difference from Phase 2 (Discover)**: +- Phase 2: Pre-defined perspectives (bug, security, etc.), parallel execution +- Phase 3: User-driven prompt, Gemini-planned strategy, iterative exploration + +## Prerequisites + +- User prompt describing what to discover +- `ccw cli` available (for Gemini planning) +- `ccw issue` CLI available + +## Auto Mode + +When `--yes` or `-y`: Auto-continue all iterations, skip confirmations. + +## Arguments + +| Argument | Required | Type | Default | Description | +|----------|----------|------|---------|-------------| +| prompt | Yes | String | - | Natural language description of what to find | +| --scope | No | String | `**/*` | File pattern to explore | +| --depth | No | String | `standard` | `standard` (3 iterations) or `deep` (5+ iterations) | +| --max-iterations | No | Integer | 5 | Maximum exploration iterations | +| --plan-only | No | Flag | false | Stop after Gemini planning, show plan | +| -y, --yes | No | Flag | false | Skip all confirmations | + +## Use Cases + +| Scenario | Example Prompt | +|----------|----------------| +| API Contract | "Check if frontend calls match backend endpoints" | +| Error Handling | "Find inconsistent error handling patterns" | +| Migration Gap | "Compare old auth with new auth implementation" | +| Feature Parity | "Verify mobile has all web features" | +| Schema Drift | "Check if TypeScript types match API responses" | +| Integration | "Find mismatches between service A and service B" | + +## Execution Steps + +### Step 3.1: Prompt Analysis & Initialization + +```javascript +// Parse arguments +const { prompt, scope, depth, maxIterations } = parseArgs(args); + +// Generate discovery ID +const discoveryId = `DBP-${formatDate(new Date(), 'YYYYMMDD-HHmmss')}`; + +// Create output directory +const outputDir = `.workflow/issues/discoveries/${discoveryId}`; +await mkdir(outputDir, { recursive: true }); +await mkdir(`${outputDir}/iterations`, { recursive: true }); + +// Detect intent type from prompt +const intentType = detectIntent(prompt); +// Returns: 'comparison' | 'search' | 'verification' | 'audit' + +// Initialize discovery state +await writeJson(`${outputDir}/discovery-state.json`, { + discovery_id: discoveryId, + type: 'prompt-driven', + prompt: prompt, + intent_type: intentType, + scope: scope || '**/*', + depth: depth || 'standard', + max_iterations: maxIterations || 5, + phase: 'initialization', + created_at: new Date().toISOString(), + iterations: [], + cumulative_findings: [], + comparison_matrix: null +}); +``` + +### Step 3.2: ACE Context Gathering + +```javascript +// Extract keywords from prompt for semantic search +const keywords = extractKeywords(prompt); + +// Use ACE to understand codebase structure +const aceQueries = [ + `Project architecture and module structure for ${keywords.join(', ')}`, + `Where are ${keywords[0]} implementations located?`, + `How does ${keywords.slice(0, 2).join(' ')} work in this codebase?` +]; + +const aceResults = []; +for (const query of aceQueries) { + const result = await mcp__ace-tool__search_context({ + project_root_path: process.cwd(), + query: query + }); + aceResults.push({ query, result }); +} + +// Build context package for Gemini (kept in memory) +const aceContext = { + prompt_keywords: keywords, + codebase_structure: aceResults[0].result, + relevant_modules: aceResults.slice(1).map(r => r.result), + detected_patterns: extractPatterns(aceResults) +}; +``` + +**ACE Query Strategy by Intent Type**: + +| Intent | ACE Queries | +|--------|-------------| +| **comparison** | "frontend API calls", "backend API handlers", "API contract definitions" | +| **search** | "{keyword} implementations", "{keyword} usage patterns" | +| **verification** | "expected behavior for {feature}", "test coverage for {feature}" | +| **audit** | "all {category} patterns", "{category} security concerns" | + +### Step 3.3: Gemini Strategy Planning + +```javascript +// Build Gemini planning prompt with ACE context +const planningPrompt = ` +PURPOSE: Analyze discovery prompt and create exploration strategy based on codebase context +TASK: +• Parse user intent from prompt: "${prompt}" +• Use codebase context to identify specific modules and files to explore +• Create exploration dimensions with precise search targets +• Define comparison matrix structure (if comparison intent) +• Set success criteria and iteration strategy +MODE: analysis +CONTEXT: @${scope || '**/*'} | Discovery type: ${intentType} + +## Codebase Context (from ACE semantic search) +${JSON.stringify(aceContext, null, 2)} + +EXPECTED: JSON exploration plan: +{ + "intent_analysis": { "type": "${intentType}", "primary_question": "...", "sub_questions": [...] }, + "dimensions": [{ "name": "...", "description": "...", "search_targets": [...], "focus_areas": [...], "agent_prompt": "..." }], + "comparison_matrix": { "dimension_a": "...", "dimension_b": "...", "comparison_points": [...] }, + "success_criteria": [...], + "estimated_iterations": N, + "termination_conditions": [...] +} +CONSTRAINTS: Use ACE context to inform targets | Focus on actionable plan +`; + +// Execute Gemini planning +Bash({ + command: `ccw cli -p "${planningPrompt}" --tool gemini --mode analysis`, + run_in_background: true, + timeout: 300000 +}); + +// Parse and validate +const explorationPlan = await parseGeminiPlanOutput(geminiResult); +``` + +**Gemini Planning Output Schema**: + +```json +{ + "intent_analysis": { + "type": "comparison|search|verification|audit", + "primary_question": "string", + "sub_questions": ["string"] + }, + "dimensions": [ + { + "name": "frontend", + "description": "Client-side API calls and error handling", + "search_targets": ["src/api/**", "src/hooks/**"], + "focus_areas": ["fetch calls", "error boundaries", "response parsing"], + "agent_prompt": "Explore frontend API consumption patterns..." + } + ], + "comparison_matrix": { + "dimension_a": "frontend", + "dimension_b": "backend", + "comparison_points": [ + {"aspect": "endpoints", "frontend_check": "fetch URLs", "backend_check": "route paths"}, + {"aspect": "methods", "frontend_check": "HTTP methods used", "backend_check": "methods accepted"}, + {"aspect": "payloads", "frontend_check": "request body structure", "backend_check": "expected schema"}, + {"aspect": "responses", "frontend_check": "response parsing", "backend_check": "response format"}, + {"aspect": "errors", "frontend_check": "error handling", "backend_check": "error responses"} + ] + }, + "success_criteria": ["All API endpoints mapped", "Discrepancies identified with file:line"], + "estimated_iterations": 3, + "termination_conditions": ["All comparison points verified", "Confidence > 0.8"] +} +``` + +### Step 3.4: Iterative Agent Exploration (with ACE) + +```javascript +let iteration = 0; +let cumulativeFindings = []; +let sharedContext = { aceDiscoveries: [], crossReferences: [] }; +let shouldContinue = true; + +while (shouldContinue && iteration < maxIterations) { + iteration++; + const iterationDir = `${outputDir}/iterations/${iteration}`; + await mkdir(iterationDir, { recursive: true }); + + // ACE-assisted iteration planning + const iterationAceQueries = iteration === 1 + ? explorationPlan.dimensions.map(d => d.focus_areas[0]) + : deriveQueriesFromFindings(cumulativeFindings); + + const iterationAceResults = []; + for (const query of iterationAceQueries) { + const result = await mcp__ace-tool__search_context({ + project_root_path: process.cwd(), + query: `${query} in ${explorationPlan.scope}` + }); + iterationAceResults.push({ query, result }); + } + + sharedContext.aceDiscoveries.push(...iterationAceResults); + + // Plan this iteration + const iterationPlan = planIteration(iteration, explorationPlan, cumulativeFindings, iterationAceResults); + + // Launch dimension agents with ACE context + const agentPromises = iterationPlan.dimensions.map(dimension => + Task({ + subagent_type: "cli-explore-agent", + run_in_background: false, + description: `Explore ${dimension.name} (iteration ${iteration})`, + prompt: buildDimensionPromptWithACE(dimension, iteration, cumulativeFindings, iterationAceResults, iterationDir) + }) + ); + + const iterationResults = await Promise.all(agentPromises); + + // Collect and analyze iteration findings + const iterationFindings = await collectIterationFindings(iterationDir, iterationPlan.dimensions); + + // Cross-reference findings between dimensions + if (iterationPlan.dimensions.length > 1) { + const crossRefs = findCrossReferences(iterationFindings, iterationPlan.dimensions); + sharedContext.crossReferences.push(...crossRefs); + } + + cumulativeFindings.push(...iterationFindings); + + // Decide whether to continue + const convergenceCheck = checkConvergence(iterationFindings, cumulativeFindings, explorationPlan); + shouldContinue = !convergenceCheck.converged; + + // Update state + await updateDiscoveryState(outputDir, { + iterations: [...state.iterations, { + number: iteration, + findings_count: iterationFindings.length, + ace_queries: iterationAceQueries.length, + cross_references: sharedContext.crossReferences.length, + new_discoveries: convergenceCheck.newDiscoveries, + confidence: convergenceCheck.confidence, + continued: shouldContinue + }], + cumulative_findings: cumulativeFindings + }); +} +``` + +**Iteration Loop**: + +``` +┌─────────────────────────────────────────────────────────────┐ +│ Iteration Loop │ +├─────────────────────────────────────────────────────────────┤ +│ 1. Plan: What to explore this iteration │ +│ └─ Based on: previous findings + unexplored areas │ +│ │ +│ 2. Execute: Launch agents for this iteration │ +│ └─ Each agent: explore → collect → return summary │ +│ │ +│ 3. Analyze: Process iteration results │ +│ └─ New findings? Gaps? Contradictions? │ +│ │ +│ 4. Decide: Continue or terminate │ +│ └─ Terminate if: max iterations OR convergence OR │ +│ high confidence on all questions │ +└─────────────────────────────────────────────────────────────┘ +``` + +### Step 3.5: Cross-Analysis & Synthesis + +```javascript +// For comparison intent, perform cross-analysis +if (intentType === 'comparison' && explorationPlan.comparison_matrix) { + const comparisonResults = []; + + for (const point of explorationPlan.comparison_matrix.comparison_points) { + const dimensionAFindings = cumulativeFindings.filter(f => + f.related_dimension === explorationPlan.comparison_matrix.dimension_a && + f.category.includes(point.aspect) + ); + + const dimensionBFindings = cumulativeFindings.filter(f => + f.related_dimension === explorationPlan.comparison_matrix.dimension_b && + f.category.includes(point.aspect) + ); + + const discrepancies = findDiscrepancies(dimensionAFindings, dimensionBFindings, point); + + comparisonResults.push({ + aspect: point.aspect, + dimension_a_count: dimensionAFindings.length, + dimension_b_count: dimensionBFindings.length, + discrepancies: discrepancies, + match_rate: calculateMatchRate(dimensionAFindings, dimensionBFindings) + }); + } + + await writeJson(`${outputDir}/comparison-analysis.json`, { + matrix: explorationPlan.comparison_matrix, + results: comparisonResults, + summary: { + total_discrepancies: comparisonResults.reduce((sum, r) => sum + r.discrepancies.length, 0), + overall_match_rate: average(comparisonResults.map(r => r.match_rate)), + critical_mismatches: comparisonResults.filter(r => r.match_rate < 0.5) + } + }); +} + +const prioritizedFindings = prioritizeFindings(cumulativeFindings, explorationPlan); +``` + +### Step 3.6: Issue Generation & Summary + +```javascript +// Convert high-confidence findings to issues +const issueWorthy = prioritizedFindings.filter(f => + f.confidence >= 0.7 || f.priority === 'critical' || f.priority === 'high' +); + +const issues = issueWorthy.map(finding => ({ + id: `ISS-${discoveryId}-${finding.id}`, + title: finding.title, + description: finding.description, + source: { discovery_id: discoveryId, finding_id: finding.id, dimension: finding.related_dimension }, + file: finding.file, + line: finding.line, + priority: finding.priority, + category: finding.category, + confidence: finding.confidence, + status: 'discovered', + created_at: new Date().toISOString() +})); + +await writeJsonl(`${outputDir}/discovery-issues.jsonl`, issues); + +// Update final state +await updateDiscoveryState(outputDir, { + phase: 'complete', + updated_at: new Date().toISOString(), + results: { + total_iterations: iteration, + total_findings: cumulativeFindings.length, + issues_generated: issues.length, + comparison_match_rate: comparisonResults + ? average(comparisonResults.map(r => r.match_rate)) + : null + } +}); + +// Prompt user for next action +await AskUserQuestion({ + questions: [{ + question: `Discovery complete: ${issues.length} issues from ${cumulativeFindings.length} findings across ${iteration} iterations. What next?`, + header: "Next Step", + multiSelect: false, + options: [ + { label: "Export to Issues (Recommended)", description: `Export ${issues.length} issues for planning` }, + { label: "Review Details", description: "View comparison analysis and iteration details" }, + { label: "Run Deeper", description: "Continue with more iterations" }, + { label: "Skip", description: "Complete without exporting" } + ] + }] +}); +``` + +## Dimension Agent Prompt Template + +```javascript +function buildDimensionPromptWithACE(dimension, iteration, previousFindings, aceResults, outputDir) { + const relevantAceResults = aceResults.filter(r => + r.query.includes(dimension.name) || dimension.focus_areas.some(fa => r.query.includes(fa)) + ); + + return ` + ## Task Objective + Explore ${dimension.name} dimension for issue discovery (Iteration ${iteration}) + + ## Context + - Dimension: ${dimension.name} + - Description: ${dimension.description} + - Search Targets: ${dimension.search_targets.join(', ')} + - Focus Areas: ${dimension.focus_areas.join(', ')} + + ## ACE Semantic Search Results (Pre-gathered) + ${JSON.stringify(relevantAceResults.map(r => ({ query: r.query, files: r.result.slice(0, 5) })), null, 2)} + + **Use ACE for deeper exploration**: mcp__ace-tool__search_context available. + + ${iteration > 1 ? ` + ## Previous Findings to Build Upon + ${summarizePreviousFindings(previousFindings, dimension.name)} + + ## This Iteration Focus + - Explore areas not yet covered + - Verify/deepen previous findings + - Follow leads from previous discoveries + ` : ''} + + ## MANDATORY FIRST STEPS + 1. Read schema: ~/.claude/workflows/cli-templates/schemas/discovery-finding-schema.json + 2. Review ACE results above for starting points + 3. Explore files identified by ACE + + ## Exploration Instructions + ${dimension.agent_prompt} + + ## Output Requirements + **1. Write JSON file**: ${outputDir}/${dimension.name}.json + - findings: [{id, title, category, description, file, line, snippet, confidence, related_dimension}] + - coverage: {files_explored, areas_covered, areas_remaining} + - leads: [{description, suggested_search}] + - ace_queries_used: [{query, result_count}] + + **2. Return summary**: Total findings, key discoveries, recommended next areas + `; +} +``` + +## Output File Structure + +``` +.workflow/issues/discoveries/ +└── {DBP-YYYYMMDD-HHmmss}/ + ├── discovery-state.json # Session state with iteration tracking + ├── iterations/ + │ ├── 1/ + │ │ └── {dimension}.json # Dimension findings + │ ├── 2/ + │ │ └── {dimension}.json + │ └── ... + ├── comparison-analysis.json # Cross-dimension comparison (if applicable) + └── discovery-issues.jsonl # Generated issue candidates +``` + +## Configuration Options + +| Flag | Default | Description | +|------|---------|-------------| +| `--scope` | `**/*` | File pattern to explore | +| `--depth` | `standard` | `standard` (3 iterations) or `deep` (5+ iterations) | +| `--max-iterations` | 5 | Maximum exploration iterations | +| `--tool` | `gemini` | Planning tool (gemini/qwen) | +| `--plan-only` | `false` | Stop after Gemini planning, show plan | + +## Schema References + +| Schema | Path | Used By | +|--------|------|---------| +| **Discovery State** | `discovery-state-schema.json` | Orchestrator (state tracking) | +| **Discovery Finding** | `discovery-finding-schema.json` | Dimension agents (output) | +| **Exploration Plan** | `exploration-plan-schema.json` | Gemini output validation (memory only) | + +## Error Handling + +| Error | Message | Resolution | +|-------|---------|------------| +| Gemini planning failed | CLI error | Retry with qwen fallback | +| ACE search failed | No results | Fall back to file glob patterns | +| No findings after iterations | Convergence at 0 | Report clean status | +| Agent timeout | Exploration too large | Narrow scope, reduce iterations | + +## Examples + +```bash +# Single module deep dive +Skill(skill="issue-discover", args="--action discover-by-prompt \"Find all potential issues in auth\" --scope=src/auth/**") + +# API contract comparison +Skill(skill="issue-discover", args="--action discover-by-prompt \"Check if API calls match implementations\" --scope=src/**") + +# Plan only mode +Skill(skill="issue-discover", args="--action discover-by-prompt \"Find inconsistent patterns\" --plan-only") +``` + +## Post-Phase Update + +After prompt-driven discovery: +- Findings aggregated across iterations with confidence scores +- Comparison analysis generated (if comparison intent) +- Issue candidates written to discovery-issues.jsonl +- Report: total iterations, findings, issues, match rate +- Recommend next step: Export → issue-resolve (plan solutions) diff --git a/ccw/docs-site/.docusaurus/client-manifest.json b/ccw/docs-site/.docusaurus/client-manifest.json index 7a76ecda..583c65a3 100644 --- a/ccw/docs-site/.docusaurus/client-manifest.json +++ b/ccw/docs-site/.docusaurus/client-manifest.json @@ -44,6 +44,10 @@ "1e3006f3": [ 975 ], + "2a5e3eff": [ + 869, + 194 + ], "2ecf8b4a": [ 856 ], @@ -120,10 +124,6 @@ "e5f6eee3": [ 439 ], - "ea313555": [ - 869, - 11 - ], "f1bf82ec": [ 954 ], @@ -140,9 +140,9 @@ 971 ], "styles": [ - 11, 48, 82, + 194, 354, 401, 792, @@ -150,20 +150,11 @@ ] }, "assets": { - "11": { - "js": [ - { - "file": "assets/js/ea313555.a8cac875.js", - "hash": "98808163b4aebb60", - "publicPath": "/docs/zh/assets/js/ea313555.a8cac875.js" - } - ] - }, "17": { "js": [ { "file": "assets/js/ccef5d0f.7361a812.js", - "hash": "0e17d00d228f3086", + "hash": "2a3425a9088e2262", "publicPath": "/docs/zh/assets/js/ccef5d0f.7361a812.js" } ] @@ -172,7 +163,7 @@ "js": [ { "file": "assets/js/157db180.00b15415.js", - "hash": "918fd20df06bdd3c", + "hash": "d4933c3c0c252301", "publicPath": "/docs/zh/assets/js/157db180.00b15415.js" } ] @@ -181,7 +172,7 @@ "js": [ { "file": "assets/js/a94703ab.7b43e8e3.js", - "hash": "3d3895729cce8c0b", + "hash": "4c8ec87be30ee2d8", "publicPath": "/docs/zh/assets/js/a94703ab.7b43e8e3.js" } ] @@ -190,7 +181,7 @@ "js": [ { "file": "assets/js/82.83021dee.js", - "hash": "85e1a90e6c998c54", + "hash": "bb66f578d25da052", "publicPath": "/docs/zh/assets/js/82.83021dee.js" } ] @@ -199,7 +190,7 @@ "js": [ { "file": "assets/js/a7bd4aaa.e4fb75f9.js", - "hash": "1750b84b0b2f61c9", + "hash": "81d45c5d1a916e68", "publicPath": "/docs/zh/assets/js/a7bd4aaa.e4fb75f9.js" } ] @@ -208,7 +199,7 @@ "js": [ { "file": "assets/js/5c7b2278.b4090abe.js", - "hash": "71574b7b7d2c83ce", + "hash": "b2d5d25d26800dfa", "publicPath": "/docs/zh/assets/js/5c7b2278.b4090abe.js" } ] @@ -217,7 +208,7 @@ "js": [ { "file": "assets/js/05467734.307672f8.js", - "hash": "96f709a4d6b52432", + "hash": "1e4f1f3424542f4f", "publicPath": "/docs/zh/assets/js/05467734.307672f8.js" } ] @@ -226,7 +217,7 @@ "js": [ { "file": "assets/js/0566a0a8.395f48cb.js", - "hash": "198b28e820aa41fc", + "hash": "00b2b3257c37b29a", "publicPath": "/docs/zh/assets/js/0566a0a8.395f48cb.js" } ] @@ -235,17 +226,26 @@ "js": [ { "file": "assets/js/4cc74730.d1e6f3c3.js", - "hash": "f01d078d31309a78", + "hash": "bf533f67d220fdaf", "publicPath": "/docs/zh/assets/js/4cc74730.d1e6f3c3.js" } ] }, + "194": { + "js": [ + { + "file": "assets/js/2a5e3eff.609d8c08.js", + "hash": "724b07d9ba5ba7c6", + "publicPath": "/docs/zh/assets/js/2a5e3eff.609d8c08.js" + } + ] + }, "207": { "js": [ { - "file": "assets/js/562bb8cb.2d7d52c7.js", - "hash": "fe9fce65416e15af", - "publicPath": "/docs/zh/assets/js/562bb8cb.2d7d52c7.js" + "file": "assets/js/562bb8cb.0a522bdb.js", + "hash": "7c1a0b8fdf5c0a48", + "publicPath": "/docs/zh/assets/js/562bb8cb.0a522bdb.js" } ] }, @@ -253,7 +253,7 @@ "js": [ { "file": "assets/js/60eef997.a2c45f16.js", - "hash": "54f81f325929da90", + "hash": "d02b9094f87f956c", "publicPath": "/docs/zh/assets/js/60eef997.a2c45f16.js" } ] @@ -262,7 +262,7 @@ "js": [ { "file": "assets/js/8a7e39ed.b54858fe.js", - "hash": "2817123aeb7d32ac", + "hash": "5868d263ae1358bd", "publicPath": "/docs/zh/assets/js/8a7e39ed.b54858fe.js" } ] @@ -271,7 +271,7 @@ "js": [ { "file": "assets/js/666bb1bf.2b6e95d2.js", - "hash": "ef2f24c1ec061280", + "hash": "dcd1cf7c357018b2", "publicPath": "/docs/zh/assets/js/666bb1bf.2b6e95d2.js" } ] @@ -279,9 +279,9 @@ "354": { "js": [ { - "file": "assets/js/runtime~main.1a215224.js", - "hash": "6124961f9fb0fe95", - "publicPath": "/docs/zh/assets/js/runtime~main.1a215224.js" + "file": "assets/js/runtime~main.526a5acf.js", + "hash": "cbd0344130182291", + "publicPath": "/docs/zh/assets/js/runtime~main.526a5acf.js" } ] }, @@ -289,7 +289,7 @@ "js": [ { "file": "assets/js/775938bf.0f3b32d9.js", - "hash": "5b8d55ebddf46ae1", + "hash": "32cd7faaf01a6631", "publicPath": "/docs/zh/assets/js/775938bf.0f3b32d9.js" } ] @@ -298,7 +298,7 @@ "js": [ { "file": "assets/js/17896441.1cf08a80.js", - "hash": "31f054e7c91e39e1", + "hash": "bbd5207796a81a7f", "publicPath": "/docs/zh/assets/js/17896441.1cf08a80.js" } ] @@ -307,7 +307,7 @@ "js": [ { "file": "assets/js/611877e1.b99788ce.js", - "hash": "1f4eb10fcc0d7bb9", + "hash": "5b23dae9d2ecf5bd", "publicPath": "/docs/zh/assets/js/611877e1.b99788ce.js" } ] @@ -316,7 +316,7 @@ "js": [ { "file": "assets/js/d550a629.32ac07bc.js", - "hash": "4a04e7bb115ccdba", + "hash": "42b88faf9a023a69", "publicPath": "/docs/zh/assets/js/d550a629.32ac07bc.js" } ] @@ -325,7 +325,7 @@ "js": [ { "file": "assets/js/1bac9067.1dc1a696.js", - "hash": "95d5ff66f8beeb02", + "hash": "e22436f8bfdfb3a2", "publicPath": "/docs/zh/assets/js/1bac9067.1dc1a696.js" } ] @@ -334,7 +334,7 @@ "js": [ { "file": "assets/js/e5f6eee3.c7efecd7.js", - "hash": "681c2899b3855519", + "hash": "f918fc8fa696be00", "publicPath": "/docs/zh/assets/js/e5f6eee3.c7efecd7.js" } ] @@ -343,7 +343,7 @@ "js": [ { "file": "assets/js/f9222419.d1b7c198.js", - "hash": "60f2220087f6c664", + "hash": "2d0c718a63788e67", "publicPath": "/docs/zh/assets/js/f9222419.d1b7c198.js" } ] @@ -352,7 +352,7 @@ "js": [ { "file": "assets/js/3f1fe4a1.3b4b8b58.js", - "hash": "85711ebf4945bf72", + "hash": "47d50fa1d69b27c9", "publicPath": "/docs/zh/assets/js/3f1fe4a1.3b4b8b58.js" } ] @@ -361,7 +361,7 @@ "js": [ { "file": "assets/js/46f40178.a8a5a914.js", - "hash": "328f7f208a4181bf", + "hash": "826253ff3432b782", "publicPath": "/docs/zh/assets/js/46f40178.a8a5a914.js" } ] @@ -370,7 +370,7 @@ "js": [ { "file": "assets/js/5e95c892.ba4a4619.js", - "hash": "3cc647af053c2b2c", + "hash": "747c9653114e6d39", "publicPath": "/docs/zh/assets/js/5e95c892.ba4a4619.js" } ] @@ -378,9 +378,9 @@ "663": { "js": [ { - "file": "assets/js/6ab014e9.bb0f8763.js", - "hash": "26dd3187efed794c", - "publicPath": "/docs/zh/assets/js/6ab014e9.bb0f8763.js" + "file": "assets/js/6ab014e9.2a166019.js", + "hash": "184c8d86d15f280a", + "publicPath": "/docs/zh/assets/js/6ab014e9.2a166019.js" } ] }, @@ -388,7 +388,7 @@ "js": [ { "file": "assets/js/723.83f5aec0.js", - "hash": "47660b0931f0819c", + "hash": "72c18a437c5c3b28", "publicPath": "/docs/zh/assets/js/723.83f5aec0.js" } ] @@ -406,7 +406,7 @@ "js": [ { "file": "assets/js/fabaf1c8.295c1a59.js", - "hash": "68fd7d7220cc35db", + "hash": "19b305a706a05529", "publicPath": "/docs/zh/assets/js/fabaf1c8.295c1a59.js" } ] @@ -414,9 +414,9 @@ "792": { "js": [ { - "file": "assets/js/main.4a9bfa07.js", - "hash": "0bc96b50c8fc427f", - "publicPath": "/docs/zh/assets/js/main.4a9bfa07.js" + "file": "assets/js/main.cad7fa6a.js", + "hash": "21daae78c3598897", + "publicPath": "/docs/zh/assets/js/main.cad7fa6a.js" } ] }, @@ -424,7 +424,7 @@ "js": [ { "file": "assets/js/97c6e66a.6d0689f8.js", - "hash": "91ecf6f996275643", + "hash": "7b8adf59aa7b2311", "publicPath": "/docs/zh/assets/js/97c6e66a.6d0689f8.js" } ] @@ -433,7 +433,7 @@ "js": [ { "file": "assets/js/9cf7cb6b.a74b65de.js", - "hash": "02453fb94bf33eb2", + "hash": "e3e36eaf896e5c79", "publicPath": "/docs/zh/assets/js/9cf7cb6b.a74b65de.js" } ] @@ -441,9 +441,9 @@ "834": { "js": [ { - "file": "assets/js/b17e4002.fc526d3a.js", - "hash": "58c9d40ca4618cfc", - "publicPath": "/docs/zh/assets/js/b17e4002.fc526d3a.js" + "file": "assets/js/b17e4002.daa3d934.js", + "hash": "67a21cc43151b72b", + "publicPath": "/docs/zh/assets/js/b17e4002.daa3d934.js" } ] }, @@ -451,7 +451,7 @@ "js": [ { "file": "assets/js/4ad7db0f.2e6ab2d6.js", - "hash": "5803e317f81f61c6", + "hash": "b282a8c148255b07", "publicPath": "/docs/zh/assets/js/4ad7db0f.2e6ab2d6.js" } ] @@ -460,7 +460,7 @@ "js": [ { "file": "assets/js/2ecf8b4a.1a4b0ac6.js", - "hash": "0210dacf01a681b4", + "hash": "7b6594a63e0f339a", "publicPath": "/docs/zh/assets/js/2ecf8b4a.1a4b0ac6.js" } ] @@ -468,9 +468,9 @@ "869": { "css": [ { - "file": "assets/css/styles.356d38c2.css", - "hash": "17ddbe7db721a436", - "publicPath": "/docs/zh/assets/css/styles.356d38c2.css" + "file": "assets/css/styles.b656bddd.css", + "hash": "92b76fb174bd4ea8", + "publicPath": "/docs/zh/assets/css/styles.b656bddd.css" } ] }, @@ -478,7 +478,7 @@ "js": [ { "file": "assets/js/f4817052.03d1c334.js", - "hash": "7e08c473f4d4135e", + "hash": "d92568ab2e816362", "publicPath": "/docs/zh/assets/js/f4817052.03d1c334.js" } ] @@ -487,7 +487,7 @@ "js": [ { "file": "assets/js/04db0a2e.364684cb.js", - "hash": "7a84637418e8aac9", + "hash": "ee7174f95cb4a1f1", "publicPath": "/docs/zh/assets/js/04db0a2e.364684cb.js" } ] @@ -496,7 +496,7 @@ "js": [ { "file": "assets/js/7a1ee27c.3dd83112.js", - "hash": "36c1991066875705", + "hash": "b1ee424b287700c7", "publicPath": "/docs/zh/assets/js/7a1ee27c.3dd83112.js" } ] @@ -505,7 +505,7 @@ "js": [ { "file": "assets/js/f1bf82ec.336ffb8a.js", - "hash": "afcb58dad6003e6b", + "hash": "b81e3cb730a8b513", "publicPath": "/docs/zh/assets/js/f1bf82ec.336ffb8a.js" } ] @@ -514,7 +514,7 @@ "js": [ { "file": "assets/js/fe8e3dcf.a08a438a.js", - "hash": "ba80bc749ab1e19f", + "hash": "6efbd830a7b3f207", "publicPath": "/docs/zh/assets/js/fe8e3dcf.a08a438a.js" } ] @@ -523,7 +523,7 @@ "js": [ { "file": "assets/js/1e3006f3.cad7edf6.js", - "hash": "c8612d5098bf0f46", + "hash": "484dbf19d134d042", "publicPath": "/docs/zh/assets/js/1e3006f3.cad7edf6.js" } ] @@ -532,7 +532,7 @@ "js": [ { "file": "assets/js/a6c3df16.3c82de99.js", - "hash": "124682d4c634d883", + "hash": "6dd042d44d4e1a9b", "publicPath": "/docs/zh/assets/js/a6c3df16.3c82de99.js" } ] diff --git a/ccw/docs-site/.docusaurus/docusaurus-plugin-content-docs/default/p/docs-zh-d2a.json b/ccw/docs-site/.docusaurus/docusaurus-plugin-content-docs/default/p/docs-zh-d2a.json index 61fcda48..b289f924 100644 --- a/ccw/docs-site/.docusaurus/docusaurus-plugin-content-docs/default/p/docs-zh-d2a.json +++ b/ccw/docs-site/.docusaurus/docusaurus-plugin-content-docs/default/p/docs-zh-d2a.json @@ -1 +1 @@ -{"version":{"pluginId":"default","version":"current","label":"当前","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"link","href":"/docs/zh/","label":"首页","docId":"index","unlisted":false},{"type":"link","href":"/docs/zh/overview","label":"概览","docId":"overview","unlisted":false},{"type":"category","label":"命令","collapsible":true,"collapsed":false,"items":[{"type":"category","label":"通用命令","collapsible":true,"collapsed":false,"items":[{"type":"link","href":"/docs/zh/commands/general/ccw","label":"/ccw","docId":"commands/general/ccw","unlisted":false},{"type":"link","href":"/docs/zh/commands/general/ccw-plan","label":"/ccw-plan","docId":"commands/general/ccw-plan","unlisted":false},{"type":"link","href":"/docs/zh/commands/general/ccw-test","label":"/ccw-test","docId":"commands/general/ccw-test","unlisted":false},{"type":"link","href":"/docs/zh/commands/general/ccw-coordinator","label":"/ccw-coordinator","docId":"commands/general/ccw-coordinator","unlisted":false},{"type":"link","href":"/docs/zh/commands/general/ccw-debug","label":"/ccw-debug","docId":"commands/general/ccw-debug","unlisted":false},{"type":"link","href":"/docs/zh/commands/general/flow-create","label":"/flow-create","docId":"commands/general/flow-create","unlisted":false},{"type":"link","href":"/docs/zh/commands/general/codex-coordinator","label":"/codex-coordinator","docId":"commands/general/codex-coordinator","unlisted":false}]},{"type":"category","label":"Issue 命令","collapsible":true,"collapsed":false,"items":[{"type":"link","href":"/docs/zh/commands/issue/issue-new","label":"issue:new","docId":"commands/issue/issue-new","unlisted":false},{"type":"link","href":"/docs/zh/commands/issue/issue-discover","label":"issue:discover","docId":"commands/issue/issue-discover","unlisted":false},{"type":"link","href":"/docs/zh/commands/issue/issue-plan","label":"issue:plan","docId":"commands/issue/issue-plan","unlisted":false},{"type":"link","href":"/docs/zh/commands/issue/issue-queue","label":"issue:queue","docId":"commands/issue/issue-queue","unlisted":false},{"type":"link","href":"/docs/zh/commands/issue/issue-execute","label":"issue:execute","docId":"commands/issue/issue-execute","unlisted":false},{"type":"link","href":"/docs/zh/commands/issue/issue-from-brainstorm","label":"issue:from-brainstorm","docId":"commands/issue/issue-from-brainstorm","unlisted":false},{"type":"link","href":"/docs/zh/commands/issue/issue-convert-to-plan","label":"issue:convert-to-plan","docId":"commands/issue/issue-convert-to-plan","unlisted":false}]},{"type":"category","label":"CLI 命令","collapsible":true,"collapsed":false,"items":[{"type":"link","href":"/docs/zh/commands/cli/cli-init","label":"/cli:cli-init","docId":"commands/cli/cli-init","unlisted":false},{"type":"link","href":"/docs/zh/commands/cli/codex-review","label":"/cli:codex-review","docId":"commands/cli/codex-review","unlisted":false}]},{"type":"category","label":"Memory 命令","collapsible":true,"collapsed":false,"items":[{"type":"link","href":"/docs/zh/commands/memory/memory-update-full","label":"/memory:update-full","docId":"commands/memory/memory-update-full","unlisted":false},{"type":"link","href":"/docs/zh/commands/memory/memory-update-related","label":"/memory:update-related","docId":"commands/memory/memory-update-related","unlisted":false},{"type":"link","href":"/docs/zh/commands/memory/memory-load","label":"/memory:load","docId":"commands/memory/memory-load","unlisted":false},{"type":"link","href":"/docs/zh/commands/memory/memory-docs-full-cli","label":"/memory:docs-full-cli","docId":"commands/memory/memory-docs-full-cli","unlisted":false},{"type":"link","href":"/docs/zh/commands/memory/memory-docs-related-cli","label":"/memory:docs-related-cli","docId":"commands/memory/memory-docs-related-cli","unlisted":false},{"type":"link","href":"/docs/zh/commands/memory/memory-compact","label":"/memory:compact","docId":"commands/memory/memory-compact","unlisted":false}]}]},{"type":"category","label":"工作流","collapsible":true,"collapsed":false,"items":[{"type":"link","href":"/docs/zh/workflows/introduction","label":"介绍","docId":"workflows/introduction","unlisted":false},{"type":"link","href":"/docs/zh/workflows/level-1-ultra-lightweight","label":"级别 1:超轻量","docId":"workflows/level-1-ultra-lightweight","unlisted":false},{"type":"link","href":"/docs/zh/workflows/level-2-rapid","label":"级别 2:快速","docId":"workflows/level-2-rapid","unlisted":false},{"type":"link","href":"/docs/zh/workflows/level-3-standard","label":"级别 3:标准","docId":"workflows/level-3-standard","unlisted":false},{"type":"link","href":"/docs/zh/workflows/level-4-brainstorm","label":"级别 4:头脑风暴","docId":"workflows/level-4-brainstorm","unlisted":false},{"type":"link","href":"/docs/zh/workflows/level-5-intelligent","label":"级别 5:智能","docId":"workflows/level-5-intelligent","unlisted":false}]},{"type":"link","href":"/docs/zh/faq","label":"FAQ","docId":"faq","unlisted":false}]},"docs":{"commands/cli/cli-init":{"id":"commands/cli/cli-init","title":"/cli:cli-init","description":"Initialize CLI configuration for workspace with automatic technology detection","sidebar":"docs"},"commands/cli/codex-review":{"id":"commands/cli/codex-review","title":"/cli:codex-review","description":"Interactive code review using Codex CLI with configurable review targets","sidebar":"docs"},"commands/general/ccw":{"id":"commands/general/ccw","title":"/ccw","description":"Main CCW workflow coordinator for intelligent command orchestration","sidebar":"docs"},"commands/general/ccw-coordinator":{"id":"commands/general/ccw-coordinator","title":"/ccw-coordinator","description":"Generic command orchestration tool for CCW workflows","sidebar":"docs"},"commands/general/ccw-debug":{"id":"commands/general/ccw-debug","title":"/ccw-debug","description":"Debug coordinator for intelligent debugging workflows","sidebar":"docs"},"commands/general/ccw-plan":{"id":"commands/general/ccw-plan","title":"/ccw-plan","description":"Planning coordinator for intelligent workflow selection","sidebar":"docs"},"commands/general/ccw-test":{"id":"commands/general/ccw-test","title":"/ccw-test","description":"Test workflow coordinator for testing strategies","sidebar":"docs"},"commands/general/codex-coordinator":{"id":"commands/general/codex-coordinator","title":"/codex-coordinator","description":"Command orchestration tool for Codex workflows","sidebar":"docs"},"commands/general/flow-create":{"id":"commands/general/flow-create","title":"/flow-create","description":"Generate workflow templates for flow-coordinator","sidebar":"docs"},"commands/issue/issue-convert-to-plan":{"id":"commands/issue/issue-convert-to-plan","title":"issue:convert-to-plan","description":"Convert planning artifacts to issue solutions","sidebar":"docs"},"commands/issue/issue-discover":{"id":"commands/issue/issue-discover","title":"issue:discover","description":"Discover potential issues from multiple code analysis perspectives","sidebar":"docs"},"commands/issue/issue-execute":{"id":"commands/issue/issue-execute","title":"issue:execute","description":"Execute issue queue with DAG-based parallel orchestration","sidebar":"docs"},"commands/issue/issue-from-brainstorm":{"id":"commands/issue/issue-from-brainstorm","title":"issue:from-brainstorm","description":"Convert brainstorm session ideas into issues with solutions","sidebar":"docs"},"commands/issue/issue-new":{"id":"commands/issue/issue-new","title":"issue:new","description":"Create new issue with automatic categorization","sidebar":"docs"},"commands/issue/issue-plan":{"id":"commands/issue/issue-plan","title":"issue:plan","description":"Plan issue solutions with exploration and task breakdown","sidebar":"docs"},"commands/issue/issue-queue":{"id":"commands/issue/issue-queue","title":"issue:queue","description":"Form execution queue from bound solutions with conflict resolution","sidebar":"docs"},"commands/memory/memory-compact":{"id":"commands/memory/memory-compact","title":"/memory:compact","description":"Compact session memory into structured text for recovery","sidebar":"docs"},"commands/memory/memory-docs-full-cli":{"id":"commands/memory/memory-docs-full-cli","title":"/memory:docs-full-cli","description":"Generate full CLI documentation for all project modules","sidebar":"docs"},"commands/memory/memory-docs-related-cli":{"id":"commands/memory/memory-docs-related-cli","title":"/memory:docs-related-cli","description":"Generate CLI documentation for git-changed modules","sidebar":"docs"},"commands/memory/memory-load":{"id":"commands/memory/memory-load","title":"/memory:load","description":"Load project context and core content into memory","sidebar":"docs"},"commands/memory/memory-update-full":{"id":"commands/memory/memory-update-full","title":"/memory:update-full","description":"Update CLAUDE.md for all project modules using batched agent execution","sidebar":"docs"},"commands/memory/memory-update-related":{"id":"commands/memory/memory-update-related","title":"/memory:update-related","description":"Update CLAUDE.md for git-changed modules using batched execution","sidebar":"docs"},"faq":{"id":"faq","title":"Frequently Asked Questions","description":"Common questions about CCW, workflows, commands, and troubleshooting.","sidebar":"docs"},"index":{"id":"index","title":"CCW 帮助文档","description":"工作流","sidebar":"docs"},"overview":{"id":"overview","title":"欢迎使用 CCW","description":"CCW 是一个专业的工作流自动化平台,结合了 AI 驱动的智能与结构化开发工作流。凭借 40+ 命令和 15 个集成工作流,CCW 彻底改变了您构建、测试和交付软件的方式。","sidebar":"docs"},"workflows/faq":{"id":"workflows/faq","title":"工作流常见问题","description":"工作流使用中的常见问题和解答"},"workflows/introduction":{"id":"workflows/introduction","title":"工作流介绍","description":"CCW 工作流全面概述 - 从急速执行到智能编排","sidebar":"docs"},"workflows/level-1-ultra-lightweight":{"id":"workflows/level-1-ultra-lightweight","title":"层级 1: 超轻量工作流","description":"急速执行工作流 - 零开销直接执行","sidebar":"docs"},"workflows/level-2-rapid":{"id":"workflows/level-2-rapid","title":"层级 2: 快速工作流","description":"轻量规划和漏洞诊断工作流 - 适用于单模块功能","sidebar":"docs"},"workflows/level-3-standard":{"id":"workflows/level-3-standard","title":"层级 3: 标准工作流","description":"标准规划工作流 - 完整规划和 TDD 开发","sidebar":"docs"},"workflows/level-4-brainstorm":{"id":"workflows/level-4-brainstorm","title":"层级 4: 头脑风暴工作流","description":"多角色头脑风暴工作流 - 协作探索和创意生成","sidebar":"docs"},"workflows/level-5-intelligent":{"id":"workflows/level-5-intelligent","title":"层级 5: 智能工作流","description":"智能编排工作流 - 自动分析和推荐","sidebar":"docs"}}}} \ No newline at end of file +{"version":{"pluginId":"default","version":"current","label":"当前","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"link","href":"/docs/zh/","label":"首页","docId":"index","unlisted":false},{"type":"link","href":"/docs/zh/overview","label":"概览","docId":"overview","unlisted":false},{"type":"category","label":"命令","collapsible":true,"collapsed":false,"items":[{"type":"category","label":"通用命令","collapsible":true,"collapsed":false,"items":[{"type":"link","href":"/docs/zh/commands/general/ccw","label":"/ccw","docId":"commands/general/ccw","unlisted":false},{"type":"link","href":"/docs/zh/commands/general/ccw-plan","label":"/ccw-plan","docId":"commands/general/ccw-plan","unlisted":false},{"type":"link","href":"/docs/zh/commands/general/ccw-test","label":"/ccw-test","docId":"commands/general/ccw-test","unlisted":false},{"type":"link","href":"/docs/zh/commands/general/ccw-coordinator","label":"/ccw-coordinator","docId":"commands/general/ccw-coordinator","unlisted":false},{"type":"link","href":"/docs/zh/commands/general/ccw-debug","label":"/ccw-debug","docId":"commands/general/ccw-debug","unlisted":false},{"type":"link","href":"/docs/zh/commands/general/flow-create","label":"/flow-create","docId":"commands/general/flow-create","unlisted":false},{"type":"link","href":"/docs/zh/commands/general/codex-coordinator","label":"/codex-coordinator","docId":"commands/general/codex-coordinator","unlisted":false}]},{"type":"category","label":"Issue 命令","collapsible":true,"collapsed":false,"items":[{"type":"link","href":"/docs/zh/commands/issue/issue-new","label":"issue:new","docId":"commands/issue/issue-new","unlisted":false},{"type":"link","href":"/docs/zh/commands/issue/issue-discover","label":"issue:discover","docId":"commands/issue/issue-discover","unlisted":false},{"type":"link","href":"/docs/zh/commands/issue/issue-plan","label":"issue:plan","docId":"commands/issue/issue-plan","unlisted":false},{"type":"link","href":"/docs/zh/commands/issue/issue-queue","label":"issue:queue","docId":"commands/issue/issue-queue","unlisted":false},{"type":"link","href":"/docs/zh/commands/issue/issue-execute","label":"issue:execute","docId":"commands/issue/issue-execute","unlisted":false},{"type":"link","href":"/docs/zh/commands/issue/issue-from-brainstorm","label":"issue:from-brainstorm","docId":"commands/issue/issue-from-brainstorm","unlisted":false},{"type":"link","href":"/docs/zh/commands/issue/issue-convert-to-plan","label":"issue:convert-to-plan","docId":"commands/issue/issue-convert-to-plan","unlisted":false}]},{"type":"category","label":"CLI 命令","collapsible":true,"collapsed":false,"items":[{"type":"link","href":"/docs/zh/commands/cli/cli-init","label":"/cli:cli-init","docId":"commands/cli/cli-init","unlisted":false},{"type":"link","href":"/docs/zh/commands/cli/codex-review","label":"/cli:codex-review","docId":"commands/cli/codex-review","unlisted":false}]},{"type":"category","label":"Memory 命令","collapsible":true,"collapsed":false,"items":[{"type":"link","href":"/docs/zh/commands/memory/memory-update-full","label":"/memory:update-full","docId":"commands/memory/memory-update-full","unlisted":false},{"type":"link","href":"/docs/zh/commands/memory/memory-update-related","label":"/memory:update-related","docId":"commands/memory/memory-update-related","unlisted":false},{"type":"link","href":"/docs/zh/commands/memory/memory-load","label":"/memory:load","docId":"commands/memory/memory-load","unlisted":false},{"type":"link","href":"/docs/zh/commands/memory/memory-docs-full-cli","label":"/memory:docs-full-cli","docId":"commands/memory/memory-docs-full-cli","unlisted":false},{"type":"link","href":"/docs/zh/commands/memory/memory-docs-related-cli","label":"/memory:docs-related-cli","docId":"commands/memory/memory-docs-related-cli","unlisted":false},{"type":"link","href":"/docs/zh/commands/memory/memory-compact","label":"/memory:compact","docId":"commands/memory/memory-compact","unlisted":false}]}]},{"type":"category","label":"工作流","collapsible":true,"collapsed":false,"items":[{"type":"link","href":"/docs/zh/workflows/introduction","label":"介绍","docId":"workflows/introduction","unlisted":false},{"type":"link","href":"/docs/zh/workflows/level-1-ultra-lightweight","label":"级别 1:超轻量","docId":"workflows/level-1-ultra-lightweight","unlisted":false},{"type":"link","href":"/docs/zh/workflows/level-2-rapid","label":"级别 2:快速","docId":"workflows/level-2-rapid","unlisted":false},{"type":"link","href":"/docs/zh/workflows/level-3-standard","label":"级别 3:标准","docId":"workflows/level-3-standard","unlisted":false},{"type":"link","href":"/docs/zh/workflows/level-4-brainstorm","label":"级别 4:头脑风暴","docId":"workflows/level-4-brainstorm","unlisted":false},{"type":"link","href":"/docs/zh/workflows/level-5-intelligent","label":"级别 5:智能","docId":"workflows/level-5-intelligent","unlisted":false}]},{"type":"link","href":"/docs/zh/faq","label":"常见问题","docId":"faq","unlisted":false}]},"docs":{"commands/cli/cli-init":{"id":"commands/cli/cli-init","title":"/cli:cli-init","description":"Initialize CLI configuration for workspace with automatic technology detection","sidebar":"docs"},"commands/cli/codex-review":{"id":"commands/cli/codex-review","title":"/cli:codex-review","description":"Interactive code review using Codex CLI with configurable review targets","sidebar":"docs"},"commands/general/ccw":{"id":"commands/general/ccw","title":"/ccw","description":"Main CCW workflow coordinator for intelligent command orchestration","sidebar":"docs"},"commands/general/ccw-coordinator":{"id":"commands/general/ccw-coordinator","title":"/ccw-coordinator","description":"Generic command orchestration tool for CCW workflows","sidebar":"docs"},"commands/general/ccw-debug":{"id":"commands/general/ccw-debug","title":"/ccw-debug","description":"Debug coordinator for intelligent debugging workflows","sidebar":"docs"},"commands/general/ccw-plan":{"id":"commands/general/ccw-plan","title":"/ccw-plan","description":"Planning coordinator for intelligent workflow selection","sidebar":"docs"},"commands/general/ccw-test":{"id":"commands/general/ccw-test","title":"/ccw-test","description":"Test workflow coordinator for testing strategies","sidebar":"docs"},"commands/general/codex-coordinator":{"id":"commands/general/codex-coordinator","title":"/codex-coordinator","description":"Command orchestration tool for Codex workflows","sidebar":"docs"},"commands/general/flow-create":{"id":"commands/general/flow-create","title":"/flow-create","description":"Generate workflow templates for flow-coordinator","sidebar":"docs"},"commands/issue/issue-convert-to-plan":{"id":"commands/issue/issue-convert-to-plan","title":"issue:convert-to-plan","description":"Convert planning artifacts to issue solutions","sidebar":"docs"},"commands/issue/issue-discover":{"id":"commands/issue/issue-discover","title":"issue:discover","description":"Discover potential issues from multiple code analysis perspectives","sidebar":"docs"},"commands/issue/issue-execute":{"id":"commands/issue/issue-execute","title":"issue:execute","description":"Execute issue queue with DAG-based parallel orchestration","sidebar":"docs"},"commands/issue/issue-from-brainstorm":{"id":"commands/issue/issue-from-brainstorm","title":"issue:from-brainstorm","description":"Convert brainstorm session ideas into issues with solutions","sidebar":"docs"},"commands/issue/issue-new":{"id":"commands/issue/issue-new","title":"issue:new","description":"Create new issue with automatic categorization","sidebar":"docs"},"commands/issue/issue-plan":{"id":"commands/issue/issue-plan","title":"issue:plan","description":"Plan issue solutions with exploration and task breakdown","sidebar":"docs"},"commands/issue/issue-queue":{"id":"commands/issue/issue-queue","title":"issue:queue","description":"Form execution queue from bound solutions with conflict resolution","sidebar":"docs"},"commands/memory/memory-compact":{"id":"commands/memory/memory-compact","title":"/memory:compact","description":"Compact session memory into structured text for recovery","sidebar":"docs"},"commands/memory/memory-docs-full-cli":{"id":"commands/memory/memory-docs-full-cli","title":"/memory:docs-full-cli","description":"Generate full CLI documentation for all project modules","sidebar":"docs"},"commands/memory/memory-docs-related-cli":{"id":"commands/memory/memory-docs-related-cli","title":"/memory:docs-related-cli","description":"Generate CLI documentation for git-changed modules","sidebar":"docs"},"commands/memory/memory-load":{"id":"commands/memory/memory-load","title":"/memory:load","description":"Load project context and core content into memory","sidebar":"docs"},"commands/memory/memory-update-full":{"id":"commands/memory/memory-update-full","title":"/memory:update-full","description":"Update CLAUDE.md for all project modules using batched agent execution","sidebar":"docs"},"commands/memory/memory-update-related":{"id":"commands/memory/memory-update-related","title":"/memory:update-related","description":"Update CLAUDE.md for git-changed modules using batched execution","sidebar":"docs"},"faq":{"id":"faq","title":"常见问题(FAQ)","description":"关于 CCW、工作流、命令与排错的常见问题汇总。","sidebar":"docs"},"index":{"id":"index","title":"CCW 帮助文档","description":"工作流","sidebar":"docs"},"overview":{"id":"overview","title":"欢迎使用 CCW","description":"CCW 是一个专业的工作流自动化平台,结合了 AI 驱动的智能与结构化开发工作流。凭借 40+ 命令和 15 个集成工作流,CCW 彻底改变了您构建、测试和交付软件的方式。","sidebar":"docs"},"workflows/faq":{"id":"workflows/faq","title":"工作流常见问题","description":"工作流使用中的常见问题和解答"},"workflows/introduction":{"id":"workflows/introduction","title":"工作流介绍","description":"CCW 工作流全面概述 - 从急速执行到智能编排","sidebar":"docs"},"workflows/level-1-ultra-lightweight":{"id":"workflows/level-1-ultra-lightweight","title":"层级 1: 超轻量工作流","description":"急速执行工作流 - 零开销直接执行","sidebar":"docs"},"workflows/level-2-rapid":{"id":"workflows/level-2-rapid","title":"层级 2: 快速工作流","description":"轻量规划和漏洞诊断工作流 - 适用于单模块功能","sidebar":"docs"},"workflows/level-3-standard":{"id":"workflows/level-3-standard","title":"层级 3: 标准工作流","description":"标准规划工作流 - 完整规划和 TDD 开发","sidebar":"docs"},"workflows/level-4-brainstorm":{"id":"workflows/level-4-brainstorm","title":"层级 4: 头脑风暴工作流","description":"多角色头脑风暴工作流 - 协作探索和创意生成","sidebar":"docs"},"workflows/level-5-intelligent":{"id":"workflows/level-5-intelligent","title":"层级 5: 智能工作流","description":"智能编排工作流 - 自动分析和推荐","sidebar":"docs"}}}} \ No newline at end of file diff --git a/ccw/docs-site/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-faq-mdx-ea3.json b/ccw/docs-site/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-faq-mdx-ea3.json index 72fd9604..db3a562c 100644 --- a/ccw/docs-site/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-faq-mdx-ea3.json +++ b/ccw/docs-site/.docusaurus/docusaurus-plugin-content-docs/default/site-docs-faq-mdx-ea3.json @@ -5,7 +5,7 @@ "source": "@site/docs/faq.mdx", "sourceDirName": ".", "slug": "/faq", - "permalink": "/docs/zh/faq", + "permalink": "/docs/faq", "draft": false, "unlisted": false, "editUrl": "https://github.com/ccw/docs/tree/main/docs/faq.mdx", @@ -20,6 +20,6 @@ "sidebar": "docs", "previous": { "title": "Level 5: Intelligent", - "permalink": "/docs/zh/workflows/level-5-intelligent" + "permalink": "/docs/workflows/level-5-intelligent" } } \ No newline at end of file diff --git a/ccw/docs-site/.docusaurus/docusaurus-plugin-content-docs/default/site-i-18-n-zh-docusaurus-plugin-content-docs-current-faq-mdx-2a5.json b/ccw/docs-site/.docusaurus/docusaurus-plugin-content-docs/default/site-i-18-n-zh-docusaurus-plugin-content-docs-current-faq-mdx-2a5.json new file mode 100644 index 00000000..6ff689fd --- /dev/null +++ b/ccw/docs-site/.docusaurus/docusaurus-plugin-content-docs/default/site-i-18-n-zh-docusaurus-plugin-content-docs-current-faq-mdx-2a5.json @@ -0,0 +1,25 @@ +{ + "id": "faq", + "title": "常见问题(FAQ)", + "description": "关于 CCW、工作流、命令与排错的常见问题汇总。", + "source": "@site/i18n/zh/docusaurus-plugin-content-docs/current/faq.mdx", + "sourceDirName": ".", + "slug": "/faq", + "permalink": "/docs/zh/faq", + "draft": false, + "unlisted": false, + "editUrl": "https://github.com/ccw/docs/tree/main/docs/faq.mdx", + "tags": [], + "version": "current", + "sidebarPosition": 99, + "frontMatter": { + "title": "常见问题(FAQ)", + "sidebar_label": "常见问题", + "sidebar_position": 99 + }, + "sidebar": "docs", + "previous": { + "title": "Level 5: Intelligent", + "permalink": "/docs/zh/workflows/level-5-intelligent" + } +} \ No newline at end of file diff --git a/ccw/docs-site/.docusaurus/docusaurus-plugin-content-docs/default/site-i-18-n-zh-docusaurus-plugin-content-docs-current-workflows-level-5-intelligent-mdx-562.json b/ccw/docs-site/.docusaurus/docusaurus-plugin-content-docs/default/site-i-18-n-zh-docusaurus-plugin-content-docs-current-workflows-level-5-intelligent-mdx-562.json index 87c7db40..031c495c 100644 --- a/ccw/docs-site/.docusaurus/docusaurus-plugin-content-docs/default/site-i-18-n-zh-docusaurus-plugin-content-docs-current-workflows-level-5-intelligent-mdx-562.json +++ b/ccw/docs-site/.docusaurus/docusaurus-plugin-content-docs/default/site-i-18-n-zh-docusaurus-plugin-content-docs-current-workflows-level-5-intelligent-mdx-562.json @@ -23,7 +23,7 @@ "permalink": "/docs/zh/workflows/level-4-brainstorm" }, "next": { - "title": "FAQ", + "title": "常见问题", "permalink": "/docs/zh/faq" } } \ No newline at end of file diff --git a/ccw/docs-site/.docusaurus/docusaurus.config.mjs b/ccw/docs-site/.docusaurus/docusaurus.config.mjs index 82d065e3..d8173893 100644 --- a/ccw/docs-site/.docusaurus/docusaurus.config.mjs +++ b/ccw/docs-site/.docusaurus/docusaurus.config.mjs @@ -6,7 +6,7 @@ export default { "title": "CCW Help Documentation", "tagline": "Professional Workflow Automation Platform", - "favicon": "img/favicon.ico", + "favicon": "img/favicon.svg", "url": "http://localhost:3001", "baseUrl": "/docs/zh/", "organizationName": "ccw", diff --git a/ccw/docs-site/.docusaurus/registry.js b/ccw/docs-site/.docusaurus/registry.js index 3e38e862..4cac6b1b 100644 --- a/ccw/docs-site/.docusaurus/registry.js +++ b/ccw/docs-site/.docusaurus/registry.js @@ -6,6 +6,7 @@ export default { "17896441": [() => import(/* webpackChunkName: "17896441" */ "@theme/DocItem"), "@theme/DocItem", require.resolveWeak("@theme/DocItem")], "1bac9067": [() => import(/* webpackChunkName: "1bac9067" */ "@site/docs/commands/issue/issue-queue.md"), "@site/docs/commands/issue/issue-queue.md", require.resolveWeak("@site/docs/commands/issue/issue-queue.md")], "1e3006f3": [() => import(/* webpackChunkName: "1e3006f3" */ "@site/docs/commands/issue/issue-discover.md"), "@site/docs/commands/issue/issue-discover.md", require.resolveWeak("@site/docs/commands/issue/issue-discover.md")], + "2a5e3eff": [() => import(/* webpackChunkName: "2a5e3eff" */ "@site/i18n/zh/docusaurus-plugin-content-docs/current/faq.mdx"), "@site/i18n/zh/docusaurus-plugin-content-docs/current/faq.mdx", require.resolveWeak("@site/i18n/zh/docusaurus-plugin-content-docs/current/faq.mdx")], "2ecf8b4a": [() => import(/* webpackChunkName: "2ecf8b4a" */ "@site/docs/commands/issue/issue-from-brainstorm.md"), "@site/docs/commands/issue/issue-from-brainstorm.md", require.resolveWeak("@site/docs/commands/issue/issue-from-brainstorm.md")], "3f1fe4a1": [() => import(/* webpackChunkName: "3f1fe4a1" */ "@site/i18n/zh/docusaurus-plugin-content-docs/current/workflows/level-3-standard.mdx"), "@site/i18n/zh/docusaurus-plugin-content-docs/current/workflows/level-3-standard.mdx", require.resolveWeak("@site/i18n/zh/docusaurus-plugin-content-docs/current/workflows/level-3-standard.mdx")], "46f40178": [() => import(/* webpackChunkName: "46f40178" */ "@site/i18n/zh/docusaurus-plugin-content-docs/current/workflows/faq.mdx"), "@site/i18n/zh/docusaurus-plugin-content-docs/current/workflows/faq.mdx", require.resolveWeak("@site/i18n/zh/docusaurus-plugin-content-docs/current/workflows/faq.mdx")], @@ -31,7 +32,6 @@ export default { "ccef5d0f": [() => import(/* webpackChunkName: "ccef5d0f" */ "@site/docs/commands/general/ccw-test.mdx"), "@site/docs/commands/general/ccw-test.mdx", require.resolveWeak("@site/docs/commands/general/ccw-test.mdx")], "d550a629": [() => import(/* webpackChunkName: "d550a629" */ "@site/docs/commands/general/ccw-coordinator.mdx"), "@site/docs/commands/general/ccw-coordinator.mdx", require.resolveWeak("@site/docs/commands/general/ccw-coordinator.mdx")], "e5f6eee3": [() => import(/* webpackChunkName: "e5f6eee3" */ "@site/i18n/zh/docusaurus-plugin-content-docs/current/workflows/introduction.mdx"), "@site/i18n/zh/docusaurus-plugin-content-docs/current/workflows/introduction.mdx", require.resolveWeak("@site/i18n/zh/docusaurus-plugin-content-docs/current/workflows/introduction.mdx")], - "ea313555": [() => import(/* webpackChunkName: "ea313555" */ "@site/docs/faq.mdx"), "@site/docs/faq.mdx", require.resolveWeak("@site/docs/faq.mdx")], "f1bf82ec": [() => import(/* webpackChunkName: "f1bf82ec" */ "@site/docs/commands/cli/codex-review.mdx"), "@site/docs/commands/cli/codex-review.mdx", require.resolveWeak("@site/docs/commands/cli/codex-review.mdx")], "f4817052": [() => import(/* webpackChunkName: "f4817052" */ "@site/docs/commands/general/ccw.mdx"), "@site/docs/commands/general/ccw.mdx", require.resolveWeak("@site/docs/commands/general/ccw.mdx")], "f9222419": [() => import(/* webpackChunkName: "f9222419" */ "@site/docs/commands/general/codex-coordinator.mdx"), "@site/docs/commands/general/codex-coordinator.mdx", require.resolveWeak("@site/docs/commands/general/codex-coordinator.mdx")], diff --git a/ccw/docs-site/.docusaurus/routes.js b/ccw/docs-site/.docusaurus/routes.js index c9fc89cc..7f74ea8a 100644 --- a/ccw/docs-site/.docusaurus/routes.js +++ b/ccw/docs-site/.docusaurus/routes.js @@ -4,15 +4,15 @@ import ComponentCreator from '@docusaurus/ComponentCreator'; export default [ { path: '/docs/zh/', - component: ComponentCreator('/docs/zh/', 'f41'), + component: ComponentCreator('/docs/zh/', 'b34'), routes: [ { path: '/docs/zh/', - component: ComponentCreator('/docs/zh/', 'dbd'), + component: ComponentCreator('/docs/zh/', 'a8e'), routes: [ { path: '/docs/zh/', - component: ComponentCreator('/docs/zh/', 'c34'), + component: ComponentCreator('/docs/zh/', '632'), routes: [ { path: '/docs/zh/commands/cli/cli-init', @@ -148,7 +148,7 @@ export default [ }, { path: '/docs/zh/faq', - component: ComponentCreator('/docs/zh/faq', '9bf'), + component: ComponentCreator('/docs/zh/faq', 'd6c'), exact: true, sidebar: "docs" }, diff --git a/ccw/docs-site/.docusaurus/routesChunkNames.json b/ccw/docs-site/.docusaurus/routesChunkNames.json index c1602d02..17b2e1a0 100644 --- a/ccw/docs-site/.docusaurus/routesChunkNames.json +++ b/ccw/docs-site/.docusaurus/routesChunkNames.json @@ -1,15 +1,15 @@ { - "/docs/zh/-f41": { + "/docs/zh/-b34": { "__comp": "5e95c892", "__context": { "plugin": "aba21aa0" } }, - "/docs/zh/-dbd": { + "/docs/zh/-a8e": { "__comp": "a7bd4aaa", "__props": "b17e4002" }, - "/docs/zh/-c34": { + "/docs/zh/-632": { "__comp": "a94703ab" }, "/docs/zh/commands/cli/cli-init-fe3": { @@ -100,9 +100,9 @@ "__comp": "17896441", "content": "611877e1" }, - "/docs/zh/faq-9bf": { + "/docs/zh/faq-d6c": { "__comp": "17896441", - "content": "ea313555" + "content": "2a5e3eff" }, "/docs/zh/overview-2d1": { "__comp": "17896441", diff --git a/ccw/docs-site/README.md b/ccw/docs-site/README.md index f30caccf..904d2cd3 100644 --- a/ccw/docs-site/README.md +++ b/ccw/docs-site/README.md @@ -8,14 +8,17 @@ This is the documentation site for CCW (Claude Code Workflow), built with [Docus # Install dependencies npm install -# Start development server (port 3001) +# Start development server (port 3001, default locale: en) npm start +# Start dev server for Chinese (single-locale) +npm run start:zh + # Build for production npm run build # Serve production build locally -npm serve +npm run serve -- --build --port 3001 --no-open ``` ## 📁 Project Structure @@ -121,6 +124,25 @@ This operation cannot be undone - ✅ English (EN) - Complete - 🔄 Chinese (ZH) - Interface translated, content pending +### Previewing Locales + +Notes: +- `docusaurus start` serves **one locale per run**. +- To preview **both locales together**, build then serve the static output. + +Examples: +```bash +# English (default locale) +npm start + +# Chinese +npm run start:zh + +# Both locales +npm run build +npm run serve -- --build --port 3001 --no-open +``` + ## 🔧 Configuration ### Docusaurus Config (`docusaurus.config.ts`) diff --git a/ccw/docs-site/build/404.html b/ccw/docs-site/build/404.html index a3121beb..3339ead4 100644 --- a/ccw/docs-site/build/404.html +++ b/ccw/docs-site/build/404.html @@ -3,9 +3,9 @@ -CCW Help Documentation - - +CCW Help Documentation + + diff --git a/ccw/docs-site/build/assets/css/styles.356d38c2.css b/ccw/docs-site/build/assets/css/styles.356d38c2.css deleted file mode 100644 index 513d8b19..00000000 --- a/ccw/docs-site/build/assets/css/styles.356d38c2.css +++ /dev/null @@ -1 +0,0 @@ -.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}:root,[data-theme=dark]{--ccw-bg:hsl(var(--ccw-bg-h),var(--ccw-bg-s),var(--ccw-bg-l));--ccw-border:hsl(var(--ccw-border-h),var(--ccw-border-s),var(--ccw-border-l));--ccw-border-focus:var(--ccw-primary);--ifm-code-font-size:90%}.markdown li,body{word-wrap:break-word}.toggleButton_wYmb,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList__YnT,.details_B4FW>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box;scrollbar-color:var(--ccw-border-hover) var(--ccw-bg-secondary);scrollbar-width:thin}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_xK2O,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);overflow:auto;padding:var(--ifm-pre-padding)}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding);margin-bottom:var(--ccw-spacing-md);margin-left:var(--ccw-spacing-lg)}ol ol,ul ol{list-style-type:lower-roman}ol ol,ol ul,ul ol,ul ul{margin:0}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){-webkit-text-decoration:none;text-decoration:none}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote,pre,table{margin:var(--ccw-spacing-lg) 0}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_wDKE .wordWrapButtonIcon_fUEG{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_uVvU,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);-webkit-text-decoration:none;text-decoration:none}.breadcrumbs__link:any-link:hover{background:var(--ifm-breadcrumb-item-background-active);-webkit-text-decoration:none;text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button,.dropdown__link--active,.dropdown__link:hover,.menu__link:hover,.navbar__brand:hover,.navbar__link--active,.navbar__link:hover,.pagination-nav__link:hover,.pagination__link:hover,.tag_qE9H:hover,a{-webkit-text-decoration:none;text-decoration:none}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);-webkit-text-decoration:none;text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_YxQB:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color)}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.codeBlockStandalone_K9VJ,[type=checkbox],pre code{padding:0}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Rv5Z article>:first-child,.docItemContainer_Rv5Z header+*,.footer__item{margin-top:0}.footer__items{margin-bottom:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle,h3{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_B4FW[data-collapsed=false].isBrowser_Cof9>summary:before,.details_B4FW[open]:not(.isBrowser_Cof9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color)}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter);content:""}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.navbar__items--center .navbar__brand,body{margin:0}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color)}.announcementBarContent__57G,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color)}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:1rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.button,.pills__item,.tab-item,.tabs__item{cursor:pointer}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.tabs,pre{overflow-x:auto}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.card,.navbar,pre,table{box-shadow:var(--ccw-shadow-sm)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover)}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__link--prev,td,th{text-align:left}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.admonitionHeading,.tab-list,.tags{gap:var(--ccw-spacing-sm)}.pills__item{border-radius:.5rem;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList__YnT>li)>.containsTaskList__YnT{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.menu__link,.tocCollapsibleContent_SlnY a{display:block}.navbar__link,a{transition:color var(--ccw-transition-fast)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.navbar,h1,h2{border-bottom:1px solid var(--ccw-border)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}:root{--docusaurus-progress-bar-color:var(--ifm-color-primary);--ccw-primary-h:221;--ccw-primary-s:83%;--ccw-primary-l:53%;--ccw-primary:hsl(var(--ccw-primary-h),var(--ccw-primary-s),var(--ccw-primary-l));--ccw-primary-hover:hsl(var(--ccw-primary-h),var(--ccw-primary-s),43%);--ccw-primary-active:hsl(var(--ccw-primary-h),var(--ccw-primary-s),38%);--ccw-primary-light:hsl(var(--ccw-primary-h),var(--ccw-primary-s),95%);--ccw-primary-dark:hsl(var(--ccw-primary-h),var(--ccw-primary-s),23%);--ccw-secondary-h:210;--ccw-secondary-s:40%;--ccw-secondary-l:96%;--ccw-secondary:hsl(var(--ccw-secondary-h),var(--ccw-secondary-s),var(--ccw-secondary-l));--ccw-secondary-hover:hsl(var(--ccw-secondary-h),var(--ccw-secondary-s),92%);--ccw-secondary-border:hsl(var(--ccw-secondary-h),var(--ccw-secondary-s),88%);--ccw-accent-h:142;--ccw-accent-s:76%;--ccw-accent-l:36%;--ccw-accent:hsl(var(--ccw-accent-h),var(--ccw-accent-s),var(--ccw-accent-l));--ccw-accent-hover:hsl(var(--ccw-accent-h),var(--ccw-accent-s),26%);--ccw-accent-light:hsl(var(--ccw-accent-h),var(--ccw-accent-s),92%);--ccw-bg-h:0;--ccw-bg-s:0%;--ccw-bg-l:100%;--ccw-bg-secondary:#f9fafb;--ccw-bg-tertiary:#f3f5f7;--ccw-bg-elevated:#fff;--ccw-bg-overlay:#00000080;--ccw-text-h:222;--ccw-text-s:47%;--ccw-text-l:11%;--ccw-text-primary:hsl(var(--ccw-text-h),var(--ccw-text-s),var(--ccw-text-l));--ccw-text-secondary:#65758b;--ccw-text-tertiary:#97a3b4;--ccw-text-disabled:#c4cbd4;--ccw-text-inverse:#fff;--ccw-border-h:214;--ccw-border-s:32%;--ccw-border-l:91%;--ccw-border-hover:hsl(var(--ccw-border-h),var(--ccw-border-s),80%);--ccw-shadow-sm:0 1px 2px 0 #0000000d;--ccw-shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;--ccw-shadow-lg:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;--ccw-shadow-xl:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;--ccw-shadow-2xl:0 25px 50px -12px #00000040;--ccw-success:#16a249;--ccw-success-light:#dbfae6;--ccw-warning:#f59f0a;--ccw-warning-light:#fef3e2;--ccw-error:#ef4343;--ccw-error-light:#fde3e3;--ccw-info:#0da2e7;--ccw-info-light:#e2f5fd;--ccw-font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--ccw-font-mono:"SF Mono",Monaco,"Cascadia Code","Roboto Mono",Consolas,"Courier New",monospace;--ccw-spacing-xs:0.25rem;--ccw-spacing-sm:0.5rem;--ccw-spacing-md:1rem;--ccw-spacing-lg:1.5rem;--ccw-spacing-xl:2rem;--ccw-spacing-2xl:3rem;--ccw-radius-sm:0.25rem;--ccw-radius-md:0.375rem;--ccw-radius-lg:0.5rem;--ccw-radius-xl:0.75rem;--ccw-radius-full:9999px;--ccw-transition-fast:150ms ease;--ccw-transition-base:200ms ease;--ccw-transition-slow:300ms ease;--ccw-z-dropdown:1000;--ccw-z-sticky:1020;--ccw-z-fixed:1030;--ccw-z-modal-backdrop:1040;--ccw-z-modal:1050;--ccw-z-popover:1060;--ccw-z-tooltip:1070;--docusaurus-link-color:var(--ccw-primary);--docusaurus-link-hover-color:var(--ccw-primary-hover);--docusaurus-link-underline-color:rgba(var(--ccw-primary-h),var(--ccw-primary-s),var(--ccw-primary-l),0.3);--docusaurus-alert-background-color:var(--ccw-bg);--docusaurus-alert-border-color:var(--ccw-border);--docusaurus-alert-border-left-width:4px;--docusaurus-code-background:var(--ccw-bg-tertiary);--docusaurus-code-color:var(--ccw-text-primary);--docusaurus-code-font-family:var(--ccw-font-mono);--docusaurus-pagination-nav-border-color:var(--ccw-border);--docusaurus-pagination-nav-hover-background-color:var(--ccw-secondary);--ifm-font-family-base:var(--ccw-font-sans);--ifm-font-family-monospace:var(--ccw-font-mono);--ifm-font-size-base:16px;--ifm-line-height-base:1.65;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--docusaurus-announcement-bar-height:auto;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ccw-primary:hsl(var(--ccw-primary-h),var(--ccw-primary-s),60%);--ccw-primary-hover:hsl(var(--ccw-primary-h),var(--ccw-primary-s),50%);--ccw-primary-active:hsl(var(--ccw-primary-h),var(--ccw-primary-s),45%);--ccw-primary-light:hsl(var(--ccw-primary-h),20%,20%);--ccw-primary-dark:hsl(var(--ccw-primary-h),var(--ccw-primary-s),30%);--ccw-secondary:#1d283a;--ccw-secondary-hover:#27364e;--ccw-secondary-border:#30425f;--ccw-bg-h:222;--ccw-bg-s:47%;--ccw-bg-l:11%;--ccw-bg-secondary:#1d283a;--ccw-bg-tertiary:#283548;--ccw-bg-elevated:#222f44;--ccw-bg-overlay:#000000b3;--ccw-text-primary:#f8fafc;--ccw-text-secondary:#b5bec9;--ccw-text-tertiary:#7a899f;--ccw-text-disabled:#566376;--ccw-text-inverse:#000;--ccw-border-h:217;--ccw-border-s:33%;--ccw-border-l:17%;--ccw-border-hover:hsl(var(--ccw-border-h),var(--ccw-border-s),25%);--ccw-shadow-sm:0 1px 2px 0 #0000004d;--ccw-shadow-md:0 4px 6px -1px #0006,0 2px 4px -1px #0000004d;--ccw-shadow-lg:0 10px 15px -3px #00000080,0 4px 6px -2px #0000004d;--ccw-shadow-xl:0 20px 25px -5px #0009,0 10px 10px -5px #0000004d;--ccw-shadow-2xl:0 25px 50px -12px #000000b3;--docusaurus-link-underline-color:rgba(60,170%,255%,0.3);--ifm-background-color:var(--ccw-bg);--ifm-background-surface-color:var(--ccw-bg-secondary);--ifm-text-color:var(--ccw-text-primary);--ifm-link-color:var(--ccw-primary);--ifm-link-hover-color:var(--ccw-primary-hover);--ifm-border-color:var(--ccw-border);--ifm-alert-border-color:var(--ccw-border);--ifm-alert-background-color:var(--ccw-bg-secondary);--ifm-alert-foreground-color:var(--ccw-text-primary)}body{background-color:var(--ccw-bg);color:var(--ccw-text-primary);font-family:var(--ccw-font-sans);line-height:var(--ifm-line-height-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background-color:var(--ccw-primary-light);color:var(--ccw-text-primary)}:focus-visible{outline:2px solid var(--ccw-border-focus);outline-offset:2px}::-webkit-scrollbar{height:10px;width:10px}::-webkit-scrollbar-track{background:var(--ccw-bg-secondary);border-radius:var(--ccw-radius-full)}::-webkit-scrollbar-thumb{background:var(--ccw-border-hover);border:2px solid var(--ccw-bg-secondary);border-radius:var(--ccw-radius-full)}.menu__link,.navbar__item{border-radius:var(--ccw-radius-md)}::-webkit-scrollbar-thumb:hover{background:var(--ccw-text-tertiary)}.navbar{background-color:var(--ccw-bg-elevated)}.navbar__logo{height:32px;width:auto}.navbar__link{color:var(--ccw-text-secondary);font-weight:500}.menu__link:hover,.navbar__link--active,.navbar__link:hover{color:var(--ccw-primary)}.menu__link,.navbar__toggle{color:var(--ccw-text-secondary)}.navbar__item{margin:0 var(--ccw-spacing-xs)}.menu__list-item,li{margin-bottom:var(--ccw-spacing-xs)}.menu__link:hover{background-color:var(--ccw-secondary);color:var(--ccw-text-primary);transform:translateX(2px)}.menu{border-right:1px solid var(--ccw-border)}.menu__list,.p-sm{padding:var(--ccw-spacing-sm)}.menu__link,td,th{padding:var(--ccw-spacing-sm) var(--ccw-spacing-md)}.card__header,.card__header .header__icon,.mb-md,h1,h2,h3,h4,h5,h6{margin-bottom:var(--ccw-spacing-md)}.menu__link{transition:all var(--ccw-transition-fast)}.menu__link--active{background-color:var(--ccw-primary-light);border-left:3px solid var(--ccw-primary);color:var(--ccw-primary);font-weight:600}.markdown,h1,h2,h3,h4,h5,h6,pre code{color:var(--ccw-text-primary)}.menu__list-item--collapsed .menu__link--active{border-left-color:var(--ccw-primary)}.menu__list-item-collapsible>.menu__link--sublist{color:var(--ccw-text-primary);font-weight:600}.main-wrapper{background-color:var(--ccw-bg)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1;max-width:800px}blockquote,li,p{color:var(--ccw-text-secondary)}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.25;margin-top:var(--ccw-spacing-xl)}h1{font-size:2.25rem;padding-bottom:var(--ccw-spacing-md)}h2{font-size:1.875rem;padding-bottom:var(--ccw-spacing-sm)}.card__title,h4{font-size:1.25rem}h5,h6{font-size:1rem}code,pre code{font-size:.875em}p{margin:0 0 var(--ifm-paragraph-margin-bottom);margin-bottom:var(--ccw-spacing-md)}a{border-bottom:1px solid #0000;color:var(--ccw-primary)}a:hover{border-bottom-color:var(--ccw-primary);color:var(--ccw-primary-hover)}code{border-radius:var(--ccw-radius-sm);color:var(--ccw-primary);font-family:var(--ccw-font-mono);padding:.2em .4em}code,pre{background-color:var(--ccw-bg-tertiary);border:1px solid var(--ccw-border)}.bg-secondary,.tag--regular,blockquote,tr:hover{background-color:var(--ccw-secondary)}pre{border-radius:var(--ccw-radius-lg);padding:var(--ccw-spacing-md)}pre code{background-color:initial;border:none;line-height:1.6}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{background-color:var(--ccw-bg-tertiary);font-size:inherit;padding:.15em .3em}blockquote{border-left:4px solid var(--ccw-primary);border-radius:0 var(--ccw-radius-md) var(--ccw-radius-md) 0;padding:var(--ccw-spacing-md) var(--ccw-spacing-lg)}.card__title,th{color:var(--ccw-text-primary);font-weight:600}table{border-collapse:collapse;border-radius:var(--ccw-radius-lg);overflow:hidden;width:100%}td,th{border-bottom:1px solid var(--ccw-border)}th{background-color:var(--ccw-bg-secondary);border-bottom:2px solid var(--ccw-border)}tr:last-child td{border-bottom:none}hr{border:none;border-top:1px solid var(--ccw-border);margin:var(--ccw-spacing-2xl) 0}.card{background-color:var(--ccw-bg-elevated);border:1px solid var(--ccw-border);border-radius:var(--ccw-radius-lg);display:flex;flex-direction:column;height:100%;padding:var(--ccw-spacing-lg);transition:all var(--ccw-transition-base)}.button,.pagination-nav__link{transition:all var(--ccw-transition-fast)}.card:hover{border-color:var(--ccw-primary);box-shadow:var(--ccw-shadow-lg);transform:translateY(-4px)}.card__title{margin-bottom:var(--ccw-spacing-sm)}.card__body{color:var(--ccw-text-secondary);flex:1}.card__footer{border-top:1px solid var(--ccw-border);margin-top:var(--ccw-spacing-md);padding-top:var(--ccw-spacing-md)}.card__header .header__icon{background-color:var(--ccw-primary-light);border-radius:var(--ccw-radius-lg);color:var(--ccw-primary);font-size:1.5rem;height:48px;width:48px}.button,.card__header .header__icon{align-items:center;display:inline-flex;justify-content:center}.button{border:none;border-radius:var(--ccw-radius-md);font-size:1rem;font-weight:500;padding:var(--ccw-spacing-sm) var(--ccw-spacing-lg)}.bg-primary,.button--primary{background-color:var(--ccw-primary);color:var(--ccw-text-inverse)}.button--primary:hover{background-color:var(--ccw-primary-hover);box-shadow:var(--ccw-shadow-md);transform:translateY(-1px)}.button--secondary{background-color:var(--ccw-secondary);border:1px solid var(--ccw-border);color:var(--ccw-text-primary)}.button--outline,.footer__link-item:hover{color:var(--ccw-primary)}.button--secondary:hover{background-color:var(--ccw-secondary-hover);border-color:var(--ccw-border-hover)}.button--outline{background-color:initial;border:1px solid var(--ccw-primary)}.button--outline:hover{background-color:var(--ccw-primary-light)}.button--sm{font-size:.875rem;padding:var(--ccw-spacing-xs) var(--ccw-spacing-md)}.button--lg{--ifm-button-size-multiplier:1.35;font-size:1.125rem;padding:var(--ccw-spacing-md) var(--ccw-spacing-xl)}.admonition{background-color:var(--ccw-bg-secondary);border-left-style:solid;border:1px solid var(--ccw-border);border-left-width:4px;border-radius:var(--ccw-radius-lg);margin:var(--ccw-spacing-lg) 0;padding:var(--ccw-spacing-md) var(--ccw-spacing-lg)}.footer,.pagination-nav{margin-top:var(--ccw-spacing-2xl)}.admonition:hover{box-shadow:var(--ccw-shadow-sm)}.admonitionHeading{align-items:center;display:flex;font-weight:600;margin-bottom:var(--ccw-spacing-sm)}.admonitionIcon{align-items:center;display:inline-flex;height:20px;justify-content:center;width:20px}.admonition--note{background-color:var(--ccw-info-light);border-left-color:var(--ccw-info)}.admonition--tip{background-color:var(--ccw-accent-light);border-left-color:var(--ccw-accent)}.admonition--important{background-color:var(--ccw-primary-light);border-left-color:var(--ccw-primary)}.admonition--warning{background-color:var(--ccw-warning-light);border-left-color:var(--ccw-warning)}.admonition--caution{background-color:var(--ccw-error-light);border-left-color:var(--ccw-error)}.pagination-nav{border-top:1px solid var(--ccw-border);padding-top:var(--ccw-spacing-xl)}.pagination-nav__link{background-color:var(--ccw-bg-elevated);border:1px solid var(--ccw-border);border-radius:var(--ccw-radius-lg);display:flex;flex-direction:column;padding:var(--ccw-spacing-md)}.pagination-nav__link:hover{background-color:var(--ccw-secondary);border-color:var(--ccw-primary);box-shadow:var(--ccw-shadow-md);transform:translateY(-2px)}.pagination-nav__label{color:var(--ccw-text-tertiary);font-size:.875rem;margin-bottom:var(--ccw-spacing-xs)}.footer__title,.pagination-nav__title{color:var(--ccw-text-primary);font-weight:600}.pagination-nav__title{font-size:1rem}.footer{background-color:var(--ccw-bg-secondary);border-top:1px solid var(--ccw-border);padding:var(--ccw-spacing-xl) 0}.footer__title{margin-bottom:var(--ccw-spacing-md)}.footer__link-item,.tag{color:var(--ccw-text-secondary)}.footer__link-item{transition:color var(--ccw-transition-fast)}.DocSearch{--docsearch-primary-color:var(--ccw-primary);--docsearch-text-color:var(--ccw-text-primary);--docsearch-muted-color:var(--ccw-text-tertiary);--docsearch-searchbox-shadow:var(--ccw-shadow-sm);--docsearch-modal-shadow:var(--ccw-shadow-2xl);--docsearch-key-gradient:linear-gradient(268.89deg,#eaeef200,#eaeef2cc 50%,#eaeef200)}.tags{display:flex;flex-wrap:wrap;margin:var(--ccw-spacing-md) 0}.tag{align-items:center;background-color:var(--ccw-secondary);border:1px solid var(--ccw-border);border-radius:var(--ccw-radius-full);display:inline-flex;font-size:.875rem;padding:var(--ccw-spacing-xs) var(--ccw-spacing-md);transition:all var(--ccw-transition-fast)}.tag--accent,.tag:hover{background-color:var(--ccw-primary-light);border-color:var(--ccw-primary);color:var(--ccw-primary)}.breadcrumbs,.mb-lg{margin-bottom:var(--ccw-spacing-lg)}.breadcrumbs__item{color:var(--ccw-text-tertiary);font-size:.875rem}.breadcrumbs__item--active,.breadcrumbs__link,.text-secondary,.token.punctuation{color:var(--ccw-text-secondary)}.breadcrumbs__link{transition:color var(--ccw-transition-fast)}.breadcrumbs__link:hover,.text-primary,.token.atrule,.token.attr-value,.token.keyword{color:var(--ccw-primary)}.tabs{border-bottom:1px solid var(--ccw-border);margin:var(--ccw-spacing-lg) 0}.tab-list{display:flex;margin-bottom:-1px}.tab-item{border:1px solid #0000;border-bottom:none;border-radius:var(--ccw-radius-md) var(--ccw-radius-md) 0 0;color:var(--ccw-text-secondary);padding:var(--ccw-spacing-sm) var(--ccw-spacing-md);transition:all var(--ccw-transition-fast)}.tab-item:hover{background-color:var(--ccw-secondary);color:var(--ccw-primary)}.tab-item--active{background-color:var(--ccw-bg);border-color:var(--ccw-border);border-bottom-color:var(--ccw-bg);color:var(--ccw-primary);font-weight:500}.tab-content{padding:var(--ccw-spacing-lg) 0}.theme-code-block{border-radius:var(--ccw-radius-lg);overflow:hidden}.code-block-title{background-color:var(--ccw-bg-tertiary);border-bottom:1px solid var(--ccw-border);color:var(--ccw-text-secondary);font-size:.875rem;font-weight:600;padding:var(--ccw-spacing-sm) var(--ccw-spacing-md)}.prism-code{background-color:var(--ccw-bg-tertiary)!important}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:var(--ccw-text-tertiary)}.text-error,.token.boolean,.token.constant,.token.deleted,.token.important,.token.number,.token.property,.token.regex,.token.symbol,.token.tag,.token.variable{color:var(--ccw-error)}.text-accent,.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:var(--ccw-accent)}.language-css .token.string,.style .token.string,.text-warning,.token.entity,.token.operator,.token.url{color:var(--ccw-warning)}.token.class-name,.token.function{color:var(--ccw-info)}.text-success{color:var(--ccw-success)}.bg-accent{background-color:var(--ccw-accent);color:var(--ccw-text-inverse)}.mt-sm{margin-top:var(--ccw-spacing-sm)}.mt-md{margin-top:var(--ccw-spacing-md)}.mt-lg{margin-top:var(--ccw-spacing-lg)}.mt-xl{margin-top:var(--ccw-spacing-xl)}.mb-sm{margin-bottom:var(--ccw-spacing-sm)}.mb-xl{margin-bottom:var(--ccw-spacing-xl)}.p-md{padding:var(--ccw-spacing-md)}.p-lg{padding:var(--ccw-spacing-lg)}.p-xl{padding:var(--ccw-spacing-xl)}@keyframes a{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:a var(--ccw-transition-slow) ease-out}@keyframes b{0%,to{opacity:1}50%{opacity:.7}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite b}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_e5ai,.navbarSearchContainer_bmvg:empty,.sidebarLogo_nlll,.themedComponent_DHUr,.toggleIcon_KEbZ,html[data-announcement-bar-initially-dismissed=true] .announcementBar_ncOr{display:none}.skipToContent_G6ar{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_G6ar:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_rfix{line-height:0;padding:0}.content_L1uV{font-size:85%;padding:5px 0;text-align:center}.content_L1uV a{color:inherit;-webkit-text-decoration:underline;text-decoration:underline}.announcementBar_ncOr{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_ajMw{flex:0 0 10px}.announcementBarClose_c9u4{align-self:stretch;flex:0 0 30px}.toggle_OLSw{height:2rem;width:2rem}.toggleButton_wYmb{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_wYmb:hover{background:var(--ifm-color-emphasis-200)}[data-theme-choice=dark] .darkToggleIcon_Yem1,[data-theme-choice=light] .lightToggleIcon_Sxwe,[data-theme-choice=system] .systemToggleIcon_txm5,[data-theme=dark] .themedComponent--dark_Bv2M,[data-theme=light] .themedComponent--light_DIHH,html:not([data-theme]) .themedComponent--light_DIHH{display:initial}.toggleButtonDisabled_vaDU{cursor:not-allowed}.darkNavbarColorModeToggle_wZ1H:hover{background:var(--ifm-color-gray-800)}.tag_qE9H{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_qE9H:hover{--docusaurus-tag-list-border:var(--ifm-link-color)}.tagRegular_aHXt{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_UC8q{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_UC8q:after,.tagWithCount_UC8q:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_UC8q:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_UC8q:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_UC8q span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_q74f{display:inline}.tag_lSC7{display:inline-block;margin:0 .4rem .5rem 0}.iconEdit_UohW{margin-right:.3em;vertical-align:sub}.lastUpdated_g62E{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_htYj{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_htYj:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_pAh7:after,.tocCollapsibleExpanded_klrc{transform:none}.tocCollapsible_O_Qc{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_SlnY>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_SlnY ul li{margin:.4rem .8rem}.tableOfContents_TN1Q{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.backToTopButton_z1FD{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_z1FD:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_w1wE{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_Ftvb{display:none;margin:0}.categoryLinkLabel_Oe72,.linkLabel_PuAu{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical}.iconExternalLink_awgD{margin-left:.3rem}.dropdownNavbarItemMobile_r878{cursor:pointer}.iconLanguage_DSK9{margin-right:5px;vertical-align:text-bottom}.navbarHideable_bChn{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_zsXl{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_FiLL{color:red;white-space:pre-wrap}.errorBoundaryFallback_lv4I{color:red;padding:.55rem}.buttonGroup_dke2 button,.codeBlockContainer_ZGJx{background:var(--prism-background-color);color:var(--prism-color)}.navbar__items--right>:last-child{padding-right:0}.footerLogoLink_zxYv{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_zxYv:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.linkLabel_PuAu{line-clamp:2;-webkit-line-clamp:2}.categoryLink_d9ci{overflow:hidden}.menu__link--sublist-caret:after{margin-left:var(--ifm-menu-link-padding-vertical)}.categoryLinkLabel_Oe72{flex:1;line-clamp:2;-webkit-line-clamp:2}.docMainContainer_namt,.docRoot_HciC{display:flex;width:100%}.docsWrapper_XLvK{display:flex;flex:1 0 auto}.anchorTargetStickyNavbar_SAay{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorTargetHideOnScrollNavbar_Iwt7{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.mainWrapper_UyTV{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.codeBlockContainer_ZGJx{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlock_TAPP{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockLines_AdAo{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_p5De{display:table;padding:var(--ifm-pre-padding) 0}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_DPDv{counter-increment:line-count;display:table-row}.codeLineNumber_YxQB{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_YxQB:before{content:counter(line-count);opacity:.4}.codeLineContent_SOIp{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_TFXo{opacity:1!important}.copyButtonIcons_akOg{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_a21a,.copyButtonSuccessIcon_v2Tw{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_v2Tw{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_TFXo .copyButtonIcon_a21a{opacity:0;transform:scale(.33)}.copyButtonCopied_TFXo .copyButtonSuccessIcon_v2Tw{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_fUEG{height:1.2rem;width:1.2rem}.buttonGroup_dke2{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup_dke2 button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup_dke2 button:focus-visible,.buttonGroup_dke2 button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup_dke2 button{opacity:.4}.codeBlockContent_kX1v{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_L5qy{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlockTitle_L5qy+.codeBlockContent_kX1v .codeBlock_pF8g{border-top-left-radius:0;border-top-right-radius:0}.details_B4FW{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_B4FW>summary{cursor:pointer;padding-left:1rem;position:relative}.details_B4FW>summary::-webkit-details-marker{display:none}.details_B4FW>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_VYua{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.admonitionContent_bl22>:last-child,.collapsibleContent_VYua p:last-child,.details_B4FW>summary>p:last-child{margin-bottom:0}.details_SZgV{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.img__Ss2{height:auto}.admonition_IZjC{margin-bottom:1em}.admonitionHeading_uVvU{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_uVvU:not(:last-child){margin-bottom:.3rem}.admonitionHeading_uVvU code{text-transform:none}.admonitionIcon_HiR3{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_HiR3 svg{display:inline-block;fill:var(--ifm-alert-foreground-color);height:1.6em;width:1.6em}.breadcrumbHomeIcon_JFrk{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_zCmv{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}@media (min-width:997px){.collapseSidebarButton_Ftvb,.expandButton_SZY_{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_c9u4,.announcementBarPlaceholder_ajMw{flex-basis:50px}.lastUpdated_g62E{text-align:right}.tocMobile_tjDr{display:none}.collapseSidebarButton_Ftvb{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_c4WT{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_CMLm,[dir=rtl] .collapseSidebarButtonIcon_c4WT{transform:rotate(0)}.collapseSidebarButton_Ftvb:focus,.collapseSidebarButton_Ftvb:hover,.expandButton_SZY_:focus,.expandButton_SZY_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.navbarSearchContainer_bmvg{padding:0 var(--ifm-navbar-item-padding-horizontal)}.menuHtmlItem_anEq{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_qiME{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_qiME{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_hRfJ{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_vJCc{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_Fo4g{padding-top:0}.sidebarHidden_vBKa{opacity:0;visibility:hidden}.sidebarLogo_nlll{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);-webkit-text-decoration:none!important;text-decoration:none!important}.sidebarLogo_nlll img{height:2rem;margin-right:.5rem}.expandButton_SZY_{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_CMLm{transform:rotate(180deg)}.docSidebarContainer_e5ai{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_vqQo{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_N8x0{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_namt{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_sRjM{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_TX_6{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.docItemCol_YAwJ{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_Hg9V,.footer__link-separator,.navbar__item,.tableOfContents_TN1Q{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block;width:max-content}.hero{padding-left:0;padding-right:0}.main-wrapper,.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}:root{--ifm-container-width:100%}h1{font-size:1.875rem}h2{font-size:1.5rem}h3{font-size:1.25rem}.card{margin-bottom:var(--ccw-spacing-md)}.docItemContainer_JtJJ{padding:0 .3rem}.navbarSearchContainer_bmvg{position:absolute;right:var(--ifm-navbar-padding-horizontal)}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media (max-width:480px){h1{font-size:1.5rem}h2{font-size:1.25rem}.button,.pagination-nav__link{width:100%}.pagination-nav{flex-direction:column}}@media (hover:hover){.backToTopButton_z1FD:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.card,.tabs{page-break-inside:avoid}.announcementBar_ncOr,.footer,.menu,.navbar,.noPrint_HJkF,.pagination-nav,.sidebar,.table-of-contents,.tocMobile_tjDr{display:none}body{background-color:#fff;color:#000}.card{border:1px solid #ccc;box-shadow:none;break-inside:avoid}.codeBlockLines_AdAo{white-space:pre-wrap}} \ No newline at end of file diff --git a/ccw/docs-site/build/assets/css/styles.b656bddd.css b/ccw/docs-site/build/assets/css/styles.b656bddd.css new file mode 100644 index 00000000..80aef359 --- /dev/null +++ b/ccw/docs-site/build/assets/css/styles.b656bddd.css @@ -0,0 +1 @@ +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}:root,[data-theme=dark]{--ccw-primary-hover:hsl(var(--ccw-primary-h),var(--ccw-primary-s),55%);--ccw-primary-active:hsl(var(--ccw-primary-h),var(--ccw-primary-s),50%);--ccw-primary-dark:hsl(var(--ccw-primary-h),var(--ccw-primary-s),30%);--ccw-bg:hsl(var(--ccw-bg-h),var(--ccw-bg-s),var(--ccw-bg-l));--ccw-border-h:220;--ccw-border-s:20%;--ccw-border:hsl(var(--ccw-border-h),var(--ccw-border-s),var(--ccw-border-l));--ccw-border-focus:var(--ccw-primary);--ifm-code-font-size:90%}.markdown li,body{word-wrap:break-word}.toggleButton_wYmb,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList__YnT,.details_B4FW>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box;scrollbar-color:var(--ccw-border-hover) var(--ccw-bg-secondary);scrollbar-width:thin}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_xK2O,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);overflow:auto;padding:var(--ifm-pre-padding)}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding);margin-bottom:var(--ccw-spacing-md);margin-left:var(--ccw-spacing-lg)}ol ol,ul ol{list-style-type:lower-roman}ol ol,ol ul,ul ol,ul ul{margin:0}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){-webkit-text-decoration:none;text-decoration:none}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote,pre,table{margin:var(--ccw-spacing-lg) 0}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_wDKE .wordWrapButtonIcon_fUEG{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_uVvU,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);-webkit-text-decoration:none;text-decoration:none}.breadcrumbs__link:any-link:hover{background:var(--ifm-breadcrumb-item-background-active);-webkit-text-decoration:none;text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button,.dropdown__link--active,.dropdown__link:hover,.menu__link:hover,.navbar__brand:hover,.navbar__link--active,.navbar__link:hover,.pagination-nav__link:hover,.pagination__link:hover,.tag_qE9H:hover,a{-webkit-text-decoration:none;text-decoration:none}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);-webkit-text-decoration:none;text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_YxQB:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color)}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.codeBlockStandalone_K9VJ,[type=checkbox],pre code{padding:0}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Rv5Z article>:first-child,.docItemContainer_Rv5Z header+*,.footer__item{margin-top:0}.footer__items{margin-bottom:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle,h3{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_B4FW[data-collapsed=false].isBrowser_Cof9>summary:before,.details_B4FW[open]:not(.isBrowser_Cof9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color)}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter);content:""}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.navbar__items--center .navbar__brand,body{margin:0}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color)}.announcementBarContent__57G,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color)}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:1rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.button,.pills__item,.tab-item,.tabs__item{cursor:pointer}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.tabs,pre{overflow-x:auto}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.card,.navbar,pre,table{box-shadow:var(--ccw-shadow-sm)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover)}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__link--prev,td,th{text-align:left}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.admonitionHeading,.tab-list,.tags{gap:var(--ccw-spacing-sm)}.pills__item{border-radius:.5rem;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList__YnT>li)>.containsTaskList__YnT{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.menu__link,.tocCollapsibleContent_SlnY a{display:block}.navbar__link,a{transition:color var(--ccw-transition-fast)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.navbar,h1,h2{border-bottom:1px solid var(--ccw-border)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}:root{--docusaurus-progress-bar-color:var(--ifm-color-primary);--ccw-primary-h:220;--ccw-primary-s:60%;--ccw-primary-l:65%;--ccw-primary:hsl(var(--ccw-primary-h),var(--ccw-primary-s),var(--ccw-primary-l));--ccw-primary-light:hsl(var(--ccw-primary-h),var(--ccw-primary-s),95%);--ccw-secondary-h:210;--ccw-secondary-s:40%;--ccw-secondary-l:96%;--ccw-secondary:hsl(var(--ccw-secondary-h),var(--ccw-secondary-s),var(--ccw-secondary-l));--ccw-secondary-hover:hsl(var(--ccw-secondary-h),var(--ccw-secondary-s),92%);--ccw-secondary-border:hsl(var(--ccw-secondary-h),var(--ccw-secondary-s),88%);--ccw-accent-h:220;--ccw-accent-s:60%;--ccw-accent-l:65%;--ccw-accent:hsl(var(--ccw-accent-h),var(--ccw-accent-s),var(--ccw-accent-l));--ccw-accent-hover:hsl(var(--ccw-accent-h),var(--ccw-accent-s),55%);--ccw-accent-light:hsl(var(--ccw-accent-h),var(--ccw-accent-s),95%);--ccw-bg-h:0;--ccw-bg-s:0%;--ccw-bg-l:98%;--ccw-bg-secondary:#f4f4f6;--ccw-bg-tertiary:#edeff2;--ccw-bg-elevated:#fff;--ccw-bg-overlay:#00000080;--ccw-text-h:220;--ccw-text-s:30%;--ccw-text-l:15%;--ccw-text-primary:hsl(var(--ccw-text-h),var(--ccw-text-s),var(--ccw-text-l));--ccw-text-secondary:#626d84;--ccw-text-tertiary:#8a94a8;--ccw-text-disabled:#c4cbd4;--ccw-text-inverse:#fff;--ccw-border-l:88%;--ccw-border-hover:hsl(var(--ccw-border-h),var(--ccw-border-s),80%);--ccw-shadow-sm:0 1px 2px 0 #0000000d;--ccw-shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;--ccw-shadow-lg:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;--ccw-shadow-xl:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;--ccw-shadow-2xl:0 25px 50px -12px #00000040;--ccw-success:#16a249;--ccw-success-light:#dbfae6;--ccw-warning:#f59f0a;--ccw-warning-light:#fef3e2;--ccw-error:#ef4343;--ccw-error-light:#fde3e3;--ccw-info:#0da2e7;--ccw-info-light:#e2f5fd;--ccw-font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--ccw-font-mono:"SF Mono",Monaco,"Cascadia Code","Roboto Mono",Consolas,"Courier New",monospace;--ccw-spacing-xs:0.25rem;--ccw-spacing-sm:0.5rem;--ccw-spacing-md:1rem;--ccw-spacing-lg:1.5rem;--ccw-spacing-xl:2rem;--ccw-spacing-2xl:3rem;--ccw-radius-sm:0.25rem;--ccw-radius-md:0.375rem;--ccw-radius-lg:0.5rem;--ccw-radius-xl:0.75rem;--ccw-radius-full:9999px;--ccw-transition-fast:150ms ease;--ccw-transition-base:200ms ease;--ccw-transition-slow:300ms ease;--ccw-z-dropdown:1000;--ccw-z-sticky:1020;--ccw-z-fixed:1030;--ccw-z-modal-backdrop:1040;--ccw-z-modal:1050;--ccw-z-popover:1060;--ccw-z-tooltip:1070;--docusaurus-link-color:var(--ccw-primary);--docusaurus-link-hover-color:var(--ccw-primary-hover);--docusaurus-link-underline-color:rgba(var(--ccw-primary-h),var(--ccw-primary-s),var(--ccw-primary-l),0.3);--docusaurus-alert-background-color:var(--ccw-bg);--docusaurus-alert-border-color:var(--ccw-border);--docusaurus-alert-border-left-width:4px;--docusaurus-code-background:var(--ccw-bg-tertiary);--docusaurus-code-color:var(--ccw-text-primary);--docusaurus-code-font-family:var(--ccw-font-mono);--docusaurus-pagination-nav-border-color:var(--ccw-border);--docusaurus-pagination-nav-hover-background-color:var(--ccw-secondary);--ifm-font-family-base:var(--ccw-font-sans);--ifm-font-family-monospace:var(--ccw-font-mono);--ifm-font-size-base:16px;--ifm-line-height-base:1.65;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--docusaurus-announcement-bar-height:auto;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ccw-primary:hsl(var(--ccw-primary-h),var(--ccw-primary-s),65%);--ccw-primary-light:hsl(var(--ccw-primary-h),30%,25%);--ccw-secondary:#1d283a;--ccw-secondary-hover:#27364e;--ccw-secondary-border:#30425f;--ccw-bg-h:220;--ccw-bg-s:30%;--ccw-bg-l:10%;--ccw-bg-secondary:#1b212d;--ccw-bg-tertiary:#222a39;--ccw-bg-elevated:#1f2533;--ccw-bg-overlay:#000000b3;--ccw-text-primary:#e0e4eb;--ccw-text-secondary:#8a94a8;--ccw-text-tertiary:#6c7993;--ccw-text-disabled:#576175;--ccw-text-inverse:#000;--ccw-border-l:22%;--ccw-border-hover:hsl(var(--ccw-border-h),var(--ccw-border-s),30%);--ccw-shadow-sm:0 1px 2px 0 #0000004d;--ccw-shadow-md:0 4px 6px -1px #0006,0 2px 4px -1px #0000004d;--ccw-shadow-lg:0 10px 15px -3px #00000080,0 4px 6px -2px #0000004d;--ccw-shadow-xl:0 20px 25px -5px #0009,0 10px 10px -5px #0000004d;--ccw-shadow-2xl:0 25px 50px -12px #000000b3;--docusaurus-link-underline-color:rgba(60,170%,255%,0.3);--ifm-background-color:var(--ccw-bg);--ifm-background-surface-color:var(--ccw-bg-secondary);--ifm-text-color:var(--ccw-text-primary);--ifm-link-color:var(--ccw-primary);--ifm-link-hover-color:var(--ccw-primary-hover);--ifm-border-color:var(--ccw-border);--ifm-alert-border-color:var(--ccw-border);--ifm-alert-background-color:var(--ccw-bg-secondary);--ifm-alert-foreground-color:var(--ccw-text-primary)}body{background-color:var(--ccw-bg);color:var(--ccw-text-primary);font-family:var(--ccw-font-sans);line-height:var(--ifm-line-height-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background-color:var(--ccw-primary-light);color:var(--ccw-text-primary)}:focus-visible{outline:2px solid var(--ccw-border-focus);outline-offset:2px}::-webkit-scrollbar{height:10px;width:10px}::-webkit-scrollbar-track{background:var(--ccw-bg-secondary);border-radius:var(--ccw-radius-full)}::-webkit-scrollbar-thumb{background:var(--ccw-border-hover);border:2px solid var(--ccw-bg-secondary);border-radius:var(--ccw-radius-full)}.menu__link,.navbar__item{border-radius:var(--ccw-radius-md)}::-webkit-scrollbar-thumb:hover{background:var(--ccw-text-tertiary)}.navbar{background-color:var(--ccw-bg-elevated)}.navbar__logo{height:32px;width:auto}.navbar__link{color:var(--ccw-text-secondary);font-weight:500}.menu__link:hover,.navbar__link--active,.navbar__link:hover{color:var(--ccw-primary)}.menu__link,.navbar__toggle{color:var(--ccw-text-secondary)}.navbar__item{margin:0 var(--ccw-spacing-xs)}.menu__list-item,li{margin-bottom:var(--ccw-spacing-xs)}.menu__link:hover{background-color:var(--ccw-secondary);color:var(--ccw-text-primary);transform:translateX(2px)}.menu{border-right:1px solid var(--ccw-border)}.menu__list,.p-sm{padding:var(--ccw-spacing-sm)}.menu__link,td,th{padding:var(--ccw-spacing-sm) var(--ccw-spacing-md)}.card__header,.card__header .header__icon,.mb-md,h1,h2,h3,h4,h5,h6{margin-bottom:var(--ccw-spacing-md)}.menu__link{transition:all var(--ccw-transition-fast)}.menu__link--active{background-color:var(--ccw-primary-light);border-left:3px solid var(--ccw-primary);color:var(--ccw-primary);font-weight:600}.markdown,h1,h2,h3,h4,h5,h6,pre code{color:var(--ccw-text-primary)}.menu__list-item--collapsed .menu__link--active{border-left-color:var(--ccw-primary)}.menu__list-item-collapsible>.menu__link--sublist{color:var(--ccw-text-primary);font-weight:600}.main-wrapper{background-color:var(--ccw-bg)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1;max-width:800px}blockquote,li,p{color:var(--ccw-text-secondary)}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.25;margin-top:var(--ccw-spacing-xl)}h1{font-size:2.25rem;padding-bottom:var(--ccw-spacing-md)}h2{font-size:1.875rem;padding-bottom:var(--ccw-spacing-sm)}.card__title,h4{font-size:1.25rem}h5,h6{font-size:1rem}code,pre code{font-size:.875em}p{margin:0 0 var(--ifm-paragraph-margin-bottom);margin-bottom:var(--ccw-spacing-md)}a{border-bottom:1px solid #0000;color:var(--ccw-primary)}a:hover{border-bottom-color:var(--ccw-primary);color:var(--ccw-primary-hover)}code{border-radius:var(--ccw-radius-sm);color:var(--ccw-primary);font-family:var(--ccw-font-mono);padding:.2em .4em}code,pre{background-color:var(--ccw-bg-tertiary);border:1px solid var(--ccw-border)}.bg-secondary,.tag--regular,blockquote,tr:hover{background-color:var(--ccw-secondary)}pre{border-radius:var(--ccw-radius-lg);padding:var(--ccw-spacing-md)}pre code{background-color:initial;border:none;line-height:1.6}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{background-color:var(--ccw-bg-tertiary);font-size:inherit;padding:.15em .3em}blockquote{border-left:4px solid var(--ccw-primary);border-radius:0 var(--ccw-radius-md) var(--ccw-radius-md) 0;padding:var(--ccw-spacing-md) var(--ccw-spacing-lg)}.card__title,th{color:var(--ccw-text-primary);font-weight:600}table{border-collapse:collapse;border-radius:var(--ccw-radius-lg);overflow:hidden;width:100%}td,th{border-bottom:1px solid var(--ccw-border)}th{background-color:var(--ccw-bg-secondary);border-bottom:2px solid var(--ccw-border)}tr:last-child td{border-bottom:none}hr{border:none;border-top:1px solid var(--ccw-border);margin:var(--ccw-spacing-2xl) 0}.card{background-color:var(--ccw-bg-elevated);border:1px solid var(--ccw-border);border-radius:var(--ccw-radius-lg);display:flex;flex-direction:column;height:100%;padding:var(--ccw-spacing-lg);transition:all var(--ccw-transition-base)}.button,.pagination-nav__link{transition:all var(--ccw-transition-fast)}.card:hover{border-color:var(--ccw-primary);box-shadow:var(--ccw-shadow-lg);transform:translateY(-4px)}.card__title{margin-bottom:var(--ccw-spacing-sm)}.card__body{color:var(--ccw-text-secondary);flex:1}.card__footer{border-top:1px solid var(--ccw-border);margin-top:var(--ccw-spacing-md);padding-top:var(--ccw-spacing-md)}.card__header .header__icon{align-items:center;background-color:var(--ccw-primary-light);border-radius:var(--ccw-radius-lg);color:var(--ccw-primary);display:inline-flex;font-size:1.5rem;height:48px;justify-content:center;width:48px}.card__header .header__icon>svg{height:22px;width:22px}.card__header .header__icon.header__icon--info{background-color:var(--ccw-info-light);color:var(--ccw-info)}.card__header .header__icon.header__icon--success{background-color:var(--ccw-success-light);color:var(--ccw-success)}.card__header .header__icon.header__icon--warning{background-color:var(--ccw-warning-light);color:var(--ccw-warning)}.button{align-items:center;border:none;border-radius:var(--ccw-radius-md);display:inline-flex;font-size:1rem;font-weight:500;justify-content:center;padding:var(--ccw-spacing-sm) var(--ccw-spacing-lg)}.bg-primary,.button--primary{background-color:var(--ccw-primary);color:var(--ccw-text-inverse)}.button--primary:hover{background-color:var(--ccw-primary-hover);box-shadow:var(--ccw-shadow-md);transform:translateY(-1px)}.button--secondary{background-color:var(--ccw-secondary);border:1px solid var(--ccw-border);color:var(--ccw-text-primary)}.button--outline,.footer__link-item:hover{color:var(--ccw-primary)}.button--secondary:hover{background-color:var(--ccw-secondary-hover);border-color:var(--ccw-border-hover)}.button--outline{background-color:initial;border:1px solid var(--ccw-primary)}.button--outline:hover{background-color:var(--ccw-primary-light)}.button--sm{font-size:.875rem;padding:var(--ccw-spacing-xs) var(--ccw-spacing-md)}.button--lg{--ifm-button-size-multiplier:1.35;font-size:1.125rem;padding:var(--ccw-spacing-md) var(--ccw-spacing-xl)}.admonition{background-color:var(--ccw-bg-secondary);border-left-style:solid;border:1px solid var(--ccw-border);border-left-width:4px;border-radius:var(--ccw-radius-lg);margin:var(--ccw-spacing-lg) 0;padding:var(--ccw-spacing-md) var(--ccw-spacing-lg)}.footer,.pagination-nav{margin-top:var(--ccw-spacing-2xl)}.admonition:hover{box-shadow:var(--ccw-shadow-sm)}.admonitionHeading{align-items:center;display:flex;font-weight:600;margin-bottom:var(--ccw-spacing-sm)}.admonitionIcon{align-items:center;display:inline-flex;height:20px;justify-content:center;width:20px}.admonition--note{background-color:var(--ccw-info-light);border-left-color:var(--ccw-info)}.admonition--tip{background-color:var(--ccw-accent-light);border-left-color:var(--ccw-accent)}.admonition--important{background-color:var(--ccw-primary-light);border-left-color:var(--ccw-primary)}.admonition--warning{background-color:var(--ccw-warning-light);border-left-color:var(--ccw-warning)}.admonition--caution{background-color:var(--ccw-error-light);border-left-color:var(--ccw-error)}.pagination-nav{border-top:1px solid var(--ccw-border);padding-top:var(--ccw-spacing-xl)}.pagination-nav__link{background-color:var(--ccw-bg-elevated);border:1px solid var(--ccw-border);border-radius:var(--ccw-radius-lg);display:flex;flex-direction:column;padding:var(--ccw-spacing-md)}.pagination-nav__link:hover{background-color:var(--ccw-secondary);border-color:var(--ccw-primary);box-shadow:var(--ccw-shadow-md);transform:translateY(-2px)}.pagination-nav__label{color:var(--ccw-text-tertiary);font-size:.875rem;margin-bottom:var(--ccw-spacing-xs)}.footer__title,.pagination-nav__title{color:var(--ccw-text-primary);font-weight:600}.pagination-nav__title{font-size:1rem}.footer{background-color:var(--ccw-bg-secondary);border-top:1px solid var(--ccw-border);padding:var(--ccw-spacing-xl) 0}.footer__title{margin-bottom:var(--ccw-spacing-md)}.footer__link-item,.tag{color:var(--ccw-text-secondary)}.footer__link-item{transition:color var(--ccw-transition-fast)}.DocSearch{--docsearch-primary-color:var(--ccw-primary);--docsearch-text-color:var(--ccw-text-primary);--docsearch-muted-color:var(--ccw-text-tertiary);--docsearch-searchbox-shadow:var(--ccw-shadow-sm);--docsearch-modal-shadow:var(--ccw-shadow-2xl);--docsearch-key-gradient:linear-gradient(268.89deg,#eaeef200,#eaeef2cc 50%,#eaeef200)}.tags{display:flex;flex-wrap:wrap;margin:var(--ccw-spacing-md) 0}.tag{align-items:center;background-color:var(--ccw-secondary);border:1px solid var(--ccw-border);border-radius:var(--ccw-radius-full);display:inline-flex;font-size:.875rem;padding:var(--ccw-spacing-xs) var(--ccw-spacing-md);transition:all var(--ccw-transition-fast)}.tag--accent,.tag:hover{background-color:var(--ccw-primary-light);border-color:var(--ccw-primary);color:var(--ccw-primary)}.breadcrumbs,.mb-lg{margin-bottom:var(--ccw-spacing-lg)}.breadcrumbs__item{color:var(--ccw-text-tertiary);font-size:.875rem}.breadcrumbs__item--active,.breadcrumbs__link,.text-secondary,.token.punctuation{color:var(--ccw-text-secondary)}.breadcrumbs__link{transition:color var(--ccw-transition-fast)}.breadcrumbs__link:hover,.text-primary,.token.atrule,.token.attr-value,.token.keyword{color:var(--ccw-primary)}.tabs{border-bottom:1px solid var(--ccw-border);margin:var(--ccw-spacing-lg) 0}.tab-list{display:flex;margin-bottom:-1px}.tab-item{border:1px solid #0000;border-bottom:none;border-radius:var(--ccw-radius-md) var(--ccw-radius-md) 0 0;color:var(--ccw-text-secondary);padding:var(--ccw-spacing-sm) var(--ccw-spacing-md);transition:all var(--ccw-transition-fast)}.tab-item:hover{background-color:var(--ccw-secondary);color:var(--ccw-primary)}.tab-item--active{background-color:var(--ccw-bg);border-color:var(--ccw-border);border-bottom-color:var(--ccw-bg);color:var(--ccw-primary);font-weight:500}.tab-content{padding:var(--ccw-spacing-lg) 0}.theme-code-block{border-radius:var(--ccw-radius-lg);overflow:hidden}.code-block-title{background-color:var(--ccw-bg-tertiary);border-bottom:1px solid var(--ccw-border);color:var(--ccw-text-secondary);font-size:.875rem;font-weight:600;padding:var(--ccw-spacing-sm) var(--ccw-spacing-md)}.prism-code{background-color:var(--ccw-bg-tertiary)!important}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:var(--ccw-text-tertiary)}.text-error,.token.boolean,.token.constant,.token.deleted,.token.important,.token.number,.token.property,.token.regex,.token.symbol,.token.tag,.token.variable{color:var(--ccw-error)}.text-accent,.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:var(--ccw-accent)}.language-css .token.string,.style .token.string,.text-warning,.token.entity,.token.operator,.token.url{color:var(--ccw-warning)}.token.class-name,.token.function{color:var(--ccw-info)}.text-success{color:var(--ccw-success)}.bg-accent{background-color:var(--ccw-accent);color:var(--ccw-text-inverse)}.mt-sm{margin-top:var(--ccw-spacing-sm)}.mt-md{margin-top:var(--ccw-spacing-md)}.mt-lg{margin-top:var(--ccw-spacing-lg)}.mt-xl{margin-top:var(--ccw-spacing-xl)}.mb-sm{margin-bottom:var(--ccw-spacing-sm)}.mb-xl{margin-bottom:var(--ccw-spacing-xl)}.p-md{padding:var(--ccw-spacing-md)}.p-lg{padding:var(--ccw-spacing-lg)}.p-xl{padding:var(--ccw-spacing-xl)}@keyframes a{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:a var(--ccw-transition-slow) ease-out}@keyframes b{0%,to{opacity:1}50%{opacity:.7}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite b}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_e5ai,.navbarSearchContainer_bmvg:empty,.sidebarLogo_nlll,.themedComponent_DHUr,.toggleIcon_KEbZ,html[data-announcement-bar-initially-dismissed=true] .announcementBar_ncOr{display:none}.skipToContent_G6ar{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_G6ar:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_rfix{line-height:0;padding:0}.content_L1uV{font-size:85%;padding:5px 0;text-align:center}.content_L1uV a{color:inherit;-webkit-text-decoration:underline;text-decoration:underline}.announcementBar_ncOr{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_ajMw{flex:0 0 10px}.announcementBarClose_c9u4{align-self:stretch;flex:0 0 30px}.toggle_OLSw{height:2rem;width:2rem}.toggleButton_wYmb{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_wYmb:hover{background:var(--ifm-color-emphasis-200)}[data-theme-choice=dark] .darkToggleIcon_Yem1,[data-theme-choice=light] .lightToggleIcon_Sxwe,[data-theme-choice=system] .systemToggleIcon_txm5,[data-theme=dark] .themedComponent--dark_Bv2M,[data-theme=light] .themedComponent--light_DIHH,html:not([data-theme]) .themedComponent--light_DIHH{display:initial}.toggleButtonDisabled_vaDU{cursor:not-allowed}.darkNavbarColorModeToggle_wZ1H:hover{background:var(--ifm-color-gray-800)}.tag_qE9H{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_qE9H:hover{--docusaurus-tag-list-border:var(--ifm-link-color)}.tagRegular_aHXt{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_UC8q{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_UC8q:after,.tagWithCount_UC8q:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_UC8q:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_UC8q:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_UC8q span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_q74f{display:inline}.tag_lSC7{display:inline-block;margin:0 .4rem .5rem 0}.iconEdit_UohW{margin-right:.3em;vertical-align:sub}.lastUpdated_g62E{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_htYj{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_htYj:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_pAh7:after,.tocCollapsibleExpanded_klrc{transform:none}.tocCollapsible_O_Qc{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_SlnY>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_SlnY ul li{margin:.4rem .8rem}.tableOfContents_TN1Q{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.backToTopButton_z1FD{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_z1FD:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_w1wE{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_Ftvb{display:none;margin:0}.categoryLinkLabel_Oe72,.linkLabel_PuAu{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical}.iconExternalLink_awgD{margin-left:.3rem}.dropdownNavbarItemMobile_r878{cursor:pointer}.iconLanguage_DSK9{margin-right:5px;vertical-align:text-bottom}.navbarHideable_bChn{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_zsXl{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_FiLL{color:red;white-space:pre-wrap}.errorBoundaryFallback_lv4I{color:red;padding:.55rem}.buttonGroup_dke2 button,.codeBlockContainer_ZGJx{background:var(--prism-background-color);color:var(--prism-color)}.navbar__items--right>:last-child{padding-right:0}.footerLogoLink_zxYv{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_zxYv:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.linkLabel_PuAu{line-clamp:2;-webkit-line-clamp:2}.categoryLink_d9ci{overflow:hidden}.menu__link--sublist-caret:after{margin-left:var(--ifm-menu-link-padding-vertical)}.categoryLinkLabel_Oe72{flex:1;line-clamp:2;-webkit-line-clamp:2}.docMainContainer_namt,.docRoot_HciC{display:flex;width:100%}.docsWrapper_XLvK{display:flex;flex:1 0 auto}.anchorTargetStickyNavbar_SAay{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorTargetHideOnScrollNavbar_Iwt7{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.mainWrapper_UyTV{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.codeBlockContainer_ZGJx{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlock_TAPP{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockLines_AdAo{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_p5De{display:table;padding:var(--ifm-pre-padding) 0}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_DPDv{counter-increment:line-count;display:table-row}.codeLineNumber_YxQB{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_YxQB:before{content:counter(line-count);opacity:.4}.codeLineContent_SOIp{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_TFXo{opacity:1!important}.copyButtonIcons_akOg{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_a21a,.copyButtonSuccessIcon_v2Tw{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_v2Tw{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_TFXo .copyButtonIcon_a21a{opacity:0;transform:scale(.33)}.copyButtonCopied_TFXo .copyButtonSuccessIcon_v2Tw{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_fUEG{height:1.2rem;width:1.2rem}.buttonGroup_dke2{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup_dke2 button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup_dke2 button:focus-visible,.buttonGroup_dke2 button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup_dke2 button{opacity:.4}.codeBlockContent_kX1v{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_L5qy{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlockTitle_L5qy+.codeBlockContent_kX1v .codeBlock_pF8g{border-top-left-radius:0;border-top-right-radius:0}.details_B4FW{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_B4FW>summary{cursor:pointer;padding-left:1rem;position:relative}.details_B4FW>summary::-webkit-details-marker{display:none}.details_B4FW>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_VYua{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.admonitionContent_bl22>:last-child,.collapsibleContent_VYua p:last-child,.details_B4FW>summary>p:last-child{margin-bottom:0}.details_SZgV{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.img__Ss2{height:auto}.admonition_IZjC{margin-bottom:1em}.admonitionHeading_uVvU{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_uVvU:not(:last-child){margin-bottom:.3rem}.admonitionHeading_uVvU code{text-transform:none}.admonitionIcon_HiR3{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_HiR3 svg{display:inline-block;fill:var(--ifm-alert-foreground-color);height:1.6em;width:1.6em}.breadcrumbHomeIcon_JFrk{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_zCmv{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}@media (min-width:997px){.collapseSidebarButton_Ftvb,.expandButton_SZY_{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_c9u4,.announcementBarPlaceholder_ajMw{flex-basis:50px}.lastUpdated_g62E{text-align:right}.tocMobile_tjDr{display:none}.collapseSidebarButton_Ftvb{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_c4WT{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_CMLm,[dir=rtl] .collapseSidebarButtonIcon_c4WT{transform:rotate(0)}.collapseSidebarButton_Ftvb:focus,.collapseSidebarButton_Ftvb:hover,.expandButton_SZY_:focus,.expandButton_SZY_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.navbarSearchContainer_bmvg{padding:0 var(--ifm-navbar-item-padding-horizontal)}.menuHtmlItem_anEq{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_qiME{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_qiME{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_hRfJ{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_vJCc{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_Fo4g{padding-top:0}.sidebarHidden_vBKa{opacity:0;visibility:hidden}.sidebarLogo_nlll{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);-webkit-text-decoration:none!important;text-decoration:none!important}.sidebarLogo_nlll img{height:2rem;margin-right:.5rem}.expandButton_SZY_{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_CMLm{transform:rotate(180deg)}.docSidebarContainer_e5ai{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_vqQo{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_N8x0{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_namt{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_sRjM{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_TX_6{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.docItemCol_YAwJ{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_Hg9V,.footer__link-separator,.navbar__item,.tableOfContents_TN1Q{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block;width:max-content}.hero{padding-left:0;padding-right:0}.main-wrapper,.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}:root{--ifm-container-width:100%}h1{font-size:1.875rem}h2{font-size:1.5rem}h3{font-size:1.25rem}.card{margin-bottom:var(--ccw-spacing-md)}.docItemContainer_JtJJ{padding:0 .3rem}.navbarSearchContainer_bmvg{position:absolute;right:var(--ifm-navbar-padding-horizontal)}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media (max-width:480px){h1{font-size:1.5rem}h2{font-size:1.25rem}.button,.pagination-nav__link{width:100%}.pagination-nav{flex-direction:column}}@media (hover:hover){.backToTopButton_z1FD:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.card,.tabs{page-break-inside:avoid}.announcementBar_ncOr,.footer,.menu,.navbar,.noPrint_HJkF,.pagination-nav,.sidebar,.table-of-contents,.tocMobile_tjDr{display:none}body{background-color:#fff;color:#000}.card{border:1px solid #ccc;box-shadow:none;break-inside:avoid}.codeBlockLines_AdAo{white-space:pre-wrap}} \ No newline at end of file diff --git a/ccw/docs-site/build/assets/js/4edc808e.5f522e06.js b/ccw/docs-site/build/assets/js/4edc808e.5f522e06.js new file mode 100644 index 00000000..e8a60dd4 --- /dev/null +++ b/ccw/docs-site/build/assets/js/4edc808e.5f522e06.js @@ -0,0 +1,2 @@ +/*! For license information please see 4edc808e.5f522e06.js.LICENSE.txt */ +"use strict";(globalThis.webpackChunkccw_docs=globalThis.webpackChunkccw_docs||[]).push([[308],{1184(e,n,s){s.d(n,{R:()=>t,x:()=>d});var l=s(3696);const r={},i=l.createContext(r);function t(e){const n=l.useContext(i);return l.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),l.createElement(i.Provider,{value:n},e.children)}},1406(e,n,s){s.r(n),s.d(n,{assets:()=>v,contentTitle:()=>f,default:()=>b,frontMatter:()=>w,metadata:()=>l,toc:()=>k});const l=JSON.parse('{"id":"index","title":"CCW Help Documentation","description":"CCW is a professional workflow automation platform that combines AI-powered intelligence with structured development workflows. With 40+ commands and 15 integrated workflows, CCW transforms how you build, test, and ship software.","source":"@site/docs/index.mdx","sourceDirName":".","slug":"/","permalink":"/docs/","draft":false,"unlisted":false,"editUrl":"https://github.com/ccw/docs/tree/main/docs/index.mdx","tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"title":"CCW Help Documentation","sidebar_label":"Home","sidebar_position":1,"slug":"/"},"sidebar":"docs","next":{"title":"Overview","permalink":"/docs/overview"}}');var r=s(2540),i=s(1184),t=s(1540),d=s(2436),o=s(3696);const c=(...e)=>e.filter((e,n,s)=>Boolean(e)&&""!==e.trim()&&s.indexOf(e)===n).join(" ").trim();var a={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const h=(0,o.forwardRef)(({color:e="currentColor",size:n=24,strokeWidth:s=2,absoluteStrokeWidth:l,className:r="",children:i,iconNode:t,...d},h)=>(0,o.createElement)("svg",{ref:h,...a,width:n,height:n,stroke:e,strokeWidth:l?24*Number(s)/Number(n):s,className:c("lucide",r),...d},[...t.map(([e,n])=>(0,o.createElement)(e,n)),...Array.isArray(i)?i:[i]])),x=(e,n)=>{const s=(0,o.forwardRef)(({className:s,...l},r)=>{return(0,o.createElement)(h,{ref:r,iconNode:n,className:c(`lucide-${i=e,i.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,s),...l});var i});return s.displayName=`${e}`,s},j=x("Workflow",[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]]),u=x("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]),m=x("CircleHelp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]),p=x("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]),g=x("Code",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]),w={title:"CCW Help Documentation",sidebar_label:"Home",sidebar_position:1,slug:"/"},f="Welcome to CCW Help Documentation",v={},k=[{value:"What is CCW?",id:"what-is-ccw",level:2},{value:"Quick Links",id:"quick-links",level:2},{value:"Key Features",id:"key-features",level:2},{value:"40+ Commands",id:"40-commands",level:3},{value:"15 Integrated Workflows",id:"15-integrated-workflows",level:3},{value:"AI-Powered Intelligence",id:"ai-powered-intelligence",level:3},{value:"Session Management",id:"session-management",level:3},{value:"Getting Started",id:"getting-started",level:2},{value:"Choose Your Starting Point",id:"choose-your-starting-point",level:3},{value:"Quick Start Examples",id:"quick-start-examples",level:3},{value:"Architecture Overview",id:"architecture-overview",level:2},{value:"Next Steps",id:"next-steps",level:2},{value:"Learn the Fundamentals",id:"learn-the-fundamentals",level:3},{value:"Explore by Use Case",id:"explore-by-use-case",level:3},{value:"Try It Out",id:"try-it-out",level:3},{value:"Support",id:"support",level:2}];function C(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"welcome-to-ccw-help-documentation",children:"Welcome to CCW Help Documentation"})}),"\n",(0,r.jsx)(n.p,{children:"CCW is a professional workflow automation platform that combines AI-powered intelligence with structured development workflows. With 40+ commands and 15 integrated workflows, CCW transforms how you build, test, and ship software."}),"\n",(0,r.jsx)(n.h2,{id:"what-is-ccw",children:"What is CCW?"}),"\n",(0,r.jsx)(n.p,{children:"CCW (Claude Code Workflows) is an advanced development environment that orchestrates AI agents, workflows, and tools to accelerate software development while maintaining quality standards."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Key Capabilities:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"AI-Powered Development"})," - Leverage multiple AI models (Gemini, Codex, Claude, Qwen) for code analysis, generation, and review"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Structured Workflows"})," - 15 workflow levels from rapid execution to intelligent orchestration"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"40+ Commands"})," - Comprehensive command set covering planning, execution, testing, review, and maintenance"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Session Management"})," - Full state persistence with resumable sessions"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Multi-Agent Coordination"})," - Parallel execution with dependency-aware task distribution"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Quality Gates"})," - Built-in testing, verification, and code review workflows"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"quick-links",children:"Quick Links"}),"\n",(0,r.jsxs)("div",{className:"row",children:[(0,r.jsx)("div",{className:"col col--4",children:(0,r.jsxs)(d.A,{to:"/workflows/introduction",className:"card padding--lg",children:[(0,r.jsxs)("div",{className:"card__header",children:[(0,r.jsx)("div",{className:"header__icon header__icon--success","aria-hidden":"true",children:(0,r.jsx)(j,{})}),(0,r.jsx)("h3",{className:"card__title",children:"Workflows"})]}),(0,r.jsx)("div",{className:"card__body",children:(0,r.jsx)("p",{children:"Explore 15 workflow levels from rapid execution to intelligent orchestration"})})]})}),(0,r.jsx)("div",{className:"col col--4",children:(0,r.jsxs)(d.A,{to:"/commands/general/ccw",className:"card padding--lg",children:[(0,r.jsxs)("div",{className:"card__header",children:[(0,r.jsx)("div",{className:"header__icon header__icon--info","aria-hidden":"true",children:(0,r.jsx)(u,{})}),(0,r.jsx)("h3",{className:"card__title",children:"Commands"})]}),(0,r.jsx)("div",{className:"card__body",children:(0,r.jsx)("p",{children:"Complete command reference for workflow, issue, CLI, and memory operations"})})]})}),(0,r.jsx)("div",{className:"col col--4",children:(0,r.jsxs)(d.A,{to:"/faq",className:"card padding--lg",children:[(0,r.jsxs)("div",{className:"card__header",children:[(0,r.jsx)("div",{className:"header__icon header__icon--warning","aria-hidden":"true",children:(0,r.jsx)(m,{})}),(0,r.jsx)("h3",{className:"card__title",children:"FAQ"})]}),(0,r.jsx)("div",{className:"card__body",children:(0,r.jsx)("p",{children:"Common questions, troubleshooting tips, and best practices"})})]})})]}),"\n",(0,r.jsx)(n.h2,{id:"key-features",children:"Key Features"}),"\n",(0,r.jsx)(n.h3,{id:"40-commands",children:"40+ Commands"}),"\n",(0,r.jsx)(n.p,{children:"CCW provides a comprehensive command set organized into categories:"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Category"}),(0,r.jsx)(n.th,{children:"Commands"}),(0,r.jsx)(n.th,{children:"Purpose"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Workflow"})}),(0,r.jsx)(n.td,{children:"13 commands"}),(0,r.jsx)(n.td,{children:"Planning, execution, review, cleanup"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Issue"})}),(0,r.jsx)(n.td,{children:"7 commands"}),(0,r.jsx)(n.td,{children:"Issue discovery, planning, resolution"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"CLI"})}),(0,r.jsx)(n.td,{children:"2 commands"}),(0,r.jsx)(n.td,{children:"CLI initialization and review"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Memory"})}),(0,r.jsx)(n.td,{children:"6 commands"}),(0,r.jsx)(n.td,{children:"Knowledge management and documentation"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"General"})}),(0,r.jsx)(n.td,{children:"7+ commands"}),(0,r.jsx)(n.td,{children:"Coordination, debugging, flow creation"})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"15-integrated-workflows",children:"15 Integrated Workflows"}),"\n",(0,r.jsx)(t.A,{chart:'\n graph TB\n subgraph Main["Main Workflow (5 Levels)"]\n L1["Level 1: Rapid
lite-lite-lite"]\n L2["Level 2: Lightweight
lite-plan, lite-fix, multi-cli-plan"]\n L3["Level 3: Standard
plan, tdd-plan, test-fix-gen"]\n L4["Level 4: Brainstorm
brainstorm:auto-parallel"]\n L5["Level 5: Intelligent
ccw-coordinator"]\n L1 --\x3e L2 --\x3e L3 --\x3e L4 --\x3e L5\n end\n\n subgraph Issue["Issue Workflow"]\n I1["Phase 1: Accumulation"]\n I2["Phase 2: Resolution"]\n I1 --\x3e I2\n end\n\n Main -.->|After development| Issue\n\n classDef level1 fill:#e3f2fd,stroke:#1976d2\n classDef level2 fill:#bbdefb,stroke:#1976d2\n classDef level3 fill:#90caf9,stroke:#1976d2\n classDef level4 fill:#64b5f6,stroke:#1976d2\n classDef level5 fill:#42a5f5,stroke:#1976d2\n classDef issue fill:#fff3e0,stroke:#f57c00\n\n class L1 level1,L2 level2,L3 level3,L4 level4,L5 level5,I1,I2 issue\n'}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Main Workflow Levels:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Level 1"}),": Ultra-lightweight direct execution with zero overhead"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Level 2"}),": Lightweight planning (lite-plan), bug fixing (lite-fix), multi-CLI analysis (multi-cli-plan)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Level 3"}),": Standard planning (plan), test-driven development (tdd-plan), test fix generation (test-fix-gen)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Level 4"}),": Brainstorming with multi-role parallel analysis"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Level 5"}),": Intelligent orchestration with auto command selection"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Issue Workflow:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Accumulation Phase"}),": discover, new"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Resolution Phase"}),": plan, queue, execute"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"ai-powered-intelligence",children:"AI-Powered Intelligence"}),"\n",(0,r.jsx)(n.p,{children:"CCW integrates multiple AI models to provide intelligent assistance:"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Model"}),(0,r.jsx)(n.th,{children:"Capabilities"}),(0,r.jsx)(n.th,{children:"Use Cases"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Gemini"})}),(0,r.jsx)(n.td,{children:"Analysis + Write"}),(0,r.jsx)(n.td,{children:"Code review, debugging, refactoring"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Codex"})}),(0,r.jsx)(n.td,{children:"Analysis + Write + Review"}),(0,r.jsx)(n.td,{children:"Git-aware code review, implementation"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Claude"})}),(0,r.jsx)(n.td,{children:"Analysis + Write"}),(0,r.jsx)(n.td,{children:"Complex reasoning, documentation"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.strong,{children:"Qwen"})}),(0,r.jsx)(n.td,{children:"Analysis + Write"}),(0,r.jsx)(n.td,{children:"Code generation, pattern matching"})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Multi-CLI Collaboration"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'# Compare solutions across multiple AI perspectives\r\n/ccw multi-cli-plan "Compare Redis vs RabbitMQ for message queuing"\n'})}),"\n",(0,r.jsx)(n.h3,{id:"session-management",children:"Session Management"}),"\n",(0,r.jsx)(n.p,{children:"CCW provides full state persistence for all workflow sessions:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'# Start a planning session\r\n/ccw workflow:plan "Implement user authentication"\r\n\r\n# Resume a paused session\r\n/ccw workflow:session:resume WFS-user-auth\r\n\r\n# List all sessions\r\n/ccw workflow:session:list\r\n\r\n# Complete and archive\r\n/ccw workflow:session:complete WFS-user-auth\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Session Structure:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:".workflow/active/WFS-{session}/\r\n\u251c\u2500\u2500 workflow-session.json # Session metadata\r\n\u251c\u2500\u2500 IMPL_PLAN.md # Implementation plan\r\n\u251c\u2500\u2500 TODO_LIST.md # Progress tracking\r\n\u251c\u2500\u2500 .task/\r\n\u2502 \u251c\u2500\u2500 IMPL-001.json # Task definitions\r\n\u2502 \u2514\u2500\u2500 ...\r\n\u2514\u2500\u2500 .summaries/\r\n \u251c\u2500\u2500 IMPL-001-summary.md # Completion summaries\r\n \u2514\u2500\u2500 ...\n"})}),"\n",(0,r.jsx)(n.h2,{id:"getting-started",children:"Getting Started"}),"\n",(0,r.jsx)(n.h3,{id:"choose-your-starting-point",children:"Choose Your Starting Point"}),"\n",(0,r.jsxs)("div",{className:"row",children:[(0,r.jsx)("div",{className:"col col--6",children:(0,r.jsxs)("div",{className:"card padding--md",children:[(0,r.jsxs)("div",{className:"card__header",children:[(0,r.jsx)("div",{className:"header__icon header__icon--info","aria-hidden":"true",children:(0,r.jsx)(p,{})}),(0,r.jsx)("h3",{className:"card__title",children:"New to CCW?"})]}),(0,r.jsxs)("div",{className:"card__body",children:[(0,r.jsxs)("p",{children:["Start with ",(0,r.jsx)("strong",{children:"Level 1 workflows"})," for simple tasks:"]}),(0,r.jsxs)("ul",{children:[(0,r.jsx)("li",{children:"Quick fixes and config adjustments"}),(0,r.jsx)("li",{children:"Simple feature implementation"}),(0,r.jsx)("li",{children:"Direct execution without planning overhead"})]}),(0,r.jsx)(d.A,{to:"/workflows/level-1-ultra-lightweight",className:"button button--primary button--sm",children:"Learn Level 1"})]})]})}),(0,r.jsx)("div",{className:"col col--6",children:(0,r.jsxs)("div",{className:"card padding--md",children:[(0,r.jsxs)("div",{className:"card__header",children:[(0,r.jsx)("div",{className:"header__icon header__icon--success","aria-hidden":"true",children:(0,r.jsx)(g,{})}),(0,r.jsx)("h3",{className:"card__title",children:"Experienced Developer?"})]}),(0,r.jsxs)("div",{className:"card__body",children:[(0,r.jsxs)("p",{children:["Jump to ",(0,r.jsx)("strong",{children:"Level 3 workflows"})," for complex features:"]}),(0,r.jsxs)("ul",{children:[(0,r.jsx)("li",{children:"Multi-module changes"}),(0,r.jsx)("li",{children:"Test-driven development"}),(0,r.jsx)("li",{children:"Complete planning with verification"})]}),(0,r.jsx)(d.A,{to:"/workflows/level-3-standard",className:"button button--primary button--sm",children:"Learn Level 3"})]})]})})]}),"\n",(0,r.jsx)(n.h3,{id:"quick-start-examples",children:"Quick Start Examples"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Quick Fix (Level 1):"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'# Direct execution for simple changes\r\n/ccw lite-lite-lite "Fix typo in login button"\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Bug Fix with Diagnosis (Level 2):"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'# Intelligent bug diagnosis and fix\r\n/ccw lite-fix "Users getting 500 error on profile update"\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Feature Development (Level 3):"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'# Complete planning and execution\r\n/ccw workflow:plan "Add OAuth2 authentication"\r\n/ccw workflow:execute --session WFS-oauth-auth\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"New Feature Design (Level 4):"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'# Multi-role brainstorming\r\n/ccw brainstorm:auto-parallel "Design real-time notification system"\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Uncertain Commands (Level 5):"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'# Auto-analyze and recommend command chain\r\n/ccw ccw-coordinator "Need to refactor the entire API layer"\n'})}),"\n",(0,r.jsx)(n.h2,{id:"architecture-overview",children:"Architecture Overview"}),"\n",(0,r.jsx)(t.A,{chart:"\n flowchart LR\n User[Developer] --\x3e CCW[CCW CLI]\n CCW --\x3e Workflow{Workflow Engine}\n\n Workflow --\x3e L1[Level 1: Direct]\n Workflow --\x3e L2[Level 2: Lightweight]\n Workflow --\x3e L3[Level 3: Standard]\n Workflow --\x3e L4[Level 4: Brainstorm]\n Workflow --\x3e L5[Level 5: Intelligent]\n\n L1 --\x3e Agent[Agent Execution]\n L2 --\x3e Agent\n L3 --\x3e Agent\n L4 --\x3e MultiAgent[Multi-Agent Parallel]\n L5 --\x3e Coordinator[Intelligent Coordinator]\n\n Agent --\x3e AI[AI Models]\n MultiAgent --\x3e AI\n Coordinator --\x3e AI\n\n AI --\x3e Output[Code + Artifacts]\n Output --\x3e Repo[Git Repository]\n Repo --\x3e Session[Session State]\n\n classDef user fill:#f3f9ff,stroke:#1976d2\n classDef ccw fill:#e3f2fd,stroke:#1976d2,stroke-width:2px\n classDef agent fill:#c8e6c9,stroke:#388e3c\n classDef ai fill:#fff9c4,stroke:#f57c00\n classDef storage fill:#f1f8e9,stroke:#33691e\n\n class User user,CCW ccw,Workflow ccw,Agent agent,MultiAgent agent,Coordinator ccw,AI ai,Output storage,Repo storage,Session storage\n"}),"\n",(0,r.jsx)(n.h2,{id:"next-steps",children:"Next Steps"}),"\n",(0,r.jsx)(n.h3,{id:"learn-the-fundamentals",children:"Learn the Fundamentals"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"/docs/workflows/introduction",children:"Workflow Introduction"})})," - Understanding workflow levels and selection"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"/docs/commands/general/ccw",children:"Command Reference"})})," - Complete command documentation"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"/docs/faq",children:"FAQ"})})," - Common questions and troubleshooting"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"explore-by-use-case",children:"Explore by Use Case"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Use Case"}),(0,r.jsx)(n.th,{children:"Recommended Workflow"}),(0,r.jsx)(n.th,{children:"Documentation"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Quick fixes"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"lite-lite-lite"})}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.a,{href:"/docs/workflows/level-1-ultra-lightweight",children:"Level 1"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Bug diagnosis"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"lite-fix"})}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.a,{href:"/docs/workflows/level-2-rapid",children:"Level 2"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Feature development"}),(0,r.jsxs)(n.td,{children:[(0,r.jsx)(n.code,{children:"plan"})," \u2192 ",(0,r.jsx)(n.code,{children:"execute"})]}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.a,{href:"/docs/workflows/level-3-standard",children:"Level 3"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Test-driven development"}),(0,r.jsxs)(n.td,{children:[(0,r.jsx)(n.code,{children:"tdd-plan"})," \u2192 ",(0,r.jsx)(n.code,{children:"execute"})]}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.a,{href:"/docs/workflows/level-3-standard",children:"Level 3"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Architecture design"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"brainstorm:auto-parallel"})}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.a,{href:"/docs/workflows/level-4-brainstorm",children:"Level 4"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Complex workflows"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"ccw-coordinator"})}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.a,{href:"/docs/workflows/level-5-intelligent",children:"Level 5"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Issue tracking"}),(0,r.jsx)(n.td,{children:"Issue Workflow"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.a,{href:"/docs/workflows/faq",children:"Workflow FAQ"})})]})]})]}),"\n",(0,r.jsx)(n.h3,{id:"try-it-out",children:"Try It Out"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Installation:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"npm install -g @ccw/cli\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Initialize Project:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"ccw init\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"First Workflow:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'# Simple task\r\nccw lite-lite-lite "Add user profile page"\r\n\r\n# Complex feature\r\nccw workflow:plan "Implement shopping cart"\n'})}),"\n",(0,r.jsx)(n.h2,{id:"support",children:"Support"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Documentation"}),": ",(0,r.jsx)(n.a,{href:"https://docs.ccw.dev",children:"docs.ccw.dev"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"GitHub"}),": ",(0,r.jsx)(n.a,{href:"https://github.com/ccw/ccw",children:"github.com/ccw/ccw"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Issues"}),": ",(0,r.jsx)(n.a,{href:"https://github.com/ccw/ccw/issues",children:"github.com/ccw/ccw/issues"})]}),"\n"]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Ready to get started?"})," Explore the ",(0,r.jsx)(n.a,{href:"/docs/workflows/introduction",children:"Workflow Introduction"})," to learn about all 15 workflow levels."]})]})}function b(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(C,{...e})}):C(e)}}}]); \ No newline at end of file diff --git a/ccw/docs-site/build/assets/js/4edc808e.5f522e06.js.LICENSE.txt b/ccw/docs-site/build/assets/js/4edc808e.5f522e06.js.LICENSE.txt new file mode 100644 index 00000000..7058697f --- /dev/null +++ b/ccw/docs-site/build/assets/js/4edc808e.5f522e06.js.LICENSE.txt @@ -0,0 +1,6 @@ +/** + * @license lucide-react v0.460.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */ diff --git a/ccw/docs-site/build/assets/js/4edc808e.b5696aa5.js b/ccw/docs-site/build/assets/js/4edc808e.b5696aa5.js deleted file mode 100644 index 66fbbdae..00000000 --- a/ccw/docs-site/build/assets/js/4edc808e.b5696aa5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkccw_docs=globalThis.webpackChunkccw_docs||[]).push([[308],{1184(e,n,s){s.d(n,{R:()=>t,x:()=>d});var l=s(3696);const i={},r=l.createContext(i);function t(e){const n=l.useContext(r);return l.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),l.createElement(r.Provider,{value:n},e.children)}},5342(e,n,s){s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>j,frontMatter:()=>o,metadata:()=>l,toc:()=>h});const l=JSON.parse('{"id":"index","title":"CCW Help Documentation","description":"CCW is a professional workflow automation platform that combines AI-powered intelligence with structured development workflows. With 40+ commands and 15 integrated workflows, CCW transforms how you build, test, and ship software.","source":"@site/docs/index.mdx","sourceDirName":".","slug":"/","permalink":"/docs/","draft":false,"unlisted":false,"editUrl":"https://github.com/ccw/docs/tree/main/docs/index.mdx","tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"title":"CCW Help Documentation","sidebar_label":"Home","sidebar_position":1,"slug":"/"},"sidebar":"docs","next":{"title":"Overview","permalink":"/docs/overview"}}');var i=s(2540),r=s(1184),t=s(1540),d=s(2436);const o={title:"CCW Help Documentation",sidebar_label:"Home",sidebar_position:1,slug:"/"},c="Welcome to CCW Help Documentation",a={},h=[{value:"What is CCW?",id:"what-is-ccw",level:2},{value:"Quick Links",id:"quick-links",level:2},{value:"Key Features",id:"key-features",level:2},{value:"40+ Commands",id:"40-commands",level:3},{value:"15 Integrated Workflows",id:"15-integrated-workflows",level:3},{value:"AI-Powered Intelligence",id:"ai-powered-intelligence",level:3},{value:"Session Management",id:"session-management",level:3},{value:"Getting Started",id:"getting-started",level:2},{value:"Choose Your Starting Point",id:"choose-your-starting-point",level:3},{value:"Quick Start Examples",id:"quick-start-examples",level:3},{value:"Architecture Overview",id:"architecture-overview",level:2},{value:"Next Steps",id:"next-steps",level:2},{value:"Learn the Fundamentals",id:"learn-the-fundamentals",level:3},{value:"Explore by Use Case",id:"explore-by-use-case",level:3},{value:"Try It Out",id:"try-it-out",level:3},{value:"Support",id:"support",level:2}];function x(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"welcome-to-ccw-help-documentation",children:"Welcome to CCW Help Documentation"})}),"\n",(0,i.jsx)(n.p,{children:"CCW is a professional workflow automation platform that combines AI-powered intelligence with structured development workflows. With 40+ commands and 15 integrated workflows, CCW transforms how you build, test, and ship software."}),"\n",(0,i.jsx)(n.h2,{id:"what-is-ccw",children:"What is CCW?"}),"\n",(0,i.jsx)(n.p,{children:"CCW (Claude Code Workflows) is an advanced development environment that orchestrates AI agents, workflows, and tools to accelerate software development while maintaining quality standards."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Key Capabilities:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"AI-Powered Development"})," - Leverage multiple AI models (Gemini, Codex, Claude, Qwen) for code analysis, generation, and review"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Structured Workflows"})," - 15 workflow levels from rapid execution to intelligent orchestration"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"40+ Commands"})," - Comprehensive command set covering planning, execution, testing, review, and maintenance"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Session Management"})," - Full state persistence with resumable sessions"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Multi-Agent Coordination"})," - Parallel execution with dependency-aware task distribution"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Quality Gates"})," - Built-in testing, verification, and code review workflows"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"quick-links",children:"Quick Links"}),"\n",(0,i.jsxs)("div",{className:"row",children:[(0,i.jsx)("div",{className:"col col--4",children:(0,i.jsxs)(d.A,{to:"/workflows/introduction",className:"card padding--lg",children:[(0,i.jsx)("div",{className:"card__header",children:(0,i.jsx)("h3",{children:"Workflows"})}),(0,i.jsx)("div",{className:"card__body",children:(0,i.jsx)("p",{children:"Explore 15 workflow levels from rapid execution to intelligent orchestration"})})]})}),(0,i.jsx)("div",{className:"col col--4",children:(0,i.jsxs)(d.A,{to:"/commands/general/ccw",className:"card padding--lg",children:[(0,i.jsx)("div",{className:"card__header",children:(0,i.jsx)("h3",{children:"Commands"})}),(0,i.jsx)("div",{className:"card__body",children:(0,i.jsx)("p",{children:"Complete command reference for workflow, issue, CLI, and memory operations"})})]})}),(0,i.jsx)("div",{className:"col col--4",children:(0,i.jsxs)(d.A,{to:"/faq",className:"card padding--lg",children:[(0,i.jsx)("div",{className:"card__header",children:(0,i.jsx)("h3",{children:"FAQ"})}),(0,i.jsx)("div",{className:"card__body",children:(0,i.jsx)("p",{children:"Common questions, troubleshooting tips, and best practices"})})]})})]}),"\n",(0,i.jsx)(n.h2,{id:"key-features",children:"Key Features"}),"\n",(0,i.jsx)(n.h3,{id:"40-commands",children:"40+ Commands"}),"\n",(0,i.jsx)(n.p,{children:"CCW provides a comprehensive command set organized into categories:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Category"}),(0,i.jsx)(n.th,{children:"Commands"}),(0,i.jsx)(n.th,{children:"Purpose"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"Workflow"})}),(0,i.jsx)(n.td,{children:"13 commands"}),(0,i.jsx)(n.td,{children:"Planning, execution, review, cleanup"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"Issue"})}),(0,i.jsx)(n.td,{children:"7 commands"}),(0,i.jsx)(n.td,{children:"Issue discovery, planning, resolution"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"CLI"})}),(0,i.jsx)(n.td,{children:"2 commands"}),(0,i.jsx)(n.td,{children:"CLI initialization and review"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"Memory"})}),(0,i.jsx)(n.td,{children:"6 commands"}),(0,i.jsx)(n.td,{children:"Knowledge management and documentation"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"General"})}),(0,i.jsx)(n.td,{children:"7+ commands"}),(0,i.jsx)(n.td,{children:"Coordination, debugging, flow creation"})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"15-integrated-workflows",children:"15 Integrated Workflows"}),"\n",(0,i.jsx)(t.A,{chart:'\n graph TB\n subgraph Main["Main Workflow (5 Levels)"]\n L1["Level 1: Rapid
lite-lite-lite"]\n L2["Level 2: Lightweight
lite-plan, lite-fix, multi-cli-plan"]\n L3["Level 3: Standard
plan, tdd-plan, test-fix-gen"]\n L4["Level 4: Brainstorm
brainstorm:auto-parallel"]\n L5["Level 5: Intelligent
ccw-coordinator"]\n L1 --\x3e L2 --\x3e L3 --\x3e L4 --\x3e L5\n end\n\n subgraph Issue["Issue Workflow"]\n I1["Phase 1: Accumulation"]\n I2["Phase 2: Resolution"]\n I1 --\x3e I2\n end\n\n Main -.->|After development| Issue\n\n classDef level1 fill:#e3f2fd,stroke:#1976d2\n classDef level2 fill:#bbdefb,stroke:#1976d2\n classDef level3 fill:#90caf9,stroke:#1976d2\n classDef level4 fill:#64b5f6,stroke:#1976d2\n classDef level5 fill:#42a5f5,stroke:#1976d2\n classDef issue fill:#fff3e0,stroke:#f57c00\n\n class L1 level1,L2 level2,L3 level3,L4 level4,L5 level5,I1,I2 issue\n'}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Main Workflow Levels:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Level 1"}),": Ultra-lightweight direct execution with zero overhead"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Level 2"}),": Lightweight planning (lite-plan), bug fixing (lite-fix), multi-CLI analysis (multi-cli-plan)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Level 3"}),": Standard planning (plan), test-driven development (tdd-plan), test fix generation (test-fix-gen)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Level 4"}),": Brainstorming with multi-role parallel analysis"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Level 5"}),": Intelligent orchestration with auto command selection"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Issue Workflow:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Accumulation Phase"}),": discover, new"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Resolution Phase"}),": plan, queue, execute"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"ai-powered-intelligence",children:"AI-Powered Intelligence"}),"\n",(0,i.jsx)(n.p,{children:"CCW integrates multiple AI models to provide intelligent assistance:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Model"}),(0,i.jsx)(n.th,{children:"Capabilities"}),(0,i.jsx)(n.th,{children:"Use Cases"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"Gemini"})}),(0,i.jsx)(n.td,{children:"Analysis + Write"}),(0,i.jsx)(n.td,{children:"Code review, debugging, refactoring"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"Codex"})}),(0,i.jsx)(n.td,{children:"Analysis + Write + Review"}),(0,i.jsx)(n.td,{children:"Git-aware code review, implementation"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"Claude"})}),(0,i.jsx)(n.td,{children:"Analysis + Write"}),(0,i.jsx)(n.td,{children:"Complex reasoning, documentation"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"Qwen"})}),(0,i.jsx)(n.td,{children:"Analysis + Write"}),(0,i.jsx)(n.td,{children:"Code generation, pattern matching"})]})]})]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Multi-CLI Collaboration"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'# Compare solutions across multiple AI perspectives\r\n/ccw multi-cli-plan "Compare Redis vs RabbitMQ for message queuing"\n'})}),"\n",(0,i.jsx)(n.h3,{id:"session-management",children:"Session Management"}),"\n",(0,i.jsx)(n.p,{children:"CCW provides full state persistence for all workflow sessions:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'# Start a planning session\r\n/ccw workflow:plan "Implement user authentication"\r\n\r\n# Resume a paused session\r\n/ccw workflow:session:resume WFS-user-auth\r\n\r\n# List all sessions\r\n/ccw workflow:session:list\r\n\r\n# Complete and archive\r\n/ccw workflow:session:complete WFS-user-auth\n'})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Session Structure:"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:".workflow/active/WFS-{session}/\r\n\u251c\u2500\u2500 workflow-session.json # Session metadata\r\n\u251c\u2500\u2500 IMPL_PLAN.md # Implementation plan\r\n\u251c\u2500\u2500 TODO_LIST.md # Progress tracking\r\n\u251c\u2500\u2500 .task/\r\n\u2502 \u251c\u2500\u2500 IMPL-001.json # Task definitions\r\n\u2502 \u2514\u2500\u2500 ...\r\n\u2514\u2500\u2500 .summaries/\r\n \u251c\u2500\u2500 IMPL-001-summary.md # Completion summaries\r\n \u2514\u2500\u2500 ...\n"})}),"\n",(0,i.jsx)(n.h2,{id:"getting-started",children:"Getting Started"}),"\n",(0,i.jsx)(n.h3,{id:"choose-your-starting-point",children:"Choose Your Starting Point"}),"\n",(0,i.jsxs)("div",{className:"row",children:[(0,i.jsx)("div",{className:"col col--6",children:(0,i.jsxs)("div",{className:"card padding--md",children:[(0,i.jsx)("div",{className:"card__header",children:(0,i.jsx)("h3",{children:"New to CCW?"})}),(0,i.jsxs)("div",{className:"card__body",children:[(0,i.jsxs)("p",{children:["Start with ",(0,i.jsx)("strong",{children:"Level 1 workflows"})," for simple tasks:"]}),(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"Quick fixes and config adjustments"}),(0,i.jsx)("li",{children:"Simple feature implementation"}),(0,i.jsx)("li",{children:"Direct execution without planning overhead"})]}),(0,i.jsx)(d.A,{to:"/workflows/level-1-ultra-lightweight",className:"button button--primary button--sm",children:"Learn Level 1"})]})]})}),(0,i.jsx)("div",{className:"col col--6",children:(0,i.jsxs)("div",{className:"card padding--md",children:[(0,i.jsx)("div",{className:"card__header",children:(0,i.jsx)("h3",{children:"Experienced Developer?"})}),(0,i.jsxs)("div",{className:"card__body",children:[(0,i.jsxs)("p",{children:["Jump to ",(0,i.jsx)("strong",{children:"Level 3 workflows"})," for complex features:"]}),(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"Multi-module changes"}),(0,i.jsx)("li",{children:"Test-driven development"}),(0,i.jsx)("li",{children:"Complete planning with verification"})]}),(0,i.jsx)(d.A,{to:"/workflows/level-3-standard",className:"button button--primary button--sm",children:"Learn Level 3"})]})]})})]}),"\n",(0,i.jsx)(n.h3,{id:"quick-start-examples",children:"Quick Start Examples"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Quick Fix (Level 1):"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'# Direct execution for simple changes\r\n/ccw lite-lite-lite "Fix typo in login button"\n'})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Bug Fix with Diagnosis (Level 2):"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'# Intelligent bug diagnosis and fix\r\n/ccw lite-fix "Users getting 500 error on profile update"\n'})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Feature Development (Level 3):"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'# Complete planning and execution\r\n/ccw workflow:plan "Add OAuth2 authentication"\r\n/ccw workflow:execute --session WFS-oauth-auth\n'})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"New Feature Design (Level 4):"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'# Multi-role brainstorming\r\n/ccw brainstorm:auto-parallel "Design real-time notification system"\n'})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Uncertain Commands (Level 5):"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'# Auto-analyze and recommend command chain\r\n/ccw ccw-coordinator "Need to refactor the entire API layer"\n'})}),"\n",(0,i.jsx)(n.h2,{id:"architecture-overview",children:"Architecture Overview"}),"\n",(0,i.jsx)(t.A,{chart:"\n flowchart LR\n User[Developer] --\x3e CCW[CCW CLI]\n CCW --\x3e Workflow{Workflow Engine}\n\n Workflow --\x3e L1[Level 1: Direct]\n Workflow --\x3e L2[Level 2: Lightweight]\n Workflow --\x3e L3[Level 3: Standard]\n Workflow --\x3e L4[Level 4: Brainstorm]\n Workflow --\x3e L5[Level 5: Intelligent]\n\n L1 --\x3e Agent[Agent Execution]\n L2 --\x3e Agent\n L3 --\x3e Agent\n L4 --\x3e MultiAgent[Multi-Agent Parallel]\n L5 --\x3e Coordinator[Intelligent Coordinator]\n\n Agent --\x3e AI[AI Models]\n MultiAgent --\x3e AI\n Coordinator --\x3e AI\n\n AI --\x3e Output[Code + Artifacts]\n Output --\x3e Repo[Git Repository]\n Repo --\x3e Session[Session State]\n\n classDef user fill:#f3f9ff,stroke:#1976d2\n classDef ccw fill:#e3f2fd,stroke:#1976d2,stroke-width:2px\n classDef agent fill:#c8e6c9,stroke:#388e3c\n classDef ai fill:#fff9c4,stroke:#f57c00\n classDef storage fill:#f1f8e9,stroke:#33691e\n\n class User user,CCW ccw,Workflow ccw,Agent agent,MultiAgent agent,Coordinator ccw,AI ai,Output storage,Repo storage,Session storage\n"}),"\n",(0,i.jsx)(n.h2,{id:"next-steps",children:"Next Steps"}),"\n",(0,i.jsx)(n.h3,{id:"learn-the-fundamentals",children:"Learn the Fundamentals"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.a,{href:"/docs/workflows/introduction",children:"Workflow Introduction"})})," - Understanding workflow levels and selection"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.a,{href:"/docs/commands/general/ccw",children:"Command Reference"})})," - Complete command documentation"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.a,{href:"/docs/faq",children:"FAQ"})})," - Common questions and troubleshooting"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"explore-by-use-case",children:"Explore by Use Case"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Use Case"}),(0,i.jsx)(n.th,{children:"Recommended Workflow"}),(0,i.jsx)(n.th,{children:"Documentation"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Quick fixes"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lite-lite-lite"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/docs/workflows/level-1-ultra-lightweight",children:"Level 1"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Bug diagnosis"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lite-fix"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/docs/workflows/level-2-rapid",children:"Level 2"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Feature development"}),(0,i.jsxs)(n.td,{children:[(0,i.jsx)(n.code,{children:"plan"})," \u2192 ",(0,i.jsx)(n.code,{children:"execute"})]}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/docs/workflows/level-3-standard",children:"Level 3"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Test-driven development"}),(0,i.jsxs)(n.td,{children:[(0,i.jsx)(n.code,{children:"tdd-plan"})," \u2192 ",(0,i.jsx)(n.code,{children:"execute"})]}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/docs/workflows/level-3-standard",children:"Level 3"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Architecture design"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"brainstorm:auto-parallel"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/docs/workflows/level-4-brainstorm",children:"Level 4"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Complex workflows"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"ccw-coordinator"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/docs/workflows/level-5-intelligent",children:"Level 5"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Issue tracking"}),(0,i.jsx)(n.td,{children:"Issue Workflow"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"/docs/workflows/faq",children:"Workflow FAQ"})})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"try-it-out",children:"Try It Out"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Installation:"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"npm install -g @ccw/cli\n"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Initialize Project:"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"ccw init\n"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"First Workflow:"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'# Simple task\r\nccw lite-lite-lite "Add user profile page"\r\n\r\n# Complex feature\r\nccw workflow:plan "Implement shopping cart"\n'})}),"\n",(0,i.jsx)(n.h2,{id:"support",children:"Support"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Documentation"}),": ",(0,i.jsx)(n.a,{href:"https://docs.ccw.dev",children:"docs.ccw.dev"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"GitHub"}),": ",(0,i.jsx)(n.a,{href:"https://github.com/ccw/ccw",children:"github.com/ccw/ccw"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Issues"}),": ",(0,i.jsx)(n.a,{href:"https://github.com/ccw/ccw/issues",children:"github.com/ccw/ccw/issues"})]}),"\n"]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Ready to get started?"})," Explore the ",(0,i.jsx)(n.a,{href:"/docs/workflows/introduction",children:"Workflow Introduction"})," to learn about all 15 workflow levels."]})]})}function j(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}}}]); \ No newline at end of file diff --git a/ccw/docs-site/build/assets/js/main.b2873c5b.js b/ccw/docs-site/build/assets/js/main.20b473f1.js similarity index 99% rename from ccw/docs-site/build/assets/js/main.b2873c5b.js rename to ccw/docs-site/build/assets/js/main.20b473f1.js index 6b2186f3..34e8f6b9 100644 --- a/ccw/docs-site/build/assets/js/main.b2873c5b.js +++ b/ccw/docs-site/build/assets/js/main.20b473f1.js @@ -1,2 +1,2 @@ -/*! For license information please see main.b2873c5b.js.LICENSE.txt */ -(globalThis.webpackChunkccw_docs=globalThis.webpackChunkccw_docs||[]).push([[792],{213(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(3696),a=n(8415);function o(){return(0,r.useContext)(a.o)}},396(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(3696),a=n(3358);function o(){return(0,r.useContext)(a.o)}},467(e,t,n){"use strict";n.d(t,{W:()=>r});const r="default"},758(){Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),Prism.languages.js=Prism.languages.javascript},781(e,t,n){"use strict";n.d(t,{AL:()=>u,s$:()=>d});var r=n(3696),a=n(396),o=n(893),i=n(1786),s=n(2540);const l=({title:e,siteTitle:t,titleDelimiter:n})=>{const r=e?.trim();return r&&r!==t?`${r} ${n} ${t}`:t},c=(0,r.createContext)(null);function u({formatter:e,children:t}){return(0,s.jsx)(c.Provider,{value:e,children:t})}function d(){const e=function(){const e=(0,r.useContext)(c);if(null===e)throw new i.dV("TitleFormatterProvider");return e}(),{siteConfig:t}=(0,a.A)(),{title:n,titleDelimiter:s}=t,{plugin:u}=(0,o.A)();return{format:t=>e({title:t,siteTitle:n,titleDelimiter:s,plugin:u,defaultFormatter:l})}}},893(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(3696),a=n(4720);function o(){const e=r.useContext(a.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}},1034(e,t,n){"use strict";n.d(t,{Mq:()=>f,Tv:()=>c,gk:()=>p});var r=n(3696),a=n(9531),o=n(213),i=(n(3351),n(1786)),s=n(2540);const l=r.createContext(void 0);function c({children:e}){const t=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)(()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}}),[])}();return(0,s.jsx)(l.Provider,{value:t,children:e})}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.dV("ScrollControllerProvider");return e}const d=()=>a.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function f(e,t=[]){const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(d()),o=(0,i._q)(e);(0,r.useEffect)(()=>{const e=()=>{if(!n.current)return;const e=d();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)},[o,n,...t])}function p(){const e=(0,r.useRef)(null),t=(0,o.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},1187(e,t,n){"use strict";n.d(t,{l:()=>s});var r=n(3696),a=n(9531);const o="desktop",i="mobile";function s({desktopBreakpoint:e=996}={}){const[t,n]=(0,r.useState)(()=>"ssr");return(0,r.useEffect)(()=>{function t(){n(function(e){if(!a.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o:i}(e))}return t(),window.addEventListener("resize",t),()=>{window.removeEventListener("resize",t)}},[e]),t}},1220(e,t,n){"use strict";n.d(t,{A:()=>u});var r=n(3696),a=n(4357),o=n(213),i=n(2727);const s={themedComponent:"themedComponent_DHUr","themedComponent--light":"themedComponent--light_DIHH","themedComponent--dark":"themedComponent--dark_Bv2M"};var l=n(2540);function c({className:e,children:t}){const n=(0,o.A)(),{colorMode:c}=(0,i.G)();return(0,l.jsx)(l.Fragment,{children:(n?"dark"===c?["dark"]:["light"]:["light","dark"]).map(n=>{const o=t({theme:n,className:(0,a.A)(e,s.themedComponent,s[`themedComponent--${n}`])});return(0,l.jsx)(r.Fragment,{children:o},n)})})}function u(e){const{sources:t,className:n,alt:r,...a}=e;return(0,l.jsx)(c,{className:n,children:({theme:e,className:n})=>(0,l.jsx)("img",{src:t[e],alt:r,className:n,...a})})}},1255(e,t,n){"use strict";n.r(t)},1411(e,t,n){"use strict";n.d(t,{A:()=>r});function r(e){const t={};return function e(n,r){Object.entries(n).forEach(([n,a])=>{const o=r?`${r}.${n}`:n;var i;"object"==typeof(i=a)&&i&&Object.keys(i).length>0?e(a,o):t[o]=a})}(e),t}},1434(e,t,n){"use strict";e.exports=n(7699)},1451(e,t){"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,c=n?Symbol.for("react.context"):60110,u=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,g=n?Symbol.for("react.memo"):60115,h=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,v=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case u:case d:case o:case s:case i:case p:return e;default:switch(e=e&&e.$$typeof){case c:case f:case h:case g:case l:return e;default:return t}}case a:return t}}}function x(e){return k(e)===d}},1540(e,t,n){"use strict";n.d(t,{A:()=>r});const r=()=>null},1631(e,t,n){"use strict";n.d(t,{A:()=>u});n(3696);var r=n(2436),a=n(5215),o=n(396),i=n(2520),s=n(1220),l=n(2540);function c({logo:e,alt:t,imageClassName:n}){const r={light:(0,a.Ay)(e.src),dark:(0,a.Ay)(e.srcDark||e.src)},o=(0,l.jsx)(s.A,{className:e.className,sources:r,height:e.height,width:e.width,alt:t,style:e.style});return n?(0,l.jsx)("div",{className:n,children:o}):o}function u(e){const{siteConfig:{title:t}}=(0,o.A)(),{navbar:{title:n,logo:s}}=(0,i.p)(),{imageClassName:u,titleClassName:d,...f}=e,p=(0,a.Ay)(s?.href||"/"),m=n?"":t,g=s?.alt??m;return(0,l.jsxs)(r.A,{to:p,...f,...s?.target&&{target:s.target},children:[s&&(0,l.jsx)(c,{logo:s,alt:g,imageClassName:u}),null!=n&&(0,l.jsx)("b",{className:d,children:n})]})}},1786(e,t,n){"use strict";n.d(t,{Be:()=>c,ZC:()=>s,_q:()=>i,dV:()=>l,fM:()=>u});var r=n(3696),a=n(3351),o=n(2540);function i(e){const t=(0,r.useRef)(e);return(0,a.A)(()=>{t.current=e},[e]),(0,r.useCallback)((...e)=>t.current(...e),[])}function s(e){const t=(0,r.useRef)();return(0,a.A)(()=>{t.current=e}),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function c(e){const t=Object.entries(e);return t.sort((e,t)=>e[0].localeCompare(t[0])),(0,r.useMemo)(()=>e,t.flat())}function u(e){return({children:t})=>(0,o.jsx)(o.Fragment,{children:e.reduceRight((e,t)=>(0,o.jsx)(t,{children:e}),t)})}},1803(){!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,function(e){if("function"==typeof o&&!o(e))return e;for(var a,s=i.length;-1!==n.code.indexOf(a=t(r,s));)++s;return i[s]=e,a}),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(s){for(var l=0;l=o.length);l++){var c=s[l];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],f="string"==typeof c?c:c.content,p=t(r,u),m=f.indexOf(p);if(m>-1){++a;var g=f.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=f.substring(m+p.length),b=[];g&&b.push.apply(b,i([g])),b.push(h),y&&b.push.apply(b,i([y])),"string"==typeof c?s.splice.apply(s,[l,1].concat(b)):c.content=b}}else c.content&&i(c.content)}return s}(n.tokens)}}}})}(Prism)},1823(){Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python},2004(e,t,n){"use strict";n.d(t,{mg:()=>J,vd:()=>W});var r=n(3696),a=n(9067),o=n.n(a),i=n(9772),s=n.n(i),l=n(8958),c=n.n(l),u=n(2146),d=n.n(u);function f(){return f=Object.assign||function(e){for(var t=1;t=0||(a[n]=e[n]);return a}var h={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},y={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},v={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(h).map(function(e){return h[e]}),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},x=Object.keys(k).reduce(function(e,t){return e[k[t]]=t,e},{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},_=function(e){var t=S(e,h.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,function(){return t});var r=S(e,"defaultTitle");return t||r||void 0},E=function(e){return S(e,"onChangeClientState")||function(){}},A=function(e,t){return t.filter(function(t){return void 0!==t[e]}).map(function(t){return t[e]}).reduce(function(e,t){return f({},e,t)},{})},C=function(e,t){return t.filter(function(e){return void 0!==e[h.BASE]}).map(function(e){return e[h.BASE]}).reverse().reduce(function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a/g,">").replace(/"/g,""").replace(/'/g,"'")},R=function(e){return Object.keys(e).reduce(function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r},"")},I=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce(function(t,n){return t[k[n]||n]=e[n],t},t)},D=function(e,t){return t.map(function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach(function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]}),r.createElement(e,o)})},M=function(e,t,n){switch(e){case h.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=I(n,a),[r.createElement(h.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=R(n),o=P(t);return a?"<"+e+' data-rh="true" '+a+">"+F(o,r)+"":"<"+e+' data-rh="true">'+F(o,r)+""}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return I(t)},toString:function(){return R(t)}};default:return{toComponent:function(){return D(e,t)},toString:function(){return function(e,t,n){return t.reduce(function(t,r){var a=Object.keys(r).filter(function(e){return!("innerHTML"===e||"cssText"===e)}).reduce(function(e,t){var a=void 0===r[t]?t:t+'="'+F(r[t],n)+'"';return e?e+" "+a:a},""),o=r.innerHTML||r.cssText||"",i=-1===L.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"")},"")}(e,t,n)}}}},$=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,s=e.title,l=void 0===s?"":s,c=e.titleAttributes,u=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=N(e.metaTags,v),o=N(t,y),i=N(n,b);return{priorityMethods:{toComponent:function(){return[].concat(D(h.META,a.priority),D(h.LINK,o.priority),D(h.SCRIPT,i.priority))},toString:function(){return M(h.META,a.priority,r)+" "+M(h.LINK,o.priority,r)+" "+M(h.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);p=m.priorityMethods,u=m.linkTags,d=m.metaTags,f=m.scriptTags}return{priority:p,base:M(h.BASE,t,r),bodyAttributes:M("bodyAttributes",n,r),htmlAttributes:M("htmlAttributes",a,r),link:M(h.LINK,u,r),meta:M(h.META,d,r),noscript:M(h.NOSCRIPT,o,r),script:M(h.SCRIPT,f,r),style:M(h.STYLE,i,r),title:M(h.TITLE,{title:l,titleAttributes:c},r)}},z=[],B=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=$({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),H=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),V="undefined"!=typeof document,W=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new B(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);W.canUseDOM=V,W.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},W.defaultProps={context:{}},W.displayName="HelmetProvider";var G=function(e,t){var n,r=document.head||document.querySelector(h.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach(function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some(function(e,t){return n=t,r.isEqualNode(e)})?o.splice(n,1):i.push(r)}),o.forEach(function(e){return e.parentNode.removeChild(e)}),i.forEach(function(e){return r.appendChild(e)}),{oldTags:o,newTags:i}},q=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),s=0;s=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},Y=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,s=e.onChangeClientState,l=e.scriptTags,c=e.styleTags,u=e.title,d=e.titleAttributes;q(h.BODY,e.bodyAttributes),q(h.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=P(e)),q(h.TITLE,t)}(u,d);var f={baseTag:G(h.BASE,n),linkTags:G(h.LINK,a),metaTags:G(h.META,o),noscriptTags:G(h.NOSCRIPT,i),scriptTags:G(h.SCRIPT,l),styleTags:G(h.STYLE,c)},p={},m={};Object.keys(f).forEach(function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(m[e]=f[e].oldTags)}),t&&t(),s(e,p,m)},K=null,Z=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case h.TITLE:return f({},a,((t={})[r.type]=i,t.titleAttributes=f({},o),t));case h.BODY:return f({},a,{bodyAttributes:f({},o)});case h.HTML:return f({},a,{htmlAttributes:f({},o)});default:return f({},a,((n={})[r.type]=f({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach(function(t){var r;n=f({},n,((r={})[t]=e[t],r))}),n},n.warnOnInvalidChildren=function(e,t){return c()(w.some(function(t){return e.type===t}),"function"==typeof e.type?"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),c()(!t||"string"==typeof t||Array.isArray(t)&&!t.some(function(e){return"string"!=typeof e}),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``} ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,function(e){if(e&&e.props){var r=e.props,o=r.children,i=g(r,Q),s=Object.keys(i).reduce(function(e,t){return e[x[t]||t]=i[t],e},{}),l=e.type;switch("symbol"==typeof l?l=l.toString():n.warnOnInvalidChildren(e,o),l){case h.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case h.LINK:case h.META:case h.NOSCRIPT:case h.SCRIPT:case h.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:s,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:s,nestedChildren:o})}}}),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=g(e,X),a=f({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof B||(o=new B(o.context,o.instances)),o?r.createElement(Z,f({},a,{context:o.value,helmetData:void 0})):r.createElement(U.Consumer,null,function(e){return r.createElement(Z,f({},a,{context:e}))})},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},2102(e,t,n){"use strict";t.rA=t.UC=t.Ks=void 0;const r=n(5608);var a=n(3105);Object.defineProperty(t,"Ks",{enumerable:!0,get:function(){return r.__importDefault(a).default}}),Object.defineProperty(t,"UC",{enumerable:!0,get:function(){return a.removeTrailingSlash}});var o=n(8268);var i=n(8783);Object.defineProperty(t,"rA",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},2107(e,t,n){"use strict";n.d(t,{Wf:()=>c});n(3696);const r=JSON.parse('{"N":"localStorage","M":""}'),a=r.N;function o({key:e,oldValue:t,newValue:n,storage:r}){if(t===n)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,e,t,n,window.location.href,r),window.dispatchEvent(a)}function i(e=a){if("undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,s||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),s=!0),null}var t}let s=!1;const l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(e,t){const n=`${e}${r.M}`;if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(n);const a=i(t?.persistence);return null===a?l:{get:()=>{try{return a.getItem(n)}catch(e){return console.error(`Docusaurus storage error, can't get key=${n}`,e),null}},set:e=>{try{const t=a.getItem(n);a.setItem(n,e),o({key:n,oldValue:t,newValue:e,storage:a})}catch(t){console.error(`Docusaurus storage error, can't set ${n}=${e}`,t)}},del:()=>{try{const e=a.getItem(n);a.removeItem(n),o({key:n,oldValue:e,newValue:null,storage:a})}catch(e){console.error(`Docusaurus storage error, can't delete key=${n}`,e)}},listen:e=>{try{const t=t=>{t.storageArea===a&&t.key===n&&e(t)};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)}catch(t){return console.error(`Docusaurus storage error, can't listen for changes of key=${n}`,t),()=>{}}}}}},2146(e){e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var s=Object.prototype.hasOwnProperty.bind(t),l=0;li});n(3696);var r=n(9082);const a="iconExternalLink_awgD";var o=n(2540);function i({width:e=13.5,height:t=13.5}){return(0,o.jsx)("svg",{width:e,height:t,"aria-label":(0,r.T)({id:"theme.IconExternalLink.ariaLabel",message:"(opens in new tab)",description:"The ARIA label for the external link icon"}),className:a,children:(0,o.jsx)("use",{href:"#theme-svg-external-link"})})}},2200(e,t,n){"use strict";var r=n(4370),a=n(4784);!function(e){const{themeConfig:{prism:t}}=a.A,{additionalLanguages:r}=t,o=globalThis.Prism;globalThis.Prism=e,r.forEach(e=>{"php"===e&&n(1803),n(7370)(`./prism-${e}`)}),delete globalThis.Prism,void 0!==o&&(globalThis.Prism=e)}(r.My)},2371(){Prism.languages.go=Prism.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),Prism.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete Prism.languages.go["class-name"]},2402(e,t,n){var r=n(3150);e.exports=g,e.exports.parse=o,e.exports.compile=function(e,t){return c(o(e,t),t)},e.exports.tokensToFunction=c,e.exports.tokensToRegExp=m;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,s=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var u=n[0],f=n[1],p=n.index;if(l+=e.slice(s,p),s=p+u.length,f)l+=f[1];else{var m=e[s],g=n[2],h=n[3],y=n[4],b=n[5],v=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=g&&null!=m&&m!==g,x="+"===v||"*"===v,S="?"===v||"*"===v,_=g||c,E=y||b,A=g||("string"==typeof r[r.length-1]?r[r.length-1]:"");r.push({name:h||o++,prefix:g||"",delimiter:_,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:E?d(E):w?".*":i(_,A)})}}return s-1?"[^"+u(e)+"]+?":u(t)+"|(?:(?!"+u(t)+")[^"+u(e)+"])+?"}function s(e){return encodeURI(e).replace(/[\/?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function l(e){return encodeURI(e).replace(/[?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function c(e,t){for(var n=new Array(e.length),a=0;ap});var r=n(3696),a=n(5380),o=n(2102),i=n(396),s=n(5436),l=n(9531),c=n(6357),u=n(5215),d=n(2540);function f({isNavLink:e,to:t,href:n,activeClassName:f,isActive:p,"data-noBrokenLinkCheck":m,autoAddBaseUrl:g=!0,...h},y){const{siteConfig:b}=(0,i.A)(),{trailingSlash:v,baseUrl:w}=b,k=b.future.experimental_router,{withBaseUrl:x}=(0,u.hH)(),S=(0,c.A)(),_=(0,r.useRef)(null);(0,r.useImperativeHandle)(y,()=>_.current);const E=t||n;const A=(0,s.A)(E),C=E?.replace("pathname://","");let T=void 0!==C?(j=C,g&&(e=>e.startsWith("/"))(j)?x(j):j):void 0;var j;"hash"===k&&T?.startsWith("./")&&(T=T?.slice(1)),T&&A&&(T=(0,o.Ks)(T,{trailingSlash:v,baseUrl:w}));const P=(0,r.useRef)(!1),N=e?a.k2:a.N_,O=l.A.canUseIntersectionObserver,L=(0,r.useRef)(),F=()=>{P.current||null==T||(window.docusaurus.preload(T),P.current=!0)};(0,r.useEffect)(()=>(!O&&A&&l.A.canUseDOM&&null!=T&&window.docusaurus.prefetch(T),()=>{O&&L.current&&L.current.disconnect()}),[L,T,O,A]);const R=T?.startsWith("#")??!1,I=!h.target||"_self"===h.target,D=!T||!A||!I||R&&"hash"!==k;m||!R&&D||S.collectLink(T),h.id&&S.collectAnchor(h.id);const M={};return D?(0,d.jsx)("a",{ref:_,href:T,...E&&!A&&{target:"_blank",rel:"noopener noreferrer"},...h,...M}):(0,d.jsx)(N,{...h,onMouseEnter:F,onTouchStart:F,innerRef:e=>{_.current=e,O&&e&&A&&(L.current=new window.IntersectionObserver(t=>{t.forEach(t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(L.current.unobserve(e),L.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))})}),L.current.observe(e))},to:T,...e&&{isActive:p,activeClassName:f},...M})}const p=r.forwardRef(f)},2520(e,t,n){"use strict";n.d(t,{p:()=>a});var r=n(396);function a(){return(0,r.A)().siteConfig.themeConfig}},2540(e,t,n){"use strict";e.exports=n(2192)},2631(e,t,n){"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},2654(e){"use strict";e.exports={}},2727(e,t,n){"use strict";n.d(t,{G:()=>x,a:()=>k});var r=n(3696),a=n(213),o=n(1786),i=n(2107),s=n(2520),l=n(2540);function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function u(e){return function(e,t){const n=window.matchMedia(e);return n.addEventListener("change",t),()=>n.removeEventListener("change",t)}("(prefers-color-scheme: dark)",()=>e(c()))}const d=r.createContext(void 0),f=(0,i.Wf)("theme"),p="system",m=e=>"dark"===e?"dark":"light",g=e=>null===e||e===p?null:m(e),h=()=>m(document.documentElement.getAttribute("data-theme")),y=e=>{document.documentElement.setAttribute("data-theme",m(e))},b=()=>g(document.documentElement.getAttribute("data-theme-choice")),v=e=>{document.documentElement.setAttribute("data-theme-choice",g(e)??p)};function w(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.p)(),{colorMode:o,setColorModeState:i,colorModeChoice:l,setColorModeChoiceState:d}=function(){const{colorMode:{defaultMode:e}}=(0,s.p)(),t=(0,a.A)(),[n,o]=(0,r.useState)(t?h():e),[i,l]=(0,r.useState)(t?b():null);return(0,r.useEffect)(()=>{o(h()),l(b())},[]),{colorMode:n,setColorModeState:o,colorModeChoice:i,setColorModeChoiceState:l}}();(0,r.useEffect)(()=>{t&&f.del()},[t]);const p=(0,r.useCallback)((t,r={})=>{const{persist:a=!0}=r;if(null===t){const t=n?c():e;y(t),i(t),v(null),d(null)}else y(t),v(t),i(t),d(t);var o;a&&(null===(o=t)?f.del():f.set(m(o)))},[i,d,n,e]);return(0,r.useEffect)(()=>f.listen(e=>{p(g(e.newValue))}),[p]),(0,r.useEffect)(()=>{if(null===l&&n)return u(e=>{i(e),y(e)})},[n,l,i]),(0,r.useMemo)(()=>({colorMode:o,colorModeChoice:l,setColorMode:p,get isDarkTheme(){return"dark"===o},setLightTheme(){p("light")},setDarkTheme(){p("dark")}}),[o,l,p])}function k({children:e}){const t=w();return(0,l.jsx)(d.Provider,{value:t,children:e})}function x(){const e=(0,r.useContext)(d);if(null==e)throw new o.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},2780(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(Prism)},3348(e,t,n){"use strict";n.d(t,{Nr:()=>f,w8:()=>m,B5:()=>x,Vd:()=>v,QB:()=>k,fW:()=>w,OF:()=>b,Y:()=>h});var r=n(3696),a=n(6090),o=n(8150),i=n(8016),s=n(4271);function l(e){return Array.from(new Set(e))}var c=n(6392),u=n(4647),d=n(5487);function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}const p=(e,t)=>void 0!==e&&(0,s.ys)(e,t);function m(e,t){return"link"===e.type?p(e.href,t):"category"===e.type&&(p(e.href,t)||((e,t)=>e.some(e=>m(e,t)))(e.items,t))}function g(e,t){switch(e.type){case"category":return m(e,t)||void 0!==e.href&&!e.linkUnlisted||e.items.some(e=>g(e,t));case"link":return!e.unlisted||m(e,t);default:return!0}}function h(e,t){return(0,r.useMemo)(()=>e.filter(e=>g(e,t)),[e,t])}function y({sidebarItems:e,pathname:t,onlyCategories:n=!1}){const r=[];return function e(a){for(const o of a)if("category"===o.type&&((0,s.ys)(o.href,t)||e(o.items))||"link"===o.type&&(0,s.ys)(o.href,t)){return n&&"category"!==o.type||r.unshift(o),!0}return!1}(e),r}function b(){const e=(0,d.t)(),{pathname:t}=(0,a.zy)(),n=(0,i.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?y({sidebarItems:e.items,pathname:t}):null}function v(e){const{activeVersion:t}=(0,i.zK)(e),{preferredVersion:n}=(0,c.g1)(e),a=(0,i.r7)(e);return(0,r.useMemo)(()=>l([t,n,a].filter(Boolean)),[t,n,a])}function w(e,t){const n=v(t);return(0,r.useMemo)(()=>{const t=n.flatMap(e=>e.sidebars?Object.entries(e.sidebars):[]),r=t.find(t=>t[0]===e);if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map(e=>e.name).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map(e=>e[0]).join("\n- ")}`);return r[1]},[e,n])}function k(e,t){const n=v(t);return(0,r.useMemo)(()=>{const t=n.flatMap(e=>e.docs),r=t.find(t=>t.id===e);if(!r){if(n.flatMap(e=>e.draftIds).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map(e=>e.name).join(", ")}".\nAvailable doc ids are:\n- ${l(t.map(e=>e.id)).join("\n- ")}`)}return r},[e,n])}function x({route:e}){const t=(0,a.zy)(),n=(0,u.r)(),r=e.routes,i=r.find(e=>(0,a.B6)(t.pathname,e));if(!i)return null;const s=i.sidebar,l=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.v)(r),sidebarName:s,sidebarItems:l}}},3351(e,t,n){"use strict";n.d(t,{A:()=>a});var r=n(3696);const a=n(9531).A.canUseDOM?r.useLayoutEffect:r.useEffect},3358(e,t,n){"use strict";n.d(t,{o:()=>d,l:()=>f});var r=n(3696),a=n(4784);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs/","mainDocId":"index","docs":[{"id":"commands/cli/cli-init","path":"/docs/commands/cli/cli-init","sidebar":"docs"},{"id":"commands/cli/codex-review","path":"/docs/commands/cli/codex-review","sidebar":"docs"},{"id":"commands/general/ccw","path":"/docs/commands/general/ccw","sidebar":"docs"},{"id":"commands/general/ccw-coordinator","path":"/docs/commands/general/ccw-coordinator","sidebar":"docs"},{"id":"commands/general/ccw-debug","path":"/docs/commands/general/ccw-debug","sidebar":"docs"},{"id":"commands/general/ccw-plan","path":"/docs/commands/general/ccw-plan","sidebar":"docs"},{"id":"commands/general/ccw-test","path":"/docs/commands/general/ccw-test","sidebar":"docs"},{"id":"commands/general/codex-coordinator","path":"/docs/commands/general/codex-coordinator","sidebar":"docs"},{"id":"commands/general/flow-create","path":"/docs/commands/general/flow-create","sidebar":"docs"},{"id":"commands/issue/issue-convert-to-plan","path":"/docs/commands/issue/issue-convert-to-plan","sidebar":"docs"},{"id":"commands/issue/issue-discover","path":"/docs/commands/issue/issue-discover","sidebar":"docs"},{"id":"commands/issue/issue-execute","path":"/docs/commands/issue/issue-execute","sidebar":"docs"},{"id":"commands/issue/issue-from-brainstorm","path":"/docs/commands/issue/issue-from-brainstorm","sidebar":"docs"},{"id":"commands/issue/issue-new","path":"/docs/commands/issue/issue-new","sidebar":"docs"},{"id":"commands/issue/issue-plan","path":"/docs/commands/issue/issue-plan","sidebar":"docs"},{"id":"commands/issue/issue-queue","path":"/docs/commands/issue/issue-queue","sidebar":"docs"},{"id":"commands/memory/memory-compact","path":"/docs/commands/memory/memory-compact","sidebar":"docs"},{"id":"commands/memory/memory-docs-full-cli","path":"/docs/commands/memory/memory-docs-full-cli","sidebar":"docs"},{"id":"commands/memory/memory-docs-related-cli","path":"/docs/commands/memory/memory-docs-related-cli","sidebar":"docs"},{"id":"commands/memory/memory-load","path":"/docs/commands/memory/memory-load","sidebar":"docs"},{"id":"commands/memory/memory-update-full","path":"/docs/commands/memory/memory-update-full","sidebar":"docs"},{"id":"commands/memory/memory-update-related","path":"/docs/commands/memory/memory-update-related","sidebar":"docs"},{"id":"faq","path":"/docs/faq","sidebar":"docs"},{"id":"index","path":"/docs/","sidebar":"docs"},{"id":"overview","path":"/docs/overview","sidebar":"docs"},{"id":"workflows/faq","path":"/docs/workflows/faq"},{"id":"workflows/introduction","path":"/docs/workflows/introduction","sidebar":"docs"},{"id":"workflows/level-1-ultra-lightweight","path":"/docs/workflows/level-1-ultra-lightweight","sidebar":"docs"},{"id":"workflows/level-2-rapid","path":"/docs/workflows/level-2-rapid","sidebar":"docs"},{"id":"workflows/level-3-standard","path":"/docs/workflows/level-3-standard","sidebar":"docs"},{"id":"workflows/level-4-brainstorm","path":"/docs/workflows/level-4-brainstorm","sidebar":"docs"},{"id":"workflows/level-5-intelligent","path":"/docs/workflows/level-5-intelligent","sidebar":"docs"}],"draftIds":[],"sidebars":{"docs":{"link":{"path":"/docs/","label":"Home"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en","zh"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en","translate":false,"url":"http://localhost:3001","baseUrl":"/docs/"},"zh":{"label":"\u7b80\u4f53\u4e2d\u6587","direction":"ltr","htmlLang":"zh-CN","calendar":"gregory","path":"zh","translate":true,"url":"http://localhost:3001","baseUrl":"/docs/zh/"}}}');var s=n(2654);const l=JSON.parse('{"docusaurusVersion":"3.9.2","siteVersion":"1.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.9.2"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.9.2"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.9.2"},"docusaurus-plugin-svgr":{"type":"package","name":"@docusaurus/plugin-svgr","version":"3.9.2"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.9.2"}}}');var c=n(2540);const u={siteConfig:a.A,siteMetadata:l,globalData:o,i18n:i,codeTranslations:s},d=r.createContext(u);function f({children:e}){return(0,c.jsx)(d.Provider,{value:u,children:e})}},3671(){Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json},3696(e,t,n){"use strict";e.exports=n(4403)},4054(e){"use strict";e.exports=JSON.parse('{"/docs/-a3f":{"__comp":"5e95c892","__context":{"plugin":"aba21aa0"}},"/docs/-fa7":{"__comp":"a7bd4aaa","__props":"11b43341"},"/docs/-294":{"__comp":"a94703ab"},"/docs/commands/cli/cli-init-159":{"__comp":"17896441","content":"0566a0a8"},"/docs/commands/cli/codex-review-c66":{"__comp":"17896441","content":"f1bf82ec"},"/docs/commands/general/ccw-3c1":{"__comp":"17896441","content":"f4817052"},"/docs/commands/general/ccw-coordinator-3b4":{"__comp":"17896441","content":"d550a629"},"/docs/commands/general/ccw-debug-e0c":{"__comp":"17896441","content":"97c6e66a"},"/docs/commands/general/ccw-plan-9ae":{"__comp":"17896441","content":"04db0a2e"},"/docs/commands/general/ccw-test-e6f":{"__comp":"17896441","content":"ccef5d0f"},"/docs/commands/general/codex-coordinator-e7d":{"__comp":"17896441","content":"f9222419"},"/docs/commands/general/flow-create-507":{"__comp":"17896441","content":"fabaf1c8"},"/docs/commands/issue/issue-convert-to-plan-a36":{"__comp":"17896441","content":"5c7b2278"},"/docs/commands/issue/issue-discover-5ae":{"__comp":"17896441","content":"1e3006f3"},"/docs/commands/issue/issue-execute-20b":{"__comp":"17896441","content":"fe8e3dcf"},"/docs/commands/issue/issue-from-brainstorm-10c":{"__comp":"17896441","content":"2ecf8b4a"},"/docs/commands/issue/issue-new-abb":{"__comp":"17896441","content":"4ad7db0f"},"/docs/commands/issue/issue-plan-57f":{"__comp":"17896441","content":"a6c3df16"},"/docs/commands/issue/issue-queue-316":{"__comp":"17896441","content":"1bac9067"},"/docs/commands/memory/memory-compact-fbd":{"__comp":"17896441","content":"7a1ee27c"},"/docs/commands/memory/memory-docs-full-cli-8b8":{"__comp":"17896441","content":"4cc74730"},"/docs/commands/memory/memory-docs-related-cli-707":{"__comp":"17896441","content":"60eef997"},"/docs/commands/memory/memory-load-1db":{"__comp":"17896441","content":"157db180"},"/docs/commands/memory/memory-update-full-3fa":{"__comp":"17896441","content":"666bb1bf"},"/docs/commands/memory/memory-update-related-c50":{"__comp":"17896441","content":"611877e1"},"/docs/faq-296":{"__comp":"17896441","content":"ea313555"},"/docs/overview-f90":{"__comp":"17896441","content":"18891827"},"/docs/workflows/faq-58c":{"__comp":"17896441","content":"bcf6b37c"},"/docs/workflows/introduction-702":{"__comp":"17896441","content":"9f4ca91e"},"/docs/workflows/level-1-ultra-lightweight-b4b":{"__comp":"17896441","content":"c5a82d8d"},"/docs/workflows/level-2-rapid-fe1":{"__comp":"17896441","content":"19b64556"},"/docs/workflows/level-3-standard-65f":{"__comp":"17896441","content":"bdb2b105"},"/docs/workflows/level-4-brainstorm-fae":{"__comp":"17896441","content":"d045285b"},"/docs/workflows/level-5-intelligent-fa9":{"__comp":"17896441","content":"186dcf4e"},"/docs/-6df":{"__comp":"17896441","content":"4edc808e"}}')},4271(e,t,n){"use strict";n.d(t,{Dt:()=>s,ys:()=>i});var r=n(3696),a=n(7694),o=n(396);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,o.A)().siteConfig;return(0,r.useMemo)(()=>function({baseUrl:e,routes:t}){function n(t){return t.path===e&&!0===t.exact}function r(t){return t.path===e&&!t.exact}return function e(t){if(0===t.length)return;return t.find(n)||e(t.filter(r).flatMap(e=>e.routes??[]))}(t)}({routes:a.A,baseUrl:e}),[e])}},4357(e,t,n){"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;ta});const a=function(){for(var e,t,n=0,a="",o=arguments.length;nC,f4:()=>ne});var r,a,o,i,s,l,c,u=n(3696),d=n(4357),f=Object.create,p=Object.defineProperty,m=Object.defineProperties,g=Object.getOwnPropertyDescriptor,h=Object.getOwnPropertyDescriptors,y=Object.getOwnPropertyNames,b=Object.getOwnPropertySymbols,v=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,x=(e,t,n)=>t in e?p(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,S=(e,t)=>{for(var n in t||(t={}))w.call(t,n)&&x(e,n,t[n]);if(b)for(var n of b(t))k.call(t,n)&&x(e,n,t[n]);return e},_=(e,t)=>m(e,h(t)),E=(e,t)=>{var n={};for(var r in e)w.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&b)for(var r of b(e))t.indexOf(r)<0&&k.call(e,r)&&(n[r]=e[r]);return n},A=(r={"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);S+=x.value.length,x=x.next){var _=x.value;if(t.length>e.length)return;if(!(_ instanceof a)){var E,A=1;if(b){if(!(E=o(k,S,e,y))||E.index>=e.length)break;var C=E.index,T=E.index+E[0].length,j=S;for(j+=x.value.length;C>=j;)j+=(x=x.next).value.length;if(S=j-=x.value.length,x.value instanceof a)continue;for(var P=x;P!==t.tail&&(jd.reach&&(d.reach=F);var R=x.prev;if(O&&(R=l(t,R,O),S+=O.length),c(t,R,A),x=l(t,R,new a(f,h?r.tokenize(N,h):N,v,N)),L&&l(t,x,L),A>1){var I={cause:f+","+m,reach:F};i(e,t,n,x.prev,S,I),d&&I.reach>d.reach&&(d.reach=I.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function l(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function c(e,t,n){for(var r=t.next,a=0;a"+o.content+""},r}();t.exports=n,n.default=n}},function(){return a||(0,r[y(r)[0]])((a={exports:{}}).exports,a),a.exports}),C=((e,t,n)=>(n=null!=e?f(v(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of y(t))w.call(e,a)||a===n||p(e,a,{get:()=>t[a],enumerable:!(r=g(t,a))||r.enumerable});return e})(!t&&e&&e.__esModule?n:p(n,"default",{value:e,enumerable:!0}),e)))(A());C.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},C.languages.markup.tag.inside["attr-value"].inside.entity=C.languages.markup.entity,C.languages.markup.doctype.inside["internal-subset"].inside=C.languages.markup,C.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(C.languages.markup.tag,"addInlined",{value:function(e,t){var n;(t=((n=((n={})["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:C.languages[t]},n.cdata=/^$/i,{"included-cdata":{pattern://i,inside:n}}))["language-"+t]={pattern:/[\s\S]+/,inside:C.languages[t]},{}))[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:n},C.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(C.languages.markup.tag,"addAttribute",{value:function(e,t){C.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:C.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),C.languages.html=C.languages.markup,C.languages.mathml=C.languages.markup,C.languages.svg=C.languages.markup,C.languages.xml=C.languages.extend("markup",{}),C.languages.ssml=C.languages.xml,C.languages.atom=C.languages.xml,C.languages.rss=C.languages.xml,o=C,i={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},l="(?:[^\\\\-]|"+(s=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/).source+")",l=RegExp(l+"-"+l),c={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"},o.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:l,inside:{escape:s,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":i,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:s}},"special-escape":i,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":c}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:s,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},C.languages.javascript=C.languages.extend("clike",{"class-name":[C.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),C.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,C.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:C.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:C.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:C.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:C.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:C.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),C.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:C.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),C.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),C.languages.markup&&(C.languages.markup.tag.addInlined("script","javascript"),C.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),C.languages.js=C.languages.javascript,C.languages.actionscript=C.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),C.languages.actionscript["class-name"].alias="function",delete C.languages.actionscript.parameter,delete C.languages.actionscript["literal-property"],C.languages.markup&&C.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:C.languages.markup}}),function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(C),function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t="string"==typeof t?[t]:t).forEach(function(t){var r=function(e){e.inside||(e.inside={}),e.inside.rest=n},a="doc-comment";if(o=e.languages[t]){var o,i=o[a];if((i=i||(o=e.languages.insertBefore(t,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[a])instanceof RegExp&&(i=o[a]={pattern:i}),Array.isArray(i))for(var s=0,l=i.length;s|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),{pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0});e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(C),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source}),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,function(){return r}).replace(/<>/g,function(){return e});return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,function(){return r})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,function(){return r}).replace(/<>/g,function(){return"(?:"+a+"|"+o+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(C),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,function(){return t}),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,function(){return r}),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source,i=(e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(t){["url","bold","italic","strike","code-snippet"].forEach(function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])})}),e.hooks.add("after-tokenize",function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},l=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(C),C.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:C.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},C.hooks.add("after-tokenize",function(e){if("graphql"===e.language)for(var t=e.tokens.filter(function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type}),n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function s(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run("before-tokenize",t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run("after-tokenize",t),t.tokens}function l(t,n,i){var l=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),c=0,u={},d=(l=s(l.map(function(e){if("string"==typeof e)return e;var n,r;for(e=e.content;-1!==t.indexOf((r=c++,n="___"+i.toUpperCase()+"_"+r+"___")););return u[n]=e,n}).join(""),n,i),Object.keys(u));return c=0,function t(n){for(var o=0;o=d.length)return;var i,l,f,p,m,g,h,y=n[o];"string"==typeof y||"string"==typeof y.content?(i=d[c],-1!==(h=(g="string"==typeof y?y:y.content).indexOf(i))&&(++c,l=g.substring(0,h),m=u[i],f=void 0,(p={})["interpolation-punctuation"]=a,3===(p=e.tokenize(m,p)).length&&((f=[1,1]).push.apply(f,s(p[1],e.languages.javascript,"javascript")),p.splice.apply(p,f)),f=new e.Token("interpolation",p,r.alias,m),p=g.substring(h+i.length),m=[],l&&m.push(l),m.push(f),p&&(t(g=[p]),m.push.apply(m,g)),"string"==typeof y?(n.splice.apply(n,[o,1].concat(m)),o+=m.length-1):y.content=m)):(h=y.content,Array.isArray(h)?t(h):t([h]))}}(l),new e.Token(i,l,"language-"+i,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var c={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function u(e){return"string"==typeof e?e:Array.isArray(e)?e.map(u).join(""):u(e.content)}e.hooks.add("after-tokenize",function(t){t.language in c&&function t(n){for(var r=0,a=n.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(C),function(e){var t=e.languages.javascript,n=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,r="(@(?:arg|argument|param|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(//g,function(){return n})),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(C),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:"class-name"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})}(C),C.languages.n4js=C.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),C.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),C.languages.n4jsd=C.languages.n4js,function(e){function t(e,t){return RegExp(e.replace(//g,function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source}),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function o(e,t){return e=e.replace(//g,function(){return n}).replace(//g,function(){return r}).replace(//g,function(){return a}),RegExp(e,t)}function i(t){for(var n=[],r=0;r"!==a.content[a.content.length-1].content&&n.push({tagName:s(a.content[0].content[1]),openedBraces:0}):0+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var s=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(s).join(""):""};e.hooks.add("after-tokenize",function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)})}(C),function(e){var t=e.util.clone(e.languages.typescript);(t=(e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"],e.languages.tsx.tag)).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(C),C.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+/(?:elseif|if)\b/.source+"(?:[ \t]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},C.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=C.languages.swift}),function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(C),C.languages.c=C.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),C.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),C.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},C.languages.c.string],char:C.languages.c.char,comment:C.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:C.languages.c}}}}),C.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete C.languages.c.boolean,C.languages.objectivec=C.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete C.languages.objectivec["class-name"],C.languages.objc=C.languages.objectivec,C.languages.reason=C.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),C.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete C.languages.reason.function,function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|)*\*\//.source,n=0;n<2;n++)t=t.replace(//g,function(){return t});t=t.replace(//g,function(){return/[^\s\S]/.source}),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(C),C.languages.go=C.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),C.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete C.languages.go["class-name"],function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,function(){return t.source});e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,function(){return t.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,function(){return n})+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(C),C.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},C.languages.python["string-interpolation"].inside.interpolation.inside.rest=C.languages.python,C.languages.py=C.languages.python,C.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},C.languages.webmanifest=C.languages.json;((e,t)=>{for(var n in t)p(e,n,{get:t[n],enumerable:!0})})({},{dracula:()=>T,duotoneDark:()=>j,duotoneLight:()=>P,github:()=>N,gruvboxMaterialDark:()=>Y,gruvboxMaterialLight:()=>K,jettwaveDark:()=>V,jettwaveLight:()=>W,nightOwl:()=>O,nightOwlLight:()=>L,oceanicNext:()=>I,okaidia:()=>D,oneDark:()=>G,oneLight:()=>q,palenight:()=>M,shadesOfPurple:()=>$,synthwave84:()=>z,ultramin:()=>B,vsDark:()=>U,vsLight:()=>H});var T={plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},j={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},P={plain:{backgroundColor:"#faf8f5",color:"#728fcb"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#b6ad9a"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#063289"}},{types:["property","function"],style:{color:"#b29762"}},{types:["tag-id","selector","atrule-id"],style:{color:"#2d2006"}},{types:["attr-name"],style:{color:"#896724"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule"],style:{color:"#728fcb"}},{types:["placeholder","variable"],style:{color:"#93abdc"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#896724"}}]},N={plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},O={plain:{color:"#d6deeb",backgroundColor:"#011627"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(99, 119, 119)",fontStyle:"italic"}},{types:["string","url"],style:{color:"rgb(173, 219, 103)"}},{types:["variable"],style:{color:"rgb(214, 222, 235)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation"],style:{color:"rgb(199, 146, 234)"}},{types:["selector","doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(255, 203, 139)"}},{types:["tag","operator","keyword"],style:{color:"rgb(127, 219, 202)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["property"],style:{color:"rgb(128, 203, 196)"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}}]},L={plain:{color:"#403f53",backgroundColor:"#FBFBFB"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(72, 118, 214)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(152, 159, 177)",fontStyle:"italic"}},{types:["string","builtin","char","constant","url"],style:{color:"rgb(72, 118, 214)"}},{types:["variable"],style:{color:"rgb(201, 103, 101)"}},{types:["number"],style:{color:"rgb(170, 9, 130)"}},{types:["punctuation"],style:{color:"rgb(153, 76, 195)"}},{types:["function","selector","doctype"],style:{color:"rgb(153, 76, 195)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(17, 17, 17)"}},{types:["tag"],style:{color:"rgb(153, 76, 195)"}},{types:["operator","property","keyword","namespace"],style:{color:"rgb(12, 150, 155)"}},{types:["boolean"],style:{color:"rgb(188, 84, 84)"}}]},F="#c5a5c5",R="#8dc891",I={plain:{backgroundColor:"#282c34",color:"#ffffff"},styles:[{types:["attr-name"],style:{color:F}},{types:["attr-value"],style:{color:R}},{types:["comment","block-comment","prolog","doctype","cdata","shebang"],style:{color:"#999999"}},{types:["property","number","function-name","constant","symbol","deleted"],style:{color:"#5a9bcf"}},{types:["boolean"],style:{color:"#ff8b50"}},{types:["tag"],style:{color:"#fc929e"}},{types:["string"],style:{color:R}},{types:["punctuation"],style:{color:R}},{types:["selector","char","builtin","inserted"],style:{color:"#D8DEE9"}},{types:["function"],style:{color:"#79b6f2"}},{types:["operator","entity","url","variable"],style:{color:"#d7deea"}},{types:["keyword"],style:{color:F}},{types:["atrule","class-name"],style:{color:"#FAC863"}},{types:["important"],style:{fontWeight:"400"}},{types:["bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}}]},D={plain:{color:"#f8f8f2",backgroundColor:"#272822"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"#f92672",fontStyle:"italic"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"#8292a2",fontStyle:"italic"}},{types:["string","url"],style:{color:"#a6e22e"}},{types:["variable"],style:{color:"#f8f8f2"}},{types:["number"],style:{color:"#ae81ff"}},{types:["builtin","char","constant","function","class-name"],style:{color:"#e6db74"}},{types:["punctuation"],style:{color:"#f8f8f2"}},{types:["selector","doctype"],style:{color:"#a6e22e",fontStyle:"italic"}},{types:["tag","operator","keyword"],style:{color:"#66d9ef"}},{types:["boolean"],style:{color:"#ae81ff"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)",opacity:.7}},{types:["tag","property"],style:{color:"#f92672"}},{types:["attr-name"],style:{color:"#a6e22e !important"}},{types:["doctype"],style:{color:"#8292a2"}},{types:["rule"],style:{color:"#e6db74"}}]},M={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},$={plain:{color:"#9EFEFF",backgroundColor:"#2D2A55"},styles:[{types:["changed"],style:{color:"rgb(255, 238, 128)"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)"}},{types:["comment"],style:{color:"rgb(179, 98, 255)",fontStyle:"italic"}},{types:["punctuation"],style:{color:"rgb(255, 255, 255)"}},{types:["constant"],style:{color:"rgb(255, 98, 140)"}},{types:["string","url"],style:{color:"rgb(165, 255, 144)"}},{types:["variable"],style:{color:"rgb(255, 238, 128)"}},{types:["number","boolean"],style:{color:"rgb(255, 98, 140)"}},{types:["attr-name"],style:{color:"rgb(255, 180, 84)"}},{types:["keyword","operator","property","namespace","tag","selector","doctype"],style:{color:"rgb(255, 157, 0)"}},{types:["builtin","char","constant","function","class-name"],style:{color:"rgb(250, 208, 0)"}}]},z={plain:{backgroundColor:"linear-gradient(to bottom, #2a2139 75%, #34294f)",backgroundImage:"#34294f",color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},styles:[{types:["comment","block-comment","prolog","doctype","cdata"],style:{color:"#495495",fontStyle:"italic"}},{types:["punctuation"],style:{color:"#ccc"}},{types:["tag","attr-name","namespace","number","unit","hexcode","deleted"],style:{color:"#e2777a"}},{types:["property","selector"],style:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"}},{types:["function-name"],style:{color:"#6196cc"}},{types:["boolean","selector-id","function"],style:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"}},{types:["class-name","maybe-class-name","builtin"],style:{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"}},{types:["constant","symbol"],style:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"}},{types:["important","atrule","keyword","selector-class"],style:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"}},{types:["string","char","attr-value","regex","variable"],style:{color:"#f87c32"}},{types:["parameter"],style:{fontStyle:"italic"}},{types:["entity","url"],style:{color:"#67cdcc"}},{types:["operator"],style:{color:"ffffffee"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["entity"],style:{cursor:"help"}},{types:["inserted"],style:{color:"green"}}]},B={plain:{color:"#282a2e",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(197, 200, 198)"}},{types:["string","number","builtin","variable"],style:{color:"rgb(150, 152, 150)"}},{types:["class-name","function","tag","attr-name"],style:{color:"rgb(40, 42, 46)"}}]},U={plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},H={plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},V={plain:{color:"#f8fafc",backgroundColor:"#011627"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#569CD6"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#f8fafc"}},{types:["attr-name","variable"],style:{color:"#9CDCFE"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#cbd5e1"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#D4D4D4"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#7dd3fc"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},W={plain:{color:"#0f172a",backgroundColor:"#f1f5f9"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#0c4a6e"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#0f172a"}},{types:["attr-name","variable"],style:{color:"#0c4a6e"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#64748b"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#475569"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#0e7490"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},G={plain:{backgroundColor:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(220, 10%, 40%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(220, 14%, 71%)"}},{types:["attr-name","class-name","maybe-class-name","boolean","constant","number","atrule"],style:{color:"hsl(29, 54%, 61%)"}},{types:["keyword"],style:{color:"hsl(286, 60%, 67%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(355, 65%, 65%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value"],style:{color:"hsl(95, 38%, 62%)"}},{types:["variable","operator","function"],style:{color:"hsl(207, 82%, 66%)"}},{types:["url"],style:{color:"hsl(187, 47%, 55%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(220, 14%, 71%)"}}]},q={plain:{backgroundColor:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(230, 4%, 64%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(230, 8%, 24%)"}},{types:["attr-name","class-name","boolean","constant","number","atrule"],style:{color:"hsl(35, 99%, 36%)"}},{types:["keyword"],style:{color:"hsl(301, 63%, 40%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(5, 74%, 59%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value","punctuation"],style:{color:"hsl(119, 34%, 47%)"}},{types:["variable","operator","function"],style:{color:"hsl(221, 87%, 60%)"}},{types:["url"],style:{color:"hsl(198, 99%, 37%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(230, 8%, 24%)"}}]},Y={plain:{color:"#ebdbb2",backgroundColor:"#292828"},styles:[{types:["imports","class-name","maybe-class-name","constant","doctype","builtin","function"],style:{color:"#d8a657"}},{types:["property-access"],style:{color:"#7daea3"}},{types:["tag"],style:{color:"#e78a4e"}},{types:["attr-name","char","url","regex"],style:{color:"#a9b665"}},{types:["attr-value","string"],style:{color:"#89b482"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#ea6962"}},{types:["entity","number","symbol"],style:{color:"#d3869b"}}]},K={plain:{color:"#654735",backgroundColor:"#f9f5d7"},styles:[{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#af2528"}},{types:["imports","class-name","maybe-class-name","constant","doctype","builtin"],style:{color:"#b4730e"}},{types:["string","attr-value"],style:{color:"#477a5b"}},{types:["property-access"],style:{color:"#266b79"}},{types:["function","attr-name","char","url"],style:{color:"#72761e"}},{types:["tag"],style:{color:"#b94c07"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["entity","number","symbol"],style:{color:"#924f79"}}]},Z=/\r\n|\r|\n/,Q=e=>{0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},X=(e,t)=>{const n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},J=e=>{const t=[[]],n=[e],r=[0],a=[e.length];let o=0,i=0,s=[];const l=[s];for(;i>-1;){for(;(o=r[i]++)0?c:["plain"],e=u):(c=X(c,u.type),u.alias&&(c=X(c,u.alias)),e=u.content),"string"!=typeof e){i++,t.push(c),n.push(e),r.push(0),a.push(e.length);continue}const d=e.split(Z),f=d.length;s.push({types:c,content:d[0]});for(let t=1;t{const{plain:n}=e,r=e.styles.reduce((e,n)=>{const{languages:r,style:a}=n;return r&&!r.includes(t)||n.types.forEach(t=>{const n=S(S({},e[t]),a);e[t]=n}),e},{});return r.root=n,r.plain=_(S({},n),{backgroundColor:void 0}),r},te=({children:e,language:t,code:n,theme:r,prism:a})=>{const o=t.toLowerCase(),i=ee(r,o),s=(e=>(0,u.useCallback)(t=>{var n=t,{className:r,style:a,line:o}=n,i=E(n,["className","style","line"]);const s=_(S({},i),{className:(0,d.A)("token-line",r)});return"object"==typeof e&&"plain"in e&&(s.style=e.plain),"object"==typeof a&&(s.style=S(S({},s.style||{}),a)),s},[e]))(i),l=(e=>{const t=(0,u.useCallback)(({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map(t=>e[t]))},[e]);return(0,u.useCallback)(e=>{var n=e,{token:r,className:a,style:o}=n,i=E(n,["token","className","style"]);const s=_(S({},i),{className:(0,d.A)("token",...r.types,a),children:r.content,style:t(r)});return null!=o&&(s.style=S(S({},s.style||{}),o)),s},[t])})(i),c=(({prism:e,code:t,grammar:n,language:r})=>(0,u.useMemo)(()=>{if(null==n)return J([t]);const a={code:t,grammar:n,language:r,tokens:[]};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(t,n),e.hooks.run("after-tokenize",a),J(a.tokens)},[t,n,r,e]))({prism:a,language:o,code:n,grammar:a.languages[o]});return e({tokens:c,className:`prism-code language-${o}`,style:null!=i?i.root:{},getLineProps:s,getTokenProps:l})},ne=e=>(0,u.createElement)(te,_(S({},e),{prism:e.prism||C,theme:e.theme||U,code:e.code,language:e.language}))},4403(e,t){"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),s=Symbol.for("react.provider"),l=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),u=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),f=Symbol.for("react.lazy"),p=Symbol.iterator;var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,h={};function y(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=y.prototype;var w=v.prototype=new b;w.constructor=v,g(w,y.prototype),w.isPureReactComponent=!0;var k=Array.isArray,x=Object.prototype.hasOwnProperty,S={current:null},_={key:!0,ref:!0,__self:!0,__source:!0};function E(e,t,r){var a,o={},i=null,s=null;if(null!=t)for(a in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(i=""+t.key),t)x.call(t,a)&&!_.hasOwnProperty(a)&&(o[a]=t[a]);var l=arguments.length-2;if(1===l)o.children=r;else if(1c});n(3696);var r=n(4357),a=n(9082),o=n(7125),i=n(2436),s=n(6357),l=n(2540);function c({as:e,id:t,...n}){const c=(0,s.A)(),u=(0,o.v)(t);if("h1"===e||!t)return(0,l.jsx)(e,{...n,id:void 0});c.collectAnchor(t);const d=(0,a.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof n.children?n.children:t});return(0,l.jsxs)(e,{...n,className:(0,r.A)("anchor",u,n.className),id:t,children:[n.children,(0,l.jsx)(i.A,{className:"hash-link",to:`#${t}`,"aria-label":d,title:d,translate:"no",children:"\u200b"})]})}},4647(e,t,n){"use strict";n.d(t,{n:()=>s,r:()=>l});var r=n(3696),a=n(1786),o=n(2540);const i=r.createContext(null);function s({children:e,version:t}){return(0,o.jsx)(i.Provider,{value:t,children:e})}function l(){const e=(0,r.useContext)(i);if(null===e)throw new a.dV("DocsVersionProvider");return e}},4720(e,t,n){"use strict";n.d(t,{W:()=>i,o:()=>o});var r=n(3696),a=n(2540);const o=r.createContext(null);function i({children:e,value:t}){const n=r.useContext(o),i=(0,r.useMemo)(()=>function({parent:e,value:t}){if(!e){if(!t)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in t))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return t}const n={...e.data,...t?.data};return{plugin:e.plugin,data:n}}({parent:n,value:t}),[n,t]);return(0,a.jsx)(o.Provider,{value:i,children:e})}},4784(e,t,n){"use strict";n.d(t,{A:()=>r});const r={title:"CCW Help Documentation",tagline:"Professional Workflow Automation Platform",favicon:"img/favicon.ico",url:"http://localhost:3001",baseUrl:"/docs/",organizationName:"ccw",projectName:"docs",trailingSlash:!1,onBrokenLinks:"warn",i18n:{defaultLocale:"en",locales:["en","zh"],localeConfigs:{zh:{label:"\u7b80\u4f53\u4e2d\u6587",htmlLang:"zh-CN"}},path:"i18n"},presets:[["@docusaurus/preset-classic",{docs:{path:"docs",routeBasePath:"/",sidebarPath:"./sidebars.ts",editUrl:"https://github.com/ccw/docs/tree/main/"},blog:!1,theme:{customCss:["./src/css/custom.css"]}}]],themeConfig:{navbar:{title:"CCW Help",logo:{alt:"CCW Logo",src:"img/logo.svg"},items:[{type:"localeDropdown",position:"right",dropdownItemsBefore:[],dropdownItemsAfter:[]}],hideOnScroll:!1},footer:{style:"dark",copyright:"Copyright \xa9 2026 CCW. Built with Docusaurus.",links:[]},prism:{additionalLanguages:["typescript","javascript","bash","python","java","go","yaml","json"],theme:{plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},blog:{sidebar:{groupByYear:!0}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},markdown:{mermaid:!0,format:"mdx",emoji:!0,mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0},anchors:{maintainCase:!1},hooks:{onBrokenMarkdownLinks:"warn",onBrokenMarkdownImages:"throw"}},baseUrlIssueBanner:!0,future:{v4:{removeLegacyPostBuildHeadAttribute:!1,useCssCascadeLayers:!1},experimental_faster:{swcJsLoader:!1,swcJsMinimizer:!1,swcHtmlMinimizer:!1,lightningCssMinimizer:!1,mdxCrossCompilerCache:!1,rspackBundler:!1,rspackPersistentCache:!1,ssgWorkerThreads:!1},experimental_storage:{type:"localStorage",namespace:!1},experimental_router:"browser"},onBrokenAnchors:"warn",onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1}},4941(e,t,n){"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{A:()=>a})},5080(e,t,n){"use strict";n.r(t)},5215(e,t,n){"use strict";n.d(t,{Ay:()=>s,hH:()=>i});var r=n(3696),a=n(396),o=n(5436);function i(){const{siteConfig:e}=(0,a.A)(),{baseUrl:t,url:n}=e,i=e.future.experimental_router,s=(0,r.useCallback)((e,r)=>function({siteUrl:e,baseUrl:t,url:n,options:{forcePrependBaseUrl:r=!1,absolute:a=!1}={},router:i}){if(!n||n.startsWith("#")||(0,o.z)(n))return n;if("hash"===i)return n.startsWith("/")?`.${n}`:`./${n}`;if(r)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return a?e+s:s}({siteUrl:n,baseUrl:t,url:e,options:r,router:i}),[n,t,i]);return{withBaseUrl:s}}function s(e,t={}){const{withBaseUrl:n}=i();return n(e,t)}},5268(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(9586),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate({location:e,previousLocation:t}){if(t&&e.pathname!==t.pathname){const e=window.setTimeout(()=>{a().start()},200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},5271(e,t,n){"use strict";n.d(t,{M:()=>m,e:()=>p});var r=n(3696),a=n(7226),o=n(1187),i=n(6703),s=n(2520),l=n(1786),c=n(2540);const u=r.createContext(void 0);function d(){const e=function(){const e=(0,a.YL)(),{items:t}=(0,s.p)().navbar;return 0===t.length&&!e.component}(),t=(0,o.l)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1),c=(0,r.useCallback)(()=>{l(e=>!e)},[]);return(0,r.useEffect)(()=>{"desktop"===t&&l(!1)},[t]),(0,r.useMemo)(()=>({disabled:e,shouldRender:n,toggle:c,shown:i}),[e,n,c,i])}function f({handler:e}){return(0,i.$Z)(e),null}function p({children:e}){const t=d();return(0,c.jsxs)(c.Fragment,{children:[t.shown&&(0,c.jsx)(f,{handler:()=>(t.toggle(),!1)}),(0,c.jsx)(u.Provider,{value:t,children:e})]})}function m(){const e=r.useContext(u);if(void 0===e)throw new l.dV("NavbarMobileSidebarProvider");return e}},5380(e,t,n){"use strict";n.d(t,{I9:()=>d,Kd:()=>u,N_:()=>y,k2:()=>w});var r=n(6090),a=n(4941),o=n(3696),i=n(9626),s=n(9575),l=n(7502),c=n(7730),u=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;aa,z:()=>r})},5487(e,t,n){"use strict";n.d(t,{V:()=>l,t:()=>c});var r=n(3696),a=n(1786),o=n(2540);const i=Symbol("EmptyContext"),s=r.createContext(i);function l({children:e,name:t,items:n}){const a=(0,r.useMemo)(()=>t&&n?{name:t,items:n}:null,[t,n]);return(0,o.jsx)(s.Provider,{value:a,children:e})}function c(){const e=(0,r.useContext)(s);if(e===i)throw new a.dV("DocsSidebarProvider");return e}},5502(){!function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source}),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,function(){return r}).replace(/<>/g,function(){return e});return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,function(){return r})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,function(){return r}).replace(/<>/g,function(){return"(?:"+a+"|"+o+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(Prism)},5521(e,t,n){"use strict";e.exports=n(6685)},5608(e,t,n){"use strict";n.r(t),n.d(t,{__addDisposableResource:()=>R,__assign:()=>o,__asyncDelegator:()=>E,__asyncGenerator:()=>_,__asyncValues:()=>A,__await:()=>S,__awaiter:()=>m,__classPrivateFieldGet:()=>O,__classPrivateFieldIn:()=>F,__classPrivateFieldSet:()=>L,__createBinding:()=>h,__decorate:()=>s,__disposeResources:()=>D,__esDecorate:()=>c,__exportStar:()=>y,__extends:()=>a,__generator:()=>g,__importDefault:()=>N,__importStar:()=>P,__makeTemplateObject:()=>C,__metadata:()=>p,__param:()=>l,__propKey:()=>d,__read:()=>v,__rest:()=>i,__rewriteRelativeImportExtension:()=>M,__runInitializers:()=>u,__setFunctionName:()=>f,__spread:()=>w,__spreadArray:()=>x,__spreadArrays:()=>k,__values:()=>b,default:()=>$});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;s--)(a=e[s])&&(i=(o<3?a(i):o>3?a(t,n,i):a(t,n))||i);return o>3&&i&&Object.defineProperty(t,n,i),i}function l(e,t){return function(n,r){t(n,r,e)}}function c(e,t,n,r,a,o){function i(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var s,l=r.kind,c="getter"===l?"get":"setter"===l?"set":"value",u=!t&&e?r.static?e:e.prototype:null,d=t||(u?Object.getOwnPropertyDescriptor(u,r.name):{}),f=!1,p=n.length-1;p>=0;p--){var m={};for(var g in r)m[g]="access"===g?{}:r[g];for(var g in r.access)m.access[g]=r.access[g];m.addInitializer=function(e){if(f)throw new TypeError("Cannot add initializers after decoration has completed");o.push(i(e||null))};var h=(0,n[p])("accessor"===l?{get:d.get,set:d.set}:d[c],m);if("accessor"===l){if(void 0===h)continue;if(null===h||"object"!=typeof h)throw new TypeError("Object expected");(s=i(h.get))&&(d.get=s),(s=i(h.set))&&(d.set=s),(s=i(h.init))&&a.unshift(s)}else(s=i(h))&&("field"===l?a.unshift(s):d[c]=s)}u&&Object.defineProperty(u,r.name,d),f=!0}function u(e,t,n){for(var r=arguments.length>2,a=0;a0&&a[a.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!a||s[1]>a[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function v(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(s){a={error:s}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}function w(){for(var e=[],t=0;t1||s(e,t)})},t&&(r[e]=t(r[e])))}function s(e,t){try{(n=a[e](t)).value instanceof S?Promise.resolve(n.value.v).then(l,c):u(o[0][2],n)}catch(r){u(o[0][3],r)}var n}function l(e){s("next",e)}function c(e){s("throw",e)}function u(e,t){e(t),o.shift(),o.length&&s(o[0][0],o[0][1])}}function E(e){var t,n;return t={},r("next"),r("throw",function(e){throw e}),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,a){t[r]=e[r]?function(t){return(n=!n)?{value:S(e[r](t)),done:!1}:a?a(t):t}:a}}function A(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=b(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise(function(r,a){(function(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)})(r,a,(t=e[n](t)).done,t.value)})}}}function C(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var T=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},j=function(e){return j=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},j(e)};function P(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=j(e),r=0;r